subtree updates

poky: 80f2b56ad8..d78650b980:
  Ahmed Hossam (1):
        go.bbclass: Allow adding parameters to go ldflags

  Alejandro Hernandez Samaniego (1):
        baremetal-image: Fix do_image dependencies

  Alexander Kanavin (153):
        meson: update 0.58.1 -> 0.59.1
        libcap: update 2.51 -> 2.54
        lua: add a recipe from meta-oe
        lua: update 5.3.6 -> 5.4.3
        rpm: update 4.16.1.3 -> 4.17.0
        libdnf: fix the rpm sqlite-only target setup
        libsolv: disable rpm bdb format support
        perl: do not build berkeley db module by default
        package_rpm: use zstd instead of xz
        qemu: update 6.0.0 -> 6.1.0
        runqemu: correct vga-virtio option to keep virgl enabled
        gnupg: update 2.3.1 -> 2.3.2
        pinentry: update 1.1.1 -> 1.2.0
        spirv-tools: update 2021.2 -> 2021.3
        glslang: update 11.5.0 -> 11.6.0
        shaderc: update 2021.1 -> 2021.2
        inetutils: update 2.1 -> 2.2
        systemd: update 249.3 -> 249.4
        lsof: update 4.91 -> 4.94.0
        libpam: update 1.5.1 -> 1.5.2
        rt-tests: update 2.1 -> 2.2
        libgit2: update 1.1.1 -> 1.2.0
        libssh2: update 1.9.0 -> 1.10.0
        libhandy: update 1.2.3 -> 1.4.0
        qemu: install qmp module without hardcoding the python version in oeqa scripts
        lttng-tools: replace ad hoc ptest fixup with upstream fixes
        rust: drop PV from include file names
        rust: update 1.54.0 -> 1.55.0
        librsvg: update 2.40.21 -> 2.52.0 (transition to rust!)
        librsvg: do not enable nativesdk
        librsvg: add backports to fix big endian targets (e.g. mips)
        librsvg: use only the target architecture to determine availability of atomic primitives
        librsvg: restore reproducibility
        adwaita-icon-theme: update 3.34/38 -> 41.0
        gstreamer1.0-plugins-bad: disable rsvg on x32
        rust/cargo: exclude UNINATIVE_LOADER from task signature
        rust-common.bbclass: rewrite toolchain wrappers in (native) python
        rust: do not write ar into target json definitions
        rust: generate target definitions from (arch, abi), not just arch
        openssl: update 1.1.1l -> 3.0.0
        cryptodev-tests: do not use -Werror with openssl 3
        serf: add a openssl 3 compatibility fix
        ruby: disable openssl extension
        glib-2.0: update 2.68.4 -> 2.70.0
        glib-networking: update 2.68.2 -> 2.70.0
        bison: update 3.7.6 -> 3.8.1
        libdnf: update 0.63.1 -> 0.64.0
        libexif: update 0.6.22 -> 0.6.23
        sudo: update 1.9.7p2 -> 1.9.8p1
        wget: update 1.21.1 -> 1.21.2
        coreutils: update 8.32 -> 9.0
        itstool: update 2.0.6 -> 2.0.7
        nghttp2: add recipe from meta-oe
        libsoup: add a 3.x recipe
        webkitgtk: trim down DEPENDS
        epiphany: trim down DEPENDS
        webkitgtk: update 2.32.3 -> 2.34.0
        epiphany: update 40.3 -> 41.0
        python3: update 3.9.7 -> 3.10.0
        libjitterentropy: update 3.1.0 -> 3.3.0
        kea: update 1.8.2 -> 2.0.0
        ghostscript: update 9.54.0 -> 9.55.0
        lighttpd: update 1.4.59 -> 1.4.60
        bluez5: update 5.61 -> 5.62
        ovmf: update 202105 -> 202108
        systemd: update 249.4 -> 249.5
        meson: update 0.59.1 -> 0.59.2
        python3-pip: update 21.2.4 -> 21.3
        valgrind: update 3.17.0 -> 3.18.1
        librsvg: update 2.52.0 -> 2.52.2
        libva: update 2.12.0 -> 2.13.0
        liberation-fonts: update 2.1.4 -> 2.1.5
        ca-certificates: update 20210119 -> 20211016
        curl: update 7.78.0 -> 7.79.1
        libgit2: update 1.2.0 -> 1.3.0
        libxcrypt: upgrade 4.4.25 -> 4.4.26
        bison: upgrade 3.8.1 -> 3.8.2
        cmake: update 3.21.2 -> 3.21.3
        git: upgrade 2.33.0 -> 2.33.1
        tzdata: upgrade 2021a -> 2021d
        ofono: upgrade 1.32 -> 1.33
        openssh: upgrade 8.7p1 -> 8.8p1
        sysvinit: upgrade 2.99 -> 3.00
        btrfs-tools: upgrade 5.13.1 -> 5.14.2
        ccache: upgrade 4.4 -> 4.4.2
        createrepo-c: upgrade 0.17.5 -> 0.17.6
        libcomps: upgrade 0.1.17 -> 0.1.18
        libedit: upgrade 20210714-3.1 -> 20210910-3.1
        librepo: upgrade 1.14.1 -> 1.14.2
        python3-jinja2: upgrade 3.0.1 -> 3.0.2
        python3-pygobject: upgrade 3.40.1 -> 3.42.0
        python3-setuptools: upgrade 58.0.4 -> 58.2.0
        vala: upgrade 0.52.5 -> 0.54.2
        acpica: upgrade 20210730 -> 20210930
        asciidoc: upgrade 9.1.0 -> 9.1.1
        libarchive: upgrade 3.5.1 -> 3.5.2
        msmtp: upgrade 1.8.15 -> 1.8.17
        sudo: upgrade 1.9.8p1 -> 1.9.8p2
        gobject-introspection: upgrade 1.68.0 -> 1.70.0
        gsettings-desktop-schemas: upgrade 40.0 -> 41.0
        json-glib: upgrade 1.6.4 -> 1.6.6
        libdazzle: upgrade 3.40.0 -> 3.42.0
        harfbuzz: upgrade 2.9.1 -> 3.0.0
        pango: upgrade 1.48.9 -> 1.48.10
        libinput: upgrade 1.19.0 -> 1.19.1
        linux-firmware: upgrade 20210818 -> 20210919
        wireless-regdb: upgrade 2021.07.14 -> 2021.08.28
        mpg123: upgrade 1.28.2 -> 1.29.0
        puzzles: upgrade to latest revision
        libwpe: upgrade 1.10.1 -> 1.12.0
        diffoscope: upgrade 182 -> 187
        fribidi: upgrade 1.0.10 -> 1.0.11
        iso-codes: upgrade 4.6.0 -> 4.7.0
        libatomic-ops: upgrade 7.6.10 -> 7.6.12
        libcap: upgrade 2.54 -> 2.59
        libmd: upgrade 1.0.3 -> 1.0.4
        libsoup-2.4: upgrade 2.72.0 -> 2.74.0
        gnupg: update 2.3.2 -> 2.3.3
        libssh2: skip one of the ptests until openssh 8.8 compatibility is fixed
        systemd: disable seccomp on mips32
        waffle: convert to git, website is down
        u-boot: upgrade 2021.07 -> 2021.10
        psplash: upgrade to latest revision
        stress-ng: convert to git, website is down
        json-c: correct upstream version check
        createrepo-c: upgrade 0.17.6 -> 0.17.7
        python3-numpy: upgrade 1.21.2 -> 1.21.3
        python3-pip: upgrade 21.3 -> 21.3.1
        python3-setuptools: upgrade 58.2.0 -> 58.3.0
        msmtp: upgrade 1.8.17 -> 1.8.18
        gi-docgen: upgrade 2021.7 -> 2021.8
        piglit: upgrade to latest revision
        libinput: upgrade 1.19.1 -> 1.19.2
        mpg123: upgrade 1.29.0 -> 1.29.2
        puzzles: upgrade to latest revision
        webkitgtk: upgrade 2.34.0 -> 2.34.1
        wpebackend-fdo: upgrade 1.10.0 -> 1.12.0
        diffoscope: upgrade 187 -> 188
        libcap: upgrade 2.59 -> 2.60
        vte: upgrade 0.64.2 -> 0.66.0
        ncurses: update 6.2 -> 6.3
        tzdata: update 2021d -> 2021e
        asciidoc: update 9.1.1 -> 10.0.0
        waffle: update 1.6.1 -> 1.7.0
        virgl: skip headless test on specific older distros and fail otherwise
        gptfdisk: address ncurses 6.3 compatibility
        powertop: address ncurses 6.3 compatibility
        systemtap: address ncurses 6.3 compatibility
        igt-gpu-tools: address meson 0.60 compatibility
        python3-pygobject: do not supply unknown g-i options
        gstreamer1.0-python: do not supply unknown g-i options
        webkitgtk: drop unnecessary SSE disabling patch
        cups: exclude beta/rc versions from version check

  Alexandre Belloni (5):
        inetutils: drop CVE-2021-40491 patch
        oeqa/selftest/sstatetests: fix typo ware -> were
        maintainers.inc: fix up rust-cross entry
        libevent,btrfs-tools: fix Upstream-Status tag
        ruby: fix Upstream-Status

  Andreas Müller (1):
        webkitgtk: add gperf-native to DEPENDS to fix build

  Andrei Gherzan (1):
        qemu: Define libnfs PACKAGECONFIG

  Andrej Valek (3):
        busybox: 1.34.0 -> 1.34.1
        featimage: refactor style
        kernel-fitimage: use correct kernel image

  Andres Beltran (1):
        buildhistory: Fix package output files for SDKs

  Bruce Ashfield (15):
        linux-yocto/5.14: scripts/gcc-plugins: consistently use HOSTCC
        linux-yocto/5.14: update to v5.14.8
        linux-yocto/5.14: bsp/qemuarm*-gfx: use virtio graphics
        linux-yocto/5.10: update to v5.10.69
        linux-yocto/5.10: update to v5.10.70
        linux-yocto/5.14: update to v5.14.9
        kernel-yocto: don't apply config metadata patches twice
        linux-yocto/5.14: revert: scripts/gcc-plugins: consistently use HOSTCC
        linux-yocto/5.10: update to v5.10.73
        linux-yocto/5.14: update to v5.14.12
        linux-yocto/5.14: update to v5.14.13
        linux-yocto/5.10: update to v5.10.74
        linux-yocto/5.14: common-pc: enable CONFIG_ATA_PIIX as built-in
        linux-yocto/5.14: update to v5.14.14
        linux-yocto/5.10: update to v5.10.75

  Caner Altinbasak (2):
        bitbake: npmsw: Avoid race condition with multiple npm fetchers
        bitbake: fetch2: Do not attempt to verify donestamp if download is not complete

  Changhyeok Bae (2):
        iproute2: update to 5.14.0
        ethtool: update to 5.14

  Changqing Li (1):
        lttng-ust: fix do_compile failure for arm32 with DEBUG_BUILD enabled

  Daiane Angolini (2):
        machine/qemuarm*: Fix UBOOT_MACHINE value
        ref-manual: Update how to set a useradd password

  Daniel McGregor (3):
        bison: prevent checking for textstyle.
        bitbake.conf: Add gpg-agent as a host tool
        sstate: Allow validation of sstate singatures against list of keys

  David Joyner (1):
        rust: add support for big endian 64-bit PowerPC

  Denys Dmytriyenko (2):
        wayland-protocols: upgrade 1.21 -> 1.22
        wayland-protocols: upgrade 1.22 -> 1.23

  Fred Liu (1):
        glibc: Drop libcidn package

  Henry Kleynhans (1):
        sstate: Switch to ZStandard compressor support

  Hsia-Jun(Randy) Li (1):
        meson: install native file in sdk

  Ian Ray (1):
        archiver: Configurable tarball compression

  Jon Mason (10):
        oeqa/manual: Fix no longer valid URLs
        bitbake: bitbake:toaster:test: Update SSTATE URL
        yocto-bsp/poky: replace http with https for URLs
        bitbake: bitbake: replace http with https for URLs
        documentation: update sources mirror URL
        documentation: replace http with https for URLs
        documentation: use YOCTO_DL_URL
        dev-manual: remove errant /
        runqemu: add DEPLOY_DIR_IMAGE replacement in QB_OPT_APPEND
        bitbake: bitbake-user-manual: update sources mirror URL

  Jose Quaresma (15):
        gstreamer1.0: 1.18.4 -> 1.18.5
        gstreamer1.0-plugins-base: 1.18.4 -> 1.18.5
        gstreamer1.0-plugins-good: 1.18.4 -> 1.18.5
        gstreamer1.0-plugins-bad: 1.18.4 -> 1.18.5
        gstreamer1.0-plugins-ugly: 1.18.4 -> 1.18.5
        gstreamer1.0-rtsp-server: 1.18.4 -> 1.18.5
        gstreamer1.0-libav: 1.18.4 -> 1.18.5
        gstreamer1.0-vaapi: 1.18.4 -> 1.18.5
        gstreamer1.0-omx: 1.18.4 -> 1.18.5
        gstreamer1.0-python: 1.18.4 -> 1.18.5
        gst-devtools: 1.18.4 -> 1.18.5
        gst-examples: 1.18.4 -> 1.18.5
        patch.bbclass: when the patch fails show more info on the fatal error
        sstate.bbclass: count the files on mirrors using the pre local files
        sstate: fix touching files inside pseudo

  Joshua Watt (4):
        bitbake: async: Close sync client event loop
        bitbake: hashserv: Add tests for diverging reports
        bitbake: hashserv: Fix diverging report race condition
        classes/populate_sdk_base: Add setscene tasks

  Kai Kang (1):
        sudo: update multilib patch for sudo.conf

  Khem Raj (11):
        pkgconfig: Update to latest
        libseccomp: Upgrade to 2.5.2 and beyond
        openssl: Drop riscv32 upstreamed patches
        opensbi-payloads.inc: Use strings for fallback
        mesa: Enable svga for x86 only
        qemu: Add knob for enabling PMDK pmem support
        opensbi-payloads: Add dependency on kernel if fdt is set
        librsvg: Fix vendored libc to work on riscv and musl
        librsvg: Bump to 2.52.0 -> 2.52.2
        rust: Upgrade to 1.56.0
        librsvg: Disable 64bit atomics in crossbeam for rv32

  Kiran Surendran (1):
        ffmpeg: fix CVE-2021-38114

  Konrad Weihmann (1):
        libical: fix append in DEPENDS

  Lukasz Majewski (1):
        glibc: Extract common code to build tests to glibc-tests.inc

  Marek Vasut (1):
        piglit: upgrade to latest revision

  Martin Jansa (2):
        webkitgtk: add PACKAGECONFIG for opengl-or-es
        boost: allow searching for python310

  Maximilian Blenk (1):
        mount-copybind: add rootcontext mountoption for overlayfs

  Michael Halstead (2):
        scripts/autobuilder-worker-prereq-tests: jinja2 check
        releases: update to include 3.4 honister

  Michael Opdenacker (18):
        manuals: font fixes
        ref-manual: document DEBUG_PREFIX_MAP
        manuals: replace "apt-get" by "apt"
        Makefile: allow epub and latexpdf outputs to use diagrams from SVG sources
        conf.py: use PNG first in EPUB output
        overview-manual: SVG diagram for the git workflow
        docs: add "make all" to build old types of docs (html, epub, pdf) at once
        manuals: introduce 'yocto_sstate' extlink
        overview-manual: simplify expression
        dev-manual: correct NO_GENERIC_LICENSE section title
        dev-manual: warn about license compliance issues when static libraries are used
        devpyshell: rename to pydevshell
        ref-manual: document TOOLCHAIN_HOST_TASK_ESDK
        manuals: rename "devpyshell" to "pydevshell"
        ref-manual: document SOURCE_DATE_EPOCH
        ref-manual: fix description of SOURCE_DATE_EPOCH
        releases.rst: fix release number for 3.3.3
        docs: poky.yaml: updates for 3.4

  Mike Crowe (2):
        lib/oe/qa,insane: Move extra error handling functions to library
        insane,license,license_image: Allow treating license problems as errors

  Mingli Yu (1):
        packagedata.py: silence a DeprecationWarning

  Oleh Matiusha (1):
        findutils: add ptest

  Oleksandr Kravchuk (15):
        python3: update to 3.9.7
        python3-git: update to 3.1.24
        python3-dbusmock: update to 0.24.0
        python3-setuptools: update to 58.0.4
        python3-setuptools: minor cleanup
        xf86-input-libinput: update to 1.2.0
        libinput: update to 1.19.0
        libxi: update to 1.8
        xorgproto: update to 2021.5
        xkeyboard-config: update to 2.34
        libxkbcommon: update to 1.3.1
        mirrors.bbclass: remove dead infozip mirrors
        man-pages: update to 5.13
        python3-smmap: update to 5.0.0
        python3-pyparsing: update to 3.0.0

  Pablo Saavedra Rodi?o (1):
        mesa: upgrade 21.2.1 -> 21.2.4

  Paul Barker (1):
        bitbake: doc: bitbake-user-manual: Document BB_GIT_SHALLOW and friends

  Paul Eggleton (7):
        migration-3.4: tweak overrides change section
        ref-manual: remove meta class
        poky.yaml: add lz4 and zstd to essential host packages
        migration-3.4: add additional migration info
        migration: tweak introduction section
        poky.yaml: fix lz4 package name for older Ubuntu versions
        migration-3.4: add some extra packaging notes

  Pavel Zhukov (1):
        weston: wrapper for weston modules argument

  Peter Hoyes (2):
        u-boot: Convert ${UBOOT_ENV}.cmd into ${UBOOT_ENV}.scr
        u-boot: Fix syntax error in ${UBOOT_ENV}.scr compilation

  Peter Kjellerstedt (2):
        meson.bblcass: Remove empty egg-info directories before running meson
        qemu.inc: Remove empty egg-info directories before running meson

  Petr Vorel (1):
        ltp: Update to 20210927

  Pgowda (2):
        Fix rust-native build issue when debug is enabled
        rust-cross: Fix directory not deleted for race glibc vs. musl

  Ralph Siemsen (1):
        tar: filter CVEs using vendor name

  Randy Li (1):
        meson: move lang args to the right section

  Richard Purdie (54):
        sstatesig: Only apply group/other permissions to pseudo files
        rpm: Deterministically set vendor macro entry
        abi_version/sstate: Bump to fix rpm corruption issues
        multilib: Avoid sysroot race issues when multilib enabled
        bitbake: knotty/uihelper: Show setscene task progress in summary output
        bitbake: bitbake-worker: Handle pseudo shutdown in Ctrl+C case
        poky.conf: Update tested distros list with recent changes
        bitbake: hashserv: Improve behaviour for better determinism/sstate reuse
        poky.conf: Bump version for 3.4 honister release
        build-appliance-image: Update to honister head revision
        bitbake: bitbake: Bump to version 1.52.0
        build-appliance-image: Update to honister head revision
        layer.conf: Extend recipes not to install without explict dependencies
        libxml2: Use python3targetconfig to fix reproducibility issue
        libnewt: Use python3targetconfig to fix reproducibility issue
        bootchart2: Don't compile python modules
        linux-yocto-dev: Ensure DEPENDS matches recent 5.14 kernel changes
        base/insane: Import oe.qa by default
        base: Clean up unneeded len() calls
        base: Use repr() for printing exceptions
        bitbake.conf: Add BB_CURRENTTASK to BB_HASHEXCLUDE
        reproducible_build: Drop obsolete sstate workaround
        python: Update now reproducibile builds are the default
        bitbake: bitbake-worker: Set BB_CURRENTTASK earlier
        bitbake: compress: Allow to operate on file descriptor
        bitbake: siggen: Change file format of siginfo files to use zstd compressed json
        sstate: Fixes for eSDK generation after zstd switch
        patch: Use repr() with exceptions instead of str()
        reproducible_build: Drop now unneeded compiler warning
        reproducible: Move class function code into library
        reproducible: Move variable definitions to bitbake.conf
        reproducible: Merge code into base.bbclass
        kernel: Add KERNEL_DEBUG_TIMESTAMPS variable
        reproducible: Drop BUILD_REPRODUCIBLE_BINARIES variable
        kernel: Rework kernel make flag to variable mappings
        oeqa: Update cleanup code to wait for hashserv exit
        poky: Reproducible builds are now the default
        bitbake: tests/runqueue: Ensure hashserv exits before deleting files
        bitbake: bitbake-worker: Add debug when unpickle fails
        bitbake: siggen: Fix type conversion issues
        bitbake: test/fetch: Update urls to match upstream branch name changes
        libtool: Update patchset to match those submitted upstream
        staging: Fix autoconf-native rebuild failure
        patch: Fix exception reporting with repr()
        bitbake: fetch2/perforce: Fix typo
        bitbake: bitbake: Bump to post release verion 1.53.0
        poky.conf: Post release version bump
        gcc: Merge three related patches together
        gcc: Drop sdt (dtrace) header patch
        gcc: Drop broken/unneeded patch
        bitbake: tests/runqueue: Drop python version test decorators
        gcc: Update patches submitted/merged upstream
        gcc: Drop testsuite failure fix patch
        gcc: Add missing patch Upstream-Status

  Ross Burton (21):
        bitbake: tests/utils: mark a regex as a raw string
        bitbake: tests/fetch: prefix the FetcherTest temporary directory
        bitbake: fetch2: clarify the command-no-found error message
        bitbake: fetch2/gitsm: remove the 'nugget' SRCREV caching
        linux-yocto: add libmpc-native to DEPENDS
        bitbake: fetch2: document checkstatus API
        curl: fix CVE-2021-22945 through -22947
        oe/license: implement ast.NodeVisitor.visit_Constant
        license.bbclass: implement ast.NodeVisitor.visit_Constant
        bitbake: codegen: implement ast.NodeVisitor.visit_Constant
        testimage: fix unclosed testdata file
        oe/utils: log exceptions in ThreadedWorker functions
        sstate: don't silently handle all exceptions in sstate_checkhashes
        gawk: replace AR patch with upstreamed patch
        gawk: reduce strictness of the time test
        strace: remove obsolete patch
        strace: remove TOOLCHAIN assignment
        oeqa/runtime: load modules using importlib
        oeqa/runtime: search sys.path explicitly for modules
        testimage: remove target_modules_path
        strace: show test suite log on failure

  Sakib Sajal (1):
        go: upgrade 1.16.7 -> 1.16.8

  Saul Wold (3):
        spdx.py: Add annotation to relationship
        create-spdx: add create_annotation function
        create-spdx: cross recipes are native also

  Stefan Herbrechtsmeier (17):
        bitbake: fetch2: npm: Support npm archives with missing search directory mode
        bitbake: fetch2: npm: Create config npmrc in environment instantiation
        bitbake: fetch2: npmsw: Add support for local tarball and link sources
        npm: Add support for EXTRA_OENPM arguments
        recipetool: Move license md5sums into CSV files
        recipetool: Skip common source files in guess_license
        recipetool: Change default paramter fallback_licenses of function split_pkg_licenses from None to []
        recipetool: ignore empty license files
        recipetool: Add logger info for missing license entries
        recipetool: Add support for linenumbers to licenses.csv
        recipetool: npm: Do not add package.json files to LIC_FILES_CHKSUM
        recipetool: npm: Use README as license fallback
        npm: Add variable NPM_NODEDIR with default value
        npm: Use configs for npm environment and args for npm run command
        recipetool: Rework crunch_license to recognize more variants
        recipetool: Simplify common source files skip in guess_license
        npm: Remove unnecessary configs argument from npm run command

  Teoh Jay Shen (1):
        oeqa/runtime/parselogs: modified drm error in common errors list

  Thomas Perrot (1):
        image_types: allow the creation of block devices on top of UBI volumes

  Tim Orling (17):
        ptest-runner: install -collect-system-data script
        python3-hypothesis: upgrade 6.15.0 -> 6.23.2
        python3-importlib-metadata: upgrade 4.6.4 -> 4.8.1
        python3-more-itertools: upgrade 8.9.0 -> 8.10.0
        python3-zipp: upgrade 3.5.0 -> 3.6.0
        libconvert-asn1-perl: upgrade 0.31 -> 0.33
        python3-pytest: upgrade 6.2.4 -> 6.2.5
        at-spi2-core: upgrade 2.40.3 -> 2.42.0
        python3-packaging: DEPENDS on python3-setuptools-native
        python3-packaging: BBCLASSEXTEND nativesdk
        python3-tomli: add recipe for 1.2.1
        python3-setuptools-scm: upgrade 6.0.1 -> 6.3.2
        python3-setuptools: _distutils/sysconfig fix
        python3-pyyaml: upgrade 5.4.1 -> 6.0
        python3-manifest: -pprint RDEPENDS on -profile
        python3-hypothesis: upgrade 6.23.2 -> 6.24.0
        python3-tomli: upgrade 1.2.1 -> 1.2.2

  Tobias Kaufmann (1):
        mount-copybind: add SELinux support

  Yureka (1):
        systemd: add missing include for musl

  Zoltán Böszörményi (1):
        libpam: Fix build with DISTRO_FEATURES usrmerge

  hongxu (1):
        libcap: fix nativesdk-libcap relocate failure

  wangmy (20):
        diffoscope: upgrade 181 -> 182
        cmake: upgrade 3.21.1 -> 3.21.2
        gzip: upgrade 1.10 -> 1.11
        harfbuzz: upgrade 2.9.0 -> 2.9.1
        vulkan-headers: upgrade 1.2.182 -> 1.2.191
        vulkan-loader: upgrade 1.2.182 -> 1.2.191
        vulkan-tools: upgrade 1.2.182 -> 1.2.191
        help2man: upgrade 1.48.4 -> 1.48.5
        python3-more-itertools: upgrade 8.8.0 -> 8.9.0
        acpid: upgrade 2.0.32 -> 2.0.33
        bind: upgrade 9.16.20 -> 9.16.21
        createrepo-c: upgrade 0.17.4 -> 0.17.5
        dnf: upgrade 4.8.0 -> 4.9.0
        ell: upgrade 0.43 -> 0.44
        libical: upgrade 3.0.10 -> 3.0.11
        dhcpcd: upgrade 9.4.0 -> 9.4.1
        dnf: upgrade 4.9.0 -> 4.10.0
        file: upgrade 5.40 -> 5.41
        libdnf: upgrade 0.64.0 -> 0.65.0
        lttng-tools: upgrade 2.13.0 -> 2.13.1

  zhengruoqin (2):
        libsolv: upgrade 0.7.19 -> 0.7.20
        python3-pycryptodome: upgrade 3.10.1 -> 3.11.0

meta-security: a85fbe980e..e81c15f851:
  Armin Kuster (1):
        python3-fail2ban: fix build failure and cleanup

  Kai Kang (1):
        sssd: re-package to fix QA issues

  Kristian Klausen (1):
        swtpm: update to 0.6.1

  Liwei Song (1):
        recipes-security/chipsec: platform security assessment framework

meta-openembedded: 23dc4f060f..2f6797d8d6:
  Alexander Kanavin (23):
        python3-yappi: add python 3.10 fix
        python3-gmpy2: update 2.0.8 -> 2.1.0rc1
        python3-m2crypto: address build failure with openssl 3.x
        lua: remove recipe as it is now in oe-core
        nghttp2: remove recipe as it is now in oe-core
        kronosnet: update 1.20 -> 1.22
        polkit: update 0.116 -> 0.119
        openflow: disable openssl PACKAGECONFIG
        openipmi: add a python 3.10 compatibility patch
        strongswan: disable openssl PACKAGECONFIG
        pkcs11-helper: backport a openssl 3.x patch
        nodejs: use -fpermissive
        nodejs: add a python 3.10 compatibility patch
        php: disable openssl PACKAGECONFIG
        libsigrokdecode: add a python 3.10 compatibility patch
        freerdp: backport openssl 3.x patches
        opensc: do not use -Werror
        cfengine: blacklist due to openssl 3.x incompatibility
        netplan: do not use -Werror
        boinc-client: blacklist due to openssl 3.x incompatibility
        ldns: blacklist due to openssl 3.x incompatibility
        surf: add a webkit 2.34 compatibility patch
        mozjs: update 60.9.0 -> 91.1.0

  Alexander Thoma (1):
        keyutils: fix install path

  Armin Kuster (1):
        Apache: Several CVE fixes

  Chen Qi (1):
        ntfs-3g-ntfsprogs: upgrade to 2021.8.22

  Gianfranco (2):
        vboxguestdrivers: upgrade 6.1.26 -> 6.1.28
        vboxguestdrivers: Fix build failure due to the last update.

  Ivan Maidanski (1):
        bdwgc: upgrade 8.0.4 -> 8.0.6

  Jeremy Kerr (1):
        mctp: Add MCTP control utilities

  Joshua Watt (2):
        colord-native: Inherit pkgconfig
        mutter: Move gsettings to a separate package

  Justin Bronder (2):
        python3-mccabe: fix LICENSE and RDEPENDS
        python3-pyflakes: fix LICENSE, HOMEPAGE and RDEPENDS

  Khem Raj (44):
        packagegroup-meta-oe: Add lv-drivers and lvgl
        python3-pystache: Remove need for python2x
        python3-behave: Switch to using github src_uri
        python3-simpleeval: Remove use_2to3
        python3-parse-type: Do not ask for 2to3
        python3-anyjson: Do not enable 2to3
        python3-pybluez: Do not set 2to3
        packagegroup-meta-networking: Remove nghttp2
        packagegroup-meta-oe: Remove lua
        gjs: Inherit pkgconfig
        luaposix: Use lua 5.4
        devilspie2: Switch to using github repo
        devilspie2: Add missing dependency on libxinerama
        kronosnet: Correct path to poll.h
        luaposix: Upgrade to 35.1
        xfce.bbclass: Mark string as raw in a regexp
        nodejs: add -fpermissive BUILD_CXXFLAGS
        pcimem: Add riscv64 into COMPATIBLE_HOST
        luaposix: Depend on libxcrypt-native
        libcrypt-openssl-rsa-perl: Upgrade to 0.32
        xrdp: Upgrade to 0.9.17
        yelp,yelp-xsl,yelp-tools: Upgrade to 41 release
        mozjs: Disable JIT on mips
        libcrypt-openssl-rsa-perl: Fix build with openssl3+
        nodejs: Upgrade to 14.18.1
        librest: Use master with libsoup3 support
        gnome-online-accounts: Upgrade to 3.43.1
        iwd: Fix  build with musl
        xrdp: Exclude from builds
        xorgxrdp: Add to exclusion list for now
        bluepy: Set PV and correct syntax for RDEPENDS
        python3-kivy: Use new override syntax in RDEPENDS
        bluepy: Fix permissions on tarball
        nodejs: Upgrade to 16.11.1
        mozjs: Fix build on mips/musl
        mozjs: Fix musl miscompiles with HAVE_THREAD_TLS_KEYWORD
        luaposix: Use virtual/crypt instread of hardcoding libxcrypt
        packagegroup-meta-oe: Add libjs-jquery-globalize and libjs-jquery-cookie
        mozjs: Add riscv32 support
        driverctl: Rename to have PV in recipe name
        tbb: Link with libatomic when using clang compiler on rv32
        gimp: Disable vector icons on mips/rv32 using clang
        mozjs: Update to 91.2.0
        mozjs: Fix build for 32bit systems disabling JIT

  Kurt Kiefer (2):
        mozjs: move large static library into staticdev package
        gyp: fix for compatibility with Python 3.10

  Leon Anavi (6):
        python3-aiohue: Upgrade 2.6.1 -> 2.6.3
        python3-paho-mqtt: Upgrade 1.5.1 -> 1.6.1
        python3-thrift: Upgrade 0.13.0 -> 0.15.0
        python3-prompt-toolkit: Upgrade 3.0.19 -> 3.0.21
        python3-traitlets: Upgrade 5.1.0 -> 5.1.1
        python3-prettytable: Upgrade 2.1.0 -> 2.2.1

  LiweiSong (1):
        Revert "chipsec: platform security assessment framework"

  Marco Cavallini (1):
        bluepy_git.bb: Added recipe for BluePy Python interface to Bluetooth LE on Linux (v2)

  Marek Vasut (3):
        apitrace: Upgrade to latest version
        apitrace: Conditionally enable X11 support
        yavta: Upgrade to latest version and drop downstream patch

  Martin Jansa (4):
        protobuf: import a patch from meta-webosose to fix building protobuf-c with gold linker
        grpc: revert GRPCPP_ABSEIL_SYNC change from 1.40.0 to fix undefined references to absl::lts_20210324::Mutex::~Mutex()
        luaposix: depend on target libxcrypt instead of native
        lv-lib-png: add wayland to REQUIRED_DISTRO_FEATURES

  Matthias Klein (1):
        gpsd: Install also the generated parts of the Python library

  Matthias Schiffer (1):
        byacc: switch to official HTTPS mirror

  Mingli Yu (1):
        opencv: remove setup_vars_opencv4.sh

  Oleksandr Kravchuk (72):
        iwd: update to 1.18
        nano: update to 5.9
        ostree: update to 2021.5
        pegtl: update to 3.2.1
        pmdk: update to 1.11.1
        protobuf-c: update to 1.4.0
        thingsboard-gateway: update to 2.8
        libbpf: fix PV
        libcdio-paranoia: update to 10.2+2.0.1
        ttf-abyssinica: update to 2.100
        ttf-dejavu: add UPSTREAM_CHECK_URI
        ttf-vlgothic: update to 20200720
        networkmanager: update to 1.32.12
        nng: update to 1.4.0
        opensaf: update to 5.21.09
        python3-absl: update 0.14.1
        python3-alembic: update to 1.7.4
        python3-astroid: update to 2.8.2
        python3-cantools: update to 36.4.0
        python3-certifi: update to 2021.10.8
        python3-cffi: update to 1.15.0
        python3-colorlog: update to 6.5.0
        python3-coverage: update to 6.0.2
        python3-cryptography-vectors: update to 35.0.0
        python3-dateparser: update to 1.1.0
        python3-elementpath: update to 2.3.2
        python3-eventlet: update to 0.32.0
        python3-google-api-core: update to 2.1.1
        python3-google-api-python-client: update to 2.26.1
        python3-google-auth: update to 2.3.0
        python3-grpcio-tools: update to 1.41.0
        python3-grpcio: update to 1.41.0
        python3-h2: update to 4.1.0
        python3-haversine: update to 2.5.1
        python3-httplib2: update to 0.20.1
        python3-idna: update to 3.3
        python3-iso3166: update to 2.0.2
        python3-joblib: update to 1.1.0
        python3-jsonrpcserver: update to 5.0.3
        python3-paramiko: update to 2.8.0
        python3-portion: update to 2.2.0
        python3-protobuf: update to 3.18.1
        python3-pulsectl: update to 21.10.4
        python3-pycodestyle: update to 2.8.0
        python3-pyephem: update to 4.1
        python3-pyflakes: update to 2.4.0
        python3-pyjwt: update to 2.2.0
        python3-pykickstart: update to 3.34
        python3-pyopenssl: update to 21.0.0
        python3-pyperf: update to 2.3.0
        python3-pytest-timeout: update 2.0.1
        python3-pytz: update to 2021.3
        python3-regex: update to 2021.10.8
        python3-sentry-sdk: update to 1.4.3
        python3-sympy: udpate to 1.9
        python3-twitter: update to 4.1.0
        python3-uritemplate: update to 4.1.1
        python3-websockets: update to 10.0
        python3-wrapt: update to 1.13.2
        python3-xlsxwriter: update to 3.0.1
        python3-xmlschema: update to 1.8.0
        python3-yarl: update to 1.7.0
        python3-typeguard: update to 2.13.0
        python3-pyatspi: update to 2.38.1
        python3-h5py: update to 3.5.0
        python3-pybind11-json: update to 0.2.11
        python3-pychromecast: update to 9.3.1
        python3-tzlocal: update to 4.0.1
        python3-zeroconf: update to 0.36.9
        leptonica: update to 1.82.0
        redis-plus-plus: update to 1.3.2
        hiredis: update to 1.0.2

  Peter Bergin (3):
        pipewire: remove manpages class
        pipewire: also handle pipewire-media-session in systemd class
        pipewire: rework PACKAGECONFIG for systemd service files

  Philippe Coval (5):
        lvgl: Add recipe for Lightweight Graphics Library
        lv-drivers: Add recipe for lvgl lib
        lv-lib-png: Add recipe for LVGL for handling PNG format
        lvgl: Add lv_lib_png to packagegroup
        lvgl: Lint recipe

  Roland Hieber (1):
        rapidjson: override hard-coded lib install dir

  Shiping Ji (1):
        Add recipe for driverctl

  Tim Orling (6):
        unicode-ucd: upgrade 12.1.0 -> 14.0.0
        gnome-screenshot: add recipe for 40.0
        libgweather: upgrade 3.36.2 -> 40.0
        colord: inherit pkgconfig
        gfbgraph: patch to build with latest rest
        gnome-calendar: upgrade 3.38.1 -> 41.0

  Trevor Gamblin (3):
        python3-posix-ipc: Add recipe for version 1.0.5
        python3-pyinotify: Add fcntl, logging to RDEPENDS
        python3-cvxopt: upgrade 1.2.6 -> 1.2.7

  Vyacheslav Yurkov (3):
        grpc: fix cross-compilation of grpc applications
        grpc: fix cross-compilation of grpc applications
        grpc: upgrade 1.38.1 -> 1.41.0

  Wang Mingyu (1):
        poppler: upgrade 21.09.0 -> 21.10.0

  Yi Zhao (3):
        samba: upgrade 4.14.7 -> 4.14.8
        audit: upgrade 3.0.5 -> 3.0.6
        strongswan: upgrade 5.9.3 -> 5.9.4

  Zoltán Böszörményi (1):
        python3-jsmin: Upgrade to version 3.0.0

  wangmy (11):
        openvpn: upgrade 2.5.3 -> 2.5.4
        redis: upgrade 6.2.5 -> 6.2.6
        span-lite: upgrade 0.10.1 -> 0.10.3
        bdwgc: upgrade 8.0.6 -> 8.2.0
        icewm: upgrade 2.7.0 -> 2.8.0
        ifenslave: upgrade 2.12 -> 2.13
        asio: upgrade 1.18.1.bb -> 1.20.0
        libgusb: upgrade 0.3.7 -> 0.3.8
        libxmlb: upgrade 0.3.2 -> 0.3.3
        xdebug: upgrade 2.9.5 -> 3.1.1
        cryptsetup: upgrade 2.3.6 -> 2.4.1

  zangrc (25):
        python3-ipython: upgrade 7.27.0 -> 7.28.0
        python3-jdatetime: upgrade 3.6.2 -> 3.6.4
        python3-multidict: upgrade 5.1.0 -> 5.2.0
        python3-openpyxl: upgrade 3.0.8 -> 3.0.9
        python3-pyscaffold: upgrade 4.0.2 -> 4.1
        python3-transitions: upgrade 0.8.9 -> 0.8.10
        networkmanager-openvpn: upgrade 1.8.14 -> 1.8.16
        ser2net: upgrade 4.3.3 -> 4.3.4
        python3-humanize: upgrade 3.11.0 -> 3.12.0
        python3-nmap: upgrade 1.5.0 -> 1.5.1
        libjs-jquery-cookie: Add recipe
        libjs-jquery-globalize: Add recipe
        python3-cachetools: upgrade 4.2.2 -> 4.2.4
        python3-cbor2: upgrade 5.4.1 -> 5.4.2
        python3-click: upgrade 8.0.1 -> 8.0.3
        python3-configargparse : upgrade 1.5.2 -> 1.5.3
        python3-flask: upgrade 2.0.1 -> 2.0.2
        python3-pyscaffold: upgrade 4.1 -> 4.1.1
        python3-werkzeug: upgrade 2.0.1 -> 2.0.2
        python3-absl: upgrade 0.14.1 -> 0.15.0
        python3-pandas: upgrade 1.3.3 -> 1.3.4
        python3-pulsectl: upgrade 21.10.4 -> 21.10.5
        python3-pyjwt: upgrade 2.2.0 -> 2.3.0
        python3-pytest-asyncio: upgrade 0.15.1 -> 0.16.0
        python3-robotframework: upgrade 4.1.1 -> 4.1.2

  zhengruoqin (15):
        python3-ujson: upgrade 4.1.0 -> 4.2.0
        python3-urllib3: upgrade 1.26.6 -> 1.26.7
        python3-watchdog: upgrade 2.1.5 -> 2.1.6
        gensio: upgrade 2.2.9 -> 2.3.1
        nlohmann-json: upgrade 3.10.2 -> 3.10.4
        libencode-perl: upgrade 3.12 -> 3.16
        python3-socketio: upgrade 5.4.0 -> 5.4.1
        python3-sqlalchemy: upgrade 1.4.23 -> 1.4.26
        python3-stevedore: upgrade 3.4.0 -> 3.5.0
        autofs: upgrade 5.1.7 -> 5.1.8
        links: upgrade 2.22 -> 2.25
        atftp: upgrade 0.7.4 -> 0.7.5
        python3-gmqtt: upgrade 0.6.10 -> 0.6.11
        python3-google-api-python-client: upgrade 2.26.1 -> 2.27.0
        python3-greenlet: upgrade 1.1.1 -> 1.1.2

meta-raspberrypi: 9eb4879cf4..90b3ac6fb3:
  Zygmunt Krynicki (1):
        rpi-config: warn on config.txt lines exceeding 80 bytes
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I9e75d5bd606a913fbe69e6735c9ecafc436441ba
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2017.3.23.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2017.3.23.bb
deleted file mode 100644
index 36fa5ef..0000000
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2017.3.23.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-DESCRIPTION = "The NTFS-3G driver is an open source, freely available NTFS driver for Linux with read and write support."
-HOMEPAGE = "http://www.ntfs-3g.org/"
-DEPENDS = "fuse libgcrypt"
-PROVIDES = "ntfsprogs ntfs-3g"
-LICENSE = "GPLv2 & LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
-                    file://COPYING.LIB;md5=f30a9716ef3762e3467a2f62bf790f0a"
-
-SRC_URI = "http://tuxera.com/opensource/ntfs-3g_ntfsprogs-${PV}.tgz \
-           file://0001-libntfs-3g-Makefile.am-fix-install-failed-while-host.patch \
-"
-S = "${WORKDIR}/ntfs-3g_ntfsprogs-${PV}"
-SRC_URI[md5sum] = "d97474ae1954f772c6d2fa386a6f462c"
-SRC_URI[sha256sum] = "3e5a021d7b761261836dcb305370af299793eedbded731df3d6943802e1262d5"
-
-UPSTREAM_CHECK_URI = "https://www.tuxera.com/community/open-source-ntfs-3g/"
-UPSTREAM_CHECK_REGEX = "ntfs-3g_ntfsprogs-(?P<pver>\d+(\.\d+)+)\.tgz"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[uuid] = "--with-uuid,--without-uuid,util-linux"
-
-# required or it calls ldconfig at install step
-EXTRA_OEMAKE = "LDCONFIG=echo"
-
-PACKAGES =+ "ntfs-3g ntfsprogs libntfs-3g"
-
-FILES:ntfs-3g = "${base_sbindir}/*.ntfs-3g ${bindir}/ntfs-3g* ${base_sbindir}/mount.ntfs"
-RDEPENDS:ntfs-3g += "fuse"
-RRECOMMENDS:ntfs-3g = "util-linux-mount"
-
-FILES:ntfsprogs = "${base_sbindir}/* ${bindir}/* ${sbindir}/*"
-FILES:libntfs-3g = "${libdir}/*${SOLIBS}"
-
-do_install:append() {
-    # Standard mount will execute the program /sbin/mount.TYPE when called.
-    # Add a symbolic link to let mount find ntfs.
-    ln -sf mount.ntfs-3g ${D}${base_sbindir}/mount.ntfs
-    rmdir ${D}${libdir}/ntfs-3g
-
-    # Handle when usrmerge is in effect. Some files are installed to /sbin
-    # regardless of the value of ${base_sbindir}.
-    if [ "${base_sbindir}" != /sbin ] && [ -d ${D}/sbin ]; then
-        mkdir -p ${D}${base_sbindir}
-        mv ${D}/sbin/* ${D}${base_sbindir}
-        rmdir ${D}/sbin
-    fi
-}
-
-# Satisfy the -dev runtime dependency
-ALLOW_EMPTY:${PN} = "1"
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2021.8.22.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2021.8.22.bb
new file mode 100644
index 0000000..1ebbb41
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2021.8.22.bb
@@ -0,0 +1,52 @@
+DESCRIPTION = "The NTFS-3G driver is an open source, freely available NTFS driver for Linux with read and write support."
+HOMEPAGE = "http://www.ntfs-3g.org/"
+DEPENDS = "fuse libgcrypt"
+PROVIDES = "ntfsprogs ntfs-3g"
+LICENSE = "GPLv2 & LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+                    file://COPYING.LIB;md5=f30a9716ef3762e3467a2f62bf790f0a"
+
+SRC_URI = "http://tuxera.com/opensource/ntfs-3g_ntfsprogs-${PV}.tgz \
+           file://0001-libntfs-3g-Makefile.am-fix-install-failed-while-host.patch \
+"
+S = "${WORKDIR}/ntfs-3g_ntfsprogs-${PV}"
+SRC_URI[md5sum] = "90da343e78877d388eb34cefae6799ae"
+SRC_URI[sha256sum] = "55b883aa05d94b2ec746ef3966cb41e66bed6db99f22ddd41d1b8b94bb202efb"
+
+UPSTREAM_CHECK_URI = "https://www.tuxera.com/community/open-source-ntfs-3g/"
+UPSTREAM_CHECK_REGEX = "ntfs-3g_ntfsprogs-(?P<pver>\d+(\.\d+)+)\.tgz"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[uuid] = "--with-uuid,--without-uuid,util-linux"
+
+# required or it calls ldconfig at install step
+EXTRA_OEMAKE = "LDCONFIG=echo"
+
+PACKAGES =+ "ntfs-3g ntfsprogs libntfs-3g"
+
+FILES:ntfs-3g = "${base_sbindir}/*.ntfs-3g ${bindir}/ntfs-3g* ${base_sbindir}/mount.ntfs"
+RDEPENDS:ntfs-3g += "fuse"
+RRECOMMENDS:ntfs-3g = "util-linux-mount"
+
+FILES:ntfsprogs = "${base_sbindir}/* ${bindir}/* ${sbindir}/*"
+FILES:libntfs-3g = "${libdir}/*${SOLIBS}"
+
+do_install:append() {
+    # Standard mount will execute the program /sbin/mount.TYPE when called.
+    # Add a symbolic link to let mount find ntfs.
+    ln -sf mount.ntfs-3g ${D}${base_sbindir}/mount.ntfs
+    rmdir ${D}${libdir}/ntfs-3g
+
+    # Handle when usrmerge is in effect. Some files are installed to /sbin
+    # regardless of the value of ${base_sbindir}.
+    if [ "${base_sbindir}" != /sbin ] && [ -d ${D}/sbin ]; then
+        mkdir -p ${D}${base_sbindir}
+        mv ${D}/sbin/* ${D}${base_sbindir}
+        rmdir ${D}/sbin
+    fi
+}
+
+# Satisfy the -dev runtime dependency
+ALLOW_EMPTY:${PN} = "1"
diff --git a/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.24.bb b/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.24.bb
index dbb576a..4b0f43b 100644
--- a/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.24.bb
+++ b/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.24.bb
@@ -51,6 +51,9 @@
                 --disable-check-update \
                 --without-wmf"
 
+EXTRA_OECONF:append:toolchain-clang:riscv32 = " --disable-vector-icons"
+EXTRA_OECONF:append:toolchain-clang:mips = " --disable-vector-icons"
+
 do_configure:append() {
     find ${B} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
     find ${B} -name Makefile | xargs sed -i s:'-I/usr/include':'-I${STAGING_INCDIR}':g
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.43.bb b/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.43.bb
index 69c23d5..f48f04f 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.43.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.43.bb
@@ -4,15 +4,18 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=00aefaa50aad75c21367df66102d542c \
                     file://GPL3.txt;md5=d32239bcb673463ab874e80d47fae504"
 
-DEPENDS = "gtk+ glib-2.0 libwnck lua virtual/libx11"
+DEPENDS = "gtk+ glib-2.0 libwnck libxinerama lua virtual/libx11"
 
-SRC_URI = " \
-    http://download.savannah.gnu.org/releases/${BPN}/${BPN}_${PV}-src.tar.gz \
+PV .= "+git${SRCPV}"
+
+SRCREV = "a3ee65b815a0247a0dbdaa39353444cef6f93499"
+
+SRC_URI = "git://github.com/dsalt/devilspie2;branch=master \
     file://default.lua \
     file://devilspie2.desktop \
 "
-SRC_URI[md5sum] = "26eed0b5b4af5c7e13c551eceaeab832"
-SRC_URI[sha256sum] = "ecffc17c62b41e196b72340192a90c4223329df041f135e74c0990860595f828"
+
+S = "${WORKDIR}/git"
 
 inherit features_check pkgconfig gettext
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph/0001-Update-rest-requirement-to-rest-1.0.patch b/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph/0001-Update-rest-requirement-to-rest-1.0.patch
new file mode 100644
index 0000000..c24a9e5
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph/0001-Update-rest-requirement-to-rest-1.0.patch
@@ -0,0 +1,72 @@
+From d058e6eb6c9ebf5f4fff89ec0ac93323fc64c1ba Mon Sep 17 00:00:00 2001
+From: Tim Orling <ticotimo@gmail.com>
+Date: Mon, 18 Oct 2021 08:42:35 -0700
+Subject: [PATCH] Update rest requirement to rest-1.0
+
+librest 0.8.1 declares rest-1.0 and was released four years ago.
+
+https://gitlab.gnome.org/GNOME/librest/-/commit/2971b3b92701f70fc368ad64bd25cefaea043f87
+
+Upstream-Status: Submitted
+[https://gitlab.gnome.org/GNOME/libgfbgraph/-/merge_requests/6]
+
+Signed-off-by: Tim Orling <ticotimo@gmail.com>
+
+---
+ .dir-locals.el       | 2 +-
+ configure.ac         | 2 +-
+ gfbgraph/Makefile.am | 2 +-
+ libgfbgraph.pc.in    | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/.dir-locals.el b/.dir-locals.el
+index 77abbf0..d39cdf2 100644
+--- a/.dir-locals.el
++++ b/.dir-locals.el
+@@ -3,7 +3,7 @@
+                                "/usr/include/json-glib-1.0"
+                                "/usr/include/goa-1.0"
+                                "/usr/lib64/goa-1.0/include"
+-                               "/usr/include/rest-0.7"
++                               "/usr/include/rest-1.0"
+                                "/usr/include/dbus-1.0"
+                                "/usr/lib64/dbus-1.0/include"
+                                "/usr/include/gio-unix-2.0/"
+diff --git a/configure.ac b/configure.ac
+index fd1231f..9b49f3f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -40,7 +40,7 @@ AM_CONDITIONAL([ENABLE_GTK_DOC], false)
+ 
+ GOBJECT_INTROSPECTION_CHECK([1.30.0])
+ 
+-PKG_CHECK_MODULES(LIBGFBGRAPH, [glib-2.0 gio-2.0 gobject-2.0 rest-0.7 json-glib-1.0])
++PKG_CHECK_MODULES(LIBGFBGRAPH, [glib-2.0 gio-2.0 gobject-2.0 rest-1.0 json-glib-1.0])
+ 
+ PKG_CHECK_MODULES(SOUP, [libsoup-2.4])
+ SOUP_UNSTABLE_CPPFLAGS=-DLIBSOUP_USE_UNSTABLE_REQUEST_API
+diff --git a/gfbgraph/Makefile.am b/gfbgraph/Makefile.am
+index d07b90d..b993ab7 100644
+--- a/gfbgraph/Makefile.am
++++ b/gfbgraph/Makefile.am
+@@ -60,7 +60,7 @@ GFBGraph_@API_MAJOR@_@API_MINOR@_gir_INCLUDES = \
+ 	GLib-2.0 	\
+ 	Gio-2.0		\
+ 	GObject-2.0	\
+-	Rest-0.7	\
++	Rest-1.0	\
+ 	Json-1.0	\
+ 	Soup-2.4
+ 
+diff --git a/libgfbgraph.pc.in b/libgfbgraph.pc.in
+index f87073e..d4f4e3a 100644
+--- a/libgfbgraph.pc.in
++++ b/libgfbgraph.pc.in
+@@ -9,6 +9,6 @@ apiversion=@API_VERSION@
+ Name: libgfbgraph
+ Description: GObject library for Facebook Graph API
+ Version: @VERSION@
+-Requires: gio-2.0 glib-2.0 goa-1.0 json-glib-1.0 libsoup-2.4 rest-0.7
++Requires: gio-2.0 glib-2.0 goa-1.0 json-glib-1.0 libsoup-2.4 rest-1.0
+ Libs: -L${libdir} -lgfbgraph-${apiversion}
+ Cflags: -I${includedir}/gfbgraph-@API_VERSION@
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.4.bb
index 1c5d90f..23b3bf6 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.4.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.4.bb
@@ -10,8 +10,9 @@
     gnome-online-accounts \
 "
 
-inherit gnomebase gtk-doc gobject-introspection
+inherit gnomebase gtk-doc gobject-introspection pkgconfig
 
+SRC_URI += " file://0001-Update-rest-requirement-to-rest-1.0.patch"
 SRC_URI[archive.md5sum] = "c38af63e49f8fe8baad99537956b69ba"
 SRC_URI[archive.sha256sum] = "6065391f35e7335588cc6b0cc4c1abbce7341488573a654551264cb9793b9379"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.8.bb b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.8.bb
index ccac08d..096e277 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.8.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.8.bb
@@ -9,7 +9,7 @@
 
 DEPENDS = "mozjs gtk+3"
 
-inherit gnomebase gsettings gobject-introspection vala gettext features_check upstream-version-is-even
+inherit gnomebase gsettings gobject-introspection vala gettext features_check upstream-version-is-even pkgconfig
 
 SRC_URI[archive.sha256sum] = "7fb3eb746c17363d9ee47f4a5d0bb048f0075611763eb0da11d85e0e57aff381"
 SRC_URI += "file://0001-Disable-tests-on-host.patch \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/files/8be361b6ce8f0f8053e1609decbdbdc164ec8448.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/files/8be361b6ce8f0f8053e1609decbdbdc164ec8448.patch
deleted file mode 100644
index eabf61a..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/files/8be361b6ce8f0f8053e1609decbdbdc164ec8448.patch
+++ /dev/null
@@ -1,242 +0,0 @@
-From 8be361b6ce8f0f8053e1609decbdbdc164ec8448 Mon Sep 17 00:00:00 2001
-From: Evangelos Ribeiro Tzaras <devrtz@fortysixandtwo.eu>
-Date: Sat, 5 Sep 2020 02:06:34 +0200
-Subject: [PATCH] project: Switch to libhandy-1
-
-This commit updates the dependencies for libhandy to the tagged 1.0
-release and changes the code to accomodate the changes from
-libhandy-0 to libhandy-1.
-
-Notable changes:
-edit-dialog: HdyDialog has been dropped in [1]
-alarm-row: action child type in HdyActionRow has been removed.
-
-[1] https://gitlab.gnome.org/GNOME/libhandy/-/merge_requests/434
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- build-aux/flatpak/org.gnome.Calendar.json |  4 ++--
- meson.build                               |  2 +-
- src/gui/gcal-alarm-row.c                  |  2 +-
- src/gui/gcal-alarm-row.ui                 |  2 +-
- src/gui/gcal-application.c                |  4 ++++
- src/gui/gcal-edit-dialog.c                |  4 ++--
- src/gui/gcal-edit-dialog.h                |  3 +--
- src/gui/gcal-edit-dialog.ui               | 20 ++++++++++----------
- 8 files changed, 22 insertions(+), 19 deletions(-)
-
-diff --git a/build-aux/flatpak/org.gnome.Calendar.json b/build-aux/flatpak/org.gnome.Calendar.json
-index 18893ad6..0772ca8d 100644
---- a/build-aux/flatpak/org.gnome.Calendar.json
-+++ b/build-aux/flatpak/org.gnome.Calendar.json
-@@ -174,8 +174,8 @@
-             "sources" : [
-                 {
-                     "type" : "git",
--                    "url" : "https://source.puri.sm/Librem5/libhandy.git",
--                    "branch" : "libhandy-0-0"
-+                    "url" : "https://gitlab.gnome.org/GNOME/libhandy.git",
-+                    "tag" : "1.0.0"
-                 }
-             ]
-         },
-diff --git a/meson.build b/meson.build
-index 2a546252..b81b95c9 100644
---- a/meson.build
-+++ b/meson.build
-@@ -165,7 +165,7 @@ libedataserver_dep = dependency('libedataserver-1.2', version: '>= 3.17.1')
- libecal_dep = dependency('libecal-2.0', version: '>= 3.33.2')
- libsoup_dep = dependency('libsoup-2.4')
- libdazzle_dep = dependency('libdazzle-1.0', version: '>= 3.33.1')
--libhandy_dep = dependency('libhandy-0.0', version: '>= 0.0.9')
-+libhandy_dep = dependency('libhandy-1', version: '>= 1.0.0')
- glib_dep = dependency('glib-2.0', version: '>= 2.58.0')
- gtk_dep = dependency('gtk+-3.0', version: '>= 3.22.20')
- gio_dep = dependency('gio-2.0', version: '>= 2.58.0')
-diff --git a/src/gui/gcal-alarm-row.c b/src/gui/gcal-alarm-row.c
-index 1f95426c..1ada82f4 100644
---- a/src/gui/gcal-alarm-row.c
-+++ b/src/gui/gcal-alarm-row.c
-@@ -214,7 +214,7 @@ setup_alarm (GcalAlarmRow *self)
-   duration = e_cal_component_alarm_trigger_get_duration (trigger);
-   formatted_duration = format_alarm_duration (duration);
- 
--  hdy_action_row_set_title (HDY_ACTION_ROW (self), formatted_duration);
-+  hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (self), formatted_duration);
- 
-   action = e_cal_component_alarm_get_action (self->alarm);
-   gtk_toggle_button_set_active (self->volume_button, action == E_CAL_COMPONENT_ALARM_AUDIO);
-diff --git a/src/gui/gcal-alarm-row.ui b/src/gui/gcal-alarm-row.ui
-index 7d416c4c..bca8af50 100644
---- a/src/gui/gcal-alarm-row.ui
-+++ b/src/gui/gcal-alarm-row.ui
-@@ -3,7 +3,7 @@
-   <template class="GcalAlarmRow" parent="HdyActionRow">
-     <property name="visible">True</property>
-     <property name="can_focus">False</property>
--    <child type="action">
-+    <child>
-       <object class="GtkBox">
-         <property name="visible">True</property>
-         <property name="can_focus">False</property>
-diff --git a/src/gui/gcal-application.c b/src/gui/gcal-application.c
-index b9d46cec..591b95c8 100644
---- a/src/gui/gcal-application.c
-+++ b/src/gui/gcal-application.c
-@@ -34,6 +34,7 @@
- #include <glib-object.h>
- #include <gio/gio.h>
- #include <glib/gi18n.h>
-+#include <handy.h>
- 
- struct _GcalApplication
- {
-@@ -446,6 +447,9 @@ gcal_application_startup (GApplication *app)
-   if ((g_application_get_flags (app) & G_APPLICATION_IS_SERVICE) != 0)
-     g_application_set_inactivity_timeout (app, 3 * 60 * 1000);
- 
-+  /*  initialize libhandy */
-+  hdy_init();
-+
-   GCAL_EXIT;
- }
- 
-diff --git a/src/gui/gcal-edit-dialog.c b/src/gui/gcal-edit-dialog.c
-index ae2b6714..5494a700 100644
---- a/src/gui/gcal-edit-dialog.c
-+++ b/src/gui/gcal-edit-dialog.c
-@@ -47,7 +47,7 @@
- 
- struct _GcalEditDialog
- {
--  HdyDialog         parent;
-+  GtkDialog         parent;
- 
-   gboolean          writable;
- 
-@@ -133,7 +133,7 @@ static void          on_location_entry_changed_cb                (GtkEntry
- static void          on_add_alarm_button_clicked_cb              (GtkWidget          *button,
-                                                                   GcalEditDialog     *self);
- 
--G_DEFINE_TYPE (GcalEditDialog, gcal_edit_dialog, HDY_TYPE_DIALOG)
-+G_DEFINE_TYPE (GcalEditDialog, gcal_edit_dialog, GTK_TYPE_DIALOG)
- 
- enum
- {
-diff --git a/src/gui/gcal-edit-dialog.h b/src/gui/gcal-edit-dialog.h
-index e4f44ec5..a557916b 100644
---- a/src/gui/gcal-edit-dialog.h
-+++ b/src/gui/gcal-edit-dialog.h
-@@ -22,7 +22,6 @@
- #include "gcal-event.h"
- #include "gcal-manager.h"
- 
--#include <handy.h>
- 
- G_BEGIN_DECLS
- 
-@@ -32,7 +31,7 @@ G_BEGIN_DECLS
- 
- #define GCAL_TYPE_EDIT_DIALOG                (gcal_edit_dialog_get_type ())
- 
--G_DECLARE_FINAL_TYPE (GcalEditDialog, gcal_edit_dialog, GCAL, EDIT_DIALOG, HdyDialog);
-+G_DECLARE_FINAL_TYPE (GcalEditDialog, gcal_edit_dialog, GCAL, EDIT_DIALOG, GtkDialog);
- 
- GtkWidget*           gcal_edit_dialog_new                     (void);
- 
-diff --git a/src/gui/gcal-edit-dialog.ui b/src/gui/gcal-edit-dialog.ui
-index a36d8ae6..c28c22bb 100644
---- a/src/gui/gcal-edit-dialog.ui
-+++ b/src/gui/gcal-edit-dialog.ui
-@@ -1,6 +1,6 @@
- <?xml version="1.0" encoding="UTF-8"?>
- <interface>
--  <template class="GcalEditDialog" parent="HdyDialog">
-+  <template class="GcalEditDialog" parent="GtkDialog">
-     <property name="can_focus">False</property>
-     <property name="resizable">False</property>
-     <property name="modal">True</property>
-@@ -156,7 +156,7 @@
-                         <property name="title" translatable="yes">Title</property>
-                         <property name="activatable-widget">summary_entry</property>
- 
--                        <child type="action">
-+                        <child>
-                           <object class="GtkEntry" id="summary_entry">
-                             <property name="visible">True</property>
-                             <property name="valign">center</property>
-@@ -177,7 +177,7 @@
-                         <property name="title" translatable="yes">Location</property>
-                         <property name="activatable-widget">location_entry</property>
- 
--                        <child type="action">
-+                        <child>
-                           <object class="GtkEntry" id="location_entry">
-                             <property name="visible">True</property>
-                             <property name="valign">center</property>
-@@ -226,7 +226,7 @@
-                         <property name="title" translatable="yes">All Day</property>
-                         <property name="activatable-widget">all_day_switch</property>
- 
--                        <child type="action">
-+                        <child>
-                           <object class="GtkSwitch" id="all_day_switch">
-                             <property name="visible">True</property>
-                             <property name="can_focus">True</property>
-@@ -246,7 +246,7 @@
-                         <property name="visible">True</property>
-                         <property name="title" translatable="yes">Starts</property>
- 
--                        <child type="action">
-+                        <child>
-                           <object class="GtkLabel" id="event_start_label">
-                             <property name="visible">True</property>
-                             <property name="can_focus">False</property>
-@@ -294,7 +294,7 @@
-                         <property name="visible">True</property>
-                         <property name="title" translatable="yes">Ends</property>
- 
--                        <child type="action">
-+                        <child>
-                           <object class="GtkLabel" id="event_end_label">
-                             <property name="visible">True</property>
-                             <property name="can_focus">False</property>
-@@ -343,7 +343,7 @@
-                         <property name="title" translatable="yes">Repeat</property>
-                         <property name="activatable-widget">repeat_combo</property>
- 
--                        <child type="action">
-+                        <child>
-                           <object class="GtkComboBoxText" id="repeat_combo">
-                             <property name="visible">True</property>
-                             <property name="can_focus">False</property>
-@@ -372,7 +372,7 @@
-                         <property name="title" translatable="yes">End Repeat</property>
-                         <property name="activatable-widget">repeat_combo</property>
- 
--                        <child type="action">
-+                        <child>
-                           <object class="GtkComboBoxText" id="repeat_duration_combo">
-                             <property name="visible">True</property>
-                             <property name="can_focus">False</property>
-@@ -397,7 +397,7 @@
-                         <property name="title" translatable="yes">Number of Occurrences</property>
-                         <property name="activatable-widget">number_of_occurrences_spin</property>
- 
--                        <child type="action">
-+                        <child>
-                           <object class = "GtkSpinButton" id="number_of_occurrences_spin">
-                             <property name="input_purpose">number</property>
-                             <property name="input-hints">no-emoji</property>
-@@ -415,7 +415,7 @@
-                         <property name="title" translatable="yes">End Repeat Date</property>
-                         <property name="activatable-widget">until_date_selector</property>
- 
--                        <child type="action">
-+                        <child>
-                           <object class = "GcalDateSelector" id="until_date_selector">
-                             <property name="valign">center</property>
-                           </object>
--- 
-GitLab
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_3.38.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_3.38.1.bb
deleted file mode 100644
index e703ec6..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_3.38.1.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "GNOME calendar"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
-
-SECTION = "x11/gnome"
-
-DEPENDS = " \
-    gtk+3 \
-    libical \
-    gsettings-desktop-schemas \
-    evolution-data-server \
-    libsoup-2.4 \
-    libdazzle \
-    libhandy \
-    libgweather \
-    geoclue \
-"
-
-GNOMEBASEBUILDCLASS = "meson"
-
-inherit gnomebase gsettings gtk-icon-cache gettext features_check upstream-version-is-even
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI += "file://8be361b6ce8f0f8053e1609decbdbdc164ec8448.patch"
-SRC_URI[archive.sha256sum] = "7280880a082d631624d02a102dd547ceb59498da368311f3e49a06cff897f512"
-
-FILES:${PN} += " \
-    ${datadir}/gnome-shell \
-    ${datadir}/metainfo \
-    ${datadir}/dbus-1 \
-"
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_41.0.bb
new file mode 100644
index 0000000..4b9b14a
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_41.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "GNOME calendar"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+SECTION = "x11/gnome"
+
+DEPENDS = " \
+    gtk+3 \
+    libical \
+    gsettings-desktop-schemas \
+    evolution-data-server \
+    libsoup-2.4 \
+    libdazzle \
+    libhandy \
+    libgweather \
+    geoclue \
+"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gsettings gtk-icon-cache gettext features_check upstream-version-is-even mime-xdg
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[archive.sha256sum] = "73ac923c6618bd0957d6b7c012a00a47bff67ee934249358817433772ceb193f"
+
+FILES:${PN} += " \
+    ${datadir}/gnome-shell \
+    ${datadir}/metainfo \
+    ${datadir}/dbus-1 \
+"
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/files/0001-Use-GUri-instead-of-SoupURI.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/files/0001-Use-GUri-instead-of-SoupURI.patch
new file mode 100644
index 0000000..11fc96b
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/files/0001-Use-GUri-instead-of-SoupURI.patch
@@ -0,0 +1,351 @@
+From 5a5abbedb171986dbf6f5a37577ec6afa892b66b Mon Sep 17 00:00:00 2001
+From: Carlos Garcia Campos <cgarcia@igalia.com>
+Date: Mon, 7 Jun 2021 16:31:18 +0200
+Subject: [PATCH 1/2] Use GUri instead of SoupURI
+
+In preparation for libsoup3 where SoupURI has been removed in favor of
+GUri.
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gnome-online-accounts/-/merge_requests/73]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac                         |   2 +-
+ src/goabackend/goaoauth2provider.c   |  11 +--
+ src/goabackend/goaoauthprovider.c    |   8 +-
+ src/goabackend/goaowncloudprovider.c | 107 ++++++++++++++++-----------
+ src/goabackend/goawebview.c          |   9 +--
+ 5 files changed, 80 insertions(+), 57 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 1f88bbd..7c0b39d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -90,7 +90,7 @@ GTK_DOC_CHECK([1.3])
+ # Libraries
+ #
+ 
+-PKG_CHECK_MODULES(GLIB, [glib-2.0 gio-2.0 gio-unix-2.0 >= 2.52])
++PKG_CHECK_MODULES(GLIB, [glib-2.0 gio-2.0 gio-unix-2.0 >= 2.67.4])
+ AC_SUBST(GLIB_CFLAGS)
+ AC_SUBST(GLIB_LIBS)
+ 
+diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c
+index 3715431..2757838 100644
+--- a/src/goabackend/goaoauth2provider.c
++++ b/src/goabackend/goaoauth2provider.c
+@@ -763,7 +763,7 @@ on_web_view_decide_policy (WebKitWebView            *web_view,
+   GHashTable *key_value_pairs;
+   WebKitNavigationAction *action;
+   WebKitURIRequest *request;
+-  SoupURI *uri;
++  GUri *uri;
+   const gchar *fragment;
+   const gchar *oauth2_error;
+   const gchar *query;
+@@ -793,9 +793,9 @@ on_web_view_decide_policy (WebKitWebView            *web_view,
+   if (!g_str_has_prefix (requested_uri, redirect_uri))
+     goto default_behaviour;
+ 
+-  uri = soup_uri_new (requested_uri);
+-  fragment = soup_uri_get_fragment (uri);
+-  query = soup_uri_get_query (uri);
++  uri = g_uri_parse (requested_uri, G_URI_FLAGS_ENCODED, NULL);
++  fragment = g_uri_get_fragment (uri);
++  query = g_uri_get_query (uri);
+ 
+   /* Three cases:
+    * 1) we can either have the backend handle the URI for us, or
+@@ -808,7 +808,7 @@ on_web_view_decide_policy (WebKitWebView            *web_view,
+     {
+       gchar *url;
+ 
+-      url = soup_uri_to_string (uri, FALSE);
++      url = g_uri_to_string (uri);
+       if (!goa_oauth2_provider_process_redirect_url (self, url, &priv->access_token, &priv->error))
+         {
+           g_prefix_error (&priv->error, _("Authorization response: "));
+@@ -889,6 +889,7 @@ on_web_view_decide_policy (WebKitWebView            *web_view,
+   goto ignore_request;
+ 
+  ignore_request:
++  g_uri_unref (uri);
+   g_assert (response_id != GTK_RESPONSE_NONE);
+   if (response_id < 0)
+     gtk_dialog_response (priv->dialog, response_id);
+diff --git a/src/goabackend/goaoauthprovider.c b/src/goabackend/goaoauthprovider.c
+index 0bfab6b..ff0927e 100644
+--- a/src/goabackend/goaoauthprovider.c
++++ b/src/goabackend/goaoauthprovider.c
+@@ -643,7 +643,7 @@ on_web_view_decide_policy (WebKitWebView            *web_view,
+ {
+   GHashTable *key_value_pairs;
+   IdentifyData *data = user_data;
+-  SoupURI *uri;
++  GUri *uri;
+   WebKitNavigationAction *action;
+   WebKitURIRequest *request;
+   const gchar *query;
+@@ -664,8 +664,8 @@ on_web_view_decide_policy (WebKitWebView            *web_view,
+   if (!g_str_has_prefix (requested_uri, redirect_uri))
+     goto default_behaviour;
+ 
+-  uri = soup_uri_new (requested_uri);
+-  query = soup_uri_get_query (uri);
++  uri = g_uri_parse (requested_uri, G_URI_FLAGS_ENCODED, NULL);
++  query = g_uri_get_query (uri);
+ 
+   if (query != NULL)
+     {
+@@ -678,6 +678,8 @@ on_web_view_decide_policy (WebKitWebView            *web_view,
+       g_hash_table_unref (key_value_pairs);
+     }
+ 
++  g_uri_unref (uri);
++
+   if (data->oauth_verifier != NULL)
+     goto ignore_request;
+ 
+diff --git a/src/goabackend/goaowncloudprovider.c b/src/goabackend/goaowncloudprovider.c
+index d142966..10734be 100644
+--- a/src/goabackend/goaowncloudprovider.c
++++ b/src/goabackend/goaowncloudprovider.c
+@@ -22,8 +22,6 @@
+ 
+ #include <glib/gi18n-lib.h>
+ 
+-#include <libsoup/soup.h>
+-
+ #include "goahttpclient.h"
+ #include "goaprovider.h"
+ #include "goaowncloudprovider.h"
+@@ -78,45 +76,42 @@ get_provider_features (GoaProvider *provider)
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+ static char *
+-uri_to_string_with_path (SoupURI *soup_uri, const gchar *path)
++uri_to_string_with_path (GUri *uri, const gchar *path)
+ {
+   gchar *uri_string;
+   gchar *uri_tmp;
+ 
+-  if (soup_uri == NULL)
++  if (uri == NULL)
+     return NULL;
+ 
+-  uri_tmp = soup_uri_to_string (soup_uri, FALSE);
++  uri_tmp = g_uri_to_string (uri);
+   uri_string = g_strconcat (uri_tmp, path, NULL);
+   g_free (uri_tmp);
+ 
+   return uri_string;
+ }
+ 
+-static char *get_webdav_uri (SoupURI *soup_uri)
++static char *get_webdav_uri (GUri *uri)
+ {
+-  SoupURI *uri_tmp;
++  GUri *uri_tmp;
+   gchar *uri_webdav;
+   const gchar *scheme;
+-  guint port;
+ 
+-  if (soup_uri == NULL)
++  if (uri == NULL)
+     return NULL;
+ 
+-  scheme = soup_uri_get_scheme (soup_uri);
+-  port = soup_uri_get_port (soup_uri);
+-  uri_tmp = soup_uri_copy (soup_uri);
+-
+-  if (g_strcmp0 (scheme, SOUP_URI_SCHEME_HTTPS) == 0)
+-    soup_uri_set_scheme (uri_tmp, "davs");
+-  else
+-    soup_uri_set_scheme (uri_tmp, "dav");
+-
+-  if (!soup_uri_uses_default_port (soup_uri))
+-    soup_uri_set_port (uri_tmp, port);
++  scheme = g_uri_get_scheme (uri);
++  uri_tmp = g_uri_build (g_uri_get_flags (uri),
++                         g_strcmp0 (scheme, "https") == 0 ? "davs" : "dav",
++                         g_uri_get_userinfo (uri),
++                         g_uri_get_host (uri),
++                         g_uri_get_port (uri),
++                         g_uri_get_path (uri),
++                         g_uri_get_query (uri),
++                         g_uri_get_fragment (uri));
+ 
+   uri_webdav = uri_to_string_with_path (uri_tmp, WEBDAV_ENDPOINT);
+-  soup_uri_free (uri_tmp);
++  g_uri_unref (uri_tmp);
+ 
+   return uri_webdav;
+ }
+@@ -140,7 +135,7 @@ build_object (GoaProvider         *provider,
+   gchar *uri_carddav;
+   gchar *uri_webdav;
+   GoaPasswordBased *password_based = NULL;
+-  SoupURI *uri = NULL;
++  GUri *uri = NULL;
+   gboolean accept_ssl_errors;
+   gboolean calendar_enabled;
+   gboolean contacts_enabled;
+@@ -176,9 +171,24 @@ build_object (GoaProvider         *provider,
+   account = goa_object_get_account (GOA_OBJECT (object));
+   identity = goa_account_get_identity (account);
+   uri_string = g_key_file_get_string (key_file, group, "Uri", NULL);
+-  uri = soup_uri_new (uri_string);
++  uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED, NULL);
+   if (uri != NULL)
+-    soup_uri_set_user (uri, identity);
++    {
++      GUri *tmp_uri;
++
++      tmp_uri = g_uri_build_with_user (g_uri_get_flags (uri),
++                                       g_uri_get_scheme (uri),
++                                       identity,
++                                       g_uri_get_password (uri),
++                                       g_uri_get_auth_params (uri),
++                                       g_uri_get_host (uri),
++                                       g_uri_get_port (uri),
++                                       g_uri_get_path (uri),
++                                       g_uri_get_query (uri),
++                                       g_uri_get_fragment (uri));
++      g_uri_unref (uri);
++      uri = tmp_uri;
++    }
+ 
+   accept_ssl_errors = g_key_file_get_boolean (key_file, group, "AcceptSslErrors", NULL);
+ 
+@@ -224,7 +234,7 @@ build_object (GoaProvider         *provider,
+ 
+  out:
+   g_clear_object (&password_based);
+-  g_clear_pointer (&uri, soup_uri_free);
++  g_clear_pointer (&uri, g_uri_unref);
+   g_free (uri_string);
+   return ret;
+ }
+@@ -354,8 +364,11 @@ add_entry (GtkWidget     *grid,
+ static gchar *
+ normalize_uri (const gchar *address, gchar **server)
+ {
+-  SoupURI *uri = NULL;
++  GUri *uri = NULL;
++  GUri *uri_tmp = NULL;
+   const gchar *path;
++  const gchar *new_scheme;
++  gchar *new_path = NULL;
+   gchar *ret = NULL;
+   gchar *scheme = NULL;
+   gchar *uri_string = NULL;
+@@ -384,48 +397,56 @@ normalize_uri (const gchar *address, gchar **server)
+   else
+     goto out;
+ 
+-  uri = soup_uri_new (uri_string);
++  uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED, NULL);
+   if (uri == NULL)
+     goto out;
+ 
+   if (g_strcmp0 (scheme, "dav") == 0)
+-    soup_uri_set_scheme (uri, SOUP_URI_SCHEME_HTTP);
++    new_scheme = "http";
+   else if (g_strcmp0 (scheme, "davs") == 0)
+-    soup_uri_set_scheme (uri, SOUP_URI_SCHEME_HTTPS);
++    new_scheme = "https";
++  else
++    new_scheme = g_uri_get_scheme (uri);
+ 
+-  path = soup_uri_get_path (uri);
++  path = g_uri_get_path (uri);
+   if (!g_str_has_suffix (path, "/"))
+-    {
+-      gchar *new_path;
+-
+       new_path = g_strconcat (path, "/", NULL);
+-      soup_uri_set_path (uri, new_path);
+-      path = soup_uri_get_path (uri);
+-      g_free (new_path);
+-    }
++
++  uri_tmp = g_uri_build (g_uri_get_flags (uri),
++                         new_scheme,
++                         g_uri_get_userinfo (uri),
++                         g_uri_get_host (uri),
++                         g_uri_get_port (uri),
++                         new_path ? new_path : path,
++                         g_uri_get_query (uri),
++                         g_uri_get_fragment (uri));
++  g_free (new_path);
++  g_uri_unref (uri);
++  uri = uri_tmp;
++  path = g_uri_get_path (uri);
+ 
+   if (server != NULL)
+     {
+       gchar *port_string;
+       gchar *pretty_path;
+-      guint port;
++      gint port;
+ 
+-      port = soup_uri_get_port (uri);
+-      port_string = g_strdup_printf (":%u", port);
++      port = g_uri_get_port (uri);
++      port_string = g_strdup_printf (":%d", port);
+ 
+       pretty_path = g_strdup (path);
+       pretty_path[strlen(pretty_path) - 1] = '\0';
+ 
+-      *server = g_strconcat (soup_uri_get_host (uri), (port == std_port) ? "" : port_string, pretty_path, NULL);
++      *server = g_strconcat (g_uri_get_host (uri), (port == std_port || port == -1) ? "" : port_string, pretty_path, NULL);
+ 
+       g_free (port_string);
+       g_free (pretty_path);
+     }
+ 
+-  ret = soup_uri_to_string (uri, FALSE);
++  ret = g_uri_to_string (uri);
+ 
+  out:
+-  g_clear_pointer (&uri, soup_uri_free);
++  g_clear_pointer (&uri, g_uri_unref);
+   g_free (scheme);
+   g_free (uri_string);
+   return ret;
+diff --git a/src/goabackend/goawebview.c b/src/goabackend/goawebview.c
+index 2438e0c..3df600e 100644
+--- a/src/goabackend/goawebview.c
++++ b/src/goabackend/goawebview.c
+@@ -25,7 +25,6 @@
+ #include <glib.h>
+ #include <glib/gi18n-lib.h>
+ #include <jsc/jsc.h>
+-#include <libsoup/soup.h>
+ #include <webkit2/webkit2.h>
+ 
+ #include "goawebview.h"
+@@ -77,17 +76,17 @@ web_view_clear_notify_progress_cb (gpointer user_data)
+ static char *
+ web_view_create_loading_title (const gchar *url)
+ {
+-  SoupURI *uri;
++  GUri *uri;
+   const gchar *hostname;
+   gchar *title;
+ 
+   g_return_val_if_fail (url != NULL && url[0] != '\0', NULL);
+ 
+-  uri = soup_uri_new (url);
+-  hostname = soup_uri_get_host (uri);
++  uri = g_uri_parse (url, G_URI_FLAGS_NONE, NULL);
++  hostname = g_uri_get_host (uri);
+   /* translators: %s here is the address of the web page */
+   title = g_strdup_printf (_("Loading “%s”…"), hostname);
+-  soup_uri_free (uri);
++  g_uri_unref (uri);
+ 
+   return title;
+ }
+-- 
+2.33.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/files/0002-Port-to-libsoup3.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/files/0002-Port-to-libsoup3.patch
new file mode 100644
index 0000000..0f95908
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/files/0002-Port-to-libsoup3.patch
@@ -0,0 +1,841 @@
+From 7d8c5208d095ce8e7123935263ef7a02f0381ae5 Mon Sep 17 00:00:00 2001
+From: Carlos Garcia Campos <cgarcia@igalia.com>
+Date: Mon, 7 Jun 2021 18:28:42 +0200
+Subject: [PATCH 2/2] Port to libsoup3
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gnome-online-accounts/-/merge_requests/73]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac                       |   8 +-
+ src/daemon/goadaemon.c             |   2 +-
+ src/goabackend/goaewsclient.c      | 178 +++++++++++++++--------------
+ src/goabackend/goahttpclient.c     |  72 +++++++-----
+ src/goabackend/goalastfmprovider.c |  24 ++--
+ src/goabackend/goaoauth2provider.c |   6 +-
+ src/goabackend/goaoauthprovider.c  |  23 ++--
+ src/goabackend/goarestproxy.h      |   2 -
+ src/goabackend/goasouplogger.c     |  33 ++----
+ src/goabackend/goasouplogger.h     |   3 -
+ src/goabackend/goautils.c          |  27 ++---
+ 11 files changed, 199 insertions(+), 179 deletions(-)
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -113,15 +113,15 @@ if test "$enable_backend" != "no"; then
+   AC_SUBST(GTK_CFLAGS)
+   AC_SUBST(GTK_LIBS)
+ 
+-  PKG_CHECK_MODULES(JAVASCRIPT_CORE_GTK, [javascriptcoregtk-4.0 >= 2.12.0])
++  PKG_CHECK_MODULES(JAVASCRIPT_CORE_GTK, [javascriptcoregtk-4.1 >= 2.33.1])
+   AC_SUBST(JAVASCRIPT_CORE_GTK_CFLAGS)
+   AC_SUBST(JAVASCRIPT_CORE_GTK_LIBS)
+ 
+-  PKG_CHECK_MODULES(WEBKIT_GTK, [webkit2gtk-4.0 >= 2.26.0])
++  PKG_CHECK_MODULES(WEBKIT_GTK, [webkit2gtk-4.1 >= 2.33.1])
+   AC_SUBST(WEBKIT_GTK_CFLAGS)
+   AC_SUBST(WEBKIT_GTK_LIBS)
+ 
+-  PKG_CHECK_MODULES(LIBSOUP, [libsoup-2.4 >= 2.42])
++  PKG_CHECK_MODULES(LIBSOUP, [libsoup-3.0 >= 2.99.8])
+   AC_SUBST(LIBSOUP_CFLAGS)
+   AC_SUBST(LIBSOUP_LIBS)
+ 
+@@ -129,7 +129,7 @@ if test "$enable_backend" != "no"; then
+   AC_SUBST(JSON_GLIB_CFLAGS)
+   AC_SUBST(JSON_GLIB_LIBS)
+ 
+-  PKG_CHECK_MODULES(REST, [rest-0.7])
++  PKG_CHECK_MODULES(REST, [rest-1.0])
+   AC_SUBST(REST_CFLAGS)
+   AC_SUBST(REST_LIBS)
+ 
+--- a/src/daemon/goadaemon.c
++++ b/src/daemon/goadaemon.c
+@@ -1496,7 +1496,7 @@ is_authorization_error (GError *error)
+   g_return_val_if_fail (error != NULL, FALSE);
+ 
+   ret = FALSE;
+-  if (error->domain == REST_PROXY_ERROR || error->domain == SOUP_HTTP_ERROR)
++  if (error->domain == REST_PROXY_ERROR)
+     {
+       if (SOUP_STATUS_IS_CLIENT_ERROR (error->code))
+         ret = TRUE;
+--- a/src/goabackend/goaewsclient.c
++++ b/src/goabackend/goaewsclient.c
+@@ -63,6 +63,12 @@ goa_ews_client_new (void)
+ 
+ typedef struct
+ {
++  gchar *password;
++  gchar *username;
++} AutodiscoverAuthData;
++
++typedef struct
++{
+   GCancellable *cancellable;
+   GError *error;
+   SoupMessage *msgs[2];
+@@ -71,13 +77,16 @@ typedef struct
+   guint pending;
+   gulong cancellable_id;
+   xmlOutputBuffer *buf;
++  AutodiscoverAuthData *auth;
+ } AutodiscoverData;
+ 
+-typedef struct
++static void
++ews_client_autodiscover_auth_data_free (AutodiscoverAuthData *auth)
+ {
+-  gchar *password;
+-  gchar *username;
+-} AutodiscoverAuthData;
++  g_free (auth->password);
++  g_free (auth->username);
++  g_slice_free (AutodiscoverAuthData, auth);
++}
+ 
+ static void
+ ews_client_autodiscover_data_free (gpointer user_data)
+@@ -92,22 +101,12 @@ ews_client_autodiscover_data_free (gpoin
+ 
+   g_clear_error (&data->error);
+ 
+-  /* soup_session_queue_message stole the references to data->msgs */
+   xmlOutputBufferClose (data->buf);
++  g_clear_pointer (&data->auth, ews_client_autodiscover_auth_data_free);
+   g_object_unref (data->session);
+   g_slice_free (AutodiscoverData, data);
+ }
+ 
+-static void
+-ews_client_autodiscover_auth_data_free (gpointer data, GClosure *closure)
+-{
+-  AutodiscoverAuthData *auth = data;
+-
+-  g_free (auth->password);
+-  g_free (auth->username);
+-  g_slice_free (AutodiscoverAuthData, auth);
+-}
+-
+ static gboolean
+ ews_client_check_node (const xmlNode *node, const gchar *name)
+ {
+@@ -115,9 +114,8 @@ ews_client_check_node (const xmlNode *no
+   return node->type == XML_ELEMENT_NODE && !g_strcmp0 ((gchar *) node->name, name);
+ }
+ 
+-static void
+-ews_client_authenticate (SoupSession *session,
+-                         SoupMessage *msg,
++static gboolean
++ews_client_authenticate (SoupMessage *msg,
+                          SoupAuth *auth,
+                          gboolean retrying,
+                          gpointer user_data)
+@@ -125,26 +123,26 @@ ews_client_authenticate (SoupSession *se
+   AutodiscoverAuthData *data = user_data;
+ 
+   if (retrying)
+-    return;
++    return FALSE;
+ 
+   soup_auth_authenticate (auth, data->username, data->password);
++  return TRUE;
+ }
+ 
+-static void
+-ews_client_request_started (SoupSession *session, SoupMessage *msg, SoupSocket *socket, gpointer user_data)
++static gboolean
++ews_client_accept_certificate (SoupMessage *msg, GTlsCertificate *cert, GTlsCertificateFlags cert_flags, gpointer user_data)
+ {
+   AutodiscoverData *data;
+   GTask *task = G_TASK (user_data);
+-  GTlsCertificateFlags cert_flags;
+ 
+-  g_debug ("goa_ews_client_autodiscover(): request started (%p)", msg);
++  g_debug ("goa_ews_client_autodiscover(): accept certificate for request (%p)", msg);
+ 
+   data = (AutodiscoverData *) g_task_get_task_data (task);
+ 
+-  if (!data->accept_ssl_errors
+-      && soup_message_get_https_status (msg, NULL, &cert_flags)
+-      && cert_flags != 0
+-      && data->error == NULL)
++  if (data->accept_ssl_errors || cert_flags == 0)
++    return TRUE;
++
++  if (data->error == NULL)
+     {
+       goa_utils_set_error_ssl (&data->error, cert_flags);
+ 
+@@ -153,6 +151,8 @@ ews_client_request_started (SoupSession
+        */
+       soup_session_abort (data->session);
+     }
++
++  return FALSE;
+ }
+ 
+ static void
+@@ -192,8 +192,10 @@ ews_client_autodiscover_parse_protocol (
+ }
+ 
+ static void
+-ews_client_autodiscover_response_cb (SoupSession *session, SoupMessage *msg, gpointer user_data)
++ews_client_autodiscover_response_cb (SoupSession *session, GAsyncResult *result, gpointer user_data)
+ {
++  SoupMessage *msg;
++  GBytes *body;
+   GError *error = NULL;
+   AutodiscoverData *data;
+   GTask *task = G_TASK (user_data);
+@@ -204,7 +206,11 @@ ews_client_autodiscover_response_cb (Sou
+   xmlDoc *doc;
+   xmlNode *node;
+ 
+-  g_debug ("goa_ews_client_autodiscover(): response (%p, %u)", msg, msg->status_code);
++  msg = soup_session_get_async_result_message (session, result);
++
++  g_debug ("goa_ews_client_autodiscover(): response (%p, %u)", msg, soup_message_get_status (msg));
++
++  body = soup_session_send_and_read_finish (session, result, &error);
+ 
+   data = (AutodiscoverData *) g_task_get_task_data (task);
+   size = sizeof (data->msgs) / sizeof (data->msgs[0]);
+@@ -215,16 +221,19 @@ ews_client_autodiscover_response_cb (Sou
+         break;
+     }
+   if (idx == size || data->pending == 0)
+-    return;
++    {
++      g_bytes_unref (body);
++      g_clear_object (&error);
++      g_object_unref (msg);
++      return;
++    }
+ 
+   data->msgs[idx] = NULL;
+-  status = msg->status_code;
+-
+-  /* status == SOUP_STATUS_CANCELLED, if we are being aborted by the
++  /* G_IO_ERROR_CANCELLED, if we are being aborted by the
+    * GCancellable, an SSL error or another message that was
+    * successful.
+    */
+-  if (status == SOUP_STATUS_CANCELLED)
++  if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+     {
+       /* If we are being aborted by the GCancellable, then the
+        * GTask is responsible for setting the GError automatically.
+@@ -235,21 +244,23 @@ ews_client_autodiscover_response_cb (Sou
+        */
+       goto out;
+     }
+-  else if (status != SOUP_STATUS_OK)
++
++  status = soup_message_get_status (msg);
++  if (status != SOUP_STATUS_OK || error)
+     {
+-      g_warning ("goa_ews_client_autodiscover() failed: %u — %s", msg->status_code, msg->reason_phrase);
++      g_warning ("goa_ews_client_autodiscover() failed: %u — %s", status, soup_message_get_reason_phrase (msg));
+       g_return_if_fail (data->error == NULL);
+ 
+-      goa_utils_set_error_soup (&error, msg);
++      if (!error)
++        goa_utils_set_error_soup (&error, msg);
+       goto out;
+     }
+ 
+-  soup_buffer_free (soup_message_body_flatten (SOUP_MESSAGE (msg)->response_body));
+   g_debug ("The response headers");
+   g_debug ("===================");
+-  g_debug ("%s", SOUP_MESSAGE (msg)->response_body->data);
++  g_debug ("%s", (char *)g_bytes_get_data (body, NULL));
+ 
+-  doc = xmlReadMemory (msg->response_body->data, msg->response_body->length, "autodiscover.xml", NULL, 0);
++  doc = xmlReadMemory (g_bytes_get_data (body, NULL), g_bytes_get_size (body), "autodiscover.xml", NULL, 0);
+   if (doc == NULL)
+     {
+       g_set_error (&error,
+@@ -333,7 +344,7 @@ ews_client_autodiscover_response_cb (Sou
+           /* The callback (ie. this function) will be invoked after we
+            * have returned to the main loop.
+            */
+-          soup_session_cancel_message (data->session, data->msgs[idx], SOUP_STATUS_CANCELLED);
++          g_cancellable_cancel (data->cancellable);
+         }
+     }
+ 
+@@ -368,6 +379,7 @@ ews_client_autodiscover_response_cb (Sou
+ 
+   g_clear_error (&error);
+   g_object_unref (task);
++  g_object_unref (msg);
+ }
+ 
+ static xmlDoc *
+@@ -399,52 +411,54 @@ static void
+ ews_client_post_restarted_cb (SoupMessage *msg, gpointer data)
+ {
+   xmlOutputBuffer *buf = data;
++  GBytes *body;
+ 
+   /* In violation of RFC2616, libsoup will change a POST request to
+    * a GET on receiving a 302 redirect.
+    */
+   g_debug ("Working around libsoup bug with redirect");
+-  g_object_set (msg, SOUP_MESSAGE_METHOD, "POST", NULL);
++  g_object_set (msg, "method", "POST", NULL);
+ 
+-  soup_message_set_request(msg,
+-                           "text/xml; charset=utf-8",
+-                           SOUP_MEMORY_COPY,
+ #ifdef LIBXML2_NEW_BUFFER
+-                           (gchar *) xmlOutputBufferGetContent(buf),
+-                           xmlOutputBufferGetSize(buf));
++  body = g_bytes_new (xmlOutputBufferGetContent (buf), xmlOutputBufferGetSize (buf));
+ #else
+-                           (gchar *) buf->buffer->content,
+-                           buf->buffer->use);
++  body = g_bytes_new (buf->buffer->content, buf->buffer->use);
+ #endif
++  soup_message_set_request_body_from_bytes (msg, "text/xml; charset=utf-8", body);
++  g_bytes_unref (body);
+ }
+ 
+ static SoupMessage *
+-ews_client_create_msg_for_url (const gchar *url, xmlOutputBuffer *buf)
++ews_client_create_msg_for_url (const gchar *url, xmlOutputBuffer *buf, AutodiscoverAuthData *auth, GTask *task)
+ {
+   SoupMessage *msg;
++  GBytes *body = NULL;
+ 
+   msg = soup_message_new (buf != NULL ? "POST" : "GET", url);
+-  soup_message_headers_append (msg->request_headers, "User-Agent", "libews/0.1");
++  soup_message_headers_append (soup_message_get_request_headers (msg),
++                               "User-Agent", "libews/0.1");
++
++  g_signal_connect (msg, "authenticate",
++                    G_CALLBACK (ews_client_authenticate),
++                    auth);
++  g_signal_connect (msg, "accept-certificate",
++                    G_CALLBACK (ews_client_accept_certificate),
++                    task);
+ 
+   if (buf != NULL)
+     {
+-      soup_message_set_request (msg,
+-                                "text/xml; charset=utf-8",
+-                                SOUP_MEMORY_COPY,
+ #ifdef LIBXML2_NEW_BUFFER
+-                                (gchar *) xmlOutputBufferGetContent(buf),
+-                                xmlOutputBufferGetSize(buf));
++      body = g_bytes_new (xmlOutputBufferGetContent (buf), xmlOutputBufferGetSize (buf));
+ #else
+-                                (gchar *) buf->buffer->content,
+-                                buf->buffer->use);
++      body = g_bytes_new (buf->buffer->content, buf->buffer->use);
+ #endif
++      soup_message_set_request_body_from_bytes (msg, "text/xml; charset=utf-8", body);
+       g_signal_connect (msg, "restarted", G_CALLBACK (ews_client_post_restarted_cb), buf);
+     }
+ 
+-  soup_buffer_free (soup_message_body_flatten (SOUP_MESSAGE (msg)->request_body));
+   g_debug ("The request headers");
+   g_debug ("===================");
+-  g_debug ("%s", SOUP_MESSAGE (msg)->request_body->data);
++  g_debug ("%s", body ? (char *)g_bytes_get_data (body, NULL) : "");
+ 
+   return msg;
+ }
+@@ -497,12 +511,15 @@ goa_ews_client_autodiscover (GoaEwsClien
+    * (successful) one win.
+    */
+ 
++  auth = g_slice_new0 (AutodiscoverAuthData);
++  auth->username = g_strdup (username);
++  auth->password = g_strdup (password);
++  data->auth = auth;
+   data->buf = buf;
+-  data->msgs[0] = ews_client_create_msg_for_url (url1, buf);
+-  data->msgs[1] = ews_client_create_msg_for_url (url2, buf);
++  data->msgs[0] = ews_client_create_msg_for_url (url1, buf, auth, task);
++  data->msgs[1] = ews_client_create_msg_for_url (url2, buf, auth, task);
+   data->pending = sizeof (data->msgs) / sizeof (data->msgs[0]);
+-  data->session = soup_session_new_with_options (SOUP_SESSION_SSL_STRICT, FALSE,
+-                                                 NULL);
++  data->session = soup_session_new ();
+   soup_session_add_feature_by_type (data->session, SOUP_TYPE_AUTH_NTLM);
+   data->accept_ssl_errors = accept_ssl_errors;
+ 
+@@ -515,26 +532,19 @@ goa_ews_client_autodiscover (GoaEwsClien
+                                                     NULL);
+     }
+ 
+-  auth = g_slice_new0 (AutodiscoverAuthData);
+-  auth->username = g_strdup (username);
+-  auth->password = g_strdup (password);
+-  g_signal_connect_data (data->session,
+-                         "authenticate",
+-                         G_CALLBACK (ews_client_authenticate),
+-                         auth,
+-                         ews_client_autodiscover_auth_data_free,
+-                         0);
+-
+-  g_signal_connect (data->session, "request-started", G_CALLBACK (ews_client_request_started), task);
+-
+-  soup_session_queue_message (data->session,
+-                              data->msgs[0],
+-                              ews_client_autodiscover_response_cb,
+-                              g_object_ref (task));
+-  soup_session_queue_message (data->session,
+-                              data->msgs[1],
+-                              ews_client_autodiscover_response_cb,
+-                              g_object_ref (task));
++
++  soup_session_send_and_read_async (data->session,
++                                    data->msgs[0],
++                                    G_PRIORITY_DEFAULT,
++                                    data->cancellable,
++                                    (GAsyncReadyCallback)ews_client_autodiscover_response_cb,
++                                    g_object_ref (task));
++  soup_session_send_and_read_async (data->session,
++                                    data->msgs[1],
++                                    G_PRIORITY_DEFAULT,
++                                    data->cancellable,
++                                    (GAsyncReadyCallback)ews_client_autodiscover_response_cb,
++                                    g_object_ref (task));
+ 
+   g_free (url2);
+   g_free (url1);
+--- a/src/goabackend/goahttpclient.c
++++ b/src/goabackend/goahttpclient.c
+@@ -82,7 +82,7 @@ http_client_check_data_free (gpointer us
+ 
+   g_clear_error (&data->error);
+ 
+-  /* soup_session_queue_message stole the references to data->msg */
++  g_object_unref (data->msg);
+   g_object_unref (data->session);
+   g_slice_free (CheckData, data);
+ }
+@@ -97,9 +97,8 @@ http_client_check_auth_data_free (gpoint
+   g_slice_free (CheckAuthData, auth);
+ }
+ 
+-static void
+-http_client_authenticate (SoupSession *session,
+-                         SoupMessage *msg,
++static gboolean
++http_client_authenticate (SoupMessage *msg,
+                          SoupAuth *auth,
+                          gboolean retrying,
+                          gpointer user_data)
+@@ -107,26 +106,26 @@ http_client_authenticate (SoupSession *s
+   CheckAuthData *data = user_data;
+ 
+   if (retrying)
+-    return;
++    return FALSE;
+ 
+   soup_auth_authenticate (auth, data->username, data->password);
++  return TRUE;
+ }
+ 
+-static void
+-http_client_request_started (SoupSession *session, SoupMessage *msg, SoupSocket *socket, gpointer user_data)
++static gboolean
++http_client_accept_certificate (SoupMessage *msg, GTlsCertificate *cert, GTlsCertificateFlags cert_flags, gpointer user_data)
+ {
+   CheckData *data;
+   GTask *task = G_TASK (user_data);
+-  GTlsCertificateFlags cert_flags;
+ 
+   g_debug ("goa_http_client_check(): request started (%p)", msg);
+ 
+   data = (CheckData *) g_task_get_task_data (task);
+ 
+-  if (!data->accept_ssl_errors
+-      && soup_message_get_https_status (msg, NULL, &cert_flags)
+-      && cert_flags != 0
+-      && data->error == NULL)
++  if (data->accept_ssl_errors || cert_flags == 0)
++    return TRUE;
++
++  if (data->error == NULL)
+     {
+       goa_utils_set_error_ssl (&data->error, cert_flags);
+ 
+@@ -135,6 +134,8 @@ http_client_request_started (SoupSession
+        */
+       soup_session_abort (data->session);
+     }
++
++  return FALSE;
+ }
+ 
+ static void
+@@ -154,21 +155,27 @@ http_client_check_cancelled_cb (GCancell
+ }
+ 
+ static void
+-http_client_check_response_cb (SoupSession *session, SoupMessage *msg, gpointer user_data)
++http_client_check_response_cb (SoupSession *session, GAsyncResult *result, gpointer user_data)
+ {
++  SoupMessage *msg;
+   CheckData *data;
+-  GCancellable *cancellable;
+   GTask *task = G_TASK (user_data);
++  guint status;
++  GBytes *body;
++  GError *error = NULL;
+ 
+-  g_debug ("goa_http_client_check(): response (%p, %u)", msg, msg->status_code);
++  msg = soup_session_get_async_result_message (session, result);
++
++  g_debug ("goa_http_client_check(): response (%p, %u)", msg, soup_message_get_status (msg));
++
++  body = soup_session_send_and_read_finish (session, result, &error);
+ 
+   data = (CheckData *) g_task_get_task_data (task);
+-  cancellable = g_task_get_cancellable (task);
+ 
+-  /* status == SOUP_STATUS_CANCELLED, if we are being aborted by the
++  /* G_IO_ERROR_CANCELLED, if we are being aborted by the
+    * GCancellable or due to an SSL error.
+    */
+-  if (msg->status_code == SOUP_STATUS_CANCELLED)
++  if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+     {
+       /* If we are being aborted by the GCancellable then there might
+        * or might not be an error. The GCancellable can be triggered
+@@ -176,20 +183,27 @@ http_client_check_response_cb (SoupSessi
+        * of events across threads.
+        */
+       if (data->error == NULL)
+-        g_cancellable_set_error_if_cancelled (cancellable, &data->error);
++        g_propagate_error (&data->error, g_steal_pointer (&error));
+ 
+       goto out;
+     }
+-  else if (msg->status_code != SOUP_STATUS_OK)
++
++  status = soup_message_get_status (msg);
++  if (status != SOUP_STATUS_OK || error)
+     {
+-      g_warning ("goa_http_client_check() failed: %u — %s", msg->status_code, msg->reason_phrase);
++      g_warning ("goa_http_client_check() failed: %u — %s", status, soup_message_get_reason_phrase (msg));
+       g_return_if_fail (data->error == NULL);
+ 
+-      goa_utils_set_error_soup (&data->error, msg);
++      if (error)
++        g_propagate_error (&data->error, g_steal_pointer (&error));
++      else
++        goa_utils_set_error_soup (&data->error, msg);
+       goto out;
+     }
+ 
+  out:
++  g_clear_error (&error);
++  g_clear_pointer (&body, g_bytes_unref);
+   if (data->error != NULL)
+     g_task_return_error (task, g_steal_pointer (&data->error));
+   else
+@@ -225,7 +239,7 @@ goa_http_client_check (GoaHttpClient
+   data = g_slice_new0 (CheckData);
+   g_task_set_task_data (task, data, http_client_check_data_free);
+ 
+-  data->session = soup_session_new_with_options (SOUP_SESSION_SSL_STRICT, FALSE, NULL);
++  data->session = soup_session_new ();
+ 
+   logger = goa_soup_logger_new (SOUP_LOGGER_LOG_BODY, -1);
+   soup_session_add_feature (data->session, SOUP_SESSION_FEATURE (logger));
+@@ -246,15 +260,21 @@ goa_http_client_check (GoaHttpClient
+   auth = g_slice_new0 (CheckAuthData);
+   auth->username = g_strdup (username);
+   auth->password = g_strdup (password);
+-  g_signal_connect_data (data->session,
++  g_signal_connect_data (data->msg,
+                          "authenticate",
+                          G_CALLBACK (http_client_authenticate),
+                          auth,
+                          http_client_check_auth_data_free,
+                          0);
+ 
+-  g_signal_connect (data->session, "request-started", G_CALLBACK (http_client_request_started), task);
+-  soup_session_queue_message (data->session, data->msg, http_client_check_response_cb, g_object_ref (task));
++  g_signal_connect (data->msg, "accept-certificate", G_CALLBACK (http_client_accept_certificate), task);
++
++  soup_session_send_and_read_async (data->session,
++                                    data->msg,
++                                    G_PRIORITY_DEFAULT,
++                                    data->cancellable,
++                                    (GAsyncReadyCallback)http_client_check_response_cb,
++                                    g_object_ref (task));
+ 
+   g_object_unref (task);
+ }
+--- a/src/goabackend/goalastfmprovider.c
++++ b/src/goabackend/goalastfmprovider.c
+@@ -483,8 +483,7 @@ add_account_cb (GoaManager *manager, GAs
+ 
+ static void
+ check_cb (RestProxyCall *call,
+-          const GError *error,
+-          GObject *weak_object,
++          GAsyncResult *result,
+           gpointer user_data)
+ {
+   AddAccountData *data = user_data;
+@@ -494,6 +493,9 @@ check_cb (RestProxyCall *call,
+   JsonObject *session_obj;
+   const gchar *payload;
+ 
++  if (!rest_proxy_call_invoke_finish (call, result, &data->error))
++    goto out;
++
+   parser = NULL;
+ 
+   parser = json_parser_new ();
+@@ -562,12 +564,12 @@ on_rest_proxy_call_cancelled_cb (GCancel
+ }
+ 
+ static void
+-lastfm_login (GoaProvider                  *provider,
+-              const gchar                  *username,
+-              const gchar                  *password,
+-              GCancellable                 *cancellable,
+-              RestProxyCallAsyncCallback   callback,
+-              gpointer                     user_data)
++lastfm_login (GoaProvider          *provider,
++              const gchar          *username,
++              const gchar          *password,
++              GCancellable         *cancellable,
++              GAsyncReadyCallback   callback,
++              gpointer              user_data)
+ {
+   AddAccountData *data = user_data;
+   RestProxyCall *call;
+@@ -598,7 +600,7 @@ lastfm_login (GoaProvider
+   rest_proxy_call_add_param (call, "api_sig", sig_md5);
+   rest_proxy_call_add_param (call, "format", "json");
+ 
+-  rest_proxy_call_async (call, callback, NULL, data, &data->error);
++  rest_proxy_call_invoke_async (call, NULL, callback, data);
+ 
+   g_signal_connect (cancellable, "cancelled", G_CALLBACK (on_rest_proxy_call_cancelled_cb), call);
+ 
+@@ -665,7 +667,7 @@ add_account (GoaProvider    *provider,
+                 username,
+                 password,
+                 data.cancellable,
+-                (RestProxyCallAsyncCallback) check_cb,
++                (GAsyncReadyCallback) check_cb,
+                 &data);
+ 
+   gtk_widget_set_sensitive (data.connect_button, FALSE);
+@@ -819,7 +821,7 @@ refresh_account (GoaProvider    *provide
+                 username,
+                 password,
+                 data.cancellable,
+-                (RestProxyCallAsyncCallback) check_cb,
++                (GAsyncReadyCallback) check_cb,
+                 &data);
+   gtk_widget_set_sensitive (data.connect_button, FALSE);
+   gtk_widget_show (data.progress_grid);
+--- a/src/goabackend/goaoauth2provider.c
++++ b/src/goabackend/goaoauth2provider.c
+@@ -95,11 +95,15 @@ is_authorization_error (GError *error)
+   g_return_val_if_fail (error != NULL, FALSE);
+ 
+   ret = FALSE;
+-  if (error->domain == REST_PROXY_ERROR || error->domain == SOUP_HTTP_ERROR)
++  if (error->domain == REST_PROXY_ERROR)
+     {
+       if (SOUP_STATUS_IS_CLIENT_ERROR (error->code))
+         ret = TRUE;
+     }
++  else if (g_error_matches (error, GOA_ERROR, GOA_ERROR_NOT_AUTHORIZED))
++    {
++      ret = TRUE;
++    }
+   return ret;
+ }
+ 
+--- a/src/goabackend/goaoauthprovider.c
++++ b/src/goabackend/goaoauthprovider.c
+@@ -77,11 +77,15 @@ is_authorization_error (GError *error)
+   g_return_val_if_fail (error != NULL, FALSE);
+ 
+   ret = FALSE;
+-  if (error->domain == REST_PROXY_ERROR || error->domain == SOUP_HTTP_ERROR)
++  if (error->domain == REST_PROXY_ERROR)
+     {
+       if (SOUP_STATUS_IS_CLIENT_ERROR (error->code))
+         ret = TRUE;
+     }
++  else if (g_error_matches (error, GOA_ERROR, GOA_ERROR_NOT_AUTHORIZED))
++    {
++      ret = TRUE;
++    }
+   return ret;
+ }
+ 
+@@ -701,9 +705,15 @@ on_web_view_decide_policy (WebKitWebView
+ }
+ 
+ static void
+-rest_proxy_call_cb (RestProxyCall *call, const GError *error, GObject *weak_object, gpointer user_data)
++rest_proxy_call_cb (GObject *source, GAsyncResult *result, gpointer user_data)
+ {
++  RestProxyCall *call = REST_PROXY_CALL (source);
+   IdentifyData *data = user_data;
++
++  if (!rest_proxy_call_invoke_finish (call, result, &data->error))
++    {
++      g_prefix_error (&data->error, _("Error getting a Request Token: "));
++    }
+   g_main_loop_quit (data->loop);
+ }
+ 
+@@ -770,11 +780,7 @@ get_tokens_and_identity (GoaOAuthProvide
+       for (n = 0; request_params[n] != NULL; n += 2)
+         rest_proxy_call_add_param (call, request_params[n], request_params[n+1]);
+     }
+-  if (!rest_proxy_call_async (call, rest_proxy_call_cb, NULL, &data, &data.error))
+-    {
+-      g_prefix_error (&data.error, _("Error getting a Request Token: "));
+-      goto out;
+-    }
++  rest_proxy_call_invoke_async (call, NULL, rest_proxy_call_cb, &data);
+ 
+   goa_utils_set_dialog_title (GOA_PROVIDER (provider), dialog, add_account);
+ 
+@@ -796,6 +802,9 @@ get_tokens_and_identity (GoaOAuthProvide
+   g_main_loop_run (data.loop);
+   gtk_container_remove (GTK_CONTAINER (grid), spinner);
+ 
++  if (data.error)
++    goto out;
++
+   if (rest_proxy_call_get_status_code (call) != 200)
+     {
+       gchar *msg;
+--- a/src/goabackend/goarestproxy.h
++++ b/src/goabackend/goarestproxy.h
+@@ -27,8 +27,6 @@
+ 
+ G_BEGIN_DECLS
+ 
+-G_DEFINE_AUTOPTR_CLEANUP_FUNC (RestProxy, g_object_unref);
+-
+ #define GOA_TYPE_REST_PROXY (goa_rest_proxy_get_type ())
+ G_DECLARE_FINAL_TYPE (GoaRestProxy, goa_rest_proxy, GOA, REST_PROXY, RestProxy);
+ 
+--- a/src/goabackend/goasouplogger.c
++++ b/src/goabackend/goasouplogger.c
+@@ -22,15 +22,6 @@
+ 
+ #include "goasouplogger.h"
+ 
+-struct _GoaSoupLogger
+-{
+-  SoupLogger parent_instance;
+-};
+-
+-G_DEFINE_TYPE (GoaSoupLogger, goa_soup_logger, SOUP_TYPE_LOGGER);
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+ static void
+ goa_soup_logger_printer (SoupLogger         *logger,
+                          SoupLoggerLogLevel  level,
+@@ -45,24 +36,16 @@ goa_soup_logger_printer (SoupLogger
+   g_free (message);
+ }
+ 
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-static void
+-goa_soup_logger_init (GoaSoupLogger *self)
+-{
+-  soup_logger_set_printer (SOUP_LOGGER (self), goa_soup_logger_printer, NULL, NULL);
+-}
+-
+-static void
+-goa_soup_logger_class_init (GoaSoupLoggerClass *klass)
+-{
+-}
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+ SoupLogger *
+ goa_soup_logger_new (SoupLoggerLogLevel   level,
+                      gint                 max_body_size)
+ {
+-  return g_object_new (GOA_TYPE_SOUP_LOGGER, "level", level, "max-body-size", max_body_size, NULL);
++  SoupLogger *logger;
++
++  logger = soup_logger_new (level);
++  if (max_body_size != -1)
++    soup_logger_set_max_body_size (logger, max_body_size);
++  soup_logger_set_printer (logger, goa_soup_logger_printer, NULL, NULL);
++
++  return logger;
+ }
+--- a/src/goabackend/goasouplogger.h
++++ b/src/goabackend/goasouplogger.h
+@@ -27,9 +27,6 @@
+ 
+ G_BEGIN_DECLS
+ 
+-#define GOA_TYPE_SOUP_LOGGER (goa_soup_logger_get_type ())
+-G_DECLARE_FINAL_TYPE (GoaSoupLogger, goa_soup_logger, GOA, SOUP_LOGGER, SoupLogger);
+-
+ SoupLogger     *goa_soup_logger_new                (SoupLoggerLogLevel   level,
+                                                     gint                 max_body_size);
+ 
+--- a/src/goabackend/goautils.c
++++ b/src/goabackend/goautils.c
+@@ -841,29 +841,26 @@ goa_utils_set_error_soup (GError **err,
+ {
+   gchar *error_msg = NULL;
+   gint error_code = GOA_ERROR_FAILED; /* TODO: more specific */
++  guint status_code;
+ 
+-  switch (msg->status_code)
++  status_code = soup_message_get_status (msg);
++  switch (status_code)
+     {
+-    case SOUP_STATUS_CANT_RESOLVE:
+-      error_msg = g_strdup (_("Cannot resolve hostname"));
+-      break;
+-
+-    case SOUP_STATUS_CANT_RESOLVE_PROXY:
+-      error_msg = g_strdup (_("Cannot resolve proxy hostname"));
+-      break;
+-
+     case SOUP_STATUS_INTERNAL_SERVER_ERROR:
+     case SOUP_STATUS_NOT_FOUND:
+       error_msg = g_strdup (_("Cannot find WebDAV endpoint"));
+       break;
+ 
+-    case SOUP_STATUS_UNAUTHORIZED:
+-      error_msg = g_strdup (_("Authentication failed"));
+-      error_code = GOA_ERROR_NOT_AUTHORIZED;
+-      break;
+-
+     default:
+-      error_msg = g_strdup_printf (_("Code: %u — Unexpected response from server"), msg->status_code);
++      if (SOUP_STATUS_IS_CLIENT_ERROR (status_code))
++        {
++          error_msg = g_strdup (_("Authentication failed"));
++          error_code = GOA_ERROR_NOT_AUTHORIZED;
++        }
++      else
++        {
++          error_msg = g_strdup_printf (_("Code: %u — Unexpected response from server"), status_code);
++        }
+       break;
+     }
+ 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.40.0.bb
deleted file mode 100644
index c7e8eec..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.40.0.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "GNOME Online Accounts - Single sign-on framework for GNOME"
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=34c88b124db5fb2762c1676be7dadd36"
-
-GNOMEBASEBUILDCLASS = "autotools"
-
-inherit gnomebase gsettings gobject-introspection gsettings gtk-doc vala gettext upstream-version-is-even features_check
-
-# for webkitgtk
-REQUIRED_DISTRO_FEATURES = "x11"
-
-DEPENDS = "glib-2.0"
-
-SRC_URI[archive.sha256sum] = "585c4f979f6f543b77bfdb4fb01eb18ba25c2aec5b7866c676d929616fb2c3fa"
-
-# backend is required for gnome-control-center
-PACKAGECONFIG = "backend other"
-
-PACKAGECONFIG[backend] = "--enable-backend,--disable-backend,gtk+3 webkitgtk libsoup-2.4 json-glib libsecret rest libxml2"
-PACKAGECONFIG[krb5] = "--enable-kerberos, --disable-kerberos , krb5 gcr"
-
-# no extra dependencies!
-PACKAGECONFIG[other] = " \
-    --enable-facebook  --enable-foursquare  --enable-exchange  --enable-flickr  --enable-google  --enable-imap-smtp  --enable-owncloud  --enable-windows-live,\
-    --disable-facebook --disable-foursquare --disable-exchange --disable-flickr --disable-google --disable-imap-smtp --disable-owncloud --disable-windows-live, \
-"
-
-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.43.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.43.1.bb
new file mode 100644
index 0000000..8580d29
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.43.1.bb
@@ -0,0 +1,38 @@
+SUMMARY = "GNOME Online Accounts - Single sign-on framework for GNOME"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=34c88b124db5fb2762c1676be7dadd36"
+
+GNOMEBASEBUILDCLASS = "autotools"
+
+inherit gnomebase gsettings gobject-introspection gsettings gtk-doc vala gettext features_check
+
+# for webkitgtk
+REQUIRED_DISTRO_FEATURES = "x11"
+
+DEPENDS = "glib-2.0"
+
+SRC_URI += "\
+    file://0001-Use-GUri-instead-of-SoupURI.patch \
+    file://0002-Port-to-libsoup3.patch \
+"
+SRC_URI[archive.sha256sum] = "3bcb3663a12efd4482d9fdda3e171676267fc739eb6440a2b7109a0e87afb7e8"
+
+# backend is required for gnome-control-center
+PACKAGECONFIG = "backend other"
+
+PACKAGECONFIG[backend] = "--enable-backend,--disable-backend,gtk+3 webkitgtk libsoup json-glib libsecret rest libxml2"
+PACKAGECONFIG[krb5] = "--enable-kerberos, --disable-kerberos , krb5 gcr"
+
+# no extra dependencies!
+PACKAGECONFIG[other] = " \
+    --enable-facebook  --enable-foursquare  --enable-exchange  --enable-flickr  --enable-google  --enable-imap-smtp  --enable-owncloud  --enable-windows-live,\
+    --disable-facebook --disable-foursquare --disable-exchange --disable-flickr --disable-google --disable-imap-smtp --disable-owncloud --disable-windows-live, \
+"
+
+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-screenshot/gnome-screenshot_40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_40.0.bb
new file mode 100644
index 0000000..72272f9
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_40.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "GNOME Screenshot"
+DESCRIPTION = "GNOME Screenshot is a small utility that takes a screenshot \
+of the whole desktop, the currently focused window, or an area of the screen."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+SECTION = "x11/gnome"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit features_check gnomebase gettext upstream-version-is-even pkgconfig
+
+SRC_URI[archive.sha256sum] = "368ca95a39e39dc2406c849e8c4205e3f574acdd874c30741873455e3d21a5e2"
+
+DEPENDS += "glib-2.0 glib-2.0-native gtk+3 libhandy xext"
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/metainfo \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather_3.36.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather_3.36.2.bb
deleted file mode 100644
index 69fe955..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather_3.36.2.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "A library to access weather information from online services"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-GNOMEBASEBUILDCLASS = "meson"
-
-inherit gnomebase gsettings gobject-introspection gettext gtk-doc vala features_check upstream-version-is-even
-
-SRC_URI[archive.md5sum] = "ff399cf89e97a3e574ae05db5617b96b"
-SRC_URI[archive.sha256sum] = "ee1201a8fc25c14e940d3b26db49a34947c8aebf67dee01ee67fbcb06ecb37a0"
-
-# gobject-introspection is mandatory and cannot be configured
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
-UNKNOWN_CONFIGURE_WHITELIST:append = " introspection"
-
-GTKDOC_MESON_OPTION = "gtk_doc"
-
-DEPENDS = " \
-    gtk+3 \
-    json-glib \
-    libsoup-2.4 \
-    geocode-glib \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather_40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather_40.0.bb
new file mode 100644
index 0000000..1d9daac
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather_40.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "A library to access weather information from online services"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gsettings gobject-introspection gettext gtk-doc vala features_check upstream-version-is-even
+
+SRC_URI[archive.sha256sum] = "ca4e8f2a4baaa9fc6d75d8856adb57056ef1cd6e55c775ba878ae141b6276ee6"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+UNKNOWN_CONFIGURE_WHITELIST:append = " introspection"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+DEPENDS = " \
+    geocode-glib \
+    gtk+3 \
+    json-glib \
+    libsoup-2.4 \
+    python3-pygobject-native \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.6.bb b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.6.bb
index 72e7767..b659d92 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.6.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_3.34.6.bb
@@ -73,7 +73,9 @@
     done
 }
 
-PACKAGES =+ "${PN}-tests"
+GSETTINGS_PACKAGE = "${PN}-gsettings"
+
+PACKAGES =+ "${PN}-tests ${PN}-gsettings"
 
 FILES:${PN} += " \
     ${datadir}/gnome-control-center \
@@ -93,5 +95,5 @@
     ${libdir}/${MUTTER_API_NAME}/lib*.so \
 "
 
-RDEPENDS:${PN} += "zenity"
+RDEPENDS:${PN} += "zenity ${PN}-gsettings"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/rest/files/0001-Use-GUri-instead-of-SoupURI.patch b/meta-openembedded/meta-gnome/recipes-gnome/rest/files/0001-Use-GUri-instead-of-SoupURI.patch
new file mode 100644
index 0000000..37ba0a0
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/rest/files/0001-Use-GUri-instead-of-SoupURI.patch
@@ -0,0 +1,181 @@
+From d39fd6d5f4c0a63cc048b84b0f989cb83f31e5fe Mon Sep 17 00:00:00 2001
+From: Carlos Garcia Campos <cgarcia@igalia.com>
+Date: Tue, 8 Jun 2021 10:57:06 +0200
+Subject: [PATCH 1/2] Use GUri instead of SoupURI
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/librest/-/merge_requests/6]
+---
+ configure.ac               |  2 +-
+ rest-extras/flickr-proxy.c | 19 ++++++++++++++-----
+ rest/oauth-proxy-call.c    | 19 ++++++++++++++-----
+ rest/oauth2-proxy.c        | 22 +++++++++++-----------
+ 4 files changed, 40 insertions(+), 22 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d15e592..d586e69 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -40,7 +40,7 @@ AM_PROG_CC_C_O
+ LT_PREREQ([2.2.6])
+ LT_INIT([disable-static])
+ 
+-PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.44)
++PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.67.4)
+ PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.42)
+ PKG_CHECK_MODULES(XML, libxml-2.0)
+ PKG_CHECK_MODULES(GTHREAD, gthread-2.0)
+diff --git a/rest-extras/flickr-proxy.c b/rest-extras/flickr-proxy.c
+index 3342a4d..7726359 100644
+--- a/rest-extras/flickr-proxy.c
++++ b/rest-extras/flickr-proxy.c
+@@ -304,13 +304,13 @@ flickr_proxy_build_login_url (FlickrProxy *proxy,
+                               const char  *frob,
+                               const char  *perms)
+ {
+-  SoupURI *uri;
++  GUri *uri;
+   GHashTable *params;
+   char *sig, *s;
++  char *query;
+ 
+   g_return_val_if_fail (FLICKR_IS_PROXY (proxy), NULL);
+ 
+-  uri = soup_uri_new ("http://flickr.com/services/auth/");
+   params = g_hash_table_new (g_str_hash, g_str_equal);
+ 
+   g_hash_table_insert (params, "api_key", proxy->priv->api_key);
+@@ -321,14 +321,23 @@ flickr_proxy_build_login_url (FlickrProxy *proxy,
+ 
+   sig = flickr_proxy_sign (proxy, params);
+   g_hash_table_insert (params, "api_sig", sig);
++  query = soup_form_encode_hash (params);
+ 
+-  soup_uri_set_query_from_form (uri, params);
++  uri = g_uri_build (G_URI_FLAGS_ENCODED,
++                     "http",
++                     NULL,
++                     "flickr.com",
++                     -1,
++                     "services/auth/",
++                     query,
++                     NULL);
+ 
+-  s = soup_uri_to_string (uri, FALSE);
++  s = g_uri_to_string (uri);
+ 
++  g_free (query);
+   g_free (sig);
+   g_hash_table_destroy (params);
+-  soup_uri_free (uri);
++  g_uri_unref (uri);
+ 
+   return s;
+ }
+diff --git a/rest/oauth-proxy-call.c b/rest/oauth-proxy-call.c
+index c90c69d..e238c3c 100644
+--- a/rest/oauth-proxy-call.c
++++ b/rest/oauth-proxy-call.c
+@@ -30,7 +30,7 @@
+ 
+ G_DEFINE_TYPE (OAuthProxyCall, oauth_proxy_call, REST_TYPE_PROXY_CALL)
+ 
+-#define OAUTH_ENCODE_STRING(x_) (x_ ? soup_uri_encode( (x_), "!$&'()*+,;=@") : g_strdup (""))
++#define OAUTH_ENCODE_STRING(x_) (x_ ? g_uri_escape_string( (x_), NULL, TRUE) : g_strdup (""))
+ 
+ static char *
+ sign_plaintext (OAuthProxyPrivate *priv)
+@@ -136,15 +136,24 @@ sign_hmac (OAuthProxy *proxy, RestProxyCall *call, GHashTable *oauth_params)
+   if (priv->oauth_echo) {
+     g_string_append_uri_escaped (text, priv->service_url, NULL, FALSE);
+   } else if (priv->signature_host != NULL) {
+-    SoupURI *url = soup_uri_new (url_str);
++    GUri *url = g_uri_parse (url_str, G_URI_FLAGS_ENCODED, NULL);
++    GUri *new_url;
+     gchar *signing_url;
+ 
+-    soup_uri_set_host (url, priv->signature_host);
+-    signing_url = soup_uri_to_string (url, FALSE);
++    new_url = g_uri_build (g_uri_get_flags (url),
++                           g_uri_get_scheme (url),
++                           g_uri_get_userinfo (url),
++                           priv->signature_host,
++                           g_uri_get_port (url),
++                           g_uri_get_path (url),
++                           g_uri_get_query (url),
++                           g_uri_get_fragment (url));
++    signing_url = g_uri_to_string (new_url);
+ 
+     g_string_append_uri_escaped (text, signing_url, NULL, FALSE);
+ 
+-    soup_uri_free (url);
++    g_uri_unref (new_url);
++    g_uri_unref (url);
+     g_free (signing_url);
+   } else {
+     g_string_append_uri_escaped (text, url_str, NULL, FALSE);
+diff --git a/rest/oauth2-proxy.c b/rest/oauth2-proxy.c
+index 24e5da0..3382f8b 100644
+--- a/rest/oauth2-proxy.c
++++ b/rest/oauth2-proxy.c
+@@ -37,8 +37,6 @@ oauth2_proxy_error_quark (void)
+     return g_quark_from_static_string ("rest-oauth2-proxy");
+ }
+ 
+-#define EXTRA_CHARS_ENCODE "!$&'()*+,;=@"
+-
+ enum {
+   PROP_0,
+   PROP_CLIENT_ID,
+@@ -242,8 +240,8 @@ append_query_param (gpointer key, gpointer value, gpointer user_data)
+     char *encoded_val, *encoded_key;
+     char *param;
+ 
+-    encoded_val = soup_uri_encode (value, EXTRA_CHARS_ENCODE);
+-    encoded_key = soup_uri_encode (key, EXTRA_CHARS_ENCODE);
++    encoded_val = g_uri_escape_string (value, NULL, TRUE);
++    encoded_key = g_uri_escape_string (key, NULL, TRUE);
+ 
+     param = g_strdup_printf ("%s=%s", encoded_key, encoded_val);
+     g_free (encoded_key);
+@@ -295,8 +293,8 @@ oauth2_proxy_build_login_url_full (OAuth2Proxy *proxy,
+         g_hash_table_foreach (extra_params, append_query_param, params);
+     }
+ 
+-    encoded_uri = soup_uri_encode (redirect_uri, EXTRA_CHARS_ENCODE);
+-    encoded_id = soup_uri_encode (proxy->priv->client_id, EXTRA_CHARS_ENCODE);
++    encoded_uri = g_uri_escape_string (redirect_uri, NULL, TRUE);
++    encoded_id = g_uri_escape_string (proxy->priv->client_id, NULL, TRUE);
+ 
+     url = g_strdup_printf ("%s?client_id=%s&redirect_uri=%s&type=user_agent",
+                            proxy->priv->auth_endpoint, encoded_id,
+@@ -378,20 +376,22 @@ oauth2_proxy_extract_access_token (const char *url)
+ {
+   GHashTable *params;
+   char *token = NULL;
+-  SoupURI *soupuri = soup_uri_new (url);
++  const char *fragment;
++  GUri *uri = g_uri_parse (url, G_URI_FLAGS_ENCODED, NULL);
+ 
+-  if (soupuri->fragment != NULL) {
+-    params = soup_form_decode (soupuri->fragment);
++  fragment = g_uri_get_fragment (uri);
++  if (fragment != NULL) {
++    params = soup_form_decode (fragment);
+ 
+     if (params) {
+       char *encoded = g_hash_table_lookup (params, "access_token");
+       if (encoded)
+-        token = soup_uri_decode (encoded);
++        token = g_uri_unescape_string (encoded, NULL);
+ 
+       g_hash_table_destroy (params);
+     }
+   }
+-  soup_uri_free (soupuri);
++  g_uri_unref (uri);
+ 
+   return token;
+ }
+-- 
+2.33.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/rest/files/0002-Port-to-libsoup3.patch b/meta-openembedded/meta-gnome/recipes-gnome/rest/files/0002-Port-to-libsoup3.patch
new file mode 100644
index 0000000..eed522f
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/rest/files/0002-Port-to-libsoup3.patch
@@ -0,0 +1,1696 @@
+From 3dc630ae5b9dc6cda1ba318de2cd654aaba7b4a2 Mon Sep 17 00:00:00 2001
+From: Carlos Garcia Campos <cgarcia@igalia.com>
+Date: Tue, 8 Jun 2021 17:44:04 +0200
+Subject: [PATCH 2/2] Port to libsoup3
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/librest/-/merge_requests/6]
+---
+ configure.ac                |  39 ++++-
+ rest-extras.pc.in           |   2 +-
+ rest-extras/youtube-proxy.c | 110 +++++++++++---
+ rest.pc.in                  |   2 +-
+ rest/rest-private.h         |  22 ++-
+ rest/rest-proxy-auth.c      |  16 ++
+ rest/rest-proxy-call.c      | 296 +++++++++++++++++++++++++++++-------
+ rest/rest-proxy.c           | 209 ++++++++++++++++++++++---
+ tests/custom-serialize.c    |  18 +++
+ tests/proxy-continuous.c    |  37 ++++-
+ tests/proxy.c               |  63 +++++++-
+ tests/threaded.c            |  17 +++
+ 12 files changed, 719 insertions(+), 112 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d586e69..75c02fe 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -20,12 +20,6 @@ AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability no-define dist-xz])
+ 
+ AM_SILENT_RULES([yes])
+ 
+-API_MAJOR=1
+-API_MINOR=0
+-AC_SUBST([API_VERSION],[$API_MAJOR.$API_MINOR])
+-AC_SUBST([API_VERSION_AM],[$API_MAJOR\_$API_MINOR])
+-AC_DEFINE_UNQUOTED(API_VERSION, [$API_VERSION], [API version])
+-
+ AC_CANONICAL_HOST
+ 
+ AC_PROG_CC
+@@ -41,7 +35,6 @@ LT_PREREQ([2.2.6])
+ LT_INIT([disable-static])
+ 
+ PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.67.4)
+-PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.42)
+ PKG_CHECK_MODULES(XML, libxml-2.0)
+ PKG_CHECK_MODULES(GTHREAD, gthread-2.0)
+ 
+@@ -58,6 +51,37 @@ AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums])
+ localedir=${datadir}/locale
+ AC_SUBST(localedir)
+ 
++AC_MSG_CHECKING([for libsoup version to use])
++AC_ARG_WITH(soup,
++            [AC_HELP_STRING([--soup=2|3],
++                            [version of libsoup library to use (default: 2)])],
++            [case "$withval" in
++                2|3) ;;
++                *) AC_MSG_ERROR([invalid argument "$withval" for --with-soup]) ;;
++             esac],
++            [with_soup=2])
++AC_MSG_RESULT([$with_soup])
++
++API_MAJOR=1
++
++if test "$with_soup" = "2"; then
++    PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.42)
++    SOUP_API_VERSION=2.4
++    API_MINOR=0
++    AC_DEFINE([WITH_SOUP_2],[1],[Define if libsoup version used is 2])
++else
++    PKG_CHECK_MODULES(SOUP, libsoup-3.0 >= 2.99.8)
++    SOUP_API_VERSION=3.0
++    API_MINOR=1
++fi
++
++AM_CONDITIONAL([WITH_SOUP_2],[test "$with_soup" = "2"])
++AC_SUBST(SOUP_API_VERSION)
++
++AC_SUBST([API_VERSION],[$API_MAJOR.$API_MINOR])
++AC_SUBST([API_VERSION_AM],[$API_MAJOR\_$API_MINOR])
++AC_DEFINE_UNQUOTED(API_VERSION, [$API_VERSION], [API version])
++
+ dnl === Coverage report =======================================================
+ AC_PATH_PROG([GCOV], [lcov], [enable_gcov=no])
+ 
+@@ -130,6 +154,7 @@ echo "                 LibRest $VERSION"
+ echo "                 ================"
+ echo ""
+ echo "                   prefix:   ${prefix}"
++echo "          libsoup version:   ${with_soup}"
+ echo ""
+ echo "            Documentation:   ${enable_gtk_doc}"
+ echo "       Introspection data:   ${enable_introspection}"
+diff --git a/rest-extras.pc.in b/rest-extras.pc.in
+index 39f21bf..3723d6d 100644
+--- a/rest-extras.pc.in
++++ b/rest-extras.pc.in
+@@ -9,4 +9,4 @@ Description: RESTful web api query library
+ Version: @VERSION@
+ Libs: -L${libdir} -lrest-extras-${apiversion}
+ Cflags: -I${includedir}/rest-${apiversion}
+-Requires: glib-2.0 libsoup-2.4 libxml-2.0
++Requires: glib-2.0 libsoup-@SOUP_API_VERSION@ libxml-2.0
+diff --git a/rest-extras/youtube-proxy.c b/rest-extras/youtube-proxy.c
+index be0cf08..cd598f4 100644
+--- a/rest-extras/youtube-proxy.c
++++ b/rest-extras/youtube-proxy.c
+@@ -246,6 +246,9 @@ typedef struct {
+   GObject *weak_object;
+   gpointer user_data;
+   gsize uploaded;
++#ifndef WITH_SOUP_2
++  GCancellable *cancellable;
++#endif
+ } YoutubeProxyUploadClosure;
+ 
+ static void
+@@ -255,7 +258,11 @@ _upload_async_weak_notify_cb (gpointer *data,
+   YoutubeProxyUploadClosure *closure =
+     (YoutubeProxyUploadClosure *) data;
+ 
++#ifdef WITH_SOUP_2
+   _rest_proxy_cancel_message (REST_PROXY (closure->proxy), closure->message);
++#else
++  g_cancellable_cancel (closure->cancellable);
++#endif
+ }
+ 
+ static void
+@@ -267,6 +274,9 @@ _upload_async_closure_free (YoutubeProxyUploadClosure *closure)
+                          closure);
+ 
+   g_object_unref (closure->proxy);
++#ifndef WITH_SOUP_2
++  g_object_unref (closure->cancellable);
++#endif
+ 
+   g_slice_free (YoutubeProxyUploadClosure, closure);
+ }
+@@ -286,6 +296,9 @@ _upload_async_closure_new (YoutubeProxy *self,
+   closure->message = message;
+   closure->weak_object = weak_object;
+   closure->user_data = user_data;
++#ifndef WITH_SOUP_2
++  closure->cancellable = g_cancellable_new ();
++#endif
+ 
+   if (weak_object != NULL)
+     g_object_weak_ref (weak_object,
+@@ -295,41 +308,67 @@ _upload_async_closure_new (YoutubeProxy *self,
+ }
+ 
+ static void
+-_upload_completed_cb (SoupSession *session,
+-                      SoupMessage *message,
++_upload_completed_cb (SoupMessage *message,
++                      GBytes      *payload,
++                      GError      *error,
+                       gpointer     user_data)
+ {
+   YoutubeProxyUploadClosure *closure =
+     (YoutubeProxyUploadClosure *) user_data;
+-  GError *error = NULL;
++  gsize length;
++  gconstpointer data;
++  guint status_code;
++  const char *reason_phrase;
+ 
+   if (closure->callback == NULL)
+     return;
+ 
+-  if (message->status_code < 200 || message->status_code >= 300)
+-    error = g_error_new_literal (REST_PROXY_ERROR,
+-                                 message->status_code,
+-                                 message->reason_phrase);
+-
+-  closure->callback (closure->proxy, message->response_body->data,
+-                     message->request_body->length,
+-                     message->request_body->length,
++#ifdef WITH_SOUP_2
++  status_code = message->status_code;
++  reason_phrase = message->reason_phrase;
++#else
++  status_code = soup_message_get_status (message);
++  reason_phrase = soup_message_get_reason_phrase (message);
++#endif
++
++  if (status_code < 200 || status_code >= 300)
++    {
++      g_clear_error (&error);
++      error = g_error_new_literal (REST_PROXY_ERROR,
++                                   status_code,
++                                   reason_phrase);
++    }
++
++  data = g_bytes_get_data (payload, &length);
++  closure->callback (closure->proxy, data, length, length,
+                      error, closure->weak_object, closure->user_data);
++  g_bytes_unref (payload);
+ 
+   _upload_async_closure_free (closure);
+ }
+ 
+ static void
+ _message_wrote_data_cb (SoupMessage               *msg,
++#ifdef WITH_SOUP_2
+                         SoupBuffer                *chunk,
++#else
++                        gsize                      chunk_size,
++#endif
+                         YoutubeProxyUploadClosure *closure)
+ {
+-  closure->uploaded = closure->uploaded + chunk->length;
++#ifdef WITH_SOUP_2
++  gsize chunk_size = chunk->length;
++  goffset content_length = msg->request_body->length;
++#else
++  goffset content_length = soup_message_headers_get_content_length (soup_message_get_request_headers (msg));
++#endif
++
++  closure->uploaded = closure->uploaded + chunk_size;
+ 
+-  if (closure->uploaded < msg->request_body->length)
++  if (closure->uploaded < content_length)
+     closure->callback (closure->proxy,
+                        NULL,
+-                       msg->request_body->length,
++                       content_length,
+                        closure->uploaded,
+                        NULL,
+                        closure->weak_object,
+@@ -364,7 +403,12 @@ youtube_proxy_upload_async (YoutubeProxy              *self,
+   SoupMultipart *mp;
+   SoupMessage *message;
+   SoupMessageHeaders *part_headers;
++  SoupMessageHeaders *request_headers;
++#ifdef WITH_SOUP_2
+   SoupBuffer *sb;
++#else
++  GBytes *sb;
++#endif
+   gchar *content_type;
+   gchar *atom_xml;
+   GMappedFile *map;
+@@ -380,10 +424,17 @@ youtube_proxy_upload_async (YoutubeProxy              *self,
+ 
+   atom_xml = _construct_upload_atom_xml (fields, incomplete);
+ 
++#ifdef WITH_SOUP_2
+   sb = soup_buffer_new_with_owner (atom_xml,
+                                    strlen(atom_xml),
+                                    atom_xml,
+                                    (GDestroyNotify) g_free);
++#else
++  sb = g_bytes_new_with_free_func (atom_xml,
++                                   strlen (atom_xml),
++                                   (GDestroyNotify) g_free,
++                                   atom_xml);
++#endif
+ 
+   part_headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
+ 
+@@ -393,7 +444,11 @@ youtube_proxy_upload_async (YoutubeProxy              *self,
+ 
+   soup_multipart_append_part (mp, part_headers, sb);
+ 
++#ifdef WITH_SOUP_2
+   soup_buffer_free (sb);
++#else
++  g_bytes_unref (sb);
++#endif
+ 
+   content_type = g_content_type_guess (
+       filename,
+@@ -401,24 +456,37 @@ youtube_proxy_upload_async (YoutubeProxy              *self,
+       g_mapped_file_get_length (map),
+       NULL);
+ 
++#ifdef WITH_SOUP_2
+   sb = soup_buffer_new_with_owner (g_mapped_file_get_contents (map),
+                                    g_mapped_file_get_length (map),
+                                    map,
+                                    (GDestroyNotify) g_mapped_file_unref);
++#else
++  sb = g_bytes_new_with_free_func (g_mapped_file_get_contents (map),
++                                   g_mapped_file_get_length (map),
++                                   (GDestroyNotify) g_mapped_file_unref,
++                                   map);
++#endif
+ 
+   soup_message_headers_replace (part_headers, "Content-Type", content_type);
+ 
+   soup_multipart_append_part (mp, part_headers, sb);
+ 
++#ifdef WITH_SOUP_2
+   soup_buffer_free (sb);
+-
+   soup_message_headers_free (part_headers);
+-
+   message = soup_form_request_new_from_multipart (UPLOAD_URL, mp);
++  request_headers = message->request_headers;
++#else
++  g_bytes_unref (sb);
++  soup_message_headers_unref (part_headers);
++  message = soup_message_new_from_multipart (UPLOAD_URL, mp);
++  request_headers = soup_message_get_request_headers (message);
++#endif
+ 
+   soup_multipart_free (mp);
+ 
+-  _set_upload_headers (self, message->request_headers, filename);
++  _set_upload_headers (self, request_headers, filename);
+ 
+   closure = _upload_async_closure_new (self, callback, message, weak_object,
+                                        user_data);
+@@ -429,7 +497,13 @@ youtube_proxy_upload_async (YoutubeProxy              *self,
+                     closure);
+ 
+ 
+-  _rest_proxy_queue_message (REST_PROXY (self), message, _upload_completed_cb,
++  _rest_proxy_queue_message (REST_PROXY (self), message,
++#ifdef WITH_SOUP_2
++                             NULL,
++#else
++                             closure->cancellable,
++#endif
++                             _upload_completed_cb,
+                              closure);
+ 
+   return TRUE;
+diff --git a/rest.pc.in b/rest.pc.in
+index 94c384b..e6bae3e 100644
+--- a/rest.pc.in
++++ b/rest.pc.in
+@@ -9,4 +9,4 @@ Description: RESTful web api query library
+ Version: @VERSION@
+ Libs: -L${libdir} -lrest-${apiversion}
+ Cflags: -I${includedir}/rest-${apiversion}
+-Requires: glib-2.0 libsoup-2.4 libxml-2.0
++Requires: glib-2.0 libsoup-@SOUP_API_VERSION@ libxml-2.0
+diff --git a/rest/rest-private.h b/rest/rest-private.h
+index 9e91fa0..6e71322 100644
+--- a/rest/rest-private.h
++++ b/rest/rest-private.h
+@@ -31,6 +31,11 @@
+ 
+ G_BEGIN_DECLS
+ 
++typedef void (*RestMessageFinishedCallback) (SoupMessage *msg,
++                                             GBytes      *body,
++                                             GError      *error,
++                                             gpointer     user_data);
++
+ typedef enum
+ {
+   REST_DEBUG_XML_PARSER = 1 << 0,
+@@ -53,12 +58,23 @@ gboolean _rest_proxy_get_binding_required (RestProxy *proxy);
+ const gchar *_rest_proxy_get_bound_url (RestProxy *proxy);
+ void _rest_proxy_queue_message (RestProxy   *proxy,
+                                 SoupMessage *message,
+-                                SoupSessionCallback callback,
++                                GCancellable *cancellable,
++                                RestMessageFinishedCallback callback,
+                                 gpointer user_data);
+ void _rest_proxy_cancel_message (RestProxy   *proxy,
+                                  SoupMessage *message);
+-guint _rest_proxy_send_message (RestProxy   *proxy,
+-                                SoupMessage *message);
++GBytes *_rest_proxy_send_message (RestProxy    *proxy,
++                                  SoupMessage  *message,
++                                  GCancellable *cancellable,
++                                  GError      **error);
++void _rest_proxy_send_message_async (RestProxy          *proxy,
++                                     SoupMessage        *message,
++                                     GCancellable       *cancellable,
++                                     GAsyncReadyCallback callback,
++                                     gpointer            user_data);
++GInputStream *_rest_proxy_send_message_finish (RestProxy    *proxy,
++                                               GAsyncResult *result,
++                                               GError      **error);
+ 
+ RestXmlNode *_rest_xml_node_new (void);
+ void         _rest_xml_node_reverse_children_siblings (RestXmlNode *node);
+diff --git a/rest/rest-proxy-auth.c b/rest/rest-proxy-auth.c
+index b96e443..0b2ec9f 100644
+--- a/rest/rest-proxy-auth.c
++++ b/rest/rest-proxy-auth.c
+@@ -29,7 +29,9 @@
+ struct _RestProxyAuthPrivate {
+   /* used to hold state during async authentication */
+   RestProxy *proxy;
++#ifdef WITH_SOUP_2
+   SoupSession *session;
++#endif
+   SoupMessage *message;
+   SoupAuth *auth;
+   gboolean paused;
+@@ -43,7 +45,9 @@ rest_proxy_auth_dispose (GObject *object)
+   RestProxyAuthPrivate *priv = ((RestProxyAuth*)object)->priv;
+ 
+   g_clear_object (&priv->proxy);
++#ifdef WITH_SOUP_2
+   g_clear_object (&priv->session);
++#endif
+   g_clear_object (&priv->message);
+   g_clear_object (&priv->auth);
+ 
+@@ -73,13 +77,17 @@ rest_proxy_auth_new (RestProxy *proxy,
+   RestProxyAuth *rest_auth;
+ 
+   g_return_val_if_fail (REST_IS_PROXY (proxy), NULL);
++#ifdef WITH_SOUP_2
+   g_return_val_if_fail (SOUP_IS_SESSION (session), NULL);
++#endif
+   g_return_val_if_fail (SOUP_IS_MESSAGE (message), NULL);
+   g_return_val_if_fail (SOUP_IS_AUTH (soup_auth), NULL);
+ 
+   rest_auth = REST_PROXY_AUTH (g_object_new (REST_TYPE_PROXY_AUTH, NULL));
+   rest_auth->priv->proxy = g_object_ref(proxy);
++#ifdef WITH_SOUP_2
+   rest_auth->priv->session = g_object_ref(session);
++#endif
+   rest_auth->priv->message = g_object_ref(message);
+   rest_auth->priv->auth = g_object_ref(soup_auth);
+ 
+@@ -104,7 +112,9 @@ rest_proxy_auth_pause (RestProxyAuth *auth)
+       return;
+ 
+   auth->priv->paused = TRUE;
++#ifdef WITH_SOUP_2
+   soup_session_pause_message (auth->priv->session, auth->priv->message);
++#endif
+ }
+ 
+ /**
+@@ -128,7 +138,9 @@ rest_proxy_auth_unpause (RestProxyAuth *auth)
+   soup_auth_authenticate (auth->priv->auth, username, password);
+   g_free (username);
+   g_free (password);
++#ifdef WITH_SOUP_2
+   soup_session_unpause_message (auth->priv->session, auth->priv->message);
++#endif
+   auth->priv->paused = FALSE;
+ }
+ 
+@@ -146,7 +158,11 @@ rest_proxy_auth_cancel (RestProxyAuth *auth)
+ {
+   g_return_if_fail (REST_IS_PROXY_AUTH (auth));
+ 
++#ifdef WITH_SOUP_2
+   soup_session_cancel_message (auth->priv->session, auth->priv->message, SOUP_STATUS_CANCELLED);
++#else
++  soup_auth_cancel (auth->priv->auth);
++#endif
+ }
+ 
+ G_GNUC_INTERNAL gboolean rest_proxy_auth_is_paused (RestProxyAuth *auth)
+diff --git a/rest/rest-proxy-call.c b/rest/rest-proxy-call.c
+index 2ab722f..62b00da 100644
+--- a/rest/rest-proxy-call.c
++++ b/rest/rest-proxy-call.c
+@@ -20,12 +20,14 @@
+  *
+  */
+ 
++#include <config.h>
+ #include <rest/rest-proxy.h>
+ #include <rest/rest-proxy-call.h>
+ #include <rest/rest-params.h>
+ #include <libsoup/soup.h>
+ 
+ #include "rest-private.h"
++#include "rest-proxy-auth-private.h"
+ #include "rest-proxy-call-private.h"
+ 
+ 
+@@ -38,12 +40,15 @@ struct _RestProxyCallAsyncClosure {
+ };
+ typedef struct _RestProxyCallAsyncClosure RestProxyCallAsyncClosure;
+ 
++#define READ_BUFFER_SIZE 8192
++
+ struct _RestProxyCallContinuousClosure {
+   RestProxyCall *call;
+   RestProxyCallContinuousCallback callback;
+   GObject *weak_object;
+   gpointer userdata;
+   SoupMessage *message;
++  guchar buffer[READ_BUFFER_SIZE];
+ };
+ typedef struct _RestProxyCallContinuousClosure RestProxyCallContinuousClosure;
+ 
+@@ -70,8 +75,7 @@ struct _RestProxyCallPrivate {
+   gchar *url;
+ 
+   GHashTable *response_headers;
+-  goffset length;
+-  gchar *payload;
++  GBytes *payload;
+   guint status_code;
+   gchar *status_message;
+ 
+@@ -160,7 +164,7 @@ rest_proxy_call_finalize (GObject *object)
+   g_free (priv->method);
+   g_free (priv->function);
+ 
+-  g_free (priv->payload);
++  g_clear_pointer (&priv->payload, g_bytes_unref);
+   g_free (priv->status_message);
+ 
+   g_free (priv->url);
+@@ -546,14 +550,23 @@ _populate_headers_hash_table (const gchar *name,
+   g_hash_table_insert (headers, g_strdup (name), g_strdup (value));
+ }
+ 
++#ifdef WITH_SOUP_2
+ /* I apologise for this macro, but it saves typing ;-) */
+ #define error_helper(x) g_set_error_literal(error, REST_PROXY_ERROR, x, message->reason_phrase)
++#endif
+ static gboolean
+ _handle_error_from_message (SoupMessage *message, GError **error)
+ {
+-  if (message->status_code < 100)
++  guint status_code;
++  const char *reason_phrase;
++
++#ifdef WITH_SOUP_2
++  status_code = message->status_code;
++
++  if (status_code < 100)
+   {
+-    switch (message->status_code)
++    g_clear_error (error);
++    switch (status_code)
+     {
+       case SOUP_STATUS_CANCELLED:
+         error_helper (REST_PROXY_ERROR_CANCELLED);
+@@ -580,61 +593,84 @@ _handle_error_from_message (SoupMessage *message, GError **error)
+     }
+     return FALSE;
+   }
++  reason_phrase = message->reason_phrase;
++#else
++  status_code = soup_message_get_status (message);
++  reason_phrase = soup_message_get_reason_phrase (message);
++#endif
+ 
+-  if (message->status_code >= 200 && message->status_code < 300)
++  if (status_code >= 200 && status_code < 300)
+   {
+     return TRUE;
+   }
+ 
++  if (*error != NULL)
++    return FALSE;
++
+   /* If we are here we must be in some kind of HTTP error, lets try */
+   g_set_error_literal (error,
+                        REST_PROXY_ERROR,
+-                       message->status_code,
+-                       message->reason_phrase);
++                       status_code,
++                       reason_phrase);
+   return FALSE;
+ }
+ 
+ static gboolean
+-finish_call (RestProxyCall *call, SoupMessage *message, GError **error)
++finish_call (RestProxyCall *call, SoupMessage *message, GBytes *payload, GError **error)
+ {
+   RestProxyCallPrivate *priv = GET_PRIVATE (call);
++  SoupMessageHeaders *response_headers;
+ 
+   g_assert (call);
+   g_assert (message);
++  g_assert (payload);
++
++#ifdef WITH_SOUP_2
++  response_headers = message->response_headers;
++#else
++  response_headers = soup_message_get_response_headers (message);
++#endif
+ 
+   /* Convert the soup headers in to hash */
+   /* FIXME: Eeek..are you allowed duplicate headers? ... */
+   g_hash_table_remove_all (priv->response_headers);
+-  soup_message_headers_foreach (message->response_headers,
++  soup_message_headers_foreach (response_headers,
+       (SoupMessageHeadersForeachFunc)_populate_headers_hash_table,
+       priv->response_headers);
+ 
+-  priv->payload = g_memdup (message->response_body->data,
+-                            message->response_body->length + 1);
+-  priv->length = message->response_body->length;
++  priv->payload = payload;
+ 
++#ifdef WITH_SOUP_2
+   priv->status_code = message->status_code;
+   priv->status_message = g_strdup (message->reason_phrase);
++#else
++  priv->status_code = soup_message_get_status (message);
++  priv->status_message = g_strdup (soup_message_get_reason_phrase (message));
++#endif
+ 
+   return _handle_error_from_message (message, error);
+ }
+ 
+ static void
+-_continuous_call_message_completed_cb (SoupSession *session,
+-                                       SoupMessage *message,
+-                                       gpointer     userdata)
++_continuous_call_message_completed (SoupMessage *message,
++                                    GError      *error,
++                                    gpointer     userdata)
+ {
+   RestProxyCallContinuousClosure *closure;
+   RestProxyCall *call;
+   RestProxyCallPrivate *priv;
+-  GError *error = NULL;
+ 
+   closure = (RestProxyCallContinuousClosure *)userdata;
+   call = closure->call;
+   priv = GET_PRIVATE (call);
+ 
++#ifdef WITH_SOUP_2
+   priv->status_code = message->status_code;
+   priv->status_message = g_strdup (message->reason_phrase);
++#else
++  priv->status_code = soup_message_get_status (message);
++  priv->status_message = g_strdup (soup_message_get_reason_phrase (message));
++#endif
+ 
+   _handle_error_from_message (message, &error);
+ 
+@@ -657,6 +693,7 @@ _continuous_call_message_completed_cb (SoupSession *session,
+ 
+   priv->cur_call_closure = NULL;
+   g_object_unref (closure->call);
++  g_object_unref (message);
+   g_slice_free (RestProxyCallContinuousClosure, closure);
+ }
+ 
+@@ -715,6 +752,49 @@ set_url (RestProxyCall *call)
+   return TRUE;
+ }
+ 
++#ifndef WITH_SOUP_2
++static gboolean
++authenticate (RestProxyCall *call,
++              SoupAuth      *soup_auth,
++              gboolean       retrying,
++              SoupMessage   *message)
++{
++  RestProxyCallPrivate *priv = GET_PRIVATE (call);
++  RestProxyAuth *rest_auth;
++  gboolean try_auth;
++
++  rest_auth = rest_proxy_auth_new (priv->proxy, NULL, message, soup_auth);
++  g_signal_emit_by_name (priv->proxy, "authenticate", rest_auth, retrying, &try_auth);
++  if (try_auth && !rest_proxy_auth_is_paused (rest_auth)) {
++    char *username, *password;
++
++    g_object_get (priv->proxy, "username", &username, "password", &password, NULL);
++    soup_auth_authenticate (soup_auth, username, password);
++    g_free (username);
++    g_free (password);
++  }
++  g_object_unref (rest_auth);
++
++  return try_auth;
++}
++
++static gboolean
++accept_certificate (RestProxyCall        *call,
++                    GTlsCertificate      *tls_certificate,
++                    GTlsCertificateFlags *tls_errors,
++                    SoupMessage          *message)
++{
++        RestProxyCallPrivate *priv = GET_PRIVATE (call);
++        gboolean ssl_strict;
++
++        if (tls_errors == 0)
++                return TRUE;
++
++        g_object_get (priv->proxy, "ssl-strict", &ssl_strict, NULL);
++        return !ssl_strict;
++}
++#endif
++
+ static SoupMessage *
+ prepare_message (RestProxyCall *call, GError **error_out)
+ {
+@@ -722,6 +802,7 @@ prepare_message (RestProxyCall *call, GError **error_out)
+   RestProxyCallClass *call_class;
+   const gchar *user_agent;
+   SoupMessage *message;
++  SoupMessageHeaders *request_headers;
+   GError *error = NULL;
+ 
+   call_class = REST_PROXY_CALL_GET_CLASS (call);
+@@ -748,6 +829,9 @@ prepare_message (RestProxyCall *call, GError **error_out)
+     gchar *content;
+     gchar *content_type;
+     gsize content_len;
++#ifndef WITH_SOUP_2
++    GBytes *body;
++#endif
+ 
+     if (!call_class->serialize_params (call, &content_type,
+                                        &content, &content_len, &error))
+@@ -780,8 +864,14 @@ prepare_message (RestProxyCall *call, GError **error_out)
+                              "Could not parse URI");
+         return NULL;
+     }
++#ifdef WITH_SOUP_2
+     soup_message_set_request (message, content_type,
+                               SOUP_MEMORY_TAKE, content, content_len);
++#else
++    body = g_bytes_new_take (content, content_len);
++    soup_message_set_request_body_from_bytes (message, content_type, body);
++    g_bytes_unref (body);
++#endif
+ 
+     g_free (content_type);
+   } else if (rest_params_are_strings (priv->params)) {
+@@ -798,9 +888,15 @@ prepare_message (RestProxyCall *call, GError **error_out)
+ 
+     hash = rest_params_as_string_hash_table (priv->params);
+ 
++#ifdef WITH_SOUP_2
+     message = soup_form_request_new_from_hash (priv->method,
+                                                priv->url,
+                                                hash);
++#else
++    message = soup_message_new_from_encoded_form (priv->method,
++                                                  priv->url,
++                                                  soup_form_encode_hash (hash));
++#endif
+ 
+     g_hash_table_unref (hash);
+ 
+@@ -827,19 +923,28 @@ prepare_message (RestProxyCall *call, GError **error_out)
+       if (rest_param_is_string (param)) {
+         soup_multipart_append_form_string (mp, name, rest_param_get_content (param));
+       } else {
+-        SoupBuffer *sb;
+-
+-        sb = soup_buffer_new_with_owner (rest_param_get_content (param),
+-                                         rest_param_get_content_length (param),
+-                                         rest_param_ref (param),
+-                                         (GDestroyNotify)rest_param_unref);
++#ifdef WITH_SOUP_2
++        SoupBuffer *sb = soup_buffer_new_with_owner (rest_param_get_content (param),
++                                                     rest_param_get_content_length (param),
++                                                     rest_param_ref (param),
++                                                     (GDestroyNotify)rest_param_unref);
++#else
++        GBytes *sb = g_bytes_new_with_free_func (rest_param_get_content (param),
++                                                 rest_param_get_content_length (param),
++                                                 (GDestroyNotify)rest_param_unref,
++                                                 rest_param_ref (param));
++#endif
+ 
+         soup_multipart_append_form_file (mp, name,
+                                          rest_param_get_file_name (param),
+                                          rest_param_get_content_type (param),
+                                          sb);
+ 
++#ifdef WITH_SOUP_2
+         soup_buffer_free (sb);
++#else
++        g_bytes_unref (sb);
++#endif
+       }
+     }
+ 
+@@ -853,19 +958,36 @@ prepare_message (RestProxyCall *call, GError **error_out)
+         return NULL;
+     }
+ 
++#ifdef WITH_SOUP_2
+     message = soup_form_request_new_from_multipart (priv->url, mp);
++#else
++    message = soup_message_new_from_multipart (priv->url, mp);
++#endif
+ 
+     soup_multipart_free (mp);
+   }
+ 
++#ifdef WITH_SOUP_2
++  request_headers = message->request_headers;
++#else
++  request_headers = soup_message_get_request_headers (message);
++  g_signal_connect_swapped (message, "authenticate",
++                            G_CALLBACK (authenticate),
++                            call);
++  g_signal_connect_swapped (message, "accept-certificate",
++                            G_CALLBACK (accept_certificate),
++                            call);
++#endif
++
++
+   /* Set the user agent, if one was set in the proxy */
+   user_agent = rest_proxy_get_user_agent (priv->proxy);
+   if (user_agent) {
+-    soup_message_headers_append (message->request_headers, "User-Agent", user_agent);
++    soup_message_headers_append (request_headers, "User-Agent", user_agent);
+   }
+ 
+   /* Set the headers */
+-  g_hash_table_foreach (priv->headers, set_header, message->request_headers);
++  g_hash_table_foreach (priv->headers, set_header, request_headers);
+ 
+   return message;
+ }
+@@ -878,17 +1000,17 @@ _call_message_call_cancelled_cb (GCancellable  *cancellable,
+ }
+ 
+ static void
+-_call_message_call_completed_cb (SoupSession *session,
+-                                 SoupMessage *message,
++_call_message_call_completed_cb (SoupMessage *message,
++                                 GBytes      *payload,
++                                 GError      *error,
+                                  gpointer     user_data)
+ {
+   GTask *task = user_data;
+   RestProxyCall *call;
+-  GError *error = NULL;
+ 
+   call = REST_PROXY_CALL (g_task_get_source_object (task));
+ 
+-  finish_call (call, message, &error);
++  finish_call (call, message, payload, &error);
+ 
+   if (error != NULL)
+     g_task_return_error (task, error);
+@@ -938,6 +1060,7 @@ rest_proxy_call_invoke_async (RestProxyCall      *call,
+ 
+   _rest_proxy_queue_message (priv->proxy,
+                              message,
++                             priv->cancellable,
+                              _call_message_call_completed_cb,
+                              task);
+ }
+@@ -962,16 +1085,55 @@ rest_proxy_call_invoke_finish (RestProxyCall  *call,
+ }
+ 
+ static void
+-_continuous_call_message_got_chunk_cb (SoupMessage                    *msg,
+-                                       SoupBuffer                     *chunk,
+-                                       RestProxyCallContinuousClosure *closure)
++_continuous_call_read_cb (GObject      *source,
++                          GAsyncResult *result,
++                          gpointer      user_data)
+ {
++  GInputStream *stream = G_INPUT_STREAM (source);
++  RestProxyCallContinuousClosure *closure = user_data;
++  RestProxyCallPrivate *priv = GET_PRIVATE (closure->call);
++  gssize bytes_read;
++  GError *error = NULL;
++
++  bytes_read = g_input_stream_read_finish (stream, result, &error);
++  if (bytes_read <= 0)
++    {
++      _continuous_call_message_completed (closure->message, error, user_data);
++      return;
++    }
++
+   closure->callback (closure->call,
+-                     chunk->data,
+-                     chunk->length,
++                     (gconstpointer)closure->buffer,
++                     bytes_read,
+                      NULL,
+                      closure->weak_object,
+                      closure->userdata);
++
++  g_input_stream_read_async (stream, closure->buffer, READ_BUFFER_SIZE, G_PRIORITY_DEFAULT,
++                             priv->cancellable, _continuous_call_read_cb, closure);
++}
++
++static void
++_continuous_call_message_sent_cb (GObject      *source,
++                                  GAsyncResult *result,
++                                  gpointer      user_data)
++{
++  RestProxy *proxy = REST_PROXY (source);
++  RestProxyCallContinuousClosure *closure = user_data;
++  RestProxyCallPrivate *priv = GET_PRIVATE (closure->call);
++  GInputStream *stream;
++  GError *error = NULL;
++
++  stream = _rest_proxy_send_message_finish (proxy, result, &error);
++  if (!stream)
++    {
++      _continuous_call_message_completed (closure->message, error, user_data);
++      return;
++    }
++
++  g_input_stream_read_async (stream, closure->buffer, READ_BUFFER_SIZE, G_PRIORITY_DEFAULT,
++                             priv->cancellable, _continuous_call_read_cb, closure);
++  g_object_unref (stream);
+ }
+ 
+ 
+@@ -1021,9 +1183,6 @@ rest_proxy_call_continuous (RestProxyCall                    *call,
+   if (message == NULL)
+     return FALSE;
+ 
+-  /* Must turn off accumulation */
+-  soup_message_body_set_accumulate (message->response_body, FALSE);
+-
+   closure = g_slice_new0 (RestProxyCallContinuousClosure);
+   closure->call = g_object_ref (call);
+   closure->callback = callback;
+@@ -1041,33 +1200,29 @@ rest_proxy_call_continuous (RestProxyCall                    *call,
+         closure);
+   }
+ 
+-  g_signal_connect (message,
+-                    "got-chunk",
+-                    (GCallback)_continuous_call_message_got_chunk_cb,
+-                    closure);
+-
+-  _rest_proxy_queue_message (priv->proxy,
+-                             message,
+-                             _continuous_call_message_completed_cb,
+-                             closure);
++  _rest_proxy_send_message_async (priv->proxy,
++                                  message,
++                                  priv->cancellable,
++                                  _continuous_call_message_sent_cb,
++                                  closure);
+   return TRUE;
+ }
+ 
+ static void
+-_upload_call_message_completed_cb (SoupSession *session,
+-                                   SoupMessage *message,
++_upload_call_message_completed_cb (SoupMessage *message,
++                                   GBytes      *payload,
++                                   GError      *error,
+                                    gpointer     user_data)
+ {
+   RestProxyCall *call;
+   RestProxyCallPrivate *priv;
+-  GError *error = NULL;
+   RestProxyCallUploadClosure *closure;
+ 
+   closure = (RestProxyCallUploadClosure *) user_data;
+   call = closure->call;
+   priv = GET_PRIVATE (call);
+ 
+-  finish_call (call, message, &error);
++  finish_call (call, message, payload, &error);
+ 
+   closure->callback (closure->call,
+                      closure->uploaded,
+@@ -1093,14 +1248,25 @@ _upload_call_message_completed_cb (SoupSession *session,
+ 
+ static void
+ _upload_call_message_wrote_data_cb (SoupMessage                *msg,
++#ifdef WITH_SOUP_2
+                                     SoupBuffer                 *chunk,
++#else
++                                    gsize                       chunk_size,
++#endif
+                                     RestProxyCallUploadClosure *closure)
+ {
+-  closure->uploaded = closure->uploaded + chunk->length;
++#ifdef WITH_SOUP_2
++  gsize chunk_size = chunk->length;
++  goffset content_length = msg->request_body->length;
++#else
++  goffset content_length = soup_message_headers_get_content_length (soup_message_get_request_headers (msg));
++#endif
+ 
+-  if (closure->uploaded < msg->request_body->length)
++  closure->uploaded = closure->uploaded + chunk_size;
++
++  if (closure->uploaded < content_length)
+     closure->callback (closure->call,
+-                       msg->request_body->length,
++                       content_length,
+                        closure->uploaded,
+                        NULL,
+                        closure->weak_object,
+@@ -1178,6 +1344,7 @@ rest_proxy_call_upload (RestProxyCall                *call,
+ 
+   _rest_proxy_queue_message (priv->proxy,
+                              message,
++                             priv->cancellable,
+                              _upload_call_message_completed_cb,
+                              closure);
+   return TRUE;
+@@ -1206,6 +1373,10 @@ rest_proxy_call_cancel (RestProxyCall *call)
+   if (priv->cancellable)
+     {
+       g_signal_handler_disconnect (priv->cancellable, priv->cancel_sig);
++#ifndef WITH_SOUP_2
++      if (!g_cancellable_is_cancelled (priv->cancellable))
++              g_cancellable_cancel (priv->cancellable);
++#endif
+       g_clear_object (&priv->cancellable);
+     }
+ 
+@@ -1240,6 +1411,7 @@ rest_proxy_call_sync (RestProxyCall *call,
+   RestProxyCallPrivate *priv = GET_PRIVATE (call);
+   SoupMessage *message;
+   gboolean ret;
++  GBytes *payload;
+ 
+   g_return_val_if_fail (REST_IS_PROXY_CALL (call), FALSE);
+ 
+@@ -1247,9 +1419,9 @@ rest_proxy_call_sync (RestProxyCall *call,
+   if (!message)
+     return FALSE;
+ 
+-  _rest_proxy_send_message (priv->proxy, message);
++  payload = _rest_proxy_send_message (priv->proxy, message, priv->cancellable, error_out);
+ 
+-  ret = finish_call (call, message, error_out);
++  ret = finish_call (call, message, payload, error_out);
+ 
+   g_object_unref (message);
+ 
+@@ -1314,9 +1486,16 @@ rest_proxy_call_get_response_headers (RestProxyCall *call)
+ goffset
+ rest_proxy_call_get_payload_length (RestProxyCall *call)
+ {
++  GBytes *payload;
++
+   g_return_val_if_fail (REST_IS_PROXY_CALL (call), 0);
+ 
+-  return GET_PRIVATE (call)->length;
++  payload = GET_PRIVATE (call)->payload;
++#ifdef WITH_SOUP_2
++  return payload ? g_bytes_get_size (payload) - 1 : 0;
++#else
++  return payload ? g_bytes_get_size (payload) : 0;
++#endif
+ }
+ 
+ /**
+@@ -1331,9 +1510,12 @@ rest_proxy_call_get_payload_length (RestProxyCall *call)
+ const gchar *
+ rest_proxy_call_get_payload (RestProxyCall *call)
+ {
++  GBytes *payload;
++
+   g_return_val_if_fail (REST_IS_PROXY_CALL (call), NULL);
+ 
+-  return GET_PRIVATE (call)->payload;
++  payload = GET_PRIVATE (call)->payload;
++  return payload ? g_bytes_get_data (payload, NULL) : NULL;
+ }
+ 
+ /**
+diff --git a/rest/rest-proxy.c b/rest/rest-proxy.c
+index 80972a3..171f6cb 100644
+--- a/rest/rest-proxy.c
++++ b/rest/rest-proxy.c
+@@ -45,6 +45,9 @@ struct _RestProxyPrivate {
+   SoupSession *session;
+   gboolean disable_cookies;
+   char *ssl_ca_file;
++#ifndef WITH_SOUP_2
++  gboolean ssl_strict;
++#endif
+ };
+ 
+ 
+@@ -116,11 +119,15 @@ rest_proxy_get_property (GObject   *object,
+       g_value_set_string (value, priv->password);
+       break;
+     case PROP_SSL_STRICT: {
++#ifdef WITH_SOUP_2
+       gboolean ssl_strict;
+       g_object_get (G_OBJECT(priv->session),
+                     "ssl-strict", &ssl_strict,
+                     NULL);
+       g_value_set_boolean (value, ssl_strict);
++#else
++      g_value_set_boolean (value, priv->ssl_strict);
++#endif
+       break;
+     }
+     case PROP_SSL_CA_FILE:
+@@ -172,9 +179,13 @@ rest_proxy_set_property (GObject      *object,
+       priv->password = g_value_dup_string (value);
+       break;
+     case PROP_SSL_STRICT:
++#ifdef WITH_SOUP_2
+       g_object_set (G_OBJECT(priv->session),
+                     "ssl-strict", g_value_get_boolean (value),
+                     NULL);
++#else
++      priv->ssl_strict = g_value_get_boolean (value);
++#endif
+       break;
+     case PROP_SSL_CA_FILE:
+       g_free(priv->ssl_ca_file);
+@@ -207,6 +218,7 @@ default_authenticate_cb (RestProxy *self,
+   return !retrying;
+ }
+ 
++#ifdef WITH_SOUP_2
+ static void
+ authenticate (RestProxy   *self,
+               SoupMessage *msg,
+@@ -224,6 +236,7 @@ authenticate (RestProxy   *self,
+     soup_auth_authenticate (soup_auth, priv->username, priv->password);
+   g_object_unref (G_OBJECT (rest_auth));
+ }
++#endif
+ 
+ static void
+ rest_proxy_constructed (GObject *object)
+@@ -238,14 +251,20 @@ rest_proxy_constructed (GObject *object)
+   }
+ 
+   if (REST_DEBUG_ENABLED(PROXY)) {
++#ifdef WITH_SOUP_2
+     SoupSessionFeature *logger = (SoupSessionFeature*)soup_logger_new (SOUP_LOGGER_LOG_BODY, 0);
++#else
++    SoupSessionFeature *logger = (SoupSessionFeature*)soup_logger_new (SOUP_LOGGER_LOG_HEADERS);
++#endif
+     soup_session_add_feature (priv->session, logger);
+     g_object_unref (logger);
+   }
+ 
++#ifdef WITH_SOUP_2
+   /* session lifetime is same as self, no need to keep signalid */
+   g_signal_connect_swapped (priv->session, "authenticate",
+                             G_CALLBACK(authenticate), object);
++#endif
+ }
+ 
+ static void
+@@ -391,23 +410,62 @@ rest_proxy_class_init (RestProxyClass *klass)
+   proxy_class->authenticate = default_authenticate_cb;
+ }
+ 
++static gboolean
++transform_ssl_ca_file_to_tls_database (GBinding     *binding,
++                                       const GValue *from_value,
++                                       GValue       *to_value,
++                                       gpointer      user_data)
++{
++  g_value_take_object (to_value,
++                       g_tls_file_database_new (g_value_get_string (from_value), NULL));
++  return TRUE;
++}
++
++static gboolean
++transform_tls_database_to_ssl_ca_file (GBinding     *binding,
++                                       const GValue *from_value,
++                                       GValue       *to_value,
++                                       gpointer      user_data)
++{
++  GTlsDatabase *tls_database;
++  char *path = NULL;
++
++  tls_database = g_value_get_object (from_value);
++  if (tls_database)
++    g_object_get (tls_database, "anchors", &path, NULL);
++  g_value_take_string (to_value, path);
++  return TRUE;
++}
++
+ static void
+ rest_proxy_init (RestProxy *self)
+ {
+   RestProxyPrivate *priv = GET_PRIVATE (self);
++  GTlsDatabase *tls_database;
++
++#ifndef WITH_SOUP_2
++  priv->ssl_strict = TRUE;
++#endif
+ 
+   priv->session = soup_session_new ();
+ 
+ #ifdef REST_SYSTEM_CA_FILE
+   /* with ssl-strict (defaults TRUE) setting ssl-ca-file forces all
+    * certificates to be trusted */
+-  g_object_set (priv->session,
+-                "ssl-ca-file", REST_SYSTEM_CA_FILE,
+-                NULL);
++  tls_database = g_tls_file_database_new (REST_SYSTEM_CA_FILE, NULL);
++  if (tls_database) {
++          g_object_set (priv->session,
++                        "tls-database", tls_database,
++                        NULL);
++          g_object_unref (tls_database);
++  }
+ #endif
+-  g_object_bind_property (self, "ssl-ca-file",
+-                          priv->session, "ssl-ca-file",
+-                          G_BINDING_BIDIRECTIONAL);
++  g_object_bind_property_full (self, "ssl-ca-file",
++                               priv->session, "tls-database",
++                               G_BINDING_BIDIRECTIONAL,
++                               transform_ssl_ca_file_to_tls_database,
++                               transform_tls_database_to_ssl_ca_file,
++                               NULL, NULL);
+ }
+ 
+ /**
+@@ -689,27 +747,127 @@ rest_proxy_simple_run (RestProxy *proxy,
+   return ret;
+ }
+ 
++typedef struct {
++  RestMessageFinishedCallback callback;
++  gpointer user_data;
++} RestMessageQueueData;
++
++#ifdef WITH_SOUP_2
++static void
++message_finished_cb (SoupSession *session,
++                     SoupMessage *message,
++                     gpointer     user_data)
++{
++  RestMessageQueueData *data = user_data;
++  GBytes *body;
++  GError *error = NULL;
++
++  body = g_bytes_new (message->response_body->data,
++                      message->response_body->length + 1);
++  data->callback (message, body, error, data->user_data);
++  g_free (data);
++}
++#else
++static void
++message_send_and_read_ready_cb (GObject      *source,
++                                GAsyncResult *result,
++                                gpointer      user_data)
++{
++  SoupSession *session = SOUP_SESSION (source);
++  RestMessageQueueData *data = user_data;
++  GBytes *body;
++  GError *error = NULL;
++
++  body = soup_session_send_and_read_finish (session, result, &error);
++  data->callback (soup_session_get_async_result_message (session, result), body, error, data->user_data);
++  g_free (data);
++}
++#endif
++
+ void
+-_rest_proxy_queue_message (RestProxy   *proxy,
+-                           SoupMessage *message,
+-                           SoupSessionCallback callback,
+-                           gpointer user_data)
++_rest_proxy_queue_message (RestProxy                  *proxy,
++                           SoupMessage                *message,
++                           GCancellable               *cancellable,
++                           RestMessageFinishedCallback callback,
++                           gpointer                    user_data)
+ {
+   RestProxyPrivate *priv = GET_PRIVATE (proxy);
++  RestMessageQueueData *data;
+ 
+   g_return_if_fail (REST_IS_PROXY (proxy));
+   g_return_if_fail (SOUP_IS_MESSAGE (message));
+ 
++  data = g_new0 (RestMessageQueueData, 1);
++  data->callback = callback;
++  data->user_data = user_data;
++
++#ifdef WITH_SOUP_2
+   soup_session_queue_message (priv->session,
+                               message,
+-                              callback,
+-                              user_data);
++                              message_finished_cb,
++                              data);
++#else
++  soup_session_send_and_read_async (priv->session,
++                                    message,
++                                    G_PRIORITY_DEFAULT,
++                                    cancellable,
++                                    message_send_and_read_ready_cb,
++                                    data);
++#endif
++}
++
++static void
++message_send_ready_cb (GObject      *source,
++                       GAsyncResult *result,
++                       gpointer      user_data)
++{
++  SoupSession *session = SOUP_SESSION (source);
++  GTask *task = user_data;
++  GInputStream *stream;
++  GError *error = NULL;
++
++  stream = soup_session_send_finish (session, result, &error);
++  if (stream)
++    g_task_return_pointer (task, stream, g_object_unref);
++  else
++    g_task_return_error (task, error);
++  g_object_unref (task);
++}
++
++void
++_rest_proxy_send_message_async (RestProxy          *proxy,
++                                SoupMessage        *message,
++                                GCancellable       *cancellable,
++                                GAsyncReadyCallback callback,
++                                gpointer            user_data)
++{
++  RestProxyPrivate *priv = GET_PRIVATE (proxy);
++  GTask *task;
++
++  task = g_task_new (proxy, cancellable, callback, user_data);
++  soup_session_send_async (priv->session,
++                           message,
++#ifndef WITH_SOUP_2
++                           G_PRIORITY_DEFAULT,
++#endif
++                           cancellable,
++                           message_send_ready_cb,
++                           task);
++}
++
++GInputStream *
++_rest_proxy_send_message_finish (RestProxy    *proxy,
++                                 GAsyncResult *result,
++                                 GError      **error)
++{
++  return g_task_propagate_pointer (G_TASK (result), error);
+ }
+ 
+ void
+ _rest_proxy_cancel_message (RestProxy   *proxy,
+                             SoupMessage *message)
+ {
++#ifdef WITH_SOUP_2
+   RestProxyPrivate *priv = GET_PRIVATE (proxy);
+ 
+   g_return_if_fail (REST_IS_PROXY (proxy));
+@@ -718,16 +876,31 @@ _rest_proxy_cancel_message (RestProxy   *proxy,
+   soup_session_cancel_message (priv->session,
+                                message,
+                                SOUP_STATUS_CANCELLED);
++#endif
+ }
+ 
+-guint
+-_rest_proxy_send_message (RestProxy   *proxy,
+-                          SoupMessage *message)
++GBytes *
++_rest_proxy_send_message (RestProxy    *proxy,
++                          SoupMessage  *message,
++                          GCancellable *cancellable,
++                          GError      **error)
+ {
+   RestProxyPrivate *priv = GET_PRIVATE (proxy);
++  GBytes *body;
+ 
+-  g_return_val_if_fail (REST_IS_PROXY (proxy), 0);
+-  g_return_val_if_fail (SOUP_IS_MESSAGE (message), 0);
++  g_return_val_if_fail (REST_IS_PROXY (proxy), NULL);
++  g_return_val_if_fail (SOUP_IS_MESSAGE (message), NULL);
++
++#ifdef WITH_SOUP_2
++  soup_session_send_message (priv->session, message);
++  body = g_bytes_new (message->response_body->data,
++                      message->response_body->length + 1);
++#else
++  body = soup_session_send_and_read (priv->session,
++                                     message,
++                                     cancellable,
++                                     error);
++#endif
+ 
+-  return soup_session_send_message (priv->session, message);
++  return body;
+ }
+diff --git a/tests/custom-serialize.c b/tests/custom-serialize.c
+index c3fde93..01b3a56 100644
+--- a/tests/custom-serialize.c
++++ b/tests/custom-serialize.c
+@@ -88,22 +88,40 @@ custom_proxy_call_init (CustomProxyCall *self)
+ }
+ 
+ static void
++#ifdef WITH_SOUP_2
+ server_callback (SoupServer *server, SoupMessage *msg,
+                  const char *path, GHashTable *query,
+                  SoupClientContext *client, gpointer user_data)
++#else
++server_callback (SoupServer *server, SoupServerMessage *msg,
++                 const char *path, GHashTable *query, gpointer user_data)
++#endif
+ {
+   if (g_str_equal (path, "/ping")) {
+     const char *content_type = NULL;
++#ifdef WITH_SOUP_2
+     SoupMessageHeaders *headers = msg->request_headers;
+     SoupMessageBody *body = msg->request_body;
++#else
++    SoupMessageHeaders *headers = soup_server_message_get_request_headers (msg);
++    SoupMessageBody *body = soup_server_message_get_request_body (msg);
++#endif
+     content_type = soup_message_headers_get_content_type (headers, NULL);
+     g_assert_cmpstr (content_type, ==, "application/json");
+ 
+     g_assert_cmpstr (body->data, ==, "{}");
+ 
++#ifdef WITH_SOUP_2
+     soup_message_set_status (msg, SOUP_STATUS_OK);
++#else
++    soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
++#endif
+   } else {
++#ifdef WITH_SOUP_2
+     soup_message_set_status (msg, SOUP_STATUS_NOT_IMPLEMENTED);
++#else
++    soup_server_message_set_status (msg, SOUP_STATUS_NOT_IMPLEMENTED, NULL);
++#endif
+   }
+ }
+ 
+diff --git a/tests/proxy-continuous.c b/tests/proxy-continuous.c
+index 8f4b7a8..7967bbd 100644
+--- a/tests/proxy-continuous.c
++++ b/tests/proxy-continuous.c
+@@ -39,9 +39,15 @@ static SoupServer *server;
+ static gboolean
+ send_chunks (gpointer user_data)
+ {
+-  SoupMessage *msg = SOUP_MESSAGE (user_data);
+   guint i;
+   guint8 data[SIZE_CHUNK];
++#ifdef WITH_SOUP_2
++  SoupMessage *msg = SOUP_MESSAGE (user_data);
++  SoupMessageBody *response_body = msg->response_body;
++#else
++  SoupServerMessage *msg = SOUP_SERVER_MESSAGE (user_data);
++  SoupMessageBody *response_body = soup_server_message_get_response_body (msg);
++#endif
+ 
+   for (i = 0; i < SIZE_CHUNK; i++)
+   {
+@@ -49,12 +55,12 @@ send_chunks (gpointer user_data)
+     server_count++;
+   }
+ 
+-  soup_message_body_append (msg->response_body, SOUP_MEMORY_COPY, data, SIZE_CHUNK);
++  soup_message_body_append (response_body, SOUP_MEMORY_COPY, data, SIZE_CHUNK);
+   soup_server_unpause_message (server, msg);
+ 
+   if (server_count == NUM_CHUNKS * SIZE_CHUNK)
+   {
+-    soup_message_body_complete (msg->response_body);
++    soup_message_body_complete (response_body);
+     return FALSE;
+   } else {
+     return TRUE;
+@@ -62,13 +68,28 @@ send_chunks (gpointer user_data)
+ }
+ 
+ static void
++#ifdef WITH_SOUP_2
+ server_callback (SoupServer *server, SoupMessage *msg,
+                  const char *path, GHashTable *query,
+                  SoupClientContext *client, gpointer user_data)
++#else
++server_callback (SoupServer *server, SoupServerMessage *msg,
++                 const char *path, GHashTable *query, gpointer user_data)
++#endif
+ {
++#ifdef WITH_SOUP_2
++  SoupMessageHeaders *response_headers = msg->response_headers;
++#else
++  SoupMessageHeaders *response_headers = soup_server_message_get_response_headers (msg);
++#endif
++
+   g_assert_cmpstr (path, ==, "/stream");
++#ifdef WITH_SOUP_2
+   soup_message_set_status (msg, SOUP_STATUS_OK);
+-  soup_message_headers_set_encoding (msg->response_headers,
++#else
++  soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
++#endif
++  soup_message_headers_set_encoding (response_headers,
+                                      SOUP_ENCODING_CHUNKED);
+   soup_server_pause_message (server, msg);
+ 
+@@ -142,13 +163,21 @@ continuous ()
+   uris = soup_server_get_uris (server);
+   g_assert (g_slist_length (uris) > 0);
+ 
++#ifdef WITH_SOUP_2
+   url = soup_uri_to_string (uris->data, FALSE);
++#else
++  url = g_uri_to_string (uris->data);
++#endif
+ 
+   loop = g_main_loop_new (NULL, FALSE);
+ 
+   proxy = rest_proxy_new (url, FALSE);
+   stream_test (proxy);
++#ifdef WITH_SOUP_2
+   g_slist_free_full (uris, (GDestroyNotify)soup_uri_free);
++#else
++  g_slist_free_full (uris, (GDestroyNotify)g_uri_unref);
++#endif
+ 
+   g_main_loop_run (loop);
+   g_free (url);
+diff --git a/tests/proxy.c b/tests/proxy.c
+index 89a9325..652c600 100644
+--- a/tests/proxy.c
++++ b/tests/proxy.c
+@@ -49,20 +49,35 @@ SoupServer *server;
+ GMainLoop *server_loop;
+ 
+ static void
++#ifdef WITH_SOUP_2
+ server_callback (SoupServer *server, SoupMessage *msg,
+                  const char *path, GHashTable *query,
+                  SoupClientContext *client, gpointer user_data)
++#else
++server_callback (SoupServer *server, SoupServerMessage *msg,
++                 const char *path, GHashTable *query, gpointer user_data)
++#endif
+ {
+   if (g_str_equal (path, "/ping")) {
++#ifdef WITH_SOUP_2
+     soup_message_set_status (msg, SOUP_STATUS_OK);
++#else
++    soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
++#endif
+   }
+   else if (g_str_equal (path, "/echo")) {
+     const char *value;
+ 
+     value = g_hash_table_lookup (query, "value");
++#ifdef WITH_SOUP_2
+     soup_message_set_response (msg, "text/plain", SOUP_MEMORY_COPY,
+                                value, strlen (value));
+     soup_message_set_status (msg, SOUP_STATUS_OK);
++#else
++    soup_server_message_set_response (msg, "text/plain", SOUP_MEMORY_COPY,
++                                      value, strlen (value));
++    soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
++#endif
+   }
+   else if (g_str_equal (path, "/reverse")) {
+     char *value;
+@@ -70,9 +85,15 @@ server_callback (SoupServer *server, SoupMessage *msg,
+     value = g_strdup (g_hash_table_lookup (query, "value"));
+     g_strreverse (value);
+ 
++#ifdef WITH_SOUP_2
+     soup_message_set_response (msg, "text/plain", SOUP_MEMORY_TAKE,
+                                value, strlen (value));
+     soup_message_set_status (msg, SOUP_STATUS_OK);
++#else
++    soup_server_message_set_response (msg, "text/plain", SOUP_MEMORY_TAKE,
++                                       value, strlen (value));
++    soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
++#endif
+   }
+   else if (g_str_equal (path, "/status")) {
+     const char *value;
+@@ -81,25 +102,61 @@ server_callback (SoupServer *server, SoupMessage *msg,
+     value = g_hash_table_lookup (query, "status");
+     if (value) {
+       status = atoi (value);
++#ifdef WITH_SOUP_2
+       soup_message_set_status (msg, status ?: SOUP_STATUS_INTERNAL_SERVER_ERROR);
++#else
++      soup_server_message_set_status (msg, status ?: SOUP_STATUS_INTERNAL_SERVER_ERROR, NULL);
++#endif
+     } else {
++#ifdef WITH_SOUP_2
+       soup_message_set_status (msg, SOUP_STATUS_INTERNAL_SERVER_ERROR);
++#else
++      soup_server_message_set_status (msg, SOUP_STATUS_INTERNAL_SERVER_ERROR, NULL);
++#endif
+     }
+   }
+   else if (g_str_equal (path, "/useragent/none")) {
+-    if (soup_message_headers_get (msg->request_headers, "User-Agent") == NULL) {
++#ifdef WITH_SOUP_2
++    SoupMessageHeaders *request_headers = msg->request_headers;
++#else
++    SoupMessageHeaders *request_headers = soup_server_message_get_request_headers (msg);
++#endif
++
++    if (soup_message_headers_get (request_headers, "User-Agent") == NULL) {
++#ifdef WITH_SOUP_2
+       soup_message_set_status (msg, SOUP_STATUS_OK);
++#else
++      soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
++#endif
+     } else {
++#ifdef WITH_SOUP_2
+       soup_message_set_status (msg, SOUP_STATUS_EXPECTATION_FAILED);
++#else
++      soup_server_message_set_status (msg, SOUP_STATUS_EXPECTATION_FAILED, NULL);
++#endif
+     }
+   }
+   else if (g_str_equal (path, "/useragent/testsuite")) {
++#ifdef WITH_SOUP_2
++    SoupMessageHeaders *request_headers = msg->request_headers;
++#else
++    SoupMessageHeaders *request_headers = soup_server_message_get_request_headers (msg);
++#endif
+     const char *value;
+-    value = soup_message_headers_get (msg->request_headers, "User-Agent");
++    value = soup_message_headers_get (request_headers, "User-Agent");
+     if (g_strcmp0 (value, "TestSuite-1.0") == 0) {
++#ifdef WITH_SOUP_2
+       soup_message_set_status (msg, SOUP_STATUS_OK);
++#else
++      soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
++#endif
+     } else {
++#ifdef WITH_SOUP_2
+       soup_message_set_status (msg, SOUP_STATUS_EXPECTATION_FAILED);
++#else
++      soup_server_message_set_status (msg, SOUP_STATUS_EXPECTATION_FAILED, NULL);
++#endif
++
+     }
+   }
+ }
+@@ -325,7 +382,7 @@ main (int argc, char **argv)
+   char *url;
+   RestProxy *proxy;
+ 
+-  server = soup_server_new ("", NULL);
++  server = soup_server_new (NULL);
+   g_thread_new ("Server Thread", server_thread_func, NULL);
+ 
+   url = g_strdup_printf ("http://127.0.0.1:%d/", PORT);
+diff --git a/tests/threaded.c b/tests/threaded.c
+index a251900..411361c 100644
+--- a/tests/threaded.c
++++ b/tests/threaded.c
+@@ -36,13 +36,22 @@ GMainLoop *main_loop;
+ SoupServer *server;
+ 
+ static void
++#ifdef WITH_SOUP_2
+ server_callback (SoupServer *server, SoupMessage *msg,
+                  const char *path, GHashTable *query,
+                  SoupClientContext *client, gpointer user_data)
++#else
++server_callback (SoupServer *server, SoupServerMessage *msg,
++                 const char *path, GHashTable *query, gpointer user_data)
++#endif
+ {
+   g_assert_cmpstr (path, ==, "/ping");
+ 
++#ifdef WITH_SOUP_2
+   soup_message_set_status (msg, SOUP_STATUS_OK);
++#else
++  soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
++#endif
+   g_atomic_int_add (&threads_done, 1);
+ 
+   if (threads_done == N_THREADS) {
+@@ -96,7 +105,11 @@ static void ping ()
+   uris = soup_server_get_uris (server);
+   g_assert (g_slist_length (uris) > 0);
+ 
++#ifdef WITH_SOUP_2
+   url = soup_uri_to_string (uris->data, FALSE);
++#else
++  url = g_uri_to_string (uris->data);
++#endif
+ 
+   main_loop = g_main_loop_new (NULL, TRUE);
+ 
+@@ -109,7 +122,11 @@ static void ping ()
+   g_main_loop_run (main_loop);
+ 
+   g_free (url);
++#ifdef WITH_SOUP_2
+   g_slist_free_full (uris, (GDestroyNotify)soup_uri_free);
++#else
++  g_slist_free_full (uris, (GDestroyNotify)g_uri_unref);
++#endif
+   g_object_unref (server);
+   g_main_loop_unref (main_loop);
+ }
+-- 
+2.33.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb
index 47e3f8d..545224a 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb
@@ -14,13 +14,13 @@
 
 inherit gnomebase gobject-introspection gtk-doc vala
 
-SRC_URI[archive.md5sum] = "ece4547298a81105f307369d73c21b9d"
-SRC_URI[archive.sha256sum] = "0513aad38e5d3cedd4ae3c551634e3be1b9baaa79775e53b2dba9456f15b01c9"
-
-# * gnome environment requires libsoup build with in gnome PACKAGECONFIG
-# * libsoup-gnome support was removed upstream three years ago [1]
-# [1] https://gitlab.gnome.org/GNOME/librest/commit/8f904a8e2bb38a7bf72245cdf2f1ecad17e9a720
-EXTRA_OECONF = "--without-gnome"
+PV .= "+git${SRCPV}"
+SRCREV = "7b46065dea860ef09861f4d70124728b8270c8b7"
+SRC_URI = "git://gitlab.gnome.org/GNOME/librest;protocol=https;branch=master \
+    file://0001-Use-GUri-instead-of-SoupURI.patch \
+    file://0002-Port-to-libsoup3.patch \
+"
+S = "${WORKDIR}/git"
 
 do_configure:prepend() {
     # rest expects introspection.m4 at custom location (see aclocal.m4).
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_40.0.bb
deleted file mode 100644
index 0e7f499..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_40.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Collection of scripts and build utilities for documentation"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=d67c6f9f1515506abfea4f0d920c0774 \
-    file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
-"
-
-GNOMEBASEBUILDCLASS = "meson"
-
-inherit gnomebase itstool
-
-DEPENDS += " \
-    libxslt-native \
-    libxml2-native \
-    python3-lxml-native \
-    yelp-xsl \
-"
-
-SRC_URI[archive.sha256sum] = "664bacf2f3dd65ef00a43f79487351ab64a6c4c629c56ac0ceb1723c2eb66aae"
-
-RDEPENDS:${PN} += "python3-core yelp-xsl"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_41.0.bb
new file mode 100644
index 0000000..ec8edb8
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_41.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Collection of scripts and build utilities for documentation"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=d67c6f9f1515506abfea4f0d920c0774 \
+    file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
+"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase itstool
+
+DEPENDS += " \
+    libxslt-native \
+    libxml2-native \
+    python3-lxml-native \
+    yelp-xsl \
+"
+
+SRC_URI[archive.sha256sum] = "37f1acc02bcbe68a31b86e07c129a839bd3276e656dc89eb7fc0a92746eff272"
+
+RDEPENDS:${PN} += "python3-core yelp-xsl"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_40.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_40.2.bb
deleted file mode 100644
index 9ac88c1..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_40.2.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "XSL stylesheets for the yelp help browser"
-LICENSE = "LGPLv2.1 & GPLv2 & BSD-3-Clause"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=8ca13a5a6972ac1620a1e42a3dacd774 \
-    file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
-    file://COPYING.LGPL;md5=a6f89e2100d9b6cdffcea4f398e37343 \
-"
-
-inherit gnomebase gettext itstool
-
-DEPENDS += "libxml2"
-
-SRC_URI[archive.sha256sum] = "919c552f846aaec741fe51d5af416b469bcdb25c77effc3b5a15a4b4b7ff814e"
-
-RDEPENDS:${PN}:append:class-target = " libxml2 itstool"
-
-# ensure our native consumers are forced to inherit itstool
-RDEPENDS:${PN}:append:class-native = " libxml2-native"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_41.0.bb
new file mode 100644
index 0000000..029fd02
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_41.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "XSL stylesheets for the yelp help browser"
+LICENSE = "LGPLv2.1 & GPLv2 & BSD-3-Clause"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=8ca13a5a6972ac1620a1e42a3dacd774 \
+    file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
+    file://COPYING.LGPL;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+"
+
+inherit gnomebase gettext itstool
+
+DEPENDS += "libxml2"
+
+SRC_URI[archive.sha256sum] = "c8cd64c093bbd8c5d5e47fd38864e90831b5f9cf7403530870206fa96636a4a5"
+
+RDEPENDS:${PN}:append:class-target = " libxml2 itstool"
+
+# ensure our native consumers are forced to inherit itstool
+RDEPENDS:${PN}:append:class-native = " libxml2-native"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_40.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_40.3.bb
deleted file mode 100644
index c179a61..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_40.3.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Help browser for the GNOME desktop"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=6e1b9cb787e76d7e6946887a65caa754 \
-"
-
-inherit gnomebase itstool autotools-brokensep gsettings gettext gtk-doc features_check mime-xdg
-
-# for webkitgtk
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI[archive.sha256sum] = "a173847851f26189be78ecbb10015d539d8cceffc7c23e8635492bc3ada5ee23"
-
-DEPENDS += " \
-    libxml2-native \
-    glib-2.0-native \
-    gtk+3 \
-    appstream-glib \
-    libxslt \
-    sqlite3 \
-    webkitgtk \
-    yelp-xsl \
-"
-
-do_configure:prepend() {
-    export ITSTOOL=${STAGING_BINDIR_NATIVE}/itstool
-}
-
-FILES:${PN} += " \
-    ${datadir}/metainfo \
-    ${datadir}/yelp-xsl \
-"
-
-RDEPENDS:${PN} += "yelp-xsl"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_41.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_41.1.bb
new file mode 100644
index 0000000..980b9a1
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_41.1.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Help browser for the GNOME desktop"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=6e1b9cb787e76d7e6946887a65caa754 \
+"
+
+inherit gnomebase itstool autotools-brokensep gsettings gettext gtk-doc features_check mime-xdg
+
+# for webkitgtk
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[archive.sha256sum] = "456a6415647bceeb0159b90b3553ff328728cf29a608fce08024232504ccb874"
+
+DEPENDS += " \
+    libxml2-native \
+    glib-2.0-native \
+    gtk+3 \
+    appstream-glib \
+    libxslt \
+    sqlite3 \
+    webkitgtk \
+    yelp-xsl \
+"
+
+do_configure:prepend() {
+    export ITSTOOL=${STAGING_BINDIR_NATIVE}/itstool
+}
+
+FILES:${PN} += " \
+    ${datadir}/metainfo \
+    ${datadir}/yelp-xsl \
+"
+
+RDEPENDS:${PN} += "yelp-xsl"
diff --git a/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb b/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb
index d47d847..d003e23 100644
--- a/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb
@@ -16,6 +16,7 @@
     gnome-calendar \
     gnome-font-viewer \
     gnome-photos \
+    gnome-screenshot \
     gnome-terminal \
     gthumb \
     libwnck3 \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.34.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.34.bb
index 0fd4133..2abc64e 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.34.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.34.bb
@@ -16,7 +16,7 @@
 
 S = "${WORKDIR}/git"
 
-inherit meson pkgconfig systemd manpages gettext useradd
+inherit meson pkgconfig systemd gettext useradd
 
 USERADD_PACKAGES = "${PN}"
 
@@ -27,6 +27,8 @@
                        --gid pipewire --groups audio,video \
                        pipewire"
 
+SYSTEMD_PACKAGES = "${PN} ${PN}-media-session"
+
 # For "EVL", look up https://evlproject.org/ . It involves
 # a specially prepared kernel, and is currently unavailable
 # in Yocto.
@@ -37,11 +39,6 @@
 #
 # libcamera support currently does not build successfully.
 #
-# systemd user service files are disabled because per-user
-# PipeWire instances aren't really something that makes
-# much sense in an embedded environment. A system-wide
-# instance does.
-#
 # manpage generation requires xmltoman, which is not available.
 EXTRA_OEMESON += " \
     -Daudiotestsrc=enabled \
@@ -57,7 +54,8 @@
 
 PACKAGECONFIG ??= "\
     ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'alsa systemd', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-system-service', '', d)} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)} \
     gstreamer jack sndfile pw-cat v4l2 \
 "
 
@@ -66,7 +64,6 @@
 # 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"
 PACKAGECONFIG[bluez] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc"
 PACKAGECONFIG[docs] = "-Ddocs=enabled,-Ddocs=disabled,doxygen-native"
@@ -74,7 +71,12 @@
 PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack,,,pipewire-jack"
 PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2"
 PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
-PACKAGECONFIG[systemd] = "-Dsystemd=enabled -Dsystemd-system-service=enabled -Dsystemd-user-service=enabled,-Dsystemd=disabled -Dsystemd-system-service=disabled -Dsystemd-user-service=disabled,systemd"
+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[pw-cat] = "-Dpw-cat=enabled,-Dpw-cat=disabled"
 PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,udev"
@@ -189,7 +191,7 @@
 
 PACKAGES_DYNAMIC = "^${PN}-spa-plugins.* ^${PN}-modules.*"
 
-SYSTEMD_SERVICE:${PN} = "pipewire.service"
+SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd-system-service', 'pipewire.service', '', d)}"
 CONFFILES:${PN} += "${datadir}/pipewire/pipewire.conf"
 FILES:${PN} = " \
     ${datadir}/pipewire/pipewire.conf \
@@ -246,7 +248,7 @@
 
 # Example session manager. Not intended for use in production.
 CONFFILES:${PN}-media-session = "${datadir}/pipewire/media-session.d/*"
-SYSTEMD_SERVICE:${PN}-media-session = "pipewire-media-session.service"
+SYSTEMD_SERVICE:${PN}-media-session = "${@bb.utils.contains('PACKAGECONFIG', 'systemd-system-service', 'pipewire-media-session.service', '', d)}"
 FILES:${PN}-media-session = " \
     ${bindir}/pipewire-media-session \
     ${datadir}/pipewire/media-session.d/* \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/bluepy/bluepy/0001-bluepy-Fix-username-issue-with-tarballs.patch b/meta-openembedded/meta-networking/recipes-connectivity/bluepy/bluepy/0001-bluepy-Fix-username-issue-with-tarballs.patch
new file mode 100644
index 0000000..93b367a
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/bluepy/bluepy/0001-bluepy-Fix-username-issue-with-tarballs.patch
@@ -0,0 +1,32 @@
+From 318a0e7dfaa0f5f233a20c0b347948c8004cf6af Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Oct 2021 14:02:09 -0700
+Subject: [PATCH] bluepy: Fix username issue with tarballs
+
+Fixes
+Cannot change ownership to uid 1000, gid 1000: Operation not permitted
+
+Upstream-Status: Submitted [https://github.com/IanHarvey/bluepy/pull/462]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ bluepy/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/bluepy/Makefile
++++ b/bluepy/Makefile
+@@ -30,13 +30,13 @@ bluepy-helper: $(LOCAL_SRCS) $(IMPORT_SR
+ 	$(CC) -L. $(CFLAGS) $(CPPFLAGS) -o $@ $(LOCAL_SRCS) $(IMPORT_SRCS) $(LDLIBS)
+ 
+ $(IMPORT_SRCS): bluez-src.tgz
+-	tar xzf $<
++	tar xzf $< --no-same-owner
+ 	touch $(IMPORT_SRCS)
+ 
+ .PHONY: bluez-tarfile
+ 
+ bluez-tarfile:
+-	(cd ..; tar czf bluepy/bluez-src.tgz $(BLUEZ_PATH))
++	(cd ..; tar czf bluepy/bluez-src.tgz $(BLUEZ_PATH) --no-same-owner)
+ 
+ GET_SERVICES=get_services.py
+ 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/bluepy/bluepy_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/bluepy/bluepy_git.bb
new file mode 100644
index 0000000..887870f
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/bluepy/bluepy_git.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Python interface to Bluetooth LE on Linux"
+HOMEPAGE = "https://github.com/IanHarvey/bluepy"
+SECTION = "devel/python"
+LICENSE = "GPLv2 & PD"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=59e0d45ea684dda215889aa1b5acd001"
+DEPENDS = "glib-2.0"
+SRCREV = "7ad565231a97c304c0eff45f2649cd005e69db09"
+PV = "1.3.0+git${SRCPV}"
+
+SRC_URI = "git://github.com/IanHarvey/bluepy.git;protocol=https \
+           file://0001-bluepy-Fix-username-issue-with-tarballs.patch \
+          "
+
+S = "${WORKDIR}/git"
+
+inherit setuptools3 pkgconfig
+
+RDEPENDS:${PN} = "bluez5"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/nanomsg/nng_1.4.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/nanomsg/nng_1.4.0.bb
deleted file mode 100644
index 49e2015..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/nanomsg/nng_1.4.0.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "nanomsg-next-generation -- light-weight brokerless messaging"
-DESCRIPTION = "NNG, like its predecessors nanomsg (and to some extent ZeroMQ), is a lightweight, broker-less library, offering a simple API to solve common recurring messaging problems, such as publish/subscribe, RPC-style request/reply, or service discovery."
-HOMEPAGE = "https://github.com/nanomsg/nng"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a41e579bb4326c21c774f8e51e41d8a3"
-
-SECTION = "libs/networking"
-
-SRCREV = "d020adda8f0348d094790618703b8341a26007a3"
-
-SRC_URI = "git://github.com/nanomsg/nng.git"
-
-S = "${WORKDIR}/git"
-
-inherit cmake pkgconfig
-
-EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON -DNNG_ENABLE_NNGCAT=ON"
-
-PACKAGECONFIG ??= ""
-
-PACKAGECONFIG[mbedtls] = "-DNNG_ENABLE_TLS=ON,-DNNG_ENABLE_TLS=OFF,mbedtls"
-
-PACKAGES =+ "${PN}-tools"
-FILES:${PN}-tools = "${bindir}/*"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/nanomsg/nng_1.5.2.bb b/meta-openembedded/meta-networking/recipes-connectivity/nanomsg/nng_1.5.2.bb
new file mode 100644
index 0000000..1ffd891
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/nanomsg/nng_1.5.2.bb
@@ -0,0 +1,22 @@
+SUMMARY = "nanomsg-next-generation -- light-weight brokerless messaging"
+DESCRIPTION = "NNG, like its predecessors nanomsg (and to some extent ZeroMQ), is a lightweight, broker-less library, offering a simple API to solve common recurring messaging problems, such as publish/subscribe, RPC-style request/reply, or service discovery."
+HOMEPAGE = "https://github.com/nanomsg/nng"
+SECTION = "libs/networking"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a41e579bb4326c21c774f8e51e41d8a3"
+
+SRC_URI = "git://github.com/nanomsg/nng.git"
+SRCREV = "169221da8d53b2ca4fda76f894bee8505887a7c6"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig
+
+EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON -DNNG_ENABLE_NNGCAT=ON"
+
+PACKAGECONFIG ??= ""
+
+PACKAGECONFIG[mbedtls] = "-DNNG_ENABLE_TLS=ON,-DNNG_ENABLE_TLS=OFF,mbedtls"
+
+PACKAGES =+ "${PN}-tools"
+FILES:${PN}-tools = "${bindir}/*"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-Makefile-do-not-use-Werror.patch b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-Makefile-do-not-use-Werror.patch
new file mode 100644
index 0000000..ddc44c3
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-Makefile-do-not-use-Werror.patch
@@ -0,0 +1,23 @@
+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 8645aee..50fc0da 100644
+--- a/Makefile
++++ b/Makefile
+@@ -7,7 +7,6 @@ BUILDFLAGS = \
+ 	-D_XOPEN_SOURCE=500 \
+ 	-DSBINDIR=\"$(SBINDIR)\" \
+ 	-Wall \
+-	-Werror \
+ 	$(NULL)
+ 
+ SYSTEMD_GENERATOR_DIR=$(shell pkg-config --variable=systemdsystemgeneratordir systemd)
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch
index 0fa6ba4..c7d371d 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch
@@ -1,16 +1,19 @@
-From ceb4111af317ecc54d97bb21878dcccbfdb2983e Mon Sep 17 00:00:00 2001
+From e0df1f07d1707d5daf0358cc60b30f06121f7e60 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>
+
 ---
  src/util.c | 6 ++++++
  1 file changed, 6 insertions(+)
 
+diff --git a/src/util.c b/src/util.c
+index a4c0dba..fd4542d 100644
 --- a/src/util.c
 +++ b/src/util.c
-@@ -24,6 +24,12 @@
+@@ -25,6 +25,12 @@
  #include "util.h"
  #include "netplan.h"
  
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.103.bb b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.103.bb
index 682a6b6..3527bce 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.103.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.103.bb
@@ -15,7 +15,9 @@
 PV = "0.103"
 
 SRC_URI = "git://github.com/CanonicalLtd/netplan.git;branch=main \
-           file://0001-parse-nm-fix-32bit-format-string.patch"
+           file://0001-parse-nm-fix-32bit-format-string.patch \
+           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"
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.14.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.14.bb
deleted file mode 100644
index 9f3054a..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.14.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "NetworkManager-openvpn-plugin"
-SECTION = "net/misc"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=100d5a599bead70ddcd70dcd73f2e29c"
-
-DEPENDS = "dbus dbus-glib networkmanager openvpn intltool-native glib-2.0-native"
-
-inherit gnomebase useradd gettext systemd
-
-SRC_URI = "${GNOME_MIRROR}/NetworkManager-openvpn/${@gnome_verdir("${PV}")}/NetworkManager-openvpn-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "bef67eca77bee68da703609b92f804a0"
-SRC_URI[sha256sum] = "e7419053fc3b5a7e25f1a7517c313ad4531b6ea280255524ebb85a70c76fdbeb"
-
-S = "${WORKDIR}/NetworkManager-openvpn-${PV}"
-
-# meta-gnome in layers is required using gnome:
-PACKAGECONFIG[gnome] = "--with-gnome,--without-gnome,gtk+3 libnma libsecret"
-
-do_configure:append() {
-    # network-manager-openvpn.metainfo.xml is created in source folder but
-    # compile expects it in build folder. As long as nobody comes up with a
-    # better solution just support build:
-    if [ -e ${S}/appdata/network-manager-openvpn.metainfo.xml ]; then
-        mkdir -p ${B}/appdata
-        cp -f ${S}/appdata/network-manager-openvpn.metainfo.xml ${B}/appdata/
-    fi
-}
-
-do_install:append () {
-    rm -rf ${D}${libdir}/NetworkManager/*.la
-}
-
-# Create user and group nm-openvpn that are needed since version 1.0.6
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM:${PN} = "--system nm-openvpn"
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/metainfo \
-    ${libdir}/NetworkManager/*.so \
-    ${nonarch_libdir}/NetworkManager/VPN/nm-openvpn-service.name \
-"
-
-FILES:${PN}-staticdev += " \
-    ${libdir}/NetworkManager/*.a \
-"
-
-RDEPENDS:${PN} = " \
-    networkmanager \
-    openvpn \
-"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.16.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.16.bb
new file mode 100644
index 0000000..19cac13
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.16.bb
@@ -0,0 +1,52 @@
+SUMMARY = "NetworkManager-openvpn-plugin"
+SECTION = "net/misc"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=100d5a599bead70ddcd70dcd73f2e29c"
+
+DEPENDS = "dbus dbus-glib networkmanager openvpn intltool-native glib-2.0-native"
+
+inherit gnomebase useradd gettext systemd
+
+SRC_URI = "${GNOME_MIRROR}/NetworkManager-openvpn/${@gnome_verdir("${PV}")}/NetworkManager-openvpn-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "8920de09c7ae5f1f520c83f844455db8faec31427350268fe2dd95b860f91fb5"
+
+S = "${WORKDIR}/NetworkManager-openvpn-${PV}"
+
+# meta-gnome in layers is required using gnome:
+PACKAGECONFIG[gnome] = "--with-gnome,--without-gnome,gtk+3 libnma libsecret"
+
+do_configure:append() {
+    # network-manager-openvpn.metainfo.xml is created in source folder but
+    # compile expects it in build folder. As long as nobody comes up with a
+    # better solution just support build:
+    if [ -e ${S}/appdata/network-manager-openvpn.metainfo.xml ]; then
+        mkdir -p ${B}/appdata
+        cp -f ${S}/appdata/network-manager-openvpn.metainfo.xml ${B}/appdata/
+    fi
+}
+
+do_install:append () {
+    rm -rf ${D}${libdir}/NetworkManager/*.la
+}
+
+# Create user and group nm-openvpn that are needed since version 1.0.6
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system nm-openvpn"
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/metainfo \
+    ${libdir}/NetworkManager/*.so \
+    ${nonarch_libdir}/NetworkManager/VPN/nm-openvpn-service.name \
+"
+
+FILES:${PN}-staticdev += " \
+    ${libdir}/NetworkManager/*.a \
+"
+
+RDEPENDS:${PN} = " \
+    networkmanager \
+    openvpn \
+"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.32.10.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.32.10.bb
deleted file mode 100644
index 89f9554..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.32.10.bb
+++ /dev/null
@@ -1,180 +0,0 @@
-SUMMARY = "NetworkManager"
-HOMEPAGE = "https://wiki.gnome.org/Projects/NetworkManager"
-SECTION = "net/misc"
-
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
-"
-
-DEPENDS = " \
-    intltool-native \
-    libxslt-native \
-    libnl \
-    udev \
-    util-linux \
-    libndp \
-    libnewt \
-    curl \
-"
-
-inherit gnomebase gettext update-rc.d systemd vala 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://0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch \
-    file://0002-Do-not-create-settings-settings-property-documentati.patch \
-    file://0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch \
-"
-SRC_URI[sha256sum] = "3e5ccc66805659e3f11a718e3a599f9726b79a01d6ff14814be6ad8bc5da8bb8"
-
-S = "${WORKDIR}/NetworkManager-${PV}"
-
-EXTRA_OECONF = " \
-    --disable-ifcfg-rh \
-    --disable-more-warnings \
-    --with-iptables=${sbindir}/iptables \
-    --with-tests \
-    --with-nmtui=yes \
-    --with-udev-dir=${nonarch_base_libdir}/udev \
-    --with-dhclient=no \
-    --with-dhcpcd=no \
-    --with-dhcpcanon=no \
-    --with-netconfig=no \
-"
-
-# 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 GIR_EXTRA_LIBS_PATH="${B}/src/libnm-client-impl/.libs"
-}
-
-PACKAGECONFIG ??= "nss ifupdown dnsmasq nmcli \
-    ${@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', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit', '', d)} \
-"
-
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'nmcli', 'bash-completion', '', d)}
-
-PACKAGECONFIG[systemd] = " \
-    --with-systemdsystemunitdir=${systemd_unitdir}/system --with-session-tracking=systemd, \
-    --without-systemdsystemunitdir, \
-"
-PACKAGECONFIG[polkit] = "--enable-polkit,--disable-polkit,polkit"
-PACKAGECONFIG[bluez5] = "--enable-bluez5-dun,--disable-bluez5-dun,bluez5"
-# consolekit is not picked by shlibs, so add it to RDEPENDS too
-PACKAGECONFIG[consolekit] = "--with-session-tracking=consolekit,,consolekit,consolekit"
-PACKAGECONFIG[modemmanager] = "--with-modem-manager-1=yes,--with-modem-manager-1=no,modemmanager"
-PACKAGECONFIG[ppp] = "--enable-ppp,--disable-ppp,ppp,ppp"
-PACKAGECONFIG[dnsmasq] = "--with-dnsmasq=${bindir}/dnsmasq"
-PACKAGECONFIG[nss] = "--with-crypto=nss,,nss"
-PACKAGECONFIG[resolvconf] = "--with-resolvconf=${base_sbindir}/resolvconf,,,resolvconf"
-PACKAGECONFIG[gnutls] = "--with-crypto=gnutls,,gnutls"
-PACKAGECONFIG[wifi] = "--with-wext=yes --enable-wifi=yes,--with-wext=no --enable-wifi=no,,wpa-supplicant"
-PACKAGECONFIG[ifupdown] = "--enable-ifupdown,--disable-ifupdown"
-PACKAGECONFIG[qt4-x11-free] = "--enable-qt,--disable-qt,qt4-x11-free"
-PACKAGECONFIG[cloud-setup] = "--with-nm-cloud-setup=yes,--with-nm-cloud-setup=no"
-PACKAGECONFIG[nmcli] = "--with-nmcli=yes,--with-nmcli=no,readline"
-PACKAGECONFIG[ovs] = "--enable-ovs,--disable-ovs,jansson"
-PACKAGECONFIG[audit] = "--with-libaudit,--without-libaudit,audit"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
-
-PACKAGES =+ " \
-  ${PN}-nmcli ${PN}-nmcli-doc \
-  ${PN}-nmtui ${PN}-nmtui-doc \
-  ${PN}-adsl ${PN}-cloud-setup \
-"
-
-SYSTEMD_PACKAGES = "${PN} ${PN}-cloud-setup"
-
-FILES:${PN}-adsl = "${libdir}/NetworkManager/${PV}/libnm-device-plugin-adsl.so"
-
-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 \
-"
-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)}"
-
-FILES:${PN} += " \
-    ${libexecdir} \
-    ${libdir}/NetworkManager/${PV}/*.so \
-    ${libdir}/NetworkManager \
-    ${libdir}/firewalld/zones \
-    ${nonarch_libdir}/NetworkManager/conf.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-down.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-up.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d/no-wait.d \
-    ${nonarch_libdir}/NetworkManager/VPN \
-    ${nonarch_libdir}/NetworkManager/system-connections \
-    ${datadir}/polkit-1 \
-    ${datadir}/dbus-1 \
-    ${nonarch_base_libdir}/udev/* \
-    ${systemd_system_unitdir} \
-    ${libdir}/pppd \
-"
-
-RRECOMMENDS:${PN} += "iptables \
-    ${@bb.utils.filter('PACKAGECONFIG', 'dnsmasq', d)} \
-"
-RCONFLICTS:${PN} = "connman"
-
-FILES:${PN}-dev += " \
-    ${datadir}/NetworkManager/gdb-cmd \
-    ${libdir}/pppd/*/*.la \
-    ${libdir}/NetworkManager/*.la \
-    ${libdir}/NetworkManager/${PV}/*.la \
-"
-
-FILES:${PN}-nmcli = " \
-    ${bindir}/nmcli \
-"
-
-FILES:${PN}-nmcli-doc = " \
-    ${mandir}/man1/nmcli* \
-"
-
-FILES:${PN}-nmtui = " \
-    ${bindir}/nmtui \
-    ${bindir}/nmtui-edit \
-    ${bindir}/nmtui-connect \
-    ${bindir}/nmtui-hostname \
-"
-
-FILES:${PN}-nmtui-doc = " \
-    ${mandir}/man1/nmtui* \
-"
-
-INITSCRIPT_NAME = "network-manager"
-SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'NetworkManager.service NetworkManager-dispatcher.service', '', d)}"
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','resolv-conf','',d)}"
-ALTERNATIVE_TARGET[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv-conf.NetworkManager','',d)}"
-ALTERNATIVE_LINK_NAME[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv.conf','',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('DISTRO_FEATURES','systemd','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
-}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.32.12.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.32.12.bb
new file mode 100644
index 0000000..c45452f
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.32.12.bb
@@ -0,0 +1,180 @@
+SUMMARY = "NetworkManager"
+HOMEPAGE = "https://wiki.gnome.org/Projects/NetworkManager"
+SECTION = "net/misc"
+
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
+"
+
+DEPENDS = " \
+    intltool-native \
+    libxslt-native \
+    libnl \
+    udev \
+    util-linux \
+    libndp \
+    libnewt \
+    curl \
+"
+
+inherit gnomebase gettext update-rc.d systemd vala 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://0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch \
+    file://0002-Do-not-create-settings-settings-property-documentati.patch \
+    file://0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch \
+"
+SRC_URI[sha256sum] = "a8ab36a0a502fe73cd8e3bacb6585f97fbb94ebef79e276cdbaf11c33ff8f54b"
+
+S = "${WORKDIR}/NetworkManager-${PV}"
+
+EXTRA_OECONF = " \
+    --disable-ifcfg-rh \
+    --disable-more-warnings \
+    --with-iptables=${sbindir}/iptables \
+    --with-tests \
+    --with-nmtui=yes \
+    --with-udev-dir=${nonarch_base_libdir}/udev \
+    --with-dhclient=no \
+    --with-dhcpcd=no \
+    --with-dhcpcanon=no \
+    --with-netconfig=no \
+"
+
+# 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 GIR_EXTRA_LIBS_PATH="${B}/src/libnm-client-impl/.libs"
+}
+
+PACKAGECONFIG ??= "nss ifupdown dnsmasq nmcli \
+    ${@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', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit', '', d)} \
+"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'nmcli', 'bash-completion', '', d)}
+
+PACKAGECONFIG[systemd] = " \
+    --with-systemdsystemunitdir=${systemd_unitdir}/system --with-session-tracking=systemd, \
+    --without-systemdsystemunitdir, \
+"
+PACKAGECONFIG[polkit] = "--enable-polkit,--disable-polkit,polkit"
+PACKAGECONFIG[bluez5] = "--enable-bluez5-dun,--disable-bluez5-dun,bluez5"
+# consolekit is not picked by shlibs, so add it to RDEPENDS too
+PACKAGECONFIG[consolekit] = "--with-session-tracking=consolekit,,consolekit,consolekit"
+PACKAGECONFIG[modemmanager] = "--with-modem-manager-1=yes,--with-modem-manager-1=no,modemmanager"
+PACKAGECONFIG[ppp] = "--enable-ppp,--disable-ppp,ppp,ppp"
+PACKAGECONFIG[dnsmasq] = "--with-dnsmasq=${bindir}/dnsmasq"
+PACKAGECONFIG[nss] = "--with-crypto=nss,,nss"
+PACKAGECONFIG[resolvconf] = "--with-resolvconf=${base_sbindir}/resolvconf,,,resolvconf"
+PACKAGECONFIG[gnutls] = "--with-crypto=gnutls,,gnutls"
+PACKAGECONFIG[wifi] = "--with-wext=yes --enable-wifi=yes,--with-wext=no --enable-wifi=no,,wpa-supplicant"
+PACKAGECONFIG[ifupdown] = "--enable-ifupdown,--disable-ifupdown"
+PACKAGECONFIG[qt4-x11-free] = "--enable-qt,--disable-qt,qt4-x11-free"
+PACKAGECONFIG[cloud-setup] = "--with-nm-cloud-setup=yes,--with-nm-cloud-setup=no"
+PACKAGECONFIG[nmcli] = "--with-nmcli=yes,--with-nmcli=no,readline"
+PACKAGECONFIG[ovs] = "--enable-ovs,--disable-ovs,jansson"
+PACKAGECONFIG[audit] = "--with-libaudit,--without-libaudit,audit"
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
+
+PACKAGES =+ " \
+  ${PN}-nmcli ${PN}-nmcli-doc \
+  ${PN}-nmtui ${PN}-nmtui-doc \
+  ${PN}-adsl ${PN}-cloud-setup \
+"
+
+SYSTEMD_PACKAGES = "${PN} ${PN}-cloud-setup"
+
+FILES:${PN}-adsl = "${libdir}/NetworkManager/${PV}/libnm-device-plugin-adsl.so"
+
+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 \
+"
+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)}"
+
+FILES:${PN} += " \
+    ${libexecdir} \
+    ${libdir}/NetworkManager/${PV}/*.so \
+    ${libdir}/NetworkManager \
+    ${libdir}/firewalld/zones \
+    ${nonarch_libdir}/NetworkManager/conf.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-down.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-up.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d/no-wait.d \
+    ${nonarch_libdir}/NetworkManager/VPN \
+    ${nonarch_libdir}/NetworkManager/system-connections \
+    ${datadir}/polkit-1 \
+    ${datadir}/dbus-1 \
+    ${nonarch_base_libdir}/udev/* \
+    ${systemd_system_unitdir} \
+    ${libdir}/pppd \
+"
+
+RRECOMMENDS:${PN} += "iptables \
+    ${@bb.utils.filter('PACKAGECONFIG', 'dnsmasq', d)} \
+"
+RCONFLICTS:${PN} = "connman"
+
+FILES:${PN}-dev += " \
+    ${datadir}/NetworkManager/gdb-cmd \
+    ${libdir}/pppd/*/*.la \
+    ${libdir}/NetworkManager/*.la \
+    ${libdir}/NetworkManager/${PV}/*.la \
+"
+
+FILES:${PN}-nmcli = " \
+    ${bindir}/nmcli \
+"
+
+FILES:${PN}-nmcli-doc = " \
+    ${mandir}/man1/nmcli* \
+"
+
+FILES:${PN}-nmtui = " \
+    ${bindir}/nmtui \
+    ${bindir}/nmtui-edit \
+    ${bindir}/nmtui-connect \
+    ${bindir}/nmtui-hostname \
+"
+
+FILES:${PN}-nmtui-doc = " \
+    ${mandir}/man1/nmtui* \
+"
+
+INITSCRIPT_NAME = "network-manager"
+SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'NetworkManager.service NetworkManager-dispatcher.service', '', d)}"
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','resolv-conf','',d)}"
+ALTERNATIVE_TARGET[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv-conf.NetworkManager','',d)}"
+ALTERNATIVE_LINK_NAME[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv.conf','',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('DISTRO_FEATURES','systemd','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
+}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.7.bb b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.7.bb
deleted file mode 100644
index 47fcd3a..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.7.bb
+++ /dev/null
@@ -1,346 +0,0 @@
-HOMEPAGE = "https://www.samba.org/"
-SECTION = "console/network"
-
-LICENSE = "GPL-3.0+ & LGPL-3.0+ & GPL-2.0+"
-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 \
-"
-
-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-samba-build-dnsserver_common-code.patch \
-           file://0006-samba-defeat-iconv-test.patch \
-           file://0007-wscript_configure_system_gnutls-disable-check-gnutls.patch \
-           file://0008-source3-wscript-disable-check-fcntl-F_OWNER_EX.patch \
-           file://0009-source3-wscript-disable-check-fcntl-RW_HINTS.patch \
-           "
-
-SRC_URI:append:libc-musl = " \
-           file://netdb_defines.patch \
-           file://samba-pam.patch \
-           file://samba-4.3.9-remove-getpwent_r.patch \
-           file://cmocka-uintptr_t.patch \
-           file://samba-fix-musl-lib-without-innetgr.patch \
-           "
-
-SRC_URI[md5sum] = "f0db8302944bb861b31f4163fd302f66"
-SRC_URI[sha256sum] = "6f50353f9602aa20245eb18ceb00e7e5ec793df0974aebd5254c38f16d8f1906"
-
-UPSTREAM_CHECK_REGEX = "samba\-(?P<pver>4\.14(\.\d+)+).tar.gz"
-
-inherit systemd waf-samba cpan-base perlnative update-rc.d perl-version pkgconfig
-
-# CVE-2011-2411 is valnerble only on HP NonStop Servers.
-CVE_CHECK_WHITELIST += "CVE-2011-2411" 
-
-# remove default added RDEPENDS on perl
-RDEPENDS:${PN}:remove = "perl"
-
-DEPENDS += "readline virtual/libiconv zlib popt libtalloc libtdb libtevent libldb libaio libpam libtasn1 jansson libparse-yapp-perl-native gnutls"
-
-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"
-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"
-
-# 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 ad-dc ldap mitkrb5 \
-"
-
-RDEPENDS:${PN}-ctdb-tests += "bash util-linux-getopt"
-
-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] = ",--without-valgrind,valgrind,"
-PACKAGECONFIG[lttng] = "--with-lttng, --without-lttng,lttng-ust"
-PACKAGECONFIG[archive] = "--with-libarchive, --without-libarchive, libarchive"
-PACKAGECONFIG[libunwind] = ", , libunwind"
-PACKAGECONFIG[gpgme] = ",--without-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,cmocka,NONE"
-
-EXTRA_OECONF += "--enable-fhs \
-                 --with-piddir=/run \
-                 --with-sockets-dir=/run/samba \
-                 --with-modulesdir=${libdir}/samba \
-                 --with-lockdir=${localstatedir}/lib/samba \
-                 --with-cachedir=${localstatedir}/lib/samba \
-                 --disable-rpath-install \
-                 --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}/ -type f -name "perllocal.pod" | xargs rm -f
-    rm -rf ${D}${libdir}/perl5/vendor_perl/${PERLVERSION}/${BUILD_SYS}/auto/Parse/Pidl/.packlist
-    sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${bindir}/pidl
-}
-
-PACKAGES =+ "${PN}-python3 ${PN}-pidl \
-             ${PN}-dsdb-modules ${PN}-testsuite registry-tools \
-             winbind \
-             ${PN}-common ${PN}-base ${PN}-ad-dc ${PN}-ctdb-tests \
-             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, '^pam_(.*)\.so$', pam_pkgname, 'PAM plugin for %s', extra_depends='', prepend=True)
-
-    libdir = d.getVar('libdir')
-    do_split_packages(d, libdir, '^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, '^lib(.*)\.so$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True)
-    moduledir = '%s/samba/auth' % libdir
-    do_split_packages(d, moduledir, '^(.*)\.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, '^(.*)\.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"
-
-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:${PN}-ctdb-tests = "${bindir}/ctdb_run_tests \
-                          ${bindir}/ctdb_run_cluster_tests \
-                          ${sysconfdir}/ctdb/nodes \
-                          ${datadir}/ctdb-tests \
-                          ${datadir}/ctdb/tests \
-                          ${localstatedir}/lib/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 \
-                ${datadir}/ctdb/events/* \
-"
-
-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 \
-                   ${libdir}/samba/smbspool_krb5_wrapper"
-
-RDEPENDS:${PN}-pidl:append = " perl libparse-yapp-perl"
-FILES:${PN}-pidl = "${bindir}/pidl \
-                    ${libdir}/perl5 \
-                   "
-
-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 = "\
-    ${PN}-ctdb-tests \
-    ${PN}-testsuite \
-    "
-
-ALLOW_EMPTY:${PN}-test = "1"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.8.bb b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.8.bb
new file mode 100644
index 0000000..0dd563c
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.8.bb
@@ -0,0 +1,346 @@
+HOMEPAGE = "https://www.samba.org/"
+SECTION = "console/network"
+
+LICENSE = "GPL-3.0+ & LGPL-3.0+ & GPL-2.0+"
+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 \
+"
+
+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-samba-build-dnsserver_common-code.patch \
+           file://0006-samba-defeat-iconv-test.patch \
+           file://0007-wscript_configure_system_gnutls-disable-check-gnutls.patch \
+           file://0008-source3-wscript-disable-check-fcntl-F_OWNER_EX.patch \
+           file://0009-source3-wscript-disable-check-fcntl-RW_HINTS.patch \
+           "
+
+SRC_URI:append:libc-musl = " \
+           file://netdb_defines.patch \
+           file://samba-pam.patch \
+           file://samba-4.3.9-remove-getpwent_r.patch \
+           file://cmocka-uintptr_t.patch \
+           file://samba-fix-musl-lib-without-innetgr.patch \
+           "
+
+SRC_URI[md5sum] = "5c6636b34a322de0eb917ee0403be322"
+SRC_URI[sha256sum] = "c936b782c2aced8cd7299c13bec67c495fd4affdb217a6ed6150f4fd6d770fde"
+
+UPSTREAM_CHECK_REGEX = "samba\-(?P<pver>4\.14(\.\d+)+).tar.gz"
+
+inherit systemd waf-samba cpan-base perlnative update-rc.d perl-version pkgconfig
+
+# CVE-2011-2411 is valnerble only on HP NonStop Servers.
+CVE_CHECK_WHITELIST += "CVE-2011-2411" 
+
+# remove default added RDEPENDS on perl
+RDEPENDS:${PN}:remove = "perl"
+
+DEPENDS += "readline virtual/libiconv zlib popt libtalloc libtdb libtevent libldb libaio libpam libtasn1 jansson libparse-yapp-perl-native gnutls"
+
+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"
+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"
+
+# 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 ad-dc ldap mitkrb5 \
+"
+
+RDEPENDS:${PN}-ctdb-tests += "bash util-linux-getopt"
+
+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] = ",--without-valgrind,valgrind,"
+PACKAGECONFIG[lttng] = "--with-lttng, --without-lttng,lttng-ust"
+PACKAGECONFIG[archive] = "--with-libarchive, --without-libarchive, libarchive"
+PACKAGECONFIG[libunwind] = ", , libunwind"
+PACKAGECONFIG[gpgme] = ",--without-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,cmocka,NONE"
+
+EXTRA_OECONF += "--enable-fhs \
+                 --with-piddir=/run \
+                 --with-sockets-dir=/run/samba \
+                 --with-modulesdir=${libdir}/samba \
+                 --with-lockdir=${localstatedir}/lib/samba \
+                 --with-cachedir=${localstatedir}/lib/samba \
+                 --disable-rpath-install \
+                 --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}/ -type f -name "perllocal.pod" | xargs rm -f
+    rm -rf ${D}${libdir}/perl5/vendor_perl/${PERLVERSION}/${BUILD_SYS}/auto/Parse/Pidl/.packlist
+    sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${bindir}/pidl
+}
+
+PACKAGES =+ "${PN}-python3 ${PN}-pidl \
+             ${PN}-dsdb-modules ${PN}-testsuite registry-tools \
+             winbind \
+             ${PN}-common ${PN}-base ${PN}-ad-dc ${PN}-ctdb-tests \
+             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, '^pam_(.*)\.so$', pam_pkgname, 'PAM plugin for %s', extra_depends='', prepend=True)
+
+    libdir = d.getVar('libdir')
+    do_split_packages(d, libdir, '^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, '^lib(.*)\.so$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True)
+    moduledir = '%s/samba/auth' % libdir
+    do_split_packages(d, moduledir, '^(.*)\.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, '^(.*)\.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"
+
+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:${PN}-ctdb-tests = "${bindir}/ctdb_run_tests \
+                          ${bindir}/ctdb_run_cluster_tests \
+                          ${sysconfdir}/ctdb/nodes \
+                          ${datadir}/ctdb-tests \
+                          ${datadir}/ctdb/tests \
+                          ${localstatedir}/lib/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 \
+                ${datadir}/ctdb/events/* \
+"
+
+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 \
+                   ${libdir}/samba/smbspool_krb5_wrapper"
+
+RDEPENDS:${PN}-pidl:append = " perl libparse-yapp-perl"
+FILES:${PN}-pidl = "${bindir}/pidl \
+                    ${libdir}/perl5 \
+                   "
+
+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 = "\
+    ${PN}-ctdb-tests \
+    ${PN}-testsuite \
+    "
+
+ALLOW_EMPTY:${PN}-test = "1"
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 dd5d688..e84086e 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
@@ -207,6 +207,7 @@
     libtevent \
     linux-atm \
     lksctp-tools \
+    mctp \
     memcached \
     ifenslave \
     netcat \
@@ -233,7 +234,6 @@
     tcpdump \
     tcpslice \
     netcf \
-    nghttp2 \
     tnftp \
     traceroute \
     tunctl \
diff --git a/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_0.7.4.bb b/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_0.7.4.bb
deleted file mode 100644
index 7661e9c..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_0.7.4.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-SUMMARY = "Advanced TFTP server and client"
-SECTION = "net"
-HOMEPAGE = "http://packages.debian.org/atftp"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-SRCREV = "e56e8845f1070e89a4a6e509396b681688d03793"
-
-SRC_URI = "git://git.code.sf.net/p/atftp/code \
-           file://atftpd.init \
-           file://atftpd.service \
-"
-
-S = "${WORKDIR}/git"
-
-inherit autotools update-rc.d systemd
-
-PACKAGECONFIG ??= "tcp-wrappers"
-PACKAGECONFIG[pcre] = "--enable-libpcre,--disable-libpcre,libpcre"
-PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
-PACKAGECONFIG[readline] = "--enable-libreadline,--disable-libreadline,readline"
-
-INITSCRIPT_PACKAGES = "${PN}d"
-INITSCRIPT_NAME:${PN}d = "atftpd"
-INITSCRIPT_PARAMS:${PN}d = "defaults 80"
-
-
-EXTRA_OEMAKE = "CFLAGS='${CFLAGS} -std=gnu89'"
-
-do_install:append() {
-    install -d ${D}${sysconfdir}/init.d
-    install -m 0755 ${WORKDIR}/atftpd.init ${D}${sysconfdir}/init.d/atftpd
-
-    install -d ${D}/srv/tftp
-
-    rm ${D}${sbindir}/in.tftpd
-
-    install -d ${D}${systemd_unitdir}/system
-    install -m 0644 ${WORKDIR}/atftpd.service ${D}${systemd_unitdir}/system
-}
-
-PACKAGES =+ "${PN}d"
-
-FILES:${PN} = "${bindir}/*"
-
-FILES:${PN}d = "${sbindir}/* \
-    ${sysconfdir} \
-    /srv/tftp \
-    ${systemd_unitdir}/system/atftpd.service \
-"
-
-SYSTEMD_PACKAGES = "${PN}d"
-SYSTEMD_SERVICE:${PN}d = "atftpd.service"
-RPROVIDES:${PN}d += "${PN}d-systemd"
-RREPLACES:${PN}d += "${PN}d-systemd"
-RCONFLICTS:${PN}d += "${PN}d-systemd"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_0.7.5.bb b/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_0.7.5.bb
new file mode 100644
index 0000000..de283df
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_0.7.5.bb
@@ -0,0 +1,56 @@
+SUMMARY = "Advanced TFTP server and client"
+SECTION = "net"
+HOMEPAGE = "http://packages.debian.org/atftp"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f65159f73e603f89d6867d43191900e5"
+
+SRCREV = "00921e75728e3681b051c2e48c59e36c6cfa2e97"
+
+SRC_URI = "git://git.code.sf.net/p/atftp/code \
+           file://atftpd.init \
+           file://atftpd.service \
+"
+
+S = "${WORKDIR}/git"
+
+inherit autotools update-rc.d systemd
+
+PACKAGECONFIG ??= "tcp-wrappers"
+PACKAGECONFIG[pcre] = "--enable-libpcre,--disable-libpcre,libpcre"
+PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
+PACKAGECONFIG[readline] = "--enable-libreadline,--disable-libreadline,readline"
+
+INITSCRIPT_PACKAGES = "${PN}d"
+INITSCRIPT_NAME:${PN}d = "atftpd"
+INITSCRIPT_PARAMS:${PN}d = "defaults 80"
+
+
+EXTRA_OEMAKE = "CFLAGS='${CFLAGS} -std=gnu89'"
+
+do_install:append() {
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/atftpd.init ${D}${sysconfdir}/init.d/atftpd
+
+    install -d ${D}/srv/tftp
+
+    rm ${D}${sbindir}/in.tftpd
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/atftpd.service ${D}${systemd_unitdir}/system
+}
+
+PACKAGES =+ "${PN}d"
+
+FILES:${PN} = "${bindir}/*"
+
+FILES:${PN}d = "${sbindir}/* \
+    ${sysconfdir} \
+    /srv/tftp \
+    ${systemd_unitdir}/system/atftpd.service \
+"
+
+SYSTEMD_PACKAGES = "${PN}d"
+SYSTEMD_SERVICE:${PN}d = "atftpd.service"
+RPROVIDES:${PN}d += "${PN}d-systemd"
+RREPLACES:${PN}d += "${PN}d-systemd"
+RCONFLICTS:${PN}d += "${PN}d-systemd"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Do-not-hardcode-path-for-pkg.m4.patch b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Do-not-hardcode-path-for-pkg.m4.patch
index d5ea417..f18f237 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Do-not-hardcode-path-for-pkg.m4.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Do-not-hardcode-path-for-pkg.m4.patch
@@ -1,4 +1,4 @@
-From a27217a5437da313d251b4a765bf7cb60ffaa62d Mon Sep 17 00:00:00 2001
+From d7a34bb388e33d16260b67275cdb58f9c877d324 Mon Sep 17 00:00:00 2001
 From: Changqing Li <changqing.li@windriver.com>
 Date: Tue, 27 Nov 2018 15:27:47 +0800
 Subject: [PATCH] From 6d24365f0828185fd1bb4d199209ca07eb95c41d Mon Sep 17
@@ -11,14 +11,17 @@
 
 update patch to version 5.1.6
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
 ---
  configure.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
+diff --git a/configure.in b/configure.in
+index 07c2051..e85d718 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -12,7 +12,7 @@ define([AC_CACHE_SAVE], )dnl
- AC_INIT(.autofs-5.1.7)
+ AC_INIT(.autofs-5.1.8)
  
  # for pkg-config macros
 -m4_include([/usr/share/aclocal/pkg.m4])
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.1.7-use-default-stack-size-for-threads.patch b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.1.7-use-default-stack-size-for-threads.patch
deleted file mode 100644
index b21e7c0..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.1.7-use-default-stack-size-for-threads.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-autofs-5.1.7 - use default stack size for threads
-
-From: Ian Kent <raven@themaw.net>
-
-autofs uses PTHREAD_STACK_MIN to set the stack size for threads it
-creates.
-
-In two cases it is used to reduce the stack size for long running
-service threads while it's used to allocate a larger stack for worker
-threads that can have larger memory requirements.
-
-In recent glibc releases PTHREAD_STACK_MIN is no longer a constant
-which can lead to unexpectedly different stack sizes on different
-architectures and the autofs assumption it's a constant causes a
-compile failure.
-
-The need to alter the stack size was due to observed stack overflow
-which was thought to be due the thread stack being too small for autofs
-and glibc alloca(3) usage.
-
-Quite a bit of that alloca(3) usage has been eliminated from autofs now,
-particularly those that might be allocating largish amounts of storage,
-and there has been a lot of change in glibc too so using the thread
-default stack should be ok.
-
-Signed-off-by: Ian Kent <raven@themaw.net>
----
- CHANGELOG          |    1 +
- daemon/automount.c |   29 -----------------------------
- daemon/state.c     |    6 +-----
- lib/alarm.c        |    6 +-----
- 4 files changed, 3 insertions(+), 39 deletions(-)
-
---- a/daemon/automount.c
-+++ b/daemon/automount.c
-@@ -92,7 +92,6 @@ static size_t kpkt_len;
- /* Attributes for creating detached and joinable threads */
- pthread_attr_t th_attr;
- pthread_attr_t th_attr_detached;
--size_t detached_thread_stack_size = PTHREAD_STACK_MIN * 144;
- 
- struct master_readmap_cond mrc = {
- 	PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, NULL, 0, 0, 0, 0};
-@@ -2617,34 +2616,6 @@ int main(int argc, char *argv[])
- 		if (start_pipefd[1] != -1) {
- 			res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat));
- 			close(start_pipefd[1]);
--		}
--		release_flag_file();
--		macro_free_global_table();
--		exit(1);
--	}
--
--#ifdef _POSIX_THREAD_ATTR_STACKSIZE
--	if (pthread_attr_setstacksize(
--			&th_attr_detached, detached_thread_stack_size)) {
--		logerr("%s: failed to set stack size thread attribute!",
--		       program);
--		if (start_pipefd[1] != -1) {
--			res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat));
--			close(start_pipefd[1]);
--		}
--		release_flag_file();
--		macro_free_global_table();
--		exit(1);
--	}
--#endif
--
--	if (pthread_attr_getstacksize(
--			&th_attr_detached, &detached_thread_stack_size)) {
--		logerr("%s: failed to get detached thread stack size!",
--		       program);
--		if (start_pipefd[1] != -1) {
--			res = write(start_pipefd[1], pst_stat, sizeof(*pst_stat));
--			close(start_pipefd[1]);
- 		}
- 		release_flag_file();
- 		macro_free_global_table();
---- a/daemon/state.c
-+++ b/daemon/state.c
-@@ -1173,12 +1173,8 @@ int st_start_handler(void)
- 	status = pthread_attr_init(pattrs);
- 	if (status)
- 		pattrs = NULL;
--	else {
-+	else
- 		pthread_attr_setdetachstate(pattrs, PTHREAD_CREATE_DETACHED);
--#ifdef _POSIX_THREAD_ATTR_STACKSIZE
--		pthread_attr_setstacksize(pattrs, PTHREAD_STACK_MIN*4);
--#endif
--	}
- 
- 	status = pthread_create(&thid, pattrs, st_queue_handler, NULL);
- 
---- a/lib/alarm.c
-+++ b/lib/alarm.c
-@@ -270,12 +270,8 @@ int alarm_start_handler(void)
- 	status = pthread_attr_init(pattrs);
- 	if (status)
- 		pattrs = NULL;
--	else {
-+	else
- 		pthread_attr_setdetachstate(pattrs, PTHREAD_CREATE_DETACHED);
--#ifdef _POSIX_THREAD_ATTR_STACKSIZE
--		pthread_attr_setstacksize(pattrs, PTHREAD_STACK_MIN*4);
--#endif
--	}
- 
- 	status = pthread_condattr_init(&condattrs);
- 	if (status)
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.7.bb b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.7.bb
deleted file mode 100644
index 3fc574f..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.7.bb
+++ /dev/null
@@ -1,98 +0,0 @@
-SUMMARY = "Kernel based automounter for linux"
-SECTION = "utils"
-LICENSE = "GPL-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ee9324a6f564bb2376b63878ac396798"
-
-DEPENDS += "libtirpc flex-native bison-native e2fsprogs openssl libxml2 util-linux cyrus-sasl libnsl2"
-
-CFLAGS += "-I${STAGING_INCDIR}/tirpc"
-
-inherit autotools-brokensep systemd update-rc.d pkgconfig
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/daemons/autofs/v5/autofs-${PV}.tar.gz \
-           file://no-bash.patch \
-           file://cross.patch \
-           file://fix_disable_ldap.patch \
-           file://autofs-5.0.7-fix-lib-deps.patch \
-           file://add-the-needed-stdarg.h.patch \
-           file://using-pkg-config-to-detect-libxml-2.0-and-krb5.patch \
-           file://force-STRIP-to-emtpy.patch \
-           file://remove-bashism.patch \
-           file://fix-the-YACC-rule-to-fix-a-building-failure.patch \
-           file://0001-Define-__SWORD_TYPE-and-_PATH_NSSWITCH_CONF.patch \
-           file://0002-Replace-__S_IEXEC-with-S_IEXEC.patch \
-           file://pkgconfig-libnsl.patch \
-           file://0001-modules-lookup_multi.c-Replace-__S_IEXEC-with-S_IEXE.patch \
-           file://0001-Do-not-hardcode-path-for-pkg.m4.patch \
-           file://0001-Bug-fix-for-pid_t-not-found-on-musl.patch \
-           file://0001-Define-__SWORD_TYPE-if-undefined.patch \
-           file://autofs-5.1.7-use-default-stack-size-for-threads.patch \
-           "
-SRC_URI[sha256sum] = "a18619e5ad18960fe382354eef33f070e57e4e5711d484b010acde080a003312"
-
-UPSTREAM_CHECK_URI = "${KERNELORG_MIRROR}/linux/daemons/autofs/v5/"
-
-INITSCRIPT_NAME = "autofs"
-INITSCRIPT_PARAMS = "defaults"
-
-# FIXME: modules/Makefile has crappy rules that don't obey LDFLAGS
-#CFLAGS += "${LDFLAGS}"
-
-PACKAGECONFIG[systemd] = "--with-systemd=${systemd_unitdir}/system,--without-systemd,systemd"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-
-EXTRA_OEMAKE = "DONTSTRIP=1"
-EXTRA_OECONF += "--disable-mount-locking \
-                --enable-ignore-busy --with-openldap=no \
-                --with-confdir=${sysconfdir}/default \
-                --with-fifodir=/run \
-                --with-flagdir=/run \
-                --with-sasl=no --with-libtirpc \
-                --with-mapdir=${sysconfdir} \
-                --with-path=${STAGING_BINDIR_NATIVE} \
-                --with-fifodir=${localstatedir}/run \
-                --with-flagdir=${localstatedir}/run \
-"
-CACHED_CONFIGUREVARS = "ac_cv_path_RANLIB=${RANLIB} \
-                        ac_cv_path_RPCGEN=rpcgen \
-                        initdir=${INIT_D_DIR} \
-                        piddir=/run \
-"
-
-do_configure:prepend () {
-    if [ ! -e ${S}/acinclude.m4 ]; then
-        cp ${S}/aclocal.m4 ${S}/acinclude.m4
-    fi
-    cp ${STAGING_DATADIR_NATIVE}/aclocal/pkg.m4 .
-}
-
-do_install:append () {
-    # samples have been removed from SUBDIRS from 5.1.5, need to install separately
-    oe_runmake 'DESTDIR=${D}' install_samples
-
-    if [ -d ${D}/run ]; then
-        rmdir ${D}/run
-    fi
-    if [ -d ${D}${localstatedir}/run ]; then
-        rmdir ${D}${localstatedir}/run
-    fi
-    # On hybrid systemd/sysvinit builds, we need to install the sysvinit script by hand.
-    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-        install -d -m 755 ${D}${INIT_D_DIR}
-        install -m 755 ${S}/samples/rc.autofs ${D}${INIT_D_DIR}/autofs
-    fi
-}
-SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
-
-# all the libraries are unversioned, so don't pack it on PN-dev
-SOLIBS = ".so"
-FILES_SOLIBSDEV = ""
-# Some symlinks are created in plugins dir e.g.
-# mount_nfs4.so -> mount_nfs.so
-INSANE_SKIP:${PN} = "dev-so"
-
-RPROVIDES:${PN} += "${PN}-systemd"
-RREPLACES:${PN} += "${PN}-systemd"
-RCONFLICTS:${PN} += "${PN}-systemd"
-SYSTEMD_SERVICE:${PN} = "autofs.service"
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
new file mode 100644
index 0000000..c41d0e6
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.8.bb
@@ -0,0 +1,97 @@
+SUMMARY = "Kernel based automounter for linux"
+SECTION = "utils"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ee9324a6f564bb2376b63878ac396798"
+
+DEPENDS += "libtirpc flex-native bison-native e2fsprogs openssl libxml2 util-linux cyrus-sasl libnsl2"
+
+CFLAGS += "-I${STAGING_INCDIR}/tirpc"
+
+inherit autotools-brokensep systemd update-rc.d pkgconfig
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/daemons/autofs/v5/autofs-${PV}.tar.gz \
+           file://no-bash.patch \
+           file://cross.patch \
+           file://fix_disable_ldap.patch \
+           file://autofs-5.0.7-fix-lib-deps.patch \
+           file://add-the-needed-stdarg.h.patch \
+           file://using-pkg-config-to-detect-libxml-2.0-and-krb5.patch \
+           file://force-STRIP-to-emtpy.patch \
+           file://remove-bashism.patch \
+           file://fix-the-YACC-rule-to-fix-a-building-failure.patch \
+           file://0001-Define-__SWORD_TYPE-and-_PATH_NSSWITCH_CONF.patch \
+           file://0002-Replace-__S_IEXEC-with-S_IEXEC.patch \
+           file://pkgconfig-libnsl.patch \
+           file://0001-modules-lookup_multi.c-Replace-__S_IEXEC-with-S_IEXE.patch \
+           file://0001-Do-not-hardcode-path-for-pkg.m4.patch \
+           file://0001-Bug-fix-for-pid_t-not-found-on-musl.patch \
+           file://0001-Define-__SWORD_TYPE-if-undefined.patch \
+           "
+SRC_URI[sha256sum] = "0bd401c56f0eb1ca6251344c3a3d70bface3eccf9c67117cd184422c4cace30c"
+
+UPSTREAM_CHECK_URI = "${KERNELORG_MIRROR}/linux/daemons/autofs/v5/"
+
+INITSCRIPT_NAME = "autofs"
+INITSCRIPT_PARAMS = "defaults"
+
+# FIXME: modules/Makefile has crappy rules that don't obey LDFLAGS
+#CFLAGS += "${LDFLAGS}"
+
+PACKAGECONFIG[systemd] = "--with-systemd=${systemd_unitdir}/system,--without-systemd,systemd"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+
+EXTRA_OEMAKE = "DONTSTRIP=1"
+EXTRA_OECONF += "--disable-mount-locking \
+                --enable-ignore-busy --with-openldap=no \
+                --with-confdir=${sysconfdir}/default \
+                --with-fifodir=/run \
+                --with-flagdir=/run \
+                --with-sasl=no --with-libtirpc \
+                --with-mapdir=${sysconfdir} \
+                --with-path=${STAGING_BINDIR_NATIVE} \
+                --with-fifodir=${localstatedir}/run \
+                --with-flagdir=${localstatedir}/run \
+"
+CACHED_CONFIGUREVARS = "ac_cv_path_RANLIB=${RANLIB} \
+                        ac_cv_path_RPCGEN=rpcgen \
+                        initdir=${INIT_D_DIR} \
+                        piddir=/run \
+"
+
+do_configure:prepend () {
+    if [ ! -e ${S}/acinclude.m4 ]; then
+        cp ${S}/aclocal.m4 ${S}/acinclude.m4
+    fi
+    cp ${STAGING_DATADIR_NATIVE}/aclocal/pkg.m4 .
+}
+
+do_install:append () {
+    # samples have been removed from SUBDIRS from 5.1.5, need to install separately
+    oe_runmake 'DESTDIR=${D}' install_samples
+
+    if [ -d ${D}/run ]; then
+        rmdir ${D}/run
+    fi
+    if [ -d ${D}${localstatedir}/run ]; then
+        rmdir ${D}${localstatedir}/run
+    fi
+    # On hybrid systemd/sysvinit builds, we need to install the sysvinit script by hand.
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d -m 755 ${D}${INIT_D_DIR}
+        install -m 755 ${S}/samples/rc.autofs ${D}${INIT_D_DIR}/autofs
+    fi
+}
+SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
+
+# all the libraries are unversioned, so don't pack it on PN-dev
+SOLIBS = ".so"
+FILES_SOLIBSDEV = ""
+# Some symlinks are created in plugins dir e.g.
+# mount_nfs4.so -> mount_nfs.so
+INSANE_SKIP:${PN} = "dev-so"
+
+RPROVIDES:${PN} += "${PN}-systemd"
+RREPLACES:${PN} += "${PN}-systemd"
+RCONFLICTS:${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE:${PN} = "autofs.service"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.06.bb b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.06.bb
deleted file mode 100644
index caa85e0..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.06.bb
+++ /dev/null
@@ -1,78 +0,0 @@
-SUMMARY = "OpenSAF is an open source implementation of the SAF AIS specification"
-DESCRIPTION = "OpenSAF is an open source project established to develop a base platform \
-middleware consistent with Service Availability Forum (SA Forum) \
-specifications, under the LGPLv2.1 license. The OpenSAF Foundation was \
-established by leading Communications and Enterprise Computing Companies to \
-facilitate the OpenSAF Project and to accelerate the adoption of the OpenSAF \
-code base in commercial products. \
-The OpenSAF project was launched in mid 2007 and has been under development by \
-an informal group of supporters of the OpenSAF initiative. The OpenSAF \
-Foundation was founded on January 22nd 2008 with Emerson Network Power, \
-Ericsson, Nokia Siemens Networks, HP and Sun Microsystems as founding members."
-HOMEPAGE = "http://www.opensaf.org"
-SECTION = "admin"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7"
-
-DEPENDS = "libxml2 python3"
-TOOLCHAIN = "gcc"
-
-SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/releases/${BPN}-${PV}.tar.gz \
-           file://0001-configure-Pass-linker-specific-options-with-Wl.patch \
-           file://0001-configure-Disable-format-overflow-if-supported-by-gc.patch \
-           file://0001-src-Add-missing-header-limits.h-for-_POSIX_HOST_NAME.patch \
-           file://0001-immpbe_dump.cc-Use-sys-wait.h-instead-of-wait.h.patch \
-           file://0001-create_empty_library-Use-CC-variable-intead-of-hardc.patch \
-           file://0001-immom_python-convert-to-python3.patch \
-           file://0001-Fix-build-with-fno-common.patch \
-           file://0001-Use-correct-printf-format-for-__fsblkcnt_t.patch \
-           "
-SRC_URI[md5sum] = "a60775787ba520a0b1031fcd42e0d65b"
-SRC_URI[sha256sum] = "d29d124506e4b084285d27c8742c7bca66de80be6a0ba9de8e37835ccaa8ee57"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/opensaf/files/releases"
-
-inherit autotools useradd systemd pkgconfig
-
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM:${PN} = "-f -r opensaf"
-USERADD_PARAM:${PN} =  "-r -g opensaf -d ${datadir}/opensaf/ -s ${sbindir}/nologin -c \"OpenSAF\" opensaf"
-
-SYSTEMD_SERVICE:${PN} += "opensafd.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-PACKAGECONFIG[systemd] = ",,systemd"
-PACKAGECONFIG[openhpi] = "--with-hpi-interface=B03,,openhpi"
-PACKAGECONFIG[plm] = "--enable-ais-plm,--disable-ais-plm,libvirt openhpi"
-
-PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' systemd', '', d)}"
-
-CPPFLAGS += "-Wno-error=stringop-overflow= -Wno-error=stringop-truncation"
-CXXFLAGS += "-Wno-error=stringop-overflow= -Wno-error=stringop-truncation -Wno-error=format-truncation="
-LDFLAGS += "-Wl,--as-needed -latomic -Wl,--no-as-needed"
-
-do_install:append() {
-    rm -fr "${D}${localstatedir}/lock"
-    rm -fr "${D}${localstatedir}/run"
-    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}"
-    rmdir --ignore-fail-on-non-empty "${D}${datadir}/java"
-    if [ ! -d "${D}${sysconfdir}/init.d" ]; then
-        install -d ${D}${sysconfdir}/init.d
-        install -m 0755 ${B}/osaf/services/infrastructure/nid/scripts/opensafd ${D}${sysconfdir}/init.d/
-    fi
-}
-
-FILES:${PN} += "${libdir}/libSa*.so ${systemd_unitdir}/system/*.service"
-FILES:${PN}-dev += "${libdir}/libopensaf_core.so"
-FILES:${PN}-staticdev += "${PKGLIBDIR}/*.a"
-
-INSANE_SKIP:${PN} = "dev-so"
-
-RDEPENDS:${PN} += "bash python3-core"
-
-# http://errors.yoctoproject.org/Errors/Details/186970/
-COMPATIBLE_HOST:libc-musl = 'null'
-
-FILES_SOLIBSDEV = ""
diff --git a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.09.bb b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.09.bb
new file mode 100644
index 0000000..6c8a481
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.09.bb
@@ -0,0 +1,77 @@
+SUMMARY = "OpenSAF is an open source implementation of the SAF AIS specification"
+DESCRIPTION = "OpenSAF is an open source project established to develop a base platform \
+middleware consistent with Service Availability Forum (SA Forum) \
+specifications, under the LGPLv2.1 license. The OpenSAF Foundation was \
+established by leading Communications and Enterprise Computing Companies to \
+facilitate the OpenSAF Project and to accelerate the adoption of the OpenSAF \
+code base in commercial products. \
+The OpenSAF project was launched in mid 2007 and has been under development by \
+an informal group of supporters of the OpenSAF initiative. The OpenSAF \
+Foundation was founded on January 22nd 2008 with Emerson Network Power, \
+Ericsson, Nokia Siemens Networks, HP and Sun Microsystems as founding members."
+HOMEPAGE = "http://www.opensaf.org"
+SECTION = "admin"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7"
+
+DEPENDS = "libxml2 python3"
+TOOLCHAIN = "gcc"
+
+SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/releases/${BPN}-${PV}.tar.gz \
+           file://0001-configure-Pass-linker-specific-options-with-Wl.patch \
+           file://0001-configure-Disable-format-overflow-if-supported-by-gc.patch \
+           file://0001-src-Add-missing-header-limits.h-for-_POSIX_HOST_NAME.patch \
+           file://0001-immpbe_dump.cc-Use-sys-wait.h-instead-of-wait.h.patch \
+           file://0001-create_empty_library-Use-CC-variable-intead-of-hardc.patch \
+           file://0001-immom_python-convert-to-python3.patch \
+           file://0001-Fix-build-with-fno-common.patch \
+           file://0001-Use-correct-printf-format-for-__fsblkcnt_t.patch \
+           "
+SRC_URI[sha256sum] = "227ae1dafb6d51ce6561c9fcaec60087a0183839a8a4da11517e09f2a662b53d"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/opensaf/files/releases"
+
+inherit autotools useradd systemd pkgconfig
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM:${PN} = "-f -r opensaf"
+USERADD_PARAM:${PN} =  "-r -g opensaf -d ${datadir}/opensaf/ -s ${sbindir}/nologin -c \"OpenSAF\" opensaf"
+
+SYSTEMD_SERVICE:${PN} += "opensafd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+PACKAGECONFIG[systemd] = ",,systemd"
+PACKAGECONFIG[openhpi] = "--with-hpi-interface=B03,,openhpi"
+PACKAGECONFIG[plm] = "--enable-ais-plm,--disable-ais-plm,libvirt openhpi"
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' systemd', '', d)}"
+
+CPPFLAGS += "-Wno-error=stringop-overflow= -Wno-error=stringop-truncation"
+CXXFLAGS += "-Wno-error=stringop-overflow= -Wno-error=stringop-truncation -Wno-error=format-truncation="
+LDFLAGS += "-Wl,--as-needed -latomic -Wl,--no-as-needed"
+
+do_install:append() {
+    rm -fr "${D}${localstatedir}/lock"
+    rm -fr "${D}${localstatedir}/run"
+    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}"
+    rmdir --ignore-fail-on-non-empty "${D}${datadir}/java"
+    if [ ! -d "${D}${sysconfdir}/init.d" ]; then
+        install -d ${D}${sysconfdir}/init.d
+        install -m 0755 ${B}/osaf/services/infrastructure/nid/scripts/opensafd ${D}${sysconfdir}/init.d/
+    fi
+}
+
+FILES:${PN} += "${libdir}/libSa*.so ${systemd_unitdir}/system/*.service"
+FILES:${PN}-dev += "${libdir}/libopensaf_core.so"
+FILES:${PN}-staticdev += "${PKGLIBDIR}/*.a"
+
+INSANE_SKIP:${PN} = "dev-so"
+
+RDEPENDS:${PN} += "bash python3-core"
+
+# http://errors.yoctoproject.org/Errors/Details/186970/
+COMPATIBLE_HOST:libc-musl = 'null'
+
+FILES_SOLIBSDEV = ""
diff --git a/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet/0001-libknet-tests-Correct-include-path-for-poll.h.patch b/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet/0001-libknet-tests-Correct-include-path-for-poll.h.patch
new file mode 100644
index 0000000..0d261fd
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet/0001-libknet-tests-Correct-include-path-for-poll.h.patch
@@ -0,0 +1,29 @@
+From cae68083fda5d4ca832ff3cc8a533454df2efe23 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 12 Oct 2021 20:35:53 -0700
+Subject: [PATCH] libknet/tests: Correct include path for poll.h
+
+Fixes
+/usr/include/sys/poll.h:1:2: error: redirec
+ting incorrect #include <sys/poll.h> to <poll.h> [-Werror,-W#warnings]
+| #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
+
+Upstream-Status: Submitted [https://github.com/kronosnet/kronosnet/pull/363]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libknet/tests/test-common.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libknet/tests/test-common.c b/libknet/tests/test-common.c
+index 86b76b0..8f8b6ca 100644
+--- a/libknet/tests/test-common.c
++++ b/libknet/tests/test-common.c
+@@ -20,7 +20,7 @@
+ #include <pthread.h>
+ #include <dirent.h>
+ #include <sys/select.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ 
+ #include "libknet.h"
+ #include "test-common.h"
diff --git a/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet_1.20.bb b/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet_1.20.bb
deleted file mode 100644
index b19482c..0000000
--- a/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet_1.20.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2020 Khem Raj <raj.khem@gmail.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-SUMMARY = "Kronosnet, often referred to as knet, is a network abstraction layer \
-           designed for High Availability use cases, where redundancy, security, \
-           fault tolerance and fast fail-over are the core requirements of your application."
-HOMEPAGE = "https://kronosnet.org/"
-LICENSE = "GPL-2.0+ & LGPL-2.1"
-LIC_FILES_CHKSUM = "file://COPYING.applications;md5=751419260aa954499f7abaabaa882bbe \
-                    file://COPYING.libraries;md5=2d5025d4aa3495befef8f17206a5b0a1"
-SECTION = "libs"
-DEPENDS = "doxygen-native libqb-native libxml2-native bzip2 libqb libxml2 libnl lksctp-tools lz4 lzo openssl nss xz zlib zstd"
-
-SRCREV = "b8d18c8360fd39cb04748e8bc1ee26de4afa4cbd"
-SRC_URI = "git://github.com/kronosnet/kronosnet;protocol=https;branch=stable1"
-
-UPSTREAM_CHECK_URI = "https://github.com/kronosnet/kronosnet/releases"
-
-inherit autotools pkgconfig
-
-S = "${WORKDIR}/git"
-
-# libknet/transport_udp.c:326:48: error: comparison of integers of different signs: 'unsigned long' and 'int' [-Werror,-Wsign-compare]
-# for (cmsg = CMSG_FIRSTHDR(&msg);cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
-#                                                             ^~~~~~~~~~~~~~~~~~~~~~~
-CFLAGS:append:toolchain-clang = " -Wno-sign-compare"
-
-PACKAGECONFIG[man] = "enable_man="yes", --disable-man, "
-
-PACKAGECONFIG:remove = "man"
diff --git a/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet_1.22.bb b/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet_1.22.bb
new file mode 100644
index 0000000..28d740c
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet_1.22.bb
@@ -0,0 +1,32 @@
+# Copyright (C) 2020 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Kronosnet, often referred to as knet, is a network abstraction layer \
+           designed for High Availability use cases, where redundancy, security, \
+           fault tolerance and fast fail-over are the core requirements of your application."
+HOMEPAGE = "https://kronosnet.org/"
+LICENSE = "GPL-2.0+ & LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING.applications;md5=751419260aa954499f7abaabaa882bbe \
+                    file://COPYING.libraries;md5=2d5025d4aa3495befef8f17206a5b0a1"
+SECTION = "libs"
+DEPENDS = "doxygen-native libqb-native libxml2-native bzip2 libqb libxml2 libnl lksctp-tools lz4 lzo openssl nss xz zlib zstd"
+
+SRCREV = "0123ecebce0ad6aba3cdb320027192e15fd71e23"
+SRC_URI = "git://github.com/kronosnet/kronosnet;protocol=https;branch=stable1 \
+           file://0001-libknet-tests-Correct-include-path-for-poll.h.patch \
+           "
+
+UPSTREAM_CHECK_URI = "https://github.com/kronosnet/kronosnet/releases"
+
+inherit autotools pkgconfig
+
+S = "${WORKDIR}/git"
+
+# libknet/transport_udp.c:326:48: error: comparison of integers of different signs: 'unsigned long' and 'int' [-Werror,-Wsign-compare]
+# for (cmsg = CMSG_FIRSTHDR(&msg);cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
+#                                                             ^~~~~~~~~~~~~~~~~~~~~~~
+CFLAGS:append:toolchain-clang = " -Wno-sign-compare"
+
+PACKAGECONFIG[man] = "enable_man="yes", --disable-man, "
+
+PACKAGECONFIG:remove = "man"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc b/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc
index 1640911..94d9553 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc
+++ b/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc
@@ -15,7 +15,7 @@
 
 DEPENDS = "virtual/libc"
 
-PACKAGECONFIG ??= "openssl"
+PACKAGECONFIG ??= ""
 PACKAGECONFIG[openssl] = "--enable-ssl,--disable-ssl, openssl openssl-native, libssl"
 
 EXTRA_OECONF += " \
diff --git a/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_2.12.bb b/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_2.12.bb
deleted file mode 100644
index 0254823..0000000
--- a/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_2.12.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Configure network interfaces for parallel routing"
-HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding"
-SECTION = "net"
-
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=acc89812938cf9ad6b1debc37cea0253"
-
-inherit manpages
-MAN_PKG = "${PN}"
-
-SRCREV = "88410a7003c31993e79471e151b24662fc2a0d64"
-SRC_URI = "git://salsa.debian.org/debian/ifenslave.git;protocol=https"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-    install -m 0755 -D ${S}/debian/ifenslave.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/ifenslave
-    install -m 0755 -D ${S}/debian/ifenslave.if-post-down ${D}${sysconfdir}/network/if-post-down.d/ifenslave
-    install -m 0755 -D ${S}/debian/ifenslave.if-up ${D}${sysconfdir}/network/if-up.d/ifenslave
-}
-
-FILES:${PN}-doc:remove = "${mandir}"
diff --git a/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_2.13.bb b/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_2.13.bb
new file mode 100644
index 0000000..a2eb81f
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_2.13.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Configure network interfaces for parallel routing"
+HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding"
+SECTION = "net"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=acc89812938cf9ad6b1debc37cea0253"
+
+inherit manpages
+MAN_PKG = "${PN}"
+
+SRCREV = "1bdfb472f2f8212056ed418d48387e8b36e61b34"
+SRC_URI = "git://salsa.debian.org/debian/ifenslave.git;protocol=https;branch=main"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+    install -m 0755 -D ${S}/debian/ifenslave.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/ifenslave
+    install -m 0755 -D ${S}/debian/ifenslave.if-post-down ${D}${sysconfdir}/network/if-post-down.d/ifenslave
+    install -m 0755 -D ${S}/debian/ifenslave.if-up ${D}${sysconfdir}/network/if-up.d/ifenslave
+}
+
+FILES:${PN}-doc:remove = "${mandir}"
diff --git a/meta-openembedded/meta-networking/recipes-support/mctp/mctp_git.bb b/meta-openembedded/meta-networking/recipes-support/mctp/mctp_git.bb
new file mode 100644
index 0000000..cab5d6c
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/mctp/mctp_git.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Management Component Control Protocol utilities"
+HOMEPAGE = "http://www.github.com/CodeConstruct/mctp"
+SECTION = "net"
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4cc91856b08b094b4f406a29dc61db21"
+
+SRCREV = "a8658290b7914f67146a982671b09f2270ba1654"
+
+SRC_URI = "git://github.com/CodeConstruct/mctp;branch=main"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig systemd
+
+PACKAGECONFIG ??= " \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+"
+
+# mctpd will only be built if pkg-config detects libsystemd; in which case
+# we'll want to declare the dep and install the service.
+PACKAGECONFIG[systemd] = ",,systemd,libsystemd"
+SYSTEMD_SERVICE:${PN} = "mctpd.service"
+
+do_install:append () {
+    if ${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_system_unitdir}
+        install -m 0644 ${S}/conf/mctpd.service \
+                ${D}${systemd_system_unitdir}/mctpd.service
+    fi
+}
diff --git a/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.45.1.bb b/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.45.1.bb
deleted file mode 100644
index e4a17cb..0000000
--- a/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.45.1.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "HTTP/2 C Library and tools"
-HOMEPAGE = "https://nghttp2.org/"
-SECTION = "libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=764abdf30b2eadd37ce47dcbce0ea1ec"
-DEPENDS = "c-ares cunit jansson libev libevent libxml2 openssl zlib"
-
-UPSTREAM_CHECK_URI = "https://github.com/nghttp2/nghttp2/releases"
-
-SRC_URI = "\
-    https://github.com/nghttp2/nghttp2/releases/download/v${PV}/nghttp2-${PV}.tar.xz \
-    file://0001-fetch-ocsp-response-use-python3.patch \
-"
-SRC_URI[sha256sum] = "abdc4addccadbc7d89abe27c4d6427d78e57d139f69c1f45749227393c68bf79"
-
-inherit cmake manpages python3native
-PACKAGECONFIG[manpages] = ""
-
-# examples are never installed, and don't need to be built in the
-# first place
-EXTRA_OECMAKE = "-DENABLE_EXAMPLES=OFF -DENABLE_APP=ON -DENABLE_HPACK_TOOLS=OFF"
-
-PACKAGES =+ "lib${PN} ${PN}-client ${PN}-proxy ${PN}-server"
-
-RDEPENDS:${PN} = "${PN}-client (>= ${PV}) ${PN}-proxy (>= ${PV}) ${PN}-server (>= ${PV})"
-RDEPENDS:${PN}:class-native = ""
-RDEPENDS:${PN}-proxy = "openssl python3-core python3-io python3-shell"
-
-ALLOW_EMPTY:${PN} = "1"
-FILES:${PN} = ""
-FILES:lib${PN} = "${libdir}/*${SOLIBS}"
-FILES:${PN}-client = "${bindir}/h2load ${bindir}/nghttp"
-FILES:${PN}-proxy = "${bindir}/nghttpx ${datadir}/${BPN}/fetch-ocsp-response"
-FILES:${PN}-server = "${bindir}/nghttpd"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-networking/recipes-support/openipmi/files/0001-m4-ax_python_devel.m4-do-not-check-for-distutils.patch b/meta-openembedded/meta-networking/recipes-support/openipmi/files/0001-m4-ax_python_devel.m4-do-not-check-for-distutils.patch
new file mode 100644
index 0000000..00956fb
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/openipmi/files/0001-m4-ax_python_devel.m4-do-not-check-for-distutils.patch
@@ -0,0 +1,41 @@
+From 3a35611687864cf3599712d0d2ff54532b0118ac Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Sun, 3 Oct 2021 21:42:32 +0200
+Subject: [PATCH] m4/ax_python_devel.m4: do not check for distutils
+
+With py 3.10 this prints a deprecation warning which is
+taken as an error. Upstream should rework the code to not
+use distuils.
+
+Upstream-Status: Inappropriate [needs a proper fix upstream]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ m4/ax_python_devel.m4 | 15 ---------------
+ 1 file changed, 15 deletions(-)
+
+diff --git a/m4/ax_python_devel.m4 b/m4/ax_python_devel.m4
+index e0804c5..cfc0b24 100644
+--- a/m4/ax_python_devel.m4
++++ b/m4/ax_python_devel.m4
+@@ -138,21 +138,6 @@ variable to configure. See ``configure --help'' for reference.
+ 		fi
+ 	fi
+ 
+-	#
+-	# Check if you have distutils, else fail
+-	#
+-	AC_MSG_CHECKING([for the distutils Python package])
+-	ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
+-	if test -z "$ac_distutils_result"; then
+-		AC_MSG_RESULT([yes])
+-	else
+-		AC_MSG_RESULT([no])
+-		AC_MSG_ERROR([cannot import Python module "distutils".
+-Please check your Python installation. The error was:
+-$ac_distutils_result])
+-		PYTHON_VERSION=""
+-	fi
+-
+ 	#
+ 	# Check for Python include path
+ 	#
diff --git a/meta-openembedded/meta-networking/recipes-support/openipmi/openipmi_2.0.31.bb b/meta-openembedded/meta-networking/recipes-support/openipmi/openipmi_2.0.31.bb
index ecc98dd..4b85d94 100644
--- a/meta-openembedded/meta-networking/recipes-support/openipmi/openipmi_2.0.31.bb
+++ b/meta-openembedded/meta-networking/recipes-support/openipmi/openipmi_2.0.31.bb
@@ -31,6 +31,7 @@
            file://include_sys_types.patch \
            file://openipmi-helper \
            file://ipmi.service \
+           file://0001-m4-ax_python_devel.m4-do-not-check-for-distutils.patch \
            "
 
 S = "${WORKDIR}/OpenIPMI-${PV}"
diff --git a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.3.bb b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.3.bb
deleted file mode 100644
index a70e970..0000000
--- a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.3.bb
+++ /dev/null
@@ -1,76 +0,0 @@
-SUMMARY = "A full-featured SSL VPN solution via tun device."
-HOMEPAGE = "https://openvpn.net/"
-SECTION = "net"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=377a495e6f12b2a3adcee797e59540b8"
-DEPENDS = "lzo openssl iproute2 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-
-inherit autotools systemd update-rc.d
-
-SRC_URI = "http://swupdate.openvpn.org/community/releases/${BP}.tar.gz \
-           file://openvpn \
-           file://openvpn@.service \
-           file://openvpn-volatile.conf"
-
-UPSTREAM_CHECK_URI = "https://openvpn.net/community-downloads"
-
-SRC_URI[md5sum] = "08895fd1142f25fdd94a98315632e1bf"
-SRC_URI[sha256sum] = "75f0044df449430555ca7b995a2b77ab24f2946fdc3668301b8edc23986a5f7e"
-
-# CVE-2020-7224 and CVE-2020-27569 are for Aviatrix OpenVPN client, not for openvpn.
-CVE_CHECK_WHITELIST += "CVE-2020-7224 CVE-2020-27569"
-
-SYSTEMD_SERVICE:${PN} += "openvpn@loopback-server.service openvpn@loopback-client.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-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"
-
-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/sample
-    install -m 755 ${S}/sample/sample-config-files/loopback-server  ${D}${sysconfdir}/openvpn/sample/loopback-server.conf
-    install -m 755 ${S}/sample/sample-config-files/loopback-client  ${D}${sysconfdir}/openvpn/sample/loopback-client.conf
-    install -dm 755 ${D}${sysconfdir}/openvpn/sample/sample-keys
-    install -m 644 ${S}/sample/sample-keys/* ${D}${sysconfdir}/openvpn/sample/sample-keys
-
-    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-        install -d ${D}/${systemd_unitdir}/system
-        install -m 644 ${WORKDIR}/openvpn@.service ${D}/${systemd_unitdir}/system
-        install -m 644 ${WORKDIR}/openvpn@.service ${D}/${systemd_unitdir}/system/openvpn@loopback-server.service
-        install -m 644 ${WORKDIR}/openvpn@.service ${D}/${systemd_unitdir}/system/openvpn@loopback-client.service
-
-        install -d ${D}/${localstatedir}
-        install -d ${D}/${localstatedir}/lib
-        install -d -m 710 ${D}/${localstatedir}/lib/openvpn
-
-        install -d ${D}${sysconfdir}/tmpfiles.d
-        install -m 0644 ${WORKDIR}/openvpn-volatile.conf ${D}${sysconfdir}/tmpfiles.d/openvpn.conf
-        sed -i -e 's#@LOCALSTATEDIR@#${localstatedir}#g' ${D}${sysconfdir}/tmpfiles.d/openvpn.conf
-    fi
-}
-
-PACKAGES =+ " ${PN}-sample "
-
-RRECOMMENDS:${PN} = "kernel-module-tun"
-
-FILES:${PN}-dbg += "${libdir}/openvpn/plugins/.debug"
-FILES:${PN} += "${systemd_unitdir}/system/openvpn@.service \
-                ${sysconfdir}/tmpfiles.d \
-               "
-FILES:${PN}-sample += "${systemd_unitdir}/system/openvpn@loopback-server.service \
-                       ${systemd_unitdir}/system/openvpn@loopback-client.service \
-                       ${sysconfdir}/openvpn/sample/"
diff --git a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.4.bb b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.4.bb
new file mode 100644
index 0000000..6b588a5
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.4.bb
@@ -0,0 +1,75 @@
+SUMMARY = "A full-featured SSL VPN solution via tun device."
+HOMEPAGE = "https://openvpn.net/"
+SECTION = "net"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=377a495e6f12b2a3adcee797e59540b8"
+DEPENDS = "lzo openssl iproute2 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+inherit autotools systemd update-rc.d
+
+SRC_URI = "http://swupdate.openvpn.org/community/releases/${BP}.tar.gz \
+           file://openvpn \
+           file://openvpn@.service \
+           file://openvpn-volatile.conf"
+
+UPSTREAM_CHECK_URI = "https://openvpn.net/community-downloads"
+
+SRC_URI[sha256sum] = "f80f3c3df1b94a8892ae547df84f152583250684a24bd022ccc98ef56fa93d97"
+
+# CVE-2020-7224 and CVE-2020-27569 are for Aviatrix OpenVPN client, not for openvpn.
+CVE_CHECK_WHITELIST += "CVE-2020-7224 CVE-2020-27569"
+
+SYSTEMD_SERVICE:${PN} += "openvpn@loopback-server.service openvpn@loopback-client.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+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"
+
+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/sample
+    install -m 755 ${S}/sample/sample-config-files/loopback-server  ${D}${sysconfdir}/openvpn/sample/loopback-server.conf
+    install -m 755 ${S}/sample/sample-config-files/loopback-client  ${D}${sysconfdir}/openvpn/sample/loopback-client.conf
+    install -dm 755 ${D}${sysconfdir}/openvpn/sample/sample-keys
+    install -m 644 ${S}/sample/sample-keys/* ${D}${sysconfdir}/openvpn/sample/sample-keys
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}/${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/openvpn@.service ${D}/${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/openvpn@.service ${D}/${systemd_unitdir}/system/openvpn@loopback-server.service
+        install -m 644 ${WORKDIR}/openvpn@.service ${D}/${systemd_unitdir}/system/openvpn@loopback-client.service
+
+        install -d ${D}/${localstatedir}
+        install -d ${D}/${localstatedir}/lib
+        install -d -m 710 ${D}/${localstatedir}/lib/openvpn
+
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        install -m 0644 ${WORKDIR}/openvpn-volatile.conf ${D}${sysconfdir}/tmpfiles.d/openvpn.conf
+        sed -i -e 's#@LOCALSTATEDIR@#${localstatedir}#g' ${D}${sysconfdir}/tmpfiles.d/openvpn.conf
+    fi
+}
+
+PACKAGES =+ " ${PN}-sample "
+
+RRECOMMENDS:${PN} = "kernel-module-tun"
+
+FILES:${PN}-dbg += "${libdir}/openvpn/plugins/.debug"
+FILES:${PN} += "${systemd_unitdir}/system/openvpn@.service \
+                ${sysconfdir}/tmpfiles.d \
+               "
+FILES:${PN}-sample += "${systemd_unitdir}/system/openvpn@loopback-server.service \
+                       ${systemd_unitdir}/system/openvpn@loopback-client.service \
+                       ${sysconfdir}/openvpn/sample/"
diff --git a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.3.bb b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.3.bb
deleted file mode 100644
index ad104e4..0000000
--- a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.3.bb
+++ /dev/null
@@ -1,143 +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 = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "gmp openssl flex-native flex bison-native"
-
-SRC_URI = "http://download.strongswan.org/strongswan-${PV}.tar.bz2 \
-           file://fix-funtion-parameter.patch \
-           file://0001-memory.h-Include-stdint.h-for-uintptr_t.patch \
-           "
-
-SRC_URI[sha256sum] = "9325ab56a0a4e97e379401e1d942ce3e0d8b6372291350ab2caae0755862c6f7"
-
-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 \
-        ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-charon', 'charon', 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[openssl] = "--enable-openssl,--disable-openssl,openssl,${PN}-plugin-openssl"
-PACKAGECONFIG[scep] = "--enable-scepclient,--disable-scepclient,"
-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"
-
-# requires swanctl
-PACKAGECONFIG[systemd-charon] = "--enable-systemd,--disable-systemd,systemd,"
-
-inherit autotools systemd pkgconfig
-
-RRECOMMENDS:${PN} = "kernel-module-ipsec"
-
-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"
-
-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, 'libstrongswan-(.*)\.so', '${PN}-plugin-%s', 'strongSwan %s plugin', prepend=True)
-    do_split_packages(d, sysconfdir, '(.*)\.conf', '${PN}-plugin-%s', 'strongSwan %s plugin', prepend=True, hook=add_plugin_conf)
-
-    split_dbg_packages = do_split_packages(d, dbglibdir, '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, '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, '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-hmac \
-    ${PN}-plugin-kernel-netlink \
-    ${PN}-plugin-md5 \
-    ${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 \
-    ${PN}-plugin-curve25519 \
-    "
-
-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.4.bb b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.4.bb
new file mode 100644
index 0000000..cbc263d
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.4.bb
@@ -0,0 +1,143 @@
+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 = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "gmp openssl flex-native flex bison-native"
+
+SRC_URI = "http://download.strongswan.org/strongswan-${PV}.tar.bz2 \
+           file://fix-funtion-parameter.patch \
+           file://0001-memory.h-Include-stdint.h-for-uintptr_t.patch \
+           "
+
+SRC_URI[sha256sum] = "45fdf1a4c2af086d8ff5b76fd7b21d3b6f0890f365f83bf4c9a75dda26887518"
+
+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 \
+        ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-charon', 'charon', 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[openssl] = "--enable-openssl,--disable-openssl,openssl,${PN}-plugin-openssl"
+PACKAGECONFIG[scep] = "--enable-scepclient,--disable-scepclient,"
+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"
+
+# requires swanctl
+PACKAGECONFIG[systemd-charon] = "--enable-systemd,--disable-systemd,systemd,"
+
+inherit autotools systemd pkgconfig
+
+RRECOMMENDS:${PN} = "kernel-module-ipsec"
+
+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"
+
+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, 'libstrongswan-(.*)\.so', '${PN}-plugin-%s', 'strongSwan %s plugin', prepend=True)
+    do_split_packages(d, sysconfdir, '(.*)\.conf', '${PN}-plugin-%s', 'strongSwan %s plugin', prepend=True, hook=add_plugin_conf)
+
+    split_dbg_packages = do_split_packages(d, dbglibdir, '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, '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, '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-hmac \
+    ${PN}-plugin-kernel-netlink \
+    ${PN}-plugin-md5 \
+    ${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 \
+    ${PN}-plugin-curve25519 \
+    "
+
+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-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_2.5.2.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_2.5.2.bb
deleted file mode 100644
index 3c89c37..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_2.5.2.bb
+++ /dev/null
@@ -1,68 +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[md5sum] = "469c8b5cd1c16c20ef40f0a97a3a0fda"
-SRC_URI[sha256sum] = "b328f4e315c3541ac80a4931974a34a81afe4d1f382f48e8604669a55816c0d7"
-
-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
-}
\ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_2.8.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_2.8.bb
new file mode 100644
index 0000000..6ff98ab
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_2.8.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] = "35a8aa0268e61b15d689439927756934a28757dc77ad5f03ee6a9119edc37199"
+
+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-extended/mozjs/mozjs/0001-Cargo.toml-do-not-abort-on-panic.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-Cargo.toml-do-not-abort-on-panic.patch
new file mode 100644
index 0000000..e09848f
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-Cargo.toml-do-not-abort-on-panic.patch
@@ -0,0 +1,29 @@
+From 9e37248870b2b955293754933c789ca00bca06ef Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 1 Oct 2021 13:00:24 +0200
+Subject: [PATCH] Cargo.toml: do not abort on panic
+
+OE's rust is configured to unwind, and this setting clashes with it/
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ Cargo.toml | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -51,13 +51,11 @@ opt-level = 1
+ rpath = false
+ lto = false
+ debug-assertions = true
+-panic = "abort"
+ 
+ [profile.release]
+ opt-level = 2
+ rpath = false
+ debug-assertions = false
+-panic = "abort"
+ 
+ # Optimize build dependencies, because bindgen and proc macros / style
+ # compilation take more to run than to build otherwise.
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-Port-build-to-python3.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-Port-build-to-python3.patch
deleted file mode 100644
index 5cdad93..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-Port-build-to-python3.patch
+++ /dev/null
@@ -1,6897 +0,0 @@
-From 33a373ba41d978af60c2f0230bcba6ad27357ec8 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Wed, 29 Jan 2020 16:25:11 +0100
-Subject: [PATCH] Port build to python3
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-* first tool of choice was 2to3
-* some parts were taken from [1] but during work it was found that this patch
-  introduces interesting effects - see hash functions. Working more on this
-  makes me guess that one has never worked...
-* Few parts were taken from upstream mirror [2]. Since they use six for porting
-  to python3 it adds us a new dependency.
-* To get a better overview what is going on or failing some additional messages
-  were added. The most verbose one is left disabled - see
-  python/mozbuild/mozbuild/configure/__init__.py / Line 310 onwards
-* major changes upstream on build are not to expect so upgrading should cause
-  little trouble and changes can be tracked by [3]
-* some solutions are workarounds/hacks so this patch will not be accepted
-  upstream. This should not be a problem for us: once mozjs >= 68 will arrive
-  we have to go to rust/cargo based build anyway.
-
-[1] https://code.foxkit.us/adelie/packages/blob/f2b5773da19ab397fbe64fd32dacc383cfe4cd77/user/mozjs/python3.patch
-[2] https://github.com/mozilla/gecko-dev
-[3] https://github.com/mozilla/gecko-dev/tree/esr60
-
-Upstream-Status: Inappropriate [Some Hacks]
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- build/autoconf/config.status.m4               |   2 +-
- build/moz.configure/android-ndk.configure     |   4 +-
- build/moz.configure/checks.configure          |   4 +-
- build/moz.configure/init.configure            |  31 +-
- build/moz.configure/keyfiles.configure        |   4 +-
- build/moz.configure/old.configure             |  32 +-
- build/moz.configure/toolchain.configure       |  18 +-
- build/moz.configure/util.configure            |   9 +-
- build/moz.configure/windows.configure         |  10 +-
- build/templates.mozbuild                      |   2 +-
- config/MozZipFile.py                          |  12 +-
- config/expandlibs.py                          |   6 +-
- config/expandlibs_exec.py                     |  14 +-
- config/expandlibs_gen.py                      |   4 +-
- configure.py                                  |  42 +-
- js/src/build/moz.build                        |   8 +-
- js/src/builtin/embedjs.py                     |  10 +-
- js/src/configure                              |   2 +-
- js/src/frontend/GenerateReservedWords.py      |   6 +-
- js/src/gc/GenerateStatsPhases.py              |   4 +-
- js/src/old-configure.in                       |   2 +
- memory/build/moz.build                        |   8 +-
- mozglue/build/moz.build                       |  22 +-
- .../mozbuild/mozbuild/action/check_binary.py  |   2 +
- .../mozbuild/action/process_define_files.py   |   4 +-
- python/mozbuild/mozbuild/backend/base.py      |   8 +-
- python/mozbuild/mozbuild/backend/common.py    |   8 +-
- .../mozbuild/backend/configenvironment.py     |  14 +-
- .../mozbuild/mozbuild/backend/fastermake.py   |  10 +-
- .../mozbuild/backend/recursivemake.py         | 181 +++----
- python/mozbuild/mozbuild/config_status.py     |   7 +-
- .../mozbuild/mozbuild/configure/__init__.py   |  83 +++-
- .../mozbuild/configure/check_debug_ranges.py  |   6 +-
- python/mozbuild/mozbuild/configure/options.py |  24 +-
- python/mozbuild/mozbuild/configure/util.py    |  12 +-
- .../mozbuild/mozbuild/controller/building.py  |  16 +-
- python/mozbuild/mozbuild/frontend/context.py  |  89 ++--
- python/mozbuild/mozbuild/frontend/data.py     |   8 +-
- python/mozbuild/mozbuild/frontend/emitter.py  |  50 +-
- python/mozbuild/mozbuild/frontend/reader.py   |  49 +-
- python/mozbuild/mozbuild/frontend/sandbox.py  |   3 +-
- python/mozbuild/mozbuild/jar.py               |  12 +-
- python/mozbuild/mozbuild/makeutil.py          |  24 +-
- python/mozbuild/mozbuild/mozinfo.py           |   8 +-
- python/mozbuild/mozbuild/preprocessor.py      |  27 +-
- python/mozbuild/mozbuild/shellutil.py         |   6 +-
- .../test/backend/test_recursivemake.py        |  18 +-
- .../mozbuild/test/configure/common.py         |   8 +-
- .../mozbuild/mozbuild/test/configure/lint.py  |   8 +-
- .../test/configure/test_checks_configure.py   |   8 +-
- .../test/configure/test_compile_checks.py     |   4 +-
- .../mozbuild/test/configure/test_configure.py | 244 +++++-----
- .../mozbuild/test/configure/test_lint.py      |  24 +-
- .../test/configure/test_moz_configure.py      |  32 +-
- .../mozbuild/test/configure/test_options.py   | 450 +++++++++---------
- .../configure/test_toolchain_configure.py     |  22 +-
- .../test/configure/test_toolchain_helpers.py  |  62 +--
- .../configure/test_toolkit_moz_configure.py   |   2 +-
- .../mozbuild/test/configure/test_util.py      |   8 +-
- python/mozbuild/mozbuild/testing.py           |  10 +-
- python/mozbuild/mozbuild/util.py              |  79 ++-
- python/mozbuild/mozbuild/virtualenv.py        |   6 +-
- python/mozbuild/mozpack/chrome/manifest.py    |   6 +-
- python/mozbuild/mozpack/copier.py             |  12 +-
- python/mozbuild/mozpack/files.py              |  22 +-
- python/mozbuild/mozpack/manifests.py          |  16 +-
- python/mozbuild/mozpack/mozjar.py             |  37 +-
- .../manifestparser/manifestparser/ini.py      |  13 +-
- .../manifestparser/manifestparser.py          |  24 +-
- testing/mozbase/mozinfo/mozinfo/mozinfo.py    |  26 +-
- .../mozprocess/mozprocess/processhandler.py   |  10 +-
- third_party/python/which/which.py             |  18 +-
- 72 files changed, 1081 insertions(+), 993 deletions(-)
-
-diff --git a/build/autoconf/config.status.m4 b/build/autoconf/config.status.m4
-index c75575386..543c2d682 100644
---- a/build/autoconf/config.status.m4
-+++ b/build/autoconf/config.status.m4
-@@ -122,7 +122,7 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
- 
- dnl We're going to need [ ] for python syntax.
- changequote(<<<, >>>)dnl
--echo creating $CONFIG_STATUS
-+echo creating $CONFIG_STATUS in `pwd`
- 
- cat > $CONFIG_STATUS <<EOF
- 
-diff --git a/build/moz.configure/android-ndk.configure b/build/moz.configure/android-ndk.configure
-index 1067b8619..3b592a237 100644
---- a/build/moz.configure/android-ndk.configure
-+++ b/build/moz.configure/android-ndk.configure
-@@ -30,7 +30,7 @@ js_option('--with-android-version',
- 
- 
- @depends('--with-android-version', min_android_version, '--help')
--@imports(_from='__builtin__', _import='ValueError')
-+@imports(_from='builtins', _import='ValueError')
- def android_version(value, min_version, _):
-     if not value:
-         # Someone has passed --without-android-version.
-@@ -68,7 +68,7 @@ add_old_configure_assignment('android_ndk', ndk)
- 
- @depends(ndk)
- @checking('for android ndk version')
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='open')
- def ndk_version(ndk):
-     if not ndk:
-         # Building 'js/src' for non-Android.
-diff --git a/build/moz.configure/checks.configure b/build/moz.configure/checks.configure
-index 516652da9..11e1091c6 100644
---- a/build/moz.configure/checks.configure
-+++ b/build/moz.configure/checks.configure
-@@ -14,7 +14,7 @@
- 
- 
- @template
--@imports(_from='__builtin__', _import='Exception')
-+@imports(_from='builtins', _import='Exception')
- def _declare_exceptions():
-     class FatalCheckError(Exception):
-         '''An exception to throw from a function decorated with @checking.
-@@ -57,7 +57,7 @@ def checking(what, callback=None):
-                 try:
-                     ret = func(*args, **kwargs)
-                 except FatalCheckError as e:
--                    error = e.message
-+                    error = str(e)
-                 display_ret = callback(ret) if callback else ret
-                 if display_ret is True:
-                     log.info('yes')
-diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
-index 648ac2ded..4d74547d8 100644
---- a/build/moz.configure/init.configure
-+++ b/build/moz.configure/init.configure
-@@ -14,7 +14,7 @@ option(env='DIST', nargs=1, help='DIST directory')
- 
- 
- @depends('--help', 'DIST')
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='open')
- @imports(_from='os.path', _import='exists')
- def check_build_environment(help, dist):
-     topobjdir = os.path.realpath(os.path.abspath('.'))
-@@ -65,7 +65,7 @@ def check_build_environment(help, dist):
-     # Check for CRLF line endings.
-     with open(os.path.join(topsrcdir, 'configure.py'), 'rb') as fh:
-         data = fh.read()
--        if '\r' in data:
-+        if b'\r' in data:
-             die('\n ***\n'
-                 ' * The source tree appears to have Windows-style line endings.\n'
-                 ' *\n'
-@@ -269,7 +269,7 @@ def early_options():
-     def early_options():
-         return set(
-             option.env
--            for option in __sandbox__._options.itervalues()
-+            for option in __sandbox__._options.values()
-             if option.env
-         )
-     return early_options
-@@ -307,15 +307,15 @@ def mozconfig_options(mozconfig, automation, help):
-                 log.info('  %s' % arg)
-                 helper.add(arg, origin='mozconfig', args=helper._args)
- 
--        for key, value in mozconfig['env']['added'].iteritems():
-+        for key, value in mozconfig['env']['added'].items():
-             add(key, value)
-             os.environ[key] = value
--        for key, (_, value) in mozconfig['env']['modified'].iteritems():
-+        for key, (_, value) in mozconfig['env']['modified'].items():
-             add(key, value)
-             os.environ[key] = value
--        for key, value in mozconfig['vars']['added'].iteritems():
-+        for key, value in mozconfig['vars']['added'].items():
-             add(key, value)
--        for key, (_, value) in mozconfig['vars']['modified'].iteritems():
-+        for key, (_, value) in mozconfig['vars']['modified'].items():
-             add(key, value)
- 
- 
-@@ -353,7 +353,7 @@ option(env='PYTHON3', nargs=1, help='Python 3 interpreter (3.5 or later)')
- @depends('PYTHON3')
- @checking('for Python 3',
-           callback=lambda x: '%s (%s)' % (x.path, x.str_version) if x else 'no')
--@imports(_from='__builtin__', _import='Exception')
-+@imports(_from='builtins', _import='Exception')
- @imports(_from='mozbuild.pythonutil', _import='find_python3_executable')
- @imports(_from='mozbuild.pythonutil', _import='python_executable_version')
- def python3(env_python):
-@@ -377,9 +377,6 @@ def python3(env_python):
-         if not python:
-             return None
- 
--        # The API returns a bytes whereas everything in configure is unicode.
--        python = python.decode('utf-8')
--
-     return namespace(
-         path=python,
-         version=version,
-@@ -481,6 +478,8 @@ def hg_config(build_env, hg, version):
- @imports('re')
- def git_version(git):
-     out = check_cmd_output(git, '--version').rstrip()
-+    if isinstance(out, bytes):
-+        out = out.decode('utf-8')
- 
-     match = re.search('git version (.*)$', out)
- 
-@@ -551,8 +550,8 @@ option('--target', nargs=1,
- @imports(_from='mozbuild.configure.constants', _import='Endianness')
- @imports(_from='mozbuild.configure.constants', _import='Kernel')
- @imports(_from='mozbuild.configure.constants', _import='OS')
--@imports(_from='__builtin__', _import='KeyError')
--@imports(_from='__builtin__', _import='ValueError')
-+@imports(_from='builtins', _import='KeyError')
-+@imports(_from='builtins', _import='ValueError')
- def split_triplet(triplet, allow_unknown=False):
-     # The standard triplet is defined as
-     #   CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-@@ -562,6 +561,8 @@ def split_triplet(triplet, allow_unknown=False):
-     # Additionally, some may omit "unknown" when the manufacturer
-     # is not specified and emit
-     #   CPU_TYPE-OPERATING_SYSTEM
-+    if isinstance(triplet, bytes):
-+        triplet = triplet.decode('utf-8')
-     parts = triplet.split('-', 2)
-     if len(parts) == 3:
-         cpu, _, os = parts
-@@ -987,7 +988,7 @@ add_old_configure_assignment('MOZ_BUILD_APP', build_project)
- # - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
- # - otherwise, we're building Release/Beta (define RELEASE_OR_BETA)
- @depends(check_build_environment, '--help')
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='open')
- @imports('re')
- def milestone(build_env, _):
-     milestone_path = os.path.join(build_env.topsrcdir,
-@@ -1105,7 +1106,7 @@ def enabled_in_nightly(milestone, _):
- def all_configure_options():
-     result = []
-     previous = None
--    for option in __sandbox__._options.itervalues():
-+    for option in __sandbox__._options.values():
-         # __sandbox__._options contains items for both option.name and
-         # option.env. But it's also an OrderedDict, meaning both are
-         # consecutive.
-diff --git a/build/moz.configure/keyfiles.configure b/build/moz.configure/keyfiles.configure
-index 5d51cccea..14a35a3c6 100644
---- a/build/moz.configure/keyfiles.configure
-+++ b/build/moz.configure/keyfiles.configure
-@@ -16,8 +16,8 @@ def keyfile(desc, default=None, help=None, callback=lambda x: x):
- 
-     @depends('--with-%s-keyfile' % name)
-     @checking('for the %s key' % desc, lambda x: x and x is not no_key)
--    @imports(_from='__builtin__', _import='open')
--    @imports(_from='__builtin__', _import='IOError')
-+    @imports(_from='builtins', _import='open')
-+    @imports(_from='builtins', _import='IOError')
-     def keyfile(value):
-         if value:
-             try:
-diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure
-index 81c10b91f..29b496bae 100644
---- a/build/moz.configure/old.configure
-+++ b/build/moz.configure/old.configure
-@@ -64,9 +64,9 @@ set_config('AUTOCONF', autoconf)
- 
- @depends('OLD_CONFIGURE', mozconfig, autoconf, check_build_environment, shell,
-          old_configure_assignments, build_project)
--@imports(_from='__builtin__', _import='open')
--@imports(_from='__builtin__', _import='print')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='open')
-+@imports(_from='builtins', _import='print')
-+@imports(_from='builtins', _import='sorted')
- @imports('glob')
- @imports('itertools')
- @imports('subprocess')
-@@ -113,7 +113,7 @@ def prepare_configure(old_configure, mozconfig, autoconf, build_env, shell,
- 
-         # Make old-configure append to config.log, where we put our own log.
-         # This could be done with a m4 macro, but it's way easier this way
--        script = script.replace('>./config.log', '>>./config.log')
-+        script = script.replace(b'>./config.log', b'>>./config.log')
- 
-         with open(old_configure, 'wb') as fh:
-             fh.write(script)
-@@ -282,8 +282,8 @@ def old_configure_options(*options):
-     '--x-includes',
-     '--x-libraries',
- )
--@imports(_from='__builtin__', _import='compile')
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='compile')
-+@imports(_from='builtins', _import='open')
- @imports('logging')
- @imports('os')
- @imports('subprocess')
-@@ -326,7 +326,7 @@ def old_configure(prepare_configure, extra_old_configure_args, all_options,
-     log.debug('Running %s', quote(*cmd))
-     if extra_env:
-         log.debug('with extra environment: %s',
--                  ' '.join('%s=%s' % pair for pair in extra_env.iteritems()))
-+                  ' '.join('%s=%s' % pair for pair in extra_env.items()))
- 
-     # Our logging goes to config.log, the same file old.configure uses.
-     # We can't share the handle on the file, so close it. We assume nothing
-@@ -359,7 +359,7 @@ def old_configure(prepare_configure, extra_old_configure_args, all_options,
-         # Every variation of the exec() function I tried led to:
-         # SyntaxError: unqualified exec is not allowed in function 'main' it
-         # contains a nested function with free variables
--        exec code in raw_config # noqa
-+        exec(code, raw_config) # noqa
- 
-     # Ensure all the flags known to old-configure appear in the
-     # @old_configure_options above.
-@@ -393,16 +393,24 @@ def set_old_configure_define(name, value):
- @depends(old_configure)
- @imports('types')
- def post_old_configure(raw_config):
-+    log.info('post_old_configure started')
-+
-     for k, v in raw_config['substs']:
-         set_old_configure_config(
--            k[1:-1], v[1:-1] if isinstance(v, types.StringTypes) else v)
-+            k[1:-1], v[1:-1] if isinstance(v, str) else v)
-+
-+    log.info('post_old_configure 1 finished')
- 
--    for k, v in dict(raw_config['defines']).iteritems():
-+    for k, v in dict(raw_config['defines']).items():
-         set_old_configure_define(k[1:-1], v[1:-1])
- 
-+    log.info('post_old_configure 2 finished')
-+
-     set_old_configure_config('non_global_defines',
-                              raw_config['non_global_defines'])
- 
-+    log.info('post_old_configure 3 finished')
-+
- 
- # Assuming no other option is declared after this function, handle the
- # env options that were injected by mozconfig_options by creating dummy
-@@ -414,6 +422,7 @@ def post_old_configure(raw_config):
- @imports('__sandbox__')
- @imports(_from='mozbuild.configure.options', _import='Option')
- def remaining_mozconfig_options(_):
-+    log.info('remaining_mozconfig_options started')
-     helper = __sandbox__._helper
-     for arg in helper:
-         if helper._origins[arg] != 'mozconfig':
-@@ -422,5 +431,6 @@ def remaining_mozconfig_options(_):
-         if name.isupper() and name not in __sandbox__._options:
-             option = Option(env=name, nargs='*', help=name)
-             helper.handle(option)
-+    log.info('remaining_mozconfig_options finished')
- 
- # Please do not add anything after remaining_mozconfig_options()
-diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
-index fc640c75e..c5508dfb7 100755
---- a/build/moz.configure/toolchain.configure
-+++ b/build/moz.configure/toolchain.configure
-@@ -391,7 +391,7 @@ def get_compiler_info(compiler, language):
-         ('CPU', CPU_preprocessor_checks),
-         ('KERNEL', kernel_preprocessor_checks),
-     ):
--        for n, (value, condition) in enumerate(preprocessor_checks.iteritems()):
-+        for n, (value, condition) in enumerate(preprocessor_checks.items()):
-             check += dedent('''\
-                 #%(if)s %(condition)s
-                 %%%(name)s "%(value)s"
-@@ -425,9 +425,9 @@ def get_compiler_info(compiler, language):
-     data = {}
-     for line in result.splitlines():
-         if line.startswith(b'%'):
--            k, _, v = line.partition(' ')
--            k = k.lstrip('%')
--            data[k] = v.replace(' ', '').lstrip('"').rstrip('"')
-+            k, _, v = line.partition(b' ')
-+            k = k.lstrip(b'%').decode('utf-8')
-+            data[k] = v.replace(b' ', b'').lstrip(b'"').rstrip(b'"').decode('utf-8')
-             log.debug('%s = %s', k, data[k])
- 
-     try:
-@@ -551,7 +551,7 @@ def check_compiler(compiler, language, target):
-     )
- 
- 
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='open')
- @imports('json')
- @imports('subprocess')
- @imports('sys')
-@@ -606,7 +606,7 @@ def vs_major_version(value):
- 
- 
- @depends(host, target, vs_major_version, check_build_environment, '--with-visual-studio-version')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- @imports(_from='operator', _import='itemgetter')
- @imports('platform')
- def vc_compiler_path(host, target, vs_major_version, env, vs_release_name):
-@@ -807,7 +807,7 @@ def compiler(language, host_or_target, c_compiler=None, other_compiler=None,
-                     target.os != 'Android':
-                 return namespace(**{
-                     k: [] if k == 'flags' else v
--                    for k, v in other_compiler.__dict__.iteritems()
-+                    for k, v in other_compiler.__dict__.items()
-                 })
- 
-     # Normally, we'd use `var` instead of `_var`, but the interaction with
-@@ -1238,7 +1238,7 @@ set_config('VISIBILITY_FLAGS', visibility_flags)
- 
- @depends(c_compiler)
- @imports('multiprocessing')
--@imports(_from='__builtin__', _import='min')
-+@imports(_from='builtins', _import='min')
- def pgo_flags(compiler):
-     if compiler.type in ('gcc', 'clang'):
-         return namespace(
-@@ -1517,6 +1517,8 @@ def enable_gnu_linker(enable_gold_option, c_compiler, developer_options, build_e
-         gold = check_cmd_output(*detection_cmd).strip()
-         if not gold:
-             return
-+        if isinstance(gold, bytes):
-+            gold = gold.decode('utf-8')
- 
-         goldFullPath = find_program(gold)
-         if goldFullPath is None:
-diff --git a/build/moz.configure/util.configure b/build/moz.configure/util.configure
-index 3284fd8b5..218813e2d 100644
---- a/build/moz.configure/util.configure
-+++ b/build/moz.configure/util.configure
-@@ -25,7 +25,6 @@ def configure_error(message):
- # does not.
- 
- 
--@imports(_from='__builtin__', _import='unicode')
- @imports('subprocess')
- @imports('sys')
- @imports(_from='mozbuild.configure.util', _import='LineIO')
-@@ -39,10 +38,10 @@ def check_cmd_output(*args, **kwargs):
-     if 'env' in kwargs:
-         normalized_env = {}
-         for k, v in kwargs['env'].items():
--            if isinstance(k, unicode):
-+            if isinstance(k, str):
-                 k = k.encode('utf-8', 'strict')
- 
--            if isinstance(v, unicode):
-+            if isinstance(v, str):
-                 v = v.encode('utf-8', 'strict')
- 
-             normalized_env[k] = v
-@@ -285,7 +284,7 @@ def unique_list(l):
- #     ('19.0', 'x64', r'C:\...\amd64\cl.exe')
- #     ('19.0', 'x86', r'C:\...\amd64_x86\cl.exe')
- @imports(_import='_winreg', _as='winreg')
--@imports(_from='__builtin__', _import='WindowsError')
-+@imports(_from='builtins', _import='WindowsError')
- @imports(_from='fnmatch', _import='fnmatch')
- def get_registry_values(pattern, get_32_and_64_bit=False):
-     def enum_helper(func, key):
-@@ -360,6 +359,8 @@ def get_registry_values(pattern, get_32_and_64_bit=False):
- @imports(_from='mozbuild.configure.util', _import='Version', _as='_Version')
- def Version(v):
-     'A version number that can be compared usefully.'
-+    if isinstance(v, bytes):
-+        v = v.decode('utf-8')
-     return _Version(v)
- 
- # Denotes a deprecated option. Combines option() and @depends:
-diff --git a/build/moz.configure/windows.configure b/build/moz.configure/windows.configure
-index a5b790e3b..2b88fc447 100644
---- a/build/moz.configure/windows.configure
-+++ b/build/moz.configure/windows.configure
-@@ -10,7 +10,7 @@ option('--with-windows-version', nargs=1, default='603',
- 
- 
- @depends('--with-windows-version')
--@imports(_from='__builtin__', _import='ValueError')
-+@imports(_from='builtins', _import='ValueError')
- def valid_windows_version(value):
-     if not value:
-         die('Cannot build with --without-windows-version')
-@@ -50,8 +50,8 @@ def windows_sdk_dir(value, host):
- 
- @imports('os')
- @imports('re')
--@imports(_from='__builtin__', _import='sorted')
--@imports(_from='__builtin__', _import='WindowsError')
-+@imports(_from='builtins', _import='sorted')
-+@imports(_from='builtins', _import='WindowsError')
- def get_sdk_dirs(sdk, subdir):
-     def get_dirs_containing(sdk, stem, subdir):
-         base = os.path.join(sdk, stem)
-@@ -96,7 +96,7 @@ def valid_windows_sdk_dir_result(value):
- 
- @depends(c_compiler, windows_sdk_dir, valid_windows_version, 'WINDOWSSDKDIR')
- @checking('for Windows SDK', valid_windows_sdk_dir_result)
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- @imports(_from='textwrap', _import='dedent')
- def valid_windows_sdk_dir(compiler, windows_sdk_dir, target_version,
-                           windows_sdk_dir_env):
-@@ -174,7 +174,7 @@ def valid_ucrt_sdk_dir_result(value):
- @depends(windows_sdk_dir, 'WINDOWSSDKDIR', c_compiler)
- @checking('for Universal CRT SDK', valid_ucrt_sdk_dir_result)
- @imports('os')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- @imports(_import='mozpack.path', _as='mozpath')
- def valid_ucrt_sdk_dir(windows_sdk_dir, windows_sdk_dir_env, c_compiler):
-     if windows_sdk_dir_env:
-diff --git a/build/templates.mozbuild b/build/templates.mozbuild
-index 3da850ce5..ae5e410fe 100644
---- a/build/templates.mozbuild
-+++ b/build/templates.mozbuild
-@@ -10,7 +10,7 @@ def Binary():
-     templates.'''
- 
-     # Add -llog by default, since we use it all over the place.
--    if CONFIG['OS_TARGET'] == 'Android':
-+    if str(CONFIG['OS_TARGET']) == 'Android':
-         OS_LIBS += ['log']
- 
- 
-diff --git a/config/MozZipFile.py b/config/MozZipFile.py
-index 337fe0521..dc7add4c3 100644
---- a/config/MozZipFile.py
-+++ b/config/MozZipFile.py
-@@ -18,7 +18,7 @@ class ZipFile(zipfile.ZipFile):
-   def __init__(self, file, mode="r", compression=zipfile.ZIP_STORED,
-                lock = False):
-     if lock:
--      assert isinstance(file, basestring)
-+      assert isinstance(file, str)
-       self.lockfile = lock_file(file + '.lck')
-     else:
-       self.lockfile = None
-@@ -46,7 +46,7 @@ class ZipFile(zipfile.ZipFile):
-                               date_time=time.localtime(time.time()))
-       zinfo.compress_type = self.compression
-       # Add some standard UNIX file access permissions (-rw-r--r--).
--      zinfo.external_attr = (0x81a4 & 0xFFFF) << 16L
-+      zinfo.external_attr = (0x81a4 & 0xFFFF) << 16
-     else:
-       zinfo = zinfo_or_arcname
- 
-@@ -58,7 +58,7 @@ class ZipFile(zipfile.ZipFile):
-     # as the old, reuse the existing entry.
- 
-     doSeek = False # store if we need to seek to the eof after overwriting
--    if self.NameToInfo.has_key(zinfo.filename):
-+    if zinfo.filename in self.NameToInfo:
-       # Find the last ZipInfo with our name.
-       # Last, because that's catching multiple overwrites
-       i = len(self.filelist)
-@@ -109,14 +109,14 @@ class ZipFile(zipfile.ZipFile):
-       # adjust file mode if we originally just wrote, now we rewrite
-       self.fp.close()
-       self.fp = open(self.filename, 'r+b')
--    all = map(lambda zi: (zi, True), self.filelist) + \
--        map(lambda zi: (zi, False), self._remove)
-+    all = [(zi, True) for zi in self.filelist] + \
-+        [(zi, False) for zi in self._remove]
-     all.sort(lambda l, r: cmp(l[0].header_offset, r[0].header_offset))
-     # empty _remove for multiple closes
-     self._remove = []
- 
-     lengths = [all[i+1][0].header_offset - all[i][0].header_offset
--               for i in xrange(len(all)-1)]
-+               for i in range(len(all)-1)]
-     lengths.append(self.end - all[-1][0].header_offset)
-     to_pos = 0
-     for (zi, keep), length in zip(all, lengths):
-diff --git a/config/expandlibs.py b/config/expandlibs.py
-index ac06c432f..df1fed15d 100644
---- a/config/expandlibs.py
-+++ b/config/expandlibs.py
-@@ -26,7 +26,7 @@ ${LIB_PREFIX}${ROOT}.${LIB_SUFFIX} following these rules:
-   descriptor contains. And for each of these LIBS, also apply the same
-   rules.
- '''
--from __future__ import with_statement
-+
- import sys, os, errno
- import expandlibs_config as conf
- 
-@@ -36,7 +36,7 @@ def ensureParentDir(file):
-     if dir and not os.path.exists(dir):
-         try:
-             os.makedirs(dir)
--        except OSError, error:
-+        except OSError as error:
-             if error.errno != errno.EEXIST:
-                 raise
- 
-@@ -140,4 +140,4 @@ class ExpandArgs(list):
-         return [relativize(arg)]
- 
- if __name__ == '__main__':
--    print " ".join(ExpandArgs(sys.argv[1:]))
-+    print(" ".join(ExpandArgs(sys.argv[1:])))
-diff --git a/config/expandlibs_exec.py b/config/expandlibs_exec.py
-index df656016c..fb786a6a8 100644
---- a/config/expandlibs_exec.py
-+++ b/config/expandlibs_exec.py
-@@ -20,7 +20,7 @@ With the --symbol-order argument, followed by a file name, it will add the
- relevant linker options to change the order in which the linker puts the
- symbols appear in the resulting binary. Only works for ELF targets.
- '''
--from __future__ import with_statement
-+
- import sys
- import os
- from expandlibs import (
-@@ -304,11 +304,11 @@ class SectionFinder(object):
-         return syms
- 
- def print_command(out, args):
--    print >>out, "Executing: " + " ".join(args)
-+    print("Executing: " + " ".join(args), file=out)
-     for tmp in [f for f in args.tmp if os.path.isfile(f)]:
--        print >>out, tmp + ":"
-+        print(tmp + ":", file=out)
-         with open(tmp) as file:
--            print >>out, "".join(["    " + l for l in file.readlines()])
-+            print("".join(["    " + l for l in file.readlines()]), file=out)
-     out.flush()
- 
- def main(args, proc_callback=None):
-@@ -338,13 +338,13 @@ def main(args, proc_callback=None):
-             proc = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
-             if proc_callback:
-                 proc_callback(proc)
--        except Exception, e:
--            print >>sys.stderr, 'error: Launching', args, ':', e
-+        except Exception as e:
-+            print('error: Launching', args, ':', e, file=sys.stderr)
-             raise e
-         (stdout, stderr) = proc.communicate()
-         if proc.returncode and not options.verbose:
-             print_command(sys.stderr, args)
--        sys.stderr.write(stdout)
-+        sys.stderr.write(stdout.decode("utf-8"))
-         sys.stderr.flush()
-         if proc.returncode:
-             return proc.returncode
-diff --git a/config/expandlibs_gen.py b/config/expandlibs_gen.py
-index b1de63cd0..dc62bd184 100644
---- a/config/expandlibs_gen.py
-+++ b/config/expandlibs_gen.py
-@@ -5,7 +5,7 @@
- '''Given a list of object files and library names, prints a library
- descriptor to standard output'''
- 
--from __future__ import with_statement
-+
- import sys
- import os
- import expandlibs_config as conf
-@@ -38,4 +38,4 @@ if __name__ == '__main__':
- 
-     ensureParentDir(options.output)
-     with open(options.output, 'w') as outfile:
--        print >>outfile, generate(args)
-+        print(generate(args), file=outfile)
-diff --git a/configure.py b/configure.py
-index 771e34e38..bee329d7c 100644
---- a/configure.py
-+++ b/configure.py
-@@ -2,10 +2,11 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import print_function, unicode_literals
-+
- 
- import codecs
- import itertools
-+import logging
- import os
- import sys
- import textwrap
-@@ -34,7 +35,9 @@ from mozbuild.util import (
- def main(argv):
-     config = {}
-     sandbox = ConfigureSandbox(config, os.environ, argv)
-+    print('sandbox.run started')
-     sandbox.run(os.path.join(os.path.dirname(__file__), 'moz.configure'))
-+    print('sandbox.run finished')
- 
-     if sandbox._help:
-         return 0
-@@ -56,12 +59,21 @@ def config_status(config):
- 
-     sanitized_config = {}
-     sanitized_config['substs'] = {
--        k: sanitized_bools(v) for k, v in config.iteritems()
-+        k: sanitized_bools(v) for k, v in config.items()
-         if k not in ('DEFINES', 'non_global_defines', 'TOPSRCDIR', 'TOPOBJDIR',
-                      'ALL_CONFIGURE_PATHS')
-     }
-+
-+    # Hack around OptionValue entries unknown during compile
-+    for opt in ('BUILD_BACKENDS', 'MOZ_UI_LOCALE', 'RUSTFLAGS' ):
-+        old = sanitized_config['substs'][opt]
-+        new = []
-+        for setting in old:
-+            new.append(setting)
-+        sanitized_config['substs'][opt] = new
-+
-     sanitized_config['defines'] = {
--        k: sanitized_bools(v) for k, v in config['DEFINES'].iteritems()
-+        k: sanitized_bools(v) for k, v in config['DEFINES'].items()
-     }
-     sanitized_config['non_global_defines'] = config['non_global_defines']
-     sanitized_config['topsrcdir'] = config['TOPSRCDIR']
-@@ -71,20 +83,17 @@ def config_status(config):
-     # Create config.status. Eventually, we'll want to just do the work it does
-     # here, when we're able to skip configure tests/use cached results/not rely
-     # on autoconf.
--    print("Creating config.status", file=sys.stderr)
--    encoding = 'mbcs' if sys.platform == 'win32' else 'utf-8'
--    with codecs.open('config.status', 'w', encoding) as fh:
-+    logging.getLogger('moz.configure').info('Creating config.status')
-+    with codecs.open('config.status', 'w', 'utf-8') as fh:
-         fh.write(textwrap.dedent('''\
-             #!%(python)s
--            # coding=%(encoding)s
--            from __future__ import unicode_literals
--            from mozbuild.util import encode
--            encoding = '%(encoding)s'
--        ''') % {'python': config['PYTHON'], 'encoding': encoding})
-+            # coding=utf-8
-+            print("config.status started")
-+        ''') % {'python': config['PYTHON']})
-         # A lot of the build backend code is currently expecting byte
-         # strings and breaks in subtle ways with unicode strings. (bug 1296508)
--        for k, v in sanitized_config.iteritems():
--            fh.write('%s = encode(%s, encoding)\n' % (k, indented_repr(v)))
-+        for k, v in sanitized_config.items():
-+            fh.write('%s = %s\n' % (k, indented_repr(v)))
-         fh.write("__all__ = ['topobjdir', 'topsrcdir', 'defines', "
-                  "'non_global_defines', 'substs', 'mozconfig']")
- 
-@@ -97,6 +106,9 @@ def config_status(config):
-                     args = dict([(name, globals()[name]) for name in __all__])
-                     config_status(**args)
-             '''))
-+        fh.write(textwrap.dedent('''
-+            print("config.status finished")
-+        '''))
- 
-     partial_config = PartialConfigEnvironment(config['TOPOBJDIR'])
-     partial_config.write_vars(sanitized_config)
-@@ -116,7 +128,7 @@ def config_status(config):
-     # executable permissions.
-     os.chmod('config.status', 0o755)
-     if config.get('MOZ_BUILD_APP') != 'js' or config.get('JS_STANDALONE'):
--        os.environ[b'WRITE_MOZINFO'] = b'1'
-+        os.environ['WRITE_MOZINFO'] = '1'
-         from mozbuild.config_status import config_status
- 
-         # Some values in sanitized_config also have more complex types, such as
-@@ -127,7 +139,7 @@ def config_status(config):
- 
-         # A lot of the build backend code is currently expecting byte strings
-         # and breaks in subtle ways with unicode strings.
--        return config_status(args=[], **encode(sanitized_config, encoding))
-+        return config_status(args=[], **sanitized_config)
-     return 0
- 
- 
-diff --git a/js/src/build/moz.build b/js/src/build/moz.build
-index a7f5fa4ce..856cae32d 100644
---- a/js/src/build/moz.build
-+++ b/js/src/build/moz.build
-@@ -47,22 +47,22 @@ USE_LIBS += [
-     'zlib',
- ]
- 
--if CONFIG['OS_ARCH'] not in ('WINNT', 'HP-UX'):
-+if str(CONFIG['OS_ARCH']) not in ('WINNT', 'HP-UX'):
-     OS_LIBS += [
-         'm',
-     ]
- 
--if CONFIG['OS_ARCH'] == 'FreeBSD':
-+if str(CONFIG['OS_ARCH']) == 'FreeBSD':
-     OS_LIBS += [
-         '-pthread',
-     ]
- 
--if CONFIG['OS_ARCH'] == 'Linux':
-+if str(CONFIG['OS_ARCH']) == 'Linux':
-     OS_LIBS += [
-         'dl',
-     ]
- 
--if CONFIG['OS_ARCH'] == 'SunOS':
-+if str(CONFIG['OS_ARCH']) == 'SunOS':
-     OS_LIBS += [
-         'posix4',
-         'dl',
-diff --git a/js/src/builtin/embedjs.py b/js/src/builtin/embedjs.py
-index ba25e71c1..d4f2de122 100644
---- a/js/src/builtin/embedjs.py
-+++ b/js/src/builtin/embedjs.py
-@@ -36,7 +36,7 @@
- #
- # It uses the C preprocessor to process its inputs.
- 
--from __future__ import with_statement
-+
- import re, sys, os, subprocess
- import shlex
- import which
-@@ -52,8 +52,8 @@ def ToCAsciiArray(lines):
- 
- def ToCArray(lines):
-   result = []
--  for chr in lines:
--    result.append(str(ord(chr)))
-+  for char in lines:
-+    result.append("0x%0.2X" % char)
-   return ", ".join(result)
- 
- HEADER_TEMPLATE = """\
-@@ -87,7 +87,7 @@ def embed(cxx, preprocessorOption, cppflags, msgs, sources, c_out, js_out, names
- 
-   js_out.write(processed)
-   import zlib
--  compressed = zlib.compress(processed)
-+  compressed = zlib.compress(processed.encode('utf-8'))
-   data = ToCArray(compressed)
-   c_out.write(HEADER_TEMPLATE % {
-     'sources_type': 'unsigned char',
-@@ -107,7 +107,7 @@ def preprocess(cxx, preprocessorOption, source, args = []):
-   tmpOut = 'self-hosting-preprocessed.pp';
-   outputArg = shlex.split(preprocessorOption + tmpOut)
- 
--  with open(tmpIn, 'wb') as input:
-+  with open(tmpIn, 'w') as input:
-     input.write(source)
-   print(' '.join(cxx + outputArg + args + [tmpIn]))
-   result = subprocess.Popen(cxx + outputArg + args + [tmpIn]).wait()
-diff --git a/js/src/configure b/js/src/configure
-index 3b3a39af3..8f5ea41d0 100755
---- a/js/src/configure
-+++ b/js/src/configure
-@@ -24,4 +24,4 @@ export OLD_CONFIGURE="$SRCDIR"/old-configure
- 
- set -- "$@" --enable-project=js
- 
--which python2.7 > /dev/null && exec python2.7 "$TOPSRCDIR/configure.py" "$@" || exec python "$TOPSRCDIR/configure.py" "$@"
-+which python3 > /dev/null && exec python3 "$TOPSRCDIR/configure.py" "$@" || exec python "$TOPSRCDIR/configure.py" "$@"
-diff --git a/js/src/frontend/GenerateReservedWords.py b/js/src/frontend/GenerateReservedWords.py
-index 3aa2307b9..381c8e2b4 100644
---- a/js/src/frontend/GenerateReservedWords.py
-+++ b/js/src/frontend/GenerateReservedWords.py
-@@ -80,14 +80,14 @@ def split_list_per_column(reserved_word_list, column):
-         per_column = column_dict.setdefault(word[column], [])
-         per_column.append(item)
- 
--    return sorted(column_dict.items(), key=lambda (char, word): ord(char))
-+    return sorted(list(column_dict.items()), key=lambda char_word: ord(char_word[0]))
- 
- def generate_letter_switch(opt, unprocessed_columns, reserved_word_list,
-                            columns=None):
-     assert(len(reserved_word_list) != 0);
- 
-     if not columns:
--        columns = range(0, unprocessed_columns)
-+        columns = list(range(0, unprocessed_columns))
- 
-     if len(reserved_word_list) == 1:
-         index, word = reserved_word_list[0]
-@@ -161,7 +161,7 @@ def split_list_per_length(reserved_word_list):
-         per_length = length_dict.setdefault(len(word), [])
-         per_length.append(item)
- 
--    return sorted(length_dict.items(), key=lambda (length, word): length)
-+    return sorted(list(length_dict.items()), key=lambda length_word: length_word[0])
- 
- def generate_switch(opt, reserved_word_list):
-     assert(len(reserved_word_list) != 0);
-diff --git a/js/src/gc/GenerateStatsPhases.py b/js/src/gc/GenerateStatsPhases.py
-index 2daf83555..e39a26a4b 100644
---- a/js/src/gc/GenerateStatsPhases.py
-+++ b/js/src/gc/GenerateStatsPhases.py
-@@ -267,7 +267,7 @@ def generateHeader(out):
-     #
-     # Generate PhaseKind enum.
-     #
--    phaseKindNames = map(lambda phaseKind: phaseKind.name, AllPhaseKinds)
-+    phaseKindNames = [phaseKind.name for phaseKind in AllPhaseKinds]
-     extraPhaseKinds = [
-         "NONE = LIMIT",
-         "EXPLICIT_SUSPENSION = LIMIT",
-@@ -279,7 +279,7 @@ def generateHeader(out):
-     #
-     # Generate Phase enum.
-     #
--    phaseNames = map(lambda phase: phase.name, AllPhases)
-+    phaseNames = [phase.name for phase in AllPhases]
-     extraPhases = [
-         "NONE = LIMIT",
-         "EXPLICIT_SUSPENSION = LIMIT",
-diff --git a/js/src/old-configure.in b/js/src/old-configure.in
-index 11c3d5a2e..389265404 100644
---- a/js/src/old-configure.in
-+++ b/js/src/old-configure.in
-@@ -1884,3 +1884,5 @@ if test "$JS_STANDALONE"; then
- fi
- 
- rm -fr confdefs* $ac_clean_files
-+echo confdefs* $ac_clean_files removed
-+echo "old-configure done"
-diff --git a/memory/build/moz.build b/memory/build/moz.build
-index e2c715271..f09ce7935 100644
---- a/memory/build/moz.build
-+++ b/memory/build/moz.build
-@@ -30,7 +30,7 @@ else:
-         'fallback.cpp',
-     ]
- 
--if CONFIG['OS_TARGET'] == 'Darwin' and (CONFIG['MOZ_REPLACE_MALLOC'] or
-+if str(CONFIG['OS_TARGET']) == 'Darwin' and (CONFIG['MOZ_REPLACE_MALLOC'] or
-         CONFIG['MOZ_MEMORY']):
-     SOURCES += [
-         'zone.c',
-@@ -38,15 +38,15 @@ if CONFIG['OS_TARGET'] == 'Darwin' and (CONFIG['MOZ_REPLACE_MALLOC'] or
- 
- Library('memory')
- 
--if CONFIG['OS_TARGET'] == 'Android' and CONFIG['CC_TYPE'] == 'clang':
-+if str(CONFIG['OS_TARGET']) == 'Android' and str(CONFIG['CC_TYPE']) == 'clang':
-     CXXFLAGS += [
-         '-Wno-tautological-pointer-compare',
-     ]
- 
--if CONFIG['MOZ_BUILD_APP'] != 'memory':
-+if str(CONFIG['MOZ_BUILD_APP']) != 'memory':
-     FINAL_LIBRARY = 'mozglue'
- 
--if CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
-+if str(CONFIG['CC_TYPE']) in ('msvc', 'clang-cl'):
-     CXXFLAGS += ['-wd4273'] # inconsistent dll linkage (bug 558163)
- 
- if CONFIG['MOZ_REPLACE_MALLOC_STATIC']:
-diff --git a/mozglue/build/moz.build b/mozglue/build/moz.build
-index 53758485a..5e9308802 100644
---- a/mozglue/build/moz.build
-+++ b/mozglue/build/moz.build
-@@ -9,12 +9,12 @@
- # If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
- if CONFIG['JS_STANDALONE'] and not CONFIG['MOZ_MEMORY']:
-     Library('mozglue')
--elif CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android'):
-+elif str(CONFIG['OS_TARGET']) in ('WINNT', 'Darwin', 'Android'):
-     SharedLibrary('mozglue')
- else:
-     Library('mozglue')
- 
--if CONFIG['OS_TARGET'] == 'Android':
-+if str(CONFIG['OS_TARGET']) == 'Android':
-     SOURCES += [
-         'BionicGlue.cpp',
-     ]
-@@ -24,14 +24,14 @@ if CONFIG['MOZ_ASAN']:
-         'AsanOptions.cpp',
-     ]
- 
--if CONFIG['OS_TARGET'] == 'WINNT':
-+if str(CONFIG['OS_TARGET']) == 'WINNT':
-     DEFFILE = 'mozglue.def'
-     # We'll break the DLL blocklist if we immediately load user32.dll
-     DELAYLOAD_DLLS += [
-         'user32.dll',
-     ]
- 
--    if CONFIG['CC_TYPE'] == "msvc":
-+    if str(CONFIG['CC_TYPE']) == "msvc":
-         CFLAGS += ['-guard:cf']
-         CXXFLAGS += ['-guard:cf']
-         LDFLAGS += ['-guard:cf']
-@@ -48,12 +48,12 @@ if CONFIG['MOZ_WIDGET_TOOLKIT']:
-             'dummy.cpp',
-         ]
- 
--    if CONFIG['OS_TARGET'] == 'WINNT':
-+    if str(CONFIG['OS_TARGET']) == 'WINNT':
-         LOCAL_INCLUDES += [
-             '/memory/build',
-         ]
- 
--        if CONFIG['CC_TYPE'] == "msvc":
-+        if str(CONFIG['CC_TYPE']) == "msvc":
-             SOURCES += ['WindowsCFGStatus.cpp']
-         SOURCES += [
-             'Authenticode.cpp',
-@@ -85,17 +85,17 @@ if CONFIG['MOZ_WIDGET_TOOLKIT']:
-         'WindowsDllBlocklist.h',
-     ]
- 
--    if CONFIG['CPU_ARCH'].startswith('x86'):
-+    if str(CONFIG['CPU_ARCH']).startswith('x86'):
-         SOURCES += [
-             'SSE.cpp',
-         ]
- 
--    if CONFIG['CPU_ARCH'] == 'arm':
-+    if str(CONFIG['CPU_ARCH']) == 'arm':
-         SOURCES += [
-             'arm.cpp',
-         ]
- 
--    if CONFIG['CPU_ARCH'].startswith('mips'):
-+    if str(CONFIG['CPU_ARCH']).startswith('mips'):
-         SOURCES += [
-             'mips.cpp',
-         ]
-@@ -114,7 +114,7 @@ LIBRARY_DEFINES['MOZ_HAS_MOZGLUE'] = True
- 
- LDFLAGS += CONFIG['MOZ_GLUE_WRAP_LDFLAGS']
- 
--if CONFIG['OS_TARGET'] == 'Darwin':
-+if str(CONFIG['OS_TARGET']) == 'Darwin':
-     # On OSX 10.10.3, a dead lock happens in some cases involving dynamic
-     # symbol resolution for symbols that jemalloc itself uses. While it
-     # might be possible to find a way to avoid all such symbol resolutions,
-@@ -124,7 +124,7 @@ if CONFIG['OS_TARGET'] == 'Darwin':
-     # for TLS.
-     LDFLAGS += ['-Wl,-bind_at_load']
- 
--if CONFIG['MOZ_LINKER'] and CONFIG['TARGET_CPU'] == 'arm':
-+if CONFIG['MOZ_LINKER'] and str(CONFIG['TARGET_CPU']) == 'arm':
-     LDFLAGS += ['-Wl,-version-script,%s/arm-eabi-filter' % SRCDIR]
- 
- DIST_INSTALL = True
-diff --git a/python/mozbuild/mozbuild/action/check_binary.py b/python/mozbuild/mozbuild/action/check_binary.py
-index 5665ef053..b696f73d6 100644
---- a/python/mozbuild/mozbuild/action/check_binary.py
-+++ b/python/mozbuild/mozbuild/action/check_binary.py
-@@ -104,6 +104,8 @@ def iter_readelf_symbols(target, binary):
- 
- def iter_readelf_dynamic(target, binary):
-     for line in get_output(target['readelf'], '-d', binary):
-+        if isinstance(line, bytes):
-+            line=line.decode('utf-8')
-         data = line.split(None, 2)
-         if data and len(data) == 3 and data[0].startswith('0x'):
-             yield data[1].rstrip(')').lstrip('('), data[2]
-diff --git a/python/mozbuild/mozbuild/action/process_define_files.py b/python/mozbuild/mozbuild/action/process_define_files.py
-index 563fbb8fa..c3df2869b 100644
---- a/python/mozbuild/mozbuild/action/process_define_files.py
-+++ b/python/mozbuild/mozbuild/action/process_define_files.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import argparse
- import os
-@@ -53,7 +53,7 @@ def process_define_file(output, input):
-                                 'CONFIGURE_DEFINE_FILE')
-                         defines = '\n'.join(sorted(
-                             '#define %s %s' % (name, val)
--                            for name, val in config.defines['ALLDEFINES'].iteritems()))
-+                            for name, val in config.defines['ALLDEFINES'].items()))
-                         l = l[:m.start('cmd') - 1] \
-                             + defines + l[m.end('name'):]
-                     elif cmd == 'define':
-diff --git a/python/mozbuild/mozbuild/backend/base.py b/python/mozbuild/mozbuild/backend/base.py
-index a8d5c94e0..7cda63475 100644
---- a/python/mozbuild/mozbuild/backend/base.py
-+++ b/python/mozbuild/mozbuild/backend/base.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, unicode_literals
-+
- 
- from abc import (
-     ABCMeta,
-@@ -31,7 +31,7 @@ from .configenvironment import ConfigEnvironment
- from mozbuild.base import ExecutionSummary
- 
- 
--class BuildBackend(LoggingMixin):
-+class BuildBackend(LoggingMixin, metaclass=ABCMeta):
-     """Abstract base class for build backends.
- 
-     A build backend is merely a consumer of the build configuration (the output
-@@ -39,8 +39,6 @@ class BuildBackend(LoggingMixin):
-     is the discretion of the specific implementation.
-     """
- 
--    __metaclass__ = ABCMeta
--
-     def __init__(self, environment):
-         assert isinstance(environment, (ConfigEnvironment, EmptyConfig))
-         self.populate_logger()
-@@ -311,7 +309,7 @@ class BuildBackend(LoggingMixin):
-         srcdir = mozpath.dirname(obj.input_path)
-         pp.context.update({
-             k: ' '.join(v) if isinstance(v, list) else v
--            for k, v in obj.config.substs.iteritems()
-+            for k, v in obj.config.substs.items()
-         })
-         pp.context.update(
-             top_srcdir=obj.topsrcdir,
-diff --git a/python/mozbuild/mozbuild/backend/common.py b/python/mozbuild/mozbuild/backend/common.py
-index d00cbbcaf..f747df446 100644
---- a/python/mozbuild/mozbuild/backend/common.py
-+++ b/python/mozbuild/mozbuild/backend/common.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, unicode_literals
-+
- 
- import json
- import os
-@@ -174,7 +174,7 @@ class CommonBackend(BuildBackend):
-         if len(self._idl_manager.idls):
-             self._write_rust_xpidl_summary(self._idl_manager)
-             self._handle_idl_manager(self._idl_manager)
--            self._handle_generated_sources(mozpath.join(self.environment.topobjdir, 'dist/include/%s.h' % idl['root']) for idl in self._idl_manager.idls.values())
-+            self._handle_generated_sources(mozpath.join(self.environment.topobjdir, 'dist/include/%s.h' % idl['root']) for idl in list(self._idl_manager.idls.values()))
- 
- 
-         for config in self._configs:
-@@ -372,14 +372,14 @@ class CommonBackend(BuildBackend):
- 
-         with self._write_file(mozpath.join(topobjdir, 'dist', 'xpcrs', 'rt', 'all.rs')) as fh:
-             fh.write("// THIS FILE IS GENERATED - DO NOT EDIT\n\n")
--            for idl in manager.idls.values():
-+            for idl in list(manager.idls.values()):
-                 fh.write(include_tmpl % ("rt", idl['root']))
-                 fh.write(";\n")
- 
-         with self._write_file(mozpath.join(topobjdir, 'dist', 'xpcrs', 'bt', 'all.rs')) as fh:
-             fh.write("// THIS FILE IS GENERATED - DO NOT EDIT\n\n")
-             fh.write("&[\n")
--            for idl in manager.idls.values():
-+            for idl in list(manager.idls.values()):
-                 fh.write(include_tmpl % ("bt", idl['root']))
-                 fh.write(",\n")
-             fh.write("]\n")
-diff --git a/python/mozbuild/mozbuild/backend/configenvironment.py b/python/mozbuild/mozbuild/backend/configenvironment.py
-index 3676a7d18..f0896cea4 100644
---- a/python/mozbuild/mozbuild/backend/configenvironment.py
-+++ b/python/mozbuild/mozbuild/backend/configenvironment.py
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import
-+
- 
- import os
- import sys
- import json
- 
- from collections import Iterable, OrderedDict
--from types import StringTypes, ModuleType
-+from types import ModuleType
- 
- import mozpack.path as mozpath
- 
-@@ -22,7 +22,7 @@ from mozbuild.shellutil import quote as shell_quote
- 
- 
- if sys.version_info.major == 2:
--    text_type = unicode
-+    text_type = str
- else:
-     text_type = str
- 
-@@ -151,7 +151,7 @@ class ConfigEnvironment(object):
-             shell_quote(self.defines[name]).replace('$', '$$'))
-             for name in sorted(global_defines)])
-         def serialize(name, obj):
--            if isinstance(obj, StringTypes):
-+            if isinstance(obj, str):
-                 return obj
-             if isinstance(obj, Iterable):
-                 return ' '.join(obj)
-@@ -185,8 +185,8 @@ class ConfigEnvironment(object):
-                 except UnicodeDecodeError:
-                     return v.decode('utf-8', 'replace')
- 
--        for k, v in self.substs.items():
--            if not isinstance(v, StringTypes):
-+        for k, v in list(self.substs.items()):
-+            if not isinstance(v, str):
-                 if isinstance(v, Iterable):
-                     type(v)(decode(i) for i in v)
-             elif not isinstance(v, text_type):
-@@ -255,7 +255,7 @@ class PartialConfigDict(object):
-         existing_files = self._load_config_track()
- 
-         new_files = set()
--        for k, v in values.iteritems():
-+        for k, v in values.items():
-             new_files.add(self._write_file(k, v))
- 
-         for filename in existing_files - new_files:
-diff --git a/python/mozbuild/mozbuild/backend/fastermake.py b/python/mozbuild/mozbuild/backend/fastermake.py
-index b029aa10f..b66ade64f 100644
---- a/python/mozbuild/mozbuild/backend/fastermake.py
-+++ b/python/mozbuild/mozbuild/backend/fastermake.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, unicode_literals, print_function
-+
- 
- from mozbuild.backend.base import PartialBackend
- from mozbuild.backend.common import CommonBackend
-@@ -140,7 +140,7 @@ class FasterMakeBackend(CommonBackend, PartialBackend):
-         # Add information for chrome manifest generation
-         manifest_targets = []
- 
--        for target, entries in self._manifest_entries.iteritems():
-+        for target, entries in self._manifest_entries.items():
-             manifest_targets.append(target)
-             install_target = mozpath.basedir(target, install_manifests_bases)
-             self._install_manifests[install_target].add_content(
-@@ -152,13 +152,13 @@ class FasterMakeBackend(CommonBackend, PartialBackend):
-                          % ' '.join(self._install_manifests.keys()))
- 
-         # Add dependencies we infered:
--        for target, deps in self._dependencies.iteritems():
-+        for target, deps in self._dependencies.items():
-             mk.create_rule([target]).add_dependencies(
-                 '$(TOPOBJDIR)/%s' % d for d in deps)
- 
-         mk.add_statement('include $(TOPSRCDIR)/config/faster/rules.mk')
- 
--        for base, install_manifest in self._install_manifests.iteritems():
-+        for base, install_manifest in self._install_manifests.items():
-             with self._write_file(
-                     mozpath.join(self.environment.topobjdir, 'faster',
-                                  'install_%s' % base.replace('/', '_'))) as fh:
-@@ -167,7 +167,7 @@ class FasterMakeBackend(CommonBackend, PartialBackend):
-         # For artifact builds only, write a single unified manifest for consumption by |mach watch|.
-         if self.environment.is_artifact_build:
-             unified_manifest = InstallManifest()
--            for base, install_manifest in self._install_manifests.iteritems():
-+            for base, install_manifest in self._install_manifests.items():
-                 # Expect 'dist/bin/**', which includes 'dist/bin' with no trailing slash.
-                 assert base.startswith('dist/bin')
-                 base = base[len('dist/bin'):]
-diff --git a/python/mozbuild/mozbuild/backend/recursivemake.py b/python/mozbuild/mozbuild/backend/recursivemake.py
-index dd9020d62..aa89cc297 100644
---- a/python/mozbuild/mozbuild/backend/recursivemake.py
-+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, unicode_literals
-+
- 
- import logging
- import os
-@@ -12,7 +12,7 @@ from collections import (
-     defaultdict,
-     namedtuple,
- )
--from StringIO import StringIO
-+from io import StringIO
- from itertools import chain
- 
- from mozpack.manifests import (
-@@ -80,75 +80,76 @@ from ..util import (
- )
- from ..makeutil import Makefile
- from mozbuild.shellutil import quote as shell_quote
-+from functools import reduce
- 
- MOZBUILD_VARIABLES = [
--    b'ASFLAGS',
--    b'CMSRCS',
--    b'CMMSRCS',
--    b'CPP_UNIT_TESTS',
--    b'DIRS',
--    b'DIST_INSTALL',
--    b'EXTRA_DSO_LDOPTS',
--    b'EXTRA_JS_MODULES',
--    b'EXTRA_PP_COMPONENTS',
--    b'EXTRA_PP_JS_MODULES',
--    b'FORCE_SHARED_LIB',
--    b'FORCE_STATIC_LIB',
--    b'FINAL_LIBRARY',
--    b'HOST_CFLAGS',
--    b'HOST_CSRCS',
--    b'HOST_CMMSRCS',
--    b'HOST_CXXFLAGS',
--    b'HOST_EXTRA_LIBS',
--    b'HOST_LIBRARY_NAME',
--    b'HOST_PROGRAM',
--    b'HOST_SIMPLE_PROGRAMS',
--    b'JAR_MANIFEST',
--    b'JAVA_JAR_TARGETS',
--    b'LIBRARY_NAME',
--    b'LIBS',
--    b'MAKE_FRAMEWORK',
--    b'MODULE',
--    b'NO_DIST_INSTALL',
--    b'NO_EXPAND_LIBS',
--    b'NO_INTERFACES_MANIFEST',
--    b'NO_JS_MANIFEST',
--    b'OS_LIBS',
--    b'PARALLEL_DIRS',
--    b'PREF_JS_EXPORTS',
--    b'PROGRAM',
--    b'RESOURCE_FILES',
--    b'SHARED_LIBRARY_LIBS',
--    b'SHARED_LIBRARY_NAME',
--    b'SIMPLE_PROGRAMS',
--    b'SONAME',
--    b'STATIC_LIBRARY_NAME',
--    b'TEST_DIRS',
--    b'TOOL_DIRS',
-+    'ASFLAGS',
-+    'CMSRCS',
-+    'CMMSRCS',
-+    'CPP_UNIT_TESTS',
-+    'DIRS',
-+    'DIST_INSTALL',
-+    'EXTRA_DSO_LDOPTS',
-+    'EXTRA_JS_MODULES',
-+    'EXTRA_PP_COMPONENTS',
-+    'EXTRA_PP_JS_MODULES',
-+    'FORCE_SHARED_LIB',
-+    'FORCE_STATIC_LIB',
-+    'FINAL_LIBRARY',
-+    'HOST_CFLAGS',
-+    'HOST_CSRCS',
-+    'HOST_CMMSRCS',
-+    'HOST_CXXFLAGS',
-+    'HOST_EXTRA_LIBS',
-+    'HOST_LIBRARY_NAME',
-+    'HOST_PROGRAM',
-+    'HOST_SIMPLE_PROGRAMS',
-+    'JAR_MANIFEST',
-+    'JAVA_JAR_TARGETS',
-+    'LIBRARY_NAME',
-+    'LIBS',
-+    'MAKE_FRAMEWORK',
-+    'MODULE',
-+    'NO_DIST_INSTALL',
-+    'NO_EXPAND_LIBS',
-+    'NO_INTERFACES_MANIFEST',
-+    'NO_JS_MANIFEST',
-+    'OS_LIBS',
-+    'PARALLEL_DIRS',
-+    'PREF_JS_EXPORTS',
-+    'PROGRAM',
-+    'RESOURCE_FILES',
-+    'SHARED_LIBRARY_LIBS',
-+    'SHARED_LIBRARY_NAME',
-+    'SIMPLE_PROGRAMS',
-+    'SONAME',
-+    'STATIC_LIBRARY_NAME',
-+    'TEST_DIRS',
-+    'TOOL_DIRS',
-     # XXX config/Makefile.in specifies this in a make invocation
-     #'USE_EXTENSION_MANIFEST',
--    b'XPCSHELL_TESTS',
--    b'XPIDL_MODULE',
-+    'XPCSHELL_TESTS',
-+    'XPIDL_MODULE',
- ]
- 
- DEPRECATED_VARIABLES = [
--    b'EXPORT_LIBRARY',
--    b'EXTRA_LIBS',
--    b'HOST_LIBS',
--    b'LIBXUL_LIBRARY',
--    b'MOCHITEST_A11Y_FILES',
--    b'MOCHITEST_BROWSER_FILES',
--    b'MOCHITEST_BROWSER_FILES_PARTS',
--    b'MOCHITEST_CHROME_FILES',
--    b'MOCHITEST_FILES',
--    b'MOCHITEST_FILES_PARTS',
--    b'MOCHITEST_METRO_FILES',
--    b'MOCHITEST_ROBOCOP_FILES',
--    b'MODULE_OPTIMIZE_FLAGS',
--    b'MOZ_CHROME_FILE_FORMAT',
--    b'SHORT_LIBNAME',
--    b'TESTING_JS_MODULES',
--    b'TESTING_JS_MODULE_DIR',
-+    'EXPORT_LIBRARY',
-+    'EXTRA_LIBS',
-+    'HOST_LIBS',
-+    'LIBXUL_LIBRARY',
-+    'MOCHITEST_A11Y_FILES',
-+    'MOCHITEST_BROWSER_FILES',
-+    'MOCHITEST_BROWSER_FILES_PARTS',
-+    'MOCHITEST_CHROME_FILES',
-+    'MOCHITEST_FILES',
-+    'MOCHITEST_FILES_PARTS',
-+    'MOCHITEST_METRO_FILES',
-+    'MOCHITEST_ROBOCOP_FILES',
-+    'MODULE_OPTIMIZE_FLAGS',
-+    'MOZ_CHROME_FILE_FORMAT',
-+    'SHORT_LIBNAME',
-+    'TESTING_JS_MODULES',
-+    'TESTING_JS_MODULE_DIR',
- ]
- 
- MOZBUILD_VARIABLES_MESSAGE = 'It should only be defined in moz.build files.'
-@@ -207,7 +208,7 @@ class BackendMakeFile(object):
-         self.fh.write(buf)
- 
-     def write_once(self, buf):
--        if isinstance(buf, unicode):
-+        if isinstance(buf, str):
-             buf = buf.encode('utf-8')
-         if b'\n' + buf not in self.fh.getvalue():
-             self.write(buf)
-@@ -280,7 +281,7 @@ class RecursiveMakeTraversal(object):
-         Helper function to call a filter from compute_dependencies and
-         traverse.
-         """
--        return filter(current, self.get_subdirs(current))
-+        return list(filter(current, self.get_subdirs(current)))
- 
-     def compute_dependencies(self, filter=None):
-         """
-@@ -710,7 +711,7 @@ class RecursiveMakeBackend(CommonBackend):
-         convenience variables, and the other dependency definitions for a
-         hopefully proper directory traversal.
-         """
--        for tier, no_skip in self._no_skip.items():
-+        for tier, no_skip in list(self._no_skip.items()):
-             self.log(logging.DEBUG, 'fill_root_mk', {
-                 'number': len(no_skip), 'tier': tier
-                 }, 'Using {number} directories during {tier}')
-@@ -757,7 +758,7 @@ class RecursiveMakeBackend(CommonBackend):
-         for tier, filter in filters:
-             main, all_deps = \
-                 self._traversal.compute_dependencies(filter)
--            for dir, deps in all_deps.items():
-+            for dir, deps in list(all_deps.items()):
-                 if deps is not None or (dir in self._idl_dirs \
-                                         and tier == 'export'):
-                     rule = root_deps_mk.create_rule(['%s/%s' % (dir, tier)])
-@@ -770,7 +771,7 @@ class RecursiveMakeBackend(CommonBackend):
-                 rule.add_dependencies('%s/%s' % (d, tier) for d in main)
- 
-         all_compile_deps = reduce(lambda x,y: x|y,
--            self._compile_graph.values()) if self._compile_graph else set()
-+            list(self._compile_graph.values())) if self._compile_graph else set()
-         # Include the following as dependencies of the top recursion target for
-         # compilation:
-         # - nodes that are not dependended upon by anything. Typically, this
-@@ -783,7 +784,7 @@ class RecursiveMakeBackend(CommonBackend):
-         #   as direct dependencies of the top recursion target, to somehow
-         #   prioritize them.
-         #   1. See bug 1262241 comment 5.
--        compile_roots = [t for t, deps in self._compile_graph.iteritems()
-+        compile_roots = [t for t, deps in list(self._compile_graph.items())
-                          if not deps or t not in all_compile_deps]
- 
-         rule = root_deps_mk.create_rule(['recurse_compile'])
-@@ -845,14 +846,14 @@ class RecursiveMakeBackend(CommonBackend):
-             rule.add_dependencies(['$(CURDIR)/%: %'])
- 
-     def _check_blacklisted_variables(self, makefile_in, makefile_content):
--        if b'EXTERNALLY_MANAGED_MAKE_FILE' in makefile_content:
-+        if 'EXTERNALLY_MANAGED_MAKE_FILE' in makefile_content:
-             # Bypass the variable restrictions for externally managed makefiles.
-             return
- 
-         for l in makefile_content.splitlines():
-             l = l.strip()
-             # Don't check comments
--            if l.startswith(b'#'):
-+            if l.startswith('#'):
-                 continue
-             for x in chain(MOZBUILD_VARIABLES, DEPRECATED_VARIABLES):
-                 if x not in l:
-@@ -909,11 +910,11 @@ class RecursiveMakeBackend(CommonBackend):
-                     # Directories with a Makefile containing a tools target, or
-                     # XPI_PKGNAME or INSTALL_EXTENSION_ID can't be skipped and
-                     # must run during the 'tools' tier.
--                    for t in (b'XPI_PKGNAME', b'INSTALL_EXTENSION_ID',
--                            b'tools'):
-+                    for t in ('XPI_PKGNAME', 'INSTALL_EXTENSION_ID',
-+                            'tools'):
-                         if t not in content:
-                             continue
--                        if t == b'tools' and not re.search('(?:^|\s)tools.*::', content, re.M):
-+                        if t == 'tools' and not re.search('(?:^|\s)tools.*::', content, re.M):
-                             continue
-                         if objdir == self.environment.topobjdir:
-                             continue
-@@ -933,7 +934,7 @@ class RecursiveMakeBackend(CommonBackend):
-         self._fill_root_mk()
- 
-         # Make the master test manifest files.
--        for flavor, t in self._test_manifests.items():
-+        for flavor, t in list(self._test_manifests.items()):
-             install_prefix, manifests = t
-             manifest_stem = mozpath.join(install_prefix, '%s.ini' % flavor)
-             self._write_master_test_manifest(mozpath.join(
-@@ -1039,7 +1040,7 @@ class RecursiveMakeBackend(CommonBackend):
-         for p in ('Makefile', 'backend.mk', '.deps/.mkdir.done'):
-             build_files.add_optional_exists(p)
- 
--        for idl in manager.idls.values():
-+        for idl in list(manager.idls.values()):
-             self._install_manifests['dist_idl'].add_link(idl['source'],
-                 idl['basename'])
-             self._install_manifests['dist_include'].add_optional_exists('%s.h'
-@@ -1086,7 +1087,7 @@ class RecursiveMakeBackend(CommonBackend):
- 
-         interfaces_manifests = []
-         dist_dir = mozpath.join(self.environment.topobjdir, 'dist')
--        for manifest, entries in manager.interface_manifests.items():
-+        for manifest, entries in list(manager.interface_manifests.items()):
-             interfaces_manifests.append(mozpath.join('$(DEPTH)', manifest))
-             for xpt in sorted(entries):
-                 registered_xpt_files.add(mozpath.join(
-@@ -1194,7 +1195,7 @@ class RecursiveMakeBackend(CommonBackend):
-         # Don't allow files to be defined multiple times unless it is allowed.
-         # We currently allow duplicates for non-test files or test files if
-         # the manifest is listed as a duplicate.
--        for source, (dest, is_test) in obj.installs.items():
-+        for source, (dest, is_test) in list(obj.installs.items()):
-             try:
-                 self._install_manifests['_test_files'].add_link(source, dest)
-             except ValueError:
-@@ -1558,7 +1559,7 @@ class RecursiveMakeBackend(CommonBackend):
-         man_dir = mozpath.join(self.environment.topobjdir, '_build_manifests',
-             dest)
- 
--        for k, manifest in manifests.items():
-+        for k, manifest in list(manifests.items()):
-             with self._write_file(mozpath.join(man_dir, k)) as fh:
-                 manifest.write(fileobj=fh)
- 
-@@ -1593,20 +1594,20 @@ class RecursiveMakeBackend(CommonBackend):
-                 pp.context.update(extra)
-             if not pp.context.get('autoconfmk', ''):
-                 pp.context['autoconfmk'] = 'autoconf.mk'
--            pp.handleLine(b'# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.\n');
--            pp.handleLine(b'DEPTH := @DEPTH@\n')
--            pp.handleLine(b'topobjdir := @topobjdir@\n')
--            pp.handleLine(b'topsrcdir := @top_srcdir@\n')
--            pp.handleLine(b'srcdir := @srcdir@\n')
--            pp.handleLine(b'VPATH := @srcdir@\n')
--            pp.handleLine(b'relativesrcdir := @relativesrcdir@\n')
--            pp.handleLine(b'include $(DEPTH)/config/@autoconfmk@\n')
-+            pp.handleLine('# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.\n');
-+            pp.handleLine('DEPTH := @DEPTH@\n')
-+            pp.handleLine('topobjdir := @topobjdir@\n')
-+            pp.handleLine('topsrcdir := @top_srcdir@\n')
-+            pp.handleLine('srcdir := @srcdir@\n')
-+            pp.handleLine('VPATH := @srcdir@\n')
-+            pp.handleLine('relativesrcdir := @relativesrcdir@\n')
-+            pp.handleLine('include $(DEPTH)/config/@autoconfmk@\n')
-             if not stub:
-                 pp.do_include(obj.input_path)
-             # Empty line to avoid failures when last line in Makefile.in ends
-             # with a backslash.
--            pp.handleLine(b'\n')
--            pp.handleLine(b'include $(topsrcdir)/config/recurse.mk\n')
-+            pp.handleLine('\n')
-+            pp.handleLine('include $(topsrcdir)/config/recurse.mk\n')
-         if not stub:
-             # Adding the Makefile.in here has the desired side-effect
-             # that if the Makefile.in disappears, this will force
-diff --git a/python/mozbuild/mozbuild/config_status.py b/python/mozbuild/mozbuild/config_status.py
-index d46f1332d..a9a27a699 100644
---- a/python/mozbuild/mozbuild/config_status.py
-+++ b/python/mozbuild/mozbuild/config_status.py
-@@ -77,6 +77,7 @@ def config_status(topobjdir='.', topsrcdir='.', defines=None,
-     See build/autoconf/config.status.m4.
-     '''
- 
-+    print("config_status started")
-     if 'CONFIG_FILES' in os.environ:
-         raise Exception('Using the CONFIG_FILES environment variable is not '
-             'supported.')
-@@ -119,7 +120,7 @@ def config_status(topobjdir='.', topsrcdir='.', defines=None,
-     if 'WRITE_MOZINFO' in os.environ:
-         write_mozinfo(os.path.join(topobjdir, 'mozinfo.json'), env, os.environ)
- 
--    cpu_start = time.clock()
-+    cpu_start = time.perf_counter()
-     time_start = time.time()
- 
-     # Make appropriate backend instances, defaulting to RecursiveMakeBackend,
-@@ -155,7 +156,7 @@ def config_status(topobjdir='.', topsrcdir='.', defines=None,
-             summary = obj.gyp_summary()
-             print(summary, file=sys.stderr)
- 
--    cpu_time = time.clock() - cpu_start
-+    cpu_time = time.perf_counter() - cpu_start
-     wall_time = time.time() - time_start
-     efficiency = cpu_time / wall_time if wall_time else 100
-     untracked = wall_time - execution_time
-@@ -179,3 +180,5 @@ def config_status(topobjdir='.', topsrcdir='.', defines=None,
-     # Advertise Android Studio if it is appropriate.
-     if MachCommandConditions.is_android(env):
-         print(ANDROID_IDE_ADVERTISEMENT)
-+
-+    print("config_status finished")
-diff --git a/python/mozbuild/mozbuild/configure/__init__.py b/python/mozbuild/mozbuild/configure/__init__.py
-index d03615707..13d623d4f 100644
---- a/python/mozbuild/mozbuild/configure/__init__.py
-+++ b/python/mozbuild/mozbuild/configure/__init__.py
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
- 
--import __builtin__
-+
-+import builtins
- import inspect
- import logging
- import os
-@@ -38,6 +38,8 @@ from mozbuild.util import (
- 
- import mozpack.path as mozpath
- 
-+import traceback
-+
- 
- class ConfigureError(Exception):
-     pass
-@@ -69,7 +71,7 @@ class SandboxDependsFunction(object):
-     def __getattr__(self, key):
-         return self._getattr(key).sandboxed
- 
--    def __nonzero__(self):
-+    def __bool__(self):
-         raise ConfigureError(
-             'Cannot do boolean operations on @depends functions.')
- 
-@@ -96,6 +98,7 @@ class DependsFunction(object):
-             sandbox._value_for(self)
-         elif not sandbox._help:
-             sandbox._execution_queue.append((sandbox._value_for, (self,)))
-+            sandbox.tasks_debug_out("DependsFunction.__init %s" % func.__name__)
- 
-     @property
-     def name(self):
-@@ -206,6 +209,15 @@ class CombinedDependsFunction(DependsFunction):
-     def __ne__(self, other):
-         return not self == other
- 
-+    def __hash__(self):
-+        # This was one was taken from [1] initially. Should not have done that:
-+        # it causes explosion of ConfigureSandbox._execution_queue with 100%
-+        # CPU load and eating all avaliable memory...
-+        #
-+        # [1] https://code.foxkit.us/adelie/packages/blob/f2b5773da19ab397fbe64fd32dacc383cfe4cd77/user/mozjs/python3.patch#L8068
-+        return hash((self._name, tuple(self.dependencies)))
-+
-+
- class SandboxedGlobal(dict):
-     '''Identifiable dict type for use as function global'''
- 
-@@ -253,11 +265,12 @@ class ConfigureSandbox(dict):
-     # The default set of builtins. We expose unicode as str to make sandboxed
-     # files more python3-ready.
-     BUILTINS = ReadOnlyDict({
--        b: getattr(__builtin__, b)
-+        b: getattr(builtins, b)
-         for b in ('None', 'False', 'True', 'int', 'bool', 'any', 'all', 'len',
-                   'list', 'tuple', 'set', 'dict', 'isinstance', 'getattr',
--                  'hasattr', 'enumerate', 'range', 'zip')
--    }, __import__=forbidden_import, str=unicode)
-+                  'hasattr', 'enumerate', 'range', 'zip', '__build_class__',
-+                  'bytes', 'exec')
-+    }, __import__=forbidden_import, str=str)
- 
-     # Expose a limited set of functions from os.path
-     OS = ReadOnlyNamespace(path=ReadOnlyNamespace(**{
-@@ -294,6 +307,11 @@ class ConfigureSandbox(dict):
-         # Queue of functions to execute, with their arguments
-         self._execution_queue = []
- 
-+        # For debugging: Show number of tasks started in run() / added elsewhere
-+        # and some additional info
-+        self.task_debug = False # set True to enable
-+        self.tasks_started = 0
-+
-         # Store the `when`s associated to some options.
-         self._conditions = {}
- 
-@@ -331,7 +349,7 @@ class ConfigureSandbox(dict):
-                 return method
-             def wrapped(*args, **kwargs):
-                 out_args = [
--                    arg.decode(encoding) if isinstance(arg, str) else arg
-+                    arg.decode(encoding) if isinstance(arg, bytes) else arg
-                     for arg in args
-                 ]
-                 return method(*out_args, **kwargs)
-@@ -360,6 +378,14 @@ class ConfigureSandbox(dict):
-             handler.setFormatter(formatter)
-             logger.addHandler(handler)
- 
-+    def tasks_debug_out(self, text):
-+        if self.task_debug:
-+            print("%s / queued %i / done %i" %(text, len(self._execution_queue), self.tasks_started))
-+            #if len(self._execution_queue) > 5000:
-+            #    traceback.print_stack(file=sys.stdout)
-+            #if len(self._execution_queue) > 5010:
-+            #    raise Exception("Too many tasks")
-+
-     def include_file(self, path):
-         '''Include one file in the sandbox. Users of this class probably want
-         to use `run` instead.
-@@ -380,6 +406,9 @@ class ConfigureSandbox(dict):
-         if path in self._all_paths:
-             raise ConfigureError(
-                 'Cannot include `%s` because it was included already.' % path)
-+
-+        if self.task_debug:
-+            print("include_file", path)
-         self._paths.append(path)
-         self._all_paths.add(path)
- 
-@@ -398,7 +427,7 @@ class ConfigureSandbox(dict):
-         if path:
-             self.include_file(path)
- 
--        for option in self._options.itervalues():
-+        for option in self._options.values():
-             # All options must be referenced by some @depends function
-             if option not in self._seen:
-                 raise ConfigureError(
-@@ -425,6 +454,8 @@ class ConfigureSandbox(dict):
- 
-         # Run the execution queue
-         for func, args in self._execution_queue:
-+            self.tasks_started += 1
-+            self.tasks_debug_out("ConfigureSandbox.run(%s)" % func.__name__)
-             func(*args)
- 
-         if self._help:
-@@ -504,7 +535,7 @@ class ConfigureSandbox(dict):
-                     value = PositiveOptionValue()
-                 elif value is False or value == ():
-                     value = NegativeOptionValue()
--                elif isinstance(value, types.StringTypes):
-+                elif isinstance(value, (str,)):
-                     value = PositiveOptionValue((value,))
-                 elif isinstance(value, tuple):
-                     value = PositiveOptionValue(value)
-@@ -544,7 +575,7 @@ class ConfigureSandbox(dict):
-         return value
- 
-     def _dependency(self, arg, callee_name, arg_name=None):
--        if isinstance(arg, types.StringTypes):
-+        if isinstance(arg, (str,)):
-             prefix, name, values = Option.split_option(arg)
-             if values != ():
-                 raise ConfigureError("Option must not contain an '='")
-@@ -608,7 +639,7 @@ class ConfigureSandbox(dict):
-         '''
-         when = self._normalize_when(kwargs.get('when'), 'option')
-         args = [self._resolve(arg) for arg in args]
--        kwargs = {k: self._resolve(v) for k, v in kwargs.iteritems()
-+        kwargs = {k: self._resolve(v) for k, v in kwargs.items()
-                                       if k != 'when'}
-         option = Option(*args, **kwargs)
-         if when:
-@@ -689,7 +720,7 @@ class ConfigureSandbox(dict):
-         with self.only_when_impl(when):
-             what = self._resolve(what)
-             if what:
--                if not isinstance(what, types.StringTypes):
-+                if not isinstance(what, (str,)):
-                     raise TypeError("Unexpected type: '%s'" % type(what).__name__)
-                 self.include_file(what)
- 
-@@ -707,7 +738,7 @@ class ConfigureSandbox(dict):
-             (k[:-len('_impl')], getattr(self, k))
-             for k in dir(self) if k.endswith('_impl') and k != 'template_impl'
-         )
--        glob.update((k, v) for k, v in self.iteritems() if k not in glob)
-+        glob.update((k, v) for k, v in self.items() if k not in glob)
- 
-         # Any function argument to the template must be prepared to be sandboxed.
-         # If the template itself returns a function (in which case, it's very
-@@ -731,7 +762,7 @@ class ConfigureSandbox(dict):
-             def wrapper(*args, **kwargs):
-                 args = [maybe_prepare_function(arg) for arg in args]
-                 kwargs = {k: maybe_prepare_function(v)
--                          for k, v in kwargs.iteritems()}
-+                          for k, v in kwargs.items()}
-                 ret = template(*args, **kwargs)
-                 if isfunction(ret):
-                     # We can't expect the sandboxed code to think about all the
-@@ -766,7 +797,7 @@ class ConfigureSandbox(dict):
-         for value, required in (
-                 (_import, True), (_from, False), (_as, False)):
- 
--            if not isinstance(value, types.StringTypes) and (
-+            if not isinstance(value, (str,)) and (
-                     required or value is not None):
-                 raise TypeError("Unexpected type: '%s'" % type(value).__name__)
-             if value is not None and not self.RE_MODULE.match(value):
-@@ -807,7 +838,7 @@ class ConfigureSandbox(dict):
-         # Special case for the open() builtin, because otherwise, using it
-         # fails with "IOError: file() constructor not accessible in
-         # restricted mode"
--        if what == '__builtin__.open':
-+        if what == 'builtins.open':
-             return lambda *args, **kwargs: open(*args, **kwargs)
-         # Until this proves to be a performance problem, just construct an
-         # import statement and execute it.
-@@ -829,7 +860,7 @@ class ConfigureSandbox(dict):
-         name = self._resolve(name, need_help_dependency=False)
-         if name is None:
-             return
--        if not isinstance(name, types.StringTypes):
-+        if not isinstance(name, (str,)):
-             raise TypeError("Unexpected type: '%s'" % type(name).__name__)
-         if name in data:
-             raise ConfigureError(
-@@ -850,6 +881,7 @@ class ConfigureSandbox(dict):
- 
-         self._execution_queue.append((
-             self._resolve_and_set, (self._config, name, value, when)))
-+        self.tasks_debug_out("ConfigureSandbox.set_config_impl / %s(%s" % (name, value))
- 
-     def set_define_impl(self, name, value, when=None):
-         '''Implementation of set_define().
-@@ -864,6 +896,7 @@ class ConfigureSandbox(dict):
-         defines = self._config.setdefault('DEFINES', {})
-         self._execution_queue.append((
-             self._resolve_and_set, (defines, name, value, when)))
-+        self.tasks_debug_out("ConfigureSandbox.set_define_impl / %s(%s)" % (name, value))
- 
-     def imply_option_impl(self, option, value, reason=None, when=None):
-         '''Implementation of imply_option().
-@@ -922,7 +955,7 @@ class ConfigureSandbox(dict):
-                 if isinstance(possible_reasons[0], Option):
-                     reason = possible_reasons[0]
-         if not reason and (isinstance(value, (bool, tuple)) or
--                           isinstance(value, types.StringTypes)):
-+                           isinstance(value, (str,))):
-             # A reason can be provided automatically when imply_option
-             # is called with an immediate value.
-             _, filename, line, _, _, _ = inspect.stack()[1]
-@@ -955,10 +988,10 @@ class ConfigureSandbox(dict):
-         if not inspect.isfunction(func):
-             raise TypeError("Unexpected type: '%s'" % type(func).__name__)
-         if func in self._prepared_functions:
--            return func, func.func_globals
-+            return func, func.__globals__
- 
-         glob = SandboxedGlobal(
--            (k, v) for k, v in func.func_globals.iteritems()
-+            (k, v) for k, v in func.__globals__.items()
-             if (inspect.isfunction(v) and v not in self._templates) or (
-                 inspect.isclass(v) and issubclass(v, Exception))
-         )
-@@ -979,20 +1012,20 @@ class ConfigureSandbox(dict):
-         # Note this is not entirely bullet proof (if the value is e.g. a list,
-         # the list contents could have changed), but covers the bases.
-         closure = None
--        if func.func_closure:
-+        if func.__closure__:
-             def makecell(content):
-                 def f():
-                     content
--                return f.func_closure[0]
-+                return f.__closure__[0]
- 
-             closure = tuple(makecell(cell.cell_contents)
--                            for cell in func.func_closure)
-+                            for cell in func.__closure__)
- 
-         new_func = self.wraps(func)(types.FunctionType(
--            func.func_code,
-+            func.__code__,
-             glob,
-             func.__name__,
--            func.func_defaults,
-+            func.__defaults__,
-             closure
-         ))
-         @self.wraps(new_func)
-diff --git a/python/mozbuild/mozbuild/configure/check_debug_ranges.py b/python/mozbuild/mozbuild/configure/check_debug_ranges.py
-index c0caa9cc5..a3e1f37e1 100644
---- a/python/mozbuild/mozbuild/configure/check_debug_ranges.py
-+++ b/python/mozbuild/mozbuild/configure/check_debug_ranges.py
-@@ -6,7 +6,7 @@
- # to a given compilation unit. This is used as a helper to find a bug in some
- # versions of GNU ld.
- 
--from __future__ import absolute_import
-+
- 
- import subprocess
- import sys
-@@ -45,6 +45,8 @@ def get_range_length(range, debug_ranges):
- def main(bin, compilation_unit):
-     p = subprocess.Popen(['objdump', '-W', bin], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
-     (out, err) = p.communicate()
-+    if isinstance(out, bytes):
-+        out = out.decode('utf-8')
-     sections = re.split('\n(Contents of the|The section) ', out)
-     debug_info = [s for s in sections if s.startswith('.debug_info')]
-     debug_ranges = [s for s in sections if s.startswith('.debug_ranges')]
-@@ -59,4 +61,4 @@ def main(bin, compilation_unit):
- 
- 
- if __name__ == '__main__':
--    print(main(*sys.argv[1:]))
-+    print((main(*sys.argv[1:])))
-diff --git a/python/mozbuild/mozbuild/configure/options.py b/python/mozbuild/mozbuild/configure/options.py
-index 53ae2ae6d..4d80cad86 100644
---- a/python/mozbuild/mozbuild/configure/options.py
-+++ b/python/mozbuild/mozbuild/configure/options.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import os
- import sys
-@@ -12,7 +12,7 @@ from collections import OrderedDict
- 
- def istupleofstrings(obj):
-     return isinstance(obj, tuple) and len(obj) and all(
--        isinstance(o, types.StringTypes) for o in obj)
-+        isinstance(o, (str,)) for o in obj)
- 
- 
- class OptionValue(tuple):
-@@ -88,7 +88,7 @@ class PositiveOptionValue(OptionValue):
-     in the form of a tuple for when values are given to the option (in the form
-     --option=value[,value2...].
-     '''
--    def __nonzero__(self):
-+    def __bool__(self):
-         return True
- 
- 
-@@ -113,7 +113,7 @@ class ConflictingOptionError(InvalidOptionError):
-         if format_data:
-             message = message.format(**format_data)
-         super(ConflictingOptionError, self).__init__(message)
--        for k, v in format_data.iteritems():
-+        for k, v in format_data.items():
-             setattr(self, k, v)
- 
- 
-@@ -149,7 +149,7 @@ class Option(object):
-                 'At least an option name or an environment variable name must '
-                 'be given')
-         if name:
--            if not isinstance(name, types.StringTypes):
-+            if not isinstance(name, (str,)):
-                 raise InvalidOptionError('Option must be a string')
-             if not name.startswith('--'):
-                 raise InvalidOptionError('Option must start with `--`')
-@@ -158,7 +158,7 @@ class Option(object):
-             if not name.islower():
-                 raise InvalidOptionError('Option must be all lowercase')
-         if env:
--            if not isinstance(env, types.StringTypes):
-+            if not isinstance(env, (str,)):
-                 raise InvalidOptionError(
-                     'Environment variable name must be a string')
-             if not env.isupper():
-@@ -168,8 +168,8 @@ class Option(object):
-                 isinstance(nargs, int) and nargs >= 0):
-             raise InvalidOptionError(
-                 "nargs must be a positive integer, '?', '*' or '+'")
--        if (not isinstance(default, types.StringTypes) and
--                not isinstance(default, (bool, types.NoneType)) and
-+        if (not isinstance(default, (str,)) and
-+                not isinstance(default, (bool, type(None))) and
-                 not istupleofstrings(default)):
-             raise InvalidOptionError(
-                 'default must be a bool, a string or a tuple of strings')
-@@ -241,7 +241,7 @@ class Option(object):
-                     ', '.join("'%s'" % c for c in choices))
-         elif has_choices:
-             maxargs = self.maxargs
--            if len(choices) < maxargs and maxargs != sys.maxint:
-+            if len(choices) < maxargs and maxargs != sys.maxsize:
-                 raise InvalidOptionError('Not enough `choices` for `nargs`')
-         self.choices = choices
-         self.help = help
-@@ -255,7 +255,7 @@ class Option(object):
-         where prefix is one of 'with', 'without', 'enable' or 'disable'.
-         The '=values' part is optional. Values are separated with commas.
-         '''
--        if not isinstance(option, types.StringTypes):
-+        if not isinstance(option, (str,)):
-             raise InvalidOptionError('Option must be a string')
- 
-         elements = option.split('=', 1)
-@@ -308,7 +308,7 @@ class Option(object):
-     def maxargs(self):
-         if isinstance(self.nargs, int):
-             return self.nargs
--        return 1 if self.nargs == '?' else sys.maxint
-+        return 1 if self.nargs == '?' else sys.maxsize
- 
-     def _validate_nargs(self, num):
-         minargs, maxargs = self.minargs, self.maxargs
-@@ -499,5 +499,5 @@ class CommandLineHelper(object):
- 
-     def __iter__(self):
-         for d in (self._args, self._extra_args):
--            for arg, pos in d.itervalues():
-+            for arg, pos in d.values():
-                 yield arg
-diff --git a/python/mozbuild/mozbuild/configure/util.py b/python/mozbuild/mozbuild/configure/util.py
-index 9d8b2eb0e..a12986e48 100644
---- a/python/mozbuild/mozbuild/configure/util.py
-+++ b/python/mozbuild/mozbuild/configure/util.py
-@@ -77,15 +77,7 @@ class ConfigureOutputHandler(logging.Handler):
-         # Python has this feature where it sets the encoding of pipes to
-         # ascii, which blatantly fails when trying to print out non-ascii.
-         def fix_encoding(fh):
--            try:
--                isatty = fh.isatty()
--            except AttributeError:
--                isatty = True
--
--            if not isatty:
--                encoding = getpreferredencoding()
--                if encoding:
--                    return codecs.getwriter(encoding)(fh)
-+            # no magic on oe / python3
-             return fh
- 
-         self._stdout = fix_encoding(stdout)
-@@ -200,7 +192,7 @@ class LineIO(object):
-         self._errors = errors
- 
-     def write(self, buf):
--        if self._encoding and isinstance(buf, str):
-+        if self._encoding and isinstance(buf, bytes):
-             buf = buf.decode(self._encoding, self._errors)
-         lines = buf.splitlines()
-         if not lines:
-diff --git a/python/mozbuild/mozbuild/controller/building.py b/python/mozbuild/mozbuild/controller/building.py
-index d5af532f7..e9810fe58 100644
---- a/python/mozbuild/mozbuild/controller/building.py
-+++ b/python/mozbuild/mozbuild/controller/building.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, unicode_literals
-+
- 
- import errno
- import getpass
-@@ -146,7 +146,7 @@ class TierStatus(object):
-         """
-         o = []
- 
--        for tier, state in self.tiers.items():
-+        for tier, state in list(self.tiers.items()):
-             t_entry = dict(
-                 name=tier,
-                 start=state['begin_time'],
-@@ -574,7 +574,7 @@ class BuildProgressFooter(Footer):
- 
-     def __init__(self, terminal, monitor):
-         Footer.__init__(self, terminal)
--        self.tiers = monitor.tiers.tier_status.viewitems()
-+        self.tiers = monitor.tiers.tier_status.items()
- 
-     def draw(self):
-         """Draws this footer in the terminal."""
-@@ -911,8 +911,8 @@ class CCacheStats(object):
- 
-         return '\n'.join(lines)
- 
--    def __nonzero__(self):
--        relative_values = [v for k, v in self._values.items()
-+    def __bool__(self):
-+        relative_values = [v for k, v in list(self._values.items())
-                            if k not in self.ABSOLUTE_KEYS]
-         return (all(v >= 0 for v in relative_values) and
-                 any(v > 0 for v in relative_values))
-@@ -1156,7 +1156,7 @@ class BuildDriver(MozbuildObject):
- 
-         high_finder, finder_percent = monitor.have_high_finder_usage()
-         if high_finder:
--            print(FINDER_SLOW_MESSAGE % finder_percent)
-+            print((FINDER_SLOW_MESSAGE % finder_percent))
- 
-         ccache_end = monitor.ccache_stats()
- 
-@@ -1276,8 +1276,8 @@ class BuildDriver(MozbuildObject):
-         """Install test files."""
- 
-         if self.is_clobber_needed():
--            print(INSTALL_TESTS_CLOBBER.format(
--                  clobber_file=os.path.join(self.topobjdir, 'CLOBBER')))
-+            print((INSTALL_TESTS_CLOBBER.format(
-+                  clobber_file=os.path.join(self.topobjdir, 'CLOBBER'))))
-             sys.exit(1)
- 
-         if not test_objs:
-diff --git a/python/mozbuild/mozbuild/frontend/context.py b/python/mozbuild/mozbuild/frontend/context.py
-index fbdbefc1d..1aef6a65a 100644
---- a/python/mozbuild/mozbuild/frontend/context.py
-+++ b/python/mozbuild/mozbuild/frontend/context.py
-@@ -14,7 +14,7 @@ If you are looking for the absolute authority on what moz.build files can
- contain, you've come to the right place.
- """
- 
--from __future__ import absolute_import, unicode_literals
-+
- 
- import os
- 
-@@ -237,15 +237,15 @@ class Context(KeyedDefaultDict):
-         This function is transactional: if setitem fails for one of the values,
-         the context is not updated at all."""
-         if isinstance(iterable, dict):
--            iterable = iterable.items()
-+            iterable = list(iterable.items())
- 
-         update = {}
--        for key, value in itertools.chain(iterable, kwargs.items()):
-+        for key, value in itertools.chain(iterable, list(kwargs.items())):
-             stored_type = self._validate(key, value)
-             # Don't create an instance of stored_type if coercion is needed,
-             # until all values are validated.
-             update[key] = (value, stored_type)
--        for key, (value, stored_type) in update.items():
-+        for key, (value, stored_type) in list(update.items()):
-             if not isinstance(value, stored_type):
-                 update[key] = stored_type(value)
-             else:
-@@ -311,7 +311,7 @@ class BaseCompileFlags(ContextDerivedValue, dict):
-         # a template were set and which were provided as defaults.
-         template_name = getattr(context, 'template', None)
-         if template_name in (None, 'Gyp'):
--            dict.__init__(self, ((k, v if v is None else TypedList(unicode)(v))
-+            dict.__init__(self, ((k, v if v is None else TypedList(str)(v))
-                                  for k, v, _ in self.flag_variables))
-         else:
-             dict.__init__(self)
-@@ -520,13 +520,13 @@ class CompileFlags(BaseCompileFlags):
-         if key in self and self[key] is None:
-             raise ValueError('`%s` may not be set in COMPILE_FLAGS from moz.build, this '
-                              'value is resolved from the emitter.' % key)
--        if not (isinstance(value, list) and all(isinstance(v, basestring) for v in value)):
-+        if not (isinstance(value, list) and all(isinstance(v, str) for v in value)):
-             raise ValueError('A list of strings must be provided as a value for a '
-                              'compile flags category.')
-         dict.__setitem__(self, key, value)
- 
- 
--class FinalTargetValue(ContextDerivedValue, unicode):
-+class FinalTargetValue(ContextDerivedValue, str):
-     def __new__(cls, context, value=""):
-         if not value:
-             value = 'dist/'
-@@ -536,7 +536,7 @@ class FinalTargetValue(ContextDerivedValue, unicode):
-                 value += 'bin'
-             if context['DIST_SUBDIR']:
-                 value += '/' + context['DIST_SUBDIR']
--        return unicode.__new__(cls, value)
-+        return str.__new__(cls, value)
- 
- 
- def Enum(*values):
-@@ -584,7 +584,7 @@ class PathMeta(type):
-                 cls = SourcePath
-         return super(PathMeta, cls).__call__(context, value)
- 
--class Path(ContextDerivedValue, unicode):
-+class Path(ContextDerivedValue, str, metaclass=PathMeta):
-     """Stores and resolves a source path relative to a given context
- 
-     This class is used as a backing type for some of the sandbox variables.
-@@ -595,7 +595,6 @@ class Path(ContextDerivedValue, unicode):
-       - '!objdir/relative/paths'
-       - '%/filesystem/absolute/paths'
-     """
--    __metaclass__ = PathMeta
- 
-     def __new__(cls, context, value=None):
-         return super(Path, cls).__new__(cls, value)
-@@ -612,10 +611,14 @@ class Path(ContextDerivedValue, unicode):
-         """
-         return Path(self.context, mozpath.join(self, *p))
- 
-+    @staticmethod
-+    def cmp(a, b):
-+        return (a > b) - (a < b)
-+
-     def __cmp__(self, other):
-         if isinstance(other, Path) and self.srcdir != other.srcdir:
--            return cmp(self.full_path, other.full_path)
--        return cmp(unicode(self), other)
-+            return self.cmp(self.full_path, other.full_path)
-+        return self.cmp(str(self), other)
- 
-     # __cmp__ is not enough because unicode has __eq__, __ne__, etc. defined
-     # and __cmp__ is only used for those when they don't exist.
-@@ -773,7 +776,7 @@ def ContextDerivedTypedRecord(*fields):
-         __slots__ = tuple([name for name, _ in fields])
- 
-         def __init__(self, context):
--            for fname, ftype in self._fields.items():
-+            for fname, ftype in list(self._fields.items()):
-                 if issubclass(ftype, ContextDerivedValue):
-                     setattr(self, fname, self._fields[fname](context))
-                 else:
-@@ -909,8 +912,8 @@ def TypedListWithAction(typ, action):
-     return _TypedListWithAction
- 
- WebPlatformTestManifest = TypedNamedTuple("WebPlatformTestManifest",
--                                          [("manifest_path", unicode),
--                                           ("test_root", unicode)])
-+                                          [("manifest_path", str),
-+                                           ("test_root", str)])
- ManifestparserManifestList = OrderedPathListWithAction(read_manifestparser_manifest)
- ReftestManifestList = OrderedPathListWithAction(read_reftest_manifest)
- WptManifestList = TypedListWithAction(WebPlatformTestManifest, read_wpt_manifest)
-@@ -918,18 +921,18 @@ WptManifestList = TypedListWithAction(WebPlatformTestManifest, read_wpt_manifest
- OrderedSourceList = ContextDerivedTypedList(SourcePath, StrictOrderingOnAppendList)
- OrderedTestFlavorList = TypedList(Enum(*all_test_flavors()),
-                                   StrictOrderingOnAppendList)
--OrderedStringList = TypedList(unicode, StrictOrderingOnAppendList)
-+OrderedStringList = TypedList(str, StrictOrderingOnAppendList)
- DependentTestsEntry = ContextDerivedTypedRecord(('files', OrderedSourceList),
-                                                 ('tags', OrderedStringList),
-                                                 ('flavors', OrderedTestFlavorList))
- BugzillaComponent = TypedNamedTuple('BugzillaComponent',
--                        [('product', unicode), ('component', unicode)])
-+                        [('product', str), ('component', str)])
- SchedulingComponents = ContextDerivedTypedRecord(
--        ('inclusive', TypedList(unicode, StrictOrderingOnAppendList)),
--        ('exclusive', TypedList(unicode, StrictOrderingOnAppendList)))
-+        ('inclusive', TypedList(str, StrictOrderingOnAppendList)),
-+        ('exclusive', TypedList(str, StrictOrderingOnAppendList)))
- 
- GeneratedFilesList = StrictOrderingOnAppendListWithFlagsFactory({
--    'script': unicode,
-+    'script': str,
-     'inputs': list,
-     'flags': list, })
- 
-@@ -1096,7 +1099,7 @@ class Files(SubContext):
-         self.test_tags |= other.test_tags
-         self.test_flavors |= other.test_flavors
- 
--        for k, v in other.items():
-+        for k, v in list(other.items()):
-             if k == 'IMPACTED_TESTS':
-                 self.test_files |= set(mozpath.relpath(e.full_path, e.context.config.topsrcdir)
-                                        for e in v.files)
-@@ -1154,7 +1157,7 @@ class Files(SubContext):
- 
-         bug_components = Counter()
- 
--        for f in files.values():
-+        for f in list(files.values()):
-             bug_component = f.get('BUG_COMPONENT')
-             if bug_component:
-                 bug_components[bug_component] += 1
-@@ -1232,7 +1235,7 @@ VARIABLES = {
-         RustLibrary template instead.
-         """),
- 
--    'RUST_LIBRARY_TARGET_DIR': (unicode, unicode,
-+    'RUST_LIBRARY_TARGET_DIR': (str, str,
-         """Where CARGO_TARGET_DIR should point when compiling this library.  If
-         not set, it defaults to the current objdir.  It should be a relative path
-         to the current objdir; absolute paths should not be used.
-@@ -1248,7 +1251,7 @@ VARIABLES = {
-         HostRustLibrary template instead.
-         """),
- 
--    'RUST_TEST': (unicode, unicode,
-+    'RUST_TEST': (str, str,
-         """Name of a Rust test to build and run via `cargo test`.
- 
-         This variable should not be used directly; you should be using the
-@@ -1487,7 +1490,7 @@ VARIABLES = {
-         """Like ``OBJDIR_FILES``, with preprocessing. Use sparingly.
-         """),
- 
--    'FINAL_LIBRARY': (unicode, unicode,
-+    'FINAL_LIBRARY': (str, str,
-         """Library in which the objects of the current directory will be linked.
- 
-         This variable contains the name of a library, defined elsewhere with
-@@ -1528,7 +1531,7 @@ VARIABLES = {
-         with the host compiler.
-         """),
- 
--    'HOST_LIBRARY_NAME': (unicode, unicode,
-+    'HOST_LIBRARY_NAME': (str, str,
-         """Name of target library generated when cross compiling.
-         """),
- 
-@@ -1546,7 +1549,7 @@ VARIABLES = {
-         libraries that link into this library via FINAL_LIBRARY.
-         """),
- 
--    'LIBRARY_NAME': (unicode, unicode,
-+    'LIBRARY_NAME': (str, str,
-         """The code name of the library generated for a directory.
- 
-         By default STATIC_LIBRARY_NAME and SHARED_LIBRARY_NAME take this name.
-@@ -1558,7 +1561,7 @@ VARIABLES = {
-         ``example/components/xpcomsample.lib`` on Windows.
-         """),
- 
--    'SHARED_LIBRARY_NAME': (unicode, unicode,
-+    'SHARED_LIBRARY_NAME': (str, str,
-         """The name of the static library generated for a directory, if it needs to
-         differ from the library code name.
- 
-@@ -1572,7 +1575,7 @@ VARIABLES = {
-         Implies FORCE_SHARED_LIB.
-         """),
- 
--    'STATIC_LIBRARY_NAME': (unicode, unicode,
-+    'STATIC_LIBRARY_NAME': (str, str,
-         """The name of the static library generated for a directory, if it needs to
-         differ from the library code name.
- 
-@@ -1604,31 +1607,31 @@ VARIABLES = {
- 
-         This variable contains a list of system libaries to link against.
-         """),
--    'RCFILE': (unicode, unicode,
-+    'RCFILE': (str, str,
-         """The program .rc file.
- 
-         This variable can only be used on Windows.
-         """),
- 
--    'RESFILE': (unicode, unicode,
-+    'RESFILE': (str, str,
-         """The program .res file.
- 
-         This variable can only be used on Windows.
-         """),
- 
--    'RCINCLUDE': (unicode, unicode,
-+    'RCINCLUDE': (str, str,
-         """The resource script file to be included in the default .res file.
- 
-         This variable can only be used on Windows.
-         """),
- 
--    'DEFFILE': (unicode, unicode,
-+    'DEFFILE': (str, str,
-         """The program .def (module definition) file.
- 
-         This variable can only be used on Windows.
-         """),
- 
--    'SYMBOLS_FILE': (Path, unicode,
-+    'SYMBOLS_FILE': (Path, str,
-         """A file containing a list of symbols to export from a shared library.
- 
-         The given file contains a list of symbols to be exported, and is
-@@ -1649,7 +1652,7 @@ VARIABLES = {
-         ``BIN_SUFFIX``, the name will remain unchanged.
-         """),
- 
--    'SONAME': (unicode, unicode,
-+    'SONAME': (str, str,
-         """The soname of the shared object currently being linked
- 
-         soname is the "logical name" of a shared object, often used to provide
-@@ -1719,7 +1722,7 @@ VARIABLES = {
-         ``GENERATED_FILES``.
-         """),
- 
--    'PROGRAM' : (unicode, unicode,
-+    'PROGRAM' : (str, str,
-         """Compiled executable name.
- 
-         If the configuration token ``BIN_SUFFIX`` is set, its value will be
-@@ -1727,7 +1730,7 @@ VARIABLES = {
-         ``BIN_SUFFIX``, ``PROGRAM`` will remain unchanged.
-         """),
- 
--    'HOST_PROGRAM' : (unicode, unicode,
-+    'HOST_PROGRAM' : (str, str,
-         """Compiled host executable name.
- 
-         If the configuration token ``HOST_BIN_SUFFIX`` is set, its value will be
-@@ -1765,7 +1768,7 @@ VARIABLES = {
-         files.
-         """),
- 
--    'XPIDL_MODULE': (unicode, unicode,
-+    'XPIDL_MODULE': (str, str,
-         """XPCOM Interface Definition Module Name.
- 
-         This is the name of the ``.xpt`` file that is created by linking
-@@ -1924,14 +1927,14 @@ VARIABLES = {
- 
- 
-     # The following variables are used to control the target of installed files.
--    'XPI_NAME': (unicode, unicode,
-+    'XPI_NAME': (str, str,
-         """The name of an extension XPI to generate.
- 
-         When this variable is present, the results of this directory will end up
-         being packaged into an extension instead of the main dist/bin results.
-         """),
- 
--    'DIST_SUBDIR': (unicode, unicode,
-+    'DIST_SUBDIR': (str, str,
-         """The name of an alternate directory to install files to.
- 
-         When this variable is present, the results of this directory will end up
-@@ -1939,7 +1942,7 @@ VARIABLES = {
-         otherwise be placed.
-         """),
- 
--    'FINAL_TARGET': (FinalTargetValue, unicode,
-+    'FINAL_TARGET': (FinalTargetValue, str,
-         """The name of the directory to install targets to.
- 
-         The directory is relative to the top of the object directory. The
-@@ -1970,7 +1973,7 @@ VARIABLES = {
- 
-     'GYP_DIRS': (StrictOrderingOnAppendListWithFlagsFactory({
-             'variables': dict,
--            'input': unicode,
-+            'input': str,
-             'sandbox_vars': dict,
-             'no_chromium': bool,
-             'no_unified': bool,
-@@ -2194,7 +2197,7 @@ VARIABLES = {
- }
- 
- # Sanity check: we don't want any variable above to have a list as storage type.
--for name, (storage_type, input_types, docs) in VARIABLES.items():
-+for name, (storage_type, input_types, docs) in list(VARIABLES.items()):
-     if storage_type == list:
-         raise RuntimeError('%s has a "list" storage type. Use "List" instead.'
-             % name)
-diff --git a/python/mozbuild/mozbuild/frontend/data.py b/python/mozbuild/mozbuild/frontend/data.py
-index 442fc9e0a..837453a9f 100644
---- a/python/mozbuild/mozbuild/frontend/data.py
-+++ b/python/mozbuild/mozbuild/frontend/data.py
-@@ -15,7 +15,7 @@ contains the code for converting executed mozbuild files into these data
- structures.
- """
- 
--from __future__ import absolute_import, unicode_literals
-+
- 
- from mozbuild.util import StrictOrderingOnAppendList
- from mozpack.chrome.manifest import ManifestEntry
-@@ -182,7 +182,7 @@ class ComputedFlags(ContextDerived):
-             if value:
-                 for dest_var in dest_vars:
-                     flags[dest_var].extend(value)
--        return flags.items()
-+        return list(flags.items())
- 
- class XPIDLFile(ContextDerived):
-     """Describes an XPIDL file to be compiled."""
-@@ -213,7 +213,7 @@ class BaseDefines(ContextDerived):
-         self.defines = defines
- 
-     def get_defines(self):
--        for define, value in self.defines.iteritems():
-+        for define, value in self.defines.items():
-             if value is True:
-                 yield('-D%s' % define)
-             elif value is False:
-@@ -494,7 +494,7 @@ class SimpleProgram(BaseProgram):
-     KIND = 'target'
- 
-     def source_files(self):
--        for srcs in self.sources.values():
-+        for srcs in list(self.sources.values()):
-             for f in srcs:
-                 if mozpath.basename(mozpath.splitext(f)[0]) == mozpath.splitext(self.program)[0]:
-                     return [f]
-diff --git a/python/mozbuild/mozbuild/frontend/emitter.py b/python/mozbuild/mozbuild/frontend/emitter.py
-index 642b381c0..c28344a75 100644
---- a/python/mozbuild/mozbuild/frontend/emitter.py
-+++ b/python/mozbuild/mozbuild/frontend/emitter.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, unicode_literals
-+
- 
- import itertools
- import logging
-@@ -116,8 +116,8 @@ class TreeMetadataEmitter(LoggingMixin):
-         # arguments. This gross hack works around the problem until we
-         # rid ourselves of 2.6.
-         self.info = {}
--        for k, v in mozinfo.info.items():
--            if isinstance(k, unicode):
-+        for k, v in list(mozinfo.info.items()):
-+            if isinstance(k, str):
-                 k = k.encode('ascii')
-             self.info[k] = v
- 
-@@ -234,7 +234,7 @@ class TreeMetadataEmitter(LoggingMixin):
- 
- 
-         # Next do FINAL_LIBRARY linkage.
--        for lib in (l for libs in self._libs.values() for l in libs):
-+        for lib in (l for libs in list(self._libs.values()) for l in libs):
-             if not isinstance(lib, (StaticLibrary, RustLibrary)) or not lib.link_into:
-                 continue
-             if lib.link_into not in self._libs:
-@@ -294,13 +294,13 @@ class TreeMetadataEmitter(LoggingMixin):
-                         lib.link_into == outerlib.basename):
-                     propagate_defines(lib, defines)
- 
--        for lib in (l for libs in self._libs.values() for l in libs):
-+        for lib in (l for libs in list(self._libs.values()) for l in libs):
-             if isinstance(lib, Library):
-                 propagate_defines(lib, lib.lib_defines)
-             yield lib
- 
- 
--        for lib in (l for libs in self._libs.values() for l in libs):
-+        for lib in (l for libs in list(self._libs.values()) for l in libs):
-             lib_defines = list(lib.lib_defines.get_defines())
-             if lib_defines:
-                 objdir_flags = self._compile_flags[lib.objdir]
-@@ -310,13 +310,13 @@ class TreeMetadataEmitter(LoggingMixin):
-                 if objdir_flags:
-                     objdir_flags.resolve_flags('LIBRARY_DEFINES', lib_defines)
- 
--        for flags_obj in self._compile_flags.values():
-+        for flags_obj in list(self._compile_flags.values()):
-             yield flags_obj
- 
--        for flags_obj in self._compile_as_flags.values():
-+        for flags_obj in list(self._compile_as_flags.values()):
-             yield flags_obj
- 
--        for obj in self._binaries.values():
-+        for obj in list(self._binaries.values()):
-             yield obj
- 
- 
-@@ -409,7 +409,7 @@ class TreeMetadataEmitter(LoggingMixin):
-                         libs[key] = l
-                     if key not in libs:
-                         libs[key] = l
--            candidates = libs.values()
-+            candidates = list(libs.values())
-             if force_static and not candidates:
-                 if dir:
-                     raise SandboxValidationError(
-@@ -473,9 +473,9 @@ class TreeMetadataEmitter(LoggingMixin):
- 
-     def _verify_deps(self, context, crate_dir, crate_name, dependencies, description='Dependency'):
-         """Verify that a crate's dependencies all specify local paths."""
--        for dep_crate_name, values in dependencies.iteritems():
-+        for dep_crate_name, values in dependencies.items():
-             # A simple version number.
--            if isinstance(values, (str, unicode)):
-+            if isinstance(values, str):
-                 raise SandboxValidationError(
-                     '%s %s of crate %s does not list a path' % (description, dep_crate_name, crate_name),
-                     context)
-@@ -529,7 +529,7 @@ class TreeMetadataEmitter(LoggingMixin):
- 
-         cargo_target_dir = context.get('RUST_LIBRARY_TARGET_DIR', '.')
- 
--        dependencies = set(config.get('dependencies', {}).iterkeys())
-+        dependencies = set(config.get('dependencies', {}).keys())
- 
-         features = context.get(cls.FEATURES_VAR, [])
-         unique_features = set(features)
-@@ -863,7 +863,7 @@ class TreeMetadataEmitter(LoggingMixin):
-         assert not gen_sources['UNIFIED_SOURCES']
- 
-         no_pgo = context.get('NO_PGO')
--        no_pgo_sources = [f for f, flags in all_flags.iteritems()
-+        no_pgo_sources = [f for f, flags in all_flags.items()
-                           if flags.no_pgo]
-         if no_pgo:
-             if no_pgo_sources:
-@@ -890,7 +890,7 @@ class TreeMetadataEmitter(LoggingMixin):
- 
-         # The inverse of the above, mapping suffixes to their canonical suffix.
-         canonicalized_suffix_map = {}
--        for suffix, alternatives in suffix_map.iteritems():
-+        for suffix, alternatives in suffix_map.items():
-             alternatives.add(suffix)
-             for a in alternatives:
-                 canonicalized_suffix_map[a] = suffix
-@@ -914,7 +914,7 @@ class TreeMetadataEmitter(LoggingMixin):
-         # Source files to track for linkables associated with this context.
-         ctxt_sources = defaultdict(lambda: defaultdict(list))
- 
--        for variable, (klass, gen_klass, suffixes) in varmap.items():
-+        for variable, (klass, gen_klass, suffixes) in list(varmap.items()):
-             allowed_suffixes = set().union(*[suffix_map[s] for s in suffixes])
- 
-             # First ensure that we haven't been given filetypes that we don't
-@@ -941,20 +941,20 @@ class TreeMetadataEmitter(LoggingMixin):
-                     obj = cls(*arglist)
-                     srcs = obj.files
-                     if isinstance(obj, UnifiedSources) and obj.have_unified_mapping:
--                        srcs = dict(obj.unified_source_mapping).keys()
-+                        srcs = list(dict(obj.unified_source_mapping).keys())
-                     ctxt_sources[variable][canonical_suffix] += sorted(srcs)
-                     yield obj
- 
-         if ctxt_sources:
-             for linkable in linkables:
-                 for target_var in ('SOURCES', 'UNIFIED_SOURCES'):
--                    for suffix, srcs in ctxt_sources[target_var].items():
-+                    for suffix, srcs in list(ctxt_sources[target_var].items()):
-                         linkable.sources[suffix] += srcs
-             for host_linkable in host_linkables:
--                for suffix, srcs in ctxt_sources['HOST_SOURCES'].items():
-+                for suffix, srcs in list(ctxt_sources['HOST_SOURCES'].items()):
-                     host_linkable.sources[suffix] += srcs
- 
--        for f, flags in all_flags.iteritems():
-+        for f, flags in all_flags.items():
-             if flags.flags:
-                 ext = mozpath.splitext(f)[1]
-                 yield PerSourceFlag(context, f, flags.flags)
-@@ -1143,7 +1143,7 @@ class TreeMetadataEmitter(LoggingMixin):
-         for obj in self._handle_linkables(context, passthru, generated_files):
-             yield obj
- 
--        generated_files.update(['%s%s' % (k, self.config.substs.get('BIN_SUFFIX', '')) for k in self._binaries.keys()])
-+        generated_files.update(['%s%s' % (k, self.config.substs.get('BIN_SUFFIX', '')) for k in list(self._binaries.keys())])
- 
-         components = []
-         for var, cls in (
-@@ -1277,7 +1277,7 @@ class TreeMetadataEmitter(LoggingMixin):
-         for obj in self._process_jar_manifests(context):
-             yield obj
- 
--        for name, jar in context.get('JAVA_JAR_TARGETS', {}).items():
-+        for name, jar in list(context.get('JAVA_JAR_TARGETS', {}).items()):
-             yield ContextWrapped(context, jar)
- 
-         computed_as_flags.resolve_flags('MOZBUILD',
-@@ -1346,7 +1346,7 @@ class TreeMetadataEmitter(LoggingMixin):
-             script = mozpath.join(mozpath.dirname(mozpath.dirname(__file__)),
-                                   'action', 'process_define_files.py')
-             yield GeneratedFile(context, script, 'process_define_file',
--                                unicode(path),
-+                                str(path),
-                                 [Path(context, path + '.in')])
- 
-         generated_files = context.get('GENERATED_FILES') or []
-@@ -1393,7 +1393,7 @@ class TreeMetadataEmitter(LoggingMixin):
-                                     flags.flags, localized=localized)
- 
-     def _process_test_manifests(self, context):
--        for prefix, info in TEST_MANIFESTS.items():
-+        for prefix, info in list(TEST_MANIFESTS.items()):
-             for path, manifest in context.get('%s_MANIFESTS' % prefix, []):
-                 for obj in self._process_test_manifest(context, info, path, manifest):
-                     yield obj
-@@ -1479,7 +1479,7 @@ class TreeMetadataEmitter(LoggingMixin):
- 
-                 process_support_files(test)
- 
--            for path, m_defaults in mpmanifest.manifest_defaults.items():
-+            for path, m_defaults in list(mpmanifest.manifest_defaults.items()):
-                 process_support_files(m_defaults)
- 
-             # We also copy manifests into the output directory,
-diff --git a/python/mozbuild/mozbuild/frontend/reader.py b/python/mozbuild/mozbuild/frontend/reader.py
-index c1efc1c3d..0cdf8b8db 100644
---- a/python/mozbuild/mozbuild/frontend/reader.py
-+++ b/python/mozbuild/mozbuild/frontend/reader.py
-@@ -16,7 +16,7 @@ The BuildReader contains basic logic for traversing a tree of mozbuild files.
- It does this by examining specific variables populated during execution.
- """
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import ast
- import inspect
-@@ -81,12 +81,13 @@ from .context import (
- 
- from mozbuild.base import ExecutionSummary
- from concurrent.futures.process import ProcessPoolExecutor
-+from functools import reduce
- 
- 
- 
- if sys.version_info.major == 2:
--    text_type = unicode
--    type_type = types.TypeType
-+    text_type = str
-+    type_type = type
- else:
-     text_type = str
-     type_type = type
-@@ -127,7 +128,7 @@ class EmptyConfig(object):
- 
-         self.substs = self.PopulateOnGetDict(EmptyValue, substs or self.default_substs)
-         udict = {}
--        for k, v in self.substs.items():
-+        for k, v in list(self.substs.items()):
-             if isinstance(v, str):
-                 udict[k.decode('utf-8')] = v.decode('utf-8')
-             else:
-@@ -311,7 +312,7 @@ class MozbuildSandbox(Sandbox):
-             raise Exception('`template` is a function decorator. You must '
-                 'use it as `@template` preceding a function declaration.')
- 
--        name = func.func_name
-+        name = func.__name__
- 
-         if name in self.templates:
-             raise KeyError(
-@@ -390,7 +391,7 @@ class MozbuildSandbox(Sandbox):
-             klass = self._context.__class__
-             self._context.__class__ = TemplateContext
-             # The sandbox will do all the necessary checks for these merges.
--            for key, value in context.items():
-+            for key, value in list(context.items()):
-                 if isinstance(value, dict):
-                     self[key].update(value)
-                 elif isinstance(value, (list, HierarchicalStringList)):
-@@ -407,12 +408,14 @@ class MozbuildSandbox(Sandbox):
- 
- class TemplateFunction(object):
-     def __init__(self, func, sandbox):
--        self.path = func.func_code.co_filename
--        self.name = func.func_name
-+        self.path = func.__code__.co_filename
-+        self.name = func.__name__
- 
--        code = func.func_code
-+        code = func.__code__
-         firstlineno = code.co_firstlineno
-         lines = sandbox._current_source.splitlines(True)
-+        if len(lines) and isinstance(lines[0], bytes):
-+            lines = [l.decode('utf-8') for l in lines]
-         lines = inspect.getblock(lines[firstlineno - 1:])
- 
-         # The code lines we get out of inspect.getsourcelines look like
-@@ -430,7 +433,7 @@ class TemplateFunction(object):
-         # actually never calls __getitem__ and __setitem__, so we need to
-         # modify the AST so that accesses to globals are properly directed
-         # to a dict.
--        self._global_name = b'_data' # AST wants str for this, not unicode
-+        self._global_name = '_data'
-         # In case '_data' is a name used for a variable in the function code,
-         # prepend more underscores until we find an unused name.
-         while (self._global_name in code.co_names or
-@@ -449,8 +452,8 @@ class TemplateFunction(object):
-             compile(func_ast, self.path, 'exec'),
-             glob,
-             self.name,
--            func.func_defaults,
--            func.func_closure,
-+            func.__defaults__,
-+            func.__closure__,
-         )
-         func()
- 
-@@ -464,11 +467,11 @@ class TemplateFunction(object):
-             '__builtins__': sandbox._builtins
-         }
-         func = types.FunctionType(
--            self._func.func_code,
-+            self._func.__code__,
-             glob,
-             self.name,
--            self._func.func_defaults,
--            self._func.func_closure
-+            self._func.__defaults__,
-+            self._func.__closure__
-         )
-         sandbox.exec_function(func, args, kwargs, self.path,
-                               becomes_current_path=False)
-@@ -484,7 +487,7 @@ class TemplateFunction(object):
-         def visit_Str(self, node):
-             # String nodes we got from the AST parser are str, but we want
-             # unicode literals everywhere, so transform them.
--            node.s = unicode(node.s)
-+            node.s = str(node.s)
-             return node
- 
-         def visit_Name(self, node):
-@@ -617,7 +620,7 @@ class BuildReaderError(Exception):
- 
-             for l in traceback.format_exception(type(self.other), self.other,
-                 self.trace):
--                s.write(unicode(l))
-+                s.write(str(l))
- 
-         return s.getvalue()
- 
-@@ -767,7 +770,7 @@ class BuildReaderError(Exception):
-             s.write('    %s\n' % inner.args[2])
-             s.write('\n')
-             close_matches = difflib.get_close_matches(inner.args[2],
--                                                      VARIABLES.keys(), 2)
-+                                                      list(VARIABLES.keys()), 2)
-             if close_matches:
-                 s.write('Maybe you meant %s?\n' % ' or '.join(close_matches))
-                 s.write('\n')
-@@ -1152,7 +1155,7 @@ class BuildReader(object):
-                         context)
-                 non_unified_sources.add(source)
-             action_overrides = {}
--            for action, script in gyp_dir.action_overrides.iteritems():
-+            for action, script in gyp_dir.action_overrides.items():
-                 action_overrides[action] = SourcePath(context, script)
- 
-             gyp_processor = GypProcessor(context.config,
-@@ -1188,7 +1191,7 @@ class BuildReader(object):
- 
-                 recurse_info[d][key] = dict(sandbox.metadata[key])
- 
--        for path, child_metadata in recurse_info.items():
-+        for path, child_metadata in list(recurse_info.items()):
-             child_path = path.join('moz.build').full_path
- 
-             # Ensure we don't break out of the topsrcdir. We don't do realpath
-@@ -1279,7 +1282,7 @@ class BuildReader(object):
-         # There is room to improve this code (and the code in
-         # _find_relevant_mozbuilds) to better handle multiple files in the same
-         # directory. Bug 1136966 tracks.
--        for path, mbpaths in relevants.items():
-+        for path, mbpaths in list(relevants.items()):
-             path_mozbuilds[path] = [mozpath.join(topsrcdir, p) for p in mbpaths]
- 
-             for i, mbpath in enumerate(mbpaths[0:-1]):
-@@ -1316,7 +1319,7 @@ class BuildReader(object):
-             all_contexts.append(context)
- 
-         result = {}
--        for path, paths in path_mozbuilds.items():
-+        for path, paths in list(path_mozbuilds.items()):
-             result[path] = reduce(lambda x, y: x + y, (contexts[p] for p in paths), [])
- 
-         return result, all_contexts
-@@ -1356,7 +1359,7 @@ class BuildReader(object):
- 
-         r = {}
- 
--        for path, ctxs in paths.items():
-+        for path, ctxs in list(paths.items()):
-             # Should be normalized by read_relevant_mozbuilds.
-             assert '\\' not in path
- 
-diff --git a/python/mozbuild/mozbuild/frontend/sandbox.py b/python/mozbuild/mozbuild/frontend/sandbox.py
-index b2090802e..6d94291ea 100644
---- a/python/mozbuild/mozbuild/frontend/sandbox.py
-+++ b/python/mozbuild/mozbuild/frontend/sandbox.py
-@@ -17,7 +17,7 @@ KeyError are machine parseable. This machine-friendly data is used to present
- user-friendly error messages in the case of errors.
- """
- 
--from __future__ import absolute_import, unicode_literals
-+
- 
- import os
- import sys
-@@ -112,6 +112,7 @@ class Sandbox(dict):
-         'int': int,
-         'set': set,
-         'tuple': tuple,
-+        'str': str,
-     })
- 
-     def __init__(self, context, finder=default_finder):
-diff --git a/python/mozbuild/mozbuild/jar.py b/python/mozbuild/mozbuild/jar.py
-index 47a2eff63..96aea63ce 100644
---- a/python/mozbuild/mozbuild/jar.py
-+++ b/python/mozbuild/mozbuild/jar.py
-@@ -8,7 +8,7 @@ processing jar.mn files.
- See the documentation for jar.mn on MDC for further details on the format.
- '''
- 
--from __future__ import absolute_import
-+
- 
- import sys
- import os
-@@ -17,7 +17,7 @@ import re
- import logging
- from time import localtime
- from MozZipFile import ZipFile
--from cStringIO import StringIO
-+from io import StringIO
- from collections import defaultdict
- 
- from mozbuild.preprocessor import Preprocessor
-@@ -302,9 +302,9 @@ class JarMaker(object):
-         '''updateManifest replaces the % in the chrome registration entries
-         with the given chrome base path, and updates the given manifest file.
-         '''
--        myregister = dict.fromkeys(map(lambda s: s.replace('%',
--            chromebasepath), register))
--        addEntriesToListFile(manifestPath, myregister.iterkeys())
-+        myregister = dict.fromkeys([s.replace('%',
-+            chromebasepath) for s in register])
-+        addEntriesToListFile(manifestPath, iter(myregister.keys()))
- 
-     def makeJar(self, infile, jardir):
-         '''makeJar is the main entry point to JarMaker.
-@@ -322,7 +322,7 @@ class JarMaker(object):
-         elif self.relativesrcdir:
-             self.localedirs = \
-                 self.generateLocaleDirs(self.relativesrcdir)
--        if isinstance(infile, basestring):
-+        if isinstance(infile, str):
-             logging.info('processing ' + infile)
-             self.sourcedirs.append(_normpath(os.path.dirname(infile)))
-         pp = self.pp.clone()
-diff --git a/python/mozbuild/mozbuild/makeutil.py b/python/mozbuild/mozbuild/makeutil.py
-index fcd45bed2..f77c5d2c3 100644
---- a/python/mozbuild/mozbuild/makeutil.py
-+++ b/python/mozbuild/mozbuild/makeutil.py
-@@ -2,11 +2,10 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import
-+
- 
- import os
- import re
--from types import StringTypes
- from collections import Iterable
- 
- 
-@@ -66,7 +65,7 @@ class _SimpleOrderedSet(object):
-         self._list = []
-         self._set = set()
- 
--    def __nonzero__(self):
-+    def __bool__(self):
-         return bool(self._set)
- 
-     def __iter__(self):
-@@ -103,19 +102,19 @@ class Rule(object):
- 
-     def add_targets(self, targets):
-         '''Add additional targets to the rule.'''
--        assert isinstance(targets, Iterable) and not isinstance(targets, StringTypes)
-+        assert isinstance(targets, Iterable) and not isinstance(targets, str)
-         self._targets.update(targets)
-         return self
- 
-     def add_dependencies(self, deps):
-         '''Add dependencies to the rule.'''
--        assert isinstance(deps, Iterable) and not isinstance(deps, StringTypes)
-+        assert isinstance(deps, Iterable) and not isinstance(deps, str)
-         self._dependencies.update(deps)
-         return self
- 
-     def add_commands(self, commands):
-         '''Add commands to the rule.'''
--        assert isinstance(commands, Iterable) and not isinstance(commands, StringTypes)
-+        assert isinstance(commands, Iterable) and not isinstance(commands, str)
-         self._commands.extend(commands)
-         return self
- 
-@@ -139,13 +138,16 @@ class Rule(object):
-         '''
-         if not self._targets:
-             return
--        fh.write('%s:' % ' '.join(self._targets))
-+        wstring = '%s:' % ' '.join(self._targets)
-         if self._dependencies:
--            fh.write(' %s' % ' '.join(self.dependencies()))
--        fh.write('\n')
-+            wstring += ' %s' % ' '.join(self.dependencies())
-+        wstring += '\n'
-         for cmd in self._commands:
--            fh.write('\t%s\n' % cmd)
--
-+            wstring += '\t%s\n' % cmd
-+        try:
-+            fh.write(wstring.encode('utf-8'))
-+        except TypeError:
-+            fh.write(wstring)
- 
- # colon followed by anything except a slash (Windows path detection)
- _depfilesplitter = re.compile(r':(?![\\/])')
-diff --git a/python/mozbuild/mozbuild/mozinfo.py b/python/mozbuild/mozbuild/mozinfo.py
-index 7e7ad1b2a..f03f20ba3 100755
---- a/python/mozbuild/mozbuild/mozinfo.py
-+++ b/python/mozbuild/mozbuild/mozinfo.py
-@@ -5,7 +5,7 @@
- # This module produces a JSON file that provides basic build info and
- # configuration metadata.
- 
--from __future__ import absolute_import
-+
- 
- import os
- import re
-@@ -33,7 +33,7 @@ def build_dict(config, env=os.environ):
-         d['mozconfig'] = config.mozconfig
- 
-     # os
--    o = substs["OS_TARGET"]
-+    o = str(substs["OS_TARGET"])
-     known_os = {"Linux": "linux",
-                 "WINNT": "win",
-                 "Darwin": "mac",
-@@ -148,7 +148,7 @@ def write_mozinfo(file, config, env=os.environ):
-     and what keys are produced.
-     """
-     build_conf = build_dict(config, env)
--    if isinstance(file, basestring):
--        file = open(file, 'wb')
-+    if isinstance(file, str):
-+        file = open(file, 'w')
- 
-     json.dump(build_conf, file, sort_keys=True, indent=4)
-diff --git a/python/mozbuild/mozbuild/preprocessor.py b/python/mozbuild/mozbuild/preprocessor.py
-index 6780b8b72..19e59884e 100644
---- a/python/mozbuild/mozbuild/preprocessor.py
-+++ b/python/mozbuild/mozbuild/preprocessor.py
-@@ -27,7 +27,8 @@ import os
- import re
- from optparse import OptionParser
- import errno
--from makeutil import Makefile
-+from .makeutil import Makefile
-+from functools import reduce
- 
- # hack around win32 mangling our line endings
- # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65443
-@@ -230,7 +231,7 @@ class Expression:
-         def __repr__(self):
-             return self.value.__repr__()
- 
--    class ParseError(StandardError):
-+    class ParseError(Exception):
-         """
-         Error raised when parsing fails.
-         It has two members, offset and content, which give the offset of the
-@@ -278,7 +279,7 @@ class Preprocessor:
-         self.context = Context()
-         for k,v in {'FILE': '',
-                     'LINE': 0,
--                    'DIRECTORY': os.path.abspath('.')}.iteritems():
-+                    'DIRECTORY': os.path.abspath('.')}.items():
-             self.context[k] = v
-         self.actionLevel = 0
-         self.disableLevel = 0
-@@ -292,21 +293,21 @@ class Preprocessor:
-         self.cmds = {}
-         for cmd, level in {'define': 0,
-                            'undef': 0,
--                           'if': sys.maxint,
--                           'ifdef': sys.maxint,
--                           'ifndef': sys.maxint,
-+                           'if': sys.maxsize,
-+                           'ifdef': sys.maxsize,
-+                           'ifndef': sys.maxsize,
-                            'else': 1,
-                            'elif': 1,
-                            'elifdef': 1,
-                            'elifndef': 1,
--                           'endif': sys.maxint,
-+                           'endif': sys.maxsize,
-                            'expand': 0,
-                            'literal': 0,
-                            'filter': 0,
-                            'unfilter': 0,
-                            'include': 0,
-                            'includesubst': 0,
--                           'error': 0}.iteritems():
-+                           'error': 0}.items():
-             self.cmds[cmd] = (level, getattr(self, 'do_' + cmd))
-         self.out = sys.stdout
-         self.setMarker(marker)
-@@ -434,7 +435,7 @@ class Preprocessor:
-         filteredLine = self.applyFilters(aLine)
-         if filteredLine != aLine:
-             self.actionLevel = 2
--        self.out.write(filteredLine)
-+        self.out.write(filteredLine.encode('utf-8'))
- 
-     def handleCommandLine(self, args, defaultToStdin = False):
-         """
-@@ -468,7 +469,7 @@ class Preprocessor:
-                 raise Preprocessor.Error(self, "--depend doesn't work with stdout",
-                                          None)
-             try:
--                from makeutil import Makefile
-+                from .makeutil import Makefile
-             except:
-                 raise Preprocessor.Error(self, "--depend requires the "
-                                                "mozbuild.makeutil module", None)
-@@ -683,7 +684,7 @@ class Preprocessor:
-         current = dict(self.filters)
-         for f in filters:
-             current[f] = getattr(self, 'filter_' + f)
--        filterNames = current.keys()
-+        filterNames = list(current.keys())
-         filterNames.sort()
-         self.filters = [(fn, current[fn]) for fn in filterNames]
-         return
-@@ -693,7 +694,7 @@ class Preprocessor:
-         for f in filters:
-             if f in current:
-                 del current[f]
--        filterNames = current.keys()
-+        filterNames = list(current.keys())
-         filterNames.sort()
-         self.filters = [(fn, current[fn]) for fn in filterNames]
-         return
-@@ -738,7 +739,7 @@ class Preprocessor:
-         args can either be a file name, or a file-like object.
-         Files should be opened, and will be closed after processing.
-         """
--        isName = type(args) == str or type(args) == unicode
-+        isName = type(args) == str or type(args) == str
-         oldCheckLineNumbers = self.checkLineNumbers
-         self.checkLineNumbers = False
-         if isName:
-diff --git a/python/mozbuild/mozbuild/shellutil.py b/python/mozbuild/mozbuild/shellutil.py
-index 185a970ee..c0c15f8f2 100644
---- a/python/mozbuild/mozbuild/shellutil.py
-+++ b/python/mozbuild/mozbuild/shellutil.py
-@@ -15,7 +15,7 @@ def _tokens2re(**tokens):
-     # which matches the pattern and captures it in a named match group.
-     # The group names and patterns are given as arguments.
-     all_tokens = '|'.join('(?P<%s>%s)' % (name, value)
--                          for name, value in tokens.iteritems())
-+                          for name, value in tokens.items())
-     nonescaped = r'(?<!\\)(?:%s)' % all_tokens
- 
-     # The final pattern matches either the above pattern, or an escaped
-@@ -96,7 +96,7 @@ class _ClineSplitter(object):
-             self.cline = self.cline[m.end():]
- 
-             match = {name: value
--                     for name, value in m.groupdict().items() if value}
-+                     for name, value in list(m.groupdict().items()) if value}
-             if 'quote' in match:
-                 # " or ' start a quoted string
-                 if match['quote'] == '"':
-@@ -144,7 +144,7 @@ class _ClineSplitter(object):
-             self._push(self.cline[:m.start()])
-             self.cline = self.cline[m.end():]
-             match = {name: value
--                     for name, value in m.groupdict().items() if value}
-+                     for name, value in list(m.groupdict().items()) if value}
-             if 'quote' in match:
-                 # a double quote ends the quoted string, so go back to
-                 # unquoted parsing
-diff --git a/python/mozbuild/mozbuild/test/backend/test_recursivemake.py b/python/mozbuild/mozbuild/test/backend/test_recursivemake.py
-index a05059f8a..355a96165 100644
---- a/python/mozbuild/mozbuild/test/backend/test_recursivemake.py
-+++ b/python/mozbuild/mozbuild/test/backend/test_recursivemake.py
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import unicode_literals
- 
--import cPickle as pickle
-+
-+import pickle as pickle
- import json
- import os
- import unittest
-@@ -333,7 +333,7 @@ class TestRecursiveMakeBackend(BackendTester):
-             ],
-         }
- 
--        for var, val in expected.items():
-+        for var, val in list(expected.items()):
-             # print("test_variable_passthru[%s]" % (var))
-             found = [str for str in lines if str.startswith(var)]
-             self.assertEqual(found, val)
-@@ -372,7 +372,7 @@ class TestRecursiveMakeBackend(BackendTester):
-             ],
-         }
- 
--        for var, val in expected.items():
-+        for var, val in list(expected.items()):
-             found = [str for str in lines if str.startswith(var)]
-             self.assertEqual(found, val)
- 
-@@ -563,7 +563,7 @@ class TestRecursiveMakeBackend(BackendTester):
- 
-         # This is not the most robust test in the world, but it gets the job
-         # done.
--        entries = [e for e in m._dests.keys() if '**' in e]
-+        entries = [e for e in list(m._dests.keys()) if '**' in e]
-         self.assertEqual(len(entries), 1)
-         self.assertIn('support/**', entries[0])
- 
-@@ -590,11 +590,11 @@ class TestRecursiveMakeBackend(BackendTester):
-                          set(['child/test_sub.js',
-                               'child/data/**',
-                               'child/another-file.sjs']))
--        for key in test_installs.keys():
-+        for key in list(test_installs.keys()):
-             self.assertIn(key, test_installs)
- 
-         synthesized_manifest = InstallManifest()
--        for item, installs in test_installs.items():
-+        for item, installs in list(test_installs.items()):
-             for install_info in installs:
-                 if len(install_info) == 3:
-                     synthesized_manifest.add_pattern_link(*install_info)
-@@ -602,7 +602,7 @@ class TestRecursiveMakeBackend(BackendTester):
-                     synthesized_manifest.add_link(*install_info)
- 
-         self.assertEqual(len(synthesized_manifest), 3)
--        for item, info in synthesized_manifest._dests.items():
-+        for item, info in list(synthesized_manifest._dests.items()):
-             self.assertIn(item, m)
-             self.assertEqual(info, m._dests[item])
- 
-@@ -864,7 +864,7 @@ class TestRecursiveMakeBackend(BackendTester):
-         expected[mozpath.join(env.topobjdir, 'final-target')] = [
-             'FINAL_TARGET = $(DEPTH)/random-final-target'
-         ]
--        for key, expected_rules in expected.iteritems():
-+        for key, expected_rules in expected.items():
-             backend_path = mozpath.join(key, 'backend.mk')
-             lines = [l.strip() for l in open(backend_path, 'rt').readlines()[2:]]
-             found = [str for str in lines if
-diff --git a/python/mozbuild/mozbuild/test/configure/common.py b/python/mozbuild/mozbuild/test/configure/common.py
-index 150c6e393..5e2c2afaa 100644
---- a/python/mozbuild/mozbuild/test/configure/common.py
-+++ b/python/mozbuild/mozbuild/test/configure/common.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import copy
- import errno
-@@ -16,7 +16,7 @@ from mozbuild.configure import ConfigureSandbox
- from mozbuild.util import ReadOnlyNamespace
- from mozpack import path as mozpath
- 
--from StringIO import StringIO
-+from io import StringIO
- from which import WhichError
- 
- from buildconfig import (
-@@ -77,10 +77,10 @@ class ConfigureTestSandbox(ConfigureSandbox):
-         self._search_path = environ.get('PATH', '').split(os.pathsep)
- 
-         self._subprocess_paths = {
--            mozpath.abspath(k): v for k, v in paths.iteritems() if v
-+            mozpath.abspath(k): v for k, v in paths.items() if v
-         }
- 
--        paths = paths.keys()
-+        paths = list(paths.keys())
- 
-         environ = dict(environ)
-         if 'CONFIG_SHELL' not in environ:
-diff --git a/python/mozbuild/mozbuild/test/configure/lint.py b/python/mozbuild/mozbuild/test/configure/lint.py
-index 98f5f4fe7..a549b4bcf 100644
---- a/python/mozbuild/mozbuild/test/configure/lint.py
-+++ b/python/mozbuild/mozbuild/test/configure/lint.py
-@@ -2,11 +2,11 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import os
- import unittest
--from StringIO import StringIO
-+from io import StringIO
- from mozunit import main
- from buildconfig import (
-     topobjdir,
-@@ -40,9 +40,7 @@ class LintMeta(type):
-         return type.__new__(mcs, name, bases, attrs)
- 
- 
--class Lint(unittest.TestCase):
--    __metaclass__ = LintMeta
--
-+class Lint(unittest.TestCase, metaclass=LintMeta):
-     def setUp(self):
-         self._curdir = os.getcwd()
-         os.chdir(topobjdir)
-diff --git a/python/mozbuild/mozbuild/test/configure/test_checks_configure.py b/python/mozbuild/mozbuild/test/configure/test_checks_configure.py
-index c60000bb2..07091c077 100644
---- a/python/mozbuild/mozbuild/test/configure/test_checks_configure.py
-+++ b/python/mozbuild/mozbuild/test/configure/test_checks_configure.py
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
- 
--from StringIO import StringIO
-+
-+from io import StringIO
- import os
- import sys
- import textwrap
-@@ -447,7 +447,7 @@ class TestChecksConfigure(unittest.TestCase):
-             checking for a... %s
-         ''' % self.OTHER_A))
- 
--        dirs = map(mozpath.dirname, (self.OTHER_A, self.KNOWN_A))
-+        dirs = list(map(mozpath.dirname, (self.OTHER_A, self.KNOWN_A)))
-         config, out, status = self.get_result(textwrap.dedent('''\
-             check_prog("A", ("known-a",), paths=["%s"])
-         ''' % os.pathsep.join(dirs)))
-@@ -457,7 +457,7 @@ class TestChecksConfigure(unittest.TestCase):
-             checking for a... %s
-         ''' % self.OTHER_A))
- 
--        dirs = map(mozpath.dirname, (self.KNOWN_A, self.KNOWN_B))
-+        dirs = list(map(mozpath.dirname, (self.KNOWN_A, self.KNOWN_B)))
-         config, out, status = self.get_result(textwrap.dedent('''\
-             check_prog("A", ("known-a",), paths=["%s", "%s"])
-         ''' % (os.pathsep.join(dirs), self.OTHER_A)))
-diff --git a/python/mozbuild/mozbuild/test/configure/test_compile_checks.py b/python/mozbuild/mozbuild/test/configure/test_compile_checks.py
-index b5be3bf2e..282000bb2 100644
---- a/python/mozbuild/mozbuild/test/configure/test_compile_checks.py
-+++ b/python/mozbuild/mozbuild/test/configure/test_compile_checks.py
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import os
- import textwrap
- import unittest
- import mozpack.path as mozpath
- 
--from StringIO import StringIO
-+from io import StringIO
- 
- from buildconfig import topsrcdir
- from common import ConfigureTestSandbox
-diff --git a/python/mozbuild/mozbuild/test/configure/test_configure.py b/python/mozbuild/mozbuild/test/configure/test_configure.py
-index f37e2701f..eb0ca84fb 100644
---- a/python/mozbuild/mozbuild/test/configure/test_configure.py
-+++ b/python/mozbuild/mozbuild/test/configure/test_configure.py
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
- 
--from StringIO import StringIO
-+
-+from io import StringIO
- import os
- import sys
- import textwrap
-@@ -43,7 +43,7 @@ class TestConfigure(unittest.TestCase):
- 
-         if '--help' in options:
-             return out.getvalue(), config
--        self.assertEquals('', out.getvalue())
-+        self.assertEqual('', out.getvalue())
-         return config
- 
-     def moz_configure(self, source):
-@@ -55,7 +55,7 @@ class TestConfigure(unittest.TestCase):
-     def test_defaults(self):
-         config = self.get_config()
-         self.maxDiff = None
--        self.assertEquals({
-+        self.assertEqual({
-             'CHOICES': NegativeOptionValue(),
-             'DEFAULTED': PositiveOptionValue(('not-simple',)),
-             'IS_GCC': NegativeOptionValue(),
-@@ -71,9 +71,9 @@ class TestConfigure(unittest.TestCase):
-     def test_help(self):
-         help, config = self.get_config(['--help'], prog='configure')
- 
--        self.assertEquals({}, config)
-+        self.assertEqual({}, config)
-         self.maxDiff = None
--        self.assertEquals(
-+        self.assertEqual(
-             'Usage: configure [options]\n'
-             '\n'
-             'Options: [defaults in brackets after descriptions]\n'
-@@ -109,7 +109,7 @@ class TestConfigure(unittest.TestCase):
-         ):
-             self.assertNotIn('ENABLED_SIMPLE', config)
-             self.assertIn('SIMPLE', config)
--            self.assertEquals(NegativeOptionValue(), config['SIMPLE'])
-+            self.assertEqual(NegativeOptionValue(), config['SIMPLE'])
- 
-         for config in (
-                 self.get_config(['--enable-simple']),
-@@ -117,7 +117,7 @@ class TestConfigure(unittest.TestCase):
-         ):
-             self.assertIn('ENABLED_SIMPLE', config)
-             self.assertIn('SIMPLE', config)
--            self.assertEquals(PositiveOptionValue(), config['SIMPLE'])
-+            self.assertEqual(PositiveOptionValue(), config['SIMPLE'])
-             self.assertIs(config['SIMPLE'], config['ENABLED_SIMPLE'])
- 
-         # --enable-simple doesn't take values.
-@@ -135,7 +135,7 @@ class TestConfigure(unittest.TestCase):
-                                 env={'MOZ_WITH_ENV': '1'}),
-         ):
-             self.assertIn('WITH_ENV', config)
--            self.assertEquals(NegativeOptionValue(), config['WITH_ENV'])
-+            self.assertEqual(NegativeOptionValue(), config['WITH_ENV'])
- 
-         for config in (
-                 self.get_config(['--enable-with-env']),
-@@ -145,7 +145,7 @@ class TestConfigure(unittest.TestCase):
-                                 env={'MOZ_WITH_ENV': ''}),
-         ):
-             self.assertIn('WITH_ENV', config)
--            self.assertEquals(PositiveOptionValue(), config['WITH_ENV'])
-+            self.assertEqual(PositiveOptionValue(), config['WITH_ENV'])
- 
-         with self.assertRaises(InvalidOptionError):
-             self.get_config(['--enable-with-env=value'])
-@@ -160,23 +160,23 @@ class TestConfigure(unittest.TestCase):
-             self.get_config(['--enable-values', '--disable-values']),
-         ):
-             self.assertIn(name, config)
--            self.assertEquals(NegativeOptionValue(), config[name])
-+            self.assertEqual(NegativeOptionValue(), config[name])
- 
-         for config in (
-             self.get_config(['--enable-values']),
-             self.get_config(['--disable-values', '--enable-values']),
-         ):
-             self.assertIn(name, config)
--            self.assertEquals(PositiveOptionValue(), config[name])
-+            self.assertEqual(PositiveOptionValue(), config[name])
- 
-         config = self.get_config(['--enable-values=foo'])
-         self.assertIn(name, config)
--        self.assertEquals(PositiveOptionValue(('foo',)), config[name])
-+        self.assertEqual(PositiveOptionValue(('foo',)), config[name])
- 
-         config = self.get_config(['--enable-values=foo,bar'])
-         self.assertIn(name, config)
-         self.assertTrue(config[name])
--        self.assertEquals(PositiveOptionValue(('foo', 'bar')), config[name])
-+        self.assertEqual(PositiveOptionValue(('foo', 'bar')), config[name])
- 
-     def test_values2(self):
-         self.test_values('VALUES2')
-@@ -187,12 +187,12 @@ class TestConfigure(unittest.TestCase):
-     def test_returned_default(self):
-         config = self.get_config(['--enable-simple'])
-         self.assertIn('DEFAULTED', config)
--        self.assertEquals(
-+        self.assertEqual(
-             PositiveOptionValue(('simple',)), config['DEFAULTED'])
- 
-         config = self.get_config(['--disable-simple'])
-         self.assertIn('DEFAULTED', config)
--        self.assertEquals(
-+        self.assertEqual(
-             PositiveOptionValue(('not-simple',)), config['DEFAULTED'])
- 
-     def test_returned_choices(self):
-@@ -200,13 +200,13 @@ class TestConfigure(unittest.TestCase):
-             config = self.get_config(
-                 ['--enable-values=alpha', '--returned-choices=%s' % val])
-             self.assertIn('CHOICES', config)
--            self.assertEquals(PositiveOptionValue((val,)), config['CHOICES'])
-+            self.assertEqual(PositiveOptionValue((val,)), config['CHOICES'])
- 
-         for val in ('0', '1', '2'):
-             config = self.get_config(
-                 ['--enable-values=numeric', '--returned-choices=%s' % val])
-             self.assertIn('CHOICES', config)
--            self.assertEquals(PositiveOptionValue((val,)), config['CHOICES'])
-+            self.assertEqual(PositiveOptionValue((val,)), config['CHOICES'])
- 
-         with self.assertRaises(InvalidOptionError):
-             self.get_config(['--enable-values=numeric',
-@@ -218,12 +218,12 @@ class TestConfigure(unittest.TestCase):
-     def test_included(self):
-         config = self.get_config(env={'CC': 'gcc'})
-         self.assertIn('IS_GCC', config)
--        self.assertEquals(config['IS_GCC'], True)
-+        self.assertEqual(config['IS_GCC'], True)
- 
-         config = self.get_config(
-             ['--enable-include=extra.configure', '--extra'])
-         self.assertIn('EXTRA', config)
--        self.assertEquals(PositiveOptionValue(), config['EXTRA'])
-+        self.assertEqual(PositiveOptionValue(), config['EXTRA'])
- 
-         with self.assertRaises(InvalidOptionError):
-             self.get_config(['--extra'])
-@@ -231,7 +231,7 @@ class TestConfigure(unittest.TestCase):
-     def test_template(self):
-         config = self.get_config(env={'CC': 'gcc'})
-         self.assertIn('CFLAGS', config)
--        self.assertEquals(config['CFLAGS'], ['-Werror=foobar'])
-+        self.assertEqual(config['CFLAGS'], ['-Werror=foobar'])
- 
-         config = self.get_config(env={'CC': 'clang'})
-         self.assertNotIn('CFLAGS', config)
-@@ -288,7 +288,7 @@ class TestConfigure(unittest.TestCase):
-             sandbox
-         )
- 
--        import __builtin__
-+        import builtins
-         self.assertIs(sandbox['foo'](), __builtin__)
- 
-         exec_(textwrap.dedent('''
-@@ -300,7 +300,7 @@ class TestConfigure(unittest.TestCase):
-         )
- 
-         f = sandbox['foo']()
--        self.assertEquals(f.name, os.devnull)
-+        self.assertEqual(f.name, os.devnull)
-         f.close()
- 
-         # This unlocks the sandbox
-@@ -336,8 +336,8 @@ class TestConfigure(unittest.TestCase):
-         self.assertIs(sandbox['foo'](), sandbox)
- 
-         # Nothing leaked from the function being executed
--        self.assertEquals(sandbox.keys(), ['__builtins__', 'foo'])
--        self.assertEquals(sandbox['__builtins__'], ConfigureSandbox.BUILTINS)
-+        self.assertEqual(list(sandbox.keys()), ['__builtins__', 'foo'])
-+        self.assertEqual(sandbox['__builtins__'], ConfigureSandbox.BUILTINS)
- 
-         exec_(textwrap.dedent('''
-             @template
-@@ -354,7 +354,7 @@ class TestConfigure(unittest.TestCase):
-         with self.assertRaises(NameError) as e:
-             sandbox._depends[sandbox['bar']].result()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "global name 'sys' is not defined")
- 
-     def test_apply_imports(self):
-@@ -380,28 +380,28 @@ class TestConfigure(unittest.TestCase):
-             sandbox
-         )
- 
--        self.assertEquals(len(imports), 1)
-+        self.assertEqual(len(imports), 1)
- 
-     def test_os_path(self):
-         config = self.get_config(['--with-imports=%s' % __file__])
-         self.assertIn('HAS_ABSPATH', config)
--        self.assertEquals(config['HAS_ABSPATH'], True)
-+        self.assertEqual(config['HAS_ABSPATH'], True)
-         self.assertIn('HAS_GETATIME', config)
--        self.assertEquals(config['HAS_GETATIME'], True)
-+        self.assertEqual(config['HAS_GETATIME'], True)
-         self.assertIn('HAS_GETATIME2', config)
--        self.assertEquals(config['HAS_GETATIME2'], False)
-+        self.assertEqual(config['HAS_GETATIME2'], False)
- 
-     def test_template_call(self):
-         config = self.get_config(env={'CC': 'gcc'})
-         self.assertIn('TEMPLATE_VALUE', config)
--        self.assertEquals(config['TEMPLATE_VALUE'], 42)
-+        self.assertEqual(config['TEMPLATE_VALUE'], 42)
-         self.assertIn('TEMPLATE_VALUE_2', config)
--        self.assertEquals(config['TEMPLATE_VALUE_2'], 21)
-+        self.assertEqual(config['TEMPLATE_VALUE_2'], 21)
- 
-     def test_template_imports(self):
-         config = self.get_config(['--enable-imports-in-template'])
-         self.assertIn('PLATFORM', config)
--        self.assertEquals(config['PLATFORM'], sys.platform)
-+        self.assertEqual(config['PLATFORM'], sys.platform)
- 
-     def test_decorators(self):
-         config = {}
-@@ -419,27 +419,27 @@ class TestConfigure(unittest.TestCase):
-             return self.get_config(*args, configure='set_config.configure')
- 
-         help, config = get_config(['--help'])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         config = get_config(['--set-foo'])
-         self.assertIn('FOO', config)
--        self.assertEquals(config['FOO'], True)
-+        self.assertEqual(config['FOO'], True)
- 
-         config = get_config(['--set-bar'])
-         self.assertNotIn('FOO', config)
-         self.assertIn('BAR', config)
--        self.assertEquals(config['BAR'], True)
-+        self.assertEqual(config['BAR'], True)
- 
-         config = get_config(['--set-value=qux'])
-         self.assertIn('VALUE', config)
--        self.assertEquals(config['VALUE'], 'qux')
-+        self.assertEqual(config['VALUE'], 'qux')
- 
-         config = get_config(['--set-name=hoge'])
-         self.assertIn('hoge', config)
--        self.assertEquals(config['hoge'], True)
-+        self.assertEqual(config['hoge'], True)
- 
-         config = get_config([])
--        self.assertEquals(config, {'BAR': False})
-+        self.assertEqual(config, {'BAR': False})
- 
-         with self.assertRaises(ConfigureError):
-             # Both --set-foo and --set-name=FOO are going to try to
-@@ -454,11 +454,11 @@ class TestConfigure(unittest.TestCase):
-             set_config('QUX', 'qux', when='--with-qux')
-         '''):
-             config = self.get_config()
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'FOO': 'foo',
-             })
-             config = self.get_config(['--with-qux'])
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'FOO': 'foo',
-                 'QUX': 'qux',
-             })
-@@ -468,27 +468,27 @@ class TestConfigure(unittest.TestCase):
-             return self.get_config(*args, configure='set_define.configure')
- 
-         help, config = get_config(['--help'])
--        self.assertEquals(config, {'DEFINES': {}})
-+        self.assertEqual(config, {'DEFINES': {}})
- 
-         config = get_config(['--set-foo'])
-         self.assertIn('FOO', config['DEFINES'])
--        self.assertEquals(config['DEFINES']['FOO'], True)
-+        self.assertEqual(config['DEFINES']['FOO'], True)
- 
-         config = get_config(['--set-bar'])
-         self.assertNotIn('FOO', config['DEFINES'])
-         self.assertIn('BAR', config['DEFINES'])
--        self.assertEquals(config['DEFINES']['BAR'], True)
-+        self.assertEqual(config['DEFINES']['BAR'], True)
- 
-         config = get_config(['--set-value=qux'])
-         self.assertIn('VALUE', config['DEFINES'])
--        self.assertEquals(config['DEFINES']['VALUE'], 'qux')
-+        self.assertEqual(config['DEFINES']['VALUE'], 'qux')
- 
-         config = get_config(['--set-name=hoge'])
-         self.assertIn('hoge', config['DEFINES'])
--        self.assertEquals(config['DEFINES']['hoge'], True)
-+        self.assertEqual(config['DEFINES']['hoge'], True)
- 
-         config = get_config([])
--        self.assertEquals(config['DEFINES'], {'BAR': False})
-+        self.assertEqual(config['DEFINES'], {'BAR': False})
- 
-         with self.assertRaises(ConfigureError):
-             # Both --set-foo and --set-name=FOO are going to try to
-@@ -503,11 +503,11 @@ class TestConfigure(unittest.TestCase):
-             set_define('QUX', 'qux', when='--with-qux')
-         '''):
-             config = self.get_config()
--            self.assertEquals(config['DEFINES'], {
-+            self.assertEqual(config['DEFINES'], {
-                 'FOO': 'foo',
-             })
-             config = self.get_config(['--with-qux'])
--            self.assertEquals(config['DEFINES'], {
-+            self.assertEqual(config['DEFINES'], {
-                 'FOO': 'foo',
-                 'QUX': 'qux',
-             })
-@@ -518,19 +518,19 @@ class TestConfigure(unittest.TestCase):
-                 *args, configure='imply_option/simple.configure')
- 
-         help, config = get_config(['--help'])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         config = get_config([])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         config = get_config(['--enable-foo'])
-         self.assertIn('BAR', config)
--        self.assertEquals(config['BAR'], PositiveOptionValue())
-+        self.assertEqual(config['BAR'], PositiveOptionValue())
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             get_config(['--enable-foo', '--disable-bar'])
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             "'--enable-bar' implied by '--enable-foo' conflicts with "
-             "'--disable-bar' from the command-line")
-@@ -541,31 +541,31 @@ class TestConfigure(unittest.TestCase):
-                 *args, configure='imply_option/negative.configure')
- 
-         help, config = get_config(['--help'])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         config = get_config([])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         config = get_config(['--enable-foo'])
-         self.assertIn('BAR', config)
--        self.assertEquals(config['BAR'], NegativeOptionValue())
-+        self.assertEqual(config['BAR'], NegativeOptionValue())
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             get_config(['--enable-foo', '--enable-bar'])
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             "'--disable-bar' implied by '--enable-foo' conflicts with "
-             "'--enable-bar' from the command-line")
- 
-         config = get_config(['--disable-hoge'])
-         self.assertIn('BAR', config)
--        self.assertEquals(config['BAR'], NegativeOptionValue())
-+        self.assertEqual(config['BAR'], NegativeOptionValue())
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             get_config(['--disable-hoge', '--enable-bar'])
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             "'--disable-bar' implied by '--disable-hoge' conflicts with "
-             "'--enable-bar' from the command-line")
-@@ -576,23 +576,23 @@ class TestConfigure(unittest.TestCase):
-                 *args, configure='imply_option/values.configure')
- 
-         help, config = get_config(['--help'])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         config = get_config([])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         config = get_config(['--enable-foo=a'])
-         self.assertIn('BAR', config)
--        self.assertEquals(config['BAR'], PositiveOptionValue(('a',)))
-+        self.assertEqual(config['BAR'], PositiveOptionValue(('a',)))
- 
-         config = get_config(['--enable-foo=a,b'])
-         self.assertIn('BAR', config)
--        self.assertEquals(config['BAR'], PositiveOptionValue(('a','b')))
-+        self.assertEqual(config['BAR'], PositiveOptionValue(('a','b')))
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             get_config(['--enable-foo=a,b', '--disable-bar'])
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             "'--enable-bar=a,b' implied by '--enable-foo' conflicts with "
-             "'--disable-bar' from the command-line")
-@@ -603,15 +603,15 @@ class TestConfigure(unittest.TestCase):
-                 *args, configure='imply_option/infer.configure')
- 
-         help, config = get_config(['--help'])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         config = get_config([])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             get_config(['--enable-foo', '--disable-bar'])
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             "'--enable-bar' implied by '--enable-foo' conflicts with "
-             "'--disable-bar' from the command-line")
-@@ -619,7 +619,7 @@ class TestConfigure(unittest.TestCase):
-         with self.assertRaises(ConfigureError) as e:
-             self.get_config([], configure='imply_option/infer_ko.configure')
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             "Cannot infer what implies '--enable-bar'. Please add a `reason` "
-             "to the `imply_option` call.")
-@@ -630,25 +630,25 @@ class TestConfigure(unittest.TestCase):
-                 *args, configure='imply_option/imm.configure')
- 
-         help, config = get_config(['--help'])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         config = get_config([])
--        self.assertEquals(config, {})
-+        self.assertEqual(config, {})
- 
-         config_path = mozpath.abspath(
-             mozpath.join(test_data_path, 'imply_option', 'imm.configure'))
- 
--        with self.assertRaisesRegexp(InvalidOptionError,
-+        with self.assertRaisesRegex(InvalidOptionError,
-             "--enable-foo' implied by 'imply_option at %s:7' conflicts with "
-             "'--disable-foo' from the command-line" % config_path):
-             get_config(['--disable-foo'])
- 
--        with self.assertRaisesRegexp(InvalidOptionError,
-+        with self.assertRaisesRegex(InvalidOptionError,
-             "--enable-bar=foo,bar' implied by 'imply_option at %s:16' conflicts"
-             " with '--enable-bar=a,b,c' from the command-line" % config_path):
-             get_config(['--enable-bar=a,b,c'])
- 
--        with self.assertRaisesRegexp(InvalidOptionError,
-+        with self.assertRaisesRegex(InvalidOptionError,
-             "--enable-baz=BAZ' implied by 'imply_option at %s:25' conflicts"
-             " with '--enable-baz=QUUX' from the command-line" % config_path):
-             get_config(['--enable-baz=QUUX'])
-@@ -660,7 +660,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "`--with-foo`, emitted from `%s` line 2, is unknown."
-                           % mozpath.join(test_data_path, 'moz.configure'))
- 
-@@ -675,7 +675,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "Unexpected type: 'int'")
- 
-     def test_imply_option_when(self):
-@@ -686,12 +686,12 @@ class TestConfigure(unittest.TestCase):
-             set_config('QUX', depends('--with-qux')(lambda x: x))
-         '''):
-             config = self.get_config()
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'QUX': NegativeOptionValue(),
-             })
- 
-             config = self.get_config(['--with-foo'])
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'QUX': PositiveOptionValue(),
-             })
- 
-@@ -700,7 +700,7 @@ class TestConfigure(unittest.TestCase):
-             with self.moz_configure('option("--with-foo", help="foo")'):
-                 self.get_config()
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'Option `--with-foo` is not handled ; reference it with a @depends'
-         )
-@@ -712,7 +712,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'Option `--with-foo` already defined'
-         )
-@@ -724,7 +724,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'Option `MOZ_FOO` already defined'
-         )
-@@ -736,7 +736,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'Option `MOZ_FOO` already defined'
-         )
-@@ -748,7 +748,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'Option `MOZ_FOO` already defined'
-         )
-@@ -760,7 +760,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'Option `--with-foo` already defined'
-         )
-@@ -776,18 +776,18 @@ class TestConfigure(unittest.TestCase):
-             set_config('QUX', depends('--with-qux', when='--with-foo')(lambda x: x))
-         '''):
-             config = self.get_config()
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'FOO': NegativeOptionValue(),
-             })
- 
-             config = self.get_config(['--with-foo'])
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'FOO': PositiveOptionValue(),
-                 'QUX': NegativeOptionValue(),
-             })
- 
-             config = self.get_config(['--with-foo', '--with-qux'])
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'FOO': PositiveOptionValue(),
-                 'QUX': PositiveOptionValue(),
-             })
-@@ -795,7 +795,7 @@ class TestConfigure(unittest.TestCase):
-             with self.assertRaises(InvalidOptionError) as e:
-                 self.get_config(['--with-bar'])
- 
--            self.assertEquals(
-+            self.assertEqual(
-                 e.exception.message,
-                 '--with-bar is not available in this configuration'
-             )
-@@ -803,7 +803,7 @@ class TestConfigure(unittest.TestCase):
-             with self.assertRaises(InvalidOptionError) as e:
-                 self.get_config(['--with-qux'])
- 
--            self.assertEquals(
-+            self.assertEqual(
-                 e.exception.message,
-                 '--with-qux is not available in this configuration'
-             )
-@@ -811,18 +811,18 @@ class TestConfigure(unittest.TestCase):
-             with self.assertRaises(InvalidOptionError) as e:
-                 self.get_config(['QUX=1'])
- 
--            self.assertEquals(
-+            self.assertEqual(
-                 e.exception.message,
-                 'QUX is not available in this configuration'
-             )
- 
-             config = self.get_config(env={'QUX': '1'})
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'FOO': NegativeOptionValue(),
-             })
- 
-             help, config = self.get_config(['--help'])
--            self.assertEquals(help, textwrap.dedent('''\
-+            self.assertEqual(help, textwrap.dedent('''\
-                 Usage: configure [options]
- 
-                 Options: [defaults in brackets after descriptions]
-@@ -833,7 +833,7 @@ class TestConfigure(unittest.TestCase):
-             '''))
- 
-             help, config = self.get_config(['--help', '--with-foo'])
--            self.assertEquals(help, textwrap.dedent('''\
-+            self.assertEqual(help, textwrap.dedent('''\
-                 Usage: configure [options]
- 
-                 Options: [defaults in brackets after descriptions]
-@@ -851,7 +851,7 @@ class TestConfigure(unittest.TestCase):
-             with self.assertRaises(ConfigureError) as e:
-                 self.get_config()
- 
--            self.assertEquals(e.exception.message,
-+            self.assertEqual(e.exception.message,
-                               '@depends function needs the same `when` as '
-                               'options it depends on')
- 
-@@ -868,7 +868,7 @@ class TestConfigure(unittest.TestCase):
-             with self.assertRaises(ConfigureError) as e:
-                 self.get_config()
- 
--            self.assertEquals(e.exception.message,
-+            self.assertEqual(e.exception.message,
-                               '@depends function needs the same `when` as '
-                               'options it depends on')
- 
-@@ -896,7 +896,7 @@ class TestConfigure(unittest.TestCase):
-             with self.moz_configure('include("../foo.configure")'):
-                 self.get_config()
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'Cannot include `%s` because it is not in a subdirectory of `%s`'
-             % (mozpath.normpath(mozpath.join(test_data_path, '..',
-@@ -911,7 +911,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'Cannot include `%s` because it was included already.'
-             % mozpath.normpath(mozpath.join(test_data_path,
-@@ -924,7 +924,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+        self.assertEqual(e.exception.message, "Unexpected type: 'int'")
- 
-     def test_include_when(self):
-         with MockedOpen({
-@@ -967,26 +967,26 @@ class TestConfigure(unittest.TestCase):
-             '''),
-         }):
-             config = self.get_config()
--            self.assertEquals(config, {})
-+            self.assertEqual(config, {})
- 
-             config = self.get_config(['--with-foo'])
--            self.assertEquals(config, {})
-+            self.assertEqual(config, {})
- 
-             config = self.get_config(['--with-bar'])
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'BAR': 'bar',
-             })
- 
-             with self.assertRaises(InvalidOptionError) as e:
-                 self.get_config(['--with-qux'])
- 
--            self.assertEquals(
-+            self.assertEqual(
-                 e.exception.message,
-                 '--with-qux is not available in this configuration'
-             )
- 
-             config = self.get_config(['--with-foo', '--with-foo-really'])
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'FOO': 'foo',
-                 'FOO2': True,
-             })
-@@ -998,7 +998,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message, 'Cannot reassign builtins')
-+        self.assertEqual(e.exception.message, 'Cannot reassign builtins')
- 
-         with self.assertRaises(KeyError) as e:
-             with self.moz_configure('''
-@@ -1006,7 +1006,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           'Cannot assign `foo` because it is neither a '
-                           '@depends nor a @template')
- 
-@@ -1019,7 +1019,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "@depends needs at least one argument")
- 
-         with self.assertRaises(ConfigureError) as e:
-@@ -1030,7 +1030,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "'--with-foo' is not a known option. Maybe it's "
-                           "declared too late?")
- 
-@@ -1042,7 +1042,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "Option must not contain an '='")
- 
-         with self.assertRaises(TypeError) as e:
-@@ -1053,7 +1053,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "Cannot use object of type 'int' as argument "
-                           "to @depends")
- 
-@@ -1065,7 +1065,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "Cannot decorate generator functions with @depends")
- 
-         with self.assertRaises(TypeError) as e:
-@@ -1074,7 +1074,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "Unexpected type: 'int'")
- 
-         with self.assertRaises(ConfigureError) as e:
-@@ -1088,7 +1088,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The `foo` function may not be called")
- 
-         with self.assertRaises(TypeError) as e:
-@@ -1099,7 +1099,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "depends_impl() got an unexpected keyword argument 'foo'")
- 
-     def test_depends_when(self):
-@@ -1124,12 +1124,12 @@ class TestConfigure(unittest.TestCase):
-             set_config('QUX', qux)
-         '''):
-             config = self.get_config()
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'FOO': 'foo',
-             })
- 
-             config = self.get_config(['--with-qux'])
--            self.assertEquals(config, {
-+            self.assertEqual(config, {
-                 'FOO': 'foo',
-                 'QUX': 'qux',
-             })
-@@ -1144,7 +1144,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           '@imports must appear after @template')
- 
-         with self.assertRaises(ConfigureError) as e:
-@@ -1157,7 +1157,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           '@imports must appear after @depends')
- 
-         for import_ in (
-@@ -1174,7 +1174,7 @@ class TestConfigure(unittest.TestCase):
-                 ''' % import_):
-                     self.get_config()
- 
--            self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+            self.assertEqual(e.exception.message, "Unexpected type: 'int'")
- 
-         with self.assertRaises(TypeError) as e:
-             with self.moz_configure('''
-@@ -1185,7 +1185,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+        self.assertEqual(e.exception.message, "Unexpected type: 'int'")
- 
-         with self.assertRaises(ValueError) as e:
-             with self.moz_configure('''
-@@ -1195,7 +1195,7 @@ class TestConfigure(unittest.TestCase):
-             '''):
-                 self.get_config()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "Invalid argument to @imports: 'os*'")
- 
-     def test_only_when(self):
-@@ -1250,7 +1250,7 @@ class TestConfigure(unittest.TestCase):
-             with self.assertRaises(InvalidOptionError) as e:
-                 self.get_config(['--foo'])
- 
--            self.assertEquals(e.exception.message,
-+            self.assertEqual(e.exception.message,
-                               '--foo is not available in this configuration')
- 
-         # Cannot depend on an option defined in a only_when block, because we
-@@ -1261,7 +1261,7 @@ class TestConfigure(unittest.TestCase):
-             with self.assertRaises(ConfigureError) as e:
-                 self.get_config()
- 
--            self.assertEquals(e.exception.message,
-+            self.assertEqual(e.exception.message,
-                               '@depends function needs the same `when` as '
-                               'options it depends on')
- 
-@@ -1278,7 +1278,7 @@ class TestConfigure(unittest.TestCase):
-             with self.assertRaises(InvalidOptionError) as e:
-                 self.get_config()
- 
--            self.assertEquals(e.exception.message,
-+            self.assertEqual(e.exception.message,
-                               '--foo is not available in this configuration')
- 
-         # And similarly doesn't fail when the condition is true.
-diff --git a/python/mozbuild/mozbuild/test/configure/test_lint.py b/python/mozbuild/mozbuild/test/configure/test_lint.py
-index 6d8d4c49f..6ad897839 100644
---- a/python/mozbuild/mozbuild/test/configure/test_lint.py
-+++ b/python/mozbuild/mozbuild/test/configure/test_lint.py
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
- 
--from StringIO import StringIO
-+
-+from io import StringIO
- import os
- import textwrap
- import unittest
-@@ -62,7 +62,7 @@ class TestLint(unittest.TestCase):
-             '''):
-                 self.lint_test()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "`bar` depends on '--help' and `foo`. "
-                           "`foo` must depend on '--help'")
- 
-@@ -85,7 +85,7 @@ class TestLint(unittest.TestCase):
-             '''):
-                 self.lint_test()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "`bar` depends on '--help' and `foo`. "
-                           "`foo` must depend on '--help'")
- 
-@@ -111,7 +111,7 @@ class TestLint(unittest.TestCase):
-             '''):
-                 self.lint_test()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "Missing @depends for `foo`: '--help'")
- 
-         with self.assertRaises(ConfigureError) as e:
-@@ -130,7 +130,7 @@ class TestLint(unittest.TestCase):
-             '''):
-                 self.lint_test()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "Missing @depends for `foo`: '--help'")
- 
-         with self.assertRaises(ConfigureError) as e:
-@@ -145,7 +145,7 @@ class TestLint(unittest.TestCase):
-             '''):
-                 self.lint_test()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "Missing @depends for `foo`: '--help'")
- 
-         # This would have failed with "Missing @depends for `foo`: '--help'"
-@@ -178,7 +178,7 @@ class TestLint(unittest.TestCase):
-             '''):
-                 self.lint_test()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "Missing @depends for `foo`: '--help'")
- 
-         # There is a default restricted `os` module when there is no explicit
-@@ -205,7 +205,7 @@ class TestLint(unittest.TestCase):
-             '''):
-                 self.lint_test()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "%s:3: The dependency on `--foo` is unused."
-                           % mozpath.join(test_data_path, 'moz.configure'))
- 
-@@ -222,7 +222,7 @@ class TestLint(unittest.TestCase):
-             '''):
-                 self.lint_test()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "%s:5: The dependency on `bar` is unused."
-                           % mozpath.join(test_data_path, 'moz.configure'))
- 
-@@ -236,7 +236,7 @@ class TestLint(unittest.TestCase):
-             '''):
-                 self.lint_test()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "%s:2: The dependency on `<lambda>` is unused."
-                           % mozpath.join(test_data_path, 'moz.configure'))
- 
-@@ -257,7 +257,7 @@ class TestLint(unittest.TestCase):
-             '''):
-                 self.lint_test()
- 
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "%s:9: The dependency on `qux` is unused."
-                           % mozpath.join(test_data_path, 'moz.configure'))
- 
-diff --git a/python/mozbuild/mozbuild/test/configure/test_moz_configure.py b/python/mozbuild/mozbuild/test/configure/test_moz_configure.py
-index b3342e268..7a26e9e09 100644
---- a/python/mozbuild/mozbuild/test/configure/test_moz_configure.py
-+++ b/python/mozbuild/mozbuild/test/configure/test_moz_configure.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- from mozunit import main
- from mozpack import path as mozpath
-@@ -27,10 +27,10 @@ class TestMozConfigure(BaseConfigureTest):
-             shell = mozpath.abspath('/bin/sh')
-             return result.replace('CONFIG_SHELL=%s ' % shell, '')
- 
--        self.assertEquals('--enable-application=browser',
-+        self.assertEqual('--enable-application=browser',
-                           get_value_for(['--enable-application=browser']))
- 
--        self.assertEquals('--enable-application=browser '
-+        self.assertEqual('--enable-application=browser '
-                           'MOZ_VTUNE=1',
-                           get_value_for(['--enable-application=browser',
-                                          'MOZ_VTUNE=1']))
-@@ -39,25 +39,25 @@ class TestMozConfigure(BaseConfigureTest):
-             environ={'MOZ_VTUNE': '1'},
-             mozconfig='ac_add_options --enable-project=js')
- 
--        self.assertEquals('--enable-project=js MOZ_VTUNE=1',
-+        self.assertEqual('--enable-project=js MOZ_VTUNE=1',
-                           value)
- 
-         # --disable-js-shell is the default, so it's filtered out.
--        self.assertEquals('--enable-application=browser',
-+        self.assertEqual('--enable-application=browser',
-                           get_value_for(['--enable-application=browser',
-                                          '--disable-js-shell']))
- 
-         # Normally, --without-foo would be filtered out because that's the
-         # default, but since it is a (fake) old-configure option, it always
-         # appears.
--        self.assertEquals('--enable-application=browser --without-foo',
-+        self.assertEqual('--enable-application=browser --without-foo',
-                           get_value_for(['--enable-application=browser',
-                                          '--without-foo']))
--        self.assertEquals('--enable-application=browser --with-foo',
-+        self.assertEqual('--enable-application=browser --with-foo',
-                           get_value_for(['--enable-application=browser',
-                                          '--with-foo']))
- 
--        self.assertEquals("--enable-application=browser '--with-foo=foo bar'",
-+        self.assertEqual("--enable-application=browser '--with-foo=foo bar'",
-                           get_value_for(['--enable-application=browser',
-                                          '--with-foo=foo bar']))
- 
-@@ -69,7 +69,7 @@ class TestMozConfigure(BaseConfigureTest):
-                 self.version = version
- 
-             def __call__(self, stdin, args):
--                this.assertEquals(args, ('-version',))
-+                this.assertEqual(args, ('-version',))
-                 return 0, self.version, ''
- 
-         def check_nsis_version(version):
-@@ -84,13 +84,13 @@ class TestMozConfigure(BaseConfigureTest):
-         with self.assertRaises(SystemExit) as e:
-             check_nsis_version('v3.0a2')
- 
--        self.assertEquals(check_nsis_version('v3.0b1'), '3.0b1')
--        self.assertEquals(check_nsis_version('v3.0b2'), '3.0b2')
--        self.assertEquals(check_nsis_version('v3.0rc1'), '3.0rc1')
--        self.assertEquals(check_nsis_version('v3.0'), '3.0')
--        self.assertEquals(check_nsis_version('v3.0-2'), '3.0')
--        self.assertEquals(check_nsis_version('v3.0.1'), '3.0')
--        self.assertEquals(check_nsis_version('v3.1'), '3.1')
-+        self.assertEqual(check_nsis_version('v3.0b1'), '3.0b1')
-+        self.assertEqual(check_nsis_version('v3.0b2'), '3.0b2')
-+        self.assertEqual(check_nsis_version('v3.0rc1'), '3.0rc1')
-+        self.assertEqual(check_nsis_version('v3.0'), '3.0')
-+        self.assertEqual(check_nsis_version('v3.0-2'), '3.0')
-+        self.assertEqual(check_nsis_version('v3.0.1'), '3.0')
-+        self.assertEqual(check_nsis_version('v3.1'), '3.1')
- 
- 
- if __name__ == '__main__':
-diff --git a/python/mozbuild/mozbuild/test/configure/test_options.py b/python/mozbuild/mozbuild/test/configure/test_options.py
-index 9defccb2c..330ce3b1f 100644
---- a/python/mozbuild/mozbuild/test/configure/test_options.py
-+++ b/python/mozbuild/mozbuild/test/configure/test_options.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import unittest
- 
-@@ -28,139 +28,139 @@ class Option(Option):
- class TestOption(unittest.TestCase):
-     def test_option(self):
-         option = Option('--option')
--        self.assertEquals(option.prefix, '')
--        self.assertEquals(option.name, 'option')
--        self.assertEquals(option.env, None)
-+        self.assertEqual(option.prefix, '')
-+        self.assertEqual(option.name, 'option')
-+        self.assertEqual(option.env, None)
-         self.assertFalse(option.default)
- 
-         option = Option('--enable-option')
--        self.assertEquals(option.prefix, 'enable')
--        self.assertEquals(option.name, 'option')
--        self.assertEquals(option.env, None)
-+        self.assertEqual(option.prefix, 'enable')
-+        self.assertEqual(option.name, 'option')
-+        self.assertEqual(option.env, None)
-         self.assertFalse(option.default)
- 
-         option = Option('--disable-option')
--        self.assertEquals(option.prefix, 'disable')
--        self.assertEquals(option.name, 'option')
--        self.assertEquals(option.env, None)
-+        self.assertEqual(option.prefix, 'disable')
-+        self.assertEqual(option.name, 'option')
-+        self.assertEqual(option.env, None)
-         self.assertTrue(option.default)
- 
-         option = Option('--with-option')
--        self.assertEquals(option.prefix, 'with')
--        self.assertEquals(option.name, 'option')
--        self.assertEquals(option.env, None)
-+        self.assertEqual(option.prefix, 'with')
-+        self.assertEqual(option.name, 'option')
-+        self.assertEqual(option.env, None)
-         self.assertFalse(option.default)
- 
-         option = Option('--without-option')
--        self.assertEquals(option.prefix, 'without')
--        self.assertEquals(option.name, 'option')
--        self.assertEquals(option.env, None)
-+        self.assertEqual(option.prefix, 'without')
-+        self.assertEqual(option.name, 'option')
-+        self.assertEqual(option.env, None)
-         self.assertTrue(option.default)
- 
-         option = Option('--without-option-foo', env='MOZ_OPTION')
--        self.assertEquals(option.env, 'MOZ_OPTION')
-+        self.assertEqual(option.env, 'MOZ_OPTION')
- 
-         option = Option(env='MOZ_OPTION')
--        self.assertEquals(option.prefix, '')
--        self.assertEquals(option.name, None)
--        self.assertEquals(option.env, 'MOZ_OPTION')
-+        self.assertEqual(option.prefix, '')
-+        self.assertEqual(option.name, None)
-+        self.assertEqual(option.env, 'MOZ_OPTION')
-         self.assertFalse(option.default)
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs=0, default=('a',))
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs=1, default=())
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'default must be a bool, a string or a tuple of strings')
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs=1, default=True)
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs=1, default=('a', 'b'))
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs=2, default=())
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'default must be a bool, a string or a tuple of strings')
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs=2, default=True)
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs=2, default=('a',))
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs='?', default=('a', 'b'))
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs='+', default=())
--        self.assertEquals(
-+        self.assertEqual(
-             e.exception.message,
-             'default must be a bool, a string or a tuple of strings')
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs='+', default=True)
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-         # --disable options with a nargs value that requires at least one
-         # argument need to be given a default.
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--disable-option', nargs=1)
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--disable-option', nargs='+')
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-         # Test nargs inference from default value
-         option = Option('--with-foo', default=True)
--        self.assertEquals(option.nargs, 0)
-+        self.assertEqual(option.nargs, 0)
- 
-         option = Option('--with-foo', default=False)
--        self.assertEquals(option.nargs, 0)
-+        self.assertEqual(option.nargs, 0)
- 
-         option = Option('--with-foo', default='a')
--        self.assertEquals(option.nargs, '?')
-+        self.assertEqual(option.nargs, '?')
- 
-         option = Option('--with-foo', default=('a',))
--        self.assertEquals(option.nargs, '?')
-+        self.assertEqual(option.nargs, '?')
- 
-         option = Option('--with-foo', default=('a', 'b'))
--        self.assertEquals(option.nargs, '*')
-+        self.assertEqual(option.nargs, '*')
- 
-         option = Option(env='FOO', default=True)
--        self.assertEquals(option.nargs, 0)
-+        self.assertEqual(option.nargs, 0)
- 
-         option = Option(env='FOO', default=False)
--        self.assertEquals(option.nargs, 0)
-+        self.assertEqual(option.nargs, 0)
- 
-         option = Option(env='FOO', default='a')
--        self.assertEquals(option.nargs, '?')
-+        self.assertEqual(option.nargs, '?')
- 
-         option = Option(env='FOO', default=('a',))
--        self.assertEquals(option.nargs, '?')
-+        self.assertEqual(option.nargs, '?')
- 
-         option = Option(env='FOO', default=('a', 'b'))
--        self.assertEquals(option.nargs, '*')
-+        self.assertEqual(option.nargs, '*')
- 
-     def test_option_option(self):
-         for option in (
-@@ -170,70 +170,70 @@ class TestOption(unittest.TestCase):
-             '--with-option',
-             '--without-option',
-         ):
--            self.assertEquals(Option(option).option, option)
--            self.assertEquals(Option(option, env='FOO').option, option)
-+            self.assertEqual(Option(option).option, option)
-+            self.assertEqual(Option(option, env='FOO').option, option)
- 
-             opt = Option(option, default=False)
--            self.assertEquals(opt.option,
-+            self.assertEqual(opt.option,
-                               option.replace('-disable-', '-enable-')
-                                     .replace('-without-', '-with-'))
- 
-             opt = Option(option, default=True)
--            self.assertEquals(opt.option,
-+            self.assertEqual(opt.option,
-                               option.replace('-enable-', '-disable-')
-                                     .replace('-with-', '-without-'))
- 
--        self.assertEquals(Option(env='FOO').option, 'FOO')
-+        self.assertEqual(Option(env='FOO').option, 'FOO')
- 
-     def test_option_choices(self):
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs=3, choices=('a', 'b'))
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           'Not enough `choices` for `nargs`')
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--without-option', nargs=1, choices=('a', 'b'))
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           'A `default` must be given along with `choices`')
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--without-option', nargs='+', choices=('a', 'b'))
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           'A `default` must be given along with `choices`')
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--without-option', default='c', choices=('a', 'b'))
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The `default` value must be one of 'a', 'b'")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--without-option', default=('a', 'c',), choices=('a', 'b'))
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The `default` value must be one of 'a', 'b'")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--without-option', default=('c',), choices=('a', 'b'))
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The `default` value must be one of 'a', 'b'")
- 
-         option = Option('--with-option', nargs='+', choices=('a', 'b'))
-         with self.assertRaises(InvalidOptionError) as e:
-             option.get_value('--with-option=c')
--        self.assertEquals(e.exception.message, "'c' is not one of 'a', 'b'")
-+        self.assertEqual(e.exception.message, "'c' is not one of 'a', 'b'")
- 
-         value = option.get_value('--with-option=b,a')
-         self.assertTrue(value)
--        self.assertEquals(PositiveOptionValue(('b', 'a')), value)
-+        self.assertEqual(PositiveOptionValue(('b', 'a')), value)
- 
-         option = Option('--without-option', nargs='*', default='a',
-                         choices=('a', 'b'))
-         with self.assertRaises(InvalidOptionError) as e:
-             option.get_value('--with-option=c')
--        self.assertEquals(e.exception.message, "'c' is not one of 'a', 'b'")
-+        self.assertEqual(e.exception.message, "'c' is not one of 'a', 'b'")
- 
-         value = option.get_value('--with-option=b,a')
-         self.assertTrue(value)
--        self.assertEquals(PositiveOptionValue(('b', 'a')), value)
-+        self.assertEqual(PositiveOptionValue(('b', 'a')), value)
- 
-         # Test nargs inference from choices
-         option = Option('--with-option', choices=('a', 'b'))
-@@ -244,37 +244,37 @@ class TestOption(unittest.TestCase):
-                         choices=('a', 'b', 'c', 'd'))
- 
-         value = option.get_value('--with-option=+d')
--        self.assertEquals(PositiveOptionValue(('b', 'c', 'd')), value)
-+        self.assertEqual(PositiveOptionValue(('b', 'c', 'd')), value)
- 
-         value = option.get_value('--with-option=-b')
--        self.assertEquals(PositiveOptionValue(('c',)), value)
-+        self.assertEqual(PositiveOptionValue(('c',)), value)
- 
-         value = option.get_value('--with-option=-b,+d')
--        self.assertEquals(PositiveOptionValue(('c','d')), value)
-+        self.assertEqual(PositiveOptionValue(('c','d')), value)
- 
-         # Adding something that is in the default is fine
-         value = option.get_value('--with-option=+b')
--        self.assertEquals(PositiveOptionValue(('b', 'c')), value)
-+        self.assertEqual(PositiveOptionValue(('b', 'c')), value)
- 
-         # Removing something that is not in the default is fine, as long as it
-         # is one of the choices
-         value = option.get_value('--with-option=-a')
--        self.assertEquals(PositiveOptionValue(('b', 'c')), value)
-+        self.assertEqual(PositiveOptionValue(('b', 'c')), value)
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             option.get_value('--with-option=-e')
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "'e' is not one of 'a', 'b', 'c', 'd'")
- 
-         # Other "not a choice" errors.
-         with self.assertRaises(InvalidOptionError) as e:
-             option.get_value('--with-option=+e')
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "'e' is not one of 'a', 'b', 'c', 'd'")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             option.get_value('--with-option=e')
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "'e' is not one of 'a', 'b', 'c', 'd'")
- 
-     def test_option_value_compare(self):
-@@ -294,7 +294,7 @@ class TestOption(unittest.TestCase):
- 
-         # For usability reasons, we raise TypeError when attempting to compare
-         # against a non-tuple.
--        with self.assertRaisesRegexp(TypeError, 'cannot compare a'):
-+        with self.assertRaisesRegex(TypeError, 'cannot compare a'):
-             val == 'foo'
- 
-         # But we allow empty option values to compare otherwise we can't
-@@ -313,36 +313,36 @@ class TestOption(unittest.TestCase):
- 
-     def test_option_value_format(self):
-         val = PositiveOptionValue()
--        self.assertEquals('--with-value', val.format('--with-value'))
--        self.assertEquals('--with-value', val.format('--without-value'))
--        self.assertEquals('--enable-value', val.format('--enable-value'))
--        self.assertEquals('--enable-value', val.format('--disable-value'))
--        self.assertEquals('--value', val.format('--value'))
--        self.assertEquals('VALUE=1', val.format('VALUE'))
-+        self.assertEqual('--with-value', val.format('--with-value'))
-+        self.assertEqual('--with-value', val.format('--without-value'))
-+        self.assertEqual('--enable-value', val.format('--enable-value'))
-+        self.assertEqual('--enable-value', val.format('--disable-value'))
-+        self.assertEqual('--value', val.format('--value'))
-+        self.assertEqual('VALUE=1', val.format('VALUE'))
- 
-         val = PositiveOptionValue(('a',))
--        self.assertEquals('--with-value=a', val.format('--with-value'))
--        self.assertEquals('--with-value=a', val.format('--without-value'))
--        self.assertEquals('--enable-value=a', val.format('--enable-value'))
--        self.assertEquals('--enable-value=a', val.format('--disable-value'))
--        self.assertEquals('--value=a', val.format('--value'))
--        self.assertEquals('VALUE=a', val.format('VALUE'))
-+        self.assertEqual('--with-value=a', val.format('--with-value'))
-+        self.assertEqual('--with-value=a', val.format('--without-value'))
-+        self.assertEqual('--enable-value=a', val.format('--enable-value'))
-+        self.assertEqual('--enable-value=a', val.format('--disable-value'))
-+        self.assertEqual('--value=a', val.format('--value'))
-+        self.assertEqual('VALUE=a', val.format('VALUE'))
- 
-         val = PositiveOptionValue(('a', 'b'))
--        self.assertEquals('--with-value=a,b', val.format('--with-value'))
--        self.assertEquals('--with-value=a,b', val.format('--without-value'))
--        self.assertEquals('--enable-value=a,b', val.format('--enable-value'))
--        self.assertEquals('--enable-value=a,b', val.format('--disable-value'))
--        self.assertEquals('--value=a,b', val.format('--value'))
--        self.assertEquals('VALUE=a,b', val.format('VALUE'))
-+        self.assertEqual('--with-value=a,b', val.format('--with-value'))
-+        self.assertEqual('--with-value=a,b', val.format('--without-value'))
-+        self.assertEqual('--enable-value=a,b', val.format('--enable-value'))
-+        self.assertEqual('--enable-value=a,b', val.format('--disable-value'))
-+        self.assertEqual('--value=a,b', val.format('--value'))
-+        self.assertEqual('VALUE=a,b', val.format('VALUE'))
- 
-         val = NegativeOptionValue()
--        self.assertEquals('--without-value', val.format('--with-value'))
--        self.assertEquals('--without-value', val.format('--without-value'))
--        self.assertEquals('--disable-value', val.format('--enable-value'))
--        self.assertEquals('--disable-value', val.format('--disable-value'))
--        self.assertEquals('', val.format('--value'))
--        self.assertEquals('VALUE=', val.format('VALUE'))
-+        self.assertEqual('--without-value', val.format('--with-value'))
-+        self.assertEqual('--without-value', val.format('--without-value'))
-+        self.assertEqual('--disable-value', val.format('--enable-value'))
-+        self.assertEqual('--disable-value', val.format('--disable-value'))
-+        self.assertEqual('', val.format('--value'))
-+        self.assertEqual('VALUE=', val.format('VALUE'))
- 
-     def test_option_value(self, name='option', nargs=0, default=None):
-         disabled = name.startswith(('disable-', 'without-'))
-@@ -359,28 +359,28 @@ class TestOption(unittest.TestCase):
- 
-         if nargs in (0, '?', '*') or disabled:
-             value = option.get_value('--%s' % name, 'option')
--            self.assertEquals(value, posOptionValue())
--            self.assertEquals(value.origin, 'option')
-+            self.assertEqual(value, posOptionValue())
-+            self.assertEqual(value.origin, 'option')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 option.get_value('--%s' % name)
-             if nargs == 1:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s takes 1 value' % name)
-             elif nargs == '+':
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s takes 1 or more values' % name)
-             else:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s takes 2 values' % name)
- 
-         value = option.get_value('')
--        self.assertEquals(value, defaultValue)
--        self.assertEquals(value.origin, 'default')
-+        self.assertEqual(value, defaultValue)
-+        self.assertEqual(value.origin, 'default')
- 
-         value = option.get_value(None)
--        self.assertEquals(value, defaultValue)
--        self.assertEquals(value.origin, 'default')
-+        self.assertEqual(value, defaultValue)
-+        self.assertEqual(value.origin, 'default')
- 
-         with self.assertRaises(AssertionError):
-             value = option.get_value('MOZ_OPTION=', 'environment')
-@@ -393,47 +393,47 @@ class TestOption(unittest.TestCase):
- 
-         if nargs in (1, '?', '*', '+') and not disabled:
-             value = option.get_value('--%s=' % name, 'option')
--            self.assertEquals(value, PositiveOptionValue(('',)))
--            self.assertEquals(value.origin, 'option')
-+            self.assertEqual(value, PositiveOptionValue(('',)))
-+            self.assertEqual(value.origin, 'option')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 option.get_value('--%s=' % name)
-             if disabled:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   'Cannot pass a value to --%s' % name)
-             else:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s takes %d values' % (name, nargs))
- 
-         if nargs in (1, '?', '*', '+') and not disabled:
-             value = option.get_value('--%s=foo' % name, 'option')
--            self.assertEquals(value, PositiveOptionValue(('foo',)))
--            self.assertEquals(value.origin, 'option')
-+            self.assertEqual(value, PositiveOptionValue(('foo',)))
-+            self.assertEqual(value.origin, 'option')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 option.get_value('--%s=foo' % name)
-             if disabled:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   'Cannot pass a value to --%s' % name)
-             else:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s takes %d values' % (name, nargs))
- 
-         if nargs in (2, '*', '+') and not disabled:
-             value = option.get_value('--%s=foo,bar' % name, 'option')
--            self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
--            self.assertEquals(value.origin, 'option')
-+            self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+            self.assertEqual(value.origin, 'option')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 option.get_value('--%s=foo,bar' % name, 'option')
-             if disabled:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   'Cannot pass a value to --%s' % name)
-             elif nargs == '?':
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s takes 0 or 1 values' % name)
-             else:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s takes %d value%s'
-                                   % (name, nargs, 's' if nargs != 1 else ''))
- 
-@@ -441,59 +441,59 @@ class TestOption(unittest.TestCase):
-                         default=default)
-         if nargs in (0, '?', '*') or disabled:
-             value = option.get_value('--%s' % name, 'option')
--            self.assertEquals(value, posOptionValue())
--            self.assertEquals(value.origin, 'option')
-+            self.assertEqual(value, posOptionValue())
-+            self.assertEqual(value.origin, 'option')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 option.get_value('--%s' % name)
-             if disabled:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   'Cannot pass a value to --%s' % name)
-             elif nargs == '+':
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s takes 1 or more values' % name)
-             else:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s takes %d value%s'
-                                   % (name, nargs, 's' if nargs != 1 else ''))
- 
-         value = option.get_value('')
--        self.assertEquals(value, defaultValue)
--        self.assertEquals(value.origin, 'default')
-+        self.assertEqual(value, defaultValue)
-+        self.assertEqual(value.origin, 'default')
- 
-         value = option.get_value(None)
--        self.assertEquals(value, defaultValue)
--        self.assertEquals(value.origin, 'default')
-+        self.assertEqual(value, defaultValue)
-+        self.assertEqual(value.origin, 'default')
- 
-         value = option.get_value('MOZ_OPTION=', 'environment')
--        self.assertEquals(value, NegativeOptionValue())
--        self.assertEquals(value.origin, 'environment')
-+        self.assertEqual(value, NegativeOptionValue())
-+        self.assertEqual(value.origin, 'environment')
- 
-         if nargs in (0, '?', '*'):
-             value = option.get_value('MOZ_OPTION=1', 'environment')
--            self.assertEquals(value, PositiveOptionValue())
--            self.assertEquals(value.origin, 'environment')
-+            self.assertEqual(value, PositiveOptionValue())
-+            self.assertEqual(value.origin, 'environment')
-         elif nargs in (1, '+'):
-             value = option.get_value('MOZ_OPTION=1', 'environment')
--            self.assertEquals(value, PositiveOptionValue(('1',)))
--            self.assertEquals(value.origin, 'environment')
-+            self.assertEqual(value, PositiveOptionValue(('1',)))
-+            self.assertEqual(value.origin, 'environment')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 option.get_value('MOZ_OPTION=1', 'environment')
--            self.assertEquals(e.exception.message, 'MOZ_OPTION takes 2 values')
-+            self.assertEqual(e.exception.message, 'MOZ_OPTION takes 2 values')
- 
-         if nargs in (1, '?', '*', '+') and not disabled:
-             value = option.get_value('--%s=' % name, 'option')
--            self.assertEquals(value, PositiveOptionValue(('',)))
--            self.assertEquals(value.origin, 'option')
-+            self.assertEqual(value, PositiveOptionValue(('',)))
-+            self.assertEqual(value.origin, 'option')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 option.get_value('--%s=' % name, 'option')
-             if disabled:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   'Cannot pass a value to --%s' % name)
-             else:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s takes %d values' % (name, nargs))
- 
-         with self.assertRaises(AssertionError):
-@@ -501,26 +501,26 @@ class TestOption(unittest.TestCase):
- 
-         if nargs in (1, '?', '*', '+'):
-             value = option.get_value('MOZ_OPTION=foo', 'environment')
--            self.assertEquals(value, PositiveOptionValue(('foo',)))
--            self.assertEquals(value.origin, 'environment')
-+            self.assertEqual(value, PositiveOptionValue(('foo',)))
-+            self.assertEqual(value.origin, 'environment')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 option.get_value('MOZ_OPTION=foo', 'environment')
--            self.assertEquals(e.exception.message,
-+            self.assertEqual(e.exception.message,
-                               'MOZ_OPTION takes %d values' % nargs)
- 
-         if nargs in (2, '*', '+'):
-             value = option.get_value('MOZ_OPTION=foo,bar', 'environment')
--            self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
--            self.assertEquals(value.origin, 'environment')
-+            self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+            self.assertEqual(value.origin, 'environment')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 option.get_value('MOZ_OPTION=foo,bar', 'environment')
-             if nargs == '?':
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   'MOZ_OPTION takes 0 or 1 values')
-             else:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   'MOZ_OPTION takes %d value%s'
-                                   % (nargs, 's' if nargs != 1 else ''))
- 
-@@ -532,26 +532,26 @@ class TestOption(unittest.TestCase):
-             env_option.get_value('--%s' % name)
- 
-         value = env_option.get_value('')
--        self.assertEquals(value, defaultValue)
--        self.assertEquals(value.origin, 'default')
-+        self.assertEqual(value, defaultValue)
-+        self.assertEqual(value.origin, 'default')
- 
-         value = env_option.get_value('MOZ_OPTION=', 'environment')
--        self.assertEquals(value, negOptionValue())
--        self.assertEquals(value.origin, 'environment')
-+        self.assertEqual(value, negOptionValue())
-+        self.assertEqual(value.origin, 'environment')
- 
-         if nargs in (0, '?', '*'):
-             value = env_option.get_value('MOZ_OPTION=1', 'environment')
--            self.assertEquals(value, posOptionValue())
-+            self.assertEqual(value, posOptionValue())
-             self.assertTrue(value)
--            self.assertEquals(value.origin, 'environment')
-+            self.assertEqual(value.origin, 'environment')
-         elif nargs in (1, '+'):
-             value = env_option.get_value('MOZ_OPTION=1', 'environment')
--            self.assertEquals(value, PositiveOptionValue(('1',)))
--            self.assertEquals(value.origin, 'environment')
-+            self.assertEqual(value, PositiveOptionValue(('1',)))
-+            self.assertEqual(value.origin, 'environment')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 env_option.get_value('MOZ_OPTION=1', 'environment')
--            self.assertEquals(e.exception.message, 'MOZ_OPTION takes 2 values')
-+            self.assertEqual(e.exception.message, 'MOZ_OPTION takes 2 values')
- 
-         with self.assertRaises(AssertionError) as e:
-             env_option.get_value('--%s' % name)
-@@ -561,26 +561,26 @@ class TestOption(unittest.TestCase):
- 
-         if nargs in (1, '?', '*', '+'):
-             value = env_option.get_value('MOZ_OPTION=foo', 'environment')
--            self.assertEquals(value, PositiveOptionValue(('foo',)))
--            self.assertEquals(value.origin, 'environment')
-+            self.assertEqual(value, PositiveOptionValue(('foo',)))
-+            self.assertEqual(value.origin, 'environment')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 env_option.get_value('MOZ_OPTION=foo', 'environment')
--            self.assertEquals(e.exception.message,
-+            self.assertEqual(e.exception.message,
-                               'MOZ_OPTION takes %d values' % nargs)
- 
-         if nargs in (2, '*', '+'):
-             value = env_option.get_value('MOZ_OPTION=foo,bar', 'environment')
--            self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
--            self.assertEquals(value.origin, 'environment')
-+            self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+            self.assertEqual(value.origin, 'environment')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 env_option.get_value('MOZ_OPTION=foo,bar', 'environment')
-             if nargs == '?':
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   'MOZ_OPTION takes 0 or 1 values')
-             else:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   'MOZ_OPTION takes %d value%s'
-                                   % (nargs, 's' if nargs != 1 else ''))
- 
-@@ -592,28 +592,28 @@ class TestOption(unittest.TestCase):
-                                         default=default)
- 
-         value = option.get_value('--%s-option' % disable, 'option')
--        self.assertEquals(value, NegativeOptionValue())
--        self.assertEquals(value.origin, 'option')
-+        self.assertEqual(value, NegativeOptionValue())
-+        self.assertEqual(value.origin, 'option')
- 
-         option = self.test_option_value('%s-option' % disable, nargs=nargs,
-                                         default=default)
- 
-         if nargs in (0, '?', '*'):
-             value = option.get_value('--%s-option' % enable, 'option')
--            self.assertEquals(value, PositiveOptionValue())
--            self.assertEquals(value.origin, 'option')
-+            self.assertEqual(value, PositiveOptionValue())
-+            self.assertEqual(value.origin, 'option')
-         else:
-             with self.assertRaises(InvalidOptionError) as e:
-                 option.get_value('--%s-option' % enable, 'option')
-             if nargs == 1:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s-option takes 1 value' % enable)
-             elif nargs == '+':
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s-option takes 1 or more values'
-                                   % enable)
-             else:
--                self.assertEquals(e.exception.message,
-+                self.assertEqual(e.exception.message,
-                                   '--%s-option takes 2 values' % enable)
- 
-     def test_option_value_with(self):
-@@ -622,12 +622,12 @@ class TestOption(unittest.TestCase):
-     def test_option_value_invalid_nargs(self):
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs='foo')
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "nargs must be a positive integer, '?', '*' or '+'")
- 
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--option', nargs=-2)
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "nargs must be a positive integer, '?', '*' or '+'")
- 
-     def test_option_value_nargs_1(self):
-@@ -638,7 +638,7 @@ class TestOption(unittest.TestCase):
-         # A default is required
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--disable-option', nargs=1)
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-     def test_option_value_nargs_2(self):
-@@ -649,7 +649,7 @@ class TestOption(unittest.TestCase):
-         # A default is required
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--disable-option', nargs=2)
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
-     def test_option_value_nargs_0_or_1(self):
-@@ -676,7 +676,7 @@ class TestOption(unittest.TestCase):
-         # A default is required
-         with self.assertRaises(InvalidOptionError) as e:
-             Option('--disable-option', nargs='+')
--        self.assertEquals(e.exception.message,
-+        self.assertEqual(e.exception.message,
-                           "The given `default` doesn't satisfy `nargs`")
- 
- 
-@@ -684,21 +684,21 @@ class TestCommandLineHelper(unittest.TestCase):
-     def test_basic(self):
-         helper = CommandLineHelper({}, ['cmd', '--foo', '--bar'])
- 
--        self.assertEquals(['--foo', '--bar'], list(helper))
-+        self.assertEqual(['--foo', '--bar'], list(helper))
- 
-         helper.add('--enable-qux')
- 
--        self.assertEquals(['--foo', '--bar', '--enable-qux'], list(helper))
-+        self.assertEqual(['--foo', '--bar', '--enable-qux'], list(helper))
- 
-         value, option = helper.handle(Option('--bar'))
--        self.assertEquals(['--foo', '--enable-qux'], list(helper))
--        self.assertEquals(PositiveOptionValue(), value)
--        self.assertEquals('--bar', option)
-+        self.assertEqual(['--foo', '--enable-qux'], list(helper))
-+        self.assertEqual(PositiveOptionValue(), value)
-+        self.assertEqual('--bar', option)
- 
-         value, option = helper.handle(Option('--baz'))
--        self.assertEquals(['--foo', '--enable-qux'], list(helper))
--        self.assertEquals(NegativeOptionValue(), value)
--        self.assertEquals(None, option)
-+        self.assertEqual(['--foo', '--enable-qux'], list(helper))
-+        self.assertEqual(NegativeOptionValue(), value)
-+        self.assertEqual(None, option)
- 
-         with self.assertRaises(AssertionError):
-             CommandLineHelper({}, ['--foo', '--bar'])
-@@ -707,89 +707,89 @@ class TestCommandLineHelper(unittest.TestCase):
-         foo = Option('--with-foo', nargs='*')
-         helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b'])
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(('a', 'b')), value)
--        self.assertEquals('command-line', value.origin)
--        self.assertEquals('--with-foo=a,b', option)
-+        self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+        self.assertEqual('command-line', value.origin)
-+        self.assertEqual('--with-foo=a,b', option)
- 
-         helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b',
-                                         '--without-foo'])
-         value, option = helper.handle(foo)
--        self.assertEquals(NegativeOptionValue(), value)
--        self.assertEquals('command-line', value.origin)
--        self.assertEquals('--without-foo', option)
-+        self.assertEqual(NegativeOptionValue(), value)
-+        self.assertEqual('command-line', value.origin)
-+        self.assertEqual('--without-foo', option)
- 
-         helper = CommandLineHelper({}, ['cmd', '--without-foo',
-                                         '--with-foo=a,b'])
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(('a', 'b')), value)
--        self.assertEquals('command-line', value.origin)
--        self.assertEquals('--with-foo=a,b', option)
-+        self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+        self.assertEqual('command-line', value.origin)
-+        self.assertEqual('--with-foo=a,b', option)
- 
-         foo = Option('--with-foo', env='FOO', nargs='*')
-         helper = CommandLineHelper({'FOO': ''}, ['cmd', '--with-foo=a,b'])
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(('a', 'b')), value)
--        self.assertEquals('command-line', value.origin)
--        self.assertEquals('--with-foo=a,b', option)
-+        self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+        self.assertEqual('command-line', value.origin)
-+        self.assertEqual('--with-foo=a,b', option)
- 
-         helper = CommandLineHelper({'FOO': 'a,b'}, ['cmd', '--without-foo'])
-         value, option = helper.handle(foo)
--        self.assertEquals(NegativeOptionValue(), value)
--        self.assertEquals('command-line', value.origin)
--        self.assertEquals('--without-foo', option)
-+        self.assertEqual(NegativeOptionValue(), value)
-+        self.assertEqual('command-line', value.origin)
-+        self.assertEqual('--without-foo', option)
- 
-         helper = CommandLineHelper({'FOO': ''}, ['cmd', '--with-bar=a,b'])
-         value, option = helper.handle(foo)
--        self.assertEquals(NegativeOptionValue(), value)
--        self.assertEquals('environment', value.origin)
--        self.assertEquals('FOO=', option)
-+        self.assertEqual(NegativeOptionValue(), value)
-+        self.assertEqual('environment', value.origin)
-+        self.assertEqual('FOO=', option)
- 
-         helper = CommandLineHelper({'FOO': 'a,b'}, ['cmd', '--without-bar'])
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(('a', 'b')), value)
--        self.assertEquals('environment', value.origin)
--        self.assertEquals('FOO=a,b', option)
-+        self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+        self.assertEqual('environment', value.origin)
-+        self.assertEqual('FOO=a,b', option)
- 
-         helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b', 'FOO='])
-         value, option = helper.handle(foo)
--        self.assertEquals(NegativeOptionValue(), value)
--        self.assertEquals('command-line', value.origin)
--        self.assertEquals('FOO=', option)
-+        self.assertEqual(NegativeOptionValue(), value)
-+        self.assertEqual('command-line', value.origin)
-+        self.assertEqual('FOO=', option)
- 
-         helper = CommandLineHelper({}, ['cmd', '--without-foo', 'FOO=a,b'])
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(('a', 'b')), value)
--        self.assertEquals('command-line', value.origin)
--        self.assertEquals('FOO=a,b', option)
-+        self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+        self.assertEqual('command-line', value.origin)
-+        self.assertEqual('FOO=a,b', option)
- 
-         helper = CommandLineHelper({}, ['cmd', 'FOO=', '--with-foo=a,b'])
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(('a', 'b')), value)
--        self.assertEquals('command-line', value.origin)
--        self.assertEquals('--with-foo=a,b', option)
-+        self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+        self.assertEqual('command-line', value.origin)
-+        self.assertEqual('--with-foo=a,b', option)
- 
-         helper = CommandLineHelper({}, ['cmd', 'FOO=a,b', '--without-foo'])
-         value, option = helper.handle(foo)
--        self.assertEquals(NegativeOptionValue(), value)
--        self.assertEquals('command-line', value.origin)
--        self.assertEquals('--without-foo', option)
-+        self.assertEqual(NegativeOptionValue(), value)
-+        self.assertEqual('command-line', value.origin)
-+        self.assertEqual('--without-foo', option)
- 
-     def test_extra_args(self):
-         foo = Option('--with-foo', env='FOO', nargs='*')
-         helper = CommandLineHelper({}, ['cmd'])
-         helper.add('FOO=a,b,c', 'other-origin')
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
--        self.assertEquals('other-origin', value.origin)
--        self.assertEquals('FOO=a,b,c', option)
-+        self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+        self.assertEqual('other-origin', value.origin)
-+        self.assertEqual('FOO=a,b,c', option)
- 
-         helper = CommandLineHelper({}, ['cmd'])
-         helper.add('FOO=a,b,c', 'other-origin')
-         helper.add('--with-foo=a,b,c', 'other-origin')
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
--        self.assertEquals('other-origin', value.origin)
--        self.assertEquals('--with-foo=a,b,c', option)
-+        self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+        self.assertEqual('other-origin', value.origin)
-+        self.assertEqual('--with-foo=a,b,c', option)
- 
-         # Adding conflicting options is not allowed.
-         helper = CommandLineHelper({}, ['cmd'])
-@@ -809,9 +809,9 @@ class TestCommandLineHelper(unittest.TestCase):
-         # But adding the same is allowed.
-         helper.add('FOO=a,b,c', 'other-origin')
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
--        self.assertEquals('other-origin', value.origin)
--        self.assertEquals('FOO=a,b,c', option)
-+        self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+        self.assertEqual('other-origin', value.origin)
-+        self.assertEqual('FOO=a,b,c', option)
- 
-         # The same rule as above applies when using the option form vs. the
-         # variable form. But we can't detect it when .add is called.
-@@ -837,9 +837,9 @@ class TestCommandLineHelper(unittest.TestCase):
-         helper.add('FOO=a,b,c', 'other-origin')
-         helper.add('--with-foo=a,b,c', 'other-origin')
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
--        self.assertEquals('other-origin', value.origin)
--        self.assertEquals('--with-foo=a,b,c', option)
-+        self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+        self.assertEqual('other-origin', value.origin)
-+        self.assertEqual('--with-foo=a,b,c', option)
- 
-         # Conflicts are also not allowed against what is in the
-         # environment/on the command line.
-@@ -869,19 +869,19 @@ class TestCommandLineHelper(unittest.TestCase):
-         foo = Option('--foo',
-                      possible_origins=('command-line',))
-         value, option = helper.handle(foo)
--        self.assertEquals(PositiveOptionValue(), value)
--        self.assertEquals('command-line', value.origin)
--        self.assertEquals('--foo', option)
-+        self.assertEqual(PositiveOptionValue(), value)
-+        self.assertEqual('command-line', value.origin)
-+        self.assertEqual('--foo', option)
- 
-         bar = Option('--bar',
-                      possible_origins=('mozconfig',))
--        with self.assertRaisesRegexp(InvalidOptionError,
-+        with self.assertRaisesRegex(InvalidOptionError,
-             "--bar can not be set by command-line. Values are accepted from: mozconfig"):
-             helper.handle(bar)
- 
-         baz = Option(env='BAZ',
-                      possible_origins=('implied',))
--        with self.assertRaisesRegexp(InvalidOptionError,
-+        with self.assertRaisesRegex(InvalidOptionError,
-             "BAZ=1 can not be set by environment. Values are accepted from: implied"):
-             helper.handle(baz)
- 
-diff --git a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
-index cb7ff709e..c339a32bf 100755
---- a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
-+++ b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
-@@ -2,12 +2,12 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import logging
- import os
- 
--from StringIO import StringIO
-+from io import StringIO
- 
- from mozunit import main
- 
-@@ -366,9 +366,9 @@ class BaseToolchainTest(BaseConfigureTest):
-                 compiler = sandbox._value_for(sandbox[var])
-                 # Add var on both ends to make it clear which of the
-                 # variables is failing the test when that happens.
--                self.assertEquals((var, compiler), (var, result))
-+                self.assertEqual((var, compiler), (var, result))
-             except SystemExit:
--                self.assertEquals((var, result),
-+                self.assertEqual((var, result),
-                                   (var, self.out.getvalue().strip()))
-                 return
- 
-@@ -407,7 +407,7 @@ class BaseToolchainTest(BaseConfigureTest):
-             'RUST_LIB_SUFFIX',
-             'OBJ_SUFFIX',
-         ):
--            self.assertEquals('%s=%s' % (k, sandbox.get_config(k)),
-+            self.assertEqual('%s=%s' % (k, sandbox.get_config(k)),
-                               '%s=%s' % (k, library_name_info[k]))
- 
- 
-@@ -584,7 +584,7 @@ class LinuxToolchainTest(BaseToolchainTest):
-         # We'll try gcc and clang, but since there is no gcc (gcc-x.y doesn't
-         # count), find clang.
-         paths = {
--            k: v for k, v in self.PATHS.iteritems()
-+            k: v for k, v in self.PATHS.items()
-             if os.path.basename(k) not in ('gcc', 'g++')
-         }
-         self.do_toolchain_test(paths, {
-@@ -619,7 +619,7 @@ class LinuxToolchainTest(BaseToolchainTest):
-         # Even if there are gcc-x.y or clang-x.y compilers available, we
-         # don't try them. This could be considered something to improve.
-         paths = {
--            k: v for k, v in self.PATHS.iteritems()
-+            k: v for k, v in self.PATHS.items()
-             if os.path.basename(k) not in ('gcc', 'g++', 'clang', 'clang++')
-         }
-         self.do_toolchain_test(paths, {
-@@ -800,7 +800,7 @@ class OSXToolchainTest(BaseToolchainTest):
-     def test_not_gcc(self):
-         # We won't pick GCC if it's the only thing available.
-         paths = {
--            k: v for k, v in self.PATHS.iteritems()
-+            k: v for k, v in self.PATHS.items()
-             if os.path.basename(k) not in ('clang', 'clang++')
-         }
-         self.do_toolchain_test(paths, {
-@@ -976,7 +976,7 @@ class WindowsToolchainTest(BaseToolchainTest):
-     def test_clang_cl(self):
-         # We'll pick clang-cl if msvc can't be found.
-         paths = {
--            k: v for k, v in self.PATHS.iteritems()
-+            k: v for k, v in self.PATHS.items()
-             if os.path.basename(k) != 'cl'
-         }
-         self.do_toolchain_test(paths, {
-@@ -987,7 +987,7 @@ class WindowsToolchainTest(BaseToolchainTest):
-     def test_gcc(self):
-         # We'll pick GCC if msvc and clang-cl can't be found.
-         paths = {
--            k: v for k, v in self.PATHS.iteritems()
-+            k: v for k, v in self.PATHS.items()
-             if os.path.basename(k) not in ('cl', 'clang-cl')
-         }
-         self.do_toolchain_test(paths, {
-@@ -1006,7 +1006,7 @@ class WindowsToolchainTest(BaseToolchainTest):
-     def test_clang(self):
-         # We'll pick clang if nothing else is found.
-         paths = {
--            k: v for k, v in self.PATHS.iteritems()
-+            k: v for k, v in self.PATHS.items()
-             if os.path.basename(k) not in ('cl', 'clang-cl', 'gcc')
-         }
-         self.do_toolchain_test(paths, {
-diff --git a/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py b/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py
-index 8ec33a8b7..ba046ed12 100644
---- a/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py
-+++ b/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import copy
- import re
-@@ -10,7 +10,7 @@ import types
- import unittest
- 
- from fnmatch import fnmatch
--from StringIO import StringIO
-+from io import StringIO
- from textwrap import dedent
- 
- from mozunit import (
-@@ -43,7 +43,7 @@ class CompilerPreprocessor(Preprocessor):
-         # Hack around it enough that the configure tests work properly.
-         context = self.context
-         def normalize_numbers(value):
--            if isinstance(value, types.StringTypes):
-+            if isinstance(value, (str,)):
-                 if value[-1:] == 'L' and value[:-1].isdigit():
-                     value = int(value[:-1])
-             return value
-@@ -53,7 +53,7 @@ class CompilerPreprocessor(Preprocessor):
-             return self.HAS_FEATURE.sub(r'\1\2', expr)
-         self.context = self.Context(
-             (normalize_has_feature(k), normalize_numbers(v))
--            for k, v in context.iteritems()
-+            for k, v in context.items()
-         )
-         try:
-             return Preprocessor.do_if(self, normalize_has_feature(expression),
-@@ -95,7 +95,7 @@ class TestCompilerPreprocessor(unittest.TestCase):
-         input.name = 'foo'
-         pp.do_include(input)
- 
--        self.assertEquals(pp.out.getvalue(), '1 . 2 . c "D"')
-+        self.assertEqual(pp.out.getvalue(), '1 . 2 . c "D"')
- 
-     def test_condition(self):
-         pp = CompilerPreprocessor({
-@@ -125,7 +125,7 @@ class TestCompilerPreprocessor(unittest.TestCase):
-         input.name = 'foo'
-         pp.do_include(input)
- 
--        self.assertEquals('IFDEF_A\nIF_A\nIF_B\nIF_NOT_C\n', pp.out.getvalue())
-+        self.assertEqual('IFDEF_A\nIF_A\nIF_B\nIF_NOT_C\n', pp.out.getvalue())
- 
- 
- class FakeCompiler(dict):
-@@ -164,9 +164,9 @@ class FakeCompiler(dict):
-     '''
-     def __init__(self, *definitions):
-         for definition in definitions:
--            if all(not isinstance(d, dict) for d in definition.itervalues()):
-+            if all(not isinstance(d, dict) for d in definition.values()):
-                 definition = {None: definition}
--            for key, value in definition.iteritems():
-+            for key, value in definition.items():
-                 self.setdefault(key, {}).update(value)
- 
-     def __call__(self, stdin, args):
-@@ -178,14 +178,14 @@ class FakeCompiler(dict):
-             pp = CompilerPreprocessor(self[None])
- 
-             def apply_defn(defn):
--                for k, v in defn.iteritems():
-+                for k, v in defn.items():
-                     if v is False:
-                         if k in pp.context:
-                             del pp.context[k]
-                     else:
-                         pp.context[k] = v
- 
--            for glob, defn in self.iteritems():
-+            for glob, defn in self.items():
-                 if glob and not glob.startswith('-') and fnmatch(file, glob):
-                     apply_defn(defn)
- 
-@@ -216,7 +216,7 @@ class TestFakeCompiler(unittest.TestCase):
-                 'A': '1',
-                 'B': '2',
-             })
--            self.assertEquals(compiler(None, ['-E', 'file']),
-+            self.assertEqual(compiler(None, ['-E', 'file']),
-                               (0, '1 2 C', ''))
- 
-             compiler = FakeCompiler({
-@@ -238,25 +238,25 @@ class TestFakeCompiler(unittest.TestCase):
-                     'B': '42',
-                 },
-             })
--            self.assertEquals(compiler(None, ['-E', 'file']),
-+            self.assertEqual(compiler(None, ['-E', 'file']),
-                               (0, '1 2 C', ''))
--            self.assertEquals(compiler(None, ['-E', '-foo', 'file']),
-+            self.assertEqual(compiler(None, ['-E', '-foo', 'file']),
-                               (0, '1 2 foo', ''))
--            self.assertEquals(compiler(None, ['-E', '-bar', 'file']),
-+            self.assertEqual(compiler(None, ['-E', '-bar', 'file']),
-                               (0, '1 bar bar', ''))
--            self.assertEquals(compiler(None, ['-E', '-qux', 'file']),
-+            self.assertEqual(compiler(None, ['-E', '-qux', 'file']),
-                               (0, '1 B C', ''))
--            self.assertEquals(compiler(None, ['-E', '-foo', '-bar', 'file']),
-+            self.assertEqual(compiler(None, ['-E', '-foo', '-bar', 'file']),
-                               (0, '1 bar bar', ''))
--            self.assertEquals(compiler(None, ['-E', '-bar', '-foo', 'file']),
-+            self.assertEqual(compiler(None, ['-E', '-bar', '-foo', 'file']),
-                               (0, '1 bar foo', ''))
--            self.assertEquals(compiler(None, ['-E', '-bar', '-qux', 'file']),
-+            self.assertEqual(compiler(None, ['-E', '-bar', '-qux', 'file']),
-                               (0, '1 B bar', ''))
--            self.assertEquals(compiler(None, ['-E', '-qux', '-bar', 'file']),
-+            self.assertEqual(compiler(None, ['-E', '-qux', '-bar', 'file']),
-                               (0, '1 bar bar', ''))
--            self.assertEquals(compiler(None, ['-E', 'file.c']),
-+            self.assertEqual(compiler(None, ['-E', 'file.c']),
-                               (0, '1 42 C', ''))
--            self.assertEquals(compiler(None, ['-E', '-bar', 'file.c']),
-+            self.assertEqual(compiler(None, ['-E', '-bar', 'file.c']),
-                               (0, '1 bar bar', ''))
- 
-     def test_multiple_definitions(self):
-@@ -267,7 +267,7 @@ class TestFakeCompiler(unittest.TestCase):
-             'C': 3,
-         })
- 
--        self.assertEquals(compiler, {
-+        self.assertEqual(compiler, {
-             None: {
-                 'A': 1,
-                 'B': 2,
-@@ -282,7 +282,7 @@ class TestFakeCompiler(unittest.TestCase):
-             'C': 3,
-         })
- 
--        self.assertEquals(compiler, {
-+        self.assertEqual(compiler, {
-             None: {
-                 'A': 1,
-                 'B': 4,
-@@ -302,7 +302,7 @@ class TestFakeCompiler(unittest.TestCase):
-             },
-         })
- 
--        self.assertEquals(compiler, {
-+        self.assertEqual(compiler, {
-             None: {
-                 'A': 1,
-                 'B': 4,
-@@ -330,7 +330,7 @@ class TestFakeCompiler(unittest.TestCase):
-             },
-         })
- 
--        self.assertEquals(compiler, {
-+        self.assertEqual(compiler, {
-             None: {
-                 'A': 1,
-                 'B': 2,
-@@ -370,7 +370,7 @@ class CompilerResult(ReadOnlyNamespace):
-     def __add__(self, other):
-         assert isinstance(other, dict)
-         result = copy.deepcopy(self.__dict__)
--        for k, v in other.iteritems():
-+        for k, v in other.items():
-             if k == 'flags':
-                 result.setdefault(k, []).extend(v)
-             else:
-@@ -381,7 +381,7 @@ class CompilerResult(ReadOnlyNamespace):
- class TestCompilerResult(unittest.TestCase):
-     def test_compiler_result(self):
-         result = CompilerResult()
--        self.assertEquals(result.__dict__, {
-+        self.assertEqual(result.__dict__, {
-             'wrapper': [],
-             'compiler': mozpath.abspath(''),
-             'version': '',
-@@ -397,7 +397,7 @@ class TestCompilerResult(unittest.TestCase):
-             language='C',
-             flags=['-std=gnu99'],
-         )
--        self.assertEquals(result.__dict__, {
-+        self.assertEqual(result.__dict__, {
-             'wrapper': [],
-             'compiler': mozpath.abspath('/usr/bin/gcc'),
-             'version': '4.2.1',
-@@ -407,7 +407,7 @@ class TestCompilerResult(unittest.TestCase):
-         })
- 
-         result2 = result + {'flags': ['-m32']}
--        self.assertEquals(result2.__dict__, {
-+        self.assertEqual(result2.__dict__, {
-             'wrapper': [],
-             'compiler': mozpath.abspath('/usr/bin/gcc'),
-             'version': '4.2.1',
-@@ -416,14 +416,14 @@ class TestCompilerResult(unittest.TestCase):
-             'flags': ['-std=gnu99', '-m32'],
-         })
-         # Original flags are untouched.
--        self.assertEquals(result.flags, ['-std=gnu99'])
-+        self.assertEqual(result.flags, ['-std=gnu99'])
- 
-         result3 = result + {
-             'compiler': '/usr/bin/gcc-4.7',
-             'version': '4.7.3',
-             'flags': ['-m32'],
-         }
--        self.assertEquals(result3.__dict__, {
-+        self.assertEqual(result3.__dict__, {
-             'wrapper': [],
-             'compiler': mozpath.abspath('/usr/bin/gcc-4.7'),
-             'version': '4.7.3',
-diff --git a/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py b/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py
-index ac35d745f..cdd8ece1b 100644
---- a/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py
-+++ b/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import os
- 
-diff --git a/python/mozbuild/mozbuild/test/configure/test_util.py b/python/mozbuild/mozbuild/test/configure/test_util.py
-index 9f9575fd0..c2db1a628 100644
---- a/python/mozbuild/mozbuild/test/configure/test_util.py
-+++ b/python/mozbuild/mozbuild/test/configure/test_util.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function, unicode_literals
-+
- 
- import logging
- import os
-@@ -11,7 +11,7 @@ import textwrap
- import unittest
- import sys
- 
--from StringIO import StringIO
-+from io import StringIO
- 
- from mozunit import main
- from mozpack import path as mozpath
-@@ -434,11 +434,11 @@ class TestLogSubprocessOutput(unittest.TestCase):
-         except SystemExit as e:
-             status = e.code
- 
--        self.assertEquals(status, 0)
-+        self.assertEqual(status, 0)
-         quote_char = "'"
-         if getpreferredencoding().lower() == 'utf-8':
-             quote_char = '\u00B4'.encode('utf-8')
--        self.assertEquals(out.getvalue().strip(), quote_char)
-+        self.assertEqual(out.getvalue().strip(), quote_char)
- 
- 
- class TestVersion(unittest.TestCase):
-diff --git a/python/mozbuild/mozbuild/testing.py b/python/mozbuild/mozbuild/testing.py
-index 3229c3f77..82d250fab 100644
---- a/python/mozbuild/mozbuild/testing.py
-+++ b/python/mozbuild/mozbuild/testing.py
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, unicode_literals
- 
--import cPickle as pickle
-+
-+import pickle as pickle
- import os
- import sys
- 
-@@ -70,7 +70,7 @@ REFTEST_FLAVORS = ('crashtest', 'reftest')
- WEB_PLATFORM_TESTS_FLAVORS = ('web-platform-tests',)
- 
- def all_test_flavors():
--    return ([v[0] for v in TEST_MANIFESTS.values()] +
-+    return ([v[0] for v in list(TEST_MANIFESTS.values())] +
-             list(REFTEST_FLAVORS) +
-             list(WEB_PLATFORM_TESTS_FLAVORS))
- 
-@@ -210,7 +210,7 @@ def install_test_files(topsrcdir, topobjdir, tests_root, test_objs):
-     only a few tests need to be run.
-     """
-     flavor_info = {flavor: (root, prefix, install)
--                   for (flavor, root, prefix, install) in TEST_MANIFESTS.values()}
-+                   for (flavor, root, prefix, install) in list(TEST_MANIFESTS.values())}
-     objdir_dest = mozpath.join(topobjdir, tests_root)
- 
-     converter = SupportFilesConverter()
-@@ -292,7 +292,7 @@ def read_wpt_manifest(context, paths):
-         paths_file = os.path.join(context.config.topsrcdir, "testing",
-                                   "web-platform", "tests", "tools", "localpaths.py")
-         _globals = {"__file__": paths_file}
--        execfile(paths_file, _globals)
-+        exec(compile(open(paths_file, "rb").read(), paths_file, 'exec'), _globals)
-         import manifest as wptmanifest
-     finally:
-         sys.path = old_path
-diff --git a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py
-index 4ea227dc0..79cb15713 100644
---- a/python/mozbuild/mozbuild/util.py
-+++ b/python/mozbuild/mozbuild/util.py
-@@ -5,7 +5,7 @@
- # This file contains miscellaneous utility functions that don't belong anywhere
- # in particular.
- 
--from __future__ import absolute_import, unicode_literals, print_function
-+
- 
- import argparse
- import collections
-@@ -21,6 +21,9 @@ import stat
- import sys
- import time
- import types
-+import pprint
-+import six
-+import subprocess
- 
- from collections import (
-     defaultdict,
-@@ -36,7 +39,7 @@ from io import (
- if sys.version_info[0] == 3:
-     str_type = str
- else:
--    str_type = basestring
-+    str_type = str
- 
- if sys.platform == 'win32':
-     _kernel32 = ctypes.windll.kernel32
-@@ -78,7 +81,7 @@ def hash_file(path, hasher=None):
-     return h.hexdigest()
- 
- 
--class EmptyValue(unicode):
-+class EmptyValue(str):
-     """A dummy type that behaves like an empty string and sequence.
- 
-     This type exists in order to support
-@@ -92,7 +95,7 @@ class EmptyValue(unicode):
- class ReadOnlyNamespace(object):
-     """A class for objects with immutable attributes set at initialization."""
-     def __init__(self, **kwargs):
--        for k, v in kwargs.iteritems():
-+        for k, v in kwargs.items():
-             super(ReadOnlyNamespace, self).__setattr__(k, v)
- 
-     def __delattr__(self, key):
-@@ -224,7 +227,7 @@ class FileAvoidWrite(BytesIO):
-         self.mode = mode
- 
-     def write(self, buf):
--        if isinstance(buf, unicode):
-+        if isinstance(buf, str):
-             buf = buf.encode('utf-8')
-         BytesIO.write(self, buf)
- 
-@@ -267,6 +270,10 @@ class FileAvoidWrite(BytesIO):
-             if 'b' in self.mode:
-                 writemode += 'b'
-             with open(self.name, writemode) as file:
-+                if 'b' in self.mode and isinstance(buf, str):
-+                    buf = buf.encode('utf-8')
-+                elif 'b' not in self.mode and isinstance(buf, bytes):
-+                    buf = buf.decode('utf-8')
-                 file.write(buf)
- 
-         if self._capture_diff:
-@@ -381,7 +388,7 @@ class ListMixin(object):
-     def __add__(self, other):
-         # Allow None and EmptyValue is a special case because it makes undefined
-         # variable references in moz.build behave better.
--        other = [] if isinstance(other, (types.NoneType, EmptyValue)) else other
-+        other = [] if isinstance(other, (type(None), EmptyValue)) else other
-         if not isinstance(other, list):
-             raise ValueError('Only lists can be appended to lists.')
- 
-@@ -390,7 +397,7 @@ class ListMixin(object):
-         return new_list
- 
-     def __iadd__(self, other):
--        other = [] if isinstance(other, (types.NoneType, EmptyValue)) else other
-+        other = [] if isinstance(other, (type(None), EmptyValue)) else other
-         if not isinstance(other, list):
-             raise ValueError('Only lists can be appended to lists.')
- 
-@@ -561,14 +568,14 @@ def FlagsFactory(flags):
-     functions below.
-     """
-     assert isinstance(flags, dict)
--    assert all(isinstance(v, type) for v in flags.values())
-+    assert all(isinstance(v, type) for v in list(flags.values()))
- 
-     class Flags(object):
--        __slots__ = flags.keys()
-+        __slots__ = list(flags.keys())
-         _flags = flags
- 
-         def update(self, **kwargs):
--            for k, v in kwargs.iteritems():
-+            for k, v in kwargs.items():
-                 setattr(self, k, v)
- 
-         def __getattr__(self, name):
-@@ -1006,8 +1013,6 @@ def TypedNamedTuple(name, fields):
-                                     'got %s, expected %s' % (fname,
-                                     type(value), ftype))
- 
--            super(TypedTuple, self).__init__(*args, **kwargs)
--
-     TypedTuple._fields = fields
- 
-     return TypedTuple
-@@ -1099,14 +1104,14 @@ def group_unified_files(files, unified_prefix, unified_suffix,
-     # issue.  So we do a little dance to filter it out ourselves.
-     dummy_fill_value = ("dummy",)
-     def filter_out_dummy(iterable):
--        return itertools.ifilter(lambda x: x != dummy_fill_value,
-+        return filter(lambda x: x != dummy_fill_value,
-                                  iterable)
- 
-     # From the itertools documentation, slightly modified:
-     def grouper(n, iterable):
-         "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
-         args = [iter(iterable)] * n
--        return itertools.izip_longest(fillvalue=dummy_fill_value, *args)
-+        return itertools.zip_longest(fillvalue=dummy_fill_value, *args)
- 
-     for i, unified_group in enumerate(grouper(files_per_unified_file,
-                                               files)):
-@@ -1123,7 +1128,7 @@ def pair(iterable):
-         [(1,2), (3,4), (5,6)]
-     '''
-     i = iter(iterable)
--    return itertools.izip_longest(i, i)
-+    return itertools.zip_longest(i, i)
- 
- 
- VARIABLES_RE = re.compile('\$\((\w+)\)')
-@@ -1141,7 +1146,7 @@ def expand_variables(s, variables):
-         value = variables.get(name)
-         if not value:
-             continue
--        if not isinstance(value, types.StringTypes):
-+        if not isinstance(value, (str,)):
-             value = ' '.join(value)
-         result += value
-     return result
-@@ -1168,7 +1173,7 @@ class EnumStringComparisonError(Exception):
-     pass
- 
- 
--class EnumString(unicode):
-+class EnumString(str):
-     '''A string type that only can have a limited set of values, similarly to
-     an Enum, and can only be compared against that set of values.
- 
-@@ -1185,8 +1190,8 @@ class EnumString(unicode):
-     def __eq__(self, other):
-         if other not in self.POSSIBLE_VALUES:
-             raise EnumStringComparisonError(
--                'Can only compare with %s'
--                % ', '.join("'%s'" % v for v in self.POSSIBLE_VALUES))
-+                '%s is not in %s'
-+                % (other, ', '.join("'%s'" % v for v in self.POSSIBLE_VALUES)))
-         return super(EnumString, self).__eq__(other)
- 
-     def __ne__(self, other):
-@@ -1204,14 +1209,14 @@ def _escape_char(c):
-     # quoting could be done with either ' or ".
-     if c == "'":
-         return "\\'"
--    return unicode(c.encode('unicode_escape'))
-+    return str(c.encode('unicode_escape'))
- 
- # Mapping table between raw characters below \x80 and their escaped
- # counterpart, when they differ
- _INDENTED_REPR_TABLE = {
-     c: e
-     for c, e in map(lambda x: (x, _escape_char(x)),
--                    map(unichr, range(128)))
-+                    map(chr, range(128)))
-     if c != e
- }
- # Regexp matching all characters to escape.
-@@ -1219,7 +1224,33 @@ _INDENTED_REPR_RE = re.compile(
-     '([' + ''.join(_INDENTED_REPR_TABLE.values()) + ']+)')
- 
- 
-+# Stolen from gecko master [1]
-+# [1] https://github.com/mozilla/gecko-dev/blob/4165a2e843c494bfb3e35d8a1fbf9c61209e3675/python/mozbuild/mozbuild/util.py#L1286
-+
-+# The default PrettyPrinter has some issues with UTF-8, so we need to override
-+# some stuff here.
-+class _PrettyPrinter(pprint.PrettyPrinter):
-+    def format(self, object, context, maxlevels, level):
-+        if not (isinstance(object, six.text_type) or
-+                isinstance(object, six.binary_type)):
-+            return super(_PrettyPrinter, self).format(
-+                object, context, maxlevels, level)
-+        # This is super hacky and weird, but the output of 'repr' actually
-+        # varies based on the default I/O encoding of the process, which isn't
-+        # necessarily utf-8. Instead we open a new shell and ask what the repr
-+        # WOULD be assuming the default encoding is utf-8. If you can come up
-+        # with a better way of doing this without simply re-implementing the
-+        # logic of "repr", please replace this.
-+        env = dict(os.environ)
-+        env['PYTHONIOENCODING'] = 'utf-8'
-+        ret = six.ensure_text(subprocess.check_output(
-+            [sys.executable], input='print(repr(%s))' % repr(object),
-+            universal_newlines=True, env=env, encoding='utf-8')).strip()
-+        return (ret, True, False)
-+
- def indented_repr(o, indent=4):
-+    return _PrettyPrinter(indent=indent).pformat(o)
-+
-     '''Similar to repr(), but returns an indented representation of the object
- 
-     One notable difference with repr is that the returned representation
-@@ -1242,7 +1273,7 @@ def indented_repr(o, indent=4):
-         elif isinstance(o, bytes):
-             yield 'b'
-             yield repr(o)
--        elif isinstance(o, unicode):
-+        elif isinstance(o, str):
-             yield "'"
-             # We want a readable string (non escaped unicode), but some
-             # special characters need escaping (e.g. \n, \t, etc.)
-@@ -1272,11 +1303,11 @@ def encode(obj, encoding='utf-8'):
-     if isinstance(obj, dict):
-         return {
-             encode(k, encoding): encode(v, encoding)
--            for k, v in obj.iteritems()
-+            for k, v in obj.items()
-         }
-     if isinstance(obj, bytes):
-         return obj
--    if isinstance(obj, unicode):
-+    if isinstance(obj, str):
-         return obj.encode(encoding)
-     if isinstance(obj, Iterable):
-         return [encode(i, encoding) for i in obj]
-diff --git a/python/mozbuild/mozbuild/virtualenv.py b/python/mozbuild/mozbuild/virtualenv.py
-index 38d06d71d..c67c046f3 100644
---- a/python/mozbuild/mozbuild/virtualenv.py
-+++ b/python/mozbuild/mozbuild/virtualenv.py
-@@ -531,9 +531,9 @@ def verify_python_version(log_handle):
- 
-     our = LooseVersion('%d.%d.%d' % (major, minor, micro))
- 
--    if major != MINIMUM_PYTHON_MAJOR or our < MINIMUM_PYTHON_VERSION:
--        log_handle.write('Python %s or greater (but not Python 3) is '
--            'required to build. ' % MINIMUM_PYTHON_VERSION)
-+    if our < MINIMUM_PYTHON_VERSION:
-+        log_handle.write('Python %s or greater is required to build. '
-+            % MINIMUM_PYTHON_VERSION)
-         log_handle.write('You are running Python %s.\n' % our)
- 
-         if os.name in ('nt', 'ce'):
-diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
-index c91b99cf1..02eac0dbb 100644
---- a/python/mozbuild/mozpack/chrome/manifest.py
-+++ b/python/mozbuild/mozpack/chrome/manifest.py
-@@ -2,11 +2,11 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import
-+
- 
- import re
- import os
--from urlparse import urlparse
-+from urllib.parse import urlparse
- import mozpack.path as mozpath
- from mozpack.chrome.flags import Flags
- from mozpack.errors import errors
-@@ -316,7 +316,7 @@ class ManifestContract(ManifestEntry):
-         return self.serialize(self.contractID, self.cid)
- 
- # All manifest classes by their type name.
--MANIFESTS_TYPES = dict([(c.type, c) for c in globals().values()
-+MANIFESTS_TYPES = dict([(c.type, c) for c in list(globals().values())
-                        if type(c) == type and issubclass(c, ManifestEntry)
-                        and hasattr(c, 'type') and c.type])
- 
-diff --git a/python/mozbuild/mozpack/copier.py b/python/mozbuild/mozpack/copier.py
-index 1e521e52b..43ed9be4a 100644
---- a/python/mozbuild/mozpack/copier.py
-+++ b/python/mozbuild/mozpack/copier.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import
-+
- 
- import os
- import stat
-@@ -113,7 +113,7 @@ class FileRegistry(object):
-         '''
-         Return all paths stored in the container, in the order they were added.
-         '''
--        return self._files.keys()
-+        return list(self._files.keys())
- 
-     def __len__(self):
-         '''
-@@ -146,7 +146,7 @@ class FileRegistry(object):
-             for path, file in registry:
-                 (...)
-         '''
--        return self._files.iteritems()
-+        return iter(self._files.items())
- 
-     def required_directories(self):
-         '''
-@@ -155,7 +155,7 @@ class FileRegistry(object):
-         unspecified (virtual) root directory (and do not include said root
-         directory).
-         '''
--        return set(k for k, v in self._required_directories.items() if v > 0)
-+        return set(k for k, v in list(self._required_directories.items()) if v > 0)
- 
-     def output_to_inputs_tree(self):
-         '''
-@@ -295,7 +295,7 @@ class FileCopier(FileRegistry):
- 
-         Returns a FileCopyResult that details what changed.
-         '''
--        assert isinstance(destination, basestring)
-+        assert isinstance(destination, str)
-         assert not os.path.exists(destination) or os.path.isdir(destination)
- 
-         result = FileCopyResult()
-@@ -563,7 +563,7 @@ class Jarrer(FileRegistry, BaseFile):
-             def exists(self):
-                 return self.deflater is not None
- 
--        if isinstance(dest, basestring):
-+        if isinstance(dest, str):
-             dest = Dest(dest)
-         assert isinstance(dest, Dest)
- 
-diff --git a/python/mozbuild/mozpack/files.py b/python/mozbuild/mozpack/files.py
-index 8ce353375..bf35e39b8 100644
---- a/python/mozbuild/mozpack/files.py
-+++ b/python/mozbuild/mozpack/files.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import
-+
- 
- import errno
- import os
-@@ -57,7 +57,7 @@ else:
- 
-     def _copyfile(src, dest):
-         # False indicates `dest` should be overwritten if it exists already.
--        if isinstance(src, unicode) and isinstance(dest, unicode):
-+        if isinstance(src, str) and isinstance(dest, str):
-             _CopyFileW(src, dest, False)
-         elif isinstance(src, str) and isinstance(dest, str):
-             _CopyFileA(src, dest, False)
-@@ -164,7 +164,7 @@ class BaseFile(object):
-         disabled when skip_if_older is False.
-         Returns whether a copy was actually performed (True) or not (False).
-         '''
--        if isinstance(dest, basestring):
-+        if isinstance(dest, str):
-             dest = Dest(dest)
-         else:
-             assert isinstance(dest, Dest)
-@@ -278,11 +278,11 @@ class ExecutableFile(File):
-     '''
-     def copy(self, dest, skip_if_older=True):
-         real_dest = dest
--        if not isinstance(dest, basestring):
-+        if not isinstance(dest, str):
-             fd, dest = mkstemp()
-             os.close(fd)
-             os.remove(dest)
--        assert isinstance(dest, basestring)
-+        assert isinstance(dest, str)
-         # If File.copy didn't actually copy because dest is newer, check the
-         # file sizes. If dest is smaller, it means it is already stripped and
-         # elfhacked, so we can skip.
-@@ -319,7 +319,7 @@ class AbsoluteSymlinkFile(File):
-         File.__init__(self, path)
- 
-     def copy(self, dest, skip_if_older=True):
--        assert isinstance(dest, basestring)
-+        assert isinstance(dest, str)
- 
-         # The logic in this function is complicated by the fact that symlinks
-         # aren't universally supported. So, where symlinks aren't supported, we
-@@ -410,7 +410,7 @@ class HardlinkFile(File):
-     '''
- 
-     def copy(self, dest, skip_if_older=True):
--        assert isinstance(dest, basestring)
-+        assert isinstance(dest, str)
- 
-         if not hasattr(os, 'link'):
-             return super(HardlinkFile, self).copy(
-@@ -471,7 +471,7 @@ class ExistingFile(BaseFile):
-         self.required = required
- 
-     def copy(self, dest, skip_if_older=True):
--        if isinstance(dest, basestring):
-+        if isinstance(dest, str):
-             dest = Dest(dest)
-         else:
-             assert isinstance(dest, Dest)
-@@ -517,7 +517,7 @@ class PreprocessedFile(BaseFile):
-         '''
-         Invokes the preprocessor to create the destination file.
-         '''
--        if isinstance(dest, basestring):
-+        if isinstance(dest, str):
-             dest = Dest(dest)
-         else:
-             assert isinstance(dest, Dest)
-@@ -657,7 +657,7 @@ class XPTFile(GeneratedFile):
-         the individual XPTs to link.
-         skip_if_older is ignored.
-         '''
--        if isinstance(dest, basestring):
-+        if isinstance(dest, str):
-             dest = Dest(dest)
-         assert isinstance(dest, Dest)
- 
-@@ -1108,7 +1108,7 @@ class ComposedFinder(BaseFinder):
-         from mozpack.copier import FileRegistry
-         self.files = FileRegistry()
- 
--        for base, finder in sorted(finders.iteritems()):
-+        for base, finder in sorted(finders.items()):
-             if self.files.contains(base):
-                 self.files.remove(base)
-             for p, f in finder.find(''):
-diff --git a/python/mozbuild/mozpack/manifests.py b/python/mozbuild/mozpack/manifests.py
-index 27c66634b..f79b40086 100644
---- a/python/mozbuild/mozpack/manifests.py
-+++ b/python/mozbuild/mozpack/manifests.py
-@@ -2,8 +2,6 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, unicode_literals
--
- from contextlib import contextmanager
- import json
- 
-@@ -116,7 +114,7 @@ class InstallManifest(object):
-         self._source_files = set()
- 
-         if path or fileobj:
--            with _auto_fileobj(path, fileobj, 'rb') as fh:
-+            with _auto_fileobj(path, fileobj, 'r') as fh:
-                 self._source_files.add(fh.name)
-                 self._load_from_fileobj(fh)
- 
-@@ -175,7 +173,7 @@ class InstallManifest(object):
-                 dest, content = fields[1:]
- 
-                 self.add_content(
--                    self._decode_field_entry(content).encode('utf-8'), dest)
-+                    self._decode_field_entry(content), dest)
-                 continue
- 
-             # Don't fail for non-actionable items, allowing
-@@ -228,7 +226,7 @@ class InstallManifest(object):
- 
-         It is an error if both are specified.
-         """
--        with _auto_fileobj(path, fileobj, 'wb') as fh:
-+        with _auto_fileobj(path, fileobj, 'w') as fh:
-             fh.write('%d\n' % self.CURRENT_VERSION)
- 
-             for dest in sorted(self._dests):
-@@ -242,13 +240,11 @@ class InstallManifest(object):
-                     for path in paths:
-                         source = mozpath.join(base, path)
-                         parts = ['%d' % type, mozpath.join(dest, path), source]
--                        fh.write('%s\n' % self.FIELD_SEPARATOR.join(
--                            p.encode('utf-8') for p in parts))
-+                        fh.write('%s\n' % self.FIELD_SEPARATOR.join(parts))
-                 else:
-                     parts = ['%d' % entry[0], dest]
-                     parts.extend(entry[1:])
--                    fh.write('%s\n' % self.FIELD_SEPARATOR.join(
--                        p.encode('utf-8') for p in parts))
-+                    fh.write('%s\n' % self.FIELD_SEPARATOR.join(parts))
- 
-     def add_link(self, source, dest):
-         """Add a link to this manifest.
-@@ -439,7 +435,7 @@ class InstallManifest(object):
-             if install_type == self.CONTENT:
-                 # GeneratedFile expect the buffer interface, which the unicode
-                 # type doesn't have, so encode to a str.
--                content = self._decode_field_entry(entry[1]).encode('utf-8')
-+                content = self._decode_field_entry(entry[1])
-                 registry.add(dest, GeneratedFile(content))
-                 continue
- 
-diff --git a/python/mozbuild/mozpack/mozjar.py b/python/mozbuild/mozpack/mozjar.py
-index a723fd2c0..0b04d233c 100644
---- a/python/mozbuild/mozpack/mozjar.py
-+++ b/python/mozbuild/mozpack/mozjar.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import
-+
- 
- from io import BytesIO
- import struct
-@@ -14,9 +14,10 @@ from zipfile import (
-     ZIP_DEFLATED,
- )
- from collections import OrderedDict
--from urlparse import urlparse, ParseResult
-+from urllib.parse import urlparse, ParseResult
- import mozpack.path as mozpath
- from mozbuild.util import memoize
-+from functools import reduce
- 
- 
- JAR_STORED = ZIP_STORED
-@@ -72,7 +73,7 @@ class JarStruct(object):
-         an instance with empty fields.
-         '''
-         assert self.MAGIC and isinstance(self.STRUCT, OrderedDict)
--        self.size_fields = set(t for t in self.STRUCT.itervalues()
-+        self.size_fields = set(t for t in self.STRUCT.values()
-                                if not t in JarStruct.TYPE_MAPPING)
-         self._values = {}
-         if data:
-@@ -94,7 +95,7 @@ class JarStruct(object):
-         # For all fields used as other fields sizes, keep track of their value
-         # separately.
-         sizes = dict((t, 0) for t in self.size_fields)
--        for name, t in self.STRUCT.iteritems():
-+        for name, t in self.STRUCT.items():
-             if t in JarStruct.TYPE_MAPPING:
-                 value, size = JarStruct.get_data(t, data[offset:])
-             else:
-@@ -113,7 +114,7 @@ class JarStruct(object):
-         Initialize an instance with empty fields.
-         '''
-         self.signature = self.MAGIC
--        for name, t in self.STRUCT.iteritems():
-+        for name, t in self.STRUCT.items():
-             if name in self.size_fields:
-                 continue
-             self._values[name] = 0 if t in JarStruct.TYPE_MAPPING else ''
-@@ -138,9 +139,9 @@ class JarStruct(object):
-         from self.STRUCT.
-         '''
-         serialized = struct.pack('<I', self.signature)
--        sizes = dict((t, name) for name, t in self.STRUCT.iteritems()
-+        sizes = dict((t, name) for name, t in self.STRUCT.items()
-                      if not t in JarStruct.TYPE_MAPPING)
--        for name, t in self.STRUCT.iteritems():
-+        for name, t in self.STRUCT.items():
-             if t in JarStruct.TYPE_MAPPING:
-                 format, size = JarStruct.TYPE_MAPPING[t]
-                 if name in sizes:
-@@ -159,7 +160,7 @@ class JarStruct(object):
-         variable length fields.
-         '''
-         size = JarStruct.TYPE_MAPPING['uint32'][1]
--        for name, type in self.STRUCT.iteritems():
-+        for name, type in self.STRUCT.items():
-             if type in JarStruct.TYPE_MAPPING:
-                 size += JarStruct.TYPE_MAPPING[type][1]
-             else:
-@@ -180,7 +181,7 @@ class JarStruct(object):
-         return key in self._values
- 
-     def __iter__(self):
--        return self._values.iteritems()
-+        return iter(self._values.items())
- 
-     def __repr__(self):
-         return "<%s %s>" % (self.__class__.__name__,
-@@ -374,7 +375,7 @@ class JarReader(object):
-         entries = self.entries
-         if not entries:
-             return JAR_STORED
--        return max(f['compression'] for f in entries.itervalues())
-+        return max(f['compression'] for f in entries.values())
- 
-     @property
-     def entries(self):
-@@ -390,7 +391,7 @@ class JarReader(object):
-             preload = JarStruct.get_data('uint32', self._data)[0]
-         entries = OrderedDict()
-         offset = self._cdir_end['cdir_offset']
--        for e in xrange(self._cdir_end['cdir_entries']):
-+        for e in range(self._cdir_end['cdir_entries']):
-             entry = JarCdirEntry(self._data[offset:])
-             offset += entry.size
-             # Creator host system. 0 is MSDOS, 3 is Unix
-@@ -452,7 +453,7 @@ class JarReader(object):
-             for file in jarReader:
-                 ...
-         '''
--        for entry in self.entries.itervalues():
-+        for entry in self.entries.values():
-             yield self._getreader(entry)
- 
-     def __getitem__(self, name):
-@@ -547,7 +548,7 @@ class JarWriter(object):
-         headers = {}
-         preload_size = 0
-         # Prepare central directory entries
--        for entry, content in self._contents.itervalues():
-+        for entry, content in self._contents.values():
-             header = JarLocalFileHeader()
-             for name in entry.STRUCT:
-                 if name in header:
-@@ -562,7 +563,7 @@ class JarWriter(object):
-         end['disk_entries'] = len(self._contents)
-         end['cdir_entries'] = end['disk_entries']
-         end['cdir_size'] = reduce(lambda x, y: x + y[0].size,
--                                  self._contents.values(), 0)
-+                                  list(self._contents.values()), 0)
-         # On optimized archives, store the preloaded size and the central
-         # directory entries, followed by the first end of central directory.
-         if self._optimize:
-@@ -571,18 +572,18 @@ class JarWriter(object):
-             if preload_size:
-                 preload_size += offset
-             self._data.write(struct.pack('<I', preload_size))
--            for entry, _ in self._contents.itervalues():
-+            for entry, _ in self._contents.values():
-                 entry['offset'] += offset
-                 self._data.write(entry.serialize())
-             self._data.write(end.serialize())
-         # Store local file entries followed by compressed data
--        for entry, content in self._contents.itervalues():
-+        for entry, content in self._contents.values():
-             self._data.write(headers[entry].serialize())
-             self._data.write(content)
-         # On non optimized archives, store the central directory entries.
-         if not self._optimize:
-             end['cdir_offset'] = offset
--            for entry, _ in self._contents.itervalues():
-+            for entry, _ in self._contents.values():
-                 self._data.write(entry.serialize())
-         # Store the end of central directory.
-         self._data.write(end.serialize())
-@@ -622,7 +623,7 @@ class JarWriter(object):
-             deflater = data
-         else:
-             deflater = Deflater(compress, compress_level=self._compress_level)
--            if isinstance(data, basestring):
-+            if isinstance(data, str):
-                 deflater.write(data)
-             elif hasattr(data, 'read'):
-                 if hasattr(data, 'seek'):
-diff --git a/testing/mozbase/manifestparser/manifestparser/ini.py b/testing/mozbase/manifestparser/manifestparser/ini.py
-index e5ba249c1..c141a18b7 100644
---- a/testing/mozbase/manifestparser/manifestparser/ini.py
-+++ b/testing/mozbase/manifestparser/manifestparser/ini.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this file,
- # You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import
-+
- 
- import os
- import sys
-@@ -12,7 +12,7 @@ __all__ = ['read_ini', 'combine_fields']
- 
- class IniParseError(Exception):
-     def __init__(self, fp, linenum, msg):
--        if isinstance(fp, basestring):
-+        if isinstance(fp, str):
-             path = fp
-         elif hasattr(fp, 'name'):
-             path = fp.name
-@@ -43,12 +43,15 @@ def read_ini(fp, variables=None, default='DEFAULT', defaults_only=False,
-     sections = []
-     key = value = None
-     section_names = set()
--    if isinstance(fp, basestring):
-+    if isinstance(fp, str):
-         fp = file(fp)
- 
-     # read the lines
-     for (linenum, line) in enumerate(fp.read().splitlines(), start=1):
- 
-+        if isinstance(line, bytes):
-+           line = line.decode('utf-8')
-+
-         stripped = line.strip()
- 
-         # ignore blank lines
-@@ -66,7 +69,7 @@ def read_ini(fp, variables=None, default='DEFAULT', defaults_only=False,
-         inline_prefixes = {p: -1 for p in comments}
-         while comment_start == sys.maxsize and inline_prefixes:
-             next_prefixes = {}
--            for prefix, index in inline_prefixes.items():
-+            for prefix, index in list(inline_prefixes.items()):
-                 index = line.find(prefix, index+1)
-                 if index == -1:
-                     continue
-@@ -163,7 +166,7 @@ def combine_fields(global_vars, local_vars):
-         'support-files': '%s %s',
-     }
-     final_mapping = global_vars.copy()
--    for field_name, value in local_vars.items():
-+    for field_name, value in list(local_vars.items()):
-         if field_name not in field_patterns or field_name not in global_vars:
-             final_mapping[field_name] = value
-             continue
-diff --git a/testing/mozbase/manifestparser/manifestparser/manifestparser.py b/testing/mozbase/manifestparser/manifestparser/manifestparser.py
-index 921369fd2..5b2f4c453 100755
---- a/testing/mozbase/manifestparser/manifestparser/manifestparser.py
-+++ b/testing/mozbase/manifestparser/manifestparser/manifestparser.py
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this file,
- # You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function
- 
--from StringIO import StringIO
-+
-+from io import StringIO
- import json
- import fnmatch
- import os
-@@ -23,7 +23,7 @@ from .filters import (
- __all__ = ['ManifestParser', 'TestManifest', 'convert']
- 
- relpath = os.path.relpath
--string = (basestring,)
-+string = (str,)
- 
- 
- # path normalization
-@@ -195,7 +195,7 @@ class ManifestParser(object):
- 
-             # otherwise an item
-             # apply ancestor defaults, while maintaining current file priority
--            data = dict(self._ancestor_defaults.items() + data.items())
-+            data = dict(list(self._ancestor_defaults.items()) + list(data.items()))
- 
-             test = data
-             test['name'] = section
-@@ -323,19 +323,19 @@ class ManifestParser(object):
-         # make some check functions
-         if inverse:
-             def has_tags(test):
--                return not tags.intersection(test.keys())
-+                return not tags.intersection(list(test.keys()))
- 
-             def dict_query(test):
--                for key, value in kwargs.items():
-+                for key, value in list(kwargs.items()):
-                     if test.get(key) == value:
-                         return False
-                 return True
-         else:
-             def has_tags(test):
--                return tags.issubset(test.keys())
-+                return tags.issubset(list(test.keys()))
- 
-             def dict_query(test):
--                for key, value in kwargs.items():
-+                for key, value in list(kwargs.items()):
-                     if test.get(key) != value:
-                         return False
-                 return True
-@@ -359,7 +359,7 @@ class ManifestParser(object):
-         if tests is None:
-             manifests = []
-             # Make sure to return all the manifests, even ones without tests.
--            for manifest in self.manifest_defaults.keys():
-+            for manifest in list(self.manifest_defaults.keys()):
-                 if isinstance(manifest, tuple):
-                     parentmanifest, manifest = manifest
-                 if manifest not in manifests:
-@@ -409,7 +409,7 @@ class ManifestParser(object):
-         """
- 
-         files = set([])
--        if isinstance(directories, basestring):
-+        if isinstance(directories, str):
-             directories = [directories]
- 
-         # get files in directories
-@@ -476,7 +476,7 @@ class ManifestParser(object):
-             print('[DEFAULT]', file=fp)
-             for tag in global_tags:
-                 print('%s =' % tag, file=fp)
--            for key, value in global_kwargs.items():
-+            for key, value in list(global_kwargs.items()):
-                 print('%s = %s' % (key, value), file=fp)
-             print(file=fp)
- 
-@@ -602,7 +602,7 @@ class ManifestParser(object):
-         internal function to import directories
-         """
- 
--        if isinstance(pattern, basestring):
-+        if isinstance(pattern, str):
-             patterns = [pattern]
-         else:
-             patterns = pattern
-diff --git a/testing/mozbase/mozinfo/mozinfo/mozinfo.py b/testing/mozbase/mozinfo/mozinfo/mozinfo.py
-index 90c187568..6c5a1f322 100755
---- a/testing/mozbase/mozinfo/mozinfo/mozinfo.py
-+++ b/testing/mozbase/mozinfo/mozinfo/mozinfo.py
-@@ -8,7 +8,7 @@
- # linux) to the information; I certainly wouldn't want anyone parsing this
- # information and having behaviour depend on it
- 
--from __future__ import absolute_import, print_function
-+
- 
- import os
- import platform
-@@ -24,7 +24,7 @@ _os = os
- class unknown(object):
-     """marker class for unknown information"""
- 
--    def __nonzero__(self):
-+    def __bool__(self):
-         return False
- 
-     def __str__(self):
-@@ -96,20 +96,17 @@ elif system.startswith(('MINGW', 'MSYS_NT')):
-     info['os'] = 'win'
-     os_version = version = unknown
- elif system == "Linux":
--    if hasattr(platform, "linux_distribution"):
--        (distro, os_version, codename) = platform.linux_distribution()
--    else:
--        (distro, os_version, codename) = platform.dist()
-     if not processor:
-         processor = machine
--    version = "%s %s" % (distro, os_version)
-+
-+    distro = 'OE/Yocto'
-+    os_version = version = unknown
- 
-     # Bug in Python 2's `platform` library:
-     # It will return a triple of empty strings if the distribution is not supported.
-     # It works on Python 3. If we don't have an OS version,
-     # the unit tests fail to run.
-     if not distro and not os_version and not codename:
--        distro = 'lfs'
-         version = release
-         os_version = release
- 
-@@ -131,7 +128,7 @@ else:
-     os_version = version = unknown
- 
- info['version'] = version
--info['os_version'] = StringVersion(os_version)
-+info['os_version'] = version
- 
- # processor type and bits
- if processor in ["i386", "i686"]:
-@@ -188,12 +185,7 @@ def update(new_info):
-                      to a json file containing the new info.
-     """
- 
--    PY3 = sys.version_info[0] == 3
--    if PY3:
--        string_types = str,
--    else:
--        string_types = basestring,
--    if isinstance(new_info, string_types):
-+    if isinstance(new_info, str):
-         # lazy import
-         import mozfile
-         import json
-@@ -295,7 +287,7 @@ def main(args=None):
- 
-     # print out choices if requested
-     flag = False
--    for key, value in options.__dict__.items():
-+    for key, value in list(options.__dict__.items()):
-         if value is True:
-             print('%s choices: %s' % (key, ' '.join([str(choice)
-                                                      for choice in choices[key]])))
-@@ -304,7 +296,7 @@ def main(args=None):
-         return
- 
-     # otherwise, print out all info
--    for key, value in info.items():
-+    for key, value in list(info.items()):
-         print('%s: %s' % (key, value))
- 
- 
-diff --git a/testing/mozbase/mozprocess/mozprocess/processhandler.py b/testing/mozbase/mozprocess/mozprocess/processhandler.py
-index 3efb650b7..2575a4702 100644
---- a/testing/mozbase/mozprocess/mozprocess/processhandler.py
-+++ b/testing/mozbase/mozprocess/mozprocess/processhandler.py
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this file,
- # You can obtain one at http://mozilla.org/MPL/2.0/.
- 
--from __future__ import absolute_import, print_function
-+
- 
- import errno
- import os
-@@ -13,7 +13,7 @@ import threading
- import time
- import traceback
- 
--from Queue import Queue, Empty
-+from queue import Queue, Empty
- from datetime import datetime
- 
- 
-@@ -124,14 +124,14 @@ class ProcessHandlerMixin(object):
-             thread = threading.current_thread().name
-             print("DBG::MOZPROC PID:{} ({}) | {}".format(self.pid, thread, msg))
- 
--        def __del__(self, _maxint=sys.maxint):
-+        def __del__(self, _maxint=sys.maxsize):
-             if isWin:
-                 handle = getattr(self, '_handle', None)
-                 if handle:
-                     if hasattr(self, '_internal_poll'):
-                         self._internal_poll(_deadstate=_maxint)
-                     else:
--                        self.poll(_deadstate=sys.maxint)
-+                        self.poll(_deadstate=sys.maxsize)
-                 if handle or self._job or self._io_port:
-                     self._cleanup()
-             else:
-@@ -243,7 +243,7 @@ class ProcessHandlerMixin(object):
-                      p2cread, p2cwrite,
-                      c2pread, c2pwrite,
-                      errread, errwrite) = args_tuple
--                if not isinstance(args, basestring):
-+                if not isinstance(args, str):
-                     args = subprocess.list2cmdline(args)
- 
-                 # Always or in the create new process group
-diff --git a/third_party/python/which/which.py b/third_party/python/which/which.py
-index 9c7d10835..f02b2616e 100644
---- a/third_party/python/which/which.py
-+++ b/third_party/python/which/which.py
-@@ -90,13 +90,13 @@ def _getRegisteredExecutable(exeName):
-     if sys.platform.startswith('win'):
-         if os.path.splitext(exeName)[1].lower() != '.exe':
-             exeName += '.exe'
--        import _winreg
-+        import winreg
-         try:
-             key = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\" +\
-                   exeName
--            value = _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE, key)
-+            value = winreg.QueryValue(winreg.HKEY_LOCAL_MACHINE, key)
-             registered = (value, "from HKLM\\"+key)
--        except _winreg.error:
-+        except winreg.error:
-             pass
-         if registered and not os.path.exists(registered[0]):
-             registered = None
-@@ -244,7 +244,7 @@ def which(command, path=None, verbose=0, exts=None):
-     If no match is found for the command, a WhichError is raised.
-     """
-     try:
--        match = whichgen(command, path, verbose, exts).next()
-+        match = next(whichgen(command, path, verbose, exts))
-     except StopIteration:
-         raise WhichError("Could not find '%s' on the path." % command)
-     return match
-@@ -281,17 +281,17 @@ def main(argv):
-     try:
-         optlist, args = getopt.getopt(argv[1:], 'haVvqp:e:',
-             ['help', 'all', 'version', 'verbose', 'quiet', 'path=', 'exts='])
--    except getopt.GetoptError, msg:
-+    except getopt.GetoptError as msg:
-         sys.stderr.write("which: error: %s. Your invocation was: %s\n"\
-                          % (msg, argv))
-         sys.stderr.write("Try 'which --help'.\n")
-         return 1
-     for opt, optarg in optlist:
-         if opt in ('-h', '--help'):
--            print _cmdlnUsage
-+            print(_cmdlnUsage)
-             return 0
-         elif opt in ('-V', '--version'):
--            print "which %s" % __version__
-+            print("which %s" % __version__)
-             return 0
-         elif opt in ('-a', '--all'):
-             all = 1
-@@ -319,9 +319,9 @@ def main(argv):
-         nmatches = 0
-         for match in whichgen(arg, path=altpath, verbose=verbose, exts=exts):
-             if verbose:
--                print "%s (%s)" % match
-+                print("%s (%s)" % match)
-             else:
--                print match
-+                print(match)
-             nmatches += 1
-             if not all:
-                 break
--- 
-2.21.0
-
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-build-do-not-use-autoconf-s-config.sub-to-canonicali.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-build-do-not-use-autoconf-s-config.sub-to-canonicali.patch
new file mode 100644
index 0000000..a2ccf6b
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-build-do-not-use-autoconf-s-config.sub-to-canonicali.patch
@@ -0,0 +1,28 @@
+From e5b95b3918588e2930c9af7ba304c57e871b2d55 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Thu, 7 Oct 2021 12:44:18 +0200
+Subject: [PATCH] build: do not use autoconf's config.sub to 'canonicalize'
+ names
+
+The outcome is that processed names no longer match our custom rust
+target definitions, and the build fails.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ build/moz.configure/init.configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
+index 3a164c6558..99dfc9054a 100644
+--- a/build/moz.configure/init.configure
++++ b/build/moz.configure/init.configure
+@@ -823,7 +823,7 @@ def help_host_target(help, host, target):
+ 
+ def config_sub(shell, triplet):
+     config_sub = os.path.join(os.path.dirname(__file__), "..", "autoconf", "config.sub")
+-    return check_cmd_output(shell, config_sub, triplet).strip()
++    return triplet
+ 
+ 
+ @depends("--host", shell)
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0002-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0002-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch
deleted file mode 100644
index e3f1883..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0002-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 0a61b0b98c152f10404ccbdeeac583a486638a7a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
-Date: Thu, 6 Jun 2013 18:36:01 +0200
-Subject: [PATCH] js.pc.in: do not include RequiredDefines.h for depending
- packages
-
-in our cross environment the would fail with:
-
-| cc1: fatal error: /usr/include/js-17.0/js/RequiredDefines.h: No such file or directory
-
-and currently it only defines __STDC_LIMIT_MACROS
-Upstream-Status: Inappropriate [embedded specific]
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
-
-Rebase to 52.8.1
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- js/src/build/js.pc.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/js/src/build/js.pc.in b/js/src/build/js.pc.in
-index 2eae393..c2dea62 100644
---- a/js/src/build/js.pc.in
-+++ b/js/src/build/js.pc.in
-@@ -8,4 +8,4 @@ Description: The Mozilla library for JavaScript
- Version: @MOZILLA_VERSION@
- @PKGCONF_REQUIRES_PRIVATE@
- Libs: -L${libdir} -l@JS_LIBRARY_NAME@
--Cflags: -include ${includedir}/@JS_LIBRARY_NAME@/js/RequiredDefines.h -I${includedir}/@JS_LIBRARY_NAME@
-+Cflags: -I${includedir}/@JS_LIBRARY_NAME@
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0002-moz.configure-do-not-look-for-llvm-objdump.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0002-moz.configure-do-not-look-for-llvm-objdump.patch
new file mode 100644
index 0000000..6ff83e3
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0002-moz.configure-do-not-look-for-llvm-objdump.patch
@@ -0,0 +1,43 @@
+From 0133ddb86eb6e0741e02b0032c41468db6438530 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 1 Oct 2021 13:01:10 +0200
+Subject: [PATCH] moz.configure: do not look for llvm-objdump
+
+This avoid dragging in a dependency that isn't even needed
+for js builds.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ moz.configure | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/moz.configure b/moz.configure
+index fc66b520d0..15de9a2ee0 100755
+--- a/moz.configure
++++ b/moz.configure
+@@ -994,15 +994,15 @@ def llvm_objdump(host_c_compiler, c_compiler, bindgen_config_paths):
+     return (llvm_objdump,)
+ 
+ 
+-llvm_objdump = check_prog(
+-    "LLVM_OBJDUMP",
+-    llvm_objdump,
+-    what="llvm-objdump",
+-    when="--enable-compile-environment",
+-    paths=clang_search_path,
+-)
+-
+-add_old_configure_assignment("LLVM_OBJDUMP", llvm_objdump)
++#llvm_objdump = check_prog(
++#    "LLVM_OBJDUMP",
++#    llvm_objdump,
++#    what="llvm-objdump",
++#    when="--enable-compile-environment",
++#    paths=clang_search_path,
++#)
++
++#add_old_configure_assignment("LLVM_OBJDUMP", llvm_objdump)
+ 
+ 
+ option("--enable-dtrace", help="Build with dtrace support")
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0003-fix-cross-compilation-on-i586-targets.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0003-fix-cross-compilation-on-i586-targets.patch
deleted file mode 100644
index e0929a8..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0003-fix-cross-compilation-on-i586-targets.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From a452138a1dd274bfad381a701729783360dc86fb Mon Sep 17  00:00:00 2001
-From: Maciej Borzecki <maciej.borzecki@open-rnd.pl>
-Date: Tue, 5 Jan 2016 22:04:17 +0100
-Subject: [PATCH] fix cross compilation on i586 targets
-
-Remove offending -Wl,-rpath-link that may cause host libraries to be picked
-during linking. The patch applies a fix to configure.in. So as not to
-regenerate configure, similar fix is applied there.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Maciej Borzecki <maciej.borzecki@open-rnd.pl>
-
-Rebase to 52.8.1
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
-Rebase to 60.9.0 (firefox-esr sources)
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- js/src/old-configure.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/js/src/old-configure.in b/js/src/old-configure.in
-index 3d53ee1..11c3d5a 100644
---- a/js/src/old-configure.in
-+++ b/js/src/old-configure.in
-@@ -405,7 +405,7 @@ AS='$(CC)'
- AS_DASH_C_FLAG='-c'
- MOZ_USER_DIR=".mozilla"
- 
--MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
-+MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin"
- 
- dnl Configure platform-specific CPU architecture compiler options.
- dnl ==============================================================
--- 
-2.21.0
-
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0003-rust.configure-do-not-try-to-find-a-suitable-upstrea.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0003-rust.configure-do-not-try-to-find-a-suitable-upstrea.patch
new file mode 100644
index 0000000..c440bf1
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0003-rust.configure-do-not-try-to-find-a-suitable-upstrea.patch
@@ -0,0 +1,65 @@
+From 749ba11fd6a69c8180945d4866415d16ae06a9c0 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 1 Oct 2021 13:02:17 +0200
+Subject: [PATCH] rust.configure: do not try to find a suitable upstream target
+
+OE is using custom targets and so this is bound to fail.
+
+Upstream-Status: Inapppropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ build/moz.configure/rust.configure | 34 ++----------------------------
+ 1 file changed, 2 insertions(+), 32 deletions(-)
+
+diff --git a/build/moz.configure/rust.configure b/build/moz.configure/rust.configure
+index cd77d72bb7..4b6481cbe3 100644
+--- a/build/moz.configure/rust.configure
++++ b/build/moz.configure/rust.configure
+@@ -459,33 +459,7 @@ def assert_rust_compile(host_or_target, rustc_target, rustc):
+ def rust_host_triple(
+     rustc, host, compiler_info, rustc_host, rust_supported_targets, arm_target
+ ):
+-    rustc_target = detect_rustc_target(
+-        host, compiler_info, arm_target, rust_supported_targets
+-    )
+-    if rustc_target != rustc_host:
+-        if host.alias == rustc_target:
+-            configure_host = host.alias
+-        else:
+-            configure_host = "{}/{}".format(host.alias, rustc_target)
+-        die(
+-            dedent(
+-                """\
+-        The rust compiler host ({rustc}) is not suitable for the configure host ({configure}).
+-
+-        You can solve this by:
+-        * Set your configure host to match the rust compiler host by editing your
+-        mozconfig and adding "ac_add_options --host={rustc}".
+-        * Or, install the rust toolchain for {configure}, if supported, by running
+-        "rustup default stable-{rustc_target}"
+-        """.format(
+-                    rustc=rustc_host,
+-                    configure=configure_host,
+-                    rustc_target=rustc_target,
+-                )
+-            )
+-        )
+-    assert_rust_compile(host, rustc_target, rustc)
+-    return rustc_target
++    return rustc_host
+ 
+ 
+ @depends(
+@@ -495,11 +469,7 @@ def rust_host_triple(
+ def rust_target_triple(
+     rustc, target, compiler_info, rust_supported_targets, arm_target
+ ):
+-    rustc_target = detect_rustc_target(
+-        target, compiler_info, arm_target, rust_supported_targets
+-    )
+-    assert_rust_compile(target, rustc_target, rustc)
+-    return rustc_target
++    return target.alias
+ 
+ 
+ set_config("RUST_TARGET", rust_target_triple)
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0004-do-not-create-python-environment.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0004-do-not-create-python-environment.patch
deleted file mode 100644
index 985fc36..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0004-do-not-create-python-environment.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 5028d1cd669c179ed49061316d04c8e8862a5bd8 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 12 Jul 2018 15:04:47 +0800
-Subject: [PATCH 1/5] do not create python environment
-
-Use oe's python environment rather than create one of host
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
-Rebase to 60.9.0 (firefox-esr sources)
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- build/moz.configure/init.configure | 18 ------------------
- configure.py                       | 10 +++++++++-
- 3 files changed, 11 insertions(+), 21 deletions(-)
-
---- a/build/moz.configure/init.configure
-+++ b/build/moz.configure/init.configure
-@@ -250,24 +250,6 @@ def virtualenv_python(env_python, build_
-     else:
-         python = sys.executable
- 
--    if not manager.up_to_date(python):
--        log.info('Creating Python environment')
--        manager.build(python)
--
--    python = normsep(manager.python_path)
--
--    if python != normsep(sys.executable):
--        log.info('Reexecuting in the virtualenv')
--        if env_python:
--            del os.environ['PYTHON']
--        # One would prefer to use os.execl, but that's completely borked on
--        # Windows.
--        sys.exit(subprocess.call([python] + sys.argv))
--
--    # We are now in the virtualenv
--    if not distutils.sysconfig.get_python_lib():
--        die('Could not determine python site packages directory')
--
-     return python
- 
- 
---- a/configure.py
-+++ b/configure.py
-@@ -12,7 +12,15 @@ import textwrap
- 
- 
- base_dir = os.path.abspath(os.path.dirname(__file__))
--sys.path.insert(0, os.path.join(base_dir, 'python', 'mozbuild'))
-+sys.path.insert(0, os.path.join(base_dir, 'config'))
-+def get_immediate_subdirectories(a_dir):
-+    return [name for name in os.listdir(a_dir)
-+            if os.path.isdir(os.path.join(a_dir, name))]
-+for s in ["python", "testing/mozbase"]:
-+    sub_dir = os.path.join(base_dir, s)
-+    for module_dir in get_immediate_subdirectories(sub_dir):
-+        sys.path.insert(0, os.path.join(sub_dir, module_dir))
-+
- from mozbuild.configure import ConfigureSandbox
- from mozbuild.makeutil import Makefile
- from mozbuild.pythonutil import iter_modules_in_path
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0004-use-asm-sgidefs.h.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0004-use-asm-sgidefs.h.patch
new file mode 100644
index 0000000..b56f0b9
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0004-use-asm-sgidefs.h.patch
@@ -0,0 +1,35 @@
+From 65acc8800dba7e10da882871d4648241805c47ce Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <amccurdy@gmail.com>
+Date: Sat, 30 Apr 2016 15:29:06 -0700
+Subject: [PATCH] use <asm/sgidefs.h>
+
+Build fix for MIPS with musl libc
+
+The MIPS specific header <sgidefs.h> is provided by glibc and uclibc
+but not by musl. Regardless of the libc, the kernel headers provide
+<asm/sgidefs.h> which provides the same definitions, so use that
+instead.
+
+Upstream-Status: Pending
+
+[Vincent:
+Taken from: https://sourceware.org/bugzilla/show_bug.cgi?id=21070]
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
+---
+ gdb/mips-linux-nat.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/mfbt/RandomNum.cpp
++++ b/mfbt/RandomNum.cpp
+@@ -52,7 +52,7 @@ extern "C" BOOLEAN NTAPI RtlGenRandom(PV
+ #  elif defined(__s390__)
+ #    define GETRANDOM_NR 349
+ #  elif defined(__mips__)
+-#    include <sgidefs.h>
++#    include <asm/sgidefs.h>
+ #    if _MIPS_SIM == _MIPS_SIM_ABI32
+ #      define GETRANDOM_NR 4353
+ #    elif _MIPS_SIM == _MIPS_SIM_ABI64
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0005-fix-cannot-find-link.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0005-fix-cannot-find-link.patch
deleted file mode 100644
index 4f7ebc6..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0005-fix-cannot-find-link.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From e6dcee5f8a0f80ce99946b81fa1233611a149fe6 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 12 Jul 2018 18:00:52 +0800
-Subject: [PATCH 2/5] fix cannot find link
-
-..
-|DEBUG: link: Trying 'mips64-wrs-linux-ld --sysroot=tmp-glibc/work/
-mips64-wrs-linux/mozjs/52.8.1-r0/recipe-sysroot '
-|ERROR: Cannot find link
-...
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- build/moz.configure/checks.configure | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/build/moz.configure/checks.configure b/build/moz.configure/checks.configure
-index 8c2dbc0..83bffc3 100644
---- a/build/moz.configure/checks.configure
-+++ b/build/moz.configure/checks.configure
-@@ -128,7 +128,7 @@ def check_prog(var, progs, what=None, input=None, allow_missing=False,
- 
-         for prog in value or progs:
-             log.debug('%s: Trying %s', var.lower(), quote(prog))
--            result = find_program(prog, paths)
-+            result = find_program(prog.split()[0], paths)
-             if result:
-                 return result
- 
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0006-workaround-autoconf-2.13-detection-failed.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0006-workaround-autoconf-2.13-detection-failed.patch
deleted file mode 100644
index a754ff1..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0006-workaround-autoconf-2.13-detection-failed.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 646a78262b18e19721cd41ee515215221dd241b6 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 12 Jul 2018 18:12:42 +0800
-Subject: [PATCH 3/5] workaround  autoconf 2.13 detection failed
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- build/moz.configure/old.configure | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure
-index b32c3f7..ece47f4 100644
---- a/build/moz.configure/old.configure
-+++ b/build/moz.configure/old.configure
-@@ -31,7 +31,7 @@ def autoconf(mozconfig, autoconf):
-     autoconf = autoconf[0] if autoconf else None
- 
-     for ac in (mozconfig_autoconf, autoconf, 'autoconf-2.13', 'autoconf2.13',
--               'autoconf213'):
-+               'autoconf213', 'autoconf'):
-         if ac:
-             autoconf = find_program(ac)
-             if autoconf:
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0007-fix-do_compile-failed-on-mips.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0007-fix-do_compile-failed-on-mips.patch
deleted file mode 100644
index d1da109..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0007-fix-do_compile-failed-on-mips.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 55d833dc3c194f1eb7841f308ad3b9ec3800d3b3 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 13 Jul 2018 15:48:32 +0800
-Subject: [PATCH 5/5] fix do_compile failed on mips
-
-Link with var-OS_LDFLAGS to fix the issue.
-Such as on mips:
-...
-|mips-wrsmllib32-linux-g++ -meb -mabi=32 -mhard-float ... -o libmozjs-52.so
-|/usr/include/c++/8.1.0/bits/atomic_base.h:514: error: undefined
-reference to '__atomic_fetch_add_8'
-...
-
-In recipe, set OS_LDFLAGS="-Wl,-latomic" could fix the issue.
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- config/config.mk | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/config/config.mk
-+++ b/config/config.mk
-@@ -423,7 +423,7 @@ EXPAND_MKSHLIB_ARGS = --uselist
- ifdef SYMBOL_ORDER
- EXPAND_MKSHLIB_ARGS += --symbol-order $(SYMBOL_ORDER)
- endif
--EXPAND_MKSHLIB = $(EXPAND_LIBS_EXEC) $(EXPAND_MKSHLIB_ARGS) -- $(MKSHLIB)
-+EXPAND_MKSHLIB = $(EXPAND_LIBS_EXEC) $(EXPAND_MKSHLIB_ARGS) -- $(MKSHLIB) $(OS_LDFLAGS)
- 
- # autoconf.mk sets OBJ_SUFFIX to an error to avoid use before including
- # this file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0008-add-riscv-support.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0008-add-riscv-support.patch
deleted file mode 100644
index 0a41485..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0008-add-riscv-support.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Add RISC-V support
-
-Upstream-Status: Submitted [https://bugzilla.mozilla.org/show_bug.cgi?id=1318905]
-
-Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
-
---- a/build/autoconf/config.guess
-+++ b/build/autoconf/config.guess
-@@ -1029,6 +1029,9 @@ EOF
-     ppcle:Linux:*:*)
- 	echo powerpcle-unknown-linux-${LIBC}
- 	exit ;;
-+    riscv32:Linux:*:* | riscv64:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+	exit ;;
-     s390:Linux:*:* | s390x:Linux:*:*)
- 	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
- 	exit ;;
---- a/build/moz.configure/init.configure
-+++ b/build/moz.configure/init.configure
-@@ -658,6 +658,9 @@ def split_triplet(triplet, allow_unknown
-     elif cpu == 'sh4':
-         canonical_cpu = 'sh4'
-         endianness = 'little'
-+    elif cpu in ('riscv32', 'riscv64'):
-+        canonical_cpu = cpu
-+        endianness = 'little'
-     elif allow_unknown:
-         canonical_cpu = cpu
-         endianness = 'unknown'
---- a/python/mozbuild/mozbuild/configure/constants.py
-+++ b/python/mozbuild/mozbuild/configure/constants.py
-@@ -50,6 +50,8 @@ CPU_bitness = {
-     'mips64': 64,
-     'ppc': 32,
-     'ppc64': 64,
-+    'riscv32': 32,
-+    'riscv64': 64,
-     's390': 32,
-     's390x': 64,
-     'sh4': 32,
-@@ -82,6 +84,8 @@ CPU_preprocessor_checks = OrderedDict((
-     ('s390', '__s390__'),
-     ('ppc64', '__powerpc64__'),
-     ('ppc', '__powerpc__'),
-+    ('riscv32', '__riscv && __SIZEOF_POINTER__ == 4'),
-+    ('riscv64', '__riscv && __SIZEOF_POINTER__ == 8'),
-     ('Alpha', '__alpha__'),
-     ('hppa', '__hppa__'),
-     ('sparc64', '__sparc__ && __arch64__'),
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0009-mozjs-fix-coredump-caused-by-getenv.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0009-mozjs-fix-coredump-caused-by-getenv.patch
deleted file mode 100644
index 477f73a..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0009-mozjs-fix-coredump-caused-by-getenv.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 20b639b7364f9953fdacb058f9ba800bcbf029b4 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Thu, 2 Aug 2018 09:40:48 +0800
-Subject: [PATCH] mozjs: fix coredump caused by getenv
-
-Upstream-Status: Submitted [https://bugzilla.mozilla.org/show_bug.cgi?id=1480315]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- mozglue/misc/TimeStamp.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/mozglue/misc/TimeStamp.cpp b/mozglue/misc/TimeStamp.cpp
-index 932b75c..7a4d71b 100644
---- a/mozglue/misc/TimeStamp.cpp
-+++ b/mozglue/misc/TimeStamp.cpp
-@@ -11,6 +11,7 @@
- #include "mozilla/TimeStamp.h"
- #include <stdio.h>
- #include <string.h>
-+#include <stdlib.h>
- 
- namespace mozilla {
- 
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0010-format-overflow.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0010-format-overflow.patch
deleted file mode 100644
index e257fc6..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0010-format-overflow.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Drop enable format string warnings to help gcc9
-
-Fixes
-| /mnt/a/yoe/build/tmp/work/core2-64-yoe-linux-musl/mozjs/52.9.1-r0/mozjs-52.9.1/js/src/jit/x64/BaseAssembler-x64.h:596:13: error: '%s' directive argument is null [-Werror=format-overflow=]
-|   596 |         spew("movq       " MEM_obs ", %s", ADDR_obs(offset, base, index, scale), GPReg64Name(dst));
-|       |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Upstream-Status: Inappropriate [Workaround for gcc9]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
---- a/js/src/moz.build
-+++ b/js/src/moz.build
-@@ -785,7 +785,7 @@ if CONFIG['JS_HAS_CTYPES']:
- if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
-     # Also disable strict-aliasing for GCC compiler, that is enabled by default
-     # starting with version 7.1, see Bug 1363009
--    CXXFLAGS += ['-Wno-shadow', '-Werror=format', '-fno-strict-aliasing']
-+    CXXFLAGS += ['-Wno-shadow', '-fno-strict-aliasing']
- 
- # Suppress warnings in third-party code.
- if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0011-To-fix-build-error-on-arm32BE.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0011-To-fix-build-error-on-arm32BE.patch
deleted file mode 100644
index 056f74a..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0011-To-fix-build-error-on-arm32BE.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 9afb0e4d3b9209ea198052cea0401bef7ee25ad8 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@cn.fujitsu.com>
-Date: Thu, 9 May 2019 12:23:40 +0900
-Subject: [PATCH] To fix build error on arm32BE.
-
-error: #error Target architecture was not detected as supported by Double-Conversion.
-
-Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
----
- mfbt/double-conversion/double-conversion/utils.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mfbt/double-conversion/double-conversion/utils.h b/mfbt/double-conversion/double-conversion/utils.h
-index 4f37218..93575cb 100644
---- a/mfbt/double-conversion/double-conversion/utils.h
-+++ b/mfbt/double-conversion/double-conversion/utils.h
-@@ -53,7 +53,7 @@
- // disabled.)
- // On Linux,x86 89255e-22 != Div_double(89255.0/1e22)
- #if defined(_M_X64) || defined(__x86_64__) || \
--    defined(__ARMEL__) || defined(__avr32__) || \
-+    defined(__arm__) || defined(__avr32__) || \
-     defined(__hppa__) || defined(__ia64__) || \
-     defined(__mips__) || \
-     defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0012-JS_PUBLIC_API.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0012-JS_PUBLIC_API.patch
deleted file mode 100644
index 56b18ba..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0012-JS_PUBLIC_API.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-patch from https://bugzilla.mozilla.org/show_bug.cgi?id=1426865
-
-Upstream-Status: Submitted [https://bugzilla.mozilla.org/show_bug.cgi?id=1426865]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/js/public/TypeDecls.h
-+++ b/js/public/TypeDecls.h
-@@ -21,31 +21,32 @@
- #include <stdint.h>
- 
- #include "js-config.h"
-+#include "jstypes.h"
- 
- typedef uint8_t jsbytecode;
- 
--class JSAtom;
--struct JSCompartment;
--struct JSContext;
--class JSFunction;
--class JSObject;
--struct JSRuntime;
--class JSScript;
--class JSString;
--class JSAddonId;
--struct JSFreeOp;
-+class JS_PUBLIC_API JSAtom;
-+struct JS_PUBLIC_API JSCompartment;
-+struct JS_PUBLIC_API JSContext;
-+class JS_PUBLIC_API JSFunction;
-+class JS_PUBLIC_API JSObject;
-+struct JS_PUBLIC_API JSRuntime;
-+class JS_PUBLIC_API JSScript;
-+class JS_PUBLIC_API JSString;
-+class JS_PUBLIC_API JSAddonId;
-+struct JS_PUBLIC_API JSFreeOp;
- 
--struct jsid;
-+struct JS_PUBLIC_API jsid;
- 
- namespace JS {
- 
- typedef unsigned char Latin1Char;
- 
--class Symbol;
--class Value;
--class Realm;
--struct Runtime;
--struct Zone;
-+class JS_PUBLIC_API Symbol;
-+class JS_PUBLIC_API Value;
-+class JS_PUBLIC_API Realm;
-+struct JS_PUBLIC_API Runtime;
-+struct JS_PUBLIC_API Zone;
- 
- template <typename T>
- class Handle;
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0013-riscv-Disable-atomic-operations.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0013-riscv-Disable-atomic-operations.patch
deleted file mode 100644
index 2e810c8..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0013-riscv-Disable-atomic-operations.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 64ad80e6d95871f17be4cd01da15581f41ac0b2b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 27 May 2019 21:10:34 -0700
-Subject: [PATCH] riscv: Disable atomic operations
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- js/src/jit/AtomicOperations.h | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/js/src/jit/AtomicOperations.h
-+++ b/js/src/jit/AtomicOperations.h
-@@ -393,6 +393,8 @@ inline bool AtomicOperations::isLockfree
- #include "jit/none/AtomicOperations-feeling-lucky.h"
- #elif defined(__s390__) || defined(__s390x__)
- #include "jit/none/AtomicOperations-feeling-lucky.h"
-+#elif defined(__riscv)
-+#include "jit/none/AtomicOperations-feeling-lucky.h"
- #else
- #error "No AtomicOperations support provided for this platform"
- #endif
---- a/js/src/jit/none/AtomicOperations-feeling-lucky.h
-+++ b/js/src/jit/none/AtomicOperations-feeling-lucky.h
-@@ -80,6 +80,14 @@
- #define GNUC_COMPATIBLE
- #endif
- 
-+#ifdef __riscv
-+#define GNUC_COMPATIBLE
-+#ifdef __riscv_xlen == 64
-+#define HAS_64BIT_ATOMICS
-+#define HAS_64BIT_LOCKFREE
-+#endif
-+#endif
-+
- // The default implementation tactic for gcc/clang is to use the newer
- // __atomic intrinsics added for use in C++11 <atomic>.  Where that
- // isn't available, we use GCC's older __sync functions instead.
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0014-remove-JS_VOLATIME_ARM.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0014-remove-JS_VOLATIME_ARM.patch
deleted file mode 100644
index a20873c..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0014-remove-JS_VOLATIME_ARM.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-# HG changeset patch
-# User Lars T Hansen <lhansen@mozilla.com>
-# Date 1538489772 -7200
-# Node ID bb430eaf5521aa8ab233a45b585ff9e5dfecf4c9
-# Parent  e87d7028568e721e8d297ce62f9622e74d29bb37
-Bug 1495731 - remove JS_VOLATILE_ARM, it is no longer relevant.  r=waldo
-
-JS_VOLATILE_ARM was a workaround for a gcc 4.7 bug on B2G where it
-would generate unaligned word accesses that should have been
-individual byte accesses.  We now require at least gcc 6.1 (and ARM
-systems support unaligned accesses).
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport [https://hg.mozilla.org/integration/mozilla-inbound/rev/bb430eaf5521]
-
---- a/js/src/vm/TypedArrayObject-inl.h
-+++ b/js/src/vm/TypedArrayObject-inl.h
-@@ -259,68 +259,61 @@ class ElementSpecific {
-       return true;
-     }
- 
--      // Inhibit unaligned accesses on ARM (bug 1097253, a compiler bug).
--#if defined(__arm__) && defined(__GNUC__) && !defined(__clang__)
--#define JS_VOLATILE_ARM volatile
--#else
--#define JS_VOLATILE_ARM
--#endif
--
-     SharedMem<void*> data = Ops::extract(source);
-     switch (source->type()) {
-       case Scalar::Int8: {
--        SharedMem<JS_VOLATILE_ARM int8_t*> src =
--            data.cast<JS_VOLATILE_ARM int8_t*>();
-+        SharedMem<int8_t*> src =
-+            data.cast<int8_t*>();
-         for (uint32_t i = 0; i < count; ++i)
-           Ops::store(dest++, ConvertNumber<T>(Ops::load(src++)));
-         break;
-       }
-       case Scalar::Uint8:
-       case Scalar::Uint8Clamped: {
--        SharedMem<JS_VOLATILE_ARM uint8_t*> src =
--            data.cast<JS_VOLATILE_ARM uint8_t*>();
-+        SharedMem<uint8_t*> src =
-+            data.cast<uint8_t*>();
-         for (uint32_t i = 0; i < count; ++i)
-           Ops::store(dest++, ConvertNumber<T>(Ops::load(src++)));
-         break;
-       }
-       case Scalar::Int16: {
--        SharedMem<JS_VOLATILE_ARM int16_t*> src =
--            data.cast<JS_VOLATILE_ARM int16_t*>();
-+        SharedMem<int16_t*> src =
-+            data.cast<int16_t*>();
-         for (uint32_t i = 0; i < count; ++i)
-           Ops::store(dest++, ConvertNumber<T>(Ops::load(src++)));
-         break;
-       }
-       case Scalar::Uint16: {
--        SharedMem<JS_VOLATILE_ARM uint16_t*> src =
--            data.cast<JS_VOLATILE_ARM uint16_t*>();
-+        SharedMem<uint16_t*> src =
-+            data.cast<uint16_t*>();
-         for (uint32_t i = 0; i < count; ++i)
-           Ops::store(dest++, ConvertNumber<T>(Ops::load(src++)));
-         break;
-       }
-       case Scalar::Int32: {
--        SharedMem<JS_VOLATILE_ARM int32_t*> src =
--            data.cast<JS_VOLATILE_ARM int32_t*>();
-+        SharedMem<int32_t*> src =
-+            data.cast<int32_t*>();
-         for (uint32_t i = 0; i < count; ++i)
-           Ops::store(dest++, ConvertNumber<T>(Ops::load(src++)));
-         break;
-       }
-       case Scalar::Uint32: {
--        SharedMem<JS_VOLATILE_ARM uint32_t*> src =
--            data.cast<JS_VOLATILE_ARM uint32_t*>();
-+        SharedMem<uint32_t*> src =
-+            data.cast<uint32_t*>();
-         for (uint32_t i = 0; i < count; ++i)
-           Ops::store(dest++, ConvertNumber<T>(Ops::load(src++)));
-         break;
-       }
-       case Scalar::Float32: {
--        SharedMem<JS_VOLATILE_ARM float*> src =
--            data.cast<JS_VOLATILE_ARM float*>();
-+        SharedMem<float*> src =
-+            data.cast<float*>();
-         for (uint32_t i = 0; i < count; ++i)
-           Ops::store(dest++, ConvertNumber<T>(Ops::load(src++)));
-         break;
-       }
-       case Scalar::Float64: {
--        SharedMem<JS_VOLATILE_ARM double*> src =
--            data.cast<JS_VOLATILE_ARM double*>();
-+        SharedMem<double*> src =
-+            data.cast<double*>();
-         for (uint32_t i = 0; i < count; ++i)
-           Ops::store(dest++, ConvertNumber<T>(Ops::load(src++)));
-         break;
-@@ -329,8 +322,6 @@ class ElementSpecific {
-         MOZ_CRASH("setFromTypedArray with a typed array with bogus type");
-     }
- 
--#undef JS_VOLATILE_ARM
--
-     return true;
-   }
- 
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/fix-musl-build.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/fix-musl-build.patch
new file mode 100644
index 0000000..c0834af
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/fix-musl-build.patch
@@ -0,0 +1,15 @@
+Upstream: No
+Reason: mozjs60 miscompiles on musl if built with HAVE_THREAD_TLS_KEYWORD:
+https://github.com/void-linux/void-packages/issues/2598
+--- a/js/src/old-configure.in
++++ b/js/src/old-configure.in
+@@ -1072,6 +1072,9 @@ if test "$ac_cv_thread_keyword" = yes; t
+     *-android*|*-linuxandroid*)
+       :
+       ;;
++    *-musl*)
++      :
++      ;;
+     *)
+       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
+       ;;
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/mipsarchn32/0001-fix-compiling-failure-on-mips64-n32-bsp.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/mipsarchn32/0001-fix-compiling-failure-on-mips64-n32-bsp.patch
deleted file mode 100644
index b882d76..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/mipsarchn32/0001-fix-compiling-failure-on-mips64-n32-bsp.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From f2f8be496c8e34b4d909b688a95c6f8565201081 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 19 Jun 2019 14:30:44 +0800
-Subject: [PATCH] fix compiling failure on mips64-n32 bsp
-
-- Tweak mips64-n32 with mips32
-
-- The toolchain of mips64-n32 supports both of macro
-  `__mips64' and `__mips__', but 32bit is required here.
-
-- N32 uses 64-bit registers but restricts addresses to 32 bits.
-  https://www.linux-mips.org/pub/linux/mips/doc/ABI/MIPS-N32-ABI-Handbook.pdf
-  Table 2-1 specifies the use of registers in n32 and native 64-bit mode.
-  From the table, N32 and N64 have the same registers
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
----
- build/moz.configure/init.configure                | 5 ++++-
- js/src/jit/mips-shared/Architecture-mips-shared.h | 4 +++-
- python/mozbuild/mozbuild/configure/constants.py   | 2 +-
- 3 files changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
-index 648ac2d..d0bcaf8 100644
---- a/build/moz.configure/init.configure
-+++ b/build/moz.configure/init.configure
-@@ -650,7 +650,10 @@ def split_triplet(triplet, allow_unknown=False):
-         canonical_cpu = 'mips32'
-         endianness = 'little' if 'el' in cpu else 'big'
-     elif cpu in ('mips64', 'mips64el'):
--        canonical_cpu = 'mips64'
-+        if 'n32' in triplet:
-+            canonical_cpu = 'mips32'
-+        else:
-+            canonical_cpu = 'mips64'
-         endianness = 'little' if 'el' in cpu else 'big'
-     elif cpu.startswith('aarch64'):
-         canonical_cpu = 'aarch64'
-diff --git a/js/src/jit/mips-shared/Architecture-mips-shared.h b/js/src/jit/mips-shared/Architecture-mips-shared.h
-index e95ffd4..caf83f7 100644
---- a/js/src/jit/mips-shared/Architecture-mips-shared.h
-+++ b/js/src/jit/mips-shared/Architecture-mips-shared.h
-@@ -28,6 +28,8 @@
- #elif (defined(_MIPS_SIM) && (_MIPS_SIM == _ABI64)) || \
-     defined(JS_SIMULATOR_MIPS64)
- #define USES_N64_ABI
-+#elif (defined(_MIPS_SIM) && (_MIPS_SIM == _ABIN32))
-+#define USES_N32_ABI
- #else
- #error "Unsupported ABI"
- #endif
-@@ -94,7 +96,7 @@ class Registers {
-     ta1 = t5,
-     ta2 = t6,
-     ta3 = t7,
--#elif defined(USES_N64_ABI)
-+#elif defined(USES_N64_ABI) || defined(USES_N32_ABI)
-     a4 = r8,
-     a5 = r9,
-     a6 = r10,
-diff --git a/python/mozbuild/mozbuild/configure/constants.py b/python/mozbuild/mozbuild/configure/constants.py
-index 1067b6a..e0f0405 100644
---- a/python/mozbuild/mozbuild/configure/constants.py
-+++ b/python/mozbuild/mozbuild/configure/constants.py
-@@ -90,8 +90,8 @@ CPU_preprocessor_checks = OrderedDict((
-     ('hppa', '__hppa__'),
-     ('sparc64', '__sparc__ && __arch64__'),
-     ('sparc', '__sparc__'),
--    ('mips64', '__mips64'),
-     ('mips32', '__mips__'),
-+    ('mips64', '__mips64'),
-     ('sh4', '__sh__'),
- ))
- 
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0001-support-musl.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0001-support-musl.patch
deleted file mode 100644
index 770d5e0..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0001-support-musl.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 04e8a611e958f0da1ccac61acae3a6f1a5168b20 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 13 Jul 2018 18:08:14 +0800
-Subject: [PATCH] support musl
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- mozglue/misc/TimeStamp_darwin.cpp            | 1 -
- mozglue/misc/TimeStamp_posix.cpp             | 1 -
- nsprpub/pr/src/misc/prsystem.c               | 1 -
- python/psutil/psutil/_psutil_bsd.c           | 1 -
- python/psutil/psutil/_psutil_osx.c           | 1 -
- python/psutil/psutil/arch/bsd/process_info.c | 1 -
- python/psutil/psutil/arch/osx/process_info.c | 1 -
- 9 files changed, 3 insertions(+), 12 deletions(-)
-
---- a/mozglue/misc/TimeStamp_darwin.cpp
-+++ b/mozglue/misc/TimeStamp_darwin.cpp
-@@ -19,7 +19,6 @@
- 
- #include <mach/mach_time.h>
- #include <sys/time.h>
--#include <sys/sysctl.h>
- #include <time.h>
- #include <unistd.h>
- 
---- a/mozglue/misc/TimeStamp_posix.cpp
-+++ b/mozglue/misc/TimeStamp_posix.cpp
-@@ -21,7 +21,6 @@
- #if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
-     defined(__OpenBSD__)
- #include <sys/param.h>
--#include <sys/sysctl.h>
- #endif
- 
- #if defined(__DragonFly__) || defined(__FreeBSD__)
---- a/nsprpub/pr/src/misc/prsystem.c
-+++ b/nsprpub/pr/src/misc/prsystem.c
-@@ -27,7 +27,6 @@
-     || defined(OPENBSD) || defined(DRAGONFLY) || defined(DARWIN)
- #define _PR_HAVE_SYSCTL
- #include <sys/param.h>
--#include <sys/sysctl.h>
- #endif
- 
- #if defined(DARWIN)
---- a/third_party/python/psutil/psutil/_psutil_bsd.c
-+++ b/third_party/python/psutil/psutil/_psutil_bsd.c
-@@ -29,7 +29,6 @@
- #include <paths.h>
- #include <sys/types.h>
- #include <sys/param.h>
--#include <sys/sysctl.h>
- #include <sys/user.h>
- #include <sys/proc.h>
- #include <sys/file.h>
---- a/third_party/python/psutil/psutil/_psutil_osx.c
-+++ b/third_party/python/psutil/psutil/_psutil_osx.c
-@@ -13,7 +13,6 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <utmpx.h>
--#include <sys/sysctl.h>
- #include <sys/vmmeter.h>
- #include <libproc.h>
- #include <sys/proc_info.h>
---- a/third_party/python/psutil/psutil/arch/osx/process_info.c
-+++ b/third_party/python/psutil/psutil/arch/osx/process_info.c
-@@ -16,7 +16,6 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <signal.h>
--#include <sys/sysctl.h>
- #include <libproc.h>
- 
- #include "process_info.h"
---- a/memory/build/Mutex.h
-+++ b/memory/build/Mutex.h
-@@ -42,7 +42,7 @@ struct Mutex {
-     if (pthread_mutexattr_init(&attr) != 0) {
-       return false;
-     }
--    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
-+    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_STALLED);
-     if (pthread_mutex_init(&mMutex, &attr) != 0) {
-       pthread_mutexattr_destroy(&attr);
-       return false;
-@@ -102,7 +102,7 @@ typedef Mutex StaticMutex;
- 
- #if defined(XP_DARWIN)
- #define STATIC_MUTEX_INIT OS_SPINLOCK_INIT
--#elif defined(XP_LINUX) && !defined(ANDROID)
-+#elif defined(XP_LINUX) && !defined(ANDROID) && defined(__GLIBC__)
- #define STATIC_MUTEX_INIT PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
- #else
- #define STATIC_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0002-js-Fix-build-with-musl.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0002-js-Fix-build-with-musl.patch
deleted file mode 100644
index f4c6e27..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0002-js-Fix-build-with-musl.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 0c9e8f586ba52a9aef5ed298e8315b2598b8fb72 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 25 May 2019 16:54:45 -0700
-Subject: [PATCH] js: Fix build with musl
-
-The MIPS specific header <sgidefs.h> is not provided by musl
-linux kernel headers provide <asm/sgidefs.h> which has same definitions
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- js/src/jsmath.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/js/src/jsmath.cpp b/js/src/jsmath.cpp
-index a28968be..8facaa81 100644
---- a/js/src/jsmath.cpp
-+++ b/js/src/jsmath.cpp
-@@ -71,7 +71,7 @@
- #elif defined(__s390__)
- #define GETRANDOM_NR 349
- #elif defined(__mips__)
--#include <sgidefs.h>
-+#include <asm/sgidefs.h>
- #if _MIPS_SIM == _MIPS_SIM_ABI32
- #define GETRANDOM_NR 4353
- #elif _MIPS_SIM == _MIPS_SIM_ABI64
--- 
-2.21.0
-
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/nojit-32bit-arch-fix.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/nojit-32bit-arch-fix.patch
new file mode 100644
index 0000000..f308b48
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/nojit-32bit-arch-fix.patch
@@ -0,0 +1,21 @@
+Fix build when JIT is disabled on 32bit systems
+
+This fixes a compile time assert
+js/src/wasm/WasmFrame.cpp:57:3: error: static_assert failed due to requirement '(__builtin_offsetof(js::wasm::DebugFrame, frame_) + sizeof(js::wasm::Frame)) % Alignment == 0' "Aligned after pushing DebugFrame"
+  static_assert((offsetof(DebugFrame, frame_) + sizeof(Frame)) % Alignment == 0,
+  ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/js/src/wasm/WasmFrame.h
++++ b/js/src/wasm/WasmFrame.h
+@@ -230,6 +230,8 @@ class DebugFrame {
+   // Avoid -Wunused-private-field warnings.
+  protected:
+ #if defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_ARM) || \
++    (defined(JS_CODEGEN_NONE) && \
++     (defined(__riscv) && __riscv_xlen == 32) || defined(__mips__)) || \
+     defined(JS_CODEGEN_X86) || defined(__wasi__)
+   // See alignmentStaticAsserts().  For MIPS32, ARM32 and X86 DebugFrame is only
+   // 4-byte aligned, so we add another word to get up to 8-byte
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/riscv32.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/riscv32.patch
new file mode 100644
index 0000000..fe9c332
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/riscv32.patch
@@ -0,0 +1,45 @@
+Add RISCV32 support
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/build/moz.configure/init.configure
++++ b/build/moz.configure/init.configure
+@@ -765,6 +765,9 @@ def split_triplet(triplet, allow_msvc=Fa
+     elif cpu.startswith("aarch64"):
+         canonical_cpu = "aarch64"
+         endianness = "little"
++    elif cpu in ("riscv32", "riscv32gc"):
++        canonical_cpu = "riscv32"
++        endianness = "little"
+     elif cpu in ("riscv64", "riscv64gc"):
+         canonical_cpu = "riscv64"
+         endianness = "little"
+--- a/python/mozbuild/mozbuild/configure/constants.py
++++ b/python/mozbuild/mozbuild/configure/constants.py
+@@ -52,6 +52,7 @@ CPU_bitness = {
+     "mips64": 64,
+     "ppc": 32,
+     "ppc64": 64,
++    'riscv32': 32,
+     "riscv64": 64,
+     "s390": 32,
+     "s390x": 64,
+@@ -94,6 +95,7 @@ CPU_preprocessor_checks = OrderedDict(
+         ("m68k", "__m68k__"),
+         ("mips64", "__mips64"),
+         ("mips32", "__mips__"),
++        ("riscv32", "__riscv && __riscv_xlen == 32"),
+         ("riscv64", "__riscv && __riscv_xlen == 64"),
+         ("sh4", "__sh__"),
+         ("wasm32", "__wasm32__"),
+--- a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
++++ b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
+@@ -1186,6 +1186,7 @@ class LinuxCrossCompileToolchainTest(Bas
+         "m68k-unknown-linux-gnu": big_endian + {"__m68k__": 1},
+         "mips64-unknown-linux-gnuabi64": big_endian + {"__mips64": 1, "__mips__": 1},
+         "mips-unknown-linux-gnu": big_endian + {"__mips__": 1},
++        "riscv32-unknown-linux-gnu": little_endian + {"__riscv": 1, "__riscv_xlen": 32},
+         "riscv64-unknown-linux-gnu": little_endian + {"__riscv": 1, "__riscv_xlen": 64},
+         "sh4-unknown-linux-gnu": little_endian + {"__sh__": 1},
+     }
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_60.9.0.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_60.9.0.bb
deleted file mode 100644
index 1747e6b..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_60.9.0.bb
+++ /dev/null
@@ -1,147 +0,0 @@
-SUMMARY = "SpiderMonkey is Mozilla's JavaScript engine written in C/C++"
-HOMEPAGE = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
-LICENSE = "MPL-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=dc9b6ecd19a14a54a628edaaf23733bf"
-
-SRC_URI = " \
-    https://archive.mozilla.org/pub/firefox/releases/${PV}esr/source/firefox-${PV}esr.source.tar.xz \
-    file://0001-Port-build-to-python3.patch \
-    file://0002-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch \
-    file://0003-fix-cross-compilation-on-i586-targets.patch \
-    file://0004-do-not-create-python-environment.patch \
-    file://0005-fix-cannot-find-link.patch \
-    file://0006-workaround-autoconf-2.13-detection-failed.patch \
-    file://0007-fix-do_compile-failed-on-mips.patch \
-    file://0008-add-riscv-support.patch \
-    file://0009-mozjs-fix-coredump-caused-by-getenv.patch \
-    file://0010-format-overflow.patch \
-    file://0011-To-fix-build-error-on-arm32BE.patch \
-    file://0012-JS_PUBLIC_API.patch \
-    file://0013-riscv-Disable-atomic-operations.patch \
-    file://0014-remove-JS_VOLATIME_ARM.patch \
-"
-SRC_URI:append:libc-musl = " \
-    file://musl/0001-support-musl.patch \
-    file://musl/0002-js-Fix-build-with-musl.patch \
-"
-SRC_URI:append:mipsarchn32 = " \
-    file://mipsarchn32/0001-fix-compiling-failure-on-mips64-n32-bsp.patch \
-"
-SRC_URI[md5sum] = "69a0be9ce695e5dc4941ed0c78ef00c2"
-SRC_URI[sha256sum] = "9f453c8cc5669e46e38f977764d49a36295bf0d023619d9aac782e6bb3e8c53f"
-
-S = "${WORKDIR}/firefox-${@d.getVar("PV").replace("esr", "")}"
-
-inherit autotools pkgconfig perlnative python3native
-
-inherit features_check
-CONFLICT_DISTRO_FEATURES:mipsarchn32 = "ld-is-gold"
-
-DEPENDS += " \
-    nspr zlib autoconf-2.13-native \
-    python3-six-native python3-pytoml-native \
-    python3-jsmin-native python3-six \
-"
-
-# Disable null pointer optimization in gcc >= 6
-# https://bugzilla.redhat.com/show_bug.cgi?id=1328045
-CFLAGS += "-fno-tree-vrp -fno-strict-aliasing -fno-delete-null-pointer-checks"
-CXXFLAGS += "-fno-tree-vrp -fno-strict-aliasing -fno-delete-null-pointer-checks"
-
-# nspr's package-config is ignored so set libs manually
-EXTRA_OECONF = " \
-    --target=${TARGET_SYS} \
-    --host=${BUILD_SYS} \
-    --prefix=${prefix} \
-    --libdir=${libdir} \
-    --disable-tests --disable-strip --disable-optimize \
-    --disable-jemalloc \
-    --with-nspr-cflags='-I${STAGING_INCDIR}/nspr -I${STAGING_INCDIR}/nss3' \
-    --with-nspr-libs='-lplds4 -lplc4 -lnspr4' \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', "--enable-gold", '--disable-gold', d)} \
-"
-
-# Without this, JS_Init() will fail for mips64.
-EXTRA_OECONF:append:mipsarch = " --with-intl-api=build"
-EXTRA_OECONF:append:powerpc = " --with-intl-api=build"
-
-EXTRA_OECONF:append:mipsarch = " --disable-ion"
-EXTRA_OECONF:append:riscv64 = " --disable-ion"
-EXTRA_OECONF:append:riscv32 = " --disable-ion"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-PACKAGECONFIG[x11] = "--x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR},--x-includes=no --x-libraries=no,virtual/libx11"
-
-EXTRA_OEMAKE:task-compile += "BUILD_OPT=1 OS_LDFLAGS='-Wl,-latomic ${LDFLAGS}'"
-EXTRA_OEMAKE:task-install += "STATIC_LIBRARY_NAME=js_static"
-
-export HOST_CC = "${BUILD_CC}"
-export HOST_CXX = "${BUILD_CXX}"
-export HOST_CFLAGS = "${BUILD_CFLAGS}"
-export HOST_CPPFLAGS = "${BUILD_CPPFLAGS}"
-export HOST_CXXFLAGS = "${BUILD_CXXFLAGS}"
-
-do_configure() {
-    export SHELL="/bin/sh"
-    cd ${S}
-    # Add mozjs python-modules necessary
-    PYTHONPATH="${S}/third_party/python/which:${S}/config:${S}/build"
-    for sub_dir in python testing/mozbase; do
-        for module_dir in `ls $sub_dir -1`;do
-            [ $module_dir = "virtualenv" ] && continue
-            if [ -d "${S}/$sub_dir/$module_dir" ];then
-                PYTHONPATH="$PYTHONPATH:${S}/$sub_dir/$module_dir"
-            fi
-        done
-    done
-    echo "$PYTHONPATH" > ${B}/PYTHONPATH
-    export PYTHONPATH=`cat ${B}/PYTHONPATH`
-
-    cd ${S}/js/src
-    autoconf213 --macrodir=${STAGING_DATADIR_NATIVE}/autoconf213 old-configure.in > old-configure
-
-    cd ${B}
-    # use of /tmp can causes problems on heavily loaded hosts
-    mkdir -p "${B}/lcl_tmp"
-    TMPDIR="${B}/lcl_tmp"  ${S}/js/src/configure ${EXTRA_OECONF}
-
-    # Make standard Makefile checks pass
-    touch ${S}/js/src/configure
-    touch ${B}/config.status
-}
-
-do_compile:prepend() {
-    export SHELL="/bin/sh"
-    export PYTHONPATH=`cat ${B}/PYTHONPATH`
-}
-
-do_install:prepend() {
-    export SHELL="/bin/sh"
-    export PYTHONPATH=`cat ${B}/PYTHONPATH`
-}
-
-inherit multilib_script multilib_header
-
-MULTILIB_SCRIPTS += " ${PN}-dev:${bindir}/js60-config"
-
-do_install:append() {
-       oe_multilib_header mozjs-60/js-config.h
-       sed -e 's@${STAGING_DIR_HOST}@@g' \
-           -i ${D}${bindir}/js60-config
-}
-
-PACKAGES =+ "lib${BPN}"
-FILES:lib${BPN} += "${libdir}/lib*.so"
-FILES:${PN}-dev += "${bindir}/js60-config"
-
-# Fails to build with thumb-1 (qemuarm)
-#| {standard input}: Assembler messages:
-#| {standard input}:2172: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r2,r1,LSR#20'
-#| {standard input}:2173: Error: unshifted register required -- `bic r2,r2,#(1<<11)'
-#| {standard input}:2174: Error: unshifted register required -- `orr r1,r1,#(1<<20)'
-#| {standard input}:2176: Error: instruction not supported in Thumb16 mode -- `subs r2,r2,#0x300'
-#| {standard input}:2178: Error: instruction not supported in Thumb16 mode -- `subs r5,r2,#52'
-ARM_INSTRUCTION_SET:armv5 = "arm"
-ARM_INSTRUCTION_SET:armv4 = "arm"
-
-DISABLE_STATIC = ""
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_91.2.0.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_91.2.0.bb
new file mode 100644
index 0000000..a1a5ddc
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_91.2.0.bb
@@ -0,0 +1,71 @@
+SUMMARY = "SpiderMonkey is Mozilla's JavaScript engine written in C/C++"
+HOMEPAGE = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dc9b6ecd19a14a54a628edaaf23733bf"
+
+SRC_URI = "https://archive.mozilla.org/pub/firefox/releases/${PV}esr/source/firefox-${PV}esr.source.tar.xz \
+           file://0001-Cargo.toml-do-not-abort-on-panic.patch \
+           file://0002-moz.configure-do-not-look-for-llvm-objdump.patch \
+           file://0003-rust.configure-do-not-try-to-find-a-suitable-upstrea.patch \
+           file://0004-use-asm-sgidefs.h.patch \
+           file://fix-musl-build.patch \
+           file://0001-build-do-not-use-autoconf-s-config.sub-to-canonicali.patch \
+           file://riscv32.patch \
+           file://nojit-32bit-arch-fix.patch \
+           "
+SRC_URI[sha256sum] = "3ef3cfd321d0c2c80ee1b41b8baf7a1ea4daf93c29e1377274933440ff5e42c3"
+
+S = "${WORKDIR}/firefox-${@d.getVar("PV").replace("esr", "")}"
+
+inherit pkgconfig perlnative python3native rust
+
+DEPENDS += "zlib cargo-native python3"
+
+B = "${WORKDIR}/build"
+
+export PYTHONPATH = "${S}/build:${S}/third_party/python/PyYAML/lib3:${S}/testing/mozbase/mozfile:${S}/python/mozboot:${S}/third_party/python/distro:${S}/testing/mozbase/mozinfo:${S}/config:${S}/testing/mozbase/manifestparser:${S}/third_party/python/pytoml:${S}/testing/mozbase/mozprocess:${S}/third_party/python/six:${S}/python/mozbuild:${S}/python/mozbuild/mozbuild:${S}/python/mach:${S}/third_party/python/jsmin:${S}/python/mozversioncontrol"
+
+export HOST_CC = "${BUILD_CC}"
+export HOST_CXX = "${BUILD_CXX}"
+export HOST_CFLAGS = "${BUILD_CFLAGS}"
+export HOST_CPPFLAGS = "${BUILD_CPPFLAGS}"
+export HOST_CXXFLAGS = "${BUILD_CXXFLAGS}"
+
+export AS = "${CC}"
+
+export RUSTFLAGS
+
+JIT ?= ""
+
+JIT:mipsarch = "--disable-jit"
+
+do_configure() {
+    cd ${B}
+    python3 ${S}/configure.py \
+        --enable-project=js \
+        --target=${HOST_SYS} \
+        --host=${BUILD_SYS} \
+        --prefix=${prefix} \
+        --libdir=${libdir} \
+        --disable-jemalloc \
+        ${JIT}
+
+}
+
+do_install() {
+    oe_runmake 'DESTDIR=${D}' install
+}
+
+inherit multilib_script multilib_header
+
+MULTILIB_SCRIPTS += " ${PN}-dev:${bindir}/js91-config"
+
+do_install:append() {
+       oe_multilib_header mozjs-91/js-config.h
+       sed -e 's@${STAGING_DIR_HOST}@@g' \
+           -i ${D}${bindir}/js91-config
+}
+
+PACKAGES =+ "lib${BPN}-staticdev lib${BPN}"
+FILES:lib${BPN}-staticdev += "${libdir}/libjs_static.ajs"
+FILES:lib${BPN} += "${libdir}/lib*"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/chipsec/chipsec_git.bb b/meta-openembedded/meta-oe/recipes-bsp/chipsec/chipsec_git.bb
deleted file mode 100644
index 3339dc1..0000000
--- a/meta-openembedded/meta-oe/recipes-bsp/chipsec/chipsec_git.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "CHIPSEC: Platform Security Assessment Framework"
-
-DESCRIPTION = "CHIPSEC is a framework for analyzing the security \
-               of PC platforms including hardware, system firmware \
-               (BIOS/UEFI), and platform components."
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bc2d1f9b427be5fb63f6af9da56f7c5d"
-
-SRC_URI = "git://github.com/chipsec/chipsec.git;branch=master \
-          "
-
-SRCREV = "b2a61684826dc8b9f622a844a40efea579cd7e7d"
-
-COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
-
-S = "${WORKDIR}/git"
-EXTRA_OEMAKE = "CC='${CC}' LDFLAGS='${LDFLAGS}' CFLAGS='${CFLAGS}'"
-
-DEPENDS = "virtual/kernel nasm-native python3-setuptools-native"
-RDEPENDS:${PN} += "python3 python3-modules"
-
-inherit module distutils3
-
-do_compile:append() {
-	cd ${S}/drivers/linux
-	oe_runmake  KSRC=${STAGING_KERNEL_BUILDDIR}
-}
-
-do_install:append() {
-	install -m 0644 ${S}/drivers/linux/chipsec.ko ${D}${PYTHON_SITEPACKAGES_DIR}/chipsec/helper/linux
-}
-
-FILES:${PN} += "${exec_prefix} \
-"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.2.9.bb b/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.2.9.bb
deleted file mode 100644
index fb83361..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.2.9.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "A library to abstract stream I/O like serial port, TCP, telnet, etc"
-HOMEPAGE = "https://github.com/cminyard/gensio"
-LICENSE = "GPL-2.0 & LGPL-2.1"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a0fd36908af843bcee10cb6dfc47fa67 \
-                    file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f \
-                    "
-
-SRCREV = "343ccf17ce656203b6b5513f4b7962f45d37b589"
-
-SRC_URI = "git://github.com/cminyard/gensio;protocol=https;branch=2.2.x"
-
-S = "${WORKDIR}/git"
-
-inherit autotools
-
-PACKAGECONFIG ??= "openssl tcp-wrappers"
-
-PACKAGECONFIG[openssl] = "--with-openssl=${STAGING_DIR_HOST}${prefix},--without-openssl, openssl"
-PACKAGECONFIG[tcp-wrappers] = "--with-tcp-wrappers,--without-tcp-wrappers, tcp-wrappers"
-PACKAGECONFIG[swig] = "--with-swig,--without-swig, swig"
-
-EXTRA_OECONF = "--without-python"
-
-RDEPENDS:${PN} += "bash"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.3.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.3.1.bb
new file mode 100644
index 0000000..6d10bfc
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.3.1.bb
@@ -0,0 +1,24 @@
+SUMMARY = "A library to abstract stream I/O like serial port, TCP, telnet, etc"
+HOMEPAGE = "https://github.com/cminyard/gensio"
+LICENSE = "GPL-2.0 & LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a0fd36908af843bcee10cb6dfc47fa67 \
+                    file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f \
+                    "
+
+SRCREV = "c500d8705c517f96e591c060105a789f053d2b7a"
+
+SRC_URI = "git://github.com/cminyard/gensio;protocol=https"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+PACKAGECONFIG ??= "openssl tcp-wrappers"
+
+PACKAGECONFIG[openssl] = "--with-openssl=${STAGING_DIR_HOST}${prefix},--without-openssl, openssl"
+PACKAGECONFIG[tcp-wrappers] = "--with-tcp-wrappers,--without-tcp-wrappers, tcp-wrappers"
+PACKAGECONFIG[swig] = "--with-swig,--without-swig, swig"
+
+EXTRA_OECONF = "--without-python"
+
+RDEPENDS:${PN} += "bash"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd/0001-netconfig-Use-s6_addr-instead-of-__in6_u.__u6_addr8.patch b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd/0001-netconfig-Use-s6_addr-instead-of-__in6_u.__u6_addr8.patch
new file mode 100644
index 0000000..a9f2393
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd/0001-netconfig-Use-s6_addr-instead-of-__in6_u.__u6_addr8.patch
@@ -0,0 +1,38 @@
+From 36c74f974eba6f276ed4dd04c2077e6f23ebec37 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 17 Oct 2021 16:09:03 -0700
+Subject: [PATCH] netconfig: Use s6_addr instead of __in6_u.__u6_addr8
+
+Building fails with:
+
+../iwd-1.18/src/netconfig.c: In function 'netconfig_ipv6_to_string':
+../iwd-1.18/src/netconfig.c:188:25: error: 'struct in6_addr' has no member named '__in6_u'; did you mean '__in6_union'?
+  188 |         memcpy(in6_addr.__in6_u.__u6_addr8, addr, 16);
+      |                         ^~~~~~~
+      |                         __in6_union
+
+Can be fixed by changing &this_ip.__in6_u.__u6_addr8[0] with &this_ip.s6_addr[0].
+For references: in6_addr is declared in /usr/include/linux/in6.h
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/netconfig.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/netconfig.c b/src/netconfig.c
+index c748630..ab51c3d 100644
+--- a/src/netconfig.c
++++ b/src/netconfig.c
+@@ -185,7 +185,7 @@ static inline char *netconfig_ipv6_to_string(const uint8_t *addr)
+ 	struct in6_addr in6_addr;
+ 	char *addr_str = l_malloc(INET6_ADDRSTRLEN);
+ 
+-	memcpy(in6_addr.__in6_u.__u6_addr8, addr, 16);
++	memcpy(in6_addr.s6_addr, addr, 16);
+ 
+ 	if (L_WARN_ON(unlikely(!inet_ntop(AF_INET6, &in6_addr, addr_str,
+ 						INET6_ADDRSTRLEN)))) {
+-- 
+2.33.1
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.17.bb b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.17.bb
deleted file mode 100644
index 00d94f3..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.17.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "Wireless daemon for Linux"
-HOMEPAGE = "https://iwd.wiki.kernel.org/"
-LICENSE = "LGPL-2.1"
-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] = "6f946f823b0dc3205e4e72becf8ad1915448d194f5b10d8003e4c8c5a18e4ef7"
-
-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_1.18.bb b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.18.bb
new file mode 100644
index 0000000..4136de8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.18.bb
@@ -0,0 +1,56 @@
+SUMMARY = "Wireless daemon for Linux"
+HOMEPAGE = "https://iwd.wiki.kernel.org/"
+LICENSE = "LGPL-2.1"
+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 \
+           file://0001-netconfig-Use-s6_addr-instead-of-__in6_u.__u6_addr8.patch \
+          "
+SRC_URI[sha256sum] = "0225ab81579f027e0fcbf255517f432fcf355d14f3645c36813c71a441dfab55"
+
+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/ser2net/ser2net_4.3.3.bb b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.3.3.bb
deleted file mode 100644
index 87b5b15..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.3.3.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "A serial to network proxy"
-SECTION = "console/network"
-HOMEPAGE = "http://sourceforge.net/projects/ser2net/"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f"
-
-DEPENDS = "gensio libyaml"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/ser2net/ser2net/ser2net-${PV}.tar.gz"
-
-SRC_URI[sha256sum] = "f5be52033a690bd0dd711209a64ebaec024ee4542b1357350aad8489dc2bf720"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/ser2net/files/ser2net"
-
-inherit autotools pkgconfig
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.3.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.3.4.bb
new file mode 100644
index 0000000..fcd2546
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.3.4.bb
@@ -0,0 +1,18 @@
+SUMMARY = "A serial to network proxy"
+SECTION = "console/network"
+HOMEPAGE = "http://sourceforge.net/projects/ser2net/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f"
+
+DEPENDS = "gensio libyaml"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/ser2net/ser2net/ser2net-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "c714d6777849100b2ca3f216d1cfc36d4573639ececc91d5c7809dfe27c8428e"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/ser2net/files/ser2net"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND = "native nativesdk"
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 dab983b..4e1ee86 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
@@ -249,7 +249,6 @@
     libparse-yapp-perl \
     libubox \
     ltrace \
-    lua \
     luajit \
     mcpp \
     memstat \
@@ -270,7 +269,6 @@
     yajl \
     yajl \
     kconfig-frontends \
-    ldns \
     libgee \
     libsombok3 \
     lshw \
@@ -308,6 +306,7 @@
 "
 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"
+RDEPENDS:packagegroup-meta-oe-devtools:append:riscv64 = " pcimem"
 RDEPENDS:packagegroup-meta-oe-devtools:append:arm = " pcimem"
 RDEPENDS:packagegroup-meta-oe-devtools:append:aarch64 = " pahole pcimem"
 RDEPENDS:packagegroup-meta-oe-devtools:append:libc-musl = " musl-nscd"
@@ -327,13 +326,10 @@
 
 RDEPENDS:packagegroup-meta-oe-extended ="\
     bitwise \
-    ${@bb.utils.contains("DISTRO_FEATURES", "x11 wayland opengl", "boinc-client", "", d)} \
     brotli \
     byacc \
     cmpi-bindings \
     collectd \
-    cfengine-masterfiles \
-    cfengine \
     ddrescue \
     dialog \
     enscript \
@@ -506,6 +502,7 @@
     libsdl2-net \
     ${@bb.utils.contains("DISTRO_FEATURES", "opengl", "libsdl2-ttf", "", d)} \
     libsdl \
+    ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "lv-drivers lvgl lv-lib-png", "", d)} \
     ttf-arphic-uming \
     ttf-droid-sans ttf-droid-sans-mono ttf-droid-sans-fallback ttf-droid-sans-japanese ttf-droid-serif \
     ttf-abyssinica \
@@ -717,6 +714,7 @@
     anthy \
     atop \
     ace-cloud-editor \
+    driverctl \
     frame \
     ${@bb.utils.contains("DISTRO_FEATURES", "x11", "geis", "", d)} \
     grail \
@@ -766,6 +764,8 @@
     libestr \
     libfann \
     libftdi \
+    libjs-jquery-globalize \
+    libjs-jquery-cookie \
     ccid \
     zchunk \
     libgpiod \
@@ -910,7 +910,6 @@
     nano \
     xdg-user-dirs \
     xmlsec1 \
-    ${@bb.utils.contains("DISTRO_FEATURES", "x11 pam", "xorgxrdp xrdp", "", d)} \
     usb-modeswitch-data \
     usb-modeswitch \
     liburing \
@@ -961,7 +960,6 @@
     zeromq-ptest \
     leveldb-ptest \
     psqlodbc-ptest \
-    lua-ptest \
     protobuf-ptest \
     rsyslog-ptest \
     oprofile-ptest \
diff --git a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.6.bb b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.6.bb
deleted file mode 100644
index 806a05e..0000000
--- a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.6.bb
+++ /dev/null
@@ -1,93 +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 \
-"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}/${BP}.tar.xz"
-SRC_URI[md5sum] = "504d1ab22cbc4d1a59a8d8c7ee5ed3bf"
-SRC_URI[sha256sum] = "b296b7a21ea576c2b180611ccb19d06aec8dddaedf7c704b0c6a81210c25635f"
-
-inherit autotools gettext pkgconfig
-
-# Use openssl because libgcrypt drops root privileges
-# if libgcrypt is linked with libcap support
-PACKAGECONFIG ??= " \
-    keyring \
-    cryptsetup \
-    veritysetup \
-    cryptsetup-reencrypt \
-    integritysetup \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \
-    kernel_crypto \
-    internal-argon2 \
-    blkid \
-    luks-adjust-xts-keysize \
-    openssl \
-"
-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[cryptsetup-reencrypt] = "--enable-cryptsetup-reencrypt,--disable-cryptsetup-reencrypt"
-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"
-
-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"
-
-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.4.1.bb b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.4.1.bb
new file mode 100644
index 0000000..7f7c350
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.4.1.bb
@@ -0,0 +1,96 @@
+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 \
+    libssh \
+"
+
+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] = "a356a727a83a464ade566e95239622a22dbe4e0f482b198fdb04ab0d3a5a9c5f"
+
+inherit autotools gettext pkgconfig
+
+# Use openssl because libgcrypt drops root privileges
+# if libgcrypt is linked with libcap support
+PACKAGECONFIG ??= " \
+    keyring \
+    cryptsetup \
+    veritysetup \
+    cryptsetup-reencrypt \
+    integritysetup \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \
+    kernel_crypto \
+    internal-argon2 \
+    blkid \
+    luks-adjust-xts-keysize \
+    openssl \
+"
+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[cryptsetup-reencrypt] = "--enable-cryptsetup-reencrypt,--disable-cryptsetup-reencrypt"
+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"
+
+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"
+
+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/pkcs11-helper/pkcs11-helper/0001-build-openssl-remove-RSA_SSLV23_PADDING-constant-usa.patch b/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper/0001-build-openssl-remove-RSA_SSLV23_PADDING-constant-usa.patch
new file mode 100644
index 0000000..f2baae9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper/0001-build-openssl-remove-RSA_SSLV23_PADDING-constant-usa.patch
@@ -0,0 +1,27 @@
+From 5b9a8da964ee0b998955cd986000cfa27cfa698d Mon Sep 17 00:00:00 2001
+From: Alon Bar-Lev <alon.barlev@gmail.com>
+Date: Wed, 4 Aug 2021 19:02:34 +0300
+Subject: [PATCH] build: openssl: remove RSA_SSLV23_PADDING constant usage
+
+Due to openssl-3 compatibility, thanks to t0b3
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ lib/pkcs11h-openssl.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/lib/pkcs11h-openssl.c b/lib/pkcs11h-openssl.c
+index 9c9b2cd..85c8193 100644
+--- a/lib/pkcs11h-openssl.c
++++ b/lib/pkcs11h-openssl.c
+@@ -474,9 +474,6 @@ __pkcs11h_openssl_rsa_dec (
+ 		case RSA_PKCS1_OAEP_PADDING:
+ 			mech = CKM_RSA_PKCS_OAEP;
+ 		break;
+-		case RSA_SSLV23_PADDING:
+-			rv = CKR_MECHANISM_INVALID;
+-		break;
+ 		case RSA_NO_PADDING:
+ 			mech = CKM_RSA_X_509;
+ 		break;
diff --git a/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.27.bb b/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.27.bb
index a7365f1..944f49f 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.27.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.27.bb
@@ -15,7 +15,9 @@
     file://COPYING.GPL;md5=8a71d0475d08eee76d8b6d0c6dbec543 \
     file://COPYING.BSD;md5=66b7a37c3c10483c1fd86007726104d7 \
 "
-SRC_URI = "git://github.com/OpenSC/${BPN}.git"
+SRC_URI = "git://github.com/OpenSC/${BPN}.git \
+           file://0001-build-openssl-remove-RSA_SSLV23_PADDING-constant-usa.patch \
+           "
 
 S = "${WORKDIR}/git"
 # v1.27
diff --git a/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace/0001-Workaround-glibc-2.34-build-failure-by-disabling-dls.patch b/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace/0001-Workaround-glibc-2.34-build-failure-by-disabling-dls.patch
deleted file mode 100644
index 92edc44..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace/0001-Workaround-glibc-2.34-build-failure-by-disabling-dls.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 1926700b367745e976dae9d9dc2236da21f4435b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 1 Sep 2021 10:07:48 -0700
-Subject: [PATCH] Workaround glibc 2.34 build failure by disabling dlsym
- wrapper
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- wrappers/dlsym.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/wrappers/dlsym.cpp b/wrappers/dlsym.cpp
-index 5ab8465b..d353bbf7 100644
---- a/wrappers/dlsym.cpp
-+++ b/wrappers/dlsym.cpp
-@@ -34,7 +34,7 @@
- #include "os.hpp"
- 
- 
--#if defined(__GLIBC__) && !defined(__UCLIBC__)
-+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !(__GLIBC__ == 2 && __GLIBC_MINOR__ >= 34)
- 
- 
- #include <dlfcn.h>
--- 
-2.33.0
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace_10.0.bb b/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace_10.0.bb
index ca828b0..eb8e031 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace_10.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace_10.0.bb
@@ -5,10 +5,9 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=aeb969185a143c3c25130bc2c3ef9a50 \
                     file://thirdparty/snappy/COPYING;md5=f62f3080324a97b3159a7a7e61812d0c"
 
-SRCREV = "9d42f667e2a36a6624d92b9bd697de097cc4e619"
+SRCREV = "d28a980802ad48568c87da02d630c8babfe163bb"
 PV .= "+10.0.1+git${SRCPV}"
 SRC_URI = "gitsm://github.com/${BPN}/${BPN}.git \
-           file://0001-Workaround-glibc-2.34-build-failure-by-disabling-dls.patch \
           "
 
 S = "${WORKDIR}/git"
@@ -17,9 +16,11 @@
 
 inherit cmake
 
+PACKAGECONFIG ??= " ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11', '', d)} "
+PACKAGECONFIG[x11] = "-DENABLE_X11=ON,-DENABLE_X11=OFF,libx11"
+
 EXTRA_OECMAKE += "\
     -DENABLE_GUI=OFF \
-    -DENABLE_X11=OFF \
     -DENABLE_STATIC_LIBGCC=OFF \
     -DENABLE_STATIC_LIBSTDCXX=OFF \
     -DPython3_ROOT_DIR=/usr/bin/python3-native \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-Revert-Changed-GRPCPP_ABSEIL_SYNC-to-GPR_ABSEIL_SYNC.patch b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-Revert-Changed-GRPCPP_ABSEIL_SYNC-to-GPR_ABSEIL_SYNC.patch
new file mode 100644
index 0000000..2f1483f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-Revert-Changed-GRPCPP_ABSEIL_SYNC-to-GPR_ABSEIL_SYNC.patch
@@ -0,0 +1,60 @@
+From dc593958e556dd496b774f35c5992285510d6859 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 19 Oct 2021 17:09:55 +0200
+Subject: [PATCH] Revert "Changed GRPCPP_ABSEIL_SYNC to GPR_ABSEIL_SYNC
+ (#25681)"
+
+This reverts commit 931f91b745cd5b2864a0d1787815871d0bd844ae.
+
+Fixes sysdig from meta-oe and other recipes (like com.webos.service.tts
+libgoogleassistant from meta-webosose) failing with:
+
+| FAILED: userspace/sysdig/sysdig
+| : && /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/x86_64-oe-linux-g++ -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -fstack-protector-strong  -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-sec
+urity  --sysroot=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot  -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0=/usr/src/debug/sysdig/0.27.1-r0                      -f
+debug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0=/usr/src/debug/sysdig/0.27.1-r0                      -fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/bu
+ild/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot-native=  -fvisibility-inlines-hidden  -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -fstack-protector-strong  -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security  --sysroot=/OE/build
+/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot -Wall -ggdb   -std=c++0x -O3 -fno-strict-aliasing -DNDEBUG  -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -fstack-protector-strong  -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security
+--sysroot=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot  -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0=/usr/src/debug/sysdig/0.27.1-r0                      -fdebug-p
+refix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0=/usr/src/debug/sysdig/0.27.1-r0                      -fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/oe-
+core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot-native=  -fvisibility-inlines-hidden  -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -fstack-protector-strong  -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security  --sysroot=/OE/build/oe-cor
+e/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fmacro-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0=/usr/src/debug/sysdig/0.27.1-r0                      -fdebug-prefix-map=/OE/build/oe-cor
+e/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0=/usr/src/debug/sysdig/0.27.1-r0                      -fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-
+64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot-native=  -Wl,-z,relro,-z,now -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fmacro-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0=/usr/src/debug/sysdig/0.27.1-r0                      -fdebug-prefix-map=/OE/build/
+oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0=/usr/src/debug/sysdig/0.27.1-r0                      -fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot=                      -fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/
+core2-64-oe-linux/sysdig/0.27.1-r0/recipe-sysroot-native=  -Wl,-z,relro,-z,now   -rdynamic userspace/sysdig/CMakeFiles/sysdig.dir/fields_info.cpp.o userspace/sysdig/CMakeFiles/sysdig.dir/sysdig.cpp.o -o userspace/sysdig/sysdig  userspace/libsinsp/libsinsp.a  userspace/libscap/libscap.a
+ -lelf  -lz  -lcurl  -ljsoncpp  -ltbb  -lcares  -lgrpc++_unsecure  -lgrpc_unsecure  -lprotobuf  -lcares  -lgrpc++_unsecure  -lgrpc_unsecure  -lprotobuf  -ljq  -lb64  -lrt  -lanl  -lssl  -lcrypto  -lluajit-5.1  -ldl  -lpthread && :
+| /usr/include/grpcpp/impl/codegen/completion_queue.h:121: error: undefined reference to 'absl::lts_20210324::Mutex::~Mutex()'
+| /usr/include/grpcpp/impl/codegen/completion_queue.h:121: error: undefined reference to 'absl::lts_20210324::Mutex::~Mutex()'
+| /usr/include/grpcpp/impl/codegen/completion_queue.h:121: error: undefined reference to 'absl::lts_20210324::Mutex::~Mutex()'
+| /usr/include/grpcpp/impl/codegen/completion_queue.h:259: error: undefined reference to 'absl::lts_20210324::Mutex::~Mutex()'
+| collect2: error: ld returned 1 exit status
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+---
+ include/grpcpp/impl/codegen/sync.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/grpcpp/impl/codegen/sync.h b/include/grpcpp/impl/codegen/sync.h
+index 4cb8133c7c..3d10d9a3a0 100644
+--- a/include/grpcpp/impl/codegen/sync.h
++++ b/include/grpcpp/impl/codegen/sync.h
+@@ -47,7 +47,7 @@
+ namespace grpc {
+ namespace internal {
+ 
+-#ifdef GPR_ABSEIL_SYNC
++#ifdef GRPCPP_ABSEIL_SYNC
+ 
+ using Mutex = absl::Mutex;
+ using MutexLock = absl::MutexLock;
+@@ -142,7 +142,7 @@ class CondVar {
+   gpr_cv cv_;
+ };
+ 
+-#endif  // GPR_ABSEIL_SYNC
++#endif  // GRPCPP_ABSEIL_SYNC
+ 
+ template <typename Predicate>
+ GRPC_DEPRECATED("incompatible with thread safety analysis")
diff --git a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-cmake-revert-db88fb0ee826e73323e06ac6166ac038ee71f6a.patch b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-cmake-revert-db88fb0ee826e73323e06ac6166ac038ee71f6a.patch
new file mode 100644
index 0000000..d9cfa00
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-cmake-revert-db88fb0ee826e73323e06ac6166ac038ee71f6a.patch
@@ -0,0 +1,107 @@
+From 50d54458324c1a19eefb9968e4cb556dbd34b875 Mon Sep 17 00:00:00 2001
+From: Vyacheslav Yurkov <uvv.mail@gmail.com>
+Date: Tue, 12 Oct 2021 19:11:40 +0200
+Subject: [PATCH] cmake: revert db88fb0ee826e73323e06ac6166ac038ee71f6a
+ (#27626)
+
+Fix regression introduced by previous commit. Original problem that
+commit was trying to fix was solved by modification of grpc recipe in
+meta-openembedded project repository
+
+Fixes #26857
+
+Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
+---
+ CMakeLists.txt                    | 16 ++++++++--------
+ templates/CMakeLists.txt.template |  2 --
+ 2 files changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0e8fbdee8b..02cd48bee4 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -3828,7 +3828,7 @@ foreach(_hdr
+ endforeach()
+ 
+ 
+-if(gRPC_INSTALL AND NOT CMAKE_CROSSCOMPILING)
++if(gRPC_INSTALL)
+   install(TARGETS grpc_plugin_support EXPORT gRPCTargets
+     RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
+     LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
+@@ -11679,7 +11679,7 @@ target_link_libraries(grpc_cpp_plugin
+ 
+ 
+ 
+-if(gRPC_INSTALL AND NOT CMAKE_CROSSCOMPILING)
++if(gRPC_INSTALL)
+   install(TARGETS grpc_cpp_plugin EXPORT gRPCTargets
+     RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
+     LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
+@@ -11718,7 +11718,7 @@ target_link_libraries(grpc_csharp_plugin
+ 
+ 
+ 
+-if(gRPC_INSTALL AND NOT CMAKE_CROSSCOMPILING)
++if(gRPC_INSTALL)
+   install(TARGETS grpc_csharp_plugin EXPORT gRPCTargets
+     RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
+     LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
+@@ -11757,7 +11757,7 @@ target_link_libraries(grpc_node_plugin
+ 
+ 
+ 
+-if(gRPC_INSTALL AND NOT CMAKE_CROSSCOMPILING)
++if(gRPC_INSTALL)
+   install(TARGETS grpc_node_plugin EXPORT gRPCTargets
+     RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
+     LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
+@@ -11796,7 +11796,7 @@ target_link_libraries(grpc_objective_c_plugin
+ 
+ 
+ 
+-if(gRPC_INSTALL AND NOT CMAKE_CROSSCOMPILING)
++if(gRPC_INSTALL)
+   install(TARGETS grpc_objective_c_plugin EXPORT gRPCTargets
+     RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
+     LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
+@@ -11835,7 +11835,7 @@ target_link_libraries(grpc_php_plugin
+ 
+ 
+ 
+-if(gRPC_INSTALL AND NOT CMAKE_CROSSCOMPILING)
++if(gRPC_INSTALL)
+   install(TARGETS grpc_php_plugin EXPORT gRPCTargets
+     RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
+     LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
+@@ -11874,7 +11874,7 @@ target_link_libraries(grpc_python_plugin
+ 
+ 
+ 
+-if(gRPC_INSTALL AND NOT CMAKE_CROSSCOMPILING)
++if(gRPC_INSTALL)
+   install(TARGETS grpc_python_plugin EXPORT gRPCTargets
+     RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
+     LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
+@@ -11913,7 +11913,7 @@ target_link_libraries(grpc_ruby_plugin
+ 
+ 
+ 
+-if(gRPC_INSTALL AND NOT CMAKE_CROSSCOMPILING)
++if(gRPC_INSTALL)
+   install(TARGETS grpc_ruby_plugin EXPORT gRPCTargets
+     RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
+     LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
+diff --git a/templates/CMakeLists.txt.template b/templates/CMakeLists.txt.template
+index 0f0883e09c..b9a5bc4144 100644
+--- a/templates/CMakeLists.txt.template
++++ b/templates/CMakeLists.txt.template
+@@ -695,8 +695,6 @@
+   # grpcpp_channelz doesn't build with protobuf-lite, so no install required
+   # See https://github.com/grpc/grpc/issues/22826
+   if(gRPC_INSTALL AND NOT gRPC_USE_PROTO_LITE)
+-  % elif tgt.build == 'protoc':
+-  if(gRPC_INSTALL AND NOT CMAKE_CROSSCOMPILING)
+   % else:
+   if(gRPC_INSTALL)
+   % endif
diff --git a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.38.1.bb b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.38.1.bb
deleted file mode 100644
index b4f1066..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.38.1.bb
+++ /dev/null
@@ -1,80 +0,0 @@
-DESCRIPTION = "A high performance, open source, general-purpose RPC framework. \
-Provides gRPC libraries for multiple languages written on top of shared C core library \
-(C++, Node.js, Python, Ruby, Objective-C, PHP, C#)"
-HOMEPAGE = "https://github.com/grpc/grpc"
-SECTION = "libs"
-LICENSE = "Apache-2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-DEPENDS = "c-ares protobuf protobuf-native protobuf-c protobuf-c-native openssl libnsl2 abseil-cpp re2"
-DEPENDS:append:class-target = " googletest grpc-native "
-DEPENDS:append:class-nativesdk = " grpc-native "
-
-PACKAGE_BEFORE_PN = "${PN}-compiler"
-
-RDEPENDS:${PN}-compiler = "${PN}"
-RDEPENDS:${PN}-dev += "${PN}-compiler"
-
-S = "${WORKDIR}/git"
-SRCREV_grpc = "96b73272eadc01afb5fb45b92b408c47e4387274"
-BRANCH = "v1.38.x"
-SRC_URI = "git://github.com/grpc/grpc.git;protocol=https;name=grpc;branch=${BRANCH} \
-           "
-# Fixes build with older compilers 4.8 especially on ubuntu 14.04
-CXXFLAGS:append:class-native = " -Wl,--no-as-needed"
-
-inherit cmake pkgconfig
-
-EXTRA_OECMAKE = " \
-    -DgRPC_CARES_PROVIDER=package \
-    -DgRPC_ZLIB_PROVIDER=package \
-    -DgRPC_SSL_PROVIDER=package \
-    -DgRPC_PROTOBUF_PROVIDER=package \
-    -DgRPC_ABSL_PROVIDER=package \
-    -DgRPC_RE2_PROVIDER=package \
-    -DgRPC_INSTALL=ON \
-    -DCMAKE_CROSSCOMPILING=ON \
-    -DgRPC_INSTALL_LIBDIR=${baselib} \
-    -DgRPC_INSTALL_CMAKEDIR=${baselib}/cmake/${BPN} \
-    "
-
-PACKAGECONFIG ??= "cpp shared"
-PACKAGECONFIG[cpp] = "-DgRPC_BUILD_GRPC_CPP_PLUGIN=ON,-DgRPC_BUILD_GRPC_CPP_PLUGIN=OFF"
-PACKAGECONFIG[csharp] = "-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=ON,-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF"
-PACKAGECONFIG[node] = "-DgRPC_BUILD_GRPC_NODE_PLUGIN=ON,-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF"
-PACKAGECONFIG[objective-c] = "-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=ON,-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF"
-PACKAGECONFIG[php] = "-DgRPC_BUILD_GRPC_PHP_PLUGIN=ON,-DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF"
-PACKAGECONFIG[python] = "-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=ON,-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF"
-PACKAGECONFIG[ruby] = "-DgRPC_BUILD_GRPC_RUBY_PLUGIN=ON,-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF"
-PACKAGECONFIG[protobuf-lite] = "-DgRPC_USE_PROTO_LITE=ON,-DgRPC_USE_PROTO_LITE=OFF,protobuf-lite"
-PACKAGECONFIG[shared] = "-DBUILD_SHARED_LIBS=ON,-DBUILD_SHARED_LIBS=OFF,,"
-
-do_configure:prepend() {
-    sed -i -e "s#lib/pkgconfig/#${baselib}/pkgconfig/#g" ${S}/CMakeLists.txt
-}
-
-do_configure:prepend:mipsarch() {
-    sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
-}
-
-do_configure:prepend:powerpc() {
-    sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
-}
-
-do_configure:prepend:riscv64() {
-    sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
-}
-
-do_configure:prepend:riscv32() {
-    sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
-}
-
-do_configure:prepend:toolchain-clang:x86() {
-    sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
-}
-
-BBCLASSEXTEND = "native nativesdk"
-
-SYSROOT_DIRS_BLACKLIST:append:class-target = " ${baselib}/cmake/grpc"
-
-FILES:${PN}-compiler += "${bindir}"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.41.0.bb b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.41.0.bb
new file mode 100644
index 0000000..f961c53
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.41.0.bb
@@ -0,0 +1,87 @@
+DESCRIPTION = "A high performance, open source, general-purpose RPC framework. \
+Provides gRPC libraries for multiple languages written on top of shared C core library \
+(C++, Node.js, Python, Ruby, Objective-C, PHP, C#)"
+HOMEPAGE = "https://github.com/grpc/grpc"
+SECTION = "libs"
+LICENSE = "Apache-2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS = "c-ares protobuf protobuf-native protobuf-c protobuf-c-native openssl libnsl2 abseil-cpp re2"
+DEPENDS:append:class-target = " googletest grpc-native "
+DEPENDS:append:class-nativesdk = " grpc-native "
+
+PACKAGE_BEFORE_PN = "${PN}-compiler"
+
+RDEPENDS:${PN}-compiler = "${PN}"
+RDEPENDS:${PN}-dev:class_native += "${PN}-compiler"
+# Configuration above allows to cross-compile gRPC applications
+# In order to compile applications on the target, use the dependency below
+# Both dependencies are mutually exclusive
+# RDEPENDS:${PN}-dev += "${PN}-compiler"
+
+S = "${WORKDIR}/git"
+SRCREV_grpc = "fc662b7964384b701af5bd3ce6994d2180080eb4"
+BRANCH = "v1.41.x"
+SRC_URI = "git://github.com/grpc/grpc.git;protocol=https;name=grpc;branch=${BRANCH} \
+           file://0001-cmake-revert-db88fb0ee826e73323e06ac6166ac038ee71f6a.patch \
+           file://0001-Revert-Changed-GRPCPP_ABSEIL_SYNC-to-GPR_ABSEIL_SYNC.patch \
+           "
+# Fixes build with older compilers 4.8 especially on ubuntu 14.04
+CXXFLAGS:append:class-native = " -Wl,--no-as-needed"
+
+inherit cmake pkgconfig
+
+EXTRA_OECMAKE = " \
+    -DgRPC_CARES_PROVIDER=package \
+    -DgRPC_ZLIB_PROVIDER=package \
+    -DgRPC_SSL_PROVIDER=package \
+    -DgRPC_PROTOBUF_PROVIDER=package \
+    -DgRPC_ABSL_PROVIDER=package \
+    -DgRPC_RE2_PROVIDER=package \
+    -DgRPC_INSTALL=ON \
+    -DCMAKE_CROSSCOMPILING=ON \
+    -DgRPC_INSTALL_LIBDIR=${baselib} \
+    -DgRPC_INSTALL_CMAKEDIR=${baselib}/cmake/${BPN} \
+    "
+
+PACKAGECONFIG ??= "cpp shared"
+PACKAGECONFIG_class-target ?= "shared"
+PACKAGECONFIG[cpp] = "-DgRPC_BUILD_GRPC_CPP_PLUGIN=ON,-DgRPC_BUILD_GRPC_CPP_PLUGIN=OFF"
+PACKAGECONFIG[csharp] = "-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=ON,-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF"
+PACKAGECONFIG[node] = "-DgRPC_BUILD_GRPC_NODE_PLUGIN=ON,-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF"
+PACKAGECONFIG[objective-c] = "-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=ON,-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF"
+PACKAGECONFIG[php] = "-DgRPC_BUILD_GRPC_PHP_PLUGIN=ON,-DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF"
+PACKAGECONFIG[python] = "-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=ON,-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF"
+PACKAGECONFIG[ruby] = "-DgRPC_BUILD_GRPC_RUBY_PLUGIN=ON,-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF"
+PACKAGECONFIG[protobuf-lite] = "-DgRPC_USE_PROTO_LITE=ON,-DgRPC_USE_PROTO_LITE=OFF,protobuf-lite"
+PACKAGECONFIG[shared] = "-DBUILD_SHARED_LIBS=ON,-DBUILD_SHARED_LIBS=OFF,,"
+
+do_configure:prepend() {
+    sed -i -e "s#lib/pkgconfig/#${baselib}/pkgconfig/#g" ${S}/CMakeLists.txt
+}
+
+do_configure:prepend:mipsarch() {
+    sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
+}
+
+do_configure:prepend:powerpc() {
+    sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
+}
+
+do_configure:prepend:riscv64() {
+    sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
+}
+
+do_configure:prepend:riscv32() {
+    sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
+}
+
+do_configure:prepend:toolchain-clang:x86() {
+    sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+SYSROOT_DIRS_BLACKLIST:append:class-target = " ${baselib}/cmake/grpc"
+
+FILES:${PN}-compiler += "${bindir}"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb b/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb
index 2ce6691..858614c 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb
@@ -8,6 +8,7 @@
 SRC_URI[sha256sum] = "8ac84c16bdca60e710eea75782356f3ac3b55680d40e1530d7cea474ac208229"
 
 DEPENDS = "openssl"
+PNBLACKLIST[ldns] ?= "Needs porting to openssl 3.x"
 
 inherit autotools-brokensep
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Allow-building-lua-without-readline-on-Linux.patch b/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Allow-building-lua-without-readline-on-Linux.patch
deleted file mode 100644
index e767900..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Allow-building-lua-without-readline-on-Linux.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 601ef636fc4dfb2af3e7fda88d8ea1c1d92affe4 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 2 Oct 2019 17:54:15 +0200
-Subject: [PATCH] Allow building lua without readline on Linux
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- Makefile      | 2 +-
- src/Makefile  | 3 +++
- src/luaconf.h | 5 +++++
- 3 files changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 119110d..9f6df45 100644
---- a/Makefile
-+++ b/Makefile
-@@ -36,7 +36,7 @@ RM= rm -f
- # == END OF USER SETTINGS -- NO NEED TO CHANGE ANYTHING BELOW THIS LINE =======
- 
- # Convenience platforms targets.
--PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris
-+PLATS= aix bsd c89 freebsd generic linux linux-no-readline macosx mingw posix solaris
- 
- # What to install.
- TO_BIN= lua luac
-diff --git a/src/Makefile b/src/Makefile
-index 64c78f7..5c0428a 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -109,6 +109,9 @@ generic: $(ALL)
- linux:
- 	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
- 
-+linux-no-readline:
-+	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX_NO_READLINE" SYSLIBS="-Wl,-E -ldl"
-+
- macosx:
- 	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX" SYSLIBS="-lreadline"
- 
-diff --git a/src/luaconf.h b/src/luaconf.h
-index 9eeeea6..d71ca25 100644
---- a/src/luaconf.h
-+++ b/src/luaconf.h
-@@ -64,6 +64,11 @@
- #define LUA_USE_READLINE	/* needs some extra libraries */
- #endif
- 
-+#if defined(LUA_USE_LINUX_NO_READLINE)
-+#define LUA_USE_POSIX
-+#define LUA_USE_DLOPEN		/* needs an extra library: -ldl */
-+#endif
-+
- 
- #if defined(LUA_USE_MACOSX)
- #define LUA_USE_POSIX
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Fixed-bug-barriers-cannot-be-active-during-sweep.patch b/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Fixed-bug-barriers-cannot-be-active-during-sweep.patch
deleted file mode 100644
index a302874..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Fixed-bug-barriers-cannot-be-active-during-sweep.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 1e6df25ac28dcd89f0324177bb55019422404b44 Mon Sep 17 00:00:00 2001
-From: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
-Date: Thu, 3 Sep 2020 15:32:17 +0800
-Subject: [PATCH] Fixed bug: barriers cannot be active during sweep
-
-Barriers cannot be active during sweep, even in generational mode.
-(Although gen. mode is not incremental, it can hit a barrier when
-deleting a thread and closing its upvalues.)  The colors of objects are
-being changed during sweep and, therefore, cannot be trusted.
-
-Upstream-Status: Backport [https://github.com/lua/lua/commit/a6da1472c0c5e05ff249325f979531ad51533110]
-CVE: CVE-2020-24371
-
-[Adjust code KGC_INC -> KGC_NORMAL, refer 69371c4b84becac09c445aae01d005b49658ef82]
-Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
----
- src/lgc.c | 33 ++++++++++++++++++++++++---------
- 1 file changed, 24 insertions(+), 9 deletions(-)
-
-diff --git a/src/lgc.c b/src/lgc.c
-index 973c269..7af23d5 100644
---- a/src/lgc.c
-+++ b/src/lgc.c
-@@ -142,10 +142,17 @@ static int iscleared (global_State *g, const TValue *o) {
- 
- 
- /*
--** barrier that moves collector forward, that is, mark the white object
--** being pointed by a black object. (If in sweep phase, clear the black
--** object to white [sweep it] to avoid other barrier calls for this
--** same object.)
-+** Barrier that moves collector forward, that is, marks the white object
-+** 'v' being pointed by the black object 'o'.  In the generational
-+** mode, 'v' must also become old, if 'o' is old; however, it cannot
-+** be changed directly to OLD, because it may still point to non-old
-+** objects. So, it is marked as OLD0. In the next cycle it will become
-+** OLD1, and in the next it will finally become OLD (regular old). By
-+** then, any object it points to will also be old.  If called in the
-+** incremental sweep phase, it clears the black object to white (sweep
-+** it) to avoid other barrier calls for this same object. (That cannot
-+** be done is generational mode, as its sweep does not distinguish
-+** whites from deads.)
- */
- void luaC_barrier_ (lua_State *L, GCObject *o, GCObject *v) {
-   global_State *g = G(L);
-@@ -154,7 +161,8 @@ void luaC_barrier_ (lua_State *L, GCObject *o, GCObject *v) {
-     reallymarkobject(g, v);  /* restore invariant */
-   else {  /* sweep phase */
-     lua_assert(issweepphase(g));
--    makewhite(g, o);  /* mark main obj. as white to avoid other barriers */
-+    if (g->gckind == KGC_NORMAL)  /* incremental mode? */
-+      makewhite(g, o);  /* mark 'o' as white to avoid other barriers */
-   }
- }
- 
-@@ -299,10 +307,15 @@ static void markbeingfnz (global_State *g) {
- 
- 
- /*
--** Mark all values stored in marked open upvalues from non-marked threads.
--** (Values from marked threads were already marked when traversing the
--** thread.) Remove from the list threads that no longer have upvalues and
--** not-marked threads.
-+** For each non-marked thread, simulates a barrier between each open
-+** upvalue and its value. (If the thread is collected, the value will be
-+** assigned to the upvalue, but then it can be too late for the barrier
-+** to act. The "barrier" does not need to check colors: A non-marked
-+** thread must be young; upvalues cannot be older than their threads; so
-+** any visited upvalue must be young too.) Also removes the thread from
-+** the list, as it was already visited. Removes also threads with no
-+** upvalues, as they have nothing to be checked. (If the thread gets an
-+** upvalue later, it will be linked in the list again.)
- */
- static void remarkupvals (global_State *g) {
-   lua_State *thread;
-@@ -313,9 +326,11 @@ static void remarkupvals (global_State *g) {
-       p = &thread->twups;  /* keep marked thread with upvalues in the list */
-     else {  /* thread is not marked or without upvalues */
-       UpVal *uv;
-+      lua_assert(!isold(thread) || thread->openupval == NULL);
-       *p = thread->twups;  /* remove thread from the list */
-       thread->twups = thread;  /* mark that it is out of list */
-       for (uv = thread->openupval; uv != NULL; uv = uv->u.open.next) {
-+        lua_assert(getage(uv) <= getage(thread));
-         if (uv->u.open.touched) {
-           markvalue(g, uv->v);  /* remark upvalue's value */
-           uv->u.open.touched = 0;
--- 
-1.9.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2020-15888.patch b/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2020-15888.patch
deleted file mode 100644
index 60a4125..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2020-15888.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 6298903e35217ab69c279056f925fb72900ce0b7 Mon Sep 17 00:00:00 2001
-From: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
-Date: Mon, 6 Jul 2020 12:11:54 -0300
-Subject: [PATCH] Keep minimum size when shrinking a stack
-
-When shrinking a stack (during GC), do not make it smaller than the
-initial stack size.
----
- ldo.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-==== end of original header ====
-
-CVE: CVE-2020-15888
-
-Upstream-Status: backport [https://github.com/lua/lua.git]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-====
-diff --git a/ldo.c b/ldo.c
-index c563b1d9..a89ac010 100644
---- a/src/ldo.c
-+++ b/src/ldo.c
-@@ -220,7 +220,7 @@ static int stackinuse (lua_State *L) {
- 
- void luaD_shrinkstack (lua_State *L) {
-   int inuse = stackinuse(L);
--  int goodsize = inuse + (inuse / 8) + 2*EXTRA_STACK;
-+  int goodsize = inuse + BASIC_STACK_SIZE;
-   if (goodsize > LUAI_MAXSTACK)
-     goodsize = LUAI_MAXSTACK;  /* respect stack limit */
-   if (L->stacksize > LUAI_MAXSTACK)  /* had been handling stack overflow? */
-@@ -229,8 +229,7 @@ void luaD_shrinkstack (lua_State *L) {
-     luaE_shrinkCI(L);  /* shrink list */
-   /* if thread is currently not handling a stack overflow and its
-      good size is smaller than current size, shrink its stack */
--  if (inuse <= (LUAI_MAXSTACK - EXTRA_STACK) &&
--      goodsize < L->stacksize)
-+  if (inuse <= (LUAI_MAXSTACK - EXTRA_STACK) && goodsize < L->stacksize)
-     luaD_reallocstack(L, goodsize);
-   else  /* don't change stack */
-     condmovestack(L,{},{});  /* (change only for debugging) */
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.6.bb b/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.6.bb
deleted file mode 100644
index af3054d..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.6.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-DESCRIPTION = "Lua is a powerful light-weight programming language designed \
-for extending applications."
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://doc/readme.html;beginline=318;endline=352;md5=f43d8ee6bc4df18ef8b276439cc4a153"
-HOMEPAGE = "http://www.lua.org/"
-
-SRC_URI = "http://www.lua.org/ftp/lua-${PV}.tar.gz;name=tarballsrc \
-           file://lua.pc.in \
-           file://0001-Allow-building-lua-without-readline-on-Linux.patch \
-           file://CVE-2020-15888.patch \
-           file://0001-Fixed-bug-barriers-cannot-be-active-during-sweep.patch \
-           "
-
-# if no test suite matches PV release of Lua exactly, download the suite for the closest Lua release.
-PV_testsuites = "5.3.4"
-
-SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', \
-           'http://www.lua.org/tests/lua-${PV_testsuites}-tests.tar.gz;name=tarballtest \
-            file://run-ptest \
-           ', '', d)}"
-
-SRC_URI[tarballsrc.md5sum] = "83f23dbd5230140a3770d5f54076948d"
-SRC_URI[tarballsrc.sha256sum] = "fc5fd69bb8736323f026672b1b7235da613d7177e72558893a0bdcd320466d60"
-SRC_URI[tarballtest.md5sum] = "b14fe3748c1cb2d74e3acd1943629ba3"
-SRC_URI[tarballtest.sha256sum] = "b80771238271c72565e5a1183292ef31bd7166414cd0d43a8eb79845fa7f599f"
-
-inherit pkgconfig binconfig ptest
-
-PACKAGECONFIG ??= "readline"
-PACKAGECONFIG[readline] = ",,readline"
-
-TARGET_CC_ARCH += " -fPIC ${LDFLAGS}"
-EXTRA_OEMAKE = "'CC=${CC} -fPIC' 'MYCFLAGS=${CFLAGS} -fPIC' MYLDFLAGS='${LDFLAGS}'"
-
-do_configure:prepend() {
-    sed -i -e s:/usr/local:${prefix}:g src/luaconf.h
-    sed -i -e s:lib/lua/:${baselib}/lua/:g src/luaconf.h
-}
-
-do_compile () {
-    oe_runmake ${@bb.utils.contains('PACKAGECONFIG', 'readline', 'linux', 'linux-no-readline', d)}
-}
-
-do_install () {
-    oe_runmake \
-        'INSTALL_TOP=${D}${prefix}' \
-        'INSTALL_BIN=${D}${bindir}' \
-        'INSTALL_INC=${D}${includedir}/' \
-        'INSTALL_MAN=${D}${mandir}/man1' \
-        'INSTALL_SHARE=${D}${datadir}/lua' \
-        'INSTALL_LIB=${D}${libdir}' \
-        'INSTALL_CMOD=${D}${libdir}/lua/5.3' \
-        install
-    install -d ${D}${libdir}/pkgconfig
-
-    sed -e s/@VERSION@/${PV}/ ${WORKDIR}/lua.pc.in > ${WORKDIR}/lua.pc
-    install -m 0644 ${WORKDIR}/lua.pc ${D}${libdir}/pkgconfig/
-    rmdir ${D}${datadir}/lua/5.3
-    rmdir ${D}${datadir}/lua
-}
-
-do_install_ptest () {
-        cp -R --no-dereference --preserve=mode,links -v ${WORKDIR}/lua-${PV_testsuites}-tests ${D}${PTEST_PATH}/test
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix/0001-fix-avoid-race-condition-between-test-and-mkdir.patch b/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix/0001-fix-avoid-race-condition-between-test-and-mkdir.patch
deleted file mode 100644
index d8a9e3d..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix/0001-fix-avoid-race-condition-between-test-and-mkdir.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 4dfca036c96071bd2a2c80ff84719c6d37858373 Mon Sep 17 00:00:00 2001
-From: Haseeb Ashraf <Haseeb_Ashraf@mentor.com>
-Date: Fri, 17 Apr 2020 14:36:50 +0500
-Subject: [PATCH 1/1] fix: avoid race condition between test and mkdir
-
-when building in parallel the race condition, when the directory
-is tested for existence and it is created, can break the build
-
-Signed-off-by: Haseeb Ashraf <Haseeb_Ashraf@mentor.com>
----
- Makefile.in            | 6 +++---
- build-aux/rockspecs.mk | 2 +-
- local.mk               | 2 +-
- 3 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index 9b51ef3..4722525 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -1637,7 +1637,7 @@ distclean-tags:
- 
- distdir: $(DISTFILES)
- 	$(am__remove_distdir)
--	test -d "$(distdir)" || mkdir "$(distdir)"
-+	$(MKDIR_P) "$(distdir)"
- 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- 	list='$(DISTFILES)'; \
-@@ -1975,7 +1975,7 @@ clean-local:
- 	rm -f $(posix_submodules)
- 
- $(allhtml): $(EXTRA_ext_posix_posix_la_SOURCES) $(ext_posix_posix_la_SOURCES)
--	test -d $(builddir)/doc || mkdir $(builddir)/doc
-+	$(MKDIR_P) $(builddir)/doc
- @HAVE_LDOC_TRUE@	$(LDOC) -c build-aux/config.ld -d $(abs_srcdir)/doc .
- @HAVE_LDOC_FALSE@	$(MKDIR_P) doc
- @HAVE_LDOC_FALSE@	touch doc/index.html doc/ldoc.css
-@@ -1983,7 +1983,7 @@ $(allhtml): $(EXTRA_ext_posix_posix_la_SOURCES) $(ext_posix_posix_la_SOURCES)
- doc: $(allhtml)
- 
- $(luarocks_config): Makefile.am
--	@test -d build-aux || mkdir build-aux
-+	@$(MKDIR_P) build-aux
- 	$(AM_V_GEN){						\
- 	  $(set_LUA_BINDIR);					\
- 	  echo 'rocks_trees = { "$(abs_srcdir)/luarocks" }';	\
-diff --git a/build-aux/rockspecs.mk b/build-aux/rockspecs.mk
-index ebd1dbf..c8fbdbc 100644
---- a/build-aux/rockspecs.mk
-+++ b/build-aux/rockspecs.mk
-@@ -62,7 +62,7 @@ LUA_INCDIR = `cd $$LUA_BINDIR/../include && pwd`
- LUA_LIBDIR = `cd $$LUA_BINDIR/../lib && pwd`
- 
- $(luarocks_config): Makefile.am
--	@test -d build-aux || mkdir build-aux
-+	@$(MKDIR_P) build-aux
- 	$(AM_V_GEN){						\
- 	  $(set_LUA_BINDIR);					\
- 	  echo 'rocks_trees = { "$(abs_srcdir)/luarocks" }';	\
-diff --git a/local.mk b/local.mk
-index d391ef7..80b22ce 100644
---- a/local.mk
-+++ b/local.mk
-@@ -255,7 +255,7 @@ dist_examples_DATA +=				\
- allhtml = $(dist_doc_DATA) $(dist_examples_DATA) $(dist_modules_DATA) $(dist_classes_DATA)
- 
- $(allhtml): $(EXTRA_ext_posix_posix_la_SOURCES) $(ext_posix_posix_la_SOURCES)
--	test -d $(builddir)/doc || mkdir $(builddir)/doc
-+	$(MKDIR_P) $(builddir)/doc
- if HAVE_LDOC
- 	$(LDOC) -c build-aux/config.ld -d $(abs_srcdir)/doc .
- else
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_33.4.0.bb b/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_33.4.0.bb
deleted file mode 100644
index 720e2ea..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_33.4.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "luaposix is a POSIX binding for Lua."
-LICENSE = "MIT"
-HOMEPAGE = "https://github.com/luaposix/luaposix"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7dd2aad04bb7ca212e69127ba8d58f9f"
-
-DEPENDS += "lua-native lua"
-
-SRC_URI = "git://github.com/luaposix/luaposix.git;branch=release \
-           file://0001-fix-avoid-race-condition-between-test-and-mkdir.patch \
-"
-SRCREV = "8e4902ed81c922ed8f76a7ed85be1eaa3fd7e66d"
-S = "${WORKDIR}/git"
-LUA_VERSION = "5.3"
-
-inherit autotools pkgconfig
-
-do_install() {
-    oe_runmake 'DESTDIR=${D}' 'luadir=${datadir}/lua/${LUA_VERSION}' 'luaexecdir=${libdir}/lua/${LUA_VERSION}' install
-}
-
-FILES:${PN} = "${datadir}/lua/${LUA_VERSION} ${libdir}/lua/${LUA_VERSION}"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_35.1.bb b/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_35.1.bb
new file mode 100644
index 0000000..d9f489b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_35.1.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "luaposix is a POSIX binding for Lua."
+LICENSE = "MIT"
+HOMEPAGE = "https://github.com/luaposix/luaposix"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f81069e00c0cad249f20efe958276db1"
+
+DEPENDS += "lua-native lua virtual/crypt"
+
+SRC_URI = "git://github.com/luaposix/luaposix.git;branch=release-v${PV} \
+"
+SRCREV = "14043c5086ae738823a5dfbc9170d9e14193fbef"
+S = "${WORKDIR}/git"
+LUA_VERSION = "5.4"
+
+B = "${S}"
+
+inherit pkgconfig
+
+do_compile() {
+    ${S}/build-aux/luke
+}
+
+do_install() {
+    ${S}/build-aux/luke PREFIX=${D}${prefix} install
+}
+
+FILES:${PN} = "${datadir}/lua/${LUA_VERSION} \
+               ${libdir}/lua/${LUA_VERSION}"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.2.bb b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.2.bb
deleted file mode 100644
index d201577..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.2.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "JSON for modern C++"
-HOMEPAGE = "https://nlohmann.github.io/json/"
-SECTION = "libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=441793d25a658d58d79a1f87516a6ad1"
-
-SRC_URI = "git://github.com/nlohmann/json.git;nobranch=1 \
-           "
-
-SRCREV = "626e7d61e44dee32887126c8f437dd077dec09cf"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-EXTRA_OECMAKE += "-DJSON_BuildTests=OFF"
-
-# nlohmann-json is a header only C++ library, so the main package will be empty.
-
-RDEPENDS:${PN}-dev = ""
-
-BBCLASSEXTEND = "native nativesdk"
-
-# other packages commonly reference the file directly as "json.hpp"
-# create symlink to allow this usage
-do_install:append() {
-    ln -s nlohmann/json.hpp ${D}${includedir}/json.hpp
-}
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.4.bb b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.4.bb
new file mode 100644
index 0000000..fff3237
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.4.bb
@@ -0,0 +1,28 @@
+SUMMARY = "JSON for modern C++"
+HOMEPAGE = "https://nlohmann.github.io/json/"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=441793d25a658d58d79a1f87516a6ad1"
+
+SRC_URI = "git://github.com/nlohmann/json.git;nobranch=1 \
+           "
+
+SRCREV = "fec56a1a16c6e1c1b1f4e116a20e79398282626c"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+EXTRA_OECMAKE += "-DJSON_BuildTests=OFF"
+
+# nlohmann-json is a header only C++ library, so the main package will be empty.
+
+RDEPENDS:${PN}-dev = ""
+
+BBCLASSEXTEND = "native nativesdk"
+
+# other packages commonly reference the file directly as "json.hpp"
+# create symlink to allow this usage
+do_install:append() {
+    ln -s nlohmann/json.hpp ${D}${includedir}/json.hpp
+}
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-liftoff-Correct-function-signatures.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-liftoff-Correct-function-signatures.patch
new file mode 100644
index 0000000..d7005ae
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-liftoff-Correct-function-signatures.patch
@@ -0,0 +1,71 @@
+From dc3652c0abcdf8573fd044907b19d8eda7ca1124 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Oct 2021 12:49:58 -0700
+Subject: [PATCH] [liftoff] Correct function signatures
+
+Fixes builds on mips where clang reports an error
+../deps/v8/src/wasm/baseline/mips/liftoff-assembler-mips.h:661:5: error: no matching member function for call to 'Move'
+    Move(tmp, src, type.value_type());
+    ^~~~
+
+Upstream-Status: Submitted [https://chromium-review.googlesource.com/c/v8/v8/+/3235674]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/wasm/baseline/liftoff-assembler.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/deps/v8/src/wasm/baseline/liftoff-assembler.h
++++ b/deps/v8/src/wasm/baseline/liftoff-assembler.h
+@@ -613,7 +613,7 @@ class LiftoffAssembler : public TurboAss
+   void FinishCall(const ValueKindSig*, compiler::CallDescriptor*);
+ 
+   // Move {src} into {dst}. {src} and {dst} must be different.
+-  void Move(LiftoffRegister dst, LiftoffRegister src, ValueKind);
++  void Move(LiftoffRegister dst, LiftoffRegister src, ValueKind kind);
+ 
+   // Parallel register move: For a list of tuples <dst, src, kind>, move the
+   // {src} register of kind {kind} into {dst}. If {src} equals {dst}, ignore
+@@ -759,8 +759,8 @@ class LiftoffAssembler : public TurboAss
+   inline void MoveStackValue(uint32_t dst_offset, uint32_t src_offset,
+                              ValueKind);
+ 
+-  inline void Move(Register dst, Register src, ValueKind);
+-  inline void Move(DoubleRegister dst, DoubleRegister src, ValueKind);
++  inline void Move(Register dst, Register src, ValueKind kind);
++  inline void Move(DoubleRegister dst, DoubleRegister src, ValueKind kind);
+ 
+   inline void Spill(int offset, LiftoffRegister, ValueKind);
+   inline void Spill(int offset, WasmValue);
+--- a/deps/v8/src/wasm/baseline/mips/liftoff-assembler-mips.h
++++ b/deps/v8/src/wasm/baseline/mips/liftoff-assembler-mips.h
+@@ -658,7 +658,7 @@ void LiftoffAssembler::Store(Register ds
+     pinned = pinned | LiftoffRegList::ForRegs(dst_op.rm(), src);
+     LiftoffRegister tmp = GetUnusedRegister(src.reg_class(), pinned);
+     // Save original value.
+-    Move(tmp, src, type.value_type());
++    Move(tmp, src, type.value_type().kind());
+ 
+     src = tmp;
+     pinned.set(tmp);
+--- a/deps/v8/src/wasm/baseline/mips64/liftoff-assembler-mips64.h
++++ b/deps/v8/src/wasm/baseline/mips64/liftoff-assembler-mips64.h
+@@ -596,7 +596,7 @@ void LiftoffAssembler::Store(Register ds
+     pinned.set(dst_op.rm());
+     LiftoffRegister tmp = GetUnusedRegister(src.reg_class(), pinned);
+     // Save original value.
+-    Move(tmp, src, type.value_type());
++    Move(tmp, src, type.value_type().kind());
+ 
+     src = tmp;
+     pinned.set(tmp);
+--- a/deps/v8/src/wasm/baseline/riscv64/liftoff-assembler-riscv64.h
++++ b/deps/v8/src/wasm/baseline/riscv64/liftoff-assembler-riscv64.h
+@@ -580,7 +580,7 @@ void LiftoffAssembler::Store(Register ds
+     pinned.set(dst_op.rm());
+     LiftoffRegister tmp = GetUnusedRegister(src.reg_class(), pinned);
+     // Save original value.
+-    Move(tmp, src, type.value_type());
++    Move(tmp, src, type.value_type().kind());
+ 
+     src = tmp;
+     pinned.set(tmp);
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch
index 00b2e9b..4773f05 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch
@@ -10,11 +10,9 @@
  common.gypi | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/common.gypi b/common.gypi
-index ee91fb1d..049c8f8c 100644
 --- a/common.gypi
 +++ b/common.gypi
-@@ -413,7 +413,7 @@
+@@ -417,7 +417,7 @@
              'ldflags': [ '-m32' ],
            }],
            [ 'target_arch=="ppc64" and OS!="aix"', {
@@ -23,6 +21,3 @@
              'ldflags': [ '-m64' ],
            }],
            [ 'target_arch=="s390x"', {
--- 
-2.32.0
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Install-both-binaries-and-use-libdir.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Install-both-binaries-and-use-libdir.patch
new file mode 100644
index 0000000..5cb2e97
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Install-both-binaries-and-use-libdir.patch
@@ -0,0 +1,96 @@
+From 62ddf8499747fb1e366477d666c0634ad50039a9 Mon Sep 17 00:00:00 2001
+From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+Date: Tue, 19 Mar 2019 23:22:40 -0400
+Subject: [PATCH 2/2] Install both binaries and use libdir.
+
+This allows us to build with a shared library for other users while
+still providing the normal executable.
+
+Taken from - https://src.fedoraproject.org/rpms/nodejs/raw/rawhide/f/0002-Install-both-binaries-and-use-libdir.patch
+
+Upstream-Status: Pending
+
+Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.py     |  7 +++++++
+ tools/install.py | 21 +++++++++------------
+ 2 files changed, 16 insertions(+), 12 deletions(-)
+
+diff --git a/configure.py b/configure.py
+index 6efb98c2316f089f3167e486282593245373af3f..a6d2ec939e4480dfae703f3978067537abf9f0f0 100755
+--- a/configure.py
++++ b/configure.py
+@@ -721,10 +721,16 @@ parser.add_argument('--shared',
+     dest='shared',
+     default=None,
+     help='compile shared library for embedding node in another project. ' +
+          '(This mode is not officially supported for regular applications)')
+ 
++parser.add_argument('--libdir',
++    action='store',
++    dest='libdir',
++    default='lib',
++    help='a directory to install the shared library into')
++
+ parser.add_argument('--without-v8-platform',
+     action='store_true',
+     dest='without_v8_platform',
+     default=False,
+     help='do not initialize v8 platform during node.js startup. ' +
+@@ -1305,10 +1311,11 @@ def configure_node(o):
+     o['variables']['debug_nghttp2'] = 'false'
+ 
+   o['variables']['node_no_browser_globals'] = b(options.no_browser_globals)
+ 
+   o['variables']['node_shared'] = b(options.shared)
++  o['variables']['libdir'] = options.libdir
+   node_module_version = getmoduleversion.get_version()
+ 
+   if options.dest_os == 'android':
+     shlib_suffix = 'so'
+   elif sys.platform == 'darwin':
+diff --git a/tools/install.py b/tools/install.py
+index 41cc1cbc60a9480cc08df3aa0ebe582c2becc3a2..11208f9e7166ab60da46d5ace2257c239a7e9263 100755
+--- a/tools/install.py
++++ b/tools/install.py
+@@ -128,26 +128,23 @@ def subdir_files(path, dest, action):
+   for subdir, files_in_path in ret.items():
+     action(files_in_path, subdir + '/')
+ 
+ def files(action):
+   is_windows = sys.platform == 'win32'
+-  output_file = 'node'
+   output_prefix = 'out/Release/'
++  output_libprefix = output_prefix
+ 
+-  if 'false' == variables.get('node_shared'):
+-    if is_windows:
+-      output_file += '.exe'
++  if is_windows:
++    output_bin = 'node.exe'
++    output_lib = 'node.dll'
+   else:
+-    if is_windows:
+-      output_file += '.dll'
+-    else:
+-      output_file = 'lib' + output_file + '.' + variables.get('shlib_suffix')
++    output_bin = 'node'
++    output_lib = 'libnode.' + variables.get('shlib_suffix')
+ 
+-  if 'false' == variables.get('node_shared'):
+-    action([output_prefix + output_file], 'bin/' + output_file)
+-  else:
+-    action([output_prefix + output_file], 'lib/' + output_file)
++  action([output_prefix + output_bin], 'bin/' + output_bin)
++  if 'true' == variables.get('node_shared'):
++    action([output_libprefix + output_lib], variables.get('libdir') + '/' + output_lib)
+ 
+   if 'true' == variables.get('node_use_dtrace'):
+     action(['out/Release/node.d'], 'lib/dtrace/node.d')
+ 
+   # behave similarly for systemtap
+-- 
+2.33.0
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Using-native-binaries.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Using-native-binaries.patch
index c6fc2dc..8db1f1d 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Using-native-binaries.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Using-native-binaries.patch
@@ -10,7 +10,7 @@
 
 --- a/node.gyp
 +++ b/node.gyp
-@@ -487,6 +487,7 @@
+@@ -294,6 +294,7 @@
                'action_name': 'run_mkcodecache',
                'process_outputs_as_sources': 1,
                'inputs': [
@@ -18,7 +18,7 @@
                  '<(mkcodecache_exec)',
                ],
                'outputs': [
-@@ -512,6 +513,7 @@
+@@ -319,6 +320,7 @@
                'action_name': 'node_mksnapshot',
                'process_outputs_as_sources': 1,
                'inputs': [
@@ -28,7 +28,7 @@
                'outputs': [
 --- a/tools/v8_gypfiles/v8.gyp
 +++ b/tools/v8_gypfiles/v8.gyp
-@@ -220,6 +220,7 @@
+@@ -68,6 +68,7 @@
          {
            'action_name': 'run_torque_action',
            'inputs': [  # Order matters.
@@ -36,7 +36,15 @@
              '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)',
              '<@(torque_files)',
            ],
-@@ -351,6 +352,7 @@
+@@ -99,6 +100,7 @@
+             '<@(torque_outputs_inc)',
+           ],
+           'action': [
++	    '<(PRODUCT_DIR)/v8-qemu-wrapper.sh',
+             '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)',
+             '-o', '<(SHARED_INTERMEDIATE_DIR)/torque-generated',
+             '-v8-root', '<(V8_ROOT)',
+@@ -225,6 +227,7 @@
          {
            'action_name': 'generate_bytecode_builtins_list_action',
            'inputs': [
@@ -44,7 +52,7 @@
              '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(EXECUTABLE_SUFFIX)',
            ],
            'outputs': [
-@@ -533,6 +535,7 @@
+@@ -415,6 +418,7 @@
              ],
            },
            'inputs': [
@@ -52,7 +60,7 @@
              '<(mksnapshot_exec)',
            ],
            'outputs': [
-@@ -1448,6 +1451,7 @@
+@@ -1548,6 +1552,7 @@
          {
            'action_name': 'run_gen-regexp-special-case_action',
            'inputs': [
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0003-Install-both-binaries-and-use-libdir.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0003-Install-both-binaries-and-use-libdir.patch
deleted file mode 100644
index 6223920..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0003-Install-both-binaries-and-use-libdir.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 5b22fac923d1ca3e9fefb97f5a171124a88f5e22 Mon Sep 17 00:00:00 2001
-From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
-Date: Tue, 19 Mar 2019 23:22:40 -0400
-Subject: [PATCH] Install both binaries and use libdir.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This allows us to build with a shared library for other users while
-still providing the normal executable.
-
-Taken from - https://src.fedoraproject.org/rpms/nodejs/raw/rawhide/f/0002-Install-both-binaries-and-use-libdir.patch
-
-Upstream-Status: Pending
-
-Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- configure.py     |  7 +++++++
- tools/install.py | 21 +++++++++------------
- 2 files changed, 16 insertions(+), 12 deletions(-)
-
-diff --git a/configure.py b/configure.py
-index e6f7e4db..6cf5c45d 100755
---- a/configure.py
-+++ b/configure.py
-@@ -626,6 +626,12 @@ parser.add_option('--shared',
-     help='compile shared library for embedding node in another project. ' +
-          '(This mode is not officially supported for regular applications)')
- 
-+parser.add_option('--libdir',
-+    action='store',
-+    dest='libdir',
-+    default='lib',
-+    help='a directory to install the shared library into')
-+
- parser.add_option('--without-v8-platform',
-     action='store_true',
-     dest='without_v8_platform',
-@@ -1202,6 +1208,7 @@ def configure_node(o):
-   o['variables']['node_no_browser_globals'] = b(options.no_browser_globals)
- 
-   o['variables']['node_shared'] = b(options.shared)
-+  o['variables']['libdir'] = options.libdir
-   node_module_version = getmoduleversion.get_version()
- 
-   if options.dest_os == 'android':
-diff --git a/tools/install.py b/tools/install.py
-index 729b416f..9bfc6234 100755
---- a/tools/install.py
-+++ b/tools/install.py
-@@ -121,22 +121,19 @@ def subdir_files(path, dest, action):
- 
- def files(action):
-   is_windows = sys.platform == 'win32'
--  output_file = 'node'
-   output_prefix = 'out/Release/'
-+  output_libprefix = output_prefix
- 
--  if 'false' == variables.get('node_shared'):
--    if is_windows:
--      output_file += '.exe'
-+  if is_windows:
-+    output_bin = 'node.exe'
-+    output_lib = 'node.dll'
-   else:
--    if is_windows:
--      output_file += '.dll'
--    else:
--      output_file = 'lib' + output_file + '.' + variables.get('shlib_suffix')
-+    output_bin = 'node'
-+    output_lib = 'libnode.' + variables.get('shlib_suffix')
- 
--  if 'false' == variables.get('node_shared'):
--    action([output_prefix + output_file], 'bin/' + output_file)
--  else:
--    action([output_prefix + output_file], 'lib/' + output_file)
-+  action([output_prefix + output_bin], 'bin/' + output_bin)
-+  if 'true' == variables.get('node_shared'):
-+    action([output_libprefix + output_lib], variables.get('libdir') + '/' + output_lib)
- 
-   if 'true' == variables.get('node_use_dtrace'):
-     action(['out/Release/node.d'], 'lib/dtrace/node.d')
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/libatomic.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/libatomic.patch
index cdf6bc8..cb02373 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/libatomic.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/libatomic.patch
@@ -11,7 +11,7 @@
 
 --- a/tools/v8_gypfiles/v8.gyp
 +++ b/tools/v8_gypfiles/v8.gyp
-@@ -1336,6 +1336,7 @@
+@@ -1436,6 +1436,7 @@
      {
        'target_name': 'mksnapshot',
        'type': 'executable',
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/mips-warnings.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/mips-warnings.patch
deleted file mode 100644
index 1a773f2..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/mips-warnings.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Add explicit static cast to fix narrowing warning
-
-Fixes
-deps/v8/src/codegen/mips/assembler-mips.cc:3556:44: error: non-constant-expression cannot be narrowed from type 'int' to 'size_t' (aka 'unsigned int') in initializer list [-Wc++11-narrowing]
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/deps/v8/src/codegen/mips/assembler-mips.cc
-+++ b/deps/v8/src/codegen/mips/assembler-mips.cc
-@@ -3553,7 +3553,7 @@ void Assembler::GrowBuffer() {
-                                reloc_info_writer.last_pc() + pc_delta);
- 
-   // Relocate runtime entries.
--  Vector<byte> instructions{buffer_start_, pc_offset()};
-+  Vector<byte> instructions{buffer_start_, static_cast<size_t>(pc_offset())};
-   Vector<const byte> reloc_info{reloc_info_writer.pos(), reloc_size};
-   for (RelocIterator it(instructions, reloc_info, 0); !it.done(); it.next()) {
-     RelocInfo::Mode rmode = it.rinfo()->rmode();
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/system-c-ares.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/system-c-ares.patch
new file mode 100644
index 0000000..141889a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/system-c-ares.patch
@@ -0,0 +1,24 @@
+keep nodejs compatible with c-ares 1.17.1
+
+Upstream-Status: Inappropriate [c-ares specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/src/cares_wrap.h
++++ b/src/cares_wrap.h
+@@ -22,7 +22,15 @@
+ # include <netdb.h>
+ #endif  // __POSIX__
+ 
+-# include <ares_nameser.h>
++#if defined(__ANDROID__) || \
++    defined(__MINGW32__) || \
++    defined(__OpenBSD__) || \
++    defined(_MSC_VER)
++
++# include <nameser.h>
++#else
++# include <arpa/nameser.h>
++#endif
+ 
+ namespace node {
+ namespace cares_wrap {
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_14.17.1.bb b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_14.17.1.bb
deleted file mode 100644
index 4715019..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_14.17.1.bb
+++ /dev/null
@@ -1,199 +0,0 @@
-DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
-HOMEPAGE = "http://nodejs.org"
-LICENSE = "MIT & BSD & Artistic-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a1016f9b7979cfe6fc3466a9bba60b1e"
-
-DEPENDS = "openssl"
-DEPENDS:append:class-target = " qemu-native"
-
-inherit pkgconfig python3native qemu
-
-COMPATIBLE_MACHINE:armv4 = "(!.*armv4).*"
-COMPATIBLE_MACHINE:armv5 = "(!.*armv5).*"
-COMPATIBLE_MACHINE:mips64 = "(!.*mips64).*"
-
-COMPATIBLE_HOST:riscv64 = "null"
-COMPATIBLE_HOST:riscv32 = "null"
-
-SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
-           file://0001-Disable-running-gyp-files-for-bundled-deps.patch \
-           file://0003-Install-both-binaries-and-use-libdir.patch \
-           file://0004-v8-don-t-override-ARM-CFLAGS.patch \
-           file://big-endian.patch \
-           file://mips-warnings.patch \
-           file://mips-less-memory.patch \
-           "
-SRC_URI:append:class-target = " \
-           file://0002-Using-native-binaries.patch \
-           "
-SRC_URI:append:toolchain-clang:x86 = " \
-           file://libatomic.patch \
-           "
-SRC_URI:append:toolchain-clang:powerpc64le = " \
-           file://0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch \
-           "
-SRC_URI[sha256sum] = "ddf1d2d56ddf35ecd98c5ea5ddcd690b245899f289559b4330c921255f5a247f"
-
-S = "${WORKDIR}/node-v${PV}"
-
-# v8 errors out if you have set CCACHE
-CCACHE = ""
-
-def map_nodejs_arch(a, d):
-    import re
-
-    if   re.match('i.86$', a): return 'ia32'
-    elif re.match('x86_64$', a): return 'x64'
-    elif re.match('aarch64$', a): return 'arm64'
-    elif re.match('(powerpc64|powerpc64le|ppc64le)$', a): return 'ppc64'
-    elif re.match('powerpc$', a): return 'ppc'
-    return a
-
-ARCHFLAGS:arm = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)} \
-                 ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-arm-fpu=neon', \
-                    bb.utils.contains('TUNE_FEATURES', 'vfpv3d16', '--with-arm-fpu=vfpv3-d16', \
-                    bb.utils.contains('TUNE_FEATURES', 'vfpv3', '--with-arm-fpu=vfpv3', \
-                    '--with-arm-fpu=vfp', d), d), d)}"
-GYP_DEFINES:append:mipsel = " mips_arch_variant='r1' "
-ARCHFLAGS ?= ""
-
-PACKAGECONFIG ??= "ares brotli icu zlib"
-
-PACKAGECONFIG[ares] = "--shared-cares,,c-ares"
-PACKAGECONFIG[brotli] = "--shared-brotli,,brotli"
-PACKAGECONFIG[icu] = "--with-intl=system-icu,--without-intl,icu"
-PACKAGECONFIG[libuv] = "--shared-libuv,,libuv"
-PACKAGECONFIG[nghttp2] = "--shared-nghttp2,,nghttp2"
-PACKAGECONFIG[shared] = "--shared"
-PACKAGECONFIG[zlib] = "--shared-zlib,,zlib"
-
-# We don't want to cross-compile during target compile,
-# and we need to use the right flags during host compile,
-# too.
-EXTRA_OEMAKE = "\
-    CC.host='${CC}' \
-    CFLAGS.host='${CPPFLAGS} ${CFLAGS}' \
-    CXX.host='${CXX}' \
-    CXXFLAGS.host='${CPPFLAGS} ${CXXFLAGS}' \
-    LDFLAGS.host='${LDFLAGS}' \
-    AR.host='${AR}' \
-    \
-    builddir_name=./ \
-"
-
-python do_unpack() {
-    import shutil
-
-    bb.build.exec_func('base_do_unpack', d)
-
-    shutil.rmtree(d.getVar('S') + '/deps/openssl', True)
-    if 'ares' in d.getVar('PACKAGECONFIG'):
-        shutil.rmtree(d.getVar('S') + '/deps/cares', True)
-    if 'brotli' in d.getVar('PACKAGECONFIG'):
-        shutil.rmtree(d.getVar('S') + '/deps/brotli', True)
-    if 'libuv' in d.getVar('PACKAGECONFIG'):
-        shutil.rmtree(d.getVar('S') + '/deps/uv', True)
-    if 'nghttp2' in d.getVar('PACKAGECONFIG'):
-        shutil.rmtree(d.getVar('S') + '/deps/nghttp2', True)
-    if 'zlib' in d.getVar('PACKAGECONFIG'):
-        shutil.rmtree(d.getVar('S') + '/deps/zlib', True)
-}
-
-# V8's JIT infrastructure requires binaries such as mksnapshot and
-# mkpeephole to be run in the host during the build. However, these
-# binaries must have the same bit-width as the target (e.g. a x86_64
-# host targeting ARMv6 needs to produce a 32-bit binary). Instead of
-# depending on a third Yocto toolchain, we just build those binaries
-# for the target and run them on the host with QEMU.
-python do_create_v8_qemu_wrapper () {
-    """Creates a small wrapper that invokes QEMU to run some target V8 binaries
-    on the host."""
-    qemu_libdirs = [d.expand('${STAGING_DIR_HOST}${libdir}'),
-                    d.expand('${STAGING_DIR_HOST}${base_libdir}')]
-    qemu_cmd = qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST', True),
-                                    qemu_libdirs)
-    wrapper_path = d.expand('${B}/v8-qemu-wrapper.sh')
-    with open(wrapper_path, 'w') as wrapper_file:
-        wrapper_file.write("""#!/bin/sh
-
-# This file has been generated automatically.
-# It invokes QEMU to run binaries built for the target in the host during the
-# build process.
-
-%s "$@"
-""" % qemu_cmd)
-    os.chmod(wrapper_path, 0o755)
-}
-
-do_create_v8_qemu_wrapper[dirs] = "${B}"
-addtask create_v8_qemu_wrapper after do_configure before do_compile
-
-LDFLAGS:append:x86 = " -latomic"
-
-# Node is way too cool to use proper autotools, so we install two wrappers to forcefully inject proper arch cflags to workaround gypi
-do_configure () {
-    export LD="${CXX}"
-    GYP_DEFINES="${GYP_DEFINES}" export GYP_DEFINES
-    # $TARGET_ARCH settings don't match --dest-cpu settings
-    python3 configure.py --prefix=${prefix} --cross-compiling --shared-openssl \
-               --without-dtrace \
-               --without-etw \
-               --dest-cpu="${@map_nodejs_arch(d.getVar('TARGET_ARCH'), d)}" \
-               --dest-os=linux \
-               --libdir=${D}${libdir} \
-               ${ARCHFLAGS} \
-               ${PACKAGECONFIG_CONFARGS}
-}
-
-do_compile () {
-    export LD="${CXX}"
-    install -Dm 0755 ${B}/v8-qemu-wrapper.sh ${B}/out/Release/v8-qemu-wrapper.sh
-    oe_runmake BUILDTYPE=Release
-}
-
-do_install () {
-    oe_runmake install DESTDIR=${D}
-
-    # wasn't updated since 2009 and is the only thing requiring python2 in runtime
-    # ERROR: nodejs-12.14.1-r0 do_package_qa: QA Issue: /usr/lib/node_modules/npm/node_modules/node-gyp/gyp/samples/samples contained in package nodejs-npm requires /usr/bin/python, but no providers found in RDEPENDS:nodejs-npm? [file-rdeps]
-    rm -f ${D}${exec_prefix}/lib/node_modules/npm/node_modules/node-gyp/gyp/samples/samples
-}
-
-do_install:append:class-native() {
-    # use node from PATH instead of absolute path to sysroot
-    # node-v0.10.25/tools/install.py is using:
-    # shebang = os.path.join(node_prefix, 'bin/node')
-    # update_shebang(link_path, shebang)
-    # and node_prefix can be very long path to bindir in native sysroot and
-    # when it exceeds 128 character shebang limit it's stripped to incorrect path
-    # and npm fails to execute like in this case with 133 characters show in log.do_install:
-    # updating shebang of /home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/work/x86_64-linux/nodejs-native/0.10.15-r0/image/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/npm to /home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/node
-    # /usr/bin/npm is symlink to /usr/lib/node_modules/npm/bin/npm-cli.js
-    # use sed on npm-cli.js because otherwise symlink is replaced with normal file and
-    # npm-cli.js continues to use old shebang
-    sed "1s^.*^#\!/usr/bin/env node^g" -i ${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js
-
-    # Install the native binaries to provide it within sysroot for the target compilation
-    install -d ${D}${bindir}
-    install -m 0755 ${S}/out/Release/torque ${D}${bindir}/torque
-    install -m 0755 ${S}/out/Release/bytecode_builtins_list_generator ${D}${bindir}/bytecode_builtins_list_generator
-    if ${@bb.utils.contains('PACKAGECONFIG','icu','true','false',d)}; then
-        install -m 0755 ${S}/out/Release/gen-regexp-special-case ${D}${bindir}/gen-regexp-special-case
-    fi
-    install -m 0755 ${S}/out/Release/mkcodecache ${D}${bindir}/mkcodecache
-    install -m 0755 ${S}/out/Release/node_mksnapshot ${D}${bindir}/node_mksnapshot
-}
-
-do_install:append:class-target() {
-    sed "1s^.*^#\!${bindir}/env node^g" -i ${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js
-}
-
-PACKAGES =+ "${PN}-npm"
-FILES:${PN}-npm = "${exec_prefix}/lib/node_modules ${bindir}/npm ${bindir}/npx"
-RDEPENDS:${PN}-npm = "bash python3-core python3-shell python3-datetime \
-    python3-misc python3-multiprocessing"
-
-PACKAGES =+ "${PN}-systemtap"
-FILES:${PN}-systemtap = "${datadir}/systemtap"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_16.11.1.bb b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_16.11.1.bb
new file mode 100644
index 0000000..beed833
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_16.11.1.bb
@@ -0,0 +1,202 @@
+DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
+HOMEPAGE = "http://nodejs.org"
+LICENSE = "MIT & BSD & Artistic-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=12f6b053282af96a218353ae7aff7cd8"
+
+DEPENDS = "openssl"
+DEPENDS:append:class-target = " qemu-native"
+DEPENDS:append:class-native = " c-ares-native"
+
+inherit pkgconfig python3native qemu
+
+COMPATIBLE_MACHINE:armv4 = "(!.*armv4).*"
+COMPATIBLE_MACHINE:armv5 = "(!.*armv5).*"
+COMPATIBLE_MACHINE:mips64 = "(!.*mips64).*"
+
+COMPATIBLE_HOST:riscv64 = "null"
+COMPATIBLE_HOST:riscv32 = "null"
+
+SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
+           file://0001-Disable-running-gyp-files-for-bundled-deps.patch \
+           file://0002-Install-both-binaries-and-use-libdir.patch \
+           file://0004-v8-don-t-override-ARM-CFLAGS.patch \
+           file://big-endian.patch \
+           file://mips-less-memory.patch \
+           file://system-c-ares.patch \
+           file://0001-liftoff-Correct-function-signatures.patch \
+           "
+SRC_URI:append:class-target = " \
+           file://0002-Using-native-binaries.patch \
+           "
+SRC_URI:append:toolchain-clang:x86 = " \
+           file://libatomic.patch \
+           "
+SRC_URI:append:toolchain-clang:powerpc64le = " \
+           file://0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch \
+           "
+SRC_URI[sha256sum] = "67587f4de25e30a9cc0b51a6033eca3bc82d7b4e0d79bb84a265e88f76ab6278"
+
+S = "${WORKDIR}/node-v${PV}"
+
+# v8 errors out if you have set CCACHE
+CCACHE = ""
+
+def map_nodejs_arch(a, d):
+    import re
+
+    if   re.match('i.86$', a): return 'ia32'
+    elif re.match('x86_64$', a): return 'x64'
+    elif re.match('aarch64$', a): return 'arm64'
+    elif re.match('(powerpc64|powerpc64le|ppc64le)$', a): return 'ppc64'
+    elif re.match('powerpc$', a): return 'ppc'
+    return a
+
+ARCHFLAGS:arm = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)} \
+                 ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-arm-fpu=neon', \
+                    bb.utils.contains('TUNE_FEATURES', 'vfpv3d16', '--with-arm-fpu=vfpv3-d16', \
+                    bb.utils.contains('TUNE_FEATURES', 'vfpv3', '--with-arm-fpu=vfpv3', \
+                    '--with-arm-fpu=vfp', d), d), d)}"
+ARCHFLAGS:append:mips = " --v8-lite-mode"
+ARCHFLAGS:append:mipsel = " --v8-lite-mode"
+ARCHFLAGS ?= ""
+
+PACKAGECONFIG ??= "ares brotli icu zlib"
+
+PACKAGECONFIG[ares] = "--shared-cares,,c-ares"
+PACKAGECONFIG[brotli] = "--shared-brotli,,brotli"
+PACKAGECONFIG[icu] = "--with-intl=system-icu,--without-intl,icu"
+PACKAGECONFIG[libuv] = "--shared-libuv,,libuv"
+PACKAGECONFIG[nghttp2] = "--shared-nghttp2,,nghttp2"
+PACKAGECONFIG[shared] = "--shared"
+PACKAGECONFIG[zlib] = "--shared-zlib,,zlib"
+
+# We don't want to cross-compile during target compile,
+# and we need to use the right flags during host compile,
+# too.
+EXTRA_OEMAKE = "\
+    CC.host='${CC}' \
+    CFLAGS.host='${CPPFLAGS} ${CFLAGS}' \
+    CXX.host='${CXX}' \
+    CXXFLAGS.host='${CPPFLAGS} ${CXXFLAGS}' \
+    LDFLAGS.host='${LDFLAGS}' \
+    AR.host='${AR}' \
+    \
+    builddir_name=./ \
+"
+
+python do_unpack() {
+    import shutil
+
+    bb.build.exec_func('base_do_unpack', d)
+    shutil.rmtree(d.getVar('S') + '/deps/openssl', True)
+    if 'ares' in d.getVar('PACKAGECONFIG'):
+        shutil.rmtree(d.getVar('S') + '/deps/cares', True)
+    if 'brotli' in d.getVar('PACKAGECONFIG'):
+        shutil.rmtree(d.getVar('S') + '/deps/brotli', True)
+    if 'libuv' in d.getVar('PACKAGECONFIG'):
+        shutil.rmtree(d.getVar('S') + '/deps/uv', True)
+    if 'nghttp2' in d.getVar('PACKAGECONFIG'):
+        shutil.rmtree(d.getVar('S') + '/deps/nghttp2', True)
+    if 'zlib' in d.getVar('PACKAGECONFIG'):
+        shutil.rmtree(d.getVar('S') + '/deps/zlib', True)
+}
+
+# V8's JIT infrastructure requires binaries such as mksnapshot and
+# mkpeephole to be run in the host during the build. However, these
+# binaries must have the same bit-width as the target (e.g. a x86_64
+# host targeting ARMv6 needs to produce a 32-bit binary). Instead of
+# depending on a third Yocto toolchain, we just build those binaries
+# for the target and run them on the host with QEMU.
+python do_create_v8_qemu_wrapper () {
+    """Creates a small wrapper that invokes QEMU to run some target V8 binaries
+    on the host."""
+    qemu_libdirs = [d.expand('${STAGING_DIR_HOST}${libdir}'),
+                    d.expand('${STAGING_DIR_HOST}${base_libdir}')]
+    qemu_cmd = qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST', True),
+                                    qemu_libdirs)
+    wrapper_path = d.expand('${B}/v8-qemu-wrapper.sh')
+    with open(wrapper_path, 'w') as wrapper_file:
+        wrapper_file.write("""#!/bin/sh
+
+# This file has been generated automatically.
+# It invokes QEMU to run binaries built for the target in the host during the
+# build process.
+
+%s "$@"
+""" % qemu_cmd)
+    os.chmod(wrapper_path, 0o755)
+}
+
+do_create_v8_qemu_wrapper[dirs] = "${B}"
+addtask create_v8_qemu_wrapper after do_configure before do_compile
+
+LDFLAGS:append:x86 = " -latomic"
+
+# Node is way too cool to use proper autotools, so we install two wrappers to forcefully inject proper arch cflags to workaround gypi
+do_configure () {
+    export LD="${CXX}"
+    GYP_DEFINES="${GYP_DEFINES}" export GYP_DEFINES
+    # $TARGET_ARCH settings don't match --dest-cpu settings
+    python3 configure.py --prefix=${prefix} --cross-compiling \
+               --shared-openssl \
+               --without-dtrace \
+               --without-etw \
+               --dest-cpu="${@map_nodejs_arch(d.getVar('TARGET_ARCH'), d)}" \
+               --dest-os=linux \
+               --libdir=${D}${libdir} \
+               ${ARCHFLAGS} \
+               ${PACKAGECONFIG_CONFARGS}
+}
+
+do_compile () {
+    export LD="${CXX}"
+    install -Dm 0755 ${B}/v8-qemu-wrapper.sh ${B}/out/Release/v8-qemu-wrapper.sh
+    oe_runmake BUILDTYPE=Release
+}
+
+do_install () {
+    oe_runmake install DESTDIR=${D}
+
+    # wasn't updated since 2009 and is the only thing requiring python2 in runtime
+    # ERROR: nodejs-12.14.1-r0 do_package_qa: QA Issue: /usr/lib/node_modules/npm/node_modules/node-gyp/gyp/samples/samples contained in package nodejs-npm requires /usr/bin/python, but no providers found in RDEPENDS:nodejs-npm? [file-rdeps]
+    rm -f ${D}${exec_prefix}/lib/node_modules/npm/node_modules/node-gyp/gyp/samples/samples
+}
+
+do_install:append:class-native() {
+    # use node from PATH instead of absolute path to sysroot
+    # node-v0.10.25/tools/install.py is using:
+    # shebang = os.path.join(node_prefix, 'bin/node')
+    # update_shebang(link_path, shebang)
+    # and node_prefix can be very long path to bindir in native sysroot and
+    # when it exceeds 128 character shebang limit it's stripped to incorrect path
+    # and npm fails to execute like in this case with 133 characters show in log.do_install:
+    # updating shebang of /home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/work/x86_64-linux/nodejs-native/0.10.15-r0/image/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/npm to /home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/node
+    # /usr/bin/npm is symlink to /usr/lib/node_modules/npm/bin/npm-cli.js
+    # use sed on npm-cli.js because otherwise symlink is replaced with normal file and
+    # npm-cli.js continues to use old shebang
+    sed "1s^.*^#\!/usr/bin/env node^g" -i ${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js
+
+    # Install the native binaries to provide it within sysroot for the target compilation
+    install -d ${D}${bindir}
+    install -m 0755 ${S}/out/Release/torque ${D}${bindir}/torque
+    install -m 0755 ${S}/out/Release/bytecode_builtins_list_generator ${D}${bindir}/bytecode_builtins_list_generator
+    if ${@bb.utils.contains('PACKAGECONFIG','icu','true','false',d)}; then
+        install -m 0755 ${S}/out/Release/gen-regexp-special-case ${D}${bindir}/gen-regexp-special-case
+    fi
+    install -m 0755 ${S}/out/Release/mkcodecache ${D}${bindir}/mkcodecache
+    install -m 0755 ${S}/out/Release/node_mksnapshot ${D}${bindir}/node_mksnapshot
+}
+
+do_install:append:class-target() {
+    sed "1s^.*^#\!${bindir}/env node^g" -i ${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js
+}
+
+PACKAGES =+ "${PN}-npm"
+FILES:${PN}-npm = "${exec_prefix}/lib/node_modules ${bindir}/npm ${bindir}/npx"
+RDEPENDS:${PN}-npm = "bash python3-core python3-shell python3-datetime \
+    python3-misc python3-multiprocessing"
+
+PACKAGES =+ "${PN}-systemtap"
+FILES:${PN}-systemtap = "${datadir}/systemtap"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb b/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb
index 107d5a8..42f5513 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb
@@ -5,7 +5,7 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-COMPATIBLE_HOST = "(x86_64|aarch64|arm)"
+COMPATIBLE_HOST = "(x86_64|aarch64|arm|riscv64)"
 
 SRCREV = "09724edb1783a98da2b7ae53c5aaa87493aabc9b"
 SRC_URI = "git://github.com/billfarrow/pcimem.git "
diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.21.bb b/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.21.bb
index 916010a..ab87ced 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.21.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.21.bb
@@ -77,7 +77,7 @@
                 ${COMMON_EXTRA_OECONF} \
 "
 
-PACKAGECONFIG ??= "mysql sqlite3 imap opcache openssl \
+PACKAGECONFIG ??= "mysql sqlite3 imap opcache \
                    ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 pam', d)} \
 "
 PACKAGECONFIG:class-native = ""
diff --git a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c/0001-avoid-race-condition.patch b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c/0001-avoid-race-condition.patch
deleted file mode 100644
index 4fc7703..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c/0001-avoid-race-condition.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 216e31260b618ec73862f9f5336597f391444dac Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Sun, 29 Sep 2019 17:20:42 +0800
-Subject: [PATCH] avoid race condition
-
-It's possible that the cxx-generate-packed-data.cc is compiled
-while the t/test-full.pb.h is being generated. This will result
-the following error.
-
-  DEBUG:	./t/test-full.pb.h:4:0: error: unterminated #ifndef
-  ./t/test-full.pb.h:4:0: error: unterminated #ifndef
-
-Add a dependency to avoid such problem.
-
-Upstream-Status: Pending
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/Makefile.am b/Makefile.am
-index b0cb065..1608ae0 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -156,6 +156,7 @@ noinst_PROGRAMS += \
- t_generated_code2_cxx_generate_packed_data_SOURCES = \
- 	t/generated-code2/cxx-generate-packed-data.cc \
- 	t/test-full.pb.cc
-+t/generated-code2/cxx-generate-packed-data.cc: t/test-full.pb.h
- $(t_generated_code2_cxx_generate_packed_data_OBJECTS): t/test-full.pb.h
- t_generated_code2_cxx_generate_packed_data_CXXFLAGS = \
- 	$(AM_CXXFLAGS) \
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.3.bb b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.3.bb
deleted file mode 100644
index 1a0bf53..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.3.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Protocol Buffers - structured data serialisation mechanism"
-DESCRIPTION = "This is protobuf-c, a C implementation of the Google Protocol Buffers data \
-serialization format. It includes libprotobuf-c, a pure C library that \
-implements protobuf encoding and decoding, and protoc-c, a code generator that \
-converts Protocol Buffer .proto files to C descriptor code, based on the \
-original protoc. protobuf-c formerly included an RPC implementation; that code \
-has been split out into the protobuf-c-rpc project."
-HOMEPAGE = "https://github.com/protobuf-c/protobuf-c"
-SECTION = "console/tools"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=cb901168715f4782a2b06c3ddaefa558"
-
-DEPENDS = "protobuf-native protobuf"
-
-SRCREV = "f20a3fa131c275a0e795d99a28f94b4dbbb5af26"
-
-SRC_URI = "git://github.com/protobuf-c/protobuf-c.git \
-           file://0001-avoid-race-condition.patch \
-          "
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-# After several fix attempts there is still a race between generating
-# t.test-full.pb.h and compiling cxx_generate_packed_data.c despite
-# BUILT_SOURCES and explicit dependencies.
-PARALLEL_MAKE = ""
-
-PACKAGE_BEFORE_PN = "${PN}-compiler"
-
-FILES:${PN}-compiler = "${bindir}"
-
-RDEPENDS:${PN}-compiler = "protobuf-compiler"
-RDEPENDS:${PN}-dev += "${PN}-compiler"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.4.0.bb b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.4.0.bb
new file mode 100644
index 0000000..cc037d3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.4.0.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Protocol Buffers - structured data serialisation mechanism"
+DESCRIPTION = "This is protobuf-c, a C implementation of the Google Protocol Buffers data \
+serialization format. It includes libprotobuf-c, a pure C library that \
+implements protobuf encoding and decoding, and protoc-c, a code generator that \
+converts Protocol Buffer .proto files to C descriptor code, based on the \
+original protoc. protobuf-c formerly included an RPC implementation; that code \
+has been split out into the protobuf-c-rpc project."
+HOMEPAGE = "https://github.com/protobuf-c/protobuf-c"
+SECTION = "console/tools"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cb901168715f4782a2b06c3ddaefa558"
+
+DEPENDS = "protobuf-native protobuf"
+
+SRC_URI = "git://github.com/protobuf-c/protobuf-c.git"
+SRCREV = "f224ab2eeb648a818eb20687d7150a285442c907"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+# After several fix attempts there is still a race between generating
+# t.test-full.pb.h and compiling cxx_generate_packed_data.c despite
+# BUILT_SOURCES and explicit dependencies.
+PARALLEL_MAKE = ""
+
+PACKAGE_BEFORE_PN = "${PN}-compiler"
+
+FILES:${PN}-compiler = "${bindir}"
+
+RDEPENDS:${PN}-compiler = "protobuf-compiler"
+RDEPENDS:${PN}-dev += "${PN}-compiler"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-Fix-linking-error-with-ld-gold.patch b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-Fix-linking-error-with-ld-gold.patch
new file mode 100644
index 0000000..488c1f6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-Fix-linking-error-with-ld-gold.patch
@@ -0,0 +1,69 @@
+From ddb9c5147883f8b27b4205450139e4a115d9961f Mon Sep 17 00:00:00 2001
+From: Kyungjik Min <dp.min@lge.com>
+Date: Mon, 28 Dec 2020 15:56:09 +0900
+Subject: [PATCH] Fix linking error with ld-gold
+
+:Release Notes:
+
+:Detailed Notes:
+https://github.com/protocolbuffers/protobuf/issues/6113
+There's a bug in the CMake build leading it to not use the version
+scripts, which hides the problem (because all symbols are now public)
+but doesn't solve it properly.
+
+:Testing Performed:
+
+:QA Notes:
+N/A
+
+:Issues Addressed:
+[PLAT-130467] Fix build error for libgoogleassistant with latest
+              protobuf-3.11.4
+---
+ src/libprotobuf-lite.map | 2 ++
+ src/libprotobuf.map      | 2 ++
+ src/libprotoc.map        | 2 ++
+ 3 files changed, 6 insertions(+)
+
+diff --git a/src/libprotobuf-lite.map b/src/libprotobuf-lite.map
+index 391554669..a1853ca6c 100644
+--- a/src/libprotobuf-lite.map
++++ b/src/libprotobuf-lite.map
+@@ -3,6 +3,8 @@
+     extern "C++" {
+       *google*;
+     };
++    scc_info_*;
++    descriptor_table_*;
+ 
+   local:
+     *;
+diff --git a/src/libprotobuf.map b/src/libprotobuf.map
+index 391554669..a1853ca6c 100644
+--- a/src/libprotobuf.map
++++ b/src/libprotobuf.map
+@@ -3,6 +3,8 @@
+     extern "C++" {
+       *google*;
+     };
++    scc_info_*;
++    descriptor_table_*;
+ 
+   local:
+     *;
+diff --git a/src/libprotoc.map b/src/libprotoc.map
+index 391554669..a1853ca6c 100644
+--- a/src/libprotoc.map
++++ b/src/libprotoc.map
+@@ -3,6 +3,8 @@
+     extern "C++" {
+       *google*;
+     };
++    scc_info_*;
++    descriptor_table_*;
+ 
+   local:
+     *;
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.18.0.bb b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.18.0.bb
index 9f50112..46ebef9 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.18.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.18.0.bb
@@ -17,6 +17,7 @@
            file://0001-protobuf-fix-configure-error.patch \
            file://0001-Makefile.am-include-descriptor.cc-when-building-libp.patch \
            file://0001-examples-Makefile-respect-CXX-LDFLAGS-variables-fix-.patch \
+           file://0001-Fix-linking-error-with-ld-gold.patch \
            "
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb b/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
index 384dd51..0dd6edb 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
@@ -15,6 +15,9 @@
 inherit cmake
 
 EXTRA_OECMAKE += "-DRAPIDJSON_BUILD_DOC=OFF -DRAPIDJSON_BUILD_TESTS=OFF -DRAPIDJSON_BUILD_EXAMPLES=OFF"
+# the install path for cmake modules etc. is hardcoded as ${prefix}/lib in
+# CMakeLists.txt, which breaks the package split with multilib
+EXTRA_OECMAKE += "-DLIB_INSTALL_DIR=${libdir}"
 
 # RapidJSON is a header-only C++ library, so the main package will be empty.
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.16.16.bb b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.16.16.bb
index 0acd099..79aaad9 100644
--- a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.16.16.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.16.16.bb
@@ -16,6 +16,7 @@
 of scientific and mathematical research."
 
 HOMEPAGE = "http://boinc.berkeley.edu/"
+PNBLACKLIST[boinc-client] ?= "Needs porting to openssl 3.x"
 LICENSE = "LGPLv2+ & GPLv3"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
                     file://COPYING.LESSER;md5=6a6a8e020838b23406c81b19c1d46df6"
diff --git a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc
index cffa7f5..a3d9bfd 100644
--- a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc
+++ b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc
@@ -6,7 +6,7 @@
 SECTION = "devel"
 LICENSE = "PD"
 
-SRC_URI = "ftp://ftp.invisible-island.net/byacc/byacc-${PV}.tgz \
+SRC_URI = "https://invisible-mirror.net/archives/byacc/byacc-${PV}.tgz \
            file://byacc-open.patch \
            file://0001-byacc-do-not-reorder-CC-and-CFLAGS.patch"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb
index 38efe63..60c5ab3 100644
--- a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb
@@ -10,6 +10,8 @@
 
 HOMEPAGE = "http://cfengine.com"
 
+PNBLACKLIST[cfengine] ?= "Needs porting to openssl 3.x"
+
 LICENSE = "GPLv3"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=233aa25e53983237cf0bd4c238af255f"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-CMake-configuration-for-hiredis.patch b/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-CMake-configuration-for-hiredis.patch
deleted file mode 100644
index 139d13f..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-CMake-configuration-for-hiredis.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From 2dc0c7e4a3fa7ecc92ee5e22f1d8ee48c2b333a8 Mon Sep 17 00:00:00 2001
-From: Thomas Lee <debian@tomlee.co>
-Date: Sun, 4 Nov 2018 22:59:09 +0000
-Subject: [PATCH] CMake configuration for hiredis
-
-Last-Update: 2018-09-26
-
-Upstream-Status: Backport [Ubuntu 20.04]
----
- HiredisConfig.cmake.in        |  5 +++++
- HiredisConfigVersion.cmake.in | 22 ++++++++++++++++++++++
- Makefile                      | 17 ++++++++++++++++-
- 3 files changed, 43 insertions(+), 1 deletion(-)
- create mode 100644 HiredisConfig.cmake.in
- create mode 100644 HiredisConfigVersion.cmake.in
-
-diff --git a/HiredisConfig.cmake.in b/HiredisConfig.cmake.in
-new file mode 100644
-index 0000000..2cce290
---- /dev/null
-+++ b/HiredisConfig.cmake.in
-@@ -0,0 +1,5 @@
-+find_path(HIREDIS_INCLUDE_DIRS hiredis/hiredis.h HINTS "/usr/include")
-+find_library(HIREDIS_LIB_HIREDIS NAMES hiredis HINTS "/usr/lib")
-+
-+set(HIREDIS_LIBRARIES ${HIREDIS_LIB_HIREDIS})
-+
-diff --git a/HiredisConfigVersion.cmake.in b/HiredisConfigVersion.cmake.in
-new file mode 100644
-index 0000000..584144a
---- /dev/null
-+++ b/HiredisConfigVersion.cmake.in
-@@ -0,0 +1,22 @@
-+set(PACKAGE_VERSION "@HIREDIS_VERSION@")
-+
-+string(REPLACE "." ";" HIREDIS_VERSION_COMPONENTS ${PACKAGE_VERSION})
-+string(REPLACE "." ";" REQUESTED_VERSION_COMPONENTS ${PACKAGE_FIND_VERSION})
-+
-+list(GET HIREDIS_VERSION_COMPONENTS 0 HIREDIS_VERSION_MAJOR)
-+list(GET HIREDIS_VERSION_COMPONENTS 1 HIREDIS_VERSION_MINOR)
-+
-+list(GET REQUESTED_VERSION_COMPONENTS 0 REQUESTED_VERSION_MAJOR)
-+list(GET REQUESTED_VERSION_COMPONENTS 1 REQUESTED_VERSION_MINOR)
-+
-+if(("${HIREDIS_VERSION_MAJOR}" EQUAL "${REQUESTED_VERSION_MAJOR}") AND
-+    (("${HIREDIS_VERSION_MINOR}" EQUAL "${REQUESTED_VERSION_MINOR}") OR
-+     ("${HIREDIS_VERSION_MINOR}" GREATER "${REQUESTED_VERSION_MINOR}")))
-+    set(PACKAGE_VERSION_COMPATIBLE TRUE)
-+    if("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
-+        set(PACKAGE_VERSION_EXACT TRUE)
-+    endif()
-+else()
-+    set(PACKAGE_VERSION_COMPATIBLE FALSE)
-+endif()
-+
-diff --git a/Makefile b/Makefile
-index 339727f..43704cd 100644
---- a/Makefile
-+++ b/Makefile
-@@ -8,6 +8,8 @@ EXAMPLES=hiredis-example hiredis-example-libevent hiredis-example-libev hiredis-
- TESTS=hiredis-test
- LIBNAME=libhiredis
- PKGCONFNAME=hiredis.pc
-+CMAKECONFNAME=HiredisConfig.cmake
-+CMAKEVERSNAME=HiredisConfigVersion.cmake
- 
- HIREDIS_MAJOR=$(shell grep HIREDIS_MAJOR hiredis.h | awk '{print $$3}')
- HIREDIS_MINOR=$(shell grep HIREDIS_MINOR hiredis.h | awk '{print $$3}')
-@@ -19,9 +21,11 @@ PREFIX?=/usr/local
- INCLUDE_PATH?=include/hiredis
- LIBRARY_PATH?=lib
- PKGCONF_PATH?=pkgconfig
-+CMAKE_PATH?=cmake/Hiredis
- INSTALL_INCLUDE_PATH= $(DESTDIR)$(PREFIX)/$(INCLUDE_PATH)
- INSTALL_LIBRARY_PATH= $(DESTDIR)$(PREFIX)/$(LIBRARY_PATH)
- INSTALL_PKGCONF_PATH= $(INSTALL_LIBRARY_PATH)/$(PKGCONF_PATH)
-+INSTALL_CMAKE_PATH= $(INSTALL_LIBRARY_PATH)/$(CMAKE_PATH)
- 
- # redis-server configuration used for testing
- REDIS_PORT=56379
-@@ -150,6 +154,7 @@ check: hiredis-test
- 
- clean:
- 	rm -rf $(DYLIBNAME) $(STLIBNAME) $(TESTS) $(PKGCONFNAME) examples/hiredis-example* *.o *.gcda *.gcno *.gcov
-+	rm -f $(CMAKECONFNAME) $(CMAKEVERSNAME)
- 
- dep:
- 	$(CC) -MM *.c
-@@ -169,7 +174,14 @@ $(PKGCONFNAME): hiredis.h
- 	@echo Libs: -L\$${libdir} -lhiredis >> $@
- 	@echo Cflags: -I\$${includedir} -D_FILE_OFFSET_BITS=64 >> $@
- 
--install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME)
-+$(CMAKECONFNAME): $(CMAKECONFNAME).in
-+	cp $(CMAKECONFNAME).in $(CMAKECONFNAME)
-+
-+$(CMAKEVERSNAME): $(CMAKEVERSNAME).in
-+	sed -e "s,@HIREDIS_VERSION@,$(HIREDIS_MAJOR).$(HIREDIS_MINOR).$(HIREDIS_PATCH),g" \
-+		$(CMAKEVERSNAME).in >$(CMAKEVERSNAME)
-+
-+install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME) $(CMAKECONFNAME) $(CMAKEVERSNAME)
- 	mkdir -p $(INSTALL_INCLUDE_PATH) $(INSTALL_INCLUDE_PATH)/adapters $(INSTALL_LIBRARY_PATH)
- 	$(INSTALL) hiredis.h async.h read.h sds.h $(INSTALL_INCLUDE_PATH)
- 	$(INSTALL) adapters/*.h $(INSTALL_INCLUDE_PATH)/adapters
-@@ -178,6 +190,9 @@ install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME)
- 	$(INSTALL) $(STLIBNAME) $(INSTALL_LIBRARY_PATH)
- 	mkdir -p $(INSTALL_PKGCONF_PATH)
- 	$(INSTALL) $(PKGCONFNAME) $(INSTALL_PKGCONF_PATH)
-+	mkdir -p $(INSTALL_CMAKE_PATH)
-+	$(INSTALL) $(CMAKECONFNAME) $(INSTALL_CMAKE_PATH)
-+	$(INSTALL) $(CMAKEVERSNAME) $(INSTALL_CMAKE_PATH)
- 
- 32bit:
- 	@echo ""
--- 
-2.27.0
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch b/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch
deleted file mode 100644
index 1af5d26..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From d13b918a3ff8b0ebfd1e7b18b198b4b45841d720 Mon Sep 17 00:00:00 2001
-From: Andrea Galbusera <gizero@gmail.com>
-Date: Fri, 31 Jul 2015 16:42:08 +0200
-Subject: [PATCH] Makefile: remove hardcoding of CC
-
-* upgrade previous patch to avoid wiping CFLAGS. This fixes build on arm
-platforms which previously caused and issue due to -fPIC being lost
-
-Signed-off-by: Andrea Galbusera <gizero@gmail.com>
----
- Makefile | 5 -----
- 1 file changed, 5 deletions(-)
-
---- a/Makefile
-+++ b/Makefile
-@@ -35,12 +35,6 @@ define REDIS_TEST_CONFIG
- endef
- export REDIS_TEST_CONFIG
- 
--# Fallback to gcc when $CC is not in $PATH.
--CC:=$(shell sh -c 'type $${CC%% *} >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
--CXX:=$(shell sh -c 'type $${CXX%% *} >/dev/null 2>/dev/null && echo $(CXX) || echo g++')
--OPTIMIZATION?=-O3
--WARNINGS=-Wall -W -Wstrict-prototypes -Wwrite-strings
--DEBUG_FLAGS?= -g -ggdb
- REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CFLAGS) $(WARNINGS) $(DEBUG_FLAGS)
- REAL_LDFLAGS=$(LDFLAGS)
- 
diff --git a/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb b/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb
deleted file mode 100644
index ed81859..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-DESCRIPTION = "Minimalistic C client library for Redis"
-HOMEPAGE = "http://github.com/redis/hiredis"
-LICENSE = "BSD-3-Clause"
-SECTION = "libs"
-DEPENDS = "redis"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d84d659a35c666d23233e54503aaea51"
-SRCREV = "685030652cd98c5414ce554ff5b356dfe8437870"
-SRC_URI = "git://github.com/redis/hiredis;protocol=git \
-           file://0001-Makefile-remove-hardcoding-of-CC.patch \
-           file://0001-CMake-configuration-for-hiredis.patch"
-
-S = "${WORKDIR}/git"
-
-inherit autotools-brokensep pkgconfig
-
-EXTRA_OEMAKE = "PREFIX=${prefix} LIBRARY_PATH=${baselib}"
-
-# By default INSTALL variable in Makefile is equal to 'cp -a', which preserves
-# ownership and causes host-user-contamination QA issue.
-# And PREFIX defaults to /usr/local.
-do_install:prepend() {
-  export INSTALL='cp -r'
-}
diff --git a/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_1.0.2.bb b/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_1.0.2.bb
new file mode 100644
index 0000000..93bda33
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_1.0.2.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Minimalistic C client library for Redis"
+HOMEPAGE = "http://github.com/redis/hiredis"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d84d659a35c666d23233e54503aaea51"
+DEPENDS = "redis"
+
+SRC_URI = "git://github.com/redis/hiredis;protocol=git"
+SRCREV = "b731283245f3183af527237166261ad0768ba7d4"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.7.0.bb b/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.7.0.bb
deleted file mode 100644
index a16dbd4..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.7.0.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-DESCRIPTION = "Ice Window Manager (IceWM)"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4a26952467ef79a7efca4a9cf52d417b"
-
-SRC_URI = "https://github.com/ice-wm/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.lz \
-           file://0001-configure.ac-skip-running-test-program-when-cross-co.patch \
-           "
-SRC_URI[sha256sum] = "c56b1d0f5d8efa2af3e38003770eab9165289aa87bd8f1627819c7f93f9433a3"
-
-UPSTREAM_CHECK_URI = "https://github.com/ice-wm/${BPN}/releases"
-
-inherit autotools pkgconfig gettext perlnative features_check qemu update-alternatives
-REQUIRED_DISTRO_FEATURES = "x11"
-
-EXTRA_OECONF += "--with-libdir=${datadir}/icewm \
-                --with-cfgdir=${sysconfdir}/icewm \
-                --with-docdir=${docdir}/icewm \
-                --enable-fribidi \
-                --enable-xinerama \
-                --enable-shape"
-
-DEPENDS = "asciidoc-native fontconfig fribidi gdk-pixbuf imlib2	libxft libxpm libxrandr \
-    libxinerama libice libsm libx11 libxext libxrender libxcomposite libxdamage \
-    libxfixes"
-DEPENDS:append = " qemu-native"
-RDEPENDS:${PN} = "perl fribidi"
-
-do_compile:prepend:class-target() {
-
-    cd ${B}
-    oe_runmake -C src genpref
-
-    qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}',['${B}/src/.libs','${STAGING_DIR_TARGET}/${libdir}','${STAGING_DIR_TARGET}/${base_libdir}'])}"
-    cat >qemuwrapper <<EOF
-#!/bin/sh
-${qemu_binary} src/genpref "\$@"
-EOF
-    chmod +x qemuwrapper
-    ./qemuwrapper > src/preferences
-}
-
-ALTERNATIVE:${PN} = "x-session-manager"
-ALTERNATIVE_TARGET[x-session-manager] = "${bindir}/icewm-session"
-ALTERNATIVE_PRIORITY_${PN} = "100"
-
-FILES:${PN} += "${datadir}/xsessions"
diff --git a/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.8.0.bb b/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.8.0.bb
new file mode 100644
index 0000000..259187b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.8.0.bb
@@ -0,0 +1,46 @@
+DESCRIPTION = "Ice Window Manager (IceWM)"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4a26952467ef79a7efca4a9cf52d417b"
+
+SRC_URI = "https://github.com/ice-wm/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.lz \
+           file://0001-configure.ac-skip-running-test-program-when-cross-co.patch \
+           "
+SRC_URI[sha256sum] = "12b7cce67b95b09f34873f46948e7f1cef9edd88682139e054b79ba165c53e49"
+
+UPSTREAM_CHECK_URI = "https://github.com/ice-wm/${BPN}/releases"
+
+inherit autotools pkgconfig gettext perlnative features_check qemu update-alternatives
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OECONF += "--with-libdir=${datadir}/icewm \
+                --with-cfgdir=${sysconfdir}/icewm \
+                --with-docdir=${docdir}/icewm \
+                --enable-fribidi \
+                --enable-xinerama \
+                --enable-shape"
+
+DEPENDS = "asciidoc-native fontconfig fribidi gdk-pixbuf imlib2	libxft libxpm libxrandr \
+    libxinerama libice libsm libx11 libxext libxrender libxcomposite libxdamage \
+    libxfixes"
+DEPENDS:append = " qemu-native"
+RDEPENDS:${PN} = "perl fribidi"
+
+do_compile:prepend:class-target() {
+
+    cd ${B}
+    oe_runmake -C src genpref
+
+    qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}',['${B}/src/.libs','${STAGING_DIR_TARGET}/${libdir}','${STAGING_DIR_TARGET}/${base_libdir}'])}"
+    cat >qemuwrapper <<EOF
+#!/bin/sh
+${qemu_binary} src/genpref "\$@"
+EOF
+    chmod +x qemuwrapper
+    ./qemuwrapper > src/preferences
+}
+
+ALTERNATIVE:${PN} = "x-session-manager"
+ALTERNATIVE_TARGET[x-session-manager] = "${bindir}/icewm-session"
+ALTERNATIVE_PRIORITY_${PN} = "100"
+
+FILES:${PN} += "${datadir}/xsessions"
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.3.bb b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.3.bb
deleted file mode 100644
index b0c9849..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.3.bb
+++ /dev/null
@@ -1,189 +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 = "LGPLv2.1"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-DEPENDS = " \
-    glib-2.0 \
-    e2fsprogs \
-    libcap \
-    zlib \
-    xz \
-    bison-native \
-"
-
-# The Yocto mirror has an old export of ostree:
-# http://downloads.yoctoproject.org/mirror/sources/git2_github.com.ostreedev.ostree.tar.gz
-PREMIRRORS = ""
-
-SRC_URI = " \
-    gitsm://github.com/ostreedev/ostree;branch=main \
-    file://run-ptest \
-"
-SRCREV = "38c14b374567f736533f7f515595208fe359819f"
-
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+)"
-
-S = "${WORKDIR}/git"
-
-inherit autotools bash-completion gobject-introspection gtk-doc manpages pkgconfig ptest-gnome systemd
-
-# Package configuration - match ostree defaults, but without rofiles-fuse
-# otherwise we introduce a dependendency on meta-filesystems
-PACKAGECONFIG ??= " \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd libmount', '', d)} \
-    glib \
-    gpgme \
-    soup \
-"
-
-# We include soup 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 \
-    soup \
-"
-
-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[glib] = "--with-crypto=glib"
-PACKAGECONFIG[gjs] = "ac_cv_path_GJS=${bindir}/gjs"
-PACKAGECONFIG[gnutls] = "--with-crypto=gnutls, , gnutls"
-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"
-PACKAGECONFIG[rofiles-fuse] = "--enable-rofiles-fuse, --disable-rofiles-fuse, fuse"
-PACKAGECONFIG[selinux] = "--with-selinux, --without-selinux, libselinux"
-PACKAGECONFIG[smack] = "--with-smack, --without-smack, smack"
-PACKAGECONFIG[soup] = "--with-soup, --without-soup --disable-glibtest, libsoup-2.4"
-PACKAGECONFIG[static] = ""
-PACKAGECONFIG[systemd] = "--with-libsystemd --with-systemdsystemunitdir=${systemd_unitdir}/system, --without-libsystemd, systemd"
-PACKAGECONFIG[trivial-httpd-cmdline] = "--enable-trivial-httpd-cmdline, --disable-trivial-httpd-cmdline"
-
-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 \
-"
-
-# 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"
-}
-
-PACKAGE_BEFORE_PN = " \
-    ${PN}-dracut \
-    ${PN}-grub \
-    ${PN}-mkinitcpio \
-    ${PN}-switchroot \
-    ${PN}-trivial-httpd \
-"
-
-FILES:${PN} += " \
-    ${nonarch_libdir}/${BPN} \
-    ${nonarch_libdir}/tmpfiles.d \
-    ${systemd_unitdir}/system \
-    ${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_unitdir}/system/ostree-prepare-root.service \
-"
-FILES:${PN}-trivial-httpd = " \
-    ${libexecdir}/libostree/ostree-trivial-httpd \
-"
-
-RDEPENDS:${PN} = " \
-    ${@bb.utils.contains('PACKAGECONFIG', 'trivial-httpd-cmdline', '${PN}-trivial-httpd', '', d)} \
-"
-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
-#   static ostree-prepare-root (PACKAGECONFIG:append:pn-ostree = " static")
-#   meta-python in your layers
-#   overlayfs in your kernel (KERNEL_EXTRA_FEATURES += "features/overlayfs/overlayfs.scc")
-#   busybox built statically
-#   /var/tmp as a real filesystem (not a tmpfs)
-#   Sufficient disk space (IMAGE_ROOTFS_SIZE = "524288") and RAM (QB_MEM = "-m 1024")
-#
-RDEPENDS:${PN}-ptest += " \
-    attr \
-    bash \
-    coreutils \
-    cpio \
-    diffutils \
-    findutils \
-    grep \
-    python3-core \
-    python3-multiprocessing \
-    strace \
-    tar \
-    util-linux \
-    xz \
-    ${PN}-trivial-httpd \
-    python3-pyyaml \
-    ${@bb.utils.contains('PACKAGECONFIG', 'gjs', 'gjs', '', d)} \
-"
-RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-localedata-en-us"
-
-RRECOMMENDS:${PN} += "kernel-module-overlay"
-
-SYSTEMD_SERVICE:${PN} = "ostree-remount.service ostree-finalize-staged.path"
-SYSTEMD_SERVICE:${PN}-switchroot = "ostree-prepare-root.service"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.5.bb b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.5.bb
new file mode 100644
index 0000000..08cfb13
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.5.bb
@@ -0,0 +1,189 @@
+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 = "LGPLv2.1"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+DEPENDS = " \
+    glib-2.0 \
+    e2fsprogs \
+    libcap \
+    zlib \
+    xz \
+    bison-native \
+"
+
+# The Yocto mirror has an old export of ostree:
+# http://downloads.yoctoproject.org/mirror/sources/git2_github.com.ostreedev.ostree.tar.gz
+PREMIRRORS = ""
+
+SRC_URI = " \
+    gitsm://github.com/ostreedev/ostree;branch=main \
+    file://run-ptest \
+"
+SRCREV = "63bf5e606b24c7343bfe622bf6af2110ee6beabc"
+
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+)"
+
+S = "${WORKDIR}/git"
+
+inherit autotools bash-completion gobject-introspection gtk-doc manpages pkgconfig ptest-gnome systemd
+
+# Package configuration - match ostree defaults, but without rofiles-fuse
+# otherwise we introduce a dependendency on meta-filesystems
+PACKAGECONFIG ??= " \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd libmount', '', d)} \
+    glib \
+    gpgme \
+    soup \
+"
+
+# We include soup 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 \
+    soup \
+"
+
+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[glib] = "--with-crypto=glib"
+PACKAGECONFIG[gjs] = "ac_cv_path_GJS=${bindir}/gjs"
+PACKAGECONFIG[gnutls] = "--with-crypto=gnutls, , gnutls"
+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"
+PACKAGECONFIG[rofiles-fuse] = "--enable-rofiles-fuse, --disable-rofiles-fuse, fuse"
+PACKAGECONFIG[selinux] = "--with-selinux, --without-selinux, libselinux"
+PACKAGECONFIG[smack] = "--with-smack, --without-smack, smack"
+PACKAGECONFIG[soup] = "--with-soup, --without-soup --disable-glibtest, libsoup-2.4"
+PACKAGECONFIG[static] = ""
+PACKAGECONFIG[systemd] = "--with-libsystemd --with-systemdsystemunitdir=${systemd_unitdir}/system, --without-libsystemd, systemd"
+PACKAGECONFIG[trivial-httpd-cmdline] = "--enable-trivial-httpd-cmdline, --disable-trivial-httpd-cmdline"
+
+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 \
+"
+
+# 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"
+}
+
+PACKAGE_BEFORE_PN = " \
+    ${PN}-dracut \
+    ${PN}-grub \
+    ${PN}-mkinitcpio \
+    ${PN}-switchroot \
+    ${PN}-trivial-httpd \
+"
+
+FILES:${PN} += " \
+    ${nonarch_libdir}/${BPN} \
+    ${nonarch_libdir}/tmpfiles.d \
+    ${systemd_unitdir}/system \
+    ${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_unitdir}/system/ostree-prepare-root.service \
+"
+FILES:${PN}-trivial-httpd = " \
+    ${libexecdir}/libostree/ostree-trivial-httpd \
+"
+
+RDEPENDS:${PN} = " \
+    ${@bb.utils.contains('PACKAGECONFIG', 'trivial-httpd-cmdline', '${PN}-trivial-httpd', '', d)} \
+"
+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
+#   static ostree-prepare-root (PACKAGECONFIG:append:pn-ostree = " static")
+#   meta-python in your layers
+#   overlayfs in your kernel (KERNEL_EXTRA_FEATURES += "features/overlayfs/overlayfs.scc")
+#   busybox built statically
+#   /var/tmp as a real filesystem (not a tmpfs)
+#   Sufficient disk space (IMAGE_ROOTFS_SIZE = "524288") and RAM (QB_MEM = "-m 1024")
+#
+RDEPENDS:${PN}-ptest += " \
+    attr \
+    bash \
+    coreutils \
+    cpio \
+    diffutils \
+    findutils \
+    grep \
+    python3-core \
+    python3-multiprocessing \
+    strace \
+    tar \
+    util-linux \
+    xz \
+    ${PN}-trivial-httpd \
+    python3-pyyaml \
+    ${@bb.utils.contains('PACKAGECONFIG', 'gjs', 'gjs', '', d)} \
+"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-localedata-en-us"
+
+RRECOMMENDS:${PN} += "kernel-module-overlay"
+
+SYSTEMD_SERVICE:${PN} = "ostree-remount.service ostree-finalize-staged.path"
+SYSTEMD_SERVICE:${PN}-switchroot = "ostree-prepare-root.service"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-extended/pegtl/pegtl_2.8.3.bb b/meta-openembedded/meta-oe/recipes-extended/pegtl/pegtl_2.8.3.bb
deleted file mode 100644
index 0123369..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/pegtl/pegtl_2.8.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION="header-only library for creating parsers according to Parsing Expression Grammar"
-HOMEPAGE="https://github.com/taocpp/PEGTL"
-LICENSE="MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=6a5195f720a8d436a4148e0cb8660400"
-
-SRCREV = "47e878ad4fd72c91253c9d47b6f17e001ca2dfcf"
-SRC_URI = "git://github.com/taocpp/PEGTL.git;protocol=https;branch=2.x \
-          "
-
-inherit cmake
-
-S = "${WORKDIR}/git"
-
-CXXFLAGS += " -Wno-error=type-limits"
diff --git a/meta-openembedded/meta-oe/recipes-extended/pegtl/pegtl_3.2.1.bb b/meta-openembedded/meta-oe/recipes-extended/pegtl/pegtl_3.2.1.bb
new file mode 100644
index 0000000..f0ae229
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pegtl/pegtl_3.2.1.bb
@@ -0,0 +1,13 @@
+DESCRIPTION="header-only library for creating parsers according to Parsing Expression Grammar"
+HOMEPAGE="https://github.com/taocpp/PEGTL"
+LICENSE="MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5b6701671289d12b7ffa69138832c006"
+
+SRC_URI = "git://github.com/taocpp/PEGTL.git;protocol=https;branch=main"
+SRCREV = "6d03c8decc22b4ddd51115e2170e0e82413c7104"
+
+inherit cmake
+
+S = "${WORKDIR}/git"
+
+CXXFLAGS += " -Wno-error=type-limits"
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.11.1.bb b/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.11.1.bb
new file mode 100644
index 0000000..e456603
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.11.1.bb
@@ -0,0 +1,48 @@
+SUMMARY = "Persistent Memory Development Kit"
+DESCRIPTION = "Persistent Memory Development Kit"
+HOMEPAGE = "http://pmem.io"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b44ee63f162f9cdb18fff1224877aafd"
+DEPENDS = "ndctl"
+
+# Required to have the fts.h header for musl
+DEPENDS:append:libc-musl = " fts"
+
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://github.com/pmem/pmdk.git;branch=stable-1.11"
+SRCREV = "5b21904a257eff47f2e87fcbf2de46111f03ddd8"
+
+inherit autotools-brokensep pkgconfig
+
+# Fix jemalloc error:
+# | configure: error: cannot run C compiled programs.
+# | If you meant to cross compile, use `--host'.
+#
+# Also fix #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]
+EXTRA_OEMAKE = "BUILD_EXAMPLES='n' DOC='n' HOST_SYS='${HOST_SYS}' EXTRA_CFLAGS='${SELECTED_OPTIMIZATION}' LIB_PREFIX=${baselib}"
+
+# Fix the missing fts libs when using musl
+EXTRA_OEMAKE:append:libc-musl = " EXTRA_LIBS='-lfts'"
+
+do_configure:prepend() {
+	touch .skip-doc
+}
+
+do_install() {
+	oe_runmake prefix=${prefix} DESTDIR=${D} install
+
+	# Remove uneeded files
+	rm -rf ${D}/usr/${baselib}/pmdk_debug
+}
+
+# Include these by default otherwise the SDK is not very useful
+FILES:${PN} += "${bindir}/pmempool ${bindir}/daxio"
+FILES:${PN} += "${libdir}/*so*"
+FILES:${PN} += "${libdir}/pkgconfig/*.pc"
+FILES:${PN} += "${includedir}/libpmemobj++/* ${includedir}/libpmemobj/* /usr/*/include/"
+FILES:${PN} += "/usr/etc"
+FILES:${PN} += "/usr/share"
+
+COMPATIBLE_HOST='(x86_64).*'
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.9.bb b/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.9.bb
deleted file mode 100644
index 4325c15..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.9.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "Persistent Memory Development Kit"
-DESCRIPTION = "Persistent Memory Development Kit"
-HOMEPAGE = "http://pmem.io"
-SECTION = "libs"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b44ee63f162f9cdb18fff1224877aafd"
-DEPENDS = "ndctl"
-
-# Required to have the fts.h header for musl
-DEPENDS:append:libc-musl = " fts"
-
-S = "${WORKDIR}/git"
-
-SRC_URI = "git://github.com/pmem/pmdk.git"
-
-SRCREV = "1926ffb8f3f5f0617b3b3ed32029d437c272f187"
-
-inherit autotools-brokensep pkgconfig
-
-# Fix jemalloc error:
-# | configure: error: cannot run C compiled programs.
-# | If you meant to cross compile, use `--host'.
-#
-# Also fix #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]
-EXTRA_OEMAKE = "BUILD_EXAMPLES='n' DOC='n' HOST_SYS='${HOST_SYS}' EXTRA_CFLAGS='${SELECTED_OPTIMIZATION}' LIB_PREFIX=${baselib}"
-
-# Fix the missing fts libs when using musl
-EXTRA_OEMAKE:append:libc-musl = " EXTRA_LIBS='-lfts'"
-
-do_configure:prepend() {
-	touch .skip-doc
-}
-
-do_install() {
-	oe_runmake prefix=${prefix} DESTDIR=${D} install
-
-	# Remove uneeded files
-	rm -rf ${D}/usr/${baselib}/pmdk_debug
-}
-
-# Include these by default otherwise the SDK is not very useful
-FILES:${PN} += "${bindir}/pmempool ${bindir}/daxio"
-FILES:${PN} += "${libdir}/*so*"
-FILES:${PN} += "${libdir}/pkgconfig/*.pc"
-FILES:${PN} += "${includedir}/libpmemobj++/* ${includedir}/libpmemobj/* /usr/*/include/"
-FILES:${PN} += "/usr/etc"
-FILES:${PN} += "/usr/share"
-
-COMPATIBLE_HOST='(x86_64).*'
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0002-jsauthority-port-to-mozjs-91.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0002-jsauthority-port-to-mozjs-91.patch
new file mode 100644
index 0000000..5b3660d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0002-jsauthority-port-to-mozjs-91.patch
@@ -0,0 +1,38 @@
+From 4ce27b66bb07b72cb96d3d43a75108a5a6e7e156 Mon Sep 17 00:00:00 2001
+From: Xi Ruoyao <xry111@mengyan1223.wang>
+Date: Tue, 10 Aug 2021 19:09:42 +0800
+Subject: [PATCH] jsauthority: port to mozjs-91
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/polkit/polkit/-/merge_requests/92]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ configure.ac | 2 +-
+ meson.build  | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d807086..5a7fc11 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -80,7 +80,7 @@ PKG_CHECK_MODULES(GLIB, [gmodule-2.0 gio-unix-2.0 >= 2.30.0])
+ AC_SUBST(GLIB_CFLAGS)
+ AC_SUBST(GLIB_LIBS)
+ 
+-PKG_CHECK_MODULES(LIBJS, [mozjs-78])
++PKG_CHECK_MODULES(LIBJS, [mozjs-91])
+ 
+ AC_SUBST(LIBJS_CFLAGS)
+ AC_SUBST(LIBJS_CXXFLAGS)
+diff --git a/meson.build b/meson.build
+index b3702be..733bbff 100644
+--- a/meson.build
++++ b/meson.build
+@@ -126,7 +126,7 @@ expat_dep = dependency('expat')
+ assert(cc.has_header('expat.h', dependencies: expat_dep), 'Can\'t find expat.h. Please install expat.')
+ assert(cc.has_function('XML_ParserCreate', dependencies: expat_dep), 'Can\'t find expat library. Please install expat.')
+ 
+-mozjs_dep = dependency('mozjs-78')
++mozjs_dep = dependency('mozjs-91')
+ 
+ dbus_dep = dependency('dbus-1')
+ dbus_confdir = dbus_dep.get_pkgconfig_variable('datadir', define_variable: ['datadir', pk_prefix / pk_datadir])   #changed from sysconfdir with respect to commit#8eada3836465838
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-jsauthority-ensure-to-call-JS_Init-and-JS_ShutDown-e.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-jsauthority-ensure-to-call-JS_Init-and-JS_ShutDown-e.patch
new file mode 100644
index 0000000..9e9755e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-jsauthority-ensure-to-call-JS_Init-and-JS_ShutDown-e.patch
@@ -0,0 +1,63 @@
+From 7799441b9aa55324160deefbc65f9d918b8c94c1 Mon Sep 17 00:00:00 2001
+From: Xi Ruoyao <xry111@mengyan1223.wang>
+Date: Tue, 10 Aug 2021 18:52:56 +0800
+Subject: [PATCH] jsauthority: ensure to call JS_Init() and JS_ShutDown()
+ exactly once
+
+Before this commit, we were calling JS_Init() in
+polkit_backend_js_authority_class_init and never called JS_ShutDown.
+This is actually a misusage of SpiderMonkey API.  Quote from a comment
+in js/Initialization.h (both mozjs-78 and mozjs-91):
+
+    It is currently not possible to initialize SpiderMonkey multiple
+    times (that is, calling JS_Init/JSAPI methods/JS_ShutDown in that
+    order, then doing so again).
+
+This misusage does not cause severe issues with mozjs-78.  However, when
+we eventually port jsauthority to use mozjs-91, bad thing will happen:
+see the test failure mentioned in #150.
+
+This commit is tested with both mozjs-78 and mozjs-91, all tests pass
+with it.
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/polkit/polkit/-/merge_requests/91]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ src/polkitbackend/polkitbackendjsauthority.cpp | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
+index 41d8d5c..38dc001 100644
+--- a/src/polkitbackend/polkitbackendjsauthority.cpp
++++ b/src/polkitbackend/polkitbackendjsauthority.cpp
+@@ -75,6 +75,13 @@
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
++static class JsInitHelperType
++{
++public:
++	JsInitHelperType() { JS_Init(); }
++	~JsInitHelperType() { JS_ShutDown(); }
++} JsInitHelper;
++
+ struct _PolkitBackendJsAuthorityPrivate
+ {
+   gchar **rules_dirs;
+@@ -589,7 +596,6 @@ polkit_backend_js_authority_finalize (GObject *object)
+   delete authority->priv->js_polkit;
+ 
+   JS_DestroyContext (authority->priv->cx);
+-  /* JS_ShutDown (); */
+ 
+   G_OBJECT_CLASS (polkit_backend_js_authority_parent_class)->finalize (object);
+ }
+@@ -665,8 +671,6 @@ polkit_backend_js_authority_class_init (PolkitBackendJsAuthorityClass *klass)
+ 
+ 
+   g_type_class_add_private (klass, sizeof (PolkitBackendJsAuthorityPrivate));
+-
+-  JS_Init ();
+ }
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-make-netgroup-support-optional.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-make-netgroup-support-optional.patch
index fd72513..1a268f2 100644
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-make-netgroup-support-optional.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-make-netgroup-support-optional.patch
@@ -1,4 +1,4 @@
-From 21aa2747e8f0048759aab184b07dd6389666d5e6 Mon Sep 17 00:00:00 2001
+From 0c1debb380fee7f5b2bc62406e45856dc9c9e1a1 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 22 May 2019 13:18:55 -0700
 Subject: [PATCH] make netgroup support optional
@@ -17,20 +17,23 @@
 Closes polkit/polkit#14.
 Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  configure.ac                                     |  2 +-
  src/polkit/polkitidentity.c                      | 16 ++++++++++++++++
  src/polkit/polkitunixnetgroup.c                  |  3 +++
  .../polkitbackendinteractiveauthority.c          | 14 ++++++++------
- src/polkitbackend/polkitbackendjsauthority.cpp   |  2 ++
+ src/polkitbackend/polkitbackendjsauthority.cpp   |  3 +++
  test/polkit/polkitidentitytest.c                 |  9 ++++++++-
  test/polkit/polkitunixnetgrouptest.c             |  3 +++
  .../test-polkitbackendjsauthority.c              |  2 ++
- 8 files changed, 43 insertions(+), 8 deletions(-)
+ 8 files changed, 44 insertions(+), 8 deletions(-)
 
+diff --git a/configure.ac b/configure.ac
+index b625743..d807086 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -99,7 +99,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXP
+@@ -100,7 +100,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"],
  	     [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
  AC_SUBST(EXPAT_LIBS)
  
@@ -39,9 +42,11 @@
  
  if test "x$GCC" = "xyes"; then
    LDFLAGS="-Wl,--as-needed $LDFLAGS"
+diff --git a/src/polkit/polkitidentity.c b/src/polkit/polkitidentity.c
+index 3aa1f7f..10e9c17 100644
 --- a/src/polkit/polkitidentity.c
 +++ b/src/polkit/polkitidentity.c
-@@ -182,7 +182,15 @@ polkit_identity_from_string  (const gcha
+@@ -182,7 +182,15 @@ polkit_identity_from_string  (const gchar   *str,
      }
    else if (g_str_has_prefix (str, "unix-netgroup:"))
      {
@@ -57,7 +62,7 @@
      }
  
    if (identity == NULL && (error != NULL && *error == NULL))
-@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVaria
+@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVariant  *variant,
        GVariant *v;
        const char *name;
  
@@ -71,7 +76,7 @@
        v = lookup_asv (details_gvariant, "name", G_VARIANT_TYPE_STRING, error);
        if (v == NULL)
          {
-@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVaria
+@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVariant  *variant,
        name = g_variant_get_string (v, NULL);
        ret = polkit_unix_netgroup_new (name);
        g_variant_unref (v);
@@ -79,9 +84,11 @@
      }
    else
      {
+diff --git a/src/polkit/polkitunixnetgroup.c b/src/polkit/polkitunixnetgroup.c
+index 8a2b369..83f8d4a 100644
 --- a/src/polkit/polkitunixnetgroup.c
 +++ b/src/polkit/polkitunixnetgroup.c
-@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUni
+@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUnixNetgroup *group,
  PolkitIdentity *
  polkit_unix_netgroup_new (const gchar *name)
  {
@@ -91,9 +98,11 @@
    g_return_val_if_fail (name != NULL, NULL);
    return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_NETGROUP,
                                         "name", name,
+diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
+index 056d9a8..36c2f3d 100644
 --- a/src/polkitbackend/polkitbackendinteractiveauthority.c
 +++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
-@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity
+@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity                    *group,
    GList *ret;
  
    ret = NULL;
@@ -126,7 +135,7 @@
        PolkitIdentity *user;
        GError *error = NULL;
  
-@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity
+@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity                    *group,
  
   out:
    endnetgrent ();
@@ -134,9 +143,11 @@
    return ret;
  }
  
+diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
+index ca17108..41d8d5c 100644
 --- a/src/polkitbackend/polkitbackendjsauthority.cpp
 +++ b/src/polkitbackend/polkitbackendjsauthority.cpp
-@@ -1502,6 +1502,7 @@ js_polkit_user_is_in_netgroup (JSContext
+@@ -1520,6 +1520,7 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,
  
    JS::CallArgs args = JS::CallArgsFromVp (argc, vp);
  
@@ -144,14 +155,17 @@
    JS::RootedString usrstr (authority->priv->cx);
    usrstr = args[0].toString();
    user = JS_EncodeStringToUTF8 (cx, usrstr);
-@@ -1519,6 +1520,7 @@ js_polkit_user_is_in_netgroup (JSContext
+@@ -1535,6 +1536,8 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,
+       is_in_netgroup =  true;
+     }
  
-   JS_free (cx, netgroup);
-   JS_free (cx, user);
 +#endif
- 
++
    ret = true;
  
+   args.rval ().setBoolean (is_in_netgroup);
+diff --git a/test/polkit/polkitidentitytest.c b/test/polkit/polkitidentitytest.c
+index e91967b..e829aaa 100644
 --- a/test/polkit/polkitidentitytest.c
 +++ b/test/polkit/polkitidentitytest.c
 @@ -19,6 +19,7 @@
@@ -162,7 +176,7 @@
  #include "glib.h"
  #include <polkit/polkit.h>
  #include <polkit/polkitprivate.h>
-@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_tes
+@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_test_data [] = {
    {"unix-group:root", "unix-group:jane", FALSE},
    {"unix-group:jane", "unix-group:jane", TRUE},
  
@@ -193,6 +207,8 @@
  
    add_comparison_tests ();
  
+diff --git a/test/polkit/polkitunixnetgrouptest.c b/test/polkit/polkitunixnetgrouptest.c
+index 3701ba1..e3352eb 100644
 --- a/test/polkit/polkitunixnetgrouptest.c
 +++ b/test/polkit/polkitunixnetgrouptest.c
 @@ -19,6 +19,7 @@
@@ -213,6 +229,8 @@
 +#endif
    return g_test_run ();
  }
+diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c
+index f97e0e0..fc52149 100644
 --- a/test/polkitbackend/test-polkitbackendjsauthority.c
 +++ b/test/polkitbackend/test-polkitbackendjsauthority.c
 @@ -137,12 +137,14 @@ test_get_admin_identities (void)
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2021-3560.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2021-3560.patch
deleted file mode 100644
index 76308ff..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2021-3560.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From a04d13affe0fa53ff618e07aa8f57f4c0e3b9b81 Mon Sep 17 00:00:00 2001
-From: Jan Rybar <jrybar@redhat.com>
-Date: Wed, 2 Jun 2021 15:43:38 +0200
-Subject: [PATCH] GHSL-2021-074: authentication bypass vulnerability in polkit
-
-initial values returned if error caught
-
-CVE: CVE-2021-3560
-
-Upstream-Status: Backport [https://gitlab.freedesktop.org/polkit/polkit/-/commit/a04d13affe0fa53ff618e07aa8f57f4c0e3b9b81]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- src/polkit/polkitsystembusname.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/polkit/polkitsystembusname.c b/src/polkit/polkitsystembusname.c
-index 8daa12c..8ed1363 100644
---- a/src/polkit/polkitsystembusname.c
-+++ b/src/polkit/polkitsystembusname.c
-@@ -435,6 +435,9 @@ polkit_system_bus_name_get_creds_sync (PolkitSystemBusName           *system_bus
-   while (!((data.retrieved_uid && data.retrieved_pid) || data.caught_error))
-     g_main_context_iteration (tmp_context, TRUE);
- 
-+  if (data.caught_error)
-+    goto out;
-+
-   if (out_uid)
-     *out_uid = data.uid;
-   if (out_pid)
--- 
-2.29.2
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.116.bb b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.116.bb
deleted file mode 100644
index 6408933..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.116.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SUMMARY = "PolicyKit Authorization Framework"
-DESCRIPTION = "The polkit package is an application-level toolkit for defining and handling the policy that allows unprivileged processes to speak to privileged processes."
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/polkit"
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=155db86cdbafa7532b41f390409283eb \
-                    file://src/polkit/polkit.h;beginline=1;endline=20;md5=0a8630b0133176d0504c87a0ded39db4"
-
-DEPENDS = "expat glib-2.0 intltool-native mozjs"
-
-inherit autotools gtk-doc pkgconfig useradd systemd gobject-introspection features_check
-
-REQUIRED_DISTRO_FEATURES = "polkit"
-
-PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
-                 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', \
-                    bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \
-                "
-
-PACKAGECONFIG[pam] = "--with-authfw=pam,--with-authfw=shadow,libpam,libpam"
-PACKAGECONFIG[systemd] = "--enable-libsystemd-login=yes --with-systemdsystemunitdir=${systemd_unitdir}/system/,--enable-libsystemd-login=no --with-systemdsystemunitdir=,systemd"
-# there is no --enable/--disable option for consolekit and it's not picked by shlibs, so add it to RDEPENDS
-PACKAGECONFIG[consolekit] = ",,,consolekit"
-
-PAM_SRC_URI = "file://polkit-1_pam.patch"
-SRC_URI = "http://www.freedesktop.org/software/polkit/releases/polkit-${PV}.tar.gz \
-           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
-           file://0003-make-netgroup-support-optional.patch \
-           file://CVE-2021-3560.patch \
-           "
-SRC_URI[md5sum] = "4b37258583393e83069a0e2e89c0162a"
-SRC_URI[sha256sum] = "88170c9e711e8db305a12fdb8234fac5706c61969b94e084d0f117d8ec5d34b1"
-
-EXTRA_OECONF = "--with-os-type=moblin \
-                --disable-man-pages \
-                --disable-libelogind \
-               "
-
-do_compile:prepend () {
-    export GIR_EXTRA_LIBS_PATH="${B}/src/polkit/.libs"
-}
-
-PACKAGES =+ "${PN}-examples"
-
-FILES:${PN}:append = " \
-    ${libdir}/${BPN}-1 \
-    ${nonarch_libdir}/${BPN}-1 \
-    ${datadir}/dbus-1 \
-    ${datadir}/${BPN}-1 \
-    ${datadir}/gettext \
-"
-
-FILES:${PN}-examples = "${bindir}/*example*"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM:${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/${BPN}-1 polkitd"
-
-SYSTEMD_SERVICE:${PN} = "${BPN}.service"
-SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.119.bb b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.119.bb
new file mode 100644
index 0000000..a41b0fe
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.119.bb
@@ -0,0 +1,58 @@
+SUMMARY = "PolicyKit Authorization Framework"
+DESCRIPTION = "The polkit package is an application-level toolkit for defining and handling the policy that allows unprivileged processes to speak to privileged processes."
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/polkit"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=155db86cdbafa7532b41f390409283eb \
+                    file://src/polkit/polkit.h;beginline=1;endline=20;md5=0a8630b0133176d0504c87a0ded39db4"
+
+DEPENDS = "expat glib-2.0 intltool-native mozjs"
+
+inherit autotools gtk-doc pkgconfig useradd systemd gobject-introspection features_check
+
+REQUIRED_DISTRO_FEATURES = "polkit"
+
+PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
+                 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', \
+                    bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \
+                "
+
+PACKAGECONFIG[pam] = "--with-authfw=pam,--with-authfw=shadow,libpam,libpam"
+PACKAGECONFIG[systemd] = "--enable-libsystemd-login=yes --with-systemdsystemunitdir=${systemd_unitdir}/system/,--enable-libsystemd-login=no --with-systemdsystemunitdir=,systemd"
+# there is no --enable/--disable option for consolekit and it's not picked by shlibs, so add it to RDEPENDS
+PACKAGECONFIG[consolekit] = ",,,consolekit"
+
+PAM_SRC_URI = "file://polkit-1_pam.patch"
+SRC_URI = "http://www.freedesktop.org/software/polkit/releases/polkit-${PV}.tar.gz \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+           file://0003-make-netgroup-support-optional.patch \
+           file://0002-jsauthority-port-to-mozjs-91.patch \
+           file://0003-jsauthority-ensure-to-call-JS_Init-and-JS_ShutDown-e.patch \
+           "
+SRC_URI[sha256sum] = "c8579fdb86e94295404211285fee0722ad04893f0213e571bd75c00972fd1f5c"
+
+EXTRA_OECONF = "--with-os-type=moblin \
+                --disable-man-pages \
+                --disable-libelogind \
+               "
+
+do_compile:prepend () {
+    export GIR_EXTRA_LIBS_PATH="${B}/src/polkit/.libs"
+}
+
+PACKAGES =+ "${PN}-examples"
+
+FILES:${PN}:append = " \
+    ${libdir}/${BPN}-1 \
+    ${nonarch_libdir}/${BPN}-1 \
+    ${datadir}/dbus-1 \
+    ${datadir}/${BPN}-1 \
+    ${datadir}/gettext \
+"
+
+FILES:${PN}-examples = "${bindir}/*example*"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/${BPN}-1 polkitd"
+
+SYSTEMD_SERVICE:${PN} = "${BPN}.service"
+SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus_1.2.2.bb b/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus_1.2.2.bb
deleted file mode 100644
index 0870c66..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus_1.2.2.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "C++ client for Redis based on hiredis"
-HOMEPAGE = "https://github.com/sewenew/redis-plus-plus"
-SECTION = "libs"
-
-DEPENDS += "hiredis"
-RDEPENDS:${PN} += "hiredis"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-SRCREV = "8ac506e6eb0e5c5b2625785b67400bde705773a1"
-SRC_URI = "git://github.com/sewenew/redis-plus-plus"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-FILES_SOLIBSDEV = ""
-FILES:${PN} += " ${libdir}/libredis++.so"
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus_1.3.2.bb b/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus_1.3.2.bb
new file mode 100644
index 0000000..2a6bb57
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus_1.3.2.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "C++ client for Redis based on hiredis"
+HOMEPAGE = "https://github.com/sewenew/redis-plus-plus"
+SECTION = "libs"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRC_URI = "git://github.com/sewenew/redis-plus-plus"
+SRCREV = "e29c63db54653a660d7a0f556f670b7a6fce0a78"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+DEPENDS += "hiredis"
+
+RDEPENDS:${PN} += "hiredis"
+
+FILES_SOLIBSDEV = ""
+FILES:${PN} += " ${libdir}/libredis++.so*"
+
+INSANE_SKIP:${PN} += "dev-so"
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.5.bb b/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.5.bb
deleted file mode 100644
index 58d759b..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.5.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "Redis key-value store"
-DESCRIPTION = "Redis is an open source, advanced key-value store."
-HOMEPAGE = "http://redis.io"
-SECTION = "libs"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ffdd6c926faaece928cf9d9640132d2"
-DEPENDS = "readline lua ncurses"
-
-SRC_URI = "http://download.redis.io/releases/${BP}.tar.gz \
-           file://redis.conf \
-           file://init-redis-server \
-           file://redis.service \
-           file://hiredis-use-default-CC-if-it-is-set.patch \
-           file://lua-update-Makefile-to-use-environment-build-setting.patch \
-           file://oe-use-libc-malloc.patch \
-           file://0001-src-Do-not-reset-FINAL_LIBS.patch \
-           file://GNU_SOURCE.patch \
-           file://0006-Define-correct-gregs-for-RISCV32.patch \
-           "
-SRC_URI[sha256sum] = "4b9a75709a1b74b3785e20a6c158cab94cf52298aa381eea947a678a60d551ae"
-
-inherit autotools-brokensep update-rc.d systemd useradd
-
-FINAL_LIBS:x86:toolchain-clang = "-latomic"
-FINAL_LIBS:riscv32:toolchain-clang = "-latomic"
-FINAL_LIBS:mips = "-latomic"
-FINAL_LIBS:arm = "-latomic"
-FINAL_LIBS:powerpc = "-latomic"
-
-export FINAL_LIBS
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM:${PN}  = "--system --home-dir /var/lib/redis -g redis --shell /bin/false redis"
-GROUPADD_PARAM:${PN} = "--system redis"
-
-REDIS_ON_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}"
-
-do_compile:prepend() {
-    (cd deps && oe_runmake hiredis lua linenoise)
-}
-
-do_install() {
-    export PREFIX=${D}/${prefix}
-    oe_runmake install
-    install -d ${D}/${sysconfdir}/redis
-    install -m 0644 ${WORKDIR}/redis.conf ${D}/${sysconfdir}/redis/redis.conf
-    install -d ${D}/${sysconfdir}/init.d
-    install -m 0755 ${WORKDIR}/init-redis-server ${D}/${sysconfdir}/init.d/redis-server
-    install -d ${D}/var/lib/redis/
-    chown redis.redis ${D}/var/lib/redis/
-
-    install -d ${D}${systemd_system_unitdir}
-    install -m 0644 ${WORKDIR}/redis.service ${D}${systemd_system_unitdir}
-    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${systemd_system_unitdir}/redis.service
-
-    if [ "${REDIS_ON_SYSTEMD}" = true ]; then
-        sed -i 's!daemonize yes!# daemonize yes!' ${D}/${sysconfdir}/redis/redis.conf
-    fi
-}
-
-CONFFILES:${PN} = "${sysconfdir}/redis/redis.conf"
-
-INITSCRIPT_NAME = "redis-server"
-INITSCRIPT_PARAMS = "defaults 87"
-
-SYSTEMD_SERVICE:${PN} = "redis.service"
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.6.bb b/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.6.bb
new file mode 100644
index 0000000..87fade7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.6.bb
@@ -0,0 +1,66 @@
+SUMMARY = "Redis key-value store"
+DESCRIPTION = "Redis is an open source, advanced key-value store."
+HOMEPAGE = "http://redis.io"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ffdd6c926faaece928cf9d9640132d2"
+DEPENDS = "readline lua ncurses"
+
+SRC_URI = "http://download.redis.io/releases/${BP}.tar.gz \
+           file://redis.conf \
+           file://init-redis-server \
+           file://redis.service \
+           file://hiredis-use-default-CC-if-it-is-set.patch \
+           file://lua-update-Makefile-to-use-environment-build-setting.patch \
+           file://oe-use-libc-malloc.patch \
+           file://0001-src-Do-not-reset-FINAL_LIBS.patch \
+           file://GNU_SOURCE.patch \
+           file://0006-Define-correct-gregs-for-RISCV32.patch \
+           "
+SRC_URI[sha256sum] = "5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab"
+
+inherit autotools-brokensep update-rc.d systemd useradd
+
+FINAL_LIBS:x86:toolchain-clang = "-latomic"
+FINAL_LIBS:riscv32:toolchain-clang = "-latomic"
+FINAL_LIBS:mips = "-latomic"
+FINAL_LIBS:arm = "-latomic"
+FINAL_LIBS:powerpc = "-latomic"
+
+export FINAL_LIBS
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN}  = "--system --home-dir /var/lib/redis -g redis --shell /bin/false redis"
+GROUPADD_PARAM:${PN} = "--system redis"
+
+REDIS_ON_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}"
+
+do_compile:prepend() {
+    (cd deps && oe_runmake hiredis lua linenoise)
+}
+
+do_install() {
+    export PREFIX=${D}/${prefix}
+    oe_runmake install
+    install -d ${D}/${sysconfdir}/redis
+    install -m 0644 ${WORKDIR}/redis.conf ${D}/${sysconfdir}/redis/redis.conf
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 0755 ${WORKDIR}/init-redis-server ${D}/${sysconfdir}/init.d/redis-server
+    install -d ${D}/var/lib/redis/
+    chown redis.redis ${D}/var/lib/redis/
+
+    install -d ${D}${systemd_system_unitdir}
+    install -m 0644 ${WORKDIR}/redis.service ${D}${systemd_system_unitdir}
+    sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${systemd_system_unitdir}/redis.service
+
+    if [ "${REDIS_ON_SYSTEMD}" = true ]; then
+        sed -i 's!daemonize yes!# daemonize yes!' ${D}/${sysconfdir}/redis/redis.conf
+    fi
+}
+
+CONFFILES:${PN} = "${sysconfdir}/redis/redis.conf"
+
+INITSCRIPT_NAME = "redis-server"
+INITSCRIPT_PARAMS = "defaults 87"
+
+SYSTEMD_SERVICE:${PN} = "redis.service"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode/0001-configure.ac-add-py-3.10-support.patch b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode/0001-configure.ac-add-py-3.10-support.patch
new file mode 100644
index 0000000..85e49cc
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode/0001-configure.ac-add-py-3.10-support.patch
@@ -0,0 +1,24 @@
+From a5835dfe126bfe6ed0b8197c6578960835bf1fe8 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Sun, 3 Oct 2021 22:08:50 +0200
+Subject: [PATCH] configure.ac: add py 3.10 support
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 4802f35..e0e468f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -93,7 +93,7 @@ SR_PKG_CHECK_SUMMARY([srd_pkglibs_summary])
+ # first, since usually only that variant will add "-lpython3.8".
+ # https://docs.python.org/3/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build
+ SR_PKG_CHECK([python3], [SRD_PKGLIBS],
+-	[python-3.9-embed], [python-3.8-embed], [python-3.8 >= 3.8], [python-3.7 >= 3.7], [python-3.6 >= 3.6], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2], [python3 >= 3.2])
++	[python-3.10-embed], [python-3.9-embed], [python-3.8-embed], [python-3.8 >= 3.8], [python-3.7 >= 3.7], [python-3.6 >= 3.6], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2], [python3 >= 3.2])
+ AS_IF([test "x$sr_have_python3" = xno],
+ 	[AC_MSG_ERROR([Cannot find Python 3 development headers.])])
+ 
diff --git a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
index d78d277..86b8940 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
@@ -9,7 +9,9 @@
 inherit autotools pkgconfig
 
 SRC_URI = "http://sigrok.org/download/source/libsigrokdecode/libsigrokdecode-${PV}.tar.gz \
-           file://python39.patch"
+           file://python39.patch \
+           file://0001-configure.ac-add-py-3.10-support.patch \
+           "
 
 SRC_URI[md5sum] = "7ba4ed4ef1f06ae96979751e096c2821"
 SRC_URI[sha256sum] = "c50814aa6743cd8c4e88c84a0cdd8889d883c3be122289be90c63d7d67883fc0"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.2.bb b/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.2.bb
deleted file mode 100644
index cacb493..0000000
--- a/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.2.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "A library to help create and query binary XML blobs"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=1803fa9c2c3ce8cb06b4861d75310742"
-
-SRC_URI = "\
-    git://github.com/hughsie/libxmlb.git \
-    file://run-ptest \
-"
-SRCREV = "994fd0ec3d28da82b5965949a9d925510f603562"
-S = "${WORKDIR}/git"
-
-inherit gobject-introspection gtk-doc meson ptest-gnome
-
-PACKAGECONFIG ??= "\
-    ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
-"
-PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false"
-
-GTKDOC_MESON_OPTION = "gtkdoc"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.3.bb b/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.3.bb
new file mode 100644
index 0000000..0ebd653
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.3.bb
@@ -0,0 +1,18 @@
+SUMMARY = "A library to help create and query binary XML blobs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1803fa9c2c3ce8cb06b4861d75310742"
+
+SRC_URI = "git://github.com/hughsie/libxmlb.git;branch=main \
+           file://run-ptest \
+           "
+SRCREV = "5108556a17bb1c2863c2ca5df088143ea65474a3"
+S = "${WORKDIR}/git"
+
+inherit gobject-introspection gtk-doc meson ptest-gnome
+
+PACKAGECONFIG ??= "\
+    ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
+"
+PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false"
+
+GTKDOC_MESON_OPTION = "gtkdoc"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.80.0.bb b/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.80.0.bb
deleted file mode 100644
index a861bba..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.80.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "A pedagogically-oriented open source site containing software that is broadly useful for image processing and image analysis applications"
-DEPENDS = "jpeg tiff libpng zlib"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://leptonica-license.txt;md5=809b282cea2df68975fbe0ffe02b560f"
-
-UPSTREAM_CHECK_URI = "https://github.com/DanBloomberg/leptonica/releases"
-
-SRC_URI = "http://www.leptonica.org/source/leptonica-${PV}.tar.gz"
-SRC_URI[md5sum] = "d640d684234442a84c9e8902f0b3ff36"
-SRC_URI[sha256sum] = "ec9c46c2aefbb960fb6a6b7f800fe39de48343437b6ce08e30a8d9688ed14ba4"
-
-EXTRA_OECONF += " \
-    --without-libwebp \
-"
-
-PACKAGECONFIG ??= "giflib"
-PACKAGECONFIG[openjpeg] = "--with-libopenjpeg,--without-libopenjpeg,openjpeg"
-PACKAGECONFIG[giflib] = "--with-giflib,--without-giflib,giflib"
-
-inherit autotools pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.82.0.bb b/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.82.0.bb
new file mode 100644
index 0000000..c0a2b45
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.82.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "A pedagogically-oriented open source site containing software that is broadly useful for image processing and image analysis applications"
+DEPENDS = "jpeg tiff libpng zlib"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://leptonica-license.txt;md5=809b282cea2df68975fbe0ffe02b560f"
+
+UPSTREAM_CHECK_URI = "https://github.com/DanBloomberg/leptonica/releases"
+
+SRC_URI = "http://www.leptonica.org/source/leptonica-${PV}.tar.gz"
+SRC_URI[sha256sum] = "155302ee914668c27b6fe3ca9ff2da63b245f6d62f3061c8f27563774b8ae2d6"
+
+EXTRA_OECONF += " \
+    --without-libwebp \
+"
+
+PACKAGECONFIG ??= "giflib"
+PACKAGECONFIG[openjpeg] = "--with-libopenjpeg,--without-libopenjpeg,openjpeg"
+PACKAGECONFIG[giflib] = "--with-giflib,--without-giflib,giflib"
+
+inherit autotools pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers_7.11.0.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers_7.11.0.bb
new file mode 100644
index 0000000..a7478d4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers_7.11.0.bb
@@ -0,0 +1,45 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+# SPDX-License-Identifier: MIT
+
+# TODO: Pin upstream release (current v7.11.0-80-g419a757)
+src_org = "lvgl"
+SRC_URI = "gitsm://github.com/${src_org}/lv_drivers;destsuffix=${S};protocol=https;nobranch=1"
+SRCREV = "419a757c23aaa67c676fe3a2196d64808fcf2254"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d6fc0df890c5270ef045981b516bb8f2"
+
+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..."
+
+DEPENDS += "libxkbcommon"
+DEPENDS += "lvgl"
+DEPENDS += "wayland"
+
+REQUIRED_DISTRO_FEATURES = "wayland"
+
+inherit cmake
+inherit features_check
+
+S = "${WORKDIR}/${PN}-${PV}"
+
+EXTRA_OECMAKE += "-Dinstall:BOOL=ON"
+
+TARGET_CFLAGS += "-DLV_CONF_INCLUDE_SIMPLE=1"
+TARGET_CFLAGS += "-I${RECIPE_SYSROOT}/${includedir}/lvgl"
+
+
+do_configure:append() {
+    [ -r "${S}/lv_drv_conf.h" ] \
+        || sed -e "s|#if 0 .*Set it to \"1\" to enable the content.*|#if 1 // Enabled by ${PN}|g" \
+               -e "s|#  define USE_WAYLAND       0|#  define USE_WAYLAND       1|g" \
+          < "${S}/lv_drv_conf_template.h" > "${S}/lv_drv_conf.h"
+}
+
+
+FILES:${PN}-dev = "\
+    ${includedir}/lvgl/lv_drivers/ \
+    "
+
+FILES:${PN}-staticdev = "${libdir}/"
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
new file mode 100644
index 0000000..084070c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb
@@ -0,0 +1,30 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+# SPDX-License-Identifier: MIT
+
+src_org = "lvgl"
+SRC_URI = "gitsm://github.com/${src_org}/lv_lib_png;destsuffix=${S};protocol=https;nobranch=1"
+SRCREV = "bf1531afe07c9f861107559e29ab8a2d83e4715a"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d6fc0df890c5270ef045981b516bb8f2"
+
+HOMEPAGE = "https://docs.lvgl.io"
+SUMMARY = "PNG decoder for LVGL"
+DESCRIPTION = "Allow the use of PNG images in LVGL. This implementation uses lodepng"
+
+# because of lvgl dependency
+REQUIRED_DISTRO_FEATURES = "wayland"
+
+DEPENDS += "lvgl"
+
+inherit cmake
+inherit features_check
+
+TARGET_CFLAGS += "-DLV_CONF_INCLUDE_SIMPLE=1"
+TARGET_CFLAGS += "-I${RECIPE_SYSROOT}/${includedir}/lvgl"
+
+FILES:${PN}-dev = "\
+    ${includedir}/lvgl/lv_lib_png/ \
+    "
+
+FILES:${PN}-staticdev = "${libdir}/"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.0.3.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.0.3.bb
new file mode 100644
index 0000000..2ca7f60
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.0.3.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"
+
+# TODO: Pin upstream release (current is v8.0.3-dev-239-g7b7bed37d)
+SRC_URI = "gitsm://github.com/lvgl/lvgl;destsuffix=${S};protocol=https;nobranch=1"
+SRCREV = "7b7bed37d3e937c59ec99fccba58774fbf9f1930"
+
+REQUIRED_DISTRO_FEATURES = "wayland"
+
+inherit cmake
+inherit features_check
+
+S = "${WORKDIR}/${PN}-${PV}"
+
+EXTRA_OECMAKE += "-Dinstall:BOOL=ON"
+
+do_configure:prepend() {
+    [ -r "${S}/lv_conf.h" ] \
+        || sed -e "s|#if 0 /*Set it to \"1\" to enable the content*/|#if 1 // Enabled by ${PN}|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/surf/surf/0001-config.ml-make-compatible-with-webkitgtk-2.34.0.patch b/meta-openembedded/meta-oe/recipes-graphics/surf/surf/0001-config.ml-make-compatible-with-webkitgtk-2.34.0.patch
new file mode 100644
index 0000000..2fb44eb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/surf/surf/0001-config.ml-make-compatible-with-webkitgtk-2.34.0.patch
@@ -0,0 +1,32 @@
+From 0cd38e6dbcaff7eef39fd46a60ff8a47e5f488c4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Sun, 3 Oct 2021 23:08:48 +0200
+Subject: [PATCH] config.ml: make compatible with webkitgtk 2.34.0
+
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ config.mk | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/config.mk b/config.mk
+index 032bf9f..850afbf 100644
+--- a/config.mk
++++ b/config.mk
+@@ -12,10 +12,10 @@ LIBDIR = $(LIBPREFIX)/surf
+ X11INC = `pkg-config --cflags x11`
+ X11LIB = `pkg-config --libs x11`
+ 
+-GTKINC = `pkg-config --cflags gtk+-3.0 gcr-3 webkit2gtk-4.0`
+-GTKLIB = `pkg-config --libs gtk+-3.0 gcr-3 webkit2gtk-4.0`
+-WEBEXTINC = `pkg-config --cflags webkit2gtk-4.0 webkit2gtk-web-extension-4.0 gio-2.0`
+-WEBEXTLIBS = `pkg-config --libs webkit2gtk-4.0 webkit2gtk-web-extension-4.0 gio-2.0`
++GTKINC = `pkg-config --cflags gtk+-3.0 gcr-3 webkit2gtk-4.1`
++GTKLIB = `pkg-config --libs gtk+-3.0 gcr-3 webkit2gtk-4.1`
++WEBEXTINC = `pkg-config --cflags webkit2gtk-4.1 webkit2gtk-web-extension-4.1 gio-2.0`
++WEBEXTLIBS = `pkg-config --libs webkit2gtk-4.1 webkit2gtk-web-extension-4.1 gio-2.0`
+ 
+ # includes and libs
+ INCS = $(X11INC) $(GTKINC)
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.1.bb b/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.1.bb
index 307ee9b..710ed9b 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.1.bb
@@ -11,7 +11,8 @@
 
 SRC_URI = "git://git.suckless.org/surf;branch=surf-webkit2 \
            file://0001-config.mk-Fix-compiler-and-linker.patch \
-"
+           file://0001-config.ml-make-compatible-with-webkitgtk-2.34.0.patch \
+           "
 SRCREV = "bcd7d74e613fb8af11b40c351f0a6c1a771b2d2b"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_2.000.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_2.000.bb
deleted file mode 100644
index 29a1f6b..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_2.000.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require ttf.inc
-
-SUMMARY = "Ethiopia and Eritrea (Amharic) font - TTF Edition"
-HOMEPAGE = "http://software.sil.org/abyssinica/"
-LICENSE = "OFL-1.1"
-LIC_FILES_CHKSUM = "file://OFL.txt;md5=80cc8cdcdc3f8ce96957bbac946b70ae"
-
-SRCNAME = "AbyssinicaSIL"
-SRC_URI = "http://software.sil.org/downloads/r/abyssinica/${SRCNAME}-${PV}.zip"
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-SRC_URI[sha256sum] = "274204a53b30f64cca662d78c7199e3c0325ea95ad4109886b47af734c92d0f9"
-
-FONT_PACKAGES = "${PN}"
-FILES:${PN} = "${datadir}"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_2.100.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_2.100.bb
new file mode 100644
index 0000000..bce37a2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-abyssinica_2.100.bb
@@ -0,0 +1,15 @@
+require ttf.inc
+
+SUMMARY = "Ethiopia and Eritrea (Amharic) font - TTF Edition"
+HOMEPAGE = "http://software.sil.org/abyssinica/"
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://OFL.txt;md5=fd664aaab50445c3c1c97544554a6bda"
+
+SRCNAME = "AbyssinicaSIL"
+SRC_URI = "http://software.sil.org/downloads/r/abyssinica/${SRCNAME}-${PV}.zip"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+SRC_URI[sha256sum] = "1a1fc8e82f0c0f2e824f42bff05c1f4a0356330a89dc7ba798c1a20bc3e333e0"
+
+FONT_PACKAGES = "${PN}"
+FILES:${PN} = "${datadir}"
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 0de4996..b02dbbd 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
@@ -20,6 +20,8 @@
 
 S = "${WORKDIR}/dejavu-fonts-ttf-${PV}/ttf"
 
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/dejavu/files/dejavu/"
+
 do_install:append () {
     install -d ${D}${sysconfdir}/fonts/conf.d/
     install -m 0644 ${WORKDIR}/30-dejavu-aliases.conf ${D}${sysconfdir}/fonts/conf.d/
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20141206.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20141206.bb
deleted file mode 100644
index aa4a377..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20141206.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-require ttf.inc
-
-SUMMARY = "Japanese TrueType fonts from Vine Linux"
-AUTHOR = "Contributor: noonov <noonov@gmail.com>"
-HOMEPAGE = "http://vlgothic.dicey.org/"
-
-LICENSE = "ttf-mplus & BSD"
-LIC_FILES_CHKSUM = "file://LICENSE.en;md5=66ecd0fd7e4da6246fa30317c7b66755 \
-                    file://LICENSE_E.mplus;md5=1c4767416f20215f1e61b970f2117db9 \
-"
-
-SRC_URI = "https://osdn.jp/dl/vlgothic/VLGothic-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "bb7fadb2dff09a4fb6a11dc9dfdc0c36"
-SRC_URI[sha256sum] = "982040db2f9cb73d7c6ab7d9d163f2ed46d1180f330c9ba2fae303649bf8102d"
-
-S = "${WORKDIR}/VLGothic"
-
-do_install:append () {
-    install -D -m644 ${S}/LICENSE_E.mplus ${D}${datadir}/licenses/${PN}/COPYING_MPLUS.txt
-    install -D -m644 ${S}/README.sazanami ${D}${datadir}/licenses/${PN}/COPYING_SAZANAMI.txt
-    install -D -m644 ${S}/LICENSE.en ${D}${datadir}/licenses/${PN}/COPYING_VLGOTHIC.txt
-}
-
-PACKAGES = "${PN}"
-FONT_PACKAGES = "${PN}"
-
-FILES:${PN} = "${datadir}/fonts/truetype ${datadir}/licenses"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20200720.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20200720.bb
new file mode 100644
index 0000000..a386bb8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20200720.bb
@@ -0,0 +1,27 @@
+require ttf.inc
+
+SUMMARY = "Japanese TrueType fonts from Vine Linux"
+AUTHOR = "Contributor: noonov <noonov@gmail.com>"
+HOMEPAGE = "http://vlgothic.dicey.org/"
+
+LICENSE = "ttf-mplus & BSD"
+LIC_FILES_CHKSUM = "file://LICENSE.en;md5=cc06b20e7a20bdf6c989624405378303 \
+                    file://LICENSE_E.mplus;md5=1c4767416f20215f1e61b970f2117db9 \
+"
+
+SRC_URI = "https://osdn.jp/dl/vlgothic/VLGothic-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "297a3813675fbea12c5813b55a78091c9a5946515ecbf9fde8b8102e01c579f4"
+
+S = "${WORKDIR}/VLGothic"
+
+do_install:append () {
+    install -D -m644 ${S}/LICENSE_E.mplus ${D}${datadir}/licenses/${PN}/COPYING_MPLUS.txt
+    install -D -m644 ${S}/README.sazanami ${D}${datadir}/licenses/${PN}/COPYING_SAZANAMI.txt
+    install -D -m644 ${S}/LICENSE.en ${D}${datadir}/licenses/${PN}/COPYING_VLGOTHIC.txt
+}
+
+PACKAGES = "${PN}"
+FONT_PACKAGES = "${PN}"
+
+FILES:${PN} = "${datadir}/fonts/truetype ${datadir}/licenses"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.bb b/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.0.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.bb
rename to meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.0.bb
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio-paranoia_10.2+0.93+1.bb b/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio-paranoia_10.2+0.93+1.bb
deleted file mode 100644
index d6b898c..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio-paranoia_10.2+0.93+1.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "library to read digital audio CDs with error correction"
-HOMEPAGE = "http://www.gnu.org/software/libcdio/"
-SECTION = "libs"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-DEPENDS = "libcdio"
-
-SRC_URI = "${GNU_MIRROR}/libcdio/${BP}.tar.bz2"
-SRC_URI[md5sum] = "0255aa50e660db7f2c39658b9c565814"
-SRC_URI[sha256sum] = "ec1d9b1d5a28cc042f2cb33a7cc0a2b5ce5525f102bc4c15db1fac322559a493"
-
-inherit autotools pkgconfig
-
-PACKAGES += "${PN}-utils"
-
-FILES:${PN} = "${libdir}/${BPN}${SOLIB}"
-FILES:${PN}-utils = "${bindir}/*"
-
-python libcdio_split_packages() {
-    libdir = d.expand('${libdir}')
-    do_split_packages(d, libdir, '^lib(.*)\.so\..*', 'lib%s', 'libcdio %s library', extra_depends='', allow_links=True)
-}
-
-PACKAGESPLITFUNCS =+ "libcdio_split_packages"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio-paranoia_10.2+2.0.1.bb b/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio-paranoia_10.2+2.0.1.bb
new file mode 100644
index 0000000..441defe
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio-paranoia_10.2+2.0.1.bb
@@ -0,0 +1,24 @@
+SUMMARY = "library to read digital audio CDs with error correction"
+HOMEPAGE = "http://www.gnu.org/software/libcdio/"
+BUGTRUCKER = "https://github.com/rocky/libcdio-paranoia/issues/"
+SECTION = "libs"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+DEPENDS = "libcdio"
+
+SRC_URI = "${GNU_MIRROR}/libcdio/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "33b1cf305ccfbfd03b43936975615000ce538b119989c4bec469577570b60e8a"
+
+inherit autotools pkgconfig
+
+PACKAGES += "${PN}-utils"
+
+FILES:${PN} = "${libdir}/${BPN}${SOLIB}"
+FILES:${PN}-utils = "${bindir}/*"
+
+python libcdio_split_packages() {
+    libdir = d.expand('${libdir}')
+    do_split_packages(d, libdir, '^lib(.*)\.so\..*', 'lib%s', 'libcdio %s library', extra_depends='', allow_links=True)
+}
+
+PACKAGESPLITFUNCS =+ "libcdio_split_packages"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta/0001-Add-stdout-mode-to-allow-streaming-over-the-network-.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta/0001-Add-stdout-mode-to-allow-streaming-over-the-network-.patch
deleted file mode 100644
index 41a5dbf..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta/0001-Add-stdout-mode-to-allow-streaming-over-the-network-.patch
+++ /dev/null
@@ -1,961 +0,0 @@
-From 141d3b3593722eb3d588e7c4b1542f810bc25853 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Thu, 5 Jun 2014 11:29:20 -0500
-Subject: [PATCH] Add stdout mode to allow streaming over the network with nc
-
-Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
-Signed-off-by: Chase Maupin <Chase.Maupin@ti.com>
----
- yavta.c |  315 ++++++++++++++++++++++++++++++++++-----------------------------
- 1 file changed, 169 insertions(+), 146 deletions(-)
-
-diff --git a/yavta.c b/yavta.c
-index 32adc26..b398da0 100644
---- a/yavta.c
-+++ b/yavta.c
-@@ -309,7 +309,7 @@ static bool video_has_fd(struct device *dev)
- static int video_set_fd(struct device *dev, int fd)
- {
- 	if (video_has_fd(dev)) {
--		printf("Can't set fd (already open).\n");
-+		fprintf(stderr, "Can't set fd (already open).\n");
- 		return -1;
- 	}
- 
-@@ -321,18 +321,18 @@ static int video_set_fd(struct device *dev, int fd)
- static int video_open(struct device *dev, const char *devname)
- {
- 	if (video_has_fd(dev)) {
--		printf("Can't open device (already open).\n");
-+		fprintf(stderr, "Can't open device (already open).\n");
- 		return -1;
- 	}
- 
- 	dev->fd = open(devname, O_RDWR);
- 	if (dev->fd < 0) {
--		printf("Error opening device %s: %s (%d).\n", devname,
-+		fprintf(stderr, "Error opening device %s: %s (%d).\n", devname,
- 		       strerror(errno), errno);
- 		return dev->fd;
- 	}
- 
--	printf("Device %s opened.\n", devname);
-+	fprintf(stderr, "Device %s opened.\n", devname);
- 
- 	dev->opened = 1;
- 
-@@ -352,7 +352,7 @@ static int video_querycap(struct device *dev, unsigned int *capabilities)
- 	*capabilities = cap.capabilities & V4L2_CAP_DEVICE_CAPS
- 		     ? cap.device_caps : cap.capabilities;
- 
--	printf("Device `%s' on `%s' is a video %s (%s mplanes) device.\n",
-+	fprintf(stderr, "Device `%s' on `%s' is a video %s (%s mplanes) device.\n",
- 		cap.card, cap.bus_info,
- 		video_is_capture(dev) ? "capture" : "output",
- 		video_is_mplane(dev) ? "with" : "without");
-@@ -370,7 +370,7 @@ static int cap_get_buf_type(unsigned int capabilities)
- 	} else if (capabilities & V4L2_CAP_VIDEO_OUTPUT) {
- 		return V4L2_BUF_TYPE_VIDEO_OUTPUT;
- 	} else {
--		printf("Device supports neither capture nor output.\n");
-+		fprintf(stderr, "Device supports neither capture nor output.\n");
- 		return -EINVAL;
- 	}
- 
-@@ -440,7 +440,7 @@ static int get_control(struct device *dev, unsigned int id, int type,
- 		}
- 	}
- 
--	printf("unable to get control 0x%8.8x: %s (%d).\n",
-+	fprintf(stderr, "unable to get control 0x%8.8x: %s (%d).\n",
- 		id, strerror(errno), errno);
- 	return -1;
- }
-@@ -484,12 +484,12 @@ static void set_control(struct device *dev, unsigned int id, int type,
- 			val = old.value;
- 	}
- 	if (ret == -1) {
--		printf("unable to set control 0x%8.8x: %s (%d).\n",
-+		fprintf(stderr, "unable to set control 0x%8.8x: %s (%d).\n",
- 			id, strerror(errno), errno);
- 		return;
- 	}
- 
--	printf("Control 0x%08x set to %" PRId64 ", is %" PRId64 "\n",
-+	fprintf(stderr, "Control 0x%08x set to %" PRId64 ", is %" PRId64 "\n",
- 	       id, old_val, val);
- }
- 
-@@ -504,7 +504,7 @@ static int video_get_format(struct device *dev)
- 
- 	ret = ioctl(dev->fd, VIDIOC_G_FMT, &fmt);
- 	if (ret < 0) {
--		printf("Unable to get format: %s (%d).\n", strerror(errno),
-+		fprintf(stderr, "Unable to get format: %s (%d).\n", strerror(errno),
- 			errno);
- 		return ret;
- 	}
-@@ -514,7 +514,7 @@ static int video_get_format(struct device *dev)
- 		dev->height = fmt.fmt.pix_mp.height;
- 		dev->num_planes = fmt.fmt.pix_mp.num_planes;
- 
--		printf("Video format: %s (%08x) %ux%u field %s, %u planes: \n",
-+	    fprintf(stderr, "Video format: %s (%08x) %ux%u field %s, %u planes: \n",
- 			v4l2_format_name(fmt.fmt.pix_mp.pixelformat), fmt.fmt.pix_mp.pixelformat,
- 			fmt.fmt.pix_mp.width, fmt.fmt.pix_mp.height,
- 			v4l2_field_name(fmt.fmt.pix_mp.field),
-@@ -527,7 +527,7 @@ static int video_get_format(struct device *dev)
- 					fmt.fmt.pix_mp.plane_fmt[i].bytesperline ?
- 						fmt.fmt.pix_mp.plane_fmt[i].sizeimage : 0;
- 
--			printf(" * Stride %u, buffer size %u\n",
-+			fprintf(stderr, " * Stride %u, buffer size %u\n",
- 				fmt.fmt.pix_mp.plane_fmt[i].bytesperline,
- 				fmt.fmt.pix_mp.plane_fmt[i].sizeimage);
- 		}
-@@ -539,7 +539,7 @@ static int video_get_format(struct device *dev)
- 		dev->plane_fmt[0].bytesperline = fmt.fmt.pix.bytesperline;
- 		dev->plane_fmt[0].sizeimage = fmt.fmt.pix.bytesperline ? fmt.fmt.pix.sizeimage : 0;
- 
--		printf("Video format: %s (%08x) %ux%u (stride %u) field %s buffer size %u\n",
-+		fprintf(stderr, "Video format: %s (%08x) %ux%u (stride %u) field %s buffer size %u\n",
- 			v4l2_format_name(fmt.fmt.pix.pixelformat), fmt.fmt.pix.pixelformat,
- 			fmt.fmt.pix.width, fmt.fmt.pix.height, fmt.fmt.pix.bytesperline,
- 			v4l2_field_name(fmt.fmt.pix_mp.field),
-@@ -581,25 +581,25 @@ static int video_set_format(struct device *dev, unsigned int w, unsigned int h,
- 
- 	ret = ioctl(dev->fd, VIDIOC_S_FMT, &fmt);
- 	if (ret < 0) {
--		printf("Unable to set format: %s (%d).\n", strerror(errno),
-+		fprintf(stderr, "Unable to set format: %s (%d).\n", strerror(errno),
- 			errno);
- 		return ret;
- 	}
- 
- 	if (video_is_mplane(dev)) {
--		printf("Video format set: %s (%08x) %ux%u field %s, %u planes: \n",
-+		fprintf(stderr, "Video format set: %s (%08x) %ux%u field %s, %u planes: \n",
- 			v4l2_format_name(fmt.fmt.pix_mp.pixelformat), fmt.fmt.pix_mp.pixelformat,
- 			fmt.fmt.pix_mp.width, fmt.fmt.pix_mp.height,
- 			v4l2_field_name(fmt.fmt.pix_mp.field),
- 			fmt.fmt.pix_mp.num_planes);
- 
- 		for (i = 0; i < fmt.fmt.pix_mp.num_planes; i++) {
--			printf(" * Stride %u, buffer size %u\n",
-+			fprintf(stderr, " * Stride %u, buffer size %u\n",
- 				fmt.fmt.pix_mp.plane_fmt[i].bytesperline,
- 				fmt.fmt.pix_mp.plane_fmt[i].sizeimage);
- 		}
- 	} else {
--		printf("Video format set: %s (%08x) %ux%u (stride %u) field %s buffer size %u\n",
-+		fprintf(stderr, "Video format set: %s (%08x) %ux%u (stride %u) field %s buffer size %u\n",
- 			v4l2_format_name(fmt.fmt.pix.pixelformat), fmt.fmt.pix.pixelformat,
- 			fmt.fmt.pix.width, fmt.fmt.pix.height, fmt.fmt.pix.bytesperline,
- 			v4l2_field_name(fmt.fmt.pix.field),
-@@ -619,16 +619,16 @@ static int video_set_framerate(struct device *dev, struct v4l2_fract *time_per_f
- 
- 	ret = ioctl(dev->fd, VIDIOC_G_PARM, &parm);
- 	if (ret < 0) {
--		printf("Unable to get frame rate: %s (%d).\n",
-+		fprintf(stderr, "Unable to get frame rate: %s (%d).\n",
- 			strerror(errno), errno);
- 		return ret;
- 	}
- 
--	printf("Current frame rate: %u/%u\n",
-+	fprintf(stderr, "Current frame rate: %u/%u\n",
- 		parm.parm.capture.timeperframe.numerator,
- 		parm.parm.capture.timeperframe.denominator);
- 
--	printf("Setting frame rate to: %u/%u\n",
-+	fprintf(stderr, "Setting frame rate to: %u/%u\n",
- 		time_per_frame->numerator,
- 		time_per_frame->denominator);
- 
-@@ -637,19 +637,19 @@ static int video_set_framerate(struct device *dev, struct v4l2_fract *time_per_f
- 
- 	ret = ioctl(dev->fd, VIDIOC_S_PARM, &parm);
- 	if (ret < 0) {
--		printf("Unable to set frame rate: %s (%d).\n", strerror(errno),
-+		fprintf(stderr, "Unable to set frame rate: %s (%d).\n", strerror(errno),
- 			errno);
- 		return ret;
- 	}
- 
- 	ret = ioctl(dev->fd, VIDIOC_G_PARM, &parm);
- 	if (ret < 0) {
--		printf("Unable to get frame rate: %s (%d).\n", strerror(errno),
-+		fprintf(stderr, "Unable to get frame rate: %s (%d).\n", strerror(errno),
- 			errno);
- 		return ret;
- 	}
- 
--	printf("Frame rate set: %u/%u\n",
-+	fprintf(stderr, "Frame rate set: %u/%u\n",
- 		parm.parm.capture.timeperframe.numerator,
- 		parm.parm.capture.timeperframe.denominator);
- 	return 0;
-@@ -674,7 +674,7 @@ static int video_buffer_mmap(struct device *dev, struct buffer *buffer,
- 		buffer->mem[i] = mmap(0, length, PROT_READ | PROT_WRITE, MAP_SHARED,
- 				      dev->fd, offset);
- 		if (buffer->mem[i] == MAP_FAILED) {
--			printf("Unable to map buffer %u/%u: %s (%d)\n",
-+			fprintf(stderr, "Unable to map buffer %u/%u: %s (%d)\n",
- 			       buffer->idx, i, strerror(errno), errno);
- 			return -1;
- 		}
-@@ -682,7 +682,7 @@ static int video_buffer_mmap(struct device *dev, struct buffer *buffer,
- 		buffer->size[i] = length;
- 		buffer->padding[i] = 0;
- 
--		printf("Buffer %u/%u mapped at address %p.\n",
-+		fprintf(stderr, "Buffer %u/%u mapped at address %p.\n",
- 		       buffer->idx, i, buffer->mem[i]);
- 	}
- 
-@@ -697,7 +697,7 @@ static int video_buffer_munmap(struct device *dev, struct buffer *buffer)
- 	for (i = 0; i < dev->num_planes; i++) {
- 		ret = munmap(buffer->mem[i], buffer->size[i]);
- 		if (ret < 0) {
--			printf("Unable to unmap buffer %u/%u: %s (%d)\n",
-+			fprintf(stderr, "Unable to unmap buffer %u/%u: %s (%d)\n",
- 			       buffer->idx, i, strerror(errno), errno);
- 		}
- 
-@@ -725,7 +725,7 @@ static int video_buffer_alloc_userptr(struct device *dev, struct buffer *buffer,
- 		ret = posix_memalign(&buffer->mem[i], page_size,
- 				     length + offset + padding);
- 		if (ret < 0) {
--			printf("Unable to allocate buffer %u/%u (%d)\n",
-+			fprintf(stderr, "Unable to allocate buffer %u/%u (%d)\n",
- 			       buffer->idx, i, ret);
- 			return -ENOMEM;
- 		}
-@@ -734,7 +734,7 @@ static int video_buffer_alloc_userptr(struct device *dev, struct buffer *buffer,
- 		buffer->size[i] = length;
- 		buffer->padding[i] = padding;
- 
--		printf("Buffer %u/%u allocated at address %p.\n",
-+		fprintf(stderr, "Buffer %u/%u allocated at address %p.\n",
- 		       buffer->idx, i, buffer->mem[i]);
- 	}
- 
-@@ -809,12 +809,12 @@ static int video_alloc_buffers(struct device *dev, int nbufs,
- 
- 	ret = ioctl(dev->fd, VIDIOC_REQBUFS, &rb);
- 	if (ret < 0) {
--		printf("Unable to request buffers: %s (%d).\n", strerror(errno),
-+		fprintf(stderr, "Unable to request buffers: %s (%d).\n", strerror(errno),
- 			errno);
- 		return ret;
- 	}
- 
--	printf("%u buffers requested.\n", rb.count);
-+	fprintf(stderr, "%u buffers requested.\n", rb.count);
- 
- 	buffers = malloc(rb.count * sizeof buffers[0]);
- 	if (buffers == NULL)
-@@ -835,12 +835,12 @@ static int video_alloc_buffers(struct device *dev, int nbufs,
- 
- 		ret = ioctl(dev->fd, VIDIOC_QUERYBUF, &buf);
- 		if (ret < 0) {
--			printf("Unable to query buffer %u: %s (%d).\n", i,
-+			fprintf(stderr, "Unable to query buffer %u: %s (%d).\n", i,
- 				strerror(errno), errno);
- 			return ret;
- 		}
- 		get_ts_flags(buf.flags, &ts_type, &ts_source);
--		printf("length: %u offset: %u timestamp type/source: %s/%s\n",
-+		fprintf(stderr, "length: %u offset: %u timestamp type/source: %s/%s\n",
- 		       buf.length, buf.m.offset, ts_type, ts_source);
- 
- 		buffers[i].idx = i;
-@@ -899,12 +899,12 @@ static int video_free_buffers(struct device *dev)
- 
- 	ret = ioctl(dev->fd, VIDIOC_REQBUFS, &rb);
- 	if (ret < 0) {
--		printf("Unable to release buffers: %s (%d).\n",
-+		fprintf(stderr, "Unable to release buffers: %s (%d).\n",
- 			strerror(errno), errno);
- 		return ret;
- 	}
- 
--	printf("%u buffers released.\n", dev->nbufs);
-+	fprintf(stderr, "%u buffers released.\n", dev->nbufs);
- 
- 	free(dev->buffers);
- 	dev->nbufs = 0;
-@@ -974,7 +974,7 @@ static int video_queue_buffer(struct device *dev, int index, enum buffer_fill_mo
- 
- 	ret = ioctl(dev->fd, VIDIOC_QBUF, &buf);
- 	if (ret < 0)
--		printf("Unable to queue buffer: %s (%d).\n",
-+		fprintf(stderr, "Unable to queue buffer: %s (%d).\n",
- 			strerror(errno), errno);
- 
- 	return ret;
-@@ -987,7 +987,7 @@ static int video_enable(struct device *dev, int enable)
- 
- 	ret = ioctl(dev->fd, enable ? VIDIOC_STREAMON : VIDIOC_STREAMOFF, &type);
- 	if (ret < 0) {
--		printf("Unable to %s streaming: %s (%d).\n",
-+		fprintf(stderr, "Unable to %s streaming: %s (%d).\n",
- 			enable ? "start" : "stop", strerror(errno), errno);
- 		return ret;
- 	}
-@@ -1009,10 +1009,10 @@ static void video_query_menu(struct device *dev, struct v4l2_queryctrl *query,
- 			continue;
- 
- 		if (query->type == V4L2_CTRL_TYPE_MENU)
--			printf("  %u: %.32s%s\n", menu.index, menu.name,
-+			fprintf(stderr, "  %u: %.32s%s\n", menu.index, menu.name,
- 			       menu.index == value ? " (*)" : "");
- 		else
--			printf("  %u: %lld%s\n", menu.index, menu.value,
-+			fprintf(stderr, "  %u: %lld%s\n", menu.index, menu.value,
- 			       menu.index == value ? " (*)" : "");
- 	};
- }
-@@ -1043,7 +1043,7 @@ static void video_list_controls(struct device *dev)
- 			continue;
- 
- 		if (query.type == V4L2_CTRL_TYPE_CTRL_CLASS) {
--			printf("--- %s (class 0x%08x) ---\n", query.name, query.id);
-+			fprintf(stderr, "--- %s (class 0x%08x) ---\n", query.name, query.id);
- 			continue;
- 		}
- 
-@@ -1053,7 +1053,7 @@ static void video_list_controls(struct device *dev)
- 		else
- 			sprintf(value, "%" PRId64, val64);
- 
--		printf("control 0x%08x `%s' min %d max %d step %d default %d current %s.\n",
-+		fprintf(stderr, "control 0x%08x `%s' min %d max %d step %d default %d current %s.\n",
- 			query.id, query.name, query.minimum, query.maximum,
- 			query.step, query.default_value, value);
- 
-@@ -1065,9 +1065,9 @@ static void video_list_controls(struct device *dev)
- 	}
- 
- 	if (nctrls)
--		printf("%u control%s found.\n", nctrls, nctrls > 1 ? "s" : "");
-+		fprintf(stderr, "%u control%s found.\n", nctrls, nctrls > 1 ? "s" : "");
- 	else
--		printf("No control found.\n");
-+		fprintf(stderr, "No control found.\n");
- }
- 
- static void video_enum_frame_intervals(struct device *dev, __u32 pixelformat,
-@@ -1088,30 +1088,30 @@ static void video_enum_frame_intervals(struct device *dev, __u32 pixelformat,
- 			break;
- 
- 		if (i != ival.index)
--			printf("Warning: driver returned wrong ival index "
-+			fprintf(stderr, "Warning: driver returned wrong ival index "
- 				"%u.\n", ival.index);
- 		if (pixelformat != ival.pixel_format)
--			printf("Warning: driver returned wrong ival pixel "
-+			fprintf(stderr, "Warning: driver returned wrong ival pixel "
- 				"format %08x.\n", ival.pixel_format);
- 		if (width != ival.width)
--			printf("Warning: driver returned wrong ival width "
-+			fprintf(stderr, "Warning: driver returned wrong ival width "
- 				"%u.\n", ival.width);
- 		if (height != ival.height)
--			printf("Warning: driver returned wrong ival height "
-+			fprintf(stderr, "Warning: driver returned wrong ival height "
- 				"%u.\n", ival.height);
- 
- 		if (i != 0)
--			printf(", ");
-+			fprintf(stderr, ", ");
- 
- 		switch (ival.type) {
- 		case V4L2_FRMIVAL_TYPE_DISCRETE:
--			printf("%u/%u",
-+			fprintf(stderr, "%u/%u",
- 				ival.discrete.numerator,
- 				ival.discrete.denominator);
- 			break;
- 
- 		case V4L2_FRMIVAL_TYPE_CONTINUOUS:
--			printf("%u/%u - %u/%u",
-+			fprintf(stderr, "%u/%u - %u/%u",
- 				ival.stepwise.min.numerator,
- 				ival.stepwise.min.denominator,
- 				ival.stepwise.max.numerator,
-@@ -1119,7 +1119,7 @@ static void video_enum_frame_intervals(struct device *dev, __u32 pixelformat,
- 			return;
- 
- 		case V4L2_FRMIVAL_TYPE_STEPWISE:
--			printf("%u/%u - %u/%u (by %u/%u)",
-+			fprintf(stderr, "%u/%u - %u/%u (by %u/%u)",
- 				ival.stepwise.min.numerator,
- 				ival.stepwise.min.denominator,
- 				ival.stepwise.max.numerator,
-@@ -1149,23 +1149,23 @@ static void video_enum_frame_sizes(struct device *dev, __u32 pixelformat)
- 			break;
- 
- 		if (i != frame.index)
--			printf("Warning: driver returned wrong frame index "
-+			fprintf(stderr, "Warning: driver returned wrong frame index "
- 				"%u.\n", frame.index);
- 		if (pixelformat != frame.pixel_format)
--			printf("Warning: driver returned wrong frame pixel "
-+			fprintf(stderr, "Warning: driver returned wrong frame pixel "
- 				"format %08x.\n", frame.pixel_format);
- 
- 		switch (frame.type) {
- 		case V4L2_FRMSIZE_TYPE_DISCRETE:
--			printf("\tFrame size: %ux%u (", frame.discrete.width,
-+			fprintf(stderr, "\tFrame size: %ux%u (", frame.discrete.width,
- 				frame.discrete.height);
- 			video_enum_frame_intervals(dev, frame.pixel_format,
- 				frame.discrete.width, frame.discrete.height);
--			printf(")\n");
-+			fprintf(stderr, ")\n");
- 			break;
- 
- 		case V4L2_FRMSIZE_TYPE_CONTINUOUS:
--			printf("\tFrame size: %ux%u - %ux%u (",
-+			fprintf(stderr, "\tFrame size: %ux%u - %ux%u (",
- 				frame.stepwise.min_width,
- 				frame.stepwise.min_height,
- 				frame.stepwise.max_width,
-@@ -1173,11 +1173,11 @@ static void video_enum_frame_sizes(struct device *dev, __u32 pixelformat)
- 			video_enum_frame_intervals(dev, frame.pixel_format,
- 				frame.stepwise.max_width,
- 				frame.stepwise.max_height);
--			printf(")\n");
-+			fprintf(stderr, ")\n");
- 			break;
- 
- 		case V4L2_FRMSIZE_TYPE_STEPWISE:
--			printf("\tFrame size: %ux%u - %ux%u (by %ux%u) (\n",
-+			fprintf(stderr, "\tFrame size: %ux%u - %ux%u (by %ux%u) (\n",
- 				frame.stepwise.min_width,
- 				frame.stepwise.min_height,
- 				frame.stepwise.max_width,
-@@ -1187,7 +1187,7 @@ static void video_enum_frame_sizes(struct device *dev, __u32 pixelformat)
- 			video_enum_frame_intervals(dev, frame.pixel_format,
- 				frame.stepwise.max_width,
- 				frame.stepwise.max_height);
--			printf(")\n");
-+			fprintf(stderr, ")\n");
- 			break;
- 
- 		default:
-@@ -1211,19 +1211,19 @@ static void video_enum_formats(struct device *dev, enum v4l2_buf_type type)
- 			break;
- 
- 		if (i != fmt.index)
--			printf("Warning: driver returned wrong format index "
-+			fprintf(stderr, "Warning: driver returned wrong format index "
- 				"%u.\n", fmt.index);
- 		if (type != fmt.type)
--			printf("Warning: driver returned wrong format type "
-+			fprintf(stderr, "Warning: driver returned wrong format type "
- 				"%u.\n", fmt.type);
- 
--		printf("\tFormat %u: %s (%08x)\n", i,
-+		fprintf(stderr, "\tFormat %u: %s (%08x)\n", i,
- 			v4l2_format_name(fmt.pixelformat), fmt.pixelformat);
--		printf("\tType: %s (%u)\n", v4l2_buf_type_name(fmt.type),
-+		fprintf(stderr, "\tType: %s (%u)\n", v4l2_buf_type_name(fmt.type),
- 			fmt.type);
--		printf("\tName: %.32s\n", fmt.description);
-+		fprintf(stderr, "\tName: %.32s\n", fmt.description);
- 		video_enum_frame_sizes(dev, fmt.pixelformat);
--		printf("\n");
-+		fprintf(stderr, "\n");
- 	}
- }
- 
-@@ -1241,13 +1241,13 @@ static void video_enum_inputs(struct device *dev)
- 			break;
- 
- 		if (i != input.index)
--			printf("Warning: driver returned wrong input index "
-+			fprintf(stderr, "Warning: driver returned wrong input index "
- 				"%u.\n", input.index);
- 
--		printf("\tInput %u: %s.\n", i, input.name);
-+		fprintf(stderr, "\tInput %u: %s.\n", i, input.name);
- 	}
- 
--	printf("\n");
-+	fprintf(stderr, "\n");
- }
- 
- static int video_get_input(struct device *dev)
-@@ -1257,7 +1257,7 @@ static int video_get_input(struct device *dev)
- 
- 	ret = ioctl(dev->fd, VIDIOC_G_INPUT, &input);
- 	if (ret < 0) {
--		printf("Unable to get current input: %s (%d).\n",
-+		fprintf(stderr, "Unable to get current input: %s (%d).\n",
- 			strerror(errno), errno);
- 		return ret;
- 	}
-@@ -1272,7 +1272,7 @@ static int video_set_input(struct device *dev, unsigned int input)
- 
- 	ret = ioctl(dev->fd, VIDIOC_S_INPUT, &_input);
- 	if (ret < 0)
--		printf("Unable to select input %u: %s (%d).\n", input,
-+		fprintf(stderr, "Unable to select input %u: %s (%d).\n", input,
- 			strerror(errno), errno);
- 
- 	return ret;
-@@ -1291,14 +1291,14 @@ static int video_set_quality(struct device *dev, unsigned int quality)
- 
- 	ret = ioctl(dev->fd, VIDIOC_S_JPEGCOMP, &jpeg);
- 	if (ret < 0) {
--		printf("Unable to set quality to %u: %s (%d).\n", quality,
-+		fprintf(stderr, "Unable to set quality to %u: %s (%d).\n", quality,
- 			strerror(errno), errno);
- 		return ret;
- 	}
- 
- 	ret = ioctl(dev->fd, VIDIOC_G_JPEGCOMP, &jpeg);
- 	if (ret >= 0)
--		printf("Quality set to %u\n", jpeg.quality);
-+		fprintf(stderr, "Quality set to %u\n", jpeg.quality);
- 
- 	return 0;
- }
-@@ -1313,7 +1313,7 @@ static int video_load_test_pattern(struct device *dev, const char *filename)
- 	if (filename != NULL) {
- 		fd = open(filename, O_RDONLY);
- 		if (fd == -1) {
--			printf("Unable to open test pattern file '%s': %s (%d).\n",
-+			fprintf(stderr, "Unable to open test pattern file '%s': %s (%d).\n",
- 				filename, strerror(errno), errno);
- 			return -errno;
- 		}
-@@ -1331,7 +1331,7 @@ static int video_load_test_pattern(struct device *dev, const char *filename)
- 		if (filename != NULL) {
- 			ret = read(fd, dev->pattern[plane], size);
- 			if (ret != (int)size && dev->plane_fmt[plane].bytesperline != 0) {
--				printf("Test pattern file size %u doesn't match image size %u\n",
-+				fprintf(stderr, "Test pattern file size %u doesn't match image size %u\n",
- 					ret, size);
- 				ret = -EINVAL;
- 				goto done;
-@@ -1341,7 +1341,7 @@ static int video_load_test_pattern(struct device *dev, const char *filename)
- 			unsigned int i;
- 
- 			if (dev->plane_fmt[plane].bytesperline == 0) {
--				printf("Compressed format detected for plane %u and no test pattern filename given.\n"
-+				fprintf(stderr, "Compressed format detected for plane %u and no test pattern filename given.\n"
- 					"The test pattern can't be generated automatically.\n", plane);
- 				ret = -EINVAL;
- 				goto done;
-@@ -1410,7 +1410,7 @@ static void video_verify_buffer(struct device *dev, struct v4l2_buffer *buf)
- 
- 		if (dev->plane_fmt[plane].sizeimage &&
- 		    dev->plane_fmt[plane].sizeimage != length)
--			printf("Warning: bytes used %u != image size %u for plane %u\n",
-+			fprintf(stderr, "Warning: bytes used %u != image size %u for plane %u\n",
- 			       length, dev->plane_fmt[plane].sizeimage, plane);
- 
- 		if (buffer->padding[plane] == 0)
-@@ -1424,16 +1424,16 @@ static void video_verify_buffer(struct device *dev, struct v4l2_buffer *buf)
- 		}
- 
- 		if (errors) {
--			printf("Warning: %u bytes overwritten among %u first padding bytes for plane %u\n",
-+			fprintf(stderr, "Warning: %u bytes overwritten among %u first padding bytes for plane %u\n",
- 			       errors, dirty, plane);
- 
- 			dirty = (dirty + 15) & ~15;
- 			dirty = dirty > 32 ? 32 : dirty;
- 
- 			for (i = 0; i < dirty; ++i) {
--				printf("%02x ", data[i]);
-+				fprintf(stderr, "%02x ", data[i]);
- 				if (i % 16 == 15)
--					printf("\n");
-+					fprintf(stderr, "\n");
- 			}
- 		}
- 	}
-@@ -1481,18 +1481,32 @@ static void video_save_image(struct device *dev, struct v4l2_buffer *buf,
- 
- 		ret = write(fd, dev->buffers[buf->index].mem[i], length);
- 		if (ret < 0) {
--			printf("write error: %s (%d)\n", strerror(errno), errno);
-+			fprintf(stderr, "write error: %s (%d)\n", strerror(errno), errno);
- 			break;
- 		} else if (ret != (int)length)
--			printf("write error: only %d bytes written instead of %u\n",
-+			fprintf(stderr, "write error: only %d bytes written instead of %u\n",
- 			       ret, length);
- 	}
- 	close(fd);
- }
- 
-+static void video_stdout_image(struct device *dev, struct v4l2_buffer *buf)
-+{
-+    int ret;
-+
-+    fprintf(stderr, "stdout");
-+    ret = fwrite(dev->buffers[buf->index].mem, buf->bytesused, 1, stdout);
-+
-+    if (ret < 0)
-+        fprintf(stderr, "write error: %s (%d)\n", strerror(errno), errno);
-+    else if (ret != (int)buf->bytesused)
-+        fprintf(stderr, "write error: only %d bytes written instead of %u\n",
-+                ret, buf->bytesused);
-+}
-+
- static int video_do_capture(struct device *dev, unsigned int nframes,
- 	unsigned int skip, unsigned int delay, const char *pattern,
--	int do_requeue_last, enum buffer_fill_mode fill)
-+	int do_requeue_last, enum buffer_fill_mode fill, int do_stdout)
- {
- 	struct v4l2_plane planes[VIDEO_MAX_PLANES];
- 	struct v4l2_buffer buf;
-@@ -1529,7 +1543,7 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
- 		ret = ioctl(dev->fd, VIDIOC_DQBUF, &buf);
- 		if (ret < 0) {
- 			if (errno != EIO) {
--				printf("Unable to dequeue buffer: %s (%d).\n",
-+				fprintf(stderr, "Unable to dequeue buffer: %s (%d).\n",
- 					strerror(errno), errno);
- 				goto done;
- 			}
-@@ -1550,7 +1564,7 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
- 
- 		clock_gettime(CLOCK_MONOTONIC, &ts);
- 		get_ts_flags(buf.flags, &ts_type, &ts_source);
--		printf("%u (%u) [%c] %s %u %u B %ld.%06ld %ld.%06ld %.3f fps ts %s/%s\n", i, buf.index,
-+		fprintf(stderr, "%u (%u) [%c] %s %u %u B %ld.%06ld %ld.%06ld %.3f fps ts %s/%s\n", i, buf.index,
- 			(buf.flags & V4L2_BUF_FLAG_ERROR) ? 'E' : '-',
- 			v4l2_field_name(buf.field),
- 			buf.sequence, buf.bytesused, buf.timestamp.tv_sec,
-@@ -1563,6 +1577,9 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
- 		if (video_is_capture(dev) && pattern && !skip)
- 			video_save_image(dev, &buf, pattern, i);
- 
-+		if (video_is_capture(dev) && do_stdout && !skip)
-+			video_stdout_image(dev, &buf);
-+
- 		if (skip)
- 			--skip;
- 
-@@ -1577,7 +1594,7 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
- 
- 		ret = video_queue_buffer(dev, buf.index, fill);
- 		if (ret < 0) {
--			printf("Unable to requeue buffer: %s (%d).\n",
-+			fprintf(stderr, "Unable to requeue buffer: %s (%d).\n",
- 				strerror(errno), errno);
- 			goto done;
- 		}
-@@ -1587,7 +1604,7 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
- 	video_enable(dev, 0);
- 
- 	if (nframes == 0) {
--		printf("No frames captured.\n");
-+		fprintf(stderr, "No frames captured.\n");
- 		goto done;
- 	}
- 
-@@ -1604,7 +1621,7 @@ static int video_do_capture(struct device *dev, unsigned int nframes,
- 	bps = size/(ts.tv_nsec/1000.0+1000000.0*ts.tv_sec)*1000000.0;
- 	fps = i/(ts.tv_nsec/1000.0+1000000.0*ts.tv_sec)*1000000.0;
- 
--	printf("Captured %u frames in %lu.%06lu seconds (%f fps, %f B/s).\n",
-+	fprintf(stderr, "Captured %u frames in %lu.%06lu seconds (%f fps, %f B/s).\n",
- 		i, ts.tv_sec, ts.tv_nsec/1000, fps, bps);
- 
- done:
-@@ -1616,42 +1633,42 @@ done:
- 
- static void usage(const char *argv0)
- {
--	printf("Usage: %s [options] device\n", argv0);
--	printf("Supported options:\n");
--	printf("-B, --buffer-type		Buffer type (\"capture\", \"output\",\n");
--	printf("                                \"capture-mplane\" or \"output-mplane\")\n");
--	printf("-c, --capture[=nframes]		Capture frames\n");
--	printf("-C, --check-overrun		Verify dequeued frames for buffer overrun\n");
--	printf("-d, --delay			Delay (in ms) before requeuing buffers\n");
--	printf("-f, --format format		Set the video format\n");
--	printf("-F, --file[=name]		Read/write frames from/to disk\n");
--	printf("\tFor video capture devices, the first '#' character in the file name is\n");
--	printf("\texpanded to the frame sequence number. The default file name is\n");
--	printf("\t'frame-#.bin'.\n");
--	printf("-h, --help			Show this help screen\n");
--	printf("-i, --input input		Select the video input\n");
--	printf("-I, --fill-frames		Fill frames with check pattern before queuing them\n");
--	printf("-l, --list-controls		List available controls\n");
--	printf("-n, --nbufs n			Set the number of video buffers\n");
--	printf("-p, --pause			Pause before starting the video stream\n");
--	printf("-q, --quality n			MJPEG quality (0-100)\n");
--	printf("-r, --get-control ctrl		Get control 'ctrl'\n");
--	printf("-R, --realtime=[priority]	Enable realtime RR scheduling\n");
--	printf("-s, --size WxH			Set the frame size\n");
--	printf("-t, --time-per-frame num/denom	Set the time per frame (eg. 1/25 = 25 fps)\n");
--	printf("-u, --userptr			Use the user pointers streaming method\n");
--	printf("-w, --set-control 'ctrl value'	Set control 'ctrl' to 'value'\n");
--	printf("    --enum-formats		Enumerate formats\n");
--	printf("    --enum-inputs		Enumerate inputs\n");
--	printf("    --fd                        Use a numeric file descriptor insted of a device\n");
--	printf("    --field			Interlaced format field order\n");
--	printf("    --no-query			Don't query capabilities on open\n");
--	printf("    --offset			User pointer buffer offset from page start\n");
--	printf("    --requeue-last		Requeue the last buffers before streamoff\n");
--	printf("    --timestamp-source		Set timestamp source on output buffers [eof, soe]\n");
--	printf("    --skip n			Skip the first n frames\n");
--	printf("    --sleep-forever		Sleep forever after configuring the device\n");
--	printf("    --stride value		Line stride in bytes\n");
-+	fprintf(stderr, "Usage: %s [options] device\n", argv0);
-+	fprintf(stderr, "Supported options:\n");
-+	fprintf(stderr, "-B, --buffer-type		Buffer type (\"capture\", \"output\",\n");
-+	fprintf(stderr, "                                \"capture-mplane\" or \"output-mplane\")\n");
-+	fprintf(stderr, "-c, --capture[=nframes]		Capture frames\n");
-+	fprintf(stderr, "-C, --check-overrun		Verify dequeued frames for buffer overrun\n");
-+	fprintf(stderr, "-d, --delay			Delay (in ms) before requeuing buffers\n");
-+	fprintf(stderr, "-f, --format format		Set the video format\n");
-+	fprintf(stderr, "-F, --file[=name]		Read/write frames from/to disk\n");
-+	fprintf(stderr, "\tFor video capture devices, the first '#' character in the file name is\n");
-+	fprintf(stderr, "\texpanded to the frame sequence number. The default file name is\n");
-+	fprintf(stderr, "\t'frame-#.bin'.\n");
-+	fprintf(stderr, "-h, --help			Show this help screen\n");
-+	fprintf(stderr, "-i, --input input		Select the video input\n");
-+	fprintf(stderr, "-I, --fill-frames		Fill frames with check pattern before queuing them\n");
-+	fprintf(stderr, "-l, --list-controls		List available controls\n");
-+	fprintf(stderr, "-n, --nbufs n			Set the number of video buffers\n");
-+	fprintf(stderr, "-p, --pause			Pause before starting the video stream\n");
-+	fprintf(stderr, "-q, --quality n			MJPEG quality (0-100)\n");
-+	fprintf(stderr, "-r, --get-control ctrl		Get control 'ctrl'\n");
-+	fprintf(stderr, "-R, --realtime=[priority]	Enable realtime RR scheduling\n");
-+	fprintf(stderr, "-s, --size WxH			Set the frame size\n");
-+	fprintf(stderr, "-t, --time-per-frame num/denom	Set the time per frame (eg. 1/25 = 25 fps)\n");
-+	fprintf(stderr, "-u, --userptr			Use the user pointers streaming method\n");
-+	fprintf(stderr, "-w, --set-control 'ctrl value'	Set control 'ctrl' to 'value'\n");
-+	fprintf(stderr, "    --enum-formats		Enumerate formats\n");
-+	fprintf(stderr, "    --enum-inputs		Enumerate inputs\n");
-+	fprintf(stderr, "    --fd                        Use a numeric file descriptor insted of a device\n");
-+	fprintf(stderr, "    --field			Interlaced format field order\n");
-+	fprintf(stderr, "    --no-query			Don't query capabilities on open\n");
-+	fprintf(stderr, "    --offset			User pointer buffer offset from page start\n");
-+	fprintf(stderr, "    --requeue-last		Requeue the last buffers before streamoff\n");
-+	fprintf(stderr, "    --timestamp-source		Set timestamp source on output buffers [eof, soe]\n");
-+	fprintf(stderr, "    --skip n			Skip the first n frames\n");
-+	fprintf(stderr, "    --sleep-forever		Sleep forever after configuring the device\n");
-+	fprintf(stderr, "    --stride value		Line stride in bytes\n");
- }
- 
- #define OPT_ENUM_FORMATS	256
-@@ -1665,6 +1682,7 @@ static void usage(const char *argv0)
- #define OPT_FD			264
- #define OPT_TSTAMP_SRC		265
- #define OPT_FIELD		266
-+#define OPT_STDOUT		267
- 
- static struct option opts[] = {
- 	{"buffer-type", 1, 0, 'B'},
-@@ -1677,6 +1695,7 @@ static struct option opts[] = {
- 	{"field", 1, 0, OPT_FIELD},
- 	{"file", 2, 0, 'F'},
- 	{"fill-frames", 0, 0, 'I'},
-+	{"stdout", 0, 0, OPT_STDOUT},
- 	{"format", 1, 0, 'f'},
- 	{"help", 0, 0, 'h'},
- 	{"input", 1, 0, 'i'},
-@@ -1717,7 +1736,8 @@ int main(int argc, char *argv[])
- 	int do_list_controls = 0, do_get_control = 0, do_set_control = 0;
- 	int do_sleep_forever = 0, do_requeue_last = 0;
- 	int do_rt = 0;
--	int no_query = 0;
-+	int no_query = 0; 
-+	int do_stdout = 0;
- 	char *endptr;
- 	int c;
- 
-@@ -1755,7 +1775,7 @@ int main(int argc, char *argv[])
- 		case 'B':
- 			ret = v4l2_buf_type_from_string(optarg);
- 			if (ret == -1) {
--				printf("Bad buffer type \"%s\"\n", optarg);
-+				fprintf(stderr, "Bad buffer type \"%s\"\n", optarg);
- 				return 1;
- 			}
- 			video_set_buf_type(&dev, ret);
-@@ -1775,7 +1795,7 @@ int main(int argc, char *argv[])
- 			do_set_format = 1;
- 			info = v4l2_format_by_name(optarg);
- 			if (info == NULL) {
--				printf("Unsupported video format '%s'\n", optarg);
-+				fprintf(stderr, "Unsupported video format '%s'\n", optarg);
- 				return 1;
- 			}
- 			pixelformat = info->fourcc;
-@@ -1812,7 +1832,7 @@ int main(int argc, char *argv[])
- 		case 'r':
- 			ctrl_name = strtol(optarg, &endptr, 0);
- 			if (*endptr != 0) {
--				printf("Invalid control name '%s'\n", optarg);
-+				fprintf(stderr, "Invalid control name '%s'\n", optarg);
- 				return 1;
- 			}
- 			do_get_control = 1;
-@@ -1826,12 +1846,12 @@ int main(int argc, char *argv[])
- 			do_set_format = 1;
- 			width = strtol(optarg, &endptr, 10);
- 			if (*endptr != 'x' || endptr == optarg) {
--				printf("Invalid size '%s'\n", optarg);
-+				fprintf(stderr, "Invalid size '%s'\n", optarg);
- 				return 1;
- 			}
- 			height = strtol(endptr + 1, &endptr, 10);
- 			if (*endptr != 0) {
--				printf("Invalid size '%s'\n", optarg);
-+				fprintf(stderr, "Invalid size '%s'\n", optarg);
- 				return 1;
- 			}
- 			break;
-@@ -1839,12 +1859,12 @@ int main(int argc, char *argv[])
- 			do_set_time_per_frame = 1;
- 			time_per_frame.numerator = strtol(optarg, &endptr, 10);
- 			if (*endptr != '/' || endptr == optarg) {
--				printf("Invalid time per frame '%s'\n", optarg);
-+				fprintf(stderr, "Invalid time per frame '%s'\n", optarg);
- 				return 1;
- 			}
- 			time_per_frame.denominator = strtol(endptr + 1, &endptr, 10);
- 			if (*endptr != 0) {
--				printf("Invalid time per frame '%s'\n", optarg);
-+				fprintf(stderr, "Invalid time per frame '%s'\n", optarg);
- 				return 1;
- 			}
- 			break;
-@@ -1854,12 +1874,12 @@ int main(int argc, char *argv[])
- 		case 'w':
- 			ctrl_name = strtol(optarg, &endptr, 0);
- 			if (*endptr != ' ' || endptr == optarg) {
--				printf("Invalid control name '%s'\n", optarg);
-+				fprintf(stderr, "Invalid control name '%s'\n", optarg);
- 				return 1;
- 			}
- 			ctrl_value = strtol(endptr + 1, &endptr, 0);
- 			if (*endptr != 0) {
--				printf("Invalid control value '%s'\n", optarg);
-+				fprintf(stderr, "Invalid control value '%s'\n", optarg);
- 				return 1;
- 			}
- 			do_set_control = 1;
-@@ -1873,16 +1893,16 @@ int main(int argc, char *argv[])
- 		case OPT_FD:
- 			ret = atoi(optarg);
- 			if (ret < 0) {
--				printf("Bad file descriptor %d\n", ret);
-+				fprintf(stderr, "Bad file descriptor %d\n", ret);
- 				return 1;
- 			}
--			printf("Using file descriptor %d\n", ret);
-+			fprintf(stderr, "Using file descriptor %d\n", ret);
- 			video_set_fd(&dev, ret);
- 			break;
- 		case OPT_FIELD:
- 			field = v4l2_field_from_string(optarg);
- 			if (field == (enum v4l2_field)-1) {
--				printf("Invalid field order '%s'\n", optarg);
-+				fprintf(stderr, "Invalid field order '%s'\n", optarg);
- 				return 1;
- 			}
- 			break;
-@@ -1907,22 +1927,25 @@ int main(int argc, char *argv[])
- 			} else if (!strcmp(optarg, "soe")) {
- 				dev.buffer_output_flags |= V4L2_BUF_FLAG_TSTAMP_SRC_SOE;
- 			} else {
--				printf("Invalid timestamp source %s\n", optarg);
-+				fprintf(stderr, "Invalid timestamp source %s\n", optarg);
- 				return 1;
- 			}
- 			break;
- 		case OPT_USERPTR_OFFSET:
- 			userptr_offset = atoi(optarg);
- 			break;
-+		case OPT_STDOUT:
-+			do_stdout = 1;
-+			break;
- 		default:
--			printf("Invalid option -%c\n", c);
--			printf("Run %s -h for help.\n", argv[0]);
-+			fprintf(stderr, "Invalid option -%c\n", c);
-+			fprintf(stderr, "Run %s -h for help.\n", argv[0]);
- 			return 1;
- 		}
- 	}
- 
- 	if ((fill_mode & BUFFER_FILL_PADDING) && memtype != V4L2_MEMORY_USERPTR) {
--		printf("Buffer overrun can only be checked in USERPTR mode.\n");
-+		fprintf(stderr, "Buffer overrun can only be checked in USERPTR mode.\n");
- 		return 1;
- 	}
- 
-@@ -1959,7 +1982,7 @@ int main(int argc, char *argv[])
- 		ret = get_control(&dev, ctrl_name,
- 				  get_control_type(&dev, ctrl_name), &val);
- 		if (ret >= 0)
--			printf("Control 0x%08x value %" PRId64 "\n", ctrl_name, val);
-+			fprintf(stderr, "Control 0x%08x value %" PRId64 "\n", ctrl_name, val);
- 	}
- 
- 	if (do_set_control)
-@@ -1970,7 +1993,7 @@ int main(int argc, char *argv[])
- 		video_list_controls(&dev);
- 
- 	if (do_enum_formats) {
--		printf("- Available formats:\n");
-+		fprintf(stderr, "- Available formats:\n");
- 		video_enum_formats(&dev, V4L2_BUF_TYPE_VIDEO_CAPTURE);
- 		video_enum_formats(&dev, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
- 		video_enum_formats(&dev, V4L2_BUF_TYPE_VIDEO_OUTPUT);
-@@ -1979,14 +2002,14 @@ int main(int argc, char *argv[])
- 	}
- 
- 	if (do_enum_inputs) {
--		printf("- Available inputs:\n");
-+		fprintf(stderr, "- Available inputs:\n");
- 		video_enum_inputs(&dev);
- 	}
- 
- 	if (do_set_input) {
- 		video_set_input(&dev, input);
- 		ret = video_get_input(&dev);
--		printf("Input %d selected\n", ret);
-+		fprintf(stderr, "Input %d selected\n", ret);
- 	}
- 
- 	/* Set the video format. */
-@@ -2028,7 +2051,7 @@ int main(int argc, char *argv[])
- 	}
- 
- 	if (do_pause) {
--		printf("Press enter to start capture\n");
-+		fprintf(stderr, "Press enter to start capture\n");
- 		getchar();
- 	}
- 
-@@ -2037,12 +2060,12 @@ int main(int argc, char *argv[])
- 		sched.sched_priority = rt_priority;
- 		ret = sched_setscheduler(0, SCHED_RR, &sched);
- 		if (ret < 0)
--			printf("Failed to select RR scheduler: %s (%d)\n",
-+			fprintf(stderr, "Failed to select RR scheduler: %s (%d)\n",
- 				strerror(errno), errno);
- 	}
- 
- 	if (video_do_capture(&dev, nframes, skip, delay, filename,
--			     do_requeue_last, fill_mode) < 0) {
-+			     do_requeue_last, fill_mode, do_stdout) < 0) {
- 		video_close(&dev);
- 		return 1;
- 	}
--- 
-1.7.9.5
-
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 a192d1a..deffa4a 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb
@@ -3,8 +3,8 @@
 LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
 
 SRC_URI = "git://git.ideasonboard.org/yavta.git \
-           file://0001-Add-stdout-mode-to-allow-streaming-over-the-network-.patch"
-SRCREV = "7e9f28bedc1ed3205fb5164f686aea96f27a0de2"
+          "
+SRCREV = "65f740aa1758531fd810339bc1b7d1d33666e28a"
 
 PV = "0.0"
 PR = "r2"
diff --git a/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.23.1.bb b/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.23.1.bb
index 4740e0c..8763c68 100644
--- a/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.23.1.bb
+++ b/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.23.1.bb
@@ -72,7 +72,7 @@
 
     # Support for python
     install -d ${D}${PYTHON_SITEPACKAGES_DIR}/gps
-    install -m 755 ${S}/gps/*.py ${D}${PYTHON_SITEPACKAGES_DIR}/gps
+    install -m 755 ${D}${libdir}/gps/*.py ${D}${PYTHON_SITEPACKAGES_DIR}/gps
 }
 
 PACKAGES =+ "libgps libgpsd python3-pygps gpsd-udev gpsd-conf gpsd-gpsctl gps-utils"
diff --git a/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.5.bb b/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.5.bb
deleted file mode 100644
index 173c2ca..0000000
--- a/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.5.bb
+++ /dev/null
@@ -1,109 +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 = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-SRC_URI = "git://github.com/linux-audit/${BPN}-userspace.git;branch=master \
-           file://Fixed-swig-host-contamination-issue.patch \
-           file://auditd \
-           file://auditd.service \
-           file://audit-volatile.conf \
-"
-
-S = "${WORKDIR}/git"
-SRCREV = "c382a4925a7d0d1b332a2f4e689c71d71b0005a5"
-
-inherit autotools python3native update-rc.d systemd
-
-UPDATERCPN = "auditd"
-INITSCRIPT_NAME = "auditd"
-INITSCRIPT_PARAMS = "defaults"
-
-SYSTEMD_PACKAGES = "auditd"
-SYSTEMD_SERVICE:auditd = "auditd.service"
-
-DEPENDS = "python3 tcp-wrappers libcap-ng linux-libc-headers swig-native"
-
-EXTRA_OECONF = " --with-libwrap \
-        --enable-gssapi-krb5=no \
-        --with-libcap-ng=yes \
-        --with-python3=yes \
-        --libdir=${base_libdir} \
-        --sbindir=${base_sbindir} \
-        --without-python \
-        --without-golang \
-        --disable-zos-remote \
-        --with-arm=yes \
-        --with-aarch64=yes \
-        "
-
-EXTRA_OEMAKE = "PYLIBVER='python${PYTHON_BASEVERSION}' \
-	PYINC='${STAGING_INCDIR}/$(PYLIBVER)' \
-	pyexecdir=${libdir}/python${PYTHON_BASEVERSION}/site-packages \
-	STDINC='${STAGING_INCDIR}' \
-	pkgconfigdir=${libdir}/pkgconfig \
-	"
-
-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 ${base_libdir}/libaudit.so.1* ${base_libdir}/libauparse.so.*"
-FILES:auditd = "${bindir}/* ${base_sbindir}/* ${sysconfdir}/* ${datadir}/audit/*"
-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"
-RDEPENDS:auditd = "bash"
-
-do_install:append() {
-	rm -f ${D}/${libdir}/python${PYTHON_BASEVERSION}/site-packages/*.a
-	rm -f ${D}/${libdir}/python${PYTHON_BASEVERSION}/site-packages/*.la
-
-	# reuse auditd config
-	[ ! -e ${D}/etc/default ] && mkdir ${D}/etc/default
-	mv ${D}/etc/sysconfig/auditd ${D}/etc/default
-	rmdir ${D}/etc/sysconfig/
-
-	# replace init.d
-	install -D -m 0755 ${WORKDIR}/auditd ${D}/etc/init.d/auditd
-	rm -rf ${D}/etc/rc.d
-
-	if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-		# install systemd unit files
-		install -d ${D}${systemd_unitdir}/system
-		install -m 0644 ${WORKDIR}/auditd.service ${D}${systemd_unitdir}/system
-
-		install -d ${D}${sysconfdir}/tmpfiles.d/
-		install -m 0644 ${WORKDIR}/audit-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
-	fi
-
-	# audit-2.5 doesn't install any rules by default, so we do that here
-	mkdir -p ${D}/etc/audit ${D}/etc/audit/rules.d
-	cp ${S}/rules/10-base-config.rules ${D}/etc/audit/rules.d/audit.rules
-
-	chmod 750 ${D}/etc/audit ${D}/etc/audit/rules.d
-	chmod 640 ${D}/etc/audit/auditd.conf ${D}/etc/audit/rules.d/audit.rules
-
-	# Based on the audit.spec "Copy default rules into place on new installation"
-	cp ${D}/etc/audit/rules.d/audit.rules ${D}/etc/audit/audit.rules
-
-	# Create /var/spool/audit directory for audisp-remote
-	install -m 0700 -d ${D}${localstatedir}/spool/audit
-}
diff --git a/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.6.bb b/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.6.bb
new file mode 100644
index 0000000..2d75232
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.6.bb
@@ -0,0 +1,109 @@
+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 = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = "git://github.com/linux-audit/${BPN}-userspace.git;branch=master \
+           file://Fixed-swig-host-contamination-issue.patch \
+           file://auditd \
+           file://auditd.service \
+           file://audit-volatile.conf \
+"
+
+S = "${WORKDIR}/git"
+SRCREV = "b1b2728ccd83eeb0dffe29c01a5c97e14e6a0d8a"
+
+inherit autotools python3native update-rc.d systemd
+
+UPDATERCPN = "auditd"
+INITSCRIPT_NAME = "auditd"
+INITSCRIPT_PARAMS = "defaults"
+
+SYSTEMD_PACKAGES = "auditd"
+SYSTEMD_SERVICE:auditd = "auditd.service"
+
+DEPENDS = "python3 tcp-wrappers libcap-ng linux-libc-headers swig-native"
+
+EXTRA_OECONF = " --with-libwrap \
+        --enable-gssapi-krb5=no \
+        --with-libcap-ng=yes \
+        --with-python3=yes \
+        --libdir=${base_libdir} \
+        --sbindir=${base_sbindir} \
+        --without-python \
+        --without-golang \
+        --disable-zos-remote \
+        --with-arm=yes \
+        --with-aarch64=yes \
+        "
+
+EXTRA_OEMAKE = "PYLIBVER='python${PYTHON_BASEVERSION}' \
+	PYINC='${STAGING_INCDIR}/$(PYLIBVER)' \
+	pyexecdir=${libdir}/python${PYTHON_BASEVERSION}/site-packages \
+	STDINC='${STAGING_INCDIR}' \
+	pkgconfigdir=${libdir}/pkgconfig \
+	"
+
+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 ${base_libdir}/libaudit.so.1* ${base_libdir}/libauparse.so.*"
+FILES:auditd = "${bindir}/* ${base_sbindir}/* ${sysconfdir}/* ${datadir}/audit/*"
+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"
+RDEPENDS:auditd = "bash"
+
+do_install:append() {
+	rm -f ${D}/${libdir}/python${PYTHON_BASEVERSION}/site-packages/*.a
+	rm -f ${D}/${libdir}/python${PYTHON_BASEVERSION}/site-packages/*.la
+
+	# reuse auditd config
+	[ ! -e ${D}/etc/default ] && mkdir ${D}/etc/default
+	mv ${D}/etc/sysconfig/auditd ${D}/etc/default
+	rmdir ${D}/etc/sysconfig/
+
+	# replace init.d
+	install -D -m 0755 ${WORKDIR}/auditd ${D}/etc/init.d/auditd
+	rm -rf ${D}/etc/rc.d
+
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+		# install systemd unit files
+		install -d ${D}${systemd_unitdir}/system
+		install -m 0644 ${WORKDIR}/auditd.service ${D}${systemd_unitdir}/system
+
+		install -d ${D}${sysconfdir}/tmpfiles.d/
+		install -m 0644 ${WORKDIR}/audit-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
+	fi
+
+	# audit-2.5 doesn't install any rules by default, so we do that here
+	mkdir -p ${D}/etc/audit ${D}/etc/audit/rules.d
+	cp ${S}/rules/10-base-config.rules ${D}/etc/audit/rules.d/audit.rules
+
+	chmod 750 ${D}/etc/audit ${D}/etc/audit/rules.d
+	chmod 640 ${D}/etc/audit/auditd.conf ${D}/etc/audit/rules.d/audit.rules
+
+	# Based on the audit.spec "Copy default rules into place on new installation"
+	cp ${D}/etc/audit/rules.d/audit.rules ${D}/etc/audit/audit.rules
+
+	# Create /var/spool/audit directory for audisp-remote
+	install -m 0700 -d ${D}${localstatedir}/spool/audit
+}
diff --git a/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb b/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb
index 00cca53..6273edd 100644
--- a/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb
@@ -31,6 +31,9 @@
     LIBDIR=${libdir} \
     USRLIBDIR=${libdir} \
     INCLUDEDIR=${includedir} \
+    ETCDIR=${sysconfdir} \
+    SHAREDIR=${datadir}/keyutils \
+    MANDIR=${datadir}/man \
     BUILDFOR=${SITEINFO_BITS}-bit \
     NO_GLIBC_KEYERR=1 \
     "
@@ -40,18 +43,6 @@
     oe_runmake DESTDIR=${D} install
 }
 
-do_install:append:class-nativesdk() {
-    install -d ${D}${datadir}
-    src_dir="${D}${target_datadir}"
-    mv $src_dir/* ${D}${datadir}
-    par_dir=`dirname $src_dir`
-    rmdir $src_dir $par_dir
-
-    install -d ${D}${sysconfdir}
-    mv ${D}/etc/* ${D}${sysconfdir}/
-    rmdir ${D}/etc
-}
-
 do_install_ptest () {
     cp -r ${S}/tests ${D}${PTEST_PATH}/
     sed -i -e 's/OSDIST=Unknown/OSDIST=${DISTRO}/' ${D}${PTEST_PATH}/tests/prepare.inc.sh
diff --git a/meta-openembedded/meta-oe/recipes-support/asio/asio_1.18.1.bb b/meta-openembedded/meta-oe/recipes-support/asio/asio_1.18.1.bb
deleted file mode 100644
index 530e061..0000000
--- a/meta-openembedded/meta-oe/recipes-support/asio/asio_1.18.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Asio is C++ library for network and low-level I/O programming"
-DESCRIPTION = "Asio is a cross-platform C++ library for network and low-level \
-        I/O programming that provides developers with a consistent asynchronous \
-        model using a modern C++ approach."
-AUTHOR = "Christopher M. Kohlhoff (chris at kohlhoff dot com)"
-HOMEPAGE = "http://think-async.com/Asio"
-SECTION = "libs"
-LICENSE = "BSL-1.0"
-
-DEPENDS = "openssl"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2"
-
-inherit autotools
-
-ALLOW_EMPTY:${PN} = "1"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=de86c8210a433f72bd3cc98e797a6084"
-
-SRC_URI[md5sum] = "00807b2e976f467b3cec85d1589f0825"
-SRC_URI[sha256sum] = "4af9875df5497fdd507231f4b7346e17d96fc06fe10fd30e2b3750715a329113"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2"
-
-PACKAGECONFIG ??= "boost"
-
-PACKAGECONFIG[boost] = "--with-boost=${STAGING_LIBDIR},--without-boost,boost"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/asio/asio_1.20.0.bb b/meta-openembedded/meta-oe/recipes-support/asio/asio_1.20.0.bb
new file mode 100644
index 0000000..cedcf9f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/asio/asio_1.20.0.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Asio is C++ library for network and low-level I/O programming"
+DESCRIPTION = "Asio is a cross-platform C++ library for network and low-level \
+        I/O programming that provides developers with a consistent asynchronous \
+        model using a modern C++ approach."
+AUTHOR = "Christopher M. Kohlhoff (chris at kohlhoff dot com)"
+HOMEPAGE = "http://think-async.com/Asio"
+SECTION = "libs"
+LICENSE = "BSL-1.0"
+
+DEPENDS = "openssl"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2"
+
+inherit autotools
+
+ALLOW_EMPTY:${PN} = "1"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=416f4cc4f79551b690babb14ef1a5799"
+
+SRC_URI[sha256sum] = "204374d3cadff1b57a63f4c343cbadcee28374c072dc04b549d772dbba9f650c"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2"
+
+PACKAGECONFIG ??= "boost"
+
+PACKAGECONFIG[boost] = "--with-boost=${STAGING_LIBDIR},--without-boost,boost"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.0.4.bb b/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.0.4.bb
deleted file mode 100644
index b478b86..0000000
--- a/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.0.4.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "A garbage collector for C and C++"
-
-DESCRIPTION = "The Boehm-Demers-Weiser conservative garbage collector can be\
- used as a garbage collecting replacement for C malloc or C++ new. It allows\
- you to allocate memory basically as you normally would, without explicitly\
- deallocating memory that is no longer useful. The collector automatically\
- recycles memory when it determines that it can no longer be otherwise\
- accessed.\
-  The collector is also used by a number of programming language\
- implementations that either use C as intermediate code, want to facilitate\
- easier interoperation with C libraries, or just prefer the simple collector\
- interface.\
-  Alternatively, the garbage collector may be used as a leak detector for C\
- or C++ programs, though that is not its primary goal.\
-  Empirically, this collector works with most unmodified C programs, simply\
- by replacing malloc with GC_malloc calls, replacing realloc with GC_realloc\
- calls, and removing free calls."
-
-HOMEPAGE = "http://www.hboehm.info/gc/"
-SECTION = "devel"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://README.QUICK;md5=81b447d779e278628c843aef92f088fa"
-
-DEPENDS = "libatomic-ops"
-
-SRCREV = "d3dede3ce4462cd82a15f161af797ca51654546a"
-SRC_URI = "git://github.com/ivmai/bdwgc.git;branch=release-8_0"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF += "--enable-cpluscplus"
-
-CFLAGS:append:libc-musl = " -D_GNU_SOURCE -DNO_GETCONTEXT -DSEARCH_FOR_DATA_START -DUSE_MMAP -DHAVE_DL_ITERATE_PHDR"
-
-FILES:${PN}-doc = "${datadir}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.2.0.bb b/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.2.0.bb
new file mode 100644
index 0000000..ad94009
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.2.0.bb
@@ -0,0 +1,39 @@
+SUMMARY = "A garbage collector for C and C++"
+
+DESCRIPTION = "The Boehm-Demers-Weiser conservative garbage collector can be\
+ used as a garbage collecting replacement for C malloc or C++ new. It allows\
+ you to allocate memory basically as you normally would, without explicitly\
+ deallocating memory that is no longer useful. The collector automatically\
+ recycles memory when it determines that it can no longer be otherwise\
+ accessed.\
+  The collector is also used by a number of programming language\
+ implementations that either use C as intermediate code, want to facilitate\
+ easier interoperation with C libraries, or just prefer the simple collector\
+ interface.\
+  Alternatively, the garbage collector may be used as a leak detector for C\
+ or C++ programs, though that is not its primary goal.\
+  Empirically, this collector works with most unmodified C programs, simply\
+ by replacing malloc with GC_malloc calls, replacing realloc with GC_realloc\
+ calls, and removing free calls."
+
+HOMEPAGE = "http://www.hboehm.info/gc/"
+SECTION = "devel"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.QUICK;md5=7912d9213b3547f8a81aadd08893fe84"
+
+DEPENDS = "libatomic-ops"
+
+SRCREV = "47e9106c17b72e9ee5501308f69ea94531e798b3"
+SRC_URI = "git://github.com/ivmai/bdwgc.git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF += "--enable-cpluscplus"
+
+CFLAGS:append:libc-musl = " -D_GNU_SOURCE -DNO_GETCONTEXT -DSEARCH_FOR_DATA_START -DUSE_MMAP -DHAVE_DL_ITERATE_PHDR"
+
+FILES:${PN}-doc = "${datadir}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/colord/colord-native.bb b/meta-openembedded/meta-oe/recipes-support/colord/colord-native.bb
index 65fa0f4..64dd94a 100644
--- a/meta-openembedded/meta-oe/recipes-support/colord/colord-native.bb
+++ b/meta-openembedded/meta-oe/recipes-support/colord/colord-native.bb
@@ -2,7 +2,7 @@
 
 FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}-native:"
 
-inherit meson native
+inherit meson pkgconfig native
 
 DEPENDS += " \
     meson-native \
diff --git a/meta-openembedded/meta-oe/recipes-support/colord/colord.bb b/meta-openembedded/meta-oe/recipes-support/colord/colord.bb
index 66dc4a5..563a0ee 100644
--- a/meta-openembedded/meta-oe/recipes-support/colord/colord.bb
+++ b/meta-openembedded/meta-oe/recipes-support/colord/colord.bb
@@ -1,6 +1,6 @@
 require ${BPN}.inc
 
-inherit meson gobject-introspection gsettings gettext bash-completion systemd features_check useradd
+inherit meson gobject-introspection gsettings gettext bash-completion systemd features_check useradd pkgconfig
 
 # polkit and gobject-introspection are mandatory and cannot be configured
 REQUIRED_DISTRO_FEATURES = "polkit gobject-introspection-data"
diff --git a/meta-openembedded/meta-oe/recipes-support/driverctl/driverctl_0.111.bb b/meta-openembedded/meta-oe/recipes-support/driverctl/driverctl_0.111.bb
new file mode 100644
index 0000000..7404f40
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/driverctl/driverctl_0.111.bb
@@ -0,0 +1,28 @@
+SUMMARY = "driverctl is a device driver control utility for Linux"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/LGPL-2.1-only;md5=1a6d268fd218675ffea8be556788b780"
+
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+DEPENDS = "systemd"
+RDEPENDS:${PN} += "bash bash-completion"
+
+SRC_URI = " git://gitlab.com/driverctl/driverctl.git"
+SRCREV = "fa9dce43d1a667d6e6e26895fbed01b3b04362c9"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig systemd features_check
+
+FILES:${PN} += "${libdir}"
+FILES:${PN} += "${libdir}/udev"
+FILES:${PN} += "${libdir}/udev/rules.d"
+FILES:${PN} += "${systemd_unitdir}"
+FILES:${PN} += "${systemd_unitdir}/system"
+FILES:${PN} += "${datadir}"
+FILES:${PN} += "${datadir}/bash-completion"
+FILES:${PN} += "${datadir}/bash-completion/completions"
+
+do_install () {
+	oe_runmake install DESTDIR=${D}
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0001-Fix-FIPS-mode-support-and-build-with-OpenSSL-3.0.patch b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0001-Fix-FIPS-mode-support-and-build-with-OpenSSL-3.0.patch
new file mode 100644
index 0000000..04fe644
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0001-Fix-FIPS-mode-support-and-build-with-OpenSSL-3.0.patch
@@ -0,0 +1,43 @@
+From f703b1184229796d504a2e833f72ace4cc605d15 Mon Sep 17 00:00:00 2001
+From: Ondrej Holy <oholy@redhat.com>
+Date: Wed, 12 May 2021 12:48:15 +0200
+Subject: [PATCH 1/2] Fix FIPS mode support and build with OpenSSL 3.0
+
+FreeRDP fails to build with OpenSSL 3.0 because of usage of the `FIPS_mode`
+and `FIPS_mode_set` functions, which were removed there. Just a note that
+the FIPS mode is not supported by OpenSSL 1.1.* although the mentioned
+functions are still there (see https://wiki.openssl.org/index.php/FIPS_modules).
+Let's make FreeRDP build with OpenSSL 3.0 and fix the FIPS mode support.
+
+See: https://bugzilla.redhat.com/show_bug.cgi?id=1952937
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ winpr/libwinpr/utils/ssl.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/winpr/libwinpr/utils/ssl.c b/winpr/libwinpr/utils/ssl.c
+index 3a8590390..03b23af43 100644
+--- a/winpr/libwinpr/utils/ssl.c
++++ b/winpr/libwinpr/utils/ssl.c
+@@ -244,9 +244,17 @@ static BOOL winpr_enable_fips(DWORD flags)
+ #else
+ 		WLog_DBG(TAG, "Ensuring openssl fips mode is ENabled");
+ 
++#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3)
++		if (!EVP_default_properties_is_fips_enabled(NULL))
++#else
+ 		if (FIPS_mode() != 1)
++#endif
+ 		{
++#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3)
++			if (EVP_set_default_properties(NULL, "fips=yes"))
++#else
+ 			if (FIPS_mode_set(1))
++#endif
+ 				WLog_INFO(TAG, "Openssl fips mode ENabled!");
+ 			else
+ 			{
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0002-winpr-avoid-calling-FIPS_mode-with-OpenSSL-3.0.patch b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0002-winpr-avoid-calling-FIPS_mode-with-OpenSSL-3.0.patch
new file mode 100644
index 0000000..728638e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0002-winpr-avoid-calling-FIPS_mode-with-OpenSSL-3.0.patch
@@ -0,0 +1,28 @@
+From 4dbf108c0ae5e997d5c432f3da4b4c5fd7b35373 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Sun, 1 Aug 2021 12:14:43 -0400
+Subject: [PATCH 2/2] winpr: avoid calling FIPS_mode() with OpenSSL 3.0
+
+Fixes: 26bf2816c3e0daeaf524c47cf0fcda8ae13b65ad
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ winpr/libwinpr/utils/ssl.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/winpr/libwinpr/utils/ssl.c b/winpr/libwinpr/utils/ssl.c
+index 03b23af43..74ef156e7 100644
+--- a/winpr/libwinpr/utils/ssl.c
++++ b/winpr/libwinpr/utils/ssl.c
+@@ -364,6 +364,8 @@ BOOL winpr_FIPSMode(void)
+ {
+ #if (OPENSSL_VERSION_NUMBER < 0x10001000L) || defined(LIBRESSL_VERSION_NUMBER)
+ 	return FALSE;
++#elif defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3)
++	return (EVP_default_properties_is_fips_enabled(NULL) == 1);
+ #else
+ 	return (FIPS_mode() == 1);
+ #endif
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.3.0.bb b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.3.0.bb
index f468344..78af538 100644
--- a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.3.0.bb
@@ -16,6 +16,8 @@
 SRCREV = "14c7f7aed7dd4e2454ee0cd81028b9f790885021"
 SRC_URI = "git://github.com/FreeRDP/FreeRDP.git;branch=stable-2.0 \
     file://winpr-makecert-Build-with-install-RPATH.patch \
+    file://0001-Fix-FIPS-mode-support-and-build-with-OpenSSL-3.0.patch \
+    file://0002-winpr-avoid-calling-FIPS_mode-with-OpenSSL-3.0.patch \
 "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.7.bb b/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.7.bb
deleted file mode 100644
index 2b87281..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.7.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "GUsb is a GObject wrapper for libusb1"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
-
-DEPENDS = "glib-2.0 libusb"
-
-inherit meson gobject-introspection gtk-doc gettext vala
-
-SRC_URI = "git://github.com/hughsie/libgusb.git"
-SRCREV = "ff9c606d9d72c7dd369ad220d92729556faaaf0c"
-S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.8.bb b/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.8.bb
new file mode 100644
index 0000000..c22030b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.8.bb
@@ -0,0 +1,11 @@
+SUMMARY = "GUsb is a GObject wrapper for libusb1"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+DEPENDS = "glib-2.0 libusb"
+
+inherit meson gobject-introspection gtk-doc gettext vala
+
+SRC_URI = "git://github.com/hughsie/libgusb.git;branch=main"
+SRCREV = "db9edbd8b45662d551194a0985173732f8f557a5"
+S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-cookie_3.0.1.bb b/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-cookie_3.0.1.bb
new file mode 100644
index 0000000..66fb5a3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-cookie_3.0.1.bb
@@ -0,0 +1,27 @@
+SUMMARY = "A simple, lightweight JavaScript API for handling cookies."
+HOMEPAGE = "https://github.com/js-cookie/js-cookie"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e16cf0e247d84f8999bf55865a9c98cf"
+
+SRC_URI = "git://github.com/js-cookie/js-cookie.git;protocol=http"
+
+SRCREV = "0ba77141dd215782cc7770347a457906908c66ff"
+
+S = "${WORKDIR}/git"
+
+JQUERYCOOKIEDIR = "${datadir}/javascript/jquery-cookie"
+JQUERYCOOKIEDOCDIR = "${docdir}/libjs-jquery-cookie"
+
+do_install() {
+        install -d ${D}${JQUERYCOOKIEDIR}
+        install -m 0644 ${S}/*.js ${D}${JQUERYCOOKIEDIR}
+        install -m 0644 ${S}/src/*.mjs ${D}${JQUERYCOOKIEDIR}
+        install -m 0644 ${S}/*.json ${D}${JQUERYCOOKIEDIR}
+
+        install -d ${D}${JQUERYCOOKIEDOCDIR}
+        install -m 0644 ${S}/*.md ${D}${JQUERYCOOKIEDOCDIR}
+
+}
+
+FILES:${PN} += "${datadir}/javascript/jquery-cookie"
+FILES:${PN}-doc += "${docdir}/libjs-jquery-cookie"
diff --git a/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-globalize_1.7.0.bb b/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-globalize_1.7.0.bb
new file mode 100644
index 0000000..a87c5bf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-globalize_1.7.0.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "A JavaScript library for internationalization and localization that leverages the official Unicode CLDR JSON data"
+SECTION = "console/network"
+HOMEPAGE = "https://github.com/globalizejs/globalize"
+LICENSE = "MIT"
+
+S = "${WORKDIR}/git"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4db68fb4d1d9986d736b35039f2ad9ea"
+
+SRC_URI = "git://github.com/globalizejs/globalize;tag=1.7.0;nobranch=1"
+
+FILES:${PN} = "${datadir}/javascript/jquery-globalize"
+FILES:${PN}-doc += "${docdir}/${PN}"
+
+do_install() {
+        install -d ${D}${datadir}/javascript/jquery-globalize/
+        install -m 0644 ${S}/dist/*.js ${D}${datadir}/javascript/jquery-globalize/
+        install -m 0644 ${S}/dist/globalize/*.js ${D}${datadir}/javascript/jquery-globalize/
+
+        install -d ${D}${docdir}/${PN}/
+        install -m 0644 ${S}/LICENSE ${D}${docdir}/${PN}/
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/links/links_2.22.bb b/meta-openembedded/meta-oe/recipes-support/links/links_2.22.bb
deleted file mode 100644
index f2b4a6a..0000000
--- a/meta-openembedded/meta-oe/recipes-support/links/links_2.22.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require links.inc
-
-DEPENDS += "gpm"
-RCONFLICTS:${PN} = "links-x11"
-
-EXTRA_OECONF = "--enable-graphics \
-                --with-ssl=${STAGING_LIBDIR}/.. --with-libjpeg \
-                --without-libtiff --without-svgalib --with-fb \
-                --without-directfb --without-pmshell --without-atheos \
-                --without-x"
-SRC_URI[sha256sum] = "0364986b3a7f1e8e3171bea362b53f71e1dd3360a8842d66fdc65580ebc2084d"
-SRC_URI[icon.sha256sum] = "eddcd8b8c8698aa621d1a453943892d77b72ed492e0d14e0dbac5c6a57e52f47"
diff --git a/meta-openembedded/meta-oe/recipes-support/links/links_2.25.bb b/meta-openembedded/meta-oe/recipes-support/links/links_2.25.bb
new file mode 100644
index 0000000..1986358
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/links/links_2.25.bb
@@ -0,0 +1,11 @@
+require links.inc
+
+DEPENDS += "gpm"
+RCONFLICTS:${PN} = "links-x11"
+
+EXTRA_OECONF = "--enable-graphics \
+                --with-ssl=${STAGING_LIBDIR}/.. --with-libjpeg \
+                --without-libtiff --without-svgalib --with-fb \
+                --without-directfb --without-pmshell --without-atheos \
+                --without-x"
+SRC_URI[sha256sum] = "2dd78508698e8279ef4f09a3a2a21e9595040113402da6c553974414fb49dd2c"
diff --git a/meta-openembedded/meta-oe/recipes-support/nano/nano_5.8.bb b/meta-openembedded/meta-oe/recipes-support/nano/nano_5.8.bb
deleted file mode 100644
index 146ad55..0000000
--- a/meta-openembedded/meta-oe/recipes-support/nano/nano_5.8.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Small and friendly console text editor"
-DESCRIPTION = "GNU nano (Nano's ANOther editor, or \
-Not ANOther editor) is an enhanced clone of the \
-Pico text editor."
-HOMEPAGE = "http://www.nano-editor.org/"
-SECTION = "console/utils"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
-
-DEPENDS = "ncurses file"
-RDEPENDS:${PN} = "ncurses-terminfo-base"
-
-PV_MAJOR = "${@d.getVar('PV').split('.')[0]}"
-
-SRC_URI = "https://nano-editor.org/dist/v${PV_MAJOR}/nano-${PV}.tar.xz"
-SRC_URI[sha256sum] = "e43b63db2f78336e2aa123e8d015dbabc1720a15361714bfd4b1bb4e5e87768c"
-
-UPSTREAM_CHECK_URI = "https://ftp.gnu.org/gnu/nano"
-
-inherit autotools gettext pkgconfig
-
-PACKAGECONFIG[tiny] = "--enable-tiny,"
diff --git a/meta-openembedded/meta-oe/recipes-support/nano/nano_5.9.bb b/meta-openembedded/meta-oe/recipes-support/nano/nano_5.9.bb
new file mode 100644
index 0000000..85c81fb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/nano/nano_5.9.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Small and friendly console text editor"
+DESCRIPTION = "GNU nano (Nano's ANOther editor, or \
+Not ANOther editor) is an enhanced clone of the \
+Pico text editor."
+HOMEPAGE = "http://www.nano-editor.org/"
+SECTION = "console/utils"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
+
+DEPENDS = "ncurses file"
+RDEPENDS:${PN} = "ncurses-terminfo-base"
+
+PV_MAJOR = "${@d.getVar('PV').split('.')[0]}"
+
+SRC_URI = "https://nano-editor.org/dist/v${PV_MAJOR}/nano-${PV}.tar.xz"
+SRC_URI[sha256sum] = "757db8cda4bb2873599e47783af463e3b547a627b0cabb30ea7bf71fb4c24937"
+
+UPSTREAM_CHECK_URI = "https://ftp.gnu.org/gnu/nano"
+
+inherit autotools gettext pkgconfig
+
+PACKAGECONFIG[tiny] = "--enable-tiny,"
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.5.2.bb b/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.5.2.bb
index 361ac0c..8d557e0 100644
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.5.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.5.2.bb
@@ -230,4 +230,8 @@
         sed -e 's@${STAGING_DIR_HOST}@@g' \
             -i ${D}${libdir}/cmake/opencv4/OpenCVModules.cmake
     fi
+    # remove setup_vars_opencv4.sh as its content is confusing and useless
+    if [ -f ${D}${bindir}/setup_vars_opencv4.sh ]; then
+        rm -rf ${D}${bindir}/setup_vars_opencv4.sh
+    fi
 }
diff --git a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.22.0.bb b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.22.0.bb
index e8bb505..44a0dcc 100644
--- a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.22.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.22.0.bb
@@ -24,6 +24,7 @@
     --disable-static \
     --disable-ctapi \
     --disable-doc \
+    --disable-strict \
 "
 EXTRA_OEMAKE = "DESTDIR=${D}"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.09.0.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.09.0.bb
deleted file mode 100644
index 0ecf199..0000000
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.09.0.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "Poppler is a PDF rendering library based on the xpdf-3.0 code base"
-HOMEPAGE = "https://poppler.freedesktop.org/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-SRC_URI = "http://poppler.freedesktop.org/${BP}.tar.xz \
-           file://0001-Do-not-overwrite-all-our-build-flags.patch \
-           file://basename-include.patch \
-           "
-SRC_URI[sha256sum] = "5a47fef738c2b99471f9b459a8bf8b40aefb7eed92caa4861c3798b2e126d05b"
-
-DEPENDS = "fontconfig zlib cairo lcms glib-2.0"
-
-inherit cmake pkgconfig gobject-introspection
-
-PACKAGECONFIG ??= "jpeg openjpeg png tiff nss splash"
-PACKAGECONFIG[jpeg] = "-DWITH_JPEG=ON -DENABLE_DCTDECODER=libjpeg,-DWITH_JPEG=OFF -DENABLE_DCTDECODER=none,jpeg"
-PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng"
-PACKAGECONFIG[tiff] = "-DWITH_TIFF=ON,-DWITH_TIFF=OFF,tiff"
-PACKAGECONFIG[curl] = "-DENABLE_LIBCURL=ON,-DENABLE_LIBCURL=OFF,curl"
-PACKAGECONFIG[openjpeg] = "-DENABLE_LIBOPENJPEG=openjpeg2,-DENABLE_LIBOPENJPEG=none,openjpeg"
-PACKAGECONFIG[qt5] = "-DENABLE_QT5=ON,-DENABLE_QT5=OFF,qtbase qttools-native"
-PACKAGECONFIG[nss] = "-DWITH_NSS3=ON,-DWITH_NSS3=OFF,nss"
-PACKAGECONFIG[splash] = "-DENABLE_SPLASH=ON -DENABLE_BOOST=ON,-DENABLE_SPLASH=OFF -DENABLE_BOOST=OFF,boost"
-
-# surprise - did not expect this to work :)
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'qt5', 'cmake_qt5', '', d)}
-
-SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
-
-EXTRA_OECMAKE += " \
-    -DENABLE_CMS=lcms2 \
-    -DENABLE_UNSTABLE_API_ABI_HEADERS=ON \
-    -DBUILD_GTK_TESTS=OFF \
-    -DENABLE_ZLIB=ON \
-    -DCMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES:PATH='${STAGING_INCDIR}' \
-    ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_GOBJECT_INTROSPECTION=ON', '-DENABLE_GOBJECT_INTROSPECTION=OFF', d)} \
-"
-
-do_configure:append() {
-    # poppler macro uses pkg-config to check for g-ir runtimes. Something
-    # makes them point to /usr/bin. Align them to sysroot - that's where the
-    # gir-wrappers are:
-    sed -i 's: ${bindir}/g-ir: ${STAGING_BINDIR}/g-ir:' ${B}/build.ninja
-}
-
-PACKAGES =+ "libpoppler libpoppler-glib"
-FILES:libpoppler = "${libdir}/libpoppler.so.*"
-FILES:libpoppler-glib = "${libdir}/libpoppler-glib.so.*"
-
-RDEPENDS:libpoppler = "poppler-data"
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.10.0.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.10.0.bb
new file mode 100644
index 0000000..164a348
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.10.0.bb
@@ -0,0 +1,51 @@
+SUMMARY = "Poppler is a PDF rendering library based on the xpdf-3.0 code base"
+HOMEPAGE = "https://poppler.freedesktop.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "http://poppler.freedesktop.org/${BP}.tar.xz \
+           file://0001-Do-not-overwrite-all-our-build-flags.patch \
+           file://basename-include.patch \
+           "
+SRC_URI[sha256sum] = "964b5b16290fbec3fae57c2a5bcdea49bb0736bd750c3a3711c47995c9efc394"
+
+DEPENDS = "fontconfig zlib cairo lcms glib-2.0"
+
+inherit cmake pkgconfig gobject-introspection
+
+PACKAGECONFIG ??= "jpeg openjpeg png tiff nss splash"
+PACKAGECONFIG[jpeg] = "-DWITH_JPEG=ON -DENABLE_DCTDECODER=libjpeg,-DWITH_JPEG=OFF -DENABLE_DCTDECODER=none,jpeg"
+PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng"
+PACKAGECONFIG[tiff] = "-DWITH_TIFF=ON,-DWITH_TIFF=OFF,tiff"
+PACKAGECONFIG[curl] = "-DENABLE_LIBCURL=ON,-DENABLE_LIBCURL=OFF,curl"
+PACKAGECONFIG[openjpeg] = "-DENABLE_LIBOPENJPEG=openjpeg2,-DENABLE_LIBOPENJPEG=none,openjpeg"
+PACKAGECONFIG[qt5] = "-DENABLE_QT5=ON,-DENABLE_QT5=OFF,qtbase qttools-native"
+PACKAGECONFIG[nss] = "-DWITH_NSS3=ON,-DWITH_NSS3=OFF,nss"
+PACKAGECONFIG[splash] = "-DENABLE_SPLASH=ON -DENABLE_BOOST=ON,-DENABLE_SPLASH=OFF -DENABLE_BOOST=OFF,boost"
+
+# surprise - did not expect this to work :)
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'qt5', 'cmake_qt5', '', d)}
+
+SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
+
+EXTRA_OECMAKE += " \
+    -DENABLE_CMS=lcms2 \
+    -DENABLE_UNSTABLE_API_ABI_HEADERS=ON \
+    -DBUILD_GTK_TESTS=OFF \
+    -DENABLE_ZLIB=ON \
+    -DCMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES:PATH='${STAGING_INCDIR}' \
+    ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_GOBJECT_INTROSPECTION=ON', '-DENABLE_GOBJECT_INTROSPECTION=OFF', d)} \
+"
+
+do_configure:append() {
+    # poppler macro uses pkg-config to check for g-ir runtimes. Something
+    # makes them point to /usr/bin. Align them to sysroot - that's where the
+    # gir-wrappers are:
+    sed -i 's: ${bindir}/g-ir: ${STAGING_BINDIR}/g-ir:' ${B}/build.ninja
+}
+
+PACKAGES =+ "libpoppler libpoppler-glib"
+FILES:libpoppler = "${libdir}/libpoppler.so.*"
+FILES:libpoppler-glib = "${libdir}/libpoppler-glib.so.*"
+
+RDEPENDS:libpoppler = "poppler-data"
diff --git a/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.10.1.bb b/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.10.1.bb
deleted file mode 100644
index 15ba099..0000000
--- a/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.10.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = "single-file header-only version of a C++20-like span for C++98, C++11 and later"
-HOMEPAGE = "https://github.com/martinmoene/span-lite"
-LICENSE = "BSL-1.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
-
-SRC_URI += "git://github.com/martinmoene/span-lite"
-SRCREV = "da49b231a25600b4431e00b564a6a20be95c1108"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-inherit ptest
diff --git a/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.10.3.bb b/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.10.3.bb
new file mode 100644
index 0000000..0079cf7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.10.3.bb
@@ -0,0 +1,12 @@
+SUMMARY = "single-file header-only version of a C++20-like span for C++98, C++11 and later"
+HOMEPAGE = "https://github.com/martinmoene/span-lite"
+LICENSE = "BSL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
+
+SRC_URI += "git://github.com/martinmoene/span-lite"
+SRCREV = "cbb9c3c5162a0d7018c7b3e053153a04d4fbbbb9"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+inherit ptest
diff --git a/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.2.0.bb b/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.2.0.bb
index 36ca8f9..c726bef 100644
--- a/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.2.0.bb
@@ -45,6 +45,7 @@
 
 LDFLAGS:append:mips = " -latomic"
 LDFLAGS:append:mipsel = " -latomic"
+LDFLAGS:append:riscv32:toolchain-clang = " -latomic"
 
 LDFLAGS:append:libc-musl = " -lucontext"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/unicode-ucd/files/license.html b/meta-openembedded/meta-oe/recipes-support/unicode-ucd/files/license.html
deleted file mode 100644
index a02442a..0000000
--- a/meta-openembedded/meta-oe/recipes-support/unicode-ucd/files/license.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html>
-
-
-
-<head>
-
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<meta http-equiv="Content-Language" content="en-us">
-<meta name="VI60_defaultClientScript" content="JavaScript">
-<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
-<meta name="keywords" content="Unicode Standard, copyright">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<title>Unicode License Agreement</title>
-<link rel="stylesheet" type="text/css" 
-
-href="http://www.unicode.org/webscripts/standard_styles.css">
-
-<style type="text/css">
-pre {
-	FONT-FAMILY: Arial, Geneva, sans-serif;
-}
-</style>
-
-
-</head>
-
-
-<body text="#330000">
-
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-    <tr>
-
-      <!-- BEGIN CONTENTS -->
-
-      <td>
-
-
-<blockquote>
-<h2><a name="License">UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE</a></h2>
-
-<pre>
-See <a href="https://www.unicode.org/copyright.html">Terms of Use</a> for definitions of Unicode Inc.'s
-Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
-
-COPYRIGHT AND PERMISSION NOTICE
-
-Copyright © 1991-2019 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
-</pre>
-
-</blockquote>
-
-
-
-      </td>
-
-    </tr>
-
-  </table>
-</body>
-</html>
diff --git a/meta-openembedded/meta-oe/recipes-support/unicode-ucd/unicode-ucd_12.1.0.bb b/meta-openembedded/meta-oe/recipes-support/unicode-ucd/unicode-ucd_12.1.0.bb
deleted file mode 100644
index 06f9794..0000000
--- a/meta-openembedded/meta-oe/recipes-support/unicode-ucd/unicode-ucd_12.1.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Unicode Character Database"
-HOMEPAGE = "https://unicode.org/ucd/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://../license.html;beginline=42;endline=85;md5=ddcaebcc17ab633995f12c383599f377"
-
-SRC_URI = " \
-    https://www.unicode.org/Public/zipped/${PV}/UCD.zip;name=ucd;subdir=ucd \
-    file://license.html \
-"
-SRC_URI[ucd.md5sum] = "430cbdac2615451571dd69a976dd08f6"
-SRC_URI[ucd.sha256sum] = "25ba51a0d4c6fa41047b7a5e5733068d4a734588f055f61e85f450097834a0a6"
-
-inherit allarch
-
-do_configure[noexec] = "1"
-
-do_install() {
-    install -d ${D}${datadir}/unicode
-    cp -rf ${WORKDIR}/ucd ${D}${datadir}/unicode
-}
-
-FILES:${PN} = "${datadir}/unicode/ucd"
diff --git a/meta-openembedded/meta-oe/recipes-support/unicode-ucd/unicode-ucd_14.0.0.bb b/meta-openembedded/meta-oe/recipes-support/unicode-ucd/unicode-ucd_14.0.0.bb
new file mode 100644
index 0000000..2a01886
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/unicode-ucd/unicode-ucd_14.0.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Unicode Character Database"
+HOMEPAGE = "https://unicode.org/ucd/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/license.html;beginline=43;endline=83;md5=cf6c4777b109bcee78b6083a21be6192"
+
+SRC_URI = " \
+    https://www.unicode.org/Public/zipped/${PV}/UCD.zip;name=ucd;subdir=ucd \
+    https://www.unicode.org/license.html;name=license \
+"
+SRC_URI[ucd.sha256sum] = "033a5276b5d7af8844589f8e3482f3977a8385e71d107d375055465178c23600"
+SRC_URI[license.sha256sum] = "e415e1f2188ef2b1a5f7e6ee8c60cefe8a49dacd8b96c9025cad5013985129e4"
+
+inherit allarch
+
+do_configure[noexec] = "1"
+
+do_install() {
+    install -d ${D}${datadir}/unicode
+    cp -rf ${WORKDIR}/ucd ${D}${datadir}/unicode
+}
+
+FILES:${PN} = "${datadir}/unicode/ucd"
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/Makefile.utils b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/Makefile.utils
index 495601f..5982e2d 100644
--- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/Makefile.utils
+++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/Makefile.utils
@@ -13,7 +13,7 @@
 INCLUDES = -I. -I../vboxsf -I../vboxsf/include
 MOD_DEFS = -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 \
            -DIN_SUP_R0 -DVBOX -DVBOX_WITH_HGCM -DIN_MODULE -DIN_GUEST_R0
-CFLAGS	 = ${INCLUDES} ${MOD_DEFS}
+CFLAGS	 = ${INCLUDES} ${MOD_DEFS} ${EXTRA_CFLAGS}
 LDFLAGS	 =
 
 SRCS     = mount.vboxsf.c \
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r89690-5.14-fixes.patch b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r89690-5.14-fixes.patch
deleted file mode 100644
index 951bd50..0000000
--- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r89690-5.14-fixes.patch
+++ /dev/null
@@ -1,442 +0,0 @@
-Subject: Fix build errors with linux 5.14
-
-Upstream-Status: backport
-
-svn-id: r89690
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-
-Index: a/src/VBox/Additions/linux/drm/vbox_drv.h
-===================================================================
---- a/src/VBox/Additions/linux/drm/vbox_drv.h	(revision 89690)
-+++ a/src/VBox/Additions/linux/drm/vbox_drv.h	(revision 90498)
-@@ -227,6 +227,15 @@
- 				sizeof(HGSMIHOSTFLAGS))
- #define HOST_FLAGS_OFFSET GUEST_HEAP_USABLE_SIZE
- 
-+/** Field @pdev of struct drm_device was removed in 5.14. This macro
-+ * transparently handles this change. Input argument is a pointer
-+ * to struct drm_device. */
-+#if RTLNX_VER_MIN(5,14,0)
-+# define VBOX_DRM_TO_PCI_DEV(_dev) to_pci_dev(_dev->dev)
-+#else
-+# define VBOX_DRM_TO_PCI_DEV(_dev) _dev->pdev
-+#endif
-+
- /** How frequently we refresh if the guest is not providing dirty rectangles. */
- #define VBOX_REFRESH_PERIOD (HZ / 2)
- 
-Index: a/src/VBox/Additions/linux/drm/vbox_main.c
-===================================================================
---- a/src/VBox/Additions/linux/drm/vbox_main.c	(revision 89690)
-+++ a/src/VBox/Additions/linux/drm/vbox_main.c	(revision 90498)
-@@ -290,7 +290,7 @@
- 	/* Take a command buffer for each screen from the end of usable VRAM. */
- 	vbox->available_vram_size -= vbox->num_crtcs * VBVA_MIN_BUFFER_SIZE;
- 
--	vbox->vbva_buffers = pci_iomap_range(vbox->dev->pdev, 0,
-+	vbox->vbva_buffers = pci_iomap_range(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0,
- 					     vbox->available_vram_size,
- 					     vbox->num_crtcs *
- 					     VBVA_MIN_BUFFER_SIZE);
-@@ -311,7 +311,7 @@
- 	return 0;
- 
- err_pci_iounmap:
--	pci_iounmap(vbox->dev->pdev, vbox->vbva_buffers);
-+	pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), vbox->vbva_buffers);
- 	return ret;
- }
- 
-@@ -318,7 +318,7 @@
- static void vbox_accel_fini(struct vbox_private *vbox)
- {
- 	vbox_disable_accel(vbox);
--	pci_iounmap(vbox->dev->pdev, vbox->vbva_buffers);
-+	pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), vbox->vbva_buffers);
- }
- 
- /** Do we support the 4.3 plus mode hint reporting interface? */
-@@ -393,7 +393,7 @@
- 
- 	/* Map guest-heap at end of vram */
- 	vbox->guest_heap =
--	    pci_iomap_range(vbox->dev->pdev, 0, GUEST_HEAP_OFFSET(vbox),
-+	    pci_iomap_range(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0, GUEST_HEAP_OFFSET(vbox),
- 			    GUEST_HEAP_SIZE);
- 	if (!vbox->guest_heap)
- 		return -ENOMEM;
-@@ -442,7 +442,7 @@
- err_destroy_guest_pool:
- 	gen_pool_destroy(vbox->guest_pool);
- err_unmap_guest_heap:
--	pci_iounmap(vbox->dev->pdev, vbox->guest_heap);
-+	pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), vbox->guest_heap);
- 	return ret;
- }
- 
-@@ -452,7 +452,7 @@
- 	cancel_delayed_work(&vbox->refresh_work);
- 	vbox_accel_fini(vbox);
- 	gen_pool_destroy(vbox->guest_pool);
--	pci_iounmap(vbox->dev->pdev, vbox->guest_heap);
-+	pci_iounmap(VBOX_DRM_TO_PCI_DEV(vbox->dev), vbox->guest_heap);
- }
- 
- #if RTLNX_VER_MIN(4,19,0) || RTLNX_RHEL_MIN(8,3)
-@@ -567,12 +567,16 @@
- 
- 	size = roundup(size, PAGE_SIZE);
- 	if (size == 0)
-+	{
-+		DRM_ERROR("bad size\n");
- 		return -EINVAL;
-+	}
- 
- 	ret = vbox_bo_create(dev, size, 0, 0, &vboxbo);
- 	if (ret) {
- 		if (ret != -ERESTARTSYS)
- 			DRM_ERROR("failed to allocate GEM object\n");
-+		DRM_ERROR("failed to allocate GEM (%d)\n", ret);
- 		return ret;
- 	}
- 
-@@ -628,6 +632,21 @@
- {
- 	struct vbox_bo *vbox_bo = gem_to_vbox_bo(obj);
- 
-+#if RTLNX_VER_MIN(5,14,0)
-+	/* Starting from kernel 5.14, there is a warning appears in dmesg
-+	 * on attempt to desroy pinned buffer object. Make sure it is unpinned. */
-+	while (vbox_bo->bo.pin_count)
-+	{
-+		int ret;
-+		ret = vbox_bo_unpin(vbox_bo);
-+		if (ret)
-+		{
-+			DRM_ERROR("unable to unpin buffer object\n");
-+			break;
-+		}
-+	}
-+#endif
-+
- 	ttm_bo_put(&vbox_bo->bo);
- }
- 
-@@ -648,7 +667,7 @@
- 		      u32 handle, u64 *offset)
- {
- 	struct drm_gem_object *obj;
--	int ret;
-+	int ret = 0;
- 	struct vbox_bo *bo;
- 
- 	mutex_lock(&dev->struct_mutex);
-@@ -665,8 +684,15 @@
- 	bo = gem_to_vbox_bo(obj);
- 	*offset = vbox_bo_mmap_offset(bo);
- 
-+#if RTLNX_VER_MIN(5,14,0)
-+	ret = drm_vma_node_allow(&bo->bo.base.vma_node, file);
-+	if (ret)
-+	{
-+		DRM_ERROR("unable to grant previladges to user");
-+	}
-+#endif
-+
- 	drm_gem_object_put(obj);
--	ret = 0;
- 
- out_unlock:
- 	mutex_unlock(&dev->struct_mutex);
-Index: a/src/VBox/Additions/linux/drm/vbox_mode.c
-===================================================================
---- a/src/VBox/Additions/linux/drm/vbox_mode.c	(revision 89690)
-+++ a/src/VBox/Additions/linux/drm/vbox_mode.c	(revision 90498)
-@@ -245,6 +245,10 @@
- 			vbox_bo_unpin(bo);
- 			vbox_bo_unreserve(bo);
- 		}
-+		else
-+		{
-+			DRM_ERROR("unable to lock buffer object: error %d\n", ret);
-+		}
- 	}
- 
- 	if (&vbox->fbdev->afb == vbox_fb)
-@@ -856,7 +860,9 @@
- 	vbox->cursor_data_size = data_size;
- 	dst = vbox->cursor_data;
- 
--#if RTLNX_VER_MIN(5,12,0)
-+#if RTLNX_VER_MIN(5,14,0)
-+	ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.resource->num_pages, &uobj_map);
-+#elif RTLNX_VER_MIN(5,12,0)
- 	ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.mem.num_pages, &uobj_map);
- #else
- 	ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &uobj_map);
-Index: a/src/VBox/Additions/linux/drm/vbox_ttm.c
-===================================================================
---- a/src/VBox/Additions/linux/drm/vbox_ttm.c	(revision 89690)
-+++ a/src/VBox/Additions/linux/drm/vbox_ttm.c	(revision 90498)
-@@ -41,6 +41,10 @@
- # include <drm/ttm/ttm_page_alloc.h>
- #endif
- 
-+#if RTLNX_VER_MIN(5,14,0)
-+# include <drm/ttm/ttm_range_manager.h>
-+#endif
-+
- #if RTLNX_VER_MAX(3,18,0) && !RTLNX_RHEL_MAJ_PREREQ(7,2)
- #define PLACEMENT_FLAGS(placement) (placement)
- #else
-@@ -174,11 +178,13 @@
- 	*pl = vboxbo->placement;
- }
- 
-+#if RTLNX_VER_MAX(5,14,0)
- static int vbox_bo_verify_access(struct ttm_buffer_object *bo,
- 				 struct file *filp)
- {
- 	return 0;
- }
-+#endif
- 
- #if RTLNX_VER_MAX(5,10,0)
- static int vbox_ttm_io_mem_reserve(struct ttm_bo_device *bdev,
-@@ -234,10 +240,10 @@
- 		mem->bus.caching = ttm_write_combined;
- # endif
- # if RTLNX_VER_MIN(5,10,0)
--		mem->bus.offset = (mem->start << PAGE_SHIFT) + pci_resource_start(vbox->dev->pdev, 0);
-+		mem->bus.offset = (mem->start << PAGE_SHIFT) + pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0);
- # else
- 		mem->bus.offset = mem->start << PAGE_SHIFT;
--		mem->start = pci_resource_start(vbox->dev->pdev, 0);
-+		mem->start = pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0);
- # endif
- 		mem->bus.is_iomem = true;
- 		break;
-@@ -373,7 +379,9 @@
- 	.eviction_valuable = ttm_bo_eviction_valuable,
- #endif
- 	.evict_flags = vbox_bo_evict_flags,
-+#if RTLNX_VER_MAX(5,14,0)
- 	.verify_access = vbox_bo_verify_access,
-+#endif
- 	.io_mem_reserve = &vbox_ttm_io_mem_reserve,
- 	.io_mem_free = &vbox_ttm_io_mem_free,
- #if RTLNX_VER_MIN(4,12,0) || RTLNX_RHEL_MAJ_PREREQ(7,5)
-@@ -451,12 +459,12 @@
- 	}
- 
- #ifdef DRM_MTRR_WC
--	vbox->fb_mtrr = drm_mtrr_add(pci_resource_start(dev->pdev, 0),
--				     pci_resource_len(dev->pdev, 0),
-+	vbox->fb_mtrr = drm_mtrr_add(pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0),
-+				     pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0),
- 				     DRM_MTRR_WC);
- #else
--	vbox->fb_mtrr = arch_phys_wc_add(pci_resource_start(dev->pdev, 0),
--					 pci_resource_len(dev->pdev, 0));
-+	vbox->fb_mtrr = arch_phys_wc_add(pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0),
-+					 pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0));
- #endif
- 	return 0;
- 
-@@ -477,8 +485,8 @@
- {
- #ifdef DRM_MTRR_WC
- 	drm_mtrr_del(vbox->fb_mtrr,
--		     pci_resource_start(vbox->dev->pdev, 0),
--		     pci_resource_len(vbox->dev->pdev, 0), DRM_MTRR_WC);
-+		     pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0),
-+		     pci_resource_len(VBOX_DRM_TO_PCI_DEV(vbox->dev), 0), DRM_MTRR_WC);
- #else
- 	arch_phys_wc_del(vbox->fb_mtrr);
- #endif
-@@ -560,6 +568,9 @@
- static const struct drm_gem_object_funcs vbox_drm_gem_object_funcs = {
- 	.free   = vbox_gem_free_object,
- 	.print_info = drm_gem_ttm_print_info,
-+# if RTLNX_VER_MIN(5,14,0)
-+	.mmap = drm_gem_ttm_mmap,
-+# endif
- };
- #endif
- 
-@@ -598,6 +609,17 @@
- 				       sizeof(struct vbox_bo));
- #endif
- 
-+#if RTLNX_VER_MIN(5,14,0)
-+	/* Initialization of the following was removed from DRM stack
-+	 * in 5.14, so we need to do it manually. */
-+	vboxbo->bo.base.funcs = &vbox_drm_gem_object_funcs;
-+	kref_init(&vboxbo->bo.base.refcount);
-+	vboxbo->bo.base.size = size;
-+	vboxbo->bo.base.dev = dev;
-+	dma_resv_init(&vboxbo->bo.base._resv);
-+	drm_vma_node_reset(&vboxbo->bo.base.vma_node);
-+#endif
-+
- 	ret = ttm_bo_init(&vbox->ttm.bdev, &vboxbo->bo, size,
- 			  ttm_bo_type_device, &vboxbo->placement,
- #if RTLNX_VER_MAX(4,17,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5)
-@@ -613,7 +635,11 @@
- 			  NULL, vbox_bo_ttm_destroy);
- #endif
- 	if (ret)
--		goto err_free_vboxbo;
-+	{
-+		/* In case of failure, ttm_bo_init() supposed to call
-+		 * vbox_bo_ttm_destroy() which in turn will free @vboxbo. */
-+		goto err_exit;
-+	}
- 
- 	*pvboxbo = vboxbo;
- 
-@@ -621,12 +647,15 @@
- 
- err_free_vboxbo:
- 	kfree(vboxbo);
-+err_exit:
- 	return ret;
- }
- 
- static inline u64 vbox_bo_gpu_offset(struct vbox_bo *bo)
- {
--#if RTLNX_VER_MIN(5,9,0) || RTLNX_RHEL_MIN(8,4) || RTLNX_SUSE_MAJ_PREREQ(15,3)
-+#if RTLNX_VER_MIN(5,14,0)
-+	return bo->bo.resource->start << PAGE_SHIFT;
-+#elif RTLNX_VER_MIN(5,9,0) || RTLNX_RHEL_MIN(8,4) || RTLNX_SUSE_MAJ_PREREQ(15,3)
- 	return bo->bo.mem.start << PAGE_SHIFT;
- #else
- 	return bo->bo.offset;
-@@ -685,7 +714,7 @@
- 	struct ttm_operation_ctx ctx = { false, false };
- # endif
- #endif
--	int ret;
-+	int ret = 0;
- #if RTLNX_VER_MAX(5,11,0)
- 	int i;
- #endif
-@@ -765,6 +794,7 @@
- {
- 	struct drm_file *file_priv;
- 	struct vbox_private *vbox;
-+	int ret = -EINVAL;
- 
- 	if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET))
- 		return -EINVAL;
-@@ -772,5 +802,12 @@
- 	file_priv = filp->private_data;
- 	vbox = file_priv->minor->dev->dev_private;
- 
--	return ttm_bo_mmap(filp, vma, &vbox->ttm.bdev);
-+#if RTLNX_VER_MIN(5,14,0)
-+	if (drm_dev_is_unplugged(file_priv->minor->dev))
-+		return -ENODEV;
-+	ret = drm_gem_mmap(filp, vma);
-+#else
-+	ret = ttm_bo_mmap(filp, vma, &vbox->ttm.bdev);
-+#endif
-+	return ret;
- }
-Index: a/src/VBox/Additions/linux/drm/vbox_fb.c
-===================================================================
---- a/src/VBox/Additions/linux/drm/vbox_fb.c	(revision 89690)
-+++ a/src/VBox/Additions/linux/drm/vbox_fb.c	(revision 90498)
-@@ -301,7 +301,9 @@
- 		return ret;
- 	}
- 
--#if RTLNX_VER_MIN(5,12,0)
-+#if RTLNX_VER_MIN(5,14,0)
-+	ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.resource->num_pages, &bo->kmap);
-+#elif RTLNX_VER_MIN(5,12,0)
- 	ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.mem.num_pages, &bo->kmap);
- #else
- 	ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap);
-@@ -337,8 +339,8 @@
- 	 * This seems to be done for safety checking that the framebuffer
- 	 * is not registered twice by different drivers.
- 	 */
--	info->apertures->ranges[0].base = pci_resource_start(dev->pdev, 0);
--	info->apertures->ranges[0].size = pci_resource_len(dev->pdev, 0);
-+	info->apertures->ranges[0].base = pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0);
-+	info->apertures->ranges[0].size = pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0);
- 
- #if RTLNX_VER_MIN(5,2,0) || RTLNX_RHEL_MAJ_PREREQ(8,2)
-         /*
-Index: a/src/VBox/Additions/linux/drm/vbox_drv.c
-===================================================================
---- a/src/VBox/Additions/linux/drm/vbox_drv.c	(revision 89690)
-+++ a/src/VBox/Additions/linux/drm/vbox_drv.c	(revision 90498)
-@@ -43,6 +43,10 @@
- # include <drm/drm_probe_helper.h>
- #endif
- 
-+#if RTLNX_VER_MIN(5,14,0)
-+# include <drm/drm_aperture.h>
-+#endif
-+
- #include "version-generated.h"
- #include "revision-generated.h"
- 
-@@ -65,12 +69,23 @@
- 	struct drm_device *dev = NULL;
- 	int ret = 0;
- 
-+# if RTLNX_VER_MIN(5,14,0)
-+	ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, "vboxvideofb");
-+	if (ret)
-+	{
-+		printk("unable to remove conflicting framebuffer devices\n");
-+		return ret;
-+	}
-+# endif /* 5.14 */
-+
- 	dev = drm_dev_alloc(&driver, &pdev->dev);
- 	if (IS_ERR(dev)) {
- 		ret = PTR_ERR(dev);
- 		goto err_drv_alloc;
- 	}
-+#if RTLNX_VER_MAX(5,14,0)
- 	dev->pdev = pdev;
-+#endif
- 	pci_set_drvdata(pdev, dev);
- 
- 	ret = vbox_driver_load(dev);
-@@ -125,7 +140,7 @@
- 
- 	drm_kms_helper_poll_disable(dev);
- 
--	pci_save_state(dev->pdev);
-+	pci_save_state(VBOX_DRM_TO_PCI_DEV(dev));
- 
- 	drm_fb_helper_set_suspend_unlocked(&vbox->fbdev->helper, true);
- 
-@@ -147,7 +162,7 @@
- {
- 	int ret;
- 
--	if (pci_enable_device(dev->pdev))
-+	if (pci_enable_device(VBOX_DRM_TO_PCI_DEV(dev)))
- 		return -EIO;
- 
- 	ret = vbox_drm_thaw(dev);
-Index: a/src/VBox/Additions/linux/drm/vbox_irq.c
-===================================================================
---- a/src/VBox/Additions/linux/drm/vbox_irq.c	(revision 89690)
-+++ a/src/VBox/Additions/linux/drm/vbox_irq.c	(revision 90498)
-@@ -206,7 +206,7 @@
- 	INIT_WORK(&vbox->hotplug_work, vbox_hotplug_worker);
- 	vbox_update_mode_hints(vbox);
- #if RTLNX_VER_MIN(3,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,1)
--	return drm_irq_install(vbox->dev, vbox->dev->pdev->irq);
-+	return drm_irq_install(vbox->dev, VBOX_DRM_TO_PCI_DEV(vbox->dev)->irq);
- #else
- 	return drm_irq_install(vbox->dev);
- #endif
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r90497-regops-5.14-fix.patch b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r90497-regops-5.14-fix.patch
deleted file mode 100644
index 0d960fa..0000000
--- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/r90497-regops-5.14-fix.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-Subject: Fix regops build errors with linux 5.14
-
-Upstream-Status: backport
-
-svn-id: r90497
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-
-Index: a/src/VBox/Additions/linux/sharedfolders/regops.c
-===================================================================
---- a/src/VBox/Additions/linux/sharedfolders/regops.c	(revision 88716)
-+++ a/src/VBox/Additions/linux/sharedfolders/regops.c	(revision 90497)
-@@ -2126,7 +2126,11 @@
-     int    rc       = 0;
- 
-     Assert(iov_iter_count(iter) + pStash->cb > 0);
-+# if RTLNX_VER_MIN(5,14,0)
-+    if (!(iter->iter_type & ITER_KVEC)) {
-+#else
-     if (!(iter->type & ITER_KVEC)) {
-+#endif
-         /*
-          * Do we have a stashed page?
-          */
-@@ -2372,7 +2376,9 @@
- static size_t vbsf_iter_max_span_of_pages(struct iov_iter *iter)
- {
-     size_t cPages;
--# if RTLNX_VER_MIN(3,16,0)
-+#if RTLNX_VER_MIN(5,14,0)
-+    if (iter_is_iovec(iter) || (iter->iter_type & ITER_KVEC)) {
-+#elif RTLNX_VER_MIN(3,16,0)
-     if (iter_is_iovec(iter) || (iter->type & ITER_KVEC)) {
- #endif
-         const struct iovec *pCurIov    = iter->iov;
-@@ -2436,7 +2442,11 @@
-     } else {
-         /* Won't bother with accurate counts for the next two types, just make
-            some rough estimates (does pipes have segments?): */
-+#  if RTLNX_VER_MIN(5,14,0)
-+        size_t cSegs = iter->iter_type & ITER_BVEC ? RT_MAX(1, iter->nr_segs) : 1;
-+#  else
-         size_t cSegs = iter->type & ITER_BVEC ? RT_MAX(1, iter->nr_segs) : 1;
-+#endif
-         cPages = (iov_iter_count(iter) + (PAGE_SIZE * 2 - 2) * cSegs) >> PAGE_SHIFT;
-     }
- # endif
-@@ -2588,8 +2598,14 @@
-     struct vbsf_reg_info   *sf_r       = kio->ki_filp->private_data;
-     struct vbsf_super_info *pSuperInfo = VBSF_GET_SUPER_INFO(inode->i_sb);
- 
-+#if RTLNX_VER_MIN(5,14,0)
-     SFLOGFLOW(("vbsf_reg_read_iter: inode=%p file=%p size=%#zx off=%#llx type=%#x\n",
-+               inode, kio->ki_filp, cbToRead, kio->ki_pos, iter->iter_type));
-+#else
-+    SFLOGFLOW(("vbsf_reg_read_iter: inode=%p file=%p size=%#zx off=%#llx type=%#x\n",
-                inode, kio->ki_filp, cbToRead, kio->ki_pos, iter->type));
-+#endif
-+
-     AssertReturn(S_ISREG(inode->i_mode), -EINVAL);
- 
-     /*
-@@ -2823,9 +2839,13 @@
-     bool const              fAppend    = RT_BOOL(kio->ki_filp->f_flags & O_APPEND);
- # endif
- 
--
-+#if RTLNX_VER_MIN(5,14,0)
-     SFLOGFLOW(("vbsf_reg_write_iter: inode=%p file=%p size=%#zx off=%#llx type=%#x\n",
-+               inode, kio->ki_filp, cbToWrite, offFile, iter->iter_type));
-+#else
-+    SFLOGFLOW(("vbsf_reg_write_iter: inode=%p file=%p size=%#zx off=%#llx type=%#x\n",
-                inode, kio->ki_filp, cbToWrite, offFile, iter->type));
-+#endif
-     AssertReturn(S_ISREG(inode->i_mode), -EINVAL);
- 
-     /*
-@@ -3737,7 +3757,27 @@
- }
- #endif /* KERNEL_VERSION >= 2.6.24 */
- 
-+#if RTLNX_VER_MIN(5,14,0)
-+static int vbsf_write_end(struct file *file, struct address_space *mapping,
-+                loff_t pos, unsigned int len, unsigned int copied,
-+                struct page *page, void *fsdata)
-+{
-+    static uint64_t volatile s_cCalls = 0;
-+    if (s_cCalls++ < 16)
-+    {
-+        printk("vboxsf: Unexpected call to vbsf_write_end(pos=%#llx len=%#x)! Please report.\n",
-+               (unsigned long long)pos, len);
-+        RTLogBackdoorPrintf("vboxsf: Unexpected call to vbsf_write_end(pos=%#llx len=%#x)!  Please report.\n",
-+                            (unsigned long long)pos, len);
-+# ifdef WARN_ON
-+        WARN_ON(1);
-+# endif
-+    }
- 
-+    return -ENOTSUPP;
-+}
-+#endif
-+
- #if RTLNX_VER_MIN(2,4,10)
- 
- # ifdef VBOX_UEK
-@@ -3791,8 +3831,11 @@
- #if RTLNX_VER_MIN(2,5,12)
-     .set_page_dirty = __set_page_dirty_buffers,
- #endif
--#if RTLNX_VER_MIN(2,6,24)
-+#if RTLNX_VER_MIN(5,14,0)
-     .write_begin    = vbsf_write_begin,
-+    .write_end      = vbsf_write_end,
-+#elif RTLNX_VER_MIN(2,6,24)
-+    .write_begin    = vbsf_write_begin,
-     .write_end      = simple_write_end,
- #elif RTLNX_VER_MIN(2,5,45)
-     .prepare_write  = simple_prepare_write,
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.26.bb b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.26.bb
deleted file mode 100644
index 84651ae..0000000
--- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.26.bb
+++ /dev/null
@@ -1,85 +0,0 @@
-SUMMARY = "VirtualBox Linux Guest Drivers"
-SECTION = "core"
-LICENSE = "GPL-2.0"
-LIC_FILES_CHKSUM = "file://${WORKDIR}/${VBOX_NAME}/COPYING;md5=e197d5641bb35b29d46ca8c4bf7f2660"
-
-DEPENDS = "virtual/kernel"
-
-inherit module kernel-module-split
-
-COMPATIBLE_MACHINE = "(qemux86|qemux86-64)"
-
-VBOX_NAME = "VirtualBox-${PV}"
-
-SRC_URI = "http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.tar.bz2 \
-    file://Makefile.utils \
-    file://r89690-5.14-fixes.patch \
-    file://r90497-regops-5.14-fix.patch \
-"
-
-SRC_URI[md5sum] = "fce04bbef244b4df1a50e53d132d3e6f"
-SRC_URI[sha256sum] = "0212602eea878d6c9fd7f4a3e0182da3e4505f31d25f5539fb8f7b1fbe366195"
-
-S ?= "${WORKDIR}/vbox_module"
-S:task-patch = "${WORKDIR}/${VBOX_NAME}"
-
-export BUILD_TARGET_ARCH="${ARCH}"
-export BUILD_TARGET_ARCH:x86-64="amd64"
-
-EXTRA_OEMAKE += "KERN_DIR='${WORKDIR}/${KERNEL_VERSION}/build' KBUILD_VERBOSE=1"
-
-# otherwise 5.2.22 builds just vboxguest
-MAKE_TARGETS = "all"
-
-addtask export_sources after do_patch before do_configure
-
-do_export_sources() {
-    mkdir -p "${S}"
-    ${WORKDIR}/${VBOX_NAME}/src/VBox/Additions/linux/export_modules.sh ${T}/vbox_modules.tar.gz
-    tar -C "${S}" -xzf ${T}/vbox_modules.tar.gz
-
-    # add a mount utility to use shared folder from VBox Addition Source Code
-    mkdir -p "${S}/utils"
-    install ${WORKDIR}/${VBOX_NAME}/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c ${S}/utils
-    install ${WORKDIR}/${VBOX_NAME}/src/VBox/Additions/linux/sharedfolders/vbsfmount.c ${S}/utils
-    install ${S}/../Makefile.utils ${S}/utils/Makefile
-
-}
-
-do_configure:prepend() {
-    # vboxguestdrivers/5.2.6-r0/vbox_module/vboxguest/Makefile.include.header:99: *** The variable KERN_DIR must be a kernel build folder and end with /build without a trailing slash, or KERN_VER must be set.  Stop.
-    # vboxguestdrivers/5.2.6-r0/vbox_module/vboxguest/Makefile.include.header:108: *** The kernel build folder path must end in <version>/build, or the variable KERN_VER must be set.  Stop.
-    mkdir -p ${WORKDIR}/${KERNEL_VERSION}
-    ln -snf ${STAGING_KERNEL_DIR} ${WORKDIR}/${KERNEL_VERSION}/build
-}
-
-# compile and install mount utility
-do_compile() {
-    oe_runmake all
-    oe_runmake 'LD=${CC}' 'LDFLAGS=${LDFLAGS}' -C ${S}/utils
-    if ! [ -e vboxguest.ko -a -e vboxsf.ko -a -e vboxvideo.ko ] ; then
-        echo "ERROR: One of vbox*.ko modules wasn't built"
-        exit 1
-    fi
-}
-
-module_do_install() {
-    MODULE_DIR=${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel/misc
-    install -d $MODULE_DIR
-    install -m 644 vboxguest.ko $MODULE_DIR
-    install -m 644 vboxsf.ko $MODULE_DIR
-    install -m 644 vboxvideo.ko $MODULE_DIR
-}
-
-do_install:append() {
-    install -d ${D}${base_sbindir}
-    install -m 755 ${S}/utils/mount.vboxsf ${D}${base_sbindir}
-}
-
-PACKAGES += "kernel-module-vboxguest kernel-module-vboxsf kernel-module-vboxvideo"
-RRECOMMENDS:${PN} += "kernel-module-vboxguest kernel-module-vboxsf kernel-module-vboxvideo"
-
-FILES:${PN} = "${base_sbindir}"
-
-# autoload if installed
-KERNEL_MODULE_AUTOLOAD += "vboxguest vboxsf vboxvideo"
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.28.bb b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.28.bb
new file mode 100644
index 0000000..0265e38
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.28.bb
@@ -0,0 +1,83 @@
+SUMMARY = "VirtualBox Linux Guest Drivers"
+SECTION = "core"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/${VBOX_NAME}/COPYING;md5=e197d5641bb35b29d46ca8c4bf7f2660"
+
+DEPENDS = "virtual/kernel"
+
+inherit module kernel-module-split
+
+COMPATIBLE_MACHINE = "(qemux86|qemux86-64)"
+
+VBOX_NAME = "VirtualBox-${PV}"
+
+SRC_URI = "http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.tar.bz2 \
+    file://Makefile.utils \
+"
+
+SRC_URI[md5sum] = "c6efae8dc115b90c6124e13126794c4f"
+SRC_URI[sha256sum] = "8d34993d8e9c0cf35e7bd44dd26c8c757f17a3b7d5a64052f945d00fd798ebfe"
+
+S ?= "${WORKDIR}/vbox_module"
+S:task-patch = "${WORKDIR}/${VBOX_NAME}"
+
+export BUILD_TARGET_ARCH="${ARCH}"
+export BUILD_TARGET_ARCH:x86-64="amd64"
+
+EXTRA_OEMAKE += "KERN_DIR='${WORKDIR}/${KERNEL_VERSION}/build' KBUILD_VERBOSE=1"
+
+# otherwise 5.2.22 builds just vboxguest
+MAKE_TARGETS = "all"
+
+addtask export_sources after do_patch before do_configure
+
+do_export_sources() {
+    mkdir -p "${S}"
+    ${WORKDIR}/${VBOX_NAME}/src/VBox/Additions/linux/export_modules.sh ${T}/vbox_modules.tar.gz
+    tar -C "${S}" -xzf ${T}/vbox_modules.tar.gz
+
+    # add a mount utility to use shared folder from VBox Addition Source Code
+    mkdir -p "${S}/utils"
+    install ${WORKDIR}/${VBOX_NAME}/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c ${S}/utils
+    install ${WORKDIR}/${VBOX_NAME}/src/VBox/Additions/linux/sharedfolders/vbsfmount.c ${S}/utils
+    install ${S}/../Makefile.utils ${S}/utils/Makefile
+
+}
+
+do_configure:prepend() {
+    # vboxguestdrivers/5.2.6-r0/vbox_module/vboxguest/Makefile.include.header:99: *** The variable KERN_DIR must be a kernel build folder and end with /build without a trailing slash, or KERN_VER must be set.  Stop.
+    # vboxguestdrivers/5.2.6-r0/vbox_module/vboxguest/Makefile.include.header:108: *** The kernel build folder path must end in <version>/build, or the variable KERN_VER must be set.  Stop.
+    mkdir -p ${WORKDIR}/${KERNEL_VERSION}
+    ln -snf ${STAGING_KERNEL_DIR} ${WORKDIR}/${KERNEL_VERSION}/build
+}
+
+# compile and install mount utility
+do_compile() {
+    oe_runmake all
+    oe_runmake 'LD=${CC}' 'EXTRA_CFLAGS=-I${STAGING_KERNEL_BUILDDIR}/include/' 'LDFLAGS=${LDFLAGS}' -C ${S}/utils
+    if ! [ -e vboxguest.ko -a -e vboxsf.ko -a -e vboxvideo.ko ] ; then
+        echo "ERROR: One of vbox*.ko modules wasn't built"
+        exit 1
+    fi
+}
+
+module_do_install() {
+    MODULE_DIR=${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel/misc
+    install -d $MODULE_DIR
+    install -m 644 vboxguest.ko $MODULE_DIR
+    install -m 644 vboxsf.ko $MODULE_DIR
+    install -m 644 vboxvideo.ko $MODULE_DIR
+}
+
+do_install:append() {
+    install -d ${D}${base_sbindir}
+    install -m 755 ${S}/utils/mount.vboxsf ${D}${base_sbindir}
+}
+
+PACKAGES += "kernel-module-vboxguest kernel-module-vboxsf kernel-module-vboxvideo"
+RRECOMMENDS:${PN} += "kernel-module-vboxguest kernel-module-vboxsf kernel-module-vboxvideo"
+
+FILES:${PN} = "${base_sbindir}"
+
+# autoload if installed
+KERNEL_MODULE_AUTOLOAD += "vboxguest vboxsf vboxvideo"
diff --git a/meta-openembedded/meta-oe/recipes-support/xorg-xrdp/xorgxrdp_0.2.5.bb b/meta-openembedded/meta-oe/recipes-support/xorg-xrdp/xorgxrdp_0.2.5.bb
index fd22def..25dbe13 100644
--- a/meta-openembedded/meta-oe/recipes-support/xorg-xrdp/xorgxrdp_0.2.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/xorg-xrdp/xorgxrdp_0.2.5.bb
@@ -21,3 +21,5 @@
 FILES:${PN} += "${libdir}/xorg/modules/*"
 
 INSANE_SKIP:${PN} += "xorg-driver-abi"
+
+PNBLACKLIST[xorgxrdp] ?= "Depends on xrdp which needs porting to openssl 3.x"
diff --git a/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.16.bb b/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.16.bb
deleted file mode 100644
index 6d86598..0000000
--- a/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.16.bb
+++ /dev/null
@@ -1,94 +0,0 @@
-SUMMARY = "An open source remote desktop protocol(rdp) server."
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=72cfbe4e7bd33a0a1de9630c91195c21 \
-"
-
-inherit features_check autotools pkgconfig useradd systemd
-
-DEPENDS = "openssl virtual/libx11 libxfixes libxrandr libpam nasm-native"
-
-REQUIRED_DISTRO_FEATURES = "x11 pam"
-
-SRC_URI = "git://github.com/neutrinolabs/xrdp.git;branch=devel \
-           file://xrdp.sysconfig \
-           file://0001-Added-req_distinguished_name-in-etc-xrdp-openssl.con.patch \
-           file://0001-Fix-the-compile-error.patch \
-           file://0001-arch-Define-NO_NEED_ALIGN-on-ppc64.patch \
-           "
-SRCREV = "a4c7ee077c049202d73f82f518b2de958d722890"
-
-S = "${WORKDIR}/git"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[fuse] = " --enable-fuse, --disable-fuse, fuse"
-
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM:${PN} = "--system xrdp"
-USERADD_PARAM:${PN}  = "--system --home /var/run/xrdp -g xrdp \
-                        --no-create-home --shell /bin/false xrdp"
-
-FILES:${PN} += "${datadir}/dbus-1/services/*.service \
-                ${datadir}/dbus-1/accessibility-services/*.service "
-
-FILES:${PN}-dev += "${libdir}/xrdp/libcommon.so \
-                    ${libdir}/xrdp/libxrdp.so \
-                    ${libdir}/xrdp/libscp.so \
-                    ${libdir}/xrdp/libxrdpapi.so "
-
-EXTRA_OECONF = "--enable-pam-config=suse"
-
-do_configure:prepend() {
-    cd ${S}
-    ./bootstrap
-    cd -
-}
-
-do_compile:prepend() {
-    sed -i 's/(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am/(MAKE) $(AM_MAKEFLAGS) install-exec-am/g' ${S}/keygen/Makefile.in
-}
-
-
-do_install:append() {
-	install -d ${D}${sysconfdir}
-	install -d ${D}${sysconfdir}/xrdp
-	install -d ${D}${sysconfdir}/xrdp/pam.d
-	install -d ${D}${sysconfdir}/sysconfig/xrdp
-
-	# deal with systemd unit files
-	install -d ${D}${systemd_unitdir}/system
-	install -m 0644 ${S}/instfiles/xrdp.service.in ${D}${systemd_unitdir}/system/xrdp.service
-	install -m 0644 ${S}/instfiles/xrdp-sesman.service.in ${D}${systemd_unitdir}/system/xrdp-sesman.service
-	sed -i -e 's,@localstatedir@,${localstatedir},g' ${D}${systemd_unitdir}/system/xrdp.service ${D}${systemd_unitdir}/system/xrdp-sesman.service
-	sed -i -e 's,@sysconfdir@,${sysconfdir},g' ${D}${systemd_unitdir}/system/xrdp.service ${D}${systemd_unitdir}/system/xrdp-sesman.service
-	sed -i -e 's,@sbindir@,${sbindir},g' ${D}${systemd_unitdir}/system/xrdp.service ${D}${systemd_unitdir}/system/xrdp-sesman.service
-
-	install -m 0644 ${S}/instfiles/*.ini ${D}${sysconfdir}/xrdp/
-	install -m 0644 ${S}/sesman/sesman.ini.in ${D}${sysconfdir}/xrdp/
-	install -m 0644 ${S}/sesman/startwm.sh ${D}${sysconfdir}/xrdp/
-	install -m 0644 ${S}/xrdp/xrdp.ini.in ${D}${sysconfdir}/xrdp/
-	install -m 0644 ${S}/xrdp/xrdp_keyboard.ini ${D}${sysconfdir}/xrdp/
-	install -m 0644 ${S}/keygen/openssl.conf ${D}${sysconfdir}/xrdp/
-	install -m 0644 ${WORKDIR}/xrdp.sysconfig ${D}${sysconfdir}/sysconfig/xrdp/
-	chown xrdp:xrdp ${D}${sysconfdir}/xrdp
-}
-
-SYSTEMD_SERVICE:${PN} = "xrdp.service xrdp-sesman.service"
-
-pkg_postinst:${PN}() {
-	if test -z "$D"
-	then
-		if test -x ${bindir}/xrdp-keygen
-		then
-			${bindir}/xrdp-keygen xrdp ${sysconfdir}/xrdp/rsakeys.ini >/dev/null
-                fi
-		if test ! -s ${sysconfdir}/xrdp/cert.pem
-		then
-			openssl req -x509 -newkey rsa:2048 -sha256 -nodes -days 3652 \
-			-keyout ${sysconfdir}/xrdp/key.pem \
-			-out ${sysconfdir}/xrdp/cert.pem \
-			-config ${sysconfdir}/xrdp/openssl.conf >/dev/null 2>&1
-			chmod 400 ${sysconfdir}/xrdp/key.pem
-		fi
-        fi
-}
diff --git a/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.17.bb b/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.17.bb
new file mode 100644
index 0000000..e933c66
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.17.bb
@@ -0,0 +1,95 @@
+SUMMARY = "An open source remote desktop protocol(rdp) server."
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=72cfbe4e7bd33a0a1de9630c91195c21 \
+"
+
+inherit features_check autotools pkgconfig useradd systemd
+
+DEPENDS = "openssl virtual/libx11 libxfixes libxrandr libpam nasm-native"
+
+REQUIRED_DISTRO_FEATURES = "x11 pam"
+
+SRC_URI = "git://github.com/neutrinolabs/xrdp.git;branch=devel \
+           file://xrdp.sysconfig \
+           file://0001-Added-req_distinguished_name-in-etc-xrdp-openssl.con.patch \
+           file://0001-Fix-the-compile-error.patch \
+           file://0001-arch-Define-NO_NEED_ALIGN-on-ppc64.patch \
+           "
+SRCREV = "58088324956d94fd2eb5e7694a318cccec6990f1"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[fuse] = " --enable-fuse, --disable-fuse, fuse"
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM:${PN} = "--system xrdp"
+USERADD_PARAM:${PN}  = "--system --home /var/run/xrdp -g xrdp \
+                        --no-create-home --shell /bin/false xrdp"
+
+FILES:${PN} += "${datadir}/dbus-1/services/*.service \
+                ${datadir}/dbus-1/accessibility-services/*.service "
+
+FILES:${PN}-dev += "${libdir}/xrdp/libcommon.so \
+                    ${libdir}/xrdp/libxrdp.so \
+                    ${libdir}/xrdp/libscp.so \
+                    ${libdir}/xrdp/libxrdpapi.so "
+
+EXTRA_OECONF = "--enable-pam-config=suse"
+
+do_configure:prepend() {
+    cd ${S}
+    ./bootstrap
+    cd -
+}
+
+do_compile:prepend() {
+    sed -i 's/(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am/(MAKE) $(AM_MAKEFLAGS) install-exec-am/g' ${S}/keygen/Makefile.in
+}
+
+
+do_install:append() {
+	install -d ${D}${sysconfdir}
+	install -d ${D}${sysconfdir}/xrdp
+	install -d ${D}${sysconfdir}/xrdp/pam.d
+	install -d ${D}${sysconfdir}/sysconfig/xrdp
+
+	# deal with systemd unit files
+	install -d ${D}${systemd_unitdir}/system
+	install -m 0644 ${S}/instfiles/xrdp.service.in ${D}${systemd_unitdir}/system/xrdp.service
+	install -m 0644 ${S}/instfiles/xrdp-sesman.service.in ${D}${systemd_unitdir}/system/xrdp-sesman.service
+	sed -i -e 's,@localstatedir@,${localstatedir},g' ${D}${systemd_unitdir}/system/xrdp.service ${D}${systemd_unitdir}/system/xrdp-sesman.service
+	sed -i -e 's,@sysconfdir@,${sysconfdir},g' ${D}${systemd_unitdir}/system/xrdp.service ${D}${systemd_unitdir}/system/xrdp-sesman.service
+	sed -i -e 's,@sbindir@,${sbindir},g' ${D}${systemd_unitdir}/system/xrdp.service ${D}${systemd_unitdir}/system/xrdp-sesman.service
+
+	install -m 0644 ${S}/instfiles/*.ini ${D}${sysconfdir}/xrdp/
+	install -m 0644 ${S}/sesman/sesman.ini.in ${D}${sysconfdir}/xrdp/
+	install -m 0644 ${S}/sesman/startwm.sh ${D}${sysconfdir}/xrdp/
+	install -m 0644 ${S}/xrdp/xrdp.ini.in ${D}${sysconfdir}/xrdp/
+	install -m 0644 ${S}/xrdp/xrdp_keyboard.ini ${D}${sysconfdir}/xrdp/
+	install -m 0644 ${S}/keygen/openssl.conf ${D}${sysconfdir}/xrdp/
+	install -m 0644 ${WORKDIR}/xrdp.sysconfig ${D}${sysconfdir}/sysconfig/xrdp/
+	chown xrdp:xrdp ${D}${sysconfdir}/xrdp
+}
+
+SYSTEMD_SERVICE:${PN} = "xrdp.service xrdp-sesman.service"
+
+pkg_postinst:${PN}() {
+	if test -z "$D"
+	then
+		if test -x ${bindir}/xrdp-keygen
+		then
+			${bindir}/xrdp-keygen xrdp ${sysconfdir}/xrdp/rsakeys.ini >/dev/null
+                fi
+		if test ! -s ${sysconfdir}/xrdp/cert.pem
+		then
+			openssl req -x509 -newkey rsa:2048 -sha256 -nodes -days 3652 \
+			-keyout ${sysconfdir}/xrdp/key.pem \
+			-out ${sysconfdir}/xrdp/cert.pem \
+			-config ${sysconfdir}/xrdp/openssl.conf >/dev/null 2>&1
+			chmod 400 ${sysconfdir}/xrdp/key.pem
+		fi
+        fi
+}
+PNBLACKLIST[xrdp] ?= "Needs porting to openssl 3.x"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcrypt/files/0001-Fix-for-Issue-31.patch b/meta-openembedded/meta-perl/recipes-perl/libcrypt/files/0001-Fix-for-Issue-31.patch
new file mode 100644
index 0000000..a5ea43f
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-perl/libcrypt/files/0001-Fix-for-Issue-31.patch
@@ -0,0 +1,37 @@
+From 5e8202458e41ba1f7801746c503fe7c60ae340d5 Mon Sep 17 00:00:00 2001
+From: kambe-mikb <77083885+kambe-mikb@users.noreply.github.com>
+Date: Tue, 28 Sep 2021 17:40:18 +1000
+Subject: [PATCH] Fix for Issue 31
+
+Fix Issue 31 by removing reference to RSA_SSLV23_PADDING (removed from OpenSSL starting from v3.0.0)
+
+Upstream-Status: Submitted [https://github.com/toddr/Crypt-OpenSSL-RSA/pull/32]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ RSA.xs | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/RSA.xs b/RSA.xs
+index 46cb199..4f65dfc 100644
+--- a/RSA.xs
++++ b/RSA.xs
+@@ -640,12 +640,16 @@ use_pkcs1_oaep_padding(p_rsa)
+   CODE:
+     p_rsa->padding = RSA_PKCS1_OAEP_PADDING;
+ 
++#if OPENSSL_VERSION_NUMBER < 0x30000000L
++
+ void
+ use_sslv23_padding(p_rsa)
+     rsaData* p_rsa;
+   CODE:
+     p_rsa->padding = RSA_SSLV23_PADDING;
+ 
++#endif
++
+ # Sign text. Returns the signature.
+ 
+ SV*
+-- 
+2.33.1
+
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.31.bb b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.31.bb
deleted file mode 100644
index 9a42b52..0000000
--- a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.31.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "Crypt Openssl RSA cpan module"
-SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a67ceecc5d9a91a5a0d003ba50c26346"
-
-SRC_URI = "http://www.cpan.org/modules/by-module/Crypt/Crypt-OpenSSL-RSA-${PV}.tar.gz "
-
-SRC_URI[md5sum] = "d33681e19d2094df7c26bc7a4509265e"
-SRC_URI[sha256sum] = "4173403ad4cf76732192099f833fbfbf3cd8104e0246b3844187ae384d2c5436"
-
-DEPENDS += "libcrypt-openssl-guess-perl-native openssl"
-
-RDEPENDS:${PN} = " \
-    libcrypt-openssl-random-perl \
-    perl-module-autoloader \
-    perl-module-carp \
-    perl-module-strict \
-    perl-module-warnings \
-    perl-module-xsloader \
-"
-
-EXTRA_CPANFLAGS = "INC='-I${STAGING_INCDIR}' LIBS='-L${STAGING_LIBDIR} -lssl -L${STAGING_DIR_TARGET}${base_libdir} -lcrypto'"
-
-S = "${WORKDIR}/Crypt-OpenSSL-RSA-${PV}"
-
-inherit cpan ptest-perl
-
-do_compile() {
-    export OTHERLDFLAGS='-Wl,-rpath'
-    cpan_do_compile
-}
-
-RDEPENDS:${PN}-ptest = " \
-    ${PN} \
-    perl-module-file-copy \
-    perl-module-test \
-    perl-module-test-more \
-"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.32.bb b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.32.bb
new file mode 100644
index 0000000..8dd2574
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.32.bb
@@ -0,0 +1,39 @@
+SUMMARY = "Crypt Openssl RSA cpan module"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a67ceecc5d9a91a5a0d003ba50c26346"
+
+SRC_URI = "http://www.cpan.org/modules/by-module/Crypt/Crypt-OpenSSL-RSA-${PV}.tar.gz \
+           file://0001-Fix-for-Issue-31.patch \
+"
+
+SRC_URI[sha256sum] = "adc74f0ae125c77f65d5dd32abb9c3429300a79543bf263494f333f9c0b62a61"
+
+DEPENDS += "libcrypt-openssl-guess-perl-native openssl"
+
+RDEPENDS:${PN} = " \
+    libcrypt-openssl-random-perl \
+    perl-module-autoloader \
+    perl-module-carp \
+    perl-module-strict \
+    perl-module-warnings \
+    perl-module-xsloader \
+"
+
+EXTRA_CPANFLAGS = "INC='-I${STAGING_INCDIR}' LIBS='-L${STAGING_LIBDIR} -lssl -L${STAGING_DIR_TARGET}${base_libdir} -lcrypto'"
+
+S = "${WORKDIR}/Crypt-OpenSSL-RSA-${PV}"
+
+inherit cpan ptest-perl
+
+do_compile() {
+    export OTHERLDFLAGS='-Wl,-rpath'
+    cpan_do_compile
+}
+
+RDEPENDS:${PN}-ptest = " \
+    ${PN} \
+    perl-module-file-copy \
+    perl-module-test \
+    perl-module-test-more \
+"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.12.bb b/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.12.bb
deleted file mode 100644
index 90ae623..0000000
--- a/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.12.bb
+++ /dev/null
@@ -1,105 +0,0 @@
-# NOTE:
-#    You should use perl-module-encode rather than this package
-#    unless you specifically need a version newer than what is
-#    provided by perl.
-
-SUMMARY = "Encode - character encodings"
-DESCRIPTION = "The \"Encode\" module provides the interfaces between \
-Perl's strings and the rest of the system.  Perl strings are sequences \
-of characters."
-
-AUTHOR = "Dan Kogai <dankogai+cpan@gmail.com>"
-HOMEPAGE = "https://metacpan.org/release/Encode"
-SECTION = "lib"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-LIC_FILES_CHKSUM = "file://META.json;beginline=8;endline=10;md5=b12e3be1e17a7e99ca4f429ff32c28b5"
-
-SRC_URI = "${CPAN_MIRROR}/authors/id/D/DA/DANKOGAI/Encode-${PV}.tar.gz"
-SRC_URI[sha256sum] = "38da5b7f74bc402075f5994557b5f1426636291efea0f39fcdf4b1366b0756fd"
-
-UPSTREAM_CHECK_REGEX = "Encode\-(?P<pver>(\d+\.\d+))(?!_\d+).tar"
-
-S = "${WORKDIR}/Encode-${PV}"
-
-inherit cpan ptest-perl
-
-do_install:prepend() {
-    # Requires "-T" (taint) option on command line
-    rm -rf ${B}/t/taint.t
-    # Circular dependency of perl-module-open on perl-module-encode
-    # and we cannot load perl-module-encode because we are providing
-    # an alternative
-    rm -rf ${B}/t/use-Encode-Alias.t
-}
-
-do_install_ptest() {
-    mkdir ${D}${PTEST_PATH}/bin
-    cp -r ${B}/bin/piconv ${D}${PTEST_PATH}/bin
-    cp -r ${B}/blib ${D}${PTEST_PATH}
-    chown -R root:root ${D}${PTEST_PATH}
-}
-
-#  file /usr/bin/enc2xs from install of perl-misc-5.24.1-r0.i586 conflicts with file from package libencode-perl-2.94-r0.i586
-#  file /usr/bin/encguess from install of perl-misc-5.24.1-r0.i586 conflicts with file from package libencode-perl-2.94-r0.i586
-#  file /usr/bin/piconv from install of perl-misc-5.24.1-r0.i586 conflicts with file from package libencode-perl-2.94-r0.i586
-RCONFLICTS:${PN} = "perl-misc perl-module-encode"
-
-RDEPENDS:${PN} += " \
-    perl-module-bytes \
-    perl-module-constant \
-    perl-module-parent \
-    perl-module-storable \
-    perl-module-xsloader \
-    "
-
-RPROVIDES:${PN} += " \
-    libencode-alias-perl \
-    libencode-byte-perl \
-    libencode-cjkconstants-perl \
-    libencode-cn-perl \
-    libencode-cn-hz-perl \
-    libencode-config-perl \
-    libencode-ebcdic-perl \
-    libencode-encoder-perl \
-    libencode-encoding-perl \
-    libencode-gsm0338-perl \
-    libencode-guess-perl \
-    libencode-jp-perl \
-    libencode-jp-h2z-perl \
-    libencode-jp-jis7-perl \
-    libencode-kr-perl \
-    libencode-kr-2022_kr-perl \
-    libencode-mime-header-perl \
-    libencode-mime-name-perl \
-    libencode-symbol-perl \
-    libencode-tw-perl \
-    libencode-unicode-perl \
-    libencode-unicode-utf7-perl \
-    libencoding-perl \
-    libencode-internal-perl \
-    libencode-mime-header-iso_2022_jp-perl \
-    libencode-utf8-perl \
-    libencode-utf_ebcdic-perl \
-    "
-
-RDEPENDS:${PN}-ptest += " \
-    perl-module-blib \
-    perl-module-charnames \
-    perl-module-file-compare \
-    perl-module-file-copy \
-    perl-module-filehandle \
-    perl-module-findbin \
-    perl-module-integer \
-    perl-module-io-select \
-    perl-module-ipc-open3 \
-    perl-module-mime-base64 \
-    perl-module-perlio \
-    perl-module-perlio-encoding \
-    perl-module-perlio-scalar \
-    perl-module-test-more \
-    perl-module-tie-scalar \
-    perl-module-unicore \
-    perl-module-utf8 \
-    "
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.16.bb b/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.16.bb
new file mode 100644
index 0000000..2286ee5
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.16.bb
@@ -0,0 +1,105 @@
+# NOTE:
+#    You should use perl-module-encode rather than this package
+#    unless you specifically need a version newer than what is
+#    provided by perl.
+
+SUMMARY = "Encode - character encodings"
+DESCRIPTION = "The \"Encode\" module provides the interfaces between \
+Perl's strings and the rest of the system.  Perl strings are sequences \
+of characters."
+
+AUTHOR = "Dan Kogai <dankogai+cpan@gmail.com>"
+HOMEPAGE = "https://metacpan.org/release/Encode"
+SECTION = "lib"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://META.json;beginline=8;endline=10;md5=b12e3be1e17a7e99ca4f429ff32c28b5"
+
+SRC_URI = "${CPAN_MIRROR}/authors/id/D/DA/DANKOGAI/Encode-${PV}.tar.gz"
+SRC_URI[sha256sum] = "e5e91d98a97de70dccecc2a25d049a0b5f5f12228c618680020d73043355294c"
+
+UPSTREAM_CHECK_REGEX = "Encode\-(?P<pver>(\d+\.\d+))(?!_\d+).tar"
+
+S = "${WORKDIR}/Encode-${PV}"
+
+inherit cpan ptest-perl
+
+do_install:prepend() {
+    # Requires "-T" (taint) option on command line
+    rm -rf ${B}/t/taint.t
+    # Circular dependency of perl-module-open on perl-module-encode
+    # and we cannot load perl-module-encode because we are providing
+    # an alternative
+    rm -rf ${B}/t/use-Encode-Alias.t
+}
+
+do_install_ptest() {
+    mkdir ${D}${PTEST_PATH}/bin
+    cp -r ${B}/bin/piconv ${D}${PTEST_PATH}/bin
+    cp -r ${B}/blib ${D}${PTEST_PATH}
+    chown -R root:root ${D}${PTEST_PATH}
+}
+
+#  file /usr/bin/enc2xs from install of perl-misc-5.24.1-r0.i586 conflicts with file from package libencode-perl-2.94-r0.i586
+#  file /usr/bin/encguess from install of perl-misc-5.24.1-r0.i586 conflicts with file from package libencode-perl-2.94-r0.i586
+#  file /usr/bin/piconv from install of perl-misc-5.24.1-r0.i586 conflicts with file from package libencode-perl-2.94-r0.i586
+RCONFLICTS:${PN} = "perl-misc perl-module-encode"
+
+RDEPENDS:${PN} += " \
+    perl-module-bytes \
+    perl-module-constant \
+    perl-module-parent \
+    perl-module-storable \
+    perl-module-xsloader \
+    "
+
+RPROVIDES:${PN} += " \
+    libencode-alias-perl \
+    libencode-byte-perl \
+    libencode-cjkconstants-perl \
+    libencode-cn-perl \
+    libencode-cn-hz-perl \
+    libencode-config-perl \
+    libencode-ebcdic-perl \
+    libencode-encoder-perl \
+    libencode-encoding-perl \
+    libencode-gsm0338-perl \
+    libencode-guess-perl \
+    libencode-jp-perl \
+    libencode-jp-h2z-perl \
+    libencode-jp-jis7-perl \
+    libencode-kr-perl \
+    libencode-kr-2022_kr-perl \
+    libencode-mime-header-perl \
+    libencode-mime-name-perl \
+    libencode-symbol-perl \
+    libencode-tw-perl \
+    libencode-unicode-perl \
+    libencode-unicode-utf7-perl \
+    libencoding-perl \
+    libencode-internal-perl \
+    libencode-mime-header-iso_2022_jp-perl \
+    libencode-utf8-perl \
+    libencode-utf_ebcdic-perl \
+    "
+
+RDEPENDS:${PN}-ptest += " \
+    perl-module-blib \
+    perl-module-charnames \
+    perl-module-file-compare \
+    perl-module-file-copy \
+    perl-module-filehandle \
+    perl-module-findbin \
+    perl-module-integer \
+    perl-module-io-select \
+    perl-module-ipc-open3 \
+    perl-module-mime-base64 \
+    perl-module-perlio \
+    perl-module-perlio-encoding \
+    perl-module-perlio-scalar \
+    perl-module-test-more \
+    perl-module-tie-scalar \
+    perl-module-unicore \
+    perl-module-utf8 \
+    "
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-h2/python3-h2_4.0.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-h2/python3-h2_4.0.0.bb
deleted file mode 100644
index 8c488fe..0000000
--- a/meta-openembedded/meta-python/recipes-connectivity/python-h2/python3-h2_4.0.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "HTTP/2 State-Machine based protocol implementation"
-HOMEPAGE = "https://github.com/python-hyper/hyper-h2"
-LICENSE = "MIT"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=aa3b9b4395563dd427be5f022ec321c1"
-
-SRC_URI[md5sum] = "d086f6a9746a5f4eeb63bb3d0a482e1f"
-SRC_URI[sha256sum] = "bb7ac7099dd67a857ed52c815a6192b6b1f5ba6b516237fc24a085341340593d"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "${PYTHON_PN}-hpack ${PYTHON_PN}-hyperframe"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-h2/python3-h2_4.1.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-h2/python3-h2_4.1.0.bb
new file mode 100644
index 0000000..c2d5884
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-h2/python3-h2_4.1.0.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "HTTP/2 State-Machine based protocol implementation"
+HOMEPAGE = "https://github.com/python-hyper/hyper-h2"
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aa3b9b4395563dd427be5f022ec321c1"
+
+SRC_URI[sha256sum] = "a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "${PYTHON_PN}-hpack ${PYTHON_PN}-hyperframe"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.13.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.13.0.bb
deleted file mode 100644
index d62ba66..0000000
--- a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.13.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;md5=e95cd2f17c70d3180a2b361332319fe0"
-
-SRC_URI[md5sum] = "c3bc8d9a910d2c9ce26f2ad1f7c96762"
-SRC_URI[sha256sum] = "9af1c86bf73433afc6010ed376a6c6aca2b54099cc0d61895f640870a9ae7d89"
-
-inherit pypi setuptools3
-
-# Use different filename to prevent conflicts with thrift itself
-PYPI_SRC_URI:append = ";downloadfilename=${BP}.${PYPI_PACKAGE_EXT}"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-six \
-    ${PYTHON_PN}-stringold \
-    ${PYTHON_PN}-threading \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.15.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.15.0.bb
new file mode 100644
index 0000000..78cbba6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.15.0.bb
@@ -0,0 +1,19 @@
+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] = "87c8205a71cf8bbb111cb99b1f7495070fbc9cabb671669568854210da5b3e29"
+
+inherit pypi setuptools3
+
+# Use different filename to prevent conflicts with thrift itself
+PYPI_SRC_URI:append = ";downloadfilename=${BP}.${PYPI_PACKAGE_EXT}"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-stringold \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
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 550b026..f0159f8 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
@@ -279,6 +279,7 @@
     python3-pocketsphinx \
     python3-polyline \
     python3-portalocker \
+    python3-posix-ipc \
     python3-prctl \
     python3-precise-runner \
     python3-pretend \
diff --git a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp/0001-Fix-for-Python-3.10-compatibility.patch b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp/0001-Fix-for-Python-3.10-compatibility.patch
new file mode 100644
index 0000000..2b88023
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp/0001-Fix-for-Python-3.10-compatibility.patch
@@ -0,0 +1,25 @@
+From bfe579283e5fcab60172818bfe4e6e1d40c2bed0 Mon Sep 17 00:00:00 2001
+From: Kurt Kiefer <kurt.kiefer@arthrex.com>
+Date: Mon, 18 Oct 2021 11:21:14 -0700
+Subject: [PATCH] Fix for Python 3.10 compatibility
+
+The collections.abc module replaces collections for Python 3.10
+
+Signed-off-by: Kurt Kiefer <kurt.kiefer@arthrex.com>
+---
+ pylib/gyp/common.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pylib/gyp/common.py b/pylib/gyp/common.py
+index b268d229..4f9cb0ec 100644
+--- a/pylib/gyp/common.py
++++ b/pylib/gyp/common.py
+@@ -494,7 +494,7 @@ def uniquer(seq, idfun=None):
+ 
+ 
+ # Based on http://code.activestate.com/recipes/576694/.
+-class OrderedSet(collections.MutableSet):
++class OrderedSet(collections.abc.MutableSet):
+   def __init__(self, iterable=None):
+     self.end = end = []
+     end += [None, end, end]         # sentinel node for doubly linked list
diff --git a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb
index d668d1c..73329ce 100644
--- a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp_git.bb
@@ -4,7 +4,9 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ab828cb8ce4c62ee82945a11247b6bbd"
 SECTION = "devel"
 
-SRC_URI = "git://chromium.googlesource.com/external/gyp;protocol=https"
+SRC_URI = "git://chromium.googlesource.com/external/gyp;protocol=https \
+           file://0001-Fix-for-Python-3.10-compatibility.patch \
+           "
 SRCREV = "caa60026e223fc501e8b337fd5086ece4028b1c6"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.13.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.13.0.bb
deleted file mode 100644
index 2ebd358..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.13.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "Abseil Python Common Libraries"
-HOMEPAGE = "https://github.com/abseil/abseil-py"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-SRC_URI[md5sum] = "afb3ffb4b59d53575e8eb073c3a52803"
-SRC_URI[sha256sum] = "6953272383486044699fd0e9f00aad167a27e08ce19aae66c6c4b10e7e767793"
-
-PYPI_PACKAGE = "absl-py"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.15.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.15.0.bb
new file mode 100644
index 0000000..f25201d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.15.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Abseil Python Common Libraries"
+HOMEPAGE = "https://github.com/abseil/abseil-py"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[sha256sum] = "72d782fbeafba66ba3e525d46bccac949b9a174dbf66233e50ece09ee688dc81"
+
+PYPI_PACKAGE = "absl-py"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.6.1.bb
deleted file mode 100644
index c79a922..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.6.1.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Asynchronous library to control Philips Hue"
-HOMEPAGE = "https://pypi.org/project/aiohue/"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=dab31a1d28183826937f4b152143a33f"
-
-SRC_URI[sha256sum] = "1374f7fc50bac46375e18ce7d511515265ce83c9180f312e60a36d63055f0104"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "${PYTHON_PN}-aiohttp"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.6.3.bb
new file mode 100644
index 0000000..e9cbde8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.6.3.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Asynchronous library to control Philips Hue"
+HOMEPAGE = "https://pypi.org/project/aiohue/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dab31a1d28183826937f4b152143a33f"
+
+SRC_URI[sha256sum] = "ce9c240ca3eb1394c56503b403589f4d0ee7f93445a578b78da8b7879a65c863"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "${PYTHON_PN}-aiohttp"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.6.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.6.5.bb
deleted file mode 100644
index e1f29ca..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.6.5.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "A database migration tool for SQLAlchemy"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c4ece55266dcdd02ce165b1ee0e490bb"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "a21fedebb3fb8f6bbbba51a11114f08c78709377051384c9c5ead5705ee93a51"
-
-PYPI_PACKAGE = "alembic"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-dateutil \
-    ${PYTHON_PN}-editor \
-    ${PYTHON_PN}-mako \
-    ${PYTHON_PN}-sqlalchemy \
-    ${PYTHON_PN}-misc \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.7.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.7.4.bb
new file mode 100644
index 0000000..17e9e53
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.7.4.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "A database migration tool for SQLAlchemy"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c4ece55266dcdd02ce165b1ee0e490bb"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "9d33f3ff1488c4bfab1e1a6dfebbf085e8a8e1a3e047a43ad29ad1f67f012a1d"
+
+PYPI_PACKAGE = "alembic"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-dateutil \
+    ${PYTHON_PN}-editor \
+    ${PYTHON_PN}-mako \
+    ${PYTHON_PN}-sqlalchemy \
+    ${PYTHON_PN}-misc \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson/0001-setup.py-Do-not-use-2to3.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson/0001-setup.py-Do-not-use-2to3.patch
new file mode 100644
index 0000000..2b9e6e5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson/0001-setup.py-Do-not-use-2to3.patch
@@ -0,0 +1,29 @@
+From 4fb61d7c621599b0db9c2c45f4243f07936c5953 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 13 Oct 2021 08:20:00 -0700
+Subject: [PATCH] setup.py: Do not use 2to3
+
+This helps compiling with setuptools 0.58+
+and it seems to compile fine with python3
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ setup.py | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 9fe4902..f2098e1 100644
+--- a/setup.py
++++ b/setup.py
+@@ -2,8 +2,6 @@ import os
+ import sys
+ 
+ extra = {}
+-if sys.version_info >= (3, 0):
+-    extra.update(use_2to3=True)
+ 
+ try:
+     from setuptools import setup, find_packages
+-- 
+2.33.0
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb
index 07cc998..2b8abb8 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb
@@ -8,6 +8,7 @@
 inherit pypi setuptools3 ptest
 
 SRC_URI += " \
+	file://0001-setup.py-Do-not-use-2to3.patch \
 	file://run-ptest \
 "
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.7.1.bb
deleted file mode 100644
index 4ed051d..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.7.1.bb
+++ /dev/null
@@ -1,32 +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"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a70cf540abf41acb644ac3b621b2fad1"
-
-SRC_URI[sha256sum] = "f3083366b7bb8b3a72c0e12841ab07f14b0d7ff5cc1c89676b84d8f5832e4b61"
-
-inherit pypi setuptools3
-
-DEPENDS += "${PYTHON_PN}-pytest-runner-native"
-
-PACKAGES =+ "${PN}-tests"
-
-FILES:${PN}-tests += " \
-    ${PYTHON_SITEPACKAGES_DIR}/astroid/test* \
-    ${PYTHON_SITEPACKAGES_DIR}/astroid/__pycache__/test* \
-"
-
-RDEPENDS:${PN}:class-target += "\
-    ${PYTHON_PN}-distutils \
-    ${PYTHON_PN}-lazy-object-proxy \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-six \
-    ${PYTHON_PN}-wrapt \
-    ${PYTHON_PN}-setuptools \
-"
-
-RDEPENDS:${PN}-tests:class-target += "\
-    ${PYTHON_PN}-unittest \
-    ${PYTHON_PN}-xml \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.8.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.8.2.bb
new file mode 100644
index 0000000..f465ba9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.8.2.bb
@@ -0,0 +1,32 @@
+SUMMARY = "An abstract syntax tree for Python with inference support."
+HOMEPAGE = "https://pypi.python.org/pypi/astroid"
+SECTION = "devel/python"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a70cf540abf41acb644ac3b621b2fad1"
+
+SRC_URI[sha256sum] = "304e99c129794f2cfda584a12b71fde85205da950e2f330f4be09150525ae949"
+
+inherit pypi setuptools3
+
+DEPENDS += "${PYTHON_PN}-pytest-runner-native"
+
+PACKAGES =+ "${PN}-tests"
+
+FILES:${PN}-tests += " \
+    ${PYTHON_SITEPACKAGES_DIR}/astroid/test* \
+    ${PYTHON_SITEPACKAGES_DIR}/astroid/__pycache__/test* \
+"
+
+RDEPENDS:${PN}:class-target += "\
+    ${PYTHON_PN}-distutils \
+    ${PYTHON_PN}-lazy-object-proxy \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-wrapt \
+    ${PYTHON_PN}-setuptools \
+"
+
+RDEPENDS:${PN}-tests:class-target += "\
+    ${PYTHON_PN}-unittest \
+    ${PYTHON_PN}-xml \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-behave_1.2.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-behave_1.2.6.bb
index 04e24a6..89bf29f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-behave_1.2.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-behave_1.2.6.bb
@@ -3,10 +3,13 @@
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d950439e8ea6ed233e4288f5e1a49c06"
 
-SRC_URI[md5sum] = "3f05c859a1c45f5ed33e925817ad887d"
-SRC_URI[sha256sum] = "b9662327aa53294c1351b0a9c369093ccec1d21026f050c3bd9b3e5cccf81a86"
+PV .= "+git${SRCREV}"
+SRCREV = "9520119376046aeff73804b5f1ea05d87a63f370"
+SRC_URI += "git://github.com/behave/behave;branch=master"
 
-inherit pypi setuptools3
+S = "${WORKDIR}/git"
+
+inherit setuptools3
 
 RDEPENDS:${PN} += " \
     ${PYTHON_PN}-parse-type \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.2.2.bb
deleted file mode 100644
index 58994d7..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.2.2.bb
+++ /dev/null
@@ -1,32 +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=439a07e400525964c3c82684146e46eb"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN} += " \
-	${PYTHON_PN}-math \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-SRC_URI[sha256sum] = "61b5ed1e22a0924aed1d23b478f37e8d52549ff8a961de2909c69bf950020cff"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.2.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.2.4.bb
new file mode 100644
index 0000000..1040dc7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.2.4.bb
@@ -0,0 +1,32 @@
+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=439a07e400525964c3c82684146e46eb"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN} += " \
+	${PYTHON_PN}-math \
+"
+
+RDEPENDS:${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+SRC_URI[sha256sum] = "89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_36.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_36.2.0.bb
deleted file mode 100644
index 632175c..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_36.2.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-DESCRIPTION = "CAN BUS tools in Python 3."
-HOMEPAGE = "https://github.com/eerimoq/cantools"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d9aa4ec07de78abae21c490c9ffe61bd"
-
-SRC_URI[sha256sum] = "31bcdd56cbb5e26decab42f0624c8cead9b94991f6ee922512b0acd6ae7d6da2"
-
-PYPI_PACKAGE = "cantools"
-
-inherit pypi setuptools3
-
-CLEANBROKEN = "1"
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_36.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_36.4.0.bb
new file mode 100644
index 0000000..ec7d4b8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_36.4.0.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "CAN BUS tools in Python 3."
+HOMEPAGE = "https://github.com/eerimoq/cantools"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d9aa4ec07de78abae21c490c9ffe61bd"
+
+SRC_URI[sha256sum] = "8de959fe61bd1d5c30e91aded237f4273c13fafe5fee4d1d78a15a84c8fd9691"
+
+PYPI_PACKAGE = "cantools"
+
+inherit pypi setuptools3
+
+CLEANBROKEN = "1"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.1.bb
deleted file mode 100644
index 9f0242d..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-DESCRIPTION = "An implementation of RFC 7049 - Concise Binary Object Representation (CBOR)."
-DEPENDS +="${PYTHON_PN}-setuptools-scm-native"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI[sha256sum] = "a8bf432f6cb595f50aeb8fed2a4aa3b3f7caa7f135fb57e4378eaa39242feac9"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-        file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-       ${PYTHON_PN}-pytest \
-       ${PYTHON_PN}-unixadmin \
-"
-
-do_install_ptest() {
-      install -d ${D}${PTEST_PATH}/tests
-        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-datetime \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.2.bb
new file mode 100644
index 0000000..d3f6cd8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.2.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "An implementation of RFC 7049 - Concise Binary Object Representation (CBOR)."
+DEPENDS +="${PYTHON_PN}-setuptools-scm-native"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+SRC_URI[sha256sum] = "e283e70b55a049ff364cc5e648fde587e4d9b0e87e4b2664c69e639135e6b3b8"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+       ${PYTHON_PN}-pytest \
+       ${PYTHON_PN}-unixadmin \
+"
+
+do_install_ptest() {
+      install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-datetime \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2021.10.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2021.10.8.bb
new file mode 100644
index 0000000..4c376da
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2021.10.8.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Python package for providing Mozilla's CA Bundle."
+DESCRIPTION = "This installable Python package contains a CA Bundle that you can reference in your \
+Python code. This is useful for verifying HTTP requests, for example.  This is the same CA Bundle \
+which ships with the Requests codebase, and is derived from Mozilla Firefox's canonical set."
+HOMEPAGE = " http://certifi.io/"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=67da0714c3f9471067b729eca6c9fbe8"
+
+SRC_URI[sha256sum] = "78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2021.5.30.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2021.5.30.bb
deleted file mode 100644
index ef2c66b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2021.5.30.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "Python package for providing Mozilla's CA Bundle."
-DESCRIPTION = "This installable Python package contains a CA Bundle that you can reference in your \
-Python code. This is useful for verifying HTTP requests, for example.  This is the same CA Bundle \
-which ships with the Requests codebase, and is derived from Mozilla Firefox's canonical set."
-HOMEPAGE = " http://certifi.io/"
-
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=67da0714c3f9471067b729eca6c9fbe8"
-
-SRC_URI[sha256sum] = "2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.6.bb
deleted file mode 100644
index 529d896..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.6.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Foreign Function Interface for Python calling C code"
-HOMEPAGE = "http://cffi.readthedocs.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf"
-DEPENDS += "libffi ${PYTHON_PN}-pycparser"
-
-SRC_URI[sha256sum] = "c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN}:class-target = " \
-    ${PYTHON_PN}-ctypes \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-pycparser \
-    ${PYTHON_PN}-shell \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.15.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.15.0.bb
new file mode 100644
index 0000000..c36f23b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.15.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Foreign Function Interface for Python calling C code"
+HOMEPAGE = "http://cffi.readthedocs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf"
+DEPENDS += "libffi ${PYTHON_PN}-pycparser"
+
+SRC_URI[sha256sum] = "920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN}:class-target = " \
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-pycparser \
+    ${PYTHON_PN}-shell \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-click_8.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-click_8.0.1.bb
deleted file mode 100644
index c8b9a42..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-click_8.0.1.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "A simple wrapper around optparse for powerful command line utilities."
-DESCRIPTION = "\
-Click is a Python package for creating beautiful command line interfaces \
-in a composable way with as little code as necessary. It's the "Command \
-Line Interface Creation Kit". It's highly configurable but comes with \
-sensible defaults out of the box."
-HOMEPAGE = "http://click.pocoo.org/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=1fa98232fd645608937a0fdc82e999b8"
-
-SRC_URI[sha256sum] = "8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-	${PYTHON_PN}-terminal \
-	${PYTHON_PN}-unixadmin \
-"
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}/tests
-    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-    cp -rf ${S}/setup.cfg ${D}${PTEST_PATH}/
-    cp -rf ${S}/docs ${D}${PTEST_PATH}/
-}
-
-UPSTREAM_CHECK_REGEX = "click/(?P<pver>\d+(\.\d+)+)/"
-
-CLEANBROKEN = "1"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-threading \
-    "
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-click_8.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-click_8.0.3.bb
new file mode 100644
index 0000000..c31d065
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-click_8.0.3.bb
@@ -0,0 +1,41 @@
+SUMMARY = "A simple wrapper around optparse for powerful command line utilities."
+DESCRIPTION = "\
+Click is a Python package for creating beautiful command line interfaces \
+in a composable way with as little code as necessary. It's the "Command \
+Line Interface Creation Kit". It's highly configurable but comes with \
+sensible defaults out of the box."
+HOMEPAGE = "http://click.pocoo.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=1fa98232fd645608937a0fdc82e999b8"
+
+SRC_URI[sha256sum] = "410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+	${PYTHON_PN}-terminal \
+	${PYTHON_PN}-unixadmin \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+    cp -rf ${S}/setup.cfg ${D}${PTEST_PATH}/
+    cp -rf ${S}/docs ${D}${PTEST_PATH}/
+}
+
+UPSTREAM_CHECK_REGEX = "click/(?P<pver>\d+(\.\d+)+)/"
+
+CLEANBROKEN = "1"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-threading \
+    "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.4.1.bb
deleted file mode 100644
index 59a0e94..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.4.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-DESCRIPTION = "A colored formatter for the python logging module"
-HOMEPAGE = "https://github.com/borntyping/python-colorlog"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5c3c6ebdec7792ae12df8d1c0a46b26a"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE = "colorlog"
-
-SRC_URI[sha256sum] = "af99440154a01f27c09256760ea3477982bf782721feaa345904e806879df4d8"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.5.0.bb
new file mode 100644
index 0000000..bd90083
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-colorlog_6.5.0.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "A colored formatter for the python logging module"
+HOMEPAGE = "https://github.com/borntyping/python-colorlog"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5c3c6ebdec7792ae12df8d1c0a46b26a"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "colorlog"
+
+SRC_URI[sha256sum] = "cf62a8e389d5660d0d22be17937b25b9abef9497ddc940197d1773aa1f604339"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.5.2.bb
deleted file mode 100644
index e4b6797..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.5.2.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "A drop-in replacement for argparse that allows options to also be set via config files and/or environment variables."
-HOMEPAGE = "https://github.com/bw2/ConfigArgParse"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=da746463714cc35999ed9a42339f2943"
-
-SRC_URI[sha256sum] = "c39540eb4843883d526beeed912dc80c92481b0c13c9787c91e614a624de3666"
-
-PYPI_PACKAGE = "ConfigArgParse"
-
-inherit pypi setuptools3
-
-PACKAGECONFIG ?= "yaml"
-PACKAGECONFIG[yaml] = ",,,${PYTHON_PN}-pyyaml"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-core \
-    ${PYTHON_PN}-shell \
-    ${PYTHON_PN}-json \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.5.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.5.3.bb
new file mode 100644
index 0000000..7d21375
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.5.3.bb
@@ -0,0 +1,21 @@
+SUMMARY = "A drop-in replacement for argparse that allows options to also be set via config files and/or environment variables."
+HOMEPAGE = "https://github.com/bw2/ConfigArgParse"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=da746463714cc35999ed9a42339f2943"
+
+SRC_URI[sha256sum] = "1b0b3cbf664ab59dada57123c81eff3d9737e0d11d8cf79e3d6eb10823f1739f"
+
+PYPI_PACKAGE = "ConfigArgParse"
+
+inherit pypi setuptools3
+
+PACKAGECONFIG ?= "yaml"
+PACKAGECONFIG[yaml] = ",,,${PYTHON_PN}-pyyaml"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-json \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_5.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_5.5.bb
deleted file mode 100644
index c780a63..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_5.5.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "Code coverage measurement for Python"
-HOMEPAGE = "https://coverage.readthedocs.io"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ee41112a44fe7014dce33e26468ba93"
-
-SRC_URI[sha256sum] = "ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"
-
-inherit pypi setuptools3
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_6.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_6.0.2.bb
new file mode 100644
index 0000000..67b3a5e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_6.0.2.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Code coverage measurement for Python"
+HOMEPAGE = "https://coverage.readthedocs.io"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI[sha256sum] = "6807947a09510dc31fa86f43595bf3a14017cd60bf633cc746d52141bfa6b149"
+
+inherit pypi setuptools3
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.8.bb
deleted file mode 100644
index 2fb48f3..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.8.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Test vectors for the cryptography package."
-HOMEPAGE = "https://cryptography.io/"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0 | BSD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4"
-
-SRC_URI[sha256sum] = "4c84410257993d3de058b44b777a49e1da2ae35ebea2970a360c7e3aa0f580f2"
-
-PYPI_PACKAGE = "cryptography_vectors"
-
-inherit pypi setuptools3
-
-DEPENDS += " \
-    ${PYTHON_PN}-cryptography \
-"
-
-BBCLASSEXTEND = "native nativesdk"
-
-UPSTREAM_CHECK_REGEX = ""
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_35.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_35.0.0.bb
new file mode 100644
index 0000000..474eb82
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_35.0.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Test vectors for the cryptography package."
+HOMEPAGE = "https://cryptography.io/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0 | BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4"
+
+SRC_URI[sha256sum] = "978ad96822c0e007a0a3d8187eb0eafbd9eb1d67b50cfac70277175e74957bfc"
+
+PYPI_PACKAGE = "cryptography_vectors"
+
+inherit pypi setuptools3
+
+DEPENDS += " \
+    ${PYTHON_PN}-cryptography \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+UPSTREAM_CHECK_REGEX = ""
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.6.bb
deleted file mode 100644
index cc017dd..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.6.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Convex optimization package"
-HOMEPAGE = "http://cvxopt.org"
-LICENSE = "GPL-3.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ba1a8a73d8ebea5c47a1173aaf476ddd"
-
-SRC_URI = "git://github.com/cvxopt/cvxopt;protocol=https"
-
-SRCREV = "60fdb838e0bb2d8f32ba51129552c83b55acd2a7"
-
-S = "${WORKDIR}/git"
-
-RDEPENDS:${PN} += "lapack suitesparse"
-DEPENDS += "lapack suitesparse"
-
-inherit setuptools3
-
-export CVXOPT_BLAS_LIB_DIR = "${STAGING_LIBDIR}"
-export CVXOPT_SUITESPARSE_LIB_DIR = "${STAGING_LIBDIR}"
-export CVXOPT_SUITESPARSE_INC_DIR = "${STAGING_INCDIR}"
-
-EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.7.bb
new file mode 100644
index 0000000..3f35149
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.7.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Convex optimization package"
+HOMEPAGE = "http://cvxopt.org"
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ba1a8a73d8ebea5c47a1173aaf476ddd"
+
+SRC_URI = "git://github.com/cvxopt/cvxopt;protocol=https"
+
+SRCREV = "d5a21cf1da62e4269176384b1ff62edac5579f94"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS:${PN} += "lapack suitesparse"
+DEPENDS += "lapack suitesparse"
+
+inherit setuptools3
+
+export CVXOPT_BLAS_LIB_DIR = "${STAGING_LIBDIR}"
+export CVXOPT_SUITESPARSE_LIB_DIR = "${STAGING_LIBDIR}"
+export CVXOPT_SUITESPARSE_INC_DIR = "${STAGING_INCDIR}"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.0.0.bb
deleted file mode 100644
index 3d6995a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.0.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "Provides modules to easily parse localized dates in almost any string formats commonly found on web pages"
-HOMEPAGE = "https://github.com/scrapinghub/dateparser"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3d3ed25571191e7aa3f55d0a6efe0051"
-
-SRC_URI[md5sum] = "24a06a429597239004d47e6b93991aaf"
-SRC_URI[sha256sum] = "159cc4e01a593706a15cd4e269a0b3345edf3aef8bf9278a57dac8adf5bf1e4a"
-
-PYPI_PACKAGE = "dateparser"
-
-inherit pypi setuptools3
-
-CLEANBROKEN = "1"
-
-RDEPENDS:${PN} += " \
-        ${PYTHON_PN}-dateutil \
-        ${PYTHON_PN}-tzlocal \
-        ${PYTHON_PN}-ruamel-yaml \
-"
-
-# Ommitted ${PYTHON_PN}-convertdate, ${PYTHON_PN}-jdatetime ${PYTHON_PN}-umalqurra
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.1.0.bb
new file mode 100644
index 0000000..5b661a0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.1.0.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Provides modules to easily parse localized dates in almost any string formats commonly found on web pages"
+HOMEPAGE = "https://github.com/scrapinghub/dateparser"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3d3ed25571191e7aa3f55d0a6efe0051"
+
+SRC_URI[sha256sum] = "faa2b97f51f3b5ff1ba2f17be90de2b733fb6191f89b4058787473e8202f3044"
+
+PYPI_PACKAGE = "dateparser"
+
+inherit pypi setuptools3
+
+CLEANBROKEN = "1"
+
+RDEPENDS:${PN} += " \
+        ${PYTHON_PN}-dateutil \
+        ${PYTHON_PN}-tzlocal \
+        ${PYTHON_PN}-ruamel-yaml \
+"
+
+# Ommitted ${PYTHON_PN}-convertdate, ${PYTHON_PN}-jdatetime ${PYTHON_PN}-umalqurra
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.2.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.2.3.bb
deleted file mode 100644
index 1801fc2..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.2.3.bb
+++ /dev/null
@@ -1,15 +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] = "60139b91ef9646e27381fd62b8c38f1fc8ebc78dc4bc231c08c51240062e58e6"
-
-PYPI_PACKAGE = "elementpath"
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-xml \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.3.2.bb
new file mode 100644
index 0000000..4c94d93
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.3.2.bb
@@ -0,0 +1,15 @@
+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] = "392f32a5efdf15c14f3f56ef8422364f8b0a74a12f51a66d9c903c172fe3594b"
+
+PYPI_PACKAGE = "elementpath"
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-xml \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.30.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.30.2.bb
deleted file mode 100644
index 80869a2..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.30.2.bb
+++ /dev/null
@@ -1,12 +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[md5sum] = "ebf5794e3f7a9f1778fb4f2a58eb7614"
-SRC_URI[sha256sum] = "1811b122d9a45eb5bafba092d36911bca825f835cb648a862bbf984030acff9d"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "${PYTHON_PN}-dnspython"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.32.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.32.0.bb
new file mode 100644
index 0000000..3848150
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.32.0.bb
@@ -0,0 +1,11 @@
+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] = "2f0bb8ed0dc0ab21d683975d5d8ab3c054d588ce61def9faf7a465ee363e839b"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "${PYTHON_PN}-dnspython"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.0.1.bb
deleted file mode 100644
index f1c0461..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.0.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "A microframework based on Werkzeug, Jinja2 and good intentions"
-DESCRIPTION = "\
-Flask is a microframework for Python based on Werkzeug, Jinja 2 and good \
-intentions. And before you ask: It’s BSD licensed!"
-HOMEPAGE = "https://github.com/mitsuhiko/flask/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
-
-SRC_URI[sha256sum] = "1c4c257b1892aec1398784c63791cbaa43062f1f7aeb555c4da961b20ee68f55"
-
-PYPI_PACKAGE = "Flask"
-
-inherit pypi setuptools3
-
-CLEANBROKEN = "1"
-
-RDEPENDS:${PN} = " \
-    ${PYTHON_PN}-werkzeug \
-    ${PYTHON_PN}-jinja2 \
-    ${PYTHON_PN}-itsdangerous \
-    ${PYTHON_PN}-click \
-    ${PYTHON_PN}-profile \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.0.2.bb
new file mode 100644
index 0000000..e3f1df3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.0.2.bb
@@ -0,0 +1,23 @@
+SUMMARY = "A microframework based on Werkzeug, Jinja2 and good intentions"
+DESCRIPTION = "\
+Flask is a microframework for Python based on Werkzeug, Jinja 2 and good \
+intentions. And before you ask: It’s BSD licensed!"
+HOMEPAGE = "https://github.com/mitsuhiko/flask/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
+
+SRC_URI[sha256sum] = "7b2fb8e934ddd50731893bdcdb00fc8c0315916f9fcd50d22c7cc1a95ab634e2"
+
+PYPI_PACKAGE = "Flask"
+
+inherit pypi setuptools3
+
+CLEANBROKEN = "1"
+
+RDEPENDS:${PN} = " \
+    ${PYTHON_PN}-werkzeug \
+    ${PYTHON_PN}-jinja2 \
+    ${PYTHON_PN}-itsdangerous \
+    ${PYTHON_PN}-click \
+    ${PYTHON_PN}-profile \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.0.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.0.8.bb
deleted file mode 100644
index 976f57a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.0.8.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "GMP/MPIR, MPFR, and MPC interface to Python 2.6+ and 3.x"
-SECTION = "devel/python"
-LICENSE = "GPL-3.0 | LGPL-3.0+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-DEPENDS += "gmp mpfr libmpc"
-
-PYPI_PACKAGE = "gmpy2"
-PYPI_PACKAGE_EXT = "zip"
-SRC_URI[sha256sum] = "dd233e3288b90f21b0bb384bcc7a7e73557bb112ccf0032ad52aa614eb373d3f"
-
-inherit pypi setuptools3 python3native
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.0rc1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.0rc1.bb
new file mode 100644
index 0000000..d3150d6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.0rc1.bb
@@ -0,0 +1,13 @@
+SUMMARY = "GMP/MPIR, MPFR, and MPC interface to Python 2.6+ and 3.x"
+SECTION = "devel/python"
+LICENSE = "GPL-3.0 | LGPL-3.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+DEPENDS += "gmp mpfr libmpc"
+
+PYPI_PACKAGE = "gmpy2"
+SRC_URI[sha256sum] = "86cb6d8e5837560c32c706d48d6ed25676be6b3c79e6aa5d245965b9e99231b9"
+
+inherit pypi setuptools3 python3native
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.10.bb
deleted file mode 100644
index eee47fe..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.10.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Client for MQTT protocol"
-HOMEPAGE = "https://github.com/wialon/gmqtt"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=903f1792621a3b35ee546da75d139177"
-
-SRC_URI[sha256sum] = "7ab7a226ab13d75f7bc34a1422da73658ce4cac86708bf55f92daf7c5f44165a"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    python3-asyncio \
-    python3-core \
-    python3-datetime \
-    python3-json \
-    python3-logging \
-    python3-netclient \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.11.bb
new file mode 100644
index 0000000..0e6670b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmqtt_0.6.11.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Client for MQTT protocol"
+HOMEPAGE = "https://github.com/wialon/gmqtt"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=903f1792621a3b35ee546da75d139177"
+
+SRC_URI[sha256sum] = "0be6d57841538abc3ae0a41131c6d53314e0705b74876a6f94bc903df1209fb6"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    python3-asyncio \
+    python3-core \
+    python3-datetime \
+    python3-json \
+    python3-logging \
+    python3-netclient \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_1.31.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_1.31.1.bb
deleted file mode 100644
index fe0aebb..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_1.31.1.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-DESCRIPTION = "Google API client core library"
-HOMEPAGE = "https://github.com/googleapis/python-api-core"
-AUTHOR = "Google LLC"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "108cf94336aed7e614eafc53933ef02adf63b9f0fd87e8f8212acaa09eaca456"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-asyncio \
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-math \
-"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-googleapis-common-protos \
-    ${PYTHON_PN}-google-auth \
-    ${PYTHON_PN}-grpcio \
-    ${PYTHON_PN}-protobuf \
-    ${PYTHON_PN}-pytz \
-    ${PYTHON_PN}-requests \
-    ${PYTHON_PN}-six \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.1.1.bb
new file mode 100644
index 0000000..34489af
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.1.1.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Google API client core library"
+HOMEPAGE = "https://github.com/googleapis/python-api-core"
+AUTHOR = "Google LLC"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "646d9399c3c478fe475cfe523e84572ab31a340814ea977fb2774eca5a6549a2"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-asyncio \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-math \
+"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-googleapis-common-protos \
+    ${PYTHON_PN}-google-auth \
+    ${PYTHON_PN}-grpcio \
+    ${PYTHON_PN}-protobuf \
+    ${PYTHON_PN}-pytz \
+    ${PYTHON_PN}-requests \
+    ${PYTHON_PN}-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.19.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.19.1.bb
deleted file mode 100644
index 564058e..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.19.1.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] = "c89b345615188fbd525f52d59013156ad3bfd1023af27041f2dec3d7877ba112"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-six \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-core \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-httplib2 \
-    ${PYTHON_PN}-uritemplate \
-    ${PYTHON_PN}-google-api-core \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.27.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.27.0.bb
new file mode 100644
index 0000000..41ab48c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.27.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] = "659e9955f0f1e02fcce5dec85622eb5af1807572ef0f09c49d68d8426da670e7"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-httplib2 \
+    ${PYTHON_PN}-uritemplate \
+    ${PYTHON_PN}-google-api-core \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_1.34.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_1.34.0.bb
deleted file mode 100644
index 92ad248..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_1.34.0.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "Google Authentication Library"
-HOMEPAGE = "https://github.com/googleapis/google-auth-library-python"
-AUTHOR = "Google Cloud Platform"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "f1094088bae046fb06f3d1a3d7df14717e8d959e9105b79c57725bd4e17597a2"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-asyncio \
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-numbers \
-"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-aiohttp \
-    ${PYTHON_PN}-cachetools \
-    ${PYTHON_PN}-pyasn1-modules \
-    ${PYTHON_PN}-rsa \
-    ${PYTHON_PN}-six \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.3.0.bb
new file mode 100644
index 0000000..9d192c1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.3.0.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Google Authentication Library"
+HOMEPAGE = "https://github.com/googleapis/google-auth-library-python"
+AUTHOR = "Google Cloud Platform"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "2800f6dfad29c6ced5faf9ca0c38ea8ba1ebe2559b10c029bd021e3de3301627"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-asyncio \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-aiohttp \
+    ${PYTHON_PN}-cachetools \
+    ${PYTHON_PN}-pyasn1-modules \
+    ${PYTHON_PN}-rsa \
+    ${PYTHON_PN}-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_1.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_1.1.1.bb
deleted file mode 100644
index 9d014ec..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_1.1.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "Python lightweight in-process concurrent programming"
-HOMEPAGE = "https://greenlet.readthedocs.io/en/latest/"
-LICENSE = "MIT & PSF"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e95668d68e4329085c7ab3535e6a7aee \
-                    file://LICENSE.PSF;md5=c106931d9429eda0492617f037b8f69a"
-
-SRC_URI[sha256sum] = "c0f22774cd8294078bdf7392ac73cf00bfa1e5e0ed644bd064fdabc5f2a2f481"
-
-inherit pypi distutils3 setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_1.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_1.1.2.bb
new file mode 100644
index 0000000..07c1436
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_1.1.2.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Python lightweight in-process concurrent programming"
+HOMEPAGE = "https://greenlet.readthedocs.io/en/latest/"
+LICENSE = "MIT & PSF"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e95668d68e4329085c7ab3535e6a7aee \
+                    file://LICENSE.PSF;md5=c106931d9429eda0492617f037b8f69a"
+
+SRC_URI[sha256sum] = "e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"
+
+inherit pypi distutils3 setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.40.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.40.0.bb
deleted file mode 100644
index f86bf00..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.40.0.bb
+++ /dev/null
@@ -1,22 +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 += "${PYTHON_PN}-grpcio"
-
-SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch"
-
-SRC_URI[sha256sum] = "d440f2bc089ff628618c536904d5bc39d0b44f7afdda4c4c1ecd15fcf385bfba"
-
-RDEPENDS:${PN} = "${PYTHON_PN}-grpcio"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# Needs abseil-cpp which does not build for ppc64le/musl
-COMPATIBLE_HOST:libc-musl:powerpc64le = "null"
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.41.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.41.0.bb
new file mode 100644
index 0000000..55b8890
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.41.0.bb
@@ -0,0 +1,22 @@
+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 += "${PYTHON_PN}-grpcio"
+
+SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch"
+
+SRC_URI[sha256sum] = "3891b1df82369acbc8451d4952cd20755f49a82398dce62437511ad17b47290e"
+
+RDEPENDS:${PN} = "${PYTHON_PN}-grpcio"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Needs abseil-cpp which does not build for ppc64le/musl
+COMPATIBLE_HOST:libc-musl:powerpc64le = "null"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.40.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.40.0.bb
deleted file mode 100644
index 1cfb967..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.40.0.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-DESCRIPTION = "Google gRPC"
-HOMEPAGE = "http://www.grpc.io/"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-DEPENDS += "${PYTHON_PN}-protobuf"
-
-SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch"
-SRC_URI:append:class-target = " file://ppc-boringssl-support.patch \
-                                file://boring_ssl.patch \
-                                file://mips_bigendian.patch \
-                                file://0001-absl-always-use-asm-sgidefs.h.patch \
-"
-SRC_URI[sha256sum] = "3d172158fe886a2604db1b6e17c2de2ab465fe0fe36aba2ec810ca8441cefe3a"
-
-RDEPENDS:${PN} = "${PYTHON_PN}-protobuf \
-                  ${PYTHON_PN}-setuptools \
-                  ${PYTHON_PN}-six \
-"
-
-inherit setuptools3
-inherit pypi
-
-export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY = "1"
-
-BORING_SSL_PLATFORM:arm = "linux-arm"
-BORING_SSL_PLATFORM:x86-64 = "linux-x86_64"
-BORING_SSL_PLATFORM ?= "unsupported"
-export GRPC_BORING_SSL_PLATFORM = "${BORING_SSL_PLATFORM}"
-
-BORING_SSL:x86-64 = "1"
-BORING_SSL:arm = "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"
-
-# needs vdso support
-COMPATIBLE_HOST:libc-musl:powerpc64le = "null"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.41.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.41.0.bb
new file mode 100644
index 0000000..fb6f1a3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.41.0.bb
@@ -0,0 +1,48 @@
+DESCRIPTION = "Google gRPC"
+HOMEPAGE = "http://www.grpc.io/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS += "${PYTHON_PN}-protobuf"
+
+SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch"
+SRC_URI:append:class-target = " file://ppc-boringssl-support.patch \
+                                file://boring_ssl.patch \
+                                file://mips_bigendian.patch \
+                                file://0001-absl-always-use-asm-sgidefs.h.patch \
+"
+SRC_URI[sha256sum] = "15c04d695833c739dbb25c88eaf6abd9a461ec0dbd32f44bc8769335a495cf5a"
+
+RDEPENDS:${PN} = "${PYTHON_PN}-protobuf \
+                  ${PYTHON_PN}-setuptools \
+                  ${PYTHON_PN}-six \
+"
+
+inherit setuptools3
+inherit pypi
+
+export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY = "1"
+
+BORING_SSL_PLATFORM:arm = "linux-arm"
+BORING_SSL_PLATFORM:x86-64 = "linux-x86_64"
+BORING_SSL_PLATFORM ?= "unsupported"
+export GRPC_BORING_SSL_PLATFORM = "${BORING_SSL_PLATFORM}"
+
+BORING_SSL:x86-64 = "1"
+BORING_SSL:arm = "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"
+
+# needs vdso support
+COMPATIBLE_HOST:libc-musl:powerpc64le = "null"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.4.0.bb
deleted file mode 100644
index 89000b7..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.4.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Provides both a high- and low-level interface to the HDF5 library from Python."
-HOMEPAGE = "https://www.h5py.org/"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=113251d71fb0384712c719b567261c5c"
-
-SRC_URI[sha256sum] = "ee1c683d91ab010d5e85cb61e8f9e7ee0d8eab545bf3dd50a9618f1d0e8f615e"
-
-SRC_URI:append = " \
-           file://0001-setup_build.py-avoid-absolute-path.patch \
-           file://0001-setup.py-Fix-numpy-version.patch \
-          "
-
-inherit pkgconfig pypi setuptools3
-
-BBCLASSEXTEND = "native"
-
-DEPENDS = "python3-pkgconfig-native \
-           python3-cython-native \
-           python3-numpy-native \
-           python3-six-native \
-           hdf5-native \
-           python3 \
-           hdf5 \
-          "
-
-RDEPENDS:${PN} = "python3-numpy \
-                  python3-six \
-                  python3-json \
-                 "
-
-export HDF5_VERSION="1.8.21"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.5.0.bb
new file mode 100644
index 0000000..aad2f91
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.5.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Provides both a high- and low-level interface to the HDF5 library from Python."
+HOMEPAGE = "https://www.h5py.org/"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=113251d71fb0384712c719b567261c5c"
+
+SRC_URI[sha256sum] = "77c7be4001ac7d3ed80477de5b6942501d782de1bbe4886597bdfec2a7ab821f"
+
+SRC_URI:append = " \
+           file://0001-setup_build.py-avoid-absolute-path.patch \
+           file://0001-setup.py-Fix-numpy-version.patch \
+          "
+
+inherit pkgconfig pypi setuptools3
+
+BBCLASSEXTEND = "native"
+
+DEPENDS = "python3-pkgconfig-native \
+           python3-cython-native \
+           python3-numpy-native \
+           python3-six-native \
+           hdf5-native \
+           python3 \
+           hdf5 \
+          "
+
+RDEPENDS:${PN} = "python3-numpy \
+                  python3-six \
+                  python3-json \
+                 "
+
+export HDF5_VERSION="1.8.21"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.4.0.bb
deleted file mode 100644
index 9eda659..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.4.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "Calculate the distance between 2 points on Earth"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-SRC_URI[sha256sum] = "6dcdee48b854b7bd0a121a04a2cb775dc7d9e2354f1e22d29ff62110189305b0"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "python3-numpy"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.5.1.bb
new file mode 100644
index 0000000..1ed67d3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.5.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Calculate the distance between 2 points on Earth"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI[sha256sum] = "357e41dfddc4a0f2b1c941d92a590cac840f7ce4b3da14b45b68d968b3ad7cc7"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-numpy"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.19.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.19.1.bb
deleted file mode 100644
index 3f244ec..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.19.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "A comprehensive HTTP client library, httplib2 supports many features left out of other HTTP libraries."
-HOMEPAGE = "https://github.com/httplib2/httplib2"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=56e5e931172b6164b62dc7c4aba6c8cf"
-
-SRC_URI[sha256sum] = "0b12617eeca7433d4c396a100eaecfa4b08ee99aa881e6df6e257a7aad5d533d"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-compression \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-pyparsing \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.20.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.20.1.bb
new file mode 100644
index 0000000..8a0b6c9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.20.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "A comprehensive HTTP client library, httplib2 supports many features left out of other HTTP libraries."
+HOMEPAGE = "https://github.com/httplib2/httplib2"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=56e5e931172b6164b62dc7c4aba6c8cf"
+
+SRC_URI[sha256sum] = "0efbcb8bfbfbc11578130d87d8afcc65c2274c6eb446e59fc674e4d7c972d327"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-compression \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-pyparsing \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.11.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.11.0.bb
deleted file mode 100644
index aacda65..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.11.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Python humanize utilities"
-HOMEPAGE = "http://github.com/jmoiron/humanize"
-SECTION = "devel/python"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=4ecc42519e84f6f3e23529464df7bd1d"
-
-SRC_URI[sha256sum] = "4160cdc63fcd0daac27d2e1e218a31bb396fc3fe5712d153675d89432a03778f"
-
-inherit pypi setuptools3
-
-DEPENDS += "\
-    ${PYTHON_PN}-setuptools-scm-native \
-"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-setuptools \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.12.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.12.0.bb
new file mode 100644
index 0000000..1aecc5a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.12.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Python humanize utilities"
+HOMEPAGE = "http://github.com/jmoiron/humanize"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=4ecc42519e84f6f3e23529464df7bd1d"
+
+SRC_URI[sha256sum] = "5ec1a66e230a3e31fb3f184aab9436ea13d4e37c168e0ffc345ae5bb57e58be6"
+
+inherit pypi setuptools3
+
+DEPENDS += "\
+    ${PYTHON_PN}-setuptools-scm-native \
+"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-setuptools \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.2.bb
deleted file mode 100644
index 22f6402..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.2.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Internationalised Domain Names in Applications"
-HOMEPAGE = "https://github.com/kjd/idna"
-LICENSE = "BSD-3-Clause & Python-2.0 & Unicode"
-LIC_FILES_CHKSUM = "file://LICENSE.md;md5=239668a7c6066d9e0c5382e9c8c6c0e1"
-
-SRC_URI[sha256sum] = "467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3"
-
-inherit pypi setuptools3
-
-# Remove bundled egg-info
-do_compile:prepend() {
-    rm -rf ${S}/idna.egg-info
-}
-
-RDEPENDS:${PN}:class-target = "\
-    ${PYTHON_PN}-codecs \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.3.bb
new file mode 100644
index 0000000..a0e6b79
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.3.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Internationalised Domain Names in Applications"
+HOMEPAGE = "https://github.com/kjd/idna"
+LICENSE = "BSD-3-Clause & Python-2.0 & Unicode"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=239668a7c6066d9e0c5382e9c8c6c0e1"
+
+SRC_URI[sha256sum] = "9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"
+
+inherit pypi setuptools3
+
+# Remove bundled egg-info
+do_compile:prepend() {
+    rm -rf ${S}/idna.egg-info
+}
+
+RDEPENDS:${PN}:class-target = "\
+    ${PYTHON_PN}-codecs \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.27.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.27.0.bb
deleted file mode 100644
index 3c64b82..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.27.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "IPython: Productive Interactive Computing"
-HOMEPAGE = "https://ipython.org"
-AUTHOR = "The IPython Development Team <ipython-dev@python.org>"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING.rst;md5=59b20262b8663cdd094005bddf47af5f"
-
-PYPI_PACKAGE = "ipython"
-
-SRC_URI[sha256sum] = "58b55ebfdfa260dad10d509702dc2857cb25ad82609506b070cf2d7b7df5af13"
-
-RDEPENDS:${PN} = "\
-    ${PYTHON_PN}-setuptools \
-    ${PYTHON_PN}-jedi \
-    ${PYTHON_PN}-decorator \
-    ${PYTHON_PN}-pickleshare \
-    ${PYTHON_PN}-traitlets \
-    ${PYTHON_PN}-prompt-toolkit \
-    ${PYTHON_PN}-pygments \
-    ${PYTHON_PN}-backcall \
-    ${PYTHON_PN}-pydoc \
-    ${PYTHON_PN}-debugger \
-    ${PYTHON_PN}-pexpect \
-    ${PYTHON_PN}-unixadmin \
-    ${PYTHON_PN}-misc \
-    ${PYTHON_PN}-sqlite3 \
-"
-
-inherit setuptools3 pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.28.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.28.0.bb
new file mode 100644
index 0000000..c5d05a8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.28.0.bb
@@ -0,0 +1,28 @@
+SUMMARY = "IPython: Productive Interactive Computing"
+HOMEPAGE = "https://ipython.org"
+AUTHOR = "The IPython Development Team <ipython-dev@python.org>"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING.rst;md5=59b20262b8663cdd094005bddf47af5f"
+
+PYPI_PACKAGE = "ipython"
+
+SRC_URI[sha256sum] = "2097be5c814d1b974aea57673176a924c4c8c9583890e7a5f082f547b9975b11"
+
+RDEPENDS:${PN} = "\
+    ${PYTHON_PN}-setuptools \
+    ${PYTHON_PN}-jedi \
+    ${PYTHON_PN}-decorator \
+    ${PYTHON_PN}-pickleshare \
+    ${PYTHON_PN}-traitlets \
+    ${PYTHON_PN}-prompt-toolkit \
+    ${PYTHON_PN}-pygments \
+    ${PYTHON_PN}-backcall \
+    ${PYTHON_PN}-pydoc \
+    ${PYTHON_PN}-debugger \
+    ${PYTHON_PN}-pexpect \
+    ${PYTHON_PN}-unixadmin \
+    ${PYTHON_PN}-misc \
+    ${PYTHON_PN}-sqlite3 \
+"
+
+inherit setuptools3 pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_1.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_1.0.1.bb
deleted file mode 100644
index 8ff3059..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_1.0.1.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Self-contained ISO 3166-1 country definitions"
-HOMEPAGE = "https://pypi.org/project/iso3166/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5e2f4edc7e7408a82e4a1d05f229b695"
-
-SRC_URI[md5sum] = "53c313c7ae8721e40ddd5e7a01bbcb7e"
-SRC_URI[sha256sum] = "b1e58dbcf50fbb2c9c418ec7a6057f0cdb30b8f822ac852f72e71ba769dae8c5"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-RDEPENDS:${PN} += "python3-numbers"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_2.0.2.bb
new file mode 100644
index 0000000..bc05f06
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_2.0.2.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Self-contained ISO 3166-1 country definitions"
+HOMEPAGE = "https://pypi.org/project/iso3166/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5e2f4edc7e7408a82e4a1d05f229b695"
+
+SRC_URI[sha256sum] = "04d02cfcfc18a6f8a9a4edb4d0a55e2e4fc575626c29d702f750de415e88d372"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN} += "python3-numbers"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_3.6.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_3.6.2.bb
deleted file mode 100644
index cadddc4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_3.6.2.bb
+++ /dev/null
@@ -1,18 +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://PKG-INFO;md5=fc0a323542d2fbe0ad822fa0b1a0a96f"
-
-SRC_URI[md5sum] = "3c9ee1bc7de48ff4d9c773046b2eb081"
-SRC_URI[sha256sum] = "a589e35f0dab89283c1a3de9d70ed6cf657932aaed8e8ce1b0e5801aaab1da67"
-
-PYPI_PACKAGE = "jdatetime"
-
-inherit pypi setuptools3
-
-CLEANBROKEN = "1"
-
-RDEPENDS:${PN} += " \
-        ${PYTHON_PN}-modules \
-"
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_3.6.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_3.6.4.bb
new file mode 100644
index 0000000..ad1ca42
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_3.6.4.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://PKG-INFO;md5=f6890b2f685363312aff7f520831cdef"
+
+SRC_URI[sha256sum] = "39d0be41076b3a3850c3bfa90817e7ed459edc0e9cadce37dc7229b11f121c7e"
+
+PYPI_PACKAGE = "jdatetime"
+
+inherit pypi setuptools3
+
+CLEANBROKEN = "1"
+
+RDEPENDS:${PN} += " \
+        ${PYTHON_PN}-modules \
+"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.0.1.bb
deleted file mode 100644
index e325ad8..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.0.1.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Joblib is a set of tools to provide lightweight pipelining in Python."
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=32b289008fb813a27c9025f02b59d03d"
-
-inherit setuptools3 pypi
-
-SRC_URI[md5sum] = "9914b330916395c0a1feca54949867a3"
-SRC_URI[sha256sum] = "9c17567692206d2f3fb9ecf5e991084254fe631665c450b443761c4186a613f7"
-
-RDEPENDS:${PN} += " \
-    python3-asyncio \
-    python3-distutils \
-    python3-json \
-    python3-multiprocessing \
-    python3-pprint \
-    python3-pydoc \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.1.0.bb
new file mode 100644
index 0000000..e69cfef
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.1.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Joblib is a set of tools to provide lightweight pipelining in Python."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2e481820abf0a70a18011a30153df066"
+
+inherit setuptools3 pypi
+
+SRC_URI[sha256sum] = "4158fcecd13733f8be669be0683b96ebdbbd38d23559f54dca7205aea1bf1e35"
+
+RDEPENDS:${PN} += " \
+    python3-asyncio \
+    python3-distutils \
+    python3-json \
+    python3-multiprocessing \
+    python3-pprint \
+    python3-pydoc \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin_2.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin_2.2.2.bb
deleted file mode 100644
index 1a0578e..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin_2.2.2.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "JavaScript minifier."
-HOMEPAGE = "https://github.com/tikitu/jsmin/"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3a3301ce2ad647e172f4a1016c67324d"
-
-inherit setuptools3 pypi ptest
-SRC_URI[md5sum] = "00e7a3179a4591aab2ee707b3214e2fd"
-SRC_URI[sha256sum] = "b6df99b2cd1c75d9d342e4335b535789b8da9107ec748212706ef7bbe5c2553b"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-"
-
-do_install_ptest() {
-	cp -f ${S}/jsmin/test.py ${D}${PTEST_PATH}/
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin_3.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin_3.0.0.bb
new file mode 100644
index 0000000..733c963
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsmin_3.0.0.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "JavaScript minifier."
+HOMEPAGE = "https://github.com/tikitu/jsmin/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3a3301ce2ad647e172f4a1016c67324d"
+
+inherit setuptools3 pypi ptest
+SRC_URI[sha256sum] = "88fc1bd6033a47c5911dbcada7d279c7a8b7ad0841909590f6a742c20c4d2e08"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	cp -f ${S}/jsmin/test.py ${D}${PTEST_PATH}/
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.2.0.bb
deleted file mode 100644
index 492ed65..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_4.2.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Library to process JSON-RPC requests"
-HOMEPAGE = "https://github.com/bcb/jsonrpcserver"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c89120516900f96f4c60d35fdc4c3f15"
-
-SRC_URI[sha256sum] = "0c9e5b9445621138521e912016ae39b3badadd2607140dcbb0c8062934ab4854"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    python3-apply-defaults \
-    python3-asyncio \
-    python3-core \
-    python3-json \
-    python3-jsonschema \
-    python3-logging \
-    python3-netclient \
-    python3-pkgutil \
-"
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.3.bb
new file mode 100644
index 0000000..c250030
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.3.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Library to process JSON-RPC requests"
+HOMEPAGE = "https://github.com/bcb/jsonrpcserver"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=61b63ea9d36f6fb63ddaaaac8265304f"
+
+SRC_URI[sha256sum] = "0cc514559596fa380bf188e31b0cdf3d9e6d9cc162fdca8a49ed511b291a9ae1"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    python3-apply-defaults \
+    python3-asyncio \
+    python3-core \
+    python3-json \
+    python3-jsonschema \
+    python3-logging \
+    python3-netclient \
+    python3-pkgutil \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb
index d046489..a4ec626 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb
@@ -56,7 +56,7 @@
     python3-cython-native \
 "
 
-RDEPENDS_${PN} = " \
+RDEPENDS:${PN} = " \
     gstreamer1.0 \
     gstreamer1.0-python \
     libsdl2 \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-setup.py-address-openssl-3.x-build-issue.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-setup.py-address-openssl-3.x-build-issue.patch
new file mode 100644
index 0000000..c67e508
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-setup.py-address-openssl-3.x-build-issue.patch
@@ -0,0 +1,28 @@
+From 0d824e5c2ab13e761ffaeabdccf9513d5b8f280d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 8 Oct 2021 11:18:35 +0200
+Subject: [PATCH] setup.py: address openssl 3.x build issue
+
+swig throws:
+| /home/alex/development/poky/build-metaoe/tmp/work/x86_64-linux/python3-m2crypto-native/0.38.0-r0/recipe-sysroot-native/usr/include/openssl/macros.h:155: Error: CPP #error ""OPENSSL_API_COMPAT expresses an impossible API compatibility level"". Use the -cpperraswarn option to continue swig processing.
+
+I'm not sure why; upstream should take a look.
+
+Upstream-Status: Inappropriate [workaround]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ setup.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/setup.py b/setup.py
+index 2c65404..74704bc 100644
+--- a/setup.py
++++ b/setup.py
+@@ -192,6 +192,7 @@ class _M2CryptoBuildExt(build_ext.build_ext):
+ 
+         self.swig_opts.append('-includeall')
+         self.swig_opts.append('-modern')
++        self.swig_opts.append('-cpperraswarn')
+         self.swig_opts.append('-builtin')
+ 
+         # These two lines are a workaround for
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.38.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.38.0.bb
index e1ee99b..51a0dd6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.38.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.38.0.bb
@@ -7,8 +7,9 @@
 FILESEXTRAPATHS:prepend := "${THISDIR}/python-m2crypto:"
 
 SRC_URI += "file://0001-setup.py-link-in-sysroot-not-in-host-directories.patch \
-            file://cross-compile-platform.patch \
-            file://avoid-host-contamination.patch \
+           file://cross-compile-platform.patch \
+           file://avoid-host-contamination.patch \
+           file://0001-setup.py-address-openssl-3.x-build-issue.patch \
            "
 SRC_URI[sha256sum] = "99f2260a30901c949a8dc6d5f82cd5312ffb8abc92e76633baf231bbbcb2decb"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.6.1.bb
index f1190c3..513a5a9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.6.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.6.1.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "McCabe checker, plugin for flake8"
 HOMEPAGE = "https://github.com/PyCQA/mccabe"
 SECTION = "devel/python"
-LICENSE = "Apache-2.0"
+LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a489dc62bacbdad3335c0f160a974f0f"
 
 SRC_URI[md5sum] = "723df2f7b1737b8887475bac4c763e1e"
@@ -10,8 +10,3 @@
 inherit pypi setuptools3
 
 DEPENDS += "${PYTHON_PN}-pytest-runner-native"
-
-RDEPENDS:${PN} += "${PYTHON_PN}-prettytable \
-            ${PYTHON_PN}-cmd2 \
-            ${PYTHON_PN}-pyparsing \
-           "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_5.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_5.1.0.bb
deleted file mode 100644
index 3ec271a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_5.1.0.bb
+++ /dev/null
@@ -1,24 +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=e74c98abe0de8f798ca609137f9cef4a"
-
-SRC_URI[sha256sum] = "25b4e5f22d3a37ddf3effc0710ba692cfc792c2b9edfb9c05aefe823256e84d5"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-"
-
-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_5.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_5.2.0.bb
new file mode 100644
index 0000000..05b18fa
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_5.2.0.bb
@@ -0,0 +1,24 @@
+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=84c63e2bcd84e619d249af5181e2147f"
+
+SRC_URI[sha256sum] = "0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+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-nmap_1.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.5.0.bb
deleted file mode 100644
index a3523b7..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.5.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "python-nmap is a python library which helps in using nmap port scanner"
-HOMEPAGE = "https://www.nmmapper.com/"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-DEPENDS += "${PYTHON_PN}-wheel-native"
-
-PYPI_PACKAGE = "python3-nmap"
-
-SRC_URI[md5sum] = "3a43dd0f56ade8c76c7c6f994604212d"
-SRC_URI[sha256sum] = "b52744e0c9944c567733b8deb60d6363e17233ee40466edfb1b09a5780576f9a"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "nmap \
-	${PYTHON_PN}-requests \
-	${PYTHON_PN}-simplejson \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.5.1.bb
new file mode 100644
index 0000000..ed0e980
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-nmap_1.5.1.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "python-nmap is a python library which helps in using nmap port scanner"
+HOMEPAGE = "https://www.nmmapper.com/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+DEPENDS += "${PYTHON_PN}-wheel-native"
+
+PYPI_PACKAGE = "python3-nmap"
+
+SRC_URI[sha256sum] = "0e6667153a84938bdc0e95a64cd86397b4c46724c422873ea8f1d007d248926a"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "nmap \
+	${PYTHON_PN}-requests \
+	${PYTHON_PN}-simplejson \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.8.bb
deleted file mode 100644
index 3d1f46e..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.8.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files"
-DESCRIPTION = "It was born from lack of existing library to read/write natively \
-from Python the Office Open XML format. All kudos to the PHPExcel team as openpyxl \
-was initially based on PHPExcel."
-
-HOMEPAGE = "http://www.python-excel.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "4f2770348c029ce9433316ced8f91ed37d2a605e654f8bfdc93a3524561a8ce2"
-
-RDEPENDS:${PN} += "\
-	${PYTHON_PN}-compression \
-	${PYTHON_PN}-io \
-	${PYTHON_PN}-pprint \
-	${PYTHON_PN}-shell \
-	${PYTHON_PN}-jdcal \
-	${PYTHON_PN}-et-xmlfile \
-	${PYTHON_PN}-numbers \
-	${PYTHON_PN}-xml \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.9.bb
new file mode 100644
index 0000000..4dfd449
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-openpyxl_3.0.9.bb
@@ -0,0 +1,23 @@
+SUMMARY = "openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files"
+DESCRIPTION = "It was born from lack of existing library to read/write natively \
+from Python the Office Open XML format. All kudos to the PHPExcel team as openpyxl \
+was initially based on PHPExcel."
+
+HOMEPAGE = "http://www.python-excel.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "40f568b9829bf9e446acfffce30250ac1fa39035124d55fc024025c41481c90f"
+
+RDEPENDS:${PN} += "\
+	${PYTHON_PN}-compression \
+	${PYTHON_PN}-io \
+	${PYTHON_PN}-pprint \
+	${PYTHON_PN}-shell \
+	${PYTHON_PN}-jdcal \
+	${PYTHON_PN}-et-xmlfile \
+	${PYTHON_PN}-numbers \
+	${PYTHON_PN}-xml \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.5.1.bb
deleted file mode 100644
index 2d4e55a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.5.1.bb
+++ /dev/null
@@ -1,35 +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=eb48c6ee2cb9f5b8b9fe75e6f817bdfc \
-                    file://epl-v10;md5=8d383c379e91d20ba18a52c3e7d3a979 \
-                    file://edl-v10;md5=c09f121939f063aeb5235972be8c722c \
-"
-SRCNAME = "paho-mqtt"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "32f93c0ed92c7439f7a715ed258fd35d"
-SRC_URI[sha256sum] = "9feb068e822be7b3a116324e01fb6028eb1d66412bf98595ae72698965cb1cae"
-
-DEPENDS += "${PYTHON_PN}-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}"
-
-FILES:${PN}-examples = "${datadir}/${BPN}/examples"
-
-RDEPENDS:${PN} = "\
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-math \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-threading \
-"
-
-BBCLASSEXTEND = "native nativesdk"
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
new file mode 100644
index 0000000..81a6d0a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.6.1.bb
@@ -0,0 +1,33 @@
+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 += "${PYTHON_PN}-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} ${PYTHON_PN}-core"
+
+FILES:${PN}-examples = "${datadir}/${BPN}/examples"
+
+RDEPENDS:${PN} = "\
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-math \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.3.3.bb
deleted file mode 100644
index 6e557ed..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.3.3.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY  = "pandas library for high-performance data analysis tools"
-DESCRIPTION = "pandas is an open source, BSD-licensed library providing \
-high-performance, easy-to-use data structures and data analysis tools for \
-the Python programming language."
-HOMEPAGE = "http://pandas.pydata.org/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3f23c5c092b74d245d48eeef72bc3fd2"
-
-SRC_URI[sha256sum] = "272c8cb14aa9793eada6b1ebe81994616e647b5892a370c7135efb2924b701df"
-
-inherit pypi setuptools3
-
-DEPENDS += " \
-    ${PYTHON_PN}-numpy-native ${PYTHON_PN}-cython-native \
-"
-
-CFLAGS:append:toolchain-clang = " -Wno-error=deprecated-declarations"
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-numpy \
-    ${PYTHON_PN}-dateutil \
-    ${PYTHON_PN}-dateutil-zoneinfo \
-    ${PYTHON_PN}-pytz \
-    ${PYTHON_PN}-profile \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.3.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.3.4.bb
new file mode 100644
index 0000000..cde4318
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.3.4.bb
@@ -0,0 +1,26 @@
+SUMMARY  = "pandas library for high-performance data analysis tools"
+DESCRIPTION = "pandas is an open source, BSD-licensed library providing \
+high-performance, easy-to-use data structures and data analysis tools for \
+the Python programming language."
+HOMEPAGE = "http://pandas.pydata.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3f23c5c092b74d245d48eeef72bc3fd2"
+
+SRC_URI[sha256sum] = "a2aa18d3f0b7d538e21932f637fbfe8518d085238b429e4790a35e1e44a96ffc"
+
+inherit pypi setuptools3
+
+DEPENDS += " \
+    ${PYTHON_PN}-numpy-native ${PYTHON_PN}-cython-native \
+"
+
+CFLAGS:append:toolchain-clang = " -Wno-error=deprecated-declarations"
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-numpy \
+    ${PYTHON_PN}-dateutil \
+    ${PYTHON_PN}-dateutil-zoneinfo \
+    ${PYTHON_PN}-pytz \
+    ${PYTHON_PN}-profile \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.7.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.7.2.bb
deleted file mode 100644
index ece55f1..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.7.2.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "The leading native Python SSHv2 protocol library."
-HOMEPAGE = "https://github.com/paramiko/paramiko/"
-LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=fd0120fc2e9f841c73ac707a30389af5"
-
-SRC_URI[md5sum] = "44136d79da4cd7619e368018ad022619"
-SRC_URI[sha256sum] = "7f36f4ba2c0d81d219f4595e35f70d56cc94f9ac40a6acdf51d6ca210ce65035"
-
-PYPI_PACKAGE = "paramiko"
-
-inherit pypi setuptools3
-
-CLEANBROKEN = "1"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-bcrypt \
-    ${PYTHON_PN}-cryptography \
-    ${PYTHON_PN}-pynacl \
-    ${PYTHON_PN}-unixadmin \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.8.0.bb
new file mode 100644
index 0000000..1942a1d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.8.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "The leading native Python SSHv2 protocol library."
+HOMEPAGE = "https://github.com/paramiko/paramiko/"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fd0120fc2e9f841c73ac707a30389af5"
+
+SRC_URI[sha256sum] = "e673b10ee0f1c80d46182d3af7751d033d9b573dd7054d2d0aa46be186c3c1d2"
+
+PYPI_PACKAGE = "paramiko"
+
+inherit pypi setuptools3
+
+CLEANBROKEN = "1"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-bcrypt \
+    ${PYTHON_PN}-cryptography \
+    ${PYTHON_PN}-pynacl \
+    ${PYTHON_PN}-unixadmin \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-parse-type_0.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-parse-type_0.5.2.bb
index 39812a1..7eebbfb 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-parse-type_0.5.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-parse-type_0.5.2.bb
@@ -19,6 +19,11 @@
 	${PYTHON_PN}-pytest \
 "
 
+do_configure:prepend() {
+	sed -i -e "/python_version >= 3.0/d" ${S}/setup.py
+	sed -i -e "/use_2to3/d" ${S}/setup.py
+}
+
 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-portion_2.1.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.1.6.bb
deleted file mode 100644
index a1076f9..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.1.6.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "Python data structure and operations for intervals"
-HOMEPAGE = "https://github.com/AlexandreDecan/portion"
-SECTION = "devel/python"
-
-LICENSE = "LGPLv3"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=05f1e16a8e59ce3e9a979e881816c2ab"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "725b65da806fb79df05c0b6383b01631c510f371d9bc0ece93a996b4260ba085"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.2.0.bb
new file mode 100644
index 0000000..e712c8f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.2.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python data structure and operations for intervals"
+HOMEPAGE = "https://github.com/AlexandreDecan/portion"
+SECTION = "devel/python"
+
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=05f1e16a8e59ce3e9a979e881816c2ab"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "b6bfb08a7834787aca076da1200b735d97beef61b60a462b05213e7354a099cf"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-posix-ipc_1.0.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-posix-ipc_1.0.5.bb
new file mode 100644
index 0000000..2377bd5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-posix-ipc_1.0.5.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "POSIX IPC primitives (semaphores, shared memory and message queues) for Python"
+HOMEPAGE = "http://semanchuk.com/philip/posix_ipc/"
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dc089fb2f37e90799a54c19a20c9880f"
+
+PYPI_PACKAGE = "posix_ipc"
+
+# Archived version so we need to overwrite what the pypi class will derive
+PYPI_SRC_URI = "https://pypi.python.org/packages/source/p/${PYPI_PACKAGE}/${PYPI_PACKAGE}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "8c9443859492ecf3aae9182aa6b5c78c"
+SRC_URI[sha256sum] = "6cddb1ce2cf4aae383f2a0079c26c69bee257fe2720f372201ef047f8ceb8b97"
+
+inherit setuptools3 pypi
+
+# DEPENDS_default: python-pip
+
+DEPENDS += " \
+        ${PYTHON_PN}-pip \
+        "
+
+# RDEPENDS:default:
+RDEPENDS:${PN} += " \
+        "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_2.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_2.1.0.bb
deleted file mode 100644
index 58a48e9..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_2.1.0.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "Python library for displaying tabular data in a ASCII table format"
-HOMEPAGE = "http://code.google.com/p/prettytable"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c9a6829fcd174d9535b46211917c7671"
-
-SRC_URI[sha256sum] = "5882ed9092b391bb8f6e91f59bcdbd748924ff556bb7c634089d5519be87baa0"
-
-do_install:append() {
-    perm_files=`find "${D}${PYTHON_SITEPACKAGES_DIR}/" -name "*.txt" -o -name "PKG-INFO"`
-    for f in $perm_files; do
-        chmod 644 "${f}"
-    done
-}
-
-UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/PrettyTable/"
-UPSTREAM_CHECK_REGEX = "/PrettyTable/(?P<pver>(\d+[\.\-_]*)+)"
-
-BBCLASSEXTEND = "native nativesdk"
-inherit pypi ptest setuptools3
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
-
-RDEPENDS:${PN} += " \
-	${PYTHON_PN}-math \
-	${PYTHON_PN}-html \
-	${PYTHON_PN}-wcwidth \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    ${PYTHON_PN}-pytest \
-    ${PYTHON_PN}-sqlite3 \
-"
-
-do_install_ptest() {
-	cp -f ${S}/tests/test_prettytable.py ${D}${PTEST_PATH}/
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_2.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_2.2.1.bb
new file mode 100644
index 0000000..b9050cc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_2.2.1.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Python library for displaying tabular data in a ASCII table format"
+HOMEPAGE = "http://code.google.com/p/prettytable"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c9a6829fcd174d9535b46211917c7671"
+
+SRC_URI[sha256sum] = "6d465005573a5c058d4ca343449a5b28c21252b86afcdfa168cdc6a440f0b24c"
+
+do_install:append() {
+    perm_files=`find "${D}${PYTHON_SITEPACKAGES_DIR}/" -name "*.txt" -o -name "PKG-INFO"`
+    for f in $perm_files; do
+        chmod 644 "${f}"
+    done
+}
+
+UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/PrettyTable/"
+UPSTREAM_CHECK_REGEX = "/PrettyTable/(?P<pver>(\d+[\.\-_]*)+)"
+
+BBCLASSEXTEND = "native nativesdk"
+inherit pypi ptest setuptools3
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+RDEPENDS:${PN} += " \
+	${PYTHON_PN}-math \
+	${PYTHON_PN}-html \
+	${PYTHON_PN}-wcwidth \
+	${PYTHON_PN}-json \
+	${PYTHON_PN}-compression \
+	${PYTHON_PN}-importlib-metadata \
+"
+
+RDEPENDS:${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+    ${PYTHON_PN}-sqlite3 \
+"
+
+do_install_ptest() {
+	cp -f ${S}/tests/test_prettytable.py ${D}${PTEST_PATH}/
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.19.bb
deleted file mode 100644
index 5d80905..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.19.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "Library for building powerful interactive command lines in Python"
-HOMEPAGE = "https://python-prompt-toolkit.readthedocs.io/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b2cde7da89f0c1f3e49bf968d00d554f"
-
-SRC_URI[sha256sum] = "08360ee3a3148bdb5163621709ee322ec34fc4375099afa4bbf751e9b7b7fa4f"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE = "prompt_toolkit"
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-core \
-    ${PYTHON_PN}-six \
-    ${PYTHON_PN}-terminal \
-    ${PYTHON_PN}-threading \
-    ${PYTHON_PN}-wcwidth \
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-shell \
-    ${PYTHON_PN}-image \
-    ${PYTHON_PN}-asyncio \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.21.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.21.bb
new file mode 100644
index 0000000..e0d379d0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.21.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Library for building powerful interactive command lines in Python"
+HOMEPAGE = "https://python-prompt-toolkit.readthedocs.io/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b2cde7da89f0c1f3e49bf968d00d554f"
+
+SRC_URI[sha256sum] = "27f13ff4e4850fe8f860b77414c7880f67c6158076a7b099062cc8570f1562e5"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "prompt_toolkit"
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-terminal \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-wcwidth \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-image \
+    ${PYTHON_PN}-asyncio \
+    ${PYTHON_PN}-xml \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.17.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.17.3.bb
deleted file mode 100644
index b43529c..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.17.3.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-DESCRIPTION = "Protocol Buffers"
-HOMEPAGE = "https://developers.google.com/protocol-buffers/"
-SECTION = "devel/python"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=19e8f490f9526b1de84f8d949cfcfd4e"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "72804ea5eaa9c22a090d2803813e280fb273b62d5ae497aaf3553d141c4fdd7b"
-
-# http://errors.yoctoproject.org/Errors/Details/184715/
-# Can't find required file: ../src/google/protobuf/descriptor.proto
-CLEANBROKEN = "1"
-
-UPSTREAM_CHECK_REGEX = "protobuf/(?P<pver>\d+(\.\d+)+)/"
-
-DEPENDS += "protobuf"
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-numbers \
-    ${PYTHON_PN}-pkgutil \
-    ${PYTHON_PN}-six \
-    ${PYTHON_PN}-unittest \
-"
-
-# For usage in other recipies when compiling protobuf files (e.g. by grpcio-tools)
-BBCLASSEXTEND = "native nativesdk"
-
-DISTUTILS_BUILD_ARGS += "--cpp_implementation"
-DISTUTILS_INSTALL_ARGS += "--cpp_implementation"
-
-do_compile:prepend:class-native () {
-    export KOKORO_BUILD_NUMBER="1"
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.18.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.18.1.bb
new file mode 100644
index 0000000..8ecb3ab
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.18.1.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "Protocol Buffers"
+HOMEPAGE = "https://developers.google.com/protocol-buffers/"
+SECTION = "devel/python"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=19e8f490f9526b1de84f8d949cfcfd4e"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "1c9bb40503751087300dd12ce2e90899d68628977905c76effc48e66d089391e"
+
+# http://errors.yoctoproject.org/Errors/Details/184715/
+# Can't find required file: ../src/google/protobuf/descriptor.proto
+CLEANBROKEN = "1"
+
+UPSTREAM_CHECK_REGEX = "protobuf/(?P<pver>\d+(\.\d+)+)/"
+
+DEPENDS += "protobuf"
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pkgutil \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-unittest \
+"
+
+# For usage in other recipies when compiling protobuf files (e.g. by grpcio-tools)
+BBCLASSEXTEND = "native nativesdk"
+
+DISTUTILS_BUILD_ARGS += "--cpp_implementation"
+DISTUTILS_INSTALL_ARGS += "--cpp_implementation"
+
+do_compile:prepend:class-native () {
+    export KOKORO_BUILD_NUMBER="1"
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.10.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.10.5.bb
new file mode 100644
index 0000000..0b867b8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.10.5.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Python (3.x and 2.x) high-level interface and ctypes-based bindings for PulseAudio (libpulse), mostly focused on mixer-like controls and introspection-related operations (as opposed to e.g. submitting sound samples to play, player-like client)."
+HOMEPAGE = "https://github.com/mk-fg/python-pulse-control"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f1d10048469ff90123263eb5e214061d"
+
+SRC_URI[sha256sum] = "b347983fb78baab168f4dc4804ab2c59ca5b813bf62f8146dfb5fcb6ab6c8ba2"
+
+RDEPENDS:${PN} += " \
+	libpulse \
+	python3-ctypes \
+"
+
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.9.1.bb
deleted file mode 100644
index 5871ee2..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.9.1.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY = "Python (3.x and 2.x) high-level interface and ctypes-based bindings for PulseAudio (libpulse), mostly focused on mixer-like controls and introspection-related operations (as opposed to e.g. submitting sound samples to play, player-like client)."
-HOMEPAGE = "https://github.com/mk-fg/python-pulse-control"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f1d10048469ff90123263eb5e214061d"
-
-SRC_URI[sha256sum] = "8eef4dbfc97d984e63fd609a3f690d005173ec5342be88d10f67dd507affdf32"
-
-RDEPENDS:${PN} += " \
-	libpulse \
-	python3-ctypes \
-"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.34.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.34.0.bb
deleted file mode 100644
index 1368b92..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.34.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Python bindings for DBus AT-SPI2 accessibility"
-DESCRIPTION = "AT-SPI2 is a protocol over DBus, toolkit widgets use to provide content to screen readers such as Orca"
-SECTION = "devel/python"
-HOMEPAGE = "https://www.freedesktop.org/wiki/Accessibility/AT-SPI2/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=db29218e6ba3794c56df7d4987dc7e4d \
-                    file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
-DEPENDS = "python3-dbus-native glib-2.0 dbus-glib libxml2 atk gtk+ python3-pygobject"
-
-SRC_URI = "git://github.com/GNOME/pyatspi2.git;protocol=https;branch=mainline"
-SRCREV = "cc99d68db66174f4499b9b325bc788393b972edd"
-S = "${WORKDIR}/git" 
-
-# Same restriction as gtk+
-inherit features_check
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
-
-inherit pkgconfig autotools python3native
-
-FILES:${PN} += "${PYTHON_SITEPACKAGES_DIR}/pyatspi/*"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.38.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.38.1.bb
new file mode 100644
index 0000000..8ae9ac9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.38.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Python bindings for DBus AT-SPI2 accessibility"
+DESCRIPTION = "AT-SPI2 is a protocol over DBus, toolkit widgets use to provide content to screen readers such as Orca"
+SECTION = "devel/python"
+HOMEPAGE = "https://www.freedesktop.org/wiki/Accessibility/AT-SPI2/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=db29218e6ba3794c56df7d4987dc7e4d \
+                    file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
+DEPENDS = "python3-dbus-native glib-2.0 dbus-glib libxml2 atk gtk+ python3-pygobject"
+
+SRC_URI = "git://github.com/GNOME/pyatspi2.git;protocol=https;branch=master"
+SRCREV = "6d5f47ee8e8a36140b52bf52fe954a131a0aa5dd"
+
+S = "${WORKDIR}/git" 
+
+# Same restriction as gtk+
+inherit features_check
+ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+
+inherit pkgconfig autotools python3native
+
+FILES:${PN} += "${PYTHON_SITEPACKAGES_DIR}/pyatspi/*"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11-json_0.2.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11-json_0.2.11.bb
new file mode 100644
index 0000000..8384471
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11-json_0.2.11.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Using nlohmann::json with pybind11"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0e25ff0ec476d06d366439e1120cce98"
+
+SRCREV = "0fbbe3bbb27bd07a5ec7d71cbb1f17eaf4d37702"
+SRC_URI = "git://github.com/pybind/pybind11_json"
+
+DEPENDS += "nlohmann-json python3-pybind11"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11-json_0.2.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11-json_0.2.6.bb
deleted file mode 100644
index c56c70a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11-json_0.2.6.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = "Using nlohmann::json with pybind11"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=0e25ff0ec476d06d366439e1120cce98"
-
-SRCREV = "d1d00888bc0eb7c50dde6cff1a5eb4586e620b65"
-SRC_URI = "git://github.com/pybind/pybind11_json"
-
-DEPENDS += "nlohmann-json python3-pybind11"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.23.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.23.bb
index e8d1441..cc659ea 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.23.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.23.bb
@@ -11,8 +11,13 @@
 SRC_URI[sha256sum] = "c8f04d2e78951eaa9de486b4d49381704e8943d0a6e6e58f55fcd7b8582e90de"
 
 PYPI_PACKAGE = "PyBluez"
+
 inherit pypi setuptools3
 
+do_configure:prepend() {
+   sed -i -e "/use_2to3=True,/d" ${S}/setup.py
+}
+
 RDEPENDS:${PN} += "\
     bluez5 \
     ${PYTHON_PN}-fcntl \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.2.1.bb
deleted file mode 100644
index 1fd76ed..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.2.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Library for Python 3.6+ to communicate with the Google Chromecast."
-HOMEPAGE = "https://github.com/balloob/pychromecast"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b1dbd4e85f47b389bdadee9c694669f5"
-
-SRC_URI[sha256sum] = "883d6e836ff5f1068a8bd00364a15b4c9854293086495e9fd9cacd9b4d54c0bf"
-
-PYPI_PACKAGE = "PyChromecast"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-zeroconf \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-requests \
-    ${PYTHON_PN}-protobuf \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.3.1.bb
new file mode 100644
index 0000000..77b032a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.3.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Library for Python 3.6+ to communicate with the Google Chromecast."
+HOMEPAGE = "https://github.com/balloob/pychromecast"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b1dbd4e85f47b389bdadee9c694669f5"
+
+SRC_URI[sha256sum] = "a1d6807ae0fc455aaeecd2def87c31bb86679a2920cacfa7910db9c9db5085d4"
+
+PYPI_PACKAGE = "PyChromecast"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-zeroconf \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-requests \
+    ${PYTHON_PN}-protobuf \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycodestyle_2.7.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycodestyle_2.7.0.bb
deleted file mode 100644
index 611abca..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycodestyle_2.7.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "Python style guide checker (formly called pep8)"
-HOMEPAGE = "https://pypi.org/project/pycodestyle"
-LICENSE = "MIT"
-SECTION = "devel/python"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a8546d0e77f416fb05a26acd89c8b3bd"
-
-SRC_URI[sha256sum] = "c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycodestyle_2.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycodestyle_2.8.0.bb
new file mode 100644
index 0000000..31720e2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycodestyle_2.8.0.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Python style guide checker (formly called pep8)"
+HOMEPAGE = "https://pypi.org/project/pycodestyle"
+LICENSE = "MIT"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a8546d0e77f416fb05a26acd89c8b3bd"
+
+SRC_URI[sha256sum] = "eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_2.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_2.3.1.bb
deleted file mode 100644
index 607879c..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_2.3.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "passive checker of Python programs"
-HOMEPAGE = "https://github.com/dreamhost/cliff"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=690c2d09203dc9e07c4083fc45ea981f"
-
-SRC_URI[sha256sum] = "f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-prettytable \
-    ${PYTHON_PN}-cmd2 \
-    ${PYTHON_PN}-pyparsing"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_2.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_2.4.0.bb
new file mode 100644
index 0000000..827ff0b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_2.4.0.bb
@@ -0,0 +1,10 @@
+SUMMARY = "passive checker of Python programs"
+HOMEPAGE = "https://github.com/PyCQA/pyflakes"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=690c2d09203dc9e07c4083fc45ea981f"
+
+SRC_URI[sha256sum] = "05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
index 8c6550a..8dd5e15 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
@@ -4,7 +4,9 @@
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-fcntl \
     ${PYTHON_PN}-io \
+    ${PYTHON_PN}-logging \
     ${PYTHON_PN}-misc \
     ${PYTHON_PN}-shell \
     ${PYTHON_PN}-smtpd \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_2.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_2.1.0.bb
deleted file mode 100644
index aae1474..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_2.1.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "JSON Web Token implementation in Python"
-DESCRIPTION = "A Python implementation of JSON Web Token draft 32.\
- Original implementation was written by https://github.com/progrium"
-HOMEPAGE = "http://github.com/jpadilla/pyjwt"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=68626705a7b513ca8d5f44a3e200ed0c"
-
-SRC_URI[sha256sum] = "fba44e7898bbca160a2b2b501f492824fc8382485d3a6f11ba5d0c1937ce6130"
-
-PYPI_PACKAGE = "PyJWT"
-inherit pypi setuptools3
-
-RDEPENDS:${PN} = "${PYTHON_PN}-cryptography"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_2.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_2.3.0.bb
new file mode 100644
index 0000000..19ba307
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyjwt_2.3.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "JSON Web Token implementation in Python"
+DESCRIPTION = "A Python implementation of JSON Web Token draft 32.\
+ Original implementation was written by https://github.com/progrium"
+HOMEPAGE = "http://github.com/jpadilla/pyjwt"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=68626705a7b513ca8d5f44a3e200ed0c"
+
+SRC_URI[sha256sum] = "b888b4d56f06f6dcd777210c334e69c737be74755d3e5e9ee3fe67dc18a0ee41"
+
+PYPI_PACKAGE = "PyJWT"
+inherit pypi setuptools3
+
+RDEPENDS:${PN} = "${PYTHON_PN}-cryptography"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_20.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_20.0.1.bb
deleted file mode 100644
index eda9381..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_20.0.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Simple Python wrapper around the OpenSSL library"
-HOMEPAGE = "https://pyopenssl.org/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-DEPENDS += "openssl ${PYTHON_PN}-cryptography"
-
-SRC_URI[sha256sum] = "4c231c759543ba02560fcd2480c48dcec4dae34c9da7d3747c508227e0624b51"
-
-PYPI_PACKAGE = "pyOpenSSL"
-inherit pypi setuptools3
-
-PACKAGES =+ "${PN}-tests"
-FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
-
-RDEPENDS:${PN}:class-target = " \
-    ${PYTHON_PN}-cryptography \
-    ${PYTHON_PN}-six \
-    ${PYTHON_PN}-threading \
-"
-RDEPENDS:${PN}-tests = "${PN}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_21.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_21.0.0.bb
new file mode 100644
index 0000000..a7e0ae4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_21.0.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Simple Python wrapper around the OpenSSL library"
+HOMEPAGE = "https://pyopenssl.org/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS += "openssl ${PYTHON_PN}-cryptography"
+
+SRC_URI[sha256sum] = "5e2d8c5e46d0d865ae933bef5230090bdaf5506281e9eec60fa250ee80600cb3"
+
+PYPI_PACKAGE = "pyOpenSSL"
+inherit pypi setuptools3
+
+PACKAGES =+ "${PN}-tests"
+FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
+
+RDEPENDS:${PN}:class-target = " \
+    ${PYTHON_PN}-cryptography \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-threading \
+"
+RDEPENDS:${PN}-tests = "${PN}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.2.0.bb
deleted file mode 100644
index 89d22ee..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.2.0.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] = "498bb4d1fe21350c2b7c1aa8bb3eae9c9979358d0b66327954bc66839fcba8b6"
-
-DEPENDS += "${PYTHON_PN}-six-native"
-
-PYPI_PACKAGE = "pyperf"
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "${PYTHON_PN}-misc"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.3.0.bb
new file mode 100644
index 0000000..5172b0a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.3.0.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] = "8a85dd42e067131d5b26b71472336da7f7f4b87ff9c97350d89f5ff0de9adedc"
+
+DEPENDS += "${PYTHON_PN}-six-native"
+
+PYPI_PACKAGE = "pyperf"
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "${PYTHON_PN}-misc"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.0.2.bb
deleted file mode 100644
index bba94f8..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.0.2.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Python project template generator with batteries included"
-DESCRIPTION = "PyScaffold package helps to setup a new Python project. \
-After installation, it provides a new command [putup], which could be \
-used to create template Projects."
-
-HOMEPAGE = "https://github.com/pyscaffold/pyscaffold"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE = "PyScaffold"
-
-SRC_URI[sha256sum] = "cfa719c2d97392ec3cd5f44d95ec0d40df2dd483d5ee05ea029896cfd7c04af8"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.1.1.bb
new file mode 100644
index 0000000..9769cd6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.1.1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Python project template generator with batteries included"
+DESCRIPTION = "PyScaffold package helps to setup a new Python project. \
+After installation, it provides a new command [putup], which could be \
+used to create template Projects."
+
+HOMEPAGE = "https://github.com/pyscaffold/pyscaffold"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "PyScaffold"
+
+SRC_URI[sha256sum] = "8972252fda90d1020a93f1e99db370c002d18f52ff2fca9c3cc2a0aee74d07ad"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN} += " \
+	python3-email \
+	python3-compression \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache/0001-Modernize-python-versions-remove-py2x-and-fix-tests-.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache/0001-Modernize-python-versions-remove-py2x-and-fix-tests-.patch
new file mode 100644
index 0000000..d268cc5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache/0001-Modernize-python-versions-remove-py2x-and-fix-tests-.patch
@@ -0,0 +1,4150 @@
+From 8bb1ac2d81f697598a766714f2c439d78c85d71e Mon Sep 17 00:00:00 2001
+From: Stephen L Arnold <nerdboy@gentoo.org>
+Date: Sat, 7 Nov 2020 12:38:33 -0800
+Subject: [PATCH] Modernize python versions (remove py2x) and fix tests, update
+ spec
+
+* migrate to github actions for CI, add conda recipe/workflow
+* fix document processing, update pandoc args and history
+* convert doctests and modules to py3
+* convert packaging/setup.py to pep517, keep doc processing
+* cleanup tox cfg, add coverage, readme status
+* add pep8speaks cfg, cleanup warnings, use correct env
+* update setup_description.rst for packaging
+* set version for test release => 0.6.0 and deploy
+
+Upstream-Status: Backport [https://github.com/defunkt/pystache/pull/214]
+Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
+---
+ .coveragerc                               |  38 +++
+ .gitchangelog.rc                          | 295 +++++++++++++++++++++
+ .github/workflows/ci.yml                  |  73 ++++++
+ .github/workflows/conda.yml               |  55 ++++
+ .github/workflows/release.yml             |  94 +++++++
+ .github/workflows/wheels.yml              |  82 ++++++
+ .pep8speaks.yml                           |  15 ++
+ HISTORY.md                                |  37 ++-
+ MANIFEST.in                               |   8 +-
+ README.md                                 | 141 +++++-----
+ TODO.md                                   |   5 +-
+ conda/meta.yaml                           |  50 ++++
+ pyproject.toml                            |   3 +
+ pystache/__init__.py                      |   2 +-
+ pystache/commands/render.py               |   4 +-
+ pystache/common.py                        |  13 +-
+ pystache/defaults.py                      |   2 +-
+ pystache/loader.py                        |  14 +-
+ pystache/parsed.py                        |   6 +-
+ pystache/parser.py                        |  20 +-
+ pystache/renderengine.py                  |   2 +-
+ pystache/renderer.py                      |  22 +-
+ pystache/specloader.py                    |   2 +-
+ pystache/tests/benchmark.py               |  15 +-
+ pystache/tests/common.py                  |  10 +-
+ pystache/tests/examples/unicode_output.py |   2 +-
+ pystache/tests/main.py                    |  28 +-
+ pystache/tests/spectesting.py             |  16 +-
+ pystache/tests/test___init__.py           |   4 +-
+ pystache/tests/test_commands.py           |   2 +-
+ pystache/tests/test_defaults.py           |  18 +-
+ pystache/tests/test_examples.py           |  40 +--
+ pystache/tests/test_loader.py             |  46 ++--
+ pystache/tests/test_pystache.py           |   6 +-
+ pystache/tests/test_renderengine.py       | 148 +++++------
+ pystache/tests/test_renderer.py           |  86 +++----
+ pystache/tests/test_simple.py             |  20 +-
+ pystache/tests/test_specloader.py         |  60 ++---
+ setup.cfg                                 |  74 +++++-
+ setup.py                                  | 134 +---------
+ setup_description.rst                     | 297 +++++++++++++---------
+ tox.ini                                   | 118 +++++++--
+ travis.yml_disabled                       |  52 ++++
+ 43 files changed, 1487 insertions(+), 672 deletions(-)
+ create mode 100644 .coveragerc
+ create mode 100644 .gitchangelog.rc
+ create mode 100644 .github/workflows/ci.yml
+ create mode 100644 .github/workflows/conda.yml
+ create mode 100644 .github/workflows/release.yml
+ create mode 100644 .github/workflows/wheels.yml
+ create mode 100644 .pep8speaks.yml
+ create mode 100644 conda/meta.yaml
+ create mode 100644 pyproject.toml
+ create mode 100644 travis.yml_disabled
+
+diff --git a/.coveragerc b/.coveragerc
+new file mode 100644
+index 0000000..9a336dd
+--- /dev/null
++++ b/.coveragerc
+@@ -0,0 +1,38 @@
++# .coveragerc to control coverage.py
++[run]
++branch = True
++
++source = pystache
++
++omit =
++    .tox/*
++    setup.py
++    pystache/tests/*
++
++#plugins =
++#    coverage_python_version
++
++[report]
++# must set this to True to see missing
++#show_missing = True
++
++# Regexes for lines to exclude from consideration
++exclude_lines =
++    # Have to re-enable the standard pragma
++    pragma: no cover
++
++    # Don't complain about missing debug-only code:
++    def __repr__
++    if self\.debug
++
++    # Don't complain if tests don't hit defensive assertion code:
++    raise AssertionError
++    raise NotImplementedError
++
++    # Don't complain if non-runnable code isn't run:
++    if 0:
++
++ignore_errors = True
++
++[html]
++directory = cover
+diff --git a/.gitchangelog.rc b/.gitchangelog.rc
+new file mode 100644
+index 0000000..5cf63a0
+--- /dev/null
++++ b/.gitchangelog.rc
+@@ -0,0 +1,295 @@
++# -*- coding: utf-8; mode: python -*-
++##
++## Format
++##
++##   ACTION: [AUDIENCE:] COMMIT_MSG [!TAG ...]
++##
++## Description
++##
++##   ACTION is one of 'chg', 'fix', 'new'
++##
++##       Is WHAT the change is about.
++##
++##       'chg' is for refactor, small improvement, cosmetic changes...
++##       'fix' is for bug fixes
++##       'new' is for new features, big improvement
++##
++##   AUDIENCE is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc'
++##
++##       Is WHO is concerned by the change.
++##
++##       'dev'  is for developpers (API changes, refactors...)
++##       'usr'  is for final users (UI changes)
++##       'pkg'  is for packagers   (packaging changes)
++##       'test' is for testers     (test only related changes)
++##       'doc'  is for doc guys    (doc only changes)
++##
++##   COMMIT_MSG is ... well ... the commit message itself.
++##
++##   TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic'
++##
++##       They are preceded with a '!' or a '@' (prefer the former, as the
++##       latter is wrongly interpreted in github.) Commonly used tags are:
++##
++##       'refactor' is obviously for refactoring code only
++##       'minor' is for a very meaningless change (a typo, adding a comment)
++##       'cosmetic' is for cosmetic driven change (re-indentation, 80-col...)
++##       'wip' is for partial functionality but complete subfunctionality.
++##
++## Example:
++##
++##   new: usr: support of bazaar implemented
++##   chg: re-indentend some lines !cosmetic
++##   new: dev: updated code to be compatible with last version of killer lib.
++##   fix: pkg: updated year of licence coverage.
++##   new: test: added a bunch of test around user usability of feature X.
++##   fix: typo in spelling my name in comment. !minor
++##
++##   Please note that multi-line commit message are supported, and only the
++##   first line will be considered as the "summary" of the commit message. So
++##   tags, and other rules only applies to the summary.  The body of the commit
++##   message will be displayed in the changelog without reformatting.
++
++
++##
++## ``ignore_regexps`` is a line of regexps
++##
++## Any commit having its full commit message matching any regexp listed here
++## will be ignored and won't be reported in the changelog.
++##
++ignore_regexps = [
++    r'@minor', r'!minor',
++    r'@cosmetic', r'!cosmetic',
++    r'@refactor', r'!refactor',
++    r'@wip', r'!wip',
++    r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[p|P]kg:',
++    r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[d|D]ev:',
++    r'^(.{3,3}\s*:)?\s*[fF]irst commit.?\s*$',
++    r'^$',  ## ignore commits with empty messages
++]
++
++
++## ``section_regexps`` is a list of 2-tuples associating a string label and a
++## list of regexp
++##
++## Commit messages will be classified in sections thanks to this. Section
++## titles are the label, and a commit is classified under this section if any
++## of the regexps associated is matching.
++##
++## Please note that ``section_regexps`` will only classify commits and won't
++## make any changes to the contents. So you'll probably want to go check
++## ``subject_process`` (or ``body_process``) to do some changes to the subject,
++## whenever you are tweaking this variable.
++##
++section_regexps = [
++    ('New', [
++        r'^[nN]ew\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
++     ]),
++    ('Features', [
++       r'^([nN]ew|[fF]eat)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
++     ]),
++    ('Changes', [
++        r'^[cC]hg\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
++     ]),
++    ('Fixes', [
++        r'^[fF]ix\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
++     ]),
++
++    ('Other', None ## Match all lines
++     ),
++]
++
++
++## ``body_process`` is a callable
++##
++## This callable will be given the original body and result will
++## be used in the changelog.
++##
++## Available constructs are:
++##
++##   - any python callable that take one txt argument and return txt argument.
++##
++##   - ReSub(pattern, replacement): will apply regexp substitution.
++##
++##   - Indent(chars="  "): will indent the text with the prefix
++##     Please remember that template engines gets also to modify the text and
++##     will usually indent themselves the text if needed.
++##
++##   - Wrap(regexp=r"\n\n"): re-wrap text in separate paragraph to fill 80-Columns
++##
++##   - noop: do nothing
++##
++##   - ucfirst: ensure the first letter is uppercase.
++##     (usually used in the ``subject_process`` pipeline)
++##
++##   - final_dot: ensure text finishes with a dot
++##     (usually used in the ``subject_process`` pipeline)
++##
++##   - strip: remove any spaces before or after the content of the string
++##
++##   - SetIfEmpty(msg="No commit message."): will set the text to
++##     whatever given ``msg`` if the current text is empty.
++##
++## Additionally, you can `pipe` the provided filters, for instance:
++#body_process = Wrap(regexp=r'\n(?=\w+\s*:)') | Indent(chars="  ")
++#body_process = Wrap(regexp=r'\n(?=\w+\s*:)')
++#body_process = noop
++body_process = ReSub(r'((^|\n)[A-Z]\w+(-\w+)*: .*(\n\s+.*)*)+$', r'') | strip
++
++
++## ``subject_process`` is a callable
++##
++## This callable will be given the original subject and result will
++## be used in the changelog.
++##
++## Available constructs are those listed in ``body_process`` doc.
++subject_process = (strip |
++    ReSub(r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n@]*)(@[a-z]+\s+)*$', r'\4') |
++    SetIfEmpty("No commit message.") | ucfirst | final_dot)
++
++
++## ``tag_filter_regexp`` is a regexp
++##
++## Tags that will be used for the changelog must match this regexp.
++##
++#tag_filter_regexp = r'^v?[0-9]+\.[0-9]+(\.[0-9]+)?$'
++tag_filter_regexp = r'^[0-9]+\.[0-9]+(\.[0-9]+)?$'
++
++
++## ``unreleased_version_label`` is a string or a callable that outputs a string
++##
++## This label will be used as the changelog Title of the last set of changes
++## between last valid tag and HEAD if any.
++unreleased_version_label = "(unreleased)"
++#unreleased_version_label = lambda: swrap(
++#    ["git", "describe", "--tags"],
++#shell=False)
++
++
++## ``output_engine`` is a callable
++##
++## This will change the output format of the generated changelog file
++##
++## Available choices are:
++##
++##   - rest_py
++##
++##        Legacy pure python engine, outputs ReSTructured text.
++##        This is the default.
++##
++##   - mustache(<template_name>)
++##
++##        Template name could be any of the available templates in
++##        ``templates/mustache/*.tpl``.
++##        Requires python package ``pystache``.
++##        Examples:
++##           - mustache("markdown")
++##           - mustache("restructuredtext")
++##
++##   - makotemplate(<template_name>)
++##
++##        Template name could be any of the available templates in
++##        ``templates/mako/*.tpl``.
++##        Requires python package ``mako``.
++##        Examples:
++##           - makotemplate("restructuredtext")
++##
++#output_engine = rest_py
++#output_engine = mustache("restructuredtext")
++output_engine = mustache("markdown")
++#output_engine = makotemplate("restructuredtext")
++
++
++## ``include_merge`` is a boolean
++##
++## This option tells git-log whether to include merge commits in the log.
++## The default is to include them.
++include_merge = True
++
++
++## ``log_encoding`` is a string identifier
++##
++## This option tells gitchangelog what encoding is outputed by ``git log``.
++## The default is to be clever about it: it checks ``git config`` for
++## ``i18n.logOutputEncoding``, and if not found will default to git's own
++## default: ``utf-8``.
++#log_encoding = 'utf-8'
++
++
++## ``publish`` is a callable
++##
++## Sets what ``gitchangelog`` should do with the output generated by
++## the output engine. ``publish`` is a callable taking one argument
++## that is an interator on lines from the output engine.
++##
++## Some helper callable are provided:
++##
++## Available choices are:
++##
++##   - stdout
++##
++##        Outputs directly to standard output
++##        (This is the default)
++##
++##   - FileInsertAtFirstRegexMatch(file, pattern, idx=lamda m: m.start(), flags)
++##
++##        Creates a callable that will parse given file for the given
++##        regex pattern and will insert the output in the file.
++##        ``idx`` is a callable that receive the matching object and
++##        must return a integer index point where to insert the
++##        the output in the file. Default is to return the position of
++##        the start of the matched string.
++##
++##   - FileRegexSubst(file, pattern, replace, flags)
++##
++##        Apply a replace inplace in the given file. Your regex pattern must
++##        take care of everything and might be more complex. Check the README
++##        for a complete copy-pastable example.
++##
++# publish = FileInsertIntoFirstRegexMatch(
++#     "CHANGELOG.rst",
++#     r'/(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n/',
++#     idx=lambda m: m.start(1)
++# )
++#publish = stdout
++
++
++## ``revs`` is a list of callable or a list of string
++##
++## callable will be called to resolve as strings and allow dynamical
++## computation of these. The result will be used as revisions for
++## gitchangelog (as if directly stated on the command line). This allows
++## to filter exaclty which commits will be read by gitchangelog.
++##
++## To get a full documentation on the format of these strings, please
++## refer to the ``git rev-list`` arguments. There are many examples.
++##
++## Using callables is especially useful, for instance, if you
++## are using gitchangelog to generate incrementally your changelog.
++##
++## Some helpers are provided, you can use them::
++##
++##   - FileFirstRegexMatch(file, pattern): will return a callable that will
++##     return the first string match for the given pattern in the given file.
++##     If you use named sub-patterns in your regex pattern, it'll output only
++##     the string matching the regex pattern named "rev".
++##
++##   - Caret(rev): will return the rev prefixed by a "^", which is a
++##     way to remove the given revision and all its ancestor.
++##
++## Please note that if you provide a rev-list on the command line, it'll
++## replace this value (which will then be ignored).
++##
++## If empty, then ``gitchangelog`` will act as it had to generate a full
++## changelog.
++##
++## The default is to use all commits to make the changelog.
++#revs = ["^1.0.3", ]
++#revs = [
++#    Caret(
++#        FileFirstRegexMatch(
++#            "CHANGELOG.rst",
++#            r"(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n")),
++#    "HEAD"
++#]
++revs = []
+diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
+new file mode 100644
+index 0000000..356dd2c
+--- /dev/null
++++ b/.github/workflows/ci.yml
+@@ -0,0 +1,73 @@
++# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
++# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
++
++name: ci
++
++on:
++  push:
++    branches: [ master ]
++  pull_request:
++    branches: [ master ]
++
++jobs:
++  build:
++
++    runs-on: ${{ matrix.os }}
++    defaults:
++      run:
++        shell: bash
++    env:
++      OS: ${{ matrix.os }}
++      PYTHON: ${{ matrix.python-version }}
++      PYTHONIOENCODING: utf-8
++      PIP_DOWNLOAD_CACHE: ${{ github.workspace }}/../.pip_download_cache
++    strategy:
++      fail-fast: false
++      matrix:
++        os: [ubuntu-20.04, macos-latest, windows-latest]
++        python-version: [3.6, 3.7, 3.8, 3.9]
++    steps:
++    - name: Set git crlf/eol
++      run: |
++        git config --global core.autocrlf false
++        git config --global core.eol lf
++
++    - uses: actions/checkout@v2
++      with:
++        submodules: True
++
++    - name: Set up Python ${{ matrix.python-version }}
++      uses: actions/setup-python@v2
++      with:
++        python-version: ${{ matrix.python-version }}
++
++    - name: Install dependencies
++      run: |
++        python -m pip install --upgrade pip
++        pip install tox tox-gh-actions
++
++    - name: Run tests with coverage
++      run: |
++        tox
++      env:
++        PLATFORM: ${{ matrix.os }}
++
++    - name: Upload coverage to Codecov
++      uses: codecov/codecov-action@v1
++      with:
++        env_vars: OS,PYTHON
++
++    - name: Test with specs and pystache-test
++      run: |
++        tox -e setup . ext/spec/specs
++
++    - name: Check pkg builds
++      run: |
++        tox -e deploy
++
++    - name: Check docs
++      if: runner.os == 'Linux'
++      run: |
++        sudo apt-get -qq update
++        sudo apt-get install -y pandoc
++        tox -e docs
+diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml
+new file mode 100644
+index 0000000..261f9ad
+--- /dev/null
++++ b/.github/workflows/conda.yml
+@@ -0,0 +1,55 @@
++name: Conda
++
++on:
++  workflow_dispatch:
++  pull_request:
++  push:
++    branches:
++      - master
++
++jobs:
++  build:
++    strategy:
++      fail-fast: false
++      matrix:
++        platform: [ubuntu-18.04, windows-latest, macos-latest]
++        python-version: [3.6, 3.7, 3.8, 3.9]
++
++    runs-on: ${{ matrix.platform }}
++
++    # The setup-miniconda action needs this to activate miniconda
++    defaults:
++      run:
++        shell: "bash -l {0}"
++
++    steps:
++      - uses: actions/checkout@v2
++        with:
++          fetch-depth: 0
++
++      - name: Cache conda
++        uses: actions/cache@v1
++        with:
++          path: ~/conda_pkgs_dir
++          key: ${{matrix.os}}-conda-pkgs-${{hashFiles('**/conda/meta.yaml')}}
++
++      - name: Get conda
++        uses: conda-incubator/setup-miniconda@v2
++        with:
++          python-version: ${{ matrix.python-version }}
++          channels: conda-forge
++          channel-priority: strict
++          use-only-tar-bz2: true
++          auto-activate-base: true
++
++      - name: Prepare
++        run: conda install conda-build conda-verify
++
++      - name: Build
++        run: conda build conda
++
++      - name: Install
++        run: conda install -c ${CONDA_PREFIX}/conda-bld/ pystache
++
++      - name: Test
++        run: python test_pystache.py
+diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
+new file mode 100644
+index 0000000..f33c4b5
+--- /dev/null
++++ b/.github/workflows/release.yml
+@@ -0,0 +1,94 @@
++name: Release
++
++on:
++  push:
++    # release on tag push
++    tags:
++      - '*'
++
++jobs:
++  wheels:
++
++    runs-on: ${{ matrix.os }}
++    defaults:
++      run:
++        shell: bash
++    env:
++      PYTHONIOENCODING: utf-8
++    strategy:
++      fail-fast: false
++      matrix:
++        os: [ubuntu-18.04, macos-latest, windows-latest]
++        python-version: [3.6, 3.7, 3.8, 3.9]
++        exclude:
++          - os: windows-latest
++            python-version: 2.7
++
++    steps:
++    - name: Set git crlf/eol
++      run: |
++        git config --global core.autocrlf false
++        git config --global core.eol lf
++
++    - uses: actions/checkout@v2
++      with:
++        fetch-depth: 0
++
++    - name: Set up Python ${{ matrix.python-version }}
++      uses: actions/setup-python@v2
++      with:
++        python-version: ${{ matrix.python-version }}
++
++    - name: Install dependencies
++      run: |
++        python -m pip install --upgrade pip wheel
++        pip install tox tox-gh-actions
++
++    - name: Build dist pkgs
++      run: |
++        tox -e deploy
++
++    - name: Upload artifacts
++      if: matrix.python-version == 3.7 && runner.os == 'Linux'
++      uses: actions/upload-artifact@v2
++      with:
++        name: wheels
++        path: ./dist/*.whl
++
++  create_release:
++    name: Create Release
++    needs: [wheels]
++    runs-on: ubuntu-18.04
++
++    steps:
++      - name: Get version
++        id: get_version
++        run: |
++          echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
++          echo ${{ env.VERSION }}
++
++      - uses: actions/checkout@v2
++        with:
++          fetch-depth: 0
++
++      # download all artifacts to project dir
++      - uses: actions/download-artifact@v2
++
++      - name: Generate changes file
++        uses: sarnold/gitchangelog-action@master
++        with:
++          github_token: ${{ secrets.GITHUB_TOKEN}}
++
++      - name: Create release
++        id: create_release
++        uses: softprops/action-gh-release@v1
++        env:
++          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
++        with:
++          tag_name: ${{ env.VERSION }}
++          name: Release v${{ env.VERSION }}
++          body_path: CHANGES.md
++          draft: false
++          prerelease: false
++          files: |
++            wheels/pystache*.whl
+diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml
+new file mode 100644
+index 0000000..58f0c5e
+--- /dev/null
++++ b/.github/workflows/wheels.yml
+@@ -0,0 +1,82 @@
++name: Wheels
++
++on:
++  workflow_dispatch:
++  pull_request:
++  #push:
++    #branches: [ master ]
++
++jobs:
++  build:
++
++    runs-on: ${{ matrix.os }}
++    defaults:
++      run:
++        shell: bash
++    env:
++      PYTHONIOENCODING: utf-8
++    strategy:
++      fail-fast: false
++      matrix:
++        os: [ubuntu-18.04, macos-latest, windows-latest]
++        python-version: [3.6, 3.7, 3.8, 3.9]
++
++    steps:
++      - name: Set git crlf/eol
++        run: |
++          git config --global core.autocrlf false
++          git config --global core.eol lf
++
++      - uses: actions/checkout@v2
++        with:
++          fetch-depth: 0
++
++      - name: Set up Python ${{ matrix.python-version }}
++        uses: actions/setup-python@v2
++        with:
++          python-version: ${{ matrix.python-version }}
++
++      - name: Install dependencies
++        run: |
++          python -m pip install --upgrade pip wheel
++          pip install tox tox-gh-actions
++
++      - name: Build dist pkgs
++        run: |
++          tox -e deploy
++
++      - name: Upload artifacts
++        if: matrix.python-version == 3.7 && runner.os == 'Linux'
++        uses: actions/upload-artifact@v2
++        with:
++          name: wheels
++          path: ./dist/*.whl
++
++  check_artifact:
++    name: Check wheel artifact
++    needs: [build]
++    runs-on: ${{ matrix.os }}
++    defaults:
++      run:
++        shell: bash
++    env:
++      PYTHONIOENCODING: utf-8
++    strategy:
++      fail-fast: false
++      matrix:
++        os: [ubuntu-18.04, macos-latest, windows-latest]
++        python-version: [3.6, 3.8, 3.9]
++
++    steps:
++      - name: Set up Python ${{ matrix.python-version }}
++        uses: actions/setup-python@v2
++        with:
++          python-version: ${{ matrix.python-version }}
++
++      # download all artifacts to project dir
++      - uses: actions/download-artifact@v2
++
++      - name: Check wheel install
++        run: |
++          bash -c 'export WHL=$(ls wheels/*.whl); python -m pip install $WHL'
++          pystache-test
+diff --git a/.pep8speaks.yml b/.pep8speaks.yml
+new file mode 100644
+index 0000000..e841b66
+--- /dev/null
++++ b/.pep8speaks.yml
+@@ -0,0 +1,15 @@
++scanner:
++    linter: flake8  # Other option is pycodestyle
++
++no_blank_comment: False  # If True, no comment is made on PR without any errors.
++descending_issues_order: True  # If True, PEP 8 issues in message will be displayed in descending order of line numbers in the file
++
++[flake8]
++exclude =
++    .git,
++    .github,
++    __pycache__,
++    build,
++    dist
++
++max-line-length = 110
+diff --git a/HISTORY.md b/HISTORY.md
+index e5b7638..60b6308 100644
+--- a/HISTORY.md
++++ b/HISTORY.md
+@@ -1,7 +1,42 @@
+ History
+ =======
+ 
+-**Note:** Official support for Python 2.4 will end with Pystache version 0.6.0.
++**Note:** Official support for Python 2.7 will end with Pystache version 0.6.0.
++
++0.6.0 (2021-03-04)
++------------------
++
++-   Bump spec versions to latest => v1.1.3
++-   Modernize python and CI tools, update docs/doctests
++-   Update unicode conversion test for py3-only
++-   Add pep8speaks cfg, cleanup warnings
++-   Remove superfluous setup test/unused imports
++-   Add conda recipe/CI build
++
++0.5.6 (2021-02-28)
++------------------
++
++-   Use correct wheel name in release workflow, limit wheels
++-   Add install check/test of downloaded wheel
++-   Update/add ci workflows and tox cfg, bump to next dev0 version
++
++0.5.5 (2020-12-16)
++------------------
++
++-   fix document processing, update pandoc args and history
++-   add release.yml to CI, test env settings
++-   fix bogus commit message, update versions and tox cf
++-   add post-test steps for building pkgs with/without doc updates
++-   add CI build check, fix MANIFEST.in pruning
++
++0.5.4-2 (2020-11-09)
++--------------------
++
++-   Merge pull request #1 from sarnold/rebase-up
++-   Bugfix: test_specloader.py: fix test_find__with_directory on other OSs
++-   Bugfix: pystache/loader.py: remove stray windows line-endings
++-   fix crufty (and insecure) http urls
++-   Bugfix: modernize python versions (keep py27) and fix spec_test load cmd
+ 
+ 0.5.4 (2014-07-11)
+ ------------------
+diff --git a/MANIFEST.in b/MANIFEST.in
+index bdc64bf..1593143 100644
+--- a/MANIFEST.in
++++ b/MANIFEST.in
+@@ -1,7 +1,4 @@
+-include README.md
+-include HISTORY.md
+-include LICENSE
+-include TODO.md
++include README.md HISTORY.md TODO.md LICENSE
+ include setup_description.rst
+ include tox.ini
+ include test_pystache.py
+@@ -11,3 +8,6 @@ recursive-include pystache/tests *.mustache *.txt
+ # We deliberately exclude the gh/ directory because it contains copies
+ # of resources needed only for the web page hosted on GitHub (via the
+ # gh-pages branch).
++exclude *.ini *travis*
++prune gh
++prune .git*
+diff --git a/README.md b/README.md
+index 54a9608..1203b7a 100644
+--- a/README.md
++++ b/README.md
+@@ -10,11 +10,25 @@ Pystache
+ <!-- -->
+ <!-- We leave the leading brackets empty here.  Otherwise, unwanted -->
+ <!-- caption text shows up in the reST version converted by pandoc. -->
+-![](http://defunkt.github.com/pystache/images/logo_phillips.png "mustachioed, monocled snake by David Phillips")
++[![ci](https://github.com/sarnold/pystache/actions/workflows/ci.yml/badge.svg)](https://github.com/sarnold/pystache/actions/workflows/ci.yml)
++[![Conda](https://github.com/sarnold/pystache/actions/workflows/conda.yml/badge.svg)](https://github.com/sarnold/pystache/actions/workflows/conda.yml)
++[![Wheels](https://github.com/sarnold/pystache/actions/workflows/wheels.yml/badge.svg)](https://github.com/sarnold/pystache/actions/workflows/wheels.yml)
++[![Release](https://github.com/sarnold/pystache/actions/workflows/release.yml/badge.svg)](https://github.com/sarnold/pystache/actions/workflows/release.yml)
++[![Python](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/)
+ 
+-![](https://secure.travis-ci.org/defunkt/pystache.png "Travis CI current build status")
++[![Latest release](https://img.shields.io/github/v/release/sarnold/pystache?include_prereleases)](https://github.com/sarnold/pystache/releases/latest)
++[![License](https://img.shields.io/github/license/sarnold/pystache)](https://github.com/sarnold/pystache/blob/master/LICENSE)
++[![Maintainability](https://api.codeclimate.com/v1/badges/a8fa1bf4638bfc6581b6/maintainability)](https://codeclimate.com/github/sarnold/pystache/maintainability)
++[![codecov](https://codecov.io/gh/sarnold/pystache/branch/master/graph/badge.svg?token=5PZNMZBI6K)](https://codecov.io/gh/sarnold/pystache)
+ 
+-[Pystache](http://defunkt.github.com/pystache) is a Python
++
++
++This updated fork of Pystache is currently tested on Python 3.6+ and in
++Conda, on Linux, Macos, and Windows (Python 2.7 support has been removed).
++
++![](gh/images/logo_phillips_small.png "mustachioed, monocled snake by David Phillips")
++
++[Pystache](http://sarnold.github.com/pystache) is a Python
+ implementation of [Mustache](http://mustache.github.com/). Mustache is a
+ framework-agnostic, logic-free templating system inspired by
+ [ctemplate](http://code.google.com/p/google-ctemplate/) and
+@@ -27,10 +41,10 @@ provides a good introduction to Mustache's syntax. For a more complete
+ (and more current) description of Mustache's behavior, see the official
+ [Mustache spec](https://github.com/mustache/spec).
+ 
+-Pystache is [semantically versioned](http://semver.org) and can be found
+-on [PyPI](http://pypi.python.org/pypi/pystache). This version of
+-Pystache passes all tests in [version
+-1.1.2](https://github.com/mustache/spec/tree/v1.1.2) of the spec.
++Pystache is [semantically versioned](http://semver.org) and older versions
++can still be found on [PyPI](http://pypi.python.org/pypi/pystache). This
++version of Pystache now passes all tests in [version
++1.1.3](https://github.com/mustache/spec/tree/v1.1.3) of the spec.
+ 
+ 
+ Requirements
+@@ -38,41 +52,25 @@ Requirements
+ 
+ Pystache is tested with--
+ 
+--   Python 2.4 (requires simplejson [version
+-    2.0.9](http://pypi.python.org/pypi/simplejson/2.0.9) or earlier)
+--   Python 2.5 (requires
+-    [simplejson](http://pypi.python.org/pypi/simplejson/))
+--   Python 2.6
+--   Python 2.7
+--   Python 3.1
+--   Python 3.2
+--   Python 3.3
+--   [PyPy](http://pypy.org/)
++-   Python 3.6
++-   Python 3.7
++-   Python 3.8
++-   Python 3.9
++-   Conda (py36-py39)
+ 
+ [Distribute](http://packages.python.org/distribute/) (the setuptools fork)
+-is recommended over [setuptools](http://pypi.python.org/pypi/setuptools),
+-and is required in some cases (e.g. for Python 3 support).
+-If you use [pip](http://www.pip-installer.org/), you probably already satisfy
+-this requirement.
++is no longer required over [setuptools](http://pypi.python.org/pypi/setuptools),
++as the current packaging is now PEP517-compliant.
+ 
+ JSON support is needed only for the command-line interface and to run
+-the spec tests. We require simplejson for earlier versions of Python
+-since Python's [json](http://docs.python.org/library/json.html) module
+-was added in Python 2.6.
+-
+-For Python 2.4 we require an earlier version of simplejson since
+-simplejson stopped officially supporting Python 2.4 in simplejson
+-version 2.1.0. Earlier versions of simplejson can be installed manually,
+-as follows:
++the spec tests; PyYAML can still be used (see the Develop section).
+ 
+-    pip install 'simplejson<2.1.0'
+-
+-Official support for Python 2.4 will end with Pystache version 0.6.0.
++Official support for Python 2 will end with Pystache version 0.6.0.
+ 
+ Install It
+ ----------
+ 
+-    pip install pystache
++    pip install -U pystache -f https://github.com/sarnold/pystache/releases/
+ 
+ And test it--
+ 
+@@ -85,12 +83,12 @@ Use It
+ ------
+ 
+     >>> import pystache
+-    >>> print pystache.render('Hi {{person}}!', {'person': 'Mom'})
++    >>> print(pystache.render('Hi {{person}}!', {'person': 'Mom'}))
+     Hi Mom!
+ 
+ You can also create dedicated view classes to hold your view logic.
+ 
+-Here's your view class (in .../examples/readme.py):
++Here's your view class (in ../pystache/tests/examples/readme.py):
+ 
+     class SayHello(object):
+         def to(self):
+@@ -109,7 +107,7 @@ directory as your class definition):
+ Pull it together:
+ 
+     >>> renderer = pystache.Renderer()
+-    >>> print renderer.render(hello)
++    >>> print(renderer.render(hello))
+     Hello, Pizza!
+ 
+ For greater control over rendering (e.g. to specify a custom template
+@@ -117,22 +115,22 @@ directory), use the `Renderer` class like above. One can pass attributes
+ to the Renderer class constructor or set them on a Renderer instance. To
+ customize template loading on a per-view basis, subclass `TemplateSpec`.
+ See the docstrings of the
+-[Renderer](https://github.com/defunkt/pystache/blob/master/pystache/renderer.py)
++[Renderer](https://github.com/sarnold/pystache/blob/master/pystache/renderer.py)
+ class and
+-[TemplateSpec](https://github.com/defunkt/pystache/blob/master/pystache/template_spec.py)
++[TemplateSpec](https://github.com/sarnold/pystache/blob/master/pystache/template_spec.py)
+ class for more information.
+ 
+ You can also pre-parse a template:
+ 
+     >>> parsed = pystache.parse(u"Hey {{#who}}{{.}}!{{/who}}")
+-    >>> print parsed
+-    [u'Hey ', _SectionNode(key=u'who', index_begin=12, index_end=18, parsed=[_EscapeNode(key=u'.'), u'!'])]
++    >>> print(parsed)
++    ['Hey ', _SectionNode(key='who', index_begin=12, index_end=18, parsed=[_EscapeNode(key='.'), '!'])]
+ 
+ And then:
+ 
+-    >>> print renderer.render(parsed, {'who': 'Pops'})
++    >>> print(renderer.render(parsed, {'who': 'Pops'}))
+     Hey Pops!
+-    >>> print renderer.render(parsed, {'who': 'you'})
++    >>> print(renderer.render(parsed, {'who': 'you'}))
+     Hey you!
+ 
+ Python 3
+@@ -194,15 +192,16 @@ To test from a source distribution (without installing)--
+     python test_pystache.py
+ 
+ To test Pystache with multiple versions of Python (with a single
+-command!), you can use [tox](http://pypi.python.org/pypi/tox):
++command!) and different platforms, you can use [tox](http://pypi.python.org/pypi/tox):
++
++    pip install tox
++    tox -e setup
+ 
+-    pip install 'virtualenv<1.8'  # Version 1.8 dropped support for Python 2.4.
+-    pip install 'tox<1.4'  # Version 1.4 dropped support for Python 2.4.
+-    tox
++To run tests on multiple versions with coverage, run:
+ 
+-If you do not have all Python versions listed in `tox.ini`--
++    tox -e py38-linux,py39-linux  # for example
+ 
+-    tox -e py26,py32  # for example
++(substitute your platform above, eg, macos or windows)
+ 
+ The source distribution tests also include doctests and tests from the
+ Mustache spec. To include tests from the Mustache spec in your test
+@@ -217,57 +216,33 @@ parses the json files. To install PyYAML--
+ 
+     pip install pyyaml
+ 
++Once the submodule is available, you can run the full test set with:
++
++    tox -e setup . ext/spec/specs
++
+ To run a subset of the tests, you can use
+ [nose](http://somethingaboutorange.com/mrl/projects/nose/0.11.1/testing.html):
+ 
+     pip install nose
+     nosetests --tests pystache/tests/test_context.py:GetValueTests.test_dictionary__key_present
+ 
+-### Using Python 3 with Pystache from source
+-
+-Pystache is written in Python 2 and must be converted to Python 3 prior to
+-using it with Python 3.  The installation process (and tox) do this
+-automatically.
+ 
+-To convert the code to Python 3 manually (while using Python 3)--
++Mailing List (old)
++------------------
+ 
+-    python setup.py build
+-
+-This writes the converted code to a subdirectory called `build`.
+-By design, Python 3 builds
+-[cannot](https://bitbucket.org/tarek/distribute/issue/292/allow-use_2to3-with-python-2)
+-be created from Python 2.
+-
+-To convert the code without using setup.py, you can use
+-[2to3](http://docs.python.org/library/2to3.html) as follows (two steps)--
+-
+-    2to3 --write --nobackups --no-diffs --doctests_only pystache
+-    2to3 --write --nobackups --no-diffs pystache
+-
+-This converts the code (and doctests) in place.
+-
+-To `import pystache` from a source distribution while using Python 3, be
+-sure that you are importing from a directory containing a converted
+-version of the code (e.g. from the `build` directory after converting),
+-and not from the original (unconverted) source directory.  Otherwise, you will
+-get a syntax error.  You can help prevent this by not running the Python
+-IDE from the project directory when importing Pystache while using Python 3.
+-
+-
+-Mailing List
+-------------
+-
+-There is a [mailing list](http://librelist.com/browser/pystache/). Note
++There is(was) a [mailing list](http://librelist.com/browser/pystache/). Note
+ that there is a bit of a delay between posting a message and seeing it
+ appear in the mailing list archive.
+ 
+ Credits
+ -------
+ 
+-    >>> context = { 'author': 'Chris Wanstrath', 'maintainer': 'Chris Jerdonek' }
+-    >>> print pystache.render("Author: {{author}}\nMaintainer: {{maintainer}}", context)
++    >>> import pystache
++    >>> context = { 'author': 'Chris Wanstrath', 'maintainer': 'Chris Jerdonek','refurbisher': 'Steve Arnold' }
++    >>> print(pystache.render("Author: {{author}}\nMaintainer: {{maintainer}}\nRefurbisher: {{refurbisher}}", context))
+     Author: Chris Wanstrath
+     Maintainer: Chris Jerdonek
++    Refurbisher: Steve Arnold
+ 
+ Pystache logo by [David Phillips](http://davidphillips.us/) is licensed
+ under a [Creative Commons Attribution-ShareAlike 3.0 Unported
+diff --git a/TODO.md b/TODO.md
+index cd82417..76853a4 100644
+--- a/TODO.md
++++ b/TODO.md
+@@ -6,11 +6,10 @@ In development branch:
+ * Figure out a way to suppress center alignment of images in reST output.
+ * Add a unit test for the change made in 7ea8e7180c41.  This is with regard
+   to not requiring spec tests when running tests from a downloaded sdist.
+-* End support for Python 2.4.
+-* Add Python 3.3 to tox file (after deprecating 2.4).
++* End support for Python 2.7 (done as of 03/03/21 - SA)
++* Release 0.6.0 on github, make a pypi account (SA)
+ * Turn the benchmarking script at pystache/tests/benchmark.py into a command
+   in pystache/commands, or make it a subcommand of one of the existing
+   commands (i.e. using a command argument).
+ * Provide support for logging in at least one of the commands.
+-* Make sure command parsing to pystache-test doesn't break with Python 2.4 and earlier.
+ * Combine pystache-test with the main command.
+diff --git a/conda/meta.yaml b/conda/meta.yaml
+new file mode 100644
+index 0000000..e7f4fd9
+--- /dev/null
++++ b/conda/meta.yaml
+@@ -0,0 +1,50 @@
++{% set name = "pystache" %}
++{% set version = "0.6.0.dev0" %}
++
++package:
++  name: {{ name|lower }}
++  version: {{ version }}
++
++source:
++  path: ..
++
++build:
++  number: 0
++  script: {{ PYTHON }} -m pip install . --no-deps --ignore-installed -vvv
++  noarch: python
++  entry_points:
++    - pystache = pystache.commands.render:main
++    - pystache-test = pystache.commands.test:main
++
++requirements:
++  build:
++    - python
++    - setuptools
++
++  run:
++    - python
++
++test:
++  imports:
++    - pystache
++    - pystache.commands
++    - pystache.tests
++    - pystache.tests.data
++    - pystache.tests.data.locator
++    - pystache.tests.examples
++
++  commands:
++    - pystache --help
++    - pystache-test
++
++
++about:
++  home: https://github.com/sarnold/pystache
++  license: MIT
++  license_family: MIT
++  license_file: LICENSE
++  summary: Mustache for Python
++
++extra:
++  recipe-maintainers:
++    - sarnold
+diff --git a/pyproject.toml b/pyproject.toml
+new file mode 100644
+index 0000000..2f21011
+--- /dev/null
++++ b/pyproject.toml
+@@ -0,0 +1,3 @@
++[build-system]
++requires = ["setuptools>=40.8.0", "wheel"]
++build-backend = "setuptools.build_meta"
+diff --git a/pystache/__init__.py b/pystache/__init__.py
+index 4cf2434..5edc1c5 100644
+--- a/pystache/__init__.py
++++ b/pystache/__init__.py
+@@ -10,4 +10,4 @@ from pystache.init import parse, render, Renderer, TemplateSpec
+ 
+ __all__ = ['parse', 'render', 'Renderer', 'TemplateSpec']
+ 
+-__version__ = '0.5.4'  # Also change in setup.py.
++__version__ = '0.6.0'
+diff --git a/pystache/commands/render.py b/pystache/commands/render.py
+index 1a9c309..9c913e7 100644
+--- a/pystache/commands/render.py
++++ b/pystache/commands/render.py
+@@ -22,7 +22,7 @@ except:
+         from sys import exc_info
+         ex_type, ex_value, tb = exc_info()
+         new_ex = Exception("%s: %s" % (ex_type.__name__, ex_value))
+-        raise new_ex.__class__, new_ex, tb
++        raise new_ex.__class__(new_ex).with_traceback(tb)
+ 
+ # The optparse module is deprecated in Python 2.7 in favor of argparse.
+ # However, argparse is not available in Python 2.6 and earlier.
+@@ -88,7 +88,7 @@ def main(sys_argv=sys.argv):
+         context = json.loads(context)
+ 
+     rendered = renderer.render(template, context)
+-    print rendered
++    print(rendered)
+ 
+ 
+ if __name__=='__main__':
+diff --git a/pystache/common.py b/pystache/common.py
+index fb266dd..0e9b091 100644
+--- a/pystache/common.py
++++ b/pystache/common.py
+@@ -5,17 +5,12 @@ Exposes functionality needed throughout the project.
+ 
+ """
+ 
+-from sys import version_info
+ 
+ def _get_string_types():
+-    # TODO: come up with a better solution for this.  One of the issues here
+-    #   is that in Python 3 there is no common base class for unicode strings
+-    #   and byte strings, and 2to3 seems to convert all of "str", "unicode",
+-    #   and "basestring" to Python 3's "str".
+-    if version_info < (3, ):
+-         return basestring
+-    # The latter evaluates to "bytes" in Python 3 -- even after conversion by 2to3.
+-    return (unicode, type(u"a".encode('utf-8')))
++    """
++    Return the Python3 string type (no more python2)
++    """
++    return (str, type("a".encode('utf-8')))
+ 
+ 
+ _STRING_TYPES = _get_string_types()
+diff --git a/pystache/defaults.py b/pystache/defaults.py
+index bcfdf4c..2fab0e0 100644
+--- a/pystache/defaults.py
++++ b/pystache/defaults.py
+@@ -39,7 +39,7 @@ STRING_ENCODING = sys.getdefaultencoding()
+ FILE_ENCODING = sys.getdefaultencoding()
+ 
+ # The delimiters to start with when parsing.
+-DELIMITERS = (u'{{', u'}}')
++DELIMITERS = ('{{', '}}')
+ 
+ # How to handle missing tags when rendering a template.
+ MISSING_TAGS = MissingTags.ignore
+diff --git a/pystache/loader.py b/pystache/loader.py
+index d4a7e53..ea01d17 100644
+--- a/pystache/loader.py
++++ b/pystache/loader.py
+@@ -6,6 +6,7 @@ This module provides a Loader class for locating and reading templates.
+ """
+ 
+ import os
++import platform
+ import sys
+ 
+ from pystache import common
+@@ -24,7 +25,7 @@ def _make_to_unicode():
+         """
+         if encoding is None:
+             encoding = defaults.STRING_ENCODING
+-        return unicode(s, encoding, defaults.DECODE_ERRORS)
++        return str(s, encoding, defaults.DECODE_ERRORS)
+     return to_unicode
+ 
+ 
+@@ -86,7 +87,7 @@ class Loader(object):
+     def _make_locator(self):
+         return Locator(extension=self.extension)
+ 
+-    def unicode(self, s, encoding=None):
++    def str(self, s, encoding=None):
+         """
+         Convert a string to unicode using the given encoding, and return it.
+ 
+@@ -104,8 +105,8 @@ class Loader(object):
+             Defaults to None.
+ 
+         """
+-        if isinstance(s, unicode):
+-            return unicode(s)
++        if isinstance(s, str):
++            return str(s)
+ 
+         return self.to_unicode(s, encoding)
+ 
+@@ -118,8 +119,9 @@ class Loader(object):
+ 
+         if encoding is None:
+             encoding = self.file_encoding
+-
+-        return self.unicode(b, encoding)
++        if platform.system() == "Windows":
++            return self.str(b, encoding).replace('\r', '')
++        return self.str(b, encoding)
+ 
+     def load_file(self, file_name):
+         """
+diff --git a/pystache/parsed.py b/pystache/parsed.py
+index 372d96c..75d417d 100644
+--- a/pystache/parsed.py
++++ b/pystache/parsed.py
+@@ -41,10 +41,10 @@ class ParsedTemplate(object):
+         """
+         # We avoid use of the ternary operator for Python 2.4 support.
+         def get_unicode(node):
+-            if type(node) is unicode:
++            if type(node) is str:
+                 return node
+             return node.render(engine, context)
+-        parts = map(get_unicode, self._parse_tree)
++        parts = list(map(get_unicode, self._parse_tree))
+         s = ''.join(parts)
+ 
+-        return unicode(s)
++        return str(s)
+diff --git a/pystache/parser.py b/pystache/parser.py
+index c6a171f..1afd50a 100644
+--- a/pystache/parser.py
++++ b/pystache/parser.py
+@@ -11,8 +11,8 @@ from pystache import defaults
+ from pystache.parsed import ParsedTemplate
+ 
+ 
+-END_OF_LINE_CHARACTERS = [u'\r', u'\n']
+-NON_BLANK_RE = re.compile(ur'^(.)', re.M)
++END_OF_LINE_CHARACTERS = ['\r', '\n']
++NON_BLANK_RE = re.compile(r'^(.)', re.M)
+ 
+ 
+ # TODO: add some unit tests for this.
+@@ -30,12 +30,12 @@ def parse(template, delimiters=None):
+ 
+     Examples:
+ 
+-    >>> parsed = parse(u"Hey {{#who}}{{name}}!{{/who}}")
+-    >>> print str(parsed).replace('u', '')  # This is a hack to get the test to pass both in Python 2 and 3.
++    >>> parsed = parse("Hey {{#who}}{{name}}!{{/who}}")
++    >>> print(str(parsed).replace('u', ''))  # This is an old hack.
+     ['Hey ', _SectionNode(key='who', index_begin=12, index_end=21, parsed=[_EscapeNode(key='name'), '!'])]
+ 
+     """
+-    if type(template) is not unicode:
++    if type(template) is not str:
+         raise Exception("Template is not unicode: %s" % type(template))
+     parser = _Parser(delimiters)
+     return parser.parse(template)
+@@ -94,7 +94,7 @@ class _CommentNode(object):
+         return _format(self)
+ 
+     def render(self, engine, context):
+-        return u''
++        return ''
+ 
+ 
+ class _ChangeNode(object):
+@@ -106,7 +106,7 @@ class _ChangeNode(object):
+         return _format(self)
+ 
+     def render(self, engine, context):
+-        return u''
++        return ''
+ 
+ 
+ class _EscapeNode(object):
+@@ -147,7 +147,7 @@ class _PartialNode(object):
+     def render(self, engine, context):
+         template = engine.resolve_partial(self.key)
+         # Indent before rendering.
+-        template = re.sub(NON_BLANK_RE, self.indent + ur'\1', template)
++        template = re.sub(NON_BLANK_RE, self.indent + r'\1', template)
+ 
+         return engine.render(template, context)
+ 
+@@ -168,7 +168,7 @@ class _InvertedNode(object):
+         # Note that lambdas are considered truthy for inverted sections
+         # per the spec.
+         if data:
+-            return u''
++            return ''
+         return self.parsed_section.render(engine, context)
+ 
+ 
+@@ -218,7 +218,7 @@ class _SectionNode(object):
+             parts.append(self.parsed.render(engine, context))
+             context.pop()
+ 
+-        return unicode(''.join(parts))
++        return str(''.join(parts))
+ 
+ 
+ class _Parser(object):
+diff --git a/pystache/renderengine.py b/pystache/renderengine.py
+index c797b17..2f1e341 100644
+--- a/pystache/renderengine.py
++++ b/pystache/renderengine.py
+@@ -160,7 +160,7 @@ class RenderEngine(object):
+         if not is_string(val):
+             # In case the template is an integer, for example.
+             val = self.to_str(val)
+-        if type(val) is not unicode:
++        if type(val) is not str:
+             val = self.literal(val)
+         return self.render(val, context, delimiters)
+ 
+diff --git a/pystache/renderer.py b/pystache/renderer.py
+index ff6a90c..064f040 100644
+--- a/pystache/renderer.py
++++ b/pystache/renderer.py
+@@ -32,7 +32,7 @@ class Renderer(object):
+     >>> partials = {'partial': 'Hello, {{thing}}!'}
+     >>> renderer = Renderer(partials=partials)
+     >>> # We apply print to make the test work in Python 3 after 2to3.
+-    >>> print renderer.render('{{>partial}}', {'thing': 'world'})
++    >>> print(renderer.render('{{>partial}}', {'thing': 'world'}))
+     Hello, world!
+ 
+     To customize string coercion (e.g. to render False values as ''), one can
+@@ -130,7 +130,7 @@ class Renderer(object):
+         if string_encoding is None:
+             string_encoding = defaults.STRING_ENCODING
+ 
+-        if isinstance(search_dirs, basestring):
++        if isinstance(search_dirs, str):
+             search_dirs = [search_dirs]
+ 
+         self._context = None
+@@ -177,16 +177,16 @@ class Renderer(object):
+         """
+         # We type-check to avoid "TypeError: decoding Unicode is not supported".
+         # We avoid the Python ternary operator for Python 2.4 support.
+-        if isinstance(s, unicode):
++        if isinstance(s, str):
+             return s
+-        return self.unicode(s)
++        return self.str(s)
+ 
+     def _to_unicode_hard(self, s):
+         """
+         Convert a basestring to a string with type unicode (not subclass).
+ 
+         """
+-        return unicode(self._to_unicode_soft(s))
++        return str(self._to_unicode_soft(s))
+ 
+     def _escape_to_unicode(self, s):
+         """
+@@ -195,9 +195,9 @@ class Renderer(object):
+         Returns a unicode string (not subclass).
+ 
+         """
+-        return unicode(self.escape(self._to_unicode_soft(s)))
++        return str(self.escape(self._to_unicode_soft(s)))
+ 
+-    def unicode(self, b, encoding=None):
++    def str(self, b, encoding=None):
+         """
+         Convert a byte string to unicode, using string_encoding and decode_errors.
+ 
+@@ -222,7 +222,7 @@ class Renderer(object):
+ 
+         # TODO: Wrap UnicodeDecodeErrors with a message about setting
+         # the string_encoding and decode_errors attributes.
+-        return unicode(b, encoding, self.decode_errors)
++        return str(b, encoding, self.decode_errors)
+ 
+     def _make_loader(self):
+         """
+@@ -230,7 +230,7 @@ class Renderer(object):
+ 
+         """
+         return Loader(file_encoding=self.file_encoding, extension=self.file_extension,
+-                      to_unicode=self.unicode, search_dirs=self.search_dirs)
++                      to_unicode=self.str, search_dirs=self.search_dirs)
+ 
+     def _make_load_template(self):
+         """
+@@ -299,7 +299,7 @@ class Renderer(object):
+             try:
+                 return load_partial(name)
+             except TemplateNotFoundError:
+-                return u''
++                return ''
+ 
+         return resolve_partial
+ 
+@@ -316,7 +316,7 @@ class Renderer(object):
+             try:
+                 return context_get(stack, name)
+             except KeyNotFoundError:
+-                return u''
++                return ''
+ 
+         return resolve_context
+ 
+diff --git a/pystache/specloader.py b/pystache/specloader.py
+index 3a77d4c..a82d52a 100644
+--- a/pystache/specloader.py
++++ b/pystache/specloader.py
+@@ -83,7 +83,7 @@ class SpecLoader(object):
+ 
+         """
+         if spec.template is not None:
+-            return self.loader.unicode(spec.template, spec.template_encoding)
++            return self.loader.str(spec.template, spec.template_encoding)
+ 
+         path = self._find(spec)
+ 
+diff --git a/pystache/tests/benchmark.py b/pystache/tests/benchmark.py
+index d46e973..6cb54f8 100755
+--- a/pystache/tests/benchmark.py
++++ b/pystache/tests/benchmark.py
+@@ -13,6 +13,13 @@ tests/benchmark.py 10000
+ import sys
+ from timeit import Timer
+ 
++try:
++    import chevron as pystache
++    print('Using module: chevron')
++except (ImportError):
++    import pystache
++    print('Using module: pystache')
++
+ import pystache
+ 
+ # TODO: make the example realistic.
+@@ -76,17 +83,17 @@ def main(sys_argv):
+     args = sys_argv[1:]
+     count = int(args[0])
+ 
+-    print "Benchmarking: %sx" % count
+-    print
++    print("Benchmarking: %sx" % count)
++    print()
+ 
+     for example in examples:
+ 
+         test = make_test_function(example)
+ 
+         t = Timer(test,)
+-        print min(t.repeat(repeat=3, number=count))
++        print(min(t.repeat(repeat=3, number=count)))
+ 
+-    print "Done"
++    print("Done")
+ 
+ 
+ if __name__ == '__main__':
+diff --git a/pystache/tests/common.py b/pystache/tests/common.py
+index 222e14f..12b76b5 100644
+--- a/pystache/tests/common.py
++++ b/pystache/tests/common.py
+@@ -72,8 +72,8 @@ def _find_files(root_dir, should_include):
+     #   http://docs.python.org/library/os.html#os.walk
+     for dir_path, dir_names, file_names in os.walk(root_dir):
+         new_paths = [os.path.join(dir_path, file_name) for file_name in file_names]
+-        new_paths = filter(is_module, new_paths)
+-        new_paths = filter(should_include, new_paths)
++        new_paths = list(filter(is_module, new_paths))
++        new_paths = list(filter(should_include, new_paths))
+         paths.extend(new_paths)
+ 
+     return paths
+@@ -183,7 +183,7 @@ class AssertExceptionMixin:
+         try:
+             callable(*args, **kwds)
+             raise Exception("Expected exception: %s: %s" % (exception_type, repr(msg)))
+-        except exception_type, err:
++        except exception_type as err:
+             self.assertEqual(str(err), msg)
+ 
+ 
+@@ -228,10 +228,10 @@ class Attachable(object):
+     """
+     def __init__(self, **kwargs):
+         self.__args__ = kwargs
+-        for arg, value in kwargs.iteritems():
++        for arg, value in kwargs.items():
+             setattr(self, arg, value)
+ 
+     def __repr__(self):
+         return "%s(%s)" % (self.__class__.__name__,
+                            ", ".join("%s=%s" % (k, repr(v))
+-                                     for k, v in self.__args__.iteritems()))
++                                     for k, v in self.__args__.items()))
+diff --git a/pystache/tests/examples/unicode_output.py b/pystache/tests/examples/unicode_output.py
+index da0e1d2..7bdea36 100644
+--- a/pystache/tests/examples/unicode_output.py
++++ b/pystache/tests/examples/unicode_output.py
+@@ -8,4 +8,4 @@ TODO: add a docstring.
+ class UnicodeOutput(object):
+ 
+     def name(self):
+-        return u'Henri Poincaré'
++        return 'Henri Poincaré'
+diff --git a/pystache/tests/main.py b/pystache/tests/main.py
+index 8af6b2e..17f2fb2 100644
+--- a/pystache/tests/main.py
++++ b/pystache/tests/main.py
+@@ -88,7 +88,7 @@ def main(sys_argv):
+ 
+     """
+     # TODO: use logging module
+-    print "pystache: running tests: argv: %s" % repr(sys_argv)
++    print("pystache: running tests: argv: %s" % repr(sys_argv))
+ 
+     should_source_exist = False
+     spec_test_dir = None
+@@ -131,11 +131,9 @@ def main(sys_argv):
+         module_names = _discover_test_modules(PACKAGE_DIR)
+         sys_argv.extend(module_names)
+         if project_dir is not None:
+-            # Add the current module for unit tests contained here (e.g.
+-            # to include SetupTests).
++            # Add the current module for unit tests contained here
+             sys_argv.append(__name__)
+ 
+-    SetupTests.project_dir = project_dir
+ 
+     extra_tests = make_extra_tests(project_dir, spec_test_dir)
+     test_program_class = make_test_program_class(extra_tests)
+@@ -166,25 +164,3 @@ def _discover_test_modules(package_dir):
+         raise Exception("No unit-test modules found--\n  in %s" % package_dir)
+ 
+     return names
+-
+-
+-class SetupTests(TestCase):
+-
+-    """Tests about setup.py."""
+-
+-    project_dir = None
+-
+-    def test_version(self):
+-        """
+-        Test that setup.py's version matches the package's version.
+-
+-        """
+-        original_path = list(sys.path)
+-
+-        sys.path.insert(0, self.project_dir)
+-
+-        try:
+-            from setup import VERSION
+-            self.assertEqual(VERSION, pystache.__version__)
+-        finally:
+-            sys.path = original_path
+diff --git a/pystache/tests/spectesting.py b/pystache/tests/spectesting.py
+index ec8a08d..2dd57e8 100644
+--- a/pystache/tests/spectesting.py
++++ b/pystache/tests/spectesting.py
+@@ -37,7 +37,7 @@ except ImportError:
+             from sys import exc_info
+             ex_type, ex_value, tb = exc_info()
+             new_ex = Exception("%s: %s" % (ex_type.__name__, ex_value))
+-            raise new_ex.__class__, new_ex, tb
++            raise new_ex.__class__(new_ex).with_traceback(tb)
+     file_extension = 'json'
+     parser = json
+ else:
+@@ -62,7 +62,7 @@ def get_spec_tests(spec_test_dir):
+ 
+     """
+     # TODO: use logging module instead.
+-    print "pystache: spec tests: using %s" % _get_parser_info()
++    print("pystache: spec tests: using %s" % _get_parser_info())
+ 
+     cases = []
+ 
+@@ -103,7 +103,7 @@ def _read_spec_tests(path):
+ 
+     """
+     b = common.read(path)
+-    u = unicode(b, encoding=FILE_ENCODING)
++    u = str(b, encoding=FILE_ENCODING)
+     spec_data = parse(u)
+     tests = spec_data['tests']
+ 
+@@ -133,7 +133,7 @@ def _convert_children(node):
+         return
+     # Otherwise, node is a dict, so attempt the conversion.
+ 
+-    for key in node.keys():
++    for key in list(node.keys()):
+         val = node[key]
+ 
+         if not isinstance(val, dict) or val.get('__tag__') != 'code':
+@@ -158,9 +158,9 @@ def _deserialize_spec_test(data, file_path):
+     context = data['data']
+     description = data['desc']
+     # PyYAML seems to leave ASCII strings as byte strings.
+-    expected = unicode(data['expected'])
++    expected = str(data['expected'])
+     # TODO: switch to using dict.get().
+-    partials = data.has_key('partials') and data['partials'] or {}
++    partials = 'partials' in data and data['partials'] or {}
+     template = data['template']
+     test_name = data['name']
+ 
+@@ -237,8 +237,8 @@ def parse(u):
+         value = loader.construct_mapping(node)
+         return eval(value['python'], {})
+ 
+-    yaml.add_constructor(u'!code', code_constructor)
+-    return yaml.load(u)
++    yaml.add_constructor('!code', code_constructor)
++    return yaml.full_load(u)
+ 
+ 
+ class SpecTestBase(unittest.TestCase, AssertStringMixin):
+diff --git a/pystache/tests/test___init__.py b/pystache/tests/test___init__.py
+index eae42c1..63d2c3b 100644
+--- a/pystache/tests/test___init__.py
++++ b/pystache/tests/test___init__.py
+@@ -6,9 +6,9 @@ Tests of __init__.py.
+ """
+ 
+ # Calling "import *" is allowed only at the module level.
+-GLOBALS_INITIAL = globals().keys()
++GLOBALS_INITIAL = list(globals().keys())
+ from pystache import *
+-GLOBALS_PYSTACHE_IMPORTED = globals().keys()
++GLOBALS_PYSTACHE_IMPORTED = list(globals().keys())
+ 
+ import unittest
+ 
+diff --git a/pystache/tests/test_commands.py b/pystache/tests/test_commands.py
+index 2529d25..34fe8ba 100644
+--- a/pystache/tests/test_commands.py
++++ b/pystache/tests/test_commands.py
+@@ -39,7 +39,7 @@ class CommandsTestCase(unittest.TestCase):
+ 
+         """
+         actual = self.callScript("Hi {{thing}}", '{"thing": "world"}')
+-        self.assertEqual(actual, u"Hi world\n")
++        self.assertEqual(actual, "Hi world\n")
+ 
+     def tearDown(self):
+         sys.stdout = ORIGINAL_STDOUT
+diff --git a/pystache/tests/test_defaults.py b/pystache/tests/test_defaults.py
+index c78ea7c..5399bb0 100644
+--- a/pystache/tests/test_defaults.py
++++ b/pystache/tests/test_defaults.py
+@@ -31,37 +31,37 @@ class DefaultsConfigurableTestCase(unittest.TestCase, AssertStringMixin):
+             self.saved[e] = getattr(pystache.defaults, e)
+ 
+     def tearDown(self):
+-        for key, value in self.saved.items():
++        for key, value in list(self.saved.items()):
+             setattr(pystache.defaults, key, value)
+ 
+     def test_tag_escape(self):
+         """Test that changes to defaults.TAG_ESCAPE take effect."""
+-        template = u"{{foo}}"
++        template = "{{foo}}"
+         context = {'foo': '<'}
+         actual = pystache.render(template, context)
+-        self.assertString(actual, u"&lt;")
++        self.assertString(actual, "&lt;")
+ 
+         pystache.defaults.TAG_ESCAPE = lambda u: u
+         actual = pystache.render(template, context)
+-        self.assertString(actual, u"<")
++        self.assertString(actual, "<")
+ 
+     def test_delimiters(self):
+         """Test that changes to defaults.DELIMITERS take effect."""
+-        template = u"[[foo]]{{foo}}"
++        template = "[[foo]]{{foo}}"
+         context = {'foo': 'FOO'}
+         actual = pystache.render(template, context)
+-        self.assertString(actual, u"[[foo]]FOO")
++        self.assertString(actual, "[[foo]]FOO")
+ 
+         pystache.defaults.DELIMITERS = ('[[', ']]')
+         actual = pystache.render(template, context)
+-        self.assertString(actual, u"FOO{{foo}}")
++        self.assertString(actual, "FOO{{foo}}")
+ 
+     def test_missing_tags(self):
+         """Test that changes to defaults.MISSING_TAGS take effect."""
+-        template = u"{{foo}}"
++        template = "{{foo}}"
+         context = {}
+         actual = pystache.render(template, context)
+-        self.assertString(actual, u"")
++        self.assertString(actual, "")
+ 
+         pystache.defaults.MISSING_TAGS = 'strict'
+         self.assertRaises(pystache.context.KeyNotFoundError,
+diff --git a/pystache/tests/test_examples.py b/pystache/tests/test_examples.py
+index 5c9f74d..9f93de3 100644
+--- a/pystache/tests/test_examples.py
++++ b/pystache/tests/test_examples.py
+@@ -7,15 +7,15 @@ TODO: add a docstring.
+ 
+ import unittest
+ 
+-from examples.comments import Comments
+-from examples.double_section import DoubleSection
+-from examples.escaped import Escaped
+-from examples.unescaped import Unescaped
+-from examples.template_partial import TemplatePartial
+-from examples.delimiters import Delimiters
+-from examples.unicode_output import UnicodeOutput
+-from examples.unicode_input import UnicodeInput
+-from examples.nested_context import NestedContext
++from .examples.comments import Comments
++from .examples.double_section import DoubleSection
++from .examples.escaped import Escaped
++from .examples.unescaped import Unescaped
++from .examples.template_partial import TemplatePartial
++from .examples.delimiters import Delimiters
++from .examples.unicode_output import UnicodeOutput
++from .examples.unicode_input import UnicodeInput
++from .examples.nested_context import NestedContext
+ from pystache import Renderer
+ from pystache.tests.common import EXAMPLES_DIR
+ from pystache.tests.common import AssertStringMixin
+@@ -29,34 +29,34 @@ class TestView(unittest.TestCase, AssertStringMixin):
+         self.assertString(actual, expected)
+ 
+     def test_comments(self):
+-        self._assert(Comments(), u"<h1>A Comedy of Errors</h1>")
++        self._assert(Comments(), "<h1>A Comedy of Errors</h1>")
+ 
+     def test_double_section(self):
+-        self._assert(DoubleSection(), u"* first\n* second\n* third")
++        self._assert(DoubleSection(), "* first\n* second\n* third")
+ 
+     def test_unicode_output(self):
+         renderer = Renderer()
+         actual = renderer.render(UnicodeOutput())
+-        self.assertString(actual, u'<p>Name: Henri Poincaré</p>')
++        self.assertString(actual, '<p>Name: Henri Poincaré</p>')
+ 
+     def test_unicode_input(self):
+         renderer = Renderer()
+         actual = renderer.render(UnicodeInput())
+-        self.assertString(actual, u'abcdé')
++        self.assertString(actual, 'abcdé')
+ 
+     def test_escaping(self):
+-        self._assert(Escaped(), u"<h1>Bear &gt; Shark</h1>")
++        self._assert(Escaped(), "<h1>Bear &gt; Shark</h1>")
+ 
+     def test_literal(self):
+         renderer = Renderer()
+         actual = renderer.render(Unescaped())
+-        self.assertString(actual, u"<h1>Bear > Shark</h1>")
++        self.assertString(actual, "<h1>Bear > Shark</h1>")
+ 
+     def test_template_partial(self):
+         renderer = Renderer(search_dirs=EXAMPLES_DIR)
+         actual = renderer.render(TemplatePartial(renderer=renderer))
+ 
+-        self.assertString(actual, u"""<h1>Welcome</h1>
++        self.assertString(actual, """<h1>Welcome</h1>
+ Again, Welcome!""")
+ 
+     def test_template_partial_extension(self):
+@@ -65,7 +65,7 @@ Again, Welcome!""")
+         view = TemplatePartial(renderer=renderer)
+ 
+         actual = renderer.render(view)
+-        self.assertString(actual, u"""Welcome
++        self.assertString(actual, """Welcome
+ -------
+ 
+ ## Again, Welcome! ##""")
+@@ -73,7 +73,7 @@ Again, Welcome!""")
+     def test_delimiters(self):
+         renderer = Renderer()
+         actual = renderer.render(Delimiters())
+-        self.assertString(actual, u"""\
++        self.assertString(actual, """\
+ * It worked the first time.
+ * And it worked the second time.
+ * Then, surprisingly, it worked the third time.
+@@ -82,7 +82,7 @@ Again, Welcome!""")
+     def test_nested_context(self):
+         renderer = Renderer()
+         actual = renderer.render(NestedContext(renderer))
+-        self.assertString(actual, u"one and foo and two")
++        self.assertString(actual, "one and foo and two")
+ 
+     def test_nested_context_is_available_in_view(self):
+         renderer = Renderer()
+@@ -91,7 +91,7 @@ Again, Welcome!""")
+         view.template = '{{#herp}}{{#derp}}{{nested_context_in_view}}{{/derp}}{{/herp}}'
+ 
+         actual = renderer.render(view)
+-        self.assertString(actual, u'it works!')
++        self.assertString(actual, 'it works!')
+ 
+     def test_partial_in_partial_has_access_to_grand_parent_context(self):
+         renderer = Renderer(search_dirs=EXAMPLES_DIR)
+diff --git a/pystache/tests/test_loader.py b/pystache/tests/test_loader.py
+index f2c2187..315daff 100644
+--- a/pystache/tests/test_loader.py
++++ b/pystache/tests/test_loader.py
+@@ -55,23 +55,23 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
+ 
+     def test_init__to_unicode__default(self):
+         loader = Loader()
+-        self.assertRaises(TypeError, loader.to_unicode, u"abc")
++        self.assertRaises(TypeError, loader.to_unicode, "abc")
+ 
+         decode_errors = defaults.DECODE_ERRORS
+         string_encoding = defaults.STRING_ENCODING
+ 
+-        nonascii = u'abcdé'.encode('utf-8')
++        nonascii = 'abcdé'.encode('utf-8')
+ 
+         loader = Loader()
+         self.assertRaises(UnicodeDecodeError, loader.to_unicode, nonascii)
+ 
+         defaults.DECODE_ERRORS = 'ignore'
+         loader = Loader()
+-        self.assertString(loader.to_unicode(nonascii), u'abcd')
++        self.assertString(loader.to_unicode(nonascii), 'abcd')
+ 
+         defaults.STRING_ENCODING = 'utf-8'
+         loader = Loader()
+-        self.assertString(loader.to_unicode(nonascii), u'abcdé')
++        self.assertString(loader.to_unicode(nonascii), 'abcdé')
+ 
+ 
+     def _get_path(self, filename):
+@@ -83,9 +83,9 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
+ 
+         """
+         loader = Loader()
+-        actual = loader.unicode("foo")
++        actual = loader.str("foo")
+ 
+-        self.assertString(actual, u"foo")
++        self.assertString(actual, "foo")
+ 
+     def test_unicode__basic__input_unicode(self):
+         """
+@@ -93,24 +93,24 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
+ 
+         """
+         loader = Loader()
+-        actual = loader.unicode(u"foo")
++        actual = loader.str("foo")
+ 
+-        self.assertString(actual, u"foo")
++        self.assertString(actual, "foo")
+ 
+     def test_unicode__basic__input_unicode_subclass(self):
+         """
+         Test unicode(): default arguments with unicode-subclass input.
+ 
+         """
+-        class UnicodeSubclass(unicode):
++        class UnicodeSubclass(str):
+             pass
+ 
+-        s = UnicodeSubclass(u"foo")
++        s = UnicodeSubclass("foo")
+ 
+         loader = Loader()
+-        actual = loader.unicode(s)
++        actual = loader.str(s)
+ 
+-        self.assertString(actual, u"foo")
++        self.assertString(actual, "foo")
+ 
+     def test_unicode__to_unicode__attribute(self):
+         """
+@@ -119,16 +119,16 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
+         """
+         loader = Loader()
+ 
+-        non_ascii = u'abcdé'.encode('utf-8')
+-        self.assertRaises(UnicodeDecodeError, loader.unicode, non_ascii)
++        non_ascii = 'abcdé'.encode('utf-8')
++        self.assertRaises(UnicodeDecodeError, loader.str, non_ascii)
+ 
+         def to_unicode(s, encoding=None):
+             if encoding is None:
+                 encoding = 'utf-8'
+-            return unicode(s, encoding)
++            return str(s, encoding)
+ 
+         loader.to_unicode = to_unicode
+-        self.assertString(loader.unicode(non_ascii), u"abcdé")
++        self.assertString(loader.str(non_ascii), "abcdé")
+ 
+     def test_unicode__encoding_argument(self):
+         """
+@@ -137,12 +137,12 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
+         """
+         loader = Loader()
+ 
+-        non_ascii = u'abcdé'.encode('utf-8')
++        non_ascii = 'abcdé'.encode('utf-8')
+ 
+-        self.assertRaises(UnicodeDecodeError, loader.unicode, non_ascii)
++        self.assertRaises(UnicodeDecodeError, loader.str, non_ascii)
+ 
+-        actual = loader.unicode(non_ascii, encoding='utf-8')
+-        self.assertString(actual, u'abcdé')
++        actual = loader.str(non_ascii, encoding='utf-8')
++        self.assertString(actual, 'abcdé')
+ 
+     # TODO: check the read() unit tests.
+     def test_read(self):
+@@ -153,7 +153,7 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
+         loader = Loader()
+         path = self._get_path('ascii.mustache')
+         actual = loader.read(path)
+-        self.assertString(actual, u'ascii: abc')
++        self.assertString(actual, 'ascii: abc')
+ 
+     def test_read__file_encoding__attribute(self):
+         """
+@@ -167,7 +167,7 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
+ 
+         loader.file_encoding = 'utf-8'
+         actual = loader.read(path)
+-        self.assertString(actual, u'non-ascii: é')
++        self.assertString(actual, 'non-ascii: é')
+ 
+     def test_read__encoding__argument(self):
+         """
+@@ -180,7 +180,7 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
+         self.assertRaises(UnicodeDecodeError, loader.read, path)
+ 
+         actual = loader.read(path, encoding='utf-8')
+-        self.assertString(actual, u'non-ascii: é')
++        self.assertString(actual, 'non-ascii: é')
+ 
+     def test_read__to_unicode__attribute(self):
+         """
+diff --git a/pystache/tests/test_pystache.py b/pystache/tests/test_pystache.py
+index 5447f8d..cf5d6af 100644
+--- a/pystache/tests/test_pystache.py
++++ b/pystache/tests/test_pystache.py
+@@ -71,14 +71,14 @@ class PystacheTests(unittest.TestCase):
+         template = "{{#stats}}({{key}} & {{value}}){{/stats}}"
+         stats = []
+         stats.append({'key': 123, 'value': ['something']})
+-        stats.append({'key': u"chris", 'value': 0.900})
++        stats.append({'key': "chris", 'value': 0.900})
+         context = { 'stats': stats }
+         self._assert_rendered(self.non_strings_expected, template, context)
+ 
+     def test_unicode(self):
+         template = 'Name: {{name}}; Age: {{age}}'
+-        context = {'name': u'Henri Poincaré', 'age': 156 }
+-        self._assert_rendered(u'Name: Henri Poincaré; Age: 156', template, context)
++        context = {'name': 'Henri Poincaré', 'age': 156}
++        self._assert_rendered('Name: Henri Poincaré; Age: 156', template, context)
+ 
+     def test_sections(self):
+         template = """<ul>{{#users}}<li>{{name}}</li>{{/users}}</ul>"""
+diff --git a/pystache/tests/test_renderengine.py b/pystache/tests/test_renderengine.py
+index db916f7..ed604c5 100644
+--- a/pystache/tests/test_renderengine.py
++++ b/pystache/tests/test_renderengine.py
+@@ -33,11 +33,11 @@ def mock_literal(s):
+       s: a byte string or unicode string.
+ 
+     """
+-    if isinstance(s, unicode):
++    if isinstance(s, str):
+         # Strip off unicode super classes, if present.
+-        u = unicode(s)
++        u = str(s)
+     else:
+-        u = unicode(s, encoding='ascii')
++        u = str(s, encoding='ascii')
+ 
+     # We apply upper() to make sure we are actually using our custom
+     # function in the tests
+@@ -94,17 +94,17 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         engine = kwargs.get('engine', self._engine())
+ 
+         if partials is not None:
+-            engine.resolve_partial = lambda key: unicode(partials[key])
++            engine.resolve_partial = lambda key: str(partials[key])
+ 
+         context = ContextStack(*context)
+ 
+         # RenderEngine.render() only accepts unicode template strings.
+-        actual = engine.render(unicode(template), context)
++        actual = engine.render(str(template), context)
+ 
+         self.assertString(actual=actual, expected=expected)
+ 
+     def test_render(self):
+-        self._assert_render(u'Hi Mom', 'Hi {{person}}', {'person': 'Mom'})
++        self._assert_render('Hi Mom', 'Hi {{person}}', {'person': 'Mom'})
+ 
+     def test__resolve_partial(self):
+         """
+@@ -112,10 +112,10 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+ 
+         """
+         engine = self._engine()
+-        partials = {'partial': u"{{person}}"}
++        partials = {'partial': "{{person}}"}
+         engine.resolve_partial = lambda key: partials[key]
+ 
+-        self._assert_render(u'Hi Mom', 'Hi {{>partial}}', {'person': 'Mom'}, engine=engine)
++        self._assert_render('Hi Mom', 'Hi {{>partial}}', {'person': 'Mom'}, engine=engine)
+ 
+     def test__literal(self):
+         """
+@@ -125,13 +125,13 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         engine = self._engine()
+         engine.literal = lambda s: s.upper()
+ 
+-        self._assert_render(u'BAR', '{{{foo}}}', {'foo': 'bar'}, engine=engine)
++        self._assert_render('BAR', '{{{foo}}}', {'foo': 'bar'}, engine=engine)
+ 
+     def test_literal__sigil(self):
+         template = "<h1>{{& thing}}</h1>"
+         context = {'thing': 'Bear > Giraffe'}
+ 
+-        expected = u"<h1>Bear > Giraffe</h1>"
++        expected = "<h1>Bear > Giraffe</h1>"
+ 
+         self._assert_render(expected, template, context)
+ 
+@@ -143,7 +143,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         engine = self._engine()
+         engine.escape = lambda s: "**" + s
+ 
+-        self._assert_render(u'**bar', '{{foo}}', {'foo': 'bar'}, engine=engine)
++        self._assert_render('**bar', '{{foo}}', {'foo': 'bar'}, engine=engine)
+ 
+     def test__escape_does_not_call_literal(self):
+         """
+@@ -157,7 +157,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = 'literal: {{{foo}}} escaped: {{foo}}'
+         context = {'foo': 'bar'}
+ 
+-        self._assert_render(u'literal: BAR escaped: **bar', template, context, engine=engine)
++        self._assert_render('literal: BAR escaped: **bar', template, context, engine=engine)
+ 
+     def test__escape_preserves_unicode_subclasses(self):
+         """
+@@ -167,7 +167,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         variable value is markupsafe.Markup when escaping.
+ 
+         """
+-        class MyUnicode(unicode):
++        class MyUnicode(str):
+             pass
+ 
+         def escape(s):
+@@ -182,7 +182,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{foo1}} {{foo2}}'
+         context = {'foo1': MyUnicode('bar'), 'foo2': 'bar'}
+ 
+-        self._assert_render(u'**bar bar**', template, context, engine=engine)
++        self._assert_render('**bar bar**', template, context, engine=engine)
+ 
+     # Custom to_str for testing purposes.
+     def _to_str(self, val):
+@@ -197,9 +197,9 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{value}}'
+         context = {'value': None}
+ 
+-        self._assert_render(u'None', template, context, engine=engine)
++        self._assert_render('None', template, context, engine=engine)
+         engine.to_str = self._to_str
+-        self._assert_render(u'', template, context, engine=engine)
++        self._assert_render('', template, context, engine=engine)
+ 
+     def test_to_str__lambda(self):
+         """Test the to_str attribute for a lambda."""
+@@ -207,9 +207,9 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{value}}'
+         context = {'value': lambda: None}
+ 
+-        self._assert_render(u'None', template, context, engine=engine)
++        self._assert_render('None', template, context, engine=engine)
+         engine.to_str = self._to_str
+-        self._assert_render(u'', template, context, engine=engine)
++        self._assert_render('', template, context, engine=engine)
+ 
+     def test_to_str__section_list(self):
+         """Test the to_str attribute for a section list."""
+@@ -217,9 +217,9 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{#list}}{{.}}{{/list}}'
+         context = {'list': [None, None]}
+ 
+-        self._assert_render(u'NoneNone', template, context, engine=engine)
++        self._assert_render('NoneNone', template, context, engine=engine)
+         engine.to_str = self._to_str
+-        self._assert_render(u'', template, context, engine=engine)
++        self._assert_render('', template, context, engine=engine)
+ 
+     def test_to_str__section_lambda(self):
+         # TODO: add a test for a "method with an arity of 1".
+@@ -239,7 +239,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{text}} {{int}} {{{int}}}'
+         context = {'int': 100, 'text': 'foo'}
+ 
+-        self._assert_render(u'FOO 100 100', template, context, engine=engine)
++        self._assert_render('FOO 100 100', template, context, engine=engine)
+ 
+     def test_tag__output_not_interpolated(self):
+         """
+@@ -248,7 +248,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         template = '{{template}}: {{planet}}'
+         context = {'template': '{{planet}}', 'planet': 'Earth'}
+-        self._assert_render(u'{{planet}}: Earth', template, context)
++        self._assert_render('{{planet}}: Earth', template, context)
+ 
+     def test_tag__output_not_interpolated__section(self):
+         """
+@@ -257,7 +257,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         template = '{{test}}'
+         context = {'test': '{{#hello}}'}
+-        self._assert_render(u'{{#hello}}', template, context)
++        self._assert_render('{{#hello}}', template, context)
+ 
+     ## Test interpolation with "falsey" values
+     #
+@@ -268,17 +268,17 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+     def test_interpolation__falsey__zero(self):
+         template = '{{.}}'
+         context = 0
+-        self._assert_render(u'0', template, context)
++        self._assert_render('0', template, context)
+ 
+     def test_interpolation__falsey__none(self):
+         template = '{{.}}'
+         context = None
+-        self._assert_render(u'None', template, context)
++        self._assert_render('None', template, context)
+ 
+     def test_interpolation__falsey__zero(self):
+         template = '{{.}}'
+         context = False
+-        self._assert_render(u'False', template, context)
++        self._assert_render('False', template, context)
+ 
+     # Built-in types:
+     #
+@@ -310,7 +310,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         Check tag interpolation with a built-in type: string.
+ 
+         """
+-        self._assert_builtin_type('abc', 'upper', 'ABC', u'xyz')
++        self._assert_builtin_type('abc', 'upper', 'ABC', 'xyz')
+ 
+     def test_interpolation__built_in_type__integer(self):
+         """
+@@ -324,7 +324,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         #
+         # we need to resort to built-in attributes (double-underscored) on
+         # the integer type.
+-        self._assert_builtin_type(15, '__neg__', -15, u'999')
++        self._assert_builtin_type(15, '__neg__', -15, '999')
+ 
+     def test_interpolation__built_in_type__list(self):
+         """
+@@ -338,7 +338,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+ 
+         template = '{{#section}}{{%s}}{{/section}}' % attr_name
+         context = {'section': item, attr_name: 7}
+-        self._assert_render(u'7', template, context)
++        self._assert_render('7', template, context)
+ 
+     # This test is also important for testing 2to3.
+     def test_interpolation__nonascii_nonunicode(self):
+@@ -347,8 +347,8 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+ 
+         """
+         template = '{{nonascii}}'
+-        context = {'nonascii': u'abcdé'.encode('utf-8')}
+-        self._assert_render(u'abcdé', template, context)
++        context = {'nonascii': 'abcdé'.encode('utf-8')}
++        self._assert_render('abcdé', template, context)
+ 
+     def test_implicit_iterator__literal(self):
+         """
+@@ -358,7 +358,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = """{{#test}}{{{.}}}{{/test}}"""
+         context = {'test': ['<', '>']}
+ 
+-        self._assert_render(u'<>', template, context)
++        self._assert_render('<>', template, context)
+ 
+     def test_implicit_iterator__escaped(self):
+         """
+@@ -368,7 +368,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = """{{#test}}{{.}}{{/test}}"""
+         context = {'test': ['<', '>']}
+ 
+-        self._assert_render(u'&lt;&gt;', template, context)
++        self._assert_render('&lt;&gt;', template, context)
+ 
+     def test_literal__in_section(self):
+         """
+@@ -378,7 +378,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{#test}}1 {{{less_than}}} 2{{/test}}'
+         context = {'test': {'less_than': '<'}}
+ 
+-        self._assert_render(u'1 < 2', template, context)
++        self._assert_render('1 < 2', template, context)
+ 
+     def test_literal__in_partial(self):
+         """
+@@ -389,11 +389,11 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         partials = {'partial': '1 {{{less_than}}} 2'}
+         context = {'less_than': '<'}
+ 
+-        self._assert_render(u'1 < 2', template, context, partials=partials)
++        self._assert_render('1 < 2', template, context, partials=partials)
+ 
+     def test_partial(self):
+         partials = {'partial': "{{person}}"}
+-        self._assert_render(u'Hi Mom', 'Hi {{>partial}}', {'person': 'Mom'}, partials=partials)
++        self._assert_render('Hi Mom', 'Hi {{>partial}}', {'person': 'Mom'}, partials=partials)
+ 
+     def test_partial__context_values(self):
+         """
+@@ -406,7 +406,9 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         partials = {'partial': 'unescaped: {{{foo}}} escaped: {{foo}}'}
+         context = {'foo': '<'}
+ 
+-        self._assert_render(u'unescaped: < escaped: &lt;', template, context, engine=engine, partials=partials)
++        self._assert_render(
++            'unescaped: < escaped: &lt;',
++            template, context, engine=engine, partials=partials)
+ 
+     ## Test cases related specifically to lambdas.
+ 
+@@ -417,8 +419,8 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+ 
+         """
+         template = '{{#nonascii}}{{.}}{{/nonascii}}'
+-        context = {'nonascii': u'abcdé'.encode('utf-8')}
+-        self._assert_render(u'abcdé', template, context)
++        context = {'nonascii': 'abcdé'.encode('utf-8')}
++        self._assert_render('abcdé', template, context)
+ 
+     # This test is also important for testing 2to3.
+     def test_lambda__returning_nonascii_nonunicode(self):
+@@ -427,8 +429,8 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+ 
+         """
+         template = '{{lambda}}'
+-        context = {'lambda': lambda: u'abcdé'.encode('utf-8')}
+-        self._assert_render(u'abcdé', template, context)
++        context = {'lambda': lambda: 'abcdé'.encode('utf-8')}
++        self._assert_render('abcdé', template, context)
+ 
+     ## Test cases related specifically to sections.
+ 
+@@ -440,7 +442,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{/section}}'
+         try:
+             self._assert_render(None, template)
+-        except ParsingError, err:
++        except ParsingError as err:
+             self.assertEqual(str(err), "Section end tag mismatch: section != None")
+ 
+     def test_section__end_tag_mismatch(self):
+@@ -451,7 +453,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{#section_start}}{{/section_end}}'
+         try:
+             self._assert_render(None, template)
+-        except ParsingError, err:
++        except ParsingError as err:
+             self.assertEqual(str(err), "Section end tag mismatch: section_end != section_start")
+ 
+     def test_section__context_values(self):
+@@ -464,7 +466,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{#test}}unescaped: {{{foo}}} escaped: {{foo}}{{/test}}'
+         context = {'test': {'foo': '<'}}
+ 
+-        self._assert_render(u'unescaped: < escaped: &lt;', template, context, engine=engine)
++        self._assert_render('unescaped: < escaped: &lt;', template, context, engine=engine)
+ 
+     def test_section__context_precedence(self):
+         """
+@@ -473,7 +475,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         template = '{{entree}} : {{#vegetarian}}{{entree}}{{/vegetarian}}'
+         context = {'entree': 'chicken', 'vegetarian': {'entree': 'beans and rice'}}
+-        self._assert_render(u'chicken : beans and rice', template, context)
++        self._assert_render('chicken : beans and rice', template, context)
+ 
+     def test_section__list_referencing_outer_context(self):
+         """
+@@ -491,7 +493,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+ 
+         template = "{{#list}}{{greeting}} {{name}}, {{/list}}"
+ 
+-        self._assert_render(u"Hi Al, Hi Bob, ", template, context)
++        self._assert_render("Hi Al, Hi Bob, ", template, context)
+ 
+     def test_section__output_not_interpolated(self):
+         """
+@@ -500,7 +502,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         template = '{{#section}}{{template}}{{/section}}: {{planet}}'
+         context = {'section': True, 'template': '{{planet}}', 'planet': 'Earth'}
+-        self._assert_render(u'{{planet}}: Earth', template, context)
++        self._assert_render('{{planet}}: Earth', template, context)
+ 
+     # TODO: have this test case added to the spec.
+     def test_section__string_values_not_lists(self):
+@@ -511,7 +513,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{#section}}foo{{/section}}'
+         context = {'section': '123'}
+         # If strings were interpreted as lists, this would give "foofoofoo".
+-        self._assert_render(u'foo', template, context)
++        self._assert_render('foo', template, context)
+ 
+     def test_section__nested_truthy(self):
+         """
+@@ -525,7 +527,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         template = '| A {{#bool}}B {{#bool}}C{{/bool}} D{{/bool}} E |'
+         context = {'bool': True}
+-        self._assert_render(u'| A B C D E |', template, context)
++        self._assert_render('| A B C D E |', template, context)
+ 
+     def test_section__nested_with_same_keys(self):
+         """
+@@ -537,16 +539,16 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         # Start with an easier, working case.
+         template = '{{#x}}{{#z}}{{y}}{{/z}}{{/x}}'
+         context = {'x': {'z': {'y': 1}}}
+-        self._assert_render(u'1', template, context)
++        self._assert_render('1', template, context)
+ 
+         template = '{{#x}}{{#x}}{{y}}{{/x}}{{/x}}'
+         context = {'x': {'x': {'y': 1}}}
+-        self._assert_render(u'1', template, context)
++        self._assert_render('1', template, context)
+ 
+     def test_section__lambda(self):
+         template = '{{#test}}Mom{{/test}}'
+         context = {'test': (lambda text: 'Hi %s' % text)}
+-        self._assert_render(u'Hi Mom', template, context)
++        self._assert_render('Hi Mom', template, context)
+ 
+     # This test is also important for testing 2to3.
+     def test_section__lambda__returning_nonascii_nonunicode(self):
+@@ -555,8 +557,8 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+ 
+         """
+         template = '{{#lambda}}{{/lambda}}'
+-        context = {'lambda': lambda text: u'abcdé'.encode('utf-8')}
+-        self._assert_render(u'abcdé', template, context)
++        context = {'lambda': lambda text: 'abcdé'.encode('utf-8')}
++        self._assert_render('abcdé', template, context)
+ 
+     def test_section__lambda__returning_nonstring(self):
+         """
+@@ -565,7 +567,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         template = '{{#lambda}}foo{{/lambda}}'
+         context = {'lambda': lambda text: len(text)}
+-        self._assert_render(u'3', template, context)
++        self._assert_render('3', template, context)
+ 
+     def test_section__iterable(self):
+         """
+@@ -575,10 +577,10 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = '{{#iterable}}{{.}}{{/iterable}}'
+ 
+         context = {'iterable': (i for i in range(3))}  # type 'generator'
+-        self._assert_render(u'012', template, context)
++        self._assert_render('012', template, context)
+ 
+-        context = {'iterable': xrange(4)}  # type 'xrange'
+-        self._assert_render(u'0123', template, context)
++        context = {'iterable': range(4)}  # type 'xrange'
++        self._assert_render('0123', template, context)
+ 
+         d = {'foo': 0, 'bar': 0}
+         # We don't know what order of keys we'll be given, but from the
+@@ -586,8 +588,8 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         #  "If items(), keys(), values(), iteritems(), iterkeys(), and
+         #   itervalues() are called with no intervening modifications to
+         #   the dictionary, the lists will directly correspond."
+-        expected = u''.join(d.keys())
+-        context = {'iterable': d.iterkeys()}  # type 'dictionary-keyiterator'
++        expected = ''.join(list(d.keys()))
++        context = {'iterable': iter(d.keys())}  # type 'dictionary-keyiterator'
+         self._assert_render(expected, template, context)
+ 
+     def test_section__lambda__tag_in_output(self):
+@@ -605,7 +607,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         template = '{{#test}}Hi {{person}}{{/test}}'
+         context = {'person': 'Mom', 'test': (lambda text: text + " :)")}
+-        self._assert_render(u'Hi Mom :)', template, context)
++        self._assert_render('Hi Mom :)', template, context)
+ 
+     def test_section__lambda__list(self):
+         """
+@@ -621,7 +623,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+                    'lambdas': [lambda text: "~{{%s}}~" % text,
+                                lambda text: "#{{%s}}#" % text]}
+ 
+-        self._assert_render(u'<~bar~#bar#>', template, context)
++        self._assert_render('<~bar~#bar#>', template, context)
+ 
+     def test_section__lambda__mixed_list(self):
+         """
+@@ -636,7 +638,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         context = {'foo': 'bar',
+                    'lambdas': [lambda text: "~{{%s}}~" % text, 1]}
+ 
+-        self._assert_render(u'<~bar~foo>', template, context)
++        self._assert_render('<~bar~foo>', template, context)
+ 
+     def test_section__lambda__not_on_context_stack(self):
+         """
+@@ -653,7 +655,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         context = {'foo': 'bar', 'lambda': (lambda text: "{{.}}")}
+         template = '{{#foo}}{{#lambda}}blah{{/lambda}}{{/foo}}'
+-        self._assert_render(u'bar', template, context)
++        self._assert_render('bar', template, context)
+ 
+     def test_section__lambda__no_reinterpolation(self):
+         """
+@@ -670,15 +672,15 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         template = '{{#planet}}{{#lambda}}dot{{/lambda}}{{/planet}}'
+         context = {'planet': 'Earth', 'dot': '~{{.}}~', 'lambda': (lambda text: "#{{%s}}#" % text)}
+-        self._assert_render(u'#~{{.}}~#', template, context)
++        self._assert_render('#~{{.}}~#', template, context)
+ 
+     def test_comment__multiline(self):
+         """
+         Check that multiline comments are permitted.
+ 
+         """
+-        self._assert_render(u'foobar', 'foo{{! baz }}bar')
+-        self._assert_render(u'foobar', 'foo{{! \nbaz }}bar')
++        self._assert_render('foobar', 'foo{{! baz }}bar')
++        self._assert_render('foobar', 'foo{{! \nbaz }}bar')
+ 
+     def test_custom_delimiters__sections(self):
+         """
+@@ -689,7 +691,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         template = '{{=[[ ]]=}}[[#foo]]bar[[/foo]]'
+         context = {'foo': True}
+-        self._assert_render(u'bar', template, context)
++        self._assert_render('bar', template, context)
+ 
+     def test_custom_delimiters__not_retroactive(self):
+         """
+@@ -698,7 +700,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         Test case for issue #35: https://github.com/defunkt/pystache/issues/35
+ 
+         """
+-        expected = u' {{foo}} '
++        expected = ' {{foo}} '
+         self._assert_render(expected, '{{=$ $=}} {{foo}} ')
+         self._assert_render(expected, '{{=$ $=}} {{foo}} $={{ }}=$')  # was yielding u'  '.
+ 
+@@ -713,7 +715,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         template = 'Hello, {{person.name}}. I see you are {{person.details.age}}.'
+         person = Attachable(name='Biggles', details={'age': 42})
+         context = {'person': person}
+-        self._assert_render(u'Hello, Biggles. I see you are 42.', template, context)
++        self._assert_render('Hello, Biggles. I see you are 42.', template, context)
+ 
+     def test_dot_notation__multiple_levels(self):
+         """
+@@ -722,7 +724,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         """
+         template = """Hello, Mr. {{person.name.lastname}}.
+         I see you're back from {{person.travels.last.country.city}}."""
+-        expected = u"""Hello, Mr. Pither.
++        expected = """Hello, Mr. Pither.
+         I see you're back from Cornwall."""
+         context = {'person': {'name': {'firstname': 'unknown', 'lastname': 'Pither'},
+                             'travels': {'last': {'country': {'city': 'Cornwall'}}},
+@@ -758,10 +760,10 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
+         context = {'a': {'b': 'A.B'}, 'c': {'a': 'A'} }
+ 
+         template = '{{a.b}}'
+-        self._assert_render(u'A.B', template, context)
++        self._assert_render('A.B', template, context)
+ 
+         template = '{{#c}}{{a}}{{/c}}'
+-        self._assert_render(u'A', template, context)
++        self._assert_render('A', template, context)
+ 
+         template = '{{#c}}{{a.b}}{{/c}}'
+         self.assertException(KeyNotFoundError, "Key %(unicode)s'a.b' not found: missing %(unicode)s'b'" %
+diff --git a/pystache/tests/test_renderer.py b/pystache/tests/test_renderer.py
+index 0dbe0d9..e0d2448 100644
+--- a/pystache/tests/test_renderer.py
++++ b/pystache/tests/test_renderer.py
+@@ -10,7 +10,7 @@ import os
+ import sys
+ import unittest
+ 
+-from examples.simple import Simple
++from .examples.simple import Simple
+ from pystache import Renderer
+ from pystache import TemplateSpec
+ from pystache.common import TemplateNotFoundError
+@@ -33,7 +33,7 @@ def _make_renderer():
+ def mock_unicode(b, encoding=None):
+     if encoding is None:
+         encoding = 'ascii'
+-    u = unicode(b, encoding=encoding)
++    u = str(b, encoding=encoding)
+     return u.upper()
+ 
+ 
+@@ -197,13 +197,13 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+ 
+         """
+         renderer = self._renderer()
+-        b = u"é".encode('utf-8')
++        b = "é".encode('utf-8')
+ 
+         renderer.string_encoding = "ascii"
+-        self.assertRaises(UnicodeDecodeError, renderer.unicode, b)
++        self.assertRaises(UnicodeDecodeError, renderer.str, b)
+ 
+         renderer.string_encoding = "utf-8"
+-        self.assertEqual(renderer.unicode(b), u"é")
++        self.assertEqual(renderer.str(b), "é")
+ 
+     def test_unicode__decode_errors(self):
+         """
+@@ -212,14 +212,14 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+         """
+         renderer = self._renderer()
+         renderer.string_encoding = "ascii"
+-        b = u"déf".encode('utf-8')
++        b = "déf".encode('utf-8')
+ 
+         renderer.decode_errors = "ignore"
+-        self.assertEqual(renderer.unicode(b), "df")
++        self.assertEqual(renderer.str(b), "df")
+ 
+         renderer.decode_errors = "replace"
+         # U+FFFD is the official Unicode replacement character.
+-        self.assertEqual(renderer.unicode(b), u'd\ufffd\ufffdf')
++        self.assertEqual(renderer.str(b), u'd\ufffd\ufffdf')
+ 
+     ## Test the _make_loader() method.
+ 
+@@ -243,7 +243,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+         renderer = self._renderer()
+         renderer.file_encoding = 'enc'
+         renderer.file_extension = 'ext'
+-        renderer.unicode = unicode_
++        renderer.str = unicode_
+ 
+         loader = renderer._make_loader()
+ 
+@@ -260,12 +260,12 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+         """
+         renderer = self._renderer()
+         rendered = renderer.render('foo')
+-        self.assertEqual(type(rendered), unicode)
++        self.assertEqual(type(rendered), str)
+ 
+     def test_render__unicode(self):
+         renderer = self._renderer()
+-        actual = renderer.render(u'foo')
+-        self.assertEqual(actual, u'foo')
++        actual = renderer.render('foo')
++        self.assertEqual(actual, 'foo')
+ 
+     def test_render__str(self):
+         renderer = self._renderer()
+@@ -274,8 +274,8 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+ 
+     def test_render__non_ascii_character(self):
+         renderer = self._renderer()
+-        actual = renderer.render(u'Poincaré')
+-        self.assertEqual(actual, u'Poincaré')
++        actual = renderer.render('Poincaré')
++        self.assertEqual(actual, 'Poincaré')
+ 
+     def test_render__context(self):
+         """
+@@ -326,7 +326,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+ 
+         """
+         renderer = _make_renderer()
+-        template = u"déf".encode("utf-8")
++        template = "déf".encode("utf-8")
+ 
+         # Check that decode_errors and string_encoding are both respected.
+         renderer.decode_errors = 'ignore'
+@@ -334,7 +334,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+         self.assertEqual(renderer.render(template), "df")
+ 
+         renderer.string_encoding = 'utf_8'
+-        self.assertEqual(renderer.render(template), u"déf")
++        self.assertEqual(renderer.render(template), "déf")
+ 
+     def test_make_resolve_partial(self):
+         """
+@@ -347,7 +347,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+ 
+         actual = resolve_partial('foo')
+         self.assertEqual(actual, 'bar')
+-        self.assertEqual(type(actual), unicode, "RenderEngine requires that "
++        self.assertEqual(type(actual), str, "RenderEngine requires that "
+             "resolve_partial return unicode strings.")
+ 
+     def test_make_resolve_partial__unicode(self):
+@@ -362,7 +362,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+         self.assertEqual(resolve_partial("partial"), "foo")
+ 
+         # Now with a value that is already unicode.
+-        renderer.partials = {'partial': u'foo'}
++        renderer.partials = {'partial': 'foo'}
+         resolve_partial = renderer._make_resolve_partial()
+         # If the next line failed, we would get the following error:
+         #   TypeError: decoding Unicode is not supported
+@@ -373,7 +373,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+         data_dir = get_data_path()
+         renderer = Renderer(search_dirs=data_dir)
+         actual = renderer.render_name("say_hello", to='foo')
+-        self.assertString(actual, u"Hello, foo")
++        self.assertString(actual, "Hello, foo")
+ 
+     def test_render_path(self):
+         """
+@@ -412,7 +412,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
+ 
+         spec = Spec()
+         actual = renderer.render(spec)
+-        self.assertString(actual, u'hello, world')
++        self.assertString(actual, 'hello, world')
+ 
+     def test_render__view(self):
+         """
+@@ -484,7 +484,7 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+         Check that resolve_partial returns unicode (and not a subclass).
+ 
+         """
+-        class MyUnicode(unicode):
++        class MyUnicode(str):
+             pass
+ 
+         renderer = Renderer()
+@@ -495,12 +495,12 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+ 
+         actual = engine.resolve_partial('str')
+         self.assertEqual(actual, "foo")
+-        self.assertEqual(type(actual), unicode)
++        self.assertEqual(type(actual), str)
+ 
+         # Check that unicode subclasses are not preserved.
+         actual = engine.resolve_partial('subclass')
+         self.assertEqual(actual, "abc")
+-        self.assertEqual(type(actual), unicode)
++        self.assertEqual(type(actual), str)
+ 
+     def test__resolve_partial__not_found(self):
+         """
+@@ -512,7 +512,7 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+         engine = renderer._make_render_engine()
+         resolve_partial = engine.resolve_partial
+ 
+-        self.assertString(resolve_partial('foo'), u'')
++        self.assertString(resolve_partial('foo'), '')
+ 
+     def test__resolve_partial__not_found__missing_tags_strict(self):
+         """
+@@ -539,7 +539,7 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+         engine = renderer._make_render_engine()
+         resolve_partial = engine.resolve_partial
+ 
+-        self.assertString(resolve_partial('foo'), u'')
++        self.assertString(resolve_partial('foo'), '')
+ 
+     def test__resolve_partial__not_found__partials_dict__missing_tags_strict(self):
+         """
+@@ -566,12 +566,12 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+ 
+         """
+         renderer = self._make_renderer()
+-        renderer.unicode = mock_unicode
++        renderer.str = mock_unicode
+ 
+         engine = renderer._make_render_engine()
+         literal = engine.literal
+ 
+-        b = u"foo".encode("ascii")
++        b = "foo".encode("ascii")
+         self.assertEqual(literal(b), "FOO")
+ 
+     def test__literal__handles_unicode(self):
+@@ -585,7 +585,7 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+         engine = renderer._make_render_engine()
+         literal = engine.literal
+ 
+-        self.assertEqual(literal(u"foo"), "foo")
++        self.assertEqual(literal("foo"), "foo")
+ 
+     def test__literal__returns_unicode(self):
+         """
+@@ -598,16 +598,16 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+         engine = renderer._make_render_engine()
+         literal = engine.literal
+ 
+-        self.assertEqual(type(literal("foo")), unicode)
++        self.assertEqual(type(literal("foo")), str)
+ 
+-        class MyUnicode(unicode):
++        class MyUnicode(str):
+             pass
+ 
+         s = MyUnicode("abc")
+ 
+         self.assertEqual(type(s), MyUnicode)
+-        self.assertTrue(isinstance(s, unicode))
+-        self.assertEqual(type(literal(s)), unicode)
++        self.assertTrue(isinstance(s, str))
++        self.assertEqual(type(literal(s)), str)
+ 
+     ## Test the engine's escape attribute.
+ 
+@@ -630,12 +630,12 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+ 
+         """
+         renderer = Renderer()
+-        renderer.unicode = mock_unicode
++        renderer.str = mock_unicode
+ 
+         engine = renderer._make_render_engine()
+         escape = engine.escape
+ 
+-        b = u"foo".encode('ascii')
++        b = "foo".encode('ascii')
+         self.assertEqual(escape(b), "FOO")
+ 
+     def test__escape__has_access_to_original_unicode_subclass(self):
+@@ -644,16 +644,16 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+ 
+         """
+         renderer = Renderer()
+-        renderer.escape = lambda s: unicode(type(s).__name__)
++        renderer.escape = lambda s: str(type(s).__name__)
+ 
+         engine = renderer._make_render_engine()
+         escape = engine.escape
+ 
+-        class MyUnicode(unicode):
++        class MyUnicode(str):
+             pass
+ 
+-        self.assertEqual(escape(u"foo".encode('ascii')), unicode.__name__)
+-        self.assertEqual(escape(u"foo"), unicode.__name__)
++        self.assertEqual(escape("foo".encode('ascii')), str.__name__)
++        self.assertEqual(escape("foo"), str.__name__)
+         self.assertEqual(escape(MyUnicode("foo")), MyUnicode.__name__)
+ 
+     def test__escape__returns_unicode(self):
+@@ -667,17 +667,17 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+         engine = renderer._make_render_engine()
+         escape = engine.escape
+ 
+-        self.assertEqual(type(escape("foo")), unicode)
++        self.assertEqual(type(escape("foo")), str)
+ 
+         # Check that literal doesn't preserve unicode subclasses.
+-        class MyUnicode(unicode):
++        class MyUnicode(str):
+             pass
+ 
+         s = MyUnicode("abc")
+ 
+         self.assertEqual(type(s), MyUnicode)
+-        self.assertTrue(isinstance(s, unicode))
+-        self.assertEqual(type(escape(s)), unicode)
++        self.assertTrue(isinstance(s, str))
++        self.assertEqual(type(escape(s)), str)
+ 
+     ## Test the missing_tags attribute.
+ 
+@@ -706,7 +706,7 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
+         stack = ContextStack({'foo': 'bar'})
+ 
+         self.assertEqual('bar', engine.resolve_context(stack, 'foo'))
+-        self.assertString(u'', engine.resolve_context(stack, 'missing'))
++        self.assertString('', engine.resolve_context(stack, 'missing'))
+ 
+     def test__resolve_context__missing_tags_strict(self):
+         """
+diff --git a/pystache/tests/test_simple.py b/pystache/tests/test_simple.py
+index 07b059f..b88bf35 100644
+--- a/pystache/tests/test_simple.py
++++ b/pystache/tests/test_simple.py
+@@ -2,11 +2,11 @@ import unittest
+ 
+ import pystache
+ from pystache import Renderer
+-from examples.nested_context import NestedContext
+-from examples.complex import Complex
+-from examples.lambdas import Lambdas
+-from examples.template_partial import TemplatePartial
+-from examples.simple import Simple
++from .examples.nested_context import NestedContext
++from .examples.complex import Complex
++from .examples.lambdas import Lambdas
++from .examples.template_partial import TemplatePartial
++from .examples.simple import Simple
+ 
+ from pystache.tests.common import EXAMPLES_DIR
+ from pystache.tests.common import AssertStringMixin
+@@ -20,7 +20,7 @@ class TestSimple(unittest.TestCase, AssertStringMixin):
+         view.template = '{{#foo}}{{thing1}} and {{thing2}} and {{outer_thing}}{{/foo}}{{^foo}}Not foo!{{/foo}}'
+ 
+         actual = renderer.render(view)
+-        self.assertString(actual, u"one and foo and two")
++        self.assertString(actual, "one and foo and two")
+ 
+     def test_looping_and_negation_context(self):
+         template = '{{#item}}{{header}}: {{name}} {{/item}}{{^item}} Shouldnt see me{{/item}}'
+@@ -40,7 +40,7 @@ class TestSimple(unittest.TestCase, AssertStringMixin):
+ 
+         renderer = Renderer()
+         actual = renderer.render(view)
+-        self.assertString(actual, u'bar != bar. oh, it does!')
++        self.assertString(actual, 'bar != bar. oh, it does!')
+ 
+     def test_rendering_partial(self):
+         renderer = Renderer(search_dirs=EXAMPLES_DIR)
+@@ -49,11 +49,11 @@ class TestSimple(unittest.TestCase, AssertStringMixin):
+         view.template = '{{>inner_partial}}'
+ 
+         actual = renderer.render(view)
+-        self.assertString(actual, u'Again, Welcome!')
++        self.assertString(actual, 'Again, Welcome!')
+ 
+         view.template = '{{#looping}}{{>inner_partial}} {{/looping}}'
+         actual = renderer.render(view)
+-        self.assertString(actual, u"Again, Welcome! Again, Welcome! Again, Welcome! ")
++        self.assertString(actual, "Again, Welcome! Again, Welcome! Again, Welcome! ")
+ 
+     def test_non_existent_value_renders_blank(self):
+         view = Simple()
+@@ -77,7 +77,7 @@ class TestSimple(unittest.TestCase, AssertStringMixin):
+         view = TemplatePartial(renderer=renderer)
+ 
+         actual = renderer.render(view)
+-        self.assertString(actual, u"""Welcome
++        self.assertString(actual, """Welcome
+ -------
+ 
+ ## Again, Welcome! ##""")
+diff --git a/pystache/tests/test_specloader.py b/pystache/tests/test_specloader.py
+index cacc0fc..dcdc55f 100644
+--- a/pystache/tests/test_specloader.py
++++ b/pystache/tests/test_specloader.py
+@@ -9,11 +9,11 @@ import os.path
+ import sys
+ import unittest
+ 
+-import examples
+-from examples.simple import Simple
+-from examples.complex import Complex
+-from examples.lambdas import Lambdas
+-from examples.inverted import Inverted, InvertedLists
++from . import examples
++from .examples.simple import Simple
++from .examples.complex import Complex
++from .examples.lambdas import Lambdas
++from .examples.inverted import Inverted, InvertedLists
+ from pystache import Renderer
+ from pystache import TemplateSpec
+ from pystache.common import TemplateNotFoundError
+@@ -70,7 +70,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
+         renderer2 = Renderer(search_dirs=EXAMPLES_DIR)
+ 
+         actual = renderer1.render(spec)
+-        self.assertString(actual, u"Partial: ")
++        self.assertString(actual, "Partial: ")
+ 
+         actual = renderer2.render(spec)
+         self.assertEqual(actual, "Partial: No tags...")
+@@ -79,7 +79,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
+         renderer = Renderer()
+         actual = renderer.render(Simple())
+ 
+-        self.assertString(actual, u"Hi pizza!")
++        self.assertString(actual, "Hi pizza!")
+ 
+     def test_non_callable_attributes(self):
+         view = Simple()
+@@ -92,7 +92,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
+     def test_complex(self):
+         renderer = Renderer()
+         actual = renderer.render(Complex())
+-        self.assertString(actual, u"""\
++        self.assertString(actual, """\
+ <h1>Colors</h1>
+ <ul>
+ <li><strong>red</strong></li>
+@@ -111,7 +111,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
+ 
+         renderer = Renderer()
+         actual = renderer.render(view)
+-        self.assertString(actual, u'nopqrstuvwxyz')
++        self.assertString(actual, 'nopqrstuvwxyz')
+ 
+     def test_higher_order_lambda(self):
+         view = Lambdas()
+@@ -119,7 +119,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
+ 
+         renderer = Renderer()
+         actual = renderer.render(view)
+-        self.assertString(actual, u'abcdefghijklmnopqrstuvwxyz')
++        self.assertString(actual, 'abcdefghijklmnopqrstuvwxyz')
+ 
+     def test_partials_with_lambda(self):
+         view = Lambdas()
+@@ -127,7 +127,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
+ 
+         renderer = Renderer(search_dirs=EXAMPLES_DIR)
+         actual = renderer.render(view)
+-        self.assertEqual(actual, u'nopqrstuvwxyz')
++        self.assertEqual(actual, 'nopqrstuvwxyz')
+ 
+     def test_hierarchical_partials_with_lambdas(self):
+         view = Lambdas()
+@@ -135,12 +135,12 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
+ 
+         renderer = Renderer(search_dirs=EXAMPLES_DIR)
+         actual = renderer.render(view)
+-        self.assertString(actual, u'nopqrstuvwxyznopqrstuvwxyz')
++        self.assertString(actual, 'nopqrstuvwxyznopqrstuvwxyz')
+ 
+     def test_inverted(self):
+         renderer = Renderer()
+         actual = renderer.render(Inverted())
+-        self.assertString(actual, u"""one, two, three, empty list""")
++        self.assertString(actual, """one, two, three, empty list""")
+ 
+     def test_accessing_properties_on_parent_object_from_child_objects(self):
+         parent = Thing()
+@@ -152,12 +152,12 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
+         renderer = Renderer()
+         actual = renderer.render(view, {'parent': parent})
+ 
+-        self.assertString(actual, u'derp')
++        self.assertString(actual, 'derp')
+ 
+     def test_inverted_lists(self):
+         renderer = Renderer()
+         actual = renderer.render(InvertedLists())
+-        self.assertString(actual, u"""one, two, three, empty list""")
++        self.assertString(actual, """one, two, three, empty list""")
+ 
+ 
+ def _make_specloader():
+@@ -176,7 +176,7 @@ def _make_specloader():
+         """
+         if encoding is None:
+             encoding = 'ascii'
+-        return unicode(s, encoding, 'strict')
++        return str(s, encoding, 'strict')
+ 
+     loader = Loader(file_encoding='ascii', to_unicode=to_unicode)
+     return SpecLoader(loader=loader)
+@@ -222,7 +222,7 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
+         custom.template = "abc"
+ 
+         spec_loader = self._make_specloader()
+-        self._assert_template(spec_loader, custom, u"abc")
++        self._assert_template(spec_loader, custom, "abc")
+ 
+     def test_load__template__type_unicode(self):
+         """
+@@ -230,10 +230,10 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
+ 
+         """
+         custom = TemplateSpec()
+-        custom.template = u"abc"
++        custom.template = "abc"
+ 
+         spec_loader = self._make_specloader()
+-        self._assert_template(spec_loader, custom, u"abc")
++        self._assert_template(spec_loader, custom, "abc")
+ 
+     def test_load__template__unicode_non_ascii(self):
+         """
+@@ -241,10 +241,10 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
+ 
+         """
+         custom = TemplateSpec()
+-        custom.template = u"é"
++        custom.template = "é"
+ 
+         spec_loader = self._make_specloader()
+-        self._assert_template(spec_loader, custom, u"é")
++        self._assert_template(spec_loader, custom, "é")
+ 
+     def test_load__template__with_template_encoding(self):
+         """
+@@ -252,14 +252,14 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
+ 
+         """
+         custom = TemplateSpec()
+-        custom.template = u'é'.encode('utf-8')
++        custom.template = 'é'.encode('utf-8')
+ 
+         spec_loader = self._make_specloader()
+ 
+-        self.assertRaises(UnicodeDecodeError, self._assert_template, spec_loader, custom, u'é')
++        self.assertRaises(UnicodeDecodeError, self._assert_template, spec_loader, custom, 'é')
+ 
+         custom.template_encoding = 'utf-8'
+-        self._assert_template(spec_loader, custom, u'é')
++        self._assert_template(spec_loader, custom, 'é')
+ 
+     # TODO: make this test complete.
+     def test_load__template__correct_loader(self):
+@@ -279,10 +279,10 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
+                 self.encoding = None
+ 
+             # Overrides the existing method.
+-            def unicode(self, s, encoding=None):
++            def str(self, s, encoding=None):
+                 self.s = s
+                 self.encoding = encoding
+-                return u"foo"
++                return "foo"
+ 
+         loader = MockLoader()
+         custom_loader = SpecLoader()
+@@ -293,7 +293,7 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
+         view.template_encoding = "encoding-foo"
+ 
+         # Check that our unicode() above was called.
+-        self._assert_template(custom_loader, view, u'foo')
++        self._assert_template(custom_loader, view, 'foo')
+         self.assertEqual(loader.s, "template-foo")
+         self.assertEqual(loader.encoding, "encoding-foo")
+ 
+@@ -410,7 +410,7 @@ class TemplateSpecTests(unittest.TestCase, AssertPathsMixin):
+         loader = self._make_loader()
+         actual = loader.load(custom)
+ 
+-        self.assertEqual(type(actual), unicode)
++        self.assertEqual(type(actual), str)
+         self.assertEqual(actual, expected)
+ 
+     def test_get_template(self):
+@@ -420,7 +420,7 @@ class TemplateSpecTests(unittest.TestCase, AssertPathsMixin):
+         """
+         view = SampleView()
+ 
+-        self._assert_get_template(view, u"ascii: abc")
++        self._assert_get_template(view, "ascii: abc")
+ 
+     def test_get_template__template_encoding(self):
+         """
+@@ -432,4 +432,4 @@ class TemplateSpecTests(unittest.TestCase, AssertPathsMixin):
+         self.assertRaises(UnicodeDecodeError, self._assert_get_template, view, 'foo')
+ 
+         view.template_encoding = 'utf-8'
+-        self._assert_get_template(view, u"non-ascii: é")
++        self._assert_get_template(view, "non-ascii: é")
+diff --git a/setup.cfg b/setup.cfg
+index 861a9f5..f6f1279 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -1,5 +1,71 @@
+-[egg_info]
+-tag_build = 
+-tag_date = 0
+-tag_svn_revision = 0
++[metadata]
++name = pystache
++version = attr: pystache.__version__
++author = Chris Wanstrath
++author_email = chris@ozmm.org
++maintainer = Steve Arnold
++maintainer_email = nerdboy@gentoo.org
++description = Mustache for Python
++url = https://github.com/sarnold/pystache
++license = MIT
++license_files = LICENSE
++classifiers =
++    Development Status :: 4 - Beta
++    Intended Audience :: Developers
++    License :: OSI Approved :: MIT License
++    Programming Language :: Python :: 3
++    Programming Language :: Python :: 3.6
++    Programming Language :: Python :: 3.7
++    Programming Language :: Python :: 3.8
++    Programming Language :: Python :: 3.9
+ 
++[options]
++python_requires = >=3.6
++zip_safe = True
++include_package_data = True
++packages = find:
++
++[options.package_data]
++* = *.mustache, *.txt
++
++[options.entry_points]
++console_scripts =
++    pystache=pystache.commands.render:main
++    pystache-test=pystache.commands.test:main
++
++[options.extras_require]
++test =
++    nose
++
++cov =
++    coverage
++
++[bdist_wheel]
++universal = 0
++
++[check-manifest]
++ignore =
++    .codeclimate.yml
++    .gitattributes
++    .coveragerc
++    .gitignore
++    .pep8speaks.yml
++    codecov.yml
++
++[flake8]
++exclude =
++    .git,
++    __pycache__,
++    build,
++    dist
++
++max-line-length = 110
++
++[nosetests]
++traverse-namespace = 1
++verbosity = 3
++with-coverage = 1
++with-doctest = 1
++doctest-extension = rst
++cover-package = pystache
++cover-xml = 1
+diff --git a/setup.py b/setup.py
+index 0d99aae..f0b7d7f 100644
+--- a/setup.py
++++ b/setup.py
+@@ -28,7 +28,7 @@ it on the PyPI project page.  If PyPI finds any issues, it will render it
+ instead as plain-text, which we do not want.
+ 
+ To check in advance that PyPI will accept and parse the reST file as HTML,
+-you can use the rst2html program installed by the docutils package
++you can use the rst2html.py program installed by the docutils package
+ (http://docutils.sourceforge.net/).  To install docutils:
+ 
+     $ pip install docutils
+@@ -89,30 +89,7 @@ import os
+ import shutil
+ import sys
+ 
+-
+-py_version = sys.version_info
+-
+-# distutils does not seem to support the following setup() arguments.
+-# It displays a UserWarning when setup() is passed those options:
+-#
+-#  * entry_points
+-#  * install_requires
+-#
+-# distribute works with Python 2.3.5 and above:
+-#
+-#   http://packages.python.org/distribute/setuptools.html#building-and-distributing-packages-with-distribute
+-#
+-if py_version < (2, 3, 5):
+-    # TODO: this might not work yet.
+-    import distutils as dist
+-    from distutils import core
+-    setup = core.setup
+-else:
+-    import setuptools as dist
+-    setup = dist.setup
+-
+-
+-VERSION = '0.5.4'  # Also change in pystache/__init__.py.
++from setuptools import setup
+ 
+ FILE_ENCODING = 'utf-8'
+ 
+@@ -126,22 +103,6 @@ TEMP_EXTENSION = '.temp'
+ 
+ PREP_COMMAND = 'prep'
+ 
+-CLASSIFIERS = (
+-    'Development Status :: 4 - Beta',
+-    'License :: OSI Approved :: MIT License',
+-    'Programming Language :: Python',
+-    'Programming Language :: Python :: 2',
+-    'Programming Language :: Python :: 2.4',
+-    'Programming Language :: Python :: 2.5',
+-    'Programming Language :: Python :: 2.6',
+-    'Programming Language :: Python :: 2.7',
+-    'Programming Language :: Python :: 3',
+-    'Programming Language :: Python :: 3.1',
+-    'Programming Language :: Python :: 3.2',
+-    'Programming Language :: Python :: 3.3',
+-    'Programming Language :: Python :: Implementation :: PyPy',
+-)
+-
+ # Comments in reST begin with two dots.
+ RST_LONG_DESCRIPTION_INTRO = """\
+ .. Do not edit this file.  This file is auto-generated for PyPI by setup.py
+@@ -221,7 +182,7 @@ def convert_md_to_rst(md_path, rst_temp_path):
+ 
+     """
+     # Pandoc uses the UTF-8 character encoding for both input and output.
+-    command = "pandoc --write=rst --output=%s %s" % (rst_temp_path, md_path)
++    command = "pandoc -f markdown-smart --write=rst --output=%s %s" % (rst_temp_path, md_path)
+     print("converting with pandoc: %s to %s\n-->%s" % (md_path, rst_temp_path,
+                                                        command))
+ 
+@@ -308,65 +269,9 @@ Run the following command and commit the changes--
+     os.system('python setup.py sdist upload')
+ 
+ 
+-# We use the package simplejson for older Python versions since Python
+-# does not contain the module json before 2.6:
+-#
+-#   http://docs.python.org/library/json.html
+-#
+-# Moreover, simplejson stopped officially support for Python 2.4 in version 2.1.0:
+-#
+-#   https://github.com/simplejson/simplejson/blob/master/CHANGES.txt
+-#
+-requires = []
+-if py_version < (2, 5):
+-    requires.append('simplejson<2.1')
+-elif py_version < (2, 6):
+-    requires.append('simplejson')
+-
+-INSTALL_REQUIRES = requires
+-
+-# TODO: decide whether to use find_packages() instead.  I'm not sure that
+-#   find_packages() is available with distutils, for example.
+-PACKAGES = [
+-    'pystache',
+-    'pystache.commands',
+-    # The following packages are only for testing.
+-    'pystache.tests',
+-    'pystache.tests.data',
+-    'pystache.tests.data.locator',
+-    'pystache.tests.examples',
+-]
+-
+-
+-# The purpose of this function is to follow the guidance suggested here:
+-#
+-#   http://packages.python.org/distribute/python3.html#note-on-compatibility-with-setuptools
+-#
+-# The guidance is for better compatibility when using setuptools (e.g. with
+-# earlier versions of Python 2) instead of Distribute, because of new
+-# keyword arguments to setup() that setuptools may not recognize.
+-def get_extra_args():
+-    """
+-    Return a dictionary of extra args to pass to setup().
+-
+-    """
+-    extra = {}
+-    # TODO: it might be more correct to check whether we are using
+-    #   Distribute instead of setuptools, since use_2to3 doesn't take
+-    #   effect when using Python 2, even when using Distribute.
+-    if py_version >= (3, ):
+-        # Causes 2to3 to be run during the build step.
+-        extra['use_2to3'] = True
+-
+-    return extra
+-
+-
+ def main(sys_argv):
+ 
+     # TODO: use the logging module instead of printing.
+-    # TODO: include the following in a verbose mode.
+-    sys.stderr.write("pystache: using: version %s of %s\n" % (repr(dist.__version__), repr(dist)))
+-
+     command = sys_argv[-1]
+ 
+     if command == 'publish':
+@@ -377,35 +282,10 @@ def main(sys_argv):
+         sys.exit()
+ 
+     long_description = read(RST_DESCRIPTION_PATH)
+-    template_files = ['*.mustache', '*.txt']
+-    extra_args = get_extra_args()
+-
+-    setup(name='pystache',
+-          version=VERSION,
+-          license='MIT',
+-          description='Mustache for Python',
+-          long_description=long_description,
+-          author='Chris Wanstrath',
+-          author_email='chris@ozmm.org',
+-          maintainer='Chris Jerdonek',
+-          maintainer_email='chris.jerdonek@gmail.com',
+-          url='http://github.com/defunkt/pystache',
+-          install_requires=INSTALL_REQUIRES,
+-          packages=PACKAGES,
+-          package_data = {
+-              # Include template files so tests can be run.
+-              'pystache.tests.data': template_files,
+-              'pystache.tests.data.locator': template_files,
+-              'pystache.tests.examples': template_files,
+-          },
+-          entry_points = {
+-            'console_scripts': [
+-                'pystache=pystache.commands.render:main',
+-                'pystache-test=pystache.commands.test:main',
+-            ],
+-          },
+-          classifiers = CLASSIFIERS,
+-          **extra_args
++
++    setup(
++        long_description=long_description,
++        long_description_content_type='text/x-rst',
+     )
+ 
+ 
+diff --git a/setup_description.rst b/setup_description.rst
+index 724c457..d7f1bc0 100644
+--- a/setup_description.rst
++++ b/setup_description.rst
+@@ -4,13 +4,17 @@
+ Pystache
+ ========
+ 
+-.. figure:: http://defunkt.github.com/pystache/images/logo_phillips.png
+-   :alt: mustachioed, monocled snake by David Phillips
++|ci| |Conda| |Wheels| |Release| |Python|
+ 
+-.. figure:: https://secure.travis-ci.org/defunkt/pystache.png
+-   :alt: Travis CI current build status
++|Latest release| |License| |Maintainability| |codecov|
+ 
+-`Pystache <http://defunkt.github.com/pystache>`__ is a Python
++This updated fork of Pystache is currently tested on Python 3.6+ and in
++Conda, on Linux, Macos, and Windows (Python 2.7 support has been
++removed).
++
++|image9|
++
++`Pystache <http://sarnold.github.com/pystache>`__ is a Python
+ implementation of `Mustache <http://mustache.github.com/>`__. Mustache
+ is a framework-agnostic, logic-free templating system inspired by
+ `ctemplate <http://code.google.com/p/google-ctemplate/>`__ and
+@@ -23,62 +27,45 @@ page provides a good introduction to Mustache's syntax. For a more
+ complete (and more current) description of Mustache's behavior, see the
+ official `Mustache spec <https://github.com/mustache/spec>`__.
+ 
+-Pystache is `semantically versioned <http://semver.org>`__ and can be
+-found on `PyPI <http://pypi.python.org/pypi/pystache>`__. This version
+-of Pystache passes all tests in `version
+-1.1.2 <https://github.com/mustache/spec/tree/v1.1.2>`__ of the spec.
++Pystache is `semantically versioned <http://semver.org>`__ and older
++versions can still be found on
++`PyPI <http://pypi.python.org/pypi/pystache>`__. This version of
++Pystache now passes all tests in `version
++1.1.3 <https://github.com/mustache/spec/tree/v1.1.3>`__ of the spec.
+ 
+ Requirements
+ ------------
+ 
+ Pystache is tested with--
+ 
+--  Python 2.4 (requires simplejson `version
+-   2.0.9 <http://pypi.python.org/pypi/simplejson/2.0.9>`__ or earlier)
+--  Python 2.5 (requires
+-   `simplejson <http://pypi.python.org/pypi/simplejson/>`__)
+--  Python 2.6
+--  Python 2.7
+--  Python 3.1
+--  Python 3.2
+--  Python 3.3
+--  `PyPy <http://pypy.org/>`__
++-  Python 3.6
++-  Python 3.7
++-  Python 3.8
++-  Python 3.9
++-  Conda (py36-py39)
+ 
+ `Distribute <http://packages.python.org/distribute/>`__ (the setuptools
+-fork) is recommended over
+-`setuptools <http://pypi.python.org/pypi/setuptools>`__, and is required
+-in some cases (e.g. for Python 3 support). If you use
+-`pip <http://www.pip-installer.org/>`__, you probably already satisfy
+-this requirement.
++fork) is no longer required over
++`setuptools <http://pypi.python.org/pypi/setuptools>`__, as the current
++packaging is now PEP517-compliant.
+ 
+ JSON support is needed only for the command-line interface and to run
+-the spec tests. We require simplejson for earlier versions of Python
+-since Python's `json <http://docs.python.org/library/json.html>`__
+-module was added in Python 2.6.
+-
+-For Python 2.4 we require an earlier version of simplejson since
+-simplejson stopped officially supporting Python 2.4 in simplejson
+-version 2.1.0. Earlier versions of simplejson can be installed manually,
+-as follows:
+-
+-::
+-
+-    pip install 'simplejson<2.1.0'
++the spec tests; PyYAML can still be used (see the Develop section).
+ 
+-Official support for Python 2.4 will end with Pystache version 0.6.0.
++Official support for Python 2 will end with Pystache version 0.6.0.
+ 
+ Install It
+ ----------
+ 
+ ::
+ 
+-    pip install pystache
++   pip install -U pystache -f https://github.com/sarnold/pystache/releases/
+ 
+ And test it--
+ 
+ ::
+ 
+-    pystache-test
++   pystache-test
+ 
+ To install and test from source (e.g. from GitHub), see the Develop
+ section.
+@@ -88,68 +75,68 @@ Use It
+ 
+ ::
+ 
+-    >>> import pystache
+-    >>> print pystache.render('Hi {{person}}!', {'person': 'Mom'})
+-    Hi Mom!
++   >>> import pystache
++   >>> print(pystache.render('Hi {{person}}!', {'person': 'Mom'}))
++   Hi Mom!
+ 
+ You can also create dedicated view classes to hold your view logic.
+ 
+-Here's your view class (in .../examples/readme.py):
++Here's your view class (in ../pystache/tests/examples/readme.py):
+ 
+ ::
+ 
+-    class SayHello(object):
+-        def to(self):
+-            return "Pizza"
++   class SayHello(object):
++       def to(self):
++           return "Pizza"
+ 
+ Instantiating like so:
+ 
+ ::
+ 
+-    >>> from pystache.tests.examples.readme import SayHello
+-    >>> hello = SayHello()
++   >>> from pystache.tests.examples.readme import SayHello
++   >>> hello = SayHello()
+ 
+-Then your template, say\_hello.mustache (by default in the same
+-directory as your class definition):
++Then your template, say_hello.mustache (by default in the same directory
++as your class definition):
+ 
+ ::
+ 
+-    Hello, {{to}}!
++   Hello, {{to}}!
+ 
+ Pull it together:
+ 
+ ::
+ 
+-    >>> renderer = pystache.Renderer()
+-    >>> print renderer.render(hello)
+-    Hello, Pizza!
++   >>> renderer = pystache.Renderer()
++   >>> print(renderer.render(hello))
++   Hello, Pizza!
+ 
+ For greater control over rendering (e.g. to specify a custom template
+ directory), use the ``Renderer`` class like above. One can pass
+ attributes to the Renderer class constructor or set them on a Renderer
+ instance. To customize template loading on a per-view basis, subclass
+ ``TemplateSpec``. See the docstrings of the
+-`Renderer <https://github.com/defunkt/pystache/blob/master/pystache/renderer.py>`__
++`Renderer <https://github.com/sarnold/pystache/blob/master/pystache/renderer.py>`__
+ class and
+-`TemplateSpec <https://github.com/defunkt/pystache/blob/master/pystache/template_spec.py>`__
++`TemplateSpec <https://github.com/sarnold/pystache/blob/master/pystache/template_spec.py>`__
+ class for more information.
+ 
+ You can also pre-parse a template:
+ 
+ ::
+ 
+-    >>> parsed = pystache.parse(u"Hey {{#who}}{{.}}!{{/who}}")
+-    >>> print parsed
+-    [u'Hey ', _SectionNode(key=u'who', index_begin=12, index_end=18, parsed=[_EscapeNode(key=u'.'), u'!'])]
++   >>> parsed = pystache.parse(u"Hey {{#who}}{{.}}!{{/who}}")
++   >>> print(parsed)
++   ['Hey ', _SectionNode(key='who', index_begin=12, index_end=18, parsed=[_EscapeNode(key='.'), '!'])]
+ 
+ And then:
+ 
+ ::
+ 
+-    >>> print renderer.render(parsed, {'who': 'Pops'})
+-    Hey Pops!
+-    >>> print renderer.render(parsed, {'who': 'you'})
+-    Hey you!
++   >>> print(renderer.render(parsed, {'who': 'Pops'}))
++   Hey Pops!
++   >>> print(renderer.render(parsed, {'who': 'you'}))
++   Hey you!
+ 
+ Python 3
+ --------
+@@ -211,22 +198,24 @@ To test from a source distribution (without installing)--
+ 
+ ::
+ 
+-    python test_pystache.py
++   python test_pystache.py
+ 
+ To test Pystache with multiple versions of Python (with a single
+-command!), you can use `tox <http://pypi.python.org/pypi/tox>`__:
++command!) and different platforms, you can use
++`tox <http://pypi.python.org/pypi/tox>`__:
+ 
+ ::
+ 
+-    pip install 'virtualenv<1.8'  # Version 1.8 dropped support for Python 2.4.
+-    pip install 'tox<1.4'  # Version 1.4 dropped support for Python 2.4.
+-    tox
++   pip install tox
++   tox -e setup
+ 
+-If you do not have all Python versions listed in ``tox.ini``--
++To run tests on multiple versions with coverage, run:
+ 
+ ::
+ 
+-    tox -e py26,py32  # for example
++   tox -e py38-linux,py39-linux  # for example
++
++(substitute your platform above, eg, macos or windows)
+ 
+ The source distribution tests also include doctests and tests from the
+ Mustache spec. To include tests from the Mustache spec in your test
+@@ -234,8 +223,8 @@ runs:
+ 
+ ::
+ 
+-    git submodule init
+-    git submodule update
++   git submodule init
++   git submodule update
+ 
+ The test harness parses the spec's (more human-readable) yaml files if
+ `PyYAML <http://pypi.python.org/pypi/PyYAML>`__ is present. Otherwise,
+@@ -243,94 +232,113 @@ it parses the json files. To install PyYAML--
+ 
+ ::
+ 
+-    pip install pyyaml
++   pip install pyyaml
++
++Once the submodule is available, you can run the full test set with:
++
++::
++
++   tox -e setup . ext/spec/specs
+ 
+ To run a subset of the tests, you can use
+ `nose <http://somethingaboutorange.com/mrl/projects/nose/0.11.1/testing.html>`__:
+ 
+ ::
+ 
+-    pip install nose
+-    nosetests --tests pystache/tests/test_context.py:GetValueTests.test_dictionary__key_present
++   pip install nose
++   nosetests --tests pystache/tests/test_context.py:GetValueTests.test_dictionary__key_present
+ 
+-Using Python 3 with Pystache from source
+-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++Mailing List (old)
++------------------
+ 
+-Pystache is written in Python 2 and must be converted to Python 3 prior
+-to using it with Python 3. The installation process (and tox) do this
+-automatically.
++There is(was) a `mailing
++list <http://librelist.com/browser/pystache/>`__. Note that there is a
++bit of a delay between posting a message and seeing it appear in the
++mailing list archive.
+ 
+-To convert the code to Python 3 manually (while using Python 3)--
++Credits
++-------
+ 
+ ::
+ 
+-    python setup.py build
++   >>> import pystache
++   >>> context = { 'author': 'Chris Wanstrath', 'maintainer': 'Chris Jerdonek','refurbisher': 'Steve Arnold' }
++   >>> print(pystache.render("Author: {{author}}\nMaintainer: {{maintainer}}\nRefurbisher: {{refurbisher}}", context))
++   Author: Chris Wanstrath
++   Maintainer: Chris Jerdonek
++   Refurbisher: Steve Arnold
+ 
+-This writes the converted code to a subdirectory called ``build``. By
+-design, Python 3 builds
+-`cannot <https://bitbucket.org/tarek/distribute/issue/292/allow-use_2to3-with-python-2>`__
+-be created from Python 2.
++Pystache logo by `David Phillips <http://davidphillips.us/>`__ is
++licensed under a `Creative Commons Attribution-ShareAlike 3.0 Unported
++License <http://creativecommons.org/licenses/by-sa/3.0/deed.en_US>`__.
++|image10|
+ 
+-To convert the code without using setup.py, you can use
+-`2to3 <http://docs.python.org/library/2to3.html>`__ as follows (two
+-steps)--
++History
++=======
+ 
+-::
++**Note:** Official support for Python 2.7 will end with Pystache version
++0.6.0.
+ 
+-    2to3 --write --nobackups --no-diffs --doctests_only pystache
+-    2to3 --write --nobackups --no-diffs pystache
++0.6.0 (2021-03-04)
++------------------
+ 
+-This converts the code (and doctests) in place.
++-  Bump spec versions to latest => v1.1.3
++-  Modernize python and CI tools, update docs/doctests
++-  Update unicode conversion test for py3-only
++-  Add pep8speaks cfg, cleanup warnings
++-  Remove superfluous setup test/unused imports
++-  Add conda recipe/CI build
+ 
+-To ``import pystache`` from a source distribution while using Python 3,
+-be sure that you are importing from a directory containing a converted
+-version of the code (e.g. from the ``build`` directory after
+-converting), and not from the original (unconverted) source directory.
+-Otherwise, you will get a syntax error. You can help prevent this by not
+-running the Python IDE from the project directory when importing
+-Pystache while using Python 3.
++.. _section-1:
+ 
+-Mailing List
+-------------
++0.5.6 (2021-02-28)
++------------------
+ 
+-There is a `mailing list <http://librelist.com/browser/pystache/>`__.
+-Note that there is a bit of a delay between posting a message and seeing
+-it appear in the mailing list archive.
++-  Use correct wheel name in release workflow, limit wheels
++-  Add install check/test of downloaded wheel
++-  Update/add ci workflows and tox cfg, bump to next dev0 version
+ 
+-Credits
+--------
++.. _section-2:
+ 
+-::
++0.5.5 (2020-12-16)
++------------------
+ 
+-    >>> context = { 'author': 'Chris Wanstrath', 'maintainer': 'Chris Jerdonek' }
+-    >>> print pystache.render("Author: {{author}}\nMaintainer: {{maintainer}}", context)
+-    Author: Chris Wanstrath
+-    Maintainer: Chris Jerdonek
++-  fix document processing, update pandoc args and history
++-  add release.yml to CI, test env settings
++-  fix bogus commit message, update versions and tox cf
++-  add post-test steps for building pkgs with/without doc updates
++-  add CI build check, fix MANIFEST.in pruning
+ 
+-Pystache logo by `David Phillips <http://davidphillips.us/>`__ is
+-licensed under a `Creative Commons Attribution-ShareAlike 3.0 Unported
+-License <http://creativecommons.org/licenses/by-sa/3.0/deed.en_US>`__.
+-|image0|
++.. _section-3:
+ 
+-History
+-=======
++0.5.4-2 (2020-11-09)
++--------------------
+ 
+-**Note:** Official support for Python 2.4 will end with Pystache version
+-0.6.0.
++-  Merge pull request #1 from sarnold/rebase-up
++-  Bugfix: test_specloader.py: fix test_find__with_directory on other
++   OSs
++-  Bugfix: pystache/loader.py: remove stray windows line-endings
++-  fix crufty (and insecure) http urls
++-  Bugfix: modernize python versions (keep py27) and fix spec_test load
++   cmd
++
++.. _section-4:
+ 
+ 0.5.4 (2014-07-11)
+ ------------------
+ 
+ -  Bugfix: made test with filenames OS agnostic (issue #162).
+ 
++.. _section-5:
++
+ 0.5.3 (2012-11-03)
+ ------------------
+ 
+ -  Added ability to customize string coercion (e.g. to have None render
+    as ``''``) (issue #130).
+--  Added Renderer.render\_name() to render a template by name (issue
++-  Added Renderer.render_name() to render a template by name (issue
+    #122).
+--  Added TemplateSpec.template\_path to specify an absolute path to a
++-  Added TemplateSpec.template_path to specify an absolute path to a
+    template (issue #41).
+ -  Added option of raising errors on missing tags/partials:
+    ``Renderer(missing_tags='strict')`` (issue #110).
+@@ -355,6 +363,8 @@ History
+ -  More robust handling of byte strings in Python 3.
+ -  Added Creative Commons license for David Phillips's logo.
+ 
++.. _section-6:
++
+ 0.5.2 (2012-05-03)
+ ------------------
+ 
+@@ -367,16 +377,20 @@ History
+    context stack (issue #113).
+ -  Bugfix: lists of lambdas for sections were not rendered (issue #114).
+ 
++.. _section-7:
++
+ 0.5.1 (2012-04-24)
+ ------------------
+ 
+ -  Added support for Python 3.1 and 3.2.
+ -  Added tox support to test multiple Python versions.
+ -  Added test script entry point: pystache-test.
+--  Added \_\_version\_\_ package attribute.
++-  Added \__version_\_ package attribute.
+ -  Test harness now supports both YAML and JSON forms of Mustache spec.
+ -  Test harness no longer requires nose.
+ 
++.. _section-8:
++
+ 0.5.0 (2012-04-03)
+ ------------------
+ 
+@@ -435,11 +449,15 @@ Bug fixes:
+ -  Passing ``**kwargs`` to ``Template()`` with no context no longer
+    raises an exception.
+ 
++.. _section-9:
++
+ 0.4.1 (2012-03-25)
+ ------------------
+ 
+ -  Added support for Python 2.4. [wangtz, jvantuyl]
+ 
++.. _section-10:
++
+ 0.4.0 (2011-01-12)
+ ------------------
+ 
+@@ -447,19 +465,25 @@ Bug fixes:
+ -  Add support for inverted lists
+ -  Decoupled template loading
+ 
++.. _section-11:
++
+ 0.3.1 (2010-05-07)
+ ------------------
+ 
+ -  Fix package
+ 
++.. _section-12:
++
+ 0.3.0 (2010-05-03)
+ ------------------
+ 
+--  View.template\_path can now hold a list of path
++-  View.template_path can now hold a list of path
+ -  Add {{& blah}} as an alias for {{{ blah }}}
+ -  Higher Order Sections
+ -  Inverted sections
+ 
++.. _section-13:
++
+ 0.2.0 (2010-02-15)
+ ------------------
+ 
+@@ -473,12 +497,16 @@ Bug fixes:
+    [enaeseth]
+ -  Template file encoding awareness. [enaeseth]
+ 
++.. _section-14:
++
+ 0.1.1 (2009-11-13)
+ ------------------
+ 
+ -  Ensure we're dealing with strings, always
+ -  Tests can be run by executing the test file directly
+ 
++.. _section-15:
++
+ 0.1.0 (2009-11-12)
+ ------------------
+ 
+@@ -510,4 +538,23 @@ 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.
+ 
+-.. |image0| image:: http://i.creativecommons.org/l/by-sa/3.0/88x31.png
++.. |ci| image:: https://github.com/sarnold/pystache/actions/workflows/ci.yml/badge.svg
++   :target: https://github.com/sarnold/pystache/actions/workflows/ci.yml
++.. |Conda| image:: https://github.com/sarnold/pystache/actions/workflows/conda.yml/badge.svg
++   :target: https://github.com/sarnold/pystache/actions/workflows/conda.yml
++.. |Wheels| image:: https://github.com/sarnold/pystache/actions/workflows/wheels.yml/badge.svg
++   :target: https://github.com/sarnold/pystache/actions/workflows/wheels.yml
++.. |Release| image:: https://github.com/sarnold/pystache/actions/workflows/release.yml/badge.svg
++   :target: https://github.com/sarnold/pystache/actions/workflows/release.yml
++.. |Python| image:: https://img.shields.io/badge/python-3.6+-blue.svg
++   :target: https://www.python.org/downloads/
++.. |Latest release| image:: https://img.shields.io/github/v/release/sarnold/pystache?include_prereleases
++   :target: https://github.com/sarnold/pystache/releases/latest
++.. |License| image:: https://img.shields.io/github/license/sarnold/pystache
++   :target: https://github.com/sarnold/pystache/blob/master/LICENSE
++.. |Maintainability| image:: https://api.codeclimate.com/v1/badges/a8fa1bf4638bfc6581b6/maintainability
++   :target: https://codeclimate.com/github/sarnold/pystache/maintainability
++.. |codecov| image:: https://codecov.io/gh/sarnold/pystache/branch/master/graph/badge.svg?token=5PZNMZBI6K
++   :target: https://codecov.io/gh/sarnold/pystache
++.. |image9| image:: gh/images/logo_phillips_small.png
++.. |image10| image:: http://i.creativecommons.org/l/by-sa/3.0/88x31.png
+diff --git a/tox.ini b/tox.ini
+index d1eaebf..66c4515 100644
+--- a/tox.ini
++++ b/tox.ini
+@@ -1,36 +1,110 @@
+-# A tox configuration file to test across multiple Python versions.
+-#
+-#   http://pypi.python.org/pypi/tox
+-#
+ [tox]
+-# Tox 1.4 drops py24 and adds py33.  In the current version, we want to
+-# support 2.4, so we can't simultaneously support 3.3.
+-envlist = py24,py25,py26,py27,py27-yaml,py27-noargs,py31,py32,pypy
++envlist = py{36,37,38,39}-{linux,macos,windows}
++skip_missing_interpreters = true
++isolated_build = true
++#skipsdist = true
++
++[gh-actions]
++python =
++    3.6: py36
++    3.7: py37
++    3.8: py38
++    3.9: py39
++
++[gh-actions:env]
++PLATFORM =
++    ubuntu-18.04: linux
++    macos-latest: macos
++    windows-latest: windows
+ 
+ [testenv]
++passenv = CI PYTHON PYTHONIOENCODING
++
++deps =
++    pip>=20.0.1
++    nose
++    coverage
++
++commands =
++    nosetests -sx . {posargs}
++
++[testenv:bare]
+ # Change the working directory so that we don't import the pystache located
+ # in the original location.
++deps =
++    pip>=20.0.1
++    -e .
++
+ changedir =
+     {envbindir}
++
+ commands =
+-    pystache-test {toxinidir}
++    pystache-test
++
++[testenv:bench]
++passenv = CI PYTHON PYTHONIOENCODING
+ 
+-# Check that the spec tests work with PyYAML.
+-[testenv:py27-yaml]
+-basepython =
+-    python2.7
+ deps =
+-    PyYAML
+-changedir =
+-    {envbindir}
++    pip>=20.0.1
++    # uncomment for comparison, posargs expects a number, eg, 10000
++    #chevron
++
++commands_pre =
++    pip install .
++
+ commands =
+-    pystache-test {toxinidir}
++    python pystache/tests/benchmark.py {posargs}
++
++[testenv:setup]
++passenv = CI PYTHON PYTHONIOENCODING
++
++deps =
++    pyyaml
++    twine
++
++commands =
++    python setup.py install
++    twine check dist/*
++    pystache-test {posargs}
++
++[testenv:deploy]
++passenv = CI PYTHON PYTHONIOENCODING
++allowlist_externals = bash
++
++deps =
++    pip>=19.0.1
++    wheel
++    pep517
++    twine
++
++commands =
++    python -m pep517.build .
++    twine check dist/*
++
++[testenv:check]
++passenv = CI PYTHON PYTHONIOENCODING
++skip_install = true
++
++allowlist_externals = bash
++
++deps =
++    pip>=20.0.1
+ 
+-# Check that pystache-test works from an install with no arguments.
+-[testenv:py27-noargs]
+-basepython =
+-    python2.7
+-changedir =
+-    {envbindir}
+ commands =
++    bash -c 'export WHL_FILE=$(ls dist/*.whl); \
++        python -m pip install $WHL_FILE'
+     pystache-test
++
++[testenv:docs]
++passenv = CI PYTHON PYTHONIOENCODING
++allowlist_externals = bash
++
++deps =
++    pip>=19.0.1
++    wheel
++    docutils
++    # apt/emerge pandoc first
++
++commands =
++    python setup.py prep
++    bash -c 'python setup.py --long-description | rst2html.py -v --no-raw > out.html'
+diff --git a/travis.yml_disabled b/travis.yml_disabled
+new file mode 100644
+index 0000000..f0b4042
+--- /dev/null
++++ b/travis.yml_disabled
+@@ -0,0 +1,52 @@
++dist: xenial
++language: python
++
++# Travis CI has no plans to support Jython and no longer supports Python 2.5.
++python:
++  - "2.7"
++  - "3.5"
++  - "3.6"
++  - "3.7"
++  - "3.8"
++  - "3.9-dev"
++  - "nightly"
++
++matrix:
++  fast_finish: true
++  include:
++    - os: osx
++      # osx is goofy, ``python`` is always py2, images mutate fast
++      language: shell
++      before_install:
++        - pip3 install --upgrade pip wheel
++      install:
++        - python3 setup.py install
++      script:
++        - pystache-test . ext/spec/specs
++    - os: windows
++      # windows is even goofier, install path is different for python/python3
++      # but either way you get python3 and the cmd is always ``python``  o.O 
++      # (also versions mutuate like bacteria)
++      language: shell
++      before_install:
++        - choco install python3 --params "/InstallDir:C:\\Python"
++        - python -m pip install --upgrade pip wheel
++      env: PATH="/c/Python:/c/Python/Scripts:$PATH"
++      install:
++        - python setup.py install
++      script:
++        - pystache-test . ext/spec/specs
++  allow_failures:
++    - python: "nightly"
++
++# command to install dependencies
++install:
++  - pip install --upgrade pip
++  - pip install codecov
++
++script:
++  - python setup.py install
++  # Include the spec tests directory for Mustache spec tests and the
++  # project directory for doctests.
++  - pystache-test . ext/spec/specs
++  #- tox
+-- 
+2.33.0
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache_0.5.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache_0.5.4.bb
index bbf4fbb..0ae5a19 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache_0.5.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache_0.5.4.bb
@@ -3,6 +3,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=eb4417802c56384aac71b34505528a60"
 
+SRC_URI += "file://0001-Modernize-python-versions-remove-py2x-and-fix-tests-.patch"
+
 SRC_URI[md5sum] = "485885e67a0f6411d5252e69b20a35ca"
 SRC_URI[sha256sum] = "f7bbc265fb957b4d6c7c042b336563179444ab313fb93a719759111eabd3b85a"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.15.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.15.1.bb
deleted file mode 100644
index 1c7df2c..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.15.1.bb
+++ /dev/null
@@ -1,14 +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=d2794c0df5b907fdace235a619d80314"
-
-SRC_URI[sha256sum] = "2564ceb9612bbd560d19ca4b41347b54e7835c2f792c504f698e05395ed63f6f"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-pytest \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.16.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.16.0.bb
new file mode 100644
index 0000000..1dfeab6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.16.0.bb
@@ -0,0 +1,14 @@
+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=d2794c0df5b907fdace235a619d80314"
+
+SRC_URI[sha256sum] = "7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-pytest \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_1.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_1.4.2.bb
deleted file mode 100644
index 3fb8bdf..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_1.4.2.bb
+++ /dev/null
@@ -1,13 +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[md5sum] = "552cc293447b00f7a294ce7a1fb3839f"
-SRC_URI[sha256sum] = "20b3113cf6e4e80ce2d403b6fb56e9e1b871b510259206d40ff8d609f48bda76"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} = "${PYTHON_PN}-pytest"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_2.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_2.0.1.bb
new file mode 100644
index 0000000..a790a65
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_2.0.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] = "a5ec4eceddb8ea726911848593d668594107e797621e97f93a1d1dbc6fbb9080"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} = "${PYTHON_PN}-pytest"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2021.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2021.1.bb
deleted file mode 100644
index dc51966..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2021.1.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "World timezone definitions, modern and historical"
-HOMEPAGE = "http://pythonhosted.org/pytz"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1a67fc46c1b596cce5d21209bbe75999"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI[md5sum] = "8c849bdf95414fe708a84473e42d4406"
-SRC_URI[sha256sum] = "83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da"
-
-RDEPENDS:${PN}:class-target += "\
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-doctest \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-pickle \
-    ${PYTHON_PN}-pprint \
-    ${PYTHON_PN}-threading \
-"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/pytz
-	install -d ${D}${PTEST_PATH}/pytz/tests
-	cp -rf ${S}/pytz/tests/* ${D}${PTEST_PATH}/pytz/tests/
-	cp -f ${S}/README.rst ${D}${PTEST_PATH}/
-
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2021.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2021.3.bb
new file mode 100644
index 0000000..119342a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2021.3.bb
@@ -0,0 +1,35 @@
+SUMMARY = "World timezone definitions, modern and historical"
+HOMEPAGE = "http://pythonhosted.org/pytz"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1a67fc46c1b596cce5d21209bbe75999"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI[sha256sum] = "acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"
+
+RDEPENDS:${PN}:class-target += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-doctest \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/pytz
+	install -d ${D}${PTEST_PATH}/pytz/tests
+	cp -rf ${S}/pytz/tests/* ${D}${PTEST_PATH}/pytz/tests/
+	cp -f ${S}/README.rst ${D}${PTEST_PATH}/
+
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.10.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.10.8.bb
new file mode 100644
index 0000000..e797897
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.10.8.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Alternative regular expression module, to replace re."
+HOMEPAGE = "https://bitbucket.org/mrabarnett/mrab-regex/src"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=f0a3e4a2554ebb89c046c93d45d8e4bc"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "26895d7c9bbda5c52b3635ce5991caa90fbb1ddfac9c9ff1c7ce505e2282fb2a"
+
+RDEPENDS:${PN} += " \
+	python3-stringold \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.8.28.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.8.28.bb
deleted file mode 100644
index e375b5b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.8.28.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "Alternative regular expression module, to replace re."
-HOMEPAGE = "https://bitbucket.org/mrabarnett/mrab-regex/src"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=f0a3e4a2554ebb89c046c93d45d8e4bc"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "f585cbbeecb35f35609edccb95efd95a3e35824cd7752b586503f7e6087303f1"
-
-RDEPENDS:${PN} += " \
-	python3-stringold \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_4.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_4.1.1.bb
deleted file mode 100644
index d715f35..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_4.1.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "A Python generic test automation framework"
-DESCRIPTION = "Generic open source test atomation framework for acceptance\
-testing and acceptance test-driven development (ATDD). It has easy-to-use\
-tabular test data syntax and it utilizes the keyword-driven testing approach.\
-Its testing capabilities can be extended by test libraries implemented either\
-with Python or Java, and users can create new higher-level keywords from\
-existing ones using the same syntax that is used for creating test cases."
-HOMEPAGE = "http://robotframework.org"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE_EXT = "zip"
-
-SRC_URI[sha256sum] = "663f84c177b2fa9b3b782939e31637a057a33f3a4b29067812f1259b7f4bad35"
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-shell \
-    ${PYTHON_PN}-pprint \
-    ${PYTHON_PN}-xml \
-    ${PYTHON_PN}-difflib \
-    ${PYTHON_PN}-threading \
-    ${PYTHON_PN}-html \
-    ${PYTHON_PN}-docutils \
-    ${PYTHON_PN}-ctypes \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-numbers \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_4.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_4.1.2.bb
new file mode 100644
index 0000000..0c3de5d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_4.1.2.bb
@@ -0,0 +1,30 @@
+SUMMARY = "A Python generic test automation framework"
+DESCRIPTION = "Generic open source test atomation framework for acceptance\
+testing and acceptance test-driven development (ATDD). It has easy-to-use\
+tabular test data syntax and it utilizes the keyword-driven testing approach.\
+Its testing capabilities can be extended by test libraries implemented either\
+with Python or Java, and users can create new higher-level keywords from\
+existing ones using the same syntax that is used for creating test cases."
+HOMEPAGE = "http://robotframework.org"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE_EXT = "zip"
+
+SRC_URI[sha256sum] = "7ea2454b847cfcb211e2906743c5c4a868ab096ab4ce1547ab102d91fb224443"
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-xml \
+    ${PYTHON_PN}-difflib \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-html \
+    ${PYTHON_PN}-docutils \
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-profile \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.3.1.bb
deleted file mode 100644
index a7810ff..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.3.1.bb
+++ /dev/null
@@ -1,14 +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 = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=0c79f8d3c91fc847350efd28bfe0a341"
-
-RDEPENDS:${PN} += "python3-urllib3"
-
-SRC_URI[sha256sum] = "ebe99144fa9618d4b0e7617e7929b75acd905d258c3c779edcd34c0adfffe26c"
-
-PYPI_PACKAGE = "sentry-sdk"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.4.3.bb
new file mode 100644
index 0000000..c5614a3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.4.3.bb
@@ -0,0 +1,14 @@
+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 = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0c79f8d3c91fc847350efd28bfe0a341"
+
+RDEPENDS:${PN} += "python3-urllib3"
+
+SRC_URI[sha256sum] = "b9844751e40710e84a457c5bc29b21c383ccb2b63d76eeaad72f7f1c808c8828"
+
+PYPI_PACKAGE = "sentry-sdk"
+
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.10.bb
index 9708fc6..36512cb 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.10.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.10.bb
@@ -17,7 +17,9 @@
 RDEPENDS:${PN}-ptest += " \
 	${PYTHON_PN}-pytest \
 "
-
+do_configure:prepend() {
+	sed -i -e "/use_2to3=True,/d" ${S}/setup.py
+}
 do_install_ptest() {
 	cp -f ${S}/test_simpleeval.py ${D}${PTEST_PATH}/
 }
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.4.0.bb
deleted file mode 100644
index cd2c436..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.4.0.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 setuptools3
-
-PYPI_PACKAGE = "python-socketio"
-
-SRC_URI[sha256sum] = "ca807c9e1f168e96dea412d64dd834fb47c470d27fd83da0504aa4b248ba2544"
-
-PACKAGECONFIG ?= "asyncio_client client"
-PACKAGECONFIG[asyncio_client] = ",,,${PYTHON_PN}-aiohttp ${PYTHON_PN}-websockets"
-PACKAGECONFIG[client] = ",,,${PYTHON_PN}-requests ${PYTHON_PN}-websocket-client"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-engineio \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-math \
-    ${PYTHON_PN}-pickle \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-threading \
-    ${PYTHON_PN}-six \
-    ${PYTHON_PN}-attrs \
-    ${PYTHON_PN}-bidict \
-    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.4.1.bb
new file mode 100644
index 0000000..bf8ce4c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.4.1.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 setuptools3
+
+PYPI_PACKAGE = "python-socketio"
+
+SRC_URI[sha256sum] = "ef4e273ddfebb421144a228cbab1e7e27ffe8d372514fa561e57d590ea6627b0"
+
+PACKAGECONFIG ?= "asyncio_client client"
+PACKAGECONFIG[asyncio_client] = ",,,${PYTHON_PN}-aiohttp ${PYTHON_PN}-websockets"
+PACKAGECONFIG[client] = ",,,${PYTHON_PN}-requests ${PYTHON_PN}-websocket-client"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-engineio \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-math \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-attrs \
+    ${PYTHON_PN}-bidict \
+    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.23.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.23.bb
deleted file mode 100644
index 4bfaf65..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.23.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "Python SQL toolkit and Object Relational Mapper that gives \
-application developers the full power and flexibility of SQL"
-HOMEPAGE = "http://www.sqlalchemy.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3359ed561ac16aaa25b6c6eff84df595"
-
-SRC_URI[sha256sum] = "76ff246881f528089bf19385131b966197bb494653990396d2ce138e2a447583"
-
-PYPI_PACKAGE = "SQLAlchemy"
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-pickle \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-numbers \
-    ${PYTHON_PN}-threading \
-    ${PYTHON_PN}-compression \
-    ${PYTHON_PN}-profile \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.26.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.26.bb
new file mode 100644
index 0000000..e000156
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.26.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Python SQL toolkit and Object Relational Mapper that gives \
+application developers the full power and flexibility of SQL"
+HOMEPAGE = "http://www.sqlalchemy.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3359ed561ac16aaa25b6c6eff84df595"
+
+SRC_URI[sha256sum] = "6bc7f9d7d90ef55e8c6db1308a8619cd8f40e24a34f759119b95e7284dca351a"
+
+PYPI_PACKAGE = "SQLAlchemy"
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-compression \
+    ${PYTHON_PN}-profile \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_3.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_3.4.0.bb
deleted file mode 100644
index e2f4304..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_3.4.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "Manage dynamic plugins for Python applications"
-HOMEPAGE = "https://docs.openstack.org/stevedore/latest/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-SRC_URI[sha256sum] = "59b58edb7f57b11897f150475e7bc0c39c5381f0b8e3fa9f5c20ce6c89ec4aa1"
-
-DEPENDS += "${PYTHON_PN}-pbr-native"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "${PYTHON_PN}-pbr ${PYTHON_PN}-six"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_3.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_3.5.0.bb
new file mode 100644
index 0000000..8d345e6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-stevedore_3.5.0.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Manage dynamic plugins for Python applications"
+HOMEPAGE = "https://docs.openstack.org/stevedore/latest/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[sha256sum] = "f40253887d8712eaa2bb0ea3830374416736dc8ec0e22f5a65092c1174c44335"
+
+DEPENDS += "${PYTHON_PN}-pbr-native"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "${PYTHON_PN}-pbr ${PYTHON_PN}-six"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sympy_1.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sympy_1.8.bb
deleted file mode 100644
index e274857..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sympy_1.8.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-# This recipe is adapted from one in meta-jupyter:
-# https://github.com/Xilinx/meta-jupyter/blob/master/recipes-python/python3-sympy_1.1.bb
-
-SUMMARY = "Computer algebra system (CAS) in Python"
-HOMEPAGE = "https://pypi.org/project/sympy/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2245824980a408ef1749391dfba32b3b"
-
-SRC_URI[sha256sum] = "1ca588a9f6ce6a323c5592f9635159c2093572826668a1022c75c75bdf0297cb"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "python3-mpmath"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sympy_1.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sympy_1.9.bb
new file mode 100644
index 0000000..9201869
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sympy_1.9.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Computer algebra system (CAS) in Python"
+HOMEPAGE = "https://pypi.org/project/sympy/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=42976c55ba05d15b32a7b4757dee5e64"
+
+SRC_URI[sha256sum] = "c7a880e229df96759f955d4f3970d4cabce79f60f5b18830c08b90ce77cd5fdc"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-mpmath"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.0.bb
deleted file mode 100644
index 120604a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.0.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "Traitlets Python config system"
-HOMEPAGE = "http://ipython.org"
-AUTHOR = "IPython Development Team <ipython-dev@scipy.org>"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING.md;md5=eec4de4d599518742e54e75954e33b46"
-
-PYPI_PACKAGE = "traitlets"
-
-SRC_URI[sha256sum] = "bd382d7ea181fbbcce157c133db9a829ce06edffe097bcf3ab945b435452b46d"
-
-RDEPENDS:${PN} = "\
-    ${PYTHON_PN}-ipython-genutils \
-    ${PYTHON_PN}-decorator \
-"
-
-inherit setuptools3 pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.1.bb
new file mode 100644
index 0000000..bfed02d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Traitlets Python config system"
+HOMEPAGE = "http://ipython.org"
+AUTHOR = "IPython Development Team <ipython-dev@scipy.org>"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING.md;md5=eec4de4d599518742e54e75954e33b46"
+
+PYPI_PACKAGE = "traitlets"
+
+SRC_URI[sha256sum] = "059f456c5a7c1c82b98c2e8c799f39c9b8128f6d0d46941ee118daace9eb70c7"
+
+RDEPENDS:${PN} = "\
+    ${PYTHON_PN}-ipython-genutils \
+    ${PYTHON_PN}-decorator \
+"
+
+inherit setuptools3 pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.10.bb
new file mode 100644
index 0000000..4629298
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.10.bb
@@ -0,0 +1,9 @@
+SUMMARY = "A lightweight, object-oriented Python state machine implementation with many extensions."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=baac7be1f4c17620df74188e23da6d47"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "b0385975a842e885c1a55c719d2f90164471665794d39d51f9eb3f11e1d9c8ac"
+
+RDEPENDS:${PN} += "python3-six python3-logging"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.9.bb
deleted file mode 100644
index 178dfad..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.9.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "A lightweight, object-oriented Python state machine implementation with many extensions."
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=baac7be1f4c17620df74188e23da6d47"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "fc2ec6d6b6f986cd7e28e119eeb9ba1c9cc51ab4fbbdb7f2dedad01983fd2de0"
-
-RDEPENDS:${PN} += "python3-six python3-logging"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_3.10.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_3.10.0.bb
deleted file mode 100644
index bb034a4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_3.10.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Twitter for Python"
-DESCRIPTION = "Python module to support twitter API"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
-
-SRC_URI[sha256sum] = "76e6954b806ca470dda877f57db8792fff06a0beba0ed43efc3805771e39f06a"
-
-PYPI_PACKAGE = "tweepy"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-pip \
-    ${PYTHON_PN}-pysocks \
-    ${PYTHON_PN}-requests \
-    ${PYTHON_PN}-six \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_4.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_4.1.0.bb
new file mode 100644
index 0000000..ac1dab8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-twitter_4.1.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Twitter for Python"
+DESCRIPTION = "Python module to support twitter API"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[sha256sum] = "88e2938de5ac7043c9ba8b8358996fbc5806059d63c96269d22527a40ca7d511"
+
+PYPI_PACKAGE = "tweepy"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-pip \
+    ${PYTHON_PN}-pysocks \
+    ${PYTHON_PN}-requests \
+    ${PYTHON_PN}-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.12.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.12.1.bb
deleted file mode 100644
index 6b33c17..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.12.1.bb
+++ /dev/null
@@ -1,30 +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] = "c2af8b9bdd7657f4bd27b45336e7930171aead796711bc4cfc99b4731bb9d051"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-        file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-        ${PYTHON_PN}-pytest \
-        ${PYTHON_PN}-typing-extensions \
-        ${PYTHON_PN}-unixadmin \
-"
-
-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_2.13.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.13.0.bb
new file mode 100644
index 0000000..564f98e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.13.0.bb
@@ -0,0 +1,30 @@
+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] = "04e38f92eb59410c9375d3be23df65e0a7643f2e8bcbd421423d808d2f9e99df"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+        ${PYTHON_PN}-pytest \
+        ${PYTHON_PN}-typing-extensions \
+        ${PYTHON_PN}-unixadmin \
+"
+
+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-tzlocal_3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_3.0.bb
deleted file mode 100644
index a9d372e..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_3.0.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-SUMMARY = "Library to return tzinfo with the local timezone information"
-HOMEPAGE = "https://pypi.org/project/tzlocal/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=57e0bd61643d81d05683cdce65b11d10"
-
-SRC_URI[sha256sum] = "f4e6e36db50499e0d92f79b67361041f048e2609d166e93456b50746dc4aef12"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_4.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_4.0.1.bb
new file mode 100644
index 0000000..f8339bb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_4.0.1.bb
@@ -0,0 +1,8 @@
+SUMMARY = "Library to return tzinfo with the local timezone information"
+HOMEPAGE = "https://pypi.org/project/tzlocal/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=57e0bd61643d81d05683cdce65b11d10"
+
+SRC_URI[sha256sum] = "8560aabba61b5d2a5e1697bb781f682e6eaa3ce386cee85a09a458cc0003f836"
+
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_4.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_4.1.0.bb
deleted file mode 100644
index d8e83c5..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_4.1.0.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY  = "Ultra fast JSON encoder and decoder for Python"
-DESCRIPTION = "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 2.5+ and 3."
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=10fa10456417c0252bcb8a498e498ffe"
-
-SRC_URI[sha256sum] = "22b63ec4409f0d2f2c4c9d5aa331997e02470b7a15a3233f3cc32f2f9b92d58c"
-
-inherit pypi ptest setuptools3
-
-SRC_URI += " \
-    file://run-ptest \
-"
-
-DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-numbers \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-pytest \
-    ${PYTHON_PN}-pytz \
-"
-
-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-ujson_4.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_4.2.0.bb
new file mode 100644
index 0000000..3dbfe44
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ujson_4.2.0.bb
@@ -0,0 +1,33 @@
+SUMMARY  = "Ultra fast JSON encoder and decoder for Python"
+DESCRIPTION = "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 2.5+ and 3."
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=10fa10456417c0252bcb8a498e498ffe"
+
+SRC_URI[sha256sum] = "fffe509f556861c7343c6cba57ed05fe7bcf4b48a934a5b946ccb45428cf8883"
+
+inherit pypi ptest setuptools3
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-numbers \
+"
+
+RDEPENDS:${PN}-ptest += " \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-pytest \
+    ${PYTHON_PN}-pytz \
+"
+
+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-uritemplate_3.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-uritemplate_3.0.1.bb
deleted file mode 100644
index 0d63803..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-uritemplate_3.0.1.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-# This recipe is originally from meta-openstack:
-# https://git.yoctoproject.org/cgit/cgit.cgi/meta-cloud-services/tree/meta-openstack/recipes-devtools/python/python3-uritemplate_3.0.0.bb?h=master
-
-SUMMARY = "Simple python library to deal with URI Templates."
-AUTHOR = "Ian Cordasco"
-LICENSE = "Apache-2.0 | BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=0f6d769bdcfacac3c1a1ffa568937fe0"
-
-SRC_URI[md5sum] = "869fb44fbd56713490db7272eb36c8ae"
-SRC_URI[sha256sum] = "5af8ad10cec94f215e3f48112de2022e1d5a37ed427fbd88652fa908f2ab7cae"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-        file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-       ${PYTHON_PN}-pytest \
-"
-
-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-uritemplate_4.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-uritemplate_4.1.1.bb
new file mode 100644
index 0000000..eaf8bda
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-uritemplate_4.1.1.bb
@@ -0,0 +1,26 @@
+# This recipe is originally from meta-openstack:
+# https://git.yoctoproject.org/cgit/cgit.cgi/meta-cloud-services/tree/meta-openstack/recipes-devtools/python/python3-uritemplate_3.0.0.bb?h=master
+
+SUMMARY = "Simple python library to deal with URI Templates."
+AUTHOR = "Ian Cordasco"
+LICENSE = "Apache-2.0 | BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0f6d769bdcfacac3c1a1ffa568937fe0"
+
+SRC_URI[sha256sum] = "4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+       ${PYTHON_PN}-pytest \
+"
+
+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-urllib3_1.26.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.6.bb
deleted file mode 100644
index 5a2a628..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.6.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Python HTTP library with thread-safe connection pooling, file post support, sanity friendly, and more"
-HOMEPAGE = "https://github.com/shazow/urllib3"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c2823cb995439c984fd62a973d79815c"
-
-SRC_URI[sha256sum] = "f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-certifi \
-    ${PYTHON_PN}-cryptography \
-    ${PYTHON_PN}-email \
-    ${PYTHON_PN}-idna \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-pyopenssl \
-    ${PYTHON_PN}-threading \
-"
-
-CVE_PRODUCT = "urllib3"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.7.bb
new file mode 100644
index 0000000..7269674
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.7.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Python HTTP library with thread-safe connection pooling, file post support, sanity friendly, and more"
+HOMEPAGE = "https://github.com/shazow/urllib3"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c2823cb995439c984fd62a973d79815c"
+
+SRC_URI[sha256sum] = "4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-certifi \
+    ${PYTHON_PN}-cryptography \
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-idna \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-pyopenssl \
+    ${PYTHON_PN}-threading \
+"
+
+CVE_PRODUCT = "urllib3"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.5.bb
deleted file mode 100644
index 55b966a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.5.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Filesystem events monitoring"
-DEPENDS = "${PYTHON_PN}-argh"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-SRC_URI[sha256sum] = "5563b005907613430ef3d4aaac9c78600dd5704e84764cb6deda4b3d72807f09"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} = " \
-    ${PYTHON_PN}-argh \
-    ${PYTHON_PN}-pathtools3 \
-    ${PYTHON_PN}-pyyaml \
-    ${PYTHON_PN}-requests \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.6.bb
new file mode 100644
index 0000000..2bb1100
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.6.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Filesystem events monitoring"
+DEPENDS = "${PYTHON_PN}-argh"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[sha256sum] = "a36e75df6c767cbf46f61a91c70b3ba71811dfa0aca4a324d9407a06a8b7a2e7"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} = " \
+    ${PYTHON_PN}-argh \
+    ${PYTHON_PN}-pathtools3 \
+    ${PYTHON_PN}-pyyaml \
+    ${PYTHON_PN}-requests \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_10.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_10.0.bb
new file mode 100644
index 0000000..004d3be
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_10.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "An implementation of the WebSocket Protocol (RFC 6455)"
+HOMEPAGE = "https://github.com/aaugustin/websockets"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=78c2cc91e172ca96d6f8e4a76c739ec6"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "c4fc9a1d242317892590abe5b61a9127f1a61740477bfb121743f290b8054002"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN} = "\
+    ${PYTHON_PN}-asyncio \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_9.1.bb
deleted file mode 100644
index a44c2d8..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_9.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "An implementation of the WebSocket Protocol (RFC 6455)"
-HOMEPAGE = "https://github.com/aaugustin/websockets"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=78c2cc91e172ca96d6f8e4a76c739ec6"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "276d2339ebf0df4f45df453923ebd2270b87900eda5dfd4a6b0cfa15f82111c3"
-
-BBCLASSEXTEND = "native nativesdk"
-
-RDEPENDS:${PN} = "\
-    ${PYTHON_PN}-asyncio \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_2.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_2.0.1.bb
deleted file mode 100644
index 57db204..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_2.0.1.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "The Swiss Army knife of Python web development"
-DESCRIPTION = "\
-Werkzeug started as simple collection of various utilities for WSGI \
-applications and has become one of the most advanced WSGI utility modules. \
-It includes a powerful debugger, full featured request and response objects, \
-HTTP utilities to handle entity tags, cache control headers, HTTP dates, \
-cookie handling, file uploads, a powerful URL routing system and a bunch \
-of community contributed addon modules."
-HOMEPAGE = "http://werkzeug.pocoo.org/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
-
-PYPI_PACKAGE = "Werkzeug"
-
-SRC_URI[sha256sum] = "1de1db30d010ff1af14a009224ec49ab2329ad2cde454c8a708130642d579c42"
-
-inherit pypi setuptools3
-
-CLEANBROKEN = "1"
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-difflib \
-    ${PYTHON_PN}-email \
-    ${PYTHON_PN}-html \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-netserver \
-    ${PYTHON_PN}-numbers \
-    ${PYTHON_PN}-pkgutil \
-    ${PYTHON_PN}-pprint \
-    ${PYTHON_PN}-simplejson \
-    ${PYTHON_PN}-threading \
-    ${PYTHON_PN}-unixadmin \
-    ${PYTHON_PN}-misc \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_2.0.2.bb
new file mode 100644
index 0000000..4c221cc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-werkzeug_2.0.2.bb
@@ -0,0 +1,39 @@
+SUMMARY = "The Swiss Army knife of Python web development"
+DESCRIPTION = "\
+Werkzeug started as simple collection of various utilities for WSGI \
+applications and has become one of the most advanced WSGI utility modules. \
+It includes a powerful debugger, full featured request and response objects, \
+HTTP utilities to handle entity tags, cache control headers, HTTP dates, \
+cookie handling, file uploads, a powerful URL routing system and a bunch \
+of community contributed addon modules."
+HOMEPAGE = "http://werkzeug.pocoo.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
+
+PYPI_PACKAGE = "Werkzeug"
+
+SRC_URI[sha256sum] = "aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a"
+
+inherit pypi setuptools3
+
+CLEANBROKEN = "1"
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-difflib \
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-html \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pkgutil \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-simplejson \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-unixadmin \
+    ${PYTHON_PN}-misc \
+    ${PYTHON_PN}-profile \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.12.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.12.1.bb
deleted file mode 100644
index 22457d9..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.12.1.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "A Python module for decorators, wrappers and monkey patching."
-HOMEPAGE = "http://wrapt.readthedocs.org/"
-LICENSE = "BSD-2-Clause"
-SECTION = "devel/python"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=fdfc019b57affbe1d7a32e3d34e83db4"
-
-SRC_URI[md5sum] = "6d56ed0de4336462a73350341462f45e"
-SRC_URI[sha256sum] = "b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"
-
-inherit pypi setuptools3 
-
-RDEPENDS:${PN}:class-target += "\
-    ${PYTHON_PN}-stringold \
-    ${PYTHON_PN}-threading \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.13.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.13.2.bb
new file mode 100644
index 0000000..b1710fc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.13.2.bb
@@ -0,0 +1,16 @@
+SUMMARY = "A Python module for decorators, wrappers and monkey patching."
+HOMEPAGE = "http://wrapt.readthedocs.org/"
+LICENSE = "BSD-2-Clause"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fdfc019b57affbe1d7a32e3d34e83db4"
+
+SRC_URI[sha256sum] = "dca56cc5963a5fd7c2aa8607017753f534ee514e09103a6c55d2db70b50e7447"
+
+inherit pypi setuptools3 
+
+RDEPENDS:${PN}:class-target += "\
+    ${PYTHON_PN}-stringold \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_1.4.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_1.4.5.bb
deleted file mode 100644
index ffd3072..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_1.4.5.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Python 2 and 3 compatibility library"
-HOMEPAGE = "https://xlsxwriter.readthedocs.io"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4e95e368cd6cb090815046688e92d11e"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE = "XlsxWriter"
-
-RDEPENDS:${PN} += " \
-	python3-crypt \
-	python3-datetime \
-	python3-compression \
-	python3-numbers \
-	python3-io \
-"
-
-SRC_URI[sha256sum] = "0956747859567ec01907e561a7d8413de18a7aae36860f979f9da52b9d58bc19"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_3.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_3.0.1.bb
new file mode 100644
index 0000000..aeb27ce
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_3.0.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Python 2 and 3 compatibility library"
+HOMEPAGE = "https://xlsxwriter.readthedocs.io"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4e95e368cd6cb090815046688e92d11e"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "XlsxWriter"
+
+RDEPENDS:${PN} += " \
+	python3-crypt \
+	python3-datetime \
+	python3-compression \
+	python3-numbers \
+	python3-io \
+"
+
+SRC_URI[sha256sum] = "3f39bf581c55f3ad1438bc170d7f4c4649cee8b6b7a80d21f79508118eeea52a"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_1.6.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_1.6.2.bb
deleted file mode 100644
index 217e77e..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_1.6.2.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "The xmlschema library is an implementation of XML Schema for Python (supports Python 3.6+)."
-HOMEPAGE = "https://github.com/sissaschool/xmlschema"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=47489cb18c469474afeb259ed1d4832f"
-
-SRC_URI[sha256sum] = "31ddf77a44e4b121de212beeb2cc039e2e8b7a7a4f1678c9b29be1f5341aec52"
-
-PYPI_PACKAGE = "xmlschema"
-inherit pypi setuptools3
-
-DEPENDS += "\
-    ${PYTHON_PN}-elementpath-native \
-"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-elementpath \
-    ${PYTHON_PN}-modules \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_1.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_1.8.0.bb
new file mode 100644
index 0000000..d720dd3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlschema_1.8.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "The xmlschema library is an implementation of XML Schema for Python (supports Python 3.6+)."
+HOMEPAGE = "https://github.com/sissaschool/xmlschema"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=47489cb18c469474afeb259ed1d4832f"
+
+SRC_URI[sha256sum] = "fa4e22a708f08d15f605c9191e2500149ba1a848fff7fa4904c2f2c57dc1087f"
+
+PYPI_PACKAGE = "xmlschema"
+inherit pypi setuptools3
+
+DEPENDS += "\
+    ${PYTHON_PN}-elementpath-native \
+"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-elementpath \
+    ${PYTHON_PN}-modules \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/python310.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/python310.patch
new file mode 100644
index 0000000..6dd58ae
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/python310.patch
@@ -0,0 +1,51 @@
+From d40bc0e8230dd35e05222f5761e3d7f7a75fd46e Mon Sep 17 00:00:00 2001
+From: Alexander Shadchin <shadchin@yandex-team.ru>
+Date: Tue, 1 Jun 2021 02:31:12 +0300
+Subject: [PATCH] Adapt to Python 3.10 beta 1
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ yappi/_yappi.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/yappi/_yappi.c b/yappi/_yappi.c
+index 1721280..343130d 100644
+--- a/yappi/_yappi.c
++++ b/yappi/_yappi.c
+@@ -1258,7 +1258,11 @@ _resume_greenlet_ctx(_ctx *ctx)
+ static _ctx *
+ _bootstrap_thread(PyThreadState *ts)
+ {
++#if PY_VERSION_HEX < 0x030a00b1
+     ts->use_tracing = 1;
++#else
++    ts->cframe->use_tracing = 1;
++#endif
+     ts->c_profilefunc = _yapp_callback;
+     return NULL;
+ }
+@@ -1289,7 +1293,11 @@ _profile_thread(PyThreadState *ts)
+         ctx = (_ctx *)it->val;
+     }
+     
++#if PY_VERSION_HEX < 0x030a00b1
+     ts->use_tracing = 1;
++#else
++    ts->cframe->use_tracing = 1;
++#endif
+     ts->c_profilefunc = _yapp_callback;
+     ctx->id = ctx_id;
+     ctx->tid = ts->thread_id;
+@@ -1306,7 +1314,11 @@ _profile_thread(PyThreadState *ts)
+ static _ctx*
+ _unprofile_thread(PyThreadState *ts)
+ {
++#if PY_VERSION_HEX < 0x030a00b1
+     ts->use_tracing = 0;
++#else
++    ts->cframe->use_tracing = 0;
++#endif
+     ts->c_profilefunc = NULL;
+ 
+     return NULL; //dummy return for enum_threads() func. prototype
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.3.2.bb
index 94988a7..7cfc84e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.3.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.3.2.bb
@@ -9,6 +9,7 @@
 SRC_URI += " \
     file://run-ptest \
     file://0001-Fix-imports-for-ptests.patch \
+    file://python310.patch \
 "
 
 inherit pypi setuptools3 ptest
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl/0001-Drop-tests-for-semicolon-as-a-separator.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl/0001-Drop-tests-for-semicolon-as-a-separator.patch
deleted file mode 100644
index 1a9d5d0..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl/0001-Drop-tests-for-semicolon-as-a-separator.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 47eabc562a8883d757e3cff487c6c6e98def5a21 Mon Sep 17 00:00:00 2001
-From: Andrew Svetlov <andrew.svetlov@gmail.com>
-Date: Fri, 28 May 2021 12:42:17 +0300
-Subject: [PATCH] Drop tests for semicolon as a separator
-
-yarl 1.6.3 ptests check the use of semicolons as separators in URLs,
-which are no longer valid by default in newer versions of Python. This
-patch is in python3-yarl master, but there is no release with it yet, so
-backport it until there is a new release.
-
-For more info, see: 
-https://bugs.python.org/issue42967
-https://github.com/aio-libs/yarl/issues/563
-
-Upstream-Status: Backport
-(https://github.com/aio-libs/yarl/commit/47eabc562a8883d757e3cff487c6c6e98def5a21)
-
-Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
-
----
- tests/test_url_query.py | 11 -----------
- 1 file changed, 11 deletions(-)
-
-diff --git a/tests/test_url_query.py b/tests/test_url_query.py
-index d2ca640..07f858b 100644
---- a/tests/test_url_query.py
-+++ b/tests/test_url_query.py
-@@ -60,14 +60,3 @@ def test_ampersand_as_value():
-     u = URL("http://127.0.0.1/?a=1%26b=2")
-     assert len(u.query) == 1
-     assert u.query["a"] == "1&b=2"
--
--
--def test_semicolon_as_separator():
--    u = URL("http://127.0.0.1/?a=1;b=2")
--    assert len(u.query) == 2
--
--
--def test_semicolon_as_value():
--    u = URL("http://127.0.0.1/?a=1%3Bb=2")
--    assert len(u.query) == 1
--    assert u.query["a"] == "1;b=2"
--- 
-2.31.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.6.3.bb
deleted file mode 100644
index 7bab771..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.6.3.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "The module provides handy URL class for url parsing and changing"
-HOMEPAGE = "https://github.com/aio-libs/yarl/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b334fc90d45983db318f54fd5bf6c90b"
-
-SRC_URI[sha256sum] = "8a9066529240171b68893d60dca86a763eae2139dd42f42106b03cf4b426bf10"
-
-SRC_URI += " \
-    file://run-ptest \
-    file://0001-Drop-tests-for-semicolon-as-a-separator.patch \
-"
-
-PYPI_PACKAGE = "yarl"
-
-inherit pypi ptest setuptools3
-
-RDEPENDS:${PN} = "\
-    ${PYTHON_PN}-multidict \
-    ${PYTHON_PN}-idna \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    ${PYTHON_PN}-pytest \
-"
-
-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-yarl_1.7.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.7.0.bb
new file mode 100644
index 0000000..acb4b4a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.7.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "The module provides handy URL class for url parsing and changing"
+HOMEPAGE = "https://github.com/aio-libs/yarl/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e581798a7b985311f29fa3e163ea27ae"
+
+SRC_URI[sha256sum] = "8e7ebaf62e19c2feb097ffb7c94deb0f0c9fab52590784c8cd679d30ab009162"
+
+SRC_URI += "file://run-ptest"
+
+PYPI_PACKAGE = "yarl"
+
+inherit pypi ptest setuptools3
+
+RDEPENDS:${PN} = "\
+    ${PYTHON_PN}-multidict \
+    ${PYTHON_PN}-idna \
+"
+
+RDEPENDS:${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+"
+
+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-zeroconf_0.36.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.36.0.bb
deleted file mode 100644
index 5f6f0a2..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.36.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY = "Pure Python Multicast DNS Service Discovery Library (Bonjour/Avahi compatible)"
-HOMEPAGE = "https://github.com/jstasiak/python-zeroconf"
-LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bb705b228ea4a14ea2728215b780d80"
-
-SRC_URI[sha256sum] = "549f685a318c06d5345ed6533f54f33b206816b564ed7f7876e7b9522e77bf29"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-ifaddr \
-    ${PYTHON_PN}-asyncio \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.36.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.36.9.bb
new file mode 100644
index 0000000..8258ddd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.36.9.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Pure Python Multicast DNS Service Discovery Library (Bonjour/Avahi compatible)"
+HOMEPAGE = "https://github.com/jstasiak/python-zeroconf"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bb705b228ea4a14ea2728215b780d80"
+
+SRC_URI[sha256sum] = "023ebc58b765537edcb0395367b732e5271e2659760b1d5c6119aaacaeb7b390"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-ifaddr \
+    ${PYTHON_PN}-asyncio \
+"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pyephem/python3-pyephem_4.0.0.2.bb b/meta-openembedded/meta-python/recipes-extended/python-pyephem/python3-pyephem_4.0.0.2.bb
deleted file mode 100644
index ce2a802..0000000
--- a/meta-openembedded/meta-python/recipes-extended/python-pyephem/python3-pyephem_4.0.0.2.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "PyEphem astronomical calculations"
-HOMEPAGE = "http://rhodesmill.org/pyephem/"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=9c930b395b435b00bb13ec83b0c99f40"
-
-SRC_URI[sha256sum] = "d03de73ebf6a91681d597eb5b5d43bcf6f0c67e292bba2f9a974734b4f15757e"
-
-PYPI_PACKAGE = "ephem"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-math \
-    "
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pyephem/python3-pyephem_4.1.bb b/meta-openembedded/meta-python/recipes-extended/python-pyephem/python3-pyephem_4.1.bb
new file mode 100644
index 0000000..add4458
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pyephem/python3-pyephem_4.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "PyEphem astronomical calculations"
+HOMEPAGE = "http://rhodesmill.org/pyephem/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9c930b395b435b00bb13ec83b0c99f40"
+
+SRC_URI[sha256sum] = "c076794a511a34b5b91871c1cf6374dbc323ec69fca3f50eb718f20b171259d6"
+
+PYPI_PACKAGE = "ephem"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-math \
+    "
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch
index 0e64ce4..5f95d74 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch
@@ -1,7 +1,7 @@
-From f05f5fc363e2510f6943532f3e14a6423f6a2cf1 Mon Sep 17 00:00:00 2001
+From 3540ddcc7448dc784b65c74424c8a25132cb8534 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Tue, 31 Jul 2018 17:24:47 +0800
-Subject: [PATCH 1/4] support authentication for kickstart
+Subject: [PATCH] support authentication for kickstart
 
 While download kickstart file from web server,
 we support basic/digest authentication.
@@ -12,6 +12,7 @@
 Upstream-Status: inappropriate [oe specific]
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
 ---
  pykickstart/errors.py | 17 +++++++++++++++++
  pykickstart/load.py   | 34 ++++++++++++++++++++++++++++------
@@ -19,7 +20,7 @@
  3 files changed, 47 insertions(+), 8 deletions(-)
 
 diff --git a/pykickstart/errors.py b/pykickstart/errors.py
-index bf08ac5..aada7aa 100644
+index 8294f59a..3d20bf82 100644
 --- a/pykickstart/errors.py
 +++ b/pykickstart/errors.py
 @@ -32,6 +32,9 @@ This module exports several exception classes:
@@ -51,10 +52,10 @@
 +    def __str__(self):
 +        return self.value
 diff --git a/pykickstart/load.py b/pykickstart/load.py
-index fb935f2..41a2e9e 100644
+index 30e2fcfa..b984876d 100644
 --- a/pykickstart/load.py
 +++ b/pykickstart/load.py
-@@ -18,10 +18,13 @@
+@@ -18,9 +18,12 @@
  # with the express permission of Red Hat, Inc.
  #
  import requests
@@ -62,14 +63,13 @@
 +from requests.auth import HTTPBasicAuth
 +
  import shutil
- import six
  
 -from pykickstart.errors import KickstartError
 +from pykickstart.errors import KickstartError, KickstartAuthError
  from pykickstart.i18n import _
  from requests.exceptions import SSLError, RequestException
  
-@@ -29,7 +32,7 @@ _is_url = lambda location: '://' in location  # RFC 3986
+@@ -28,7 +31,7 @@ _is_url = lambda location: '://' in location  # RFC 3986
  
  SSL_VERIFY = True
  
@@ -78,7 +78,7 @@
      '''Load a destination URL or file into a string.
      Type of input is inferred automatically.
  
-@@ -40,7 +43,7 @@ def load_to_str(location):
+@@ -39,7 +42,7 @@ def load_to_str(location):
      Raises: KickstartError on error reading'''
  
      if _is_url(location):
@@ -87,7 +87,7 @@
      else:
          return _load_file(location)
  
-@@ -70,11 +73,30 @@ def load_to_file(location, destination):
+@@ -69,11 +72,30 @@ def load_to_file(location, destination):
          _copy_file(location, destination)
          return destination
  
@@ -122,10 +122,10 @@
          raise KickstartError(_('Error securely accessing URL "%s"') % location + ': {e}'.format(e=str(e)))
      except RequestException as e:
 diff --git a/pykickstart/parser.py b/pykickstart/parser.py
-index d8880eb..22d14cb 100644
+index b23e54f1..e10f06b5 100644
 --- a/pykickstart/parser.py
 +++ b/pykickstart/parser.py
-@@ -801,7 +801,7 @@ class KickstartParser(object):
+@@ -796,7 +796,7 @@ class KickstartParser(object):
          i = PutBackIterator(s.splitlines(True) + [""])
          self._stateMachine(i)
  
@@ -134,7 +134,7 @@
          """Process a kickstart file, given by the filename f."""
          if reset:
              self._reset()
-@@ -822,7 +822,7 @@ class KickstartParser(object):
+@@ -817,7 +817,7 @@ class KickstartParser(object):
          self.currentdir[self._includeDepth] = cd
  
          try:
@@ -143,6 +143,3 @@
          except KickstartError as e:
              raise KickstartError(_("Unable to open input kickstart file: %s") % str(e), lineno=0)
  
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch
index 6ed15ab..bf5a197 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch
@@ -1,7 +1,7 @@
-From ffe06c6dd812b604d6482e4353d5564fad78bc90 Mon Sep 17 00:00:00 2001
+From 737e9a7c11233183f48ce6c83d38b504c8ffed12 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Mon, 30 Jul 2018 15:52:21 +0800
-Subject: [PATCH 4/4] load.py: retry to invoke request with timeout
+Subject: [PATCH] load.py: retry to invoke request with timeout
 
 While networkless, use request to fetch kickstart file from
 network, it failed and wait 300s to break, we should retry
@@ -11,23 +11,23 @@
 Upstream-Status: inappropriate [oe specific]
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
 ---
  pykickstart/load.py | 31 +++++++++++++++++++++++++++++++
  1 file changed, 31 insertions(+)
 
 diff --git a/pykickstart/load.py b/pykickstart/load.py
-index ad3bad1..a5cbbc5 100644
+index f75fe5d3..a8f3ed1d 100644
 --- a/pykickstart/load.py
 +++ b/pykickstart/load.py
-@@ -21,6 +21,7 @@ import requests
+@@ -21,12 +21,16 @@ import requests
  from requests.auth import HTTPDigestAuth
  from requests.auth import HTTPBasicAuth
  
 +import time
  import shutil
- import six
  
-@@ -28,6 +29,9 @@ from pykickstart.errors import KickstartError, KickstartAuthError
+ from pykickstart.errors import KickstartError, KickstartAuthError
  from pykickstart.i18n import _
  from requests.exceptions import SSLError, RequestException
  
@@ -37,7 +37,7 @@
  _is_url = lambda location: '://' in location  # RFC 3986
  
  SSL_VERIFY = False
-@@ -73,6 +77,29 @@ def load_to_file(location, destination):
+@@ -72,6 +76,29 @@ def load_to_file(location, destination):
          _copy_file(location, destination)
          return destination
  
@@ -67,7 +67,7 @@
  def _get_auth(location, user=None, passwd=None):
  
      auth = None
-@@ -94,6 +121,10 @@ def _get_auth(location, user=None, passwd=None):
+@@ -93,6 +120,10 @@ def _get_auth(location, user=None, passwd=None):
  
  def _load_url(location, user=None, passwd=None):
      '''Load a location (URL or filename) and return contents as string'''
@@ -78,6 +78,3 @@
      auth = _get_auth(location, user=user, passwd=passwd)
      try:
          request = requests.get(location, verify=SSL_VERIFY, auth=auth)
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.32.bb b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.32.bb
deleted file mode 100644
index 829ada4..0000000
--- a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.32.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-DESCRIPTION = "A python library for manipulating kickstart files"
-HOMEPAGE = "http://fedoraproject.org/wiki/pykickstart"
-LICENSE = "GPLv2+"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
-FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
-
-DEPENDS = "python3"
-RDEPENDS:${PN} = "python3 \
-                  python3-requests \
-                  python3-six \
-"
-
-S = "${WORKDIR}/git"
-SRC_URI = "git://github.com/rhinstaller/pykickstart.git;protocol=https;branch=master \
-           file://0001-support-authentication-for-kickstart.patch \
-           file://0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch \
-           file://0003-comment-out-sections-shutdown-and-environment-in-gen.patch \
-           file://0004-load.py-retry-to-invoke-request-with-timeout.patch \
-           "
-SRCREV = "c56a5fbdd4079b187b21787f072ccc83dc09c28c"
-
-UPSTREAM_CHECK_GITTAGREGEX = "r(?P<pver>\d+(\.\d+)+(-\d+)*)"
-
-inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.34.bb b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.34.bb
new file mode 100644
index 0000000..65fc88e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.34.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "A python library for manipulating kickstart files"
+HOMEPAGE = "http://fedoraproject.org/wiki/pykickstart"
+LICENSE = "GPLv2+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+DEPENDS = "python3"
+RDEPENDS:${PN} = "python3 \
+                  python3-requests \
+                  python3-six \
+"
+
+S = "${WORKDIR}/git"
+SRC_URI = "git://github.com/rhinstaller/pykickstart.git;protocol=https;branch=master \
+           file://0001-support-authentication-for-kickstart.patch \
+           file://0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch \
+           file://0003-comment-out-sections-shutdown-and-environment-in-gen.patch \
+           file://0004-load.py-retry-to-invoke-request-with-timeout.patch \
+           "
+SRCREV = "bfd836cfdd8439d984595aca015811ed5c6be733"
+
+UPSTREAM_CHECK_GITTAGREGEX = "r(?P<pver>\d+(\.\d+)+(-\d+)*)"
+
+inherit setuptools3
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.49.bb b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.49.bb
deleted file mode 100644
index e5d1879..0000000
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.49.bb
+++ /dev/null
@@ -1,225 +0,0 @@
-DESCRIPTION = "The Apache HTTP Server is a powerful, efficient, and \
-extensible web server."
-SUMMARY = "Apache HTTP Server"
-HOMEPAGE = "http://httpd.apache.org/"
-SECTION = "net"
-LICENSE = "Apache-2.0"
-
-SRC_URI = "${APACHE_MIRROR}/httpd/httpd-${PV}.tar.bz2 \
-           file://0001-configure-use-pkg-config-for-PCRE-detection.patch \
-           file://0002-apache2-bump-up-the-core-size-limit-if-CoreDumpDirec.patch \
-           file://0003-apache2-do-not-export-apr-apr-util-symbols-when-usin.patch \
-           file://0004-apache2-log-the-SELinux-context-at-startup.patch \
-           file://0005-replace-lynx-to-curl-in-apachectl-script.patch \
-           file://0006-apache2-fix-the-race-issue-of-parallel-installation.patch \
-           file://0007-apache2-allow-to-disable-selinux-support.patch \
-           file://apache-configure_perlbin.patch \
-           file://0001-support-apxs.in-force-destdir-to-be-empty-string.patch \
-          "
-
-SRC_URI:append:class-target = " \
-           file://0008-apache2-do-not-use-relative-path-for-gen_test_char.patch \
-           file://init \
-           file://apache2-volatile.conf \
-           file://apache2.service \
-           file://volatiles.04_apache2 \
-           "
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=bddeddfac80b2c9a882241d008bb41c3"
-SRC_URI[sha256sum] = "65b965d6890ea90d9706595e4b7b9365b5060bec8ea723449480b4769974133b"
-
-S = "${WORKDIR}/httpd-${PV}"
-
-inherit autotools update-rc.d pkgconfig systemd update-alternatives
-
-DEPENDS = "openssl expat pcre apr apr-util apache2-native "
-
-CVE_PRODUCT = "http_server"
-
-SSTATE_SCAN_FILES += "apxs config_vars.mk config.nice"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)}"
-PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux,libselinux"
-PACKAGECONFIG[openldap] = "--enable-ldap --enable-authnz-ldap,--disable-ldap --disable-authnz-ldap,openldap"
-PACKAGECONFIG[zlib] = "--enable-deflate,,zlib,zlib"
-
-CFLAGS:append = " -DPATH_MAX=4096"
-
-EXTRA_OECONF:class-target = "\
-    --enable-layout=Debian \
-    --prefix=${base_prefix} \
-    --exec_prefix=${exec_prefix} \
-    --includedir=${includedir}/${BPN} \
-    --sysconfdir=${sysconfdir}/${BPN} \
-    --datadir=${datadir}/${BPN} \
-    --libdir=${libdir} \
-    --libexecdir=${libexecdir}/${BPN}/modules \
-    --localstatedir=${localstatedir} \
-    --enable-ssl \
-    --with-dbm=sdbm \
-    --with-gdbm=no \
-    --with-ndbm=no \
-    --with-berkeley-db=no \
-    --enable-info \
-    --enable-rewrite \
-    --enable-mpms-shared \
-    ap_cv_void_ptr_lt_long=no \
-    ac_cv_have_threadsafe_pollset=no \
-    "
-
-EXTRA_OECONF:class-native = "\
-    --prefix=${prefix} \
-    --includedir=${includedir}/${BPN} \
-    --sysconfdir=${sysconfdir}/${BPN} \
-    --datadir=${datadir}/${BPN} \
-    --libdir=${libdir} \
-    --libexecdir=${libdir}/${BPN}/modules \
-    --localstatedir=${localstatedir} \
-    "
-
-do_configure:prepend() {
-    sed -i -e 's:$''{prefix}/usr/lib/cgi-bin:$''{libexecdir}/cgi-bin:g' ${S}/config.layout
-}
-
-do_install:append:class-target() {
-    install -d ${D}/${sysconfdir}/init.d
-
-    cat ${WORKDIR}/init | \
-        sed -e 's,/usr/sbin/,${sbindir}/,g' \
-            -e 's,/usr/bin/,${bindir}/,g' \
-            -e 's,/usr/lib/,${libdir}/,g' \
-            -e 's,/etc/,${sysconfdir}/,g' \
-            -e 's,/usr/,${prefix}/,g' > ${D}/${sysconfdir}/init.d/${BPN}
-
-    chmod 755 ${D}/${sysconfdir}/init.d/${BPN}
-
-    # Remove the goofy original files...
-    rm -rf ${D}/${sysconfdir}/${BPN}/original
-
-    install -d ${D}${sysconfdir}/${BPN}/conf.d
-    install -d ${D}${sysconfdir}/${BPN}/modules.d
-
-    # Ensure configuration file pulls in conf.d and modules.d
-    printf "\nIncludeOptional ${sysconfdir}/${BPN}/conf.d/*.conf" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
-    printf "\nIncludeOptional ${sysconfdir}/${BPN}/modules.d/*.load" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
-    printf "\nIncludeOptional ${sysconfdir}/${BPN}/modules.d/*.conf\n\n" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
-
-    # Match with that is in init script
-    printf "\nPidFile /run/httpd.pid" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
-
-    # Set 'ServerName' to fix error messages when restart apache service
-    sed -i 's/^#ServerName www.example.com/ServerName localhost/' ${D}/${sysconfdir}/${BPN}/httpd.conf
-
-    sed -i 's/^ServerRoot/#ServerRoot/' ${D}/${sysconfdir}/${BPN}/httpd.conf
-
-    sed -i -e 's,${STAGING_DIR_TARGET},,g' \
-           -e 's,${DEBUG_PREFIX_MAP},,g' \
-           -e 's,-fdebug-prefix-map[^ ]*,,g; s,-fmacro-prefix-map[^ ]*,,g; s,-ffile-prefix-map[^ ]*,,g' \
-           -e 's,${HOSTTOOLS_DIR}/,,g' \
-           -e 's,APU_INCLUDEDIR = .*,APU_INCLUDEDIR = ,g' \
-           -e 's,APU_CONFIG = .*,APU_CONFIG = ,g' ${D}${datadir}/apache2/build/config_vars.mk
-
-    sed -i -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
-           -e 's,${DEBUG_PREFIX_MAP},,g' \
-           -e 's,${RECIPE_SYSROOT},,g' \
-           -e 's,-fdebug-prefix-map[^ ]*,,g; s,-fmacro-prefix-map[^ ]*,,g; s,-fmacro-prefix-map[^ ]*,,g' \
-           -e 's,APU_INCLUDEDIR = .*,APU_INCLUDEDIR = ,g' \
-           -e 's,".*/configure","configure",g' ${D}${datadir}/apache2/build/config.nice
-
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        install -d ${D}${sysconfdir}/tmpfiles.d/
-        install -m 0644 ${WORKDIR}/apache2-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
-
-        install -d ${D}${systemd_unitdir}/system
-        install -m 0644 ${WORKDIR}/apache2.service ${D}${systemd_unitdir}/system
-        sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/apache2.service
-        sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' ${D}${systemd_unitdir}/system/apache2.service
-    elif ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-        install -d ${D}${sysconfdir}/default/volatiles
-        install -m 0644 ${WORKDIR}/volatiles.04_apache2 ${D}${sysconfdir}/default/volatiles/04_apache2
-    fi
-
-    rm -rf ${D}${localstatedir} ${D}${sbindir}/envvars*
-    chown -R root:root ${D}
-}
-
-do_install:append:class-native() {
-    install -d ${D}${bindir} ${D}${libdir}
-    install -m 755 server/gen_test_char ${D}${bindir}
-}
-
-SYSROOT_PREPROCESS_FUNCS:append:class-target = " apache_sysroot_preprocess"
-
-apache_sysroot_preprocess() {
-    install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
-    install -m 755 ${D}${bindir}/apxs ${SYSROOT_DESTDIR}${bindir_crossscripts}
-    install -d ${SYSROOT_DESTDIR}${sbindir}
-    install -m 755 ${D}${sbindir}/apachectl ${SYSROOT_DESTDIR}${sbindir}
-    sed -i 's!my $installbuilddir = .*!my $installbuilddir = "${STAGING_DIR_HOST}/${datadir}/${BPN}/build";!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/apxs
-    sed -i 's!my $libtool = .*!my $libtool = "${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool";!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/apxs
-
-    sed -i 's!^APR_CONFIG = .*!APR_CONFIG = ${STAGING_BINDIR_CROSS}/apr-1-config!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!^APU_CONFIG = .*!APU_CONFIG = ${STAGING_BINDIR_CROSS}/apu-1-config!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!^includedir = .*!includedir = ${STAGING_INCDIR}/apache2!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!^CFLAGS = -I[^ ]*!CFLAGS = -I${STAGING_INCDIR}/openssl!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!^EXTRA_LDFLAGS = .*!EXTRA_LDFLAGS = -L${STAGING_LIBDIR}!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!^EXTRA_INCLUDES = .*!EXTRA_INCLUDES = -I$(includedir) -I. -I${STAGING_INCDIR}!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!--sysroot=[^ ]*!--sysroot=${STAGING_DIR_HOST}!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-}
-
-# Implications - used by update-rc.d scripts
-INITSCRIPT_NAME = "apache2"
-INITSCRIPT_PARAMS = "defaults 91 20"
-
-SYSTEMD_SERVICE:${PN} = "apache2.service"
-SYSTEMD_AUTO_ENABLE:${PN} = "enable"
-
-ALTERNATIVE:${PN}-doc = "htpasswd.1"
-ALTERNATIVE_LINK_NAME[htpasswd.1] = "${mandir}/man1/htpasswd.1"
-
-PACKAGES = "${PN}-scripts ${PN}-doc ${PN}-dev ${PN}-dbg ${PN}"
-
-CONFFILES:${PN} = "${sysconfdir}/${BPN}/httpd.conf \
-                   ${sysconfdir}/${BPN}/magic \
-                   ${sysconfdir}/${BPN}/mime.types \
-                   ${sysconfdir}/${BPN}/extra/*"
-
-# We override here rather than append so that .so links are
-# included in the runtime package rather than here (-dev)
-# and to get build, icons, error into the -dev package
-FILES:${PN}-dev = "${datadir}/${BPN}/build \
-                   ${datadir}/${BPN}/icons \
-                   ${datadir}/${BPN}/error \
-                   ${includedir}/${BPN} \
-                   ${bindir}/apxs \
-                  "
-
-# Add the manual to -doc
-FILES:${PN}-doc += " ${datadir}/${BPN}/manual"
-
-FILES:${PN}-scripts += "${bindir}/dbmmanage"
-
-# Override this too - here is the default, less datadir
-FILES:${PN} =  "${bindir} ${sbindir} ${libexecdir} ${libdir} \
-                ${sysconfdir} ${libdir}/${BPN}"
-
-# We want htdocs and cgi-bin to go with the binary
-FILES:${PN} += "${datadir}/${BPN}/ ${libdir}/cgi-bin"
-
-FILES:${PN}-dbg += "${libdir}/${BPN}/modules/.debug"
-
-RDEPENDS:${PN} += "openssl libgcc"
-RDEPENDS:${PN}-scripts += "perl ${PN}"
-RDEPENDS:${PN}-dev = "perl"
-
-BBCLASSEXTEND = "native"
-
-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
-}
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.51.bb b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.51.bb
new file mode 100644
index 0000000..4b36c50
--- /dev/null
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.51.bb
@@ -0,0 +1,225 @@
+DESCRIPTION = "The Apache HTTP Server is a powerful, efficient, and \
+extensible web server."
+SUMMARY = "Apache HTTP Server"
+HOMEPAGE = "http://httpd.apache.org/"
+SECTION = "net"
+LICENSE = "Apache-2.0"
+
+SRC_URI = "${APACHE_MIRROR}/httpd/httpd-${PV}.tar.bz2 \
+           file://0001-configure-use-pkg-config-for-PCRE-detection.patch \
+           file://0002-apache2-bump-up-the-core-size-limit-if-CoreDumpDirec.patch \
+           file://0003-apache2-do-not-export-apr-apr-util-symbols-when-usin.patch \
+           file://0004-apache2-log-the-SELinux-context-at-startup.patch \
+           file://0005-replace-lynx-to-curl-in-apachectl-script.patch \
+           file://0006-apache2-fix-the-race-issue-of-parallel-installation.patch \
+           file://0007-apache2-allow-to-disable-selinux-support.patch \
+           file://apache-configure_perlbin.patch \
+           file://0001-support-apxs.in-force-destdir-to-be-empty-string.patch \
+          "
+
+SRC_URI:append:class-target = " \
+           file://0008-apache2-do-not-use-relative-path-for-gen_test_char.patch \
+           file://init \
+           file://apache2-volatile.conf \
+           file://apache2.service \
+           file://volatiles.04_apache2 \
+           "
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=bddeddfac80b2c9a882241d008bb41c3"
+SRC_URI[sha256sum] = "20e01d81fecf077690a4439e3969a9b22a09a8d43c525356e863407741b838f4"
+
+S = "${WORKDIR}/httpd-${PV}"
+
+inherit autotools update-rc.d pkgconfig systemd update-alternatives
+
+DEPENDS = "openssl expat pcre apr apr-util apache2-native "
+
+CVE_PRODUCT = "http_server"
+
+SSTATE_SCAN_FILES += "apxs config_vars.mk config.nice"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)}"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux,libselinux"
+PACKAGECONFIG[openldap] = "--enable-ldap --enable-authnz-ldap,--disable-ldap --disable-authnz-ldap,openldap"
+PACKAGECONFIG[zlib] = "--enable-deflate,,zlib,zlib"
+
+CFLAGS:append = " -DPATH_MAX=4096"
+
+EXTRA_OECONF:class-target = "\
+    --enable-layout=Debian \
+    --prefix=${base_prefix} \
+    --exec_prefix=${exec_prefix} \
+    --includedir=${includedir}/${BPN} \
+    --sysconfdir=${sysconfdir}/${BPN} \
+    --datadir=${datadir}/${BPN} \
+    --libdir=${libdir} \
+    --libexecdir=${libexecdir}/${BPN}/modules \
+    --localstatedir=${localstatedir} \
+    --enable-ssl \
+    --with-dbm=sdbm \
+    --with-gdbm=no \
+    --with-ndbm=no \
+    --with-berkeley-db=no \
+    --enable-info \
+    --enable-rewrite \
+    --enable-mpms-shared \
+    ap_cv_void_ptr_lt_long=no \
+    ac_cv_have_threadsafe_pollset=no \
+    "
+
+EXTRA_OECONF:class-native = "\
+    --prefix=${prefix} \
+    --includedir=${includedir}/${BPN} \
+    --sysconfdir=${sysconfdir}/${BPN} \
+    --datadir=${datadir}/${BPN} \
+    --libdir=${libdir} \
+    --libexecdir=${libdir}/${BPN}/modules \
+    --localstatedir=${localstatedir} \
+    "
+
+do_configure:prepend() {
+    sed -i -e 's:$''{prefix}/usr/lib/cgi-bin:$''{libexecdir}/cgi-bin:g' ${S}/config.layout
+}
+
+do_install:append:class-target() {
+    install -d ${D}/${sysconfdir}/init.d
+
+    cat ${WORKDIR}/init | \
+        sed -e 's,/usr/sbin/,${sbindir}/,g' \
+            -e 's,/usr/bin/,${bindir}/,g' \
+            -e 's,/usr/lib/,${libdir}/,g' \
+            -e 's,/etc/,${sysconfdir}/,g' \
+            -e 's,/usr/,${prefix}/,g' > ${D}/${sysconfdir}/init.d/${BPN}
+
+    chmod 755 ${D}/${sysconfdir}/init.d/${BPN}
+
+    # Remove the goofy original files...
+    rm -rf ${D}/${sysconfdir}/${BPN}/original
+
+    install -d ${D}${sysconfdir}/${BPN}/conf.d
+    install -d ${D}${sysconfdir}/${BPN}/modules.d
+
+    # Ensure configuration file pulls in conf.d and modules.d
+    printf "\nIncludeOptional ${sysconfdir}/${BPN}/conf.d/*.conf" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
+    printf "\nIncludeOptional ${sysconfdir}/${BPN}/modules.d/*.load" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
+    printf "\nIncludeOptional ${sysconfdir}/${BPN}/modules.d/*.conf\n\n" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
+
+    # Match with that is in init script
+    printf "\nPidFile /run/httpd.pid" >> ${D}/${sysconfdir}/${BPN}/httpd.conf
+
+    # Set 'ServerName' to fix error messages when restart apache service
+    sed -i 's/^#ServerName www.example.com/ServerName localhost/' ${D}/${sysconfdir}/${BPN}/httpd.conf
+
+    sed -i 's/^ServerRoot/#ServerRoot/' ${D}/${sysconfdir}/${BPN}/httpd.conf
+
+    sed -i -e 's,${STAGING_DIR_TARGET},,g' \
+           -e 's,${DEBUG_PREFIX_MAP},,g' \
+           -e 's,-fdebug-prefix-map[^ ]*,,g; s,-fmacro-prefix-map[^ ]*,,g; s,-ffile-prefix-map[^ ]*,,g' \
+           -e 's,${HOSTTOOLS_DIR}/,,g' \
+           -e 's,APU_INCLUDEDIR = .*,APU_INCLUDEDIR = ,g' \
+           -e 's,APU_CONFIG = .*,APU_CONFIG = ,g' ${D}${datadir}/apache2/build/config_vars.mk
+
+    sed -i -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+           -e 's,${DEBUG_PREFIX_MAP},,g' \
+           -e 's,${RECIPE_SYSROOT},,g' \
+           -e 's,-fdebug-prefix-map[^ ]*,,g; s,-fmacro-prefix-map[^ ]*,,g; s,-fmacro-prefix-map[^ ]*,,g' \
+           -e 's,APU_INCLUDEDIR = .*,APU_INCLUDEDIR = ,g' \
+           -e 's,".*/configure","configure",g' ${D}${datadir}/apache2/build/config.nice
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/tmpfiles.d/
+        install -m 0644 ${WORKDIR}/apache2-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
+
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/apache2.service ${D}${systemd_unitdir}/system
+        sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/apache2.service
+        sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' ${D}${systemd_unitdir}/system/apache2.service
+    elif ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/default/volatiles
+        install -m 0644 ${WORKDIR}/volatiles.04_apache2 ${D}${sysconfdir}/default/volatiles/04_apache2
+    fi
+
+    rm -rf ${D}${localstatedir} ${D}${sbindir}/envvars*
+    chown -R root:root ${D}
+}
+
+do_install:append:class-native() {
+    install -d ${D}${bindir} ${D}${libdir}
+    install -m 755 server/gen_test_char ${D}${bindir}
+}
+
+SYSROOT_PREPROCESS_FUNCS:append:class-target = " apache_sysroot_preprocess"
+
+apache_sysroot_preprocess() {
+    install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
+    install -m 755 ${D}${bindir}/apxs ${SYSROOT_DESTDIR}${bindir_crossscripts}
+    install -d ${SYSROOT_DESTDIR}${sbindir}
+    install -m 755 ${D}${sbindir}/apachectl ${SYSROOT_DESTDIR}${sbindir}
+    sed -i 's!my $installbuilddir = .*!my $installbuilddir = "${STAGING_DIR_HOST}/${datadir}/${BPN}/build";!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/apxs
+    sed -i 's!my $libtool = .*!my $libtool = "${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool";!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/apxs
+
+    sed -i 's!^APR_CONFIG = .*!APR_CONFIG = ${STAGING_BINDIR_CROSS}/apr-1-config!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!^APU_CONFIG = .*!APU_CONFIG = ${STAGING_BINDIR_CROSS}/apu-1-config!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!^includedir = .*!includedir = ${STAGING_INCDIR}/apache2!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!^CFLAGS = -I[^ ]*!CFLAGS = -I${STAGING_INCDIR}/openssl!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!^EXTRA_LDFLAGS = .*!EXTRA_LDFLAGS = -L${STAGING_LIBDIR}!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!^EXTRA_INCLUDES = .*!EXTRA_INCLUDES = -I$(includedir) -I. -I${STAGING_INCDIR}!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!--sysroot=[^ ]*!--sysroot=${STAGING_DIR_HOST}!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+}
+
+# Implications - used by update-rc.d scripts
+INITSCRIPT_NAME = "apache2"
+INITSCRIPT_PARAMS = "defaults 91 20"
+
+SYSTEMD_SERVICE:${PN} = "apache2.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "enable"
+
+ALTERNATIVE:${PN}-doc = "htpasswd.1"
+ALTERNATIVE_LINK_NAME[htpasswd.1] = "${mandir}/man1/htpasswd.1"
+
+PACKAGES = "${PN}-scripts ${PN}-doc ${PN}-dev ${PN}-dbg ${PN}"
+
+CONFFILES:${PN} = "${sysconfdir}/${BPN}/httpd.conf \
+                   ${sysconfdir}/${BPN}/magic \
+                   ${sysconfdir}/${BPN}/mime.types \
+                   ${sysconfdir}/${BPN}/extra/*"
+
+# We override here rather than append so that .so links are
+# included in the runtime package rather than here (-dev)
+# and to get build, icons, error into the -dev package
+FILES:${PN}-dev = "${datadir}/${BPN}/build \
+                   ${datadir}/${BPN}/icons \
+                   ${datadir}/${BPN}/error \
+                   ${includedir}/${BPN} \
+                   ${bindir}/apxs \
+                  "
+
+# Add the manual to -doc
+FILES:${PN}-doc += " ${datadir}/${BPN}/manual"
+
+FILES:${PN}-scripts += "${bindir}/dbmmanage"
+
+# Override this too - here is the default, less datadir
+FILES:${PN} =  "${bindir} ${sbindir} ${libexecdir} ${libdir} \
+                ${sysconfdir} ${libdir}/${BPN}"
+
+# We want htdocs and cgi-bin to go with the binary
+FILES:${PN} += "${datadir}/${BPN}/ ${libdir}/cgi-bin"
+
+FILES:${PN}-dbg += "${libdir}/${BPN}/modules/.debug"
+
+RDEPENDS:${PN} += "openssl libgcc"
+RDEPENDS:${PN}-scripts += "perl ${PN}"
+RDEPENDS:${PN}-dev = "perl"
+
+BBCLASSEXTEND = "native"
+
+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
+}
diff --git a/meta-openembedded/meta-webserver/recipes-php/xdebug/xdebug_2.9.5.bb b/meta-openembedded/meta-webserver/recipes-php/xdebug/xdebug_2.9.5.bb
deleted file mode 100644
index b03517b..0000000
--- a/meta-openembedded/meta-webserver/recipes-php/xdebug/xdebug_2.9.5.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Debugging and profiling extension for PHP"
-LICENSE = "Xdebug"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=92d94a330d34ee6edc2638450736f119"
-
-DEPENDS = "php re2c-native"
-
-SRC_URI = "http://xdebug.org/files/xdebug-${PV}.tgz"
-
-SRC_URI[md5sum] = "c04be1bf225b768bf627dc92e5a1f9df"
-SRC_URI[sha256sum] = "775b1705109611b996d6a713fe14117a67846e157eb7dbf349bc0b055e861a10"
-
-UPSTREAM_CHECK_REGEX = "xdebug-(?P<pver>\d+(\.\d+)+)\.tgz"
-
-inherit autotools
-
-EXTRA_OECONF += "--enable-xdebug -with-php-config=${STAGING_BINDIR_CROSS}/php-config"
-
-do_configure() {
-    cd ${S}
-    ${STAGING_BINDIR_CROSS}/phpize
-    cd ${B}
-
-    # Running autoreconf as autotools_do_configure would do here
-    # breaks the libtool configuration resulting in a failure later
-    # in do_compile. It's possible this may be fixable, however the
-    # easiest course of action for the moment is to avoid doing that.
-    oe_runconf
-}
-
-do_install() {
-    oe_runmake install INSTALL_ROOT=${D}
-}
-
-FILES:${PN} += "${libdir}/php*/extensions/*/*.so"
-FILES:${PN}-dbg += "${libdir}/php*/extensions/*/.debug"
diff --git a/meta-openembedded/meta-webserver/recipes-php/xdebug/xdebug_3.1.1.bb b/meta-openembedded/meta-webserver/recipes-php/xdebug/xdebug_3.1.1.bb
new file mode 100644
index 0000000..580ae7e
--- /dev/null
+++ b/meta-openembedded/meta-webserver/recipes-php/xdebug/xdebug_3.1.1.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Debugging and profiling extension for PHP"
+LICENSE = "Xdebug"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=92d94a330d34ee6edc2638450736f119"
+
+DEPENDS = "php re2c-native"
+
+SRC_URI = "http://xdebug.org/files/xdebug-${PV}.tgz"
+
+SRC_URI[sha256sum] = "9be3ae0fdb4dc4a4c68084626cddc56f12396487e309a8c8dd318f0f900d1a68"
+
+UPSTREAM_CHECK_REGEX = "xdebug-(?P<pver>\d+(\.\d+)+)\.tgz"
+
+inherit autotools
+
+EXTRA_OECONF += "--enable-xdebug -with-php-config=${STAGING_BINDIR_CROSS}/php-config"
+
+do_configure() {
+    cd ${S}
+    ${STAGING_BINDIR_CROSS}/phpize
+    cd ${B}
+
+    # Running autoreconf as autotools_do_configure would do here
+    # breaks the libtool configuration resulting in a failure later
+    # in do_compile. It's possible this may be fixable, however the
+    # easiest course of action for the moment is to avoid doing that.
+    oe_runconf
+}
+
+do_install() {
+    oe_runmake install INSTALL_ROOT=${D}
+}
+
+FILES:${PN} += "${libdir}/php*/extensions/*/*.so"
+FILES:${PN}-dbg += "${libdir}/php*/extensions/*/.debug"
diff --git a/meta-openembedded/meta-xfce/classes/xfce.bbclass b/meta-openembedded/meta-xfce/classes/xfce.bbclass
index 7cd8067..913202b 100644
--- a/meta-openembedded/meta-xfce/classes/xfce.bbclass
+++ b/meta-openembedded/meta-xfce/classes/xfce.bbclass
@@ -1,6 +1,6 @@
 def xfce_verdir(v):
     import re
-    m = re.match("^([0-9]+)\.([0-9]+)", v)
+    m = re.match(r"^([0-9]+)\.([0-9]+)", v)
     return "%s.%s" % (m.group(1), m.group(2))
 
 HOMEPAGE = "http://www.xfce.org"
diff --git a/meta-phosphor/recipes-core/systemd/systemd_249.3.bbappend b/meta-phosphor/recipes-core/systemd/systemd_249.3.bbappend
deleted file mode 100644
index 41bdcf9..0000000
--- a/meta-phosphor/recipes-core/systemd/systemd_249.3.bbappend
+++ /dev/null
@@ -1,5 +0,0 @@
-# Pin to v249.5 to fix systemd-networkd issues.
-SRCREV = "00b0393e65252bf631670604f58b844780b08c50"
-
-# Fix https://github.com/systemd/systemd/issues/21113
-SRC_URI += "file://0001-conf-parse-make-config_parse_many-optionally-save-st.patch"
diff --git a/meta-phosphor/recipes-core/systemd/systemd_249.5.bbappend b/meta-phosphor/recipes-core/systemd/systemd_249.5.bbappend
new file mode 100644
index 0000000..848d824
--- /dev/null
+++ b/meta-phosphor/recipes-core/systemd/systemd_249.5.bbappend
@@ -0,0 +1,2 @@
+# Fix https://github.com/systemd/systemd/issues/21113
+SRC_URI += "file://0001-conf-parse-make-config_parse_many-optionally-save-st.patch"
diff --git a/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb b/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
index 657123f..96453ef 100644
--- a/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
+++ b/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
@@ -278,6 +278,12 @@
     echo "dtparam=audio=on" >> $CONFIG
 }
 
+do_deploy:append() {
+    if grep -q -E '^.{80}.$' ${DEPLOYDIR}/${BOOTFILES_DIR_NAME}/config.txt; then
+        bbwarn "config.txt contains lines longer than 80 characters, this is not supported"
+    fi
+}
+
 addtask deploy before do_build after do_install
 do_deploy[dirs] += "${DEPLOYDIR}/${BOOTFILES_DIR_NAME}"
 
diff --git a/poky/bitbake/README b/poky/bitbake/README
index 2d5cd25..80a9711 100644
--- a/poky/bitbake/README
+++ b/poky/bitbake/README
@@ -7,7 +7,7 @@
 stacks using a task-oriented approach.
 
 For information about Bitbake, see the OpenEmbedded website:
-    http://www.openembedded.org/
+    https://www.openembedded.org/
 
 Bitbake plain documentation can be found under the doc directory or its integrated
 html version at the Yocto Project website:
@@ -17,7 +17,7 @@
 ------------
 
 Please refer to
-http://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded
+https://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded
 for guidelines on how to submit patches, just note that the latter documentation is intended
 for OpenEmbedded (and its core) not bitbake patches (bitbake-devel@lists.openembedded.org)
 but in general main guidelines apply. Once the commit(s) have been created, the way to send
@@ -28,11 +28,11 @@
 
 Mailing list:
 
-    http://lists.openembedded.org/mailman/listinfo/bitbake-devel
+    https://lists.openembedded.org/g/bitbake-devel
 
 Source code:
 
-    http://git.openembedded.org/bitbake/
+    https://git.openembedded.org/bitbake/
 
 Testing:
 
diff --git a/poky/bitbake/bin/bitbake b/poky/bitbake/bin/bitbake
index d3ee8e9..dcabeae 100755
--- a/poky/bitbake/bin/bitbake
+++ b/poky/bitbake/bin/bitbake
@@ -28,7 +28,7 @@
 if sys.getfilesystemencoding() != "utf-8":
     sys.exit("Please use a locale setting which supports UTF-8 (such as LANG=en_US.UTF-8).\nPython can't change the filesystem locale after loading so we need a UTF-8 when Python starts or things won't work.")
 
-__version__ = "1.51.1"
+__version__ = "1.53.0"
 
 if __name__ == "__main__":
     if __version__ != bb.__version__:
diff --git a/poky/bitbake/bin/bitbake-worker b/poky/bitbake/bin/bitbake-worker
index 115bc1d..bf96207 100755
--- a/poky/bitbake/bin/bitbake-worker
+++ b/poky/bitbake/bin/bitbake-worker
@@ -237,6 +237,7 @@
                 the_data = databuilder.mcdata[mc]
                 the_data.setVar("BB_WORKERCONTEXT", "1")
                 the_data.setVar("BB_TASKDEPDATA", taskdepdata)
+                the_data.setVar('BB_CURRENTTASK', taskname.replace("do_", ""))
                 if cfg.limited_deps:
                     the_data.setVar("BB_LIMITEDDEPS", "1")
                 the_data.setVar("BUILDNAME", workerdata["buildname"])
@@ -287,10 +288,12 @@
             try:
                 if dry_run:
                     return 0
-                ret = bb.build.exec_task(fn, taskname, the_data, cfg.profile)
-                if fakeroot:
-                    fakerootcmd = shlex.split(the_data.getVar("FAKEROOTCMD"))
-                    subprocess.run(fakerootcmd + ['-S'], check=True, stdout=subprocess.PIPE)
+                try:
+                    ret = bb.build.exec_task(fn, taskname, the_data, cfg.profile)
+                finally:
+                    if fakeroot:
+                        fakerootcmd = shlex.split(the_data.getVar("FAKEROOTCMD"))
+                        subprocess.run(fakerootcmd + ['-S'], check=True, stdout=subprocess.PIPE)
                 return ret
             except:
                 os._exit(1)
@@ -415,7 +418,11 @@
         if self.queue.startswith(b"<" + item + b">"):
             index = self.queue.find(b"</" + item + b">")
             while index != -1:
-                func(self.queue[(len(item) + 2):index])
+                try:
+                    func(self.queue[(len(item) + 2):index])
+                except pickle.UnpicklingError:
+                    workerlog_write("Unable to unpickle data: %s\n" % ":".join("{:02x}".format(c) for c in self.queue))
+                    raise
                 self.queue = self.queue[(index + len(item) + 3):]
                 index = self.queue.find(b"</" + item + b">")
 
diff --git a/poky/bitbake/doc/README b/poky/bitbake/doc/README
index 6259582..16e6cdf 100644
--- a/poky/bitbake/doc/README
+++ b/poky/bitbake/doc/README
@@ -13,7 +13,7 @@
 Each folder is self-contained regarding content and figures.
 
 If you want to find HTML versions of the BitBake manuals on the web, 
-go to http://www.openembedded.org/wiki/Documentation. 
+go to https://www.openembedded.org/wiki/Documentation.
 
 Sphinx
 ======
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst
index a944d0f..4396830 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-fetching.rst
@@ -74,7 +74,7 @@
 some confusion when you are providing URLs for the :term:`SRC_URI` variable.
 Consider the following two URLs::
 
-   http://git.yoctoproject.org/git/poky;protocol=git
+   https://git.yoctoproject.org/git/poky;protocol=git
    git://git.yoctoproject.org/git/poky;protocol=http
 
 In the former case, the URL is passed to the ``wget`` fetcher, which does not
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.rst
index 83a415d..722dc5a 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-hello.rst
@@ -99,7 +99,7 @@
 
    This example was inspired by and drew heavily from
    `Mailing List post - The BitBake equivalent of "Hello, World!"
-   <http://www.mail-archive.com/yocto@yoctoproject.org/msg09379.html>`_.
+   <https://www.mail-archive.com/yocto@yoctoproject.org/msg09379.html>`_.
 
 As stated earlier, the goal of this example is to eventually compile
 "Hello World". However, it is unknown what BitBake needs and what you
@@ -205,7 +205,7 @@
     recipe files. For this example, you need to create the file in your
     project directory and define some key BitBake variables. For more
     information on the ``bitbake.conf`` file, see
-    http://git.openembedded.org/bitbake/tree/conf/bitbake.conf.
+    https://git.openembedded.org/bitbake/tree/conf/bitbake.conf.
 
     Use the following commands to create the ``conf`` directory in the
     project directory::
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.rst
index 76c8e3d..42263ce 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-intro.rst
@@ -60,11 +60,11 @@
 -  OpenEmbedded, a metadata set utilized by BitBake
 
 Today, BitBake is the primary basis of the
-`OpenEmbedded <http://www.openembedded.org/>`__ project, which is being
+`OpenEmbedded <https://www.openembedded.org/>`__ project, which is being
 used to build and maintain Linux distributions such as the `Angstrom
 Distribution <http://www.angstrom-distribution.org/>`__, and which is
 also being used as the build tool for Linux projects such as the `Yocto
-Project <http://www.yoctoproject.org>`__.
+Project <https://www.yoctoproject.org>`__.
 
 Prior to BitBake, no other build tool adequately met the needs of an
 aspiring embedded Linux distribution. All of the build systems used by
@@ -319,7 +319,7 @@
 
    The following example downloads a snapshot of BitBake version 1.17.0::
 
-     $ wget http://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz
+     $ wget https://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz
      $ tar zxpvf bitbake-1.17.0.tar.gz
 
    After extraction of the tarball using
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst
index 8862e16..e955beb 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst
@@ -281,6 +281,62 @@
 
          BB_GENERATE_MIRROR_TARBALLS = "1"
 
+   :term:`BB_GENERATE_SHALLOW_TARBALLS`
+      Setting this variable to "1" when :term:`BB_GIT_SHALLOW` is also set to
+      "1" causes bitbake to generate shallow mirror tarballs when fetching git
+      repositories. The number of commits included in the shallow mirror
+      tarballs is controlled by :term:`BB_GIT_SHALLOW_DEPTH`.
+
+      If both :term:`BB_GIT_SHALLOW` and :term:`BB_GENERATE_MIRROR_TARBALLS` are
+      enabled, bitbake will generate shallow mirror tarballs by default for git
+      repositories. This separate variable exists so that shallow tarball
+      generation can be enabled without needing to also enable normal mirror
+      generation if it is not desired.
+
+      For example usage, see :term:`BB_GIT_SHALLOW`.
+
+   :term:`BB_GIT_SHALLOW`
+      Setting this variable to "1" enables the support for fetching, using and
+      generating mirror tarballs of `shallow git repositories <https://riptutorial.com/git/example/4584/shallow-clone>`_.
+      The external `git-make-shallow <https://git.openembedded.org/bitbake/tree/bin/git-make-shallow>`_
+      script is used for shallow mirror tarball creation.
+
+      When :term:`BB_GIT_SHALLOW` is enabled, bitbake will attempt to fetch a shallow
+      mirror tarball. If the shallow mirror tarball cannot be fetched, it will
+      try to fetch the full mirror tarball and use that.
+
+      When a mirror tarball is not available, a full git clone will be performed
+      regardless of whether this variable is set or not. Support for shallow
+      clones is not currently implemented as git does not directly support
+      shallow cloning a particular git commit hash (it only supports cloning
+      from a tag or branch reference).
+
+      See also :term:`BB_GIT_SHALLOW_DEPTH` and
+      :term:`BB_GENERATE_SHALLOW_TARBALLS`.
+
+      Example usage::
+
+         BB_GIT_SHALLOW ?= "1"
+
+         # Keep only the top commit
+         BB_GIT_SHALLOW_DEPTH ?= "1"
+
+         # This defaults to enabled if both BB_GIT_SHALLOW and
+         # BB_GENERATE_MIRROR_TARBALLS are enabled
+         BB_GENERATE_SHALLOW_TARBALLS ?= "1"
+
+   :term:`BB_GIT_SHALLOW_DEPTH`
+      When used with :term:`BB_GENERATE_SHALLOW_TARBALLS`, this variable sets
+      the number of commits to include in generated shallow mirror tarballs.
+      With a depth of 1, only the commit referenced in :term:`SRCREV` is
+      included in the shallow mirror tarball. Increasing the depth includes
+      additional parent commits, working back through the commit history.
+
+      If this variable is unset, bitbake will default to a depth of 1 when
+      generating shallow mirror tarballs.
+
+      For example usage, see :term:`BB_GIT_SHALLOW`.
+
    :term:`BB_HASHBASE_WHITELIST`
       Lists variables that are excluded from checksum and dependency data.
       Variables that are excluded can therefore change without affecting
@@ -538,7 +594,7 @@
 
       You can use this variable in combination with task overrides to raise
       or lower priorities of specific tasks. For example, on the `Yocto
-      Project <http://www.yoctoproject.org>`__ autobuilder, QEMU emulation
+      Project <https://www.yoctoproject.org>`__ autobuilder, QEMU emulation
       in images is given a higher priority as compared to build tasks to
       ensure that images do not suffer timeouts on loaded systems.
 
@@ -1123,10 +1179,10 @@
       your configuration::
 
          PREMIRRORS:prepend = "\
-         git://.*/.* http://www.yoctoproject.org/sources/ \n \
-         ftp://.*/.* http://www.yoctoproject.org/sources/ \n \
-         http://.*/.* http://www.yoctoproject.org/sources/ \n \
-         https://.*/.* http://www.yoctoproject.org/sources/ \n"
+         git://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
+         ftp://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
+         http://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
+         https://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n"
 
       These changes cause the build system to intercept Git, FTP, HTTP, and
       HTTPS requests and direct them to the ``http://`` sources mirror. You can
diff --git a/poky/bitbake/lib/bb/__init__.py b/poky/bitbake/lib/bb/__init__.py
index 5c248d3..e01b8d5 100644
--- a/poky/bitbake/lib/bb/__init__.py
+++ b/poky/bitbake/lib/bb/__init__.py
@@ -9,7 +9,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 #
 
-__version__ = "1.51.1"
+__version__ = "1.53.0"
 
 import sys
 if sys.version_info < (3, 6, 0):
diff --git a/poky/bitbake/lib/bb/asyncrpc/client.py b/poky/bitbake/lib/bb/asyncrpc/client.py
index 50e60d5..3496019 100644
--- a/poky/bitbake/lib/bb/asyncrpc/client.py
+++ b/poky/bitbake/lib/bb/asyncrpc/client.py
@@ -7,6 +7,7 @@
 import json
 import os
 import socket
+import sys
 from . import chunkify, DEFAULT_MAX_CHUNK
 
 
@@ -129,7 +130,7 @@
         # required (but harmless) with it.
         asyncio.set_event_loop(self.loop)
 
-        self._add_methods('connect_tcp', 'close', 'ping')
+        self._add_methods('connect_tcp', 'ping')
 
     @abc.abstractmethod
     def _get_async_client(self):
@@ -163,3 +164,9 @@
     @max_chunk.setter
     def max_chunk(self, value):
         self.client.max_chunk = value
+
+    def close(self):
+        self.loop.run_until_complete(self.client.close())
+        if sys.version_info >= (3, 6):
+            self.loop.run_until_complete(self.loop.shutdown_asyncgens())
+        self.loop.close()
diff --git a/poky/bitbake/lib/bb/build.py b/poky/bitbake/lib/bb/build.py
index 7e4ab9f..d6418e4 100644
--- a/poky/bitbake/lib/bb/build.py
+++ b/poky/bitbake/lib/bb/build.py
@@ -569,7 +569,6 @@
 def _task_data(fn, task, d):
     localdata = bb.data.createCopy(d)
     localdata.setVar('BB_FILENAME', fn)
-    localdata.setVar('BB_CURRENTTASK', task[3:])
     localdata.setVar('OVERRIDES', 'task-%s:%s' %
                      (task[3:].replace('_', '-'), d.getVar('OVERRIDES', False)))
     localdata.finalize()
diff --git a/poky/bitbake/lib/bb/compress/_pipecompress.py b/poky/bitbake/lib/bb/compress/_pipecompress.py
index 4b9f662..5de17a8 100644
--- a/poky/bitbake/lib/bb/compress/_pipecompress.py
+++ b/poky/bitbake/lib/bb/compress/_pipecompress.py
@@ -49,7 +49,7 @@
             raise ValueError("Argument 'newline' not supported in binary mode")
 
     file_mode = mode.replace("t", "")
-    if isinstance(filename, (str, bytes, os.PathLike)):
+    if isinstance(filename, (str, bytes, os.PathLike, int)):
         binary_file = cls(filename, file_mode, **kwargs)
     elif hasattr(filename, "read") or hasattr(filename, "write"):
         binary_file = cls(None, file_mode, fileobj=filename, **kwargs)
diff --git a/poky/bitbake/lib/bb/fetch2/__init__.py b/poky/bitbake/lib/bb/fetch2/__init__.py
index ee29d89..666cc13 100644
--- a/poky/bitbake/lib/bb/fetch2/__init__.py
+++ b/poky/bitbake/lib/bb/fetch2/__init__.py
@@ -884,7 +884,7 @@
         (output, errors) = bb.process.run(cmd, log=log, shell=True, stderr=subprocess.PIPE, cwd=workdir)
         success = True
     except bb.process.NotFoundError as e:
-        error_message = "Fetch command %s" % (e.command)
+        error_message = "Fetch command %s not found" % (e.command)
     except bb.process.ExecutionError as e:
         if e.stdout:
             output = "output:\n%s\n%s" % (e.stdout, e.stderr)
@@ -1721,7 +1721,9 @@
                     self.d.setVar("BB_NO_NETWORK", "1")
 
                 firsterr = None
-                verified_stamp = m.verify_donestamp(ud, self.d)
+                verified_stamp = False
+                if done:
+                    verified_stamp = m.verify_donestamp(ud, self.d)
                 if not done and (not verified_stamp or m.need_update(ud, self.d)):
                     try:
                         if not trusted_network(self.d, ud.url):
@@ -1780,7 +1782,11 @@
 
     def checkstatus(self, urls=None):
         """
-        Check all urls exist upstream
+        Check all URLs exist upstream.
+
+        Returns None if the URLs exist, raises FetchError if the check wasn't
+        successful but there wasn't an error (such as file not found), and
+        raises other exceptions in error cases.
         """
 
         if not urls:
diff --git a/poky/bitbake/lib/bb/fetch2/gitsm.py b/poky/bitbake/lib/bb/fetch2/gitsm.py
index a4527bf..a7110a9 100644
--- a/poky/bitbake/lib/bb/fetch2/gitsm.py
+++ b/poky/bitbake/lib/bb/fetch2/gitsm.py
@@ -140,16 +140,6 @@
         if Git.need_update(self, ud, d):
             return True
 
-        try:
-            # Check for the nugget dropped by the download operation
-            known_srcrevs = runfetchcmd("%s config --get-all bitbake.srcrev" % \
-                                        (ud.basecmd), d, workdir=ud.clonedir)
-
-            if ud.revisions[ud.names[0]] in known_srcrevs.split():
-                return False
-        except bb.fetch2.FetchError:
-            pass
-
         need_update_list = []
         def need_update_submodule(ud, url, module, modpath, workdir, d):
             url += ";bareclone=1;nobranch=1"
@@ -172,11 +162,6 @@
             shutil.rmtree(tmpdir)
         else:
             self.process_submodules(ud, ud.clonedir, need_update_submodule, d)
-            if len(need_update_list) == 0:
-                # We already have the required commits of all submodules. Drop
-                # a nugget so we don't need to check again.
-                runfetchcmd("%s config --add bitbake.srcrev %s" % \
-                            (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=ud.clonedir)
 
         if len(need_update_list) > 0:
             logger.debug('gitsm: Submodules requiring update: %s' % (' '.join(need_update_list)))
@@ -209,9 +194,6 @@
             shutil.rmtree(tmpdir)
         else:
             self.process_submodules(ud, ud.clonedir, download_submodule, d)
-            # Drop a nugget for the srcrev we've fetched (used by need_update)
-            runfetchcmd("%s config --add bitbake.srcrev %s" % \
-                        (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=ud.clonedir)
 
     def unpack(self, ud, destdir, d):
         def unpack_submodules(ud, url, module, modpath, workdir, d):
diff --git a/poky/bitbake/lib/bb/fetch2/npm.py b/poky/bitbake/lib/bb/fetch2/npm.py
index 4789850..e497c38 100644
--- a/poky/bitbake/lib/bb/fetch2/npm.py
+++ b/poky/bitbake/lib/bb/fetch2/npm.py
@@ -69,17 +69,35 @@
     bb.utils.mkdirhier(destdir)
     cmd = "tar --extract --gzip --file=%s" % shlex.quote(tarball)
     cmd += " --no-same-owner"
+    cmd += " --delay-directory-restore"
     cmd += " --strip-components=1"
     runfetchcmd(cmd, d, workdir=destdir)
+    runfetchcmd("chmod -R +X %s" % (destdir), d, quiet=True, workdir=destdir)
 
 class NpmEnvironment(object):
     """
     Using a npm config file seems more reliable than using cli arguments.
     This class allows to create a controlled environment for npm commands.
     """
-    def __init__(self, d, configs=None):
+    def __init__(self, d, configs=None, npmrc=None):
         self.d = d
-        self.configs = configs
+
+        if configs:
+            self.user_config = tempfile.NamedTemporaryFile(mode="w", buffering=1)
+            self.user_config_name = self.user_config.name
+            for key, value in configs:
+                self.user_config.write("%s=%s\n" % (key, value))
+        else:
+            self.user_config_name = "/dev/null"
+
+        if npmrc:
+            self.global_config_name = npmrc
+        else:
+            self.global_config_name = "/dev/null"
+
+    def __del__(self):
+        if self.user_config:
+            self.user_config.close()
 
     def run(self, cmd, args=None, configs=None, workdir=None):
         """Run npm command in a controlled environment"""
@@ -87,23 +105,19 @@
             d = bb.data.createCopy(self.d)
             d.setVar("HOME", tmpdir)
 
-            cfgfile = os.path.join(tmpdir, "npmrc")
-
             if not workdir:
                 workdir = tmpdir
 
             def _run(cmd):
-                cmd = "NPM_CONFIG_USERCONFIG=%s " % cfgfile + cmd
-                cmd = "NPM_CONFIG_GLOBALCONFIG=%s " % cfgfile + cmd
+                cmd = "NPM_CONFIG_USERCONFIG=%s " % (self.user_config_name) + cmd
+                cmd = "NPM_CONFIG_GLOBALCONFIG=%s " % (self.global_config_name) + cmd
                 return runfetchcmd(cmd, d, workdir=workdir)
 
-            if self.configs:
-                for key, value in self.configs:
-                    _run("npm config set %s %s" % (key, shlex.quote(value)))
-
             if configs:
+                bb.warn("Use of configs argument of NpmEnvironment.run() function"
+                    " is deprecated. Please use args argument instead.")
                 for key, value in configs:
-                    _run("npm config set %s %s" % (key, shlex.quote(value)))
+                    cmd += " --%s=%s" % (key, shlex.quote(value))
 
             if args:
                 for key, value in args:
@@ -165,14 +179,14 @@
 
     def _resolve_proxy_url(self, ud, d):
         def _npm_view():
-            configs = []
-            configs.append(("json", "true"))
-            configs.append(("registry", ud.registry))
+            args = []
+            args.append(("json", "true"))
+            args.append(("registry", ud.registry))
             pkgver = shlex.quote(ud.package + "@" + ud.version)
             cmd = ud.basecmd + " view %s" % pkgver
             env = NpmEnvironment(d)
             check_network_access(d, cmd, ud.registry)
-            view_string = env.run(cmd, configs=configs)
+            view_string = env.run(cmd, args=args)
 
             if not view_string:
                 raise FetchError("Unavailable package %s" % pkgver, ud.url)
diff --git a/poky/bitbake/lib/bb/fetch2/npmsw.py b/poky/bitbake/lib/bb/fetch2/npmsw.py
index 0c3511d..426a139 100644
--- a/poky/bitbake/lib/bb/fetch2/npmsw.py
+++ b/poky/bitbake/lib/bb/fetch2/npmsw.py
@@ -24,11 +24,14 @@
 from bb.fetch2 import Fetch
 from bb.fetch2 import FetchMethod
 from bb.fetch2 import ParameterError
+from bb.fetch2 import runfetchcmd
 from bb.fetch2 import URI
 from bb.fetch2.npm import npm_integrity
 from bb.fetch2.npm import npm_localfile
 from bb.fetch2.npm import npm_unpack
 from bb.utils import is_semver
+from bb.utils import lockfile
+from bb.utils import unlockfile
 
 def foreach_dependencies(shrinkwrap, callback=None, dev=False):
     """
@@ -78,6 +81,7 @@
             extrapaths = []
             destsubdirs = [os.path.join("node_modules", dep) for dep in deptree]
             destsuffix = os.path.join(*destsubdirs)
+            unpack = True
 
             integrity = params.get("integrity", None)
             resolved = params.get("resolved", None)
@@ -148,7 +152,12 @@
 
                 url = str(uri)
 
-            # local tarball sources and local link sources are unsupported
+            # Handle local tarball and link sources
+            elif version.startswith("file"):
+                localpath = version[5:]
+                if not version.endswith(".tgz"):
+                    unpack = False
+
             else:
                 raise ParameterError("Unsupported dependency: %s" % name, ud.url)
 
@@ -157,6 +166,7 @@
                 "localpath": localpath,
                 "extrapaths": extrapaths,
                 "destsuffix": destsuffix,
+                "unpack": unpack,
             })
 
         try:
@@ -177,7 +187,7 @@
         # This fetcher resolves multiple URIs from a shrinkwrap file and then
         # forwards it to a proxy fetcher. The management of the donestamp file,
         # the lockfile and the checksums are forwarded to the proxy fetcher.
-        ud.proxy = Fetch([dep["url"] for dep in ud.deps], data)
+        ud.proxy = Fetch([dep["url"] for dep in ud.deps if dep["url"]], data)
         ud.needdonestamp = False
 
     @staticmethod
@@ -187,7 +197,9 @@
             proxy_ud = ud.proxy.ud[proxy_url]
             proxy_d = ud.proxy.d
             proxy_ud.setup_localpath(proxy_d)
+            lf = lockfile(proxy_ud.lockfile)
             returns.append(handle(proxy_ud.method, proxy_ud, proxy_d))
+            unlockfile(lf)
         return returns
 
     def verify_donestamp(self, ud, d):
@@ -237,7 +249,16 @@
 
         for dep in manual:
             depdestdir = os.path.join(destdir, dep["destsuffix"])
-            npm_unpack(dep["localpath"], depdestdir, d)
+            if dep["url"]:
+                npm_unpack(dep["localpath"], depdestdir, d)
+            else:
+                depsrcdir= os.path.join(destdir, dep["localpath"])
+                if dep["unpack"]:
+                    npm_unpack(depsrcdir, depdestdir, d)
+                else:
+                    bb.utils.mkdirhier(depdestdir)
+                    cmd = 'cp -fpPRH "%s/." .' % (depsrcdir)
+                    runfetchcmd(cmd, d, workdir=depdestdir)
 
     def clean(self, ud, d):
         """Clean any existing full or partial download"""
diff --git a/poky/bitbake/lib/bb/fetch2/perforce.py b/poky/bitbake/lib/bb/fetch2/perforce.py
index e2a41a4..3b6fa4b 100644
--- a/poky/bitbake/lib/bb/fetch2/perforce.py
+++ b/poky/bitbake/lib/bb/fetch2/perforce.py
@@ -134,7 +134,7 @@
 
         ud.setup_revisions(d)
 
-        ud.localfile = d.expand('%s_%s_%s_%s.tar.gz' % (cleanedhost, cleanedpath, cleandedmodule, ud.revision))
+        ud.localfile = d.expand('%s_%s_%s_%s.tar.gz' % (cleanedhost, cleanedpath, cleanedmodule, ud.revision))
 
     def _buildp4command(self, ud, d, command, depot_filename=None):
         """
diff --git a/poky/bitbake/lib/bb/siggen.py b/poky/bitbake/lib/bb/siggen.py
index 625a9cf..578ba5d 100644
--- a/poky/bitbake/lib/bb/siggen.py
+++ b/poky/bitbake/lib/bb/siggen.py
@@ -11,6 +11,8 @@
 import bb.data
 import difflib
 import simplediff
+import json
+import bb.compress.zstd
 from bb.checksum import FileChecksumCache
 from bb import runqueue
 import hashserv
@@ -19,6 +21,17 @@
 logger = logging.getLogger('BitBake.SigGen')
 hashequiv_logger = logging.getLogger('BitBake.SigGen.HashEquiv')
 
+class SetEncoder(json.JSONEncoder):
+    def default(self, obj):
+        if isinstance(obj, set):
+            return dict(_set_object=list(sorted(obj)))
+        return json.JSONEncoder.default(self, obj)
+
+def SetDecoder(dct):
+    if '_set_object' in dct:
+        return set(dct['_set_object'])
+    return dct
+
 def init(d):
     siggens = [obj for obj in globals().values()
                       if type(obj) is type and issubclass(obj, SignatureGenerator)]
@@ -398,9 +411,9 @@
 
         fd, tmpfile = tempfile.mkstemp(dir=os.path.dirname(sigfile), prefix="sigtask.")
         try:
-            with os.fdopen(fd, "wb") as stream:
-                p = pickle.dump(data, stream, -1)
-                stream.flush()
+            with bb.compress.zstd.open(fd, "wt", encoding="utf-8", num_threads=1) as f:
+                json.dump(data, f, sort_keys=True, separators=(",", ":"), cls=SetEncoder)
+                f.flush()
             os.chmod(tmpfile, 0o664)
             bb.utils.rename(tmpfile, sigfile)
         except (OSError, IOError) as err:
@@ -794,12 +807,10 @@
         formatparams.update(values)
         return formatstr.format(**formatparams)
 
-    with open(a, 'rb') as f:
-        p1 = pickle.Unpickler(f)
-        a_data = p1.load()
-    with open(b, 'rb') as f:
-        p2 = pickle.Unpickler(f)
-        b_data = p2.load()
+    with bb.compress.zstd.open(a, "rt", encoding="utf-8", num_threads=1) as f:
+        a_data = json.load(f, object_hook=SetDecoder)
+    with bb.compress.zstd.open(b, "rt", encoding="utf-8", num_threads=1) as f:
+        b_data = json.load(f, object_hook=SetDecoder)
 
     def dict_diff(a, b, whitelist=set()):
         sa = set(a.keys())
@@ -815,11 +826,11 @@
 
     def file_checksums_diff(a, b):
         from collections import Counter
-        # Handle old siginfo format
-        if isinstance(a, dict):
-            a = [(os.path.basename(f), cs) for f, cs in a.items()]
-        if isinstance(b, dict):
-            b = [(os.path.basename(f), cs) for f, cs in b.items()]
+
+        # Convert lists back to tuples
+        a = [(f[0], f[1]) for f in a]
+        b = [(f[0], f[1]) for f in b]
+
         # Compare lists, ensuring we can handle duplicate filenames if they exist
         removedcount = Counter(a)
         removedcount.subtract(b)
@@ -902,9 +913,9 @@
                 output.append(color_format("{color_title}Variable {var} value changed from '{color_default}{oldval}{color_title}' to '{color_default}{newval}{color_title}'{color_default}", var=dep, oldval=oldval, newval=newval))
 
     if not 'file_checksum_values' in a_data:
-         a_data['file_checksum_values'] = {}
+         a_data['file_checksum_values'] = []
     if not 'file_checksum_values' in b_data:
-         b_data['file_checksum_values'] = {}
+         b_data['file_checksum_values'] = []
 
     changed, added, removed = file_checksums_diff(a_data['file_checksum_values'], b_data['file_checksum_values'])
     if changed:
@@ -1031,9 +1042,8 @@
 def dump_sigfile(a):
     output = []
 
-    with open(a, 'rb') as f:
-        p1 = pickle.Unpickler(f)
-        a_data = p1.load()
+    with bb.compress.zstd.open(a, "rt", encoding="utf-8", num_threads=1) as f:
+        a_data = json.load(f, object_hook=SetDecoder)
 
     output.append("basewhitelist: %s" % (a_data['basewhitelist']))
 
diff --git a/poky/bitbake/lib/bb/tests/fetch.py b/poky/bitbake/lib/bb/tests/fetch.py
index af292a2..8ad1c85 100644
--- a/poky/bitbake/lib/bb/tests/fetch.py
+++ b/poky/bitbake/lib/bb/tests/fetch.py
@@ -376,7 +376,7 @@
     def setUp(self):
         self.origdir = os.getcwd()
         self.d = bb.data.init()
-        self.tempdir = tempfile.mkdtemp()
+        self.tempdir = tempfile.mkdtemp(prefix="bitbake-fetch-")
         self.dldir = os.path.join(self.tempdir, "download")
         os.mkdir(self.dldir)
         self.d.setVar("DL_DIR", self.dldir)
@@ -826,12 +826,12 @@
 class FetcherNetworkTest(FetcherTest):
     @skipIfNoNetwork()
     def test_fetch(self):
-        fetcher = bb.fetch.Fetch(["http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz", "http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.1.tar.gz"], self.d)
+        fetcher = bb.fetch.Fetch(["https://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz", "https://downloads.yoctoproject.org/releases/bitbake/bitbake-1.1.tar.gz"], self.d)
         fetcher.download()
         self.assertEqual(os.path.getsize(self.dldir + "/bitbake-1.0.tar.gz"), 57749)
         self.assertEqual(os.path.getsize(self.dldir + "/bitbake-1.1.tar.gz"), 57892)
         self.d.setVar("BB_NO_NETWORK", "1")
-        fetcher = bb.fetch.Fetch(["http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz", "http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.1.tar.gz"], self.d)
+        fetcher = bb.fetch.Fetch(["https://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz", "https://downloads.yoctoproject.org/releases/bitbake/bitbake-1.1.tar.gz"], self.d)
         fetcher.download()
         fetcher.unpack(self.unpackdir)
         self.assertEqual(len(os.listdir(self.unpackdir + "/bitbake-1.0/")), 9)
@@ -839,21 +839,21 @@
 
     @skipIfNoNetwork()
     def test_fetch_mirror(self):
-        self.d.setVar("MIRRORS", "http://.*/.* http://downloads.yoctoproject.org/releases/bitbake")
+        self.d.setVar("MIRRORS", "http://.*/.* https://downloads.yoctoproject.org/releases/bitbake")
         fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz"], self.d)
         fetcher.download()
         self.assertEqual(os.path.getsize(self.dldir + "/bitbake-1.0.tar.gz"), 57749)
 
     @skipIfNoNetwork()
     def test_fetch_mirror_of_mirror(self):
-        self.d.setVar("MIRRORS", "http://.*/.* http://invalid2.yoctoproject.org/ \n http://invalid2.yoctoproject.org/.* http://downloads.yoctoproject.org/releases/bitbake")
+        self.d.setVar("MIRRORS", "http://.*/.* http://invalid2.yoctoproject.org/ \n http://invalid2.yoctoproject.org/.* https://downloads.yoctoproject.org/releases/bitbake")
         fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz"], self.d)
         fetcher.download()
         self.assertEqual(os.path.getsize(self.dldir + "/bitbake-1.0.tar.gz"), 57749)
 
     @skipIfNoNetwork()
     def test_fetch_file_mirror_of_mirror(self):
-        self.d.setVar("MIRRORS", "http://.*/.* file:///some1where/ \n file:///some1where/.* file://some2where/ \n file://some2where/.* http://downloads.yoctoproject.org/releases/bitbake")
+        self.d.setVar("MIRRORS", "http://.*/.* file:///some1where/ \n file:///some1where/.* file://some2where/ \n file://some2where/.* https://downloads.yoctoproject.org/releases/bitbake")
         fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz"], self.d)
         os.mkdir(self.dldir + "/some2where")
         fetcher.download()
@@ -861,20 +861,20 @@
 
     @skipIfNoNetwork()
     def test_fetch_premirror(self):
-        self.d.setVar("PREMIRRORS", "http://.*/.* http://downloads.yoctoproject.org/releases/bitbake")
+        self.d.setVar("PREMIRRORS", "http://.*/.* https://downloads.yoctoproject.org/releases/bitbake")
         fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz"], self.d)
         fetcher.download()
         self.assertEqual(os.path.getsize(self.dldir + "/bitbake-1.0.tar.gz"), 57749)
 
     @skipIfNoNetwork()
     def test_fetch_specify_downloadfilename(self):
-        fetcher = bb.fetch.Fetch(["http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz;downloadfilename=bitbake-v1.0.0.tar.gz"], self.d)
+        fetcher = bb.fetch.Fetch(["https://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz;downloadfilename=bitbake-v1.0.0.tar.gz"], self.d)
         fetcher.download()
         self.assertEqual(os.path.getsize(self.dldir + "/bitbake-v1.0.0.tar.gz"), 57749)
 
     @skipIfNoNetwork()
     def test_fetch_premirror_specify_downloadfilename_regex_uri(self):
-        self.d.setVar("PREMIRRORS", "http://.*/.* http://downloads.yoctoproject.org/releases/bitbake/")
+        self.d.setVar("PREMIRRORS", "http://.*/.* https://downloads.yoctoproject.org/releases/bitbake/")
         fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz;downloadfilename=bitbake-v1.0.0.tar.gz"], self.d)
         fetcher.download()
         self.assertEqual(os.path.getsize(self.dldir + "/bitbake-v1.0.0.tar.gz"), 57749)
@@ -882,7 +882,7 @@
     @skipIfNoNetwork()
     # BZ13039
     def test_fetch_premirror_specify_downloadfilename_specific_uri(self):
-        self.d.setVar("PREMIRRORS", "http://invalid.yoctoproject.org/releases/bitbake http://downloads.yoctoproject.org/releases/bitbake")
+        self.d.setVar("PREMIRRORS", "http://invalid.yoctoproject.org/releases/bitbake https://downloads.yoctoproject.org/releases/bitbake")
         fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz;downloadfilename=bitbake-v1.0.0.tar.gz"], self.d)
         fetcher.download()
         self.assertEqual(os.path.getsize(self.dldir + "/bitbake-v1.0.0.tar.gz"), 57749)
@@ -1012,7 +1012,7 @@
 
     @skipIfNoNetwork()
     def test_git_submodule_CLI11(self):
-        url = "gitsm://github.com/CLIUtils/CLI11;protocol=git;rev=bd4dc911847d0cde7a6b41dfa626a85aab213baf"
+        url = "gitsm://github.com/CLIUtils/CLI11;protocol=git;rev=bd4dc911847d0cde7a6b41dfa626a85aab213baf;branch=main"
         fetcher = bb.fetch.Fetch([url], self.d)
         fetcher.download()
         # Previous cwd has been deleted
@@ -1027,12 +1027,12 @@
     @skipIfNoNetwork()
     def test_git_submodule_update_CLI11(self):
         """ Prevent regression on update detection not finding missing submodule, or modules without needed commits """
-        url = "gitsm://github.com/CLIUtils/CLI11;protocol=git;rev=cf6a99fa69aaefe477cc52e3ef4a7d2d7fa40714"
+        url = "gitsm://github.com/CLIUtils/CLI11;protocol=git;rev=cf6a99fa69aaefe477cc52e3ef4a7d2d7fa40714;branch=main"
         fetcher = bb.fetch.Fetch([url], self.d)
         fetcher.download()
 
         # CLI11 that pulls in a newer nlohmann-json
-        url = "gitsm://github.com/CLIUtils/CLI11;protocol=git;rev=49ac989a9527ee9bb496de9ded7b4872c2e0e5ca"
+        url = "gitsm://github.com/CLIUtils/CLI11;protocol=git;rev=49ac989a9527ee9bb496de9ded7b4872c2e0e5ca;branch=main"
         fetcher = bb.fetch.Fetch([url], self.d)
         fetcher.download()
         # Previous cwd has been deleted
@@ -1291,10 +1291,10 @@
         #
         # packages with versions only in current directory
         #
-        # http://downloads.yoctoproject.org/releases/eglibc/eglibc-2.18-svnr23787.tar.bz2
+        # https://downloads.yoctoproject.org/releases/eglibc/eglibc-2.18-svnr23787.tar.bz2
         ("eglic", "/releases/eglibc/eglibc-2.18-svnr23787.tar.bz2", "", "")
             : "2.19",
-        # http://downloads.yoctoproject.org/releases/gnu-config/gnu-config-20120814.tar.bz2
+        # https://downloads.yoctoproject.org/releases/gnu-config/gnu-config-20120814.tar.bz2
         ("gnu-config", "/releases/gnu-config/gnu-config-20120814.tar.bz2", "", "")
             : "20120814",
         #
@@ -1357,13 +1357,13 @@
 
 
 class FetchCheckStatusTest(FetcherTest):
-    test_wget_uris = ["http://downloads.yoctoproject.org/releases/sato/sato-engine-0.1.tar.gz",
-                      "http://downloads.yoctoproject.org/releases/sato/sato-engine-0.2.tar.gz",
-                      "http://downloads.yoctoproject.org/releases/sato/sato-engine-0.3.tar.gz",
+    test_wget_uris = ["https://downloads.yoctoproject.org/releases/sato/sato-engine-0.1.tar.gz",
+                      "https://downloads.yoctoproject.org/releases/sato/sato-engine-0.2.tar.gz",
+                      "https://downloads.yoctoproject.org/releases/sato/sato-engine-0.3.tar.gz",
                       "https://yoctoproject.org/",
                       "https://docs.yoctoproject.org",
-                      "http://downloads.yoctoproject.org/releases/opkg/opkg-0.1.7.tar.gz",
-                      "http://downloads.yoctoproject.org/releases/opkg/opkg-0.3.0.tar.gz",
+                      "https://downloads.yoctoproject.org/releases/opkg/opkg-0.1.7.tar.gz",
+                      "https://downloads.yoctoproject.org/releases/opkg/opkg-0.3.0.tar.gz",
                       "ftp://sourceware.org/pub/libffi/libffi-1.20.tar.gz",
                       "http://ftp.gnu.org/gnu/autoconf/autoconf-2.60.tar.gz",
                       "https://ftp.gnu.org/gnu/chess/gnuchess-5.08.tar.gz",
diff --git a/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf b/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf
index efebf00..2645c0e 100644
--- a/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf
+++ b/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf
@@ -12,6 +12,6 @@
 T = "${TMPDIR}/workdir/${PN}/temp"
 BB_NUMBER_THREADS = "4"
 
-BB_HASHBASE_WHITELIST = "BB_CURRENT_MC BB_HASHSERVE TMPDIR TOPDIR SLOWTASKS SSTATEVALID FILE"
+BB_HASHBASE_WHITELIST = "BB_CURRENT_MC BB_HASHSERVE TMPDIR TOPDIR SLOWTASKS SSTATEVALID FILE BB_CURRENTTASK"
 
 include conf/multiconfig/${BB_CURRENT_MC}.conf
diff --git a/poky/bitbake/lib/bb/tests/runqueue.py b/poky/bitbake/lib/bb/tests/runqueue.py
index 3d51779..5b6ada8 100644
--- a/poky/bitbake/lib/bb/tests/runqueue.py
+++ b/poky/bitbake/lib/bb/tests/runqueue.py
@@ -278,7 +278,6 @@
                        ["mc_2:a1:%s" % t for t in rerun_tasks]
             self.assertEqual(set(tasks), set(expected))
 
-    @unittest.skipIf(sys.version_info < (3, 5, 0), 'Python 3.5 or later required')
     def test_hashserv_single(self):
         with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir:
             extraenv = {
@@ -304,7 +303,6 @@
 
             self.shutdown(tempdir)
 
-    @unittest.skipIf(sys.version_info < (3, 5, 0), 'Python 3.5 or later required')
     def test_hashserv_double(self):
         with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir:
             extraenv = {
@@ -329,7 +327,6 @@
 
             self.shutdown(tempdir)
 
-    @unittest.skipIf(sys.version_info < (3, 5, 0), 'Python 3.5 or later required')
     def test_hashserv_multiple_setscene(self):
         # Runs e1:do_package_setscene twice
         with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir:
@@ -361,7 +358,7 @@
 
     def shutdown(self, tempdir):
         # Wait for the hashserve socket to disappear else we'll see races with the tempdir cleanup
-        while os.path.exists(tempdir + "/hashserve.sock"):
+        while (os.path.exists(tempdir + "/hashserve.sock") or os.path.exists(tempdir + "cache/hashserv.db-wal")):
             time.sleep(0.5)
 
 
diff --git a/poky/bitbake/lib/bb/tests/utils.py b/poky/bitbake/lib/bb/tests/utils.py
index 4d5e21b..c363f62 100644
--- a/poky/bitbake/lib/bb/tests/utils.py
+++ b/poky/bitbake/lib/bb/tests/utils.py
@@ -418,7 +418,7 @@
                                ['MULTILINE'],
                                handle_var)
 
-        testvalue = re.sub('\s+', ' ', value_in_callback.strip())
+        testvalue = re.sub(r'\s+', ' ', value_in_callback.strip())
         self.assertEqual(expected_value, testvalue)
 
 class EditBbLayersConf(unittest.TestCase):
diff --git a/poky/bitbake/lib/bb/ui/knotty.py b/poky/bitbake/lib/bb/ui/knotty.py
index 8df745d..484545a 100644
--- a/poky/bitbake/lib/bb/ui/knotty.py
+++ b/poky/bitbake/lib/bb/ui/knotty.py
@@ -276,11 +276,11 @@
             print(content)
         else:
             if self.quiet:
-                content = "Running tasks (%s of %s)" % (self.helper.tasknumber_current, self.helper.tasknumber_total)
+                content = "Running tasks (%s of %s/%s of %s)" % (self.helper.setscene_current, self.helper.setscene_total, self.helper.tasknumber_current, self.helper.tasknumber_total)
             elif not len(activetasks):
-                content = "No currently running tasks (%s of %s)" % (self.helper.tasknumber_current, self.helper.tasknumber_total)
+                content = "No currently running tasks (%s of %s/%s of %s)" % (self.helper.setscene_current, self.helper.setscene_total, self.helper.tasknumber_current, self.helper.tasknumber_total)
             else:
-                content = "Currently %2s running tasks (%s of %s)" % (len(activetasks), self.helper.tasknumber_current, self.helper.tasknumber_total)
+                content = "Currently %2s running tasks (%s of %s/%s of %s)" % (len(activetasks), self.helper.setscene_current, self.helper.setscene_total, self.helper.tasknumber_current, self.helper.tasknumber_total)
             maxtask = self.helper.tasknumber_total
             if not self.main_progress or self.main_progress.maxval != maxtask:
                 widgets = [' ', progressbar.Percentage(), ' ', progressbar.Bar()]
diff --git a/poky/bitbake/lib/bb/ui/uihelper.py b/poky/bitbake/lib/bb/ui/uihelper.py
index 52fdae3..82913e0 100644
--- a/poky/bitbake/lib/bb/ui/uihelper.py
+++ b/poky/bitbake/lib/bb/ui/uihelper.py
@@ -50,8 +50,10 @@
             removetid(event.pid, tid)
             self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)})
         elif isinstance(event, bb.runqueue.runQueueTaskStarted) or isinstance(event, bb.runqueue.sceneQueueTaskStarted):
-            self.tasknumber_current = event.stats.completed + event.stats.active + event.stats.failed + event.stats.setscene_active + 1
+            self.tasknumber_current = event.stats.completed + event.stats.active + event.stats.failed
             self.tasknumber_total = event.stats.total
+            self.setscene_current = event.stats.setscene_active + event.stats.setscene_covered + event.stats.setscene_notcovered
+            self.setscene_total = event.stats.setscene_total
             self.needUpdate = True
         elif isinstance(event, bb.build.TaskProgress):
             if event.pid > 0 and event.pid in self.pidmap:
diff --git a/poky/bitbake/lib/codegen.py b/poky/bitbake/lib/codegen.py
index 62a6748..6955a7a 100644
--- a/poky/bitbake/lib/codegen.py
+++ b/poky/bitbake/lib/codegen.py
@@ -401,6 +401,12 @@
     def visit_Num(self, node):
         self.write(repr(node.n))
 
+    def visit_Constant(self, node):
+        # Python 3.8 deprecated visit_Num(), visit_Str(), visit_Bytes(),
+        # visit_NameConstant() and visit_Ellipsis(). They can be removed once we
+        # require 3.8+.
+        self.write(repr(node.value))
+
     def visit_Tuple(self, node):
         self.write('(')
         idx = -1
diff --git a/poky/bitbake/lib/hashserv/__init__.py b/poky/bitbake/lib/hashserv/__init__.py
index 5f2e101..9cb3fd5 100644
--- a/poky/bitbake/lib/hashserv/__init__.py
+++ b/poky/bitbake/lib/hashserv/__init__.py
@@ -22,46 +22,68 @@
 # is necessary
 DEFAULT_MAX_CHUNK = 32 * 1024
 
-TABLE_DEFINITION = (
-    ("method", "TEXT NOT NULL"),
-    ("outhash", "TEXT NOT NULL"),
-    ("taskhash", "TEXT NOT NULL"),
-    ("unihash", "TEXT NOT NULL"),
-    ("created", "DATETIME"),
-
-    # Optional fields
-    ("owner", "TEXT"),
-    ("PN", "TEXT"),
-    ("PV", "TEXT"),
-    ("PR", "TEXT"),
-    ("task", "TEXT"),
-    ("outhash_siginfo", "TEXT"),
+UNIHASH_TABLE_DEFINITION = (
+    ("method", "TEXT NOT NULL", "UNIQUE"),
+    ("taskhash", "TEXT NOT NULL", "UNIQUE"),
+    ("unihash", "TEXT NOT NULL", ""),
 )
 
-TABLE_COLUMNS = tuple(name for name, _ in TABLE_DEFINITION)
+UNIHASH_TABLE_COLUMNS = tuple(name for name, _, _ in UNIHASH_TABLE_DEFINITION)
+
+OUTHASH_TABLE_DEFINITION = (
+    ("method", "TEXT NOT NULL", "UNIQUE"),
+    ("taskhash", "TEXT NOT NULL", "UNIQUE"),
+    ("outhash", "TEXT NOT NULL", "UNIQUE"),
+    ("created", "DATETIME", ""),
+
+    # Optional fields
+    ("owner", "TEXT", ""),
+    ("PN", "TEXT", ""),
+    ("PV", "TEXT", ""),
+    ("PR", "TEXT", ""),
+    ("task", "TEXT", ""),
+    ("outhash_siginfo", "TEXT", ""),
+)
+
+OUTHASH_TABLE_COLUMNS = tuple(name for name, _, _ in OUTHASH_TABLE_DEFINITION)
+
+def _make_table(cursor, name, definition):
+    cursor.execute('''
+        CREATE TABLE IF NOT EXISTS {name} (
+            id INTEGER PRIMARY KEY AUTOINCREMENT,
+            {fields}
+            UNIQUE({unique})
+            )
+        '''.format(
+            name=name,
+            fields=" ".join("%s %s," % (name, typ) for name, typ, _ in definition),
+            unique=", ".join(name for name, _, flags in definition if "UNIQUE" in flags)
+    ))
+
 
 def setup_database(database, sync=True):
     db = sqlite3.connect(database)
     db.row_factory = sqlite3.Row
 
     with closing(db.cursor()) as cursor:
-        cursor.execute('''
-            CREATE TABLE IF NOT EXISTS tasks_v2 (
-                id INTEGER PRIMARY KEY AUTOINCREMENT,
-                %s
-                UNIQUE(method, outhash, taskhash)
-                )
-            ''' % " ".join("%s %s," % (name, typ) for name, typ in TABLE_DEFINITION))
+        _make_table(cursor, "unihashes_v2", UNIHASH_TABLE_DEFINITION)
+        _make_table(cursor, "outhashes_v2", OUTHASH_TABLE_DEFINITION)
+
         cursor.execute('PRAGMA journal_mode = WAL')
         cursor.execute('PRAGMA synchronous = %s' % ('NORMAL' if sync else 'OFF'))
 
         # Drop old indexes
         cursor.execute('DROP INDEX IF EXISTS taskhash_lookup')
         cursor.execute('DROP INDEX IF EXISTS outhash_lookup')
+        cursor.execute('DROP INDEX IF EXISTS taskhash_lookup_v2')
+        cursor.execute('DROP INDEX IF EXISTS outhash_lookup_v2')
+
+        # TODO: Upgrade from tasks_v2?
+        cursor.execute('DROP TABLE IF EXISTS tasks_v2')
 
         # Create new indexes
-        cursor.execute('CREATE INDEX IF NOT EXISTS taskhash_lookup_v2 ON tasks_v2 (method, taskhash, created)')
-        cursor.execute('CREATE INDEX IF NOT EXISTS outhash_lookup_v2 ON tasks_v2 (method, outhash)')
+        cursor.execute('CREATE INDEX IF NOT EXISTS taskhash_lookup_v3 ON unihashes_v2 (method, taskhash)')
+        cursor.execute('CREATE INDEX IF NOT EXISTS outhash_lookup_v3 ON outhashes_v2 (method, outhash)')
 
     return db
 
diff --git a/poky/bitbake/lib/hashserv/client.py b/poky/bitbake/lib/hashserv/client.py
index 1a67c69..b2aa102 100644
--- a/poky/bitbake/lib/hashserv/client.py
+++ b/poky/bitbake/lib/hashserv/client.py
@@ -107,11 +107,11 @@
         super().__init__()
         self._add_methods(
             "connect_tcp",
-            "close",
             "get_unihash",
             "report_unihash",
             "report_unihash_equiv",
             "get_taskhash",
+            "get_outhash",
             "get_stats",
             "reset_stats",
             "backfill_wait",
diff --git a/poky/bitbake/lib/hashserv/server.py b/poky/bitbake/lib/hashserv/server.py
index a059e52..d40a2ab 100644
--- a/poky/bitbake/lib/hashserv/server.py
+++ b/poky/bitbake/lib/hashserv/server.py
@@ -5,11 +5,12 @@
 
 from contextlib import closing, contextmanager
 from datetime import datetime
+import enum
 import asyncio
 import logging
 import math
 import time
-from . import create_async_client, TABLE_COLUMNS
+from . import create_async_client, UNIHASH_TABLE_COLUMNS, OUTHASH_TABLE_COLUMNS
 import bb.asyncrpc
 
 
@@ -106,56 +107,64 @@
         return {k: getattr(self, k) for k in ('num', 'total_time', 'max_time', 'average', 'stdev')}
 
 
-def insert_task(cursor, data, ignore=False):
+@enum.unique
+class Resolve(enum.Enum):
+    FAIL = enum.auto()
+    IGNORE = enum.auto()
+    REPLACE = enum.auto()
+
+
+def insert_table(cursor, table, data, on_conflict):
+    resolve = {
+        Resolve.FAIL: "",
+        Resolve.IGNORE: " OR IGNORE",
+        Resolve.REPLACE: " OR REPLACE",
+    }[on_conflict]
+
     keys = sorted(data.keys())
-    query = '''INSERT%s INTO tasks_v2 (%s) VALUES (%s)''' % (
-        " OR IGNORE" if ignore else "",
-        ', '.join(keys),
-        ', '.join(':' + k for k in keys))
+    query = 'INSERT{resolve} INTO {table} ({fields}) VALUES({values})'.format(
+        resolve=resolve,
+        table=table,
+        fields=", ".join(keys),
+        values=", ".join(":" + k for k in keys),
+    )
+    prevrowid = cursor.lastrowid
     cursor.execute(query, data)
+    logging.debug(
+        "Inserting %r into %s, %s",
+        data,
+        table,
+        on_conflict
+    )
+    return (cursor.lastrowid, cursor.lastrowid != prevrowid)
 
-async def copy_from_upstream(client, db, method, taskhash):
-    d = await client.get_taskhash(method, taskhash, True)
+def insert_unihash(cursor, data, on_conflict):
+    return insert_table(cursor, "unihashes_v2", data, on_conflict)
+
+def insert_outhash(cursor, data, on_conflict):
+    return insert_table(cursor, "outhashes_v2", data, on_conflict)
+
+async def copy_unihash_from_upstream(client, db, method, taskhash):
+    d = await client.get_taskhash(method, taskhash)
     if d is not None:
-        # Filter out unknown columns
-        d = {k: v for k, v in d.items() if k in TABLE_COLUMNS}
-
         with closing(db.cursor()) as cursor:
-            insert_task(cursor, d)
+            insert_unihash(
+                cursor,
+                {k: v for k, v in d.items() if k in UNIHASH_TABLE_COLUMNS},
+                Resolve.IGNORE,
+            )
             db.commit()
-
     return d
 
-async def copy_outhash_from_upstream(client, db, method, outhash, taskhash):
-    d = await client.get_outhash(method, outhash, taskhash)
-    if d is not None:
-        # Filter out unknown columns
-        d = {k: v for k, v in d.items() if k in TABLE_COLUMNS}
 
-        with closing(db.cursor()) as cursor:
-            insert_task(cursor, d)
-            db.commit()
+class ServerCursor(object):
+    def __init__(self, db, cursor, upstream):
+        self.db = db
+        self.cursor = cursor
+        self.upstream = upstream
 
-    return d
 
 class ServerClient(bb.asyncrpc.AsyncServerConnection):
-    FAST_QUERY = 'SELECT taskhash, method, unihash FROM tasks_v2 WHERE method=:method AND taskhash=:taskhash ORDER BY created ASC LIMIT 1'
-    ALL_QUERY =  'SELECT *                         FROM tasks_v2 WHERE method=:method AND taskhash=:taskhash ORDER BY created ASC LIMIT 1'
-    OUTHASH_QUERY = '''
-        -- Find tasks with a matching outhash (that is, tasks that
-        -- are equivalent)
-        SELECT * FROM tasks_v2 WHERE method=:method AND outhash=:outhash
-
-        -- If there is an exact match on the taskhash, return it.
-        -- Otherwise return the oldest matching outhash of any
-        -- taskhash
-        ORDER BY CASE WHEN taskhash=:taskhash THEN 1 ELSE 2 END,
-            created ASC
-
-        -- Only return one row
-        LIMIT 1
-        '''
-
     def __init__(self, reader, writer, db, request_stats, backfill_queue, upstream, read_only):
         super().__init__(reader, writer, 'OEHASHEQUIV', logger)
         self.db = db
@@ -210,37 +219,103 @@
     async def handle_get(self, request):
         method = request['method']
         taskhash = request['taskhash']
+        fetch_all = request.get('all', False)
 
-        if request.get('all', False):
-            row = self.query_equivalent(method, taskhash, self.ALL_QUERY)
-        else:
-            row = self.query_equivalent(method, taskhash, self.FAST_QUERY)
-
-        if row is not None:
-            logger.debug('Found equivalent task %s -> %s', (row['taskhash'], row['unihash']))
-            d = {k: row[k] for k in row.keys()}
-        elif self.upstream_client is not None:
-            d = await copy_from_upstream(self.upstream_client, self.db, method, taskhash)
-        else:
-            d = None
+        with closing(self.db.cursor()) as cursor:
+            d = await self.get_unihash(cursor, method, taskhash, fetch_all)
 
         self.write_message(d)
 
-    async def handle_get_outhash(self, request):
-        with closing(self.db.cursor()) as cursor:
-            cursor.execute(self.OUTHASH_QUERY,
-                           {k: request[k] for k in ('method', 'outhash', 'taskhash')})
+    async def get_unihash(self, cursor, method, taskhash, fetch_all=False):
+        d = None
 
+        if fetch_all:
+            cursor.execute(
+                '''
+                SELECT *, unihashes_v2.unihash AS unihash FROM outhashes_v2
+                INNER JOIN unihashes_v2 ON unihashes_v2.method=outhashes_v2.method AND unihashes_v2.taskhash=outhashes_v2.taskhash
+                WHERE outhashes_v2.method=:method AND outhashes_v2.taskhash=:taskhash
+                ORDER BY outhashes_v2.created ASC
+                LIMIT 1
+                ''',
+                {
+                    'method': method,
+                    'taskhash': taskhash,
+                }
+
+            )
             row = cursor.fetchone()
 
-        if row is not None:
-            logger.debug('Found equivalent outhash %s -> %s', (row['outhash'], row['unihash']))
-            d = {k: row[k] for k in row.keys()}
+            if row is not None:
+                d = {k: row[k] for k in row.keys()}
+            elif self.upstream_client is not None:
+                d = await self.upstream_client.get_taskhash(method, taskhash, True)
+                self.update_unified(cursor, d)
+                self.db.commit()
         else:
-            d = None
+            row = self.query_equivalent(cursor, method, taskhash)
+
+            if row is not None:
+                d = {k: row[k] for k in row.keys()}
+            elif self.upstream_client is not None:
+                d = await self.upstream_client.get_taskhash(method, taskhash)
+                d = {k: v for k, v in d.items() if k in UNIHASH_TABLE_COLUMNS}
+                insert_unihash(cursor, d, Resolve.IGNORE)
+                self.db.commit()
+
+        return d
+
+    async def handle_get_outhash(self, request):
+        method = request['method']
+        outhash = request['outhash']
+        taskhash = request['taskhash']
+
+        with closing(self.db.cursor()) as cursor:
+            d = await self.get_outhash(cursor, method, outhash, taskhash)
 
         self.write_message(d)
 
+    async def get_outhash(self, cursor, method, outhash, taskhash):
+        d = None
+        cursor.execute(
+            '''
+            SELECT *, unihashes_v2.unihash AS unihash FROM outhashes_v2
+            INNER JOIN unihashes_v2 ON unihashes_v2.method=outhashes_v2.method AND unihashes_v2.taskhash=outhashes_v2.taskhash
+            WHERE outhashes_v2.method=:method AND outhashes_v2.outhash=:outhash
+            ORDER BY outhashes_v2.created ASC
+            LIMIT 1
+            ''',
+            {
+                'method': method,
+                'outhash': outhash,
+            }
+        )
+        row = cursor.fetchone()
+
+        if row is not None:
+            d = {k: row[k] for k in row.keys()}
+        elif self.upstream_client is not None:
+            d = await self.upstream_client.get_outhash(method, outhash, taskhash)
+            self.update_unified(cursor, d)
+            self.db.commit()
+
+        return d
+
+    def update_unified(self, cursor, data):
+        if data is None:
+            return
+
+        insert_unihash(
+            cursor,
+            {k: v for k, v in data.items() if k in UNIHASH_TABLE_COLUMNS},
+            Resolve.IGNORE
+        )
+        insert_outhash(
+            cursor,
+            {k: v for k, v in data.items() if k in OUTHASH_TABLE_COLUMNS},
+            Resolve.IGNORE
+        )
+
     async def handle_get_stream(self, request):
         self.write_message('ok')
 
@@ -267,7 +342,12 @@
 
                 (method, taskhash) = l.split()
                 #logger.debug('Looking up %s %s' % (method, taskhash))
-                row = self.query_equivalent(method, taskhash, self.FAST_QUERY)
+                cursor = self.db.cursor()
+                try:
+                    row = self.query_equivalent(cursor, method, taskhash)
+                finally:
+                    cursor.close()
+
                 if row is not None:
                     msg = ('%s\n' % row['unihash']).encode('utf-8')
                     #logger.debug('Found equivalent task %s -> %s', (row['taskhash'], row['unihash']))
@@ -294,55 +374,82 @@
 
     async def handle_report(self, data):
         with closing(self.db.cursor()) as cursor:
-            cursor.execute(self.OUTHASH_QUERY,
-                           {k: data[k] for k in ('method', 'outhash', 'taskhash')})
+            outhash_data = {
+                'method': data['method'],
+                'outhash': data['outhash'],
+                'taskhash': data['taskhash'],
+                'created': datetime.now()
+            }
 
-            row = cursor.fetchone()
+            for k in ('owner', 'PN', 'PV', 'PR', 'task', 'outhash_siginfo'):
+                if k in data:
+                    outhash_data[k] = data[k]
 
-            if row is None and self.upstream_client:
-                # Try upstream
-                row = await copy_outhash_from_upstream(self.upstream_client,
-                                                       self.db,
-                                                       data['method'],
-                                                       data['outhash'],
-                                                       data['taskhash'])
+            # Insert the new entry, unless it already exists
+            (rowid, inserted) = insert_outhash(cursor, outhash_data, Resolve.IGNORE)
 
-            # If no matching outhash was found, or one *was* found but it
-            # wasn't an exact match on the taskhash, a new entry for this
-            # taskhash should be added
-            if row is None or row['taskhash'] != data['taskhash']:
-                # If a row matching the outhash was found, the unihash for
-                # the new taskhash should be the same as that one.
-                # Otherwise the caller provided unihash is used.
-                unihash = data['unihash']
+            if inserted:
+                # If this row is new, check if it is equivalent to another
+                # output hash
+                cursor.execute(
+                    '''
+                    SELECT outhashes_v2.taskhash AS taskhash, unihashes_v2.unihash AS unihash FROM outhashes_v2
+                    INNER JOIN unihashes_v2 ON unihashes_v2.method=outhashes_v2.method AND unihashes_v2.taskhash=outhashes_v2.taskhash
+                    -- Select any matching output hash except the one we just inserted
+                    WHERE outhashes_v2.method=:method AND outhashes_v2.outhash=:outhash AND outhashes_v2.taskhash!=:taskhash
+                    -- Pick the oldest hash
+                    ORDER BY outhashes_v2.created ASC
+                    LIMIT 1
+                    ''',
+                    {
+                        'method': data['method'],
+                        'outhash': data['outhash'],
+                        'taskhash': data['taskhash'],
+                    }
+                )
+                row = cursor.fetchone()
+
                 if row is not None:
+                    # A matching output hash was found. Set our taskhash to the
+                    # same unihash since they are equivalent
                     unihash = row['unihash']
+                    resolve = Resolve.IGNORE
+                else:
+                    # No matching output hash was found. This is probably the
+                    # first outhash to be added.
+                    unihash = data['unihash']
+                    resolve = Resolve.IGNORE
 
-                insert_data = {
-                    'method': data['method'],
-                    'outhash': data['outhash'],
-                    'taskhash': data['taskhash'],
-                    'unihash': unihash,
-                    'created': datetime.now()
-                }
+                    # Query upstream to see if it has a unihash we can use
+                    if self.upstream_client is not None:
+                        upstream_data = await self.upstream_client.get_outhash(data['method'], data['outhash'], data['taskhash'])
+                        if upstream_data is not None:
+                            unihash = upstream_data['unihash']
 
-                for k in ('owner', 'PN', 'PV', 'PR', 'task', 'outhash_siginfo'):
-                    if k in data:
-                        insert_data[k] = data[k]
 
-                insert_task(cursor, insert_data)
-                self.db.commit()
+                insert_unihash(
+                    cursor,
+                    {
+                        'method': data['method'],
+                        'taskhash': data['taskhash'],
+                        'unihash': unihash,
+                    },
+                    resolve
+                )
 
-                logger.info('Adding taskhash %s with unihash %s',
-                            data['taskhash'], unihash)
-
-                d = {
-                    'taskhash': data['taskhash'],
-                    'method': data['method'],
-                    'unihash': unihash
-                }
+            unihash_data = await self.get_unihash(cursor, data['method'], data['taskhash'])
+            if unihash_data is not None:
+                unihash = unihash_data['unihash']
             else:
-                d = {k: row[k] for k in ('taskhash', 'method', 'unihash')}
+                unihash = data['unihash']
+
+            self.db.commit()
+
+            d = {
+                'taskhash': data['taskhash'],
+                'method': data['method'],
+                'unihash': unihash,
+            }
 
         self.write_message(d)
 
@@ -350,23 +457,16 @@
         with closing(self.db.cursor()) as cursor:
             insert_data = {
                 'method': data['method'],
-                'outhash': "",
                 'taskhash': data['taskhash'],
                 'unihash': data['unihash'],
-                'created': datetime.now()
             }
-
-            for k in ('owner', 'PN', 'PV', 'PR', 'task', 'outhash_siginfo'):
-                if k in data:
-                    insert_data[k] = data[k]
-
-            insert_task(cursor, insert_data, ignore=True)
+            insert_unihash(cursor, insert_data, Resolve.IGNORE)
             self.db.commit()
 
             # Fetch the unihash that will be reported for the taskhash. If the
             # unihash matches, it means this row was inserted (or the mapping
             # was already valid)
-            row = self.query_equivalent(data['method'], data['taskhash'], self.FAST_QUERY)
+            row = self.query_equivalent(cursor, data['method'], data['taskhash'])
 
             if row['unihash'] == data['unihash']:
                 logger.info('Adding taskhash equivalence for %s with unihash %s',
@@ -399,14 +499,16 @@
         await self.backfill_queue.join()
         self.write_message(d)
 
-    def query_equivalent(self, method, taskhash, query):
+    def query_equivalent(self, cursor, method, taskhash):
         # This is part of the inner loop and must be as fast as possible
-        try:
-            cursor = self.db.cursor()
-            cursor.execute(query, {'method': method, 'taskhash': taskhash})
-            return cursor.fetchone()
-        except:
-            cursor.close()
+        cursor.execute(
+            'SELECT taskhash, method, unihash FROM unihashes_v2 WHERE method=:method AND taskhash=:taskhash',
+            {
+                'method': method,
+                'taskhash': taskhash,
+            }
+        )
+        return cursor.fetchone()
 
 
 class Server(bb.asyncrpc.AsyncServer):
@@ -435,7 +537,7 @@
                         self.backfill_queue.task_done()
                         break
                     method, taskhash = item
-                    await copy_from_upstream(client, self.db, method, taskhash)
+                    await copy_unihash_from_upstream(client, self.db, method, taskhash)
                     self.backfill_queue.task_done()
             finally:
                 await client.close()
diff --git a/poky/bitbake/lib/hashserv/tests.py b/poky/bitbake/lib/hashserv/tests.py
index e851535..f6b85ae 100644
--- a/poky/bitbake/lib/hashserv/tests.py
+++ b/poky/bitbake/lib/hashserv/tests.py
@@ -19,10 +19,10 @@
 import signal
 
 def server_prefunc(server, idx):
-    logging.basicConfig(level=logging.DEBUG, filename='bbhashserv.log', filemode='w',
+    logging.basicConfig(level=logging.DEBUG, filename='bbhashserv-%d.log' % idx, filemode='w',
                         format='%(levelname)s %(filename)s:%(lineno)d %(message)s')
     server.logger.debug("Running server %d" % idx)
-    sys.stdout = open('bbhashserv-%d.log' % idx, 'w')
+    sys.stdout = open('bbhashserv-stdout-%d.log' % idx, 'w')
     sys.stderr = sys.stdout
 
 class HashEquivalenceTestSetup(object):
@@ -140,12 +140,17 @@
         })
         self.assertEqual(result['unihash'], unihash, 'Server returned bad unihash')
 
-        result = self.client.get_taskhash(self.METHOD, taskhash, True)
-        self.assertEqual(result['taskhash'], taskhash)
-        self.assertEqual(result['unihash'], unihash)
-        self.assertEqual(result['method'], self.METHOD)
-        self.assertEqual(result['outhash'], outhash)
-        self.assertEqual(result['outhash_siginfo'], siginfo)
+        result_unihash = self.client.get_taskhash(self.METHOD, taskhash, True)
+        self.assertEqual(result_unihash['taskhash'], taskhash)
+        self.assertEqual(result_unihash['unihash'], unihash)
+        self.assertEqual(result_unihash['method'], self.METHOD)
+
+        result_outhash = self.client.get_outhash(self.METHOD, outhash, taskhash)
+        self.assertEqual(result_outhash['taskhash'], taskhash)
+        self.assertEqual(result_outhash['method'], self.METHOD)
+        self.assertEqual(result_outhash['unihash'], unihash)
+        self.assertEqual(result_outhash['outhash'], outhash)
+        self.assertEqual(result_outhash['outhash_siginfo'], siginfo)
 
     def test_stress(self):
         def query_server(failures):
@@ -260,6 +265,39 @@
         result = down_client.report_unihash(taskhash6, self.METHOD, outhash5, unihash6)
         self.assertEqual(result['unihash'], unihash5, 'Server failed to copy unihash from upstream')
 
+        # Tests read through from server with
+        taskhash7 = '9d81d76242cc7cfaf7bf74b94b9cd2e29324ed74'
+        outhash7 = '8470d56547eea6236d7c81a644ce74670ca0bbda998e13c629ef6bb3f0d60b69'
+        unihash7 = '05d2a63c81e32f0a36542ca677e8ad852365c538'
+        self.client.report_unihash(taskhash7, self.METHOD, outhash7, unihash7)
+
+        result = down_client.get_taskhash(self.METHOD, taskhash7, True)
+        self.assertEqual(result['unihash'], unihash7, 'Server failed to copy unihash from upstream')
+        self.assertEqual(result['outhash'], outhash7, 'Server failed to copy unihash from upstream')
+        self.assertEqual(result['taskhash'], taskhash7, 'Server failed to copy unihash from upstream')
+        self.assertEqual(result['method'], self.METHOD)
+
+        taskhash8 = '86978a4c8c71b9b487330b0152aade10c1ee58aa'
+        outhash8 = 'ca8c128e9d9e4a28ef24d0508aa20b5cf880604eacd8f65c0e366f7e0cc5fbcf'
+        unihash8 = 'd8bcf25369d40590ad7d08c84d538982f2023e01'
+        self.client.report_unihash(taskhash8, self.METHOD, outhash8, unihash8)
+
+        result = down_client.get_outhash(self.METHOD, outhash8, taskhash8)
+        self.assertEqual(result['unihash'], unihash8, 'Server failed to copy unihash from upstream')
+        self.assertEqual(result['outhash'], outhash8, 'Server failed to copy unihash from upstream')
+        self.assertEqual(result['taskhash'], taskhash8, 'Server failed to copy unihash from upstream')
+        self.assertEqual(result['method'], self.METHOD)
+
+        taskhash9 = 'ae6339531895ddf5b67e663e6a374ad8ec71d81c'
+        outhash9 = 'afc78172c81880ae10a1fec994b5b4ee33d196a001a1b66212a15ebe573e00b5'
+        unihash9 = '6662e699d6e3d894b24408ff9a4031ef9b038ee8'
+        self.client.report_unihash(taskhash9, self.METHOD, outhash9, unihash9)
+
+        result = down_client.get_taskhash(self.METHOD, taskhash9, False)
+        self.assertEqual(result['unihash'], unihash9, 'Server failed to copy unihash from upstream')
+        self.assertEqual(result['taskhash'], taskhash9, 'Server failed to copy unihash from upstream')
+        self.assertEqual(result['method'], self.METHOD)
+
     def test_ro_server(self):
         (ro_client, ro_server) = self.start_server(dbpath=self.server.dbpath, read_only=True)
 
@@ -287,10 +325,8 @@
 
 
     def test_slow_server_start(self):
-        """
-        Ensures that the server will exit correctly even if it gets a SIGTERM
-        before entering the main loop
-        """
+        # Ensures that the server will exit correctly even if it gets a SIGTERM
+        # before entering the main loop
 
         event = multiprocessing.Event()
 
@@ -312,6 +348,58 @@
         server.process.join(300)
         self.assertIsNotNone(server.process.exitcode, "Server did not exit in a timely manner!")
 
+    def test_diverging_report_race(self):
+        # Tests that a reported task will correctly pick up an updated unihash
+
+        # This is a baseline report added to the database to ensure that there
+        # is something to match against as equivalent
+        outhash1 = 'afd11c366050bcd75ad763e898e4430e2a60659b26f83fbb22201a60672019fa'
+        taskhash1 = '3bde230c743fc45ab61a065d7a1815fbfa01c4740e4c895af2eb8dc0f684a4ab'
+        unihash1 = '3bde230c743fc45ab61a065d7a1815fbfa01c4740e4c895af2eb8dc0f684a4ab'
+        result = self.client.report_unihash(taskhash1, self.METHOD, outhash1, unihash1)
+
+        # Add a report that is equivalent to Task 1. It should ignore the
+        # provided unihash and report the unihash from task 1
+        taskhash2 = '6259ae8263bd94d454c086f501c37e64c4e83cae806902ca95b4ab513546b273'
+        unihash2 = taskhash2
+        result = self.client.report_unihash(taskhash2, self.METHOD, outhash1, unihash2)
+        self.assertEqual(result['unihash'], unihash1)
+
+        # Add another report for Task 2, but with a different outhash (e.g. the
+        # task is non-deterministic). It should still be marked with the Task 1
+        # unihash because it has the Task 2 taskhash, which is equivalent to
+        # Task 1
+        outhash3 = 'd2187ee3a8966db10b34fe0e863482288d9a6185cb8ef58a6c1c6ace87a2f24c'
+        result = self.client.report_unihash(taskhash2, self.METHOD, outhash3, unihash2)
+        self.assertEqual(result['unihash'], unihash1)
+
+
+    def test_diverging_report_reverse_race(self):
+        # Same idea as the previous test, but Tasks 2 and 3 are reported in
+        # reverse order the opposite order
+
+        outhash1 = 'afd11c366050bcd75ad763e898e4430e2a60659b26f83fbb22201a60672019fa'
+        taskhash1 = '3bde230c743fc45ab61a065d7a1815fbfa01c4740e4c895af2eb8dc0f684a4ab'
+        unihash1 = '3bde230c743fc45ab61a065d7a1815fbfa01c4740e4c895af2eb8dc0f684a4ab'
+        result = self.client.report_unihash(taskhash1, self.METHOD, outhash1, unihash1)
+
+        taskhash2 = '6259ae8263bd94d454c086f501c37e64c4e83cae806902ca95b4ab513546b273'
+        unihash2 = taskhash2
+
+        # Report Task 3 first. Since there is nothing else in the database it
+        # will use the client provided unihash
+        outhash3 = 'd2187ee3a8966db10b34fe0e863482288d9a6185cb8ef58a6c1c6ace87a2f24c'
+        result = self.client.report_unihash(taskhash2, self.METHOD, outhash3, unihash2)
+        self.assertEqual(result['unihash'], unihash2)
+
+        # Report Task 2. This is equivalent to Task 1 but there is already a mapping for
+        # taskhash2 so it will report unihash2
+        result = self.client.report_unihash(taskhash2, self.METHOD, outhash1, unihash2)
+        self.assertEqual(result['unihash'], unihash2)
+
+        # The originally reported unihash for Task 3 should be unchanged even if it
+        # shares a taskhash with Task 2
+        self.assertClientGetHash(self.client, taskhash2, unihash2)
 
 class TestHashEquivalenceUnixServer(HashEquivalenceTestSetup, HashEquivalenceCommonTests, unittest.TestCase):
     def get_server_addr(self, server_idx):
diff --git a/poky/bitbake/lib/layerindexlib/__init__.py b/poky/bitbake/lib/layerindexlib/__init__.py
index 3159bf2..08063c5 100644
--- a/poky/bitbake/lib/layerindexlib/__init__.py
+++ b/poky/bitbake/lib/layerindexlib/__init__.py
@@ -198,7 +198,7 @@
 
   For example:
 
-  http://layers.openembedded.org/layerindex/api/;branch=master;desc=OpenEmbedded%20Layer%20Index
+  https://layers.openembedded.org/layerindex/api/;branch=master;desc=OpenEmbedded%20Layer%20Index
   cooker://
 '''
         if reload:
@@ -576,7 +576,7 @@
 #   index['config'] - configuration data for this index
 #   index['branches'] - dictionary of Branch objects, by id number
 #   index['layerItems'] - dictionary of layerItem objects, by id number
-#   ...etc...  (See: http://layers.openembedded.org/layerindex/api/)
+#   ...etc...  (See: https://layers.openembedded.org/layerindex/api/)
 #
 # The class needs to manage the 'index' entries and allow easily adding
 # of new items, as well as simply loading of the items.
diff --git a/poky/bitbake/lib/layerindexlib/restapi.py b/poky/bitbake/lib/layerindexlib/restapi.py
index 26a1c96..81d99b0 100644
--- a/poky/bitbake/lib/layerindexlib/restapi.py
+++ b/poky/bitbake/lib/layerindexlib/restapi.py
@@ -31,7 +31,7 @@
             The return value is a LayerIndexObj.
 
             url is the url to the rest api of the layer index, such as:
-            http://layers.openembedded.org/layerindex/api/
+            https://layers.openembedded.org/layerindex/api/
 
             Or a local file...
         """
@@ -138,7 +138,7 @@
             The return value is a LayerIndexObj.
 
             ud is the parsed url to the rest api of the layer index, such as:
-            http://layers.openembedded.org/layerindex/api/
+            https://layers.openembedded.org/layerindex/api/
         """
 
         def _get_json_response(apiurl=None, username=None, password=None, retry=True):
diff --git a/poky/bitbake/lib/layerindexlib/tests/restapi.py b/poky/bitbake/lib/layerindexlib/tests/restapi.py
index 33b5c1c..71f0ae8 100644
--- a/poky/bitbake/lib/layerindexlib/tests/restapi.py
+++ b/poky/bitbake/lib/layerindexlib/tests/restapi.py
@@ -22,7 +22,7 @@
         self.assertFalse(os.environ.get("BB_SKIP_NETTESTS") == "yes", msg="BB_SKIP_NETTESTS set, but we tried to test anyway")
         LayersTest.setUp(self)
         self.layerindex = layerindexlib.LayerIndex(self.d)
-        self.layerindex.load_layerindex('http://layers.openembedded.org/layerindex/api/;branch=sumo', load=['layerDependencies'])
+        self.layerindex.load_layerindex('https://layers.openembedded.org/layerindex/api/;branch=sumo', load=['layerDependencies'])
 
     @skipIfNoNetwork()
     def test_layerindex_is_empty(self):
diff --git a/poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml b/poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml
index 026d948..b01a337 100644
--- a/poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml
+++ b/poky/bitbake/lib/toaster/orm/fixtures/oe-core.xml
@@ -34,7 +34,7 @@
     <field type="CharField" name="description">Openembedded Dunfell</field>
     <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
     <field type="CharField" name="branch_name">dunfell</field>
-    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=dunfell\"&gt;OpenEmbedded Dunfell&lt;/a&gt; branch.</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=dunfell\"&gt;OpenEmbedded Dunfell&lt;/a&gt; branch.</field>
   </object>
   <object model="orm.release" pk="2">
     <field type="CharField" name="name">local</field>
@@ -48,14 +48,14 @@
     <field type="CharField" name="description">OpenEmbedded core master</field>
     <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">3</field>
     <field type="CharField" name="branch_name">master</field>
-    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"http://cgit.openembedded.org/openembedded-core/log/\"&gt;OpenEmbedded master&lt;/a&gt; branch.</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"https://cgit.openembedded.org/openembedded-core/log/\"&gt;OpenEmbedded master&lt;/a&gt; branch.</field>
   </object>
   <object model="orm.release" pk="4">
     <field type="CharField" name="name">gatesgarth</field>
     <field type="CharField" name="description">Openembedded Gatesgarth</field>
     <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">4</field>
     <field type="CharField" name="branch_name">gatesgarth</field>
-    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"http://cgit.openembedded.org/openembedded-core/log/?h=gatesgarth\"&gt;OpenEmbedded Gatesgarth&lt;/a&gt; branch.</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=gatesgarth\"&gt;OpenEmbedded Gatesgarth&lt;/a&gt; branch.</field>
   </object>
 
   <!-- Default layers for each release -->
@@ -81,9 +81,9 @@
   <object model="orm.layer" pk="1">
     <field type="CharField" name="name">openembedded-core</field>
     <field type="CharField" name="vcs_url">git://git.openembedded.org/openembedded-core</field>
-    <field type="CharField" name="vcs_web_url">http://cgit.openembedded.org/openembedded-core</field>
-    <field type="CharField" name="vcs_web_tree_base_url">http://cgit.openembedded.org/openembedded-core/tree/%path%?h=%branch%</field>
-    <field type="CharField" name="vcs_web_file_base_url">http://cgit.openembedded.org/openembedded-core/tree/%path%?h=%branch%</field>
+    <field type="CharField" name="vcs_web_url">https://cgit.openembedded.org/openembedded-core</field>
+    <field type="CharField" name="vcs_web_tree_base_url">https://cgit.openembedded.org/openembedded-core/tree/%path%?h=%branch%</field>
+    <field type="CharField" name="vcs_web_file_base_url">https://cgit.openembedded.org/openembedded-core/tree/%path%?h=%branch%</field>
   </object>
   <object model="orm.layer_version" pk="1">
     <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
diff --git a/poky/bitbake/lib/toaster/orm/fixtures/poky.xml b/poky/bitbake/lib/toaster/orm/fixtures/poky.xml
index a468a54..363789d 100644
--- a/poky/bitbake/lib/toaster/orm/fixtures/poky.xml
+++ b/poky/bitbake/lib/toaster/orm/fixtures/poky.xml
@@ -39,7 +39,7 @@
     <field type="CharField" name="description">Yocto Project 3.1 "Dunfell"</field>
     <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
     <field type="CharField" name="branch_name">dunfell</field>
-    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=dunfell"&gt;Yocto Project Dunfell branch&lt;/a&gt;.</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=dunfell"&gt;Yocto Project Dunfell branch&lt;/a&gt;.</field>
   </object>
   <object model="orm.release" pk="2">
     <field type="CharField" name="name">local</field>
@@ -53,14 +53,14 @@
     <field type="CharField" name="description">Yocto Project master</field>
     <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">3</field>
     <field type="CharField" name="branch_name">master</field>
-    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/"&gt;Yocto Project Master branch&lt;/a&gt;.</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/"&gt;Yocto Project Master branch&lt;/a&gt;.</field>
   </object>
   <object model="orm.release" pk="4">
     <field type="CharField" name="name">gatesgarth</field>
     <field type="CharField" name="description">Yocto Project 3.2 "Gatesgarth"</field>
     <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">4</field>
     <field type="CharField" name="branch_name">gatesgarth</field>
-    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=gatesgarth"&gt;Yocto Project Gatesgarth branch&lt;/a&gt;.</field>
+    <field type="TextField" name="helptext">Toaster will run your builds using the tip of the &lt;a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=gatesgarth"&gt;Yocto Project Gatesgarth branch&lt;/a&gt;.</field>
   </object>
 
   <!-- Default project layers for each release -->
@@ -122,9 +122,9 @@
     <field type="CharField" name="name">openembedded-core</field>
     <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
-    <field type="CharField" name="vcs_web_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
-    <field type="CharField" name="vcs_web_tree_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
-    <field type="CharField" name="vcs_web_file_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
+    <field type="CharField" name="vcs_web_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
+    <field type="CharField" name="vcs_web_tree_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
+    <field type="CharField" name="vcs_web_file_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
   </object>
   <object model="orm.layer_version" pk="1">
     <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
@@ -160,9 +160,9 @@
     <field type="CharField" name="name">meta-poky</field>
     <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
-    <field type="CharField" name="vcs_web_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
-    <field type="CharField" name="vcs_web_tree_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
-    <field type="CharField" name="vcs_web_file_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
+    <field type="CharField" name="vcs_web_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
+    <field type="CharField" name="vcs_web_tree_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
+    <field type="CharField" name="vcs_web_file_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
   </object>
   <object model="orm.layer_version" pk="5">
     <field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
@@ -198,9 +198,9 @@
     <field type="CharField" name="name">meta-yocto-bsp</field>
     <field type="CharField" name="layer_index_url"></field>
     <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
-    <field type="CharField" name="vcs_web_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
-    <field type="CharField" name="vcs_web_tree_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
-    <field type="CharField" name="vcs_web_file_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
+    <field type="CharField" name="vcs_web_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
+    <field type="CharField" name="vcs_web_tree_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
+    <field type="CharField" name="vcs_web_file_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
   </object>
   <object model="orm.layer_version" pk="9">
     <field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
diff --git a/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py b/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py
index 2fbd7be..3b950e6 100644
--- a/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py
+++ b/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py
@@ -21,7 +21,7 @@
 import time
 logger = logging.getLogger("toaster")
 
-DEFAULT_LAYERINDEX_SERVER = "http://layers.openembedded.org/layerindex/api/"
+DEFAULT_LAYERINDEX_SERVER = "https://layers.openembedded.org/layerindex/api/"
 
 # Add path to bitbake modules for layerindexlib
 # lib/toaster/orm/management/commands/lsupdates.py (abspath)
diff --git a/poky/bitbake/lib/toaster/tests/builds/buildtest.py b/poky/bitbake/lib/toaster/tests/builds/buildtest.py
index 872bbd3..13b51fb 100644
--- a/poky/bitbake/lib/toaster/tests/builds/buildtest.py
+++ b/poky/bitbake/lib/toaster/tests/builds/buildtest.py
@@ -119,7 +119,7 @@
         if os.environ.get("TOASTER_TEST_USE_SSTATE_MIRROR"):
             ProjectVariable.objects.get_or_create(
                 name="SSTATE_MIRRORS",
-                value="file://.* http://autobuilder.yoctoproject.org/pub/sstate/PATH;downloadfilename=PATH",
+                value="file://.* http://sstate.yoctoproject.org/PATH;downloadfilename=PATH",
                 project=project)
 
         ProjectTarget.objects.create(project=project,
diff --git a/poky/bitbake/lib/toaster/toastergui/templates/layerdetails.html b/poky/bitbake/lib/toaster/toastergui/templates/layerdetails.html
index 1e26e31..923ca3b 100644
--- a/poky/bitbake/lib/toaster/toastergui/templates/layerdetails.html
+++ b/poky/bitbake/lib/toaster/toastergui/templates/layerdetails.html
@@ -355,7 +355,7 @@
             {% if layerversion.layer_source == layer_source.TYPE_LAYERINDEX  %}
             <dt>Layer index</dt>
             <dd>
-            <a href="http://layers.openembedded.org/layerindex/branch/{{layerversion.release.name}}/layer/{{layerversion.layer.name}}">Layer index {{layerversion.layer.name}}</a>
+            <a href="https://layers.openembedded.org/layerindex/branch/{{layerversion.release.name}}/layer/{{layerversion.layer.name}}">Layer index {{layerversion.layer.name}}</a>
             </dd>
             {% endif %}
           </dl>
diff --git a/poky/bitbake/lib/toaster/toastergui/templates/package_detail_base.html b/poky/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
index 66f8e7f..a4fcd2a 100644
--- a/poky/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
+++ b/poky/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
@@ -127,7 +127,7 @@
                     {% comment %}
                     # Removed per team meeting of 1/29/2014 until
                     # decision on index search algorithm
-                    <a href="http://layers.openembedded.org"  target="_blank">
+                    <a href="https://layers.openembedded.org"  target="_blank">
                     <i class="glyphicon glyphicon-share get-info"></i>
                     </a>
                     {% endcomment %}
diff --git a/poky/documentation/.gitignore b/poky/documentation/.gitignore
index c44580b..35ead8a 100644
--- a/poky/documentation/.gitignore
+++ b/poky/documentation/.gitignore
@@ -1,3 +1,5 @@
 _build/
 Pipfile.lock
 .vscode/
+*/svg/*.png
+*/svg/*.pdf
diff --git a/poky/documentation/Makefile b/poky/documentation/Makefile
index 996f01b..f04f381 100644
--- a/poky/documentation/Makefile
+++ b/poky/documentation/Makefile
@@ -6,8 +6,11 @@
 SPHINXOPTS    ?= -W --keep-going -j auto
 SPHINXBUILD   ?= sphinx-build
 SOURCEDIR     = .
+IMAGEDIRS     = */svg
 BUILDDIR      = _build
 DESTDIR       = final
+SVG2PNG       = inkscape
+SVG2PDF       = inkscape
 
 ifeq ($(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi),0)
 $(error "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed")
@@ -17,7 +20,7 @@
 help:
 	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
 
-.PHONY: help Makefile clean publish
+.PHONY: all help Makefile clean publish epub latexpdf
 
 publish: Makefile html singlehtml
 	rm -rf $(BUILDDIR)/$(DESTDIR)/
@@ -26,10 +29,32 @@
 	cp $(BUILDDIR)/singlehtml/index.html $(BUILDDIR)/$(DESTDIR)/singleindex.html
 	sed -i -e 's@index.html#@singleindex.html#@g' $(BUILDDIR)/$(DESTDIR)/singleindex.html
 
+# Build a list of SVG files to convert to PDFs
+PDFs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.pdf,$(wildcard $(SOURCEDIR)/$(dir)/*.svg)))
+
+# Build a list of SVG files to convert to PNGs
+PNGs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.png,$(wildcard $(SOURCEDIR)/$(dir)/*.svg)))
+
+# Pattern rule for converting SVG to PDF
+%.pdf : %.svg
+	$(SVG2PDF) --export-filename=$@ $<
+
+# Pattern rule for converting SVG to PNG
+%.png : %.svg
+	$(SVG2PNG) --export-filename=$@ $<
+
 clean:
-	@rm -rf $(BUILDDIR)
+	@rm -rf $(BUILDDIR) $(PNGs) $(PDFs)
+
+epub: $(PNGs)
+	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+latexpdf: $(PDFs)
+	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+all: html epub latexpdf
 
 # Catch-all target: route all unknown targets to Sphinx using the new
 # "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
-%: Makefile
+%:
 	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/poky/documentation/README b/poky/documentation/README
index 1e7b4f0..2d9eb88 100644
--- a/poky/documentation/README
+++ b/poky/documentation/README
@@ -113,6 +113,10 @@
 
  $ pip3 install sphinx sphinx_rtd_theme pyyaml
 
+Also install the "inkscape" package from your distribution.
+Inkscape is need to convert SVG graphics to PNG (for EPUB
+export) and to PDF (for PDF export).
+
 To build the documentation locally, run:
 
  $ cd documentation
diff --git a/poky/documentation/brief-yoctoprojectqs/index.rst b/poky/documentation/brief-yoctoprojectqs/index.rst
index 74167be..c041953 100644
--- a/poky/documentation/brief-yoctoprojectqs/index.rst
+++ b/poky/documentation/brief-yoctoprojectqs/index.rst
@@ -80,7 +80,7 @@
 
 .. code-block:: shell
 
-  $ sudo apt-get install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
+  $ sudo apt install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
 
 .. note::
 
@@ -256,7 +256,7 @@
 
       The previous examples showed how to add sstate paths for Yocto Project
       &YOCTO_DOC_VERSION_MINUS_ONE;, &YOCTO_DOC_VERSION;, and a development
-      area. For a complete index of sstate locations, see http://sstate.yoctoproject.org/.
+      area. For a complete index of sstate locations, see :yocto_sstate:`/`.
 
 #. **Start the Build:** Continue with the following command to build an OS
    image for the target, which is ``core-image-sato`` in this example:
diff --git a/poky/documentation/conf.py b/poky/documentation/conf.py
index 8e15fdc..8e08479 100644
--- a/poky/documentation/conf.py
+++ b/poky/documentation/conf.py
@@ -79,6 +79,7 @@
     'yocto_ab': ('https://autobuilder.yoctoproject.org%s', None),
     'yocto_docs': ('https://docs.yoctoproject.org%s', None),
     'yocto_git': ('https://git.yoctoproject.org/cgit/cgit.cgi%s', None),
+    'yocto_sstate': ('http://sstate.yoctoproject.org%s', None),
     'oe_home': ('https://www.openembedded.org%s', None),
     'oe_lists': ('https://lists.openembedded.org%s', None),
     'oe_git': ('https://git.openembedded.org%s', None),
@@ -139,3 +140,7 @@
     'passoptionstopackages': '\PassOptionsToPackage{bookmarksdepth=5}{hyperref}',
     'preamble': '\setcounter{tocdepth}{2}',
 }
+
+# Make the EPUB builder prefer PNG to SVG because of issues rendering Inkscape SVG
+from sphinx.builders.epub3 import Epub3Builder
+Epub3Builder.supported_image_types = ['image/png', 'image/gif', 'image/jpeg']
diff --git a/poky/documentation/dev-manual/common-tasks.rst b/poky/documentation/dev-manual/common-tasks.rst
index b81f51b..3eead14 100644
--- a/poky/documentation/dev-manual/common-tasks.rst
+++ b/poky/documentation/dev-manual/common-tasks.rst
@@ -3531,14 +3531,14 @@
    -  It is also worth noting that ``devshell`` still works over X11
       forwarding and similar situations.
 
-Using a Development Python Shell
+Using a Python Development Shell
 ================================
 
 Similar to working within a development shell as described in the
 previous section, you can also spawn and work within an interactive
 Python development shell. When debugging certain commands or even when
-just editing packages, ``devpyshell`` can be a useful tool. When you
-invoke the ``devpyshell`` task, all tasks up to and including
+just editing packages, ``pydevshell`` can be a useful tool. When you
+invoke the ``pydevshell`` task, all tasks up to and including
 :ref:`ref-tasks-patch` are run for the
 specified target. Then a new terminal is opened. Additionally, key
 Python objects and code are available in the same way they are to
@@ -3563,17 +3563,17 @@
 helpful when debugging a build or preparing software to be used with the
 OpenEmbedded build system.
 
-Following is an example that uses ``devpyshell`` on a target named
+Following is an example that uses ``pydevshell`` on a target named
 ``matchbox-desktop``::
 
-   $ bitbake matchbox-desktop -c devpyshell
+   $ bitbake matchbox-desktop -c pydevshell
 
 This command spawns a terminal and places you in an interactive Python
 interpreter within the OpenEmbedded build environment. The
 :term:`OE_TERMINAL` variable
 controls what type of shell is opened.
 
-When you are finished using ``devpyshell``, you can exit the shell
+When you are finished using ``pydevshell``, you can exit the shell
 either by using Ctrl+d or closing the terminal window.
 
 Building
@@ -5874,7 +5874,7 @@
       use the tool without specifying ``PATH`` even from the root
       account::
 
-         $ sudo apt-get install bmap-tools
+         $ sudo apt install bmap-tools
 
    -  If you are unable to install the ``bmap-tools`` package, you will
       need to build Bmaptool before using it. Use the following command::
@@ -7066,7 +7066,7 @@
 
 .. code-block:: none
 
-  # apt-get update
+  $ sudo apt update
 
 After this step,
 ``apt`` is able to find, install, and upgrade packages from the
@@ -8249,7 +8249,7 @@
 
 
    Alternatively, you can install ``python3-git`` using the appropriate
-   distribution package manager (e.g. ``apt-get``, ``dnf``, or ``zipper``).
+   distribution package manager (e.g. ``apt``, ``dnf``, or ``zipper``).
 
 To see changes to the build history using a web interface, follow the
 instruction in the ``README`` file
@@ -9453,8 +9453,8 @@
 
       Calling this function does not cause the task to fail.
 
--  ``bb.fatal(``\ msg\ ``)``: This logging function is similar to
-   ``bb.error(``\ msg\ ``)`` but also causes the calling task to fail.
+-  ``bb.fatal(msg)``: This logging function is similar to
+   ``bb.error(msg)`` but also causes the calling task to fail.
 
    .. note::
 
@@ -11158,9 +11158,29 @@
 For more usage information refer to :yocto_git:`the meta-spdxscanner repository
 </meta-spdxscanner/>`.
 
+Compliance Limitations with Executables Built from Static Libraries
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Copying Licenses that Do Not Exist
-----------------------------------
+When package A is added to an image via the :term:`RDEPENDS` or :term:`RRECOMMENDS`
+mechanisms as well as explicitly included in the image recipe with
+:term:`IMAGE_INSTALL`, and depends on a static linked library recipe B
+(``DEPENDS += "B"``), package B will neither appear in the generated license
+manifest nor in the generated source tarballs.  This occurs as the
+:ref:`license <ref-classes-license>` and :ref:`archiver <ref-classes-archiver>`
+classes assume that only packages included via :term:`RDEPENDS` or :term:`RRECOMMENDS`
+end up in the image.
+
+As a result, potential obligations regarding license compliance for package B
+may not be met.
+
+The Yocto Project doesn't enable static libraries by default, in part because
+of this issue. Before a solution to this limitation is found, you need to
+keep in mind that if your root filesystem is built from static libraries,
+you will need to manually ensure that your deliveries are compliant
+with the licenses of these libraries.
+
+Copying Non Standard Licenses
+-----------------------------
 
 Some packages, such as the linux-firmware package, have many licenses
 that are not in any way common. You can avoid adding a lot of these
diff --git a/poky/documentation/dev-manual/start.rst b/poky/documentation/dev-manual/start.rst
index fc1b7c3..1ca2531 100644
--- a/poky/documentation/dev-manual/start.rst
+++ b/poky/documentation/dev-manual/start.rst
@@ -670,7 +670,7 @@
 ------------------------
 
 Yocto Project maintains an area for nightly builds that contains tarball
-releases at https://autobuilder.yocto.io//pub/nightly/. These builds include Yocto
+releases at https://autobuilder.yocto.io/pub/nightly/. These builds include Yocto
 Project releases ("poky"), toolchains, and builds for supported
 machines.
 
@@ -678,7 +678,7 @@
 Project component, use the following procedure:
 
 1. *Locate the Index of Nightly Builds:* Open a browser and go to
-   https://autobuilder.yocto.io//pub/nightly/ to access the Nightly Builds.
+   https://autobuilder.yocto.io/pub/nightly/ to access the Nightly Builds.
 
 2. *Select a Date:* Click on the date in which you are interested. If
    you want the latest builds, use "CURRENT".
diff --git a/poky/documentation/migration-guides/migration-2.7.rst b/poky/documentation/migration-guides/migration-2.7.rst
index 69bd390..ae70353 100644
--- a/poky/documentation/migration-guides/migration-2.7.rst
+++ b/poky/documentation/migration-guides/migration-2.7.rst
@@ -87,8 +87,8 @@
    ``bind-utils`` package.
 
 -  Debug split: The default debug split has been changed to create
-   separate source packages (i.e. package_name\ ``-dbg`` and
-   package_name\ ``-src``). If you are currently using ``dbg-pkgs`` in
+   separate source packages (i.e. ``package_name-dbg`` and
+   ``package_name-src``). If you are currently using ``dbg-pkgs`` in
    :term:`IMAGE_FEATURES` to bring in debug
    symbols and you still need the sources, you must now also add
    ``src-pkgs`` to :term:`IMAGE_FEATURES`. Source packages remain in the
diff --git a/poky/documentation/migration-guides/migration-3.4.rst b/poky/documentation/migration-guides/migration-3.4.rst
index e83e936..e785277 100644
--- a/poky/documentation/migration-guides/migration-3.4.rst
+++ b/poky/documentation/migration-guides/migration-3.4.rst
@@ -7,17 +7,18 @@
 Override syntax changes
 -----------------------
 
-This release requires changes to the metadata to indicate where overrides are
-being used in variable key names. This is done with the ``:`` character replacing
-the use of ``_`` previously. This means that an entry like::
+In this release, the ``:`` character replaces the use of ``_`` to
+refer to an override, most commonly when making a conditional assignment
+of a variable. This means that an entry like::
 
    SRC_URI_qemux86 = "file://somefile"
 
-becomes::
+now becomes::
 
    SRC_URI:qemux86 = "file://somefile"
 
-since ``qemux86`` is an override. This applies to any use of override syntax so::
+since ``qemux86`` is an override. This applies to any use of override
+syntax, so the following::
 
    SRC_URI_append = " file://somefile"
    SRC_URI_append_qemux86 = " file://somefile2"
@@ -29,7 +30,7 @@
    SRCREV_pn-bash = "abc"
    BB_TASK_NICE_LEVEL_task-testimage = '0'
 
-becomes::
+would now become::
 
    SRC_URI:append = " file://somefile"
    SRC_URI:append:qemux86 = " file://somefile2"
@@ -63,8 +64,8 @@
 may be the same as a :term:`DISTRO` override causing some confusion. We do
 plan to try and improve consistency as these issues are identified.
 
-To help with migration of layers there is a script in OE-Core. Once configured
-with the overrides used by a layer, this can be run as::
+To help with migration of layers, a script has been provided in OE-Core.
+Once configured with the overrides used by a layer, this can be run as::
 
    <oe-core>/scripts/contrib/convert-overrides.py <layerdir>
 
@@ -74,10 +75,198 @@
    expected to handle every case. In particular, it needs to be told which overrides
    the layer uses (usually machine and distro names/overrides) and the result should
    be carefully checked since it can be a little enthusiastic and will convert
-   references to ``_append``, ``_remove`` and ``_prepend`` in function and variables names.
+   references to ``_append``, ``_remove`` and ``_prepend`` in function and variable
+   names.
 
-For reference, this conversion is important as it allows BitBake to know what is
-an override and what is not. This should allow us to proceed with other syntax
-improvements and simplifications for usability. It also means bitbake no longer
-has to guess and maintain large lookup lists just in case ``functionname`` in
-``my_functionname`` is an override and this should improve efficiency.
+For reference, this conversion is important as it allows BitBake to more reliably
+determine what is an override and what is not, as underscores are also used in
+variable names without intending to be overrides. This should allow us to proceed
+with other syntax improvements and simplifications for usability. It also means
+BitBake no longer has to guess and maintain large lookup lists just in case
+e.g. ``functionname`` in ``my_functionname`` is an override, and thus should improve
+efficiency.
+
+
+New host dependencies
+---------------------
+
+The ``lz4c``, ``pzstd`` and ``zstd`` commands are now required to be
+installed on the build host to support LZ4 and Zstandard compression
+functionality. These are typically provided by ``lz4`` and ``zstd``
+packages in most Linux distributions. Alternatively they are available
+as part of ``buildtools-tarball`` if your distribution does not provide
+them. For more information see
+:ref:`ref-manual/system-requirements:required packages for the build host`.
+
+
+Removed recipes
+---------------
+
+The following recipes have been removed in this release:
+
+- ``assimp``: problematic from a licensing perspective and no longer
+  needed by anything else
+- ``clutter-1.0``: legacy component moved to meta-gnome
+- ``clutter-gst-3.0``: legacy component moved to meta-gnome
+- ``clutter-gtk-1.0``: legacy component moved to meta-gnome
+- ``cogl-1.0``: legacy component moved to meta-gnome
+- ``core-image-clutter``: removed along with clutter
+- ``linux-yocto``: removed version 5.4 recipes (5.14 and 5.10 still
+  provided)
+- ``mklibs-native``: not actively tested and upstream mklibs still
+  requires Python 2
+- ``mx-1.0``: obsolete (last release 2012) and isn't used by anything in
+  any known layer
+- ``packagegroup-core-clutter``: removed along with clutter
+
+
+Removed classes
+---------------
+
+- ``clutter``: moved to meta-gnome along with clutter itself
+- ``image-mklibs``: not actively tested and upstream mklibs still
+  requires Python 2
+- ``meta``: no longer useful. Recipes that need to skip installing
+  packages should inherit ``nopackages`` instead.
+
+
+Prelinking disabled by default
+------------------------------
+
+Recent tests have shown that prelinking works only when PIE is not
+enabled (see `here <https://rlbl.me/prelink-1>`__ and `here <https://rlbl.me/prelink-2>`__),
+and as PIE is both a desirable security feature, and the only
+configuration provided and tested by the Yocto Project, there is
+simply no sense in continuing to enable prelink.
+
+There's also a concern that no one is maintaining the code, and there
+are open bugs (including `this serious one <https://bugzilla.yoctoproject.org/show_bug.cgi?id=14429>`__).
+Given that prelink does intricate address arithmetic and rewriting
+of binaries the best option is to disable the feature. It is recommended
+that you consider disabling this feature in your own configuration if
+it is currently enabled.
+
+
+Virtual runtime provides
+------------------------
+
+Recipes shouldn't use the ``virtual/`` string in :term:`RPROVIDES` and
+:term:`RDEPENDS` - it is confusing because ``virtual/`` has no special
+meaning in :term:`RPROVIDES` and :term:`RDEPENDS` (unlike in the
+corresponding build-time :term:`PROVIDES` and :term:`DEPENDS`).
+
+
+Tune files moved to architecture-specific directories
+-----------------------------------------------------
+
+The tune files found in ``conf/machine/include`` have now been moved
+into their respective architecture name directories under that same
+location; e.g. x86 tune files have moved into an ``x86`` subdirectory,
+MIPS tune files have moved into a ``mips`` subdirectory, etc.
+The ARM tunes have an extra level (``armv8a``, ``armv8m``, etc.) and
+some have been renamed to make them uniform with the rest of the tunes.
+See `this commit <http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=1d381f21f5f13aa0c4e1a45683ed656ebeedd37d>`__
+for reference.
+
+If you have any references to tune files (e.g. in custom machine
+configuration files) they will need to be updated.
+
+
+Extensible SDK host extension
+-----------------------------
+
+For a normal SDK, some layers append to :term:`TOOLCHAIN_HOST_TASK`
+unconditionally which is fine, until the eSDK tries to override the
+variable to its own values. Instead of installing packages specified
+in this variable it uses native recipes instead - a very different
+approach. This has led to confusing errors when binaries are added
+to the SDK but not relocated.
+
+To avoid these issues, a new :term:`TOOLCHAIN_HOST_TASK_ESDK` variable has
+been created. If you wish to extend what is installed in the host
+portion of the eSDK then you will now need to set this variable.
+
+
+Package/recipe splitting
+------------------------
+
+- ``perl-cross`` has been split out from the main ``perl`` recipe to
+  its own ``perlcross`` recipe for maintenance reasons. If you have
+  bbappends for the perl recipe then these may need extending.
+
+- The ``wayland`` recipe now packages its binaries in a
+  ``wayland-tools`` package rather than putting them into
+  ``wayland-dev``.
+
+- Xwayland has been split out of the xserver-xorg tree and thus is now
+  in its own ``xwayland`` recipe. If you need Xwayland in your image
+  then you may now need to add it explicitly.
+
+- The ``rpm`` package no longer has ``rpm-build`` in its :term:`RRECOMMENDS`;
+  if by chance  you still need rpm package building functionality in
+  your image and you have not already done so then you should add
+  ``rpm-build`` to your image explicitly.
+
+- The Python ``statistics`` standard module is now packaged in its own
+  ``python3-statistics`` package instead of ``python3-misc`` as
+  previously.
+
+
+Image / SDK generation changes
+------------------------------
+
+- Recursive dependencies on the ``do_build`` task are now disabled when
+  building SDKs. These are generally not needed; in the unlikely event
+  that you do encounter problems then it will probably be as a result of
+  missing explicit dependencies that need to be added.
+
+- Errors during "complementary" package installation (e.g. for ``*-dbg``
+  and ``*-dev`` packages) during image construction are no longer
+  ignored. Historically some of these packages had installation problems,
+  that is no longer the case. In the unlikely event that you see errors
+  as a result, you will need to fix the installation/packaging issues.
+
+- When building an image, only packages that will be used in building
+  the image (i.e. the first entry in :term:`PACKAGE_CLASSES`) will be
+  produced if multiple package types are enabled (which is not a typical
+  configuration). If in your CI system you need to have the original
+  behaviour, use ``bitbake --runall build <target>``.
+
+- The ``-lic`` package is no longer automatically added to
+  :term:`RRECOMMENDS` for every other package when
+  :term:`LICENSE_CREATE_PACKAGE` is set to "1". If you wish all license
+  packages to be installed corresponding to packages in your image, then
+  you should instead add the new ``lic-pkgs`` feature to
+  :term:`IMAGE_FEATURES`.
+
+
+Miscellaneous
+-------------
+
+- Certificates are now properly checked when bitbake fetches sources
+  over HTTPS. If you receive errors as a result for your custom recipes,
+  you will need to use a mirror or address the issue with the operators
+  of the server in question.
+
+- ``avahi`` has had its GTK+ support disabled by default. If you wish to
+  re-enable it, set ``AVAHI_GTK = "gtk3"`` in a bbappend for the
+  ``avahi`` recipe or in your custom distro configuration file.
+
+- Setting the ``BUILD_REPRODUCIBLE_BINARIES`` variable to "0" no longer
+  uses a strangely old fallback date of April 2011, it instead disables
+  building reproducible binaries as you would logically expect.
+
+- Setting noexec/nostamp/fakeroot varflags to any value besides "1" will
+  now trigger a warning. These should be either set to "1" to enable, or
+  not set at all to disable.
+
+- The previously deprecated ``COMPRESS_CMD`` and
+  ``CVE_CHECK_CVE_WHITELIST`` variables have been removed. Use
+  ``CONVERSION_CMD`` and :term:`CVE_CHECK_WHITELIST` respectively
+  instead.
+
+- The obsolete ``oe_machinstall`` function previously provided in the
+  :ref:`utils <ref-classes-utils>` class has been removed. For
+  machine-specific installation it is recommended that you use the
+  built-in override support in the fetcher or overrides in general
+  instead.
diff --git a/poky/documentation/migration-guides/migration-general.rst b/poky/documentation/migration-guides/migration-general.rst
index 182482e..9eecf69 100644
--- a/poky/documentation/migration-guides/migration-general.rst
+++ b/poky/documentation/migration-guides/migration-general.rst
@@ -1,5 +1,17 @@
+Introduction
+============
+
+This guide provides a list of the backwards-incompatible changes you
+might need to adapt to in your existing Yocto Project configuration
+when upgrading to a new release.
+
+If you are upgrading over multiple releases, you will need to follow
+the sections from the version following the one you were previously
+using up to the new version you are upgrading to.
+
+
 General Migration Considerations
-================================
+--------------------------------
 
 Some considerations are not tied to a specific Yocto Project release.
 This section presents information you should consider when migrating to
@@ -26,16 +38,17 @@
 
    The better solution (where practical) is to use append files
    (``*.bbappend``) to capture any customizations you want to make to a
-   recipe. Doing so, isolates your changes from the main recipe making
+   recipe. Doing so isolates your changes from the main recipe, making
    them much more manageable. However, sometimes it is not practical to
    use an append file. A good example of this is when introducing a
    newer or older version of a recipe in another layer.
 
+
 -  *Updating Append Files*:
 
-   Since append files generally only contain
+   Since append (``.bbappend``) files generally only contain
    your customizations, they often do not need to be adjusted for new
-   releases. However, if the ``.bbappend`` file is specific to a
+   releases. However, if the append file is specific to a
    particular version of the recipe (i.e. its name does not use the %
    wildcard) and the version of the recipe to which it is appending has
    changed, then you will at a minimum need to rename the append file to
@@ -50,5 +63,10 @@
    this is the case and assuming the patch is still needed, you must
    modify the patch file so that it does apply.
 
+ .. tip::
+
+   You can list all append files used in your configuration by running:
+
+     bitbake-layers show-appends
 
 
diff --git a/poky/documentation/overview-manual/concepts.rst b/poky/documentation/overview-manual/concepts.rst
index 3017637..89a5eb4 100644
--- a/poky/documentation/overview-manual/concepts.rst
+++ b/poky/documentation/overview-manual/concepts.rst
@@ -1200,7 +1200,7 @@
    :term:`SSTATE_MIRRORS`
    variables.
 
-The idea of a setscene task (i.e ``do_``\ taskname\ ``_setscene``) is a
+The idea of a setscene task (i.e ``do_taskname_setscene``) is a
 version of the task where instead of building something, BitBake can
 skip to the end result and simply place a set of files into specific
 locations as needed. In some cases, it makes sense to have a setscene
@@ -1614,7 +1614,7 @@
       section in the Yocto Project Development Tasks Manual.
 
    -  The code in the build system that supports incremental builds is
-      not simple code. For techniques that help you work around issues
+      complex. For techniques that help you work around issues
       related to shared state code, see the
       ":ref:`dev-manual/common-tasks:viewing metadata used to create the input signature of a shared state task`"
       and
diff --git a/poky/documentation/overview-manual/development-environment.rst b/poky/documentation/overview-manual/development-environment.rst
index ab155dc..d719ba6 100644
--- a/poky/documentation/overview-manual/development-environment.rst
+++ b/poky/documentation/overview-manual/development-environment.rst
@@ -286,8 +286,8 @@
 to examine. The maintainer then chooses which changes are going to
 become a permanent part of the project.
 
-.. image:: figures/git-workflow.png
-   :align: center
+.. image:: svg/git-workflow.*
+   :width: 100%
 
 While each development environment is unique, there are some best
 practices or methods that help development run smoothly. The following
diff --git a/poky/documentation/overview-manual/figures/git-workflow.png b/poky/documentation/overview-manual/figures/git-workflow.png
deleted file mode 100644
index e401330..0000000
--- a/poky/documentation/overview-manual/figures/git-workflow.png
+++ /dev/null
Binary files differ
diff --git a/poky/documentation/overview-manual/svg/git-workflow.svg b/poky/documentation/overview-manual/svg/git-workflow.svg
new file mode 100644
index 0000000..7747e35
--- /dev/null
+++ b/poky/documentation/overview-manual/svg/git-workflow.svg
@@ -0,0 +1,1205 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="svg2"
+   width="914.0769"
+   height="379.81961"
+   viewBox="0 0 914.0769 379.81961"
+   sodipodi:docname="git-workflow.svg"
+   inkscape:version="1.0.2 (394de47547, 2021-03-26)">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6">
+    <inkscape:path-effect
+       effect="powerstroke"
+       id="path-effect6121"
+       is_visible="true"
+       lpeversion="1"
+       offset_points="0,0.5"
+       sort_points="true"
+       interpolator_type="CubicBezierJohan"
+       interpolator_beta="0.2"
+       start_linecap_type="zerowidth"
+       linejoin_type="extrp_arc"
+       miter_limit="4"
+       scale_width="1"
+       end_linecap_type="zerowidth" />
+    <marker
+       style="overflow:visible"
+       id="marker5783"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5781" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker5623"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5621" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker5487"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5485" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker5285"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mstart"
+       inkscape:isstock="true">
+      <path
+         transform="scale(0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5283" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker5161"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5159" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker4978"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4976" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker4860"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4858" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker4712"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4710" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker4604"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4602" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker4504"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4502" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker4414"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4412" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker4286"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4284" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mend"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path3318" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker4174"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mstart"
+       inkscape:isstock="true">
+      <path
+         transform="scale(0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4172" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Mend"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path3336" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Mstart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mstart"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         transform="scale(0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path3333" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Mstart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mstart"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         style="fill:#ff7800;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path3315" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Lstart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lstart"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#ff7800;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path3327" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow1Lstart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lstart"
+       inkscape:isstock="true">
+      <path
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         style="fill:#ff7800;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path3309" />
+    </marker>
+    <linearGradient
+       id="linearGradient921"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#deddda;stop-opacity:1;"
+         offset="0"
+         id="stop919" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6035-4">
+      <stop
+         id="stop6037-2"
+         style="stop-color:#ffffff"
+         offset="0" />
+      <stop
+         id="stop6039-9"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11801"
+       y2="511.97"
+       spreadMethod="reflect"
+       gradientUnits="userSpaceOnUse"
+       x2="286.63"
+       gradientTransform="matrix(4.9627,0,0,4.9627,278.63,-3355.4)"
+       y1="511.97"
+       x1="269.97"
+       inkscape:collect="always">
+      <stop
+         id="stop5497-7"
+         style="stop-color:#497bb3"
+         offset="0" />
+      <stop
+         id="stop5501-5"
+         style="stop-color:#a5c4e6"
+         offset=".20485" />
+      <stop
+         id="stop5499-8"
+         style="stop-color:#3b5d8b"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11803"
+       y2="527.34003"
+       gradientUnits="userSpaceOnUse"
+       x2="286.63"
+       y1="518.56"
+       x1="282.35999"
+       inkscape:collect="always">
+      <stop
+         id="stop5468-4"
+         style="stop-color:#a5c4e6"
+         offset="0" />
+      <stop
+         id="stop5470-8"
+         style="stop-color:#497bb3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11805"
+       y2="520.33002"
+       xlink:href="#linearGradient6035-4"
+       spreadMethod="reflect"
+       gradientUnits="userSpaceOnUse"
+       x2="327.78"
+       gradientTransform="matrix(4.1992,0,0,4.1992,407.33,-3062.9)"
+       y1="522.60999"
+       x1="308.5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient11807"
+       y2="520.33002"
+       xlink:href="#linearGradient6035-4"
+       spreadMethod="reflect"
+       gradientUnits="userSpaceOnUse"
+       x2="327.78"
+       gradientTransform="matrix(4.1992,0,0,4.1992,407.33,-3015.8)"
+       y1="522.60999"
+       x1="308.5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient11809"
+       y2="520.33002"
+       xlink:href="#linearGradient6035-4"
+       spreadMethod="reflect"
+       gradientUnits="userSpaceOnUse"
+       x2="327.78"
+       gradientTransform="matrix(4.1992,0,0,4.1992,407.33,-2971.6)"
+       y1="522.60999"
+       x1="308.5"
+       inkscape:collect="always" />
+    <marker
+       style="overflow:visible"
+       id="Arrow2Mstart-4"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mstart"
+       inkscape:isstock="true">
+      <path
+         transform="scale(0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path3333-2" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Mend-2"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path3336-7" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker5623-2"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5621-3" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1848"
+     inkscape:window-height="983"
+     id="namedview4"
+     showgrid="false"
+     inkscape:zoom="1.0233281"
+     inkscape:cx="782.70306"
+     inkscape:cy="243.82083"
+     inkscape:window-x="1992"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="g10"
+     inkscape:document-rotation="0"
+     inkscape:snap-perpendicular="true"
+     fit-margin-top="30"
+     lock-margins="true"
+     fit-margin-left="30"
+     fit-margin-right="30"
+     fit-margin-bottom="30">
+    <inkscape:grid
+       type="xygrid"
+       id="grid1257"
+       originx="52.044543"
+       originy="-399.74243" />
+  </sodipodi:namedview>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Image"
+     id="g10"
+     transform="translate(52.044543,-399.74244)">
+    <g
+       id="g5149"
+       transform="translate(-6.511663,12.941792)">
+      <g
+         id="g3925"
+         transform="matrix(0.4122756,0,0,0.4122756,-131.50883,333.4483)"
+         style="stroke-width:2.42556">
+        <g
+           id="layer1-3-5-2"
+           inkscape:label="Capa 1"
+           transform="matrix(1.1196,0,0,1.1196,-122.82057,267.39056)"
+           style="stroke-width:2.42556">
+          <g
+             id="g10-5-2"
+             transform="matrix(0.0423,0,0,0.0423,319.39,59.128)"
+             class="Graphic"
+             style="stroke-width:2.42556">
+            <g
+               id="g12-4-2"
+               style="stroke-width:2.42556">
+              <g
+                 id="g14-64-0"
+                 style="fill:#c7c7c7;stroke-width:2.42556">
+                <path
+                   id="path16-1-5"
+                   inkscape:connector-curvature="0"
+                   d="m 5903,2361 c 50,82 34,3995 -31,4149 -51,122 -1703,1495 -1789,1531 -1117,-7 -1870,-414 -1995,-629 -48,-270 -7,-4433 38,-4520 40,-76 2153,-833 2227,-851 67,-15 1493,229 1550,320 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g18-6-5"
+                 style="fill:#000000;stroke-width:2.42556">
+                <path
+                   id="path20-8-2"
+                   inkscape:connector-curvature="0"
+                   d="m 5881,2374 2,-1 -2,2 c 0,-1 -1,-1 -1,-1 v -2 l 7,-3 -2,2 -5,1 5,-1 -2,2 z m 2,-1 2,-2 2,-2 5,-2 -5,4 5,-4 h 1 l -6,3 v 1 -1 z m 10,-6 h -1 1 -1 l 11,-6 -10,5 z m 11,-4 -11,4 v -1 z m 20,-15 c -2,-3 -4,-6 -7,-9 -2,-3 -5,-5 -8,-7 -5,-4 -12,-8 -20,-12 -7,-4 -15,-7 -24,-11 -9,-4 -19,-7 -30,-11 -21,-8 -47,-16 -75,-24 -29,-8 -61,-16 -95,-25 -136,-34 -313,-72 -494,-106 -181,-35 -364,-66 -511,-90 -73,-11 -138,-21 -189,-27 -25,-3 -47,-6 -65,-8 -9,-1 -17,-1 -24,-2 -4,0 -7,0 -10,-1 h -9 c -3,0 -5,0 -7,1 h -4 c -2,0 -3,0 -4,1 -2,0 -4,1 -7,2 -2,0 -5,1 -8,2 -3,1 -7,2 -11,3 -4,2 -8,3 -13,5 -10,3 -22,7 -35,12 -13,4 -28,9 -44,15 -33,11 -71,25 -115,40 -43,15 -91,32 -144,51 -209,75 -481,173 -753,274 -271,101 -542,203 -747,285 -51,21 -98,40 -140,57 -43,18 -80,34 -111,48 -16,7 -30,14 -42,20 -13,6 -24,12 -33,17 -5,2 -9,5 -13,7 -4,3 -8,5 -10,7 -4,3 -7,5 -9,7 -5,4 -7,8 -9,11 -1,2 -2,5 -4,9 0,3 -1,6 -1,9 -1,3 -1,7 -2,11 -1,4 -1,8 -2,13 0,9 -1,20 -3,32 0,13 -1,27 -2,42 -2,31 -4,69 -6,111 -2,43 -4,91 -5,144 -7,213 -14,504 -19,835 -11,662 -19,1482 -19,2144 0,308 2,583 5,791 1,52 2,100 3,143 1,43 3,82 4,115 1,34 3,62 4,85 1,12 2,22 3,30 1,5 1,9 1,13 1,3 2,7 2,10 l 1,4 2,4 c 9,15 20,30 33,46 14,16 30,32 48,49 35,32 80,66 135,101 107,70 249,142 423,207 173,65 377,124 608,167 231,43 489,70 769,72 h 6 l 5,-2 8,-4 c 2,-2 5,-3 8,-6 3,-2 6,-4 10,-6 l 12,-9 c 9,-6 19,-13 30,-22 11,-8 23,-17 37,-28 27,-20 58,-45 93,-73 35,-28 74,-59 116,-93 169,-136 385,-315 600,-497 215,-181 430,-366 593,-512 41,-37 79,-71 113,-103 34,-31 64,-59 89,-84 13,-13 24,-24 34,-35 11,-11 20,-20 28,-29 8,-9 14,-17 19,-23 3,-4 5,-8 7,-10 2,-4 4,-8 6,-11 0,-2 1,-5 2,-8 1,-3 2,-5 3,-9 1,-6 2,-13 3,-22 2,-8 3,-17 4,-28 1,-11 2,-22 3,-35 2,-25 4,-55 7,-89 1,-34 3,-72 5,-113 8,-166 14,-391 19,-648 10,-516 16,-1164 16,-1743 0,-389 -3,-747 -8,-1012 -1,-66 -2,-127 -4,-181 -1,-53 -3,-100 -5,-139 -1,-20 -2,-38 -3,-53 -1,-16 -2,-30 -3,-41 -1,-6 -1,-11 -2,-16 -1,-5 -1,-10 -2,-13 -1,-4 -1,-8 -2,-11 -1,-2 -1,-4 -2,-5 -1,-3 -2,-5 -3,-6 z m -37,21 12,-12 z m -6,9 c 1,3 1,7 2,11 0,4 1,9 1,15 1,11 3,24 4,39 0,15 1,33 2,52 2,39 4,86 6,139 1,53 2,114 4,180 5,264 7,622 7,1011 0,578 -5,1227 -15,1742 -6,257 -12,481 -19,646 -2,42 -4,79 -6,113 -2,33 -4,63 -6,88 -1,12 -2,24 -4,34 0,10 -2,18 -3,26 -1,7 -2,14 -3,18 0,3 -1,4 -1,6 0,1 -1,2 -1,2 0,1 -1,2 -2,4 -1,1 -3,4 -4,6 -5,6 -10,13 -17,21 -7,7 -16,17 -26,27 l -34,34 c -25,24 -54,52 -88,83 -33,31 -71,66 -112,102 -163,146 -377,330 -592,512 -215,181 -431,360 -598,495 -42,34 -81,65 -116,93 -35,28 -66,52 -93,73 -13,10 -26,20 -37,28 -10,8 -20,15 -28,21 -4,3 -8,6 -12,8 -3,2 -6,4 -8,6 -2,1 -4,2 -5,3 -276,-2 -528,-29 -755,-71 -228,-42 -429,-100 -600,-164 -169,-64 -308,-134 -413,-202 -51,-33 -94,-66 -128,-97 -17,-15 -31,-30 -43,-44 -10,-12 -19,-23 -26,-34 v -4 c -1,-3 -1,-7 -1,-11 -1,-8 -2,-18 -3,-28 -2,-23 -3,-51 -5,-84 -1,-33 -2,-71 -3,-115 -1,-42 -2,-90 -3,-142 -3,-208 -5,-482 -5,-790 0,-662 7,-1481 18,-2143 6,-330 12,-622 19,-834 2,-53 4,-101 6,-144 2,-42 3,-79 5,-109 1,-16 2,-30 3,-42 1,-12 2,-22 3,-31 0,-4 1,-8 1,-11 1,-4 1,-6 2,-9 v -2 c 0,-1 1,-1 2,-2 2,-1 4,-3 7,-5 4,-1 7,-4 11,-6 9,-5 19,-10 31,-16 12,-6 26,-12 41,-19 31,-14 67,-29 109,-47 42,-17 89,-37 140,-57 205,-82 475,-184 746,-284 271,-101 543,-200 752,-274 52,-19 101,-36 144,-51 43,-16 82,-29 114,-40 17,-6 31,-11 44,-16 13,-4 25,-8 35,-11 4,-2 9,-3 13,-4 4,-2 7,-3 10,-4 3,-1 5,-1 8,-2 l 3,-1 -2,-8 1,8 h 1 4 7 c 2,0 5,0 8,1 7,0 14,1 23,2 17,1 39,4 64,7 50,6 114,16 187,27 147,23 329,55 509,89 180,35 357,72 492,106 34,9 65,17 92,25 28,8 53,15 73,23 10,3 20,7 28,10 7,3 15,6 20,9 5,3 10,5 13,8 0,0 1,0 1,1 0,1 1,3 1,4 z M 4075,8017 c 1,0 1,-1 2,-1 h 6 v 14 l -8,-13 8,13 v 11 l -10,-23 c 0,0 1,-1 2,-1 z M 2110,7400 c 1,1 1,3 2,4 1,1 1,3 1,4 l -25,4 21,-11 1,-1 -1,1 1,-1 h 2 z m 39,-4498 v 3 c -1,0 -1,1 -2,1 l -5,-6 -17,-4 17,4 -2,-1 4,2 z m -7,-2 2,1 z m -16,-8 14,7 z m 14,7 -10,-11 z m 2217,-841 -2,-17 z m -4,-17 4,17 v 1 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g22-8-9"
+                 style="fill:#ffffff;fill-opacity:0.54118;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.54118">
+                <path
+                   id="path24-1-0"
+                   inkscape:connector-curvature="0"
+                   d="m 5822,2442 -52,22 -52,23 -52,23 -53,25 -53,25 -53,26 -53,26 -54,27 -54,27 -54,28 -55,28 -54,29 -55,29 -55,29 -111,60 -112,60 -112,60 -113,61 -114,60 -114,60 -114,59 -57,29 -57,29 -58,28 -57,28 -27,-6 -28,-7 -56,-13 -58,-14 -59,-13 -60,-14 -61,-14 -61,-14 -63,-14 -62,-14 -63,-15 -127,-28 -127,-28 -64,-14 -63,-14 -62,-13 -62,-13 -61,-13 -60,-13 -60,-13 -58,-12 -57,-12 -28,-5 -28,-6 -27,-5 -27,-6 -27,-5 -26,-5 -26,-5 -25,-6 -25,-4 -24,-5 -24,-5 -24,-4 -23,-4 -22,-5 -22,-4 -21,-3 -21,-4 -20,-4 52,16 52,16 53,16 54,15 55,16 55,15 57,16 56,15 57,16 58,15 116,31 117,30 118,31 118,31 117,30 116,31 58,15 57,16 57,15 56,16 55,15 55,16 54,15 53,16 52,16 52,16 1,60 2,61 1,61 1,63 1,64 2,64 1,65 1,66 1,67 1,67 1,68 v 69 l 1,69 1,70 1,70 v 71 l 1,71 v 72 l 1,72 1,73 1,146 1,147 v 149 l 1,149 2,299 1,300 1,149 1,148 1,147 1,146 1,73 v 72 l 1,72 1,71 v 71 l 1,71 1,69 1,70 v 68 l 1,68 1,67 1,67 1,66 1,65 1,65 2,63 1,63 1,62 2,61 1,60 1,-61 1,-61 v -63 l 1,-63 1,-64 1,-65 1,-66 1,-67 1,-67 1,-68 1,-69 2,-69 1,-70 1,-71 1,-71 1,-72 1,-72 2,-73 1,-73 1,-73 3,-148 3,-149 2,-151 3,-151 6,-303 5,-303 3,-151 3,-150 2,-149 3,-149 1,-73 2,-73 1,-73 1,-72 1,-71 1,-72 1,-70 2,-70 1,-70 1,-68 1,-68 1,-68 1,-66 1,-66 1,-65 1,-64 1,-64 v -62 l 1,-62 1,-60 110,-59 109,-59 109,-57 109,-58 108,-57 107,-58 107,-57 107,-58 105,-58 105,-58 104,-60 103,-60 51,-30 50,-31 51,-31 50,-31 50,-31 50,-32 49,-32 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g28-1-8"
+                 style="fill:none;stroke-width:2.42556">
+                <path
+                   id="path30-7-3"
+                   inkscape:connector-curvature="0"
+                   d="m 5822,2442 c -549,232 -1156,606 -1768,901 -580,-138 -1417,-322 -1839,-396 543,169 1257,327 1800,496 32,1271 16,3196 48,4467 16,-1282 59,-3238 75,-4519 586,-317 1161,-601 1684,-949 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g32-7-8"
+                 style="fill:#000000;fill-opacity:0.16078;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.16078">
+                <path
+                   id="path34-1-0"
+                   inkscape:connector-curvature="0"
+                   d="m 2420,6628 10,14 10,13 11,13 12,13 12,12 12,12 14,12 13,12 14,12 15,11 15,11 16,11 15,11 17,10 16,10 17,11 18,9 18,10 18,9 18,8 19,9 19,8 19,8 19,8 40,15 40,14 41,12 41,11 42,10 41,9 42,8 41,6 41,6 41,3 21,2 20,1 19,1 h 20 20 19 l 19,-1 19,-1 18,-1 19,-1 17,-2 18,-3 17,-2 17,-3 17,-4 16,-4 15,-4 15,-4 15,-5 15,-5 -2,-1 h -1 l -5,-2 -6,-1 -7,-2 -8,-2 -10,-3 -10,-3 -12,-3 -13,-4 -14,-3 -15,-4 -16,-5 -16,-4 -18,-5 -18,-5 -19,-5 -20,-6 -20,-5 -21,-6 -22,-6 -22,-6 -22,-6 -23,-7 -24,-6 -48,-13 -49,-14 -50,-14 -50,-13 -50,-15 -50,-13 -49,-14 -49,-13 -23,-7 -24,-6 -23,-7 -22,-6 -22,-6 -21,-6 -21,-6 -20,-5 -19,-6 -19,-5 -18,-5 -17,-5 -16,-4 -15,-5 -15,-4 -13,-4 -12,-3 -12,-3 -10,-3 -9,-3 -7,-2 -7,-2 -5,-2 h -2 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g38-5-0"
+                 style="fill:none;stroke-width:2.42556">
+                <path
+                   id="path40-7-9"
+                   inkscape:connector-curvature="0"
+                   d="m 2420,6628 c 201,289 833,431 1133,315 -53,-14 -1066,-293 -1133,-315 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g42-6-1"
+                 style="fill:#ffffff;fill-opacity:0.38824;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.38824">
+                <path
+                   id="path44-7-9"
+                   inkscape:connector-curvature="0"
+                   d="m 3454,6093 -936,-361 -9,4 -8,4 -8,4 -6,5 -6,6 -6,6 -5,7 -5,6 -4,7 -4,7 -3,7 -3,8 -3,8 -2,7 -3,15 -2,15 -2,14 v 6 7 5 6 5 4 4 l 1,4 v 2 2 1 1 l 146,51 1,1 1,1 1,1 1,2 2,2 1,3 3,3 2,3 3,4 3,4 3,4 4,5 4,4 4,6 5,4 10,12 10,11 13,12 13,12 14,13 15,12 17,13 17,12 19,12 19,11 21,11 22,10 11,4 11,5 12,4 12,4 13,3 12,3 13,3 13,3 13,2 13,1 14,2 14,1 h 14 15 15 l 15,-1 15,-2 15,-2 16,-2 16,-3 16,-4 16,-4 17,-5 17,-6 h 1 l 2,1 h 3 l 6,1 6,1 7,1 8,1 9,1 10,1 11,1 12,1 12,1 h 12 l 13,1 h 26 l 14,-1 13,-1 14,-1 13,-2 13,-2 12,-3 12,-3 12,-3 10,-5 11,-5 9,-6 8,-6 8,-8 3,-4 3,-4 3,-4 2,-4 2,-5 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g48-57-2"
+                 style="fill:none;stroke-width:2.42556">
+                <path
+                   id="path50-0-5"
+                   inkscape:connector-curvature="0"
+                   d="m 3454,6093 -936,-361 c -97,34 -78,177 -78,177 l 146,51 c 0,0 204,319 566,194 0,0 269,48 302,-61 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g52-5-4"
+                 style="fill:#606060;stroke-width:2.42556">
+                <path
+                   id="path54-7-4"
+                   inkscape:connector-curvature="0"
+                   d="m 3446,5971 c -311,-81 -622,-161 -933,-242 -12,44 -13,107 6,140 47,23 142,41 189,64 136,131 255,142 472,124 84,17 168,31 251,48 26,-51 33,-72 15,-134 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g56-7-9"
+                 style="fill:none;stroke-width:2.42556">
+                <path
+                   id="path58-8-9"
+                   inkscape:connector-curvature="0"
+                   d="m 3446,5971 c -311,-81 -622,-161 -933,-242 -12,44 -13,107 6,140 47,23 142,41 189,64 136,131 255,142 472,124 84,17 168,31 251,48 26,-51 33,-72 15,-134 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g60-5-3"
+                 style="fill:#ffffff;fill-opacity:0.4;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.4">
+                <path
+                   id="path62-2-6"
+                   inkscape:connector-curvature="0"
+                   d="m 5856,2414 -1813,1017 7,4549 1775,-1494 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g66-2-5"
+                 style="fill:none;stroke-width:2.42556">
+                <path
+                   id="path68-9-0"
+                   inkscape:connector-curvature="0"
+                   d="m 5856,2414 -1813,1017 7,4549 1775,-1494 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g70-9-2"
+                 style="fill:#000000;fill-opacity:0.16078;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.16078">
+                <path
+                   id="path72-9-9"
+                   inkscape:connector-curvature="0"
+                   d="m 2525,6916 10,13 11,12 10,13 11,11 11,12 11,11 12,11 12,10 12,10 12,10 13,10 12,9 13,9 13,8 27,17 28,15 28,14 28,13 29,11 29,11 30,9 30,8 29,8 30,6 30,5 30,4 30,3 30,2 29,2 h 29 l 29,-1 27,-2 28,-2 27,-3 26,-5 25,-5 24,-6 24,-6 22,-8 -2,-1 h -4 l -4,-2 -5,-1 -6,-2 -8,-2 -8,-2 -9,-2 -10,-3 -10,-3 -11,-3 -12,-3 -13,-4 -13,-3 -14,-4 -15,-4 -15,-4 -15,-5 -16,-4 -16,-5 -17,-4 -18,-5 -35,-10 -36,-10 -38,-10 -38,-10 -38,-11 -76,-21 -37,-10 -37,-11 -36,-10 -17,-4 -17,-5 -17,-5 -16,-4 -16,-5 -15,-4 -15,-4 -14,-4 -14,-4 -13,-4 -12,-3 -11,-3 -12,-3 -10,-3 -9,-3 -8,-2 -8,-3 -7,-1 -6,-2 -5,-2 -4,-1 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g76-2-3"
+                 style="fill:none;stroke-width:2.42556">
+                <path
+                   id="path78-7-5"
+                   inkscape:connector-curvature="0"
+                   d="m 2525,6916 c 209,276 627,323 861,239 -39,-10 -810,-222 -861,-239 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g80-6-1"
+                 style="fill:#000000;fill-opacity:0.16078;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.16078">
+                <path
+                   id="path82-0-7"
+                   inkscape:connector-curvature="0"
+                   d="m 2680,7199 12,15 12,14 13,14 14,12 14,13 14,11 15,11 16,11 15,9 17,9 16,9 17,7 18,7 17,7 18,5 18,5 18,5 19,3 18,4 19,2 18,2 19,1 h 19 19 l 18,-1 19,-2 18,-2 19,-3 18,-4 18,-4 18,-5 17,-6 h -1 l -2,-1 h -3 l -4,-1 -3,-1 -5,-2 -5,-1 -6,-2 -6,-1 -6,-2 -7,-2 -8,-2 -8,-2 -8,-3 -9,-2 -9,-2 -19,-6 -20,-5 -22,-6 -22,-6 -23,-6 -23,-7 -48,-13 -48,-13 -23,-7 -23,-6 -23,-6 -21,-6 -21,-6 -19,-6 -9,-2 -9,-3 -9,-2 -8,-2 -8,-2 -7,-2 -7,-2 -6,-2 -6,-2 -5,-2 -5,-1 -5,-1 -3,-1 -3,-1 -3,-1 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g86-0-3"
+                 style="fill:none;stroke-width:2.42556">
+                <path
+                   id="path88-3-1"
+                   inkscape:connector-curvature="0"
+                   d="m 2680,7199 c 121,163 355,213 540,149 -25,-6 -507,-139 -540,-149 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g90-5-4"
+                 style="fill:#fcfcfc;fill-opacity:0.43922;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.43922">
+                <path
+                   id="path92-9-6"
+                   inkscape:connector-curvature="0"
+                   d="m 2356,3259 -92,13 -17,2173 1425,399 35,-116 -1369,-365 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g96-7-4"
+                 style="fill:none;stroke-width:2.42556">
+                <path
+                   id="path98-7-2"
+                   inkscape:connector-curvature="0"
+                   d="m 2356,3259 -92,13 -17,2173 1425,399 35,-116 -1369,-365 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g100-1-2"
+                 style="fill:#000000;fill-opacity:0.23137;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.23137">
+                <path
+                   id="path102-64-6"
+                   inkscape:connector-curvature="0"
+                   d="m 3700,4065 -2,61 -1340,-386 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g106-1-1"
+                 style="fill:#000000;fill-opacity:0.23137;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.23137">
+                <path
+                   id="path108-3-2"
+                   inkscape:connector-curvature="0"
+                   d="m 3720,4507 -3,61 -1339,-386 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g112-9-8"
+                 style="fill:#000000;fill-opacity:0.23137;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.23137">
+                <path
+                   id="path114-09-9"
+                   inkscape:connector-curvature="0"
+                   d="m 3700,4916 -2,61 -1340,-386 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g118-8-8"
+                 style="fill:#000000;fill-opacity:0.23137;stroke:#ffffff;stroke-width:2.42556;stroke-opacity:0.23137">
+                <path
+                   id="path120-3-8"
+                   inkscape:connector-curvature="0"
+                   d="m 3700,5318 -2,61 -1340,-387 z"
+                   style="stroke-width:2.42556" />
+              </g>
+              <g
+                 id="g124-5-6"
+                 style="fill:#9e9e9e;stroke-width:2.42556">
+                <path
+                   id="path126-3-8"
+                   inkscape:connector-curvature="0"
+                   d="m 2361,3309 1332,333 -11,2197 h 11 11 l 11,-2205 v -9 l -8,-2 -1341,-335 -2,11 z m 1340,335 -8,-2 v -8 h 11 z"
+                   style="stroke-width:2.42556" />
+              </g>
+            </g>
+          </g>
+        </g>
+        <g
+           id="g16724-3"
+           transform="matrix(0.52218647,0,0,0.42933357,-400.52138,1028.8214)"
+           style="stroke-width:2.42556">
+          <path
+             id="path5488-8"
+             d="m 1618.4,-890.85 v 126.36 h 0.5249 c -0.3385,1.0131 -0.5249,1.975 -0.5249,3.0182 0,15.228 36.989,27.557 82.672,27.557 45.683,0 82.672,-12.33 82.672,-27.557 0,-1.0447 -0.1856,-2.0037 -0.5249,-3.0182 h 0.5249 v -126.36 h -165.34 z"
+             sodipodi:nodetypes="cccssscccc"
+             style="fill:url(#linearGradient11801);stroke-width:2.42556"
+             inkscape:connector-curvature="0" />
+          <ellipse
+             id="path5460-3"
+             style="fill:url(#linearGradient11803);stroke-width:2.42556"
+             transform="matrix(4.9627,0,0,4.9627,278.63,-3481.3)"
+             cx="286.6308"
+             cy="521.77954"
+             rx="16.667517"
+             ry="5.5558391" />
+          <path
+             id="path6026-3"
+             d="m 1618.3,-800.18 c 0.6187,15.05 37.507,27.164 82.804,27.164 45.168,0 81.851,-12.042 82.672,-27.033 -14.494,12.328 -46.02,20.865 -82.672,20.865 -36.727,0 -68.35,-8.6271 -82.804,-20.996 z"
+             style="fill:#3b5d8b;stroke-width:2.42556"
+             inkscape:connector-curvature="0" />
+          <path
+             id="path6030-3"
+             d="m 1618.3,-891.51 c 0.6187,15.05 37.507,27.164 82.804,27.164 45.168,0 81.851,-12.042 82.672,-27.033 -0.9058,0.77052 -1.8509,1.4911 -2.8869,2.2308 -0.038,0.0491 -0.091,0.0823 -0.131,0.13101 -9.6253,11.663 -41.587,20.209 -79.654,20.209 -38.306,0 -70.487,-8.6955 -79.917,-20.471 -0.1046,-0.0752 -0.1596,-0.18729 -0.2625,-0.26245 -0.9185,-0.67058 -1.8123,-1.2733 -2.6245,-1.9684 z"
+             style="fill:url(#linearGradient11805);stroke-width:2.42556"
+             inkscape:connector-curvature="0" />
+          <path
+             id="path6022-8"
+             style="fill:#3b5d8b;stroke-width:2.42556"
+             inkscape:connector-curvature="0"
+             d="m 1618.3,-844.36 c 0.6187,15.05 37.507,27.164 82.804,27.164 45.168,0 81.851,-12.042 82.672,-27.033 -14.494,12.328 -46.02,20.865 -82.672,20.865 -36.727,0 -68.35,-8.6271 -82.804,-20.996 z" />
+          <path
+             id="path6043-0"
+             d="m 1618.3,-844.36 c 0.6187,15.05 37.507,27.164 82.804,27.164 45.168,0 81.851,-12.042 82.672,-27.033 -0.2087,0.17721 -0.4427,0.3519 -0.6561,0.52491 -5.2161,13.55 -39.937,24.014 -82.016,24.014 -42.466,0 -77.55,-10.545 -82.279,-24.277 -0.1684,-0.13312 -0.3624,-0.2549 -0.5249,-0.39347 z"
+             style="fill:url(#linearGradient11807);stroke-width:2.42556"
+             inkscape:connector-curvature="0" />
+          <path
+             id="path6054-4"
+             style="fill:url(#linearGradient11809);stroke-width:2.42556"
+             inkscape:connector-curvature="0"
+             d="m 1618.3,-800.18 c 0.6187,15.05 37.507,27.164 82.804,27.164 45.168,0 81.851,-12.042 82.672,-27.033 -0.2087,0.17721 -0.4427,0.3519 -0.6561,0.52491 -5.2161,13.55 -39.937,24.014 -82.016,24.014 -42.466,0 -77.55,-10.545 -82.279,-24.277 -0.1684,-0.13312 -0.3624,-0.2549 -0.5249,-0.39347 z" />
+          <path
+             id="path6060-7"
+             d="m 1618.8,-754.64 c 4.7284,13.732 39.813,24.277 82.279,24.277 42.079,0 76.8,-10.464 82.016,-24.014 -14.766,12.043 -45.892,20.34 -82.016,20.34 -36.314,0 -67.608,-8.4562 -82.279,-20.602 z"
+             style="fill:#3b5d8b;stroke-width:2.42556"
+             inkscape:connector-curvature="0" />
+        </g>
+      </g>
+      <text
+         xml:space="preserve"
+         style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="-15.501629"
+         y="651.78131"
+         id="text1185"><tspan
+           sodipodi:role="line"
+           id="tspan1183"
+           x="-15.501629"
+           y="651.78131"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none">source repositories </tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="142.22464"
+       y="565.10297"
+       id="text907"><tspan
+         sodipodi:role="line"
+         id="tspan905"
+         x="142.22464"
+         y="565.10297" /></text>
+    <text
+       xml:space="preserve"
+       style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="98.363503"
+       y="637.8432"
+       id="text911"><tspan
+         sodipodi:role="line"
+         id="tspan909"
+         x="98.363503"
+         y="637.8432" /></text>
+    <text
+       xml:space="preserve"
+       style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="-59.575905"
+       y="580.05695"
+       id="text915"><tspan
+         sodipodi:role="line"
+         id="tspan913"
+         x="-59.575905"
+         y="580.05695" /></text>
+    <g
+       id="g1153"
+       transform="translate(-10.813715,57.621063)">
+      <rect
+         style="opacity:1;fill:#deddda;fill-opacity:1;fill-rule:evenodd;stroke:#9a9996;stroke-width:2;stroke-opacity:1"
+         id="rect917"
+         width="125.52824"
+         height="69.017166"
+         x="196.65169"
+         y="503.49741"
+         ry="3.4599047" />
+      <text
+         xml:space="preserve"
+         style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="259.14236"
+         y="523.42725"
+         id="text1185-3"><tspan
+           sodipodi:role="line"
+           id="tspan1183-8"
+           x="259.14236"
+           y="523.42725"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none">project</tspan><tspan
+           sodipodi:role="line"
+           x="259.14236"
+           y="541.42395"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none"
+           id="tspan959">&quot;master&quot;</tspan><tspan
+           sodipodi:role="line"
+           x="260.99133"
+           y="559.42059"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none"
+           id="tspan957"><tspan
+   style="text-align:center;text-anchor:middle"
+   id="tspan961">git repository</tspan> </tspan></text>
+    </g>
+    <g
+       id="g1125"
+       transform="matrix(0.22552185,0,0,0.22090333,92.716864,465.68288)"
+       style="stroke:none;stroke-width:4.48028">
+      <rect
+         style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:8.96054;stroke-opacity:1"
+         id="rect1061"
+         width="452.00439"
+         height="192.0562"
+         x="11.609296"
+         y="276.44562"
+         ry="4.0176301" />
+      <g
+         id="g1109"
+         transform="translate(-2.7615661,-1.7576335)"
+         style="stroke:none;stroke-width:4.48028">
+        <path
+           id="path14"
+           class="st0"
+           d="m 439.74452,358.11274 c 0,4.22 -3.41,7.64 -7.64,7.64 -4.22,0 -7.63,-3.42 -7.63,-7.64 0,-4.22 3.41,-7.64 7.63,-7.64 4.23,0 7.64,3.42 7.64,7.64 v 0"
+           style="fill:#4a97d2;fill-opacity:1;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path16"
+           class="st1"
+           d="m 114.56452,324.94274 -11.13,-6.3 -22.409996,45.41 -23.9,-45.41 -11.27,6.3 28.41,53.38 c -0.21,0.51 -0.86,1.9 -1.95,4.22 -1.11,2.21 -2.25,4.41 -3.46,6.62 -2.11,3.81 -4.26,6.91 -6.46,9.32 -2.21,2.51 -4.46,4.51 -6.78,6.02 -2.3,1.51 -4.7,2.65 -7.21,3.46 -2.41,0.8 -4.87,1.45 -7.38,1.95 l 5.12,10.68 c 1.6,-0.21 3.75,-0.71 6.46,-1.51 2.81,-0.7 5.86,-2.06 9.17,-4.06 3.3,-2 6.67,-4.86 10.07,-8.57 3.52,-3.71 6.78,-8.62 9.78,-14.73 l 32.939996,-66.78"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path18"
+           class="st1"
+           d="m 175.39452,358.18274 c 0,3.51 -0.6,6.76 -1.81,9.78 -1.21,3 -2.86,5.62 -4.95,7.81 -2.01,2.11 -4.41,3.81 -7.22,5.12 -2.71,1.19 -5.67,1.8 -8.87,1.8 -3.21,0 -6.22,-0.6 -9.02,-1.8 -2.81,-1.31 -5.27,-3.01 -7.38,-5.12 -2,-2.19 -3.6,-4.81 -4.81,-7.81 -1.21,-3.01 -1.81,-6.27 -1.81,-9.78 0,-3.51 0.6,-6.76 1.81,-9.77 1.21,-3 2.81,-5.61 4.81,-7.82 2.11,-2.21 4.57,-3.92 7.38,-5.11 2.8,-1.32 5.81,-1.97 9.02,-1.97 3.21,0 6.16,0.65 8.87,1.97 2.81,1.19 5.21,2.9 7.22,5.11 2.1,2.21 3.75,4.81 4.95,7.82 1.2,3.01 1.81,6.26 1.81,9.77 m 13.98,0 c 0,-5.21 -0.95,-10.08 -2.86,-14.59 -1.81,-4.51 -4.36,-8.42 -7.67,-11.73 -3.32,-3.3 -7.22,-5.86 -11.73,-7.67 -4.51,-1.9 -9.38,-2.86 -14.59,-2.86 -5.21,0 -10.08,0.95 -14.59,2.86 -4.51,1.81 -8.43,4.36 -11.73,7.67 -3.3,3.31 -5.92,7.22 -7.82,11.73 -1.9,4.51 -2.86,9.38 -2.86,14.59 0,5.21 0.95,10.08 2.86,14.59 1.9,4.41 4.52,8.27 7.82,11.57 3.3,3.32 7.22,5.92 11.73,7.82 4.51,1.81 9.38,2.71 14.59,2.71 5.21,0 10.08,-0.9 14.59,-2.71 4.51,-1.91 8.41,-4.51 11.73,-7.82 3.3,-3.3 5.86,-7.16 7.67,-11.57 1.91,-4.51 2.86,-9.38 2.86,-14.59"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path20"
+           class="st1"
+           d="m 373.22452,358.18274 c 0,3.51 -0.6,6.76 -1.81,9.78 -1.21,3 -2.86,5.62 -4.97,7.81 -2,2.11 -4.4,3.81 -7.21,5.12 -2.71,1.19 -5.67,1.8 -8.87,1.8 -3.21,0 -6.22,-0.6 -9.03,-1.8 -2.8,-1.31 -5.26,-3.01 -7.37,-5.12 -2,-2.19 -3.61,-4.81 -4.81,-7.81 -1.21,-3.01 -1.81,-6.27 -1.81,-9.78 0,-3.51 0.6,-6.76 1.81,-9.77 1.21,-3 2.81,-5.61 4.81,-7.82 2.11,-2.21 4.57,-3.92 7.37,-5.11 2.81,-1.32 5.82,-1.97 9.03,-1.97 3.21,0 6.16,0.65 8.87,1.97 2.81,1.19 5.21,2.9 7.21,5.11 2.11,2.21 3.76,4.81 4.97,7.82 1.21,3.01 1.81,6.26 1.81,9.77 m 13.98,0 c 0,-5.21 -0.95,-10.08 -2.86,-14.59 -1.81,-4.51 -4.36,-8.42 -7.67,-11.73 -3.32,-3.3 -7.22,-5.86 -11.73,-7.67 -4.51,-1.9 -9.38,-2.86 -14.59,-2.86 -5.22,0 -10.08,0.95 -14.59,2.86 -4.51,1.81 -8.43,4.36 -11.73,7.67 -3.3,3.31 -5.92,7.22 -7.82,11.73 -1.9,4.51 -2.86,9.38 -2.86,14.59 0,5.21 0.95,10.08 2.86,14.59 1.9,4.41 4.52,8.27 7.82,11.57 3.3,3.32 7.22,5.92 11.73,7.82 4.51,1.81 9.37,2.71 14.59,2.71 5.21,0 10.08,-0.9 14.59,-2.71 4.51,-1.91 8.41,-4.51 11.73,-7.82 3.3,-3.3 5.86,-7.16 7.67,-11.57 1.91,-4.51 2.86,-9.38 2.86,-14.59"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path22"
+           class="st1"
+           d="m 288.05452,298.59274 -13.39,7.52 v 16.45 h -36.21 c -26.15,0 -41.9,12.74 -41.9,35.95 0,36.04 37.55,42.84 64.25,29.96 l -5.63,-10.92 c -21.13,9.23 -44.53,5.3 -44.53,-19.28 0,-15.86 8.26,-24.54 27.49,-24.54 h 36.54 v 43.82 c 0,19.37 22.19,19.81 35.95,11.86 l -5.29,-10.45 c -8.85,4.48 -17.26,5.06 -17.26,-3.53 v -41.7 h 18.32 v -11.17 h -18.32 l -0.02,-23.97 v 0"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path24"
+           class="st1"
+           d="m 136.79452,428.30274 h 3.35 c 1.69,-0.01 3.34,1.19 3.34,2.9 0,2.87 -3.23,3.3 -3.23,3.3 l -3.46,0.02 z m -4.84,-4.1 v 25.3 h 4.83 l 0.06,-10.67 c 8.62,0.54 11.84,-2.46 11.84,-7.75 0,-4.75 -4.26,-6.88 -8.34,-6.88 h -8.39 v 0"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path26"
+           class="st1"
+           d="m 224.38452,436.87274 c 0,1.23 -0.23,2.39 -0.69,3.46 -0.42,1.04 -1.02,1.95 -1.81,2.74 -0.78,0.78 -1.7,1.4 -2.75,1.86 -1.04,0.42 -2.17,0.64 -3.38,0.64 -1.22,0 -2.35,-0.22 -3.39,-0.64 -1.05,-0.46 -1.96,-1.07 -2.75,-1.86 -0.76,-0.78 -1.36,-1.7 -1.81,-2.74 -0.46,-1.07 -0.69,-2.23 -0.69,-3.46 0,-1.23 0.23,-2.37 0.69,-3.42 0.45,-1.06 1.05,-1.99 1.81,-2.77 0.78,-0.78 1.7,-1.39 2.75,-1.82 1.04,-0.45 2.17,-0.67 3.39,-0.67 1.21,0 2.34,0.23 3.38,0.67 1.05,0.43 1.96,1.04 2.75,1.82 0.78,0.78 1.39,1.71 1.81,2.77 0.46,1.05 0.69,2.19 0.69,3.42 m 4.9,0 c 0,-1.81 -0.35,-3.5 -1.06,-5.06 -0.69,-1.59 -1.65,-2.97 -2.89,-4.12 -1.21,-1.17 -2.64,-2.09 -4.3,-2.75 -1.64,-0.69 -3.41,-1.04 -5.3,-1.04 -1.9,0 -3.69,0.35 -5.35,1.04 -1.64,0.66 -3.06,1.58 -4.27,2.75 -1.22,1.16 -2.17,2.53 -2.89,4.12 -0.69,1.57 -1.03,3.25 -1.03,5.06 0,1.83 0.34,3.53 1.03,5.1 0.72,1.57 1.68,2.94 2.89,4.12 1.21,1.17 2.63,2.09 4.27,2.75 1.66,0.66 3.45,1 5.35,1 1.89,0 3.67,-0.34 5.3,-1 1.66,-0.66 3.1,-1.58 4.3,-2.75 1.24,-1.18 2.21,-2.55 2.89,-4.12 0.71,-1.56 1.06,-3.26 1.06,-5.1"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path28"
+           class="st1"
+           d="m 249.02452,424.25274 v 19.18 c 0,0.77 -0.57,1.63 -1.51,1.65 l -1.51,0.06 0.08,4.7 1.41,0.02 c 4.73,0.07 6.36,-4.37 6.36,-6.45 v -19.13"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path30"
+           class="st1"
+           d="m 290.20452,424.19274 h -16.13 v 25.22 h 16.2 l -0.07,-4.06 h -11.28 v -6.58 h 9.44 v -4.06 h -9.44 v -6.38 h 11.21 l 0.07,-4.14"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path32"
+           class="st1"
+           d="m 327.39452,430.24274 c -8.26,-4.53 -16.39,-1.78 -16.39,6.52 0,6.69 6.43,11.84 17,6.31 l 1.53,4.13 c -10.15,5.58 -23.51,1.6 -23.51,-10.44 0,-10.91 11.85,-16.59 23.36,-10.61 l -1.99,4.09"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path34"
+           class="st1"
+           d="m 366.07452,424.19274 0.01,4.13 h -8.05 v 21.16 h -4.85 v -21.15 h -7.73 l 0.11,-4.13 h 20.51"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+        <path
+           id="path36"
+           class="st1"
+           d="m 172.67452,428.30274 h 3.35 c 1.69,-0.01 3.34,1.19 3.34,2.9 0,2.87 -3.23,3.3 -3.23,3.3 l -3.46,0.02 z m -4.82,-4.1 v 25.3 h 4.82 v -10.89 h 3.2 l 5.59,10.89 h 5.5 l -6.67,-12.2 c 2.64,-1.18 4.01,-3.26 4.01,-6.22 0,-4.94 -4.33,-6.88 -9.09,-6.88 h -7.36 v 0"
+           style="fill:#ffffff;stroke:none;stroke-width:0.448028;stroke-opacity:1" />
+      </g>
+    </g>
+    <g
+       id="g1211"
+       transform="translate(26)">
+      <rect
+         style="fill:#ffbe6f;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:2;stroke-opacity:1"
+         id="rect917-2"
+         width="125.52824"
+         height="69.017166"
+         x="400.98758"
+         y="502.18555"
+         ry="3.4599047" />
+      <text
+         xml:space="preserve"
+         style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="463.47824"
+         y="522.11536"
+         id="text1185-3-5"><tspan
+           sodipodi:role="line"
+           id="tspan1183-8-4"
+           x="463.47824"
+           y="522.11536"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none">project</tspan><tspan
+           sodipodi:role="line"
+           x="463.47824"
+           y="540.11206"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none"
+           id="tspan959-9">&quot;contrib&quot;</tspan><tspan
+           sodipodi:role="line"
+           x="465.32721"
+           y="558.1087"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none"
+           id="tspan957-6"><tspan
+   style="text-align:center;text-anchor:middle"
+   id="tspan961-2">git repository</tspan> </tspan></text>
+    </g>
+    <g
+       id="g1211-2"
+       transform="translate(301.39294,0.59191294)">
+      <rect
+         style="fill:#ffbe6f;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:2;stroke-opacity:1"
+         id="rect917-2-7"
+         width="125.52824"
+         height="69.017166"
+         x="400.98758"
+         y="502.18555"
+         ry="3.4599047" />
+      <text
+         xml:space="preserve"
+         style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="463.47824"
+         y="522.11536"
+         id="text1185-3-5-0"><tspan
+           sodipodi:role="line"
+           id="tspan1183-8-4-8"
+           x="463.47824"
+           y="522.11536"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none">local</tspan><tspan
+           sodipodi:role="line"
+           x="463.47824"
+           y="540.11206"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none"
+           id="tspan959-9-9">development</tspan><tspan
+           sodipodi:role="line"
+           x="465.32721"
+           y="558.1087"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none"
+           id="tspan957-6-3"><tspan
+   style="text-align:center;text-anchor:middle"
+   id="tspan961-2-4">git repository</tspan> </tspan></text>
+    </g>
+    <g
+       id="g1315"
+       transform="translate(26,-6.418026)">
+      <rect
+         style="fill:#99c1f1;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:2;stroke-opacity:1"
+         id="rect917-2-4"
+         width="125.52824"
+         height="69.017166"
+         x="400.02109"
+         y="630.14075"
+         ry="3.4599047" />
+      <text
+         xml:space="preserve"
+         style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="462.51175"
+         y="650.07056"
+         id="text1185-3-5-5"><tspan
+           sodipodi:role="line"
+           id="tspan1183-8-4-4"
+           x="462.51175"
+           y="650.07056"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none">project</tspan><tspan
+           sodipodi:role="line"
+           x="462.51175"
+           y="668.06726"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none"
+           id="tspan959-9-97">&quot;contrib&quot;</tspan><tspan
+           sodipodi:role="line"
+           x="464.36072"
+           y="686.0639"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none"
+           id="tspan957-6-5"><tspan
+   style="text-align:center;text-anchor:middle"
+   id="tspan961-2-44">git repository</tspan> </tspan></text>
+    </g>
+    <g
+       id="g1315-2"
+       transform="translate(305.48304,-6.418026)">
+      <rect
+         style="fill:#99c1f1;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:2;stroke-opacity:1"
+         id="rect917-2-4-6"
+         width="125.52824"
+         height="69.017166"
+         x="400.02109"
+         y="630.14075"
+         ry="3.4599047" />
+      <text
+         xml:space="preserve"
+         style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="462.51175"
+         y="650.07056"
+         id="text1185-3-5-5-6"><tspan
+           sodipodi:role="line"
+           id="tspan1183-8-4-4-9"
+           x="462.51175"
+           y="650.07056"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none">project</tspan><tspan
+           sodipodi:role="line"
+           x="462.51175"
+           y="668.06726"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;stroke:none"
+           id="tspan959-9-97-7">development</tspan><tspan
+           sodipodi:role="line"
+           x="464.36072"
+           y="686.0639"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';stroke:none"
+           id="tspan957-6-5-4"><tspan
+   style="text-align:center;text-anchor:middle"
+   id="tspan961-2-44-8">git repository</tspan> </tspan></text>
+    </g>
+    <path
+       style="fill:#ffa348;fill-rule:evenodd;stroke:#ffa348;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart);marker-end:url(#Arrow2Mend)"
+       d="m 552.51582,536.82903 149.8647,0.32211"
+       id="path3307"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g1211"
+       inkscape:connection-end="#g1211-2" />
+    <text
+       xml:space="preserve"
+       style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="313.46567"
+       y="412.9321"
+       id="text3781"><tspan
+         sodipodi:role="line"
+         id="tspan3779"
+         x="313.46567"
+         y="412.9321" /></text>
+    <text
+       xml:space="preserve"
+       style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="580.85419"
+       y="524.23517"
+       id="text1185-9"><tspan
+         sodipodi:role="line"
+         id="tspan1183-1"
+         x="580.85419"
+         y="524.23517"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';stroke:none">git pull and push</tspan></text>
+    <path
+       style="fill:#62a0ea;fill-opacity:1;fill-rule:evenodd;stroke:#62a0ea;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker4174);marker-end:url(#marker4286)"
+       d="M 551.54932,660.2313 H 705.50413"
+       id="path4056"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g1315"
+       inkscape:connection-end="#g1315-2" />
+    <text
+       xml:space="preserve"
+       style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="580.85419"
+       y="647.90686"
+       id="text1185-9-4"><tspan
+         sodipodi:role="line"
+         id="tspan1183-1-6"
+         x="580.85419"
+         y="647.90686"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';stroke:none">git pull and push</tspan></text>
+    <path
+       style="fill:#62a0ea;fill-rule:evenodd;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4414)"
+       d="M 551.54932,632.30915 702.38052,565.2082"
+       id="path4404"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g1315"
+       inkscape:connection-end="#g1211-2" />
+    <path
+       style="fill:#ffa348;fill-opacity:1;fill-rule:evenodd;stroke:#ffa348;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4604)"
+       d="m 552.51582,564.53342 152.98831,67.8586"
+       id="path4494"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g1211"
+       inkscape:connection-end="#g1315-2" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4712)"
+       d="M 426.98758,552.03263 311.36621,580.28855"
+       id="path4702"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g1211"
+       inkscape:connection-end="#g1153" />
+    <text
+       xml:space="preserve"
+       style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="377.95239"
+       y="595.54547"
+       id="text1185-9-0"><tspan
+         sodipodi:role="line"
+         x="377.95239"
+         y="595.54547"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;stroke:none"
+         id="tspan4840">git pull from the</tspan><tspan
+         sodipodi:role="line"
+         x="377.95239"
+         y="613.54218"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;stroke:none"
+         id="tspan4844">maintainer</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4978)"
+       d="M 426.02109,643.34906 311.36621,612.50929"
+       id="path4850"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g1315"
+       inkscape:connection-end="#g1153" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker5285);marker-end:url(#marker5161)"
+       d="M 75.034463,595.62705 H 185.83797"
+       id="path5151"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="266.03806"
+       y="439.90387"
+       id="text1185-9-7"><tspan
+         sodipodi:role="line"
+         id="tspan1183-1-2"
+         x="266.03806"
+         y="439.90387"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';stroke:none">git pull</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.99999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5623)"
+       d="M 250.16567,560.37713 V 455.50595 h 515.77219 l -0.12369,46.24529"
+       id="path6123"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.99999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5623-2)"
+       d="m 250.61744,629.82817 v 107.36644 h 515.77214 v -42.1946"
+       id="path6123-0"
+       sodipodi:nodetypes="cccc" />
+    <text
+       xml:space="preserve"
+       style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="266.03806"
+       y="720.30841"
+       id="text1185-9-7-7"><tspan
+         sodipodi:role="line"
+         id="tspan1183-1-2-6"
+         x="266.03806"
+         y="720.30841"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';stroke:none">git pull</tspan></text>
+  </g>
+  <style
+     type="text/css"
+     id="style1021"> .st0{fill:#4A97D2;} .st1{fill:#333333;} </style>
+</svg>
diff --git a/poky/documentation/poky.yaml b/poky/documentation/poky.yaml
index feb792f..f2d1e8b 100644
--- a/poky/documentation/poky.yaml
+++ b/poky/documentation/poky.yaml
@@ -1,12 +1,12 @@
-DISTRO : "3.3.3"
-DISTRO_NAME_NO_CAP : "hardknott"
-DISTRO_NAME : "Hardknott"
-DISTRO_NAME_NO_CAP_MINUS_ONE : "gatesgarth"
+DISTRO : "3.4"
+DISTRO_NAME_NO_CAP : "honister"
+DISTRO_NAME : "Honister"
+DISTRO_NAME_NO_CAP_MINUS_ONE : "hardknott"
 DISTRO_NAME_NO_CAP_LTS : "dunfell"
-YOCTO_DOC_VERSION : "3.3.3"
-YOCTO_DOC_VERSION_MINUS_ONE : "3.2.4"
-DISTRO_REL_TAG : "yocto-3.3.3"
-POKYVERSION : "25.0.3"
+YOCTO_DOC_VERSION : "3.4"
+YOCTO_DOC_VERSION_MINUS_ONE : "3.3.3"
+DISTRO_REL_TAG : "yocto-3.4"
+POKYVERSION : "26.0.0"
 YOCTO_POKY : "poky-&DISTRO_NAME_NO_CAP;-&POKYVERSION;"
 YOCTO_DL_URL : "https://downloads.yoctoproject.org"
 YOCTO_AB_URL : "https://autobuilder.yoctoproject.org"
@@ -14,23 +14,24 @@
 UBUNTU_HOST_PACKAGES_ESSENTIAL : "gawk wget git diffstat unzip texinfo gcc \
      build-essential chrpath socat cpio python3 python3-pip python3-pexpect \
      xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
-     pylint3 xterm python3-subunit mesa-common-dev"
+     pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool"
 FEDORA_HOST_PACKAGES_ESSENTIAL : "gawk make wget tar bzip2 gzip python3 unzip perl patch \
      diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath \
      ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue perl-bignum socat \
      python3-pexpect findutils which file cpio python python3-pip xz python3-GitPython \
      python3-jinja2 SDL-devel xterm rpcgen mesa-libGL-devel perl-FindBin perl-File-Compare \
-     perl-File-Copy perl-locale"
+     perl-File-Copy perl-locale zstd lz4"
 OPENSUSE_HOST_PACKAGES_ESSENTIAL : "python gcc gcc-c++ git chrpath make wget python-xml \
      diffstat makeinfo python-curses patch socat python3 python3-curses tar python3-pip \
-     python3-pexpect xz which python3-Jinja2 Mesa-libEGL1 libSDL-devel xterm rpcgen Mesa-dri-devel
+     python3-pexpect xz which python3-Jinja2 Mesa-libEGL1 libSDL-devel xterm rpcgen Mesa-dri-devel \
+     zstd lz4
      \n\      $ sudo pip3 install GitPython"
 CENTOS7_HOST_PACKAGES_ESSENTIAL : "-y epel-release
      \n\      $ sudo yum makecache
      \n\      $ sudo yum install gawk make wget tar bzip2 gzip python3 unzip perl patch \
      diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath socat \
      perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue python36-pip xz \
-     which SDL-devel xterm mesa-libGL-devel
+     which SDL-devel xterm mesa-libGL-devel zstd lz4
      \n\      $ sudo pip3 install GitPython jinja2"
 CENTOS8_HOST_PACKAGES_ESSENTIAL : "-y epel-release
      \n\      $ sudo dnf config-manager --set-enabled PowerTools
@@ -39,7 +40,7 @@
      diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath ccache \
      socat perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue python3-pip \
      python3-GitPython python3-jinja2 python3-pexpect xz which SDL-devel xterm \
-     rpcgen mesa-libGL-devel"
+     rpcgen mesa-libGL-devel zstd lz4"
 PIP3_HOST_PACKAGES_DOC : "$ sudo pip3 install sphinx sphinx_rtd_theme pyyaml"
 MIN_PYTHON_VERSION : "3.6.0"
 MIN_TAR_VERSION : "1.28"
diff --git a/poky/documentation/profile-manual/usage.rst b/poky/documentation/profile-manual/usage.rst
index ae4efa7..3d28408 100644
--- a/poky/documentation/profile-manual/usage.rst
+++ b/poky/documentation/profile-manual/usage.rst
@@ -105,18 +105,18 @@
 applets in Yocto. ::
 
    root@crownbay:~# rm linux-2.6.19.2.tar.bz2; \
-                    wget http://downloads.yoctoproject.org/mirror/sources/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
 the summed counts at the end of the run::
 
-   root@crownbay:~# perf stat wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2
+   root@crownbay:~# perf stat 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
 
-   Performance counter stats for 'wget http://downloads.yoctoproject.org/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':
 
          4597.223902 task-clock                #    0.077 CPUs utilized
                23568 context-switches          #    0.005 M/sec
@@ -141,11 +141,11 @@
 the events related to kernel memory allocation/freeing along with cache
 hits and misses::
 
-   root@crownbay:~# perf stat -e kmem:* -e cache-references -e cache-misses wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2
+   root@crownbay:~# perf stat -e kmem:* -e cache-references -e cache-misses 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
 
-   Performance counter stats for 'wget http://downloads.yoctoproject.org/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':
 
                 5566 kmem:kmalloc
               125517 kmem:kmem_cache_alloc
@@ -181,7 +181,7 @@
 and records them in a file named 'perf.data' in the current working
 directory. ::
 
-   root@crownbay:~# perf record wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2
+   root@crownbay:~# perf record 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
@@ -219,7 +219,7 @@
 option, which will record not just the address of a sampled function,
 but the entire callchain to the sampled function as well::
 
-   root@crownbay:~# perf record -g wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2
+   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)
    linux-2.6.19.2.tar.b 100% |************************************************| 41727k  0:00:00 ETA
    [ perf record: Woken up 3 times to write data ]
@@ -527,8 +527,8 @@
 string before the colon in the Tracepoint events) and do a 'perf stat'
 run using only those wildcarded subsystems::
 
-   root@crownbay:~# perf stat -e skb:* -e net:* -e napi:* -e sched:* -e workqueue:* -e irq:* -e syscalls:* wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2
-   Performance counter stats for 'wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2':
+   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':
 
                23323 skb:kfree_skb
                    0 skb:consume_skb
@@ -589,7 +589,7 @@
 Let's pick one of these tracepoints
 and tell perf to do a profile using it as the sampling event::
 
-   root@crownbay:~# perf record -g -e sched:sched_wakeup wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2
+   root@crownbay:~# perf record -g -e sched:sched_wakeup wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2
 
 .. image:: figures/sched-wakeup-profile.png
    :align: center
@@ -648,7 +648,7 @@
 
    root@crownbay:~# perf record -g -e skb:* -e net:* -e napi:* -e sched:sched_switch -e sched:sched_wakeup -e irq:*
     -e syscalls:sys_enter_read -e syscalls:sys_exit_read -e syscalls:sys_enter_write -e syscalls:sys_exit_write
-    wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2
+    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
 arguments::
@@ -885,7 +885,7 @@
 
 In another window, run the wget test::
 
-   root@crownbay:~# wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2
+   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
 
@@ -2251,7 +2251,7 @@
 
 In another shell, execute a workload you want to trace. ::
 
-   root@crownbay:/media/sdc# rm linux-2.6.19.2.tar.bz2; wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2; sync
+   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
 
@@ -2420,7 +2420,7 @@
 
 In another shell, execute a workload you want to trace. ::
 
-   root@crownbay:/media/sdc# rm linux-2.6.19.2.tar.bz2; wget http://downloads.yoctoproject.org/mirror/sources/linux-2.6.19.2.tar.bz2; sync
+   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
 
diff --git a/poky/documentation/ref-manual/classes.rst b/poky/documentation/ref-manual/classes.rst
index 5c60fd8..9b1ead6 100644
--- a/poky/documentation/ref-manual/classes.rst
+++ b/poky/documentation/ref-manual/classes.rst
@@ -590,19 +590,25 @@
        "
 
 Here is an example that adds two users named "tester-jim" and "tester-sue" and assigns
-passwords::
+passwords. First on host, create the password hash::
+
+   mkpasswd -m sha256crypt tester01
+
+The resulting hash is set to a variable and used in ``useradd`` command parameters.
+Remember to escape the character ``$``::
 
    inherit extrausers
+   PASSWD = "\$X\$ABC123\$A-Long-Hash"
    EXTRA_USERS_PARAMS = "\
-       useradd -P tester01 tester-jim; \
-       useradd -P tester01 tester-sue; \
+       useradd -p '${PASSWD}' tester-jim; \
+       useradd -p '${PASSWD}' tester-sue; \
        "
 
-Finally, here is an example that sets the root password to "1876*18"::
+Finally, here is an example that sets the root password::
 
    inherit extrausers
    EXTRA_USERS_PARAMS = "\
-       usermod -P 1876*18 root; \
+       usermod -p '${PASSWD}' root; \
        "
 
 .. _ref-classes-features_check:
@@ -1494,15 +1500,6 @@
 This class is enabled by default since it is inherited by the ``base``
 class.
 
-.. _ref-classes-meta:
-
-``meta.bbclass``
-================
-
-The ``meta`` class is inherited by recipes that do not build any output
-packages themselves, but act as a "meta" target for building other
-recipes.
-
 .. _ref-classes-metadata_scm:
 
 ``metadata_scm.bbclass``
@@ -1600,7 +1597,7 @@
 You can create a recipe that builds tools that run natively on the host
 a couple different ways:
 
--  Create a myrecipe\ ``-native.bb`` recipe that inherits the ``native``
+-  Create a ``myrecipe-native.bb`` recipe that inherits the ``native``
    class. If you use this method, you must order the inherit statement
    in the recipe after all other inherit statements so that the
    ``native`` class is inherited last.
@@ -1642,7 +1639,7 @@
 You can create a recipe that builds tools that run on the SDK machine a
 couple different ways:
 
--  Create a ``nativesdk-``\ myrecipe\ ``.bb`` recipe that inherits the
+-  Create a ``nativesdk-myrecipe.bb`` recipe that inherits the
    ``nativesdk`` class. If you use this method, you must order the
    inherit statement in the recipe after all other inherit statements so
    that the ``nativesdk`` class is inherited last.
diff --git a/poky/documentation/ref-manual/faq.rst b/poky/documentation/ref-manual/faq.rst
index d3a603d..6f2970d 100644
--- a/poky/documentation/ref-manual/faq.rst
+++ b/poky/documentation/ref-manual/faq.rst
@@ -143,7 +143,7 @@
 ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`"
 Wiki page.
 
-**Q:** What's the difference between target and target\ ``-native``?
+**Q:** What's the difference between ``target`` and ``target-native``?
 
 **A:** The ``*-native`` targets are designed to run on the system being
 used for the build. These are usually tools that are needed to assist
@@ -302,10 +302,10 @@
 ``local.conf`` configuration file::
 
    PREMIRRORS:prepend = "\
-       git://.*/.* http://www.yoctoproject.org/sources/ \n \
-       ftp://.*/.* http://www.yoctoproject.org/sources/ \n \
-       http://.*/.* http://www.yoctoproject.org/sources/ \n \
-       https://.*/.* http://www.yoctoproject.org/sources/ \n"
+       git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n \
+       ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n \
+       http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n \
+       https://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n"
 
 These changes cause the build system to intercept Git, FTP, HTTP, and
 HTTPS requests and direct them to the ``http://`` sources mirror. You
@@ -342,9 +342,10 @@
 file as long as the :term:`PREMIRRORS` server is current::
 
    PREMIRRORS:prepend = "\
-       ftp://.*/.* http://www.yoctoproject.org/sources/ \n \
-       http://.*/.* http://www.yoctoproject.org/sources/ \n \
-       https://.*/.* http://www.yoctoproject.org/sources/ \n"
+       git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n \
+       ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n \
+       http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n \
+       https://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n"
    BB_FETCH_PREMIRRORONLY = "1"
 
 These changes would cause the build system to successfully fetch source
diff --git a/poky/documentation/ref-manual/system-requirements.rst b/poky/documentation/ref-manual/system-requirements.rst
index 5e5c105..d12e8df 100644
--- a/poky/documentation/ref-manual/system-requirements.rst
+++ b/poky/documentation/ref-manual/system-requirements.rst
@@ -120,23 +120,23 @@
       its own custom ``/usr/include/linux/soundcard.h`` on the Debian
       system. If you run into this situation, try either of these solutions::
 
-         $ sudo apt-get build-dep qemu
-         $ sudo apt-get remove oss4-dev
+         $ sudo apt build-dep qemu
+         $ sudo apt remove oss4-dev
 
    -  For Debian-8, ``python3-git`` and ``pylint3`` are no longer
-      available via ``apt-get``.
+      available via ``apt``.
       ::
 
          $ sudo pip3 install GitPython pylint==1.9.5
 
 -  *Essentials:* Packages needed to build an image on a headless system::
 
-      $ sudo apt-get install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
+      $ sudo apt install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
 
 -  *Documentation:* Packages needed if you are going to build out the
    Yocto Project documentation manuals::
 
-      $ sudo apt-get install make python3-pip
+      $ sudo apt install make python3-pip
       &PIP3_HOST_PACKAGES_DOC;
 
    .. note::
diff --git a/poky/documentation/ref-manual/tasks.rst b/poky/documentation/ref-manual/tasks.rst
index 4edae33..299969d 100644
--- a/poky/documentation/ref-manual/tasks.rst
+++ b/poky/documentation/ref-manual/tasks.rst
@@ -516,17 +516,17 @@
       $ bitbake -f -c do_cleansstate target
 
 
-.. _ref-tasks-devpyshell:
+.. _ref-tasks-pydevshell:
 
-``do_devpyshell``
+``do_pydevshell``
 -----------------
 
 Starts a shell in which an interactive Python interpreter allows you to
 interact with the BitBake build environment. From within this shell, you
 can directly examine and set bits from the data store and execute
-functions as if within the BitBake environment. See the ":ref:`dev-manual/common-tasks:using a development python shell`" section in
+functions as if within the BitBake environment. See the ":ref:`dev-manual/common-tasks:using a python development shell`" section in
 the Yocto Project Development Tasks Manual for more information about
-using ``devpyshell``.
+using ``pydevshell``.
 
 .. _ref-tasks-devshell:
 
diff --git a/poky/documentation/ref-manual/terms.rst b/poky/documentation/ref-manual/terms.rst
index e5a7565..eccae91 100644
--- a/poky/documentation/ref-manual/terms.rst
+++ b/poky/documentation/ref-manual/terms.rst
@@ -31,7 +31,7 @@
          busybox_1.21.%.bbappend
 
       That append file
-      would match any ``busybox_1.21.``\ x\ ``.bb`` version of the recipe. So,
+      would match any ``busybox_1.21.x.bb`` version of the recipe. So,
       the append file would match any of the following recipe names:
 
       .. code-block:: shell
diff --git a/poky/documentation/ref-manual/variables.rst b/poky/documentation/ref-manual/variables.rst
index 5f6f911..b9e9771 100644
--- a/poky/documentation/ref-manual/variables.rst
+++ b/poky/documentation/ref-manual/variables.rst
@@ -730,7 +730,7 @@
       Each configuration file you
       use must reside in the :term:`Build Directory`
       ``conf/multiconfig`` directory (e.g.
-      build_directory\ ``/conf/multiconfig/configA.conf``).
+      ``build_directory/conf/multiconfig/configA.conf``).
 
       For information on how to use :term:`BBMULTICONFIG` in an environment
       that supports building targets with multiple configurations, see the
@@ -1582,6 +1582,23 @@
          by :term:`BBFILE_PRIORITY` if that variable is different between two
          layers that contain different versions of the same recipe.
 
+   :term:`DEBUG_PREFIX_MAP`
+      Allows to set C compiler options, such as ``-fdebug-prefix-map``,
+      ``-fmacro-prefix-map``, and ``-ffile-prefix-map``, which allow to
+      replace build-time paths by install-time ones in the debugging sections
+      of binaries.  This makes compiler output files location independent,
+      at the cost of having to pass an extra command to tell the debugger
+      where source files are.
+
+      This is used by the Yocto Project to guarantee
+      :doc:`/test-manual/reproducible-builds` even when the source code of
+      a package uses the ``__FILE__`` or ``assert()`` macros. See the
+      `reproducible-builds.org <https://reproducible-builds.org/docs/build-path/>`__
+      website for details.
+
+      This variable is set in the ``meta/conf/bitbake.conf`` file. It is
+      not intended to be user-configurable.
+
    :term:`DEFAULTTUNE`
       The default CPU and Application Binary Interface (ABI) tunings (i.e.
       the "tune") used by the OpenEmbedded build system. The
@@ -5364,7 +5381,7 @@
       so one of two ways:
 
       -  *Append file:* Create an append file named
-         recipename\ ``.bbappend`` in your layer and override the value of
+         ``recipename.bbappend`` in your layer and override the value of
          :term:`PACKAGECONFIG`. You can either completely override the
          variable::
 
@@ -5838,10 +5855,10 @@
       :term:`Build Directory`::
 
          PREMIRRORS:prepend = "\
-             git://.*/.* http://www.yoctoproject.org/sources/ \n \
-             ftp://.*/.* http://www.yoctoproject.org/sources/ \n \
-             http://.*/.* http://www.yoctoproject.org/sources/ \n \
-             https://.*/.* http://www.yoctoproject.org/sources/ \n"
+             git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n \
+             ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n \
+             http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n \
+             https://.*/.* &YOCTO_DL_URL;/mirror/sources/ \n"
 
       These changes cause the
       build system to intercept Git, FTP, HTTP, and HTTPS requests and
@@ -6908,6 +6925,23 @@
       You will see this variable referenced in the default values of
       ``FILES:${PN}-dev``.
 
+   :term:`SOURCE_DATE_EPOCH`
+      This defines a date expressed in number of seconds since
+      the UNIX EPOCH (01 Jan 1970 00:00:00 UTC), which is used by
+      multiple build systems to force a timestamp in built binaries.
+      Many upstream projects already support this variable.
+
+      You will find more details in the `official specifications
+      <https://reproducible-builds.org/specs/source-date-epoch/>`__.
+
+      A value for each recipe is computed from the sources by
+      :oe_git:`meta/lib/oe/reproducible.py </openembedded-core/tree/meta/lib/oe/reproducible.py>`.
+
+      If a recipe wishes to override the default behavior, it should set its
+      own :term:`SOURCE_DATE_EPOCH` value::
+
+          SOURCE_DATE_EPOCH = "1613559011"
+
    :term:`SOURCE_MIRROR_FETCH`
       When you are fetching files to create a mirror of sources (i.e.
       creating a source mirror), setting :term:`SOURCE_MIRROR_FETCH` to "1" in
@@ -8141,6 +8175,15 @@
       information on setting up a cross-development environment, see the
       :doc:`/sdk-manual/index` manual.
 
+      Note that this variable applies to building an SDK, not an eSDK,
+      in which case the term:`TOOLCHAIN_HOST_TASK_ESDK` setting should be
+      used instead.
+
+   :term:`TOOLCHAIN_HOST_TASK_ESDK`
+      This variable allows to extend what is installed in the host
+      portion of an eSDK. This is similar to :term:`TOOLCHAIN_HOST_TASK`
+      applying to SDKs.
+
    :term:`TOOLCHAIN_OUTPUTNAME`
       This variable defines the name used for the toolchain output. The
       :ref:`populate_sdk_base <ref-classes-populate-sdk-*>` class sets
@@ -8745,7 +8788,7 @@
    :term:`WKS_FILE`
       Specifies the location of the Wic kickstart file that is used by the
       OpenEmbedded build system to create a partitioned image
-      (image\ ``.wic``). For information on how to create a partitioned
+      (``image.wic``). For information on how to create a partitioned
       image, see the
       ":ref:`dev-manual/common-tasks:creating partitioned images using wic`"
       section in the Yocto Project Development Tasks Manual. For details on
diff --git a/poky/documentation/releases.rst b/poky/documentation/releases.rst
index bb881a2..529d00e 100644
--- a/poky/documentation/releases.rst
+++ b/poky/documentation/releases.rst
@@ -5,13 +5,19 @@
 ===========================
 
 ******************************
+Release Series 3.4 (honister)
+******************************
+
+- :yocto_docs:`3.4 Documentation </3.4>`
+
+******************************
 Release Series 3.3 (hardknott)
 ******************************
 
 - :yocto_docs:`3.3 Documentation </3.3>`
 - :yocto_docs:`3.3.1 Documentation </3.3.1>`
 - :yocto_docs:`3.3.2 Documentation </3.3.2>`
-- :yocto_docs:`3.3.2 Documentation </3.3.3>`
+- :yocto_docs:`3.3.3 Documentation </3.3.3>`
 
 *******************************
 Release Series 3.2 (gatesgarth)
diff --git a/poky/documentation/sphinx-static/switchers.js b/poky/documentation/sphinx-static/switchers.js
index 1e37b62..6038dbb 100644
--- a/poky/documentation/sphinx-static/switchers.js
+++ b/poky/documentation/sphinx-static/switchers.js
@@ -2,7 +2,8 @@
   'use strict';
 
   var all_versions = {
-    'dev': 'dev (3.4)',
+    'dev': 'dev (3.5)',
+    '3.4': '3.4',
     '3.3.3': '3.3.3',
     '3.2.4': '3.2.4',
     '3.1.11': '3.1.11',
diff --git a/poky/documentation/test-manual/reproducible-builds.rst b/poky/documentation/test-manual/reproducible-builds.rst
index 68fdf54..349cd19 100644
--- a/poky/documentation/test-manual/reproducible-builds.rst
+++ b/poky/documentation/test-manual/reproducible-builds.rst
@@ -53,7 +53,7 @@
 
 -  Adding mappings to the compiler options to ensure debug filepaths are mapped
    to consistent target compatible paths. This is done through the
-   ``DEBUG_PREFIX_MAP`` variable which sets the ``-fmacro-prefix-map`` and
+   :term:`DEBUG_PREFIX_MAP` variable which sets the ``-fmacro-prefix-map`` and
    ``-fdebug-prefix-map`` compiler options correctly to map to target paths.
 -  Being explicit about recipe dependencies and their configuration (no floating
    configure options or host dependencies creeping in). In particular this means
diff --git a/poky/documentation/toaster-manual/reference.rst b/poky/documentation/toaster-manual/reference.rst
index c0d02ff..1bb9f98 100644
--- a/poky/documentation/toaster-manual/reference.rst
+++ b/poky/documentation/toaster-manual/reference.rst
@@ -296,7 +296,7 @@
       <field type="CharField" name="description">Yocto Project &DISTRO; "&DISTRO_NAME;"</field>
       <field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">1</field>
       <field type="CharField" name="branch_name">&DISTRO_NAME_NO_CAP;</field>
-      <field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=&DISTRO_NAME_NO_CAP;">Yocto Project &DISTRO_NAME; branch</a>.</field>
+      <field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=&DISTRO_NAME_NO_CAP;">Yocto Project &DISTRO_NAME; branch</a>.</field>
    </object>
 
 The "pk" value must match the above respective BitBake version record.
@@ -333,9 +333,9 @@
       <field type="CharField" name="name">openembedded-core</field>
       <field type="CharField" name="layer_index_url"></field>
       <field type="CharField" name="vcs_url">git://git.yoctoproject.org/poky</field>
-      <field type="CharField" name="vcs_web_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
-      <field type="CharField" name="vcs_web_tree_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
-      <field type="CharField" name="vcs_web_file_base_url">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
+      <field type="CharField" name="vcs_web_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky</field>
+      <field type="CharField" name="vcs_web_tree_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
+      <field type="CharField" name="vcs_web_file_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
    </object>
    <object model="orm.layer_version" pk="1">
       <field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
diff --git a/poky/documentation/toaster-manual/setup-and-use.rst b/poky/documentation/toaster-manual/setup-and-use.rst
index 4f71b58..0da8326 100644
--- a/poky/documentation/toaster-manual/setup-and-use.rst
+++ b/poky/documentation/toaster-manual/setup-and-use.rst
@@ -211,7 +211,7 @@
 
 -  If you are using Ubuntu, run the following::
 
-      $ sudo apt-get install apache2 libapache2-mod-wsgi-py3 mysql-server python3-pip libmysqlclient-dev
+      $ sudo apt install apache2 libapache2-mod-wsgi-py3 mysql-server python3-pip libmysqlclient-dev
 
 -  If you are using Fedora or a RedHat distribution, run the
    following::
diff --git a/poky/documentation/toaster-manual/start.rst b/poky/documentation/toaster-manual/start.rst
index c687a82..cab5d1f 100644
--- a/poky/documentation/toaster-manual/start.rst
+++ b/poky/documentation/toaster-manual/start.rst
@@ -18,7 +18,7 @@
 the Yocto Project Development Tasks Manual. For Ubuntu/Debian, you might
 also need to do an additional install of pip3. ::
 
-   $ sudo apt-get install python3-pip
+   $ sudo apt install python3-pip
 
 Establishing Toaster System Dependencies
 ========================================
diff --git a/poky/meta-poky/README.poky.md b/poky/meta-poky/README.poky.md
index 289373f..a99c75e 100644
--- a/poky/meta-poky/README.poky.md
+++ b/poky/meta-poky/README.poky.md
@@ -3,7 +3,7 @@
 
 Poky is an integration of various components to form a pre-packaged
 build system and development environment which is used as a development and
-validation tool by the [Yocto Project](http://www.yoctoproject.org/). It
+validation tool by the [Yocto Project](https://www.yoctoproject.org/). It
 features support for building customised embedded style device images
 and custom containers. There are reference demo images ranging from X11/GTK+
  to Weston, commandline and more. The system supports cross-architecture
@@ -19,8 +19,8 @@
 As an integration layer Poky consists of several upstream projects such as 
 [BitBake](https://git.openembedded.org/bitbake/),
 [OpenEmbedded-Core](https://git.openembedded.org/openembedded-core/),
-[Yocto documentation](http://git.yoctoproject.org/cgit.cgi/yocto-docs/),
-the '[meta-yocto](http://git.yoctoproject.org/cgit.cgi/meta-yocto/)' layer
+[Yocto documentation](https://git.yoctoproject.org/cgit.cgi/yocto-docs/),
+the '[meta-yocto](https://git.yoctoproject.org/cgit.cgi/meta-yocto/)' layer
 which has configuration and hardware support components. These components
 are all part of the Yocto Project and OpenEmbedded ecosystems.
 
@@ -29,7 +29,7 @@
 
 OpenEmbedded is the build architecture used by Poky and the Yocto project.
 For information about OpenEmbedded, see the 
-[OpenEmbedded website](http://www.openembedded.org/).
+[OpenEmbedded website](https://www.openembedded.org/).
 
 Contribution Guidelines
 -----------------------
@@ -42,7 +42,7 @@
 
 A guide to submitting patches to OpenEmbedded is available at:
 
-<http://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded>
+<https://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded>
 
 There is good documentation on how to write/format patches at:
 
@@ -72,7 +72,7 @@
 
 meta-yocto (files in meta-poky/, meta-yocto-bsp/):
 
-- Git repository: <http://git.yoctoproject.org/cgit/cgit.cgi/meta-yocto>
+- Git repository: <https://git.yoctoproject.org/cgit/cgit.cgi/meta-yocto>
 - Mailing list: poky@lists.yoctoproject.org
 
 If in doubt, check the openembedded-core git repository for the content you
diff --git a/poky/meta-poky/conf/distro/poky.conf b/poky/meta-poky/conf/distro/poky.conf
index e161e49..b92784f 100644
--- a/poky/meta-poky/conf/distro/poky.conf
+++ b/poky/meta-poky/conf/distro/poky.conf
@@ -1,6 +1,6 @@
 DISTRO = "poky"
 DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
-DISTRO_VERSION = "3.3+snapshot-${METADATA_REVISION}"
+DISTRO_VERSION = "3.4+snapshot-${METADATA_REVISION}"
 DISTRO_CODENAME = "master"
 SDK_VENDOR = "-pokysdk"
 SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
@@ -31,30 +31,28 @@
 TCLIBCAPPEND = ""
 
 PREMIRRORS ??= "\
-bzr://.*/.*   http://downloads.yoctoproject.org/mirror/sources/ \n \
-cvs://.*/.*   http://downloads.yoctoproject.org/mirror/sources/ \n \
-git://.*/.*   http://downloads.yoctoproject.org/mirror/sources/ \n \
-gitsm://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-hg://.*/.*    http://downloads.yoctoproject.org/mirror/sources/ \n \
-osc://.*/.*   http://downloads.yoctoproject.org/mirror/sources/ \n \
-p4://.*/.*    http://downloads.yoctoproject.org/mirror/sources/ \n \
-svn://.*/.*   http://downloads.yoctoproject.org/mirror/sources/ \n"
+bzr://.*/.*   https://downloads.yoctoproject.org/mirror/sources/ \n \
+cvs://.*/.*   https://downloads.yoctoproject.org/mirror/sources/ \n \
+git://.*/.*   https://downloads.yoctoproject.org/mirror/sources/ \n \
+gitsm://.*/.* https://downloads.yoctoproject.org/mirror/sources/ \n \
+hg://.*/.*    https://downloads.yoctoproject.org/mirror/sources/ \n \
+osc://.*/.*   https://downloads.yoctoproject.org/mirror/sources/ \n \
+p4://.*/.*    https://downloads.yoctoproject.org/mirror/sources/ \n \
+svn://.*/.*   https://downloads.yoctoproject.org/mirror/sources/ \n"
 
 SANITY_TESTED_DISTROS ?= " \
-            poky-3.2 \n \
             poky-3.3 \n \
+            poky-3.4 \n \
             ubuntu-16.04 \n \
             ubuntu-18.04 \n \
             ubuntu-20.04 \n \
-            fedora-31 \n \
-            fedora-32 \n \
             fedora-33 \n \
+            fedora-34 \n \
             centos-7 \n \
             centos-8 \n \
-            debian-8 \n \
             debian-9 \n \
             debian-10 \n \
-            opensuseleap-15.1 \n \
+            debian-11 \n \
             opensuseleap-15.2 \n \
             "
 # add poky sanity bbclass
@@ -72,7 +70,5 @@
 require conf/distro/include/security_flags.inc
 INHERIT += "uninative"
 
-INHERIT += "reproducible_build"
-
 BB_SIGNATURE_HANDLER ?= "OEEquivHash"
 BB_HASHSERVE ??= "auto"
diff --git a/poky/meta-yocto-bsp/README.hardware.md b/poky/meta-yocto-bsp/README.hardware.md
index f00f167..9151d64 100644
--- a/poky/meta-yocto-bsp/README.hardware.md
+++ b/poky/meta-yocto-bsp/README.hardware.md
@@ -15,7 +15,7 @@
 (BSP) Developer's Guide - documentation source is in documentation/bspguide or 
 download the PDF from:
 
-   http://yoctoproject.org/documentation
+   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
diff --git a/poky/meta/classes/archiver.bbclass b/poky/meta/classes/archiver.bbclass
index dd31dc0..411d459 100644
--- a/poky/meta/classes/archiver.bbclass
+++ b/poky/meta/classes/archiver.bbclass
@@ -51,6 +51,7 @@
 ARCHIVER_MODE[dumpdata] ?= "0"
 ARCHIVER_MODE[recipe] ?= "0"
 ARCHIVER_MODE[mirror] ?= "split"
+ARCHIVER_MODE[compression] ?= "gz"
 
 DEPLOY_DIR_SRC ?= "${DEPLOY_DIR}/sources"
 ARCHIVER_TOPDIR ?= "${WORKDIR}/archiver-sources"
@@ -409,15 +410,16 @@
     # that we archive the actual directory and not just the link.
     srcdir = os.path.realpath(srcdir)
 
+    compression_method = d.getVarFlag('ARCHIVER_MODE', 'compression')
     bb.utils.mkdirhier(ar_outdir)
     if suffix:
-        filename = '%s-%s.tar.gz' % (d.getVar('PF'), suffix)
+        filename = '%s-%s.tar.%s' % (d.getVar('PF'), suffix, compression_method)
     else:
-        filename = '%s.tar.gz' % d.getVar('PF')
+        filename = '%s.tar.%s' % (d.getVar('PF'), compression_method)
     tarname = os.path.join(ar_outdir, filename)
 
     bb.note('Creating %s' % tarname)
-    tar = tarfile.open(tarname, 'w:gz')
+    tar = tarfile.open(tarname, 'w:%s' % compression_method)
     tar.add(srcdir, arcname=os.path.basename(srcdir), filter=exclude_useless_paths)
     tar.close()
 
diff --git a/poky/meta/classes/baremetal-image.bbclass b/poky/meta/classes/baremetal-image.bbclass
index 089c445..81f5e5e 100644
--- a/poky/meta/classes/baremetal-image.bbclass
+++ b/poky/meta/classes/baremetal-image.bbclass
@@ -105,13 +105,17 @@
 python(){
     # do_addto_recipe_sysroot doesnt exist for all recipes, but we need it to have
     # /usr/bin on recipe-sysroot (qemu) populated
+    # The do_addto_recipe_sysroot dependency is coming from EXTRA_IMAGDEPENDS now,
+    # we just need to add the logic to add its dependency to do_image.
     def extraimage_getdepends(task):
         deps = ""
         for dep in (d.getVar('EXTRA_IMAGEDEPENDS') or "").split():
         # Make sure we only add it for qemu
             if 'qemu' in dep:
-                deps += " %s:%s" % (dep, task)
+                if ":" in dep:
+                    deps += " %s " % (dep)
+                else:
+                    deps += " %s:%s" % (dep, task)
         return deps
-    d.appendVarFlag('do_image', 'depends', extraimage_getdepends('do_addto_recipe_sysroot'))
-    d.appendVarFlag('do_image', 'depends', extraimage_getdepends('do_populate_sysroot'))
+    d.appendVarFlag('do_image', 'depends', extraimage_getdepends('do_populate_sysroot')) 
 }
diff --git a/poky/meta/classes/base.bbclass b/poky/meta/classes/base.bbclass
index 340ebe7..a65fcc6 100644
--- a/poky/meta/classes/base.bbclass
+++ b/poky/meta/classes/base.bbclass
@@ -12,7 +12,7 @@
 
 OE_EXTRA_IMPORTS ?= ""
 
-OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license ${OE_EXTRA_IMPORTS}"
+OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa oe.reproducible ${OE_EXTRA_IMPORTS}"
 OE_IMPORTS[type] = "list"
 
 PACKAGECONFIG_CONFARGS ??= ""
@@ -153,14 +153,14 @@
 python base_do_fetch() {
 
     src_uri = (d.getVar('SRC_URI') or "").split()
-    if len(src_uri) == 0:
+    if not src_uri:
         return
 
     try:
         fetcher = bb.fetch2.Fetch(src_uri, d)
         fetcher.download()
     except bb.fetch2.BBFetchException as e:
-        bb.fatal(str(e))
+        bb.fatal("Bitbake Fetcher Error: " + repr(e))
 }
 
 addtask unpack after do_fetch
@@ -170,16 +170,54 @@
 
 python base_do_unpack() {
     src_uri = (d.getVar('SRC_URI') or "").split()
-    if len(src_uri) == 0:
+    if not src_uri:
         return
 
     try:
         fetcher = bb.fetch2.Fetch(src_uri, d)
         fetcher.unpack(d.getVar('WORKDIR'))
     except bb.fetch2.BBFetchException as e:
-        bb.fatal(str(e))
+        bb.fatal("Bitbake Fetcher Error: " + repr(e))
 }
 
+SSTATETASKS += "do_deploy_source_date_epoch"
+
+do_deploy_source_date_epoch () {
+    mkdir -p ${SDE_DEPLOYDIR}
+    if [ -e ${SDE_FILE} ]; then
+        echo "Deploying SDE from ${SDE_FILE} -> ${SDE_DEPLOYDIR}."
+        cp -p ${SDE_FILE} ${SDE_DEPLOYDIR}/__source_date_epoch.txt
+    else
+        echo "${SDE_FILE} not found!"
+    fi
+}
+
+python do_deploy_source_date_epoch_setscene () {
+    sstate_setscene(d)
+    bb.utils.mkdirhier(d.getVar('SDE_DIR'))
+    sde_file = os.path.join(d.getVar('SDE_DEPLOYDIR'), '__source_date_epoch.txt')
+    if os.path.exists(sde_file):
+        target = d.getVar('SDE_FILE')
+        bb.debug(1, "Moving setscene SDE file %s -> %s" % (sde_file, target))
+        bb.utils.rename(sde_file, target)
+    else:
+        bb.debug(1, "%s not found!" % sde_file)
+}
+
+do_deploy_source_date_epoch[dirs] = "${SDE_DEPLOYDIR}"
+do_deploy_source_date_epoch[sstate-plaindirs] = "${SDE_DEPLOYDIR}"
+addtask do_deploy_source_date_epoch_setscene
+addtask do_deploy_source_date_epoch before do_configure after do_patch
+
+python create_source_date_epoch_stamp() {
+    source_date_epoch = oe.reproducible.get_source_date_epoch(d, d.getVar('S'))
+    oe.reproducible.epochfile_write(source_date_epoch, d.getVar('SDE_FILE'), d)
+}
+do_unpack[postfuncs] += "create_source_date_epoch_stamp"
+
+def get_source_date_epoch_value(d):
+    return oe.reproducible.epochfile_read(d.getVar('SDE_FILE'), d)
+
 def get_layers_branch_rev(d):
     layers = (d.getVar("BBLAYERS") or "").split()
     layers_branch_rev = ["%-20s = \"%s:%s\"" % (os.path.basename(i), \
@@ -693,7 +731,7 @@
             if os.path.basename(p) == machine and os.path.isdir(p):
                 paths.append(p)
 
-        if len(paths) != 0:
+        if paths:
             for s in srcuri.split():
                 if not s.startswith("file://"):
                     continue
@@ -726,7 +764,7 @@
 
 python do_cleanall() {
     src_uri = (d.getVar('SRC_URI') or "").split()
-    if len(src_uri) == 0:
+    if not src_uri:
         return
 
     try:
diff --git a/poky/meta/classes/buildhistory.bbclass b/poky/meta/classes/buildhistory.bbclass
index a613306..62d0d78 100644
--- a/poky/meta/classes/buildhistory.bbclass
+++ b/poky/meta/classes/buildhistory.bbclass
@@ -287,7 +287,7 @@
             r = bb.utils.vercmp((pkge, pkgv, pkgr), (last_pkge, last_pkgv, last_pkgr))
             if r < 0:
                 msg = "Package version for package %s went backwards which would break package feeds (from %s:%s-%s to %s:%s-%s)" % (pkg, last_pkge, last_pkgv, last_pkgr, pkge, pkgv, pkgr)
-                package_qa_handle_error("version-going-backwards", msg, d)
+                oe.qa.handle_error("version-going-backwards", msg, d)
 
         pkginfo = PackageInfo(pkg)
         # Apparently the version can be different on a per-package basis (see Python)
@@ -321,6 +321,7 @@
 
     # Create files-in-<package-name>.txt files containing a list of files of each recipe's package
     bb.build.exec_func("buildhistory_list_pkg_files", d)
+    oe.qa.exit_if_errors(d)
 }
 
 python buildhistory_emit_outputsigs() {
@@ -442,11 +443,16 @@
     else:
         pkgs = sdk_list_installed_packages(d, rootfs_type == "sdk_target")
 
+    if rootfs_type == "sdk_host":
+        pkgdata_dir = d.getVar('PKGDATA_DIR_SDK')
+    else:
+        pkgdata_dir = d.getVar('PKGDATA_DIR')
+
     for output_type, output_file in process_list:
         output_file_full = os.path.join(d.getVar('WORKDIR'), output_file)
 
         with open(output_file_full, 'w') as output:
-            output.write(format_pkg_list(pkgs, output_type, d.getVar('PKGDATA_DIR')))
+            output.write(format_pkg_list(pkgs, output_type, pkgdata_dir))
 
 python buildhistory_list_installed_image() {
     buildhistory_list_installed(d)
@@ -496,13 +502,19 @@
 	echo "}" >>  $1/depends.dot
 	rm $1/depends.tmp
 
+	# Set correct pkgdatadir
+	pkgdatadir=${PKGDATA_DIR}
+	if [ "$2" == "sdk" ] && [ "$3" == "host" ]; then
+		pkgdatadir="${PKGDATA_DIR_SDK}"
+	fi
+
 	# Produce installed package sizes list
-	oe-pkgdata-util -p ${PKGDATA_DIR} read-value "PKGSIZE" -n -f $pkgcache > $1/installed-package-sizes.tmp
+	oe-pkgdata-util -p $pkgdatadir read-value "PKGSIZE" -n -f $pkgcache > $1/installed-package-sizes.tmp
 	cat $1/installed-package-sizes.tmp | awk '{print $2 "\tKiB\t" $1}' | sort -n -r > $1/installed-package-sizes.txt
 	rm $1/installed-package-sizes.tmp
 
 	# Produce package info: runtime_name, buildtime_name, recipe, version, size
-	oe-pkgdata-util -p ${PKGDATA_DIR} read-value "PACKAGE,PN,PV,PKGSIZE" -n -f $pkgcache > $1/installed-package-info.tmp
+	oe-pkgdata-util -p $pkgdatadir read-value "PACKAGE,PN,PV,PKGSIZE" -n -f $pkgcache > $1/installed-package-info.tmp
 	cat $1/installed-package-info.tmp | sort -n -r -k 5 > $1/installed-package-info.txt
 	rm $1/installed-package-info.tmp
 
@@ -542,7 +554,7 @@
 		return
 	fi
 
-	buildhistory_get_installed ${BUILDHISTORY_DIR_SDK}/$1 sdk
+	buildhistory_get_installed ${BUILDHISTORY_DIR_SDK}/$1 sdk $1
 }
 
 buildhistory_get_sdk_installed_host() {
@@ -773,7 +785,7 @@
 def buildhistory_get_sdkvars(d):
     if d.getVar('BB_WORKERCONTEXT') != '1':
         return ""
-    sdkvars = "DISTRO DISTRO_VERSION SDK_NAME SDK_VERSION SDKMACHINE SDKIMAGE_FEATURES BAD_RECOMMENDATIONS NO_RECOMMENDATIONS PACKAGE_EXCLUDE"
+    sdkvars = "DISTRO DISTRO_VERSION SDK_NAME SDK_VERSION SDKMACHINE SDKIMAGE_FEATURES TOOLCHAIN_HOST_TASK TOOLCHAIN_TARGET_TASK BAD_RECOMMENDATIONS NO_RECOMMENDATIONS PACKAGE_EXCLUDE"
     if d.getVar('BB_CURRENTTASK') == 'populate_sdk_ext':
         # Extensible SDK uses some additional variables
         sdkvars += " SDK_LOCAL_CONF_WHITELIST SDK_LOCAL_CONF_BLACKLIST SDK_INHERIT_BLACKLIST SDK_UPDATE_URL SDK_EXT_TYPE SDK_RECRDEP_TASKS SDK_INCLUDE_PKGDATA SDK_INCLUDE_TOOLCHAIN"
diff --git a/poky/meta/classes/create-spdx.bbclass b/poky/meta/classes/create-spdx.bbclass
index 739b46e..c35dbe1 100644
--- a/poky/meta/classes/create-spdx.bbclass
+++ b/poky/meta/classes/create-spdx.bbclass
@@ -35,6 +35,17 @@
     namespace_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, d.getVar("SPDX_UUID_NAMESPACE"))
     return "%s/%s-%s" % (d.getVar("SPDX_NAMESPACE_PREFIX"), doc.name, str(uuid.uuid5(namespace_uuid, doc.name)))
 
+def create_annotation(d, comment):
+    from datetime import datetime, timezone
+
+    creation_time = datetime.now(tz=timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
+    annotation = oe.spdx.SPDXAnnotation()
+    annotation.annotationDate = creation_time
+    annotation.annotationType = "OTHER"
+    annotation.annotator = "Tool: %s - %s" % (d.getVar("SPDX_TOOL_NAME"), d.getVar("SPDX_TOOL_VERSION"))
+    annotation.comment = comment
+    return annotation
+
 def recipe_spdx_is_native(d, recipe):
     return any(a.annotationType == "OTHER" and
       a.annotator == "Tool: %s - %s" % (d.getVar("SPDX_TOOL_NAME"), d.getVar("SPDX_TOOL_VERSION")) and
@@ -411,13 +422,8 @@
     recipe.name = d.getVar("PN")
     recipe.versionInfo = d.getVar("PV")
     recipe.SPDXID = oe.sbom.get_recipe_spdxid(d)
-    if bb.data.inherits_class("native", d):
-        annotation = oe.spdx.SPDXAnnotation()
-        annotation.annotationDate = creation_time
-        annotation.annotationType = "OTHER"
-        annotation.annotator = "Tool: %s - %s" % (d.getVar("SPDX_TOOL_NAME"), d.getVar("SPDX_TOOL_VERSION"))
-        annotation.comment = "isNative"
-        recipe.annotations.append(annotation)
+    if bb.data.inherits_class("native", d) or bb.data.inherits_class("cross", d):
+        recipe.annotations.append(create_annotation(d, "isNative"))
 
     for s in d.getVar('SRC_URI').split():
         if not s.startswith("file://"):
@@ -608,7 +614,7 @@
 
     deploy_dir_spdx = Path(d.getVar("DEPLOY_DIR_SPDX"))
     spdx_deploy = Path(d.getVar("SPDXRUNTIMEDEPLOY"))
-    is_native = bb.data.inherits_class("native", d)
+    is_native = bb.data.inherits_class("native", d) or bb.data.inherits_class("cross", d)
 
     creation_time = datetime.now(tz=timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
 
diff --git a/poky/meta/classes/cross-canadian.bbclass b/poky/meta/classes/cross-canadian.bbclass
index ffbc216..ac82e86 100644
--- a/poky/meta/classes/cross-canadian.bbclass
+++ b/poky/meta/classes/cross-canadian.bbclass
@@ -169,7 +169,7 @@
 # and not any particular tune that is enabled.
 TARGET_ARCH[vardepsexclude] = "TUNE_ARCH"
 
-PKGDATA_DIR = "${TMPDIR}/pkgdata/${SDK_SYS}"
+PKGDATA_DIR = "${PKGDATA_DIR_SDK}"
 # If MLPREFIX is set by multilib code, shlibs
 # points to the wrong place so force it
 SHLIBSDIRS = "${PKGDATA_DIR}/nativesdk-shlibs2"
diff --git a/poky/meta/classes/devshell.bbclass b/poky/meta/classes/devshell.bbclass
index 76dd0b4..62dc958 100644
--- a/poky/meta/classes/devshell.bbclass
+++ b/poky/meta/classes/devshell.bbclass
@@ -34,7 +34,7 @@
        d.delVarFlag("do_devshell", "fakeroot")
 } 
 
-def devpyshell(d):
+def pydevshell(d):
 
     import code
     import select
@@ -140,17 +140,17 @@
                 os.kill(child, signal.SIGTERM)
                 break
 
-python do_devpyshell() {
+python do_pydevshell() {
     import signal
 
     try:
-        devpyshell(d)
+        pydevshell(d)
     except SystemExit:
         # Stop the SIGTERM above causing an error exit code
         return
     finally:
         return
 }
-addtask devpyshell after do_patch
+addtask pydevshell after do_patch
 
-do_devpyshell[nostamp] = "1"
+do_pydevshell[nostamp] = "1"
diff --git a/poky/meta/classes/externalsrc.bbclass b/poky/meta/classes/externalsrc.bbclass
index ad93b2d..abfe24b 100644
--- a/poky/meta/classes/externalsrc.bbclass
+++ b/poky/meta/classes/externalsrc.bbclass
@@ -109,8 +109,8 @@
             if local_srcuri and task in fetch_tasks:
                 continue
             bb.build.deltask(task, d)
-            if bb.data.inherits_class('reproducible_build', d) and task == 'do_unpack':
-                # The reproducible_build's create_source_date_epoch_stamp function must
+            if task == 'do_unpack':
+                # The reproducible build create_source_date_epoch_stamp function must
                 # be run after the source is available and before the
                 # do_deploy_source_date_epoch task.  In the normal case, it's attached
                 # to do_unpack as a postfuncs, but since we removed do_unpack (above)
diff --git a/poky/meta/classes/go.bbclass b/poky/meta/classes/go.bbclass
index 0dd0c5f..aa54b4a 100644
--- a/poky/meta/classes/go.bbclass
+++ b/poky/meta/classes/go.bbclass
@@ -41,7 +41,8 @@
 GO_LINKMODE ?= ""
 GO_LINKMODE:class-nativesdk = "--linkmode=external"
 GO_LINKMODE:class-native = "--linkmode=external"
-GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} -extldflags '${GO_EXTLDFLAGS}'"'
+GO_EXTRA_LDFLAGS ?= ""
+GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} ${GO_EXTRA_LDFLAGS} -extldflags '${GO_EXTLDFLAGS}'"'
 export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS} -trimpath"
 export GOPATH_OMIT_IN_ACTIONID ?= "1"
 export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c"
diff --git a/poky/meta/classes/image-artifact-names.bbclass b/poky/meta/classes/image-artifact-names.bbclass
index 67f04e8..f5769e5 100644
--- a/poky/meta/classes/image-artifact-names.bbclass
+++ b/poky/meta/classes/image-artifact-names.bbclass
@@ -15,7 +15,7 @@
 IMAGE_NAME_SUFFIX ??= ".rootfs"
 
 python () {
-    if bb.data.inherits_class('reproducible_build', d) and bb.data.inherits_class('deploy', d) and d.getVar("IMAGE_VERSION_SUFFIX") == "-${DATETIME}":
+    if bb.data.inherits_class('deploy', d) and d.getVar("IMAGE_VERSION_SUFFIX") == "-${DATETIME}":
         import datetime
         d.setVar("IMAGE_VERSION_SUFFIX", "-" + datetime.datetime.fromtimestamp(int(d.getVar("SOURCE_DATE_EPOCH")), datetime.timezone.utc).strftime('%Y%m%d%H%M%S'))
         d.setVarFlag("IMAGE_VERSION_SUFFIX", "vardepvalue", "")
diff --git a/poky/meta/classes/image-prelink.bbclass b/poky/meta/classes/image-prelink.bbclass
index 0da094a..8158eea 100644
--- a/poky/meta/classes/image-prelink.bbclass
+++ b/poky/meta/classes/image-prelink.bbclass
@@ -46,17 +46,12 @@
 	dynamic_loader=${@get_linuxloader(d)}
 
 	# prelink!
-	if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
-		bbnote " prelink: BUILD_REPRODUCIBLE_BINARIES..."
-		if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
-			export PRELINK_TIMESTAMP=`git log -1 --pretty=%ct `
-		else
-			export PRELINK_TIMESTAMP=$REPRODUCIBLE_TIMESTAMP_ROOTFS
-		fi
-		${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -am -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
+	if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
+		export PRELINK_TIMESTAMP=`git log -1 --pretty=%ct `
 	else
-		${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
+		export PRELINK_TIMESTAMP=$REPRODUCIBLE_TIMESTAMP_ROOTFS
 	fi
+	${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -am -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
 
 	# Remove the prelink.conf if we had to add it.
 	if [ "$dummy_prelink_conf" = "true" ]; then
diff --git a/poky/meta/classes/image.bbclass b/poky/meta/classes/image.bbclass
index c2f3232..2fa69a4 100644
--- a/poky/meta/classes/image.bbclass
+++ b/poky/meta/classes/image.bbclass
@@ -651,17 +651,15 @@
 POPULATE_SDK_PRE_TARGET_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_sdk; ', '',d)}"
 
 reproducible_final_image_task () {
-    if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
+    if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
+        REPRODUCIBLE_TIMESTAMP_ROOTFS=`git -C "${COREBASE}" log -1 --pretty=%ct 2>/dev/null` || true
         if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
-            REPRODUCIBLE_TIMESTAMP_ROOTFS=`git -C "${COREBASE}" log -1 --pretty=%ct 2>/dev/null` || true
-            if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
-                REPRODUCIBLE_TIMESTAMP_ROOTFS=`stat -c%Y ${@bb.utils.which(d.getVar("BBPATH"), "conf/bitbake.conf")}`
-            fi
+            REPRODUCIBLE_TIMESTAMP_ROOTFS=`stat -c%Y ${@bb.utils.which(d.getVar("BBPATH"), "conf/bitbake.conf")}`
         fi
-        # Set mtime of all files to a reproducible value
-        bbnote "reproducible_final_image_task: mtime set to $REPRODUCIBLE_TIMESTAMP_ROOTFS"
-        find  ${IMAGE_ROOTFS} -print0 | xargs -0 touch -h  --date=@$REPRODUCIBLE_TIMESTAMP_ROOTFS
     fi
+    # Set mtime of all files to a reproducible value
+    bbnote "reproducible_final_image_task: mtime set to $REPRODUCIBLE_TIMESTAMP_ROOTFS"
+    find  ${IMAGE_ROOTFS} -print0 | xargs -0 touch -h  --date=@$REPRODUCIBLE_TIMESTAMP_ROOTFS
 }
 
 systemd_preset_all () {
diff --git a/poky/meta/classes/image_types.bbclass b/poky/meta/classes/image_types.bbclass
index 32d4cd4..f643ed3 100644
--- a/poky/meta/classes/image_types.bbclass
+++ b/poky/meta/classes/image_types.bbclass
@@ -139,16 +139,18 @@
 }
 
 UBI_VOLNAME ?= "${MACHINE}-rootfs"
+UBI_VOLTYPE ?= "dynamic"
+UBI_IMGTYPE ?= "ubifs"
 
 multiubi_mkfs() {
 	local mkubifs_args="$1"
 	local ubinize_args="$2"
-    
+
         # Added prompt error message for ubi and ubifs image creation.
         if [ -z "$mkubifs_args" ] || [ -z "$ubinize_args" ]; then
             bbfatal "MKUBIFS_ARGS and UBINIZE_ARGS have to be set, see http://www.linux-mtd.infradead.org/faq/ubifs.html for details"
         fi
-    
+
 	if [ -z "$3" ]; then
 		local vname=""
 	else
@@ -157,9 +159,9 @@
 
 	echo \[ubifs\] > ubinize${vname}-${IMAGE_NAME}.cfg
 	echo mode=ubi >> ubinize${vname}-${IMAGE_NAME}.cfg
-	echo image=${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs >> ubinize${vname}-${IMAGE_NAME}.cfg
+	echo image=${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.${UBI_IMGTYPE} >> ubinize${vname}-${IMAGE_NAME}.cfg
 	echo vol_id=0 >> ubinize${vname}-${IMAGE_NAME}.cfg
-	echo vol_type=dynamic >> ubinize${vname}-${IMAGE_NAME}.cfg
+	echo vol_type=${UBI_VOLTYPE} >> ubinize${vname}-${IMAGE_NAME}.cfg
 	echo vol_name=${UBI_VOLNAME} >> ubinize${vname}-${IMAGE_NAME}.cfg
 	echo vol_flags=autoresize >> ubinize${vname}-${IMAGE_NAME}.cfg
 	if [ -n "$vname" ]; then
@@ -198,7 +200,7 @@
 IMAGE_CMD:ubi () {
 	multiubi_mkfs "${MKUBIFS_ARGS}" "${UBINIZE_ARGS}"
 }
-IMAGE_TYPEDEP:ubi = "ubifs"
+IMAGE_TYPEDEP:ubi = "${UBI_IMGTYPE}"
 
 IMAGE_CMD:ubifs = "mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ubifs ${MKUBIFS_ARGS}"
 
@@ -329,7 +331,7 @@
 RUNNABLE_IMAGE_TYPES ?= "ext2 ext3 ext4"
 RUNNABLE_MACHINE_PATTERNS ?= "qemu"
 
-DEPLOYABLE_IMAGE_TYPES ?= "hddimg iso" 
+DEPLOYABLE_IMAGE_TYPES ?= "hddimg iso"
 
 # The IMAGE_TYPES_MASKED variable will be used to mask out from the IMAGE_FSTYPES,
 # images that will not be built at do_rootfs time: vmdk, vhd, vhdx, vdi, qcow2, hddimg, iso, etc.
diff --git a/poky/meta/classes/insane.bbclass b/poky/meta/classes/insane.bbclass
index f2d2ca3..1e2f1b7 100644
--- a/poky/meta/classes/insane.bbclass
+++ b/poky/meta/classes/insane.bbclass
@@ -18,8 +18,6 @@
 #   files under exec_prefix
 #  -Check if the package name is upper case
 
-QA_SANE = "True"
-
 # Elect whether a given type of error is a warning or error, they may
 # have been set by other files.
 WARN_QA ?= " libdir xorg-driver-abi \
@@ -28,6 +26,8 @@
             invalid-packageconfig host-user-contaminated uppercase-pn patch-fuzz \
             mime mime-xdg unlisted-pkg-lics unhandled-features-check \
             missing-update-alternatives native-last missing-ptest \
+            license-exists license-no-generic license-syntax license-format \
+            license-incompatible license-file-missing \
             "
 ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
             perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
@@ -59,32 +59,6 @@
         path = path.replace(os.path.join(d.getVar("PKGDEST"), pkg), "/")
     return path.replace(d.getVar("TMPDIR"), "/").replace("//", "/")
 
-def package_qa_write_error(type, error, d):
-    logfile = d.getVar('QA_LOGFILE')
-    if logfile:
-        p = d.getVar('P')
-        with open(logfile, "a+") as f:
-            f.write("%s: %s [%s]\n" % (p, error, type))
-
-def package_qa_handle_error(error_class, error_msg, d):
-    if error_class in (d.getVar("ERROR_QA") or "").split():
-        package_qa_write_error(error_class, error_msg, d)
-        bb.error("QA Issue: %s [%s]" % (error_msg, error_class))
-        d.setVar("QA_SANE", False)
-        return False
-    elif error_class in (d.getVar("WARN_QA") or "").split():
-        package_qa_write_error(error_class, error_msg, d)
-        bb.warn("QA Issue: %s [%s]" % (error_msg, error_class))
-    else:
-        bb.note("QA Issue: %s [%s]" % (error_msg, error_class))
-    return True
-
-def package_qa_add_message(messages, section, new_msg):
-    if section not in messages:
-        messages[section] = new_msg
-    else:
-        messages[section] = messages[section] + "\n" + new_msg
-
 QAPATHTEST[shebang-size] = "package_qa_check_shebang_size"
 def package_qa_check_shebang_size(path, name, d, elf, messages):
     import stat
@@ -106,7 +80,7 @@
             return
 
         if len(stanza) > 129:
-            package_qa_add_message(messages, "shebang-size", "%s: %s maximum shebang size exceeded, the maximum size is 128." % (name, package_qa_clean_path(path, d)))
+            oe.qa.add_message(messages, "shebang-size", "%s: %s maximum shebang size exceeded, the maximum size is 128." % (name, package_qa_clean_path(path, d)))
             return
 
 QAPATHTEST[libexec] = "package_qa_check_libexec"
@@ -118,7 +92,7 @@
         return True
 
     if 'libexec' in path.split(os.path.sep):
-        package_qa_add_message(messages, "libexec", "%s: %s is using libexec please relocate to %s" % (name, package_qa_clean_path(path, d), libexec))
+        oe.qa.add_message(messages, "libexec", "%s: %s is using libexec please relocate to %s" % (name, package_qa_clean_path(path, d), libexec))
         return False
 
     return True
@@ -146,7 +120,7 @@
             rpath = m.group(1)
             for dir in bad_dirs:
                 if dir in rpath:
-                    package_qa_add_message(messages, "rpaths", "package %s contains bad RPATH %s in file %s" % (name, rpath, file))
+                    oe.qa.add_message(messages, "rpaths", "package %s contains bad RPATH %s in file %s" % (name, rpath, file))
 
 QAPATHTEST[useless-rpaths] = "package_qa_check_useless_rpaths"
 def package_qa_check_useless_rpaths(file, name, d, elf, messages):
@@ -176,7 +150,7 @@
             if rpath_eq(rpath, libdir) or rpath_eq(rpath, base_libdir):
                 # The dynamic linker searches both these places anyway.  There is no point in
                 # looking there again.
-                package_qa_add_message(messages, "useless-rpaths", "%s: %s contains probably-redundant RPATH %s" % (name, package_qa_clean_path(file, d, name), rpath))
+                oe.qa.add_message(messages, "useless-rpaths", "%s: %s contains probably-redundant RPATH %s" % (name, package_qa_clean_path(file, d, name), rpath))
 
 QAPATHTEST[dev-so] = "package_qa_check_dev"
 def package_qa_check_dev(path, name, d, elf, messages):
@@ -185,7 +159,7 @@
     """
 
     if not name.endswith("-dev") and not name.endswith("-dbg") and not name.endswith("-ptest") and not name.startswith("nativesdk-") and path.endswith(".so") and os.path.islink(path):
-        package_qa_add_message(messages, "dev-so", "non -dev/-dbg/nativesdk- package %s contains symlink .so '%s'" % \
+        oe.qa.add_message(messages, "dev-so", "non -dev/-dbg/nativesdk- package %s contains symlink .so '%s'" % \
                  (name, package_qa_clean_path(path, d, name)))
 
 QAPATHTEST[dev-elf] = "package_qa_check_dev_elf"
@@ -196,7 +170,7 @@
     install link-time .so files that are linker scripts.
     """
     if name.endswith("-dev") and path.endswith(".so") and not os.path.islink(path) and elf:
-        package_qa_add_message(messages, "dev-elf", "-dev package %s contains non-symlink .so '%s'" % \
+        oe.qa.add_message(messages, "dev-elf", "-dev package %s contains non-symlink .so '%s'" % \
                  (name, package_qa_clean_path(path, d, name)))
 
 QAPATHTEST[staticdev] = "package_qa_check_staticdev"
@@ -209,7 +183,7 @@
     """
 
     if not name.endswith("-pic") and not name.endswith("-staticdev") and not name.endswith("-ptest") and path.endswith(".a") and not path.endswith("_nonshared.a") and not '/usr/lib/debug-static/' in path and not '/.debug-static/' in path:
-        package_qa_add_message(messages, "staticdev", "non -staticdev package contains static .a library: %s path '%s'" % \
+        oe.qa.add_message(messages, "staticdev", "non -staticdev package contains static .a library: %s path '%s'" % \
                  (name, package_qa_clean_path(path,d, name)))
 
 QAPATHTEST[mime] = "package_qa_check_mime"
@@ -220,7 +194,7 @@
     """
 
     if d.getVar("datadir") + "/mime/packages" in path and path.endswith('.xml') and not bb.data.inherits_class("mime", d):
-        package_qa_add_message(messages, "mime", "package contains mime types but does not inherit mime: %s path '%s'" % \
+        oe.qa.add_message(messages, "mime", "package contains mime types but does not inherit mime: %s path '%s'" % \
                  (name, package_qa_clean_path(path,d)))
 
 QAPATHTEST[mime-xdg] = "package_qa_check_mime_xdg"
@@ -247,9 +221,9 @@
             if name == d.getVar('PN'):
                 pkgname = '${PN}'
             wstr += "If yes: add \'inhert mime-xdg\' and \'MIME_XDG_PACKAGES += \"%s\"\' / if no add \'INSANE_SKIP:%s += \"mime-xdg\"\' to recipe." % (pkgname, pkgname)
-            package_qa_add_message(messages, "mime-xdg", wstr)
+            oe.qa.add_message(messages, "mime-xdg", wstr)
         if mime_type_found:
-            package_qa_add_message(messages, "mime-xdg", "package contains desktop file with key 'MimeType' but does not inhert mime-xdg: %s path '%s'" % \
+            oe.qa.add_message(messages, "mime-xdg", "package contains desktop file with key 'MimeType' but does not inhert mime-xdg: %s path '%s'" % \
                     (name, package_qa_clean_path(path,d)))
 
 def package_qa_check_libdir(d):
@@ -313,7 +287,7 @@
                             pass
 
     if messages:
-        package_qa_handle_error("libdir", "\n".join(messages), d)
+        oe.qa.handle_error("libdir", "\n".join(messages), d)
 
 QAPATHTEST[debug-files] = "package_qa_check_dbg"
 def package_qa_check_dbg(path, name, d, elf, messages):
@@ -323,7 +297,7 @@
 
     if not "-dbg" in name and not "-ptest" in name:
         if '.debug' in path.split(os.path.sep):
-            package_qa_add_message(messages, "debug-files", "non debug package contains .debug directory: %s path %s" % \
+            oe.qa.add_message(messages, "debug-files", "non debug package contains .debug directory: %s path %s" % \
                      (name, package_qa_clean_path(path,d)))
 
 QAPATHTEST[arch] = "package_qa_check_arch"
@@ -343,7 +317,7 @@
 
     if target_arch == "allarch":
         pn = d.getVar('PN')
-        package_qa_add_message(messages, "arch", pn + ": Recipe inherits the allarch class, but has packaged architecture-specific binaries")
+        oe.qa.add_message(messages, "arch", pn + ": Recipe inherits the allarch class, but has packaged architecture-specific binaries")
         return
 
     # FIXME: Cross package confuse this check, so just skip them
@@ -366,13 +340,13 @@
             target_os == "linux-gnu_ilp32" or re.match(r'mips64.*32', d.getVar('DEFAULTTUNE')))
     is_bpf = (oe.qa.elf_machine_to_string(elf.machine()) == "BPF")
     if not ((machine == elf.machine()) or is_32 or is_bpf):
-        package_qa_add_message(messages, "arch", "Architecture did not match (%s, expected %s) in %s" % \
+        oe.qa.add_message(messages, "arch", "Architecture did not match (%s, expected %s) in %s" % \
                  (oe.qa.elf_machine_to_string(elf.machine()), oe.qa.elf_machine_to_string(machine), package_qa_clean_path(path, d, name)))
     elif not ((bits == elf.abiSize()) or is_32 or is_bpf):
-        package_qa_add_message(messages, "arch", "Bit size did not match (%d, expected %d) in %s" % \
+        oe.qa.add_message(messages, "arch", "Bit size did not match (%d, expected %d) in %s" % \
                  (elf.abiSize(), bits, package_qa_clean_path(path, d, name)))
     elif not ((littleendian == elf.isLittleEndian()) or is_bpf):
-        package_qa_add_message(messages, "arch", "Endiannes did not match (%d, expected %d) in %s" % \
+        oe.qa.add_message(messages, "arch", "Endiannes did not match (%d, expected %d) in %s" % \
                  (elf.isLittleEndian(), littleendian, package_qa_clean_path(path,d, name)))
 
 QAPATHTEST[desktop] = "package_qa_check_desktop"
@@ -385,7 +359,7 @@
         output = os.popen("%s %s" % (desktop_file_validate, path))
         # This only produces output on errors
         for l in output:
-            package_qa_add_message(messages, "desktop", "Desktop file issue: " + l.strip())
+            oe.qa.add_message(messages, "desktop", "Desktop file issue: " + l.strip())
 
 QAPATHTEST[textrel] = "package_qa_textrel"
 def package_qa_textrel(path, name, d, elf, messages):
@@ -411,7 +385,7 @@
 
     if not sane:
         path = package_qa_clean_path(path, d, name)
-        package_qa_add_message(messages, "textrel", "%s: ELF binary %s has relocations in .text" % (name, path))
+        oe.qa.add_message(messages, "textrel", "%s: ELF binary %s has relocations in .text" % (name, path))
 
 QAPATHTEST[ldflags] = "package_qa_hash_style"
 def package_qa_hash_style(path, name, d, elf, messages):
@@ -446,7 +420,7 @@
             sane = True
     if has_syms and not sane:
         path = package_qa_clean_path(path, d, name)
-        package_qa_add_message(messages, "ldflags", "File %s in package %s doesn't have GNU_HASH (didn't pass LDFLAGS?)" % (path, name))
+        oe.qa.add_message(messages, "ldflags", "File %s in package %s doesn't have GNU_HASH (didn't pass LDFLAGS?)" % (path, name))
 
 
 QAPATHTEST[buildpaths] = "package_qa_check_buildpaths"
@@ -467,7 +441,7 @@
         file_content = f.read()
         if tmpdir in file_content:
             trimmed = path.replace(os.path.join (d.getVar("PKGDEST"), name), "")
-            package_qa_add_message(messages, "buildpaths", "File %s in package %s contains reference to TMPDIR" % (trimmed, name))
+            oe.qa.add_message(messages, "buildpaths", "File %s in package %s contains reference to TMPDIR" % (trimmed, name))
 
 
 QAPATHTEST[xorg-driver-abi] = "package_qa_check_xorg_driver_abi"
@@ -486,7 +460,7 @@
         for rdep in bb.utils.explode_deps(d.getVar('RDEPENDS:' + name) or ""):
             if rdep.startswith("%sxorg-abi-" % mlprefix):
                 return
-        package_qa_add_message(messages, "xorg-driver-abi", "Package %s contains Xorg driver (%s) but no xorg-abi- dependencies" % (name, os.path.basename(path)))
+        oe.qa.add_message(messages, "xorg-driver-abi", "Package %s contains Xorg driver (%s) but no xorg-abi- dependencies" % (name, os.path.basename(path)))
 
 QAPATHTEST[infodir] = "package_qa_check_infodir"
 def package_qa_check_infodir(path, name, d, elf, messages):
@@ -496,7 +470,7 @@
     infodir = d.expand("${infodir}/dir")
 
     if infodir in path:
-        package_qa_add_message(messages, "infodir", "The /usr/share/info/dir file is not meant to be shipped in a particular package.")
+        oe.qa.add_message(messages, "infodir", "The /usr/share/info/dir file is not meant to be shipped in a particular package.")
 
 QAPATHTEST[symlink-to-sysroot] = "package_qa_check_symlink_to_sysroot"
 def package_qa_check_symlink_to_sysroot(path, name, d, elf, messages):
@@ -509,7 +483,7 @@
             tmpdir = d.getVar('TMPDIR')
             if target.startswith(tmpdir):
                 trimmed = path.replace(os.path.join (d.getVar("PKGDEST"), name), "")
-                package_qa_add_message(messages, "symlink-to-sysroot", "Symlink %s in %s points to TMPDIR" % (trimmed, name))
+                oe.qa.add_message(messages, "symlink-to-sysroot", "Symlink %s in %s points to TMPDIR" % (trimmed, name))
 
 # Check license variables
 do_populate_lic[postfuncs] += "populate_lic_qa_checksum"
@@ -517,7 +491,6 @@
     """
     Check for changes in the license files.
     """
-    sane = True
 
     lic_files = d.getVar('LIC_FILES_CHKSUM') or ''
     lic = d.getVar('LICENSE')
@@ -527,7 +500,7 @@
         return
 
     if not lic_files and d.getVar('SRC_URI'):
-        sane &= package_qa_handle_error("license-checksum", pn + ": Recipe file fetches files and does not have license file information (LIC_FILES_CHKSUM)", d)
+        oe.qa.handle_error("license-checksum", pn + ": Recipe file fetches files and does not have license file information (LIC_FILES_CHKSUM)", d)
 
     srcdir = d.getVar('S')
     corebase_licensefile = d.getVar('COREBASE') + "/LICENSE"
@@ -535,11 +508,11 @@
         try:
             (type, host, path, user, pswd, parm) = bb.fetch.decodeurl(url)
         except bb.fetch.MalformedUrl:
-            sane &= package_qa_handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM contains an invalid URL: " + url, d)
+            oe.qa.handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM contains an invalid URL: " + url, d)
             continue
         srclicfile = os.path.join(srcdir, path)
         if not os.path.isfile(srclicfile):
-            sane &= package_qa_handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM points to an invalid file: " + srclicfile, d)
+            oe.qa.handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM points to an invalid file: " + srclicfile, d)
             continue
 
         if (srclicfile == corebase_licensefile):
@@ -607,10 +580,9 @@
             else:
                 msg = pn + ": LIC_FILES_CHKSUM is not specified for " +  url
                 msg = msg + "\n" + pn + ": The md5 checksum is " + md5chksum
-            sane &= package_qa_handle_error("license-checksum", msg, d)
+            oe.qa.handle_error("license-checksum", msg, d)
 
-    if not sane:
-        bb.fatal("Fatal QA errors found, failing task.")
+    oe.qa.exit_if_errors(d)
 }
 
 def qa_check_staged(path,d):
@@ -622,7 +594,6 @@
     responsible for the errors easily even if we look at every .pc and .la file.
     """
 
-    sane = True
     tmpdir = d.getVar('TMPDIR')
     workdir = os.path.join(tmpdir, "work")
     recipesysroot = d.getVar("RECIPE_SYSROOT")
@@ -655,16 +626,14 @@
                     file_content = file_content.replace(recipesysroot, "")
                     if workdir in file_content:
                         error_msg = "%s failed sanity test (workdir) in path %s" % (file,root)
-                        sane &= package_qa_handle_error("la", error_msg, d)
+                        oe.qa.handle_error("la", error_msg, d)
             elif file.endswith(".pc") and not skip_pkgconfig:
                 with open(path) as f:
                     file_content = f.read()
                     file_content = file_content.replace(recipesysroot, "")
                     if pkgconfigcheck in file_content:
                         error_msg = "%s failed sanity test (tmpdir) in path %s" % (file,root)
-                        sane &= package_qa_handle_error("pkgconfig", error_msg, d)
-
-    return sane
+                        oe.qa.handle_error("pkgconfig", error_msg, d)
 
 # Run all package-wide warnfuncs and errorfuncs
 def package_qa_package(warnfuncs, errorfuncs, package, d):
@@ -677,9 +646,9 @@
         func(package, d, errors)
 
     for w in warnings:
-        package_qa_handle_error(w, warnings[w], d)
+        oe.qa.handle_error(w, warnings[w], d)
     for e in errors:
-        package_qa_handle_error(e, errors[e], d)
+        oe.qa.handle_error(e, errors[e], d)
 
     return len(errors) == 0
 
@@ -694,16 +663,14 @@
         func(pn, d, errors)
 
     for w in warnings:
-        package_qa_handle_error(w, warnings[w], d)
+        oe.qa.handle_error(w, warnings[w], d)
     for e in errors:
-        package_qa_handle_error(e, errors[e], d)
+        oe.qa.handle_error(e, errors[e], d)
 
     return len(errors) == 0
 
 # Walk over all files in a directory and call func
 def package_qa_walk(warnfuncs, errorfuncs, package, d):
-    import oe.qa
-
     #if this will throw an exception, then fix the dict above
     target_os   = d.getVar('TARGET_OS')
     target_arch = d.getVar('TARGET_ARCH')
@@ -724,9 +691,9 @@
                 func(path, package, d, elf, errors)
 
     for w in warnings:
-        package_qa_handle_error(w, warnings[w], d)
+        oe.qa.handle_error(w, warnings[w], d)
     for e in errors:
-        package_qa_handle_error(e, errors[e], d)
+        oe.qa.handle_error(e, errors[e], d)
 
 def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
     # Don't do this check for kernel/module recipes, there aren't too many debug/development
@@ -746,10 +713,10 @@
             for rdepend in rdepends:
                 if "-dbg" in rdepend and "debug-deps" not in skip:
                     error_msg = "%s rdepends on %s" % (pkg,rdepend)
-                    package_qa_handle_error("debug-deps", error_msg, d)
+                    oe.qa.handle_error("debug-deps", error_msg, d)
                 if (not "-dev" in pkg and not "-staticdev" in pkg) and rdepend.endswith("-dev") and "dev-deps" not in skip:
                     error_msg = "%s rdepends on %s" % (pkg, rdepend)
-                    package_qa_handle_error("dev-deps", error_msg, d)
+                    oe.qa.handle_error("dev-deps", error_msg, d)
                 if rdepend not in packages:
                     rdep_data = oe.packagedata.read_subpkgdata(rdepend, d)
                     if rdep_data and 'PN' in rdep_data and rdep_data['PN'] in taskdeps:
@@ -770,7 +737,7 @@
                         error_msg = "%s rdepends on %s, but it isn't a build dependency, missing %s in DEPENDS or PACKAGECONFIG?" % (pkg, rdepend, rdep_data['PN'])
                     else:
                         error_msg = "%s rdepends on %s, but it isn't a build dependency?" % (pkg, rdepend)
-                    package_qa_handle_error("build-deps", error_msg, d)
+                    oe.qa.handle_error("build-deps", error_msg, d)
 
         if "file-rdeps" not in skip:
             ignored_file_rdeps = set(['/bin/sh', '/usr/bin/env', 'rtld(GNU_HASH)'])
@@ -823,7 +790,7 @@
                 for key in filerdepends:
                     error_msg = "%s contained in package %s requires %s, but no providers found in RDEPENDS:%s?" % \
                             (filerdepends[key].replace(":%s" % pkg, "").replace("@underscore@", "_"), pkg, key, pkg)
-                    package_qa_handle_error("file-rdeps", error_msg, d)
+                    oe.qa.handle_error("file-rdeps", error_msg, d)
 package_qa_check_rdepends[vardepsexclude] = "OVERRIDES"
 
 def package_qa_check_deps(pkg, pkgdest, d):
@@ -840,7 +807,7 @@
             for v in rvar[dep]:
                 if v and not v.startswith(('< ', '= ', '> ', '<= ', '>=')):
                     error_msg = "%s:%s is invalid: %s (%s)   only comparisons <, =, >, <=, and >= are allowed" % (var, pkg, dep, v)
-                    package_qa_handle_error("dep-cmp", error_msg, d)
+                    oe.qa.handle_error("dep-cmp", error_msg, d)
 
     check_valid_deps('RDEPENDS')
     check_valid_deps('RRECOMMENDS')
@@ -851,13 +818,14 @@
 
 QAPKGTEST[usrmerge] = "package_qa_check_usrmerge"
 def package_qa_check_usrmerge(pkg, d, messages):
+
     pkgdest = d.getVar('PKGDEST')
     pkg_dir = pkgdest + os.sep + pkg + os.sep
     merged_dirs = ['bin', 'sbin', 'lib'] + d.getVar('MULTILIB_VARIANTS').split()
     for f in merged_dirs:
         if os.path.exists(pkg_dir + f) and not os.path.islink(pkg_dir + f):
             msg = "%s package is not obeying usrmerge distro feature. /%s should be relocated to /usr." % (pkg, f)
-            package_qa_add_message(messages, "usrmerge", msg)
+            oe.qa.add_message(messages, "usrmerge", msg)
             return False
     return True
 
@@ -876,7 +844,7 @@
     if matches:
         matches = [package_qa_clean_path(path, d, pkg) for path in matches]
         msg = "%s contains perllocal.pod (%s), should not be installed" % (pkg, " ".join(matches))
-        package_qa_add_message(messages, "perllocalpod", msg)
+        oe.qa.add_message(messages, "perllocalpod", msg)
 
 QAPKGTEST[expanded-d] = "package_qa_check_expanded_d"
 def package_qa_check_expanded_d(package, d, messages):
@@ -891,10 +859,10 @@
         bbvar = d.getVar(var + ":" + package) or ""
         if expanded_d in bbvar:
             if var == 'FILES':
-                package_qa_add_message(messages, "expanded-d", "FILES in %s recipe should not contain the ${D} variable as it references the local build directory not the target filesystem, best solution is to remove the ${D} reference" % package)
+                oe.qa.add_message(messages, "expanded-d", "FILES in %s recipe should not contain the ${D} variable as it references the local build directory not the target filesystem, best solution is to remove the ${D} reference" % package)
                 sane = False
             else:
-                package_qa_add_message(messages, "expanded-d", "%s in %s recipe contains ${D}, it should be replaced by $D instead" % (var, package))
+                oe.qa.add_message(messages, "expanded-d", "%s in %s recipe contains ${D}, it should be replaced by $D instead" % (var, package))
                 sane = False
     return sane
 
@@ -912,7 +880,7 @@
     if not unlisted:
         return True
 
-    package_qa_add_message(messages, "unlisted-pkg-lics",
+    oe.qa.add_message(messages, "unlisted-pkg-lics",
                            "LICENSE:%s includes licenses (%s) that are not "
                            "listed in LICENSE" % (package, ' '.join(unlisted)))
     return False
@@ -927,7 +895,7 @@
             except UnicodeDecodeError as e:
                 error_msg = "%s has non %s characters" % (key,enc)
                 sane = False
-                package_qa_handle_error("invalid-chars", error_msg, d)
+                oe.qa.handle_error("invalid-chars", error_msg, d)
         return sane
 
     for key in keys:
@@ -960,12 +928,12 @@
     else:
         check_uid = int(d.getVar('HOST_USER_UID'))
         if stat.st_uid == check_uid:
-            package_qa_add_message(messages, "host-user-contaminated", "%s: %s is owned by uid %d, which is the same as the user running bitbake. This may be due to host contamination" % (pn, package_qa_clean_path(path, d, name), check_uid))
+            oe.qa.add_message(messages, "host-user-contaminated", "%s: %s is owned by uid %d, which is the same as the user running bitbake. This may be due to host contamination" % (pn, package_qa_clean_path(path, d, name), check_uid))
             return False
 
         check_gid = int(d.getVar('HOST_USER_GID'))
         if stat.st_gid == check_gid:
-            package_qa_add_message(messages, "host-user-contaminated", "%s: %s is owned by gid %d, which is the same as the user running bitbake. This may be due to host contamination" % (pn, package_qa_clean_path(path, d, name), check_gid))
+            oe.qa.add_message(messages, "host-user-contaminated", "%s: %s is owned by gid %d, which is the same as the user running bitbake. This may be due to host contamination" % (pn, package_qa_clean_path(path, d, name), check_gid))
             return False
     return True
 
@@ -974,11 +942,11 @@
     import re
 
     if "${PN}" in d.getVar("SRC_URI", False):
-        package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses PN not BPN" % pn, d)
+        oe.qa.handle_error("src-uri-bad", "%s: SRC_URI uses PN not BPN" % pn, d)
 
     for url in d.getVar("SRC_URI").split():
         if re.search(r"git(hu|la)b\.com/.+/.+/archive/.+", url):
-            package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses unstable GitHub/GitLab archives, convert recipe to use git protocol" % pn, d)
+            oe.qa.handle_error("src-uri-bad", "%s: SRC_URI uses unstable GitHub/GitLab archives, convert recipe to use git protocol" % pn, d)
 
 QARECIPETEST[unhandled-features-check] = "package_qa_check_unhandled_features_check"
 def package_qa_check_unhandled_features_check(pn, d, messages):
@@ -989,7 +957,7 @@
                 if d.getVar(var) is not None or d.overridedata.get(var) is not None:
                     var_set = True
         if var_set:
-            package_qa_handle_error("unhandled-features-check", "%s: recipe doesn't inherit features_check" % pn, d)
+            oe.qa.handle_error("unhandled-features-check", "%s: recipe doesn't inherit features_check" % pn, d)
 
 QARECIPETEST[missing-update-alternatives] = "package_qa_check_missing_update_alternatives"
 def package_qa_check_missing_update_alternatives(pn, d, messages):
@@ -997,7 +965,7 @@
     # without inheriting update-alternatives class
     for pkg in (d.getVar('PACKAGES') or '').split():
         if d.getVar('ALTERNATIVE:%s' % pkg) and not bb.data.inherits_class('update-alternatives', d):
-            package_qa_handle_error("missing-update-alternatives", "%s: recipe defines ALTERNATIVE:%s but doesn't inherit update-alternatives. This might fail during do_rootfs later!" % (pn, pkg), d)
+            oe.qa.handle_error("missing-update-alternatives", "%s: recipe defines ALTERNATIVE:%s but doesn't inherit update-alternatives. This might fail during do_rootfs later!" % (pn, pkg), d)
 
 # The PACKAGE FUNC to scan each package
 python do_package_qa () {
@@ -1073,7 +1041,7 @@
         bb.note("Checking Package: %s" % package)
         # Check package name
         if not pkgname_pattern.match(package):
-            package_qa_handle_error("pkgname",
+            oe.qa.handle_error("pkgname",
                     "%s doesn't match the [a-z0-9.+-]+ regex" % package, d)
 
         warn_checks, error_checks = parse_test_matrix("QAPATHTEST")
@@ -1091,10 +1059,7 @@
     if 'libdir' in d.getVar("ALL_QA").split():
         package_qa_check_libdir(d)
 
-    qa_sane = d.getVar("QA_SANE")
-    if not qa_sane:
-        bb.fatal("QA run found fatal errors. Please consider fixing them.")
-    bb.note("DONE with PACKAGE QA")
+    oe.qa.exit_if_errors(d)
 }
 
 # binutils is used for most checks, so need to set as dependency
@@ -1121,8 +1086,8 @@
 
 python do_qa_staging() {
     bb.note("QA checking staging")
-    if not qa_check_staged(d.expand('${SYSROOT_DESTDIR}${libdir}'), d):
-        bb.fatal("QA staging was broken by the package built above")
+    qa_check_staged(d.expand('${SYSROOT_DESTDIR}${libdir}'), d)
+    oe.qa.exit_with_message_if_errors("QA staging was broken by the package built above", d)
 }
 
 python do_qa_patch() {
@@ -1170,7 +1135,7 @@
             elif 'patch-fuzz' in d.getVar('WARN_QA'):
                 bb.warn(msg)
             msg = "Patch log indicates that patches do not apply cleanly."
-            package_qa_handle_error("patch-fuzz", msg, d)
+            oe.qa.handle_error("patch-fuzz", msg, d)
 }
 
 python do_qa_configure() {
@@ -1198,7 +1163,7 @@
                 if subprocess.call(statement, shell=True) == 0:
                     error_msg = """This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities.
 Rerun configure task after fixing this."""
-                    package_qa_handle_error("configure-unsafe", error_msg, d)
+                    oe.qa.handle_error("configure-unsafe", error_msg, d)
 
             if "configure.ac" in files:
                 configs.append(os.path.join(root,"configure.ac"))
@@ -1228,7 +1193,7 @@
                 gnu = "grep \"^[[:space:]]*AM_GNU_GETTEXT\" %s >/dev/null" % config
                 if subprocess.call(gnu, shell=True) == 0:
                     error_msg = "AM_GNU_GETTEXT used but no inherit gettext"
-                    package_qa_handle_error("configure-gettext", error_msg, d)
+                    oe.qa.handle_error("configure-gettext", error_msg, d)
 
     ###########################################################################
     # Check unrecognised configure options (with a white list)
@@ -1251,7 +1216,7 @@
             if options:
                 pn = d.getVar('PN')
                 error_msg = pn + ": configure was passed unrecognised options: " + " ".join(options)
-                package_qa_handle_error("unknown-configure-option", error_msg, d)
+                oe.qa.handle_error("unknown-configure-option", error_msg, d)
         except subprocess.CalledProcessError:
             pass
 
@@ -1263,11 +1228,9 @@
             if pconfig not in pkgconfigflags:
                 pn = d.getVar('PN')
                 error_msg = "%s: invalid PACKAGECONFIG: %s" % (pn, pconfig)
-                package_qa_handle_error("invalid-packageconfig", error_msg, d)
+                oe.qa.handle_error("invalid-packageconfig", error_msg, d)
 
-    qa_sane = d.getVar("QA_SANE")
-    if not qa_sane:
-        bb.fatal("Fatal QA errors found, failing task.")
+    oe.qa.exit_if_errors(d)
 }
 
 python do_qa_unpack() {
@@ -1320,15 +1283,15 @@
     pn = d.getVar('PN')
     if pn in overrides:
         msg = 'Recipe %s has PN of "%s" which is in OVERRIDES, this can result in unexpected behaviour.' % (d.getVar("FILE"), pn)
-        package_qa_handle_error("pn-overrides", msg, d)
+        oe.qa.handle_error("pn-overrides", msg, d)
     prog = re.compile(r'[A-Z]')
     if prog.search(pn):
-        package_qa_handle_error("uppercase-pn", 'PN: %s is upper case, this can result in unexpected behavior.' % pn, d)
+        oe.qa.handle_error("uppercase-pn", 'PN: %s is upper case, this can result in unexpected behavior.' % pn, d)
 
     # Some people mistakenly use DEPENDS:${PN} instead of DEPENDS and wonder
     # why it doesn't work.
     if (d.getVar(d.expand('DEPENDS:${PN}'))):
-        package_qa_handle_error("pkgvarcheck", "recipe uses DEPENDS:${PN}, should use DEPENDS", d)
+        oe.qa.handle_error("pkgvarcheck", "recipe uses DEPENDS:${PN}, should use DEPENDS", d)
 
     issues = []
     if (d.getVar('PACKAGES') or "").split():
@@ -1345,7 +1308,7 @@
     else:
         d.setVarFlag('do_package_qa', 'rdeptask', '')
     for i in issues:
-        package_qa_handle_error("pkgvarcheck", "%s: Variable %s is set as not being package specific, please fix this." % (d.getVar("FILE"), i), d)
+        oe.qa.handle_error("pkgvarcheck", "%s: Variable %s is set as not being package specific, please fix this." % (d.getVar("FILE"), i), d)
 
     if 'native-last' not in (d.getVar('INSANE_SKIP') or "").split():
         for native_class in ['native', 'nativesdk']:
@@ -1373,11 +1336,8 @@
                     else:
                         break
                 if broken_order:
-                    package_qa_handle_error("native-last", "%s: native/nativesdk class is not inherited last, this can result in unexpected behaviour. "
+                    oe.qa.handle_error("native-last", "%s: native/nativesdk class is not inherited last, this can result in unexpected behaviour. "
                                              "Classes inherited after native/nativesdk: %s" % (pn, " ".join(broken_order)), d)
 
-
-    qa_sane = d.getVar("QA_SANE")
-    if not qa_sane:
-        bb.fatal("Fatal QA errors found, failing task.")
+    oe.qa.exit_if_errors(d)
 }
diff --git a/poky/meta/classes/kernel-fitimage.bbclass b/poky/meta/classes/kernel-fitimage.bbclass
index 38e0515..8718ce7 100644
--- a/poky/meta/classes/kernel-fitimage.bbclass
+++ b/poky/meta/classes/kernel-fitimage.bbclass
@@ -73,7 +73,7 @@
 #
 # $1 ... .its filename
 fitimage_emit_fit_header() {
-	cat << EOF >> ${1}
+	cat << EOF >> $1
 /dts-v1/;
 
 / {
@@ -94,24 +94,24 @@
 fitimage_emit_section_maint() {
 	case $2 in
 	imagestart)
-		cat << EOF >> ${1}
+		cat << EOF >> $1
 
         images {
 EOF
 	;;
 	confstart)
-		cat << EOF >> ${1}
+		cat << EOF >> $1
 
         configurations {
 EOF
 	;;
 	sectend)
-		cat << EOF >> ${1}
+		cat << EOF >> $1
 	};
 EOF
 	;;
 	fitend)
-		cat << EOF >> ${1}
+		cat << EOF >> $1
 };
 EOF
 	;;
@@ -137,28 +137,28 @@
 			awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'`
 	fi
 
-	cat << EOF >> ${1}
-                kernel-${2} {
+	cat << EOF >> $1
+                kernel-$2 {
                         description = "Linux kernel";
-                        data = /incbin/("${3}");
+                        data = /incbin/("$3");
                         type = "kernel";
                         arch = "${UBOOT_ARCH}";
                         os = "linux";
-                        compression = "${4}";
+                        compression = "$4";
                         load = <${UBOOT_LOADADDRESS}>;
-                        entry = <${ENTRYPOINT}>;
+                        entry = <$ENTRYPOINT>;
                         hash-1 {
-                                algo = "${kernel_csum}";
+                                algo = "$kernel_csum";
                         };
                 };
 EOF
 
-	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "${kernel_sign_keyname}" ] ; then
-		sed -i '$ d' ${1}
-		cat << EOF >> ${1}
+	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$kernel_sign_keyname" ] ; then
+		sed -i '$ d' $1
+		cat << EOF >> $1
                         signature-1 {
-                                algo = "${kernel_csum},${kernel_sign_algo}";
-                                key-name-hint = "${kernel_sign_keyname}";
+                                algo = "$kernel_csum,$kernel_sign_algo";
+                                key-name-hint = "$kernel_sign_keyname";
                         };
                 };
 EOF
@@ -186,26 +186,26 @@
 	elif [ -n "${UBOOT_DTB_LOADADDRESS}" ]; then
 		dtb_loadline="load = <${UBOOT_DTB_LOADADDRESS}>;"
 	fi
-	cat << EOF >> ${1}
-                fdt-${2} {
+	cat << EOF >> $1
+                fdt-$2 {
                         description = "Flattened Device Tree blob";
-                        data = /incbin/("${3}");
+                        data = /incbin/("$3");
                         type = "flat_dt";
                         arch = "${UBOOT_ARCH}";
                         compression = "none";
-                        ${dtb_loadline}
+                        $dtb_loadline
                         hash-1 {
-                                algo = "${dtb_csum}";
+                                algo = "$dtb_csum";
                         };
                 };
 EOF
 
-	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "${dtb_sign_keyname}" ] ; then
-		sed -i '$ d' ${1}
-		cat << EOF >> ${1}
+	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$dtb_sign_keyname" ] ; then
+		sed -i '$ d' $1
+		cat << EOF >> $1
                         signature-1 {
-                                algo = "${dtb_csum},${dtb_sign_algo}";
-                                key-name-hint = "${dtb_sign_keyname}";
+                                algo = "$dtb_csum,$dtb_sign_algo";
+                                key-name-hint = "$dtb_sign_keyname";
                         };
                 };
 EOF
@@ -220,29 +220,29 @@
 # $3 ... Path to boot script image
 fitimage_emit_section_boot_script() {
 
-        bootscr_csum="${FIT_HASH_ALG}"
+	bootscr_csum="${FIT_HASH_ALG}"
 	bootscr_sign_algo="${FIT_SIGN_ALG}"
 	bootscr_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
 
-        cat << EOF >> ${1}
-                bootscr-${2} {
+        cat << EOF >> $1
+                bootscr-$2 {
                         description = "U-boot script";
-                        data = /incbin/("${3}");
+                        data = /incbin/("$3");
                         type = "script";
                         arch = "${UBOOT_ARCH}";
                         compression = "none";
                         hash-1 {
-                                algo = "${bootscr_csum}";
+                                algo = "$bootscr_csum";
                         };
                 };
 EOF
 
-	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "${bootscr_sign_keyname}" ] ; then
-		sed -i '$ d' ${1}
-		cat << EOF >> ${1}
+	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$bootscr_sign_keyname" ] ; then
+		sed -i '$ d' $1
+		cat << EOF >> $1
                         signature-1 {
-                                algo = "${bootscr_csum},${bootscr_sign_algo}";
-                                key-name-hint = "${bootscr_sign_keyname}";
+                                algo = "$bootscr_csum,$bootscr_sign_algo";
+                                key-name-hint = "$bootscr_sign_keyname";
                         };
                 };
 EOF
@@ -259,10 +259,10 @@
 
 	setup_csum="${FIT_HASH_ALG}"
 
-	cat << EOF >> ${1}
-                setup-${2} {
+	cat << EOF >> $1
+                setup-$2 {
                         description = "Linux setup.bin";
-                        data = /incbin/("${3}");
+                        data = /incbin/("$3");
                         type = "x86_setup";
                         arch = "${UBOOT_ARCH}";
                         os = "linux";
@@ -270,7 +270,7 @@
                         load = <0x00090000>;
                         entry = <0x00090000>;
                         hash-1 {
-                                algo = "${setup_csum}";
+                                algo = "$setup_csum";
                         };
                 };
 EOF
@@ -297,28 +297,28 @@
 		ramdisk_entryline="entry = <${UBOOT_RD_ENTRYPOINT}>;"
 	fi
 
-	cat << EOF >> ${1}
-                ramdisk-${2} {
+	cat << EOF >> $1
+                ramdisk-$2 {
                         description = "${INITRAMFS_IMAGE}";
-                        data = /incbin/("${3}");
+                        data = /incbin/("$3");
                         type = "ramdisk";
                         arch = "${UBOOT_ARCH}";
                         os = "linux";
                         compression = "none";
-                        ${ramdisk_loadline}
-                        ${ramdisk_entryline}
+                        $ramdisk_loadline
+                        $ramdisk_entryline
                         hash-1 {
-                                algo = "${ramdisk_csum}";
+                                algo = "$ramdisk_csum";
                         };
                 };
 EOF
 
-	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "${ramdisk_sign_keyname}" ] ; then
-		sed -i '$ d' ${1}
-		cat << EOF >> ${1}
+	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$ramdisk_sign_keyname" ] ; then
+		sed -i '$ d' $1
+		cat << EOF >> $1
                         signature-1 {
-                                algo = "${ramdisk_csum},${ramdisk_sign_algo}";
-                                key-name-hint = "${ramdisk_sign_keyname}";
+                                algo = "$ramdisk_csum,$ramdisk_sign_algo";
+                                key-name-hint = "$ramdisk_sign_keyname";
                         };
                 };
 EOF
@@ -343,13 +343,13 @@
 		conf_sign_keyname="${UBOOT_SIGN_KEYNAME}"
 	fi
 
-	its_file="${1}"
-	kernel_id="${2}"
-	dtb_image="${3}"
-	ramdisk_id="${4}"
-	bootscr_id="${5}"
-	config_id="${6}"
-	default_flag="${7}"
+	its_file="$1"
+	kernel_id="$2"
+	dtb_image="$3"
+	ramdisk_id="$4"
+	bootscr_id="$5"
+	config_id="$6"
+	default_flag="$7"
 
 	# Test if we have any DTBs at all
 	sep=""
@@ -364,106 +364,106 @@
 
 	# conf node name is selected based on dtb ID if it is present,
 	# otherwise its selected based on kernel ID
-	if [ -n "${dtb_image}" ]; then
-		conf_node=$conf_node${dtb_image}
+	if [ -n "$dtb_image" ]; then
+		conf_node=$conf_node$dtb_image
 	else
-		conf_node=$conf_node${kernel_id}
+		conf_node=$conf_node$kernel_id
 	fi
 
-	if [ -n "${kernel_id}" ]; then
+	if [ -n "$kernel_id" ]; then
 		conf_desc="Linux kernel"
 		sep=", "
-		kernel_line="kernel = \"kernel-${kernel_id}\";"
+		kernel_line="kernel = \"kernel-$kernel_id\";"
 	fi
 
-	if [ -n "${dtb_image}" ]; then
-		conf_desc="${conf_desc}${sep}FDT blob"
+	if [ -n "$dtb_image" ]; then
+		conf_desc="$conf_desc${sep}FDT blob"
 		sep=", "
-		fdt_line="fdt = \"fdt-${dtb_image}\";"
+		fdt_line="fdt = \"fdt-$dtb_image\";"
 	fi
 
-	if [ -n "${ramdisk_id}" ]; then
-		conf_desc="${conf_desc}${sep}ramdisk"
+	if [ -n "$ramdisk_id" ]; then
+		conf_desc="$conf_desc${sep}ramdisk"
 		sep=", "
-		ramdisk_line="ramdisk = \"ramdisk-${ramdisk_id}\";"
+		ramdisk_line="ramdisk = \"ramdisk-$ramdisk_id\";"
 	fi
 
-	if [ -n "${bootscr_id}" ]; then
-		conf_desc="${conf_desc}${sep}u-boot script"
+	if [ -n "$bootscr_id" ]; then
+		conf_desc="$conf_desc${sep}u-boot script"
 		sep=", "
-		bootscr_line="bootscr = \"bootscr-${bootscr_id}\";"
+		bootscr_line="bootscr = \"bootscr-$bootscr_id\";"
 	fi
 
-	if [ -n "${config_id}" ]; then
-		conf_desc="${conf_desc}${sep}setup"
-		setup_line="setup = \"setup-${config_id}\";"
+	if [ -n "$config_id" ]; then
+		conf_desc="$conf_desc${sep}setup"
+		setup_line="setup = \"setup-$config_id\";"
 	fi
 
-	if [ "${default_flag}" = "1" ]; then
+	if [ "$default_flag" = "1" ]; then
 		# default node is selected based on dtb ID if it is present,
 		# otherwise its selected based on kernel ID
-		if [ -n "${dtb_image}" ]; then
-			default_line="default = \"conf-${dtb_image}\";"
+		if [ -n "$dtb_image" ]; then
+			default_line="default = \"conf-$dtb_image\";"
 		else
-			default_line="default = \"conf-${kernel_id}\";"
+			default_line="default = \"conf-$kernel_id\";"
 		fi
 	fi
 
-	cat << EOF >> ${its_file}
-                ${default_line}
+	cat << EOF >> $its_file
+                $default_line
                 $conf_node {
-			description = "${default_flag} ${conf_desc}";
-			${kernel_line}
-			${fdt_line}
-			${ramdisk_line}
-			${bootscr_line}
-			${setup_line}
+                        description = "$default_flag $conf_desc";
+                        $kernel_line
+                        $fdt_line
+                        $ramdisk_line
+                        $bootscr_line
+                        $setup_line
                         hash-1 {
-                                algo = "${conf_csum}";
+                                algo = "$conf_csum";
                         };
 EOF
 
-	if [ ! -z "${conf_sign_keyname}" ] ; then
+	if [ -n "$conf_sign_keyname" ] ; then
 
 		sign_line="sign-images = "
 		sep=""
 
-		if [ -n "${kernel_id}" ]; then
-			sign_line="${sign_line}${sep}\"kernel\""
+		if [ -n "$kernel_id" ]; then
+			sign_line="$sign_line${sep}\"kernel\""
 			sep=", "
 		fi
 
-		if [ -n "${dtb_image}" ]; then
-			sign_line="${sign_line}${sep}\"fdt\""
+		if [ -n "$dtb_image" ]; then
+			sign_line="$sign_line${sep}\"fdt\""
 			sep=", "
 		fi
 
-		if [ -n "${ramdisk_id}" ]; then
-			sign_line="${sign_line}${sep}\"ramdisk\""
+		if [ -n "$ramdisk_id" ]; then
+			sign_line="$sign_line${sep}\"ramdisk\""
 			sep=", "
 		fi
 
-		if [ -n "${bootscr_id}" ]; then
-			sign_line="${sign_line}${sep}\"bootscr\""
+		if [ -n "$bootscr_id" ]; then
+			sign_line="$sign_line${sep}\"bootscr\""
 			sep=", "
 		fi
 
-		if [ -n "${config_id}" ]; then
-			sign_line="${sign_line}${sep}\"setup\""
+		if [ -n "$config_id" ]; then
+			sign_line="$sign_line${sep}\"setup\""
 		fi
 
-		sign_line="${sign_line};"
+		sign_line="$sign_line;"
 
-		cat << EOF >> ${its_file}
+		cat << EOF >> $its_file
                         signature-1 {
-                                algo = "${conf_csum},${conf_sign_algo}";
-                                key-name-hint = "${conf_sign_keyname}";
-				${sign_line}
+                                algo = "$conf_csum,$conf_sign_algo";
+                                key-name-hint = "$conf_sign_keyname";
+                                $sign_line
                         };
 EOF
 	fi
 
-	cat << EOF >> ${its_file}
+	cat << EOF >> $its_file
                 };
 EOF
 }
@@ -478,39 +478,24 @@
 	kernelcount=1
 	dtbcount=""
 	DTBS=""
-	ramdiskcount=${3}
+	ramdiskcount=$3
 	setupcount=""
 	bootscr_id=""
-	rm -f ${1} arch/${ARCH}/boot/${2}
+	rm -f $1 arch/${ARCH}/boot/$2
 
-	if [ ! -z "${UBOOT_SIGN_IMG_KEYNAME}" -a "${UBOOT_SIGN_KEYNAME}" = "${UBOOT_SIGN_IMG_KEYNAME}" ]; then
+	if [ -n "${UBOOT_SIGN_IMG_KEYNAME}" -a "${UBOOT_SIGN_KEYNAME}" = "${UBOOT_SIGN_IMG_KEYNAME}" ]; then
 		bbfatal "Keys used to sign images and configuration nodes must be different."
 	fi
 
-	fitimage_emit_fit_header ${1}
+	fitimage_emit_fit_header $1
 
 	#
 	# Step 1: Prepare a kernel image section.
 	#
-	fitimage_emit_section_maint ${1} imagestart
+	fitimage_emit_section_maint $1 imagestart
 
 	uboot_prep_kimage
-
-	if [ "${INITRAMFS_IMAGE_BUNDLE}" = "1" ]; then
-		initramfs_bundle_path="arch/"${UBOOT_ARCH}"/boot/"${KERNEL_IMAGETYPE_REPLACEMENT}".initramfs"
-		if [ -e "${initramfs_bundle_path}" ]; then
-
-			#
-			# Include the kernel/rootfs bundle.
-			#
-
-			fitimage_emit_section_kernel ${1} "${kernelcount}" "${initramfs_bundle_path}" "${linux_comp}"
-		else
-			bbwarn "${initramfs_bundle_path} not found."
-		fi
-	else
-		fitimage_emit_section_kernel ${1} "${kernelcount}" linux.bin "${linux_comp}"
-	fi
+	fitimage_emit_section_kernel $1 $kernelcount linux.bin "$linux_comp"
 
 	#
 	# Step 2: Prepare a DTB image section
@@ -519,9 +504,9 @@
 	if [ -n "${KERNEL_DEVICETREE}" ]; then
 		dtbcount=1
 		for DTB in ${KERNEL_DEVICETREE}; do
-			if echo ${DTB} | grep -q '/dts/'; then
-				bbwarn "${DTB} contains the full path to the the dts file, but only the dtb name should be used."
-				DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'`
+			if echo $DTB | grep -q '/dts/'; then
+				bbwarn "$DTB contains the full path to the the dts file, but only the dtb name should be used."
+				DTB=`basename $DTB | sed 's,\.dts$,.dtb,g'`
 			fi
 
 			# Skip ${DTB} if it's also provided in ${EXTERNAL_KERNEL_DEVICETREE}
@@ -529,23 +514,23 @@
 				continue
 			fi
 
-			DTB_PATH="arch/${ARCH}/boot/dts/${DTB}"
-			if [ ! -e "${DTB_PATH}" ]; then
-				DTB_PATH="arch/${ARCH}/boot/${DTB}"
+			DTB_PATH="arch/${ARCH}/boot/dts/$DTB"
+			if [ ! -e "$DTB_PATH" ]; then
+				DTB_PATH="arch/${ARCH}/boot/$DTB"
 			fi
 
-			DTB=$(echo "${DTB}" | tr '/' '_')
-			DTBS="${DTBS} ${DTB}"
-			fitimage_emit_section_dtb ${1} ${DTB} ${DTB_PATH}
+			DTB=$(echo "$DTB" | tr '/' '_')
+			DTBS="$DTBS $DTB"
+			fitimage_emit_section_dtb $1 $DTB $DTB_PATH
 		done
 	fi
 
 	if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ]; then
 		dtbcount=1
 		for DTB in $(find "${EXTERNAL_KERNEL_DEVICETREE}" \( -name '*.dtb' -o -name '*.dtbo' \) -printf '%P\n' | sort); do
-			DTB=$(echo "${DTB}" | tr '/' '_')
-			DTBS="${DTBS} ${DTB}"
-			fitimage_emit_section_dtb ${1} ${DTB} "${EXTERNAL_KERNEL_DEVICETREE}/${DTB}"
+			DTB=$(echo "$DTB" | tr '/' '_')
+			DTBS="$DTBS $DTB"
+			fitimage_emit_section_dtb $1 $DTB "${EXTERNAL_KERNEL_DEVICETREE}/$DTB"
 		done
 	fi
 
@@ -557,7 +542,7 @@
 		if [ -e "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY}" ]; then
 			cp ${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY} ${B}
 			bootscr_id="${UBOOT_ENV_BINARY}"
-			fitimage_emit_section_boot_script ${1} "${bootscr_id}" ${UBOOT_ENV_BINARY}
+			fitimage_emit_section_boot_script $1 "$bootscr_id" ${UBOOT_ENV_BINARY}
 		else
 			bbwarn "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY} not found."
 		fi
@@ -568,7 +553,7 @@
 	#
 	if [ -e arch/${ARCH}/boot/setup.bin ]; then
 		setupcount=1
-		fitimage_emit_section_setup ${1} "${setupcount}" arch/${ARCH}/boot/setup.bin
+		fitimage_emit_section_setup $1 $setupcount arch/${ARCH}/boot/setup.bin
 	fi
 
 	#
@@ -577,27 +562,30 @@
 	if [ "x${ramdiskcount}" = "x1" ] && [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then
 		# Find and use the first initramfs image archive type we find
 		for img in cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.zst cpio.gz ext2.gz cpio; do
-			initramfs_path="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.${img}"
-			echo "Using $initramfs_path"
-			if [ -e "${initramfs_path}" ]; then
-				fitimage_emit_section_ramdisk ${1} "${ramdiskcount}" "${initramfs_path}"
+			initramfs_path="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img"
+			echo -n "Searching for $initramfs_path..."
+			if [ -e "$initramfs_path" ]; then
+				echo "found"
+				fitimage_emit_section_ramdisk $1 "$ramdiskcount" "$initramfs_path"
 				break
+			else
+				echo "not found"
 			fi
 		done
 	fi
 
-	fitimage_emit_section_maint ${1} sectend
+	fitimage_emit_section_maint $1 sectend
 
 	# Force the first Kernel and DTB in the default config
 	kernelcount=1
-	if [ -n "${dtbcount}" ]; then
+	if [ -n "$dtbcount" ]; then
 		dtbcount=1
 	fi
 
 	#
 	# Step 6: Prepare a configurations section
 	#
-	fitimage_emit_section_maint ${1} confstart
+	fitimage_emit_section_maint $1 confstart
 
 	# kernel-fitimage.bbclass currently only supports a single kernel (no less or
 	# more) to be added to the FIT image along with 0 or more device trees and
@@ -608,33 +596,33 @@
 	# the default configuration to be used is based on the dtbcount. If there is
 	# no dtb present than select the default configuation to be based on
 	# the kernelcount.
-	if [ -n "${DTBS}" ]; then
+	if [ -n "$DTBS" ]; then
 		i=1
 		for DTB in ${DTBS}; do
 			dtb_ext=${DTB##*.}
-			if [ "${dtb_ext}" = "dtbo" ]; then
-				fitimage_emit_section_config ${1} "" "${DTB}" "" "${bootscr_id}" "" "`expr ${i} = ${dtbcount}`"
+			if [ "$dtb_ext" = "dtbo" ]; then
+				fitimage_emit_section_config $1 "" "$DTB" "" "$bootscr_id" "" "`expr $i = $dtbcount`"
 			else
-				fitimage_emit_section_config ${1} "${kernelcount}" "${DTB}" "${ramdiskcount}" "${bootscr_id}" "${setupcount}" "`expr ${i} = ${dtbcount}`"
+				fitimage_emit_section_config $1 $kernelcount "$DTB" "$ramdiskcount" "$bootscr_id" "$setupcount" "`expr $i = $dtbcount`"
 			fi
-			i=`expr ${i} + 1`
+			i=`expr $i + 1`
 		done
 	else
 		defaultconfigcount=1
-		fitimage_emit_section_config ${1} "${kernelcount}" "" "${ramdiskcount}" "${bootscr_id}"  "${setupcount}" "${defaultconfigcount}"
+		fitimage_emit_section_config $1 $kernelcount "" "$ramdiskcount" "$bootscr_id"  "$setupcount" $defaultconfigcount
 	fi
 
-	fitimage_emit_section_maint ${1} sectend
+	fitimage_emit_section_maint $1 sectend
 
-	fitimage_emit_section_maint ${1} fitend
+	fitimage_emit_section_maint $1 fitend
 
 	#
 	# Step 7: Assemble the image
 	#
 	${UBOOT_MKIMAGE} \
 		${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
-		-f ${1} \
-		arch/${ARCH}/boot/${2}
+		-f $1 \
+		arch/${ARCH}/boot/$2
 
 	#
 	# Step 8: Sign the image and add public key to U-Boot dtb
@@ -651,7 +639,7 @@
 			${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
 			-F -k "${UBOOT_SIGN_KEYDIR}" \
 			$add_key_to_u_boot \
-			-r arch/${ARCH}/boot/${2} \
+			-r arch/${ARCH}/boot/$2 \
 			${UBOOT_MKIMAGE_SIGN_ARGS}
 	fi
 }
@@ -659,7 +647,7 @@
 do_assemble_fitimage() {
 	if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage"; then
 		cd ${B}
-		fitimage_assemble fit-image.its fitImage
+		fitimage_assemble fit-image.its fitImage ""
 	fi
 }
 
diff --git a/poky/meta/classes/kernel-yocto.bbclass b/poky/meta/classes/kernel-yocto.bbclass
index 549dfd9..1d5a8cd 100644
--- a/poky/meta/classes/kernel-yocto.bbclass
+++ b/poky/meta/classes/kernel-yocto.bbclass
@@ -36,7 +36,10 @@
             if subdir == patchdir:
                 patch_list.append(local)
         else:
-            patch_list.append(local)
+            # skip the patch if a patchdir was supplied, it won't be handled
+            # properly
+            if not patchdir:
+                patch_list.append(local)
 
     return patch_list
 
diff --git a/poky/meta/classes/kernel.bbclass b/poky/meta/classes/kernel.bbclass
index 4acec18..7b3c6be 100644
--- a/poky/meta/classes/kernel.bbclass
+++ b/poky/meta/classes/kernel.bbclass
@@ -226,8 +226,8 @@
 # Some Linux kernel configurations need additional parameters on the command line
 KERNEL_EXTRA_ARGS ?= ""
 
-EXTRA_OEMAKE = " HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}""
-EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}""
+EXTRA_OEMAKE = " HOSTCC="${BUILD_CC}" HOSTCFLAGS="${BUILD_CFLAGS}" HOSTLDFLAGS="${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}""
+EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX}" HOSTCXXFLAGS="${BUILD_CXXFLAGS}""
 
 KERNEL_ALT_IMAGETYPE ??= ""
 
@@ -322,9 +322,11 @@
 
 addtask bundle_initramfs after do_install before do_deploy
 
+KERNEL_DEBUG_TIMESTAMPS ??= "0"
+
 kernel_do_compile() {
 	unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE
-	if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
+	if [ "${KERNEL_DEBUG_TIMESTAMPS}" != "1" ]; then
 		# kernel sources do not use do_unpack, so SOURCE_DATE_EPOCH may not
 		# be set....
 		if [ "${SOURCE_DATE_EPOCH}" = "" -o "${SOURCE_DATE_EPOCH}" = "0" ]; then
@@ -364,7 +366,7 @@
 
 do_compile_kernelmodules() {
 	unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE
-	if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
+	if [ "${KERNEL_DEBUG_TIMESTAMPS}" != "1" ]; then
 		# kernel sources do not use do_unpack, so SOURCE_DATE_EPOCH may not
 		# be set....
 		if [ "${SOURCE_DATE_EPOCH}" = "" -o "${SOURCE_DATE_EPOCH}" = "0" ]; then
diff --git a/poky/meta/classes/license.bbclass b/poky/meta/classes/license.bbclass
index 45d9127..d5480d8 100644
--- a/poky/meta/classes/license.bbclass
+++ b/poky/meta/classes/license.bbclass
@@ -29,6 +29,7 @@
     with open(os.path.join(destdir, "recipeinfo"), "w") as f:
         for key in sorted(info.keys()):
             f.write("%s: %s\n" % (key, info[key]))
+    oe.qa.exit_if_errors(d)
 }
 
 PSEUDO_IGNORE_PATHS .= ",${@','.join(((d.getVar('COMMON_LICENSE_DIR') or '') + ' ' + (d.getVar('LICENSE_PATH') or '') + ' ' + d.getVar('COREBASE') + '/meta/COPYING').split())}"
@@ -145,6 +146,10 @@
             find_license(node.s.replace("+", "").replace("*", ""))
             self.generic_visit(node)
 
+        def visit_Constant(self, node):
+            find_license(node.value.replace("+", "").replace("*", ""))
+            self.generic_visit(node)
+
     def find_license(license_type):
         try:
             bb.utils.mkdirhier(gen_lic_dest)
@@ -178,7 +183,8 @@
             # The user may attempt to use NO_GENERIC_LICENSE for a generic license which doesn't make sense
             # and should not be allowed, warn the user in this case.
             if d.getVarFlag('NO_GENERIC_LICENSE', license_type):
-                bb.warn("%s: %s is a generic license, please don't use NO_GENERIC_LICENSE for it." % (pn, license_type))
+                oe.qa.handle_error("license-no-generic",
+                    "%s: %s is a generic license, please don't use NO_GENERIC_LICENSE for it." % (pn, license_type), d)
 
         elif non_generic_lic and non_generic_lic in lic_chksums:
             # if NO_GENERIC_LICENSE is set, we copy the license files from the fetched source
@@ -190,7 +196,8 @@
             # Add explicity avoid of CLOSED license because this isn't generic
             if license_type != 'CLOSED':
                 # And here is where we warn people that their licenses are lousy
-                bb.warn("%s: No generic license file exists for: %s in any provider" % (pn, license_type))
+                oe.qa.handle_error("license-exists",
+                    "%s: No generic license file exists for: %s in any provider" % (pn, license_type), d)
             pass
 
     if not generic_directory:
@@ -215,7 +222,8 @@
     except oe.license.InvalidLicense as exc:
         bb.fatal('%s: %s' % (d.getVar('PF'), exc))
     except SyntaxError:
-        bb.warn("%s: Failed to parse it's LICENSE field." % (d.getVar('PF')))
+        oe.qa.handle_error("license-syntax",
+            "%s: Failed to parse it's LICENSE field." % (d.getVar('PF')), d)
     # Add files from LIC_FILES_CHKSUM to list of license files
     lic_chksum_paths = defaultdict(OrderedDict)
     for path, data in sorted(lic_chksums.items()):
@@ -406,14 +414,16 @@
     for pos, element in enumerate(elements):
         if license_pattern.match(element):
             if pos > 0 and license_pattern.match(elements[pos - 1]):
-                bb.warn('%s: LICENSE value "%s" has an invalid format - license names ' \
+                oe.qa.handle_error('license-format',
+                        '%s: LICENSE value "%s" has an invalid format - license names ' \
                         'must be separated by the following characters to indicate ' \
                         'the license selection: %s' %
-                        (pn, licenses, license_operator_chars))
+                        (pn, licenses, license_operator_chars), d)
         elif not license_operator.match(element):
-            bb.warn('%s: LICENSE value "%s" has an invalid separator "%s" that is not ' \
+            oe.qa.handle_error('license-format',
+                    '%s: LICENSE value "%s" has an invalid separator "%s" that is not ' \
                     'in the valid list of separators (%s)' %
-                    (pn, licenses, element, license_operator_chars))
+                    (pn, licenses, element, license_operator_chars), d)
 
 SSTATETASKS += "do_populate_lic"
 do_populate_lic[sstate-inputdirs] = "${LICSSTATEDIR}"
diff --git a/poky/meta/classes/license_image.bbclass b/poky/meta/classes/license_image.bbclass
index 5490d12..bf70bee 100644
--- a/poky/meta/classes/license_image.bbclass
+++ b/poky/meta/classes/license_image.bbclass
@@ -75,7 +75,7 @@
                 pkg_dic[pkg]["LICENSES"] = re.sub(r'  *', ' ', pkg_dic[pkg]["LICENSES"])
                 pkg_dic[pkg]["LICENSES"] = pkg_dic[pkg]["LICENSES"].split()
                 if pkg in whitelist:
-                    bb.warn("Including %s with an incompatible license %s into the image, because it has been whitelisted." %(pkg, pkg_dic[pkg]["LICENSE"]))
+                    oe.qa.handle_error('license-incompatible', "Including %s with an incompatible license %s into the image, because it has been whitelisted." %(pkg, pkg_dic[pkg]["LICENSE"]), d)
 
             if not "IMAGE_MANIFEST" in pkg_dic[pkg]:
                 # Rootfs manifest
@@ -105,10 +105,10 @@
                    continue
 
                 if not os.path.exists(lic_file):
-                   bb.warn("The license listed %s was not in the "\ 
-                            "licenses collected for recipe %s" 
-                            % (lic, pkg_dic[pkg]["PN"]))
-
+                    oe.qa.handle_error('license-file-missing',
+                                       "The license listed %s was not in the "\
+                                       "licenses collected for recipe %s"
+                                       % (lic, pkg_dic[pkg]["PN"]), d)
     # Two options here:
     # - Just copy the manifest
     # - Copy the manifest and the license directories
@@ -274,6 +274,7 @@
 
 python do_populate_lic_deploy() {
     license_deployed_manifest(d)
+    oe.qa.exit_if_errors(d)
 }
 
 addtask populate_lic_deploy before do_build after do_image_complete
diff --git a/poky/meta/classes/meson.bbclass b/poky/meta/classes/meson.bbclass
index e124d18..da58cb4 100644
--- a/poky/meta/classes/meson.bbclass
+++ b/poky/meta/classes/meson.bbclass
@@ -103,6 +103,16 @@
     # https://github.com/mesonbuild/meson/commit/ef9aeb188ea2bc7353e59916c18901cde90fa2b3
     unset LD
 
+    # sstate.bbclass no longer removes empty directories to avoid a race (see
+    # commit 4f94d929 "sstate/staging: Handle directory creation race issue").
+    # Unfortunately Python apparently treats an empty egg-info directory as if
+    # the version it previously contained still exists and fails if a newer
+    # version is required, which Meson does. To avoid this, make sure there are
+    # no empty egg-info directories from previous versions left behind. Ignore
+    # all errors from rmdir since the egg-info may be a file rather than a
+    # directory.
+    rmdir ${STAGING_LIBDIR_NATIVE}/${PYTHON_DIR}/site-packages/*.egg-info 2>/dev/null || :
+
     # Work around "Meson fails if /tmp is mounted with noexec #2972"
     mkdir -p "${B}/meson-private/tmp"
     export TMPDIR="${B}/meson-private/tmp"
diff --git a/poky/meta/classes/mirrors.bbclass b/poky/meta/classes/mirrors.bbclass
index ba325a6..1afce92 100644
--- a/poky/meta/classes/mirrors.bbclass
+++ b/poky/meta/classes/mirrors.bbclass
@@ -29,7 +29,6 @@
 ftp://dante.ctan.org/tex-archive http://sunsite.sut.ac.jp/pub/archives/ctan/ \n \
 ftp://dante.ctan.org/tex-archive http://ctan.unsw.edu.au/ \n \
 ftp://ftp.gnutls.org/gcrypt/gnutls ${GNUPG_MIRROR}/gnutls \n \
-http://ftp.info-zip.org/pub/infozip/src/ http://mirror.switch.ch/ftp/mirror/infozip/src/ \n \
 http://ftp.info-zip.org/pub/infozip/src/ ftp://sunsite.icm.edu.pl/pub/unix/archiving/info-zip/src/ \n \
 http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/ http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/OLD/ \n \
 ${APACHE_MIRROR}  http://www.us.apache.org/dist \n \
diff --git a/poky/meta/classes/multilib.bbclass b/poky/meta/classes/multilib.bbclass
index b210c49..73ad2ab 100644
--- a/poky/meta/classes/multilib.bbclass
+++ b/poky/meta/classes/multilib.bbclass
@@ -210,7 +210,7 @@
         if len(candidates) > 0:
             msg = "%s package %s - suspicious values '%s' in %s" \
                    % (d.getVar('PN'), pkg, ' '.join(candidates), var)
-            package_qa_handle_error("multilib", msg, d)
+            oe.qa.handle_error("multilib", msg, d)
 
     ml = d.getVar('MLPREFIX')
     if not ml:
@@ -228,4 +228,5 @@
         check_mlprefix(pkg, 'RSUGGESTS', ml)
         check_mlprefix(pkg, 'RREPLACES', ml)
         check_mlprefix(pkg, 'RCONFLICTS', ml)
+    oe.qa.exit_if_errors(d)
 }
diff --git a/poky/meta/classes/nativesdk.bbclass b/poky/meta/classes/nativesdk.bbclass
index c66de8c..14e2105 100644
--- a/poky/meta/classes/nativesdk.bbclass
+++ b/poky/meta/classes/nativesdk.bbclass
@@ -31,7 +31,7 @@
 DEPENDS:append = " chrpath-replacement-native"
 EXTRANATIVEPATH += "chrpath-native"
 
-PKGDATA_DIR = "${TMPDIR}/pkgdata/${SDK_SYS}"
+PKGDATA_DIR = "${PKGDATA_DIR_SDK}"
 
 HOST_ARCH = "${SDK_ARCH}"
 HOST_VENDOR = "${SDK_VENDOR}"
diff --git a/poky/meta/classes/npm.bbclass b/poky/meta/classes/npm.bbclass
index 91a2321..ba50fca 100644
--- a/poky/meta/classes/npm.bbclass
+++ b/poky/meta/classes/npm.bbclass
@@ -22,8 +22,12 @@
 DEPENDS:prepend = "nodejs-native "
 RDEPENDS:${PN}:append:class-target = " nodejs"
 
+EXTRA_OENPM = ""
+
 NPM_INSTALL_DEV ?= "0"
 
+NPM_NODEDIR ?= "${RECIPE_SYSROOT_NATIVE}${prefix_native}"
+
 def npm_target_arch_map(target_arch):
     """Maps arch names to npm arch names"""
     import re
@@ -57,8 +61,8 @@
     """Run 'npm pack' on a specified directory"""
     import shlex
     cmd = "npm pack %s" % shlex.quote(srcdir)
-    configs = [("ignore-scripts", "true")]
-    tarball = env.run(cmd, configs=configs, workdir=workdir).strip("\n")
+    args = [("ignore-scripts", "true")]
+    tarball = env.run(cmd, args=args, workdir=workdir).strip("\n")
     return os.path.join(workdir, tarball)
 
 python npm_do_configure() {
@@ -224,15 +228,11 @@
 
     bb.utils.remove(d.getVar("NPM_BUILD"), recurse=True)
 
-    env = NpmEnvironment(d, configs=npm_global_configs(d))
-
-    dev = bb.utils.to_boolean(d.getVar("NPM_INSTALL_DEV"), False)
-
     with tempfile.TemporaryDirectory() as tmpdir:
         args = []
-        configs = []
+        configs = npm_global_configs(d)
 
-        if dev:
+        if bb.utils.to_boolean(d.getVar("NPM_INSTALL_DEV"), False):
             configs.append(("also", "development"))
         else:
             configs.append(("only", "production"))
@@ -247,20 +247,19 @@
         # Add node-gyp configuration
         configs.append(("arch", d.getVar("NPM_ARCH")))
         configs.append(("release", "true"))
-        nodedir = d.getVar("NPM_NODEDIR")
-        if not nodedir:
-            sysroot = d.getVar("RECIPE_SYSROOT_NATIVE")
-            nodedir = os.path.join(sysroot, d.getVar("prefix_native").strip("/"))
-        configs.append(("nodedir", nodedir))
+        configs.append(("nodedir", d.getVar("NPM_NODEDIR")))
         configs.append(("python", d.getVar("PYTHON")))
 
+        env = NpmEnvironment(d, configs)
+
         # Add node-pre-gyp configuration
         args.append(("target_arch", d.getVar("NPM_ARCH")))
         args.append(("build-from-source", "true"))
 
         # Pack and install the main package
         tarball = npm_pack(env, d.getVar("NPM_PACKAGE"), tmpdir)
-        env.run("npm install %s" % shlex.quote(tarball), args=args, configs=configs)
+        cmd = "npm install %s %s" % (shlex.quote(tarball), d.getVar("EXTRA_OENPM"))
+        env.run(cmd, args=args)
 }
 
 npm_do_install() {
diff --git a/poky/meta/classes/package.bbclass b/poky/meta/classes/package.bbclass
index 985dfac..92eba98 100644
--- a/poky/meta/classes/package.bbclass
+++ b/poky/meta/classes/package.bbclass
@@ -41,8 +41,6 @@
 inherit packagedata
 inherit chrpath
 inherit package_pkgdata
-
-# Need the package_qa_handle_error() in insane.bbclass
 inherit insane
 
 PKGD    = "${WORKDIR}/package"
@@ -865,7 +863,7 @@
                 self._setdir(lsplit[0], lsplit[1], lsplit[2], lsplit[3], lsplit[4], lsplit[5], lsplit[6], lsplit[7])
             else:
                 msg = "Fixup Perms: invalid config line %s" % line
-                package_qa_handle_error("perm-config", msg, d)
+                oe.qa.handle_error("perm-config", msg, d)
                 self.path = None
                 self.link = None
 
@@ -1005,7 +1003,7 @@
                     continue
                 if len(lsplit) != 8 and not (len(lsplit) == 3 and lsplit[1].lower() == "link"):
                     msg = "Fixup perms: %s invalid line: %s" % (conf, line)
-                    package_qa_handle_error("perm-line", msg, d)
+                    oe.qa.handle_error("perm-line", msg, d)
                     continue
                 entry = fs_perms_entry(d.expand(line))
                 if entry and entry.path:
@@ -1042,7 +1040,7 @@
             ptarget = os.path.join(os.path.dirname(dir), link)
         if os.path.exists(target):
             msg = "Fixup Perms: Unable to correct directory link, target already exists: %s -> %s" % (dir, ptarget)
-            package_qa_handle_error("perm-link", msg, d)
+            oe.qa.handle_error("perm-link", msg, d)
             continue
 
         # Create path to move directory to, move it, and then setup the symlink
@@ -1202,7 +1200,7 @@
                         bb.note("Skipping file %s from %s for already-stripped QA test" % (file[len(dvar):], pn))
                     else:
                         msg = "File '%s' from %s was already stripped, this will prevent future debugging!" % (file[len(dvar):], pn)
-                        package_qa_handle_error("already-stripped", msg, d)
+                        oe.qa.handle_error("already-stripped", msg, d)
                     continue
 
                 # At this point we have an unstripped elf file. We need to:
@@ -1362,7 +1360,7 @@
     for i, pkg in enumerate(packages):
         if pkg in package_dict:
             msg = "%s is listed in PACKAGES multiple times, this leads to packaging errors." % pkg
-            package_qa_handle_error("packages-list", msg, d)
+            oe.qa.handle_error("packages-list", msg, d)
         # Ensure the source package gets the chance to pick up the source files
         # before the debug package by ordering it first in PACKAGES. Whether it
         # actually picks up any source files is controlled by
@@ -1399,7 +1397,7 @@
         filesvar = d.getVar('FILES:%s' % pkg) or ""
         if "//" in filesvar:
             msg = "FILES variable for package %s contains '//' which is invalid. Attempting to fix this but you should correct the metadata.\n" % pkg
-            package_qa_handle_error("files-invalid", msg, d)
+            oe.qa.handle_error("files-invalid", msg, d)
             filesvar.replace("//", "/")
 
         origfiles = filesvar.split()
@@ -1468,7 +1466,7 @@
         licenses = d.getVar('LICENSE_EXCLUSION-' + pkg)
         if licenses:
             msg = "Excluding %s from packaging as it has incompatible license(s): %s" % (pkg, licenses)
-            package_qa_handle_error("incompatible-license", msg, d)
+            oe.qa.handle_error("incompatible-license", msg, d)
         else:
             package_list.append(pkg)
     d.setVar('PACKAGES', ' '.join(package_list))
@@ -1492,7 +1490,7 @@
                 msg = msg + "\n  " + f
             msg = msg + "\nPlease set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.\n"
             msg = msg + "%s: %d installed and not shipped files." % (pn, len(unshipped))
-            package_qa_handle_error("installed-vs-shipped", msg, d)
+            oe.qa.handle_error("installed-vs-shipped", msg, d)
 }
 populate_packages[dirs] = "${D}"
 
@@ -1838,7 +1836,7 @@
     ver = d.getVar('PKGV')
     if not ver:
         msg = "PKGV not defined"
-        package_qa_handle_error("pkgv-undefined", msg, d)
+        oe.qa.handle_error("pkgv-undefined", msg, d)
         return
 
     pkgdest = d.getVar('PKGDEST')
@@ -2402,7 +2400,7 @@
 
     if not workdir or not outdir or not dest or not dvar or not pn:
         msg = "WORKDIR, DEPLOY_DIR, D, PN and PKGD all must be defined, unable to package"
-        package_qa_handle_error("var-undefined", msg, d)
+        oe.qa.handle_error("var-undefined", msg, d)
         return
 
     bb.build.exec_func("package_convert_pr_autoinc", d)
@@ -2455,9 +2453,7 @@
     for f in (d.getVar('PACKAGEFUNCS') or '').split():
         bb.build.exec_func(f, d)
 
-    qa_sane = d.getVar("QA_SANE")
-    if not qa_sane:
-        bb.fatal("Fatal QA errors found, failing task.")
+    oe.qa.exit_if_errors(d)
 }
 
 do_package[dirs] = "${SHLIBSWORKDIR} ${PKGDESTWORK} ${D}"
diff --git a/poky/meta/classes/package_deb.bbclass b/poky/meta/classes/package_deb.bbclass
index 65dbe6c..1ae6393 100644
--- a/poky/meta/classes/package_deb.bbclass
+++ b/poky/meta/classes/package_deb.bbclass
@@ -315,8 +315,7 @@
 do_package_write_deb[dirs] = "${PKGWRITEDIRDEB}"
 do_package_write_deb[cleandirs] = "${PKGWRITEDIRDEB}"
 do_package_write_deb[depends] += "${@oe.utils.build_depends_string(d.getVar('PACKAGE_WRITE_DEPS'), 'do_populate_sysroot')}"
-EPOCHTASK ??= ""
-addtask package_write_deb after do_packagedata do_package ${EPOCHTASK} before do_build
+addtask package_write_deb after do_packagedata do_package do_deploy_source_date_epoch before do_build
 
 PACKAGEINDEXDEPS += "dpkg-native:do_populate_sysroot"
 PACKAGEINDEXDEPS += "apt-native:do_populate_sysroot"
diff --git a/poky/meta/classes/package_ipk.bbclass b/poky/meta/classes/package_ipk.bbclass
index 776fe8e..902b7f9 100644
--- a/poky/meta/classes/package_ipk.bbclass
+++ b/poky/meta/classes/package_ipk.bbclass
@@ -274,8 +274,7 @@
 do_package_write_ipk[dirs] = "${PKGWRITEDIRIPK}"
 do_package_write_ipk[cleandirs] = "${PKGWRITEDIRIPK}"
 do_package_write_ipk[depends] += "${@oe.utils.build_depends_string(d.getVar('PACKAGE_WRITE_DEPS'), 'do_populate_sysroot')}"
-EPOCHTASK ??= ""
-addtask package_write_ipk after do_packagedata do_package ${EPOCHTASK} before do_build
+addtask package_write_ipk after do_packagedata do_package do_deploy_source_date_epoch before do_build
 
 PACKAGEINDEXDEPS += "opkg-utils-native:do_populate_sysroot"
 PACKAGEINDEXDEPS += "opkg-native:do_populate_sysroot"
diff --git a/poky/meta/classes/package_rpm.bbclass b/poky/meta/classes/package_rpm.bbclass
index 1c62d82..b075442 100644
--- a/poky/meta/classes/package_rpm.bbclass
+++ b/poky/meta/classes/package_rpm.bbclass
@@ -684,8 +684,8 @@
     cmd = cmd + " --define '_use_internal_dependency_generator 0'"
     cmd = cmd + " --define '_binaries_in_noarch_packages_terminate_build 0'"
     cmd = cmd + " --define '_build_id_links none'"
-    cmd = cmd + " --define '_binary_payload w6T%d.xzdio'" % int(d.getVar("XZ_THREADS"))
-    cmd = cmd + " --define '_source_payload w6T%d.xzdio'" % int(d.getVar("XZ_THREADS"))
+    cmd = cmd + " --define '_binary_payload w19T%d.zstdio'" % int(d.getVar("ZSTD_THREADS"))
+    cmd = cmd + " --define '_source_payload w19T%d.zstdio'" % int(d.getVar("ZSTD_THREADS"))
     cmd = cmd + " --define 'clamp_mtime_to_source_date_epoch 1'"
     cmd = cmd + " --define 'use_source_date_epoch_as_buildtime 1'"
     cmd = cmd + " --define '_buildhost reproducible'"
@@ -748,8 +748,7 @@
 do_package_write_rpm[dirs] = "${PKGWRITEDIRRPM}"
 do_package_write_rpm[cleandirs] = "${PKGWRITEDIRRPM}"
 do_package_write_rpm[depends] += "${@oe.utils.build_depends_string(d.getVar('PACKAGE_WRITE_DEPS'), 'do_populate_sysroot')}"
-EPOCHTASK ??= ""
-addtask package_write_rpm after do_packagedata do_package ${EPOCHTASK} before do_build
+addtask package_write_rpm after do_packagedata do_package do_deploy_source_date_epoch before do_build
 
 PACKAGEINDEXDEPS += "rpm-native:do_populate_sysroot"
 PACKAGEINDEXDEPS += "createrepo-c-native:do_populate_sysroot"
diff --git a/poky/meta/classes/patch.bbclass b/poky/meta/classes/patch.bbclass
index 388773a..8de7025 100644
--- a/poky/meta/classes/patch.bbclass
+++ b/poky/meta/classes/patch.bbclass
@@ -131,6 +131,9 @@
             patchdir = parm["patchdir"]
             if not os.path.isabs(patchdir):
                 patchdir = os.path.join(s, patchdir)
+            if not os.path.isdir(patchdir):
+                bb.fatal("Target directory '%s' not found, patchdir '%s' is incorrect in patch file '%s'" %
+                    (patchdir, parm["patchdir"], parm['patchname']))
         else:
             patchdir = s
 
@@ -147,12 +150,12 @@
             patchset.Import({"file":local, "strippath": parm['striplevel']}, True)
         except Exception as exc:
             bb.utils.remove(process_tmpdir, True)
-            bb.fatal(str(exc))
+            bb.fatal("Importing patch '%s' with striplevel '%s'\n%s" % (parm['patchname'], parm['striplevel'], repr(exc).replace("\\n", "\n")))
         try:
             resolver.Resolve()
         except bb.BBHandledException as e:
             bb.utils.remove(process_tmpdir, True)
-            bb.fatal(str(e))
+            bb.fatal("Applying patch '%s' on target directory '%s'\n%s" % (parm['patchname'], patchdir, repr(e).replace("\\n", "\n")))
 
     bb.utils.remove(process_tmpdir, True)
     del os.environ['TMPDIR']
diff --git a/poky/meta/classes/populate_sdk_base.bbclass b/poky/meta/classes/populate_sdk_base.bbclass
index 49e166e..fafdd96 100644
--- a/poky/meta/classes/populate_sdk_base.bbclass
+++ b/poky/meta/classes/populate_sdk_base.bbclass
@@ -179,6 +179,10 @@
 do_populate_sdk[sstate-inputdirs] = "${SDKDEPLOYDIR}"
 do_populate_sdk[sstate-outputdirs] = "${SDK_DEPLOY}"
 do_populate_sdk[stamp-extra-info] = "${MACHINE_ARCH}${SDKMACHINE}"
+python do_populate_sdk_setscene () {
+    sstate_setscene(d)
+}
+addtask do_populate_sdk_setscene
 
 PSEUDO_IGNORE_PATHS .= ",${SDKDEPLOYDIR},${WORKDIR}/oe-sdk-repo,${WORKDIR}/sstate-build-populate_sdk"
 
diff --git a/poky/meta/classes/populate_sdk_ext.bbclass b/poky/meta/classes/populate_sdk_ext.bbclass
index 3567920..9187f53 100644
--- a/poky/meta/classes/populate_sdk_ext.bbclass
+++ b/poky/meta/classes/populate_sdk_ext.bbclass
@@ -550,7 +550,7 @@
     # We don't need sstate do_package files
     for root, dirs, files in os.walk(sstate_out):
         for name in files:
-            if name.endswith("_package.tgz"):
+            if name.endswith("_package.tar.zst"):
                 f = os.path.join(root, name)
                 os.remove(f)
 
diff --git a/poky/meta/classes/ptest.bbclass b/poky/meta/classes/ptest.bbclass
index 77614ae..1ec23c0 100644
--- a/poky/meta/classes/ptest.bbclass
+++ b/poky/meta/classes/ptest.bbclass
@@ -129,4 +129,4 @@
 
     enabled_ptests = " ".join([d.getVar('PTESTS_FAST'), d.getVar('PTESTS_SLOW'), d.getVar('PTESTS_PROBLEMS')]).split()
     if (pn + "-ptest").replace(d.getVar('MLPREFIX'), '') not in enabled_ptests:
-        package_qa_handle_error("missing-ptest", "supports ptests but is not included in oe-core's ptest-packagelists.inc", d)
+        oe.qa.handle_error("missing-ptest", "supports ptests but is not included in oe-core's ptest-packagelists.inc", d)
diff --git a/poky/meta/classes/python3-dir.bbclass b/poky/meta/classes/python3-dir.bbclass
index f51f971..ff03e58 100644
--- a/poky/meta/classes/python3-dir.bbclass
+++ b/poky/meta/classes/python3-dir.bbclass
@@ -1,4 +1,4 @@
-PYTHON_BASEVERSION = "3.9"
+PYTHON_BASEVERSION = "3.10"
 PYTHON_ABI = ""
 PYTHON_DIR = "python${PYTHON_BASEVERSION}"
 PYTHON_PN = "python3"
diff --git a/poky/meta/classes/reproducible_build.bbclass b/poky/meta/classes/reproducible_build.bbclass
deleted file mode 100644
index 7571c11..0000000
--- a/poky/meta/classes/reproducible_build.bbclass
+++ /dev/null
@@ -1,147 +0,0 @@
-# reproducible_build.bbclass
-#
-# Sets the default SOURCE_DATE_EPOCH in each component's build environment.
-# The format is number of seconds since the system epoch.
-#
-# Upstream components (generally) respect this environment variable,
-# using it in place of the "current" date and time.
-# See https://reproducible-builds.org/specs/source-date-epoch/
-#
-# The default value of SOURCE_DATE_EPOCH comes from the function
-# get_source_date_epoch_value which reads from the SDE_FILE, or if the file
-# is not available (or set to 0) will use the fallback of
-# SOURCE_DATE_EPOCH_FALLBACK.
-#
-# The SDE_FILE is normally constructed from the function
-# create_source_date_epoch_stamp which is typically added as a postfuncs to
-# the do_unpack task.  If a recipe does NOT have do_unpack, it should be added
-# to a task that runs after the source is available and before the
-# do_deploy_source_date_epoch task is executed.
-#
-# If a recipe wishes to override the default behavior it should set it's own
-# SOURCE_DATE_EPOCH or override the do_deploy_source_date_epoch_stamp task
-# with recipe-specific functionality to write the appropriate
-# SOURCE_DATE_EPOCH into the SDE_FILE.
-#
-# SOURCE_DATE_EPOCH is intended to be a reproducible value.  This value should
-# be reproducible for anyone who builds the same revision from the same
-# sources.
-#
-# There are 4 ways the create_source_date_epoch_stamp function determines what
-# becomes SOURCE_DATE_EPOCH:
-#
-# 1. Use the value from __source_date_epoch.txt file if this file exists.
-#    This file was most likely created in the previous build by one of the
-#    following methods 2,3,4.
-#    Alternatively, it can be provided by a recipe via SRC_URI.
-#
-# If the file does not exist:
-#
-# 2. If there is a git checkout, use the last git commit timestamp.
-#    Git does not preserve file timestamps on checkout.
-#
-# 3. Use the mtime of "known" files such as NEWS, CHANGLELOG, ...
-#    This works for well-kept repositories distributed via tarball.
-#
-# 4. Use the modification time of the youngest file in the source tree, if
-#    there is one.
-#    This will be the newest file from the distribution tarball, if any.
-#
-# 5. Fall back to a fixed timestamp (SOURCE_DATE_EPOCH_FALLBACK).
-#
-# Once the value is determined, it is stored in the recipe's SDE_FILE.
-
-BUILD_REPRODUCIBLE_BINARIES ??= '1'
-inherit reproducible_build_simple
-
-SDE_DIR = "${WORKDIR}/source-date-epoch"
-SDE_FILE = "${SDE_DIR}/__source_date_epoch.txt"
-SDE_DEPLOYDIR = "${WORKDIR}/deploy-source-date-epoch"
-
-# Enable compiler warning when the __TIME__, __DATE__ and __TIMESTAMP__ macros are used.
-TARGET_CC_ARCH:append:class-target = " -Wdate-time"
-
-# A SOURCE_DATE_EPOCH of '0' might be misinterpreted as no SDE
-export SOURCE_DATE_EPOCH_FALLBACK ??= "1302044400"
-
-SSTATETASKS += "do_deploy_source_date_epoch"
-
-do_deploy_source_date_epoch () {
-    mkdir -p ${SDE_DEPLOYDIR}
-    if [ -e ${SDE_FILE} ]; then
-        echo "Deploying SDE from ${SDE_FILE} -> ${SDE_DEPLOYDIR}."
-        cp -p ${SDE_FILE} ${SDE_DEPLOYDIR}/__source_date_epoch.txt
-    else
-        echo "${SDE_FILE} not found!"
-    fi
-}
-
-python do_deploy_source_date_epoch_setscene () {
-    sstate_setscene(d)
-    bb.utils.mkdirhier(d.getVar('SDE_DIR'))
-    sde_file = os.path.join(d.getVar('SDE_DEPLOYDIR'), '__source_date_epoch.txt')
-    if os.path.exists(sde_file):
-        target = d.getVar('SDE_FILE')
-        bb.debug(1, "Moving setscene SDE file %s -> %s" % (sde_file, target))
-        bb.utils.rename(sde_file, target)
-    else:
-        bb.debug(1, "%s not found!" % sde_file)
-}
-
-do_deploy_source_date_epoch[dirs] = "${SDE_DEPLOYDIR}"
-do_deploy_source_date_epoch[sstate-plaindirs] = "${SDE_DEPLOYDIR}"
-addtask do_deploy_source_date_epoch_setscene
-addtask do_deploy_source_date_epoch before do_configure after do_patch
-
-python create_source_date_epoch_stamp() {
-    import oe.reproducible
-
-    epochfile = d.getVar('SDE_FILE')
-    tmp_file = "%s.new" % epochfile
-
-    source_date_epoch = oe.reproducible.get_source_date_epoch(d, d.getVar('S'))
-
-    bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch)
-    bb.utils.mkdirhier(d.getVar('SDE_DIR'))
-    with open(tmp_file, 'w') as f:
-        f.write(str(source_date_epoch))
-
-    os.rename(tmp_file, epochfile)
-}
-
-EPOCHTASK = "do_deploy_source_date_epoch"
-
-# Generate the stamp after do_unpack runs
-do_unpack[postfuncs] += "create_source_date_epoch_stamp"
-
-def get_source_date_epoch_value(d):
-    epochfile = d.getVar('SDE_FILE')
-    cached, efile = d.getVar('__CACHED_SOURCE_DATE_EPOCH') or (None, None)
-    if cached and efile == epochfile:
-        return cached
-
-    if cached and epochfile != efile:
-        bb.debug(1, "Epoch file changed from %s to %s" % (efile, epochfile))
-
-    source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK'))
-    try:
-        with open(epochfile, 'r') as f:
-            s = f.read()
-            try:
-                source_date_epoch = int(s)
-                # workaround for old sstate with SDE_FILE content being 0 - use SOURCE_DATE_EPOCH_FALLBACK
-                if source_date_epoch == 0 :
-                    source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK'))
-                    bb.warn("SOURCE_DATE_EPOCH value from sstate '%s' is deprecated/invalid. Reverting to SOURCE_DATE_EPOCH_FALLBACK '%s'" % (s, source_date_epoch))
-            except ValueError:
-                bb.warn("SOURCE_DATE_EPOCH value '%s' is invalid. Reverting to SOURCE_DATE_EPOCH_FALLBACK" % s)
-                source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK'))
-        bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch)
-    except FileNotFoundError:
-        bb.debug(1, "Cannot find %s. SOURCE_DATE_EPOCH will default to %d" % (epochfile, source_date_epoch))
-
-    d.setVar('__CACHED_SOURCE_DATE_EPOCH', (str(source_date_epoch), epochfile))
-    return str(source_date_epoch)
-
-export SOURCE_DATE_EPOCH ?= "${@get_source_date_epoch_value(d)}"
-BB_HASHBASE_WHITELIST += "SOURCE_DATE_EPOCH"
diff --git a/poky/meta/classes/reproducible_build_simple.bbclass b/poky/meta/classes/reproducible_build_simple.bbclass
deleted file mode 100644
index 3933729..0000000
--- a/poky/meta/classes/reproducible_build_simple.bbclass
+++ /dev/null
@@ -1,9 +0,0 @@
-# Setup default environment for reproducible builds.
-
-BUILD_REPRODUCIBLE_BINARIES = "1"
-
-export PYTHONHASHSEED = "0"
-export PERL_HASH_SEED = "0"
-export SOURCE_DATE_EPOCH ??= "1520598896"
-
-REPRODUCIBLE_TIMESTAMP_ROOTFS ??= "1520598896"
diff --git a/poky/meta/classes/rust-common.bbclass b/poky/meta/classes/rust-common.bbclass
index f7f9cbb..98d6597 100644
--- a/poky/meta/classes/rust-common.bbclass
+++ b/poky/meta/classes/rust-common.bbclass
@@ -1,3 +1,5 @@
+inherit python3native
+
 # Common variables used by all Rust builds
 export rustlibdir = "${libdir}/rust"
 FILES:${PN} += "${rustlibdir}/*.so"
@@ -133,8 +135,12 @@
 	shift
 
 	cat <<- EOF > "${file}"
-	#!/bin/sh
-	exec $@ "\$@"
+	#!/usr/bin/env python3
+	import os, sys
+	orig_binary = "$@"
+	binary = orig_binary.split()[0]
+	args = orig_binary.split() + sys.argv[1:]
+	os.execvp(binary, args)
 	EOF
 	chmod +x "${file}"
 }
@@ -169,11 +175,6 @@
 	# Yocto Target / Rust Target archiver
 	create_wrapper "${RUST_TARGET_AR}" "${WRAPPER_TARGET_AR}"
 
-	# Need to filter out LD_LIBRARY_PATH from the linker without using shell
-	mv ${RUST_BUILD_CCLD} ${RUST_BUILD_CCLD}.real
-	${BUILD_CC} ${COREBASE}/meta/files/rust-ccld-wrapper.c -o ${RUST_BUILD_CCLD}
-	mv ${RUST_TARGET_CCLD} ${RUST_TARGET_CCLD}.real
-	${BUILD_CC} ${COREBASE}/meta/files/rust-ccld-wrapper.c -o ${RUST_TARGET_CCLD}
 }
 
 addtask rust_create_wrappers before do_configure after do_patch do_prepare_recipe_sysroot
diff --git a/poky/meta/classes/sstate.bbclass b/poky/meta/classes/sstate.bbclass
index 7f4b1f6..6e4eb09 100644
--- a/poky/meta/classes/sstate.bbclass
+++ b/poky/meta/classes/sstate.bbclass
@@ -1,4 +1,6 @@
-SSTATE_VERSION = "5"
+SSTATE_VERSION = "7"
+
+SSTATE_ZSTD_CLEVEL ??= "8"
 
 SSTATE_MANIFESTS ?= "${TMPDIR}/sstate-control"
 SSTATE_MANFILEPREFIX = "${SSTATE_MANIFESTS}/manifest-${SSTATE_MANMACH}-${PN}"
@@ -6,12 +8,12 @@
 def generate_sstatefn(spec, hash, taskname, siginfo, d):
     if taskname is None:
        return ""
-    extension = ".tgz"
+    extension = ".tar.zst"
     # 8 chars reserved for siginfo
     limit = 254 - 8
     if siginfo:
         limit = 254
-        extension = ".tgz.siginfo"
+        extension = ".tar.zst.siginfo"
     if not hash:
         hash = "INVALID"
     fn = spec + hash + "_" + taskname + extension
@@ -37,7 +39,7 @@
 SSTATE_PKG        = "${SSTATE_DIR}/${SSTATE_PKGNAME}"
 SSTATE_EXTRAPATH   = ""
 SSTATE_EXTRAPATHWILDCARD = ""
-SSTATE_PATHSPEC   = "${SSTATE_DIR}/${SSTATE_EXTRAPATHWILDCARD}*/*/${SSTATE_PKGSPEC}*_${SSTATE_PATH_CURRTASK}.tgz*"
+SSTATE_PATHSPEC   = "${SSTATE_DIR}/${SSTATE_EXTRAPATHWILDCARD}*/*/${SSTATE_PKGSPEC}*_${SSTATE_PATH_CURRTASK}.tar.zst*"
 
 # explicitly make PV to depend on evaluated value of PV variable
 PV[vardepvalue] = "${PV}"
@@ -114,6 +116,9 @@
 SSTATE_SIG_PASSPHRASE ?= ""
 # Whether to verify the GnUPG signatures when extracting sstate archives
 SSTATE_VERIFY_SIG ?= "0"
+# List of signatures to consider valid.
+SSTATE_VALID_SIGS ??= ""
+SSTATE_VALID_SIGS[vardepvalue] = ""
 
 SSTATE_HASHEQUIV_METHOD ?= "oe.sstatesig.OEOuthashBasic"
 SSTATE_HASHEQUIV_METHOD[doc] = "The fully-qualified function used to calculate \
@@ -370,7 +375,7 @@
             bb.warn("No signature file for sstate package %s, skipping acceleration..." % sstatepkg)
             return False
         signer = get_signer(d, 'local')
-        if not signer.verify(sstatepkg + '.sig'):
+        if not signer.verify(sstatepkg + '.sig', d.getVar("SSTATE_VALID_SIGS")):
             bb.warn("Cannot verify signature on sstate package %s, skipping acceleration..." % sstatepkg)
             return False
 
@@ -825,30 +830,31 @@
 sstate_create_package () {
 	# Exit early if it already exists
 	if [ -e ${SSTATE_PKG} ]; then
-		[ ! -w ${SSTATE_PKG} ] || touch ${SSTATE_PKG}
+		touch ${SSTATE_PKG} 2>/dev/null || true
 		return
 	fi
 
 	mkdir --mode=0775 -p `dirname ${SSTATE_PKG}`
 	TFILE=`mktemp ${SSTATE_PKG}.XXXXXXXX`
 
-	# Use pigz if available
-	OPT="-czS"
-	if [ -x "$(command -v pigz)" ]; then
-		OPT="-I pigz -cS"
+	OPT="-cS"
+	ZSTD="zstd -${SSTATE_ZSTD_CLEVEL} -T${ZSTD_THREADS}"
+	# Use pzstd if available
+	if [ -x "$(command -v pzstd)" ]; then
+		ZSTD="pzstd -${SSTATE_ZSTD_CLEVEL} -p ${ZSTD_THREADS}"
 	fi
 
 	# Need to handle empty directories
 	if [ "$(ls -A)" ]; then
 		set +e
-		tar $OPT -f $TFILE *
+		tar -I "$ZSTD" $OPT -f $TFILE *
 		ret=$?
 		if [ $ret -ne 0 ] && [ $ret -ne 1 ]; then
 			exit 1
 		fi
 		set -e
 	else
-		tar $OPT --file=$TFILE --files-from=/dev/null
+		tar -I "$ZSTD" $OPT --file=$TFILE --files-from=/dev/null
 	fi
 	chmod 0664 $TFILE
 	# Skip if it was already created by some other process
@@ -859,7 +865,7 @@
 	else
 		rm $TFILE
 	fi
-	[ ! -w ${SSTATE_PKG} ] || touch ${SSTATE_PKG}
+	touch ${SSTATE_PKG} 2>/dev/null || true
 }
 
 python sstate_sign_package () {
@@ -887,7 +893,13 @@
 # Will be run from within SSTATE_INSTDIR.
 #
 sstate_unpack_package () {
-	tar -xvzf ${SSTATE_PKG}
+	ZSTD="zstd -T${ZSTD_THREADS}"
+	# Use pzstd if available
+	if [ -x "$(command -v pzstd)" ]; then
+		ZSTD="pzstd -p ${ZSTD_THREADS}"
+	fi
+
+	tar -I "$ZSTD" -xvf ${SSTATE_PKG}
 	# update .siginfo atime on local/NFS mirror
 	[ -O ${SSTATE_PKG}.siginfo ] && [ -w ${SSTATE_PKG}.siginfo ] && [ -h ${SSTATE_PKG}.siginfo ] && touch -a ${SSTATE_PKG}.siginfo
 	# Use "! -w ||" to return true for read only files
@@ -900,8 +912,6 @@
 
 def sstate_checkhashes(sq_data, d, siginfo=False, currentcount=0, summary=True, **kwargs):
     found = set()
-    foundLocal = set()
-    foundNet = set()
     missed = set()
 
     def gethash(task):
@@ -932,14 +942,13 @@
         sstatefile = d.expand("${SSTATE_DIR}/" + extrapath + generate_sstatefn(spec, gethash(tid), tname, siginfo, d))
 
         if os.path.exists(sstatefile):
-            bb.debug(2, "SState: Found valid sstate file %s" % sstatefile)
             found.add(tid)
-            foundLocal.add(tid)
-            continue
+            bb.debug(2, "SState: Found valid sstate file %s" % sstatefile)
         else:
             missed.add(tid)
             bb.debug(2, "SState: Looked for but didn't find file %s" % sstatefile)
 
+    foundLocal = len(found)
     mirrors = d.getVar("SSTATE_MIRRORS")
     if mirrors:
         # Copy the data object and override DL_DIR and SRC_URI
@@ -980,13 +989,13 @@
                 fetcher.checkstatus()
                 bb.debug(2, "SState: Successful fetch test for %s" % srcuri)
                 found.add(tid)
-                foundNet.add(tid)
                 if tid in missed:
                     missed.remove(tid)
-            except:
+            except bb.fetch2.FetchError as e:
                 missed.add(tid)
-                bb.debug(2, "SState: Unsuccessful fetch test for %s" % srcuri)
-                pass
+                bb.debug(2, "SState: Unsuccessful fetch test for %s (%s)" % (srcuri, e))
+            except Exception as e:
+                bb.error("SState: cannot test %s: %s" % (srcuri, e))
             if len(tasklist) >= min_tasks:
                 bb.event.fire(bb.event.ProcessProgress(msg, len(tasklist) - thread_worker.tasks.qsize()), d)
 
@@ -1041,7 +1050,8 @@
         match = 0
         if total:
             match = len(found) / total * 100
-        bb.plain("Sstate summary: Wanted %d Local %d Network %d Missed %d Current %d (%d%% match, %d%% complete)" % (total, len(foundLocal), len(foundNet),len(missed), currentcount, match, complete))
+        bb.plain("Sstate summary: Wanted %d Local %d Mirrors %d Missed %d Current %d (%d%% match, %d%% complete)" %
+            (total, foundLocal, len(found)-foundLocal, len(missed), currentcount, match, complete))
 
     if hasattr(bb.parse.siggen, "checkhashes"):
         bb.parse.siggen.checkhashes(sq_data, missed, found, d)
diff --git a/poky/meta/classes/staging.bbclass b/poky/meta/classes/staging.bbclass
index 65a6cd5..25f77c7 100644
--- a/poky/meta/classes/staging.bbclass
+++ b/poky/meta/classes/staging.bbclass
@@ -620,7 +620,7 @@
     for task in bbtasks:
         deps = d.getVarFlag(task, "depends")
         if task == "do_configure" or (deps and "populate_sysroot" in deps):
-            d.appendVarFlag(task, "prefuncs", " extend_recipe_sysroot")
+            d.prependVarFlag(task, "prefuncs", "extend_recipe_sysroot ")
 }
 staging_taskhandler[eventmask] = "bb.event.RecipeTaskPreProcess"
 addhandler staging_taskhandler
diff --git a/poky/meta/classes/testimage.bbclass b/poky/meta/classes/testimage.bbclass
index a76e773..9980b3f 100644
--- a/poky/meta/classes/testimage.bbclass
+++ b/poky/meta/classes/testimage.bbclass
@@ -235,9 +235,10 @@
 
     tdname = "%s.testdata.json" % image_name
     try:
-        td = json.load(open(tdname, "r"))
-    except (FileNotFoundError) as err:
-         bb.fatal('File %s Not Found. Have you built the image with INHERIT+="testimage" in the conf/local.conf?' % tdname)
+        with open(tdname, "r") as f:
+            td = json.load(f)
+    except FileNotFoundError as err:
+        bb.fatal('File %s not found (%s).\nHave you built the image with INHERIT += "testimage" in the conf/local.conf?' % (tdname, err))
 
     # Some variables need to be updates (mostly paths) with the
     # ones of the current environment because some tests require them.
@@ -316,10 +317,6 @@
     if d.getVar("TESTIMAGE_BOOT_PATTERNS"):
         target_kwargs['boot_patterns'] = get_testimage_boot_patterns(d)
 
-    # TODO: Currently BBPATH is needed for custom loading of targets.
-    # It would be better to find these modules using instrospection.
-    target_kwargs['target_modules_path'] = d.getVar('BBPATH')
-
     # hardware controlled targets might need further access
     target_kwargs['powercontrol_cmd'] = d.getVar("TEST_POWERCONTROL_CMD") or None
     target_kwargs['powercontrol_extra_args'] = d.getVar("TEST_POWERCONTROL_EXTRA_ARGS") or ""
diff --git a/poky/meta/classes/uboot-config.bbclass b/poky/meta/classes/uboot-config.bbclass
index 07a303d..b9ad358 100644
--- a/poky/meta/classes/uboot-config.bbclass
+++ b/poky/meta/classes/uboot-config.bbclass
@@ -53,6 +53,8 @@
 # include it in the SRC_URI and set the UBOOT_ENV parameter.
 UBOOT_ENV_SUFFIX ?= "txt"
 UBOOT_ENV ?= ""
+UBOOT_ENV_SRC_SUFFIX ?= "cmd"
+UBOOT_ENV_SRC ?= "${UBOOT_ENV}.${UBOOT_ENV_SRC_SUFFIX}"
 UBOOT_ENV_BINARY ?= "${UBOOT_ENV}.${UBOOT_ENV_SUFFIX}"
 UBOOT_ENV_IMAGE ?= "${UBOOT_ENV}-${MACHINE}-${PV}-${PR}.${UBOOT_ENV_SUFFIX}"
 UBOOT_ENV_SYMLINK ?= "${UBOOT_ENV}-${MACHINE}.${UBOOT_ENV_SUFFIX}"
diff --git a/poky/meta/classes/uboot-sign.bbclass b/poky/meta/classes/uboot-sign.bbclass
index fdf1532..bae8cad 100644
--- a/poky/meta/classes/uboot-sign.bbclass
+++ b/poky/meta/classes/uboot-sign.bbclass
@@ -162,8 +162,8 @@
 		mkdir -p ${DEPLOYDIR}
 		if [ -n "${UBOOT_CONFIG}" ]; then
 			for config in ${UBOOT_MACHINE}; do
-				CONFIG_B_PATH="${config}"
-				cd ${B}/${config}
+				CONFIG_B_PATH="$config"
+				cd ${B}/$config
 				concat_dtb_helper
 			done
 		else
@@ -179,8 +179,8 @@
 		mkdir -p ${DEPLOYDIR}
 		if [ -n "${UBOOT_CONFIG}" ]; then
 			for config in ${UBOOT_MACHINE}; do
-				CONFIG_B_PATH="${config}"
-				cd ${B}/${config}
+				CONFIG_B_PATH="$config"
+				cd ${B}/$config
 				concat_spl_dtb_helper
 			done
 		else
@@ -231,7 +231,7 @@
 	if [ "${PN}" = "${UBOOT_PN}" ]; then
 		if [ -n "${UBOOT_CONFIG}" ]; then
 			for config in ${UBOOT_MACHINE}; do
-				cd ${B}/${config}
+				cd ${B}/$config
 				if [ "${UBOOT_SIGN_ENABLE}" = "1" -o "${UBOOT_FITIMAGE_ENABLE}" = "1" ] && \
 					[ -n "${UBOOT_DTB_BINARY}" ]; then
 					install_helper
@@ -286,19 +286,19 @@
 # Create a ITS file for the U-boot FIT, for use when
 # we want to sign it so that the SPL can verify it
 uboot_fitimage_assemble() {
-	uboot_its="${1}"
-	uboot_nodtb_bin="${2}"
-	uboot_dtb="${3}"
-	uboot_bin="${4}"
-	spl_dtb="${5}"
+	uboot_its="$1"
+	uboot_nodtb_bin="$2"
+	uboot_dtb="$3"
+	uboot_bin="$4"
+	spl_dtb="$5"
 	uboot_csum="${UBOOT_FIT_HASH_ALG}"
 	uboot_sign_algo="${UBOOT_FIT_SIGN_ALG}"
 	uboot_sign_keyname="${SPL_SIGN_KEYNAME}"
 
-	rm -f ${uboot_its} ${uboot_bin}
+	rm -f $uboot_its $uboot_bin
 
 	# First we create the ITS script
-	cat << EOF >> ${uboot_its}
+	cat << EOF >> $uboot_its
 /dts-v1/;
 
 / {
@@ -308,7 +308,7 @@
     images {
         uboot {
             description = "U-Boot image";
-            data = /incbin/("${uboot_nodtb_bin}");
+            data = /incbin/("$uboot_nodtb_bin");
             type = "standalone";
             os = "u-boot";
             arch = "${UBOOT_ARCH}";
@@ -318,34 +318,34 @@
 EOF
 
 	if [ "${SPL_SIGN_ENABLE}" = "1" ] ; then
-		cat << EOF >> ${uboot_its}
+		cat << EOF >> $uboot_its
             signature {
-                algo = "${uboot_csum},${uboot_sign_algo}";
-                key-name-hint = "${uboot_sign_keyname}";
+                algo = "$uboot_csum,$uboot_sign_algo";
+                key-name-hint = "$uboot_sign_keyname";
             };
 EOF
 	fi
 
-	cat << EOF >> ${uboot_its}
+	cat << EOF >> $uboot_its
         };
         fdt {
             description = "U-Boot FDT";
-            data = /incbin/("${uboot_dtb}");
+            data = /incbin/("$uboot_dtb");
             type = "flat_dt";
             arch = "${UBOOT_ARCH}";
             compression = "none";
 EOF
 
 	if [ "${SPL_SIGN_ENABLE}" = "1" ] ; then
-		cat << EOF >> ${uboot_its}
+		cat << EOF >> $uboot_its
             signature {
-                algo = "${uboot_csum},${uboot_sign_algo}";
-                key-name-hint = "${uboot_sign_keyname}";
+                algo = "$uboot_csum,$uboot_sign_algo";
+                key-name-hint = "$uboot_sign_keyname";
             };
 EOF
 	fi
 
-	cat << EOF >> ${uboot_its}
+	cat << EOF >> $uboot_its
         };
     };
 
@@ -365,8 +365,8 @@
 	#
 	${UBOOT_MKIMAGE} \
 		${@'-D "${SPL_MKIMAGE_DTCOPTS}"' if len('${SPL_MKIMAGE_DTCOPTS}') else ''} \
-		-f ${uboot_its} \
-		${uboot_bin}
+		-f $uboot_its \
+		$uboot_bin
 
 	if [ "${SPL_SIGN_ENABLE}" = "1" ] ; then
 		#
@@ -375,8 +375,8 @@
 		${UBOOT_MKIMAGE_SIGN} \
 			${@'-D "${SPL_MKIMAGE_DTCOPTS}"' if len('${SPL_MKIMAGE_DTCOPTS}') else ''} \
 			-F -k "${SPL_SIGN_KEYDIR}" \
-			-K "${spl_dtb}" \
-			-r ${uboot_bin} \
+			-K "$spl_dtb" \
+			-r $uboot_bin \
 			${SPL_MKIMAGE_SIGN_ARGS}
 	fi
 
@@ -408,8 +408,8 @@
 		kernel_uboot_fitimage_name=`basename ${STAGING_DATADIR}/u-boot-fitImage-*`
 		kernel_uboot_its_name=`basename ${STAGING_DATADIR}/u-boot-its-*`
 		cd ${B}
-		uboot_fitimage_assemble ${kernel_uboot_its_name} ${UBOOT_NODTB_BINARY} \
-					${UBOOT_DTB_BINARY} ${kernel_uboot_fitimage_name} \
+		uboot_fitimage_assemble $kernel_uboot_its_name ${UBOOT_NODTB_BINARY} \
+					${UBOOT_DTB_BINARY} $kernel_uboot_fitimage_name \
 					${SPL_DTB_BINARY}
 	fi
 }
diff --git a/poky/meta/conf/abi_version.conf b/poky/meta/conf/abi_version.conf
index e84cad1..f406f92 100644
--- a/poky/meta/conf/abi_version.conf
+++ b/poky/meta/conf/abi_version.conf
@@ -12,4 +12,4 @@
 # a reset of the equivalence, for example when reproducibility issues break the
 # existing match data. Distros can also append to this value for the same effect.
 #
-HASHEQUIV_HASH_VERSION  = "8"
+HASHEQUIV_HASH_VERSION  = "10"
diff --git a/poky/meta/conf/bitbake.conf b/poky/meta/conf/bitbake.conf
index f3ff5b7..790f2f7 100644
--- a/poky/meta/conf/bitbake.conf
+++ b/poky/meta/conf/bitbake.conf
@@ -415,6 +415,7 @@
 DEPLOY_DIR_TOOLS = "${DEPLOY_DIR}/tools"
 
 PKGDATA_DIR = "${TMPDIR}/pkgdata/${MACHINE}"
+PKGDATA_DIR_SDK = "${TMPDIR}/pkgdata/${SDK_SYS}"
 
 ##################################################################
 # SDK variables.
@@ -498,7 +499,7 @@
 HOSTTOOLS += "${@'ip ping ps scp ssh stty' if (bb.utils.contains_any('IMAGE_CLASSES', 'testimage testsdk', True, False, d) or any(x in (d.getVar("BBINCLUDED") or "") for x in ["testimage.bbclass", "testsdk.bbclass"])) else ''}"
 
 # Link to these if present
-HOSTTOOLS_NONFATAL += "aws gcc-ar gpg ld.bfd ld.gold nc pigz sftp socat ssh sudo"
+HOSTTOOLS_NONFATAL += "aws gcc-ar gpg gpg-agent ld.bfd ld.gold nc pigz sftp socat ssh sudo"
 
 # Temporary add few more detected in bitbake world
 HOSTTOOLS_NONFATAL += "join nl size yes zcat"
@@ -628,6 +629,21 @@
 BUILD_OPTIMIZATION[vardeps] += "DEBUG_BUILD"
 
 ##################################################################
+# Reproducibility
+##################################################################
+
+SDE_DIR = "${WORKDIR}/source-date-epoch"
+SDE_FILE = "${SDE_DIR}/__source_date_epoch.txt"
+SDE_DEPLOYDIR = "${WORKDIR}/deploy-source-date-epoch"
+
+export PYTHONHASHSEED = "0"
+export PERL_HASH_SEED = "0"
+export SOURCE_DATE_EPOCH ?= "${@get_source_date_epoch_value(d)}"
+# A SOURCE_DATE_EPOCH of '0' might be misinterpreted as no SDE
+export SOURCE_DATE_EPOCH_FALLBACK ??= "1302044400"
+REPRODUCIBLE_TIMESTAMP_ROOTFS ??= "1520598896"
+
+##################################################################
 # Settings used by bitbake-layers.
 ##################################################################
 BBLAYERS_LAYERINDEX_URL ??= "https://layers.openembedded.org/layerindex/"
@@ -816,6 +832,10 @@
 XZ_DEFAULTS ?= "--memlimit=${XZ_MEMLIMIT} --threads=${XZ_THREADS}"
 XZ_DEFAULTS[vardepsexclude] += "XZ_MEMLIMIT XZ_THREADS"
 
+# Default parallelism for zstd
+ZSTD_THREADS ?= "${@oe.utils.cpu_count(at_least=2)}"
+ZSTD_THREADS[vardepvalue] = "1"
+
 # Limit the number of threads that OpenMP libraries will use. Otherwise they
 # may fallback to using all CPUs
 export OMP_NUM_THREADS = "${BB_NUMBER_THREADS}"
@@ -902,8 +922,9 @@
     BB_WORKERCONTEXT BB_LIMITEDDEPS BB_UNIHASH extend_recipe_sysroot DEPLOY_DIR \
     SSTATE_HASHEQUIV_METHOD SSTATE_HASHEQUIV_REPORT_TASKDATA \
     SSTATE_HASHEQUIV_OWNER CCACHE_TOP_DIR BB_HASHSERVE GIT_CEILING_DIRECTORIES \
-    OMP_NUM_THREADS"
-BB_HASHBASE_WHITELIST ?= "${BB_HASHEXCLUDE_COMMON} PSEUDO_IGNORE_PATHS BUILDHISTORY_DIR SSTATE_DIR "
+    OMP_NUM_THREADS BB_CURRENTTASK"
+BB_HASHBASE_WHITELIST ?= "${BB_HASHEXCLUDE_COMMON} PSEUDO_IGNORE_PATHS BUILDHISTORY_DIR \
+    SSTATE_DIR SOURCE_DATE_EPOCH"
 BB_HASHCONFIG_WHITELIST ?= "${BB_HASHEXCLUDE_COMMON} DATE TIME SSH_AGENT_PID \
     SSH_AUTH_SOCK PSEUDO_BUILD BB_ENV_EXTRAWHITE DISABLE_SANITY_CHECKS \
     PARALLEL_MAKE BB_NUMBER_THREADS BB_ORIGENV BB_INVALIDCONF BBINCLUDED \
diff --git a/poky/meta/conf/distro/include/default-versions.inc b/poky/meta/conf/distro/include/default-versions.inc
index 5e6fd8a..a88b65a 100644
--- a/poky/meta/conf/distro/include/default-versions.inc
+++ b/poky/meta/conf/distro/include/default-versions.inc
@@ -1,5 +1,3 @@
 #
 # Default preferred versions
 #
-
-PREFERRED_VERSION_adwaita-icon-theme ?= "3.34.3"
diff --git a/poky/meta/conf/distro/include/maintainers.inc b/poky/meta/conf/distro/include/maintainers.inc
index 8592de5..8f0b8d3 100644
--- a/poky/meta/conf/distro/include/maintainers.inc
+++ b/poky/meta/conf/distro/include/maintainers.inc
@@ -384,6 +384,7 @@
 RECIPE_MAINTAINER:pn-libsm = "Unassigned <unassigned@yoctoproject.org>"
 RECIPE_MAINTAINER:pn-libsndfile1 = "Unassigned <unassigned@yoctoproject.org>"
 RECIPE_MAINTAINER:pn-libsolv = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libsoup = "Anuj Mittal <anuj.mittal@intel.com>"
 RECIPE_MAINTAINER:pn-libsoup-2.4 = "Anuj Mittal <anuj.mittal@intel.com>"
 RECIPE_MAINTAINER:pn-libssh2 = "Unassigned <unassigned@yoctoproject.org>"
 RECIPE_MAINTAINER:pn-libssp-nonshared = "Khem Raj <raj.khem@gmail.com>"
@@ -466,6 +467,7 @@
 RECIPE_MAINTAINER:pn-lttng-modules = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER:pn-lttng-tools = "Richard Purdie <richard.purdie@linuxfoundation.org>"
 RECIPE_MAINTAINER:pn-lttng-ust = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-lua = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER:pn-lz4 = "Denys Dmytriyenko <denis@denix.org>"
 RECIPE_MAINTAINER:pn-lzo = "Denys Dmytriyenko <denis@denix.org>"
 RECIPE_MAINTAINER:pn-lzip = "Denys Dmytriyenko <denis@denix.org>"
@@ -534,6 +536,7 @@
 RECIPE_MAINTAINER:pn-nettle = "Unassigned <unassigned@yoctoproject.org>"
 RECIPE_MAINTAINER:pn-nfs-export-root = "Robert Yang <liezhi.yang@windriver.com>"
 RECIPE_MAINTAINER:pn-nfs-utils = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-nghttp2 = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER:pn-ninja = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER:pn-npth = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER:pn-nss-myhostname = "Anuj Mittal <anuj.mittal@intel.com>"
@@ -634,6 +637,7 @@
 RECIPE_MAINTAINER:pn-python3-subunit = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
 RECIPE_MAINTAINER:pn-python3-testtools = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
 RECIPE_MAINTAINER:pn-python3-toml = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-tomli = "Tim Orling <timothy.t.orling@intel.com>"
 RECIPE_MAINTAINER:pn-python3-typogrify = "Alexander Kanavin <alex.kanavin@gmail.com>"
 RECIPE_MAINTAINER:pn-python3-wcwidth = "Tim Orling <timothy.t.orling@intel.com>"
 RECIPE_MAINTAINER:pn-python3-zipp = "Tim Orling <timothy.t.orling@intel.com>"
@@ -659,7 +663,7 @@
 RECIPE_MAINTAINER:pn-run-postinsts = "Ross Burton <ross.burton@arm.com>"
 RECIPE_MAINTAINER:pn-rust = "Randy MacLeod <Randy.MacLeod@windriver.com>"
 RECIPE_MAINTAINER:pn-rustfmt = "Randy MacLeod <Randy.MacLeod@windriver.com>"
-RECIPE_MAINTAINER:pn-rust-cross-${TARGET_ARCH} = "Randy MacLeod <Randy.MacLeod@windriver.com>"
+RECIPE_MAINTAINER:pn-rust-cross-${TARGET_ARCH}-${TCLIBC} = "Randy MacLeod <Randy.MacLeod@windriver.com>"
 RECIPE_MAINTAINER:pn-rust-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Randy MacLeod <Randy.MacLeod@windriver.com>"
 RECIPE_MAINTAINER:pn-rust-hello-world = "Randy MacLeod <Randy.MacLeod@windriver.com>"
 RECIPE_MAINTAINER:pn-rust-llvm = "Randy MacLeod <Randy.MacLeod@windriver.com>"
diff --git a/poky/meta/conf/distro/include/ptest-packagelists.inc b/poky/meta/conf/distro/include/ptest-packagelists.inc
index e0ae1dd..2e324f8 100644
--- a/poky/meta/conf/distro/include/ptest-packagelists.inc
+++ b/poky/meta/conf/distro/include/ptest-packagelists.inc
@@ -40,6 +40,7 @@
     libxml-sax-base-perl-ptest \
     libxml-simple-perl-ptest \
     libxml2-ptest \
+    lua-ptest \
     lzo-ptest \
     m4-ptest \
     nettle-ptest \
@@ -71,6 +72,7 @@
     coreutils-ptest \
     dbus-test-ptest \
     e2fsprogs-ptest \
+    findutils-ptest \
     glib-2.0-ptest \
     gstreamer1.0-ptest \
     libevent-ptest \
diff --git a/poky/meta/conf/distro/include/tcmode-default.inc b/poky/meta/conf/distro/include/tcmode-default.inc
index 27e60b6..58f4980 100644
--- a/poky/meta/conf/distro/include/tcmode-default.inc
+++ b/poky/meta/conf/distro/include/tcmode-default.inc
@@ -22,12 +22,12 @@
 GDBVERSION ?= "10.%"
 GLIBCVERSION ?= "2.34"
 LINUXLIBCVERSION ?= "5.14%"
-QEMUVERSION ?= "6.0%"
+QEMUVERSION ?= "6.1%"
 GOVERSION ?= "1.16%"
 # This can not use wildcards like 8.0.% since it is also used in mesa to denote
 # llvm version being used, so always bump it with llvm recipe version bump
 LLVMVERSION ?= "12.0.1"
-RUSTVERSION ?= "1.54.0"
+RUSTVERSION ?= "1.56.0"
 
 PREFERRED_VERSION_gcc ?= "${GCCVERSION}"
 PREFERRED_VERSION_gcc-cross-${TARGET_ARCH} ?= "${GCCVERSION}"
diff --git a/poky/meta/conf/documentation.conf b/poky/meta/conf/documentation.conf
index c5a38b0..80ad8e1 100644
--- a/poky/meta/conf/documentation.conf
+++ b/poky/meta/conf/documentation.conf
@@ -17,7 +17,7 @@
 do_configure[doc] = "Configures the source by enabling and disabling any build-time and configuration options for the software being built"
 do_configure_ptest_base[doc] = "Configures the runtime test suite included in the software being built"
 do_deploy[doc] = "Writes deployable output files to the deploy directory"
-do_devpyshell[doc] = "Starts an interactive Python shell for development/debugging"
+do_pydevshell[doc] = "Starts an interactive Python shell for development/debugging"
 do_devshell[doc] = "Starts a shell with the environment set up for development/debugging"
 do_diffconfig[doc] = "Compares the old and new config files after running do_menuconfig for the kernel"
 do_fetch[doc] = "Fetches the source code"
diff --git a/poky/meta/conf/layer.conf b/poky/meta/conf/layer.conf
index 307ad7e..b3cc8a2 100644
--- a/poky/meta/conf/layer.conf
+++ b/poky/meta/conf/layer.conf
@@ -48,6 +48,7 @@
 "
 
 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
+  *->patch-native \
   *->quilt-native \
   *->subversion-native \
   *->git-native \
@@ -90,7 +91,16 @@
 # (e.g. X -> Y -> binutils-cross -> bison-native) no longer meet the
 # dependency incidentally. This improves determinism and avoids build
 # failures when people switch to external toolchains.
-SSTATE_EXCLUDEDEPS_SYSROOT += ".*->bison-native"
+SSTATE_EXCLUDEDEPS_SYSROOT += "\
+    .*->autoconf-native \
+    .*->automake-native \
+    .*->bison-native \
+    .*->meson-native \
+    .*->ninja-native \
+    .*->patch-native \
+    .*->pkgconfig-native \
+    .*->quilt-native \
+"
 # Nothing needs to depend on libc-initial
 # base-passwd/shadow-sysroot don't need their dependencies
 SSTATE_EXCLUDEDEPS_SYSROOT += "\
diff --git a/poky/meta/conf/machine/qemuarm.conf b/poky/meta/conf/machine/qemuarm.conf
index d71a793..1bd4e3e 100644
--- a/poky/meta/conf/machine/qemuarm.conf
+++ b/poky/meta/conf/machine/qemuarm.conf
@@ -7,7 +7,7 @@
 
 KERNEL_IMAGETYPE = "zImage"
 
-UBOOT_MACHINE ?= "qemu:arm_defconfig"
+UBOOT_MACHINE ?= "qemu_arm_defconfig"
 
 SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"
 SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
diff --git a/poky/meta/conf/machine/qemuarm64.conf b/poky/meta/conf/machine/qemuarm64.conf
index 3b08ded..f245152 100644
--- a/poky/meta/conf/machine/qemuarm64.conf
+++ b/poky/meta/conf/machine/qemuarm64.conf
@@ -7,7 +7,7 @@
 
 KERNEL_IMAGETYPE = "Image"
 
-UBOOT_MACHINE ?= "qemu:arm64_defconfig"
+UBOOT_MACHINE ?= "qemu_arm64_defconfig"
 
 SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"
 SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
diff --git a/poky/meta/conf/multilib.conf b/poky/meta/conf/multilib.conf
index 8a8db58..7f3b946 100644
--- a/poky/meta/conf/multilib.conf
+++ b/poky/meta/conf/multilib.conf
@@ -11,6 +11,8 @@
 RECIPE_SYSROOT = "${WORKDIR}/${MLPREFIX}recipe-sysroot"
 RECIPE_SYSROOT:class-native = "${WORKDIR}/recipe-sysroot"
 
+PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/${MLPREFIX}recipe-sysroot"
+
 INHERIT += "multilib_global"
 
 BBCLASSEXTEND:append = " ${MULTILIBS}"
diff --git a/poky/meta/files/rust-ccld-wrapper.c b/poky/meta/files/rust-ccld-wrapper.c
deleted file mode 100644
index 6bc9958..0000000
--- a/poky/meta/files/rust-ccld-wrapper.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2021 Richard Purdie
- *
- * SPDX-License-Identifier: GPL-2.0-only
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-/*
- * Run the original script (argv[0] + ".real") with LD_LIBRARY_PATH unset
- * This avoids issues where cargo is running a wrapper script using /bin/sh from the host
- * which links to something which has an incompatible version in in recipe-sysroot-native
- * such as libtinfo on centos 7.
- */
-
-int main(int argc, char* argv[]) {
-    char *real = malloc(strlen(argv[0] + 5));
-    strcpy(real, argv[0]);
-    strcpy(real + strlen(argv[0]), ".real");
-    putenv("LD_LIBRARY_PATH=");
-    if(execv(real, argv) == -1) {
-        printf("Wrapper failed to execute, error: %s\n", strerror(errno));
-        return -1;
-    }
-}
diff --git a/poky/meta/lib/oe/gpg_sign.py b/poky/meta/lib/oe/gpg_sign.py
index 492f096..1bce6cb 100644
--- a/poky/meta/lib/oe/gpg_sign.py
+++ b/poky/meta/lib/oe/gpg_sign.py
@@ -109,16 +109,33 @@
             bb.fatal("Could not get gpg version: %s" % e)
 
 
-    def verify(self, sig_file):
+    def verify(self, sig_file, valid_sigs = ''):
         """Verify signature"""
-        cmd = self.gpg_cmd + ["--verify", "--no-permission-warning"]
+        cmd = self.gpg_cmd + ["--verify", "--no-permission-warning", "--status-fd", "1"]
         if self.gpg_path:
             cmd += ["--homedir", self.gpg_path]
 
         cmd += [sig_file]
-        status = subprocess.call(cmd)
-        ret = False if status else True
-        return ret
+        status = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+        # Valid if any key matches if unspecified
+        if not valid_sigs:
+            ret = False if status.returncode else True
+            return ret
+
+        import re
+        goodsigs = []
+        sigre = re.compile(r'^\[GNUPG:\] GOODSIG (\S+)\s(.*)$')
+        for l in status.stdout.decode("utf-8").splitlines():
+            s = sigre.match(l)
+            if s:
+                goodsigs += [s.group(1)]
+
+        for sig in valid_sigs.split():
+            if sig in goodsigs:
+                return True
+        if len(goodsigs):
+            bb.warn('No accepted signatures found. Good signatures found: %s.' % ' '.join(goodsigs))
+        return False
 
 
 def get_signer(d, backend):
diff --git a/poky/meta/lib/oe/license.py b/poky/meta/lib/oe/license.py
index 665d32e..b5d378a 100644
--- a/poky/meta/lib/oe/license.py
+++ b/poky/meta/lib/oe/license.py
@@ -74,6 +74,9 @@
     def visit_Str(self, node):
         self.licenses.append(node.s)
 
+    def visit_Constant(self, node):
+        self.licenses.append(node.value)
+
     def visit_BinOp(self, node):
         if isinstance(node.op, ast.BitOr):
             left = FlattenVisitor(self.choose_licenses)
@@ -227,6 +230,9 @@
     def visit_Str(self, node):
         self.licenses.add(node.s)
 
+    def visit_Constant(self, node):
+        self.licenses.add(node.value)
+
 def list_licenses(licensestr):
     """Simply get a list of all licenses mentioned in a license string.
        Binary operators are not applied or taken into account in any way"""
diff --git a/poky/meta/lib/oe/package_manager/__init__.py b/poky/meta/lib/oe/package_manager/__init__.py
index 8f7b60e..80bc1a6 100644
--- a/poky/meta/lib/oe/package_manager/__init__.py
+++ b/poky/meta/lib/oe/package_manager/__init__.py
@@ -321,7 +321,7 @@
         # TODO don't have sdk here but have a property on the superclass
         # (and respect in install_complementary)
         if sdk:
-            pkgdatadir = self.d.expand("${TMPDIR}/pkgdata/${SDK_SYS}")
+            pkgdatadir = self.d.getVar("PKGDATA_DIR_SDK")
         else:
             pkgdatadir = self.d.getVar("PKGDATA_DIR")
 
diff --git a/poky/meta/lib/oe/packagedata.py b/poky/meta/lib/oe/packagedata.py
index 02c81e5..212f048 100644
--- a/poky/meta/lib/oe/packagedata.py
+++ b/poky/meta/lib/oe/packagedata.py
@@ -19,7 +19,7 @@
         import re
         with open(fn, 'r') as f:
             lines = f.readlines()
-        r = re.compile("(^.+?):\s+(.*)")
+        r = re.compile(r"(^.+?):\s+(.*)")
         for l in lines:
             m = r.match(l)
             if m:
diff --git a/poky/meta/lib/oe/qa.py b/poky/meta/lib/oe/qa.py
index e8a854a..efab7e8 100644
--- a/poky/meta/lib/oe/qa.py
+++ b/poky/meta/lib/oe/qa.py
@@ -171,6 +171,40 @@
     except:
         return "Unknown (%s)" % repr(machine)
 
+def write_error(type, error, d):
+    logfile = d.getVar('QA_LOGFILE')
+    if logfile:
+        p = d.getVar('P')
+        with open(logfile, "a+") as f:
+            f.write("%s: %s [%s]\n" % (p, error, type))
+
+def handle_error(error_class, error_msg, d):
+    if error_class in (d.getVar("ERROR_QA") or "").split():
+        write_error(error_class, error_msg, d)
+        bb.error("QA Issue: %s [%s]" % (error_msg, error_class))
+        d.setVar("QA_ERRORS_FOUND", "True")
+        return False
+    elif error_class in (d.getVar("WARN_QA") or "").split():
+        write_error(error_class, error_msg, d)
+        bb.warn("QA Issue: %s [%s]" % (error_msg, error_class))
+    else:
+        bb.note("QA Issue: %s [%s]" % (error_msg, error_class))
+    return True
+
+def add_message(messages, section, new_msg):
+    if section not in messages:
+        messages[section] = new_msg
+    else:
+        messages[section] = messages[section] + "\n" + new_msg
+
+def exit_with_message_if_errors(message, d):
+    qa_fatal_errors = bb.utils.to_boolean(d.getVar("QA_ERRORS_FOUND"), False)
+    if qa_fatal_errors:
+        bb.fatal(message)
+
+def exit_if_errors(d):
+    exit_with_message_if_errors("Fatal QA errors were found, failing task.", d)
+
 if __name__ == "__main__":
     import sys
 
diff --git a/poky/meta/lib/oe/reproducible.py b/poky/meta/lib/oe/reproducible.py
index 204b9bd..4fb99d9 100644
--- a/poky/meta/lib/oe/reproducible.py
+++ b/poky/meta/lib/oe/reproducible.py
@@ -5,6 +5,57 @@
 import subprocess
 import bb
 
+# For reproducible builds, this code sets the default SOURCE_DATE_EPOCH in each
+# component's build environment. The format is number of seconds since the
+# system epoch.
+#
+# Upstream components (generally) respect this environment variable,
+# using it in place of the "current" date and time.
+# See https://reproducible-builds.org/specs/source-date-epoch/
+#
+# The default value of SOURCE_DATE_EPOCH comes from the function
+# get_source_date_epoch_value which reads from the SDE_FILE, or if the file
+# is not available will use the fallback of SOURCE_DATE_EPOCH_FALLBACK.
+#
+# The SDE_FILE is normally constructed from the function
+# create_source_date_epoch_stamp which is typically added as a postfuncs to
+# the do_unpack task.  If a recipe does NOT have do_unpack, it should be added
+# to a task that runs after the source is available and before the
+# do_deploy_source_date_epoch task is executed.
+#
+# If a recipe wishes to override the default behavior it should set it's own
+# SOURCE_DATE_EPOCH or override the do_deploy_source_date_epoch_stamp task
+# with recipe-specific functionality to write the appropriate
+# SOURCE_DATE_EPOCH into the SDE_FILE.
+#
+# SOURCE_DATE_EPOCH is intended to be a reproducible value.  This value should
+# be reproducible for anyone who builds the same revision from the same
+# sources.
+#
+# There are 4 ways the create_source_date_epoch_stamp function determines what
+# becomes SOURCE_DATE_EPOCH:
+#
+# 1. Use the value from __source_date_epoch.txt file if this file exists.
+#    This file was most likely created in the previous build by one of the
+#    following methods 2,3,4.
+#    Alternatively, it can be provided by a recipe via SRC_URI.
+#
+# If the file does not exist:
+#
+# 2. If there is a git checkout, use the last git commit timestamp.
+#    Git does not preserve file timestamps on checkout.
+#
+# 3. Use the mtime of "known" files such as NEWS, CHANGLELOG, ...
+#    This works for well-kept repositories distributed via tarball.
+#
+# 4. Use the modification time of the youngest file in the source tree, if
+#    there is one.
+#    This will be the newest file from the distribution tarball, if any.
+#
+# 5. Fall back to a fixed timestamp (SOURCE_DATE_EPOCH_FALLBACK).
+#
+# Once the value is determined, it is stored in the recipe's SDE_FILE.
+
 def get_source_date_epoch_from_known_files(d, sourcedir):
     source_date_epoch = None
     newest_file = None
@@ -106,3 +157,36 @@
         fixed_source_date_epoch(d)       # Last resort
     )
 
+def epochfile_read(epochfile, d):
+    cached, efile = d.getVar('__CACHED_SOURCE_DATE_EPOCH') or (None, None)
+    if cached and efile == epochfile:
+        return cached
+
+    if cached and epochfile != efile:
+        bb.debug(1, "Epoch file changed from %s to %s" % (efile, epochfile))
+
+    source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK'))
+    try:
+        with open(epochfile, 'r') as f:
+            s = f.read()
+            try:
+                source_date_epoch = int(s)
+            except ValueError:
+                bb.warn("SOURCE_DATE_EPOCH value '%s' is invalid. Reverting to SOURCE_DATE_EPOCH_FALLBACK" % s)
+                source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK'))
+        bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch)
+    except FileNotFoundError:
+        bb.debug(1, "Cannot find %s. SOURCE_DATE_EPOCH will default to %d" % (epochfile, source_date_epoch))
+
+    d.setVar('__CACHED_SOURCE_DATE_EPOCH', (str(source_date_epoch), epochfile))
+    return str(source_date_epoch)
+
+def epochfile_write(source_date_epoch, epochfile, d):
+
+    bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch)
+    bb.utils.mkdirhier(os.path.dirname(epochfile))
+
+    tmp_file = "%s.new" % epochfile
+    with open(tmp_file, 'w') as f:
+        f.write(str(source_date_epoch))
+    os.rename(tmp_file, epochfile)
diff --git a/poky/meta/lib/oe/spdx.py b/poky/meta/lib/oe/spdx.py
index 4416194..9e7ced5 100644
--- a/poky/meta/lib/oe/spdx.py
+++ b/poky/meta/lib/oe/spdx.py
@@ -196,6 +196,7 @@
     relatedSpdxElement = _String()
     relationshipType = _String()
     comment = _String()
+    annotations = _ObjectList(SPDXAnnotation)
 
 
 class SPDXExternalReference(SPDXObject):
@@ -300,7 +301,7 @@
     def from_json(cls, f):
         return cls(**json.load(f))
 
-    def add_relationship(self, _from, relationship, _to, *, comment=None):
+    def add_relationship(self, _from, relationship, _to, *, comment=None, annotation=None):
         if isinstance(_from, SPDXObject):
             from_spdxid = _from.SPDXID
         else:
@@ -320,6 +321,9 @@
         if comment is not None:
             r.comment = comment
 
+        if annotation is not None:
+            r.annotations.append(annotation)
+
         self.relationships.append(r)
 
     def find_by_spdxid(self, spdxid):
diff --git a/poky/meta/lib/oe/sstatesig.py b/poky/meta/lib/oe/sstatesig.py
index 0c3b458..038404e 100644
--- a/poky/meta/lib/oe/sstatesig.py
+++ b/poky/meta/lib/oe/sstatesig.py
@@ -489,7 +489,7 @@
     include_timestamps = False
     include_root = True
     if task == "package":
-        include_timestamps = d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1'
+        include_timestamps = True
         include_root = False
     extra_content = d.getVar('HASHEQUIV_HASH_VERSION')
 
@@ -552,21 +552,22 @@
                 else:
                     add_perm(stat.S_IXUSR, 'x')
 
-                add_perm(stat.S_IRGRP, 'r')
-                add_perm(stat.S_IWGRP, 'w')
-                if stat.S_ISGID & s.st_mode:
-                    add_perm(stat.S_IXGRP, 's', 'S')
-                else:
-                    add_perm(stat.S_IXGRP, 'x')
-
-                add_perm(stat.S_IROTH, 'r')
-                add_perm(stat.S_IWOTH, 'w')
-                if stat.S_ISVTX & s.st_mode:
-                    update_hash('t')
-                else:
-                    add_perm(stat.S_IXOTH, 'x')
-
                 if include_owners:
+                    # Group/other permissions are only relevant in pseudo context
+                    add_perm(stat.S_IRGRP, 'r')
+                    add_perm(stat.S_IWGRP, 'w')
+                    if stat.S_ISGID & s.st_mode:
+                        add_perm(stat.S_IXGRP, 's', 'S')
+                    else:
+                        add_perm(stat.S_IXGRP, 'x')
+
+                    add_perm(stat.S_IROTH, 'r')
+                    add_perm(stat.S_IWOTH, 'w')
+                    if stat.S_ISVTX & s.st_mode:
+                        update_hash('t')
+                    else:
+                        add_perm(stat.S_IXOTH, 'x')
+
                     try:
                         update_hash(" %10s" % pwd.getpwuid(s.st_uid).pw_name)
                         update_hash(" %10s" % grp.getgrgid(s.st_gid).gr_name)
diff --git a/poky/meta/lib/oe/utils.py b/poky/meta/lib/oe/utils.py
index 238af31..cf65639 100644
--- a/poky/meta/lib/oe/utils.py
+++ b/poky/meta/lib/oe/utils.py
@@ -508,7 +508,8 @@
             try:
                 func(self, *args, **kargs)
             except Exception as e:
-                print(e)
+                # Eat all exceptions
+                bb.mainlogger.debug("Worker task raised %s" % e, exc_info=e)
             finally:
                 self.tasks.task_done()
 
diff --git a/poky/meta/lib/oeqa/manual/eclipse-plugin.json b/poky/meta/lib/oeqa/manual/eclipse-plugin.json
index d77d0e6..6c110d0 100644
--- a/poky/meta/lib/oeqa/manual/eclipse-plugin.json
+++ b/poky/meta/lib/oeqa/manual/eclipse-plugin.json
@@ -44,7 +44,7 @@
                     "expected_results": ""
                 },
                 "2": {
-                    "action": "wget  autobuilder.yoctoproject.org/pub/releases//machines/qemu/qemux86/qemu (ex:core-image-sato-sdk-qemux86-date-rootfs-tar-bz2) \nsource /opt/poky/version/environment-setup-i585-poky-linux  \n\nExtract qemu with runqemu-extract-sdk /home/user/file(ex.core-image-sato-sdk-qemux86.bz2) \n/home/user/qemux86-sato-sdk  \n\n",
+                    "action": "wget  https://downloads.yoctoproject.org/releases/yocto/yocto-$VERSION/machines/qemu/qemux86/ (ex:core-image-sato-sdk-qemux86-date-rootfs-tar-bz2) \nsource /opt/poky/version/environment-setup-i585-poky-linux  \n\nExtract qemu with runqemu-extract-sdk /home/user/file(ex.core-image-sato-sdk-qemux86.bz2) \n/home/user/qemux86-sato-sdk  \n\n",
                     "expected_results": " Qemu can be lauched normally."
                 },
                 "3": {
@@ -60,7 +60,7 @@
                     "expected_results": ""
                 },
                 "6": {
-                    "action": "(d) QEMU: \nSelect this option if you will be using the QEMU emulator. Specify the Kernel matching the QEMU architecture you are using. \n      wget  autobuilder.yoctoproject.org/pub/releases//machines/qemu/qemux86/bzImage-qemux86.bin \n      e.g: /home/$USER/yocto/adt-installer/download_image/bzImage-qemux86.bin  \n\n",
+                    "action": "(d) QEMU: \nSelect this option if you will be using the QEMU emulator. Specify the Kernel matching the QEMU architecture you are using. \n      wget  https://downloads.yoctoproject.org/releases/yocto/yocto-$VERSION/machines/qemu/qemux86/bzImage-qemux86.bin \n      e.g: /home/$USER/yocto/adt-installer/download_image/bzImage-qemux86.bin  \n\n",
                     "expected_results": ""
                 },	
                 "7": {
@@ -247,7 +247,7 @@
             "execution": {
                 "1": {
                     "action": "Clone eclipse-poky source.   \n    \n    - git clone git://git.yoctoproject.org/eclipse-poky  \n\n",
-                    "expected_results": "Eclipse plugin is successfully installed  \n\nDocumentation is there. For example if you have release yocto-2.0.1 you will found on   http://autobuilder.yoctoproject.org/pub/releases/yocto-2.0.1/eclipse-plugin/mars/  archive with documentation like org.yocto.doc-development-$date.zip  \n  \n"
+                    "expected_results": "Eclipse plugin is successfully installed  \n\nDocumentation is there. For example if you have release yocto-2.0.1 you will found on   https://downloads.yoctoproject.org/releases/yocto/yocto-2.0.1/eclipse-plugin/mars/  archive with documentation like org.yocto.doc-development-$date.zip  \n  \n"
                 },
                 "2": {
                     "action": "Checkout correct tag.  \n\n    - git checkout <eclipse-version>/<yocto-version> \n\n",
diff --git a/poky/meta/lib/oeqa/runtime/cases/parselogs.py b/poky/meta/lib/oeqa/runtime/cases/parselogs.py
index 2b8893d..50101b7 100644
--- a/poky/meta/lib/oeqa/runtime/cases/parselogs.py
+++ b/poky/meta/lib/oeqa/runtime/cases/parselogs.py
@@ -32,7 +32,7 @@
     "Failed to load module \"fbdev\"",
     "Failed to load module fbdev",
     "Failed to load module glx",
-    "[drm] Cannot find any crtc or sizes - going 1024x768",
+    "[drm] Cannot find any crtc or sizes",
     "_OSC failed (AE_NOT_FOUND); disabling ASPM",
     "Open ACPI failed (/var/run/acpid.socket) (No such file or directory)",
     "NX (Execute Disable) protection cannot be enabled: non-PAE kernel!",
diff --git a/poky/meta/lib/oeqa/runtime/cases/rpm.py b/poky/meta/lib/oeqa/runtime/cases/rpm.py
index 7a9d62c..a433911 100644
--- a/poky/meta/lib/oeqa/runtime/cases/rpm.py
+++ b/poky/meta/lib/oeqa/runtime/cases/rpm.py
@@ -116,12 +116,12 @@
         Author:      Alexander Kanavin <alex.kanavin@gmail.com>
         AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
         """
-        db_files_cmd = 'ls /var/lib/rpm/__db.*'
+        db_files_cmd = 'ls /var/lib/rpm/rpmdb.sqlite*'
         check_log_cmd = "grep RPM /var/log/messages | wc -l"
 
-        # Make sure that some database files are under /var/lib/rpm as '__db.xxx'
+        # Make sure that some database files are under /var/lib/rpm as 'rpmdb.sqlite'
         status, output = self.target.run(db_files_cmd)
-        msg =  'Failed to find database files under /var/lib/rpm/ as __db.xxx'
+        msg =  'Failed to find database files under /var/lib/rpm/ as rpmdb.sqlite'
         self.assertEqual(0, status, msg=msg)
 
         self.tc.target.copyTo(self.test_file, self.dst)
diff --git a/poky/meta/lib/oeqa/runtime/context.py b/poky/meta/lib/oeqa/runtime/context.py
index 3826f27..d707ab2 100644
--- a/poky/meta/lib/oeqa/runtime/context.py
+++ b/poky/meta/lib/oeqa/runtime/context.py
@@ -5,6 +5,7 @@
 #
 
 import os
+import sys
 
 from oeqa.core.context import OETestContext, OETestContextExecutor
 from oeqa.core.target.ssh import OESSHTarget
@@ -119,8 +120,7 @@
             # XXX: Don't base your targets on this code it will be refactored
             # in the near future.
             # Custom target module loading
-            target_modules_path = kwargs.get('target_modules_path', '')
-            controller = OERuntimeTestContextExecutor.getControllerModule(target_type, target_modules_path)
+            controller = OERuntimeTestContextExecutor.getControllerModule(target_type)
             target = controller(logger, target_ip, server_ip, **kwargs)
 
         return target
@@ -130,15 +130,15 @@
     # AttributeError raised if not found.
     # ImportError raised if a provided module can not be imported.
     @staticmethod
-    def getControllerModule(target, target_modules_path):
-        controllerslist = OERuntimeTestContextExecutor._getControllerModulenames(target_modules_path)
+    def getControllerModule(target):
+        controllerslist = OERuntimeTestContextExecutor._getControllerModulenames()
         controller = OERuntimeTestContextExecutor._loadControllerFromName(target, controllerslist)
         return controller
 
     # Return a list of all python modules in lib/oeqa/controllers for each
     # layer in bbpath
     @staticmethod
-    def _getControllerModulenames(target_modules_path):
+    def _getControllerModulenames():
 
         controllerslist = []
 
@@ -153,9 +153,8 @@
                 else:
                     raise RuntimeError("Duplicate controller module found for %s. Layers should create unique controller module names" % module)
 
-        extpath = target_modules_path.split(':')
-        for p in extpath:
-            controllerpath = os.path.join(p, 'lib', 'oeqa', 'controllers')
+        for p in sys.path:
+            controllerpath = os.path.join(p, 'oeqa', 'controllers')
             if os.path.exists(controllerpath):
                 add_controller_list(controllerpath)
         return controllerslist
@@ -175,16 +174,12 @@
     # Search for and return a controller or None from given module name
     @staticmethod
     def _loadControllerFromModule(target, modulename):
-        obj = None
-        # import module, allowing it to raise import exception
-        module = __import__(modulename, globals(), locals(), [target])
-        # look for target class in the module, catching any exceptions as it
-        # is valid that a module may not have the target class.
         try:
-            obj = getattr(module, target)
-        except:
-            obj = None
-        return obj
+            import importlib
+            module = importlib.import_module(modulename)
+            return getattr(module, target)
+        except AttributeError:
+            return None
 
     @staticmethod
     def readPackagesManifest(manifest):
diff --git a/poky/meta/lib/oeqa/sdk/buildtools-cases/build.py b/poky/meta/lib/oeqa/sdk/buildtools-cases/build.py
index 9c9a84b..aee2e5a 100644
--- a/poky/meta/lib/oeqa/sdk/buildtools-cases/build.py
+++ b/poky/meta/lib/oeqa/sdk/buildtools-cases/build.py
@@ -25,6 +25,6 @@
                 self._run('. %s/oe-init-build-env %s && bitbake virtual/libc' % (corebase, testdir))
             finally:
                 delay = 10
-                while delay and os.path.exists(testdir + "/bitbake.lock"):
+                while delay and (os.path.exists(testdir + "/bitbake.lock") or os.path.exists(testdir + "/cache/hashserv.db-wal")):
                     time.sleep(1)
                     delay = delay - 1
diff --git a/poky/meta/lib/oeqa/selftest/cases/bbtests.py b/poky/meta/lib/oeqa/selftest/cases/bbtests.py
index 6562364..6779e62 100644
--- a/poky/meta/lib/oeqa/selftest/cases/bbtests.py
+++ b/poky/meta/lib/oeqa/selftest/cases/bbtests.py
@@ -151,9 +151,6 @@
         self.delete_recipeinc('man-db')
         self.assertEqual(result.status, 1, msg="Command succeded when it should have failed. bitbake output: %s" % result.output)
         self.assertIn('Fetcher failure: Unable to find file file://invalid anywhere. The paths that were searched were:', result.output)
-        line = self.getline(result, 'Fetcher failure for URL: \'file://invalid\'. Unable to fetch URL from any source.')
-        self.assertTrue(line and line.startswith("ERROR:"), msg = "\"invalid\" file \
-doesn't exist, yet fetcher didn't report any error. bitbake output: %s" % result.output)
 
     def test_rename_downloaded_file(self):
         # TODO unique dldir instead of using cleanall
diff --git a/poky/meta/lib/oeqa/selftest/cases/eSDK.py b/poky/meta/lib/oeqa/selftest/cases/eSDK.py
index 862849a..d0c402b 100644
--- a/poky/meta/lib/oeqa/selftest/cases/eSDK.py
+++ b/poky/meta/lib/oeqa/selftest/cases/eSDK.py
@@ -100,7 +100,7 @@
     @classmethod
     def tearDownClass(cls):
         for i in range(0, 10):
-            if os.path.exists(os.path.join(cls.tmpdir_eSDKQA, 'bitbake.lock')):
+            if os.path.exists(os.path.join(cls.tmpdir_eSDKQA, 'bitbake.lock')) or os.path.exists(os.path.join(cls.tmpdir_eSDKQA, 'cache/hashserv.db-wal')):
                 time.sleep(1)
             else:
                 break
diff --git a/poky/meta/lib/oeqa/selftest/cases/fitimage.py b/poky/meta/lib/oeqa/selftest/cases/fitimage.py
index 184c877..f6f6a8e 100644
--- a/poky/meta/lib/oeqa/selftest/cases/fitimage.py
+++ b/poky/meta/lib/oeqa/selftest/cases/fitimage.py
@@ -742,6 +742,7 @@
 UBOOT_EXTLINUX = "0"
 FIT_GENERATE_KEYS = "1"
 KERNEL_IMAGETYPE_REPLACEMENT = "zImage"
+FIT_KERNEL_COMP_ALG = "none"
 FIT_HASH_ALG = "sha256"
 """
         self.write_config(config)
@@ -763,9 +764,8 @@
 
         kernel_load = str(get_bb_var('UBOOT_LOADADDRESS'))
         kernel_entry = str(get_bb_var('UBOOT_ENTRYPOINT'))
-        initramfs_bundle_format = str(get_bb_var('KERNEL_IMAGETYPE_REPLACEMENT'))
+        kernel_compression = str(get_bb_var('FIT_KERNEL_COMP_ALG'))
         uboot_arch = str(get_bb_var('UBOOT_ARCH'))
-        initramfs_bundle = "arch/" + uboot_arch + "/boot/" + initramfs_bundle_format + ".initramfs"
         fit_hash_alg = str(get_bb_var('FIT_HASH_ALG'))
 
         its_file = open(fitimage_its_path)
@@ -775,11 +775,11 @@
         exp_node_lines = [
             'kernel-1 {',
             'description = "Linux kernel";',
-            'data = /incbin/("' + initramfs_bundle + '");',
+            'data = /incbin/("linux.bin");',
             'type = "kernel";',
             'arch = "' + uboot_arch + '";',
             'os = "linux";',
-            'compression = "none";',
+            'compression = "' + kernel_compression + '";',
             'load = <' + kernel_load + '>;',
             'entry = <' + kernel_entry + '>;',
             'hash-1 {',
diff --git a/poky/meta/lib/oeqa/selftest/cases/oescripts.py b/poky/meta/lib/oeqa/selftest/cases/oescripts.py
index 1decce3..91abf96 100644
--- a/poky/meta/lib/oeqa/selftest/cases/oescripts.py
+++ b/poky/meta/lib/oeqa/selftest/cases/oescripts.py
@@ -167,7 +167,7 @@
     def test_packageconfig_flags_option_all(self):
         results = runCmd('%s/contrib/list-packageconfig-flags.py -a' % self.scripts_dir)
         expected_endlines = []
-        expected_endlines.append("pinentry-1.1.1")
+        expected_endlines.append("pinentry-1.2.0")
         expected_endlines.append("PACKAGECONFIG ncurses libcap")
         expected_endlines.append("PACKAGECONFIG[qt] --enable-pinentry-qt, --disable-pinentry-qt, qtbase-native qtbase")
         expected_endlines.append("PACKAGECONFIG[gtk2] --enable-pinentry-gtk2, --disable-pinentry-gtk2, gtk+ glib-2.0")
diff --git a/poky/meta/lib/oeqa/selftest/cases/reproducible.py b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
index e4582cb..2e983d2 100644
--- a/poky/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -219,7 +219,6 @@
             bb.utils.remove(tmpdir, recurse=True)
 
         config = textwrap.dedent('''\
-            INHERIT += "reproducible_build"
             PACKAGE_CLASSES = "{package_classes}"
             INHIBIT_PACKAGE_STRIP = "1"
             TMPDIR = "{tmpdir}"
diff --git a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
index 129503d..a90f62b 100644
--- a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -213,17 +213,21 @@
         """
         import subprocess, os
 
+        distro = oe.lsb.distro_identifier()
+        if distro and distro in ['debian-9', 'debian-10', 'centos-7', 'centos-8', 'ubuntu-16.04', 'ubuntu-18.04']:
+            self.skipTest('virgl headless cannot be tested with %s' %(distro))
+
         render_hint = """If /dev/dri/renderD* is absent due to lack of suitable GPU, 'modprobe vgem' will create one sutable for mesa llvmpipe sofware renderer."""
         try:
             content = os.listdir("/dev/dri")
             if len([i for i in content if i.startswith('render')]) == 0:
-                self.skipTest("No render nodes found in /dev/dri: %s. %s" %(content, render_hint))
+                self.fail("No render nodes found in /dev/dri: %s. %s" %(content, render_hint))
         except FileNotFoundError:
-            self.skipTest("/dev/dri directory does not exist; no render nodes available on this machine. %s" %(render_hint))
+            self.fail("/dev/dri directory does not exist; no render nodes available on this machine. %s" %(render_hint))
         try:
             dripath = subprocess.check_output("pkg-config --variable=dridriverdir dri", shell=True)
         except subprocess.CalledProcessError as e:
-            self.skipTest("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.")
+            self.fail("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.")
         qemu_distrofeatures = get_bb_var('DISTRO_FEATURES', 'qemu-system-native')
         features = 'INHERIT += "testimage"\n'
         if 'opengl' not in qemu_distrofeatures:
diff --git a/poky/meta/lib/oeqa/selftest/cases/signing.py b/poky/meta/lib/oeqa/selftest/cases/signing.py
index af7a0b8..6f3d4ae 100644
--- a/poky/meta/lib/oeqa/selftest/cases/signing.py
+++ b/poky/meta/lib/oeqa/selftest/cases/signing.py
@@ -159,13 +159,13 @@
             bitbake('-c clean %s' % test_recipe)
             bitbake('-c populate_lic %s' % test_recipe)
 
-            recipe_sig = glob.glob(sstatedir + '/*/*/*:ed:*_populate_lic.tgz.sig')
-            recipe_tgz = glob.glob(sstatedir + '/*/*/*:ed:*_populate_lic.tgz')
+            recipe_sig = glob.glob(sstatedir + '/*/*/*:ed:*_populate_lic.tar.zst.sig')
+            recipe_archive = glob.glob(sstatedir + '/*/*/*:ed:*_populate_lic.tar.zst')
 
             self.assertEqual(len(recipe_sig), 1, 'Failed to find .sig file.')
-            self.assertEqual(len(recipe_tgz), 1, 'Failed to find .tgz file.')
+            self.assertEqual(len(recipe_archive), 1, 'Failed to find .tar.zst file.')
 
-            ret = runCmd('gpg --homedir %s --verify %s %s' % (self.gpg_dir, recipe_sig[0], recipe_tgz[0]))
+            ret = runCmd('gpg --homedir %s --verify %s %s' % (self.gpg_dir, recipe_sig[0], recipe_archive[0]))
             # gpg: Signature made Thu 22 Oct 2015 01:45:09 PM EEST using RSA key ID 61EEFB30
             # gpg: Good signature from "testuser (nocomment) <testuser@email.com>"
             self.assertIn('gpg: Good signature from', ret.output, 'Package signed incorrectly.')
diff --git a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
index 17a1545..3dab607 100644
--- a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
@@ -68,7 +68,7 @@
         results = self.search_sstate('|'.join(map(str, targets)), distro_specific, distro_nonspecific)
         if distro_nonspecific:
             for r in results:
-                if r.endswith(("_populate_lic.tgz", "_populate_lic.tgz.siginfo", "_fetch.tgz.siginfo", "_unpack.tgz.siginfo", "_patch.tgz.siginfo")):
+                if r.endswith(("_populate_lic.tar.zst", "_populate_lic.tar.zst.siginfo", "_fetch.tar.zst.siginfo", "_unpack.tar.zst.siginfo", "_patch.tar.zst.siginfo")):
                     continue
                 file_tracker.append(r)
         else:
@@ -98,15 +98,15 @@
         bitbake(['-ccleansstate'] + targets)
 
         bitbake(targets)
-        tgz_created = self.search_sstate('|'.join(map(str, [s + r'.*?\.tgz$' for s in targets])), distro_specific, distro_nonspecific)
-        self.assertTrue(tgz_created, msg="Could not find sstate .tgz files for: %s (%s)" % (', '.join(map(str, targets)), str(tgz_created)))
+        archives_created = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific, distro_nonspecific)
+        self.assertTrue(archives_created, msg="Could not find sstate .tar.zst files for: %s (%s)" % (', '.join(map(str, targets)), str(archives_created)))
 
         siginfo_created = self.search_sstate('|'.join(map(str, [s + r'.*?\.siginfo$' for s in targets])), distro_specific, distro_nonspecific)
         self.assertTrue(siginfo_created, msg="Could not find sstate .siginfo files for: %s (%s)" % (', '.join(map(str, targets)), str(siginfo_created)))
 
         bitbake(['-ccleansstate'] + targets)
-        tgz_removed = self.search_sstate('|'.join(map(str, [s + r'.*?\.tgz$' for s in targets])), distro_specific, distro_nonspecific)
-        self.assertTrue(not tgz_removed, msg="do_cleansstate didn't remove .tgz sstate files for: %s (%s)" % (', '.join(map(str, targets)), str(tgz_removed)))
+        archives_removed = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific, distro_nonspecific)
+        self.assertTrue(not archives_removed, msg="do_cleansstate didn't remove .tar.zst sstate files for: %s (%s)" % (', '.join(map(str, targets)), str(archives_removed)))
 
     def test_cleansstate_task_distro_specific_nonspecific(self):
         targets = ['binutils-cross-'+ self.tune_arch, 'binutils-native']
@@ -129,15 +129,15 @@
         bitbake(['-ccleansstate'] + targets)
 
         bitbake(targets)
-        results = self.search_sstate('|'.join(map(str, [s + r'.*?\.tgz$' for s in targets])), distro_specific=False, distro_nonspecific=True)
+        results = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=False, distro_nonspecific=True)
         filtered_results = []
         for r in results:
-            if r.endswith(("_populate_lic.tgz", "_populate_lic.tgz.siginfo")):
+            if r.endswith(("_populate_lic.tar.zst", "_populate_lic.tar.zst.siginfo")):
                 continue
             filtered_results.append(r)
         self.assertTrue(filtered_results == [], msg="Found distro non-specific sstate for: %s (%s)" % (', '.join(map(str, targets)), str(filtered_results)))
-        file_tracker_1 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tgz$' for s in targets])), distro_specific=True, distro_nonspecific=False)
-        self.assertTrue(len(file_tracker_1) >= len(targets), msg = "Not all sstate files ware created for: %s" % ', '.join(map(str, targets)))
+        file_tracker_1 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=True, distro_nonspecific=False)
+        self.assertTrue(len(file_tracker_1) >= len(targets), msg = "Not all sstate files were created for: %s" % ', '.join(map(str, targets)))
 
         self.track_for_cleanup(self.distro_specific_sstate + "_old")
         shutil.copytree(self.distro_specific_sstate, self.distro_specific_sstate + "_old")
@@ -145,14 +145,14 @@
 
         bitbake(['-cclean'] + targets)
         bitbake(targets)
-        file_tracker_2 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tgz$' for s in targets])), distro_specific=True, distro_nonspecific=False)
-        self.assertTrue(len(file_tracker_2) >= len(targets), msg = "Not all sstate files ware created for: %s" % ', '.join(map(str, targets)))
+        file_tracker_2 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=True, distro_nonspecific=False)
+        self.assertTrue(len(file_tracker_2) >= len(targets), msg = "Not all sstate files were created for: %s" % ', '.join(map(str, targets)))
 
         not_recreated = [x for x in file_tracker_1 if x not in file_tracker_2]
-        self.assertTrue(not_recreated == [], msg="The following sstate files ware not recreated: %s" % ', '.join(map(str, not_recreated)))
+        self.assertTrue(not_recreated == [], msg="The following sstate files were not recreated: %s" % ', '.join(map(str, not_recreated)))
 
         created_once = [x for x in file_tracker_2 if x not in file_tracker_1]
-        self.assertTrue(created_once == [], msg="The following sstate files ware created only in the second run: %s" % ', '.join(map(str, created_once)))
+        self.assertTrue(created_once == [], msg="The following sstate files were created only in the second run: %s" % ', '.join(map(str, created_once)))
 
     def test_rebuild_distro_specific_sstate_cross_native_targets(self):
         self.run_test_rebuild_distro_specific_sstate(['binutils-cross-' + self.tune_arch, 'binutils-native'], temp_sstate_location=True)
@@ -188,23 +188,23 @@
             if not sstate_arch in sstate_archs_list:
                 sstate_archs_list.append(sstate_arch)
             if target_config[idx] == target_config[-1]:
-                target_sstate_before_build = self.search_sstate(target + r'.*?\.tgz$')
+                target_sstate_before_build = self.search_sstate(target + r'.*?\.tar.zst$')
             bitbake("-cclean %s" % target)
             result = bitbake(target, ignore_status=True)
             if target_config[idx] == target_config[-1]:
-                target_sstate_after_build = self.search_sstate(target + r'.*?\.tgz$')
+                target_sstate_after_build = self.search_sstate(target + r'.*?\.tar.zst$')
                 expected_remaining_sstate += [x for x in target_sstate_after_build if x not in target_sstate_before_build if not any(pattern in x for pattern in ignore_patterns)]
             self.remove_config(global_config[idx])
             self.remove_recipeinc(target, target_config[idx])
             self.assertEqual(result.status, 0, msg = "build of %s failed with %s" % (target, result.output))
 
         runCmd("sstate-cache-management.sh -y --cache-dir=%s --remove-duplicated --extra-archs=%s" % (self.sstate_path, ','.join(map(str, sstate_archs_list))))
-        actual_remaining_sstate = [x for x in self.search_sstate(target + r'.*?\.tgz$') if not any(pattern in x for pattern in ignore_patterns)]
+        actual_remaining_sstate = [x for x in self.search_sstate(target + r'.*?\.tar.zst$') if not any(pattern in x for pattern in ignore_patterns)]
 
         actual_not_expected = [x for x in actual_remaining_sstate if x not in expected_remaining_sstate]
-        self.assertFalse(actual_not_expected, msg="Files should have been removed but ware not: %s" % ', '.join(map(str, actual_not_expected)))
+        self.assertFalse(actual_not_expected, msg="Files should have been removed but were not: %s" % ', '.join(map(str, actual_not_expected)))
         expected_not_actual = [x for x in expected_remaining_sstate if x not in actual_remaining_sstate]
-        self.assertFalse(expected_not_actual, msg="Extra files ware removed: %s" ', '.join(map(str, expected_not_actual)))
+        self.assertFalse(expected_not_actual, msg="Extra files were removed: %s" ', '.join(map(str, expected_not_actual)))
 
     def test_sstate_cache_management_script_using_pr_1(self):
         global_config = []
diff --git a/poky/meta/lib/oeqa/selftest/context.py b/poky/meta/lib/oeqa/selftest/context.py
index 1659926..78c7a46 100644
--- a/poky/meta/lib/oeqa/selftest/context.py
+++ b/poky/meta/lib/oeqa/selftest/context.py
@@ -39,7 +39,7 @@
 
 def removebuilddir(d):
     delay = 5
-    while delay and os.path.exists(d + "/bitbake.lock"):
+    while delay and (os.path.exists(d + "/bitbake.lock") or os.path.exists(d + "/cache/hashserv.db-wal")):
         time.sleep(1)
         delay = delay - 1
     # Deleting these directories takes a lot of time, use autobuilder
diff --git a/poky/meta/lib/oeqa/utils/qemurunner.py b/poky/meta/lib/oeqa/utils/qemurunner.py
index d961a9a..0397148 100644
--- a/poky/meta/lib/oeqa/utils/qemurunner.py
+++ b/poky/meta/lib/oeqa/utils/qemurunner.py
@@ -183,7 +183,7 @@
         # then add in the site-packages path components and add that
         # to the python sys.path so qmp.py can be found.
         python_path = os.path.dirname(os.path.dirname(self.logfile))
-        python_path += "/recipe-sysroot-native/usr/lib/python3.9/site-packages"
+        python_path += "/recipe-sysroot-native/usr/lib/qemu-python"
         sys.path.append(python_path)
         importlib.invalidate_caches()
         try:
diff --git a/poky/meta/recipes-bsp/acpid/acpid_2.0.32.bb b/poky/meta/recipes-bsp/acpid/acpid_2.0.32.bb
deleted file mode 100644
index 227e4a4..0000000
--- a/poky/meta/recipes-bsp/acpid/acpid_2.0.32.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require acpid.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
-                    file://acpid.h;endline=24;md5=324a9cf225ae69ddaad1bf9d942115b5"
-
-SRC_URI[md5sum] = "248995264b9d1cd8bdb923d5b190fd44"
-SRC_URI[sha256sum] = "f2d2d30b3edc3234bd82f6f7186699a6aa3c85c8d20bc4e30e9b3c68a1ed157e"
diff --git a/poky/meta/recipes-bsp/acpid/acpid_2.0.33.bb b/poky/meta/recipes-bsp/acpid/acpid_2.0.33.bb
new file mode 100644
index 0000000..7094ba2
--- /dev/null
+++ b/poky/meta/recipes-bsp/acpid/acpid_2.0.33.bb
@@ -0,0 +1,6 @@
+require acpid.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
+                    file://acpid.h;endline=24;md5=324a9cf225ae69ddaad1bf9d942115b5"
+
+SRC_URI[sha256sum] = "0856f71b3eb34a1b663d0a8e6363dfcbc519e63d847330498898658e2972dbe8"
diff --git a/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc b/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc
index cc31ab3..e590a27 100644
--- a/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc
+++ b/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc
@@ -17,18 +17,20 @@
     return "FW_FDT_PATH=" + deploy_dir + "/" + sbi_fdt
 
 def riscv_get_do_compile_depends(d):
-    sbi_payload = d.getVar('RISCV_SBI_PAYLOAD')
-    sbi_fdt = d.getVar('RISCV_SBI_FDT')
+    sbi_payload = d.getVar('RISCV_SBI_PAYLOAD') or ""
+    sbi_fdt = d.getVar('RISCV_SBI_FDT') or ""
 
-    if sbi_payload is None and sbi_fdt is None:
+    if sbi_payload == "" and sbi_fdt == "":
         return ""
 
-    if sbi_fdt is not None and 'u-boot.bin' in sbi_payload:
+    if sbi_fdt != "" and 'u-boot.bin' in sbi_payload:
         return "virtual/kernel:do_deploy virtual/bootloader:do_deploy"
 
     if 'linux' in sbi_payload or 'Image' in sbi_payload:
         return "virtual/kernel:do_deploy"
     if 'u-boot.bin' in sbi_payload:
         return "virtual/bootloader:do_deploy"
+    if sbi_fdt != "":
+        return "virtual/kernel:do_deploy"
 
     return ""
diff --git a/poky/meta/recipes-bsp/u-boot/files/0001-tools-image-host-fix-wrong-return-value.patch b/poky/meta/recipes-bsp/u-boot/files/0001-tools-image-host-fix-wrong-return-value.patch
deleted file mode 100644
index 8168720..0000000
--- a/poky/meta/recipes-bsp/u-boot/files/0001-tools-image-host-fix-wrong-return-value.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 77fe3ad2ab2953ccdf6e9417cbecc060b45d3e55 Mon Sep 17 00:00:00 2001
-From: Ming Liu <liu.ming50@gmail.com>
-Date: Sun, 30 May 2021 10:32:08 +0200
-Subject: [PATCH] tools: image-host: fix wrong return value
-
-The return value '-ENOSPC' of fit_set_timestamp function does not match
-the caller fit_image_write_sig's expection which is '-FDT_ERR_NOSPACE'.
-
-Fix it by not calling fit_set_timestamp, but call fdt_setprop instead.
-
-This fixes a following mkimage error:
-| Can't write signature for 'signature@1' signature node in
-| 'conf@imx6ull-colibri-wifi-eval-v3.dtb' conf node: <unknown error>
-| mkimage Can't add hashes to FIT blob: -1
-
-Upstream-Status: Submitted [ https://patchwork.ozlabs.org/project/uboot/patch/20210531070451.6561-1-liu.ming50@gmail.com ]
-
-Signed-off-by: Ming Liu <liu.ming50@gmail.com>
----
- tools/image-host.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tools/image-host.c b/tools/image-host.c
-index 270d36fe45..73095461a7 100644
---- a/tools/image-host.c
-+++ b/tools/image-host.c
-@@ -132,8 +132,10 @@ static int fit_image_write_sig(void *fit, int noffset, uint8_t *value,
- 	if (!ret) {
- 		time_t timestamp = imagetool_get_source_date(cmdname,
- 							     time(NULL));
-+		uint32_t t = cpu_to_uimage(timestamp);
- 
--		ret = fit_set_timestamp(fit, noffset, timestamp);
-+		ret = fdt_setprop(fit, noffset, FIT_TIMESTAMP_PROP, &t,
-+			sizeof(uint32_t));
- 	}
- 	if (region_prop && !ret) {
- 		uint32_t strdata[2];
--- 
-2.29.0
-
diff --git a/poky/meta/recipes-bsp/u-boot/u-boot-common.inc b/poky/meta/recipes-bsp/u-boot/u-boot-common.inc
index 6b92538..e41a4b5 100644
--- a/poky/meta/recipes-bsp/u-boot/u-boot-common.inc
+++ b/poky/meta/recipes-bsp/u-boot/u-boot-common.inc
@@ -12,7 +12,7 @@
 
 # We use the revision in order to avoid having to fetch it from the
 # repo during parse
-SRCREV = "840658b093976390e9537724f802281c9c8439f5"
+SRCREV = "d80bb749fab53da72c4a0e09b8c2d2aaa3103c91"
 
 SRC_URI = "git://git.denx.de/u-boot.git \
           "
diff --git a/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.07.bb b/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.07.bb
deleted file mode 100644
index d0c0f30..0000000
--- a/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.07.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require u-boot-common.inc
-require u-boot-tools.inc
-
-SRC_URI:append = " file://0001-tools-image-host-fix-wrong-return-value.patch"
diff --git a/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.10.bb b/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.10.bb
new file mode 100644
index 0000000..7eaf721
--- /dev/null
+++ b/poky/meta/recipes-bsp/u-boot/u-boot-tools_2021.10.bb
@@ -0,0 +1,2 @@
+require u-boot-common.inc
+require u-boot-tools.inc
diff --git a/poky/meta/recipes-bsp/u-boot/u-boot.inc b/poky/meta/recipes-bsp/u-boot/u-boot.inc
index f27fdd5..2d5e46f 100644
--- a/poky/meta/recipes-bsp/u-boot/u-boot.inc
+++ b/poky/meta/recipes-bsp/u-boot/u-boot.inc
@@ -4,6 +4,7 @@
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
 DEPENDS += "kern-tools-native"
+DEPENDS += "${@bb.utils.contains('UBOOT_ENV_SUFFIX', 'scr', 'u-boot-mkimage-native', '', d)}"
 
 inherit uboot-config uboot-extlinux-config uboot-sign deploy cml1 python3native kernel-arch
 
@@ -106,6 +107,11 @@
             oe_runmake -C ${S} O=${B} u-boot-initial-env
         fi
     fi
+
+    if [ -n "${UBOOT_ENV}" ] && [ "${UBOOT_ENV_SUFFIX}" = "scr" ]
+    then
+        ${UBOOT_MKIMAGE} -C none -A ${UBOOT_ARCH} -T script -d ${WORKDIR}/${UBOOT_ENV_SRC} ${WORKDIR}/${UBOOT_ENV_BINARY}
+    fi
 }
 
 do_install () {
diff --git a/poky/meta/recipes-bsp/u-boot/u-boot_2021.07.bb b/poky/meta/recipes-bsp/u-boot/u-boot_2021.07.bb
deleted file mode 100644
index c8dbe47..0000000
--- a/poky/meta/recipes-bsp/u-boot/u-boot_2021.07.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require u-boot-common.inc
-require u-boot.inc
-
-SRC_URI:append = " file://0001-riscv32-Use-double-float-ABI-for-rv32.patch"
-
-DEPENDS += "bc-native dtc-native python3-setuptools-native"
diff --git a/poky/meta/recipes-bsp/u-boot/u-boot_2021.10.bb b/poky/meta/recipes-bsp/u-boot/u-boot_2021.10.bb
new file mode 100644
index 0000000..617827f
--- /dev/null
+++ b/poky/meta/recipes-bsp/u-boot/u-boot_2021.10.bb
@@ -0,0 +1,7 @@
+require u-boot-common.inc
+require u-boot.inc
+
+SRC_URI:append = " file://0001-riscv32-Use-double-float-ABI-for-rv32.patch"
+
+DEPENDS += "bc-native dtc-native python3-setuptools-native"
+
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.20/0001-avoid-start-failure-with-bind-user.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.21/0001-avoid-start-failure-with-bind-user.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.20/0001-avoid-start-failure-with-bind-user.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.21/0001-avoid-start-failure-with-bind-user.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.20/0001-named-lwresd-V-and-start-log-hide-build-options.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.21/0001-named-lwresd-V-and-start-log-hide-build-options.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.20/0001-named-lwresd-V-and-start-log-hide-build-options.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.21/0001-named-lwresd-V-and-start-log-hide-build-options.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.20/bind-ensure-searching-for-json-headers-searches-sysr.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.21/bind-ensure-searching-for-json-headers-searches-sysr.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.20/bind-ensure-searching-for-json-headers-searches-sysr.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.21/bind-ensure-searching-for-json-headers-searches-sysr.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.20/bind9 b/poky/meta/recipes-connectivity/bind/bind-9.16.21/bind9
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.20/bind9
rename to poky/meta/recipes-connectivity/bind/bind-9.16.21/bind9
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.20/conf.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.21/conf.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.20/conf.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.21/conf.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.20/generate-rndc-key.sh b/poky/meta/recipes-connectivity/bind/bind-9.16.21/generate-rndc-key.sh
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.20/generate-rndc-key.sh
rename to poky/meta/recipes-connectivity/bind/bind-9.16.21/generate-rndc-key.sh
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.20/init.d-add-support-for-read-only-rootfs.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.21/init.d-add-support-for-read-only-rootfs.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.20/init.d-add-support-for-read-only-rootfs.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.21/init.d-add-support-for-read-only-rootfs.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.20/make-etc-initd-bind-stop-work.patch b/poky/meta/recipes-connectivity/bind/bind-9.16.21/make-etc-initd-bind-stop-work.patch
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.20/make-etc-initd-bind-stop-work.patch
rename to poky/meta/recipes-connectivity/bind/bind-9.16.21/make-etc-initd-bind-stop-work.patch
diff --git a/poky/meta/recipes-connectivity/bind/bind-9.16.20/named.service b/poky/meta/recipes-connectivity/bind/bind-9.16.21/named.service
similarity index 100%
rename from poky/meta/recipes-connectivity/bind/bind-9.16.20/named.service
rename to poky/meta/recipes-connectivity/bind/bind-9.16.21/named.service
diff --git a/poky/meta/recipes-connectivity/bind/bind_9.16.20.bb b/poky/meta/recipes-connectivity/bind/bind_9.16.20.bb
deleted file mode 100644
index ddf323f..0000000
--- a/poky/meta/recipes-connectivity/bind/bind_9.16.20.bb
+++ /dev/null
@@ -1,129 +0,0 @@
-SUMMARY = "ISC Internet Domain Name Server"
-HOMEPAGE = "https://www.isc.org/bind/"
-DESCRIPTION = "BIND 9 provides a full-featured Domain Name Server system"
-SECTION = "console/network"
-
-LICENSE = "MPL-2.0"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=ef10b4de6371115dcecdc38ca2af4561"
-
-DEPENDS = "openssl libcap zlib libuv"
-
-SRC_URI = "https://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.xz \
-           file://conf.patch \
-           file://named.service \
-           file://bind9 \
-           file://generate-rndc-key.sh \
-           file://make-etc-initd-bind-stop-work.patch \
-           file://init.d-add-support-for-read-only-rootfs.patch \
-           file://bind-ensure-searching-for-json-headers-searches-sysr.patch \
-           file://0001-named-lwresd-V-and-start-log-hide-build-options.patch \
-           file://0001-avoid-start-failure-with-bind-user.patch \
-           "
-
-SRC_URI[sha256sum] = "4d0d93c0d0b63080609e84625f24ff8777f8d164e78a75b1c19c334ce42d5b58"
-
-UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
-# stay at 9.16 follow the ESV versions divisible by 4
-UPSTREAM_CHECK_REGEX = "(?P<pver>9.(16|20|24|28)(\.\d+)+(-P\d+)*)/"
-
-# Issue only affects dhcpd with recent bind versions. We don't ship dhcpd anymore
-# so the issue doesn't affect us.
-CVE_CHECK_WHITELIST += "CVE-2019-6470"
-
-inherit autotools update-rc.d systemd useradd pkgconfig multilib_header update-alternatives
-
-# PACKAGECONFIGs readline and libedit should NOT be set at same time
-PACKAGECONFIG ?= "readline"
-PACKAGECONFIG[httpstats] = "--with-libxml2=${STAGING_DIR_HOST}${prefix},--without-libxml2,libxml2"
-PACKAGECONFIG[readline] = "--with-readline=-lreadline,,readline"
-PACKAGECONFIG[libedit] = "--with-readline=-ledit,,libedit"
-PACKAGECONFIG[python3] = "--with-python=yes --with-python-install-dir=${PYTHON_SITEPACKAGES_DIR} , --without-python, python3-ply-native,"
-
-EXTRA_OECONF = " --with-libtool --disable-devpoll --disable-auto-validation --enable-epoll \
-                 --with-gssapi=no --with-lmdb=no --with-zlib \
-                 --sysconfdir=${sysconfdir}/bind \
-                 --with-openssl=${STAGING_DIR_HOST}${prefix} \
-               "
-LDFLAGS:append = " -lz"
-
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3native distutils3-base', '', d)}
-
-# dhcp needs .la so keep them
-REMOVE_LIBTOOL_LA = "0"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM:${PN} = "--system --home ${localstatedir}/cache/bind --no-create-home \
-                       --user-group bind"
-
-INITSCRIPT_NAME = "bind"
-INITSCRIPT_PARAMS = "defaults"
-
-SYSTEMD_SERVICE:${PN} = "named.service"
-
-do_install:append() {
-
-	install -d -o bind "${D}${localstatedir}/cache/bind"
-	install -d "${D}${sysconfdir}/bind"
-	install -d "${D}${sysconfdir}/init.d"
-	install -m 644 ${S}/conf/* "${D}${sysconfdir}/bind/"
-	install -m 755 "${S}/init.d" "${D}${sysconfdir}/init.d/bind"
-        if ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'true', 'false', d)}; then
-		sed -i -e '1s,#!.*python3,#! /usr/bin/python3,' \
-		${D}${sbindir}/dnssec-coverage \
-		${D}${sbindir}/dnssec-checkds \
-		${D}${sbindir}/dnssec-keymgr
-	fi
-
-	# Install systemd related files
-	install -d ${D}${sbindir}
-	install -m 755 ${WORKDIR}/generate-rndc-key.sh ${D}${sbindir}
-	install -d ${D}${systemd_system_unitdir}
-	install -m 0644 ${WORKDIR}/named.service ${D}${systemd_system_unitdir}
-	sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
-	       -e 's,@SBINDIR@,${sbindir},g' \
-	       ${D}${systemd_system_unitdir}/named.service
-
-	install -d ${D}${sysconfdir}/default
-	install -m 0644 ${WORKDIR}/bind9 ${D}${sysconfdir}/default
-
-	if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-		install -d ${D}${sysconfdir}/tmpfiles.d
-		echo "d /run/named 0755 bind bind - -" > ${D}${sysconfdir}/tmpfiles.d/bind.conf
-	fi
-
-    oe_multilib_header isc/platform.h
-}
-
-CONFFILES:${PN} = " \
-	${sysconfdir}/bind/named.conf \
-	${sysconfdir}/bind/named.conf.local \
-	${sysconfdir}/bind/named.conf.options \
-	${sysconfdir}/bind/db.0 \
-	${sysconfdir}/bind/db.127 \
-	${sysconfdir}/bind/db.empty \
-	${sysconfdir}/bind/db.local \
-	${sysconfdir}/bind/db.root \
-	"
-
-ALTERNATIVE:${PN}-utils = "nslookup"
-ALTERNATIVE_LINK_NAME[nslookup] = "${bindir}/nslookup"
-ALTERNATIVE_PRIORITY = "100"
-
-PACKAGE_BEFORE_PN += "${PN}-utils"
-FILES:${PN}-utils = "${bindir}/host ${bindir}/dig ${bindir}/mdig ${bindir}/nslookup ${bindir}/nsupdate"
-FILES:${PN}-dev += "${bindir}/isc-config.h"
-FILES:${PN} += "${sbindir}/generate-rndc-key.sh"
-
-PACKAGE_BEFORE_PN += "${PN}-libs"
-# special arrangement below due to
-# https://github.com/isc-projects/bind9/commit/0e25af628cd776f98c04fc4cc59048f5448f6c88
-FILES_SOLIBSDEV = "${libdir}/*[!0-9].so ${libdir}/libbind9.so"
-FILES:${PN}-libs = "${libdir}/named/*.so* ${libdir}/*-${PV}.so"
-FILES:${PN}-staticdev += "${libdir}/*.la"
-
-PACKAGE_BEFORE_PN += "${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-bind', '', d)}"
-FILES:python3-bind = "${sbindir}/dnssec-coverage ${sbindir}/dnssec-checkds \
-                ${sbindir}/dnssec-keymgr ${PYTHON_SITEPACKAGES_DIR}"
-
-RDEPENDS:${PN}-dev = ""
-RDEPENDS:python3-bind = "python3-core python3-ply"
diff --git a/poky/meta/recipes-connectivity/bind/bind_9.16.21.bb b/poky/meta/recipes-connectivity/bind/bind_9.16.21.bb
new file mode 100644
index 0000000..390c842
--- /dev/null
+++ b/poky/meta/recipes-connectivity/bind/bind_9.16.21.bb
@@ -0,0 +1,129 @@
+SUMMARY = "ISC Internet Domain Name Server"
+HOMEPAGE = "https://www.isc.org/bind/"
+DESCRIPTION = "BIND 9 provides a full-featured Domain Name Server system"
+SECTION = "console/network"
+
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=ef10b4de6371115dcecdc38ca2af4561"
+
+DEPENDS = "openssl libcap zlib libuv"
+
+SRC_URI = "https://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.xz \
+           file://conf.patch \
+           file://named.service \
+           file://bind9 \
+           file://generate-rndc-key.sh \
+           file://make-etc-initd-bind-stop-work.patch \
+           file://init.d-add-support-for-read-only-rootfs.patch \
+           file://bind-ensure-searching-for-json-headers-searches-sysr.patch \
+           file://0001-named-lwresd-V-and-start-log-hide-build-options.patch \
+           file://0001-avoid-start-failure-with-bind-user.patch \
+           "
+
+SRC_URI[sha256sum] = "65da5fd4fb80b7d0d7452876f81fd6d67cdcee54a5e3c1d65610334665dfa815"
+
+UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
+# stay at 9.16 follow the ESV versions divisible by 4
+UPSTREAM_CHECK_REGEX = "(?P<pver>9.(16|20|24|28)(\.\d+)+(-P\d+)*)/"
+
+# Issue only affects dhcpd with recent bind versions. We don't ship dhcpd anymore
+# so the issue doesn't affect us.
+CVE_CHECK_WHITELIST += "CVE-2019-6470"
+
+inherit autotools update-rc.d systemd useradd pkgconfig multilib_header update-alternatives
+
+# PACKAGECONFIGs readline and libedit should NOT be set at same time
+PACKAGECONFIG ?= "readline"
+PACKAGECONFIG[httpstats] = "--with-libxml2=${STAGING_DIR_HOST}${prefix},--without-libxml2,libxml2"
+PACKAGECONFIG[readline] = "--with-readline=-lreadline,,readline"
+PACKAGECONFIG[libedit] = "--with-readline=-ledit,,libedit"
+PACKAGECONFIG[python3] = "--with-python=yes --with-python-install-dir=${PYTHON_SITEPACKAGES_DIR} , --without-python, python3-ply-native,"
+
+EXTRA_OECONF = " --with-libtool --disable-devpoll --disable-auto-validation --enable-epoll \
+                 --with-gssapi=no --with-lmdb=no --with-zlib \
+                 --sysconfdir=${sysconfdir}/bind \
+                 --with-openssl=${STAGING_DIR_HOST}${prefix} \
+               "
+LDFLAGS:append = " -lz"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3native distutils3-base', '', d)}
+
+# dhcp needs .la so keep them
+REMOVE_LIBTOOL_LA = "0"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --home ${localstatedir}/cache/bind --no-create-home \
+                       --user-group bind"
+
+INITSCRIPT_NAME = "bind"
+INITSCRIPT_PARAMS = "defaults"
+
+SYSTEMD_SERVICE:${PN} = "named.service"
+
+do_install:append() {
+
+	install -d -o bind "${D}${localstatedir}/cache/bind"
+	install -d "${D}${sysconfdir}/bind"
+	install -d "${D}${sysconfdir}/init.d"
+	install -m 644 ${S}/conf/* "${D}${sysconfdir}/bind/"
+	install -m 755 "${S}/init.d" "${D}${sysconfdir}/init.d/bind"
+        if ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'true', 'false', d)}; then
+		sed -i -e '1s,#!.*python3,#! /usr/bin/python3,' \
+		${D}${sbindir}/dnssec-coverage \
+		${D}${sbindir}/dnssec-checkds \
+		${D}${sbindir}/dnssec-keymgr
+	fi
+
+	# Install systemd related files
+	install -d ${D}${sbindir}
+	install -m 755 ${WORKDIR}/generate-rndc-key.sh ${D}${sbindir}
+	install -d ${D}${systemd_system_unitdir}
+	install -m 0644 ${WORKDIR}/named.service ${D}${systemd_system_unitdir}
+	sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+	       -e 's,@SBINDIR@,${sbindir},g' \
+	       ${D}${systemd_system_unitdir}/named.service
+
+	install -d ${D}${sysconfdir}/default
+	install -m 0644 ${WORKDIR}/bind9 ${D}${sysconfdir}/default
+
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+		install -d ${D}${sysconfdir}/tmpfiles.d
+		echo "d /run/named 0755 bind bind - -" > ${D}${sysconfdir}/tmpfiles.d/bind.conf
+	fi
+
+    oe_multilib_header isc/platform.h
+}
+
+CONFFILES:${PN} = " \
+	${sysconfdir}/bind/named.conf \
+	${sysconfdir}/bind/named.conf.local \
+	${sysconfdir}/bind/named.conf.options \
+	${sysconfdir}/bind/db.0 \
+	${sysconfdir}/bind/db.127 \
+	${sysconfdir}/bind/db.empty \
+	${sysconfdir}/bind/db.local \
+	${sysconfdir}/bind/db.root \
+	"
+
+ALTERNATIVE:${PN}-utils = "nslookup"
+ALTERNATIVE_LINK_NAME[nslookup] = "${bindir}/nslookup"
+ALTERNATIVE_PRIORITY = "100"
+
+PACKAGE_BEFORE_PN += "${PN}-utils"
+FILES:${PN}-utils = "${bindir}/host ${bindir}/dig ${bindir}/mdig ${bindir}/nslookup ${bindir}/nsupdate"
+FILES:${PN}-dev += "${bindir}/isc-config.h"
+FILES:${PN} += "${sbindir}/generate-rndc-key.sh"
+
+PACKAGE_BEFORE_PN += "${PN}-libs"
+# special arrangement below due to
+# https://github.com/isc-projects/bind9/commit/0e25af628cd776f98c04fc4cc59048f5448f6c88
+FILES_SOLIBSDEV = "${libdir}/*[!0-9].so ${libdir}/libbind9.so"
+FILES:${PN}-libs = "${libdir}/named/*.so* ${libdir}/*-${PV}.so"
+FILES:${PN}-staticdev += "${libdir}/*.la"
+
+PACKAGE_BEFORE_PN += "${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-bind', '', d)}"
+FILES:python3-bind = "${sbindir}/dnssec-coverage ${sbindir}/dnssec-checkds \
+                ${sbindir}/dnssec-keymgr ${PYTHON_SITEPACKAGES_DIR}"
+
+RDEPENDS:${PN}-dev = ""
+RDEPENDS:python3-bind = "python3-core python3-ply"
diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5.inc b/poky/meta/recipes-connectivity/bluez5/bluez5.inc
index 68f3b58..0a5fc9d 100644
--- a/poky/meta/recipes-connectivity/bluez5/bluez5.inc
+++ b/poky/meta/recipes-connectivity/bluez5/bluez5.inc
@@ -53,7 +53,6 @@
            ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \
            file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
            file://0001-test-gatt-Fix-hung-issue.patch \
-           file://0001-audio-Rename-pause-funciton-to-avoid-shadowing-glibc.patch \
            "
 S = "${WORKDIR}/bluez-${PV}"
 
diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5/0001-audio-Rename-pause-funciton-to-avoid-shadowing-glibc.patch b/poky/meta/recipes-connectivity/bluez5/bluez5/0001-audio-Rename-pause-funciton-to-avoid-shadowing-glibc.patch
deleted file mode 100644
index d9067df..0000000
--- a/poky/meta/recipes-connectivity/bluez5/bluez5/0001-audio-Rename-pause-funciton-to-avoid-shadowing-glibc.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 8adab7f1e04948e78854953f9373cac741445a0f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 30 Apr 2021 21:09:33 -0700
-Subject: [PATCH] audio: Rename pause funciton to avoid shadowing glibc
- defintions
-
-Fixes
-profiles/audio/media.c:1284:13: error: static declaration of 'pause' follows non-static declaration
-static bool pause(void *user_data)
-            ^
-/mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux/bluez5/5.56-r0/recipe-sysroot/usr/include/unistd.h:478:12: note: previous declaration is here
-extern int pause (void);
-           ^
-../bluez-5.56/profiles/audio/media.c:1334:11: warning: incompatible function pointer types initializing 'bool (*)(void *)' with an expression of type 'int (void)' [-Wincompatible-function-pointer-types]
-        .pause = pause,
-                 ^~~~~
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- profiles/audio/media.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/profiles/audio/media.c b/profiles/audio/media.c
-index c84bbe2..7110089 100644
---- a/profiles/audio/media.c
-+++ b/profiles/audio/media.c
-@@ -1281,7 +1281,7 @@ static bool stop(void *user_data)
- 	return media_player_send(mp, "Stop");
- }
- 
--static bool pause(void *user_data)
-+static bool apause(void *user_data)
- {
- 	struct media_player *mp = user_data;
- 
-@@ -1331,7 +1331,7 @@ static struct avrcp_player_cb player_cb = {
- 	.set_volume = set_volume,
- 	.play = play,
- 	.stop = stop,
--	.pause = pause,
-+	.pause = apause,
- 	.next = next,
- 	.previous = previous,
- };
--- 
-2.31.1
-
diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5_5.61.bb b/poky/meta/recipes-connectivity/bluez5/bluez5_5.61.bb
deleted file mode 100644
index b2e5dd6..0000000
--- a/poky/meta/recipes-connectivity/bluez5/bluez5_5.61.bb
+++ /dev/null
@@ -1,70 +0,0 @@
-require bluez5.inc
-
-SRC_URI[sha256sum] = "83afd6c52179554bfeabbcb538fec2eb6be90a8ac3c40871b49d7ad8b49c423b"
-
-# These issues have kernel fixes rather than bluez fixes so exclude here
-CVE_CHECK_WHITELIST += "CVE-2020-12352 CVE-2020-24490"
-
-# noinst programs in Makefile.tools that are conditional on READLINE
-# support
-NOINST_TOOLS_READLINE ?= " \
-    ${@bb.utils.contains('PACKAGECONFIG', 'deprecated', 'attrib/gatttool', '', d)} \
-    tools/obex-client-tool \
-    tools/obex-server-tool \
-    tools/bluetooth-player \
-    tools/obexctl \
-    tools/btmgmt \
-"
-
-# noinst programs in Makefile.tools that are conditional on TESTING
-# support
-NOINST_TOOLS_TESTING ?= " \
-    emulator/btvirt \
-    emulator/b1ee \
-    emulator/hfp \
-    peripheral/btsensor \
-    tools/3dsp \
-    tools/mgmt-tester \
-    tools/gap-tester \
-    tools/l2cap-tester \
-    tools/sco-tester \
-    tools/smp-tester \
-    tools/hci-tester \
-    tools/rfcomm-tester \
-    tools/bnep-tester \
-    tools/userchan-tester \
-"
-
-# noinst programs in Makefile.tools that are conditional on TOOLS
-# support
-NOINST_TOOLS_BT ?= " \
-    tools/bdaddr \
-    tools/avinfo \
-    tools/avtest \
-    tools/scotest \
-    tools/amptest \
-    tools/hwdb \
-    tools/hcieventmask \
-    tools/hcisecfilter \
-    tools/btinfo \
-    tools/btsnoop \
-    tools/btproxy \
-    tools/btiotest \
-    tools/bneptest \
-    tools/mcaptest \
-    tools/cltest \
-    tools/oobtest \
-    tools/advtest \
-    tools/seq2bseq \
-    tools/nokfw \
-    tools/create-image \
-    tools/eddystone \
-    tools/ibeacon \
-    tools/btgatt-client \
-    tools/btgatt-server \
-    tools/test-runner \
-    tools/check-selftest \
-    tools/gatt-service \
-    profiles/iap/iapd \
-    ${@bb.utils.contains('PACKAGECONFIG', 'btpclient', 'tools/btpclient', '', d)} \
-"
diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5_5.62.bb b/poky/meta/recipes-connectivity/bluez5/bluez5_5.62.bb
new file mode 100644
index 0000000..411ac8b
--- /dev/null
+++ b/poky/meta/recipes-connectivity/bluez5/bluez5_5.62.bb
@@ -0,0 +1,70 @@
+require bluez5.inc
+
+SRC_URI[sha256sum] = "38090a5b750e17fc08d3e52178ed8d3254c5f4bd2c48830d5c1955b88e3bc0c2"
+
+# These issues have kernel fixes rather than bluez fixes so exclude here
+CVE_CHECK_WHITELIST += "CVE-2020-12352 CVE-2020-24490"
+
+# noinst programs in Makefile.tools that are conditional on READLINE
+# support
+NOINST_TOOLS_READLINE ?= " \
+    ${@bb.utils.contains('PACKAGECONFIG', 'deprecated', 'attrib/gatttool', '', d)} \
+    tools/obex-client-tool \
+    tools/obex-server-tool \
+    tools/bluetooth-player \
+    tools/obexctl \
+    tools/btmgmt \
+"
+
+# noinst programs in Makefile.tools that are conditional on TESTING
+# support
+NOINST_TOOLS_TESTING ?= " \
+    emulator/btvirt \
+    emulator/b1ee \
+    emulator/hfp \
+    peripheral/btsensor \
+    tools/3dsp \
+    tools/mgmt-tester \
+    tools/gap-tester \
+    tools/l2cap-tester \
+    tools/sco-tester \
+    tools/smp-tester \
+    tools/hci-tester \
+    tools/rfcomm-tester \
+    tools/bnep-tester \
+    tools/userchan-tester \
+"
+
+# noinst programs in Makefile.tools that are conditional on TOOLS
+# support
+NOINST_TOOLS_BT ?= " \
+    tools/bdaddr \
+    tools/avinfo \
+    tools/avtest \
+    tools/scotest \
+    tools/amptest \
+    tools/hwdb \
+    tools/hcieventmask \
+    tools/hcisecfilter \
+    tools/btinfo \
+    tools/btsnoop \
+    tools/btproxy \
+    tools/btiotest \
+    tools/bneptest \
+    tools/mcaptest \
+    tools/cltest \
+    tools/oobtest \
+    tools/advtest \
+    tools/seq2bseq \
+    tools/nokfw \
+    tools/create-image \
+    tools/eddystone \
+    tools/ibeacon \
+    tools/btgatt-client \
+    tools/btgatt-server \
+    tools/test-runner \
+    tools/check-selftest \
+    tools/gatt-service \
+    profiles/iap/iapd \
+    ${@bb.utils.contains('PACKAGECONFIG', 'btpclient', 'tools/btpclient', '', d)} \
+"
diff --git a/poky/meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.0.bb b/poky/meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.0.bb
deleted file mode 100644
index dbad8c8..0000000
--- a/poky/meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.0.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SECTION = "console/network"
-SUMMARY = "dhcpcd - a DHCP client"
-DESCRIPTION = "dhcpcd runs on your machine and silently configures your \
-               computer to work on the attached networks without trouble \
-               and mostly without configuration."
-
-HOMEPAGE = "http://roy.marples.name/projects/dhcpcd/"
-
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=9674cc803c5d71306941e6e8b5c002f2"
-
-UPSTREAM_CHECK_URI = "https://roy.marples.name/downloads/dhcpcd/"
-
-SRC_URI = "https://roy.marples.name/downloads/${BPN}/${BPN}-${PV}.tar.xz \
-           file://0001-remove-INCLUDEDIR-to-prevent-build-issues.patch \
-           file://0002-src-privsep-linux.c-add-support-for-arc-28.patch \
-           file://dhcpcd.service \
-           file://dhcpcd@.service \
-           "
-
-SRC_URI[sha256sum] = "41a69297f380bf15ee8f94f73154f8c2bca7157a087c0d5aca8de000ba1d4513"
-
-inherit pkgconfig autotools-brokensep systemd useradd
-
-SYSTEMD_SERVICE:${PN} = "dhcpcd.service"
-
-PACKAGECONFIG ?= "udev ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
-
-PACKAGECONFIG[udev] = "--with-udev,--without-udev,udev,udev"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6"
-# ntp conflicts with chrony
-PACKAGECONFIG[ntp] = "--with-hook=ntp, , ,ntp"
-PACKAGECONFIG[chrony] = "--with-hook=ntp, , ,chrony"
-PACKAGECONFIG[ypbind] = "--with-eghook=yp, , ,ypbind-mt"
-
-EXTRA_OECONF = "--enable-ipv4 \
-                --dbdir=${localstatedir}/lib/${BPN} \
-                --sbindir=${base_sbindir} \
-                --runstatedir=/run \
-                --enable-privsep \
-                --privsepuser=dhcpcd \
-                --with-hooks \
-                --with-eghooks \
-               "
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM:${PN} = "--system -d ${localstatedir}/lib/${BPN} -M -s /bin/false -U dhcpcd"
-
-do_install:append () {
-    # install systemd unit files
-    install -d ${D}${systemd_system_unitdir}
-    install -m 0644 ${WORKDIR}/dhcpcd*.service ${D}${systemd_system_unitdir}
-
-    chmod 700 ${D}${localstatedir}/lib/${BPN}
-    chown dhcpcd:dhcpcd ${D}${localstatedir}/lib/${BPN}
-}
-
-FILES:${PN}-dbg += "${libdir}/dhcpcd/dev/.debug"
diff --git a/poky/meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.1.bb b/poky/meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.1.bb
new file mode 100644
index 0000000..4007a4b
--- /dev/null
+++ b/poky/meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.1.bb
@@ -0,0 +1,57 @@
+SECTION = "console/network"
+SUMMARY = "dhcpcd - a DHCP client"
+DESCRIPTION = "dhcpcd runs on your machine and silently configures your \
+               computer to work on the attached networks without trouble \
+               and mostly without configuration."
+
+HOMEPAGE = "http://roy.marples.name/projects/dhcpcd/"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d148485768fe85b9f1072b186a7e9b4d"
+
+UPSTREAM_CHECK_URI = "https://roy.marples.name/downloads/dhcpcd/"
+
+SRC_URI = "https://roy.marples.name/downloads/${BPN}/${BPN}-${PV}.tar.xz \
+           file://0001-remove-INCLUDEDIR-to-prevent-build-issues.patch \
+           file://dhcpcd.service \
+           file://dhcpcd@.service \
+           "
+
+SRC_URI[sha256sum] = "819357634efed1ea5cf44ec01b24d3d3f8852fec8b4249925dcc5667c54e376c"
+
+inherit pkgconfig autotools-brokensep systemd useradd
+
+SYSTEMD_SERVICE:${PN} = "dhcpcd.service"
+
+PACKAGECONFIG ?= "udev ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
+
+PACKAGECONFIG[udev] = "--with-udev,--without-udev,udev,udev"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6"
+# ntp conflicts with chrony
+PACKAGECONFIG[ntp] = "--with-hook=ntp, , ,ntp"
+PACKAGECONFIG[chrony] = "--with-hook=ntp, , ,chrony"
+PACKAGECONFIG[ypbind] = "--with-eghook=yp, , ,ypbind-mt"
+
+EXTRA_OECONF = "--enable-ipv4 \
+                --dbdir=${localstatedir}/lib/${BPN} \
+                --sbindir=${base_sbindir} \
+                --runstatedir=/run \
+                --enable-privsep \
+                --privsepuser=dhcpcd \
+                --with-hooks \
+                --with-eghooks \
+               "
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system -d ${localstatedir}/lib/${BPN} -M -s /bin/false -U dhcpcd"
+
+do_install:append () {
+    # install systemd unit files
+    install -d ${D}${systemd_system_unitdir}
+    install -m 0644 ${WORKDIR}/dhcpcd*.service ${D}${systemd_system_unitdir}
+
+    chmod 700 ${D}${localstatedir}/lib/${BPN}
+    chown dhcpcd:dhcpcd ${D}${localstatedir}/lib/${BPN}
+}
+
+FILES:${PN}-dbg += "${libdir}/dhcpcd/dev/.debug"
diff --git a/poky/meta/recipes-connectivity/dhcpcd/files/0002-src-privsep-linux.c-add-support-for-arc-28.patch b/poky/meta/recipes-connectivity/dhcpcd/files/0002-src-privsep-linux.c-add-support-for-arc-28.patch
deleted file mode 100644
index 045f06a..0000000
--- a/poky/meta/recipes-connectivity/dhcpcd/files/0002-src-privsep-linux.c-add-support-for-arc-28.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 82386110e67cf75c224e9817fce55e6b0f143266 Mon Sep 17 00:00:00 2001
-From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Date: Mon, 8 Feb 2021 07:23:54 +0100
-Subject: [PATCH] src/privsep-linux.c: add support for arc (#28)
-
-Fix the following build failure:
-
-privsep-linux.c:206:4: error: #error "Platform does not support seccomp filter yet"
- #  error "Platform does not support seccomp filter yet"
-    ^~~~~
-In file included from privsep-linux.c:36:
-privsep-linux.c:213:38: error: 'SECCOMP_AUDIT_ARCH' undeclared here (not in a function); did you mean 'SECCOMP_ALLOW_ARG'?
-  BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, SECCOMP_AUDIT_ARCH, 1, 0),
-                                      ^~~~~~~~~~~~~~~~~~
-
-It should be noted that AUDIT_ARCH_{ARCOMPACT,ARCV2} is only defined
-since kernel 5.2 and
-https://github.com/torvalds/linux/commit/67f2a8a29311841ba6ab9b0e2d1b8f1e9978cd84
-
-Detection of arc compact and arc v2 have been "copy/pasted" from
-https://github.com/wbx-github/uclibc-ng/commit/afab56958f1cbb47b831ee3ebff231dfbae74af2
-
-Fixes:
- - http://autobuild.buildroot.org/results/d29083700a80dd647621eed06faeeae03f0587d3
-
-Upstream-Status: Backport [https://github.com/NetworkConfiguration/dhcpcd/commit/82386110e67cf75c224e9817fce55e6b0f143266]
-
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
----
- src/privsep-linux.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/src/privsep-linux.c b/src/privsep-linux.c
-index 402667af..21d41a9a 100644
---- a/src/privsep-linux.c
-+++ b/src/privsep-linux.c
-@@ -149,6 +149,22 @@ ps_root_sendnetlink(struct dhcpcd_ctx *ctx, int protocol, struct msghdr *msg)
- #  define SECCOMP_AUDIT_ARCH AUDIT_ARCH_I386
- #elif defined(__x86_64__)
- #  define SECCOMP_AUDIT_ARCH AUDIT_ARCH_X86_64
-+#elif defined(__arc__)
-+#  if defined(__A7__)
-+#    if (BYTE_ORDER == LITTLE_ENDIAN)
-+#      define SECCOMP_AUDIT_ARCH AUDIT_ARCH_ARCOMPACT
-+#    else
-+#      define SECCOMP_AUDIT_ARCH AUDIT_ARCH_ARCOMPACTBE
-+#    endif
-+#  elif defined(__HS__)
-+#    if (BYTE_ORDER == LITTLE_ENDIAN)
-+#      define SECCOMP_AUDIT_ARCH AUDIT_ARCH_ARCV2
-+#    else
-+#      define SECCOMP_AUDIT_ARCH AUDIT_ARCH_ARCV2BE
-+#    endif
-+#  else
-+#    error "Platform does not support seccomp filter yet"
-+#  endif
- #elif defined(__arm__)
- #  ifndef EM_ARM
- #    define EM_ARM 40
--- 
-2.16.2
-
diff --git a/poky/meta/recipes-connectivity/inetutils/inetutils/CVE-2021-40491.patch b/poky/meta/recipes-connectivity/inetutils/inetutils/CVE-2021-40491.patch
deleted file mode 100644
index 202488f..0000000
--- a/poky/meta/recipes-connectivity/inetutils/inetutils/CVE-2021-40491.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 98ccabf68e5b3f0a177bd1925581753d10041448 Mon Sep 17 00:00:00 2001
-From: Simon Josefsson <simon@josefsson.org>
-Date: Wed, 1 Sep 2021 09:09:50 +0200
-Subject: [PATCH] ftp: check that PASV/LSPV addresses match.
-
-* NEWS: Mention change.
-* ftp/ftp.c (initconn): Validate returned addresses.
-
-CVE: CVE-2021-40491
-
-Upstream-Status: Backport
-[https://git.savannah.gnu.org/cgit/inetutils.git/commit/?id=58cb043b190fd04effdaea7c9403416b436e50dd]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- NEWS      |  9 +++++++++
- ftp/ftp.c | 21 +++++++++++++++++++++
- 2 files changed, 30 insertions(+)
-
-diff --git a/NEWS b/NEWS
-index 7c5e62c..bd9a4da 100644
---- a/NEWS
-+++ b/NEWS
-@@ -4,6 +4,15 @@ GNU inetutils NEWS -- history of user-visible changes.
- 
- ** ftp
- 
-+The ftp client now validate addresses returned by PASV/LSPV responses,
-+to make sure they match the server address.  Reported by ZeddYu Lu in
-+<https://lists.gnu.org/archive/html/bug-inetutils/2021-06/msg00002.html>.
-+
-+Thanks to Luke Mewburn <lukem@netbsd.org> for discussion and fix to
-+NetBSD code, we used a similar solution.
-+
-+** ftp
-+
- Disable use of readline when environment variable TERM is unset or set
- to "dumb" (caused problems with Emacs AngeFTP on MacOS).  Thanks to
- Alex Bochannek for report, debugging and patch.
-diff --git a/ftp/ftp.c b/ftp/ftp.c
-index d21dbdd..7513539 100644
---- a/ftp/ftp.c
-+++ b/ftp/ftp.c
-@@ -1365,6 +1365,13 @@ initconn (void)
- 		  uint32_t *pu32 = (uint32_t *) &data_addr_sa4->sin_addr.s_addr;
- 		  pu32[0] = htonl ( (h[0] << 24) | (h[1] << 16) | (h[2] << 8) | h[3]);
- 		}
-+		if (data_addr_sa4->sin_addr.s_addr
-+		    != ((struct sockaddr_in *) &hisctladdr)->sin_addr.s_addr)
-+		  {
-+		    printf ("Passive mode address mismatch.\n");
-+		    (void) command ("ABOR");	/* Cancel any open connection.  */
-+		    goto bad;
-+		  }
- 	    } /* LPSV IPv4 */
- 	  else /* IPv6 */
- 	    {
-@@ -1395,6 +1402,13 @@ initconn (void)
- 		  pu32[2] = htonl ( (h[8] << 24) | (h[9] << 16) | (h[10] << 8) | h[11]);
- 		  pu32[3] = htonl ( (h[12] << 24) | (h[13] << 16) | (h[14] << 8) | h[15]);
- 		}
-+		if (data_addr_sa6->sin6_addr.s6_addr
-+		    != ((struct sockaddr_in6 *) &hisctladdr)->sin6_addr.s6_addr)
-+		  {
-+		    printf ("Passive mode address mismatch.\n");
-+		    (void) command ("ABOR");	/* Cancel any open connection.  */
-+		    goto bad;
-+		  }
- 	    } /* LPSV IPv6 */
- 	}
-       else /* !EPSV && !LPSV */
-@@ -1415,6 +1429,13 @@ initconn (void)
- 			 | ((a2 & 0xff) << 8) | (a3 & 0xff) );
- 	      data_addr_sa4->sin_port =
- 		  htons (((p0 & 0xff) << 8) | (p1 & 0xff));
-+	      if (data_addr_sa4->sin_addr.s_addr
-+		  != ((struct sockaddr_in *) &hisctladdr)->sin_addr.s_addr)
-+		{
-+		  printf ("Passive mode address mismatch.\n");
-+		  (void) command ("ABOR");	/* Cancel any open connection.  */
-+		  goto bad;
-+		}
- 	    } /* PASV */
- 	  else
- 	    {
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch b/poky/meta/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch
index 7d5c087..2343c03 100644
--- a/poky/meta/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch
+++ b/poky/meta/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch
@@ -1,4 +1,4 @@
-From 684e45b34a33186bb17bcee0b01814c549a60bf6 Mon Sep 17 00:00:00 2001
+From cc66e842e037fba9f06761f942abe5c4856492b8 Mon Sep 17 00:00:00 2001
 From: Kai Kang <kai.kang@windriver.com>
 Date: Wed, 6 Mar 2019 09:36:11 -0500
 Subject: [PATCH] inetutils: Import version 1.9.4
@@ -15,10 +15,10 @@
  1 file changed, 14 insertions(+), 1 deletion(-)
 
 diff --git a/configure.ac b/configure.ac
-index 86136fb..b220319 100644
+index 5e16c3a..18510a8 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -183,6 +183,19 @@ AC_SUBST(LIBUTIL)
+@@ -182,6 +182,19 @@ AC_SUBST(LIBUTIL)
  
  # See if we have libpam.a.  Investigate PAM versus Linux-PAM.
  if test "$with_pam" = yes ; then
@@ -38,12 +38,12 @@
    AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl)
    AC_CHECK_LIB(pam, pam_authenticate, LIBPAM=-lpam)
    if test "$ac_cv_lib_pam_pam_authenticate" = yes ; then
-@@ -620,7 +633,7 @@ AC_HEADER_DIRENT
- AC_CHECK_HEADERS([arpa/nameser.h arpa/tftp.h errno.h fcntl.h features.h \
+@@ -617,7 +630,7 @@ AC_HEADER_DIRENT
+ AC_CHECK_HEADERS([arpa/nameser.h arpa/tftp.h fcntl.h features.h \
  		  glob.h memory.h netinet/ether.h netinet/in_systm.h \
  		  netinet/ip.h netinet/ip_icmp.h netinet/ip_var.h \
 -		  security/pam_appl.h shadow.h \
 +		  shadow.h \
- 		  stdarg.h stdlib.h string.h stropts.h sys/tty.h \
+ 		  stropts.h sys/tty.h \
  		  sys/utsname.h sys/ptyvar.h sys/msgbuf.h sys/filio.h \
  		  sys/ioctl_compat.h sys/cdefs.h sys/stream.h sys/mkdev.h \
diff --git a/poky/meta/recipes-connectivity/inetutils/inetutils_2.1.bb b/poky/meta/recipes-connectivity/inetutils/inetutils_2.1.bb
deleted file mode 100644
index 45b88b1..0000000
--- a/poky/meta/recipes-connectivity/inetutils/inetutils_2.1.bb
+++ /dev/null
@@ -1,212 +0,0 @@
-DESCRIPTION = "The GNU inetutils are a collection of common \
-networking utilities and servers including ftp, ftpd, rcp, \
-rexec, rlogin, rlogind, rsh, rshd, syslog, syslogd, talk, \
-talkd, telnet, telnetd, tftp, tftpd, and uucpd."
-HOMEPAGE = "http://www.gnu.org/software/inetutils"
-SECTION = "net"
-DEPENDS = "ncurses netbase readline virtual/crypt"
-
-LICENSE = "GPLv3"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7"
-
-SRC_URI[sha256sum] = "01b9a4bc73a47e63f6e8a07b76122d9ad2a2e46ebf14870e9c91d660b5647a22"
-SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.xz \
-           file://inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch \
-           file://inetutils-1.8-0003-wchar.patch \
-           file://rexec.xinetd.inetutils  \
-           file://rlogin.xinetd.inetutils \
-           file://rsh.xinetd.inetutils \
-           file://telnet.xinetd.inetutils \
-           file://tftpd.xinetd.inetutils \
-           file://inetutils-1.9-PATH_PROCNET_DEV.patch \
-           file://inetutils-only-check-pam_appl.h-when-pam-enabled.patch \
-           file://CVE-2021-40491.patch \
-"
-
-inherit autotools gettext update-alternatives texinfo
-
-acpaths = "-I ./m4"
-
-SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '', 'file://fix-disable-ipv6.patch', d)}"
-
-PACKAGECONFIG ??= "ftp uucpd \
-                   ${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6 ping6', '', d)} \
-                  "
-PACKAGECONFIG[ftp] = "--enable-ftp,--disable-ftp,readline"
-PACKAGECONFIG[uucpd] = "--enable-uucpd,--disable-uucpd,readline"
-PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6 gl_cv_socket_ipv6=no,"
-PACKAGECONFIG[ping6] = "--enable-ping6,--disable-ping6,"
-
-EXTRA_OECONF = "--with-ncurses-include-dir=${STAGING_INCDIR} \
-        inetutils_cv_path_login=${base_bindir}/login \
-        --with-libreadline-prefix=${STAGING_LIBDIR} \
-        --enable-rpath=no \
-"
-
-# These are horrible for security, disable them
-EXTRA_OECONF:append = " --disable-rsh --disable-rshd --disable-rcp \
-        --disable-rlogin --disable-rlogind --disable-rexec --disable-rexecd"
-
-do_configure:prepend () {
-    export HELP2MAN='true'
-    cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${S}/build-aux/config.rpath
-    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
-    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
-    rm -f ${S}/glob/configure*
-}
-
-do_install:append () {
-    install -m 0755 -d ${D}${base_sbindir}
-    install -m 0755 -d ${D}${sbindir}
-    install -m 0755 -d ${D}${sysconfdir}/xinetd.d
-    if [ "${base_bindir}" != "${bindir}" ] ; then
-         install -m 0755 -d ${D}${base_bindir}
-         mv ${D}${bindir}/ping* ${D}${base_bindir}/
-         mv ${D}${bindir}/hostname ${D}${base_bindir}/
-         mv ${D}${bindir}/dnsdomainname ${D}${base_bindir}/
-    fi
-    mv ${D}${bindir}/ifconfig ${D}${base_sbindir}/
-    mv ${D}${libexecdir}/syslogd ${D}${base_sbindir}/
-    mv ${D}${libexecdir}/tftpd ${D}${sbindir}/in.tftpd
-    mv ${D}${libexecdir}/telnetd ${D}${sbindir}/in.telnetd
-    if [ -e ${D}${libexecdir}/rexecd ]; then
-        mv ${D}${libexecdir}/rexecd ${D}${sbindir}/in.rexecd
-        cp ${WORKDIR}/rexec.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rexec
-    fi
-    if [ -e ${D}${libexecdir}/rlogind ]; then
-        mv ${D}${libexecdir}/rlogind ${D}${sbindir}/in.rlogind
-        cp ${WORKDIR}/rlogin.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rlogin
-    fi
-    if [ -e ${D}${libexecdir}/rshd ]; then
-        mv ${D}${libexecdir}/rshd ${D}${sbindir}/in.rshd
-        cp ${WORKDIR}/rsh.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rsh
-    fi
-    if [ -e ${D}${libexecdir}/talkd ]; then
-        mv ${D}${libexecdir}/talkd ${D}${sbindir}/in.talkd
-    fi
-    mv ${D}${libexecdir}/uucpd ${D}${sbindir}/in.uucpd
-    mv ${D}${libexecdir}/* ${D}${bindir}/
-    cp ${WORKDIR}/telnet.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/telnet
-    cp ${WORKDIR}/tftpd.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/tftpd
-
-    sed -e 's,@SBINDIR@,${sbindir},g' -i ${D}/${sysconfdir}/xinetd.d/*
-    if [ -e ${D}${libdir}/charset.alias ]; then
-        rm -rf ${D}${libdir}/charset.alias
-    fi
-    rm -rf ${D}${libexecdir}/
-    # remove usr/lib if empty
-    rmdir ${D}${libdir} || true
-}
-
-PACKAGES =+ "${PN}-ping ${PN}-ping6 ${PN}-hostname ${PN}-ifconfig \
-${PN}-tftp ${PN}-logger ${PN}-traceroute ${PN}-syslogd \
-${PN}-ftp ${PN}-ftpd ${PN}-tftpd ${PN}-telnet ${PN}-telnetd ${PN}-inetd \
-${PN}-rsh ${PN}-rshd"
-
-# The packages tftpd, telnetd and rshd conflict with the ones
-# provided by netkit, so add the corresponding -dbg packages
-# for them to avoid the confliction between the dbg package
-# of inetutils and netkit.
-PACKAGES =+ "${PN}-tftpd-dbg ${PN}-telnetd-dbg ${PN}-rshd-dbg"
-NOAUTOPACKAGEDEBUG = "1"
-
-ALTERNATIVE_PRIORITY = "79"
-ALTERNATIVE:${PN} = "whois dnsdomainname"
-ALTERNATIVE_LINK_NAME[uucpd]  = "${sbindir}/in.uucpd"
-ALTERNATIVE_LINK_NAME[dnsdomainname]  = "${base_bindir}/dnsdomainname"
-
-ALTERNATIVE_PRIORITY_${PN}-logger = "60"
-ALTERNATIVE:${PN}-logger = "logger"
-ALTERNATIVE:${PN}-syslogd = "syslogd"
-ALTERNATIVE_LINK_NAME[syslogd]  = "${base_sbindir}/syslogd"
-
-ALTERNATIVE:${PN}-ftp = "ftp"
-ALTERNATIVE:${PN}-ftpd = "ftpd"
-ALTERNATIVE:${PN}-tftp = "tftp"
-ALTERNATIVE:${PN}-tftpd = "tftpd"
-ALTERNATIVE_LINK_NAME[tftpd] = "${sbindir}/tftpd"
-ALTERNATIVE_TARGET[tftpd]  = "${sbindir}/in.tftpd"
-
-ALTERNATIVE:${PN}-telnet = "telnet"
-ALTERNATIVE:${PN}-telnetd = "telnetd"
-ALTERNATIVE_LINK_NAME[telnetd] = "${sbindir}/telnetd"
-ALTERNATIVE_TARGET[telnetd] = "${sbindir}/in.telnetd"
-
-ALTERNATIVE:${PN}-inetd= "inetd"
-ALTERNATIVE:${PN}-traceroute = "traceroute"
-
-ALTERNATIVE:${PN}-hostname = "hostname"
-ALTERNATIVE_LINK_NAME[hostname]  = "${base_bindir}/hostname"
-
-ALTERNATIVE:${PN}-doc = "hostname.1 dnsdomainname.1 logger.1 syslogd.8 \
-                         tftpd.8 tftp.1 telnetd.8"
-ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
-ALTERNATIVE_LINK_NAME[dnsdomainname.1] = "${mandir}/man1/dnsdomainname.1"
-ALTERNATIVE_LINK_NAME[logger.1] = "${mandir}/man1/logger.1"
-ALTERNATIVE_LINK_NAME[syslogd.8] = "${mandir}/man8/syslogd.8"
-ALTERNATIVE_LINK_NAME[telnetd.8] = "${mandir}/man8/telnetd.8"
-ALTERNATIVE_LINK_NAME[tftpd.8] = "${mandir}/man8/tftpd.8"
-ALTERNATIVE_LINK_NAME[tftp.1] = "${mandir}/man1/tftp.1"
-
-ALTERNATIVE:${PN}-ifconfig = "ifconfig"
-ALTERNATIVE_LINK_NAME[ifconfig]  = "${base_sbindir}/ifconfig"
-
-ALTERNATIVE:${PN}-ping = "ping"
-ALTERNATIVE_LINK_NAME[ping]   = "${base_bindir}/ping"
-
-ALTERNATIVE:${PN}-ping6 = "${@bb.utils.filter('PACKAGECONFIG', 'ping6', d)}"
-ALTERNATIVE_LINK_NAME[ping6]  = "${base_bindir}/ping6"
-
-
-FILES:${PN}-dbg += "${base_bindir}/.debug ${base_sbindir}/.debug ${bindir}/.debug ${sbindir}/.debug"
-FILES:${PN}-ping = "${base_bindir}/ping.${BPN}"
-FILES:${PN}-ping6 = "${base_bindir}/ping6.${BPN}"
-FILES:${PN}-hostname = "${base_bindir}/hostname.${BPN}"
-FILES:${PN}-ifconfig = "${base_sbindir}/ifconfig.${BPN}"
-FILES:${PN}-traceroute = "${bindir}/traceroute.${BPN}"
-FILES:${PN}-logger = "${bindir}/logger.${BPN}"
-
-FILES:${PN}-syslogd = "${base_sbindir}/syslogd.${BPN}"
-RCONFLICTS:${PN}-syslogd = "rsyslog busybox-syslog sysklogd syslog-ng"
-
-FILES:${PN}-ftp = "${bindir}/ftp.${BPN}"
-
-FILES:${PN}-tftp = "${bindir}/tftp.${BPN}"
-FILES:${PN}-telnet = "${bindir}/telnet.${BPN}"
-
-# We make us of RCONFLICTS / RPROVIDES here rather than using the normal
-# alternatives method as this leads to packaging QA issues when using
-# musl as that library does not provide what these applications need to
-# build.
-FILES:${PN}-rsh = "${bindir}/rsh ${bindir}/rlogin ${bindir}/rexec ${bindir}/rcp"
-RCONFLICTS:${PN}-rsh += "netkit-rsh-client"
-RPROVIDES:${PN}-rsh = "rsh"
-
-FILES:${PN}-rshd = "${sbindir}/in.rshd ${sbindir}/in.rlogind ${sbindir}/in.rexecd \
-                    ${sysconfdir}/xinetd.d/rsh ${sysconfdir}/xinetd.d/rlogin ${sysconfdir}/xinetd.d/rexec"
-FILES:${PN}-rshd-dbg = "${sbindir}/.debug/in.rshd ${sbindir}/.debug/in.rlogind ${sbindir}/.debug/in.rexecd"
-RDEPENDS:${PN}-rshd += "xinetd tcp-wrappers"
-RCONFLICTS:${PN}-rshd += "netkit-rshd-server"
-RPROVIDES:${PN}-rshd = "rshd"
-
-FILES:${PN}-ftpd = "${bindir}/ftpd.${BPN}"
-FILES:${PN}-ftpd-dbg = "${bindir}/.debug/ftpd.${BPN}"
-RDEPENDS:${PN}-ftpd += "xinetd"
-
-FILES:${PN}-tftpd = "${sbindir}/in.tftpd ${sysconfdir}/xinetd.d/tftpd"
-FILES:${PN}-tftpd-dbg = "${sbindir}/.debug/in.tftpd"
-RCONFLICTS:${PN}-tftpd += "netkit-tftpd"
-RDEPENDS:${PN}-tftpd += "xinetd"
-
-FILES:${PN}-telnetd = "${sbindir}/in.telnetd ${sysconfdir}/xinetd.d/telnet"
-FILES:${PN}-telnetd-dbg = "${sbindir}/.debug/in.telnetd"
-RCONFLICTS:${PN}-telnetd += "netkit-telnet"
-RPROVIDES:${PN}-telnetd = "telnetd"
-RDEPENDS:${PN}-telnetd += "xinetd"
-
-FILES:${PN}-inetd = "${bindir}/inetd.${BPN}"
-
-RDEPENDS:${PN} = "xinetd"
diff --git a/poky/meta/recipes-connectivity/inetutils/inetutils_2.2.bb b/poky/meta/recipes-connectivity/inetutils/inetutils_2.2.bb
new file mode 100644
index 0000000..3bab137
--- /dev/null
+++ b/poky/meta/recipes-connectivity/inetutils/inetutils_2.2.bb
@@ -0,0 +1,211 @@
+DESCRIPTION = "The GNU inetutils are a collection of common \
+networking utilities and servers including ftp, ftpd, rcp, \
+rexec, rlogin, rlogind, rsh, rshd, syslog, syslogd, talk, \
+talkd, telnet, telnetd, tftp, tftpd, and uucpd."
+HOMEPAGE = "http://www.gnu.org/software/inetutils"
+SECTION = "net"
+DEPENDS = "ncurses netbase readline virtual/crypt"
+
+LICENSE = "GPLv3"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7"
+
+SRC_URI[sha256sum] = "d547f69172df73afef691a0f7886280fd781acea28def4ff4b4b212086a89d80"
+SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.xz \
+           file://inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch \
+           file://inetutils-1.8-0003-wchar.patch \
+           file://rexec.xinetd.inetutils  \
+           file://rlogin.xinetd.inetutils \
+           file://rsh.xinetd.inetutils \
+           file://telnet.xinetd.inetutils \
+           file://tftpd.xinetd.inetutils \
+           file://inetutils-1.9-PATH_PROCNET_DEV.patch \
+           file://inetutils-only-check-pam_appl.h-when-pam-enabled.patch \
+"
+
+inherit autotools gettext update-alternatives texinfo
+
+acpaths = "-I ./m4"
+
+SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '', 'file://fix-disable-ipv6.patch', d)}"
+
+PACKAGECONFIG ??= "ftp uucpd \
+                   ${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6 ping6', '', d)} \
+                  "
+PACKAGECONFIG[ftp] = "--enable-ftp,--disable-ftp,readline"
+PACKAGECONFIG[uucpd] = "--enable-uucpd,--disable-uucpd,readline"
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6 gl_cv_socket_ipv6=no,"
+PACKAGECONFIG[ping6] = "--enable-ping6,--disable-ping6,"
+
+EXTRA_OECONF = "--with-ncurses-include-dir=${STAGING_INCDIR} \
+        inetutils_cv_path_login=${base_bindir}/login \
+        --with-libreadline-prefix=${STAGING_LIBDIR} \
+        --enable-rpath=no \
+"
+
+# These are horrible for security, disable them
+EXTRA_OECONF:append = " --disable-rsh --disable-rshd --disable-rcp \
+        --disable-rlogin --disable-rlogind --disable-rexec --disable-rexecd"
+
+do_configure:prepend () {
+    export HELP2MAN='true'
+    cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${S}/build-aux/config.rpath
+    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
+    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
+    rm -f ${S}/glob/configure*
+}
+
+do_install:append () {
+    install -m 0755 -d ${D}${base_sbindir}
+    install -m 0755 -d ${D}${sbindir}
+    install -m 0755 -d ${D}${sysconfdir}/xinetd.d
+    if [ "${base_bindir}" != "${bindir}" ] ; then
+         install -m 0755 -d ${D}${base_bindir}
+         mv ${D}${bindir}/ping* ${D}${base_bindir}/
+         mv ${D}${bindir}/hostname ${D}${base_bindir}/
+         mv ${D}${bindir}/dnsdomainname ${D}${base_bindir}/
+    fi
+    mv ${D}${bindir}/ifconfig ${D}${base_sbindir}/
+    mv ${D}${libexecdir}/syslogd ${D}${base_sbindir}/
+    mv ${D}${libexecdir}/tftpd ${D}${sbindir}/in.tftpd
+    mv ${D}${libexecdir}/telnetd ${D}${sbindir}/in.telnetd
+    if [ -e ${D}${libexecdir}/rexecd ]; then
+        mv ${D}${libexecdir}/rexecd ${D}${sbindir}/in.rexecd
+        cp ${WORKDIR}/rexec.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rexec
+    fi
+    if [ -e ${D}${libexecdir}/rlogind ]; then
+        mv ${D}${libexecdir}/rlogind ${D}${sbindir}/in.rlogind
+        cp ${WORKDIR}/rlogin.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rlogin
+    fi
+    if [ -e ${D}${libexecdir}/rshd ]; then
+        mv ${D}${libexecdir}/rshd ${D}${sbindir}/in.rshd
+        cp ${WORKDIR}/rsh.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rsh
+    fi
+    if [ -e ${D}${libexecdir}/talkd ]; then
+        mv ${D}${libexecdir}/talkd ${D}${sbindir}/in.talkd
+    fi
+    mv ${D}${libexecdir}/uucpd ${D}${sbindir}/in.uucpd
+    mv ${D}${libexecdir}/* ${D}${bindir}/
+    cp ${WORKDIR}/telnet.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/telnet
+    cp ${WORKDIR}/tftpd.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/tftpd
+
+    sed -e 's,@SBINDIR@,${sbindir},g' -i ${D}/${sysconfdir}/xinetd.d/*
+    if [ -e ${D}${libdir}/charset.alias ]; then
+        rm -rf ${D}${libdir}/charset.alias
+    fi
+    rm -rf ${D}${libexecdir}/
+    # remove usr/lib if empty
+    rmdir ${D}${libdir} || true
+}
+
+PACKAGES =+ "${PN}-ping ${PN}-ping6 ${PN}-hostname ${PN}-ifconfig \
+${PN}-tftp ${PN}-logger ${PN}-traceroute ${PN}-syslogd \
+${PN}-ftp ${PN}-ftpd ${PN}-tftpd ${PN}-telnet ${PN}-telnetd ${PN}-inetd \
+${PN}-rsh ${PN}-rshd"
+
+# The packages tftpd, telnetd and rshd conflict with the ones
+# provided by netkit, so add the corresponding -dbg packages
+# for them to avoid the confliction between the dbg package
+# of inetutils and netkit.
+PACKAGES =+ "${PN}-tftpd-dbg ${PN}-telnetd-dbg ${PN}-rshd-dbg"
+NOAUTOPACKAGEDEBUG = "1"
+
+ALTERNATIVE_PRIORITY = "79"
+ALTERNATIVE:${PN} = "whois dnsdomainname"
+ALTERNATIVE_LINK_NAME[uucpd]  = "${sbindir}/in.uucpd"
+ALTERNATIVE_LINK_NAME[dnsdomainname]  = "${base_bindir}/dnsdomainname"
+
+ALTERNATIVE_PRIORITY_${PN}-logger = "60"
+ALTERNATIVE:${PN}-logger = "logger"
+ALTERNATIVE:${PN}-syslogd = "syslogd"
+ALTERNATIVE_LINK_NAME[syslogd]  = "${base_sbindir}/syslogd"
+
+ALTERNATIVE:${PN}-ftp = "ftp"
+ALTERNATIVE:${PN}-ftpd = "ftpd"
+ALTERNATIVE:${PN}-tftp = "tftp"
+ALTERNATIVE:${PN}-tftpd = "tftpd"
+ALTERNATIVE_LINK_NAME[tftpd] = "${sbindir}/tftpd"
+ALTERNATIVE_TARGET[tftpd]  = "${sbindir}/in.tftpd"
+
+ALTERNATIVE:${PN}-telnet = "telnet"
+ALTERNATIVE:${PN}-telnetd = "telnetd"
+ALTERNATIVE_LINK_NAME[telnetd] = "${sbindir}/telnetd"
+ALTERNATIVE_TARGET[telnetd] = "${sbindir}/in.telnetd"
+
+ALTERNATIVE:${PN}-inetd= "inetd"
+ALTERNATIVE:${PN}-traceroute = "traceroute"
+
+ALTERNATIVE:${PN}-hostname = "hostname"
+ALTERNATIVE_LINK_NAME[hostname]  = "${base_bindir}/hostname"
+
+ALTERNATIVE:${PN}-doc = "hostname.1 dnsdomainname.1 logger.1 syslogd.8 \
+                         tftpd.8 tftp.1 telnetd.8"
+ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
+ALTERNATIVE_LINK_NAME[dnsdomainname.1] = "${mandir}/man1/dnsdomainname.1"
+ALTERNATIVE_LINK_NAME[logger.1] = "${mandir}/man1/logger.1"
+ALTERNATIVE_LINK_NAME[syslogd.8] = "${mandir}/man8/syslogd.8"
+ALTERNATIVE_LINK_NAME[telnetd.8] = "${mandir}/man8/telnetd.8"
+ALTERNATIVE_LINK_NAME[tftpd.8] = "${mandir}/man8/tftpd.8"
+ALTERNATIVE_LINK_NAME[tftp.1] = "${mandir}/man1/tftp.1"
+
+ALTERNATIVE:${PN}-ifconfig = "ifconfig"
+ALTERNATIVE_LINK_NAME[ifconfig]  = "${base_sbindir}/ifconfig"
+
+ALTERNATIVE:${PN}-ping = "ping"
+ALTERNATIVE_LINK_NAME[ping]   = "${base_bindir}/ping"
+
+ALTERNATIVE:${PN}-ping6 = "${@bb.utils.filter('PACKAGECONFIG', 'ping6', d)}"
+ALTERNATIVE_LINK_NAME[ping6]  = "${base_bindir}/ping6"
+
+
+FILES:${PN}-dbg += "${base_bindir}/.debug ${base_sbindir}/.debug ${bindir}/.debug ${sbindir}/.debug"
+FILES:${PN}-ping = "${base_bindir}/ping.${BPN}"
+FILES:${PN}-ping6 = "${base_bindir}/ping6.${BPN}"
+FILES:${PN}-hostname = "${base_bindir}/hostname.${BPN}"
+FILES:${PN}-ifconfig = "${base_sbindir}/ifconfig.${BPN}"
+FILES:${PN}-traceroute = "${bindir}/traceroute.${BPN}"
+FILES:${PN}-logger = "${bindir}/logger.${BPN}"
+
+FILES:${PN}-syslogd = "${base_sbindir}/syslogd.${BPN}"
+RCONFLICTS:${PN}-syslogd = "rsyslog busybox-syslog sysklogd syslog-ng"
+
+FILES:${PN}-ftp = "${bindir}/ftp.${BPN}"
+
+FILES:${PN}-tftp = "${bindir}/tftp.${BPN}"
+FILES:${PN}-telnet = "${bindir}/telnet.${BPN}"
+
+# We make us of RCONFLICTS / RPROVIDES here rather than using the normal
+# alternatives method as this leads to packaging QA issues when using
+# musl as that library does not provide what these applications need to
+# build.
+FILES:${PN}-rsh = "${bindir}/rsh ${bindir}/rlogin ${bindir}/rexec ${bindir}/rcp"
+RCONFLICTS:${PN}-rsh += "netkit-rsh-client"
+RPROVIDES:${PN}-rsh = "rsh"
+
+FILES:${PN}-rshd = "${sbindir}/in.rshd ${sbindir}/in.rlogind ${sbindir}/in.rexecd \
+                    ${sysconfdir}/xinetd.d/rsh ${sysconfdir}/xinetd.d/rlogin ${sysconfdir}/xinetd.d/rexec"
+FILES:${PN}-rshd-dbg = "${sbindir}/.debug/in.rshd ${sbindir}/.debug/in.rlogind ${sbindir}/.debug/in.rexecd"
+RDEPENDS:${PN}-rshd += "xinetd tcp-wrappers"
+RCONFLICTS:${PN}-rshd += "netkit-rshd-server"
+RPROVIDES:${PN}-rshd = "rshd"
+
+FILES:${PN}-ftpd = "${bindir}/ftpd.${BPN}"
+FILES:${PN}-ftpd-dbg = "${bindir}/.debug/ftpd.${BPN}"
+RDEPENDS:${PN}-ftpd += "xinetd"
+
+FILES:${PN}-tftpd = "${sbindir}/in.tftpd ${sysconfdir}/xinetd.d/tftpd"
+FILES:${PN}-tftpd-dbg = "${sbindir}/.debug/in.tftpd"
+RCONFLICTS:${PN}-tftpd += "netkit-tftpd"
+RDEPENDS:${PN}-tftpd += "xinetd"
+
+FILES:${PN}-telnetd = "${sbindir}/in.telnetd ${sysconfdir}/xinetd.d/telnet"
+FILES:${PN}-telnetd-dbg = "${sbindir}/.debug/in.telnetd"
+RCONFLICTS:${PN}-telnetd += "netkit-telnet"
+RPROVIDES:${PN}-telnetd = "telnetd"
+RDEPENDS:${PN}-telnetd += "xinetd"
+
+FILES:${PN}-inetd = "${bindir}/inetd.${BPN}"
+
+RDEPENDS:${PN} = "xinetd"
diff --git a/poky/meta/recipes-connectivity/iproute2/iproute2_5.13.0.bb b/poky/meta/recipes-connectivity/iproute2/iproute2_5.13.0.bb
deleted file mode 100644
index 44575bd..0000000
--- a/poky/meta/recipes-connectivity/iproute2/iproute2_5.13.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require iproute2.inc
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \
-           file://0001-libc-compat.h-add-musl-workaround.patch \
-           "
-
-SRC_URI[sha256sum] = "72a2e53774cac9e65f7b617deebb2059f87e8960d6e9713e4d788cea966f1b36"
-
-# CFLAGS are computed in Makefile and reference CCOPTS
-#
-EXTRA_OEMAKE:append = " CCOPTS='${CFLAGS}'"
diff --git a/poky/meta/recipes-connectivity/iproute2/iproute2_5.14.0.bb b/poky/meta/recipes-connectivity/iproute2/iproute2_5.14.0.bb
new file mode 100644
index 0000000..27fb5c8
--- /dev/null
+++ b/poky/meta/recipes-connectivity/iproute2/iproute2_5.14.0.bb
@@ -0,0 +1,11 @@
+require iproute2.inc
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \
+           file://0001-libc-compat.h-add-musl-workaround.patch \
+           "
+
+SRC_URI[sha256sum] = "210fa785a52f3763c4287fd5ae63e246f6311bfaa48c424baab6d383bb7591d4"
+
+# CFLAGS are computed in Makefile and reference CCOPTS
+#
+EXTRA_OEMAKE:append = " CCOPTS='${CFLAGS}'"
diff --git a/poky/meta/recipes-connectivity/kea/files/0001-add-missing-headers-in-timer_mgr.cc.patch b/poky/meta/recipes-connectivity/kea/files/0001-add-missing-headers-in-timer_mgr.cc.patch
deleted file mode 100644
index 1cd8bc7..0000000
--- a/poky/meta/recipes-connectivity/kea/files/0001-add-missing-headers-in-timer_mgr.cc.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 11981d637273778f408d15f488cc9e1d244dcae8 Mon Sep 17 00:00:00 2001
-From: Andrei Pavel <andrei@isc.org>
-Date: Thu, 29 Jul 2021 21:33:42 +0300
-Subject: [PATCH] add missing headers in timer_mgr.cc
-
-Upstream-Status: Backport [https://github.com/isc-projects/kea/commit/2bba96164f6c5c8f56de7a5dc52af73bfd51cccd]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/lib/dhcpsrv/timer_mgr.cc | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/src/lib/dhcpsrv/timer_mgr.cc b/src/lib/dhcpsrv/timer_mgr.cc
-index 5ec4123..5611c46 100644
---- a/src/lib/dhcpsrv/timer_mgr.cc
-+++ b/src/lib/dhcpsrv/timer_mgr.cc
-@@ -14,6 +14,13 @@
- #include <functional>
- #include <utility>
- 
-+#include <exception>
-+#include <map>
-+#include <mutex>
-+#include <ostream>
-+#include <string>
-+#include <stddef.h>
-+
- using namespace isc;
- using namespace isc::asiolink;
- 
diff --git a/poky/meta/recipes-connectivity/kea/files/0001-ax_cpp11.m4-Include-memory-header.patch b/poky/meta/recipes-connectivity/kea/files/0001-ax_cpp11.m4-Include-memory-header.patch
deleted file mode 100644
index 4978cae..0000000
--- a/poky/meta/recipes-connectivity/kea/files/0001-ax_cpp11.m4-Include-memory-header.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 5314a4815006e3a42f3ce265d1597db700cdb784 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 26 Feb 2021 23:14:20 -0800
-Subject: [PATCH] ax_cpp11.m4: Include <memory> header
-
-This is needed for std::shared_ptr
-GCC-11 throws errors if header is not included
-
-Upstream-Status: Submitted [https://github.com/isc-projects/kea/pull/120]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- m4macros/ax_cpp11.m4 | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/m4macros/ax_cpp11.m4
-+++ b/m4macros/ax_cpp11.m4
-@@ -182,6 +182,7 @@ for retry in "none" "--std=c++11" "--std
- 	AC_COMPILE_IFELSE(
- 		[AC_LANG_PROGRAM(
- 			[#include <thread>
-+			 #include <memory>
- 			 std::shared_ptr<std::thread> th;],
- 			[th.reset(new std::thread([[]]() { return; }));
- 			 th->join();])],
diff --git a/poky/meta/recipes-connectivity/kea/files/0001-include-limits.h.patch b/poky/meta/recipes-connectivity/kea/files/0001-include-limits.h.patch
deleted file mode 100644
index 3856b3d..0000000
--- a/poky/meta/recipes-connectivity/kea/files/0001-include-limits.h.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 7bca122e15bbe98c7b8da851ef3e1cf9a714afd9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 26 Feb 2021 23:31:15 -0800
-Subject: [PATCH] include limits.h
-
-Fixes build with gcc11
-backend_selector.cc:61:35: error: 'numeric_limits' is not a member of 'std'
-
-Upstream-Status: Submitted [https://github.com/isc-projects/kea/pull/120]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/lib/exceptions/exceptions.h | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/src/lib/database/backend_selector.cc
-+++ b/src/lib/database/backend_selector.cc
-@@ -6,7 +6,7 @@
- 
- #include <database/backend_selector.h>
- #include <exceptions/exceptions.h>
--#include <climits>
-+#include <limits>
- #include <sstream>
- 
- using namespace isc::data;
---- a/src/lib/dhcpsrv/subnet_id.h
-+++ b/src/lib/dhcpsrv/subnet_id.h
-@@ -10,6 +10,7 @@
- #include <exceptions/exceptions.h>
- #include <stdint.h>
- #include <typeinfo>
-+#include <limits>
- 
- namespace isc {
- namespace dhcp {
diff --git a/poky/meta/recipes-connectivity/kea/files/0001-keactrl.in-create-var-lib-kea-and-var-run-kea-folder.patch b/poky/meta/recipes-connectivity/kea/files/0001-keactrl.in-create-var-lib-kea-and-var-run-kea-folder.patch
deleted file mode 100644
index ab3fd83..0000000
--- a/poky/meta/recipes-connectivity/kea/files/0001-keactrl.in-create-var-lib-kea-and-var-run-kea-folder.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 639dc25cdabc9d1846000a542c8cc19158b69994 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Fri, 18 Sep 2020 08:18:08 +0000
-Subject: [PATCH] keactrl.in: create /var/lib/kea and /var/run/kea folder
-
-Create /var/lib/kea and /var/run/kea folder to fix below error:
- # keactrl start
- INFO/keactrl: Starting /usr/sbin/kea-dhcp4 -c /etc/kea/kea-dhcp4.conf
- INFO/keactrl: Starting /usr/sbin/kea-dhcp6 -c /etc/kea/kea-dhcp6.conf
- INFO/keactrl: Starting /usr/sbin/kea-ctrl-agent -c /etc/kea/kea-ctrl-agent.conf
- Unable to use interprocess sync lockfile (No such file or directory): /var/run/kea/logger_lockfile
- Service failed: Launch failed: Unable to open PID file '/var/run/kea/kea-ctrl-agent.kea-ctrl-agent.pid' for write
- [snip]
- ERROR [kea-dhcp4.dhcp4/615.140641792751488] DHCP4_CONFIG_LOAD_FAIL configuration error using file: /etc/kea/kea-dhcp4.conf, reason: Unable to open database: unable to open '/var/lib/kea/kea-leases4.csv'
- [snip]
-
-Upstream-Status: Inappropriate [config specific]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- src/bin/keactrl/keactrl.in | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/bin/keactrl/keactrl.in b/src/bin/keactrl/keactrl.in
-index 12b2b3f..47cf6f9 100644
---- a/src/bin/keactrl/keactrl.in
-+++ b/src/bin/keactrl/keactrl.in
-@@ -482,6 +482,8 @@ case ${command} in
-         # The variables (dhcp4_srv, dhcp6_serv, dhcp_ddns_srv etc) are set in the
-         # keactrl.conf file that shellcheck is unable to read.
-         # shellcheck disable=SC2154
-+        [ -d @LOCALSTATEDIR@/run/kea ] || mkdir -p @LOCALSTATEDIR@/run/kea
-+        [ -d @LOCALSTATEDIR@/lib/kea ] || mkdir -p @LOCALSTATEDIR@/lib/kea
-         run_conditional "dhcp4" "start_server ${dhcp4_srv} -c ${kea_dhcp4_config_file} ${args}" 1
-         run_conditional "dhcp6" "start_server ${dhcp6_srv} -c ${kea_dhcp6_config_file} ${args}" 1
-         # shellcheck disable=SC2154
--- 
-2.26.2
-
diff --git a/poky/meta/recipes-connectivity/kea/files/0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch b/poky/meta/recipes-connectivity/kea/files/0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch
index 226bc5b..94fbd12 100644
--- a/poky/meta/recipes-connectivity/kea/files/0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch
+++ b/poky/meta/recipes-connectivity/kea/files/0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch
@@ -1,4 +1,4 @@
-From 9985a03f13da4d7bb0a433f7305d2ffae3d82a27 Mon Sep 17 00:00:00 2001
+From 841924e1fe8db2bff3eab8d37634ef08f86c00ec Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Tue, 10 Nov 2020 15:57:03 +0000
 Subject: [PATCH] src/lib/log/logger_unittest_support.cc: do not write build
@@ -8,12 +8,13 @@
 
 Upstream-Status: Inappropriate [oe-core specific]
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
 ---
  src/lib/log/logger_unittest_support.cc | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/lib/log/logger_unittest_support.cc b/src/lib/log/logger_unittest_support.cc
-index 58dbef8..9a2929c 100644
+index fc01c6e..f46d17e 100644
 --- a/src/lib/log/logger_unittest_support.cc
 +++ b/src/lib/log/logger_unittest_support.cc
 @@ -84,7 +84,7 @@ void initLogger(isc::log::Severity severity, int dbglevel) {
@@ -24,4 +25,4 @@
 +    //setenv("KEA_LOCKFILE_DIR", TOP_BUILDDIR, 0);
  
      // Initialize logging
-     initLogger(root, isc::log::DEBUG, isc::log::MAX_DEBUG_LEVEL, localfile);
+     initLogger(root, severity, dbglevel, localfile);
diff --git a/poky/meta/recipes-connectivity/kea/files/fix-multilib-conflict.patch b/poky/meta/recipes-connectivity/kea/files/fix-multilib-conflict.patch
index 733adf5..8de9fce 100644
--- a/poky/meta/recipes-connectivity/kea/files/fix-multilib-conflict.patch
+++ b/poky/meta/recipes-connectivity/kea/files/fix-multilib-conflict.patch
@@ -1,4 +1,7 @@
-There are conflict of config files between kea and lib32-kea:
+From d027b1d85a8c1a0193b6e4a00083d3038d699a59 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Tue, 22 Sep 2020 15:02:33 +0800
+Subject: [PATCH] There are conflict of config files between kea and lib32-kea:
 
 | Error: Transaction test error:
 |  file /etc/kea/kea-ctrl-agent.conf conflicts between attempted installs of
@@ -10,16 +13,17 @@
 '$libdir' in the config files to avoid conflict.
 
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
 ---
  src/bin/keactrl/kea-ctrl-agent.conf.pre | 3 ++-
- src/bin/keactrl/kea-dhcp4.conf.pre      | 6 ++++--
- 2 files changed, 6 insertions(+), 3 deletions(-)
+ src/bin/keactrl/kea-dhcp4.conf.pre      | 4 ++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
 
 diff --git a/src/bin/keactrl/kea-ctrl-agent.conf.pre b/src/bin/keactrl/kea-ctrl-agent.conf.pre
-index 211b7ff..d710ec7 100644
+index e6ae8b8..50a3092 100644
 --- a/src/bin/keactrl/kea-ctrl-agent.conf.pre
 +++ b/src/bin/keactrl/kea-ctrl-agent.conf.pre
-@@ -45,7 +45,8 @@
+@@ -51,7 +51,8 @@
      // Agent will fail to start.
      "hooks-libraries": [
  //  {
@@ -30,26 +34,24 @@
  //          "param1": "foo"
  //      }
 diff --git a/src/bin/keactrl/kea-dhcp4.conf.pre b/src/bin/keactrl/kea-dhcp4.conf.pre
-index 5f77a32..70ae3d9 100644
+index 26bf163..49ddb0a 100644
 --- a/src/bin/keactrl/kea-dhcp4.conf.pre
 +++ b/src/bin/keactrl/kea-dhcp4.conf.pre
-@@ -252,7 +252,8 @@
-     //      // of all devices serviced by Kea, including their identifiers
-     //      // (like MAC address), their location in the network, times
-     //      // when they were active etc.
--    //      "library": "@libdir@/kea/hooks/libdhcp_legal_log.so"
-+    //      // Replace $libdir with real library path /usr/lib or /usr/lib64
-+    //      "library": "$libdir/kea/hooks/libdhcp_legal_log.so"
-     //      "parameters": {
-     //          "path": "/var/lib/kea",
-     //          "base-name": "kea-forensic4"
-@@ -269,7 +270,8 @@
-     //      // of specific options or perhaps even a combination of several
-     //      // options and fields to uniquely identify a client. Those scenarios
-     //      // are addressed by the Flexible Identifiers hook application.
--    //      "library": "@libdir@/kea/hooks/libdhcp_flex_id.so",
-+    //      // Replace $libdir with real library path /usr/lib or /usr/lib64
-+    //      "library": "$libdir/kea/hooks/libdhcp_flex_id.so",
-     //      "parameters": {
-     //          "identifier-expression": "substring(relay6[0].option[18],0,8)"
-     //      }
+@@ -252,7 +252,7 @@
+     //       // of all devices serviced by Kea, including their identifiers
+     //       // (like MAC address), their location in the network, times
+     //       // when they were active etc.
+-    //       "library": "@libdir@/kea/hooks/libdhcp_legal_log.so",
++    //       "library": "$libdir/kea/hooks/libdhcp_legal_log.so",
+     //       "parameters": {
+     //           "path": "/var/lib/kea",
+     //           "base-name": "kea-forensic4"
+@@ -269,7 +269,7 @@
+     //       // of specific options or perhaps even a combination of several
+     //       // options and fields to uniquely identify a client. Those scenarios
+     //       // are addressed by the Flexible Identifiers hook application.
+-    //       "library": "@libdir@/kea/hooks/libdhcp_flex_id.so",
++    //       "library": "$libdir/kea/hooks/libdhcp_flex_id.so",
+     //       "parameters": {
+     //           "identifier-expression": "relay4[2].hex"
+     //       }
diff --git a/poky/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch b/poky/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch
index eeeb899..b7c2fd4 100644
--- a/poky/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch
+++ b/poky/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch
@@ -1,22 +1,29 @@
-Busybox does not support ps -p so use pgrep
+From 18f4f6206c248d6169aa67b3ecf16bf54e9292e8 Mon Sep 17 00:00:00 2001
+From: Armin kuster <akuster808@gmail.com>
+Date: Wed, 14 Oct 2020 22:48:31 -0700
+Subject: [PATCH] Busybox does not support ps -p so use pgrep
 
 Upstream-Status: Inappropriate [embedded specific]
 Based on changes from Diego Sueiro <Diego.Sueiro@arm.com>
 
 Signed-off-by: Armin kuster <akuster808@gmail.com>
 
-Index: kea-1.7.10/src/bin/keactrl/keactrl.in
-===================================================================
---- kea-1.7.10.orig/src/bin/keactrl/keactrl.in
-+++ kea-1.7.10/src/bin/keactrl/keactrl.in
-@@ -137,8 +137,8 @@ check_running() {
+---
+ src/bin/keactrl/keactrl.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/bin/keactrl/keactrl.in b/src/bin/keactrl/keactrl.in
+index ae5bd8e..e9f9b73 100644
+--- a/src/bin/keactrl/keactrl.in
++++ b/src/bin/keactrl/keactrl.in
+@@ -151,8 +151,8 @@ check_running() {
      # Get the PID from the PID file (if it exists)
      get_pid_from_file "${proc_name}"
      if [ ${_pid} -gt 0 ]; then
 -        # Use ps to check if PID is alive
--        ps -p ${_pid} 1>/dev/null
+-        if ps -p ${_pid} 1>/dev/null; then
 +        # Use pgrep and grep to check if PID is alive
-+        pgrep -v 1 | grep ${_pid} 1>/dev/null
-         retcode=$?
-         if [ $retcode -eq 0 ]; then
++        if pgrep -v 1 | grep ${_pid} 1>/dev/null; then
              # No error, so PID IS ALIVE
+             _running=1
+         fi
diff --git a/poky/meta/recipes-connectivity/kea/kea_1.8.2.bb b/poky/meta/recipes-connectivity/kea/kea_1.8.2.bb
deleted file mode 100644
index 04424d0..0000000
--- a/poky/meta/recipes-connectivity/kea/kea_1.8.2.bb
+++ /dev/null
@@ -1,81 +0,0 @@
-SUMMARY = "ISC Kea DHCP Server"
-DESCRIPTION = "Kea is the next generation of DHCP software developed by ISC. It supports both DHCPv4 and DHCPv6 protocols along with their extensions, e.g. prefix delegation and dynamic updates to DNS."
-HOMEPAGE = "http://kea.isc.org"
-SECTION = "connectivity"
-LICENSE = "MPL-2.0 & Apache-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=68d95543d2096459290a4e6b9ceccffa"
-
-DEPENDS = "boost log4cplus openssl"
-
-SRC_URI = "http://ftp.isc.org/isc/kea/${PV}/${BP}.tar.gz \
-           file://0001-keactrl.in-create-var-lib-kea-and-var-run-kea-folder.patch \
-           file://kea-dhcp4.service \
-           file://kea-dhcp6.service \
-           file://kea-dhcp-ddns.service \
-           file://kea-dhcp4-server \
-           file://kea-dhcp6-server \
-           file://kea-dhcp-ddns-server \
-           file://fix-multilib-conflict.patch \
-           file://fix_pid_keactrl.patch \
-           file://0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch \
-           file://0001-ax_cpp11.m4-Include-memory-header.patch \
-           file://0001-include-limits.h.patch \
-           file://0001-add-missing-headers-in-timer_mgr.cc.patch \
-           "
-SRC_URI[sha256sum] = "486ca7abedb9d6fdf8e4344ad8688d1171f2ef0f5506d118988aadeae80a1d39"
-
-inherit autotools systemd update-rc.d upstream-version-is-even
-
-INITSCRIPT_NAME = "kea-dhcp4-server"
-INITSCRIPT_PARAMS = "defaults 30"
-
-SYSTEMD_SERVICE:${PN} = "kea-dhcp4.service kea-dhcp6.service kea-dhcp-ddns.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-DEBUG_OPTIMIZATION:remove:mips = " -Og"
-DEBUG_OPTIMIZATION:append:mips = " -O"
-BUILD_OPTIMIZATION:remove:mips = " -Og"
-BUILD_OPTIMIZATION:append:mips = " -O"
-
-DEBUG_OPTIMIZATION:remove:mipsel = " -Og"
-DEBUG_OPTIMIZATION:append:mipsel = " -O"
-BUILD_OPTIMIZATION:remove:mipsel = " -Og"
-BUILD_OPTIMIZATION:append:mipsel = " -O"
-
-EXTRA_OECONF = "--with-boost-libs=-lboost_system \
-                --with-log4cplus=${STAGING_DIR_TARGET}${prefix} \
-                --with-openssl=${STAGING_DIR_TARGET}${prefix}"
-
-do_configure:prepend() {
-    # replace abs_top_builddir to avoid introducing the build path
-    # don't expand the abs_top_builddir on the target as the abs_top_builddir is meanlingless on the target
-    find ${S} -type f -name *.sh.in | xargs sed -i  "s:@abs_top_builddir@:@abs_top_builddir_placeholder@:g"
-    sed -i "s:@abs_top_srcdir@:@abs_top_srcdir_placeholder@:g" ${S}/src/bin/admin/kea-admin.in
-}
-
-# patch out build host paths for reproducibility
-do_compile:prepend:class-target() {
-        sed -i -e "s,${WORKDIR},,g" ${B}/config.report
-}
-
-do_install:append() {
-    install -d ${D}${sysconfdir}/init.d
-    install -d ${D}${systemd_system_unitdir}
-
-    install -m 0644 ${WORKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir}
-    install -m 0755 ${WORKDIR}/kea-*-server ${D}${sysconfdir}/init.d
-    sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@BASE_BINDIR@,${base_bindir},g' \
-           -e 's,@LOCALSTATEDIR@,${localstatedir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' \
-           ${D}${systemd_system_unitdir}/kea-dhcp*service ${D}${sbindir}/keactrl
-}
-
-do_install:append() {
-    rm -rf "${D}${localstatedir}"
-}
-
-CONFFILES:${PN} = "${sysconfdir}/kea/keactrl.conf"
-
-FILES:${PN}-staticdev += "${libdir}/kea/hooks/*.a ${libdir}/hooks/*.a"
-FILES:${PN} += "${libdir}/hooks/*.so"
-
-PARALLEL_MAKEINST = ""
diff --git a/poky/meta/recipes-connectivity/kea/kea_2.0.0.bb b/poky/meta/recipes-connectivity/kea/kea_2.0.0.bb
new file mode 100644
index 0000000..9f33c32
--- /dev/null
+++ b/poky/meta/recipes-connectivity/kea/kea_2.0.0.bb
@@ -0,0 +1,77 @@
+SUMMARY = "ISC Kea DHCP Server"
+DESCRIPTION = "Kea is the next generation of DHCP software developed by ISC. It supports both DHCPv4 and DHCPv6 protocols along with their extensions, e.g. prefix delegation and dynamic updates to DNS."
+HOMEPAGE = "http://kea.isc.org"
+SECTION = "connectivity"
+LICENSE = "MPL-2.0 & Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=07b7477a1d815a4aacab73b1531f577a"
+
+DEPENDS = "boost log4cplus openssl"
+
+SRC_URI = "http://ftp.isc.org/isc/kea/${PV}/${BP}.tar.gz \
+           file://kea-dhcp4.service \
+           file://kea-dhcp6.service \
+           file://kea-dhcp-ddns.service \
+           file://kea-dhcp4-server \
+           file://kea-dhcp6-server \
+           file://kea-dhcp-ddns-server \
+           file://fix-multilib-conflict.patch \
+           file://fix_pid_keactrl.patch \
+           file://0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch \
+           "
+SRC_URI[sha256sum] = "05854e0c3871b452edace18eccc6ab618940e0249fbe7c232a36d06ae59bf41d"
+
+inherit autotools systemd update-rc.d upstream-version-is-even
+
+INITSCRIPT_NAME = "kea-dhcp4-server"
+INITSCRIPT_PARAMS = "defaults 30"
+
+SYSTEMD_SERVICE:${PN} = "kea-dhcp4.service kea-dhcp6.service kea-dhcp-ddns.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+DEBUG_OPTIMIZATION:remove:mips = " -Og"
+DEBUG_OPTIMIZATION:append:mips = " -O"
+BUILD_OPTIMIZATION:remove:mips = " -Og"
+BUILD_OPTIMIZATION:append:mips = " -O"
+
+DEBUG_OPTIMIZATION:remove:mipsel = " -Og"
+DEBUG_OPTIMIZATION:append:mipsel = " -O"
+BUILD_OPTIMIZATION:remove:mipsel = " -Og"
+BUILD_OPTIMIZATION:append:mipsel = " -O"
+
+EXTRA_OECONF = "--with-boost-libs=-lboost_system \
+                --with-log4cplus=${STAGING_DIR_TARGET}${prefix} \
+                --with-openssl=${STAGING_DIR_TARGET}${prefix}"
+
+do_configure:prepend() {
+    # replace abs_top_builddir to avoid introducing the build path
+    # don't expand the abs_top_builddir on the target as the abs_top_builddir is meanlingless on the target
+    find ${S} -type f -name *.sh.in | xargs sed -i  "s:@abs_top_builddir@:@abs_top_builddir_placeholder@:g"
+    sed -i "s:@abs_top_srcdir@:@abs_top_srcdir_placeholder@:g" ${S}/src/bin/admin/kea-admin.in
+}
+
+# patch out build host paths for reproducibility
+do_compile:prepend:class-target() {
+        sed -i -e "s,${WORKDIR},,g" ${B}/config.report
+}
+
+do_install:append() {
+    install -d ${D}${sysconfdir}/init.d
+    install -d ${D}${systemd_system_unitdir}
+
+    install -m 0644 ${WORKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir}
+    install -m 0755 ${WORKDIR}/kea-*-server ${D}${sysconfdir}/init.d
+    sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@BASE_BINDIR@,${base_bindir},g' \
+           -e 's,@LOCALSTATEDIR@,${localstatedir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+           ${D}${systemd_system_unitdir}/kea-dhcp*service ${D}${sbindir}/keactrl
+}
+
+do_install:append() {
+    rm -rf "${D}${localstatedir}"
+}
+
+CONFFILES:${PN} = "${sysconfdir}/kea/keactrl.conf"
+
+FILES:${PN}-staticdev += "${libdir}/kea/hooks/*.a ${libdir}/hooks/*.a"
+FILES:${PN} += "${libdir}/hooks/*.so"
+
+PARALLEL_MAKEINST = ""
diff --git a/poky/meta/recipes-connectivity/ofono/ofono_1.32.bb b/poky/meta/recipes-connectivity/ofono/ofono_1.32.bb
deleted file mode 100644
index 61424c7..0000000
--- a/poky/meta/recipes-connectivity/ofono/ofono_1.32.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "open source telephony"
-DESCRIPTION = "oFono is a stack for mobile telephony devices on Linux. oFono supports speaking to telephony devices through specific drivers, or with generic AT commands."
-HOMEPAGE = "http://www.ofono.org"
-BUGTRACKER = "https://01.org/jira/browse/OF"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
-                    file://src/ofono.h;beginline=1;endline=20;md5=3ce17d5978ef3445def265b98899c2ee"
-DEPENDS = "dbus glib-2.0 udev mobile-broadband-provider-info ell"
-
-SRC_URI = "\
-    ${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
-    file://ofono \
-    file://0001-mbim-add-an-optional-TEMP_FAILURE_RETRY-macro-copy.patch \
-    file://0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch \
-"
-SRC_URI[sha256sum] = "f7d775887b7b80cf3b82e3f0a6c2696c6d01963d222ca2217919d21b9e803042"
-
-inherit autotools pkgconfig update-rc.d systemd gobject-introspection-data
-
-INITSCRIPT_NAME = "ofono"
-INITSCRIPT_PARAMS = "defaults 22"
-SYSTEMD_SERVICE:${PN} = "ofono.service"
-
-PACKAGECONFIG ??= "\
-    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
-"
-PACKAGECONFIG[systemd] = "--with-systemdunitdir=${systemd_system_unitdir}/,--with-systemdunitdir="
-PACKAGECONFIG[bluez] = "--enable-bluetooth, --disable-bluetooth, bluez5"
-
-EXTRA_OECONF += "--enable-test --enable-external-ell"
-
-do_configure:prepend() {
-    bbnote "Removing bundled ell from ${S}/ell to prevent including it"
-    rm -rf ${S}/ell
-}
-
-do_install:append() {
-    install -d ${D}${sysconfdir}/init.d/
-    install -m 0755 ${WORKDIR}/ofono ${D}${sysconfdir}/init.d/ofono
-}
-
-PACKAGES =+ "${PN}-tests"
-
-FILES:${PN} += "${systemd_unitdir}"
-FILES:${PN}-tests = "${libdir}/${BPN}/test"
-
-RDEPENDS:${PN} += "dbus"
-RDEPENDS:${PN}-tests = "\
-    python3-core \
-    python3-dbus \
-    ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'python3-pygobject', '', d)} \
-"
-
-RRECOMMENDS:${PN} += "kernel-module-tun mobile-broadband-provider-info"
diff --git a/poky/meta/recipes-connectivity/ofono/ofono_1.33.bb b/poky/meta/recipes-connectivity/ofono/ofono_1.33.bb
new file mode 100644
index 0000000..1fab90c
--- /dev/null
+++ b/poky/meta/recipes-connectivity/ofono/ofono_1.33.bb
@@ -0,0 +1,55 @@
+SUMMARY = "open source telephony"
+DESCRIPTION = "oFono is a stack for mobile telephony devices on Linux. oFono supports speaking to telephony devices through specific drivers, or with generic AT commands."
+HOMEPAGE = "http://www.ofono.org"
+BUGTRACKER = "https://01.org/jira/browse/OF"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
+                    file://src/ofono.h;beginline=1;endline=20;md5=3ce17d5978ef3445def265b98899c2ee"
+DEPENDS = "dbus glib-2.0 udev mobile-broadband-provider-info ell"
+
+SRC_URI = "\
+    ${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
+    file://ofono \
+    file://0001-mbim-add-an-optional-TEMP_FAILURE_RETRY-macro-copy.patch \
+    file://0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch \
+"
+SRC_URI[sha256sum] = "e4591c5353ad2069cb9c0861fad3f1bf655137f9785fc5f16151d509e49ba708"
+
+inherit autotools pkgconfig update-rc.d systemd gobject-introspection-data
+
+INITSCRIPT_NAME = "ofono"
+INITSCRIPT_PARAMS = "defaults 22"
+SYSTEMD_SERVICE:${PN} = "ofono.service"
+
+PACKAGECONFIG ??= "\
+    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
+"
+PACKAGECONFIG[systemd] = "--with-systemdunitdir=${systemd_system_unitdir}/,--with-systemdunitdir="
+PACKAGECONFIG[bluez] = "--enable-bluetooth, --disable-bluetooth, bluez5"
+
+EXTRA_OECONF += "--enable-test --enable-external-ell"
+
+do_configure:prepend() {
+    bbnote "Removing bundled ell from ${S}/ell to prevent including it"
+    rm -rf ${S}/ell
+}
+
+do_install:append() {
+    install -d ${D}${sysconfdir}/init.d/
+    install -m 0755 ${WORKDIR}/ofono ${D}${sysconfdir}/init.d/ofono
+}
+
+PACKAGES =+ "${PN}-tests"
+
+FILES:${PN} += "${systemd_unitdir}"
+FILES:${PN}-tests = "${libdir}/${BPN}/test"
+
+RDEPENDS:${PN} += "dbus"
+RDEPENDS:${PN}-tests = "\
+    python3-core \
+    python3-dbus \
+    ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'python3-pygobject', '', d)} \
+"
+
+RRECOMMENDS:${PN} += "kernel-module-tun mobile-broadband-provider-info"
diff --git a/poky/meta/recipes-connectivity/openssh/openssh_8.7p1.bb b/poky/meta/recipes-connectivity/openssh/openssh_8.7p1.bb
deleted file mode 100644
index 07cd6b7..0000000
--- a/poky/meta/recipes-connectivity/openssh/openssh_8.7p1.bb
+++ /dev/null
@@ -1,185 +0,0 @@
-SUMMARY = "A suite of security-related network utilities based on \
-the SSH protocol including the ssh client and sshd server"
-DESCRIPTION = "Secure rlogin/rsh/rcp/telnet replacement (OpenSSH) \
-Ssh (Secure Shell) is a program for logging into a remote machine \
-and for executing commands on a remote machine."
-HOMEPAGE = "http://www.openssh.com/"
-SECTION = "console/network"
-LICENSE = "BSD-2-Clause & BSD-3-Clause & BSD-4-Clause & ISC & MIT"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=d9d2753bdef9f19466dc7bc959114b11"
-
-DEPENDS = "zlib openssl virtual/crypt"
-DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-
-SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar.gz \
-           file://sshd_config \
-           file://ssh_config \
-           file://init \
-           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
-           file://sshd.socket \
-           file://sshd@.service \
-           file://sshdgenkeys.service \
-           file://volatiles.99_sshd \
-           file://run-ptest \
-           file://fix-potential-signed-overflow-in-pointer-arithmatic.patch \
-           file://sshd_check_keys \
-           file://add-test-support-for-busybox.patch \
-           "
-SRC_URI[sha256sum] = "7ca34b8bb24ae9e50f33792b7091b3841d7e1b440ff57bc9fabddf01e2ed1e24"
-
-# This CVE is specific to OpenSSH with the pam opie which we don't build/use here
-CVE_CHECK_WHITELIST += "CVE-2007-2768"
-
-# This CVE is specific to OpenSSH server, as used in Fedora and Red Hat Enterprise Linux 7
-# and when running in a Kerberos environment. As such it is not relevant to OpenEmbedded
-CVE_CHECK_WHITELIST += "CVE-2014-9278"
-
-# CVE only applies to some distributed RHEL binaries
-CVE_CHECK_WHITELIST += "CVE-2008-3844"
-
-PAM_SRC_URI = "file://sshd"
-
-inherit manpages useradd update-rc.d update-alternatives systemd
-
-USERADD_PACKAGES = "${PN}-sshd"
-USERADD_PARAM:${PN}-sshd = "--system --no-create-home --home-dir /var/run/sshd --shell /bin/false --user-group sshd"
-INITSCRIPT_PACKAGES = "${PN}-sshd"
-INITSCRIPT_NAME:${PN}-sshd = "sshd"
-INITSCRIPT_PARAMS:${PN}-sshd = "defaults 9"
-
-SYSTEMD_PACKAGES = "${PN}-sshd"
-SYSTEMD_SERVICE:${PN}-sshd = "sshd.socket"
-
-inherit autotools-brokensep ptest
-
-PACKAGECONFIG ??= "rng-tools"
-PACKAGECONFIG[kerberos] = "--with-kerberos5,--without-kerberos5,krb5"
-PACKAGECONFIG[ldns] = "--with-ldns,--without-ldns,ldns"
-PACKAGECONFIG[libedit] = "--with-libedit,--without-libedit,libedit"
-PACKAGECONFIG[manpages] = "--with-mantype=man,--with-mantype=cat"
-
-# Add RRECOMMENDS to rng-tools for sshd package
-PACKAGECONFIG[rng-tools] = ""
-
-EXTRA_AUTORECONF += "--exclude=aclocal"
-
-# login path is hardcoded in sshd
-EXTRA_OECONF = "'LOGIN_PROGRAM=${base_bindir}/login' \
-                ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
-                --without-zlib-version-check \
-                --with-privsep-path=${localstatedir}/run/sshd \
-                --sysconfdir=${sysconfdir}/ssh \
-                --with-xauth=${bindir}/xauth \
-                --disable-strip \
-                "
-
-# musl doesn't implement wtmp/utmp and logwtmp
-EXTRA_OECONF:append:libc-musl = " --disable-wtmp --disable-lastlog"
-
-# 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...
-CACHED_CONFIGUREVARS += "ac_cv_header_bsd_libutil_h=no ac_cv_header_libutil_h=no"
-
-# passwd path is hardcoded in sshd
-CACHED_CONFIGUREVARS += "ac_cv_path_PATH_PASSWD_PROG=${bindir}/passwd"
-
-# We don't want to depend on libblockfile
-CACHED_CONFIGUREVARS += "ac_cv_header_maillock_h=no"
-
-do_configure:prepend () {
-	export LD="${CC}"
-	install -m 0644 ${WORKDIR}/sshd_config ${B}/
-	install -m 0644 ${WORKDIR}/ssh_config ${B}/
-}
-
-do_compile_ptest() {
-        # skip regress/unittests/ binaries: this will silently skip
-        # unittests in run-ptests which is good because they are so slow.
-        oe_runmake regress/modpipe regress/setuid-allowed regress/netcat \
-                   regress/check-perm regress/mkdtemp
-}
-
-do_install:append () {
-	if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
-		install -D -m 0644 ${WORKDIR}/sshd ${D}${sysconfdir}/pam.d/sshd
-		sed -i -e 's:#UsePAM no:UsePAM yes:' ${D}${sysconfdir}/ssh/sshd_config
-	fi
-
-	if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then
-		sed -i -e 's:#X11Forwarding no:X11Forwarding yes:' ${D}${sysconfdir}/ssh/sshd_config
-	fi
-
-	install -d ${D}${sysconfdir}/init.d
-	install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/sshd
-	rm -f ${D}${bindir}/slogin ${D}${datadir}/Ssh.bin
-	rmdir ${D}${localstatedir}/run/sshd ${D}${localstatedir}/run ${D}${localstatedir}
-	install -d ${D}/${sysconfdir}/default/volatiles
-	install -m 644 ${WORKDIR}/volatiles.99_sshd ${D}/${sysconfdir}/default/volatiles/99_sshd
-	install -m 0755 ${S}/contrib/ssh-copy-id ${D}${bindir}
-
-	# Create config files for read-only rootfs
-	install -d ${D}${sysconfdir}/ssh
-	install -m 644 ${D}${sysconfdir}/ssh/sshd_config ${D}${sysconfdir}/ssh/sshd_config_readonly
-	sed -i '/HostKey/d' ${D}${sysconfdir}/ssh/sshd_config_readonly
-	echo "HostKey /var/run/ssh/ssh_host_rsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
-	echo "HostKey /var/run/ssh/ssh_host_ecdsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
-	echo "HostKey /var/run/ssh/ssh_host_ed25519_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
-
-	install -d ${D}${systemd_system_unitdir}
-	install -c -m 0644 ${WORKDIR}/sshd.socket ${D}${systemd_system_unitdir}
-	install -c -m 0644 ${WORKDIR}/sshd@.service ${D}${systemd_system_unitdir}
-	install -c -m 0644 ${WORKDIR}/sshdgenkeys.service ${D}${systemd_system_unitdir}
-	sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
-		-e 's,@SBINDIR@,${sbindir},g' \
-		-e 's,@BINDIR@,${bindir},g' \
-		-e 's,@LIBEXECDIR@,${libexecdir}/${BPN},g' \
-		${D}${systemd_system_unitdir}/sshd.socket ${D}${systemd_system_unitdir}/*.service
-
-	sed -i -e 's,@LIBEXECDIR@,${libexecdir}/${BPN},g' \
-		${D}${sysconfdir}/init.d/sshd
-
-	install -D -m 0755 ${WORKDIR}/sshd_check_keys ${D}${libexecdir}/${BPN}/sshd_check_keys
-}
-
-do_install_ptest () {
-	sed -i -e "s|^SFTPSERVER=.*|SFTPSERVER=${libexecdir}/sftp-server|" regress/test-exec.sh
-	cp -r regress ${D}${PTEST_PATH}
-}
-
-ALLOW_EMPTY:${PN} = "1"
-
-PACKAGES =+ "${PN}-keygen ${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-sftp ${PN}-misc ${PN}-sftp-server"
-FILES:${PN}-scp = "${bindir}/scp.${BPN}"
-FILES:${PN}-ssh = "${bindir}/ssh.${BPN} ${sysconfdir}/ssh/ssh_config"
-FILES:${PN}-sshd = "${sbindir}/sshd ${sysconfdir}/init.d/sshd ${systemd_system_unitdir}"
-FILES:${PN}-sshd += "${sysconfdir}/ssh/moduli ${sysconfdir}/ssh/sshd_config ${sysconfdir}/ssh/sshd_config_readonly ${sysconfdir}/default/volatiles/99_sshd ${sysconfdir}/pam.d/sshd"
-FILES:${PN}-sshd += "${libexecdir}/${BPN}/sshd_check_keys"
-FILES:${PN}-sftp = "${bindir}/sftp"
-FILES:${PN}-sftp-server = "${libexecdir}/sftp-server"
-FILES:${PN}-misc = "${bindir}/ssh* ${libexecdir}/ssh*"
-FILES:${PN}-keygen = "${bindir}/ssh-keygen"
-
-RDEPENDS:${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen"
-RDEPENDS:${PN}-sshd += "${PN}-keygen ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-keyinit pam-plugin-loginuid', '', d)}"
-RRECOMMENDS:${PN}-sshd:append:class-target = "\
-    ${@bb.utils.filter('PACKAGECONFIG', 'rng-tools', d)} \
-"
-
-# gdb would make attach-ptrace test pass rather than skip but not worth the build dependencies
-RDEPENDS:${PN}-ptest += "${PN}-sftp ${PN}-misc ${PN}-sftp-server make sed sudo coreutils"
-
-RPROVIDES:${PN}-ssh = "ssh"
-RPROVIDES:${PN}-sshd = "sshd"
-
-RCONFLICTS:${PN} = "dropbear"
-RCONFLICTS:${PN}-sshd = "dropbear"
-
-CONFFILES:${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
-CONFFILES:${PN}-ssh = "${sysconfdir}/ssh/ssh_config"
-
-ALTERNATIVE_PRIORITY = "90"
-ALTERNATIVE:${PN}-scp = "scp"
-ALTERNATIVE:${PN}-ssh = "ssh"
-
-BBCLASSEXTEND += "nativesdk"
diff --git a/poky/meta/recipes-connectivity/openssh/openssh_8.8p1.bb b/poky/meta/recipes-connectivity/openssh/openssh_8.8p1.bb
new file mode 100644
index 0000000..ee86bb9
--- /dev/null
+++ b/poky/meta/recipes-connectivity/openssh/openssh_8.8p1.bb
@@ -0,0 +1,185 @@
+SUMMARY = "A suite of security-related network utilities based on \
+the SSH protocol including the ssh client and sshd server"
+DESCRIPTION = "Secure rlogin/rsh/rcp/telnet replacement (OpenSSH) \
+Ssh (Secure Shell) is a program for logging into a remote machine \
+and for executing commands on a remote machine."
+HOMEPAGE = "http://www.openssh.com/"
+SECTION = "console/network"
+LICENSE = "BSD-2-Clause & BSD-3-Clause & BSD-4-Clause & ISC & MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=d9d2753bdef9f19466dc7bc959114b11"
+
+DEPENDS = "zlib openssl virtual/crypt"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar.gz \
+           file://sshd_config \
+           file://ssh_config \
+           file://init \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+           file://sshd.socket \
+           file://sshd@.service \
+           file://sshdgenkeys.service \
+           file://volatiles.99_sshd \
+           file://run-ptest \
+           file://fix-potential-signed-overflow-in-pointer-arithmatic.patch \
+           file://sshd_check_keys \
+           file://add-test-support-for-busybox.patch \
+           "
+SRC_URI[sha256sum] = "4590890ea9bb9ace4f71ae331785a3a5823232435161960ed5fc86588f331fe9"
+
+# This CVE is specific to OpenSSH with the pam opie which we don't build/use here
+CVE_CHECK_WHITELIST += "CVE-2007-2768"
+
+# This CVE is specific to OpenSSH server, as used in Fedora and Red Hat Enterprise Linux 7
+# and when running in a Kerberos environment. As such it is not relevant to OpenEmbedded
+CVE_CHECK_WHITELIST += "CVE-2014-9278"
+
+# CVE only applies to some distributed RHEL binaries
+CVE_CHECK_WHITELIST += "CVE-2008-3844"
+
+PAM_SRC_URI = "file://sshd"
+
+inherit manpages useradd update-rc.d update-alternatives systemd
+
+USERADD_PACKAGES = "${PN}-sshd"
+USERADD_PARAM:${PN}-sshd = "--system --no-create-home --home-dir /var/run/sshd --shell /bin/false --user-group sshd"
+INITSCRIPT_PACKAGES = "${PN}-sshd"
+INITSCRIPT_NAME:${PN}-sshd = "sshd"
+INITSCRIPT_PARAMS:${PN}-sshd = "defaults 9"
+
+SYSTEMD_PACKAGES = "${PN}-sshd"
+SYSTEMD_SERVICE:${PN}-sshd = "sshd.socket"
+
+inherit autotools-brokensep ptest
+
+PACKAGECONFIG ??= "rng-tools"
+PACKAGECONFIG[kerberos] = "--with-kerberos5,--without-kerberos5,krb5"
+PACKAGECONFIG[ldns] = "--with-ldns,--without-ldns,ldns"
+PACKAGECONFIG[libedit] = "--with-libedit,--without-libedit,libedit"
+PACKAGECONFIG[manpages] = "--with-mantype=man,--with-mantype=cat"
+
+# Add RRECOMMENDS to rng-tools for sshd package
+PACKAGECONFIG[rng-tools] = ""
+
+EXTRA_AUTORECONF += "--exclude=aclocal"
+
+# login path is hardcoded in sshd
+EXTRA_OECONF = "'LOGIN_PROGRAM=${base_bindir}/login' \
+                ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
+                --without-zlib-version-check \
+                --with-privsep-path=${localstatedir}/run/sshd \
+                --sysconfdir=${sysconfdir}/ssh \
+                --with-xauth=${bindir}/xauth \
+                --disable-strip \
+                "
+
+# musl doesn't implement wtmp/utmp and logwtmp
+EXTRA_OECONF:append:libc-musl = " --disable-wtmp --disable-lastlog"
+
+# 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...
+CACHED_CONFIGUREVARS += "ac_cv_header_bsd_libutil_h=no ac_cv_header_libutil_h=no"
+
+# passwd path is hardcoded in sshd
+CACHED_CONFIGUREVARS += "ac_cv_path_PATH_PASSWD_PROG=${bindir}/passwd"
+
+# We don't want to depend on libblockfile
+CACHED_CONFIGUREVARS += "ac_cv_header_maillock_h=no"
+
+do_configure:prepend () {
+	export LD="${CC}"
+	install -m 0644 ${WORKDIR}/sshd_config ${B}/
+	install -m 0644 ${WORKDIR}/ssh_config ${B}/
+}
+
+do_compile_ptest() {
+        # skip regress/unittests/ binaries: this will silently skip
+        # unittests in run-ptests which is good because they are so slow.
+        oe_runmake regress/modpipe regress/setuid-allowed regress/netcat \
+                   regress/check-perm regress/mkdtemp
+}
+
+do_install:append () {
+	if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
+		install -D -m 0644 ${WORKDIR}/sshd ${D}${sysconfdir}/pam.d/sshd
+		sed -i -e 's:#UsePAM no:UsePAM yes:' ${D}${sysconfdir}/ssh/sshd_config
+	fi
+
+	if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then
+		sed -i -e 's:#X11Forwarding no:X11Forwarding yes:' ${D}${sysconfdir}/ssh/sshd_config
+	fi
+
+	install -d ${D}${sysconfdir}/init.d
+	install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/sshd
+	rm -f ${D}${bindir}/slogin ${D}${datadir}/Ssh.bin
+	rmdir ${D}${localstatedir}/run/sshd ${D}${localstatedir}/run ${D}${localstatedir}
+	install -d ${D}/${sysconfdir}/default/volatiles
+	install -m 644 ${WORKDIR}/volatiles.99_sshd ${D}/${sysconfdir}/default/volatiles/99_sshd
+	install -m 0755 ${S}/contrib/ssh-copy-id ${D}${bindir}
+
+	# Create config files for read-only rootfs
+	install -d ${D}${sysconfdir}/ssh
+	install -m 644 ${D}${sysconfdir}/ssh/sshd_config ${D}${sysconfdir}/ssh/sshd_config_readonly
+	sed -i '/HostKey/d' ${D}${sysconfdir}/ssh/sshd_config_readonly
+	echo "HostKey /var/run/ssh/ssh_host_rsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
+	echo "HostKey /var/run/ssh/ssh_host_ecdsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
+	echo "HostKey /var/run/ssh/ssh_host_ed25519_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
+
+	install -d ${D}${systemd_system_unitdir}
+	install -c -m 0644 ${WORKDIR}/sshd.socket ${D}${systemd_system_unitdir}
+	install -c -m 0644 ${WORKDIR}/sshd@.service ${D}${systemd_system_unitdir}
+	install -c -m 0644 ${WORKDIR}/sshdgenkeys.service ${D}${systemd_system_unitdir}
+	sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+		-e 's,@SBINDIR@,${sbindir},g' \
+		-e 's,@BINDIR@,${bindir},g' \
+		-e 's,@LIBEXECDIR@,${libexecdir}/${BPN},g' \
+		${D}${systemd_system_unitdir}/sshd.socket ${D}${systemd_system_unitdir}/*.service
+
+	sed -i -e 's,@LIBEXECDIR@,${libexecdir}/${BPN},g' \
+		${D}${sysconfdir}/init.d/sshd
+
+	install -D -m 0755 ${WORKDIR}/sshd_check_keys ${D}${libexecdir}/${BPN}/sshd_check_keys
+}
+
+do_install_ptest () {
+	sed -i -e "s|^SFTPSERVER=.*|SFTPSERVER=${libexecdir}/sftp-server|" regress/test-exec.sh
+	cp -r regress ${D}${PTEST_PATH}
+}
+
+ALLOW_EMPTY:${PN} = "1"
+
+PACKAGES =+ "${PN}-keygen ${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-sftp ${PN}-misc ${PN}-sftp-server"
+FILES:${PN}-scp = "${bindir}/scp.${BPN}"
+FILES:${PN}-ssh = "${bindir}/ssh.${BPN} ${sysconfdir}/ssh/ssh_config"
+FILES:${PN}-sshd = "${sbindir}/sshd ${sysconfdir}/init.d/sshd ${systemd_system_unitdir}"
+FILES:${PN}-sshd += "${sysconfdir}/ssh/moduli ${sysconfdir}/ssh/sshd_config ${sysconfdir}/ssh/sshd_config_readonly ${sysconfdir}/default/volatiles/99_sshd ${sysconfdir}/pam.d/sshd"
+FILES:${PN}-sshd += "${libexecdir}/${BPN}/sshd_check_keys"
+FILES:${PN}-sftp = "${bindir}/sftp"
+FILES:${PN}-sftp-server = "${libexecdir}/sftp-server"
+FILES:${PN}-misc = "${bindir}/ssh* ${libexecdir}/ssh*"
+FILES:${PN}-keygen = "${bindir}/ssh-keygen"
+
+RDEPENDS:${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen"
+RDEPENDS:${PN}-sshd += "${PN}-keygen ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-keyinit pam-plugin-loginuid', '', d)}"
+RRECOMMENDS:${PN}-sshd:append:class-target = "\
+    ${@bb.utils.filter('PACKAGECONFIG', 'rng-tools', d)} \
+"
+
+# gdb would make attach-ptrace test pass rather than skip but not worth the build dependencies
+RDEPENDS:${PN}-ptest += "${PN}-sftp ${PN}-misc ${PN}-sftp-server make sed sudo coreutils"
+
+RPROVIDES:${PN}-ssh = "ssh"
+RPROVIDES:${PN}-sshd = "sshd"
+
+RCONFLICTS:${PN} = "dropbear"
+RCONFLICTS:${PN}-sshd = "dropbear"
+
+CONFFILES:${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
+CONFFILES:${PN}-ssh = "${sysconfdir}/ssh/ssh_config"
+
+ALTERNATIVE_PRIORITY = "90"
+ALTERNATIVE:${PN}-scp = "scp"
+ALTERNATIVE:${PN}-ssh = "ssh"
+
+BBCLASSEXTEND += "nativesdk"
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch b/poky/meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch
new file mode 100644
index 0000000..5effa6c
--- /dev/null
+++ b/poky/meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch
@@ -0,0 +1,36 @@
+From 326909baf81a638d51fa8be1d8227518784f5cc4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 14 Sep 2021 12:18:25 +0200
+Subject: [PATCH] Configure: do not tweak mips cflags
+
+This conflicts with mips machine definitons from yocto,
+e.g.
+| Error: -mips3 conflicts with the other architecture options, which imply -mips64r2
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ Configure | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/Configure b/Configure
+index 821e680..0387a74 100755
+--- a/Configure
++++ b/Configure
+@@ -1422,16 +1422,6 @@ if ($target =~ /^mingw/ && `$config{CC} --target-help 2>&1` =~ m/-mno-cygwin/m)
+         push @{$config{shared_ldflag}}, "-mno-cygwin";
+         }
+ 
+-if ($target =~ /linux.*-mips/ && !$disabled{asm}
+-        && !grep { $_ !~ /-m(ips|arch=)/ } (@{$config{CFLAGS}})) {
+-        # minimally required architecture flags for assembly modules
+-        my $value;
+-        $value = '-mips2' if ($target =~ /mips32/);
+-        $value = '-mips3' if ($target =~ /mips64/);
+-        unshift @{$config{cflags}}, $value;
+-        unshift @{$config{cxxflags}}, $value if $config{CXX};
+-}
+-
+ # If threads aren't disabled, check how possible they are
+ unless ($disabled{threads}) {
+     if ($auto_threads) {
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch b/poky/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch
index 003cfbc..60890c6 100644
--- a/poky/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch
+++ b/poky/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch
@@ -1,4 +1,4 @@
-From 3e1d00481093e10775eaf69d619c45b32a4aa7dc Mon Sep 17 00:00:00 2001
+From 5985253f2c9025d7c127443a3a9938946f80c2a1 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= <martin@geanix.com>
 Date: Tue, 6 Nov 2018 14:50:47 +0100
 Subject: [PATCH] buildinfo: strip sysroot and debug-prefix-map from compiler
@@ -21,7 +21,6 @@
 Upstream-Status: Inappropriate [OE specific]
 Signed-off-by: Martin Hundebøll <martin@geanix.com>
 
-
 Update to fix buildpaths qa issue for '-fmacro-prefix-map'.
 
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
@@ -31,13 +30,15 @@
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 
 ---
- Configurations/unix-Makefile.tmpl | 10 +++++++++-
+ Configurations/unix-Makefile.tmpl | 12 +++++++++++-
  crypto/build.info                 |  2 +-
- 2 files changed, 10 insertions(+), 2 deletions(-)
+ 2 files changed, 12 insertions(+), 2 deletions(-)
 
+diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
+index f88a70f..528cdef 100644
 --- a/Configurations/unix-Makefile.tmpl
 +++ b/Configurations/unix-Makefile.tmpl
-@@ -420,13 +420,23 @@ BIN_LDFLAGS={- join(' ', $target{bin_lfl
+@@ -471,13 +471,23 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
                           '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
  BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
  
@@ -62,14 +63,16 @@
  PERLASM_SCHEME= {- $target{perlasm_scheme} -}
  
  # For x86 assembler: Set PROCESSOR to 386 if you want to support
+diff --git a/crypto/build.info b/crypto/build.info
+index efca6cc..eda433e 100644
 --- a/crypto/build.info
 +++ b/crypto/build.info
-@@ -10,7 +10,7 @@ EXTRA=  ../ms/uplink-x86.pl ../ms/uplink
-         ppccpuid.pl pariscid.pl alphacpuid.pl arm64cpuid.pl armv4cpuid.pl
+@@ -109,7 +109,7 @@ DEFINE[../libcrypto]=$UPLINKDEF
  
+ DEPEND[info.o]=buildinf.h
  DEPEND[cversion.o]=buildinf.h
 -GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(LIB_CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)"
 +GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC_Q) $(CFLAGS_Q) $(CPPFLAGS_Q)" "$(PLATFORM)"
- DEPEND[buildinf.h]=../configdata.pm
  
- GENERATE[uplink-x86.s]=../ms/uplink-x86.pl $(PERLASM_SCHEME)
+ GENERATE[uplink-x86.s]=../ms/uplink-x86.pl
+ GENERATE[uplink-x86_64.s]=../ms/uplink-x86_64.pl
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/0001-skip-test_symbol_presence.patch b/poky/meta/recipes-connectivity/openssl/openssl/0001-skip-test_symbol_presence.patch
deleted file mode 100644
index d8d9651..0000000
--- a/poky/meta/recipes-connectivity/openssl/openssl/0001-skip-test_symbol_presence.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From a9401b2289656c5a36dd1b0ecebf0d23e291ce70 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 2 Oct 2018 23:58:24 +0800
-Subject: [PATCH] skip test_symbol_presence
-
-We cannot skip `01-test_symbol_presence.t' by configuring option `no-shared'
-as INSTALL told us the shared libraries will not be built.
-
-[INSTALL snip]
- Notes on shared libraries
- -------------------------
-
- For most systems the OpenSSL Configure script knows what is needed to
- build shared libraries for libcrypto and libssl. On these systems
- the shared libraries will be created by default. This can be suppressed and
- only static libraries created by using the "no-shared" option. On systems
- where OpenSSL does not know how to build shared libraries the "no-shared"
- option will be forced and only static libraries will be created.
-[INSTALL snip]
-
-Hence directly modification the case to skip it.
-
-Upstream-Status: Inappropriate [OE Specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- test/recipes/01-test_symbol_presence.t | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/test/recipes/01-test_symbol_presence.t b/test/recipes/01-test_symbol_presence.t
-index 7f2a2d7..0b93745 100644
---- a/test/recipes/01-test_symbol_presence.t
-+++ b/test/recipes/01-test_symbol_presence.t
-@@ -14,8 +14,7 @@ use OpenSSL::Test::Utils;
- 
- setup("test_symbol_presence");
- 
--plan skip_all => "Only useful when building shared libraries"
--    if disabled("shared");
-+plan skip_all => "The case needs debug symbols then we just disable it";
- 
- my @libnames = ("crypto", "ssl");
- my $testcount = scalar @libnames;
--- 
-2.7.4
-
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/0003-Add-support-for-io_pgetevents_time64-syscall.patch b/poky/meta/recipes-connectivity/openssl/openssl/0003-Add-support-for-io_pgetevents_time64-syscall.patch
deleted file mode 100644
index d62b934..0000000
--- a/poky/meta/recipes-connectivity/openssl/openssl/0003-Add-support-for-io_pgetevents_time64-syscall.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 5b5e2985f355c8e99c196d9ce5d02c15bebadfbc Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Thu, 29 Aug 2019 13:56:21 -0700
-Subject: [PATCH] Add support for io_pgetevents_time64 syscall
-
-32-bit architectures that are y2038 safe don't include syscalls that use
-32-bit time_t. Instead these architectures have suffixed syscalls that
-always use a 64-bit time_t. In the case of the io_getevents syscall the
-syscall has been replaced with the io_pgetevents_time64 syscall instead.
-
-This patch changes the io_getevents() function to use the correct
-syscall based on the avaliable syscalls and the time_t size. We will
-only use the new 64-bit time_t syscall if the architecture is using a
-64-bit time_t. This is to avoid having to deal with 32/64-bit
-conversions and relying on a 64-bit timespec struct on 32-bit time_t
-platforms. As of Linux 5.3 there are no 32-bit time_t architectures
-without __NR_io_getevents. In the future if a 32-bit time_t architecture
-wants to use the 64-bit syscalls we can handle the conversion.
-
-This fixes build failures on 32-bit RISC-V.
-
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-
-Reviewed-by: Richard Levitte <levitte@openssl.org>
-Reviewed-by: Paul Dale <paul.dale@oracle.com>
-(Merged from https://github.com/openssl/openssl/pull/9819)
-Upstream-Status: Accepted
----
- engines/e_afalg.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/engines/e_afalg.c b/engines/e_afalg.c
-index dacbe358cb..99516cb1bb 100644
---- a/engines/e_afalg.c
-+++ b/engines/e_afalg.c
-@@ -125,7 +125,23 @@ static ossl_inline int io_getevents(aio_context_t ctx, long min, long max,
-                                struct io_event *events,
-                                struct timespec *timeout)
- {
-+#if defined(__NR_io_getevents)
-     return syscall(__NR_io_getevents, ctx, min, max, events, timeout);
-+#elif defined(__NR_io_pgetevents_time64)
-+    /* Let's only support the 64 suffix syscalls for 64-bit time_t.
-+     * This simplifies the code for us as we don't need to use a 64-bit
-+     * version of timespec with a 32-bit time_t and handle converting
-+     * between 64-bit and 32-bit times and check for overflows.
-+     */
-+    if (sizeof(timeout->tv_sec) == 8)
-+        return syscall(__NR_io_pgetevents_time64, ctx, min, max, events, timeout, NULL);
-+    else {
-+        errno = ENOSYS;
-+        return -1;
-+    }
-+#else
-+# error "We require either the io_getevents syscall or __NR_io_pgetevents_time64."
-+#endif
- }
- 
- static void afalg_waitfd_cleanup(ASYNC_WAIT_CTX *ctx, const void *key,
--- 
-2.30.1
-
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/0004-Fixup-support-for-io_pgetevents_time64-syscall.patch b/poky/meta/recipes-connectivity/openssl/openssl/0004-Fixup-support-for-io_pgetevents_time64-syscall.patch
deleted file mode 100644
index c8bc6f5..0000000
--- a/poky/meta/recipes-connectivity/openssl/openssl/0004-Fixup-support-for-io_pgetevents_time64-syscall.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From e5499a3cac1e823c3e0697e8667e952317b70cc8 Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Thu, 4 Mar 2021 12:10:11 -0500
-Subject: [PATCH] Fixup support for io_pgetevents_time64 syscall
-
-This is a fixup for the original commit 5b5e2985f355c8e99c196d9ce5d02c15bebadfbc
-"Add support for io_pgetevents_time64 syscall" that didn't correctly
-work for 32-bit architecutres with a 64-bit time_t that aren't RISC-V.
-
-For a full discussion of the issue see:
-https://github.com/openssl/openssl/commit/5b5e2985f355c8e99c196d9ce5d02c15bebadfbc
-
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-
-Reviewed-by: Tomas Mraz <tomas@openssl.org>
-Reviewed-by: Paul Dale <pauli@openssl.org>
-(Merged from https://github.com/openssl/openssl/pull/14432)
-Upstream-Status: Accepted
----
- engines/e_afalg.c | 55 ++++++++++++++++++++++++++++++++++++-----------
- 1 file changed, 42 insertions(+), 13 deletions(-)
-
-diff --git a/engines/e_afalg.c b/engines/e_afalg.c
-index 9480d7c24b..4e9d67db2d 100644
---- a/engines/e_afalg.c
-+++ b/engines/e_afalg.c
-@@ -124,27 +124,56 @@ static ossl_inline int io_read(aio_context_t ctx, long n, struct iocb **iocb)
-     return syscall(__NR_io_submit, ctx, n, iocb);
- }
- 
-+/* A version of 'struct timespec' with 32-bit time_t and nanoseconds.  */
-+struct __timespec32
-+{
-+  __kernel_long_t tv_sec;
-+  __kernel_long_t tv_nsec;
-+};
-+
- static ossl_inline int io_getevents(aio_context_t ctx, long min, long max,
-                                struct io_event *events,
-                                struct timespec *timeout)
- {
-+#if defined(__NR_io_pgetevents_time64)
-+    /* Check if we are a 32-bit architecture with a 64-bit time_t */
-+    if (sizeof(*timeout) != sizeof(struct __timespec32)) {
-+        int ret = syscall(__NR_io_pgetevents_time64, ctx, min, max, events,
-+                          timeout, NULL);
-+        if (ret == 0 || errno != ENOSYS)
-+            return ret;
-+    }
-+#endif
-+
- #if defined(__NR_io_getevents)
--    return syscall(__NR_io_getevents, ctx, min, max, events, timeout);
--#elif defined(__NR_io_pgetevents_time64)
--    /* Let's only support the 64 suffix syscalls for 64-bit time_t.
--     * This simplifies the code for us as we don't need to use a 64-bit
--     * version of timespec with a 32-bit time_t and handle converting
--     * between 64-bit and 32-bit times and check for overflows.
--     */
--    if (sizeof(timeout->tv_sec) == 8)
--        return syscall(__NR_io_pgetevents_time64, ctx, min, max, events, timeout, NULL);
-+    if (sizeof(*timeout) == sizeof(struct __timespec32))
-+        /*
-+         * time_t matches our architecture length, we can just use
-+         * __NR_io_getevents
-+         */
-+        return syscall(__NR_io_getevents, ctx, min, max, events, timeout);
-     else {
--        errno = ENOSYS;
--        return -1;
-+        /*
-+         * We don't have __NR_io_pgetevents_time64, but we are using a
-+         * 64-bit time_t on a 32-bit architecture. If we can fit the
-+         * timeout value in a 32-bit time_t, then let's do that
-+         * and then use the __NR_io_getevents syscall.
-+         */
-+        if (timeout && timeout->tv_sec == (long)timeout->tv_sec) {
-+            struct __timespec32 ts32;
-+
-+            ts32.tv_sec = (__kernel_long_t) timeout->tv_sec;
-+            ts32.tv_nsec = (__kernel_long_t) timeout->tv_nsec;
-+
-+            return syscall(__NR_io_getevents, ctx, min, max, events, ts32);
-+        } else {
-+            return syscall(__NR_io_getevents, ctx, min, max, events, NULL);
-+        }
-     }
--#else
--# error "We require either the io_getevents syscall or __NR_io_pgetevents_time64."
- #endif
-+
-+    errno = ENOSYS;
-+    return -1;
- }
- 
- static void afalg_waitfd_cleanup(ASYNC_WAIT_CTX *ctx, const void *key,
--- 
-2.30.1
-
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/reproducible.patch b/poky/meta/recipes-connectivity/openssl/openssl/reproducible.patch
deleted file mode 100644
index a24260c..0000000
--- a/poky/meta/recipes-connectivity/openssl/openssl/reproducible.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-The value for perl_archname can vary depending on the host, e.g. 
-x86_64-linux-gnu-thread-multi or x86_64-linux-thread-multi which
-makes the ptest package non-reproducible. Its unused other than 
-these references so drop it.
-
-RP 2020/2/6
-
-Upstream-Status: Pending
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
-Index: openssl-1.1.1d/Configure
-===================================================================
---- openssl-1.1.1d.orig/Configure
-+++ openssl-1.1.1d/Configure
-@@ -286,7 +286,7 @@ if (defined env($local_config_envname))
- # Save away perl command information
- $config{perl_cmd} = $^X;
- $config{perl_version} = $Config{version};
--$config{perl_archname} = $Config{archname};
-+#$config{perl_archname} = $Config{archname};
- 
- $config{prefix}="";
- $config{openssldir}="";
-@@ -2517,7 +2517,7 @@ _____
-                           @{$config{perlargv}}), "\n";
-         print "\nPerl information:\n\n";
-         print '    ',$config{perl_cmd},"\n";
--        print '    ',$config{perl_version},' for ',$config{perl_archname},"\n";
-+        print '    ',$config{perl_version},"\n";
-     }
-     if ($dump || $options) {
-         my $longest = 0;
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/run-ptest b/poky/meta/recipes-connectivity/openssl/openssl/run-ptest
index 3fb2247..8dff791 100644
--- a/poky/meta/recipes-connectivity/openssl/openssl/run-ptest
+++ b/poky/meta/recipes-connectivity/openssl/openssl/run-ptest
@@ -9,4 +9,4 @@
 # OPENSSL_ENGINES is relative from the test binaries
 export OPENSSL_ENGINES=../engines
 
-perl ./test/run_tests.pl $* | perl -0pe 's#(.*) \.*.ok#PASS: \1#g; s#(.*) \.*.skipped: (.*)#SKIP: \1 (\2)#g; s#(.*) \.*.\nDubious#FAIL: \1#;'
+perl ./test/run_tests.pl $* | sed -u -r -e '/(.*) \.*.ok/ s/^/PASS: /g' -r -e '/Dubious(.*)/ s/^/FAIL: /g' -e '/(.*) \.*.skipped: (.*)/ s/^/SKIP: /g'
diff --git a/poky/meta/recipes-connectivity/openssl/openssl_1.1.1l.bb b/poky/meta/recipes-connectivity/openssl/openssl_1.1.1l.bb
deleted file mode 100644
index b241ba7..0000000
--- a/poky/meta/recipes-connectivity/openssl/openssl_1.1.1l.bb
+++ /dev/null
@@ -1,248 +0,0 @@
-SUMMARY = "Secure Socket Layer"
-DESCRIPTION = "Secure Socket Layer (SSL) binary and related cryptographic tools."
-HOMEPAGE = "http://www.openssl.org/"
-BUGTRACKER = "http://www.openssl.org/news/vulnerabilities.html"
-SECTION = "libs/network"
-
-# "openssl" here actually means both OpenSSL and SSLeay licenses apply
-# (see meta/files/common-licenses/OpenSSL to which "openssl" is SPDXLICENSEMAPped)
-LICENSE = "openssl"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d343e62fc9c833710bbbed25f27364c8"
-
-DEPENDS = "hostperl-runtime-native"
-
-SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
-           file://run-ptest \
-           file://0001-skip-test_symbol_presence.patch \
-           file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \
-           file://afalg.patch \
-           file://reproducible.patch \
-           "
-
-SRC_URI:append:class-nativesdk = " \
-           file://environment.d-openssl.sh \
-           "
-
-SRC_URI:append:riscv32 = " \
-           file://0003-Add-support-for-io_pgetevents_time64-syscall.patch \
-           file://0004-Fixup-support-for-io_pgetevents_time64-syscall.patch \
-           "
-
-SRC_URI[sha256sum] = "0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1"
-
-inherit lib_package multilib_header multilib_script ptest
-MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
-
-PACKAGECONFIG ?= ""
-PACKAGECONFIG:class-native = ""
-PACKAGECONFIG:class-nativesdk = ""
-
-PACKAGECONFIG[cryptodev-linux] = "enable-devcryptoeng,disable-devcryptoeng,cryptodev-linux,,cryptodev-module"
-PACKAGECONFIG[no-tls1] = "no-tls1"
-PACKAGECONFIG[no-tls1_1] = "no-tls1_1"
-
-B = "${WORKDIR}/build"
-do_configure[cleandirs] = "${B}"
-
-#| ./libcrypto.so: undefined reference to `getcontext'
-#| ./libcrypto.so: undefined reference to `setcontext'
-#| ./libcrypto.so: undefined reference to `makecontext'
-EXTRA_OECONF:append:libc-musl = " no-async"
-EXTRA_OECONF:append:libc-musl:powerpc64 = " no-asm"
-
-# adding devrandom prevents openssl from using getrandom() which is not available on older glibc versions
-# (native versions can be built with newer glibc, but then relocated onto a system with older glibc)
-EXTRA_OECONF:class-native = "--with-rand-seed=os,devrandom"
-EXTRA_OECONF:class-nativesdk = "--with-rand-seed=os,devrandom"
-
-# Relying on hardcoded built-in paths causes openssl-native to not be relocateable from sstate.
-CFLAGS:append:class-native = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin"
-CFLAGS:append:class-nativesdk = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin"
-
-# Disable deprecated crypto algorithms
-# Retained for compatibilty
-# des (curl)
-# dh (python-ssl)
-# dsa (rpm)
-# md4 (cyrus-sasl freeradius hostapd)
-# bf (wvstreams postgresql x11vnc crda znc cfengine)
-# rc4 (freerdp librtorrent ettercap xrdp transmission pam-ssh-agent-auth php)
-# rc2 (mailx)
-# psk (qt5)
-# srp (libest)
-# whirlpool (qca)
-DEPRECATED_CRYPTO_FLAGS = "no-ssl no-idea no-rc5 no-md2 no-camellia no-mdc2 no-scrypt no-seed no-siphash no-sm2 no-sm3 no-sm4"
-
-do_configure () {
-	os=${HOST_OS}
-	case $os in
-	linux-gnueabi |\
-	linux-gnuspe |\
-	linux-musleabi |\
-	linux-muslspe |\
-	linux-musl )
-		os=linux
-		;;
-	*)
-		;;
-	esac
-	target="$os-${HOST_ARCH}"
-	case $target in
-	linux-arm*)
-		target=linux-armv4
-		;;
-	linux-aarch64*)
-		target=linux-aarch64
-		;;
-	linux-i?86 | linux-viac3)
-		target=linux-x86
-		;;
-	linux-gnux32-x86_64 | linux-muslx32-x86_64 )
-		target=linux-x32
-		;;
-	linux-gnu64-x86_64)
-		target=linux-x86_64
-		;;
-	linux-mips | linux-mipsel)
-		# specifying TARGET_CC_ARCH prevents openssl from (incorrectly) adding target architecture flags
-		target="linux-mips32 ${TARGET_CC_ARCH}"
-		;;
-	linux-gnun32-mips*)
-		target=linux-mips64
-		;;
-	linux-*-mips64 | linux-mips64 | linux-*-mips64el | linux-mips64el)
-		target=linux64-mips64
-		;;
-	linux-microblaze* | linux-nios2* | linux-sh3 | linux-sh4 | linux-arc*)
-		target=linux-generic32
-		;;
-	linux-powerpc)
-		target=linux-ppc
-		;;
-	linux-powerpc64)
-		target=linux-ppc64
-		;;
-	linux-powerpc64le)
-		target=linux-ppc64le
-		;;
-	linux-riscv32)
-		target=linux-generic32
-		;;
-	linux-riscv64)
-		target=linux-generic64
-		;;
-	linux-sparc | linux-supersparc)
-		target=linux-sparcv9
-		;;
-	mingw32-x86_64)
-		target=mingw64
-		;;
-	esac
-
-	useprefix=${prefix}
-	if [ "x$useprefix" = "x" ]; then
-		useprefix=/
-	fi
-	# WARNING: do not set compiler/linker flags (-I/-D etc.) in EXTRA_OECONF, as they will fully replace the
-	# environment variables set by bitbake. Adjust the environment variables instead.
-	HASHBANGPERL="/usr/bin/env perl" PERL=perl PERL5LIB="${S}/external/perl/Text-Template-1.46/lib/" \
-	perl ${S}/Configure ${EXTRA_OECONF} ${PACKAGECONFIG_CONFARGS} ${DEPRECATED_CRYPTO_FLAGS} --prefix=$useprefix --openssldir=${libdir}/ssl-1.1 --libdir=${libdir} $target
-	perl ${B}/configdata.pm --dump
-}
-
-do_install () {
-	oe_runmake DESTDIR="${D}" MANDIR="${mandir}" MANSUFFIX=ssl install
-
-	oe_multilib_header openssl/opensslconf.h
-
-	# Create SSL structure for packages such as ca-certificates which
-	# contain hard-coded paths to /etc/ssl. Debian does the same.
-	install -d ${D}${sysconfdir}/ssl
-	mv ${D}${libdir}/ssl-1.1/certs \
-	   ${D}${libdir}/ssl-1.1/private \
-	   ${D}${libdir}/ssl-1.1/openssl.cnf \
-	   ${D}${sysconfdir}/ssl/
-
-	# Although absolute symlinks would be OK for the target, they become
-	# invalid if native or nativesdk are relocated from sstate.
-	ln -sf ${@oe.path.relative('${libdir}/ssl-1.1', '${sysconfdir}/ssl/certs')} ${D}${libdir}/ssl-1.1/certs
-	ln -sf ${@oe.path.relative('${libdir}/ssl-1.1', '${sysconfdir}/ssl/private')} ${D}${libdir}/ssl-1.1/private
-	ln -sf ${@oe.path.relative('${libdir}/ssl-1.1', '${sysconfdir}/ssl/openssl.cnf')} ${D}${libdir}/ssl-1.1/openssl.cnf
-}
-
-do_install:append:class-native () {
-	create_wrapper ${D}${bindir}/openssl \
-	    OPENSSL_CONF=${libdir}/ssl-1.1/openssl.cnf \
-	    SSL_CERT_DIR=${libdir}/ssl-1.1/certs \
-	    SSL_CERT_FILE=${libdir}/ssl-1.1/cert.pem \
-	    OPENSSL_ENGINES=${libdir}/engines-1.1
-}
-
-do_install:append:class-nativesdk () {
-	mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
-	install -m 644 ${WORKDIR}/environment.d-openssl.sh ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh
-	sed 's|/usr/lib/ssl/|/usr/lib/ssl-1.1/|g' -i ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh
-}
-
-PTEST_BUILD_HOST_FILES += "configdata.pm"
-PTEST_BUILD_HOST_PATTERN = "perl_version ="
-do_install_ptest () {
-	# Prune the build tree
-	rm -f ${B}/fuzz/*.* ${B}/test/*.*
-
-	cp ${S}/Configure ${B}/configdata.pm ${D}${PTEST_PATH}
-	cp -r ${S}/external ${B}/test ${S}/test ${B}/fuzz ${S}/util ${B}/util ${D}${PTEST_PATH}
-
-	# For test_shlibload
-	ln -s ${libdir}/libcrypto.so.1.1 ${D}${PTEST_PATH}/
-	ln -s ${libdir}/libssl.so.1.1 ${D}${PTEST_PATH}/
-
-	install -d ${D}${PTEST_PATH}/apps
-	ln -s ${bindir}/openssl ${D}${PTEST_PATH}/apps
-	install -m644 ${S}/apps/*.pem ${S}/apps/*.srl ${S}/apps/openssl.cnf ${D}${PTEST_PATH}/apps
-	install -m755 ${B}/apps/CA.pl ${D}${PTEST_PATH}/apps
-
-	install -d ${D}${PTEST_PATH}/engines
-	install -m755 ${B}/engines/ossltest.so ${D}${PTEST_PATH}/engines
-
-        # seems to be needed with perl 5.32.1
-        install -d ${D}${PTEST_PATH}/util/perl/recipes
-        cp ${D}${PTEST_PATH}/test/recipes/tconversion.pl ${D}${PTEST_PATH}/util/perl/recipes/
-}
-
-# Add the openssl.cnf file to the openssl-conf package. Make the libcrypto
-# package RRECOMMENDS on this package. This will enable the configuration
-# file to be installed for both the openssl-bin package and the libcrypto
-# package since the openssl-bin package depends on the libcrypto package.
-
-PACKAGES =+ "libcrypto libssl openssl-conf ${PN}-engines ${PN}-misc"
-
-FILES:libcrypto = "${libdir}/libcrypto${SOLIBS}"
-FILES:libssl = "${libdir}/libssl${SOLIBS}"
-FILES:openssl-conf = "${sysconfdir}/ssl/openssl.cnf \
-                      ${libdir}/ssl-1.1/openssl.cnf* \
-                      "
-FILES:${PN}-engines = "${libdir}/engines-1.1"
-# ${prefix} comes from what we pass into --prefix at configure time (which is used for INSTALLTOP)
-FILES:${PN}-engines:append:mingw32:class-nativesdk = " ${prefix}${libdir}/engines-1_1"
-FILES:${PN}-misc = "${libdir}/ssl-1.1/misc ${bindir}/c_rehash"
-FILES:${PN} =+ "${libdir}/ssl-1.1/*"
-FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/openssl.sh"
-
-CONFFILES:openssl-conf = "${sysconfdir}/ssl/openssl.cnf"
-
-RRECOMMENDS:libcrypto += "openssl-conf"
-RDEPENDS:${PN}-misc = "perl"
-RDEPENDS:${PN}-ptest += "openssl-bin perl perl-modules bash"
-
-RDEPENDS:${PN}-bin += "openssl-conf"
-
-BBCLASSEXTEND = "native nativesdk"
-
-CVE_PRODUCT = "openssl:openssl"
-
-CVE_VERSION_SUFFIX = "alphabetical"
-
-# Only affects OpenSSL >= 1.1.1 in combination with Apache < 2.4.37
-# Apache in meta-webserver is already recent enough
-CVE_CHECK_WHITELIST += "CVE-2019-0190"
diff --git a/poky/meta/recipes-connectivity/openssl/openssl_3.0.0.bb b/poky/meta/recipes-connectivity/openssl/openssl_3.0.0.bb
new file mode 100644
index 0000000..67343be
--- /dev/null
+++ b/poky/meta/recipes-connectivity/openssl/openssl_3.0.0.bb
@@ -0,0 +1,244 @@
+SUMMARY = "Secure Socket Layer"
+DESCRIPTION = "Secure Socket Layer (SSL) binary and related cryptographic tools."
+HOMEPAGE = "http://www.openssl.org/"
+BUGTRACKER = "http://www.openssl.org/news/vulnerabilities.html"
+SECTION = "libs/network"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c75985e733726beaba57bc5253e96d04"
+
+SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
+           file://run-ptest \
+           file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \
+           file://afalg.patch \
+           file://0001-Configure-do-not-tweak-mips-cflags.patch \
+           "
+
+SRC_URI:append:class-nativesdk = " \
+           file://environment.d-openssl.sh \
+           "
+
+SRC_URI[sha256sum] = "59eedfcb46c25214c9bd37ed6078297b4df01d012267fe9e9eee31f61bc70536"
+
+inherit lib_package multilib_header multilib_script ptest perlnative
+MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG:class-native = ""
+PACKAGECONFIG:class-nativesdk = ""
+
+PACKAGECONFIG[cryptodev-linux] = "enable-devcryptoeng,disable-devcryptoeng,cryptodev-linux,,cryptodev-module"
+PACKAGECONFIG[no-tls1] = "no-tls1"
+PACKAGECONFIG[no-tls1_1] = "no-tls1_1"
+
+B = "${WORKDIR}/build"
+do_configure[cleandirs] = "${B}"
+
+#| ./libcrypto.so: undefined reference to `getcontext'
+#| ./libcrypto.so: undefined reference to `setcontext'
+#| ./libcrypto.so: undefined reference to `makecontext'
+EXTRA_OECONF:append:libc-musl = " no-async"
+EXTRA_OECONF:append:libc-musl:powerpc64 = " no-asm"
+
+# adding devrandom prevents openssl from using getrandom() which is not available on older glibc versions
+# (native versions can be built with newer glibc, but then relocated onto a system with older glibc)
+EXTRA_OECONF:class-native = "--with-rand-seed=os,devrandom"
+EXTRA_OECONF:class-nativesdk = "--with-rand-seed=os,devrandom"
+
+# Relying on hardcoded built-in paths causes openssl-native to not be relocateable from sstate.
+CFLAGS:append:class-native = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin"
+CFLAGS:append:class-nativesdk = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin"
+
+# This allows disabling deprecated or undesirable crypto algorithms.
+# The default is to trust upstream choices.
+DEPRECATED_CRYPTO_FLAGS ?= ""
+
+do_configure () {
+	os=${HOST_OS}
+	case $os in
+	linux-gnueabi |\
+	linux-gnuspe |\
+	linux-musleabi |\
+	linux-muslspe |\
+	linux-musl )
+		os=linux
+		;;
+	*)
+		;;
+	esac
+	target="$os-${HOST_ARCH}"
+	case $target in
+	linux-arm*)
+		target=linux-armv4
+		;;
+	linux-aarch64*)
+		target=linux-aarch64
+		;;
+	linux-i?86 | linux-viac3)
+		target=linux-x86
+		;;
+	linux-gnux32-x86_64 | linux-muslx32-x86_64 )
+		target=linux-x32
+		;;
+	linux-gnu64-x86_64)
+		target=linux-x86_64
+		;;
+	linux-mips | linux-mipsel)
+		# specifying TARGET_CC_ARCH prevents openssl from (incorrectly) adding target architecture flags
+		target="linux-mips32 ${TARGET_CC_ARCH}"
+		;;
+	linux-gnun32-mips*)
+		target=linux-mips64
+		;;
+	linux-*-mips64 | linux-mips64 | linux-*-mips64el | linux-mips64el)
+		target=linux64-mips64
+		;;
+	linux-microblaze* | linux-nios2* | linux-sh3 | linux-sh4 | linux-arc*)
+		target=linux-generic32
+		;;
+	linux-powerpc)
+		target=linux-ppc
+		;;
+	linux-powerpc64)
+		target=linux-ppc64
+		;;
+	linux-powerpc64le)
+		target=linux-ppc64le
+		;;
+	linux-riscv32)
+		target=linux-generic32
+		;;
+	linux-riscv64)
+		target=linux-generic64
+		;;
+	linux-sparc | linux-supersparc)
+		target=linux-sparcv9
+		;;
+	mingw32-x86_64)
+		target=mingw64
+		;;
+	esac
+
+	useprefix=${prefix}
+	if [ "x$useprefix" = "x" ]; then
+		useprefix=/
+	fi
+	# WARNING: do not set compiler/linker flags (-I/-D etc.) in EXTRA_OECONF, as they will fully replace the
+	# environment variables set by bitbake. Adjust the environment variables instead.
+	HASHBANGPERL="/usr/bin/env perl" PERL=perl PERL5LIB="${S}/external/perl/Text-Template-1.46/lib/" \
+	perl ${S}/Configure ${EXTRA_OECONF} ${PACKAGECONFIG_CONFARGS} ${DEPRECATED_CRYPTO_FLAGS} --prefix=$useprefix --openssldir=${libdir}/ssl-3 --libdir=${libdir} $target
+	perl ${B}/configdata.pm --dump
+}
+
+do_install () {
+	oe_runmake DESTDIR="${D}" MANDIR="${mandir}" MANSUFFIX=ssl install
+
+	oe_multilib_header openssl/opensslconf.h
+	oe_multilib_header openssl/configuration.h
+
+	# Create SSL structure for packages such as ca-certificates which
+	# contain hard-coded paths to /etc/ssl. Debian does the same.
+	install -d ${D}${sysconfdir}/ssl
+	mv ${D}${libdir}/ssl-3/certs \
+	   ${D}${libdir}/ssl-3/private \
+	   ${D}${libdir}/ssl-3/openssl.cnf \
+	   ${D}${sysconfdir}/ssl/
+
+	# Although absolute symlinks would be OK for the target, they become
+	# invalid if native or nativesdk are relocated from sstate.
+	ln -sf ${@oe.path.relative('${libdir}/ssl-3', '${sysconfdir}/ssl/certs')} ${D}${libdir}/ssl-3/certs
+	ln -sf ${@oe.path.relative('${libdir}/ssl-3', '${sysconfdir}/ssl/private')} ${D}${libdir}/ssl-3/private
+	ln -sf ${@oe.path.relative('${libdir}/ssl-3', '${sysconfdir}/ssl/openssl.cnf')} ${D}${libdir}/ssl-3/openssl.cnf
+}
+
+do_install:append:class-native () {
+	create_wrapper ${D}${bindir}/openssl \
+	    OPENSSL_CONF=${libdir}/ssl-3/openssl.cnf \
+	    SSL_CERT_DIR=${libdir}/ssl-3/certs \
+	    SSL_CERT_FILE=${libdir}/ssl-3/cert.pem \
+	    OPENSSL_ENGINES=${libdir}/engines-3
+}
+
+do_install:append:class-nativesdk () {
+	mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
+	install -m 644 ${WORKDIR}/environment.d-openssl.sh ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh
+	sed 's|/usr/lib/ssl/|/usr/lib/ssl-3/|g' -i ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh
+}
+
+PTEST_BUILD_HOST_FILES += "configdata.pm"
+PTEST_BUILD_HOST_PATTERN = "perl_version ="
+do_install_ptest () {
+	install -d ${D}${PTEST_PATH}/test
+	install -m755 ${B}/test/p_test.so ${D}${PTEST_PATH}/test
+	install -m755 ${B}/test/provider_internal_test.cnf ${D}${PTEST_PATH}/test
+
+	# Prune the build tree
+	rm -f ${B}/fuzz/*.* ${B}/test/*.*
+
+	cp ${S}/Configure ${B}/configdata.pm ${D}${PTEST_PATH}
+	sed 's|${S}|${PTEST_PATH}|g' -i ${D}${PTEST_PATH}/configdata.pm
+	cp -r ${S}/external ${B}/test ${S}/test ${B}/fuzz ${S}/util ${B}/util ${D}${PTEST_PATH}
+
+	# For test_shlibload
+	ln -s ${libdir}/libcrypto.so.1.1 ${D}${PTEST_PATH}/
+	ln -s ${libdir}/libssl.so.1.1 ${D}${PTEST_PATH}/
+
+	install -d ${D}${PTEST_PATH}/apps
+	ln -s ${bindir}/openssl ${D}${PTEST_PATH}/apps
+	install -m644 ${S}/apps/*.pem ${S}/apps/*.srl ${S}/apps/openssl.cnf ${D}${PTEST_PATH}/apps
+	install -m755 ${B}/apps/CA.pl ${D}${PTEST_PATH}/apps
+
+	install -d ${D}${PTEST_PATH}/engines
+	install -m755 ${B}/engines/ossltest.so ${D}${PTEST_PATH}/engines
+	install -m755 ${B}/engines/loader_attic.so ${D}${PTEST_PATH}/engines
+
+	install -d ${D}${PTEST_PATH}/providers
+	install -m755 ${B}/providers/legacy.so ${D}${PTEST_PATH}/providers
+
+        install -d ${D}${PTEST_PATH}/Configurations
+        cp -rf ${S}/Configurations/* ${D}${PTEST_PATH}/Configurations/
+
+        # seems to be needed with perl 5.32.1
+        install -d ${D}${PTEST_PATH}/util/perl/recipes
+        cp ${D}${PTEST_PATH}/test/recipes/tconversion.pl ${D}${PTEST_PATH}/util/perl/recipes/
+
+	sed 's|${S}|${PTEST_PATH}|g' -i ${D}${PTEST_PATH}/util/wrap.pl
+
+}
+
+# Add the openssl.cnf file to the openssl-conf package. Make the libcrypto
+# package RRECOMMENDS on this package. This will enable the configuration
+# file to be installed for both the openssl-bin package and the libcrypto
+# package since the openssl-bin package depends on the libcrypto package.
+
+PACKAGES =+ "libcrypto libssl openssl-conf ${PN}-engines ${PN}-misc"
+
+FILES:libcrypto = "${libdir}/libcrypto${SOLIBS}"
+FILES:libssl = "${libdir}/libssl${SOLIBS}"
+FILES:openssl-conf = "${sysconfdir}/ssl/openssl.cnf \
+                      ${libdir}/ssl-3/openssl.cnf* \
+                      "
+FILES:${PN}-engines = "${libdir}/engines-3"
+# ${prefix} comes from what we pass into --prefix at configure time (which is used for INSTALLTOP)
+FILES:${PN}-engines:append:mingw32:class-nativesdk = " ${prefix}${libdir}/engines-3"
+FILES:${PN}-misc = "${libdir}/ssl-3/misc ${bindir}/c_rehash"
+FILES:${PN} =+ "${libdir}/ssl-3/* ${libdir}/ossl-modules/"
+FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/openssl.sh"
+
+CONFFILES:openssl-conf = "${sysconfdir}/ssl/openssl.cnf"
+
+RRECOMMENDS:libcrypto += "openssl-conf"
+RDEPENDS:${PN}-misc = "perl"
+RDEPENDS:${PN}-ptest += "openssl-bin perl perl-modules bash"
+
+RDEPENDS:${PN}-bin += "openssl-conf"
+
+BBCLASSEXTEND = "native nativesdk"
+
+CVE_PRODUCT = "openssl:openssl"
+
+CVE_VERSION_SUFFIX = "alphabetical"
+
+# Only affects OpenSSL >= 1.1.1 in combination with Apache < 2.4.37
+# Apache in meta-webserver is already recent enough
+CVE_CHECK_WHITELIST += "CVE-2019-0190"
diff --git a/poky/meta/recipes-core/busybox/busybox-inittab_1.34.0.bb b/poky/meta/recipes-core/busybox/busybox-inittab_1.34.1.bb
similarity index 100%
rename from poky/meta/recipes-core/busybox/busybox-inittab_1.34.0.bb
rename to poky/meta/recipes-core/busybox/busybox-inittab_1.34.1.bb
diff --git a/poky/meta/recipes-core/busybox/busybox.inc b/poky/meta/recipes-core/busybox/busybox.inc
index 808c3dc..622325a 100644
--- a/poky/meta/recipes-core/busybox/busybox.inc
+++ b/poky/meta/recipes-core/busybox/busybox.inc
@@ -110,9 +110,8 @@
 }
 
 do_prepare_config () {
-	if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
-		export KCONFIG_NOTIMESTAMP=1
-	fi
+	export KCONFIG_NOTIMESTAMP=1
+
 	sed -e '/CONFIG_STATIC/d' \
 		< ${WORKDIR}/defconfig > ${S}/.config
 	echo "# CONFIG_STATIC is not set" >> .config
@@ -143,9 +142,8 @@
 
 do_compile() {
 	unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
-	if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
-		export KCONFIG_NOTIMESTAMP=1
-	fi
+	export KCONFIG_NOTIMESTAMP=1
+
 	if [ "${BUSYBOX_SPLIT_SUID}" = "1" -a x`grep "CONFIG_FEATURE_INDIVIDUAL=y" .config` = x ]; then
 		# split the .config into two parts, and make two busybox binaries
 		if [ -e .config.orig ]; then
diff --git a/poky/meta/recipes-core/busybox/busybox_1.34.0.bb b/poky/meta/recipes-core/busybox/busybox_1.34.0.bb
deleted file mode 100644
index 51df1df..0000000
--- a/poky/meta/recipes-core/busybox/busybox_1.34.0.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-require busybox.inc
-
-SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
-           file://busybox-udhcpc-no_deconfig.patch \
-           file://find-touchscreen.sh \
-           file://busybox-cron \
-           file://busybox-httpd \
-           file://busybox-udhcpd \
-           file://default.script \
-           file://simple.script \
-           file://hwclock.sh \
-           file://syslog \
-           file://syslog-startup.conf \
-           file://syslog.conf \
-           file://busybox-syslog.default \
-           file://mdev \
-           file://mdev.conf \
-           file://mdev-mount.sh \
-           file://defconfig \
-           file://busybox-syslog.service.in \
-           file://busybox-klogd.service.in \
-           file://fail_on_no_media.patch \
-           file://run-ptest \
-           file://inetd.conf \
-           file://inetd \
-           file://login-utilities.cfg \
-           file://recognize_connmand.patch \
-           file://busybox-cross-menuconfig.patch \
-           file://0001-Use-CC-when-linking-instead-of-LD-and-use-CFLAGS-and.patch \
-           file://mount-via-label.cfg \
-           file://sha1sum.cfg \
-           file://sha256sum.cfg \
-           file://getopts.cfg \
-           file://longopts.cfg \
-           file://resize.cfg \
-           ${@["", "file://init.cfg"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]} \
-           ${@["", "file://rcS.default"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]} \
-           ${@["", "file://mdev.cfg"][(d.getVar('VIRTUAL-RUNTIME_dev_manager') == 'busybox-mdev')]} \
-           file://syslog.cfg \
-           file://unicode.cfg \
-           file://rev.cfg \
-           file://pgrep.cfg \
-           file://rcS \
-           file://rcK \
-           file://makefile-libbb-race.patch \
-           file://0001-testsuite-check-uudecode-before-using-it.patch \
-           file://0001-testsuite-use-www.example.org-for-wget-test-cases.patch \
-           file://0001-du-l-works-fix-to-use-145-instead-of-144.patch \
-           file://0001-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch \
-           file://0001-mktemp-add-tmpdir-option.patch \
-           "
-SRC_URI:append:libc-musl = " file://musl.cfg "
-
-SRC_URI[tarball.sha256sum] = "ec8d1615edb045b83b81966604759c4d4ac921434ab4011da604f629c06074ce"
diff --git a/poky/meta/recipes-core/busybox/busybox_1.34.1.bb b/poky/meta/recipes-core/busybox/busybox_1.34.1.bb
new file mode 100644
index 0000000..6aed0f0
--- /dev/null
+++ b/poky/meta/recipes-core/busybox/busybox_1.34.1.bb
@@ -0,0 +1,54 @@
+require busybox.inc
+
+SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
+           file://busybox-udhcpc-no_deconfig.patch \
+           file://find-touchscreen.sh \
+           file://busybox-cron \
+           file://busybox-httpd \
+           file://busybox-udhcpd \
+           file://default.script \
+           file://simple.script \
+           file://hwclock.sh \
+           file://syslog \
+           file://syslog-startup.conf \
+           file://syslog.conf \
+           file://busybox-syslog.default \
+           file://mdev \
+           file://mdev.conf \
+           file://mdev-mount.sh \
+           file://defconfig \
+           file://busybox-syslog.service.in \
+           file://busybox-klogd.service.in \
+           file://fail_on_no_media.patch \
+           file://run-ptest \
+           file://inetd.conf \
+           file://inetd \
+           file://login-utilities.cfg \
+           file://recognize_connmand.patch \
+           file://busybox-cross-menuconfig.patch \
+           file://0001-Use-CC-when-linking-instead-of-LD-and-use-CFLAGS-and.patch \
+           file://mount-via-label.cfg \
+           file://sha1sum.cfg \
+           file://sha256sum.cfg \
+           file://getopts.cfg \
+           file://longopts.cfg \
+           file://resize.cfg \
+           ${@["", "file://init.cfg"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]} \
+           ${@["", "file://rcS.default"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]} \
+           ${@["", "file://mdev.cfg"][(d.getVar('VIRTUAL-RUNTIME_dev_manager') == 'busybox-mdev')]} \
+           file://syslog.cfg \
+           file://unicode.cfg \
+           file://rev.cfg \
+           file://pgrep.cfg \
+           file://rcS \
+           file://rcK \
+           file://makefile-libbb-race.patch \
+           file://0001-testsuite-check-uudecode-before-using-it.patch \
+           file://0001-testsuite-use-www.example.org-for-wget-test-cases.patch \
+           file://0001-du-l-works-fix-to-use-145-instead-of-144.patch \
+           file://0001-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch \
+           file://0001-mktemp-add-tmpdir-option.patch \
+           "
+SRC_URI:append:libc-musl = " file://musl.cfg "
+
+SRC_URI[tarball.sha256sum] = "415fbd89e5344c96acf449d94a6f956dbed62e18e835fc83e064db33a34bd549"
diff --git a/poky/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch b/poky/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch
deleted file mode 100644
index 06b6307..0000000
--- a/poky/meta/recipes-core/coreutils/coreutils/0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-From 3a48610860a9a75692d2cbedde69ac15269d540a Mon Sep 17 00:00:00 2001
-Message-Id: <3a48610860a9a75692d2cbedde69ac15269d540a.1624302273.git.wallinux@gmail.com>
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Wed, 15 Apr 2020 20:50:32 -0700
-Subject: [PATCH] fts: remove NOSTAT_LEAF_OPTIMIZATION
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-It caused ‘find’ and ‘du’ to dump core, and it was useful
-only for obsolescent Linux filesystems anyway.  Problem reported in:
-https://lists.gnu.org/r/bug-gnulib/2020-04/msg00068.html
-Quite possibly there is still a serious underlying fts bug with
-tight-loop-check and mutating file systems, but if so this patch
-should cause the bug to be triggered less often.
-* lib/fts.c (enum leaf_optimization): Remove
-NOSTAT_LEAF_OPTIMIZATION, as it’s problematic.
-(S_MAGIC_REISERFS, S_MAGIC_XFS): Remove; no longer needed.
-(leaf_optimization): Remove special cases for ReiserFS and XFS.
-(fts_read): Remove NOSTAT_LEAF_OPTIMIZATION code.
-* lib/fts_.h (struct _ftsent.fts_n_dirs_remaining):
-Remove.  All uses removed.
-
-Upstream-Status: Backport [upstream gnulib commit:
-47bf2cf3184027c1eb9c1dfeea5c5b8b2d69710d]
-
-Signed-off-by: Anders Wallin <wallinux@gmail.com>
----
- lib/fts.c  | 56 ++++++++----------------------------------------------
- lib/fts_.h |  5 -----
- 2 files changed, 8 insertions(+), 53 deletions(-)
-
-diff --git a/lib/fts.c b/lib/fts.c
-index d3a0472..ade8c33 100644
---- a/lib/fts.c
-+++ b/lib/fts.c
-@@ -445,7 +445,6 @@ fts_open (char * const *argv,
-                 if ((parent = fts_alloc(sp, "", 0)) == NULL)
-                         goto mem2;
-                 parent->fts_level = FTS_ROOTPARENTLEVEL;
--                parent->fts_n_dirs_remaining = -1;
-           }
- 
-         /* The classic fts implementation would call fts_stat with
-@@ -634,9 +633,8 @@ fts_close (FTS *sp)
- }
- 
- /* Minimum link count of a traditional Unix directory.  When leaf
--   optimization is OK and MIN_DIR_NLINK <= st_nlink, then st_nlink is
--   an upper bound on the number of subdirectories (counting "." and
--   "..").  */
-+   optimization is OK and a directory's st_nlink == MIN_DIR_NLINK,
-+   then the directory has no subdirectories.  */
- enum { MIN_DIR_NLINK = 2 };
- 
- /* Whether leaf optimization is OK for a directory.  */
-@@ -645,12 +643,8 @@ enum leaf_optimization
-     /* st_nlink is not reliable for this directory's subdirectories.  */
-     NO_LEAF_OPTIMIZATION,
- 
--    /* Leaf optimization is OK, but is not useful for avoiding stat calls.  */
--    OK_LEAF_OPTIMIZATION,
--
--    /* Leaf optimization is not only OK: it is useful for avoiding
--       stat calls, because dirent.d_type does not work.  */
--    NOSTAT_LEAF_OPTIMIZATION
-+    /* st_nlink == 2 means the directory lacks subdirectories.  */
-+    OK_LEAF_OPTIMIZATION
-   };
- 
- #if (defined __linux__ || defined __ANDROID__) \
-@@ -663,9 +657,7 @@ enum leaf_optimization
- # define S_MAGIC_CIFS 0xFF534D42
- # define S_MAGIC_NFS 0x6969
- # define S_MAGIC_PROC 0x9FA0
--# define S_MAGIC_REISERFS 0x52654973
- # define S_MAGIC_TMPFS 0x1021994
--# define S_MAGIC_XFS 0x58465342
- 
- # ifdef HAVE___FSWORD_T
- typedef __fsword_t fsword;
-@@ -782,23 +774,15 @@ dirent_inode_sort_may_be_useful (FTSENT const *p, int dir_fd)
- }
- 
- /* Given an FTS entry P for a directory with descriptor DIR_FD,
--   return true if it is both useful and valid to apply leaf optimization.
--   The optimization is useful only for file systems that lack usable
--   dirent.d_type info.  The optimization is valid if an st_nlink value
--   of at least MIN_DIR_NLINK is an upper bound on the number of
--   subdirectories of D, counting "." and ".."  as subdirectories.
-+   return whether it is valid to apply leaf optimization.
-+   The optimization is valid if a directory's st_nlink value equal
-+   to MIN_DIR_NLINK means the directory has no subdirectories.
-    DIR_FD is negative if unavailable.  */
- static enum leaf_optimization
- leaf_optimization (FTSENT const *p, int dir_fd)
- {
-   switch (filesystem_type (p, dir_fd))
-     {
--      /* List here the file system types that may lack usable dirent.d_type
--         info, yet for which the optimization does apply.  */
--    case S_MAGIC_REISERFS:
--    case S_MAGIC_XFS: /* XFS lacked it until 2013-08-22 commit.  */
--      return NOSTAT_LEAF_OPTIMIZATION;
--
-     case 0:
-       /* Leaf optimization is unsafe if the file system type is unknown.  */
-       FALLTHROUGH;
-@@ -1023,26 +1007,7 @@ check_for_dir:
-                 if (p->fts_info == FTS_NSOK)
-                   {
-                     if (p->fts_statp->st_size == FTS_STAT_REQUIRED)
--                      {
--                        FTSENT *parent = p->fts_parent;
--                        if (parent->fts_n_dirs_remaining == 0
--                            && ISSET(FTS_NOSTAT)
--                            && ISSET(FTS_PHYSICAL)
--                            && (leaf_optimization (parent, sp->fts_cwd_fd)
--                                == NOSTAT_LEAF_OPTIMIZATION))
--                          {
--                            /* nothing more needed */
--                          }
--                        else
--                          {
--                            p->fts_info = fts_stat(sp, p, false);
--                            if (S_ISDIR(p->fts_statp->st_mode)
--                                && p->fts_level != FTS_ROOTLEVEL
--                                && 0 < parent->fts_n_dirs_remaining
--                                && parent->fts_n_dirs_remaining != (nlink_t) -1)
--                                  parent->fts_n_dirs_remaining--;
--                          }
--                      }
-+                      p->fts_info = fts_stat(sp, p, false);
-                     else
-                       fts_assert (p->fts_statp->st_size == FTS_NO_STAT_REQUIRED);
-                   }
-@@ -1826,11 +1791,6 @@ err:            memset(sbp, 0, sizeof(struct stat));
-         }
- 
-         if (S_ISDIR(sbp->st_mode)) {
--                p->fts_n_dirs_remaining
--                  = ((sbp->st_nlink < MIN_DIR_NLINK
--                      || p->fts_level <= FTS_ROOTLEVEL)
--                     ? -1
--                     : sbp->st_nlink - (ISSET (FTS_SEEDOT) ? 0 : MIN_DIR_NLINK));
-                 if (ISDOT(p->fts_name)) {
-                         /* Command-line "." and ".." are real directories. */
-                         return (p->fts_level == FTS_ROOTLEVEL ? FTS_D : FTS_DOT);
-diff --git a/lib/fts_.h b/lib/fts_.h
-index 6c7d0ce..15c248c 100644
---- a/lib/fts_.h
-+++ b/lib/fts_.h
-@@ -219,11 +219,6 @@ typedef struct _ftsent {
- 
-         size_t fts_namelen;             /* strlen(fts_name) */
- 
--        /* If not (nlink_t) -1, an upper bound on the number of
--           remaining subdirectories of interest.  If this becomes
--           zero, some work can be avoided.  */
--        nlink_t fts_n_dirs_remaining;
--
- # define FTS_D           1              /* preorder directory */
- # define FTS_DC          2              /* directory that causes cycles */
- # define FTS_DEFAULT     3              /* none of the above */
--- 
-2.32.0
-
diff --git a/poky/meta/recipes-core/coreutils/coreutils/0001-ls-restore-8.31-behavior-on-removed-directories.patch b/poky/meta/recipes-core/coreutils/coreutils/0001-ls-restore-8.31-behavior-on-removed-directories.patch
deleted file mode 100644
index fa900e3..0000000
--- a/poky/meta/recipes-core/coreutils/coreutils/0001-ls-restore-8.31-behavior-on-removed-directories.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 7c273e5c6041f8c70f73f5b280fbb8f27d9b5a36 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Thu, 5 Mar 2020 17:25:29 -0800
-Subject: [PATCH] ls: restore 8.31 behavior on removed directories
-
-* NEWS: Mention this.
-* src/ls.c: Do not include <sys/sycall.h>
-(print_dir): Don't worry about whether the directory is removed.
-* tests/ls/removed-directory.sh: Adjust to match new (i.e., old)
-behavior.
-
-Upstream-Status: Backport [https://github.com/coreutils/coreutils/commit/10fcb97bd728f09d4a027eddf8ad2900f0819b0a]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/ls.c                      | 22 ----------------------
- tests/ls/removed-directory.sh | 10 ++--------
- 2 files changed, 2 insertions(+), 30 deletions(-)
-
-diff --git a/src/ls.c b/src/ls.c
-index 637fe7a..0111f49 100644
---- a/src/ls.c
-+++ b/src/ls.c
-@@ -49,10 +49,6 @@
- # include <sys/ptem.h>
- #endif
- 
--#ifdef __linux__
--# include <sys/syscall.h>
--#endif
--
- #include <stdio.h>
- #include <assert.h>
- #include <setjmp.h>
-@@ -2895,7 +2891,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
-   struct dirent *next;
-   uintmax_t total_blocks = 0;
-   static bool first = true;
--  bool found_any_entries = false;
- 
-   errno = 0;
-   dirp = opendir (name);
-@@ -2971,7 +2966,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
-       next = readdir (dirp);
-       if (next)
-         {
--          found_any_entries = true;
-           if (! file_ignored (next->d_name))
-             {
-               enum filetype type = unknown;
-@@ -3017,22 +3011,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
-           if (errno != EOVERFLOW)
-             break;
-         }
--#ifdef __linux__
--      else if (! found_any_entries)
--        {
--          /* If readdir finds no directory entries at all, not even "." or
--             "..", then double check that the directory exists.  */
--          if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1
--              && errno != EINVAL)
--            {
--              /* We exclude EINVAL as that pertains to buffer handling,
--                 and we've passed NULL as the buffer for simplicity.
--                 ENOENT is returned if appropriate before buffer handling.  */
--              file_failure (command_line_arg, _("reading directory %s"), name);
--            }
--          break;
--        }
--#endif
-       else
-         break;
- 
-diff --git a/tests/ls/removed-directory.sh b/tests/ls/removed-directory.sh
-index e8c835d..fe8f929 100755
---- a/tests/ls/removed-directory.sh
-+++ b/tests/ls/removed-directory.sh
-@@ -26,20 +26,14 @@ case $host_triplet in
-   *) skip_ 'non linux kernel' ;;
- esac
- 
--LS_FAILURE=2
--
--cat <<\EOF >exp-err || framework_failure_
--ls: reading directory '.': No such file or directory
--EOF
--
- cwd=$(pwd)
- mkdir d || framework_failure_
- cd d || framework_failure_
- rmdir ../d || framework_failure_
- 
--returns_ $LS_FAILURE ls >../out 2>../err || fail=1
-+ls >../out 2>../err || fail=1
- cd "$cwd" || framework_failure_
- compare /dev/null out || fail=1
--compare exp-err err || fail=1
-+compare /dev/null err || fail=1
- 
- Exit $fail
diff --git a/poky/meta/recipes-core/coreutils/coreutils/disable-ls-output-quoting.patch b/poky/meta/recipes-core/coreutils/coreutils/disable-ls-output-quoting.patch
deleted file mode 100644
index e68c213..0000000
--- a/poky/meta/recipes-core/coreutils/coreutils/disable-ls-output-quoting.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Subject: revert inconsistent ls quoting
-
-This is a revert of upstream commit 109b9220cead6e979d22d16327c4d9f8350431cc.
-
-Bug-Debian: https://bugs.debian.org/813164
-
-Upstream-Status: Submitted
-
-Originally-by: Adam Borowski <kilobyte@angband.pl>
-[PG: patch from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=813164#78 ]
-Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-
----
-
---- coreutils-8.25.orig/NEWS
-+++ coreutils-8.25/NEWS
-@@ -71,9 +71,6 @@ GNU coreutils NEWS
-   df now prefers sources towards the root of a device when
-   eliding duplicate bind mounted entries.
- 
--  ls now quotes file names unambiguously and appropriate for use in a shell,
--  when outputting to a terminal.
--
-   join, sort, uniq with --zero-terminated, now treat '\n' as a field delimiter.
- 
- ** Improvements
---- coreutils-8.25.orig/doc/coreutils.texi
-+++ coreutils-8.25/doc/coreutils.texi
-@@ -7750,8 +7750,8 @@ this"} in the default C locale.  This lo
- 
- You can specify the default value of the @option{--quoting-style} option
- with the environment variable @env{QUOTING_STYLE}@.  If that environment
--variable is not set, the default value is @samp{shell-escape} when the
--output is a terminal, and @samp{literal} otherwise.
-+variable is not set, the default value is @samp{literal}, but this
-+default may change to @samp{shell} in a future version of this package.
- 
- @item --show-control-chars
- @opindex --show-control-chars
---- coreutils-8.25.orig/src/ls.c
-+++ coreutils-8.25/src/ls.c
-@@ -1581,7 +1581,6 @@ decode_switches (int argc, char **argv)
-       if (isatty (STDOUT_FILENO))
-         {
-           format = many_per_line;
--          set_quoting_style (NULL, shell_escape_quoting_style);
-           /* See description of qmark_funny_chars, above.  */
-           qmark_funny_chars = true;
-         }
diff --git a/poky/meta/recipes-core/coreutils/coreutils/e8b56ebd536e82b15542a00c888109471936bfda.patch b/poky/meta/recipes-core/coreutils/coreutils/e8b56ebd536e82b15542a00c888109471936bfda.patch
new file mode 100644
index 0000000..d69ee95
--- /dev/null
+++ b/poky/meta/recipes-core/coreutils/coreutils/e8b56ebd536e82b15542a00c888109471936bfda.patch
@@ -0,0 +1,93 @@
+From e8b56ebd536e82b15542a00c888109471936bfda Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
+Date: Fri, 24 Sep 2021 20:57:41 +0100
+Subject: [PATCH] chmod: fix exit status when ignoring symlinks
+
+* src/chmod.c: Reorder enum so CH_NOT_APPLIED
+can be treated as a non error.
+* tests/chmod/ignore-symlink.sh: A new test.
+* tests/local.mk: Reference the new test.
+* NEWS: Mention the bug fix.
+Fixes https://bugs.gnu.org/50784
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ src/chmod.c                   |  4 ++--
+ tests/chmod/ignore-symlink.sh | 31 +++++++++++++++++++++++++++++++
+ tests/local.mk                |  1 +
+ 4 files changed, 40 insertions(+), 2 deletions(-)
+ create mode 100755 tests/chmod/ignore-symlink.sh
+
+diff --git a/src/chmod.c b/src/chmod.c
+index 37b04f500..57ac47f33 100644
+--- a/src/chmod.c
++++ b/src/chmod.c
+@@ -44,8 +44,8 @@ struct change_status
+   enum
+     {
+       CH_NO_STAT,
+-      CH_NOT_APPLIED,
+       CH_FAILED,
++      CH_NOT_APPLIED,
+       CH_NO_CHANGE_REQUESTED,
+       CH_SUCCEEDED
+     }
+@@ -322,7 +322,7 @@ process_file (FTS *fts, FTSENT *ent)
+   if ( ! recurse)
+     fts_set (fts, ent, FTS_SKIP);
+ 
+-  return CH_NO_CHANGE_REQUESTED <= ch.status;
++  return CH_NOT_APPLIED <= ch.status;
+ }
+ 
+ /* Recursively change the modes of the specified FILES (the last entry
+diff --git a/tests/chmod/ignore-symlink.sh b/tests/chmod/ignore-symlink.sh
+new file mode 100755
+index 000000000..5ce3de816
+--- /dev/null
++++ b/tests/chmod/ignore-symlink.sh
+@@ -0,0 +1,31 @@
++#!/bin/sh
++# Test for proper exit code of chmod on a processed symlink.
++
++# Copyright (C) 2021 Free Software Foundation, Inc.
++
++# 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/>.
++
++. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
++print_ver_ chmod
++
++mkdir dir || framework_failure_
++touch dir/f || framework_failure_
++ln -s f dir/l || framework_failure_
++
++# This operation ignores symlinks but should succeed.
++chmod u+w -R dir 2> out || fail=1
++
++compare /dev/null out || fail=1
++
++Exit $fail
+diff --git a/tests/local.mk b/tests/local.mk
+index 228d0e368..b5b893fb7 100644
+--- a/tests/local.mk
++++ b/tests/local.mk
+@@ -456,6 +456,7 @@ all_tests =					\
+   tests/chmod/c-option.sh			\
+   tests/chmod/equal-x.sh			\
+   tests/chmod/equals.sh				\
++  tests/chmod/ignore-symlink.sh			\
+   tests/chmod/inaccessible.sh			\
+   tests/chmod/octal.sh				\
+   tests/chmod/setgid.sh				\
diff --git a/poky/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch b/poky/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch
index 173a579..4f126ad 100644
--- a/poky/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch
+++ b/poky/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch
@@ -1,4 +1,4 @@
-From 7e20a7242ba2657f73311bbf5278093da67f0721 Mon Sep 17 00:00:00 2001
+From b04363018b4b9b45fdf23384f30d02caa5564602 Mon Sep 17 00:00:00 2001
 From: Robert Yang <liezhi.yang@windriver.com>
 Date: Tue, 16 Sep 2014 01:59:08 -0700
 Subject: [PATCH] gnulib-comp.m4: selinux/flask.h should respect to
@@ -19,16 +19,17 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
-index dead90e..0abf0bd 100644
+index 3857233..c01fb30 100644
 --- a/m4/gnulib-comp.m4
 +++ b/m4/gnulib-comp.m4
-@@ -1860,10 +1860,10 @@ AC_DEFUN([gl_INIT],
+@@ -1953,11 +1953,11 @@ AC_DEFUN([gl_INIT],
      AC_LIBOBJ([select])
    fi
    gl_SYS_SELECT_MODULE_INDICATOR([select])
 -  AC_CHECK_HEADERS([selinux/flask.h])
    gl_HEADERS_SELINUX_SELINUX_H
    gl_HEADERS_SELINUX_CONTEXT_H
+   gl_HEADERS_SELINUX_LABEL_H
    if test "$with_selinux" != no && test "$ac_cv_header_selinux_selinux_h" = yes; then
 +    AC_CHECK_HEADERS([selinux/flask.h])
      AC_LIBOBJ([getfilecon])
diff --git a/poky/meta/recipes-core/coreutils/coreutils_8.32.bb b/poky/meta/recipes-core/coreutils/coreutils_8.32.bb
deleted file mode 100644
index 01acf9a..0000000
--- a/poky/meta/recipes-core/coreutils/coreutils_8.32.bb
+++ /dev/null
@@ -1,213 +0,0 @@
-SUMMARY = "The basic file, shell and text manipulation utilities"
-DESCRIPTION = "The GNU Core Utilities provide the basic file, shell and text \
-manipulation utilities. These are the core utilities which are expected to exist on \
-every system."
-HOMEPAGE = "http://www.gnu.org/software/coreutils/"
-BUGTRACKER = "http://debbugs.gnu.org/coreutils"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
-                    file://src/ls.c;beginline=1;endline=15;md5=b7d80abf5b279320fb0e4b1007ed108b \
-                    "
-DEPENDS = "gmp libcap"
-DEPENDS:class-native = ""
-
-inherit autotools gettext texinfo
-
-SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \
-           file://remove-usr-local-lib-from-m4.patch \
-           file://fix-selinux-flask.patch \
-           file://0001-uname-report-processor-and-hardware-correctly.patch \
-           file://disable-ls-output-quoting.patch \
-           file://0001-local.mk-fix-cross-compiling-problem.patch \
-           file://run-ptest \
-           file://0001-ls-restore-8.31-behavior-on-removed-directories.patch \
-           file://0001-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch \
-           "
-
-SRC_URI[md5sum] = "022042695b7d5bcf1a93559a9735e668"
-SRC_URI[sha256sum] = "4458d8de7849df44ccab15e16b1548b285224dbba5f08fac070c1c0e0bcc4cfa"
-
-# http://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=v8.27-101-gf5d7c0842
-# runcon is not really a sandbox command, use `runcon ... setsid ...` to avoid this particular issue.
-CVE_CHECK_WHITELIST += "CVE-2016-2781"
-
-EXTRA_OECONF:class-native = "--without-gmp"
-EXTRA_OECONF:class-target = "--enable-install-program=arch,hostname --libexecdir=${libdir}"
-EXTRA_OECONF:class-nativesdk = "--enable-install-program=arch,hostname"
-
-# acl and xattr are not default features
-#
-PACKAGECONFIG:class-target ??= "\
-    ${@bb.utils.filter('DISTRO_FEATURES', 'acl xattr', d)} \
-"
-
-# The lib/oe/path.py requires xattr
-PACKAGECONFIG:class-native ??= "xattr"
-
-# oe-core builds need xattr support
-PACKAGECONFIG:class-nativesdk ??= "xattr"
-
-# with, without, depends, rdepends
-#
-PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
-PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
-PACKAGECONFIG[single-binary] = "--enable-single-binary,--disable-single-binary,,"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
-
-# [ df mktemp nice printenv base64 gets a special treatment and is not included in this
-bindir_progs = "arch basename chcon 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 runcon 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"
-
-# hostname gets a special treatment and is not included in this
-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"
-
-# Split stdbuf into its own package, so one can include
-# coreutils-stdbuf without getting the rest of coreutils, but make
-# coreutils itself pull in stdbuf, so IMAGE_INSTALL += "coreutils"
-# always provides all coreutils
-PACKAGE_BEFORE_PN:class-target += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', '', 'coreutils-stdbuf', d)}"
-FILES:coreutils-stdbuf = "${bindir}/stdbuf ${libdir}/coreutils/libstdbuf.so"
-RDEPENDS:coreutils:class-target += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', '', 'coreutils-stdbuf', d)}"
-
-# However, when the single-binary PACKAGECONFIG is used, stdbuf
-# functionality is built into the single coreutils binary, so there's
-# no point splitting /usr/bin/stdbuf to its own package. Instead, add
-# an RPROVIDE so that rdepending on coreutils-stdbuf will work
-# regardless of whether single-binary is in effect.
-RPROVIDES:coreutils += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', 'coreutils-stdbuf', '', d)}"
-
-# Let aclocal use the relative path for the m4 file rather than the
-# absolute since coreutils has a lot of m4 files, otherwise there might
-# be an "Argument list too long" error when it is built in a long/deep
-# directory.
-acpaths = "-I ./m4"
-
-# Deal with a separate builddir failure if src doesn't exist when creating version.c/version.h
-do_compile:prepend () {
-	mkdir -p ${B}/src
-}
-
-do_install:class-native() {
-	autotools_do_install
-	# remove groups to fix conflict with shadow-native
-	rm -f ${D}${STAGING_BINDIR_NATIVE}/groups
-	# The return is a must since native doesn't need the
-	# do_install:append() in the below.
-	return
-}
-
-do_install:append() {
-	for i in df mktemp nice printenv base64; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${BPN}; done
-
-	install -d ${D}${base_bindir}
-	[ "${base_bindir}" != "${bindir}" ] && for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i.${BPN}; done
-
-	install -d ${D}${sbindir}
-	[ "${sbindir}" != "${bindir}" ] && for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i.${BPN}; done
-
-	# [ requires special handling because [.coreutils will cause the sed stuff
-	# in update-alternatives to fail, therefore use lbracket - the name used
-	# for the actual source file.
-	mv ${D}${bindir}/[ ${D}${bindir}/lbracket.${BPN}
-}
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-# Make hostname's priority higher than busybox but lower than net-tools
-ALTERNATIVE_PRIORITY[hostname] = "90"
-ALTERNATIVE:${PN} = "lbracket ${bindir_progs} ${base_bindir_progs} ${sbindir_progs} base32 base64 nice printenv mktemp df"
-ALTERNATIVE:${PN}-doc = "base64.1 nice.1 mktemp.1 df.1 groups.1 kill.1 uptime.1 stat.1 hostname.1"
-
-ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
-
-ALTERNATIVE_LINK_NAME[base64] = "${base_bindir}/base64"
-ALTERNATIVE_TARGET[base64] = "${bindir}/base64.${BPN}"
-ALTERNATIVE_LINK_NAME[base64.1] = "${mandir}/man1/base64.1"
-
-ALTERNATIVE_LINK_NAME[mktemp] = "${base_bindir}/mktemp"
-ALTERNATIVE_TARGET[mktemp] = "${bindir}/mktemp.${BPN}"
-ALTERNATIVE_LINK_NAME[mktemp.1] = "${mandir}/man1/mktemp.1"
-
-ALTERNATIVE_LINK_NAME[df] = "${base_bindir}/df"
-ALTERNATIVE_TARGET[df] = "${bindir}/df.${BPN}"
-ALTERNATIVE_LINK_NAME[df.1] = "${mandir}/man1/df.1"
-
-ALTERNATIVE_LINK_NAME[nice] = "${base_bindir}/nice"
-ALTERNATIVE_TARGET[nice] = "${bindir}/nice.${BPN}"
-ALTERNATIVE_LINK_NAME[nice.1] = "${mandir}/man1/nice.1"
-
-ALTERNATIVE_LINK_NAME[printenv] = "${base_bindir}/printenv"
-ALTERNATIVE_TARGET[printenv] = "${bindir}/printenv.${BPN}"
-
-ALTERNATIVE_LINK_NAME[lbracket] = "${bindir}/["
-ALTERNATIVE_TARGET[lbracket] = "${bindir}/lbracket.${BPN}"
-
-ALTERNATIVE_LINK_NAME[groups.1] = "${mandir}/man1/groups.1"
-ALTERNATIVE_LINK_NAME[uptime.1] = "${mandir}/man1/uptime.1"
-ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
-ALTERNATIVE_LINK_NAME[stat.1] = "${mandir}/man1/stat.1"
-
-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))
-}
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit ptest
-
-RDEPENDS:${PN}-ptest += "bash findutils gawk liberror-perl 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
-RRECOMMENDS:coreutils-dev[nodeprrecs] = "1"
-RRECOMMENDS:coreutils-dev = "acl-dev attr-dev gmp-dev libcap-dev bash-dev findutils-dev gawk-dev shadow-dev"
-
-do_install_ptest () {
-    install -d ${D}${PTEST_PATH}/tests
-    cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests
-    sed -i 's/ginstall/install/g'  `grep -R ginstall ${D}${PTEST_PATH}/tests | awk -F: '{print $1}' | uniq`
-    install -d ${D}${PTEST_PATH}/build-aux
-    install ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
-    cp ${B}/Makefile ${D}${PTEST_PATH}/
-    cp ${S}/init.cfg ${D}${PTEST_PATH}/
-    cp -r ${B}/src ${D}${PTEST_PATH}/
-    cp -r ${S}/src/*.c ${D}${PTEST_PATH}/src
-    sed -i '/^VPATH/s/= .*$/= ./g' ${D}${PTEST_PATH}/Makefile
-    sed -i '/^PROGRAMS/s/^/#/g' ${D}${PTEST_PATH}/Makefile
-    sed -i '/^Makefile: /s/^.*$/Makefile:/g' ${D}${PTEST_PATH}/Makefile
-    sed -i '/^abs_srcdir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
-    sed -i '/^abs_top_builddir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
-    sed -i '/^abs_top_srcdir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
-    sed -i '/^built_programs/s/ginstall/install/g' ${D}${PTEST_PATH}/Makefile
-    chmod -R 777 ${D}${PTEST_PATH}
-
-    # Disable subcase stty-pairs.sh, it will cause test framework hang
-    sed -i '/stty-pairs.sh/d' ${D}${PTEST_PATH}/Makefile
-
-    # Disable subcase tail-2/assert.sh as it has issues on 32-bit systems
-    sed -i '/assert.sh/d' ${D}${PTEST_PATH}/Makefile
-
-    # Tweak test d_type-check to use python3 instead of python
-    sed -i "1s@.*@#!/usr/bin/python3@" ${D}${PTEST_PATH}/tests/d_type-check
-    install ${B}/src/getlimits ${D}/${bindir}
-    
-    # handle multilib
-    sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
-}
-
-FILES:${PN}-ptest += "${bindir}/getlimits"
-
-# These are specific to Opensuse
-CVE_WHITELIST += "CVE-2013-0221 CVE-2013-0222 CVE-2013-0223"
diff --git a/poky/meta/recipes-core/coreutils/coreutils_9.0.bb b/poky/meta/recipes-core/coreutils/coreutils_9.0.bb
new file mode 100644
index 0000000..0800bc3
--- /dev/null
+++ b/poky/meta/recipes-core/coreutils/coreutils_9.0.bb
@@ -0,0 +1,209 @@
+SUMMARY = "The basic file, shell and text manipulation utilities"
+DESCRIPTION = "The GNU Core Utilities provide the basic file, shell and text \
+manipulation utilities. These are the core utilities which are expected to exist on \
+every system."
+HOMEPAGE = "http://www.gnu.org/software/coreutils/"
+BUGTRACKER = "http://debbugs.gnu.org/coreutils"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
+                    file://src/ls.c;beginline=1;endline=15;md5=3b8fbaee597c8a9bb88d30840d53048c \
+                    "
+DEPENDS = "gmp libcap"
+DEPENDS:class-native = ""
+
+inherit autotools gettext texinfo
+
+SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \
+           file://remove-usr-local-lib-from-m4.patch \
+           file://fix-selinux-flask.patch \
+           file://0001-uname-report-processor-and-hardware-correctly.patch \
+           file://0001-local.mk-fix-cross-compiling-problem.patch \
+           file://e8b56ebd536e82b15542a00c888109471936bfda.patch \
+           file://run-ptest \
+           "
+
+SRC_URI[sha256sum] = "ce30acdf4a41bc5bb30dd955e9eaa75fa216b4e3deb08889ed32433c7b3b97ce"
+
+# http://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=v8.27-101-gf5d7c0842
+# runcon is not really a sandbox command, use `runcon ... setsid ...` to avoid this particular issue.
+CVE_CHECK_WHITELIST += "CVE-2016-2781"
+
+EXTRA_OECONF:class-target = "--enable-install-program=arch,hostname --libexecdir=${libdir}"
+EXTRA_OECONF:class-nativesdk = "--enable-install-program=arch,hostname"
+
+# acl and xattr are not default features
+#
+PACKAGECONFIG:class-target ??= "\
+    ${@bb.utils.filter('DISTRO_FEATURES', 'acl xattr', d)} \
+"
+
+# The lib/oe/path.py requires xattr
+PACKAGECONFIG:class-native ??= "xattr"
+
+# oe-core builds need xattr support
+PACKAGECONFIG:class-nativesdk ??= "xattr"
+
+# with, without, depends, rdepends
+#
+PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
+PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
+PACKAGECONFIG[single-binary] = "--enable-single-binary,--disable-single-binary,,"
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
+
+# [ df mktemp nice printenv base64 gets a special treatment and is not included in this
+bindir_progs = "arch basename chcon 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 runcon 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"
+
+# hostname gets a special treatment and is not included in this
+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"
+
+# Split stdbuf into its own package, so one can include
+# coreutils-stdbuf without getting the rest of coreutils, but make
+# coreutils itself pull in stdbuf, so IMAGE_INSTALL += "coreutils"
+# always provides all coreutils
+PACKAGE_BEFORE_PN:class-target += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', '', 'coreutils-stdbuf', d)}"
+FILES:coreutils-stdbuf = "${bindir}/stdbuf ${libdir}/coreutils/libstdbuf.so"
+RDEPENDS:coreutils:class-target += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', '', 'coreutils-stdbuf', d)}"
+
+# However, when the single-binary PACKAGECONFIG is used, stdbuf
+# functionality is built into the single coreutils binary, so there's
+# no point splitting /usr/bin/stdbuf to its own package. Instead, add
+# an RPROVIDE so that rdepending on coreutils-stdbuf will work
+# regardless of whether single-binary is in effect.
+RPROVIDES:coreutils += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', 'coreutils-stdbuf', '', d)}"
+
+# Let aclocal use the relative path for the m4 file rather than the
+# absolute since coreutils has a lot of m4 files, otherwise there might
+# be an "Argument list too long" error when it is built in a long/deep
+# directory.
+acpaths = "-I ./m4"
+
+# Deal with a separate builddir failure if src doesn't exist when creating version.c/version.h
+do_compile:prepend () {
+	mkdir -p ${B}/src
+}
+
+do_install:class-native() {
+	autotools_do_install
+	# remove groups to fix conflict with shadow-native
+	rm -f ${D}${STAGING_BINDIR_NATIVE}/groups
+	# The return is a must since native doesn't need the
+	# do_install:append() in the below.
+	return
+}
+
+do_install:append() {
+	for i in df mktemp nice printenv base64; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${BPN}; done
+
+	install -d ${D}${base_bindir}
+	[ "${base_bindir}" != "${bindir}" ] && for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i.${BPN}; done
+
+	install -d ${D}${sbindir}
+	[ "${sbindir}" != "${bindir}" ] && for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i.${BPN}; done
+
+	# [ requires special handling because [.coreutils will cause the sed stuff
+	# in update-alternatives to fail, therefore use lbracket - the name used
+	# for the actual source file.
+	mv ${D}${bindir}/[ ${D}${bindir}/lbracket.${BPN}
+}
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+# Make hostname's priority higher than busybox but lower than net-tools
+ALTERNATIVE_PRIORITY[hostname] = "90"
+ALTERNATIVE:${PN} = "lbracket ${bindir_progs} ${base_bindir_progs} ${sbindir_progs} base32 base64 nice printenv mktemp df"
+ALTERNATIVE:${PN}-doc = "base64.1 nice.1 mktemp.1 df.1 groups.1 kill.1 uptime.1 stat.1 hostname.1"
+
+ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
+
+ALTERNATIVE_LINK_NAME[base64] = "${base_bindir}/base64"
+ALTERNATIVE_TARGET[base64] = "${bindir}/base64.${BPN}"
+ALTERNATIVE_LINK_NAME[base64.1] = "${mandir}/man1/base64.1"
+
+ALTERNATIVE_LINK_NAME[mktemp] = "${base_bindir}/mktemp"
+ALTERNATIVE_TARGET[mktemp] = "${bindir}/mktemp.${BPN}"
+ALTERNATIVE_LINK_NAME[mktemp.1] = "${mandir}/man1/mktemp.1"
+
+ALTERNATIVE_LINK_NAME[df] = "${base_bindir}/df"
+ALTERNATIVE_TARGET[df] = "${bindir}/df.${BPN}"
+ALTERNATIVE_LINK_NAME[df.1] = "${mandir}/man1/df.1"
+
+ALTERNATIVE_LINK_NAME[nice] = "${base_bindir}/nice"
+ALTERNATIVE_TARGET[nice] = "${bindir}/nice.${BPN}"
+ALTERNATIVE_LINK_NAME[nice.1] = "${mandir}/man1/nice.1"
+
+ALTERNATIVE_LINK_NAME[printenv] = "${base_bindir}/printenv"
+ALTERNATIVE_TARGET[printenv] = "${bindir}/printenv.${BPN}"
+
+ALTERNATIVE_LINK_NAME[lbracket] = "${bindir}/["
+ALTERNATIVE_TARGET[lbracket] = "${bindir}/lbracket.${BPN}"
+
+ALTERNATIVE_LINK_NAME[groups.1] = "${mandir}/man1/groups.1"
+ALTERNATIVE_LINK_NAME[uptime.1] = "${mandir}/man1/uptime.1"
+ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
+ALTERNATIVE_LINK_NAME[stat.1] = "${mandir}/man1/stat.1"
+
+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))
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit ptest
+
+RDEPENDS:${PN}-ptest += "bash findutils gawk liberror-perl 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
+RRECOMMENDS:coreutils-dev[nodeprrecs] = "1"
+RRECOMMENDS:coreutils-dev = "acl-dev attr-dev gmp-dev libcap-dev bash-dev findutils-dev gawk-dev shadow-dev"
+
+do_install_ptest () {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests
+    sed -i 's/ginstall/install/g'  `grep -R ginstall ${D}${PTEST_PATH}/tests | awk -F: '{print $1}' | uniq`
+    install -d ${D}${PTEST_PATH}/build-aux
+    install ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
+    cp ${B}/Makefile ${D}${PTEST_PATH}/
+    cp ${S}/init.cfg ${D}${PTEST_PATH}/
+    cp -r ${B}/src ${D}${PTEST_PATH}/
+    cp -r ${S}/src/*.c ${D}${PTEST_PATH}/src
+    sed -i '/^VPATH/s/= .*$/= ./g' ${D}${PTEST_PATH}/Makefile
+    sed -i '/^PROGRAMS/s/^/#/g' ${D}${PTEST_PATH}/Makefile
+    sed -i '/^Makefile: /s/^.*$/Makefile:/g' ${D}${PTEST_PATH}/Makefile
+    sed -i '/^abs_srcdir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
+    sed -i '/^abs_top_builddir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
+    sed -i '/^abs_top_srcdir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
+    sed -i '/^built_programs/s/ginstall/install/g' ${D}${PTEST_PATH}/Makefile
+    chmod -R 777 ${D}${PTEST_PATH}
+
+    # Disable subcase stty-pairs.sh, it will cause test framework hang
+    sed -i '/stty-pairs.sh/d' ${D}${PTEST_PATH}/Makefile
+
+    # Disable subcase tail-2/assert.sh as it has issues on 32-bit systems
+    sed -i '/assert.sh/d' ${D}${PTEST_PATH}/Makefile
+
+    # Tweak test d_type-check to use python3 instead of python
+    sed -i "1s@.*@#!/usr/bin/python3@" ${D}${PTEST_PATH}/tests/d_type-check
+    install ${B}/src/getlimits ${D}/${bindir}
+    
+    # handle multilib
+    sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
+}
+
+FILES:${PN}-ptest += "${bindir}/getlimits"
+
+# These are specific to Opensuse
+CVE_WHITELIST += "CVE-2013-0221 CVE-2013-0222 CVE-2013-0223"
diff --git a/poky/meta/recipes-core/ell/ell_0.43.bb b/poky/meta/recipes-core/ell/ell_0.43.bb
deleted file mode 100644
index 3d3ef82..0000000
--- a/poky/meta/recipes-core/ell/ell_0.43.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY  = "Embedded Linux Library"
-HOMEPAGE = "https://01.org/ell"
-DESCRIPTION = "The Embedded Linux Library (ELL) provides core, \
-low-level functionality for system daemons. It typically has no \
-dependencies other than the Linux kernel, C standard library, and \
-libdl (for dynamic linking). While ELL is designed to be efficient \
-and compact enough for use on embedded Linux platforms, it is not \
-limited to resource-constrained systems."
-SECTION = "libs"
-LICENSE  = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09"
-
-DEPENDS = "dbus"
-
-inherit autotools pkgconfig
-
-SRC_URI = "https://mirrors.edge.kernel.org/pub/linux/libs/${BPN}/${BPN}-${PV}.tar.xz \
-           file://0001-pem.c-do-not-use-rawmemchr.patch \
-           "
-SRC_URI[sha256sum] = "b6c75895ad64bf78f5b5c464de871048d02f9403be518084e0d64b58f508c9fc"
-
-do_configure:prepend () {
-    mkdir -p ${S}/build-aux
-}
diff --git a/poky/meta/recipes-core/ell/ell_0.44.bb b/poky/meta/recipes-core/ell/ell_0.44.bb
new file mode 100644
index 0000000..d1f1691
--- /dev/null
+++ b/poky/meta/recipes-core/ell/ell_0.44.bb
@@ -0,0 +1,24 @@
+SUMMARY  = "Embedded Linux Library"
+HOMEPAGE = "https://01.org/ell"
+DESCRIPTION = "The Embedded Linux Library (ELL) provides core, \
+low-level functionality for system daemons. It typically has no \
+dependencies other than the Linux kernel, C standard library, and \
+libdl (for dynamic linking). While ELL is designed to be efficient \
+and compact enough for use on embedded Linux platforms, it is not \
+limited to resource-constrained systems."
+SECTION = "libs"
+LICENSE  = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09"
+
+DEPENDS = "dbus"
+
+inherit autotools pkgconfig
+
+SRC_URI = "https://mirrors.edge.kernel.org/pub/linux/libs/${BPN}/${BPN}-${PV}.tar.xz \
+           file://0001-pem.c-do-not-use-rawmemchr.patch \
+           "
+SRC_URI[sha256sum] = "41a6f8fa4d285b52cb7a5a87bda3e7370ecaac02d94aaa7ec1a23f0480b8bc3f"
+
+do_configure:prepend () {
+    mkdir -p ${S}/build-aux
+}
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch
index 41ecfa1..9bbb33ff 100644
--- a/poky/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch
@@ -1,4 +1,4 @@
-From 7cde170afe6854d674b50e32b4c1d3b511be9abe Mon Sep 17 00:00:00 2001
+From 73b1c416674d285b021e218da1a3ddb884e606da Mon Sep 17 00:00:00 2001
 From: Jussi Kukkonen <jussi.kukkonen@intel.com>
 Date: Mon, 9 Nov 2015 11:07:27 +0200
 Subject: [PATCH] Enable more tests while cross-compiling
@@ -15,10 +15,10 @@
  1 file changed, 12 insertions(+), 12 deletions(-)
 
 diff --git a/gio/tests/meson.build b/gio/tests/meson.build
-index 788cf97..dab65d2 100644
+index 5dbfb8e..3fd7998 100644
 --- a/gio/tests/meson.build
 +++ b/gio/tests/meson.build
-@@ -203,7 +203,7 @@ if host_machine.system() != 'windows'
+@@ -221,7 +221,7 @@ if host_machine.system() != 'windows'
  
    #  Test programs that need to bring up a session bus (requires dbus-daemon)
    have_dbus_daemon = find_program('dbus-daemon', required : false).found()
@@ -27,7 +27,7 @@
      annotate_args = [
        '--annotate', 'org.project.Bar', 'Key1', 'Value1',
        '--annotate', 'org.project.Bar', 'org.gtk.GDBus.Internal', 'Value2',
-@@ -548,12 +548,12 @@ if installed_tests_enabled
+@@ -570,12 +570,12 @@ if installed_tests_enabled
    endforeach
  endif
  
@@ -42,7 +42,7 @@
                 '--target=@OUTPUT@',
                 '--sourcedir=' + meson.current_source_dir(),
                 '--generate-source',
-@@ -577,7 +577,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -599,7 +599,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
    test_gresource = custom_target('test.gresource',
      input : 'test.gresource.xml',
      output : 'test.gresource',
@@ -51,7 +51,7 @@
                 '--target=@OUTPUT@',
                 '--sourcedir=' + meson.current_source_dir(),
                 '--sourcedir=' + meson.current_build_dir(),
-@@ -588,7 +588,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -610,7 +610,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
    test_resources2_c = custom_target('test_resources2.c',
      input : 'test3.gresource.xml',
      output : 'test_resources2.c',
@@ -60,7 +60,7 @@
                 '--target=@OUTPUT@',
                 '--sourcedir=' + meson.current_source_dir(),
                 '--generate',
-@@ -599,7 +599,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -621,7 +621,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
    test_resources2_h = custom_target('test_resources2.h',
      input : 'test3.gresource.xml',
      output : 'test_resources2.h',
@@ -69,7 +69,7 @@
                 '--target=@OUTPUT@',
                 '--sourcedir=' + meson.current_source_dir(),
                 '--generate',
-@@ -611,7 +611,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -633,7 +633,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
      input : 'test2.gresource.xml',
      depends : big_test_resource,
      output : 'test_resources.c',
@@ -78,7 +78,7 @@
                 '--target=@OUTPUT@',
                 '--sourcedir=' + meson.current_source_dir(),
                 '--sourcedir=' + meson.current_build_dir(),
-@@ -622,7 +622,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -644,7 +644,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
    digit_test_resources_c = custom_target('digit_test_resources.c',
      input : '111_digit_test.gresource.xml',
      output : 'digit_test_resources.c',
@@ -87,7 +87,7 @@
                 '--target=@OUTPUT@',
                 '--sourcedir=' + meson.current_source_dir(),
                 '--sourcedir=' + meson.current_build_dir(),
-@@ -633,7 +633,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -655,7 +655,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
    digit_test_resources_h = custom_target('digit_test_resources.h',
      input : '111_digit_test.gresource.xml',
      output : 'digit_test_resources.h',
@@ -96,11 +96,11 @@
                 '--target=@OUTPUT@',
                 '--sourcedir=' + meson.current_source_dir(),
                 '--generate',
-@@ -668,11 +668,11 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -688,11 +688,11 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
  
    ld = find_program('ld', required : false)
  
--  if build_machine.system() == 'linux' and cc.get_id() == 'gcc' and objcopy.found() and objcopy_supports_add_symbol and ld.found()
+-  if build_machine.system() == 'linux' and objcopy.found() and objcopy_supports_add_symbol and ld.found()
 +  if not meson.is_cross_build()
      test_gresource_binary = custom_target('test5.gresource',
        input : 'test5.gresource.xml',
@@ -110,7 +110,7 @@
                   '--target=@OUTPUT@',
                   '--sourcedir=' + meson.current_source_dir(),
                   '--sourcedir=' + meson.current_build_dir(),
-@@ -684,7 +684,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -704,7 +704,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
      test_resources_binary_c = custom_target('test_resources_binary.c',
        input : 'test5.gresource.xml',
        output : 'test_resources_binary.c',
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch
index 846c8d6..9bfb6e8 100644
--- a/poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch
@@ -1,4 +1,4 @@
-From dac2bdeea38388e069412aa27eff8f1eff0440e5 Mon Sep 17 00:00:00 2001
+From ab071f315deed3740f867161ee58436b985d6fc1 Mon Sep 17 00:00:00 2001
 From: Ross Burton <ross.burton@intel.com>
 Date: Fri, 11 Mar 2016 15:35:55 +0000
 Subject: [PATCH] glib-2.0: relocate the GIO module directory for native builds
@@ -19,10 +19,10 @@
  1 file changed, 11 insertions(+), 1 deletion(-)
 
 diff --git a/gio/giomodule.c b/gio/giomodule.c
-index a2909a8..1f4ab82 100644
+index d34037a..7442df6 100644
 --- a/gio/giomodule.c
 +++ b/gio/giomodule.c
-@@ -51,6 +51,8 @@
+@@ -54,6 +54,8 @@
  #ifdef G_OS_WIN32
  #include "gregistrysettingsbackend.h"
  #include "giowin32-priv.h"
@@ -31,7 +31,7 @@
  #endif
  #include <glib/gstdio.h>
  
-@@ -1213,7 +1215,15 @@ get_gio_module_dir (void)
+@@ -1224,7 +1226,15 @@ get_gio_module_dir (void)
                                       NULL);
        g_free (install_dir);
  #else
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/time-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/time-test.patch
deleted file mode 100644
index 4d7ef97..0000000
--- a/poky/meta/recipes-core/glib-2.0/glib-2.0/time-test.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2177]
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From 289f8be1b397a453cfcf35641455f3ae5fb4faeb Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@arm.com>
-Date: Tue, 6 Jul 2021 19:26:03 +0100
-Subject: [PATCH] gio/tests/g-file-info: don't assume million-in-one events
- don't happen
-
-The modification time test creates a file, gets the modification time in
-seconds, then gets the modification time in microseconds and assumes
-that the difference between the two has to be above 0.
-
-As rare as this may be, it can happen:
-
-$ stat g-file-info-test-50A450 -c %y
-2021-07-06 18:24:56.000000767 +0100
-
-Change the test to simply assert that the difference not negative to
-handle this case.
----
- gio/tests/g-file-info.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gio/tests/g-file-info.c b/gio/tests/g-file-info.c
-index c11c50462..fd0c64b55 100644
---- a/gio/tests/g-file-info.c
-+++ b/gio/tests/g-file-info.c
-@@ -178,7 +178,7 @@ test_g_file_info_modification_time (void)
-   g_assert_nonnull (dt_usecs);
- 
-   ts = g_date_time_difference (dt_usecs, dt);
--  g_assert_cmpint (ts, >, 0);
-+  g_assert_cmpint (ts, >=, 0);
-   g_assert_cmpint (ts, <, G_USEC_PER_SEC);
- 
-   /* Try round-tripping the modification time. */
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.68.4.bb b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.68.4.bb
deleted file mode 100644
index cd789de..0000000
--- a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.68.4.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-require glib.inc
-
-PE = "1"
-
-SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
-           file://run-ptest \
-           file://0001-Fix-DATADIRNAME-on-uclibc-Linux.patch \
-           file://Enable-more-tests-while-cross-compiling.patch \
-           file://0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch \
-           file://0001-Install-gio-querymodules-as-libexec_PROGRAM.patch \
-           file://0001-Do-not-ignore-return-value-of-write.patch \
-           file://0010-Do-not-hardcode-python-path-into-various-tools.patch \
-           file://0001-Set-host_machine-correctly-when-building-with-mingw3.patch \
-           file://0001-Do-not-write-bindir-into-pkg-config-files.patch \
-           file://0001-meson-Run-atomics-test-on-clang-as-well.patch \
-           file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
-           file://0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch \
-           file://time-test.patch \
-           "
-SRC_URI:append:class-native = " file://relocate-modules.patch"
-
-SRC_URI[sha256sum] = "62fd061d08a75492617e625a73e2c05e259f831acbb8e1f8b9c81f23f7993a3b"
-
-# Find any meson cross files in FILESPATH that are relevant for the current
-# build (using siteinfo) and add them to EXTRA_OEMESON.
-inherit siteinfo
-def find_meson_cross_files(d):
-    if bb.data.inherits_class('native', d):
-        return ""
-
-    thisdir = os.path.normpath(d.getVar("THISDIR"))
-    import collections
-    sitedata = siteinfo_data(d)
-    # filename -> found
-    files = collections.OrderedDict()
-    for path in d.getVar("FILESPATH").split(":"):
-        for element in sitedata:
-            filename = os.path.normpath(os.path.join(path, "meson.cross.d", element))
-            sanitized_path = filename.replace(thisdir, "${THISDIR}")
-            if sanitized_path == filename:
-                if os.path.exists(filename):
-                    bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir))
-                continue
-            files[filename.replace(thisdir, "${THISDIR}")] = os.path.exists(filename)
-
-    items = ["--cross-file=" + k for k,v in files.items() if v]
-    d.appendVar("EXTRA_OEMESON", " " + " ".join(items))
-    items = ["%s:%s" % (k, "True" if v else "False") for k,v in files.items()]
-    d.appendVarFlag("do_configure", "file-checksums", " " + " ".join(items))
-
-python () {
-    find_meson_cross_files(d)
-}
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.70.0.bb b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.70.0.bb
new file mode 100644
index 0000000..8217aaa
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.70.0.bb
@@ -0,0 +1,54 @@
+require glib.inc
+
+PE = "1"
+
+SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
+           file://run-ptest \
+           file://0001-Fix-DATADIRNAME-on-uclibc-Linux.patch \
+           file://Enable-more-tests-while-cross-compiling.patch \
+           file://0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch \
+           file://0001-Install-gio-querymodules-as-libexec_PROGRAM.patch \
+           file://0001-Do-not-ignore-return-value-of-write.patch \
+           file://0010-Do-not-hardcode-python-path-into-various-tools.patch \
+           file://0001-Set-host_machine-correctly-when-building-with-mingw3.patch \
+           file://0001-Do-not-write-bindir-into-pkg-config-files.patch \
+           file://0001-meson-Run-atomics-test-on-clang-as-well.patch \
+           file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
+           file://0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch \
+           "
+SRC_URI:append:class-native = " file://relocate-modules.patch"
+
+SRC_URI[sha256sum] = "200d7df811c5ba634afbf109f14bb40ba7fde670e89389885da14e27c0840742"
+
+# Find any meson cross files in FILESPATH that are relevant for the current
+# build (using siteinfo) and add them to EXTRA_OEMESON.
+inherit siteinfo
+def find_meson_cross_files(d):
+    if bb.data.inherits_class('native', d):
+        return ""
+
+    thisdir = os.path.normpath(d.getVar("THISDIR"))
+    import collections
+    sitedata = siteinfo_data(d)
+    # filename -> found
+    files = collections.OrderedDict()
+    for path in d.getVar("FILESPATH").split(":"):
+        for element in sitedata:
+            filename = os.path.normpath(os.path.join(path, "meson.cross.d", element))
+            sanitized_path = filename.replace(thisdir, "${THISDIR}")
+            if sanitized_path == filename:
+                if os.path.exists(filename):
+                    bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir))
+                continue
+            files[filename.replace(thisdir, "${THISDIR}")] = os.path.exists(filename)
+
+    items = ["--cross-file=" + k for k,v in files.items() if v]
+    d.appendVar("EXTRA_OEMESON", " " + " ".join(items))
+    items = ["%s:%s" % (k, "True" if v else "False") for k,v in files.items()]
+    d.appendVarFlag("do_configure", "file-checksums", " " + " ".join(items))
+
+python () {
+    find_meson_cross_files(d)
+}
diff --git a/poky/meta/recipes-core/glib-2.0/glib.inc b/poky/meta/recipes-core/glib-2.0/glib.inc
index a34776b..0eef2e3 100644
--- a/poky/meta/recipes-core/glib-2.0/glib.inc
+++ b/poky/meta/recipes-core/glib-2.0/glib.inc
@@ -9,7 +9,6 @@
                     file://glib/glib.h;beginline=4;endline=17;md5=b88abb7f3ad09607e71cb9d530155906 \
                     file://gmodule/COPYING;md5=4fbd65380cdd255951079008b364516c \
                     file://gmodule/gmodule.h;beginline=4;endline=17;md5=b88abb7f3ad09607e71cb9d530155906 \
-                    file://glib/pcre/pcre.h;beginline=8;endline=36;md5=3e2977dae4ad05217f58c446237298fc \
                     file://docs/reference/COPYING;md5=f51a5100c17af6bae00735cd791e1fcc"
 BUGTRACKER = "http://bugzilla.gnome.org"
 SECTION = "libs"
@@ -22,6 +21,7 @@
            virtual/libintl \
            virtual/libiconv \
            libffi \
+           libpcre \
            zlib"
 
 PACKAGES += "${PN}-codegen ${PN}-utils"
@@ -36,10 +36,9 @@
 
 S = "${WORKDIR}/glib-${PV}"
 
-PACKAGECONFIG ??= "system-pcre libmount \
+PACKAGECONFIG ??= "libmount \
                    ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
 # To use the system pcre it must be configured with --enable-unicode-properties
-PACKAGECONFIG[system-pcre] = "-Dinternal_pcre=false,-Dinternal_pcre=true,libpcre"
 PACKAGECONFIG[libmount] = "-Dlibmount=enabled,-Dlibmount=disabled,util-linux"
 PACKAGECONFIG[manpages] = "-Dman=true, -Dman=false, libxslt-native xmlto-native"
 # libelf is auto-detected without a configuration option
diff --git a/poky/meta/recipes-core/glib-networking/glib-networking_2.68.2.bb b/poky/meta/recipes-core/glib-networking/glib-networking_2.68.2.bb
deleted file mode 100644
index acea26e..0000000
--- a/poky/meta/recipes-core/glib-networking/glib-networking_2.68.2.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "GLib networking extensions"
-DESCRIPTION = "glib-networking contains the implementations of certain GLib networking features that cannot be implemented directly in GLib itself because of their dependencies."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/glib-networking/"
-BUGTRACKER = "http://bugzilla.gnome.org"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SECTION = "libs"
-DEPENDS = "glib-2.0"
-
-SRC_URI[archive.sha256sum] = "535ebc054ef697db56a4fffed91bc0e11c8ee1c9acb48aad28c8e1d5c3d5994f"
-
-PACKAGECONFIG ??= "openssl ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
-
-PACKAGECONFIG[gnutls] = "-Dgnutls=enabled,-Dgnutls=disabled,gnutls"
-PACKAGECONFIG[openssl] = "-Dopenssl=enabled,-Dopenssl=disabled,openssl"
-PACKAGECONFIG[libproxy] = "-Dlibproxy=enabled,-Dlibproxy=disabled,libproxy"
-PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false"
-
-EXTRA_OEMESON = "-Dgnome_proxy=disabled"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase gettext upstream-version-is-even gio-module-cache ptest-gnome
-
-SRC_URI += "file://run-ptest"
-
-FILES:${PN} += "\
-                ${libdir}/gio/modules/libgio*.so \
-                ${datadir}/dbus-1/services/ \
-                ${systemd_user_unitdir} \
-                "
-FILES:${PN}-dev += "${libdir}/gio/modules/libgio*.la"
-FILES:${PN}-staticdev += "${libdir}/gio/modules/libgio*.a"
-
-RDEPENDS:${PN}-ptest += "bash"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-core/glib-networking/glib-networking_2.70.0.bb b/poky/meta/recipes-core/glib-networking/glib-networking_2.70.0.bb
new file mode 100644
index 0000000..fc700e0
--- /dev/null
+++ b/poky/meta/recipes-core/glib-networking/glib-networking_2.70.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "GLib networking extensions"
+DESCRIPTION = "glib-networking contains the implementations of certain GLib networking features that cannot be implemented directly in GLib itself because of their dependencies."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/glib-networking/"
+BUGTRACKER = "http://bugzilla.gnome.org"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SECTION = "libs"
+DEPENDS = "glib-2.0"
+
+SRC_URI[archive.sha256sum] = "66b408e7afa86c582fe38963db56133869ab4b57d34e48ec56aba621940d6f35"
+
+PACKAGECONFIG ??= "openssl ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
+
+PACKAGECONFIG[gnutls] = "-Dgnutls=enabled,-Dgnutls=disabled,gnutls"
+PACKAGECONFIG[openssl] = "-Dopenssl=enabled,-Dopenssl=disabled,openssl"
+PACKAGECONFIG[libproxy] = "-Dlibproxy=enabled,-Dlibproxy=disabled,libproxy"
+PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false"
+
+EXTRA_OEMESON = "-Dgnome_proxy=disabled"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase gettext upstream-version-is-even gio-module-cache ptest-gnome
+
+SRC_URI += "file://run-ptest"
+
+FILES:${PN} += "\
+                ${libdir}/gio/modules/libgio*.so \
+                ${datadir}/dbus-1/services/ \
+                ${systemd_user_unitdir} \
+                "
+FILES:${PN}-dev += "${libdir}/gio/modules/libgio*.la"
+FILES:${PN}-staticdev += "${libdir}/gio/modules/libgio*.a"
+
+RDEPENDS:${PN}-ptest += "bash"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-core/glibc/glibc-package.inc b/poky/meta/recipes-core/glibc/glibc-package.inc
index 601dedb..571ae7a 100644
--- a/poky/meta/recipes-core/glibc/glibc-package.inc
+++ b/poky/meta/recipes-core/glibc/glibc-package.inc
@@ -1,6 +1,6 @@
 INHIBIT_SYSROOT_STRIP = "1"
 
-PACKAGES = "${PN}-dbg catchsegv sln nscd ldconfig ldd tzcode glibc-thread-db ${PN}-pic libcidn libmemusage malloc-debug libnss-db libsegfault ${PN}-pcprofile libsotruss ${PN} ${PN}-utils glibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}-src"
+PACKAGES = "${PN}-dbg catchsegv sln nscd ldconfig ldd tzcode glibc-thread-db ${PN}-pic libmemusage malloc-debug libnss-db libsegfault ${PN}-pcprofile libsotruss ${PN} ${PN}-utils glibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}-src"
 
 # The ld.so in this glibc supports the GNU_HASH
 RPROVIDES:${PN} = "eglibc rtld(GNU_HASH)"
@@ -29,7 +29,6 @@
 FILES:ldconfig = "${base_sbindir}/ldconfig"
 FILES:ldd = "${bindir}/ldd"
 FILES:libsegfault = "${base_libdir}/libSegFault*"
-FILES:libcidn = "${base_libdir}/libcidn-*.so ${base_libdir}/libcidn.so.*"
 FILES:libmemusage = "${base_libdir}/libmemusage.so"
 FILES:malloc-debug = "${base_libdir}/libc_malloc_debug.so.0"
 FILES:libnss-db = "${base_libdir}/libnss_db.so.* ${base_libdir}/libnss_db-*.so ${localstatedir}/db/Makefile ${localstatedir}/db/makedbs.sh"
diff --git a/poky/meta/recipes-core/glibc/glibc-tests.inc b/poky/meta/recipes-core/glibc/glibc-tests.inc
new file mode 100644
index 0000000..a8fe160
--- /dev/null
+++ b/poky/meta/recipes-core/glibc/glibc-tests.inc
@@ -0,0 +1,32 @@
+EXCLUDE_FROM_WORLD = "1"
+
+# handle PN differences
+FILESEXTRAPATHS:prepend := "${THISDIR}/glibc:"
+
+# setup depends
+INHIBIT_DEFAULT_DEPS = ""
+
+python () {
+    libc = d.getVar("PREFERRED_PROVIDER_virtual/libc")
+    libclocale = d.getVar("PREFERRED_PROVIDER_virtual/libc-locale")
+    if libc != "glibc" or libclocale != "glibc-locale":
+        raise bb.parse.SkipRecipe("glibc-testsuite requires that virtual/libc is glibc")
+}
+
+DEPENDS += "glibc-locale libgcc gcc-runtime"
+
+# remove the initial depends
+DEPENDS:remove = "libgcc-initial"
+
+do_check[dirs] += "${B}"
+do_check () {
+    # clean out previous test results
+    oe_runmake tests-clean
+    # makefiles don't clean entirely (and also sometimes fails due to too many args)
+    find ${B} -type f -name "*.out" -delete
+    find ${B} -type f -name "*.test-result" -delete
+    find ${B}/catgets -name "*.cat" -delete
+    find ${B}/conform -name "symlist-*" -delete
+    [ ! -e ${B}/timezone/testdata ] || rm -rf ${B}/timezone/testdata
+}
+addtask do_check after do_compile
diff --git a/poky/meta/recipes-core/glibc/glibc-testsuite_2.34.bb b/poky/meta/recipes-core/glibc/glibc-testsuite_2.34.bb
index 72aa332..e8ad2a9 100644
--- a/poky/meta/recipes-core/glibc/glibc-testsuite_2.34.bb
+++ b/poky/meta/recipes-core/glibc/glibc-testsuite_2.34.bb
@@ -1,31 +1,13 @@
 require glibc_${PV}.bb
-
-EXCLUDE_FROM_WORLD = "1"
-
-# handle PN differences
-FILESEXTRAPATHS:prepend := "${THISDIR}/glibc:"
-
-# strip provides
-PROVIDES = ""
-# setup depends
-INHIBIT_DEFAULT_DEPS = ""
-
-python () {
-    libc = d.getVar("PREFERRED_PROVIDER_virtual/libc")
-    libclocale = d.getVar("PREFERRED_PROVIDER_virtual/libc-locale")
-    if libc != "glibc" or libclocale != "glibc-locale":
-        raise bb.parse.SkipRecipe("glibc-testsuite requires that virtual/libc is glibc")
-}
-
-DEPENDS += "glibc-locale libgcc gcc-runtime"
-
-# remove the initial depends
-DEPENDS:remove = "libgcc-initial"
+require glibc-tests.inc
 
 inherit qemu
 
 SRC_URI += "file://check-test-wrapper"
 
+# strip provides
+PROVIDES = ""
+
 DEPENDS += "${@'qemu-native' if d.getVar('TOOLCHAIN_TEST_TARGET') == 'user' else ''}"
 
 TOOLCHAIN_TEST_TARGET ??= "user"
@@ -33,20 +15,10 @@
 TOOLCHAIN_TEST_HOST_USER ??= "root"
 TOOLCHAIN_TEST_HOST_PORT ??= "2222"
 
-do_check[dirs] += "${B}"
 do_check[nostamp] = "1"
-do_check () {
+do_check:append () {
     chmod 0755 ${WORKDIR}/check-test-wrapper
 
-    # clean out previous test results
-    oe_runmake tests-clean
-    # makefiles don't clean entirely (and also sometimes fails due to too many args)
-    find ${B} -type f -name "*.out" -delete
-    find ${B} -type f -name "*.test-result" -delete
-    find ${B}/catgets -name "*.cat" -delete
-    find ${B}/conform -name "symlist-*" -delete
-    [ ! -e ${B}/timezone/testdata ] || rm -rf ${B}/timezone/testdata
-
     oe_runmake -i \
         QEMU_SYSROOT="${RECIPE_SYSROOT}" \
         QEMU_OPTIONS="${@qemu_target_binary(d)} ${QEMU_OPTIONS}" \
@@ -56,7 +28,6 @@
         test-wrapper="${WORKDIR}/check-test-wrapper ${TOOLCHAIN_TEST_TARGET}" \
         check
 }
-addtask do_check after do_compile
 
 inherit nopackages
 deltask do_stash_locale
diff --git a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
index 86dc691..94cafdb 100644
--- a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
+++ b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
@@ -24,8 +24,8 @@
 
 inherit core-image setuptools3
 
-SRCREV ?= "98dcd17a5c6c3c6ac3f542b47e358c714f88af6a"
-SRC_URI = "git://git.yoctoproject.org/poky \
+SRCREV ?= "156767d3ed6f044a6b2dd43fc1fea13852e761a2"
+SRC_URI = "git://git.yoctoproject.org/poky;branch=honister \
            file://Yocto_Build_Appliance.vmx \
            file://Yocto_Build_Appliance.vmxf \
            file://README_VirtualBox_Guest_Additions.txt \
diff --git a/poky/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.25.bb b/poky/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.26.bb
similarity index 100%
rename from poky/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.25.bb
rename to poky/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.26.bb
diff --git a/poky/meta/recipes-core/libxcrypt/libxcrypt.inc b/poky/meta/recipes-core/libxcrypt/libxcrypt.inc
index 29b941d..ea877bb 100644
--- a/poky/meta/recipes-core/libxcrypt/libxcrypt.inc
+++ b/poky/meta/recipes-core/libxcrypt/libxcrypt.inc
@@ -3,14 +3,14 @@
 HOMEPAGE = "https://github.com/besser82/libxcrypt"
 SECTION = "libs"
 LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LICENSING;md5=afed27a72ae2a8075978299eebaa1f5d \
+LIC_FILES_CHKSUM = "file://LICENSING;md5=29c5f9af198623cdce52a77f85695164 \
                     file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
                     "
 
 inherit autotools pkgconfig
 
 SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH}"
-SRCREV = "b9116ef2245abb128a22a975d187b1272312a80c"
+SRCREV = "8ff7a8c5019cbd50419f7d0a8cd691eb99d6b086"
 SRCBRANCH ?= "develop"
 
 SRC_URI += "file://fix_cflags_handling.patch"
diff --git a/poky/meta/recipes-core/libxcrypt/libxcrypt_4.4.25.bb b/poky/meta/recipes-core/libxcrypt/libxcrypt_4.4.26.bb
similarity index 100%
rename from poky/meta/recipes-core/libxcrypt/libxcrypt_4.4.25.bb
rename to poky/meta/recipes-core/libxcrypt/libxcrypt_4.4.26.bb
diff --git a/poky/meta/recipes-core/libxml/libxml2_2.9.12.bb b/poky/meta/recipes-core/libxml/libxml2_2.9.12.bb
index 3105889..c387587 100644
--- a/poky/meta/recipes-core/libxml/libxml2_2.9.12.bb
+++ b/poky/meta/recipes-core/libxml/libxml2_2.9.12.bb
@@ -36,7 +36,7 @@
 
 inherit autotools pkgconfig binconfig-disabled ptest
 
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3native', '', d)}
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3targetconfig', '', d)}
 
 RDEPENDS:${PN}-ptest += "bash make ${@bb.utils.contains('PACKAGECONFIG', 'python', 'libgcc python3-core python3-logging python3-shell  python3-stringold python3-threading python3-unittest ${PN}-python', '', d)}"
 
diff --git a/poky/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch b/poky/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch
index 5721956..66f26c0 100644
--- a/poky/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch
+++ b/poky/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch
@@ -1,7 +1,7 @@
-From 2a53c03ffa90f0050a949fc5920f0df3e668ff42 Mon Sep 17 00:00:00 2001
+From ec87e53066a9942e9aaba817d71268342f5e83b9 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Wed, 16 Aug 2017 14:45:27 +0800
-Subject: [PATCH 2/2] configure: reproducible
+Subject: [PATCH] configure: reproducible
 
 "configure" enforces -U for ar flags, breaking deterministic builds.
 The flag was added to fix some vaguely specified "recent POSIX binutil
@@ -13,23 +13,21 @@
 Rebase to 6.1
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
 ---
  configure | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/configure b/configure
-index adead92..fa4fdb7 100755
+index 421cf859..a1b7840d 100755
 --- a/configure
 +++ b/configure
-@@ -4503,7 +4503,7 @@ if test "${cf_cv_ar_flags+set}" = set; then
- else
+@@ -5072,7 +5072,7 @@ else
+ 		;;
+ 	(*)
+ 		cf_cv_ar_flags=unknown
+-		for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
++		for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv
+ 		do
  
- 	cf_cv_ar_flags=unknown
--	for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
-+	for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv
- 	do
- 
- 		# check if $ARFLAGS already contains this choice
--- 
-1.8.3.1
-
+ 			# check if $ARFLAGS already contains this choice
diff --git a/poky/meta/recipes-core/ncurses/files/0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch b/poky/meta/recipes-core/ncurses/files/0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch
index 1eb1776..a15694d 100644
--- a/poky/meta/recipes-core/ncurses/files/0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch
+++ b/poky/meta/recipes-core/ncurses/files/0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch
@@ -1,4 +1,4 @@
-From 3b3e87934bb6d8511261d7c3d6e39b4f71849272 Mon Sep 17 00:00:00 2001
+From 10cd0c12a6e14fb4f0498c299c1dd32720b710da Mon Sep 17 00:00:00 2001
 From: Nathan Rossi <nathan@nathanrossi.com>
 Date: Mon, 14 Dec 2020 13:39:02 +1000
 Subject: [PATCH] gen-pkgconfig.in: Do not include LDFLAGS in generated pc
@@ -10,19 +10,20 @@
 
 Upstream-Status: Inappropriate [OE Specific]
 Signed-off-by: Nathan Rossi <nathan@nathanrossi.com>
+
 ---
  misc/gen-pkgconfig.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/misc/gen-pkgconfig.in b/misc/gen-pkgconfig.in
-index 8f00b824b9..009d215663 100644
+index a45dd54f..85273054 100644
 --- a/misc/gen-pkgconfig.in
 +++ b/misc/gen-pkgconfig.in
-@@ -80,7 +80,7 @@ if [ "$includedir" != "/usr/include" ]; then
+@@ -83,7 +83,7 @@ if [ "$includedir" != "/usr/include" ]; then
  fi
  
  lib_flags=
--for opt in -L$libdir @LDFLAGS@ @EXTRA_LDFLAGS@ @LIBS@
+-for opt in -L$libdir @EXTRA_PKG_LDFLAGS@ @LIBS@
 +for opt in -L$libdir @LIBS@
  do
  	case $opt in
diff --git a/poky/meta/recipes-core/ncurses/ncurses_6.2.bb b/poky/meta/recipes-core/ncurses/ncurses_6.2.bb
deleted file mode 100644
index e7d7396..0000000
--- a/poky/meta/recipes-core/ncurses/ncurses_6.2.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require ncurses.inc
-
-SRC_URI += "file://0001-tic-hang.patch \
-           file://0002-configure-reproducible.patch \
-           file://0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch \
-           "
-# commit id corresponds to the revision in package version
-SRCREV = "a669013cd5e9d6434e5301348ea51baf306c93c4"
-S = "${WORKDIR}/git"
-EXTRA_OECONF += "--with-abi-version=5"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)$"
-
-# This is needed when using patchlevel versions like 6.1+20181013
-#CVE_VERSION = "${@d.getVar("PV").split('+')[0]}.${@d.getVar("PV").split('+')[1]}"
diff --git a/poky/meta/recipes-core/ncurses/ncurses_6.3.bb b/poky/meta/recipes-core/ncurses/ncurses_6.3.bb
new file mode 100644
index 0000000..f0256da
--- /dev/null
+++ b/poky/meta/recipes-core/ncurses/ncurses_6.3.bb
@@ -0,0 +1,14 @@
+require ncurses.inc
+
+SRC_URI += "file://0001-tic-hang.patch \
+           file://0002-configure-reproducible.patch \
+           file://0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch \
+           "
+# commit id corresponds to the revision in package version
+SRCREV = "51d0fd9cc3edb975f04224f29f777f8f448e8ced"
+S = "${WORKDIR}/git"
+EXTRA_OECONF += "--with-abi-version=5"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)$"
+
+# This is needed when using patchlevel versions like 6.1+20181013
+#CVE_VERSION = "${@d.getVar("PV").split('+')[0]}.${@d.getVar("PV").split('+')[1]}"
diff --git a/poky/meta/recipes-core/ovmf/ovmf_git.bb b/poky/meta/recipes-core/ovmf/ovmf_git.bb
index 5d54bad..ce3b650 100644
--- a/poky/meta/recipes-core/ovmf/ovmf_git.bb
+++ b/poky/meta/recipes-core/ovmf/ovmf_git.bb
@@ -25,8 +25,8 @@
            file://0001-Fix-VLA-parameter-warning.patch \
            "
 
-PV = "edk2-stable202105"
-SRCREV = "e1999b264f1f9d7230edf2448f757c73da567832"
+PV = "edk2-stable202108"
+SRCREV = "7b4a99be8a39c12d3a7fc4b8db9f0eab4ac688d5"
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>edk2-stable.*)"
 
 inherit deploy
diff --git a/poky/meta/recipes-core/psplash/psplash_git.bb b/poky/meta/recipes-core/psplash/psplash_git.bb
index 1be7ece..28f385b 100644
--- a/poky/meta/recipes-core/psplash/psplash_git.bb
+++ b/poky/meta/recipes-core/psplash/psplash_git.bb
@@ -6,7 +6,7 @@
 LIC_FILES_CHKSUM = "file://psplash.h;beginline=1;endline=8;md5=8f232c1e95929eacab37f00900580224"
 DEPENDS = "gdk-pixbuf-native"
 
-SRCREV = "0a902f7cd875ccf018456451be369f05fa55f962"
+SRCREV = "fdbd111d6bab2fbbae62a041123fc6b644aa97aa"
 PV = "0.1+git${SRCPV}"
 PR = "r15"
 
diff --git a/poky/meta/recipes-core/systemd/systemd-boot_249.3.bb b/poky/meta/recipes-core/systemd/systemd-boot_249.5.bb
similarity index 100%
rename from poky/meta/recipes-core/systemd/systemd-boot_249.3.bb
rename to poky/meta/recipes-core/systemd/systemd-boot_249.5.bb
diff --git a/poky/meta/recipes-core/systemd/systemd.inc b/poky/meta/recipes-core/systemd/systemd.inc
index 0534172..53ffe8d 100644
--- a/poky/meta/recipes-core/systemd/systemd.inc
+++ b/poky/meta/recipes-core/systemd/systemd.inc
@@ -14,7 +14,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
                     file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
 
-SRCREV = "090378dcb1de5ca66900503210e85d63075fa70a"
+SRCREV = "00b0393e65252bf631670604f58b844780b08c50"
 SRCBRANCH = "v249-stable"
 SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=git;branch=${SRCBRANCH} \
 "
diff --git a/poky/meta/recipes-core/systemd/systemd/0001-meson-use-partial_dependency-to-get-include-director.patch b/poky/meta/recipes-core/systemd/systemd/0001-meson-use-partial_dependency-to-get-include-director.patch
new file mode 100644
index 0000000..51ee5d8
--- /dev/null
+++ b/poky/meta/recipes-core/systemd/systemd/0001-meson-use-partial_dependency-to-get-include-director.patch
@@ -0,0 +1,46 @@
+From 260e871fda979f040c94d2011545e8122bed68ca Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 18 Oct 2021 10:13:07 +0200
+Subject: [PATCH] meson: use partial_dependency() to get include directory
+
+Getting the variable directly from pkg-config is prone to host
+contamination when building in sysroots as the
+compiler starts looking for the headers on the host in addition to
+the sysroot.
+
+Upstream-Status: Submitted [https://github.com/systemd/systemd/pull/21027]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ meson.build | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index df53c6156d..38fb37dd75 100644
+--- a/meson.build
++++ b/meson.build
+@@ -2618,18 +2618,17 @@ endif
+ 
+ if conf.get('ENABLE_LOCALED') == 1
+         if conf.get('HAVE_XKBCOMMON') == 1
+-                # logind will load libxkbcommon.so dynamically on its own
+-                deps = [libdl]
+-                extra_includes = [libxkbcommon.get_pkgconfig_variable('includedir')]
++                # logind will load libxkbcommon.so dynamically on its own, but we still
++                # need to specify where the headers are
++                deps = [libdl, libxkbcommon.partial_dependency(compile_args: true)]
+         else
+                 deps = []
+-                extra_includes = []
+         endif
+ 
+         executable(
+                 'systemd-localed',
+                 systemd_localed_sources,
+-                include_directories : includes + extra_includes,
++                include_directories : includes,
+                 link_with : [libshared],
+                 dependencies : deps,
+                 install_rpath : rootlibexecdir,
+-- 
+2.20.1
+
diff --git a/poky/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch b/poky/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
index 15fa0c4..f233ee6 100644
--- a/poky/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
@@ -1,4 +1,4 @@
-From 40acdb90031cfeb7140cee5205bce24f8c91d857 Mon Sep 17 00:00:00 2001
+From 30bd749c6777701496124272b59e1283252c3267 Mon Sep 17 00:00:00 2001
 From: Chen Qi <Qi.Chen@windriver.com>
 Date: Mon, 25 Feb 2019 13:41:41 +0800
 Subject: [PATCH] don't use glibc-specific qsort_r
diff --git a/poky/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch b/poky/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
index d0110a2..a51ab0a 100644
--- a/poky/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
@@ -1,4 +1,4 @@
-From 2a2f95b6dc16d2ea7a8e9349c6b19cc50c34777b Mon Sep 17 00:00:00 2001
+From 4dba0a3b1372ce34d8b6e150a108123a1b2b0b96 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 __compare_fn_t and comparison_fn_t
diff --git a/poky/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch b/poky/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
index 1d61367..3c07f60 100644
--- a/poky/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
@@ -1,4 +1,4 @@
-From b19f800e178516d4f4d344457647e4a018bd6855 Mon Sep 17 00:00:00 2001
+From 842d231165f0d564c51d93650820e4fa7f097c3e 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
@@ -23,7 +23,7 @@
  create mode 100644 src/basic/parse-printf-format.h
 
 diff --git a/meson.build b/meson.build
-index 738879eb21..1aa20b8246 100644
+index b5a51b6d0d..11cf56efee 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -656,6 +656,7 @@ endif
@@ -35,10 +35,10 @@
                    'valgrind/memcheck.h',
                    'valgrind/valgrind.h',
 diff --git a/src/basic/meson.build b/src/basic/meson.build
-index 9b016ce5e8..a9ce21b02e 100644
+index 452b965db3..4e64d883dc 100644
 --- a/src/basic/meson.build
 +++ b/src/basic/meson.build
-@@ -322,6 +322,11 @@ endforeach
+@@ -321,6 +321,11 @@ endforeach
  
  basic_sources += generated_gperf_headers
  
diff --git a/poky/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch b/poky/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch
index 0462d52..1b9e194 100644
--- a/poky/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch
@@ -1,4 +1,4 @@
-From db6551741a3654d8e75aff93ea00fbff579f7b02 Mon Sep 17 00:00:00 2001
+From 95c61768e1f8d76a7bd28355429fc4b7b428ad61 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
@@ -73,7 +73,7 @@
  51 files changed, 62 insertions(+)
 
 diff --git a/meson.build b/meson.build
-index 1aa20b8246..aafee71eb4 100644
+index 11cf56efee..5bd6602e03 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -480,6 +480,7 @@ foreach ident : ['secure_getenv', '__secure_getenv']
@@ -109,7 +109,7 @@
  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 81b1e3f10e..8fedcfd1cd 100644
+index 1ca445dab4..1f5a212d4e 100644
 --- a/src/basic/env-util.c
 +++ b/src/basic/env-util.c
 @@ -18,6 +18,7 @@
@@ -165,7 +165,7 @@
  int mkdir_safe_internal(
                  const char *path,
 diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c
-index 8c836a1b74..2eb7e5a634 100644
+index e7a5a99551..3cc157f248 100644
 --- a/src/basic/mountpoint-util.c
 +++ b/src/basic/mountpoint-util.c
 @@ -11,6 +11,7 @@
@@ -273,7 +273,7 @@
  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 50daef6702..1cc6d91e64 100644
+index 902e074bd2..ac15b944e6 100644
 --- a/src/core/dbus-execute.c
 +++ b/src/core/dbus-execute.c
 @@ -42,6 +42,7 @@
@@ -321,7 +321,7 @@
  #if HAVE_KMOD
  #include "module-util.h"
 diff --git a/src/core/service.c b/src/core/service.c
-index cb0a528f0d..740d305710 100644
+index 701c145565..4ddc20ed7e 100644
 --- a/src/core/service.c
 +++ b/src/core/service.c
 @@ -41,6 +41,7 @@
@@ -357,7 +357,7 @@
  #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 c8fb726d42..858a425d12 100644
+index 3eac97510d..db6913bc7a 100644
 --- a/src/journal/journalctl.c
 +++ b/src/journal/journalctl.c
 @@ -72,6 +72,7 @@
@@ -429,7 +429,7 @@
  #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 5728c537bc..94885b0bf6 100644
+index b3240177cb..7e3ae2d24f 100644
 --- a/src/libsystemd/sd-journal/sd-journal.c
 +++ b/src/libsystemd/sd-journal/sd-journal.c
 @@ -40,6 +40,7 @@
diff --git a/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch b/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
index 855607e..951bebc 100644
--- a/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
@@ -1,4 +1,4 @@
-From d7ae3aadc70555932e03349907f8be04d03a50ee Mon Sep 17 00:00:00 2001
+From f95192d87a46a2191cf4ebd47c64e04b138d7fac Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Thu, 26 Oct 2017 22:10:42 -0700
 Subject: [PATCH] Include netinet/if_ether.h
@@ -103,7 +103,7 @@
 -#endif /* _UAPI_LINUX_IN6_H */
 +#endif /* _LINUX_IN6_H */
 diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
-index e8c47f429a..359922c1b3 100644
+index f99c12620b..4966d62656 100644
 --- a/src/libsystemd-network/sd-dhcp6-client.c
 +++ b/src/libsystemd-network/sd-dhcp6-client.c
 @@ -5,7 +5,6 @@
@@ -274,12 +274,13 @@
  #include "sd-dhcp6-client.h"
  
 diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
-index 9421ce1aa6..3e37cbcc39 100644
+index 20675f2306..2884511ff3 100644
 --- a/src/network/networkd-link.c
 +++ b/src/network/networkd-link.c
-@@ -1,8 +1,8 @@
+@@ -1,9 +1,9 @@
  /* SPDX-License-Identifier: LGPL-2.1-or-later */
  
+ #include <net/if.h>
 +#include <netinet/if_ether.h>
  #include <netinet/in.h>
  #include <linux/if.h>
@@ -299,7 +300,7 @@
  #include <netinet/in.h>
  #include <linux/netdevice.h>
 diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
-index 77a93beca9..3bf9ae8837 100644
+index 791fd64c39..a2825c920d 100644
 --- a/src/network/networkd-route.c
 +++ b/src/network/networkd-route.c
 @@ -1,5 +1,6 @@
@@ -310,7 +311,7 @@
  #include <linux/ipv6_route.h>
  #include <linux/nexthop.h>
 diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c
-index 10c312c480..e44fbb5c35 100644
+index 13c4cedd10..6558d551ab 100644
 --- a/src/network/networkd-setlink.c
 +++ b/src/network/networkd-setlink.c
 @@ -1,8 +1,8 @@
@@ -369,7 +370,7 @@
  #include <netinet/ether.h>
  #include <unistd.h>
 diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c
-index d40251331c..89566c05f5 100644
+index 5964e30bf1..52a18d7a7f 100644
 --- a/src/udev/udev-builtin-net_setup_link.c
 +++ b/src/udev/udev-builtin-net_setup_link.c
 @@ -1,5 +1,6 @@
diff --git a/poky/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch b/poky/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
index 2884693..46d0c7a 100644
--- a/poky/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
@@ -1,4 +1,4 @@
-From e2d70a1735fc6b9d3c079814831ab0b1b2a9d1e0 Mon Sep 17 00:00:00 2001
+From 9c0d0b61ffa4019b299e4c47f376ae823879dbf3 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
diff --git a/poky/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch b/poky/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch
index 1de7ccf..9540f96 100644
--- a/poky/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch
@@ -1,4 +1,4 @@
-From 3410d82c9d07aee3e951fc6ae0b41fc1a594e00d Mon Sep 17 00:00:00 2001
+From 45b78e3dc3edead4fc9883dd5a9877f473367bf7 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
@@ -10,10 +10,10 @@
 Upstream-Status: Inappropriate [musl specific]
 
 Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
 ---
  src/basic/missing_type.h | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
+ src/shared/mount-setup.c |  1 +
+ 2 files changed, 21 insertions(+)
 
 diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
 index aeaf6ad5ec..3df1084ef2 100644
@@ -43,3 +43,15 @@
 +#ifndef FTW_SKIP_SIBLINGS
 +#define FTW_SKIP_SIBLINGS 3
 +#endif
+diff --git a/src/shared/mount-setup.c b/src/shared/mount-setup.c
+index ef3527e9a7..c1cab40eb8 100644
+--- a/src/shared/mount-setup.c
++++ b/src/shared/mount-setup.c
+@@ -32,6 +32,7 @@
+ #include "strv.h"
+ #include "user-util.h"
+ #include "virt.h"
++#include "missing_type.h"
+ 
+ typedef enum MountMode {
+         MNT_NONE           = 0,
diff --git a/poky/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch b/poky/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch
index 4670c23..35d24b3 100644
--- a/poky/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch
@@ -1,4 +1,4 @@
-From 1e3bc870ded807cff0d3771dd89a850d020df032 Mon Sep 17 00:00:00 2001
+From 943b4258b870c65caaa56fe4dad0d9c7281fdb1d Mon Sep 17 00:00:00 2001
 From: Chen Qi <Qi.Chen@windriver.com>
 Date: Mon, 25 Feb 2019 15:03:47 +0800
 Subject: [PATCH] fix missing of __register_atfork for non-glibc builds
diff --git a/poky/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch b/poky/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch
index e6bb37a..a0d8402 100644
--- a/poky/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch
@@ -1,4 +1,4 @@
-From eeacb75025d8f537d54c35256c5730c9aab15cde Mon Sep 17 00:00:00 2001
+From cceb2bba69b371868e89d435c5406b67cdd84d57 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
diff --git a/poky/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch b/poky/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
index 897e332..1aee0fd 100644
--- a/poky/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
@@ -1,4 +1,4 @@
-From fa29a572faaeb6fb9ed0bc6802d17139773e1908 Mon Sep 17 00:00:00 2001
+From c1ee5661fa24bf540a4880a9d528da8752be033b Mon Sep 17 00:00:00 2001
 From: Chen Qi <Qi.Chen@windriver.com>
 Date: Wed, 28 Feb 2018 21:25:22 -0800
 Subject: [PATCH] test-sizeof.c: Disable tests for missing typedefs in musl
@@ -13,7 +13,7 @@
  1 file changed, 4 insertions(+)
 
 diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
-index 3c9dc180fa..e1a59d408c 100644
+index e36bee4e8f..4403c0aa52 100644
 --- a/src/test/test-sizeof.c
 +++ b/src/test/test-sizeof.c
 @@ -55,8 +55,10 @@ int main(void) {
diff --git a/poky/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/poky/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
index 3bf706f..fefa6cb 100644
--- a/poky/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
@@ -1,4 +1,4 @@
-From 88c8922f9e4d221402d9cb2e04b9c82e89125827 Mon Sep 17 00:00:00 2001
+From ca9b1277fb4eb89bc2ca92440a280e318e882b66 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()
diff --git a/poky/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/poky/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch
index 7400871..f9f3af1 100644
--- a/poky/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch
@@ -1,4 +1,4 @@
-From e07e9b998ad61b09555bc809aa15de9d2516787a Mon Sep 17 00:00:00 2001
+From 792f4718ebd5a156729be89a5b47e52dc4b62975 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
diff --git a/poky/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/poky/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
index c5e20cb..fb901e6 100644
--- a/poky/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
@@ -1,4 +1,4 @@
-From 2f048d13e100158320bda248635b3c533ac9717b Mon Sep 17 00:00:00 2001
+From 101f5ceea7e575622c4f07d2972aeb4d6b082e4b 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
diff --git a/poky/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/poky/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
index 39804bd..ece115d 100644
--- a/poky/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
@@ -1,4 +1,4 @@
-From 45148529792c0cda32fdd61610c8d5a700d541fa Mon Sep 17 00:00:00 2001
+From 01ac079433b999a4747acf7be6a3b5fa182c3faf 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
diff --git a/poky/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch b/poky/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
index 365e2a3..62a6c23 100644
--- a/poky/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
@@ -1,4 +1,4 @@
-From 02a2772889d6cb08c9ca0561b52e7a9a80e50497 Mon Sep 17 00:00:00 2001
+From df2470912f3197aa441b6751feace1454c7d1f84 Mon Sep 17 00:00:00 2001
 From: Chen Qi <Qi.Chen@windriver.com>
 Date: Mon, 25 Feb 2019 15:18:00 +0800
 Subject: [PATCH] Hide __start_BUS_ERROR_MAP and __stop_BUS_ERROR_MAP
diff --git a/poky/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch b/poky/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch
index 8a6c03f..b6b1dc3 100644
--- a/poky/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch
@@ -1,4 +1,4 @@
-From 47c4ac80689077b1eb86cf05b4326b1ac345aedf Mon Sep 17 00:00:00 2001
+From e27ecb188503159a3f11bb1179ba1892cd080843 Mon Sep 17 00:00:00 2001
 From: Chen Qi <Qi.Chen@windriver.com>
 Date: Mon, 25 Feb 2019 15:27:54 +0800
 Subject: [PATCH] missing_type.h: add __compar_d_fn_t definition
diff --git a/poky/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch b/poky/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch
index e75935a..fea3472 100644
--- a/poky/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch
@@ -1,4 +1,4 @@
-From 2cb33d8896a4ad2d3b489fed51f17d5e45dfb4fc Mon Sep 17 00:00:00 2001
+From 748c4cf040856857f24f4aeef6d996bd58573bd3 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
diff --git a/poky/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch b/poky/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch
index 629c103..9a84d9c 100644
--- a/poky/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch
@@ -1,4 +1,4 @@
-From 200a2a2e4f04a7b7078dd455fafbd6774240e30b Mon Sep 17 00:00:00 2001
+From 647447e220e7e47e214c8258c7d4fbdb0da058aa Mon Sep 17 00:00:00 2001
 From: Alex Kiernan <alex.kiernan@gmail.com>
 Date: Fri, 7 Aug 2020 15:19:27 +0000
 Subject: [PATCH] Handle missing LOCK_EX
diff --git a/poky/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch b/poky/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch
index ea6e82f..5d3e8d4 100644
--- a/poky/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch
@@ -1,4 +1,4 @@
-From 6445b7737a89256f35adc56701a5c47b48618ced Mon Sep 17 00:00:00 2001
+From 85cf3d58ff1a9696f0754feffae7d81b8d1d9a43 Mon Sep 17 00:00:00 2001
 From: Alex Kiernan <alex.kiernan@gmail.com>
 Date: Fri, 7 Aug 2020 15:20:17 +0000
 Subject: [PATCH] Fix incompatible pointer type struct sockaddr_un *
@@ -24,15 +24,15 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
-index 04685fecba..90b12bb5bd 100644
+index 575b9da447..ff08ed23cc 100644
 --- a/src/nspawn/nspawn.c
 +++ b/src/nspawn/nspawn.c
 @@ -5354,7 +5354,7 @@ static int cant_be_in_netns(void) {
          if (fd < 0)
                  return log_error_errno(errno, "Failed to allocate udev control socket: %m");
  
--        if (connect(fd, &sa.un, SOCKADDR_UN_LEN(sa.un)) < 0) {
-+        if (connect(fd, (struct sockaddr *)&sa.un, SOCKADDR_UN_LEN(sa.un)) < 0) {
+-        if (connect(fd, &sa.sa, SOCKADDR_UN_LEN(sa.un)) < 0) {
++        if (connect(fd, (struct sockaddr *)&sa.sa, SOCKADDR_UN_LEN(sa.un)) < 0) {
  
                  if (errno == ENOENT || ERRNO_IS_DISCONNECT(errno))
                          return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
diff --git a/poky/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch b/poky/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch
index 60c12b0..c028624 100644
--- a/poky/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch
@@ -1,4 +1,4 @@
-From ae71bf2b97dc9d4760defd83463c1d305f332f22 Mon Sep 17 00:00:00 2001
+From 9770c5873836e702c2a58cf3b439198415c82c28 Mon Sep 17 00:00:00 2001
 From: Chen Qi <Qi.Chen@windriver.com>
 Date: Mon, 25 Feb 2019 16:53:06 +0800
 Subject: [PATCH] test-json.c: define M_PIl
diff --git a/poky/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch b/poky/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch
index 6998bf0..9028e14 100644
--- a/poky/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch
@@ -1,4 +1,4 @@
-From 3198690c2dbb4b457a04ef21914dc4d531540273 Mon Sep 17 00:00:00 2001
+From 26da484391e20b36eb65c98872d1145261028c7a 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
@@ -165,7 +165,7 @@
                  STRV_FOREACH(f, files) {
                          k = apply_file(*f, true);
 diff --git a/src/core/main.c b/src/core/main.c
-index b32a19a1d8..4e1238853e 100644
+index c64c73883e..1ac185e946 100644
 --- a/src/core/main.c
 +++ b/src/core/main.c
 @@ -1402,7 +1402,7 @@ static int bump_unix_max_dgram_qlen(void) {
@@ -252,7 +252,7 @@
                  log_error_errno(r, "Failed to move process: %m");
                  goto finish;
 diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
-index 90b12bb5bd..6a1dafa094 100644
+index ff08ed23cc..e7c4a874a9 100644
 --- a/src/nspawn/nspawn.c
 +++ b/src/nspawn/nspawn.c
 @@ -2751,7 +2751,7 @@ static int reset_audit_loginuid(void) {
diff --git a/poky/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch b/poky/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch
index 0670276..152a362 100644
--- a/poky/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch
@@ -1,4 +1,4 @@
-From b04518c464b526f8b9adc9ce3c08b1881db47989 Mon Sep 17 00:00:00 2001
+From 5fa412dcebe89fd9f6f6003163f17e0dc719df34 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
@@ -38,7 +38,7 @@
  typedef struct CPUSet {
          cpu_set_t *set;
 diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
-index e1a59d408c..c269ea6e8c 100644
+index 4403c0aa52..e7e4ae112d 100644
 --- a/src/test/test-sizeof.c
 +++ b/src/test/test-sizeof.c
 @@ -1,6 +1,5 @@
diff --git a/poky/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch b/poky/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch
index dc63305..95df83c 100644
--- a/poky/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch
@@ -1,4 +1,4 @@
-From 0c8935128b39864b07dfee39cfa9d35d48f056aa Mon Sep 17 00:00:00 2001
+From 4835f3ca2e277abd93e2d4a74ecfd7401f32862b 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
diff --git a/poky/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch b/poky/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
index ff96a72..167f724 100644
--- a/poky/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
@@ -1,4 +1,4 @@
-From f5d7fee9620cbcf52be8f8ba477890d28cadfbc8 Mon Sep 17 00:00:00 2001
+From e90f18da3d2aef07ddd7d312ca8b34ff0324208e 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
diff --git a/poky/meta/recipes-core/systemd/systemd_249.3.bb b/poky/meta/recipes-core/systemd/systemd_249.3.bb
deleted file mode 100644
index f8c85da..0000000
--- a/poky/meta/recipes-core/systemd/systemd_249.3.bb
+++ /dev/null
@@ -1,785 +0,0 @@
-require systemd.inc
-
-PROVIDES = "udev"
-
-PE = "1"
-
-DEPENDS = "intltool-native gperf-native libcap util-linux python3-jinja2-native"
-
-SECTION = "base/shell"
-
-inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu systemd gettext bash-completion manpages features_check
-
-# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so
-# that we don't build both udev and systemd in world builds.
-REQUIRED_DISTRO_FEATURES = "systemd"
-
-SRC_URI += "file://touchscreen.rules \
-           file://00-create-volatile.conf \
-           ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
-           ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
-           file://init \
-           file://99-default.preset \
-           file://systemd-pager.sh \
-           file://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
-           file://0003-implment-systemd-sysv-install-for-OE.patch \
-           file://0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch \
-           file://0001-test-parse-argument-Include-signal.h.patch \
-           "
-
-# patches needed by musl
-SRC_URI:append:libc-musl = " ${SRC_URI_MUSL}"
-SRC_URI_MUSL = "\
-               file://0002-don-t-use-glibc-specific-qsort_r.patch \
-               file://0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch \
-               file://0004-add-fallback-parse_printf_format-implementation.patch \
-               file://0005-src-basic-missing.h-check-for-missing-strndupa.patch \
-               file://0006-Include-netinet-if_ether.h.patch \
-               file://0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch \
-               file://0008-add-missing-FTW_-macros-for-musl.patch \
-               file://0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
-               file://0010-Use-uintmax_t-for-handling-rlim_t.patch \
-               file://0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \
-               file://0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
-               file://0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
-               file://0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
-               file://0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
-               file://0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \
-               file://0017-missing_type.h-add-__compar_d_fn_t-definition.patch \
-               file://0018-avoid-redefinition-of-prctl_mm_map-structure.patch \
-               file://0019-Handle-missing-LOCK_EX.patch \
-               file://0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch \
-               file://0021-test-json.c-define-M_PIl.patch \
-               file://0022-do-not-disable-buffer-in-writing-files.patch \
-               file://0025-Handle-__cpu_mask-usage.patch \
-               file://0026-Handle-missing-gshadow.patch \
-               file://0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch \
-               "
-
-PAM_PLUGINS = " \
-    pam-plugin-unix \
-    pam-plugin-loginuid \
-    pam-plugin-keyinit \
-"
-
-PACKAGECONFIG ??= " \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam selinux smack usrmerge polkit seccomp', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
-    backlight \
-    binfmt \
-    gshadow \
-    hibernate \
-    hostnamed \
-    idn \
-    ima \
-    kmod \
-    localed \
-    logind \
-    machined \
-    myhostname \
-    networkd \
-    nss \
-    nss-mymachines \
-    nss-resolve \
-    quotacheck \
-    randomseed \
-    resolved \
-    set-time-epoch \
-    sysusers \
-    sysvinit \
-    timedated \
-    timesyncd \
-    userdb \
-    utmp \
-    vconsole \
-    wheel-group \
-    zstd \
-"
-
-PACKAGECONFIG:remove:libc-musl = " \
-    gshadow \
-    idn \
-    localed \
-    myhostname \
-    nss \
-    nss-mymachines \
-    nss-resolve \
-    sysusers \
-    userdb \
-    utmp \
-"
-
-CFLAGS:append:libc-musl = " -D__UAPI_DEF_ETHHDR=0 "
-
-# Some of the dependencies are weak-style recommends - if not available at runtime,
-# systemd won't fail but the library-related feature will be skipped with a warning.
-
-# Use the upstream systemd serial-getty@.service and rely on
-# systemd-getty-generator instead of using the OE-core specific
-# systemd-serialgetty.bb - not enabled by default.
-PACKAGECONFIG[serial-getty-generator] = ""
-
-PACKAGECONFIG[acl] = "-Dacl=true,-Dacl=false,acl"
-PACKAGECONFIG[audit] = "-Daudit=true,-Daudit=false,audit"
-PACKAGECONFIG[backlight] = "-Dbacklight=true,-Dbacklight=false"
-PACKAGECONFIG[binfmt] = "-Dbinfmt=true,-Dbinfmt=false"
-PACKAGECONFIG[bzip2] = "-Dbzip2=true,-Dbzip2=false,bzip2"
-PACKAGECONFIG[cgroupv2] = "-Ddefault-hierarchy=unified,-Ddefault-hierarchy=hybrid"
-PACKAGECONFIG[coredump] = "-Dcoredump=true,-Dcoredump=false"
-PACKAGECONFIG[cryptsetup] = "-Dlibcryptsetup=true,-Dlibcryptsetup=false,cryptsetup,,cryptsetup"
-PACKAGECONFIG[tpm2] = "-Dtpm2=true,-Dtpm2=false,tpm2-tss,tpm2-tss libtss2 libtss2-tcti-device"
-PACKAGECONFIG[dbus] = "-Ddbus=true,-Ddbus=false,dbus"
-PACKAGECONFIG[efi] = "-Defi=true,-Defi=false"
-PACKAGECONFIG[gnu-efi] = "-Dgnu-efi=true -Defi-libdir=${STAGING_LIBDIR} -Defi-includedir=${STAGING_INCDIR}/efi,-Dgnu-efi=false,gnu-efi"
-PACKAGECONFIG[elfutils] = "-Delfutils=true,-Delfutils=false,elfutils"
-PACKAGECONFIG[firstboot] = "-Dfirstboot=true,-Dfirstboot=false"
-PACKAGECONFIG[repart] = "-Drepart=true,-Drepart=false"
-PACKAGECONFIG[homed] = "-Dhomed=true,-Dhomed=false"
-# Sign the journal for anti-tampering
-PACKAGECONFIG[gcrypt] = "-Dgcrypt=true,-Dgcrypt=false,libgcrypt"
-PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
-PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false"
-PACKAGECONFIG[hibernate] = "-Dhibernate=true,-Dhibernate=false"
-PACKAGECONFIG[hostnamed] = "-Dhostnamed=true,-Dhostnamed=false"
-PACKAGECONFIG[idn] = "-Didn=true,-Didn=false"
-PACKAGECONFIG[ima] = "-Dima=true,-Dima=false"
-# importd requires journal-upload/xz/zlib/bzip2/gcrypt
-PACKAGECONFIG[importd] = "-Dimportd=true,-Dimportd=false"
-# Update NAT firewall rules
-PACKAGECONFIG[iptc] = "-Dlibiptc=true,-Dlibiptc=false,iptables"
-PACKAGECONFIG[journal-upload] = "-Dlibcurl=true,-Dlibcurl=false,curl"
-PACKAGECONFIG[kmod] = "-Dkmod=true,-Dkmod=false,kmod"
-PACKAGECONFIG[ldconfig] = "-Dldconfig=true,-Dldconfig=false,,ldconfig"
-PACKAGECONFIG[libidn] = "-Dlibidn=true,-Dlibidn=false,libidn,,libidn"
-PACKAGECONFIG[libidn2] = "-Dlibidn2=true,-Dlibidn2=false,libidn2,,libidn2"
-PACKAGECONFIG[localed] = "-Dlocaled=true,-Dlocaled=false"
-PACKAGECONFIG[logind] = "-Dlogind=true,-Dlogind=false"
-PACKAGECONFIG[lz4] = "-Dlz4=true,-Dlz4=false,lz4"
-PACKAGECONFIG[machined] = "-Dmachined=true,-Dmachined=false"
-PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-PACKAGECONFIG[microhttpd] = "-Dmicrohttpd=true,-Dmicrohttpd=false,libmicrohttpd"
-PACKAGECONFIG[myhostname] = "-Dnss-myhostname=true,-Dnss-myhostname=false,,libnss-myhostname"
-PACKAGECONFIG[networkd] = "-Dnetworkd=true,-Dnetworkd=false"
-PACKAGECONFIG[nss] = "-Dnss-systemd=true,-Dnss-systemd=false"
-PACKAGECONFIG[nss-mymachines] = "-Dnss-mymachines=true,-Dnss-mymachines=false"
-PACKAGECONFIG[nss-resolve] = "-Dnss-resolve=true,-Dnss-resolve=false"
-PACKAGECONFIG[oomd] = "-Doomd=true,-Doomd=false"
-PACKAGECONFIG[openssl] = "-Dopenssl=true,-Dopenssl=false,openssl"
-PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}"
-PACKAGECONFIG[pcre2] = "-Dpcre2=true,-Dpcre2=false,libpcre2"
-PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false"
-# If polkit is disabled and networkd+hostnamed are in use, enabling this option and
-# using dbus-broker will allow networkd to be authorized to change the
-# hostname without acquiring additional privileges
-PACKAGECONFIG[polkit_hostnamed_fallback] = ",,,,dbus-broker,polkit"
-PACKAGECONFIG[portabled] = "-Dportabled=true,-Dportabled=false"
-PACKAGECONFIG[qrencode] = "-Dqrencode=true,-Dqrencode=false,qrencode,,qrencode"
-PACKAGECONFIG[quotacheck] = "-Dquotacheck=true,-Dquotacheck=false"
-PACKAGECONFIG[randomseed] = "-Drandomseed=true,-Drandomseed=false"
-PACKAGECONFIG[resolved] = "-Dresolve=true,-Dresolve=false"
-PACKAGECONFIG[rfkill] = "-Drfkill=true,-Drfkill=false"
-PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp"
-PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux,initscripts-sushell"
-PACKAGECONFIG[smack] = "-Dsmack=true,-Dsmack=false"
-PACKAGECONFIG[sysusers] = "-Dsysusers=true,-Dsysusers=false"
-PACKAGECONFIG[sysvinit] = "-Dsysvinit-path=${sysconfdir}/init.d -Dsysvrcnd-path=${sysconfdir},-Dsysvinit-path= -Dsysvrcnd-path=,,systemd-compat-units update-rc.d"
-# When enabled use reproducble build timestamp if set as time epoch,
-# or build time if not. When disabled, time epoch is unset.
-def build_epoch(d):
-    epoch = d.getVar('SOURCE_DATE_EPOCH') or "-1"
-    return '-Dtime-epoch=%d' % int(epoch)
-PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
-PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
-PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
-PACKAGECONFIG[usrmerge] = "-Dsplit-usr=false,-Dsplit-usr=true"
-PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
-PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
-PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
-PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
-PACKAGECONFIG[vconsole] = "-Dvconsole=true,-Dvconsole=false,,${PN}-vconsole-setup"
-PACKAGECONFIG[wheel-group] = "-Dwheel-group=true, -Dwheel-group=false"
-PACKAGECONFIG[xdg-autostart] = "-Dxdg-autostart=true,-Dxdg-autostart=false"
-# Verify keymaps on locale change
-PACKAGECONFIG[xkbcommon] = "-Dxkbcommon=true,-Dxkbcommon=false,libxkbcommon"
-PACKAGECONFIG[xz] = "-Dxz=true,-Dxz=false,xz"
-PACKAGECONFIG[zlib] = "-Dzlib=true,-Dzlib=false,zlib"
-PACKAGECONFIG[zstd] = "-Dzstd=true,-Dzstd=false,zstd"
-
-# Helper variables to clarify locations.  This mirrors the logic in systemd's
-# build system.
-rootprefix ?= "${root_prefix}"
-rootlibdir ?= "${base_libdir}"
-rootlibexecdir = "${rootprefix}/lib"
-
-# This links udev statically with systemd helper library.
-# Otherwise udev package would depend on systemd package (which has the needed shared library),
-# and always pull it into images.
-EXTRA_OEMESON += "-Dlink-udev-shared=false"
-
-EXTRA_OEMESON += "-Dnobody-user=nobody \
-                  -Dnobody-group=nobody \
-                  -Drootlibdir=${rootlibdir} \
-                  -Drootprefix=${rootprefix} \
-                  -Ddefault-locale=C \
-                  -Dmode=release \
-                  -Dsystem-alloc-uid-min=101 \
-                  -Dsystem-uid-max=999 \
-                  -Dsystem-alloc-gid-min=101 \
-                  -Dsystem-gid-max=999 \
-                  "
-
-# Hardcode target binary paths to avoid using paths from sysroot
-EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
-                  -Dkmod-path=${base_bindir}/kmod \
-                  -Dmount-path=${base_bindir}/mount \
-                  -Dquotacheck-path=${sbindir}/quotacheck \
-                  -Dquotaon-path=${sbindir}/quotaon \
-                  -Dsulogin-path=${base_sbindir}/sulogin \
-                  -Dnologin-path=${base_sbindir}/nologin \
-                  -Dumount-path=${base_bindir}/umount"
-
-do_install() {
-	meson_do_install
-	install -d ${D}/${base_sbindir}
-	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
-		# Provided by a separate recipe
-		rm ${D}${systemd_system_unitdir}/serial-getty* -f
-	fi
-
-	# Provide support for initramfs
-	[ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init
-	[ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd
-
-	install -d ${D}${sysconfdir}/udev/rules.d/
-	install -d ${D}${sysconfdir}/tmpfiles.d
-	for rule in $(find ${WORKDIR} -maxdepth 1 -type f -name "*.rules"); do
-		install -m 0644 $rule ${D}${sysconfdir}/udev/rules.d/
-	done
-
-	install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
-		install -d ${D}${sysconfdir}/init.d
-		install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd
-		sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd
-		install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_system_unitdir}d-sysv-install
-	fi
-
-	chown root:systemd-journal ${D}/${localstatedir}/log/journal
-
-	# Delete journal README, as log can be symlinked inside volatile.
-	rm -f ${D}/${localstatedir}/log/README
-
-	# journal-remote creates this at start
-	rm -rf ${D}/${localstatedir}/log/journal/remote
-
-	install -d ${D}${systemd_system_unitdir}/graphical.target.wants
-	install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
-	install -d ${D}${systemd_system_unitdir}/poweroff.target.wants
-	install -d ${D}${systemd_system_unitdir}/reboot.target.wants
-	install -d ${D}${systemd_system_unitdir}/rescue.target.wants
-
-	# Create symlinks for systemd-update-utmp-runlevel.service
-	if ${@bb.utils.contains('PACKAGECONFIG', 'utmp', 'true', 'false', d)}; then
-		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/graphical.target.wants/systemd-update-utmp-runlevel.service
-		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/multi-user.target.wants/systemd-update-utmp-runlevel.service
-		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/poweroff.target.wants/systemd-update-utmp-runlevel.service
-		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/reboot.target.wants/systemd-update-utmp-runlevel.service
-		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/rescue.target.wants/systemd-update-utmp-runlevel.service
-	fi
-
-	# this file is needed to exist if networkd is disabled but timesyncd is still in use since timesyncd checks it
-	# for existence else it fails
-	if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ]; then
-		${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf', d)}
-	fi
-	if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then
-		echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/systemd/resolve/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
-		echo 'd /run/systemd/resolve 0755 root root -' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
-		echo 'f /run/systemd/resolve/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
-		ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
-	else
-		sed -i -e "s%^L! /etc/resolv.conf.*$%L! /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf%g" ${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
-		ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
-	fi
-	if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'false', 'true', d)}; then
-		rm ${D}${exec_prefix}/lib/tmpfiles.d/x11.conf
-		rm -r ${D}${sysconfdir}/X11
-	fi
-
-	# If polkit is setup fixup permissions and ownership
-	if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then
-		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
-	fi
-
-	# If polkit is not available and a fallback was requested, install a drop-in that allows networkd to
-	# request hostname changes via DBUS without elevating its privileges
-	if ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'true', 'false', d)}; then
-		install -d ${D}${systemd_system_unitdir}/systemd-hostnamed.service.d/
-		install -m 0644 ${WORKDIR}/00-hostnamed-network-user.conf ${D}${systemd_system_unitdir}/systemd-hostnamed.service.d/
-		install -d ${D}${datadir}/dbus-1/system.d/
-		install -m 0644 ${WORKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-1/system.d/
-	fi
-
-	# create link for existing udev rules
-	ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
-
-	# duplicate udevadm for postinst script
-	install -d ${D}${libexecdir}
-	ln ${D}${base_bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm
-
-	# install default policy for presets
-	# https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
-	install -Dm 0644 ${WORKDIR}/99-default.preset ${D}${systemd_system_unitdir}-preset/99-default.preset
-
-	# add a profile fragment to disable systemd pager with busybox less
-	install -Dm 0644 ${WORKDIR}/systemd-pager.sh ${D}${sysconfdir}/profile.d/systemd-pager.sh
-}
-
-python populate_packages:prepend (){
-    systemdlibdir = d.getVar("rootlibdir")
-    do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True)
-}
-PACKAGES_DYNAMIC += "^lib(udev|systemd|nss).*"
-
-PACKAGE_BEFORE_PN = "\
-    ${PN}-gui \
-    ${PN}-vconsole-setup \
-    ${PN}-initramfs \
-    ${PN}-analyze \
-    ${PN}-kernel-install \
-    ${PN}-rpm-macros \
-    ${PN}-binfmt \
-    ${PN}-zsh-completion \
-    ${PN}-container \
-    ${PN}-journal-gatewayd \
-    ${PN}-journal-upload \
-    ${PN}-journal-remote \
-    ${PN}-extra-utils \
-    ${PN}-udev-rules \
-    udev \
-    udev-hwdb \
-"
-
-SUMMARY:${PN}-container = "Tools for containers and VMs"
-DESCRIPTION:${PN}-container = "Systemd tools to spawn and manage containers and virtual machines."
-
-SUMMARY:${PN}-journal-gatewayd = "HTTP server for journal events"
-DESCRIPTION:${PN}-journal-gatewayd = "systemd-journal-gatewayd serves journal events over the network. Clients must connect using HTTP. The server listens on port 19531 by default."
-
-SUMMARY:${PN}-journal-upload = "Send journal messages over the network"
-DESCRIPTION:${PN}-journal-upload = "systemd-journal-upload uploads journal entries to a specified URL."
-
-SUMMARY:${PN}-journal-remote = "Receive journal messages over the network"
-DESCRIPTION:${PN}-journal-remote = "systemd-journal-remote is a command to receive serialized journal events and store them to journal files."
-
-SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)} \
-                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \
-                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
-                    ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
-"
-SYSTEMD_SERVICE:${PN}-binfmt = "systemd-binfmt.service"
-
-USERADD_PACKAGES = "${PN} ${PN}-extra-utils \
-                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gateway', '', d)} \
-                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
-                    ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
-"
-GROUPADD_PARAM:${PN} = "-r systemd-journal;"
-GROUPADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '-r systemd-hostname;', '', d)}"
-USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /sbin/nologin systemd-coredump;', '', d)}"
-USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /sbin/nologin systemd-network;', '', d)}"
-USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit', '--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;', '', d)}"
-USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'resolved', '--system -d / -M --shell /sbin/nologin systemd-resolve;', '', d)}"
-USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /sbin/nologin systemd-timesync;', '', d)}"
-USERADD_PARAM:${PN}-extra-utils = "--system -d / -M --shell /sbin/nologin systemd-bus-proxy"
-USERADD_PARAM:${PN}-journal-gateway = "--system -d / -M --shell /sbin/nologin systemd-journal-gateway"
-USERADD_PARAM:${PN}-journal-remote = "--system -d / -M --shell /sbin/nologin systemd-journal-remote"
-USERADD_PARAM:${PN}-journal-upload = "--system -d / -M --shell /sbin/nologin systemd-journal-upload"
-
-FILES:${PN}-analyze = "${bindir}/systemd-analyze"
-
-FILES:${PN}-initramfs = "/init"
-RDEPENDS:${PN}-initramfs = "${PN}"
-
-FILES:${PN}-gui = "${bindir}/systemadm"
-
-FILES:${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \
-                              ${systemd_system_unitdir}/systemd-vconsole-setup.service \
-                              ${systemd_system_unitdir}/sysinit.target.wants/systemd-vconsole-setup.service"
-
-RDEPENDS:${PN}-kernel-install += "bash"
-FILES:${PN}-kernel-install = "${bindir}/kernel-install \
-                              ${sysconfdir}/kernel/ \
-                              ${exec_prefix}/lib/kernel \
-                             "
-FILES:${PN}-rpm-macros = "${exec_prefix}/lib/rpm \
-                         "
-
-FILES:${PN}-zsh-completion = "${datadir}/zsh/site-functions"
-
-FILES:${PN}-binfmt = "${sysconfdir}/binfmt.d/ \
-                      ${exec_prefix}/lib/binfmt.d \
-                      ${rootlibexecdir}/systemd/systemd-binfmt \
-                      ${systemd_system_unitdir}/proc-sys-fs-binfmt_misc.* \
-                      ${systemd_system_unitdir}/systemd-binfmt.service"
-RRECOMMENDS:${PN}-binfmt = "kernel-module-binfmt-misc"
-
-RRECOMMENDS:${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps"
-
-
-FILES:${PN}-journal-gatewayd = "${rootlibexecdir}/systemd/systemd-journal-gatewayd \
-                                ${systemd_system_unitdir}/systemd-journal-gatewayd.service \
-                                ${systemd_system_unitdir}/systemd-journal-gatewayd.socket \
-                                ${systemd_system_unitdir}/sockets.target.wants/systemd-journal-gatewayd.socket \
-                                ${datadir}/systemd/gatewayd/browse.html \
-                               "
-SYSTEMD_SERVICE:${PN}-journal-gatewayd = "systemd-journal-gatewayd.socket"
-
-FILES:${PN}-journal-upload = "${rootlibexecdir}/systemd/systemd-journal-upload \
-                              ${systemd_system_unitdir}/systemd-journal-upload.service \
-                              ${sysconfdir}/systemd/journal-upload.conf \
-                             "
-SYSTEMD_SERVICE:${PN}-journal-upload = "systemd-journal-upload.service"
-
-FILES:${PN}-journal-remote = "${rootlibexecdir}/systemd/systemd-journal-remote \
-                              ${sysconfdir}/systemd/journal-remote.conf \
-                              ${systemd_system_unitdir}/systemd-journal-remote.service \
-                              ${systemd_system_unitdir}/systemd-journal-remote.socket \
-                             "
-SYSTEMD_SERVICE:${PN}-journal-remote = "systemd-journal-remote.socket"
-
-
-FILES:${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \
-                         ${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \
-                         ${sysconfdir}/systemd/system/multi-user.target.wants/machines.target \
-                         ${base_bindir}/machinectl \
-                         ${bindir}/systemd-nspawn \
-                         ${nonarch_libdir}/systemd/import-pubring.gpg \
-                         ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.import1.busname \
-                         ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.machine1.busname \
-                         ${systemd_system_unitdir}/local-fs.target.wants/var-lib-machines.mount \
-                         ${systemd_system_unitdir}/machines.target.wants/var-lib-machines.mount \
-                         ${systemd_system_unitdir}/remote-fs.target.wants/var-lib-machines.mount \
-                         ${systemd_system_unitdir}/machine.slice \
-                         ${systemd_system_unitdir}/machines.target \
-                         ${systemd_system_unitdir}/org.freedesktop.import1.busname \
-                         ${systemd_system_unitdir}/org.freedesktop.machine1.busname \
-                         ${systemd_system_unitdir}/systemd-importd.service \
-                         ${systemd_system_unitdir}/systemd-machined.service \
-                         ${systemd_system_unitdir}/dbus-org.freedesktop.machine1.service \
-                         ${systemd_system_unitdir}/var-lib-machines.mount \
-                         ${rootlibexecdir}/systemd/systemd-import \
-                         ${rootlibexecdir}/systemd/systemd-importd \
-                         ${rootlibexecdir}/systemd/systemd-machined \
-                         ${rootlibexecdir}/systemd/systemd-pull \
-                         ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \
-                         ${exec_prefix}/lib/tmpfiles.d/README \
-                         ${systemd_system_unitdir}/systemd-nspawn@.service \
-                         ${libdir}/libnss_mymachines.so.2 \
-                         ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \
-                         ${datadir}/dbus-1/system-services/org.freedesktop.machine1.service \
-                         ${datadir}/dbus-1/system.d/org.freedesktop.import1.conf \
-                         ${datadir}/dbus-1/system.d/org.freedesktop.machine1.conf \
-                         ${datadir}/polkit-1/actions/org.freedesktop.import1.policy \
-                         ${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
-                        "
-
-# "machinectl import-tar" uses "tar --numeric-owner", not supported by busybox.
-RRECOMMENDS:${PN}-container += "\
-                         ${PN}-journal-gatewayd \
-                         ${PN}-journal-remote \
-                         ${PN}-journal-upload \
-                         kernel-module-dm-mod \
-                         kernel-module-loop \
-                         kernel-module-tun \
-                         tar \
-                        "
-
-FILES:${PN}-extra-utils = "\
-                        ${base_bindir}/systemd-escape \
-                        ${base_bindir}/systemd-inhibit \
-                        ${bindir}/systemd-detect-virt \
-                        ${bindir}/systemd-dissect \
-                        ${bindir}/systemd-path \
-                        ${bindir}/systemd-run \
-                        ${bindir}/systemd-cat \
-                        ${bindir}/systemd-delta \
-                        ${bindir}/systemd-cgls \
-                        ${bindir}/systemd-cgtop \
-                        ${bindir}/systemd-stdio-bridge \
-                        ${bindir}/systemd-sysext \
-                        ${base_bindir}/systemd-ask-password \
-                        ${base_bindir}/systemd-tty-ask-password-agent \
-                        ${systemd_system_unitdir}/systemd-ask-password-console.path \
-                        ${systemd_system_unitdir}/systemd-ask-password-console.service \
-                        ${systemd_system_unitdir}/systemd-ask-password-wall.path \
-                        ${systemd_system_unitdir}/systemd-ask-password-wall.service \
-                        ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-console.path \
-                        ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-wall.path \
-                        ${systemd_system_unitdir}/multi-user.target.wants/systemd-ask-password-wall.path \
-                        ${rootlibexecdir}/systemd/systemd-resolve-host \
-                        ${rootlibexecdir}/systemd/systemd-ac-power \
-                        ${rootlibexecdir}/systemd/systemd-activate \
-                        ${rootlibexecdir}/systemd/systemd-bus-proxyd \
-                        ${systemd_system_unitdir}/systemd-bus-proxyd.service \
-                        ${systemd_system_unitdir}/systemd-bus-proxyd.socket \
-                        ${rootlibexecdir}/systemd/systemd-socket-proxyd \
-                        ${rootlibexecdir}/systemd/systemd-reply-password \
-                        ${rootlibexecdir}/systemd/systemd-sleep \
-                        ${rootlibexecdir}/systemd/system-sleep \
-                        ${systemd_system_unitdir}/systemd-hibernate.service \
-                        ${systemd_system_unitdir}/systemd-hybrid-sleep.service \
-                        ${systemd_system_unitdir}/systemd-suspend.service \
-                        ${systemd_system_unitdir}/sleep.target \
-                        ${rootlibexecdir}/systemd/systemd-initctl \
-                        ${systemd_system_unitdir}/systemd-initctl.service \
-                        ${systemd_system_unitdir}/systemd-initctl.socket \
-                        ${systemd_system_unitdir}/sockets.target.wants/systemd-initctl.socket \
-                        ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator \
-                        ${rootlibexecdir}/systemd/systemd-cgroups-agent \
-"
-
-FILES:${PN}-udev-rules = "\
-                        ${rootlibexecdir}/udev/rules.d/70-uaccess.rules \
-                        ${rootlibexecdir}/udev/rules.d/71-seat.rules \
-                        ${rootlibexecdir}/udev/rules.d/73-seat-late.rules \
-                        ${rootlibexecdir}/udev/rules.d/99-systemd.rules \
-"
-
-CONFFILES:${PN} = "${sysconfdir}/systemd/coredump.conf \
-	${sysconfdir}/systemd/journald.conf \
-	${sysconfdir}/systemd/logind.conf \
-	${sysconfdir}/systemd/networkd.conf \
-	${sysconfdir}/systemd/pstore.conf \
-	${sysconfdir}/systemd/resolved.conf \
-	${sysconfdir}/systemd/sleep.conf \
-	${sysconfdir}/systemd/system.conf \
-	${sysconfdir}/systemd/timesyncd.conf \
-	${sysconfdir}/systemd/user.conf \
-"
-
-FILES:${PN} = " ${base_bindir}/* \
-                ${base_sbindir}/shutdown \
-                ${base_sbindir}/halt \
-                ${base_sbindir}/poweroff \
-                ${base_sbindir}/runlevel \
-                ${base_sbindir}/telinit \
-                ${base_sbindir}/resolvconf \
-                ${base_sbindir}/reboot \
-                ${base_sbindir}/init \
-                ${datadir}/dbus-1/services \
-                ${datadir}/dbus-1/system-services \
-                ${datadir}/polkit-1 \
-                ${datadir}/${BPN} \
-                ${datadir}/factory \
-                ${sysconfdir}/dbus-1/ \
-                ${sysconfdir}/modules-load.d/ \
-                ${sysconfdir}/pam.d/ \
-                ${sysconfdir}/profile.d/ \
-                ${sysconfdir}/sysctl.d/ \
-                ${sysconfdir}/systemd/ \
-                ${sysconfdir}/tmpfiles.d/ \
-                ${sysconfdir}/xdg/ \
-                ${sysconfdir}/init.d/README \
-                ${sysconfdir}/resolv-conf.systemd \
-                ${sysconfdir}/X11/xinit/xinitrc.d/* \
-                ${rootlibexecdir}/systemd/* \
-                ${libdir}/pam.d \
-                ${nonarch_libdir}/pam.d \
-                ${systemd_unitdir}/* \
-                ${base_libdir}/security/*.so \
-                /cgroup \
-                ${bindir}/systemd* \
-                ${bindir}/busctl \
-                ${bindir}/coredumpctl \
-                ${bindir}/localectl \
-                ${bindir}/hostnamectl \
-                ${bindir}/resolvectl \
-                ${bindir}/timedatectl \
-                ${bindir}/bootctl \
-                ${bindir}/oomctl \
-                ${exec_prefix}/lib/tmpfiles.d/*.conf \
-                ${exec_prefix}/lib/systemd \
-                ${exec_prefix}/lib/modules-load.d \
-                ${exec_prefix}/lib/sysctl.d \
-                ${exec_prefix}/lib/sysusers.d \
-                ${exec_prefix}/lib/environment.d \
-                ${localstatedir} \
-                ${rootlibexecdir}/modprobe.d/systemd.conf \
-                ${rootlibexecdir}/modprobe.d/README \
-                ${datadir}/dbus-1/system.d/org.freedesktop.timedate1.conf \
-                ${datadir}/dbus-1/system.d/org.freedesktop.locale1.conf \
-                ${datadir}/dbus-1/system.d/org.freedesktop.network1.conf \
-                ${datadir}/dbus-1/system.d/org.freedesktop.resolve1.conf \
-                ${datadir}/dbus-1/system.d/org.freedesktop.systemd1.conf \
-                ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '${datadir}/dbus-1/system.d/org.freedesktop.hostname1_no_polkit.conf', '', d)} \
-                ${datadir}/dbus-1/system.d/org.freedesktop.hostname1.conf \
-                ${datadir}/dbus-1/system.d/org.freedesktop.login1.conf \
-                ${datadir}/dbus-1/system.d/org.freedesktop.timesync1.conf \
-                ${datadir}/dbus-1/system.d/org.freedesktop.portable1.conf \
-                ${datadir}/dbus-1/system.d/org.freedesktop.oom1.conf \
-                ${datadir}/dbus-1/system.d/org.freedesktop.home1.conf \
-               "
-
-FILES:${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
-
-RDEPENDS:${PN} += "kmod dbus util-linux-mount util-linux-umount udev (= ${EXTENDPKGV}) systemd-udev-rules util-linux-agetty util-linux-fsck"
-RDEPENDS:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}"
-RDEPENDS:${PN} += "volatile-binds"
-
-RRECOMMENDS:${PN} += "systemd-extra-utils \
-                      udev-hwdb \
-                      e2fsprogs-e2fsck \
-                      kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 kernel-module-sch-fq-codel \
-                      os-release \
-                      systemd-conf \
-"
-
-INSANE_SKIP:${PN} += "dev-so libdir"
-INSANE_SKIP:${PN}-dbg += "libdir"
-INSANE_SKIP:${PN}-doc += " libdir"
-
-RPROVIDES:udev = "hotplug"
-
-RDEPENDS:udev-hwdb += "udev"
-
-FILES:udev += "${base_sbindir}/udevd \
-               ${rootlibexecdir}/systemd/network/99-default.link \
-               ${rootlibexecdir}/systemd/systemd-udevd \
-               ${rootlibexecdir}/udev/accelerometer \
-               ${rootlibexecdir}/udev/ata_id \
-               ${rootlibexecdir}/udev/cdrom_id \
-               ${rootlibexecdir}/udev/collect \
-               ${rootlibexecdir}/udev/dmi_memory_id \
-               ${rootlibexecdir}/udev/fido_id \
-               ${rootlibexecdir}/udev/findkeyboards \
-               ${rootlibexecdir}/udev/keyboard-force-release.sh \
-               ${rootlibexecdir}/udev/keymap \
-               ${rootlibexecdir}/udev/mtd_probe \
-               ${rootlibexecdir}/udev/scsi_id \
-               ${rootlibexecdir}/udev/v4l_id \
-               ${rootlibexecdir}/udev/keymaps \
-               ${rootlibexecdir}/udev/rules.d/50-udev-default.rules \
-               ${rootlibexecdir}/udev/rules.d/60-autosuspend.rules \
-               ${rootlibexecdir}/udev/rules.d/60-autosuspend-chromiumos.rules \
-               ${rootlibexecdir}/udev/rules.d/60-block.rules \
-               ${rootlibexecdir}/udev/rules.d/60-cdrom_id.rules \
-               ${rootlibexecdir}/udev/rules.d/60-drm.rules \
-               ${rootlibexecdir}/udev/rules.d/60-evdev.rules \
-               ${rootlibexecdir}/udev/rules.d/60-fido-id.rules \
-               ${rootlibexecdir}/udev/rules.d/60-input-id.rules \
-               ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
-               ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
-               ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
-               ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
-               ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
-               ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
-               ${rootlibexecdir}/udev/rules.d/60-serial.rules \
-               ${rootlibexecdir}/udev/rules.d/61-autosuspend-manual.rules \
-               ${rootlibexecdir}/udev/rules.d/64-btrfs.rules \
-               ${rootlibexecdir}/udev/rules.d/70-joystick.rules \
-               ${rootlibexecdir}/udev/rules.d/70-memory.rules \
-               ${rootlibexecdir}/udev/rules.d/70-mouse.rules \
-               ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \
-               ${rootlibexecdir}/udev/rules.d/70-touchpad.rules \
-               ${rootlibexecdir}/udev/rules.d/75-net-description.rules \
-               ${rootlibexecdir}/udev/rules.d/75-probe_mtd.rules \
-               ${rootlibexecdir}/udev/rules.d/78-sound-card.rules \
-               ${rootlibexecdir}/udev/rules.d/80-drivers.rules \
-               ${rootlibexecdir}/udev/rules.d/80-net-setup-link.rules \
-               ${rootlibexecdir}/udev/rules.d/81-net-dhcp.rules \
-               ${rootlibexecdir}/udev/rules.d/90-vconsole.rules \
-               ${rootlibexecdir}/udev/rules.d/README \
-               ${sysconfdir}/udev \
-               ${sysconfdir}/init.d/systemd-udevd \
-               ${systemd_system_unitdir}/*udev* \
-               ${systemd_system_unitdir}/*.wants/*udev* \
-               ${base_bindir}/systemd-hwdb \
-               ${base_bindir}/udevadm \
-               ${base_sbindir}/udevadm \
-               ${libexecdir}/${MLPREFIX}udevadm \
-               ${datadir}/bash-completion/completions/udevadm \
-               ${systemd_system_unitdir}/systemd-hwdb-update.service \
-              "
-
-FILES:udev-hwdb = "${rootlibexecdir}/udev/hwdb.d \
-                   "
-
-RCONFLICTS:${PN} = "tiny-init ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolvconf', '', d)}"
-
-INITSCRIPT_PACKAGES = "udev"
-INITSCRIPT_NAME:udev = "systemd-udevd"
-INITSCRIPT_PARAMS:udev = "start 03 S ."
-
-python __anonymous() {
-    if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
-        d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
-
-    if bb.utils.contains('PACKAGECONFIG', 'repart', True, False, d) and not bb.utils.contains('PACKAGECONFIG', 'openssl', True, False, d):
-        bb.error("PACKAGECONFIG[repart] requires PACKAGECONFIG[openssl]")
-
-    if bb.utils.contains('PACKAGECONFIG', 'homed', True, False, d) and not bb.utils.contains('PACKAGECONFIG', 'userdb openssl cryptsetup', True, False, d):
-        bb.error("PACKAGECONFIG[homed] requires PACKAGECONFIG[userdb], PACKAGECONFIG[openssl] and PACKAGECONFIG[cryptsetup]")
-}
-
-python do_warn_musl() {
-    if d.getVar('TCLIBC') == "musl":
-        bb.warn("Using systemd with musl is not recommended since it is not supported upstream and some patches are known to be problematic.")
-}
-addtask warn_musl before do_configure
-
-ALTERNATIVE:${PN} = "halt reboot shutdown poweroff runlevel ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolv-conf', '', d)}"
-
-ALTERNATIVE_TARGET[resolv-conf] = "${sysconfdir}/resolv-conf.systemd"
-ALTERNATIVE_LINK_NAME[resolv-conf] = "${sysconfdir}/resolv.conf"
-ALTERNATIVE_PRIORITY[resolv-conf] ?= "50"
-
-ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
-ALTERNATIVE_PRIORITY[halt] ?= "300"
-
-ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
-ALTERNATIVE_PRIORITY[reboot] ?= "300"
-
-ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
-ALTERNATIVE_PRIORITY[shutdown] ?= "300"
-
-ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
-ALTERNATIVE_PRIORITY[poweroff] ?= "300"
-
-ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
-ALTERNATIVE_PRIORITY[runlevel] ?= "300"
-
-pkg_postinst:${PN}:libc-glibc () {
-	sed -e '/^hosts:/s/\s*\<myhostname\>//' \
-		-e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 myhostname \3\4\5/' \
-		-i $D${sysconfdir}/nsswitch.conf
-}
-
-pkg_prerm:${PN}:libc-glibc () {
-	sed -e '/^hosts:/s/\s*\<myhostname\>//' \
-		-e '/^hosts:/s/\s*myhostname//' \
-		-i $D${sysconfdir}/nsswitch.conf
-}
-
-PACKAGE_WRITE_DEPS += "qemu-native"
-pkg_postinst:udev-hwdb () {
-	if test -n "$D"; then
-		$INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} rootlibexecdir="${rootlibexecdir}" PREFERRED_PROVIDER_udev="${PREFERRED_PROVIDER_udev}"
-	else
-		udevadm hwdb --update
-	fi
-}
-
-pkg_prerm:udev-hwdb () {
-	rm -f $D${sysconfdir}/udev/hwdb.bin
-}
diff --git a/poky/meta/recipes-core/systemd/systemd_249.5.bb b/poky/meta/recipes-core/systemd/systemd_249.5.bb
new file mode 100644
index 0000000..d87f54b
--- /dev/null
+++ b/poky/meta/recipes-core/systemd/systemd_249.5.bb
@@ -0,0 +1,789 @@
+require systemd.inc
+
+PROVIDES = "udev"
+
+PE = "1"
+
+DEPENDS = "intltool-native gperf-native libcap util-linux python3-jinja2-native"
+
+SECTION = "base/shell"
+
+inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu systemd gettext bash-completion manpages features_check
+
+# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so
+# that we don't build both udev and systemd in world builds.
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+SRC_URI += "file://touchscreen.rules \
+           file://00-create-volatile.conf \
+           ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
+           ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
+           file://init \
+           file://99-default.preset \
+           file://systemd-pager.sh \
+           file://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
+           file://0003-implment-systemd-sysv-install-for-OE.patch \
+           file://0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch \
+           file://0001-test-parse-argument-Include-signal.h.patch \
+           file://0001-meson-use-partial_dependency-to-get-include-director.patch \
+           "
+
+# patches needed by musl
+SRC_URI:append:libc-musl = " ${SRC_URI_MUSL}"
+SRC_URI_MUSL = "\
+               file://0002-don-t-use-glibc-specific-qsort_r.patch \
+               file://0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch \
+               file://0004-add-fallback-parse_printf_format-implementation.patch \
+               file://0005-src-basic-missing.h-check-for-missing-strndupa.patch \
+               file://0006-Include-netinet-if_ether.h.patch \
+               file://0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch \
+               file://0008-add-missing-FTW_-macros-for-musl.patch \
+               file://0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
+               file://0010-Use-uintmax_t-for-handling-rlim_t.patch \
+               file://0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \
+               file://0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
+               file://0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
+               file://0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
+               file://0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
+               file://0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \
+               file://0017-missing_type.h-add-__compar_d_fn_t-definition.patch \
+               file://0018-avoid-redefinition-of-prctl_mm_map-structure.patch \
+               file://0019-Handle-missing-LOCK_EX.patch \
+               file://0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch \
+               file://0021-test-json.c-define-M_PIl.patch \
+               file://0022-do-not-disable-buffer-in-writing-files.patch \
+               file://0025-Handle-__cpu_mask-usage.patch \
+               file://0026-Handle-missing-gshadow.patch \
+               file://0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch \
+               "
+
+PAM_PLUGINS = " \
+    pam-plugin-unix \
+    pam-plugin-loginuid \
+    pam-plugin-keyinit \
+"
+
+PACKAGECONFIG ??= " \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam selinux smack usrmerge polkit seccomp', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
+    backlight \
+    binfmt \
+    gshadow \
+    hibernate \
+    hostnamed \
+    idn \
+    ima \
+    kmod \
+    localed \
+    logind \
+    machined \
+    myhostname \
+    networkd \
+    nss \
+    nss-mymachines \
+    nss-resolve \
+    quotacheck \
+    randomseed \
+    resolved \
+    set-time-epoch \
+    sysusers \
+    sysvinit \
+    timedated \
+    timesyncd \
+    userdb \
+    utmp \
+    vconsole \
+    wheel-group \
+    zstd \
+"
+
+PACKAGECONFIG:remove:libc-musl = " \
+    gshadow \
+    idn \
+    localed \
+    myhostname \
+    nss \
+    nss-mymachines \
+    nss-resolve \
+    sysusers \
+    userdb \
+    utmp \
+"
+
+# https://github.com/seccomp/libseccomp/issues/347
+PACKAGECONFIG:remove:mipsarch = "seccomp"
+
+CFLAGS:append:libc-musl = " -D__UAPI_DEF_ETHHDR=0 "
+
+# Some of the dependencies are weak-style recommends - if not available at runtime,
+# systemd won't fail but the library-related feature will be skipped with a warning.
+
+# Use the upstream systemd serial-getty@.service and rely on
+# systemd-getty-generator instead of using the OE-core specific
+# systemd-serialgetty.bb - not enabled by default.
+PACKAGECONFIG[serial-getty-generator] = ""
+
+PACKAGECONFIG[acl] = "-Dacl=true,-Dacl=false,acl"
+PACKAGECONFIG[audit] = "-Daudit=true,-Daudit=false,audit"
+PACKAGECONFIG[backlight] = "-Dbacklight=true,-Dbacklight=false"
+PACKAGECONFIG[binfmt] = "-Dbinfmt=true,-Dbinfmt=false"
+PACKAGECONFIG[bzip2] = "-Dbzip2=true,-Dbzip2=false,bzip2"
+PACKAGECONFIG[cgroupv2] = "-Ddefault-hierarchy=unified,-Ddefault-hierarchy=hybrid"
+PACKAGECONFIG[coredump] = "-Dcoredump=true,-Dcoredump=false"
+PACKAGECONFIG[cryptsetup] = "-Dlibcryptsetup=true,-Dlibcryptsetup=false,cryptsetup,,cryptsetup"
+PACKAGECONFIG[tpm2] = "-Dtpm2=true,-Dtpm2=false,tpm2-tss,tpm2-tss libtss2 libtss2-tcti-device"
+PACKAGECONFIG[dbus] = "-Ddbus=true,-Ddbus=false,dbus"
+PACKAGECONFIG[efi] = "-Defi=true,-Defi=false"
+PACKAGECONFIG[gnu-efi] = "-Dgnu-efi=true -Defi-libdir=${STAGING_LIBDIR} -Defi-includedir=${STAGING_INCDIR}/efi,-Dgnu-efi=false,gnu-efi"
+PACKAGECONFIG[elfutils] = "-Delfutils=true,-Delfutils=false,elfutils"
+PACKAGECONFIG[firstboot] = "-Dfirstboot=true,-Dfirstboot=false"
+PACKAGECONFIG[repart] = "-Drepart=true,-Drepart=false"
+PACKAGECONFIG[homed] = "-Dhomed=true,-Dhomed=false"
+# Sign the journal for anti-tampering
+PACKAGECONFIG[gcrypt] = "-Dgcrypt=true,-Dgcrypt=false,libgcrypt"
+PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
+PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false"
+PACKAGECONFIG[hibernate] = "-Dhibernate=true,-Dhibernate=false"
+PACKAGECONFIG[hostnamed] = "-Dhostnamed=true,-Dhostnamed=false"
+PACKAGECONFIG[idn] = "-Didn=true,-Didn=false"
+PACKAGECONFIG[ima] = "-Dima=true,-Dima=false"
+# importd requires journal-upload/xz/zlib/bzip2/gcrypt
+PACKAGECONFIG[importd] = "-Dimportd=true,-Dimportd=false"
+# Update NAT firewall rules
+PACKAGECONFIG[iptc] = "-Dlibiptc=true,-Dlibiptc=false,iptables"
+PACKAGECONFIG[journal-upload] = "-Dlibcurl=true,-Dlibcurl=false,curl"
+PACKAGECONFIG[kmod] = "-Dkmod=true,-Dkmod=false,kmod"
+PACKAGECONFIG[ldconfig] = "-Dldconfig=true,-Dldconfig=false,,ldconfig"
+PACKAGECONFIG[libidn] = "-Dlibidn=true,-Dlibidn=false,libidn,,libidn"
+PACKAGECONFIG[libidn2] = "-Dlibidn2=true,-Dlibidn2=false,libidn2,,libidn2"
+PACKAGECONFIG[localed] = "-Dlocaled=true,-Dlocaled=false"
+PACKAGECONFIG[logind] = "-Dlogind=true,-Dlogind=false"
+PACKAGECONFIG[lz4] = "-Dlz4=true,-Dlz4=false,lz4"
+PACKAGECONFIG[machined] = "-Dmachined=true,-Dmachined=false"
+PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
+PACKAGECONFIG[microhttpd] = "-Dmicrohttpd=true,-Dmicrohttpd=false,libmicrohttpd"
+PACKAGECONFIG[myhostname] = "-Dnss-myhostname=true,-Dnss-myhostname=false,,libnss-myhostname"
+PACKAGECONFIG[networkd] = "-Dnetworkd=true,-Dnetworkd=false"
+PACKAGECONFIG[nss] = "-Dnss-systemd=true,-Dnss-systemd=false"
+PACKAGECONFIG[nss-mymachines] = "-Dnss-mymachines=true,-Dnss-mymachines=false"
+PACKAGECONFIG[nss-resolve] = "-Dnss-resolve=true,-Dnss-resolve=false"
+PACKAGECONFIG[oomd] = "-Doomd=true,-Doomd=false"
+PACKAGECONFIG[openssl] = "-Dopenssl=true,-Dopenssl=false,openssl"
+PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}"
+PACKAGECONFIG[pcre2] = "-Dpcre2=true,-Dpcre2=false,libpcre2"
+PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false"
+# If polkit is disabled and networkd+hostnamed are in use, enabling this option and
+# using dbus-broker will allow networkd to be authorized to change the
+# hostname without acquiring additional privileges
+PACKAGECONFIG[polkit_hostnamed_fallback] = ",,,,dbus-broker,polkit"
+PACKAGECONFIG[portabled] = "-Dportabled=true,-Dportabled=false"
+PACKAGECONFIG[qrencode] = "-Dqrencode=true,-Dqrencode=false,qrencode,,qrencode"
+PACKAGECONFIG[quotacheck] = "-Dquotacheck=true,-Dquotacheck=false"
+PACKAGECONFIG[randomseed] = "-Drandomseed=true,-Drandomseed=false"
+PACKAGECONFIG[resolved] = "-Dresolve=true,-Dresolve=false"
+PACKAGECONFIG[rfkill] = "-Drfkill=true,-Drfkill=false"
+PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp"
+PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux,initscripts-sushell"
+PACKAGECONFIG[smack] = "-Dsmack=true,-Dsmack=false"
+PACKAGECONFIG[sysusers] = "-Dsysusers=true,-Dsysusers=false"
+PACKAGECONFIG[sysvinit] = "-Dsysvinit-path=${sysconfdir}/init.d -Dsysvrcnd-path=${sysconfdir},-Dsysvinit-path= -Dsysvrcnd-path=,,systemd-compat-units update-rc.d"
+# When enabled use reproducble build timestamp if set as time epoch,
+# or build time if not. When disabled, time epoch is unset.
+def build_epoch(d):
+    epoch = d.getVar('SOURCE_DATE_EPOCH') or "-1"
+    return '-Dtime-epoch=%d' % int(epoch)
+PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
+PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
+PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
+PACKAGECONFIG[usrmerge] = "-Dsplit-usr=false,-Dsplit-usr=true"
+PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
+PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
+PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
+PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
+PACKAGECONFIG[vconsole] = "-Dvconsole=true,-Dvconsole=false,,${PN}-vconsole-setup"
+PACKAGECONFIG[wheel-group] = "-Dwheel-group=true, -Dwheel-group=false"
+PACKAGECONFIG[xdg-autostart] = "-Dxdg-autostart=true,-Dxdg-autostart=false"
+# Verify keymaps on locale change
+PACKAGECONFIG[xkbcommon] = "-Dxkbcommon=true,-Dxkbcommon=false,libxkbcommon"
+PACKAGECONFIG[xz] = "-Dxz=true,-Dxz=false,xz"
+PACKAGECONFIG[zlib] = "-Dzlib=true,-Dzlib=false,zlib"
+PACKAGECONFIG[zstd] = "-Dzstd=true,-Dzstd=false,zstd"
+
+# Helper variables to clarify locations.  This mirrors the logic in systemd's
+# build system.
+rootprefix ?= "${root_prefix}"
+rootlibdir ?= "${base_libdir}"
+rootlibexecdir = "${rootprefix}/lib"
+
+# This links udev statically with systemd helper library.
+# Otherwise udev package would depend on systemd package (which has the needed shared library),
+# and always pull it into images.
+EXTRA_OEMESON += "-Dlink-udev-shared=false"
+
+EXTRA_OEMESON += "-Dnobody-user=nobody \
+                  -Dnobody-group=nobody \
+                  -Drootlibdir=${rootlibdir} \
+                  -Drootprefix=${rootprefix} \
+                  -Ddefault-locale=C \
+                  -Dmode=release \
+                  -Dsystem-alloc-uid-min=101 \
+                  -Dsystem-uid-max=999 \
+                  -Dsystem-alloc-gid-min=101 \
+                  -Dsystem-gid-max=999 \
+                  "
+
+# Hardcode target binary paths to avoid using paths from sysroot
+EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
+                  -Dkmod-path=${base_bindir}/kmod \
+                  -Dmount-path=${base_bindir}/mount \
+                  -Dquotacheck-path=${sbindir}/quotacheck \
+                  -Dquotaon-path=${sbindir}/quotaon \
+                  -Dsulogin-path=${base_sbindir}/sulogin \
+                  -Dnologin-path=${base_sbindir}/nologin \
+                  -Dumount-path=${base_bindir}/umount"
+
+do_install() {
+	meson_do_install
+	install -d ${D}/${base_sbindir}
+	if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
+		# Provided by a separate recipe
+		rm ${D}${systemd_system_unitdir}/serial-getty* -f
+	fi
+
+	# Provide support for initramfs
+	[ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init
+	[ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd
+
+	install -d ${D}${sysconfdir}/udev/rules.d/
+	install -d ${D}${sysconfdir}/tmpfiles.d
+	for rule in $(find ${WORKDIR} -maxdepth 1 -type f -name "*.rules"); do
+		install -m 0644 $rule ${D}${sysconfdir}/udev/rules.d/
+	done
+
+	install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
+
+	if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
+		install -d ${D}${sysconfdir}/init.d
+		install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd
+		sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd
+		install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_system_unitdir}d-sysv-install
+	fi
+
+	chown root:systemd-journal ${D}/${localstatedir}/log/journal
+
+	# Delete journal README, as log can be symlinked inside volatile.
+	rm -f ${D}/${localstatedir}/log/README
+
+	# journal-remote creates this at start
+	rm -rf ${D}/${localstatedir}/log/journal/remote
+
+	install -d ${D}${systemd_system_unitdir}/graphical.target.wants
+	install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
+	install -d ${D}${systemd_system_unitdir}/poweroff.target.wants
+	install -d ${D}${systemd_system_unitdir}/reboot.target.wants
+	install -d ${D}${systemd_system_unitdir}/rescue.target.wants
+
+	# Create symlinks for systemd-update-utmp-runlevel.service
+	if ${@bb.utils.contains('PACKAGECONFIG', 'utmp', 'true', 'false', d)}; then
+		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/graphical.target.wants/systemd-update-utmp-runlevel.service
+		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/multi-user.target.wants/systemd-update-utmp-runlevel.service
+		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/poweroff.target.wants/systemd-update-utmp-runlevel.service
+		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/reboot.target.wants/systemd-update-utmp-runlevel.service
+		ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/rescue.target.wants/systemd-update-utmp-runlevel.service
+	fi
+
+	# this file is needed to exist if networkd is disabled but timesyncd is still in use since timesyncd checks it
+	# for existence else it fails
+	if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ]; then
+		${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf', d)}
+	fi
+	if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then
+		echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/systemd/resolve/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
+		echo 'd /run/systemd/resolve 0755 root root -' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
+		echo 'f /run/systemd/resolve/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
+		ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
+	else
+		sed -i -e "s%^L! /etc/resolv.conf.*$%L! /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf%g" ${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
+		ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
+	fi
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'false', 'true', d)}; then
+		rm ${D}${exec_prefix}/lib/tmpfiles.d/x11.conf
+		rm -r ${D}${sysconfdir}/X11
+	fi
+
+	# If polkit is setup fixup permissions and ownership
+	if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then
+		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
+	fi
+
+	# If polkit is not available and a fallback was requested, install a drop-in that allows networkd to
+	# request hostname changes via DBUS without elevating its privileges
+	if ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'true', 'false', d)}; then
+		install -d ${D}${systemd_system_unitdir}/systemd-hostnamed.service.d/
+		install -m 0644 ${WORKDIR}/00-hostnamed-network-user.conf ${D}${systemd_system_unitdir}/systemd-hostnamed.service.d/
+		install -d ${D}${datadir}/dbus-1/system.d/
+		install -m 0644 ${WORKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-1/system.d/
+	fi
+
+	# create link for existing udev rules
+	ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
+
+	# duplicate udevadm for postinst script
+	install -d ${D}${libexecdir}
+	ln ${D}${base_bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm
+
+	# install default policy for presets
+	# https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
+	install -Dm 0644 ${WORKDIR}/99-default.preset ${D}${systemd_system_unitdir}-preset/99-default.preset
+
+	# add a profile fragment to disable systemd pager with busybox less
+	install -Dm 0644 ${WORKDIR}/systemd-pager.sh ${D}${sysconfdir}/profile.d/systemd-pager.sh
+}
+
+python populate_packages:prepend (){
+    systemdlibdir = d.getVar("rootlibdir")
+    do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True)
+}
+PACKAGES_DYNAMIC += "^lib(udev|systemd|nss).*"
+
+PACKAGE_BEFORE_PN = "\
+    ${PN}-gui \
+    ${PN}-vconsole-setup \
+    ${PN}-initramfs \
+    ${PN}-analyze \
+    ${PN}-kernel-install \
+    ${PN}-rpm-macros \
+    ${PN}-binfmt \
+    ${PN}-zsh-completion \
+    ${PN}-container \
+    ${PN}-journal-gatewayd \
+    ${PN}-journal-upload \
+    ${PN}-journal-remote \
+    ${PN}-extra-utils \
+    ${PN}-udev-rules \
+    udev \
+    udev-hwdb \
+"
+
+SUMMARY:${PN}-container = "Tools for containers and VMs"
+DESCRIPTION:${PN}-container = "Systemd tools to spawn and manage containers and virtual machines."
+
+SUMMARY:${PN}-journal-gatewayd = "HTTP server for journal events"
+DESCRIPTION:${PN}-journal-gatewayd = "systemd-journal-gatewayd serves journal events over the network. Clients must connect using HTTP. The server listens on port 19531 by default."
+
+SUMMARY:${PN}-journal-upload = "Send journal messages over the network"
+DESCRIPTION:${PN}-journal-upload = "systemd-journal-upload uploads journal entries to a specified URL."
+
+SUMMARY:${PN}-journal-remote = "Receive journal messages over the network"
+DESCRIPTION:${PN}-journal-remote = "systemd-journal-remote is a command to receive serialized journal events and store them to journal files."
+
+SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)} \
+                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \
+                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
+                    ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
+"
+SYSTEMD_SERVICE:${PN}-binfmt = "systemd-binfmt.service"
+
+USERADD_PACKAGES = "${PN} ${PN}-extra-utils \
+                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gateway', '', d)} \
+                    ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
+                    ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
+"
+GROUPADD_PARAM:${PN} = "-r systemd-journal;"
+GROUPADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '-r systemd-hostname;', '', d)}"
+USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /sbin/nologin systemd-coredump;', '', d)}"
+USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /sbin/nologin systemd-network;', '', d)}"
+USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit', '--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;', '', d)}"
+USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'resolved', '--system -d / -M --shell /sbin/nologin systemd-resolve;', '', d)}"
+USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /sbin/nologin systemd-timesync;', '', d)}"
+USERADD_PARAM:${PN}-extra-utils = "--system -d / -M --shell /sbin/nologin systemd-bus-proxy"
+USERADD_PARAM:${PN}-journal-gateway = "--system -d / -M --shell /sbin/nologin systemd-journal-gateway"
+USERADD_PARAM:${PN}-journal-remote = "--system -d / -M --shell /sbin/nologin systemd-journal-remote"
+USERADD_PARAM:${PN}-journal-upload = "--system -d / -M --shell /sbin/nologin systemd-journal-upload"
+
+FILES:${PN}-analyze = "${bindir}/systemd-analyze"
+
+FILES:${PN}-initramfs = "/init"
+RDEPENDS:${PN}-initramfs = "${PN}"
+
+FILES:${PN}-gui = "${bindir}/systemadm"
+
+FILES:${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \
+                              ${systemd_system_unitdir}/systemd-vconsole-setup.service \
+                              ${systemd_system_unitdir}/sysinit.target.wants/systemd-vconsole-setup.service"
+
+RDEPENDS:${PN}-kernel-install += "bash"
+FILES:${PN}-kernel-install = "${bindir}/kernel-install \
+                              ${sysconfdir}/kernel/ \
+                              ${exec_prefix}/lib/kernel \
+                             "
+FILES:${PN}-rpm-macros = "${exec_prefix}/lib/rpm \
+                         "
+
+FILES:${PN}-zsh-completion = "${datadir}/zsh/site-functions"
+
+FILES:${PN}-binfmt = "${sysconfdir}/binfmt.d/ \
+                      ${exec_prefix}/lib/binfmt.d \
+                      ${rootlibexecdir}/systemd/systemd-binfmt \
+                      ${systemd_system_unitdir}/proc-sys-fs-binfmt_misc.* \
+                      ${systemd_system_unitdir}/systemd-binfmt.service"
+RRECOMMENDS:${PN}-binfmt = "kernel-module-binfmt-misc"
+
+RRECOMMENDS:${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps"
+
+
+FILES:${PN}-journal-gatewayd = "${rootlibexecdir}/systemd/systemd-journal-gatewayd \
+                                ${systemd_system_unitdir}/systemd-journal-gatewayd.service \
+                                ${systemd_system_unitdir}/systemd-journal-gatewayd.socket \
+                                ${systemd_system_unitdir}/sockets.target.wants/systemd-journal-gatewayd.socket \
+                                ${datadir}/systemd/gatewayd/browse.html \
+                               "
+SYSTEMD_SERVICE:${PN}-journal-gatewayd = "systemd-journal-gatewayd.socket"
+
+FILES:${PN}-journal-upload = "${rootlibexecdir}/systemd/systemd-journal-upload \
+                              ${systemd_system_unitdir}/systemd-journal-upload.service \
+                              ${sysconfdir}/systemd/journal-upload.conf \
+                             "
+SYSTEMD_SERVICE:${PN}-journal-upload = "systemd-journal-upload.service"
+
+FILES:${PN}-journal-remote = "${rootlibexecdir}/systemd/systemd-journal-remote \
+                              ${sysconfdir}/systemd/journal-remote.conf \
+                              ${systemd_system_unitdir}/systemd-journal-remote.service \
+                              ${systemd_system_unitdir}/systemd-journal-remote.socket \
+                             "
+SYSTEMD_SERVICE:${PN}-journal-remote = "systemd-journal-remote.socket"
+
+
+FILES:${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \
+                         ${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \
+                         ${sysconfdir}/systemd/system/multi-user.target.wants/machines.target \
+                         ${base_bindir}/machinectl \
+                         ${bindir}/systemd-nspawn \
+                         ${nonarch_libdir}/systemd/import-pubring.gpg \
+                         ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.import1.busname \
+                         ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.machine1.busname \
+                         ${systemd_system_unitdir}/local-fs.target.wants/var-lib-machines.mount \
+                         ${systemd_system_unitdir}/machines.target.wants/var-lib-machines.mount \
+                         ${systemd_system_unitdir}/remote-fs.target.wants/var-lib-machines.mount \
+                         ${systemd_system_unitdir}/machine.slice \
+                         ${systemd_system_unitdir}/machines.target \
+                         ${systemd_system_unitdir}/org.freedesktop.import1.busname \
+                         ${systemd_system_unitdir}/org.freedesktop.machine1.busname \
+                         ${systemd_system_unitdir}/systemd-importd.service \
+                         ${systemd_system_unitdir}/systemd-machined.service \
+                         ${systemd_system_unitdir}/dbus-org.freedesktop.machine1.service \
+                         ${systemd_system_unitdir}/var-lib-machines.mount \
+                         ${rootlibexecdir}/systemd/systemd-import \
+                         ${rootlibexecdir}/systemd/systemd-importd \
+                         ${rootlibexecdir}/systemd/systemd-machined \
+                         ${rootlibexecdir}/systemd/systemd-pull \
+                         ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \
+                         ${exec_prefix}/lib/tmpfiles.d/README \
+                         ${systemd_system_unitdir}/systemd-nspawn@.service \
+                         ${libdir}/libnss_mymachines.so.2 \
+                         ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \
+                         ${datadir}/dbus-1/system-services/org.freedesktop.machine1.service \
+                         ${datadir}/dbus-1/system.d/org.freedesktop.import1.conf \
+                         ${datadir}/dbus-1/system.d/org.freedesktop.machine1.conf \
+                         ${datadir}/polkit-1/actions/org.freedesktop.import1.policy \
+                         ${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
+                        "
+
+# "machinectl import-tar" uses "tar --numeric-owner", not supported by busybox.
+RRECOMMENDS:${PN}-container += "\
+                         ${PN}-journal-gatewayd \
+                         ${PN}-journal-remote \
+                         ${PN}-journal-upload \
+                         kernel-module-dm-mod \
+                         kernel-module-loop \
+                         kernel-module-tun \
+                         tar \
+                        "
+
+FILES:${PN}-extra-utils = "\
+                        ${base_bindir}/systemd-escape \
+                        ${base_bindir}/systemd-inhibit \
+                        ${bindir}/systemd-detect-virt \
+                        ${bindir}/systemd-dissect \
+                        ${bindir}/systemd-path \
+                        ${bindir}/systemd-run \
+                        ${bindir}/systemd-cat \
+                        ${bindir}/systemd-delta \
+                        ${bindir}/systemd-cgls \
+                        ${bindir}/systemd-cgtop \
+                        ${bindir}/systemd-stdio-bridge \
+                        ${bindir}/systemd-sysext \
+                        ${base_bindir}/systemd-ask-password \
+                        ${base_bindir}/systemd-tty-ask-password-agent \
+                        ${systemd_system_unitdir}/systemd-ask-password-console.path \
+                        ${systemd_system_unitdir}/systemd-ask-password-console.service \
+                        ${systemd_system_unitdir}/systemd-ask-password-wall.path \
+                        ${systemd_system_unitdir}/systemd-ask-password-wall.service \
+                        ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-console.path \
+                        ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-wall.path \
+                        ${systemd_system_unitdir}/multi-user.target.wants/systemd-ask-password-wall.path \
+                        ${rootlibexecdir}/systemd/systemd-resolve-host \
+                        ${rootlibexecdir}/systemd/systemd-ac-power \
+                        ${rootlibexecdir}/systemd/systemd-activate \
+                        ${rootlibexecdir}/systemd/systemd-bus-proxyd \
+                        ${systemd_system_unitdir}/systemd-bus-proxyd.service \
+                        ${systemd_system_unitdir}/systemd-bus-proxyd.socket \
+                        ${rootlibexecdir}/systemd/systemd-socket-proxyd \
+                        ${rootlibexecdir}/systemd/systemd-reply-password \
+                        ${rootlibexecdir}/systemd/systemd-sleep \
+                        ${rootlibexecdir}/systemd/system-sleep \
+                        ${systemd_system_unitdir}/systemd-hibernate.service \
+                        ${systemd_system_unitdir}/systemd-hybrid-sleep.service \
+                        ${systemd_system_unitdir}/systemd-suspend.service \
+                        ${systemd_system_unitdir}/sleep.target \
+                        ${rootlibexecdir}/systemd/systemd-initctl \
+                        ${systemd_system_unitdir}/systemd-initctl.service \
+                        ${systemd_system_unitdir}/systemd-initctl.socket \
+                        ${systemd_system_unitdir}/sockets.target.wants/systemd-initctl.socket \
+                        ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator \
+                        ${rootlibexecdir}/systemd/systemd-cgroups-agent \
+"
+
+FILES:${PN}-udev-rules = "\
+                        ${rootlibexecdir}/udev/rules.d/70-uaccess.rules \
+                        ${rootlibexecdir}/udev/rules.d/71-seat.rules \
+                        ${rootlibexecdir}/udev/rules.d/73-seat-late.rules \
+                        ${rootlibexecdir}/udev/rules.d/99-systemd.rules \
+"
+
+CONFFILES:${PN} = "${sysconfdir}/systemd/coredump.conf \
+	${sysconfdir}/systemd/journald.conf \
+	${sysconfdir}/systemd/logind.conf \
+	${sysconfdir}/systemd/networkd.conf \
+	${sysconfdir}/systemd/pstore.conf \
+	${sysconfdir}/systemd/resolved.conf \
+	${sysconfdir}/systemd/sleep.conf \
+	${sysconfdir}/systemd/system.conf \
+	${sysconfdir}/systemd/timesyncd.conf \
+	${sysconfdir}/systemd/user.conf \
+"
+
+FILES:${PN} = " ${base_bindir}/* \
+                ${base_sbindir}/shutdown \
+                ${base_sbindir}/halt \
+                ${base_sbindir}/poweroff \
+                ${base_sbindir}/runlevel \
+                ${base_sbindir}/telinit \
+                ${base_sbindir}/resolvconf \
+                ${base_sbindir}/reboot \
+                ${base_sbindir}/init \
+                ${datadir}/dbus-1/services \
+                ${datadir}/dbus-1/system-services \
+                ${datadir}/polkit-1 \
+                ${datadir}/${BPN} \
+                ${datadir}/factory \
+                ${sysconfdir}/dbus-1/ \
+                ${sysconfdir}/modules-load.d/ \
+                ${sysconfdir}/pam.d/ \
+                ${sysconfdir}/profile.d/ \
+                ${sysconfdir}/sysctl.d/ \
+                ${sysconfdir}/systemd/ \
+                ${sysconfdir}/tmpfiles.d/ \
+                ${sysconfdir}/xdg/ \
+                ${sysconfdir}/init.d/README \
+                ${sysconfdir}/resolv-conf.systemd \
+                ${sysconfdir}/X11/xinit/xinitrc.d/* \
+                ${rootlibexecdir}/systemd/* \
+                ${libdir}/pam.d \
+                ${nonarch_libdir}/pam.d \
+                ${systemd_unitdir}/* \
+                ${base_libdir}/security/*.so \
+                /cgroup \
+                ${bindir}/systemd* \
+                ${bindir}/busctl \
+                ${bindir}/coredumpctl \
+                ${bindir}/localectl \
+                ${bindir}/hostnamectl \
+                ${bindir}/resolvectl \
+                ${bindir}/timedatectl \
+                ${bindir}/bootctl \
+                ${bindir}/oomctl \
+                ${exec_prefix}/lib/tmpfiles.d/*.conf \
+                ${exec_prefix}/lib/systemd \
+                ${exec_prefix}/lib/modules-load.d \
+                ${exec_prefix}/lib/sysctl.d \
+                ${exec_prefix}/lib/sysusers.d \
+                ${exec_prefix}/lib/environment.d \
+                ${localstatedir} \
+                ${rootlibexecdir}/modprobe.d/systemd.conf \
+                ${rootlibexecdir}/modprobe.d/README \
+                ${datadir}/dbus-1/system.d/org.freedesktop.timedate1.conf \
+                ${datadir}/dbus-1/system.d/org.freedesktop.locale1.conf \
+                ${datadir}/dbus-1/system.d/org.freedesktop.network1.conf \
+                ${datadir}/dbus-1/system.d/org.freedesktop.resolve1.conf \
+                ${datadir}/dbus-1/system.d/org.freedesktop.systemd1.conf \
+                ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '${datadir}/dbus-1/system.d/org.freedesktop.hostname1_no_polkit.conf', '', d)} \
+                ${datadir}/dbus-1/system.d/org.freedesktop.hostname1.conf \
+                ${datadir}/dbus-1/system.d/org.freedesktop.login1.conf \
+                ${datadir}/dbus-1/system.d/org.freedesktop.timesync1.conf \
+                ${datadir}/dbus-1/system.d/org.freedesktop.portable1.conf \
+                ${datadir}/dbus-1/system.d/org.freedesktop.oom1.conf \
+                ${datadir}/dbus-1/system.d/org.freedesktop.home1.conf \
+               "
+
+FILES:${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
+
+RDEPENDS:${PN} += "kmod dbus util-linux-mount util-linux-umount udev (= ${EXTENDPKGV}) systemd-udev-rules util-linux-agetty util-linux-fsck"
+RDEPENDS:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}"
+RDEPENDS:${PN} += "volatile-binds"
+
+RRECOMMENDS:${PN} += "systemd-extra-utils \
+                      udev-hwdb \
+                      e2fsprogs-e2fsck \
+                      kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 kernel-module-sch-fq-codel \
+                      os-release \
+                      systemd-conf \
+"
+
+INSANE_SKIP:${PN} += "dev-so libdir"
+INSANE_SKIP:${PN}-dbg += "libdir"
+INSANE_SKIP:${PN}-doc += " libdir"
+
+RPROVIDES:udev = "hotplug"
+
+RDEPENDS:udev-hwdb += "udev"
+
+FILES:udev += "${base_sbindir}/udevd \
+               ${rootlibexecdir}/systemd/network/99-default.link \
+               ${rootlibexecdir}/systemd/systemd-udevd \
+               ${rootlibexecdir}/udev/accelerometer \
+               ${rootlibexecdir}/udev/ata_id \
+               ${rootlibexecdir}/udev/cdrom_id \
+               ${rootlibexecdir}/udev/collect \
+               ${rootlibexecdir}/udev/dmi_memory_id \
+               ${rootlibexecdir}/udev/fido_id \
+               ${rootlibexecdir}/udev/findkeyboards \
+               ${rootlibexecdir}/udev/keyboard-force-release.sh \
+               ${rootlibexecdir}/udev/keymap \
+               ${rootlibexecdir}/udev/mtd_probe \
+               ${rootlibexecdir}/udev/scsi_id \
+               ${rootlibexecdir}/udev/v4l_id \
+               ${rootlibexecdir}/udev/keymaps \
+               ${rootlibexecdir}/udev/rules.d/50-udev-default.rules \
+               ${rootlibexecdir}/udev/rules.d/60-autosuspend.rules \
+               ${rootlibexecdir}/udev/rules.d/60-autosuspend-chromiumos.rules \
+               ${rootlibexecdir}/udev/rules.d/60-block.rules \
+               ${rootlibexecdir}/udev/rules.d/60-cdrom_id.rules \
+               ${rootlibexecdir}/udev/rules.d/60-drm.rules \
+               ${rootlibexecdir}/udev/rules.d/60-evdev.rules \
+               ${rootlibexecdir}/udev/rules.d/60-fido-id.rules \
+               ${rootlibexecdir}/udev/rules.d/60-input-id.rules \
+               ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
+               ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
+               ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
+               ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
+               ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
+               ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
+               ${rootlibexecdir}/udev/rules.d/60-serial.rules \
+               ${rootlibexecdir}/udev/rules.d/61-autosuspend-manual.rules \
+               ${rootlibexecdir}/udev/rules.d/64-btrfs.rules \
+               ${rootlibexecdir}/udev/rules.d/70-joystick.rules \
+               ${rootlibexecdir}/udev/rules.d/70-memory.rules \
+               ${rootlibexecdir}/udev/rules.d/70-mouse.rules \
+               ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \
+               ${rootlibexecdir}/udev/rules.d/70-touchpad.rules \
+               ${rootlibexecdir}/udev/rules.d/75-net-description.rules \
+               ${rootlibexecdir}/udev/rules.d/75-probe_mtd.rules \
+               ${rootlibexecdir}/udev/rules.d/78-sound-card.rules \
+               ${rootlibexecdir}/udev/rules.d/80-drivers.rules \
+               ${rootlibexecdir}/udev/rules.d/80-net-setup-link.rules \
+               ${rootlibexecdir}/udev/rules.d/81-net-dhcp.rules \
+               ${rootlibexecdir}/udev/rules.d/90-vconsole.rules \
+               ${rootlibexecdir}/udev/rules.d/README \
+               ${sysconfdir}/udev \
+               ${sysconfdir}/init.d/systemd-udevd \
+               ${systemd_system_unitdir}/*udev* \
+               ${systemd_system_unitdir}/*.wants/*udev* \
+               ${base_bindir}/systemd-hwdb \
+               ${base_bindir}/udevadm \
+               ${base_sbindir}/udevadm \
+               ${libexecdir}/${MLPREFIX}udevadm \
+               ${datadir}/bash-completion/completions/udevadm \
+               ${systemd_system_unitdir}/systemd-hwdb-update.service \
+              "
+
+FILES:udev-hwdb = "${rootlibexecdir}/udev/hwdb.d \
+                   "
+
+RCONFLICTS:${PN} = "tiny-init ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolvconf', '', d)}"
+
+INITSCRIPT_PACKAGES = "udev"
+INITSCRIPT_NAME:udev = "systemd-udevd"
+INITSCRIPT_PARAMS:udev = "start 03 S ."
+
+python __anonymous() {
+    if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
+        d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
+
+    if bb.utils.contains('PACKAGECONFIG', 'repart', True, False, d) and not bb.utils.contains('PACKAGECONFIG', 'openssl', True, False, d):
+        bb.error("PACKAGECONFIG[repart] requires PACKAGECONFIG[openssl]")
+
+    if bb.utils.contains('PACKAGECONFIG', 'homed', True, False, d) and not bb.utils.contains('PACKAGECONFIG', 'userdb openssl cryptsetup', True, False, d):
+        bb.error("PACKAGECONFIG[homed] requires PACKAGECONFIG[userdb], PACKAGECONFIG[openssl] and PACKAGECONFIG[cryptsetup]")
+}
+
+python do_warn_musl() {
+    if d.getVar('TCLIBC') == "musl":
+        bb.warn("Using systemd with musl is not recommended since it is not supported upstream and some patches are known to be problematic.")
+}
+addtask warn_musl before do_configure
+
+ALTERNATIVE:${PN} = "halt reboot shutdown poweroff runlevel ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolv-conf', '', d)}"
+
+ALTERNATIVE_TARGET[resolv-conf] = "${sysconfdir}/resolv-conf.systemd"
+ALTERNATIVE_LINK_NAME[resolv-conf] = "${sysconfdir}/resolv.conf"
+ALTERNATIVE_PRIORITY[resolv-conf] ?= "50"
+
+ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
+ALTERNATIVE_PRIORITY[halt] ?= "300"
+
+ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
+ALTERNATIVE_PRIORITY[reboot] ?= "300"
+
+ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
+ALTERNATIVE_PRIORITY[shutdown] ?= "300"
+
+ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
+ALTERNATIVE_PRIORITY[poweroff] ?= "300"
+
+ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
+ALTERNATIVE_PRIORITY[runlevel] ?= "300"
+
+pkg_postinst:${PN}:libc-glibc () {
+	sed -e '/^hosts:/s/\s*\<myhostname\>//' \
+		-e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 myhostname \3\4\5/' \
+		-i $D${sysconfdir}/nsswitch.conf
+}
+
+pkg_prerm:${PN}:libc-glibc () {
+	sed -e '/^hosts:/s/\s*\<myhostname\>//' \
+		-e '/^hosts:/s/\s*myhostname//' \
+		-i $D${sysconfdir}/nsswitch.conf
+}
+
+PACKAGE_WRITE_DEPS += "qemu-native"
+pkg_postinst:udev-hwdb () {
+	if test -n "$D"; then
+		$INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} rootlibexecdir="${rootlibexecdir}" PREFERRED_PROVIDER_udev="${PREFERRED_PROVIDER_udev}"
+	else
+		udevadm hwdb --update
+	fi
+}
+
+pkg_prerm:udev-hwdb () {
+	rm -f $D${sysconfdir}/udev/hwdb.bin
+}
diff --git a/poky/meta/recipes-core/sysvinit/sysvinit_2.99.bb b/poky/meta/recipes-core/sysvinit/sysvinit_2.99.bb
deleted file mode 100644
index 9ba9652..0000000
--- a/poky/meta/recipes-core/sysvinit/sysvinit_2.99.bb
+++ /dev/null
@@ -1,117 +0,0 @@
-SUMMARY = "System-V like init"
-DESCRIPTION = "This package is required to boot in most configurations.  It provides the /sbin/init program.  This is the first process started on boot, and the last process terminated before the system halts."
-HOMEPAGE = "http://savannah.nongnu.org/projects/sysvinit/"
-SECTION = "base"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
-                    file://COPYRIGHT;endline=15;md5=a1d3b3526501d3546d530bbe6ab6cdbe \
-                    "
-
-RDEPENDS:${PN} = "${PN}-inittab"
-
-SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.xz \
-           file://install.patch \
-           file://crypt-lib.patch \
-           file://pidof-add-m-option.patch \
-           file://realpath.patch \
-           file://0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch \
-           file://rcS-default \
-           file://rc \
-           file://rcS \
-           file://bootlogd.init \
-           file://01_bootlogd \
-           "
-SRC_URI[sha256sum] = "b05c3677bb698afe64c997968b00c49b2a9bd320ce963523230ee7ea41197757"
-
-S = "${WORKDIR}/sysvinit-${PV}"
-
-inherit update-alternatives features_check
-DEPENDS:append = " update-rc.d-native base-passwd virtual/crypt"
-do_package_setscene[depends] = "${MLPREFIX}base-passwd:do_populate_sysroot"
-
-PACKAGECONFIG[psplash-text-updates] = ",,"
-
-REQUIRED_DISTRO_FEATURES = "sysvinit"
-
-ALTERNATIVE:${PN} = "init mountpoint halt reboot runlevel shutdown poweroff last lastb mesg utmpdump wall"
-
-ALTERNATIVE_PRIORITY = "200"
-
-ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init"
-ALTERNATIVE_PRIORITY[init] = "50"
-
-ALTERNATIVE_LINK_NAME[mountpoint] = "${base_bindir}/mountpoint"
-ALTERNATIVE_PRIORITY[mountpoint] = "20"
-
-ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
-ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
-ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
-ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
-ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
-
-ALTERNATIVE:${PN}-pidof = "pidof"
-ALTERNATIVE_LINK_NAME[pidof] = "${base_bindir}/pidof"
-
-ALTERNATIVE:${PN}-sulogin = "sulogin"
-ALTERNATIVE_LINK_NAME[sulogin] = "${base_sbindir}/sulogin"
-
-ALTERNATIVE:${PN}-doc = "mountpoint.1 last.1 lastb.1 mesg.1 wall.1 sulogin.8 utmpdump.1"
-
-ALTERNATIVE_LINK_NAME[last.1] = "${mandir}/man1/last.1"
-ALTERNATIVE_LINK_NAME[lastb.1] = "${mandir}/man1/lastb.1"
-ALTERNATIVE_LINK_NAME[mesg.1] = "${mandir}/man1/mesg.1"
-ALTERNATIVE_LINK_NAME[mountpoint.1] = "${mandir}/man1/mountpoint.1"
-ALTERNATIVE_LINK_NAME[sulogin.8] = "${mandir}/man8/sulogin.8"
-ALTERNATIVE_LINK_NAME[utmpdump.1] = "${mandir}/man1/utmpdump.1"
-ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1"
-
-PACKAGES =+ "sysvinit-pidof sysvinit-sulogin"
-FILES:${PN} += "${base_sbindir}/* ${base_bindir}/*"
-FILES:sysvinit-pidof = "${base_bindir}/pidof.sysvinit ${base_sbindir}/killall5"
-FILES:sysvinit-sulogin = "${base_sbindir}/sulogin.sysvinit"
-
-RDEPENDS:${PN} += "sysvinit-pidof initd-functions base-passwd"
-
-CFLAGS:prepend = "-D_GNU_SOURCE "
-export LCRYPT = "-lcrypt"
-EXTRA_OEMAKE += "'base_bindir=${base_bindir}' \
-		 'base_sbindir=${base_sbindir}' \
-		 'bindir=${bindir}' \
-		 'sbindir=${sbindir}' \
-		 'sysconfdir=${sysconfdir}' \
-		 'includedir=${includedir}' \
-		 'mandir=${mandir}' \
-                 MNTPOINT=yes"
-
-do_install () {
-	oe_runmake 'ROOT=${D}' install
-
-	install -d ${D}${sysconfdir} \
-		   ${D}${sysconfdir}/default \
-		   ${D}${sysconfdir}/init.d
-	for level in S 0 1 2 3 4 5 6; do
-		install -d ${D}${sysconfdir}/rc$level.d
-	done
-
-	sed -e \
-		's:#PSPLASH_TEXT#:${@bb.utils.contains("PACKAGECONFIG","psplash-text-updates","yes","no", d)}:g' \
-		${WORKDIR}/rcS-default > ${D}${sysconfdir}/default/rcS
-	chmod 0644 ${D}${sysconfdir}/default/rcS
-	install -m 0755    ${WORKDIR}/rc		${D}${sysconfdir}/init.d
-	install -m 0755    ${WORKDIR}/rcS		${D}${sysconfdir}/init.d
-	install -m 0755    ${WORKDIR}/bootlogd.init     ${D}${sysconfdir}/init.d/bootlogd
-	ln -sf bootlogd ${D}${sysconfdir}/init.d/stop-bootlogd
-
-	update-rc.d -r ${D} bootlogd start 07 S .
-	update-rc.d -r ${D} stop-bootlogd start 99 2 3 4 5 .
-
-	install -d ${D}${sysconfdir}/default/volatiles
-	install -m 0644 ${WORKDIR}/01_bootlogd ${D}${sysconfdir}/default/volatiles
-
-	chown root:shutdown ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown
-	chmod o-x,u+s ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown
-
-        # Already provided by e2fsprogs; sysvinit's version is a copy from there
-        rm ${D}${base_sbindir}/logsave
-        rm ${D}${mandir}/man8/logsave.8
-}
diff --git a/poky/meta/recipes-core/sysvinit/sysvinit_3.00.bb b/poky/meta/recipes-core/sysvinit/sysvinit_3.00.bb
new file mode 100644
index 0000000..2649447
--- /dev/null
+++ b/poky/meta/recipes-core/sysvinit/sysvinit_3.00.bb
@@ -0,0 +1,117 @@
+SUMMARY = "System-V like init"
+DESCRIPTION = "This package is required to boot in most configurations.  It provides the /sbin/init program.  This is the first process started on boot, and the last process terminated before the system halts."
+HOMEPAGE = "http://savannah.nongnu.org/projects/sysvinit/"
+SECTION = "base"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+                    file://COPYRIGHT;endline=15;md5=a1d3b3526501d3546d530bbe6ab6cdbe \
+                    "
+
+RDEPENDS:${PN} = "${PN}-inittab"
+
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.xz \
+           file://install.patch \
+           file://crypt-lib.patch \
+           file://pidof-add-m-option.patch \
+           file://realpath.patch \
+           file://0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch \
+           file://rcS-default \
+           file://rc \
+           file://rcS \
+           file://bootlogd.init \
+           file://01_bootlogd \
+           "
+SRC_URI[sha256sum] = "ed6bc20adb6735389841e7d3eb8650fa750c76af20bf4ed73b1330a4d4c14017"
+
+S = "${WORKDIR}/sysvinit-${PV}"
+
+inherit update-alternatives features_check
+DEPENDS:append = " update-rc.d-native base-passwd virtual/crypt"
+do_package_setscene[depends] = "${MLPREFIX}base-passwd:do_populate_sysroot"
+
+PACKAGECONFIG[psplash-text-updates] = ",,"
+
+REQUIRED_DISTRO_FEATURES = "sysvinit"
+
+ALTERNATIVE:${PN} = "init mountpoint halt reboot runlevel shutdown poweroff last lastb mesg utmpdump wall"
+
+ALTERNATIVE_PRIORITY = "200"
+
+ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init"
+ALTERNATIVE_PRIORITY[init] = "50"
+
+ALTERNATIVE_LINK_NAME[mountpoint] = "${base_bindir}/mountpoint"
+ALTERNATIVE_PRIORITY[mountpoint] = "20"
+
+ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
+ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
+ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
+ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
+ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
+
+ALTERNATIVE:${PN}-pidof = "pidof"
+ALTERNATIVE_LINK_NAME[pidof] = "${base_bindir}/pidof"
+
+ALTERNATIVE:${PN}-sulogin = "sulogin"
+ALTERNATIVE_LINK_NAME[sulogin] = "${base_sbindir}/sulogin"
+
+ALTERNATIVE:${PN}-doc = "mountpoint.1 last.1 lastb.1 mesg.1 wall.1 sulogin.8 utmpdump.1"
+
+ALTERNATIVE_LINK_NAME[last.1] = "${mandir}/man1/last.1"
+ALTERNATIVE_LINK_NAME[lastb.1] = "${mandir}/man1/lastb.1"
+ALTERNATIVE_LINK_NAME[mesg.1] = "${mandir}/man1/mesg.1"
+ALTERNATIVE_LINK_NAME[mountpoint.1] = "${mandir}/man1/mountpoint.1"
+ALTERNATIVE_LINK_NAME[sulogin.8] = "${mandir}/man8/sulogin.8"
+ALTERNATIVE_LINK_NAME[utmpdump.1] = "${mandir}/man1/utmpdump.1"
+ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1"
+
+PACKAGES =+ "sysvinit-pidof sysvinit-sulogin"
+FILES:${PN} += "${base_sbindir}/* ${base_bindir}/*"
+FILES:sysvinit-pidof = "${base_bindir}/pidof.sysvinit ${base_sbindir}/killall5"
+FILES:sysvinit-sulogin = "${base_sbindir}/sulogin.sysvinit"
+
+RDEPENDS:${PN} += "sysvinit-pidof initd-functions base-passwd"
+
+CFLAGS:prepend = "-D_GNU_SOURCE "
+export LCRYPT = "-lcrypt"
+EXTRA_OEMAKE += "'base_bindir=${base_bindir}' \
+		 'base_sbindir=${base_sbindir}' \
+		 'bindir=${bindir}' \
+		 'sbindir=${sbindir}' \
+		 'sysconfdir=${sysconfdir}' \
+		 'includedir=${includedir}' \
+		 'mandir=${mandir}' \
+                 MNTPOINT=yes"
+
+do_install () {
+	oe_runmake 'ROOT=${D}' install
+
+	install -d ${D}${sysconfdir} \
+		   ${D}${sysconfdir}/default \
+		   ${D}${sysconfdir}/init.d
+	for level in S 0 1 2 3 4 5 6; do
+		install -d ${D}${sysconfdir}/rc$level.d
+	done
+
+	sed -e \
+		's:#PSPLASH_TEXT#:${@bb.utils.contains("PACKAGECONFIG","psplash-text-updates","yes","no", d)}:g' \
+		${WORKDIR}/rcS-default > ${D}${sysconfdir}/default/rcS
+	chmod 0644 ${D}${sysconfdir}/default/rcS
+	install -m 0755    ${WORKDIR}/rc		${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/rcS		${D}${sysconfdir}/init.d
+	install -m 0755    ${WORKDIR}/bootlogd.init     ${D}${sysconfdir}/init.d/bootlogd
+	ln -sf bootlogd ${D}${sysconfdir}/init.d/stop-bootlogd
+
+	update-rc.d -r ${D} bootlogd start 07 S .
+	update-rc.d -r ${D} stop-bootlogd start 99 2 3 4 5 .
+
+	install -d ${D}${sysconfdir}/default/volatiles
+	install -m 0644 ${WORKDIR}/01_bootlogd ${D}${sysconfdir}/default/volatiles
+
+	chown root:shutdown ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown
+	chmod o-x,u+s ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown
+
+        # Already provided by e2fsprogs; sysvinit's version is a copy from there
+        rm ${D}${base_sbindir}/logsave
+        rm ${D}${mandir}/man8/logsave.8
+}
diff --git a/poky/meta/recipes-core/volatile-binds/files/mount-copybind b/poky/meta/recipes-core/volatile-binds/files/mount-copybind
index e32e675..aad022c 100755
--- a/poky/meta/recipes-core/volatile-binds/files/mount-copybind
+++ b/poky/meta/recipes-core/volatile-binds/files/mount-copybind
@@ -31,6 +31,13 @@
     else
         specdir_existed=no
         mkdir "$spec"
+        # If the $spec directory is created we need to take care that
+        # the selinux context is correct
+        if command -v selinuxenabled > /dev/null 2>&1; then
+            if selinuxenabled; then
+                restorecon "$spec"
+            fi
+        fi
     fi
 
     # Fast version of calculating `dirname ${spec}`/.`basename ${spec}`-work
@@ -39,13 +46,24 @@
 
     # Try to mount using overlay, which is must faster than copying files.
     # If that fails, fall back to slower copy.
-    if ! mount -t overlay overlay -olowerdir="$mountpoint",upperdir="$spec",workdir="$overlay_workdir" "$mountpoint" > /dev/null 2>&1; then
+    if command -v selinuxenabled > /dev/null 2>&1; then
+        if selinuxenabled; then
+            mountcontext=",rootcontext=$(matchpathcon -n $mountpoint)"
+        fi
+    fi
+    if ! mount -t overlay overlay -olowerdir="$mountpoint",upperdir="$spec",workdir="$overlay_workdir""$mountcontext" "$mountpoint" > /dev/null 2>&1; then
 
         if [ "$specdir_existed" != "yes" ]; then
             cp -aPR "$mountpoint"/. "$spec/"
         fi
 
         mount -o "bind$options" "$spec" "$mountpoint"
+        # restore the selinux context.
+        if command -v selinuxenabled > /dev/null 2>&1; then
+            if selinuxenabled; then
+                restorecon -R "$mountpoint"
+            fi
+        fi
     fi
 elif [ -f "$mountpoint" ]; then
     if [ ! -f "$spec" ]; then
@@ -53,4 +71,10 @@
     fi
 
     mount -o "bind$options" "$spec" "$mountpoint"
+    # restore the selinux context.
+    if command -v selinuxenabled > /dev/null 2>&1; then
+        if selinuxenabled; then
+            restorecon -R "$mountpoint"
+        fi
+    fi
 fi
diff --git a/poky/meta/recipes-devtools/bison/bison/0001-Use-mapped-file-name-for-symbols.patch b/poky/meta/recipes-devtools/bison/bison/0001-Use-mapped-file-name-for-symbols.patch
deleted file mode 100644
index 568ee4d..0000000
--- a/poky/meta/recipes-devtools/bison/bison/0001-Use-mapped-file-name-for-symbols.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 2a3db4e3b8d33bad5577c2fcfe124ee7a202ef4f Mon Sep 17 00:00:00 2001
-From: Joshua Watt <JPEWhacker@gmail.com>
-Date: Mon, 15 Feb 2021 20:39:57 -0600
-Subject: [PATCH] Use mapped file name for symbols
-
-Applies the file name mapping before exporting it as a symbol. This
-allows the symbols to correctly respect the --file-prefix-map command
-line option.
-
-Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
-Upstream-Status: Submitted [https://lists.gnu.org/archive/html/bison-patches/2021-02/msg00014.html]
----
- src/muscle-tab.c | 4 +++-
- src/output.c     | 8 ++++++--
- 2 files changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/src/muscle-tab.c b/src/muscle-tab.c
-index b610d0b8..3e7657ca 100644
---- a/src/muscle-tab.c
-+++ b/src/muscle-tab.c
-@@ -204,8 +204,10 @@ static void
- muscle_syncline_grow (char const *key, location loc)
- {
-   obstack_printf (&muscle_obstack, "]b4_syncline(%d, ", loc.start.line);
-+  char *f = map_file_name (loc.start.file);
-   obstack_quote (&muscle_obstack,
--                 quotearg_style (c_quoting_style, loc.start.file));
-+                 quotearg_style (c_quoting_style, f));
-+  free (f);
-   obstack_sgrow (&muscle_obstack, ")dnl\n[");
-   char const *extension = obstack_finish0 (&muscle_obstack);
-   muscle_grow (key, extension, "", "");
-diff --git a/src/output.c b/src/output.c
-index 391d8e65..34dbc671 100644
---- a/src/output.c
-+++ b/src/output.c
-@@ -531,7 +531,9 @@ user_actions_output (FILE *out)
-           {
-             fprintf (out, "b4_syncline(%d, ",
-                      rules[r].action_loc.start.line);
--            string_output (out, rules[r].action_loc.start.file);
-+            char *f = map_file_name (rules[r].action_loc.start.file);
-+            string_output (out, f);
-+            free(f);
-             fprintf (out, ")dnl\n");
-           }
-         fprintf (out, "[%*s%s]],\n[[",
-@@ -629,8 +631,10 @@ prepare_symbol_definitions (void)
- 
-           if (p->code)
-             {
-+              char *f = map_file_name (p->location.start.file);
-               SET_KEY2 (pname, "file");
--              MUSCLE_INSERT_C_STRING (key, p->location.start.file);
-+              MUSCLE_INSERT_C_STRING (key, f);
-+              free (f);
- 
-               SET_KEY2 (pname, "line");
-               MUSCLE_INSERT_INT (key, p->location.start.line);
--- 
-2.30.0
-
diff --git a/poky/meta/recipes-devtools/bison/bison_3.7.6.bb b/poky/meta/recipes-devtools/bison/bison_3.7.6.bb
deleted file mode 100644
index c85ae04..0000000
--- a/poky/meta/recipes-devtools/bison/bison_3.7.6.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "GNU Project parser generator (yacc replacement)"
-DESCRIPTION = "Bison is a general-purpose parser generator that converts an annotated context-free grammar into \
-an LALR(1) or GLR parser for that grammar.  Bison is upward compatible with Yacc: all properly-written Yacc \
-grammars ought to work with Bison with no change. Anyone familiar with Yacc should be able to use Bison with \
-little trouble."
-HOMEPAGE = "http://www.gnu.org/software/bison/"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
-SECTION = "devel"
-DEPENDS = "bison-native flex-native"
-
-SRC_URI = "${GNU_MIRROR}/bison/bison-${PV}.tar.xz \
-           file://add-with-bisonlocaledir.patch \
-           file://0001-Use-mapped-file-name-for-symbols.patch \
-           "
-SRC_URI[sha256sum] = "67d68ce1e22192050525643fc0a7a22297576682bef6a5c51446903f5aeef3cf"
-
-inherit autotools gettext texinfo
-
-# No point in hardcoding path to m4, just use PATH
-CACHED_CONFIGUREVARS = "ac_cv_path_M4=m4"
-
-PACKAGECONFIG ??= "readline ${@ 'textstyle' if d.getVar('USE_NLS') == 'yes' else ''}"
-PACKAGECONFIG:class-native ??= ""
-
-# Make readline and textstyle optional. There are recipie for these, but leave them
-# disabled for the native recipe. This prevents host contamination of the native tool.
-PACKAGECONFIG[readline] = "--with-libreadline-prefix,--without-libreadline-prefix,readline"
-PACKAGECONFIG[textstyle] = "--with-libtextstyle-prefix,--without-libtextstyle-prefix,gettext"
-
-# Include the cached configure variables, configure is really good at finding
-# libreadline, even if we don't want it.
-CACHED_CONFIGUREVARS += "${@bb.utils.contains('PACKAGECONFIG', 'readline', '', ' \
-                           ac_cv_header_readline_history_h=no \
-                           ac_cv_header_readline_readline_h=no \
-                           gl_cv_lib_readline=no', d)}"
-
-# The automatic m4 path detection gets confused, so force the right value
-acpaths = "-I ./m4"
-
-do_compile:prepend() {
-	for i in mfcalc calc++ rpcalc; do mkdir -p ${B}/examples/$i; done
-}
-
-do_install:append:class-native() {
-	create_wrapper ${D}/${bindir}/bison \
-		BISON_PKGDATADIR=${STAGING_DATADIR_NATIVE}/bison
-}
-do_install:append:class-nativesdk() {
-	create_wrapper ${D}/${bindir}/bison \
-		BISON_PKGDATADIR=${datadir}/bison
-}
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/bison/bison_3.8.2.bb b/poky/meta/recipes-devtools/bison/bison_3.8.2.bb
new file mode 100644
index 0000000..58395c3
--- /dev/null
+++ b/poky/meta/recipes-devtools/bison/bison_3.8.2.bb
@@ -0,0 +1,54 @@
+SUMMARY = "GNU Project parser generator (yacc replacement)"
+DESCRIPTION = "Bison is a general-purpose parser generator that converts an annotated context-free grammar into \
+an LALR(1) or GLR parser for that grammar.  Bison is upward compatible with Yacc: all properly-written Yacc \
+grammars ought to work with Bison with no change. Anyone familiar with Yacc should be able to use Bison with \
+little trouble."
+HOMEPAGE = "http://www.gnu.org/software/bison/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+SECTION = "devel"
+DEPENDS = "bison-native flex-native"
+
+SRC_URI = "${GNU_MIRROR}/bison/bison-${PV}.tar.xz \
+           file://add-with-bisonlocaledir.patch \
+           "
+SRC_URI[sha256sum] = "9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2"
+
+inherit autotools gettext texinfo
+
+# No point in hardcoding path to m4, just use PATH
+CACHED_CONFIGUREVARS = "ac_cv_path_M4=m4"
+
+PACKAGECONFIG ??= "readline ${@ 'textstyle' if d.getVar('USE_NLS') == 'yes' else ''}"
+PACKAGECONFIG:class-native ??= ""
+
+# Make readline and textstyle optional. There are recipie for these, but leave them
+# disabled for the native recipe. This prevents host contamination of the native tool.
+PACKAGECONFIG[readline] = "--with-libreadline-prefix,--without-libreadline-prefix,readline"
+PACKAGECONFIG[textstyle] = "--with-libtextstyle-prefix,--without-libtextstyle-prefix,gettext"
+
+# Include the cached configure variables, configure is really good at finding
+# libreadline, even if we don't want it.
+CACHED_CONFIGUREVARS += "${@bb.utils.contains('PACKAGECONFIG', 'readline', '', ' \
+                           ac_cv_header_readline_history_h=no \
+                           ac_cv_header_readline_readline_h=no \
+                           gl_cv_lib_readline=no', d)} \
+                         ${@bb.utils.contains('PACKAGECONFIG', 'textstyle', '', ' \
+                           ac_cv_libtextstyle=no', d)}"
+
+# The automatic m4 path detection gets confused, so force the right value
+acpaths = "-I ./m4"
+
+do_compile:prepend() {
+	for i in mfcalc calc++ rpcalc; do mkdir -p ${B}/examples/$i; done
+}
+
+do_install:append:class-native() {
+	create_wrapper ${D}/${bindir}/bison \
+		BISON_PKGDATADIR=${STAGING_DATADIR_NATIVE}/bison
+}
+do_install:append:class-nativesdk() {
+	create_wrapper ${D}/${bindir}/bison \
+		BISON_PKGDATADIR=${datadir}/bison
+}
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb b/poky/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb
index 974faa3..c24613b 100644
--- a/poky/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb
+++ b/poky/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb
@@ -99,6 +99,10 @@
 S = "${WORKDIR}/git"
 SRCREV = "868a2afab9da34f32c007d773b77253c93104636"
 
+# remove at next version upgrade or when output changes
+PR = "r1"
+HASHEQUIV_HASH_VERSION .= ".1"
+
 inherit systemd update-rc.d python3native update-alternatives
 
 ALTERNATIVE:${PN} = "bootchartd"
@@ -131,7 +135,7 @@
     export PKGLIBDIR="${base_libdir}/bootchart"
     export SYSTEMD_UNIT_DIR="${systemd_system_unitdir}"
 
-    oe_runmake install
+    oe_runmake install NO_PYTHON_COMPILE=1
     install -d ${D}${sysconfdir}/init.d
     install -m 0755 ${WORKDIR}/bootchartd_stop.sh ${D}${sysconfdir}/init.d
 
diff --git a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch
index d718888..be94238 100644
--- a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch
+++ b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch
@@ -18,7 +18,7 @@
 This is safe for older kernel's as well, since the header still
 exists, and is valid to include.
 
-Upstream-status: OE Specific [mips64 + musl + libc-headers]
+Upstream-Status: Inappropriate [mips64 + musl + libc-headers]
 
 Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
 ---
diff --git a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.13.1.bb b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.13.1.bb
deleted file mode 100644
index 5288978..0000000
--- a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.13.1.bb
+++ /dev/null
@@ -1,72 +0,0 @@
-SUMMARY = "Checksumming Copy on Write Filesystem utilities"
-DESCRIPTION = "Btrfs is a new copy on write filesystem for Linux aimed at \
-implementing advanced features while focusing on fault tolerance, repair and \
-easy administration. \
-This package contains utilities (mkfs, fsck, btrfsctl) used to work with \
-btrfs and an utility (btrfs-convert) to make a btrfs filesystem from an ext3."
-
-HOMEPAGE = "https://btrfs.wiki.kernel.org"
-
-LICENSE = "GPLv2 & LGPLv2.1+"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067 \
-    file://libbtrfsutil/COPYING;md5=4fbd65380cdd255951079008b364516c \
-"
-SECTION = "base"
-DEPENDS = "lzo util-linux zlib"
-DEPENDS:append:class-target = " udev"
-
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git \
-           file://0001-Add-a-possibility-to-specify-where-python-modules-ar.patch \
-           file://0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch \
-           "
-SRCREV = "e4ac7d4f67b330a3b27a4a50f73e94b1e072ae56"
-S = "${WORKDIR}/git"
-
-PACKAGECONFIG ??= " \
-    programs \
-    convert \
-    python \
-    crypto-builtin \
-"
-PACKAGECONFIG[manpages] = "--enable-documentation, --disable-documentation, asciidoc-native xmlto-native"
-PACKAGECONFIG[programs] = "--enable-programs,--disable-programs"
-PACKAGECONFIG[convert] = "--enable-convert --with-convert=ext2,--disable-convert --without-convert,e2fsprogs"
-PACKAGECONFIG[zoned] = "--enable-zoned,--disable-zoned"
-PACKAGECONFIG[python] = "--enable-python,--disable-python,python3-setuptools-native"
-PACKAGECONFIG[zstd] = "--enable-zstd,--disable-zstd,zstd"
-
-# Pick only one crypto provider
-PACKAGECONFIG[crypto-builtin] = "--with-crypto=builtin"
-PACKAGECONFIG[crypto-libgcrypt] = "--with-crypto=libgcrypt,,libgcrypt"
-PACKAGECONFIG[crypto-libsodium] = "--with-crypto=libsodium,,libsodium"
-PACKAGECONFIG[crypto-libkcapi] = "--with-crypto=libkcapi,,libkcapi"
-
-inherit autotools-brokensep pkgconfig manpages
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'distutils3-base', '', d)}
-
-CLEANBROKEN = "1"
-
-EXTRA_OECONF = "--enable-largefile"
-EXTRA_OECONF:append:libc-musl = " --disable-backtrace "
-EXTRA_PYTHON_CFLAGS = "${DEBUG_PREFIX_MAP}"
-EXTRA_PYTHON_CFLAGS:class-native = ""
-EXTRA_PYTHON_LDFLAGS = "${LDFLAGS}"
-EXTRA_OEMAKE = "V=1 'EXTRA_PYTHON_CFLAGS=${EXTRA_PYTHON_CFLAGS}' 'EXTRA_PYTHON_LDFLAGS=${EXTRA_PYTHON_LDFLAGS}'"
-
-do_configure:prepend() {
-	# Upstream doesn't ship this and autoreconf won't install it as automake isn't used.
-	mkdir -p ${S}/config
-	cp -f $(automake --print-libdir)/install-sh ${S}/config/
-}
-
-
-do_install:append() {
-    if [ "${@bb.utils.filter('PACKAGECONFIG', 'python', d)}" ]; then
-        oe_runmake 'DESTDIR=${D}' 'PYTHON_SITEPACKAGES_DIR=${PYTHON_SITEPACKAGES_DIR}' install_python
-    fi
-}
-
-RDEPENDS:${PN} = "libgcc"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.14.2.bb b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.14.2.bb
new file mode 100644
index 0000000..3270527
--- /dev/null
+++ b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.14.2.bb
@@ -0,0 +1,72 @@
+SUMMARY = "Checksumming Copy on Write Filesystem utilities"
+DESCRIPTION = "Btrfs is a new copy on write filesystem for Linux aimed at \
+implementing advanced features while focusing on fault tolerance, repair and \
+easy administration. \
+This package contains utilities (mkfs, fsck, btrfsctl) used to work with \
+btrfs and an utility (btrfs-convert) to make a btrfs filesystem from an ext3."
+
+HOMEPAGE = "https://btrfs.wiki.kernel.org"
+
+LICENSE = "GPLv2 & LGPLv2.1+"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067 \
+    file://libbtrfsutil/COPYING;md5=4fbd65380cdd255951079008b364516c \
+"
+SECTION = "base"
+DEPENDS = "lzo util-linux zlib"
+
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git \
+           file://0001-Add-a-possibility-to-specify-where-python-modules-ar.patch \
+           file://0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch \
+           "
+SRCREV = "35f17bc49cdf760d8f3710fe2c301b933d991fd6"
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= " \
+    programs \
+    convert \
+    python \
+    crypto-builtin \
+"
+PACKAGECONFIG[manpages] = "--enable-documentation, --disable-documentation, asciidoc-native xmlto-native"
+PACKAGECONFIG[programs] = "--enable-programs,--disable-programs"
+PACKAGECONFIG[convert] = "--enable-convert --with-convert=ext2,--disable-convert --without-convert,e2fsprogs"
+PACKAGECONFIG[zoned] = "--enable-zoned,--disable-zoned"
+PACKAGECONFIG[python] = "--enable-python,--disable-python,python3-setuptools-native"
+PACKAGECONFIG[zstd] = "--enable-zstd,--disable-zstd,zstd"
+PACKAGECONFIG[udev] = "--enable-libudev,--disable-libudev,udev"
+
+# Pick only one crypto provider
+PACKAGECONFIG[crypto-builtin] = "--with-crypto=builtin"
+PACKAGECONFIG[crypto-libgcrypt] = "--with-crypto=libgcrypt,,libgcrypt"
+PACKAGECONFIG[crypto-libsodium] = "--with-crypto=libsodium,,libsodium"
+PACKAGECONFIG[crypto-libkcapi] = "--with-crypto=libkcapi,,libkcapi"
+
+inherit autotools-brokensep pkgconfig manpages
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'distutils3-base', '', d)}
+
+CLEANBROKEN = "1"
+
+EXTRA_OECONF = "--enable-largefile"
+EXTRA_OECONF:append:libc-musl = " --disable-backtrace "
+EXTRA_PYTHON_CFLAGS = "${DEBUG_PREFIX_MAP}"
+EXTRA_PYTHON_CFLAGS:class-native = ""
+EXTRA_PYTHON_LDFLAGS = "${LDFLAGS}"
+EXTRA_OEMAKE = "V=1 'EXTRA_PYTHON_CFLAGS=${EXTRA_PYTHON_CFLAGS}' 'EXTRA_PYTHON_LDFLAGS=${EXTRA_PYTHON_LDFLAGS}'"
+
+do_configure:prepend() {
+	# Upstream doesn't ship this and autoreconf won't install it as automake isn't used.
+	mkdir -p ${S}/config
+	cp -f $(automake --print-libdir)/install-sh ${S}/config/
+}
+
+
+do_install:append() {
+    if [ "${@bb.utils.filter('PACKAGECONFIG', 'python', d)}" ]; then
+        oe_runmake 'DESTDIR=${D}' 'PYTHON_SITEPACKAGES_DIR=${PYTHON_SITEPACKAGES_DIR}' install_python
+    fi
+}
+
+RDEPENDS:${PN} = "libgcc"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/cargo/cargo-cross-canadian_1.54.0.bb b/poky/meta/recipes-devtools/cargo/cargo-cross-canadian_1.54.0.bb
deleted file mode 100644
index dba400b..0000000
--- a/poky/meta/recipes-devtools/cargo/cargo-cross-canadian_1.54.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require recipes-devtools/rust/rust-source-${PV}.inc
-require recipes-devtools/rust/rust-snapshot-${PV}.inc
-
-FILESEXTRAPATHS:prepend := "${THISDIR}/cargo-${PV}:"
-
-require cargo-cross-canadian.inc
diff --git a/poky/meta/recipes-devtools/cargo/cargo-cross-canadian_1.56.0.bb b/poky/meta/recipes-devtools/cargo/cargo-cross-canadian_1.56.0.bb
new file mode 100644
index 0000000..63fd691
--- /dev/null
+++ b/poky/meta/recipes-devtools/cargo/cargo-cross-canadian_1.56.0.bb
@@ -0,0 +1,6 @@
+require recipes-devtools/rust/rust-source.inc
+require recipes-devtools/rust/rust-snapshot.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/cargo-${PV}:"
+
+require cargo-cross-canadian.inc
diff --git a/poky/meta/recipes-devtools/cargo/cargo.inc b/poky/meta/recipes-devtools/cargo/cargo.inc
index 71e1c64..607c51f 100644
--- a/poky/meta/recipes-devtools/cargo/cargo.inc
+++ b/poky/meta/recipes-devtools/cargo/cargo.inc
@@ -29,6 +29,8 @@
 
 addtask cargo_setup_snapshot after do_unpack before do_configure
 do_cargo_setup_snapshot[dirs] += "${WORKDIR}/${CARGO_SNAPSHOT}"
+do_cargo_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
+
 
 do_compile:prepend () {
 	export RUSTC_BOOTSTRAP="1"
diff --git a/poky/meta/recipes-devtools/cargo/cargo_1.54.0.bb b/poky/meta/recipes-devtools/cargo/cargo_1.54.0.bb
deleted file mode 100644
index 175f544..0000000
--- a/poky/meta/recipes-devtools/cargo/cargo_1.54.0.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require recipes-devtools/rust/rust-source-${PV}.inc
-require recipes-devtools/rust/rust-snapshot-${PV}.inc
-require cargo.inc
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/cargo/cargo_1.56.0.bb b/poky/meta/recipes-devtools/cargo/cargo_1.56.0.bb
new file mode 100644
index 0000000..eee58fc
--- /dev/null
+++ b/poky/meta/recipes-devtools/cargo/cargo_1.56.0.bb
@@ -0,0 +1,4 @@
+require recipes-devtools/rust/rust-source.inc
+require recipes-devtools/rust/rust-snapshot.inc
+require cargo.inc
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/ccache/ccache_4.4.2.bb b/poky/meta/recipes-devtools/ccache/ccache_4.4.2.bb
new file mode 100644
index 0000000..dd0ad64
--- /dev/null
+++ b/poky/meta/recipes-devtools/ccache/ccache_4.4.2.bb
@@ -0,0 +1,26 @@
+SUMMARY = "a fast C/C++ compiler cache"
+DESCRIPTION = "ccache is a compiler cache. It speeds up recompilation \
+by caching the result of previous compilations and detecting when the \
+same compilation is being done again. Supported languages are C, C\+\+, \
+Objective-C and Objective-C++."
+HOMEPAGE = "http://ccache.samba.org"
+SECTION = "devel"
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=985be6d06a50f60a9893a19a6d2550b8"
+
+DEPENDS = "zstd"
+
+SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz"
+SRC_URI[sha256sum] = "357a2ac55497b39ad6885c14b00cda6cf21d1851c6290f4288e62972665de417"
+
+UPSTREAM_CHECK_URI = "https://github.com/ccache/ccache/releases/"
+
+inherit cmake
+
+PATCHTOOL = "patch"
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGECONFIG[docs] = "-DENABLE_DOCUMENTATION=ON,-DENABLE_DOCUMENTATION=OFF,asciidoc"
+PACKAGECONFIG[redis] = "-DREDIS_STORAGE_BACKEND=ON,-DREDIS_STORAGE_BACKEND=OFF,hiredis"
diff --git a/poky/meta/recipes-devtools/ccache/ccache_4.4.bb b/poky/meta/recipes-devtools/ccache/ccache_4.4.bb
deleted file mode 100644
index 203be8c..0000000
--- a/poky/meta/recipes-devtools/ccache/ccache_4.4.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "a fast C/C++ compiler cache"
-DESCRIPTION = "ccache is a compiler cache. It speeds up recompilation \
-by caching the result of previous compilations and detecting when the \
-same compilation is being done again. Supported languages are C, C\+\+, \
-Objective-C and Objective-C++."
-HOMEPAGE = "http://ccache.samba.org"
-SECTION = "devel"
-
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=73963d63171ecbdf2d25274de67c68c5"
-
-DEPENDS = "zstd"
-
-SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz"
-SRC_URI[sha256sum] = "61a993d62216aff35722a8d0e8ffef9b677fc3f6accd8944ffc2a6db98fb3142"
-
-UPSTREAM_CHECK_URI = "https://github.com/ccache/ccache/releases/"
-
-inherit cmake
-
-PATCHTOOL = "patch"
-
-BBCLASSEXTEND = "native nativesdk"
-
-PACKAGECONFIG[docs] = "-DENABLE_DOCUMENTATION=ON,-DENABLE_DOCUMENTATION=OFF,asciidoc"
-PACKAGECONFIG[redis] = "-DREDIS_STORAGE_BACKEND=ON,-DREDIS_STORAGE_BACKEND=OFF,hiredis"
diff --git a/poky/meta/recipes-devtools/cmake/cmake-native_3.21.1.bb b/poky/meta/recipes-devtools/cmake/cmake-native_3.21.3.bb
similarity index 100%
rename from poky/meta/recipes-devtools/cmake/cmake-native_3.21.1.bb
rename to poky/meta/recipes-devtools/cmake/cmake-native_3.21.3.bb
diff --git a/poky/meta/recipes-devtools/cmake/cmake.inc b/poky/meta/recipes-devtools/cmake/cmake.inc
index 7f0aff8..43d4fe5 100644
--- a/poky/meta/recipes-devtools/cmake/cmake.inc
+++ b/poky/meta/recipes-devtools/cmake/cmake.inc
@@ -21,7 +21,7 @@
            file://0004-Fail-silently-if-system-Qt-installation-is-broken.patch \
 "
 
-SRC_URI[sha256sum] = "fac3915171d4dff25913975d712f76e69aef44bf738ba7b976793a458b4cfed4"
+SRC_URI[sha256sum] = "d14d06df4265134ee42c4d50f5a60cb8b471b7b6a47da8e5d914d49dd783794f"
 
 UPSTREAM_CHECK_REGEX = "cmake-(?P<pver>\d+(\.\d+)+)\.tar"
 
diff --git a/poky/meta/recipes-devtools/cmake/cmake_3.21.1.bb b/poky/meta/recipes-devtools/cmake/cmake_3.21.3.bb
similarity index 100%
rename from poky/meta/recipes-devtools/cmake/cmake_3.21.1.bb
rename to poky/meta/recipes-devtools/cmake/cmake_3.21.3.bb
diff --git a/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.4.bb b/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.4.bb
deleted file mode 100644
index 500b508..0000000
--- a/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.4.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-DESCRIPTION = "C implementation of createrepo."
-HOMEPAGE = "https://github.com/rpm-software-management/createrepo_c/wiki"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "git://github.com/rpm-software-management/createrepo_c \
-           file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
-           "
-
-SRCREV = "cb74969736bdea86465e85feeceb895ff7a42610"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "expat curl glib-2.0 libxml2 openssl bzip2 zlib file sqlite3 xz rpm"
-DEPENDS:append:class-native = " file-replacement-native"
-
-inherit cmake pkgconfig bash-completion distutils3-base
-
-EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3 -DWITH_ZCHUNK=OFF -DENABLE_DRPM=OFF -DWITH_LIBMODULEMD=OFF"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# Direct createrepo to read rpm configuration from our sysroot, not the one it was compiled in
-do_install:append:class-native() {
-        create_wrapper ${D}/${bindir}/createrepo_c \
-                RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
-                MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc
-        create_wrapper ${D}/${bindir}/modifyrepo_c \
-                MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc
-}
-
-do_install:append:class-nativesdk() {
-        create_wrapper ${D}/${bindir}/createrepo_c \
-                RPM_CONFIGDIR=${SDKPATHNATIVE}${libdir_nativesdk}/rpm \
-                MAGIC=${datadir}/misc/magic.mgc
-        create_wrapper ${D}/${bindir}/modifyrepo_c \
-                MAGIC=${datadir}/misc/magic.mgc
-        rm -rf ${D}/etc
-}
diff --git a/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.7.bb b/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.7.bb
new file mode 100644
index 0000000..739a2dc
--- /dev/null
+++ b/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.7.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "C implementation of createrepo."
+HOMEPAGE = "https://github.com/rpm-software-management/createrepo_c/wiki"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/rpm-software-management/createrepo_c \
+           file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
+           "
+
+SRCREV = "c4e6808c710ec68e56bd93b0366f3b6cbeee3167"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "expat curl glib-2.0 libxml2 openssl bzip2 zlib file sqlite3 xz rpm"
+DEPENDS:append:class-native = " file-replacement-native"
+
+inherit cmake pkgconfig bash-completion distutils3-base
+
+EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3 -DWITH_ZCHUNK=OFF -DENABLE_DRPM=OFF -DWITH_LIBMODULEMD=OFF"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Direct createrepo to read rpm configuration from our sysroot, not the one it was compiled in
+do_install:append:class-native() {
+        create_wrapper ${D}/${bindir}/createrepo_c \
+                RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
+                MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc
+        create_wrapper ${D}/${bindir}/modifyrepo_c \
+                MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc
+}
+
+do_install:append:class-nativesdk() {
+        create_wrapper ${D}/${bindir}/createrepo_c \
+                RPM_CONFIGDIR=${SDKPATHNATIVE}${libdir_nativesdk}/rpm \
+                MAGIC=${datadir}/misc/magic.mgc
+        create_wrapper ${D}/${bindir}/modifyrepo_c \
+                MAGIC=${datadir}/misc/magic.mgc
+        rm -rf ${D}/etc
+}
diff --git a/poky/meta/recipes-devtools/dnf/dnf_4.10.0.bb b/poky/meta/recipes-devtools/dnf/dnf_4.10.0.bb
new file mode 100644
index 0000000..b7273d4
--- /dev/null
+++ b/poky/meta/recipes-devtools/dnf/dnf_4.10.0.bb
@@ -0,0 +1,91 @@
+SUMMARY = "Package manager forked from Yum, using libsolv as a dependency resolver"
+DESCRIPTION = "Software package manager that installs, updates, and removes \
+packages on RPM-based Linux distributions. It automatically computes \
+dependencies and determines the actions required to install packages."
+HOMEPAGE = "https://github.com/rpm-software-management/dnf"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://PACKAGE-LICENSING;md5=4a0548e303dbc77f067335b4d688e745 \
+                    "
+
+SRC_URI = "git://github.com/rpm-software-management/dnf.git \
+           file://0001-Corretly-install-tmpfiles.d-configuration.patch \
+           file://0001-Do-not-hardcode-etc-and-systemd-unit-directories.patch \
+           file://0005-Do-not-prepend-installroot-to-logdir.patch \
+           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-dnf-write-the-log-lock-to-root.patch \
+           "
+
+SRCREV = "bd691b784f2158e633072d368579898d740e4347"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+inherit cmake gettext bash-completion distutils3-base systemd
+
+DEPENDS += "libdnf librepo libcomps python3-iniparse"
+
+# manpages generation requires http://www.sphinx-doc.org/
+EXTRA_OECMAKE = " -DWITH_MAN=0 -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN} += " \
+  python3-core \
+  python3-codecs \
+  python3-netclient \
+  python3-email \
+  python3-threading \
+  python3-distutils \
+  python3-logging \
+  python3-fcntl \
+  librepo \
+  python3-shell \
+  libcomps \
+  libdnf \
+  python3-sqlite3 \
+  python3-compression \
+  python3-rpm \
+  python3-iniparse \
+  python3-json \
+  python3-curses \
+  python3-misc \
+  python3-gpg \
+  "
+
+RDEPENDS:${PN}:class-native = ""
+
+RRECOMMENDS:${PN}:class-target += "gnupg"
+
+# Create a symlink called 'dnf' as 'make install' does not do it, but
+# .spec file in dnf source tree does (and then Fedora and dnf documentation
+# says that dnf binary is plain 'dnf').
+do_install:append() {
+        lnr ${D}/${bindir}/dnf-3 ${D}/${bindir}/dnf
+        lnr ${D}/${bindir}/dnf-automatic-3 ${D}/${bindir}/dnf-automatic
+}
+
+# Direct dnf-native to read rpm configuration from our sysroot, not the one it was compiled in
+do_install:append:class-native() {
+        create_wrapper ${D}/${bindir}/dnf \
+                RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
+                RPM_NO_CHROOT_FOR_SCRIPTS=1
+}
+
+do_install:append:class-nativesdk() {
+        create_wrapper ${D}/${bindir}/dnf \
+                RPM_CONFIGDIR=${SDKPATHNATIVE}${libdir_nativesdk}/rpm \
+                RPM_NO_CHROOT_FOR_SCRIPTS=1
+}
+
+SYSTEMD_SERVICE:${PN} = "dnf-makecache.service dnf-makecache.timer \
+                         dnf-automatic.service dnf-automatic.timer \
+                         dnf-automatic-download.service dnf-automatic-download.timer \
+                         dnf-automatic-install.service dnf-automatic-install.timer \
+                         dnf-automatic-notifyonly.service dnf-automatic-notifyonly.timer \
+"
+SYSTEMD_AUTO_ENABLE ?= "disable"
+
+PNBLACKLIST[dnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'does not build without package_rpm in PACKAGE_CLASSES due disabled rpm support in libsolv', d)}"
diff --git a/poky/meta/recipes-devtools/dnf/dnf_4.8.0.bb b/poky/meta/recipes-devtools/dnf/dnf_4.8.0.bb
deleted file mode 100644
index f51d747..0000000
--- a/poky/meta/recipes-devtools/dnf/dnf_4.8.0.bb
+++ /dev/null
@@ -1,91 +0,0 @@
-SUMMARY = "Package manager forked from Yum, using libsolv as a dependency resolver"
-DESCRIPTION = "Software package manager that installs, updates, and removes \
-packages on RPM-based Linux distributions. It automatically computes \
-dependencies and determines the actions required to install packages."
-HOMEPAGE = "https://github.com/rpm-software-management/dnf"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://PACKAGE-LICENSING;md5=4a0548e303dbc77f067335b4d688e745 \
-                    "
-
-SRC_URI = "git://github.com/rpm-software-management/dnf.git \
-           file://0001-Corretly-install-tmpfiles.d-configuration.patch \
-           file://0001-Do-not-hardcode-etc-and-systemd-unit-directories.patch \
-           file://0005-Do-not-prepend-installroot-to-logdir.patch \
-           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-dnf-write-the-log-lock-to-root.patch \
-           "
-
-SRCREV = "e7b29753dce94769d30f92e671f55863985d24f0"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit cmake gettext bash-completion distutils3-base systemd
-
-DEPENDS += "libdnf librepo libcomps python3-iniparse"
-
-# manpages generation requires http://www.sphinx-doc.org/
-EXTRA_OECMAKE = " -DWITH_MAN=0 -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3"
-
-BBCLASSEXTEND = "native nativesdk"
-
-RDEPENDS:${PN} += " \
-  python3-core \
-  python3-codecs \
-  python3-netclient \
-  python3-email \
-  python3-threading \
-  python3-distutils \
-  python3-logging \
-  python3-fcntl \
-  librepo \
-  python3-shell \
-  libcomps \
-  libdnf \
-  python3-sqlite3 \
-  python3-compression \
-  python3-rpm \
-  python3-iniparse \
-  python3-json \
-  python3-curses \
-  python3-misc \
-  python3-gpg \
-  "
-
-RDEPENDS:${PN}:class-native = ""
-
-RRECOMMENDS:${PN}:class-target += "gnupg"
-
-# Create a symlink called 'dnf' as 'make install' does not do it, but
-# .spec file in dnf source tree does (and then Fedora and dnf documentation
-# says that dnf binary is plain 'dnf').
-do_install:append() {
-        lnr ${D}/${bindir}/dnf-3 ${D}/${bindir}/dnf
-        lnr ${D}/${bindir}/dnf-automatic-3 ${D}/${bindir}/dnf-automatic
-}
-
-# Direct dnf-native to read rpm configuration from our sysroot, not the one it was compiled in
-do_install:append:class-native() {
-        create_wrapper ${D}/${bindir}/dnf \
-                RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
-                RPM_NO_CHROOT_FOR_SCRIPTS=1
-}
-
-do_install:append:class-nativesdk() {
-        create_wrapper ${D}/${bindir}/dnf \
-                RPM_CONFIGDIR=${SDKPATHNATIVE}${libdir_nativesdk}/rpm \
-                RPM_NO_CHROOT_FOR_SCRIPTS=1
-}
-
-SYSTEMD_SERVICE:${PN} = "dnf-makecache.service dnf-makecache.timer \
-                         dnf-automatic.service dnf-automatic.timer \
-                         dnf-automatic-download.service dnf-automatic-download.timer \
-                         dnf-automatic-install.service dnf-automatic-install.timer \
-                         dnf-automatic-notifyonly.service dnf-automatic-notifyonly.timer \
-"
-SYSTEMD_AUTO_ENABLE ?= "disable"
-
-PNBLACKLIST[dnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'does not build without package_rpm in PACKAGE_CLASSES due disabled rpm support in libsolv', d)}"
diff --git a/poky/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correct-ncurses-6.3-errors.patch b/poky/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correct-ncurses-6.3-errors.patch
new file mode 100644
index 0000000..9d0443e
--- /dev/null
+++ b/poky/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correct-ncurses-6.3-errors.patch
@@ -0,0 +1,99 @@
+From e301f7dd650c9e56f954a7c49661d938079e1a9b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 25 Oct 2021 17:27:51 +0200
+Subject: [PATCH] gptcurses: correct ncurses 6.3 errors
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ gptcurses.cc | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/gptcurses.cc b/gptcurses.cc
+index d0de024..70be999 100644
+--- a/gptcurses.cc
++++ b/gptcurses.cc
+@@ -235,22 +235,22 @@ Space* GPTDataCurses::ShowSpace(int spaceNum, int lineNum) {
+       ClearLine(lineNum);
+       if (space->partNum == -1) { // space is empty
+          move(lineNum, 12);
+-         printw(BytesToIeee((space->lastLBA - space->firstLBA + 1), blockSize).c_str());
++         printw("%s",BytesToIeee((space->lastLBA - space->firstLBA + 1), blockSize).c_str());
+          move(lineNum, 24);
+-         printw("free space");
++         printw("%s","free space");
+       } else { // space holds a partition
+          move(lineNum, 3);
+          printw("%d", space->partNum + 1);
+          move(lineNum, 12);
+-         printw(BytesToIeee((space->lastLBA - space->firstLBA + 1), blockSize).c_str());
++         printw("%s",BytesToIeee((space->lastLBA - space->firstLBA + 1), blockSize).c_str());
+          move(lineNum, 24);
+-         printw(space->origPart->GetTypeName().c_str());
++         printw("%s",space->origPart->GetTypeName().c_str());
+          move(lineNum, 50);
+          #ifdef USE_UTF16
+          space->origPart->GetDescription().extract(0, 39, temp, 39);
+-         printw(temp);
++         printw("%s",temp);
+          #else
+-         printw(space->origPart->GetDescription().c_str());
++         printw("%s",space->origPart->GetDescription().c_str());
+          #endif
+       } // if/else
+    } // if
+@@ -267,10 +267,10 @@ int GPTDataCurses::DisplayParts(int selected) {
+ 
+    move(lineNum++, 0);
+    theLine = "Part. #     Size        Partition Type            Partition Name";
+-   printw(theLine.c_str());
++   printw("%s",theLine.c_str());
+    move(lineNum++, 0);
+    theLine = "----------------------------------------------------------------";
+-   printw(theLine.c_str());
++   printw("%s",theLine.c_str());
+    numToShow = LINES - RESERVED_TOP - RESERVED_BOTTOM;
+    pageNum = selected / numToShow;
+    for (i = pageNum * numToShow; i <= (pageNum + 1) * numToShow - 1; i++) {
+@@ -284,7 +284,7 @@ int GPTDataCurses::DisplayParts(int selected) {
+             } else {
+                currentSpace = ShowSpace(i, lineNum);
+                move(lineNum++, 0);
+-               printw(">");
++               printw("%s",">");
+             }
+             DisplayOptions(i);
+             retval = selected;
+@@ -632,7 +632,7 @@ void GPTDataCurses::DisplayOptions(char selectedKey) {
+          } // if/else
+       } // for
+       move(LINES - 1, (COLS - optionDesc.length()) / 2);
+-      printw(optionDesc.c_str());
++      printw("%s",optionDesc.c_str());
+       currentKey = selectedKey;
+    } // if
+ } // GPTDataCurses::DisplayOptions()
+@@ -744,11 +744,11 @@ void GPTDataCurses::DrawMenu(void) {
+ 
+    clear();
+    move(0, (COLS - title.length()) / 2);
+-   printw(title.c_str());
++   printw("%s",title.c_str());
+    move(2, (COLS - drive.length()) / 2);
+-   printw(drive.c_str());
++   printw("%s",drive.c_str());
+    move(3, (COLS - size.str().length()) / 2);
+-   printw(size.str().c_str());
++   printw("%s",size.str().c_str());
+    DisplayParts(currentSpaceNum);
+ } // DrawMenu
+ 
+@@ -798,7 +798,7 @@ void PromptToContinue(void) {
+ void Report(string theText) {
+    clear();
+    move(0, 0);
+-   printw(theText.c_str());
++   printw("%s", theText.c_str());
+    move(LINES - 2, (COLS - 29) / 2);
+    printw("Press any key to continue....");
+    cbreak();
diff --git a/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb b/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb
index 16fe540..c5a153a 100644
--- a/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb
+++ b/poky/meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb
@@ -9,6 +9,7 @@
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${PV}/${BP}.tar.gz \
            file://0001-gptcurses-correctly-include-curses.h.patch \
+           file://0001-gptcurses-correct-ncurses-6.3-errors.patch \
            "
 SRC_URI[sha256sum] = "95d19856f004dabc4b8c342b2612e8d0a9eebdd52004297188369f152e9dc6df"
 
diff --git a/poky/meta/recipes-devtools/file/file_5.40.bb b/poky/meta/recipes-devtools/file/file_5.40.bb
deleted file mode 100644
index 32b61f4..0000000
--- a/poky/meta/recipes-devtools/file/file_5.40.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-SUMMARY = "File classification tool"
-DESCRIPTION = "File attempts to classify files depending \
-on their contents and prints a description if a match is found."
-HOMEPAGE = "http://www.darwinsys.com/file/"
-SECTION = "console/utils"
-
-# two clause BSD
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;beginline=2;md5=0251eaec1188b20d9a72c502ecfdda1b"
-
-DEPENDS = "file-replacement-native"
-DEPENDS:class-native = "bzip2-replacement-native"
-
-SRC_URI = "git://github.com/file/file.git"
-
-SRCREV = "f49fda6f52a9477d817dbd9c06afab02daf025f8"
-S = "${WORKDIR}/git"
-
-inherit autotools update-alternatives
-
-PACKAGECONFIG ??= "bz2 lzma zlib"
-PACKAGECONFIG[bz2] = "--enable-bzlib, --disable-bzlib, bzip2"
-PACKAGECONFIG[lzma] = "--enable-xzlib, --disable-xzlib, xz"
-PACKAGECONFIG[zlib] = "--enable-zlib, --disable-zlib, zlib"
-
-EXTRA_OECONF += "--disable-libseccomp"
-
-ALTERNATIVE:${PN} = "file"
-ALTERNATIVE_LINK_NAME[file] = "${bindir}/file"
-
-EXTRA_OEMAKE:append:class-target = " -e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
-EXTRA_OEMAKE:append:class-nativesdk = " -e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
-
-FILES:${PN} += "${datadir}/misc/*.mgc"
-
-do_compile:append:class-native() {
-	oe_runmake check
-}
-
-do_install:append:class-native() {
-	create_cmdline_wrapper ${D}/${bindir}/file \
-		--magic-file ${datadir}/misc/magic.mgc
-}
-
-do_install:append:class-nativesdk() {
-	create_cmdline_wrapper ${D}/${bindir}/file \
-		--magic-file ${datadir}/misc/magic.mgc
-}
-
-BBCLASSEXTEND = "native nativesdk"
-PROVIDES:append:class-native = " file-replacement-native"
-# Don't use NATIVE_PACKAGE_PATH_SUFFIX as that hides libmagic from anyone who
-# depends on file-replacement-native.
-bindir:append:class-native = "/file-native"
diff --git a/poky/meta/recipes-devtools/file/file_5.41.bb b/poky/meta/recipes-devtools/file/file_5.41.bb
new file mode 100644
index 0000000..9cc8308
--- /dev/null
+++ b/poky/meta/recipes-devtools/file/file_5.41.bb
@@ -0,0 +1,54 @@
+SUMMARY = "File classification tool"
+DESCRIPTION = "File attempts to classify files depending \
+on their contents and prints a description if a match is found."
+HOMEPAGE = "http://www.darwinsys.com/file/"
+SECTION = "console/utils"
+
+# two clause BSD
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;beginline=2;md5=0251eaec1188b20d9a72c502ecfdda1b"
+
+DEPENDS = "file-replacement-native"
+DEPENDS:class-native = "bzip2-replacement-native"
+
+SRC_URI = "git://github.com/file/file.git"
+
+SRCREV = "504206e53a89fd6eed71aeaf878aa3512418eab1"
+S = "${WORKDIR}/git"
+
+inherit autotools update-alternatives
+
+PACKAGECONFIG ??= "bz2 lzma zlib"
+PACKAGECONFIG[bz2] = "--enable-bzlib, --disable-bzlib, bzip2"
+PACKAGECONFIG[lzma] = "--enable-xzlib, --disable-xzlib, xz"
+PACKAGECONFIG[zlib] = "--enable-zlib, --disable-zlib, zlib"
+
+EXTRA_OECONF += "--disable-libseccomp"
+
+ALTERNATIVE:${PN} = "file"
+ALTERNATIVE_LINK_NAME[file] = "${bindir}/file"
+
+EXTRA_OEMAKE:append:class-target = " -e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
+EXTRA_OEMAKE:append:class-nativesdk = " -e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
+
+FILES:${PN} += "${datadir}/misc/*.mgc"
+
+do_compile:append:class-native() {
+	oe_runmake check
+}
+
+do_install:append:class-native() {
+	create_cmdline_wrapper ${D}/${bindir}/file \
+		--magic-file ${datadir}/misc/magic.mgc
+}
+
+do_install:append:class-nativesdk() {
+	create_cmdline_wrapper ${D}/${bindir}/file \
+		--magic-file ${datadir}/misc/magic.mgc
+}
+
+BBCLASSEXTEND = "native nativesdk"
+PROVIDES:append:class-native = " file-replacement-native"
+# Don't use NATIVE_PACKAGE_PATH_SUFFIX as that hides libmagic from anyone who
+# depends on file-replacement-native.
+bindir:append:class-native = "/file-native"
diff --git a/poky/meta/recipes-devtools/gcc/gcc-11.2.inc b/poky/meta/recipes-devtools/gcc/gcc-11.2.inc
index 9fd30f5..d39307d 100644
--- a/poky/meta/recipes-devtools/gcc/gcc-11.2.inc
+++ b/poky/meta/recipes-devtools/gcc/gcc-11.2.inc
@@ -32,7 +32,6 @@
            ${BASEURI} \
            file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
            file://0002-gcc-poison-system-directories.patch \
-           file://0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
            file://0004-64-bit-multilib-hack.patch \
            file://0005-optional-libstdc.patch \
            file://0006-COLLECT_GCC_OPTIONS.patch \
@@ -42,7 +41,6 @@
            file://0010-MIPS64-Default-to-N64-ABI.patch \
            file://0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch \
            file://0012-gcc-Fix-argument-list-too-long-error.patch \
-           file://0013-Disable-sdt.patch \
            file://0014-libtool.patch \
            file://0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \
            file://0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch \
@@ -50,24 +48,21 @@
            file://0018-export-CPP.patch \
            file://0019-Ensure-target-gcc-headers-can-be-included.patch \
            file://0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch \
-           file://0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch \
-           file://0022-aarch64-Add-support-for-musl-ldso.patch \
            file://0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch \
            file://0024-handle-sysroot-support-for-nativesdk-gcc.patch \
            file://0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
-           file://0026-Fix-various-_FOR_BUILD-and-related-variables.patch \
            file://0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
            file://0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch \
            file://0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch \
            file://0030-sync-gcc-stddef.h-with-musl.patch \
            file://0031-fix-segmentation-fault-in-precompiled-header-generat.patch \
-           file://0032-Fix-for-testsuite-failure.patch \
            file://0033-Re-introduce-spe-commandline-options.patch \
            file://0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch \
            file://0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch \
            file://0036-mingw32-Enable-operation_not_supported.patch \
            file://0037-libatomic-Do-not-enforce-march-on-aarch64.patch \
            file://0041-apply-debug-prefix-maps-before-checksumming-DIEs.patch \
+           file://0006-If-CXXFLAGS-contains-something-unsupported-by-the-bu.patch \
 "
 SRC_URI[sha256sum] = "d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b"
 
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch b/poky/meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
deleted file mode 100644
index 7a67654..0000000
--- a/poky/meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 274a27da6fe355c4c49953b3b69c8949d2412c62 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:08:31 +0400
-Subject: [PATCH] gcc-4.3.3: SYSROOT_CFLAGS_FOR_TARGET
-
-Before committing, I noticed that PR/32161 was marked as a dup of PR/32009, but my previous patch did not fix it.
-
-This alternative patch is better because it lets you just use CFLAGS_FOR_TARGET to set the compilation flags for libgcc. Since bootstrapped target libraries are never compiled with the native compiler, it makes little sense to use different flags for stage1 and later stages. And it also makes little sense to use a different variable than CFLAGS_FOR_TARGET.
-
-Other changes I had to do include:
-
-- moving the creation of default CFLAGS_FOR_TARGET from Makefile.am to configure.ac, because otherwise the BOOT_CFLAGS are substituted into CFLAGS_FOR_TARGET (which is "-O2 -g $(CFLAGS)") via $(CFLAGS). It is also cleaner this way though.
-
-- passing the right CFLAGS to configure scripts as exported environment variables
-
-I also stopped passing LIBCFLAGS to configure scripts since they are unused in the whole src tree. And I updated the documentation as H-P reminded me to do.
-
-Bootstrapped/regtested i686-pc-linux-gnu, will commit to 4.4 shortly. Ok for 4.3?
-
-Signed-off-by: Paolo Bonzini  <bonzini@gnu.org>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- configure | 32 ++++++++++++++++++++++++++++++++
- 1 file changed, 32 insertions(+)
-
-diff --git a/configure b/configure
-index bcebad264ec..86e4ee7c383 100755
---- a/configure
-+++ b/configure
-@@ -8977,6 +8977,38 @@ fi
- 
- 
- 
-+# During gcc bootstrap, if we use some random cc for stage1 then CFLAGS
-+# might be empty or "-g".  We don't require a C++ compiler, so CXXFLAGS
-+# might also be empty (or "-g", if a non-GCC C++ compiler is in the path).
-+# We want to ensure that TARGET libraries (which we know are built with
-+# gcc) are built with "-O2 -g", so include those options when setting
-+# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
-+if test "x$CFLAGS_FOR_TARGET" = x; then
-+  CFLAGS_FOR_TARGET=$CFLAGS
-+  case " $CFLAGS " in
-+    *" -O2 "*) ;;
-+    *) CFLAGS_FOR_TARGET="-O2 $CFLAGS" ;;
-+  esac
-+  case " $CFLAGS " in
-+    *" -g "* | *" -g3 "*) ;;
-+    *) CFLAGS_FOR_TARGET="-g $CFLAGS" ;;
-+  esac
-+fi
-+
-+
-+if test "x$CXXFLAGS_FOR_TARGET" = x; then
-+  CXXFLAGS_FOR_TARGET=$CXXFLAGS
-+  case " $CXXFLAGS " in
-+    *" -O2 "*) ;;
-+    *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS" ;;
-+  esac
-+  case " $CXXFLAGS " in
-+    *" -g "* | *" -g3 "*) ;;
-+    *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS" ;;
-+  esac
-+fi
-+
-+
- # Handle --with-headers=XXX.  If the value is not "yes", the contents of
- # the named directory are copied to $(tooldir)/sys-include.
- if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch b/poky/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch
index c921ac3..b856c5d 100644
--- a/poky/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch
+++ b/poky/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch
@@ -1,34 +1,54 @@
-From 57e2c5e35732988c0b287289eb0997b4e9769371 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:12:56 +0400
-Subject: [PATCH] optional libstdc
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 3/5] gcc: Add --nostdlib++ option
 
-gcc-runtime builds libstdc++ separately from gcc-cross-*. Its configure tests using g++
+[gcc-runtime builds libstdc++ separately from gcc-cross-*. Its configure tests using g++
 will not run correctly since by default the linker will try to link against libstdc++
 which shouldn't exist yet. We need an option to disable -lstdc++
 option whilst leaving -lc, -lgcc and other automatic library dependencies added by gcc
-driver. This patch adds such an option which only disables the -lstdc++.
+driver. This patch adds such an option which only disables the -lstdc++.]
 
-A "standard" gcc build uses xgcc and hence avoids this. We should ask upstream how to
-do this officially, the likely answer is don't build libstdc++ separately.
+[A "standard" gcc build uses xgcc and hence avoids this. We should ask upstream how to
+do this officially, the likely answer is don't build libstdc++ separately.]
 
-RP 29/6/10
+OpenEmbedded/Yocto Project builds libgcc and the other gcc runtime libraries
+separately from the compiler and slightly differently to the standard gcc build.
 
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+In general this works well but in trying to build them separately we run into
+an issue since we're using our gcc, not xgcc and there is no way to tell configure
+to use libgcc but not look for libstdc++.
 
-Upstream-Status: Inappropriate [embedded specific]
+This adds such an option allowing such configurations to work.
+
+2021-10-26 Richard Purdie <richard.purdie@linuxfoundation.org>
+
+gcc/c-family/ChangeLog:
+
+    * c.opt: Add --nostdlib++ option
+
+gcc/cp/ChangeLog:
+
+    * g++spec.c (lang_specific_driver): Add --nostdlib++ option
+
+gcc/ChangeLog:
+
+    * doc/invoke.texi: Document --nostdlib++ option
+    * gcc.c: Add --nostdlib++ option
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582724.html]
 ---
- gcc/c-family/c.opt  |  4 ++++
- gcc/cp/g++spec.c    |  1 +
- gcc/doc/invoke.texi | 32 +++++++++++++++++++++++++++++++-
- gcc/gcc.c           |  1 +
- 4 files changed, 37 insertions(+), 1 deletion(-)
+ gcc/c-family/c.opt  | 4 ++++
+ gcc/cp/g++spec.c    | 1 +
+ gcc/doc/invoke.texi | 8 +++++++-
+ gcc/gcc.c           | 1 +
+ 4 files changed, 13 insertions(+), 1 deletion(-)
 
-diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
-index 64e46e7573e..1824380f27a 100644
---- a/gcc/c-family/c.opt
-+++ b/gcc/c-family/c.opt
-@@ -2166,6 +2166,10 @@ nostdinc++
+Index: gcc-11.2.0/gcc/c-family/c.opt
+===================================================================
+--- gcc-11.2.0.orig/gcc/c-family/c.opt
++++ gcc-11.2.0/gcc/c-family/c.opt
+@@ -2153,6 +2153,10 @@ nostdinc++
  C++ ObjC++
  Do not search standard system include directories for C++.
  
@@ -39,11 +59,11 @@
  o
  C ObjC C++ ObjC++ Joined Separate
  ; Documented in common.opt
-diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c
-index 3c9bd1490b4..818beb61cee 100644
---- a/gcc/cp/g++spec.c
-+++ b/gcc/cp/g++spec.c
-@@ -159,6 +159,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
+Index: gcc-11.2.0/gcc/cp/g++spec.c
+===================================================================
+--- gcc-11.2.0.orig/gcc/cp/g++spec.c
++++ gcc-11.2.0/gcc/cp/g++spec.c
+@@ -159,6 +159,7 @@ lang_specific_driver (struct cl_decoded_
        switch (decoded_options[i].opt_index)
  	{
  	case OPT_nostdlib:
@@ -51,21 +71,19 @@
  	case OPT_nodefaultlibs:
  	  library = -1;
  	  break;
-diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
-index 6659a903bf0..9ee63dbe52f 100644
---- a/gcc/doc/invoke.texi
-+++ b/gcc/doc/invoke.texi
-@@ -239,6 +239,9 @@ in the following sections.
+Index: gcc-11.2.0/gcc/doc/invoke.texi
+===================================================================
+--- gcc-11.2.0.orig/gcc/doc/invoke.texi
++++ gcc-11.2.0/gcc/doc/invoke.texi
+@@ -239,6 +239,7 @@ in the following sections.
  -fno-weak  -nostdinc++ @gol
  -fvisibility-inlines-hidden @gol
  -fvisibility-ms-compat @gol
-+-fvtable-verify=@r{[}std@r{|}preinit@r{|}none@r{]} @gol
-+-fvtv-counts -fvtv-debug @gol
 +-nostdlib++ @gol
  -fext-numeric-literals @gol
  -flang-info-include-translate@r{[}=@var{header}@r{]} @gol
  -flang-info-include-translate-not @gol
-@@ -632,7 +635,7 @@ Objective-C and Objective-C++ Dialects}.
+@@ -632,7 +633,7 @@ Objective-C and Objective-C++ Dialects}.
  -pie  -pthread  -r  -rdynamic @gol
  -s  -static  -static-pie  -static-libgcc  -static-libstdc++ @gol
  -static-libasan  -static-libtsan  -static-liblsan  -static-libubsan @gol
@@ -74,7 +92,7 @@
  -T @var{script}  -Wl,@var{option}  -Xlinker @var{option} @gol
  -u @var{symbol}  -z @var{keyword}}
  
-@@ -15708,6 +15711,33 @@ Specify that the program entry point is @var{entry}.  The argument is
+@@ -15721,6 +15722,11 @@ Specify that the program entry point is
  interpreted by the linker; the GNU linker accepts either a symbol name
  or an address.
  
@@ -83,36 +101,14 @@
 +Do not use the standard system C++ runtime libraries when linking.
 +Only the libraries you specify will be passed to the linker.
 +
-+@cindex @option{-lgcc}, use with @option{-nostdlib}
-+@cindex @option{-nostdlib} and unresolved references
-+@cindex unresolved references and @option{-nostdlib}
-+@cindex @option{-lgcc}, use with @option{-nodefaultlibs}
-+@cindex @option{-nodefaultlibs} and unresolved references
-+@cindex unresolved references and @option{-nodefaultlibs}
-+One of the standard libraries bypassed by @option{-nostdlib} and
-+@option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines
-+which GCC uses to overcome shortcomings of particular machines, or special
-+needs for some languages.
-+(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler
-+Collection (GCC) Internals},
-+for more discussion of @file{libgcc.a}.)
-+In most cases, you need @file{libgcc.a} even when you want to avoid
-+other standard libraries.  In other words, when you specify @option{-nostdlib}
-+or @option{-nodefaultlibs} you should usually specify @option{-lgcc} as well.
-+This ensures that you have no unresolved references to internal GCC
-+library subroutines.
-+(An example of such an internal subroutine is @code{__main}, used to ensure C++
-+constructors are called; @pxref{Collect2,,@code{collect2}, gccint,
-+GNU Compiler Collection (GCC) Internals}.)
-+
  @item -pie
  @opindex pie
  Produce a dynamically linked position independent executable on targets
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 19c75b6e20d..be7630ffd8c 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -1162,6 +1162,7 @@ proper position among the other output files.  */
+Index: gcc-11.2.0/gcc/gcc.c
+===================================================================
+--- gcc-11.2.0.orig/gcc/gcc.c
++++ gcc-11.2.0/gcc/gcc.c
+@@ -1162,6 +1162,7 @@ proper position among the other output f
      %(mflib) " STACK_SPLIT_SPEC "\
      %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \
      %{!nostdlib:%{!r:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}}\
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0006-If-CXXFLAGS-contains-something-unsupported-by-the-bu.patch b/poky/meta/recipes-devtools/gcc/gcc/0006-If-CXXFLAGS-contains-something-unsupported-by-the-bu.patch
new file mode 100644
index 0000000..98a1bb2
--- /dev/null
+++ b/poky/meta/recipes-devtools/gcc/gcc/0006-If-CXXFLAGS-contains-something-unsupported-by-the-bu.patch
@@ -0,0 +1,63 @@
+From e700190743fa29ddaebd6ee075298a24b1688773 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Thu, 28 Oct 2021 11:33:40 +0100
+Subject: [PATCH 6/6] If CXXFLAGS contains something unsupported by the build
+ CXX, we see build failures (e.g. using -fmacro-prefix-map for the target).
+
+Pass CXXFLAGS_FOR_BUILD in a couple of places to avoid these errors.
+
+2021-10-28 Richard Purdie <richard.purdie@linuxfoundation.org>
+
+ChangeLog:
+
+    * Makefile.in: Regenerate.
+    * Makefile.tpl: Add missing CXXFLAGS_FOR_BUILD overrides
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+---
+ Makefile.in  | 2 ++
+ Makefile.tpl | 2 ++
+ 2 files changed, 4 insertions(+)
+
+Upstream-Status: Pending [should be submittable]
+
+Index: gcc-11.2.0/Makefile.in
+===================================================================
+--- gcc-11.2.0.orig/Makefile.in
++++ gcc-11.2.0/Makefile.in
+@@ -172,6 +172,7 @@ BUILD_EXPORTS = \
+ # built for the build system to override those in BASE_FLAGS_TO_PASS.
+ EXTRA_BUILD_FLAGS = \
+ 	CFLAGS="$(CFLAGS_FOR_BUILD)" \
++	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
+ 	LDFLAGS="$(LDFLAGS_FOR_BUILD)"
+ 
+ # This is the list of directories to built for the host system.
+@@ -203,6 +204,7 @@ HOST_EXPORTS = \
+ 	CPP_FOR_BUILD="$(CPP_FOR_BUILD)"; export CPP_FOR_BUILD; \
+ 	CPPFLAGS_FOR_BUILD="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS_FOR_BUILD; \
+ 	CXX_FOR_BUILD="$(CXX_FOR_BUILD)"; export CXX_FOR_BUILD; \
++	CXXFLAGS_FOR_BUILD="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS_FOR_BUILD; \
+ 	DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+ 	LD="$(LD)"; export LD; \
+ 	LDFLAGS="$(STAGE1_LDFLAGS) $(LDFLAGS)"; export LDFLAGS; \
+Index: gcc-11.2.0/Makefile.tpl
+===================================================================
+--- gcc-11.2.0.orig/Makefile.tpl
++++ gcc-11.2.0/Makefile.tpl
+@@ -175,6 +175,7 @@ BUILD_EXPORTS = \
+ # built for the build system to override those in BASE_FLAGS_TO_PASS.
+ EXTRA_BUILD_FLAGS = \
+ 	CFLAGS="$(CFLAGS_FOR_BUILD)" \
++	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
+ 	LDFLAGS="$(LDFLAGS_FOR_BUILD)"
+ 
+ # This is the list of directories to built for the host system.
+@@ -206,6 +207,7 @@ HOST_EXPORTS = \
+ 	CPP_FOR_BUILD="$(CPP_FOR_BUILD)"; export CPP_FOR_BUILD; \
+ 	CPPFLAGS_FOR_BUILD="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS_FOR_BUILD; \
+ 	CXX_FOR_BUILD="$(CXX_FOR_BUILD)"; export CXX_FOR_BUILD; \
++	CXXFLAGS_FOR_BUILD="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS_FOR_BUILD; \
+ 	DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+ 	LD="$(LD)"; export LD; \
+ 	LDFLAGS="$(STAGE1_LDFLAGS) $(LDFLAGS)"; export LDFLAGS; \
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch b/poky/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch
index c720def..37f26f0 100644
--- a/poky/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch
+++ b/poky/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch
@@ -1,35 +1,41 @@
-From 33a7a55d39c040ba09af2d69f7fa9cf8e6f84c91 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:22:00 +0400
-Subject: [PATCH] cpp: honor sysroot.
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 5/5] gcc: Pass sysroot options to cpp for preprocessed source
 
-Currently, if the gcc toolchain is relocated and installed from sstate, then you try and compile
-preprocessed source (.i or .ii files), the compiler will try and access the builtin sysroot location
-rather than the --sysroot option specified on the commandline. If access to that directory is
-permission denied (unreadable), gcc will error.
+OpenEmbedded/Yocto Project extensively uses the --sysroot support within gcc.
+We discovered that when compiling preprocessed source (.i or .ii files), the
+compiler will try and access the builtin sysroot location rather than the
+--sysroot option specified on the commandline. If access to that directory is
+permission denied (unreadable), gcc will error. This is particularly problematic
+when ccache is involved.
 
-This happens when ccache is in use due to the fact it uses preprocessed source files.
+This patch adds %I to the cpp-output spec macro so the default substitutions for
+-iprefix, -isystem, -isysroot happen and the correct sysroot is used.
 
-The fix below adds %I to the cpp-output spec macro so the default substitutions for -iprefix,
--isystem, -isysroot happen and the correct sysroot is used.
+2021-10-27 Richard Purdie <richard.purdie@linuxfoundation.org>
+
+gcc/cp/ChangeLog:
+
+    * lang-specs.h: Pass sysroot options to cpp for preprocessed source
+
+gcc/ChangeLog:
+
+    * gcc.c: Pass sysroot options to cpp for preprocessed source
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
 
 [YOCTO #2074]
 
-RP 2012/04/13
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582725.html]
 ---
  gcc/cp/lang-specs.h | 2 +-
  gcc/gcc.c           | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
-diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h
-index 8902ae1d2ed..e99e2fcd6ad 100644
---- a/gcc/cp/lang-specs.h
-+++ b/gcc/cp/lang-specs.h
-@@ -116,7 +116,7 @@ along with GCC; see the file COPYING3.  If not see
+Index: gcc-11.2.0/gcc/cp/lang-specs.h
+===================================================================
+--- gcc-11.2.0.orig/gcc/cp/lang-specs.h
++++ gcc-11.2.0/gcc/cp/lang-specs.h
+@@ -116,7 +116,7 @@ along with GCC; see the file COPYING3.
    {".ii", "@c++-cpp-output", 0, 0, 0},
    {"@c++-cpp-output",
        "%{!E:%{!M:%{!MM:"
@@ -38,11 +44,11 @@
        "  %{!fsyntax-only:"
        "    %{fmodule-only:%{!S:-o %g.s%V}}"
        "    %{!fmodule-only:%{!fmodule-header*:%(invoke_as)}}}"
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 1bc45285384..8737bae5353 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -1470,7 +1470,7 @@ static const struct compiler default_compilers[] =
+Index: gcc-11.2.0/gcc/gcc.c
+===================================================================
+--- gcc-11.2.0.orig/gcc/gcc.c
++++ gcc-11.2.0/gcc/gcc.c
+@@ -1470,7 +1470,7 @@ static const struct compiler default_com
  					   %W{o*:--output-pch=%*}}%V}}}}}}}", 0, 0, 0},
    {".i", "@cpp-output", 0, 0, 0},
    {"@cpp-output",
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch b/poky/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
index 4726267..0884730 100644
--- a/poky/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
+++ b/poky/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
@@ -30,8 +30,7 @@
  gcc/config/sparc/linux64.h   |  4 ++--
  12 files changed, 29 insertions(+), 34 deletions(-)
 
-diff --git a/gcc/config/alpha/linux-elf.h b/gcc/config/alpha/linux-elf.h
-index c1dae8ca2cf..3ce2b76c1a4 100644
+unchanged:
 --- a/gcc/config/alpha/linux-elf.h
 +++ b/gcc/config/alpha/linux-elf.h
 @@ -23,8 +23,8 @@ along with GCC; see the file COPYING3.  If not see
@@ -45,8 +44,7 @@
  #if DEFAULT_LIBC == LIBC_UCLIBC
  #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
  #elif DEFAULT_LIBC == LIBC_GLIBC
-diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
-index 85d0136e76e..6bd95855827 100644
+unchanged:
 --- a/gcc/config/arm/linux-eabi.h
 +++ b/gcc/config/arm/linux-eabi.h
 @@ -65,8 +65,8 @@
@@ -60,8 +58,7 @@
  #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
  
  #define GLIBC_DYNAMIC_LINKER \
-diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
-index 0c1c4e70b6b..6bd643ade11 100644
+unchanged:
 --- a/gcc/config/arm/linux-elf.h
 +++ b/gcc/config/arm/linux-elf.h
 @@ -60,7 +60,7 @@
@@ -73,8 +70,7 @@
  
  #define LINUX_TARGET_LINK_SPEC  "%{h*} \
     %{static:-Bstatic} \
-diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
-index 04b274f1654..7aafcf3ac2d 100644
+unchanged:
 --- a/gcc/config/i386/linux.h
 +++ b/gcc/config/i386/linux.h
 @@ -20,7 +20,7 @@ along with GCC; see the file COPYING3.  If not see
@@ -86,8 +82,7 @@
  
  #undef MUSL_DYNAMIC_LINKER
  #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
-diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h
-index b3822ced528..92d303e80d6 100644
+unchanged:
 --- a/gcc/config/i386/linux64.h
 +++ b/gcc/config/i386/linux64.h
 @@ -27,9 +27,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
@@ -103,8 +98,7 @@
  
  #undef MUSL_DYNAMIC_LINKER32
  #define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
-diff --git a/gcc/config/linux.h b/gcc/config/linux.h
-index 4e1db60fced..87efc5f69fe 100644
+unchanged:
 --- a/gcc/config/linux.h
 +++ b/gcc/config/linux.h
 @@ -94,10 +94,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
@@ -122,8 +116,7 @@
  #define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
  #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
  #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
-diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
-index 44a85e410d9..8d41b5574f6 100644
+unchanged:
 --- a/gcc/config/mips/linux.h
 +++ b/gcc/config/mips/linux.h
 @@ -22,20 +22,20 @@ along with GCC; see the file COPYING3.  If not see
@@ -153,8 +146,7 @@
  
  #undef MUSL_DYNAMIC_LINKER32
  #define MUSL_DYNAMIC_LINKER32 \
-diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h
-index 9238de5bc92..7136a83260a 100644
+unchanged:
 --- a/gcc/config/riscv/linux.h
 +++ b/gcc/config/riscv/linux.h
 @@ -22,7 +22,7 @@ along with GCC; see the file COPYING3.  If not see
@@ -166,8 +158,7 @@
  
  #define MUSL_ABI_SUFFIX \
    "%{mabi=ilp32:-sf}" \
-diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
-index e3f2cd254f6..a11e01faa3d 100644
+unchanged:
 --- a/gcc/config/rs6000/linux64.h
 +++ b/gcc/config/rs6000/linux64.h
 @@ -336,24 +336,19 @@ extern int dot_symbols;
@@ -200,8 +191,7 @@
  
  #undef  DEFAULT_ASM_ENDIAN
  #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
-diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h
-index 7558d2f7195..3aaa6c3a078 100644
+unchanged:
 --- a/gcc/config/sh/linux.h
 +++ b/gcc/config/sh/linux.h
 @@ -64,7 +64,7 @@ along with GCC; see the file COPYING3.  If not see
@@ -213,8 +203,7 @@
  
  #undef SUBTARGET_LINK_EMUL_SUFFIX
  #define SUBTARGET_LINK_EMUL_SUFFIX "%{mfdpic:_fd;:_linux}"
-diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h
-index 2550d7ee8f0..a94f4cd8ba2 100644
+unchanged:
 --- a/gcc/config/sparc/linux.h
 +++ b/gcc/config/sparc/linux.h
 @@ -78,7 +78,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
@@ -226,8 +215,7 @@
  
  #undef  LINK_SPEC
  #define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
-diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
-index 95af8afa9b5..63127afb074 100644
+unchanged:
 --- a/gcc/config/sparc/linux64.h
 +++ b/gcc/config/sparc/linux64.h
 @@ -78,8 +78,8 @@ along with GCC; see the file COPYING3.  If not see
@@ -241,3 +229,19 @@
  
  #ifdef SPARC_BI_ARCH
  
+diff -u b/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
+--- b/gcc/config/aarch64/aarch64-linux.h
++++ b/gcc/config/aarch64/aarch64-linux.h
+@@ -21,10 +21,10 @@
+ #ifndef GCC_AARCH64_LINUX_H
+ #define GCC_AARCH64_LINUX_H
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++#define GLIBC_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+ 
+ #undef MUSL_DYNAMIC_LINKER
+-#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++#define MUSL_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+ 
+ #undef  ASAN_CC1_SPEC
+ #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch b/poky/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch
index 814ce18..6b69257 100644
--- a/poky/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch
+++ b/poky/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch
@@ -1,37 +1,32 @@
-From 12646c0899dec1b127ce71ebacf2571c1c7360f4 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:26:37 +0400
-Subject: [PATCH] gcc: Fix argument list too long error.
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 2/5] gcc: Fix "argument list too long" from install-plugins
 
-There would be an "Argument list too long" error when the
-build directory is longer than 200, this is caused by:
+When building in longer build paths (200+ characters), the
+"echo $(PLUGIN_HEADERS)" from the install-plugins target would cause an
+"argument list too long error" on some systems.
 
-headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`
+Avoid this by calling make's sort function on the list which removes
+duplicates and stops the overflow from reaching the echo command.
+The original sort is left to handle the the .h and .def files.
 
-The PLUGIN_HEADERS is too long before sort, so the "echo" can't handle
-it, use the $(sort list) of GNU make which can handle the too long list
-would fix the problem, the header would be short enough after sorted.
-The "tr ' ' '\012'" was used for translating the space to "\n", the
-$(sort list) doesn't need this.
+2021-10-26 Richard Purdie <richard.purdie@linuxfoundation.org>
 
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+gcc/ChangeLog:
 
-RP: gcc then added *.h and *.def additions to this list, breaking the original
-fix. Add the sort to the original gcc code, leaving the tr+sort to fix the original
-issue but include the new files too as reported by Zhuang <qiuguang.zqg@alibaba-inc.com>
+    * Makefile.in: Fix "argument list too long" from install-plugins
 
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582722.html]
 ---
  gcc/Makefile.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index 7da6f439fff..59c45c81393 100644
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -3678,7 +3678,7 @@ install-plugin: installdirs lang.install-plugin s-header-vars install-gengtype
+Index: gcc-11.2.0/gcc/Makefile.in
+===================================================================
+--- gcc-11.2.0.orig/gcc/Makefile.in
++++ gcc-11.2.0/gcc/Makefile.in
+@@ -3678,7 +3678,7 @@ install-plugin: installdirs lang.install
  # We keep the directory structure for files in config, common/config or
  # c-family and .def files. All other files are flattened to a single directory.
  	$(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch b/poky/meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch
deleted file mode 100644
index 1e65766..0000000
--- a/poky/meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From 7928a4eddc4a6d821a6aa6eaaea1fd60d54e3da9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:28:10 +0400
-Subject: [PATCH] Disable sdt.
-
-We don't list dtrace in DEPENDS so we shouldn't be depending on this header.
-It may or may not exist from preivous builds though. To be determinstic, disable
-sdt.h usage always. This avoids build failures if the header is removed after configure
-but before libgcc is compiled for example.
-
-RP 2012/8/7
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Disable sdt for libstdc++-v3.
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
-Upstream-Status: Inappropriate [hack]
----
- gcc/configure             | 12 ++++++------
- gcc/configure.ac          | 18 +++++++++---------
- libstdc++-v3/configure    |  6 +++---
- libstdc++-v3/configure.ac |  2 +-
- 4 files changed, 19 insertions(+), 19 deletions(-)
-
-diff --git a/gcc/configure b/gcc/configure
-index c5d3bc4ee2d..5160917d73e 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -30812,12 +30812,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/sdt.h in the target C library" >&5
- $as_echo_n "checking sys/sdt.h in the target C library... " >&6; }
- have_sys_sdt_h=no
--if test -f $target_header_dir/sys/sdt.h; then
--  have_sys_sdt_h=yes
--
--$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
--
--fi
-+#if test -f $target_header_dir/sys/sdt.h; then
-+#  have_sys_sdt_h=yes
-+#
-+#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
-+#
-+#fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sys_sdt_h" >&5
- $as_echo "$have_sys_sdt_h" >&6; }
- 
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index f83420326d6..50f78308e8a 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -6653,15 +6653,15 @@ fi
- AC_SUBST([enable_default_ssp])
- 
- # Test for <sys/sdt.h> on the target.
--GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
--AC_MSG_CHECKING(sys/sdt.h in the target C library)
--have_sys_sdt_h=no
--if test -f $target_header_dir/sys/sdt.h; then
--  have_sys_sdt_h=yes
--  AC_DEFINE(HAVE_SYS_SDT_H, 1,
--            [Define if your target C library provides sys/sdt.h])
--fi
--AC_MSG_RESULT($have_sys_sdt_h)
-+#GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
-+#AC_MSG_CHECKING(sys/sdt.h in the target C library)
-+#have_sys_sdt_h=no
-+#if test -f $target_header_dir/sys/sdt.h; then
-+#  have_sys_sdt_h=yes
-+#  AC_DEFINE(HAVE_SYS_SDT_H, 1,
-+#            [Define if your target C library provides sys/sdt.h])
-+#fi
-+#AC_MSG_RESULT($have_sys_sdt_h)
- 
- # Check if TFmode long double should be used by default or not.
- # Some glibc targets used DFmode long double, but with glibc 2.4
-diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
-index a310e9feb6c..c879445b8a6 100755
---- a/libstdc++-v3/configure
-+++ b/libstdc++-v3/configure
-@@ -22014,11 +22014,11 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
- ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- 
--  if test $glibcxx_cv_sys_sdt_h = yes; then
-+#  if test $glibcxx_cv_sys_sdt_h = yes; then
- 
--$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
-+#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
- 
--  fi
-+#  fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_sys_sdt_h" >&5
- $as_echo "$glibcxx_cv_sys_sdt_h" >&6; }
- 
-diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
-index 3c799be82b1..3f63a8ec9ce 100644
---- a/libstdc++-v3/configure.ac
-+++ b/libstdc++-v3/configure.ac
-@@ -240,7 +240,7 @@ GLIBCXX_CHECK_SC_NPROCESSORS_ONLN
- GLIBCXX_CHECK_SC_NPROC_ONLN
- GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP
- GLIBCXX_CHECK_SYSCTL_HW_NCPU
--GLIBCXX_CHECK_SDT_H
-+#GLIBCXX_CHECK_SDT_H
- 
- # Check for available headers.
- AC_CHECK_HEADERS([endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch b/poky/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch
index e6596da..86ab657 100644
--- a/poky/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch
+++ b/poky/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch
@@ -1,50 +1,199 @@
-From b6e229a13aebfbb3fe38c216fd51b68bf71cfa9c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 20 Feb 2015 09:40:59 +0000
-Subject: [PATCH] export CPP
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 1/5] Makefile.in: Ensure build CPP/CPPFLAGS is used for build targets
 
-The OE environment sets and exports CPP as being the target gcc. When
-building gcc-cross-canadian for a mingw targetted sdk, the following can be found
-in build.x86_64-pokysdk-mingw32.i586-poky-linux/build-x86_64-linux/libiberty/config.log:
+During cross compiling, CPP is being set to the target compiler even for
+build targets. As an example, when building a cross compiler targetting
+mingw, the config.log for libiberty in
+build.x86_64-pokysdk-mingw32.i586-poky-linux/build-x86_64-linux/libiberty/config.log
+shows:
 
-configure:3641: checking for _FILE_OFFSET_BITS value needed for large files
-configure:3666: gcc  -c -isystem/media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe  conftest.c >&5
-configure:3666: $? = 0
-configure:3698: result: no
 configure:3786: checking how to run the C preprocessor
-configure:3856: result: x86_64-pokysdk-mingw32-gcc -E --sysroot=/media/build1/poky/build/tmp/sysroots/x86_64-nativesdk-mingw32-pokysdk-mingw32
-configure:3876: x86_64-pokysdk-mingw32-gcc -E --sysroot=/media/build1/poky/build/tmp/sysroots/x86_64-nativesdk-mingw32-pokysdk-mingw32 conftest.c
+configure:3856: result: x86_64-pokysdk-mingw32-gcc -E --sysroot=[sysroot]/x86_64-nativesdk-mingw32-pokysdk-mingw32
+configure:3876: x86_64-pokysdk-mingw32-gcc -E --sysroot=[sysroot]/x86_64-nativesdk-mingw32-pokysdk-mingw32 conftest.c
 configure:3876: $? = 0
 
-Note this is a *build* target (in build-x86_64-linux) so it should be
-using the host "gcc", not x86_64-pokysdk-mingw32-gcc. Since the mingw32
-headers are very different, using the wrong cpp is a real problem. It is leaking
-into configure through the CPP variable. Ultimately this leads to build
-failures related to not being able to include a process.h file for pem-unix.c.
+This is libiberty being built for the build environment, not the target one
+(i.e. in build-x86_64-linux). As such it should be using the build environment's
+gcc and not the target one. In the mingw case the system headers are quite
+different leading to build failures related to not being able to include a
+process.h file for pem-unix.c.
 
-The fix is to ensure we export a sane CPP value into the build
-environment when using build targets. We could define a CPP_FOR_BUILD value which may be
-the version which needs to be upstreamed but for now, this fix is good enough to
-avoid the problem.
+Further analysis shows the same issue occuring for CPPFLAGS too.
 
-RP 22/08/2013
+Fix this by adding support for CPP_FOR_BUILD and CPPFLAGS_FOR_BUILD which
+for example, avoids mixing the mingw headers for host binaries on linux
+systems.
 
-Upstream-Status: Pending
+2021-10-27 Richard Purdie <richard.purdie@linuxfoundation.org>
 
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+ChangeLog:
+
+    * Makefile.tpl: Add CPP_FOR_BUILD and CPPFLAGS_FOR_BUILD support
+    * Makefile.in: Regenerate.
+    * configure: Regenerate.
+    * configure.ac: Add CPP_FOR_BUILD and CPPFLAGS_FOR_BUILD support
+
+gcc/ChangeLog:
+
+    * configure: Regenerate.
+    * configure.ac: Use CPPFLAGS_FOR_BUILD for GMPINC
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582727.html]
+Upstream-Status: Backport [https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=84401ce5fb4ecab55decb472b168100e7593e01f]
 ---
- Makefile.in | 1 +
- 1 file changed, 1 insertion(+)
+ Makefile.in      | 6 ++++++
+ Makefile.tpl     | 6 ++++++
+ configure        | 4 ++++
+ configure.ac     | 4 ++++
+ gcc/configure    | 2 +-
+ gcc/configure.ac | 2 +-
+ 6 files changed, 22 insertions(+), 2 deletions(-)
 
-diff --git a/Makefile.in b/Makefile.in
-index 047be0255e2..af19589fa95 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -149,6 +149,7 @@ BUILD_EXPORTS = \
- 	AR="$(AR_FOR_BUILD)"; export AR; \
- 	AS="$(AS_FOR_BUILD)"; export AS; \
+Index: gcc-11.2.0/Makefile.in
+===================================================================
+--- gcc-11.2.0.orig/Makefile.in
++++ gcc-11.2.0/Makefile.in
+@@ -151,6 +151,8 @@ BUILD_EXPORTS = \
  	CC="$(CC_FOR_BUILD)"; export CC; \
-+	CPP="$(CC_FOR_BUILD) -E"; export CPP; \
  	CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
  	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
++	CPP="$(CPP_FOR_BUILD)"; export CPP; \
++	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
  	CXX="$(CXX_FOR_BUILD)"; export CXX; \
+ 	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
+ 	GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
+@@ -198,6 +200,8 @@ HOST_EXPORTS = \
+ 	AR="$(AR)"; export AR; \
+ 	AS="$(AS)"; export AS; \
+ 	CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
++	CPP_FOR_BUILD="$(CPP_FOR_BUILD)"; export CPP_FOR_BUILD; \
++	CPPFLAGS_FOR_BUILD="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS_FOR_BUILD; \
+ 	CXX_FOR_BUILD="$(CXX_FOR_BUILD)"; export CXX_FOR_BUILD; \
+ 	DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+ 	LD="$(LD)"; export LD; \
+@@ -353,6 +357,8 @@ AR_FOR_BUILD = @AR_FOR_BUILD@
+ AS_FOR_BUILD = @AS_FOR_BUILD@
+ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
++CPP_FOR_BUILD = @CPP_FOR_BUILD@
++CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
+ CXX_FOR_BUILD = @CXX_FOR_BUILD@
+ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+Index: gcc-11.2.0/Makefile.tpl
+===================================================================
+--- gcc-11.2.0.orig/Makefile.tpl
++++ gcc-11.2.0/Makefile.tpl
+@@ -154,6 +154,8 @@ BUILD_EXPORTS = \
+ 	CC="$(CC_FOR_BUILD)"; export CC; \
+ 	CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
+ 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
++	CPP="$(CPP_FOR_BUILD)"; export CPP; \
++	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
+ 	CXX="$(CXX_FOR_BUILD)"; export CXX; \
+ 	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
+ 	GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
+@@ -201,6 +203,8 @@ HOST_EXPORTS = \
+ 	AR="$(AR)"; export AR; \
+ 	AS="$(AS)"; export AS; \
+ 	CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
++	CPP_FOR_BUILD="$(CPP_FOR_BUILD)"; export CPP_FOR_BUILD; \
++	CPPFLAGS_FOR_BUILD="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS_FOR_BUILD; \
+ 	CXX_FOR_BUILD="$(CXX_FOR_BUILD)"; export CXX_FOR_BUILD; \
+ 	DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+ 	LD="$(LD)"; export LD; \
+@@ -356,6 +360,8 @@ AR_FOR_BUILD = @AR_FOR_BUILD@
+ AS_FOR_BUILD = @AS_FOR_BUILD@
+ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
++CPP_FOR_BUILD = @CPP_FOR_BUILD@
++CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
+ CXX_FOR_BUILD = @CXX_FOR_BUILD@
+ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+Index: gcc-11.2.0/configure
+===================================================================
+--- gcc-11.2.0.orig/configure
++++ gcc-11.2.0/configure
+@@ -652,6 +652,8 @@ GFORTRAN_FOR_BUILD
+ DLLTOOL_FOR_BUILD
+ CXX_FOR_BUILD
+ CXXFLAGS_FOR_BUILD
++CPPFLAGS_FOR_BUILD
++CPP_FOR_BUILD
+ CFLAGS_FOR_BUILD
+ CC_FOR_BUILD
+ AS_FOR_BUILD
+@@ -4092,6 +4094,7 @@ if test "${build}" != "${host}" ; then
+   AR_FOR_BUILD=${AR_FOR_BUILD-ar}
+   AS_FOR_BUILD=${AS_FOR_BUILD-as}
+   CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
++  CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CPP)}"
+   CXX_FOR_BUILD=${CXX_FOR_BUILD-g++}
+   GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran}
+   GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo}
+@@ -9809,6 +9812,7 @@ esac
+ # our build compiler if desired.
+ if test x"${build}" = x"${host}" ; then
+   CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
++  CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
+   CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
+   LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
+ fi
+Index: gcc-11.2.0/configure.ac
+===================================================================
+--- gcc-11.2.0.orig/configure.ac
++++ gcc-11.2.0/configure.ac
+@@ -1347,6 +1347,7 @@ if test "${build}" != "${host}" ; then
+   AR_FOR_BUILD=${AR_FOR_BUILD-ar}
+   AS_FOR_BUILD=${AS_FOR_BUILD-as}
+   CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
++  CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CPP)}"
+   CXX_FOR_BUILD=${CXX_FOR_BUILD-g++}
+   GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran}
+   GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo}
+@@ -3321,6 +3322,7 @@ esac
+ # our build compiler if desired.
+ if test x"${build}" = x"${host}" ; then
+   CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
++  CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
+   CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
+   LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
+ fi
+@@ -3387,6 +3389,8 @@ AC_SUBST(AR_FOR_BUILD)
+ AC_SUBST(AS_FOR_BUILD)
+ AC_SUBST(CC_FOR_BUILD)
+ AC_SUBST(CFLAGS_FOR_BUILD)
++AC_SUBST(CPP_FOR_BUILD)
++AC_SUBST(CPPFLAGS_FOR_BUILD)
+ AC_SUBST(CXXFLAGS_FOR_BUILD)
+ AC_SUBST(CXX_FOR_BUILD)
+ AC_SUBST(DLLTOOL_FOR_BUILD)
+Index: gcc-11.2.0/gcc/configure
+===================================================================
+--- gcc-11.2.0.orig/gcc/configure
++++ gcc-11.2.0/gcc/configure
+@@ -12699,7 +12699,7 @@ else
+ 	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+ 	CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
+ 	LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
+-	GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
++	GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
+ 	${realsrcdir}/configure \
+ 		--enable-languages=${enable_languages-all} \
+ 		${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
+Index: gcc-11.2.0/gcc/configure.ac
+===================================================================
+--- gcc-11.2.0.orig/gcc/configure.ac
++++ gcc-11.2.0/gcc/configure.ac
+@@ -2023,7 +2023,7 @@ else
+ 	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+ 	CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
+ 	LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
+-	GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
++	GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
+ 	${realsrcdir}/configure \
+ 		--enable-languages=${enable_languages-all} \
+ 		${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch b/poky/meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
deleted file mode 100644
index 0f3b386..0000000
--- a/poky/meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 7faad21154a76b200efcced9e12945057c94dff3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 28 Apr 2015 23:15:27 -0700
-Subject: [PATCH] Use SYSTEMLIBS_DIR replacement instead of hardcoding
- base_libdir
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/config/aarch64/aarch64-linux.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
-index 7f2529a2a1d..5303b39186f 100644
---- a/gcc/config/aarch64/aarch64-linux.h
-+++ b/gcc/config/aarch64/aarch64-linux.h
-@@ -21,7 +21,7 @@
- #ifndef GCC_AARCH64_LINUX_H
- #define GCC_AARCH64_LINUX_H
- 
--#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
-+#define GLIBC_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
- 
- #undef MUSL_DYNAMIC_LINKER
- #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch b/poky/meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch
deleted file mode 100644
index 41536a8..0000000
--- a/poky/meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 96aa24a874331a318693e4fccc4bc4e7d3fbad2b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 28 Apr 2015 23:18:39 -0700
-Subject: [PATCH] aarch64: Add support for musl ldso
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/config/aarch64/aarch64-linux.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
-index 5303b39186f..4bcae7f3110 100644
---- a/gcc/config/aarch64/aarch64-linux.h
-+++ b/gcc/config/aarch64/aarch64-linux.h
-@@ -24,7 +24,7 @@
- #define GLIBC_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
- 
- #undef MUSL_DYNAMIC_LINKER
--#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
-+#define MUSL_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
- 
- #undef  ASAN_CC1_SPEC
- #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch b/poky/meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch
deleted file mode 100644
index c2698f9..0000000
--- a/poky/meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From cd5db101e3c4e72248f988a67ce28be8e24f66d4 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 7 Dec 2015 23:42:45 +0000
-Subject: [PATCH] Fix various _FOR_BUILD and related variables
-
-When doing a FOR_BUILD thing, you have to override CFLAGS with
-CFLAGS_FOR_BUILD. And if you use C++, you also have to override
-CXXFLAGS with CXXFLAGS_FOR_BUILD.
-Without this, when building for mingw, you end up trying to use
-the mingw headers for a host build.
-
-The same goes for other variables as well, such as CPPFLAGS,
-CPP, and GMPINC.
-
-Upstream-Status: Pending
-
-Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile.in      | 6 ++++++
- Makefile.tpl     | 5 +++++
- gcc/Makefile.in  | 2 +-
- gcc/configure    | 2 +-
- gcc/configure.ac | 2 +-
- 5 files changed, 14 insertions(+), 3 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index af19589fa95..d0116a23e1a 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -152,6 +152,7 @@ BUILD_EXPORTS = \
- 	CPP="$(CC_FOR_BUILD) -E"; export CPP; \
- 	CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
- 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-+	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
- 	CXX="$(CXX_FOR_BUILD)"; export CXX; \
- 	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
- 	GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
-@@ -171,6 +172,9 @@ BUILD_EXPORTS = \
- # built for the build system to override those in BASE_FLAGS_TO_PASS.
- EXTRA_BUILD_FLAGS = \
- 	CFLAGS="$(CFLAGS_FOR_BUILD)" \
-+	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
-+	CPP="$(CC_FOR_BUILD) -E" \
-+	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)" \
- 	LDFLAGS="$(LDFLAGS_FOR_BUILD)"
- 
- # This is the list of directories to built for the host system.
-@@ -188,6 +192,7 @@ HOST_SUBDIR = @host_subdir@
- HOST_EXPORTS = \
- 	$(BASE_EXPORTS) \
- 	CC="$(CC)"; export CC; \
-+	CPP="$(CC) -E"; export CPP; \
- 	ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
- 	CFLAGS="$(CFLAGS)"; export CFLAGS; \
- 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-@@ -776,6 +781,7 @@ BASE_FLAGS_TO_PASS = \
- 	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
- 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
- 	"CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
-+	"CXXFLAGS_FOR_BUILD=$(CXXFLAGS_FOR_BUILD)" \
- 	"EXPECT=$(EXPECT)" \
- 	"FLEX=$(FLEX)" \
- 	"INSTALL=$(INSTALL)" \
-diff --git a/Makefile.tpl b/Makefile.tpl
-index 6e0337fb48f..4fcac93d3d8 100644
---- a/Makefile.tpl
-+++ b/Makefile.tpl
-@@ -154,6 +154,7 @@ BUILD_EXPORTS = \
- 	CC="$(CC_FOR_BUILD)"; export CC; \
- 	CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
- 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-+	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
- 	CXX="$(CXX_FOR_BUILD)"; export CXX; \
- 	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
- 	GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
-@@ -173,6 +174,9 @@ BUILD_EXPORTS = \
- # built for the build system to override those in BASE_FLAGS_TO_PASS.
- EXTRA_BUILD_FLAGS = \
- 	CFLAGS="$(CFLAGS_FOR_BUILD)" \
-+	CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
-+	CPP="$(CC_FOR_BUILD) -E" \
-+	CPPFLAGS="$(CPPFLAGS_FOR_BUILD)" \
- 	LDFLAGS="$(LDFLAGS_FOR_BUILD)"
- 
- # This is the list of directories to built for the host system.
-@@ -190,6 +194,7 @@ HOST_SUBDIR = @host_subdir@
- HOST_EXPORTS = \
- 	$(BASE_EXPORTS) \
- 	CC="$(CC)"; export CC; \
-+	CPP="$(CC) -E"; export CPP; \
- 	ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
- 	CFLAGS="$(CFLAGS)"; export CFLAGS; \
- 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index 9b17d120aa1..3053d05903c 100644
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -820,7 +820,7 @@ BUILD_LDFLAGS=@BUILD_LDFLAGS@
- BUILD_NO_PIE_FLAG = @BUILD_NO_PIE_FLAG@
- BUILD_LDFLAGS += $(BUILD_NO_PIE_FLAG)
- BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
--		-I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS)
-+		-I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS_FOR_BUILD)
- 
- # Actual name to use when installing a native compiler.
- GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
-diff --git a/gcc/configure b/gcc/configure
-index e663052cad2..b0906aa3e96 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -12699,7 +12699,7 @@ else
- 	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
- 	CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
- 	LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
--	GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
-+	GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
- 	${realsrcdir}/configure \
- 		--enable-languages=${enable_languages-all} \
- 		${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 2b84875b028..bfbd8946e8a 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -2023,7 +2023,7 @@ else
- 	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
- 	CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
- 	LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
--	GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
-+	GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
- 	${realsrcdir}/configure \
- 		--enable-languages=${enable_languages-all} \
- 		${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch b/poky/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch
index 2e65740..97c2713 100644
--- a/poky/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch
+++ b/poky/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch
@@ -1,20 +1,26 @@
-From 9bbce1b5a10caf636eee137e5a229e5434a6c8f5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 2 Feb 2016 10:26:10 -0800
-Subject: [PATCH] nios2: Define MUSL_DYNAMIC_LINKER
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 4/5] gcc/nios2: Define the musl linker
 
-Upstream-Status: Pending
+Add a definition of the musl linker used on the nios2 platform.
 
-Signed-off-by: Marek Vasut <marex@denx.de>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+2021-10-26 Richard Purdie <richard.purdie@linuxfoundation.org>
+
+gcc/ChangeLog:
+
+    * config/nios2/linux.h (MUSL_DYNAMIC_LINKER): Add musl linker
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582723.html]
+Upstream-Status: Backport [https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=e5ddbbf992b909d8e38851bd3179d29389e6ac97]
 ---
  gcc/config/nios2/linux.h | 1 +
  1 file changed, 1 insertion(+)
 
-diff --git a/gcc/config/nios2/linux.h b/gcc/config/nios2/linux.h
-index 08edf1521f6..15696d86241 100644
---- a/gcc/config/nios2/linux.h
-+++ b/gcc/config/nios2/linux.h
+Index: gcc-11.2.0/gcc/config/nios2/linux.h
+===================================================================
+--- gcc-11.2.0.orig/gcc/config/nios2/linux.h
++++ gcc-11.2.0/gcc/config/nios2/linux.h
 @@ -30,6 +30,7 @@
  #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
  
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch b/poky/meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch
deleted file mode 100644
index 0be03e6..0000000
--- a/poky/meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch
+++ /dev/null
@@ -1,255 +0,0 @@
-From bb171ef618f8892bd56e57ae41ecb6e02caa8173 Mon Sep 17 00:00:00 2001
-From: RAGHUNATH LOLUR <raghunath.lolur@kpit.com>
-Date: Wed, 6 Dec 2017 22:52:26 -0800
-Subject: [PATCH] Fix for testsuite failure
-
-2017-11-16  Raghunath Lolur  <raghunath.lolur@kpit.com>
-
-	* gcc.dg/pr56275.c: If SSE is disabled, ensure that
-	"-mfpmath" is not set to use SSE. Set "-mfpmath=387".
-	* gcc.dg/pr68306.c: Likewise
-	* gcc.dg/pr68306-2.c: Likewise
-	* gcc.dg/pr68306-3.c: Likewise
-	* gcc.dg/pr69634.c: Likewise
-	* gcc.target/i386/amd64-abi-1.c: Likewise
-	* gcc.target/i386/funcspec-6.c: Likewise
-	* gcc.target/i386/interrupt-387-err-1.c: Likewise
-	* gcc.target/i386/isa-14.c: Likewise
-	* gcc.target/i386/pr44948-2b.c: Likewise
-	* gcc.target/i386/pr53425-1.c: Likewise
-	* gcc.target/i386/pr53425-2.c: Likewise
-	* gcc.target/i386/pr55247.c: Likewise
-	* gcc.target/i386/pr59644.c: Likewise
-	* gcc.target/i386/pr62120.c: Likewise
-	* gcc.target/i386/pr70467-1.c: Likewise
-	* gcc.target/i386/warn-vect-op-1.c: Likewise
-
-If -Wall, -Werror are used during compilation various test cases fail
-to compile.
-
-If SSE is disabled, be sure to -mfpmath=387 to resolve this.
-
-This patch removes the changes to Changelog from the original patch.
-This will help us avoid conflicts.
-
-Upstream-Status: Pending
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
----
- gcc/testsuite/gcc.dg/pr56275.c                      | 2 +-
- gcc/testsuite/gcc.dg/pr68306-2.c                    | 2 +-
- gcc/testsuite/gcc.dg/pr68306-3.c                    | 2 +-
- gcc/testsuite/gcc.dg/pr68306.c                      | 2 +-
- gcc/testsuite/gcc.dg/pr69634.c                      | 2 +-
- gcc/testsuite/gcc.target/i386/amd64-abi-1.c         | 2 +-
- gcc/testsuite/gcc.target/i386/funcspec-6.c          | 1 +
- gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c | 2 +-
- gcc/testsuite/gcc.target/i386/isa-14.c              | 2 +-
- gcc/testsuite/gcc.target/i386/pr44948-2b.c          | 2 +-
- gcc/testsuite/gcc.target/i386/pr53425-1.c           | 2 +-
- gcc/testsuite/gcc.target/i386/pr53425-2.c           | 2 +-
- gcc/testsuite/gcc.target/i386/pr55247.c             | 2 +-
- gcc/testsuite/gcc.target/i386/pr59644.c             | 2 +-
- gcc/testsuite/gcc.target/i386/pr62120.c             | 2 +-
- gcc/testsuite/gcc.target/i386/pr70467-1.c           | 2 +-
- gcc/testsuite/gcc.target/i386/warn-vect-op-1.c      | 2 +-
- 17 files changed, 17 insertions(+), 16 deletions(-)
-
-diff --git a/gcc/testsuite/gcc.dg/pr56275.c b/gcc/testsuite/gcc.dg/pr56275.c
-index b901bb2b199..a4f6c95e1a1 100644
---- a/gcc/testsuite/gcc.dg/pr56275.c
-+++ b/gcc/testsuite/gcc.dg/pr56275.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O2" } */
--/* { dg-additional-options "-mno-sse" { target { i?86-*-* x86_64-*-* } } } */
-+/* { dg-additional-options "-mno-sse -mfpmath=387" { target { i?86-*-* x86_64-*-* } } } */
- 
- typedef long long v2tw __attribute__ ((vector_size (2 * sizeof (long long))));
- 
-diff --git a/gcc/testsuite/gcc.dg/pr68306-2.c b/gcc/testsuite/gcc.dg/pr68306-2.c
-index 4672ebe7987..2a368c484b6 100644
---- a/gcc/testsuite/gcc.dg/pr68306-2.c
-+++ b/gcc/testsuite/gcc.dg/pr68306-2.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O3" } */
--/* { dg-additional-options "-mno-sse -mno-mmx" { target i?86-*-* x86_64-*-* } } */
-+/* { dg-additional-options "-mno-sse -mno-mmx -mfpmath=387" { target i?86-*-* x86_64-*-* } } */
- 
- struct {
-     int tz_minuteswest;
-diff --git a/gcc/testsuite/gcc.dg/pr68306-3.c b/gcc/testsuite/gcc.dg/pr68306-3.c
-index f5a8c102cf8..df3390c64c2 100644
---- a/gcc/testsuite/gcc.dg/pr68306-3.c
-+++ b/gcc/testsuite/gcc.dg/pr68306-3.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O3" } */
--/* { dg-additional-options "-mno-sse -mno-mmx" { target i?86-*-* x86_64-*-* } } */
-+/* { dg-additional-options "-mno-sse -mno-mmx -mfpmath=387" { target i?86-*-* x86_64-*-* } } */
- /* { dg-additional-options "-mno-altivec -mno-vsx" { target powerpc*-*-* } } */
- 
- extern void fn2();
-diff --git a/gcc/testsuite/gcc.dg/pr68306.c b/gcc/testsuite/gcc.dg/pr68306.c
-index 54e5b40f221..0813389e2c1 100644
---- a/gcc/testsuite/gcc.dg/pr68306.c
-+++ b/gcc/testsuite/gcc.dg/pr68306.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O3" } */
--/* { dg-additional-options "-mno-sse -mno-mmx" { target i?86-*-* x86_64-*-* } } */
-+/* { dg-additional-options "-mno-sse -mno-mmx -mfpmath=387" { target i?86-*-* x86_64-*-* } } */
- 
- enum powerpc_pmc_type { PPC_PMC_IBM };
- struct {
-diff --git a/gcc/testsuite/gcc.dg/pr69634.c b/gcc/testsuite/gcc.dg/pr69634.c
-index 60a56149463..bcc23f9ccd6 100644
---- a/gcc/testsuite/gcc.dg/pr69634.c
-+++ b/gcc/testsuite/gcc.dg/pr69634.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O2 -fno-dce -fschedule-insns -fno-tree-vrp -fcompare-debug -Wno-psabi" } */
--/* { dg-additional-options "-mno-sse" { target i?86-*-* x86_64-*-* } } */
-+/* { dg-additional-options "-mno-sse -mfpmath=387" { target i?86-*-* x86_64-*-* } } */
- /* { dg-require-effective-target scheduling } */
- 
- typedef unsigned short u16;
-diff --git a/gcc/testsuite/gcc.target/i386/amd64-abi-1.c b/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
-index 69fde57bf06..7f1f1c03edf 100644
---- a/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
-+++ b/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile { target { ! ia32 } } } */
--/* { dg-options "-mno-sse" } */
-+/* { dg-options "-mno-sse -mfpmath=387" } */
- /* { dg-additional-options "-mabi=sysv" { target *-*-mingw* } } */
- 
- double foo(void) { return 0; }	/* { dg-error "SSE disabled" } */
-diff --git a/gcc/testsuite/gcc.target/i386/funcspec-6.c b/gcc/testsuite/gcc.target/i386/funcspec-6.c
-index ea896b7ebfd..bf15569b826 100644
---- a/gcc/testsuite/gcc.target/i386/funcspec-6.c
-+++ b/gcc/testsuite/gcc.target/i386/funcspec-6.c
-@@ -1,6 +1,7 @@
- /* Test whether all of the 64-bit function specific options are accepted
-    without error.  */
- /* { dg-do compile { target { ! ia32 } } } */
-+/* { dg-additional-options "-mfpmath=387" } */
- 
- #include "funcspec-56.inc"
- 
-diff --git a/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c b/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
-index 8561a3c26d6..6377f814645 100644
---- a/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
-+++ b/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O2 -mgeneral-regs-only -mno-cld -mno-iamcu -m80387" } */
-+/* { dg-options "-O2 -mgeneral-regs-only -mno-cld -mno-iamcu -m80387 -mfpmath=387" } */
- 
- typedef unsigned int uword_t __attribute__ ((mode (__word__)));
- 
-diff --git a/gcc/testsuite/gcc.target/i386/isa-14.c b/gcc/testsuite/gcc.target/i386/isa-14.c
-index 5d49e6e77fe..1de2db92bdd 100644
---- a/gcc/testsuite/gcc.target/i386/isa-14.c
-+++ b/gcc/testsuite/gcc.target/i386/isa-14.c
-@@ -1,5 +1,5 @@
- /* { dg-do run } */
--/* { dg-options "-march=x86-64 -msse4a -mfma4 -mno-sse" } */
-+/* { dg-options "-march=x86-64 -msse4a -mfma4 -mno-sse -mfpmath=387" } */
- 
- extern void abort (void);
- 
-diff --git a/gcc/testsuite/gcc.target/i386/pr44948-2b.c b/gcc/testsuite/gcc.target/i386/pr44948-2b.c
-index fa1769b62fb..f79fb12726f 100644
---- a/gcc/testsuite/gcc.target/i386/pr44948-2b.c
-+++ b/gcc/testsuite/gcc.target/i386/pr44948-2b.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O -mno-sse -Wno-psabi -mtune=generic" } */
-+/* { dg-options "-O -mno-sse -Wno-psabi -mtune=generic -mfpmath=387" } */
- 
- struct A
- { 
-diff --git a/gcc/testsuite/gcc.target/i386/pr53425-1.c b/gcc/testsuite/gcc.target/i386/pr53425-1.c
-index 2e89ff7d81d..6339bf6b736 100644
---- a/gcc/testsuite/gcc.target/i386/pr53425-1.c
-+++ b/gcc/testsuite/gcc.target/i386/pr53425-1.c
-@@ -1,6 +1,6 @@
- /* PR target/53425 */
- /* { dg-do compile { target { ! ia32 } } } */
--/* { dg-options "-O2 -mno-sse" } */
-+/* { dg-options "-O2 -mno-sse -mfpmath=387" } */
- /* { dg-skip-if "no SSE vector" { x86_64-*-mingw* } } */
- 
- typedef double __v2df __attribute__ ((__vector_size__ (16)));
-diff --git a/gcc/testsuite/gcc.target/i386/pr53425-2.c b/gcc/testsuite/gcc.target/i386/pr53425-2.c
-index 61f6283dbe9..2c5a55f0ac3 100644
---- a/gcc/testsuite/gcc.target/i386/pr53425-2.c
-+++ b/gcc/testsuite/gcc.target/i386/pr53425-2.c
-@@ -1,6 +1,6 @@
- /* PR target/53425 */
- /* { dg-do compile { target { ! ia32 } } } */
--/* { dg-options "-O2 -mno-sse" } */
-+/* { dg-options "-O2 -mno-sse -mfpmath=387" } */
- /* { dg-skip-if "no SSE vector" { x86_64-*-mingw* } } */
- 
- typedef float __v2sf __attribute__ ((__vector_size__ (8)));
-diff --git a/gcc/testsuite/gcc.target/i386/pr55247.c b/gcc/testsuite/gcc.target/i386/pr55247.c
-index 23366d0909d..9810e3abb76 100644
---- a/gcc/testsuite/gcc.target/i386/pr55247.c
-+++ b/gcc/testsuite/gcc.target/i386/pr55247.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile { target { ! ia32 } } } */
- /* { dg-require-effective-target maybe_x32 } */
--/* { dg-options "-O2 -mno-sse -mno-mmx -mx32 -maddress-mode=long" } */
-+/* { dg-options "-O2 -mno-sse -mno-mmx -mx32 -maddress-mode=long -mfpmath=387" } */
- 
- typedef unsigned int uint32_t;
- typedef uint32_t Elf32_Word;
-diff --git a/gcc/testsuite/gcc.target/i386/pr59644.c b/gcc/testsuite/gcc.target/i386/pr59644.c
-index 96006b3e338..4287e4538bf 100644
---- a/gcc/testsuite/gcc.target/i386/pr59644.c
-+++ b/gcc/testsuite/gcc.target/i386/pr59644.c
-@@ -1,6 +1,6 @@
- /* PR target/59644 */
- /* { dg-do run { target lp64 } } */
--/* { dg-options "-O2 -ffreestanding -mno-sse -mpreferred-stack-boundary=3 -maccumulate-outgoing-args -mno-red-zone" } */
-+/* { dg-options "-O2 -ffreestanding -mno-sse -mpreferred-stack-boundary=3 -maccumulate-outgoing-args -mno-red-zone -mfpmath=387" } */
- 
- /* This test uses __builtin_trap () instead of e.g. abort,
-    because due to -mpreferred-stack-boundary=3 it should not call
-diff --git a/gcc/testsuite/gcc.target/i386/pr62120.c b/gcc/testsuite/gcc.target/i386/pr62120.c
-index 28d85d37712..c93266bd4bc 100644
---- a/gcc/testsuite/gcc.target/i386/pr62120.c
-+++ b/gcc/testsuite/gcc.target/i386/pr62120.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-mno-sse" } */
-+/* { dg-options "-mno-sse -mfpmath=387" } */
- 
- void foo ()
- {
-diff --git a/gcc/testsuite/gcc.target/i386/pr70467-1.c b/gcc/testsuite/gcc.target/i386/pr70467-1.c
-index 4e112c88d07..bcfb396a68d 100644
---- a/gcc/testsuite/gcc.target/i386/pr70467-1.c
-+++ b/gcc/testsuite/gcc.target/i386/pr70467-1.c
-@@ -1,6 +1,6 @@
- /* PR rtl-optimization/70467 */
- /* { dg-do compile } */
--/* { dg-options "-O2 -mno-sse" } */
-+/* { dg-options "-O2 -mno-sse -mfpmath=387" } */
- 
- void foo (unsigned long long *);
- 
-diff --git a/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c b/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
-index 6cda1534311..26e37f5b8ba 100644
---- a/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
-+++ b/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile { target { ! ia32 } } }  */
--/* { dg-options "-mno-sse -Wvector-operation-performance" }  */
-+/* { dg-options "-mno-sse -Wvector-operation-performance -mfpmath=387" }  */
- #define vector(elcount, type)  \
- __attribute__((vector_size((elcount)*sizeof(type)))) type
- 
diff --git a/poky/meta/recipes-devtools/git/git_2.33.0.bb b/poky/meta/recipes-devtools/git/git_2.33.0.bb
deleted file mode 100644
index f8d4dac..0000000
--- a/poky/meta/recipes-devtools/git/git_2.33.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require git.inc
-
-EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
-                 ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
-                 "
-EXTRA_OEMAKE += "NO_GETTEXT=1"
-
-SRC_URI[tarball.sha256sum] = "02d909d0bba560d3a1008bd00dd577621ffb57401b09175fab2bf6da0e9704ae"
-SRC_URI[manpages.sha256sum] = "ba9cd0f29a3632a3b78f8ed2389f0780aa6e8fcbe258259d7c584920d19ed1f7"
diff --git a/poky/meta/recipes-devtools/git/git_2.33.1.bb b/poky/meta/recipes-devtools/git/git_2.33.1.bb
new file mode 100644
index 0000000..0dbde7f
--- /dev/null
+++ b/poky/meta/recipes-devtools/git/git_2.33.1.bb
@@ -0,0 +1,10 @@
+require git.inc
+
+EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
+                 ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
+                 "
+EXTRA_OEMAKE += "NO_GETTEXT=1"
+
+SRC_URI[tarball.sha256sum] = "02047f8dc8934d57ff5e02aadd8a2fe8e0bcf94a7158da375e48086cc46fce1d"
+SRC_URI[manpages.sha256sum] = "292b08ca1b79422ff478a6221980099c5e3c0a38aba39d952063eedb68e27d93"
+
diff --git a/poky/meta/recipes-devtools/go/go-1.16.7.inc b/poky/meta/recipes-devtools/go/go-1.16.7.inc
deleted file mode 100644
index 02a9268..0000000
--- a/poky/meta/recipes-devtools/go/go-1.16.7.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-require go-common.inc
-
-GO_BASEVERSION = "1.16"
-PV = "1.16.7"
-FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
-
-SRC_URI += "\
-    file://0001-allow-CC-and-CXX-to-have-multiple-words.patch \
-    file://0002-cmd-go-make-content-based-hash-generation-less-pedan.patch \
-    file://0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch \
-    file://0004-ld-add-soname-to-shareable-objects.patch \
-    file://0005-make.bash-override-CC-when-building-dist-and-go_boot.patch \
-    file://0006-cmd-dist-separate-host-and-target-builds.patch \
-    file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
-    file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
-    file://0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch \
-"
-SRC_URI[main.sha256sum] = "1a9f2894d3d878729f7045072f30becebe243524cf2fce4e0a7b248b1e0654ac"
-
-# Upstream don't believe it is a signifiant real world issue and will only
-# fix in 1.17 onwards where we can drop this.
-# https://github.com/golang/go/issues/30999#issuecomment-910470358
-CVE_CHECK_WHITELIST += "CVE-2021-29923"
diff --git a/poky/meta/recipes-devtools/go/go-1.16.8.inc b/poky/meta/recipes-devtools/go/go-1.16.8.inc
new file mode 100644
index 0000000..925bf46
--- /dev/null
+++ b/poky/meta/recipes-devtools/go/go-1.16.8.inc
@@ -0,0 +1,25 @@
+require go-common.inc
+
+GO_BASEVERSION = "1.16"
+PV = "1.16.8"
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
+
+SRC_URI += "\
+    file://0001-allow-CC-and-CXX-to-have-multiple-words.patch \
+    file://0002-cmd-go-make-content-based-hash-generation-less-pedan.patch \
+    file://0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch \
+    file://0004-ld-add-soname-to-shareable-objects.patch \
+    file://0005-make.bash-override-CC-when-building-dist-and-go_boot.patch \
+    file://0006-cmd-dist-separate-host-and-target-builds.patch \
+    file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
+    file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
+    file://0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch \
+"
+SRC_URI[main.sha256sum] = "8f2a8c24b793375b3243df82fdb0c8387486dcc8a892ca1c991aa99ace086b98"
+
+# Upstream don't believe it is a signifiant real world issue and will only
+# fix in 1.17 onwards where we can drop this.
+# https://github.com/golang/go/issues/30999#issuecomment-910470358
+CVE_CHECK_WHITELIST += "CVE-2021-29923"
diff --git a/poky/meta/recipes-devtools/go/go-binary-native_1.16.7.bb b/poky/meta/recipes-devtools/go/go-binary-native_1.16.7.bb
deleted file mode 100644
index cb54c28..0000000
--- a/poky/meta/recipes-devtools/go/go-binary-native_1.16.7.bb
+++ /dev/null
@@ -1,46 +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"
-
-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] = "7fe7a73f55ba3e2285da36f8b085e5c0159e9564ef5f63ee0ed6b818ade8ef04"
-SRC_URI[go_linux_arm64.sha256sum] = "63d6b53ecbd2b05c1f0e9903c92042663f2f68afdbb67f4d0d12700156869bac"
-
-UPSTREAM_CHECK_URI = "https://golang.org/dl/"
-UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
-
-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.16.8.bb b/poky/meta/recipes-devtools/go/go-binary-native_1.16.8.bb
new file mode 100644
index 0000000..9262220
--- /dev/null
+++ b/poky/meta/recipes-devtools/go/go-binary-native_1.16.8.bb
@@ -0,0 +1,46 @@
+# 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"
+
+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] = "f32501aeb8b7b723bc7215f6c373abb6981bbc7e1c7b44e9f07317e1a300dce2"
+SRC_URI[go_linux_arm64.sha256sum] = "430dbe185417204f6788913197ab3b189b6deae9c9b524f262858e53dab239c2"
+
+UPSTREAM_CHECK_URI = "https://golang.org/dl/"
+UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
+
+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.16.7.bb b/poky/meta/recipes-devtools/go/go-cross-canadian_1.16.8.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-cross-canadian_1.16.7.bb
rename to poky/meta/recipes-devtools/go/go-cross-canadian_1.16.8.bb
diff --git a/poky/meta/recipes-devtools/go/go-cross_1.16.7.bb b/poky/meta/recipes-devtools/go/go-cross_1.16.8.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-cross_1.16.7.bb
rename to poky/meta/recipes-devtools/go/go-cross_1.16.8.bb
diff --git a/poky/meta/recipes-devtools/go/go-crosssdk_1.16.7.bb b/poky/meta/recipes-devtools/go/go-crosssdk_1.16.8.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-crosssdk_1.16.7.bb
rename to poky/meta/recipes-devtools/go/go-crosssdk_1.16.8.bb
diff --git a/poky/meta/recipes-devtools/go/go-native_1.16.7.bb b/poky/meta/recipes-devtools/go/go-native_1.16.8.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-native_1.16.7.bb
rename to poky/meta/recipes-devtools/go/go-native_1.16.8.bb
diff --git a/poky/meta/recipes-devtools/go/go-runtime_1.16.7.bb b/poky/meta/recipes-devtools/go/go-runtime_1.16.8.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-runtime_1.16.7.bb
rename to poky/meta/recipes-devtools/go/go-runtime_1.16.8.bb
diff --git a/poky/meta/recipes-devtools/go/go_1.16.7.bb b/poky/meta/recipes-devtools/go/go_1.16.8.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go_1.16.7.bb
rename to poky/meta/recipes-devtools/go/go_1.16.8.bb
diff --git a/poky/meta/recipes-devtools/help2man/help2man_1.48.4.bb b/poky/meta/recipes-devtools/help2man/help2man_1.48.4.bb
deleted file mode 100644
index cdc2056..0000000
--- a/poky/meta/recipes-devtools/help2man/help2man_1.48.4.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "Program for creating simple man pages"
-HOMEPAGE = "https://www.gnu.org/software/help2man/"
-DESCRIPTION = "help2man is a tool for automatically generating simple manual pages from program output."
-SECTION = "devel"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
-
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "937194af8e31e97467768ec2e3ce8d396bd1e32e8ea56df23f634485b5f14e09"
-
-inherit autotools
-
-# This is a hand-maintained aclocal.m4 but our autotools class currently deletes
-# aclocal.m4.
-EXTRA_AUTORECONF += "--exclude=aclocal"
-
-EXTRA_OECONF = "--disable-nls"
-
-do_install:append () {
-	# Make sure we use /usr/bin/env perl
-	sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2man
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/help2man/help2man_1.48.5.bb b/poky/meta/recipes-devtools/help2man/help2man_1.48.5.bb
new file mode 100644
index 0000000..7fe59cb
--- /dev/null
+++ b/poky/meta/recipes-devtools/help2man/help2man_1.48.5.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Program for creating simple man pages"
+HOMEPAGE = "https://www.gnu.org/software/help2man/"
+DESCRIPTION = "help2man is a tool for automatically generating simple manual pages from program output."
+SECTION = "devel"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "6739e4caa42e6aed3399be4387ca79399640967334e91728863b8eaa922582be"
+
+inherit autotools
+
+# This is a hand-maintained aclocal.m4 but our autotools class currently deletes
+# aclocal.m4.
+EXTRA_AUTORECONF += "--exclude=aclocal"
+
+EXTRA_OECONF = "--disable-nls"
+
+do_install:append () {
+	# Make sure we use /usr/bin/env perl
+	sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2man
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/json-c/json-c_0.15.bb b/poky/meta/recipes-devtools/json-c/json-c_0.15.bb
index 863463c..a4673a2 100644
--- a/poky/meta/recipes-devtools/json-c/json-c_0.15.bb
+++ b/poky/meta/recipes-devtools/json-c/json-c_0.15.bb
@@ -8,7 +8,7 @@
 
 SRC_URI[sha256sum] = "b8d80a1ddb718b3ba7492916237bbf86609e9709fb007e7f7d4322f02341a4c6"
 
-UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/tags"
 UPSTREAM_CHECK_REGEX = "json-c-(?P<pver>\d+(\.\d+)+)-\d+"
 
 RPROVIDES:${PN} = "libjson"
diff --git a/poky/meta/recipes-devtools/libcomps/libcomps_0.1.17.bb b/poky/meta/recipes-devtools/libcomps/libcomps_0.1.17.bb
deleted file mode 100644
index 502bc46..0000000
--- a/poky/meta/recipes-devtools/libcomps/libcomps_0.1.17.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "Libcomps is alternative for yum.comps library (which is for managing rpm package groups)."
-HOMEPAGE = "https://github.com/rpm-software-management/libcomps"
-DESCRIPTION = "Libcomps is alternative for yum.comps library. It's written in pure C as library and there's bindings for python2 and python3."
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "git://github.com/rpm-software-management/libcomps.git \
-           file://0001-Add-crc32.c-to-sources-list.patch \
-           file://0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
-           "
-
-SRCREV = "dfaffdce1969042bda4a184865861573bb07a5a3"
-
-S = "${WORKDIR}/git"
-
-inherit cmake distutils3-base
-
-DEPENDS += "libxml2 expat libcheck"
-
-EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3"
-OECMAKE_SOURCEPATH = "${S}/libcomps"
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/poky/meta/recipes-devtools/libcomps/libcomps_0.1.18.bb b/poky/meta/recipes-devtools/libcomps/libcomps_0.1.18.bb
new file mode 100644
index 0000000..8fe43ed
--- /dev/null
+++ b/poky/meta/recipes-devtools/libcomps/libcomps_0.1.18.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Libcomps is alternative for yum.comps library (which is for managing rpm package groups)."
+HOMEPAGE = "https://github.com/rpm-software-management/libcomps"
+DESCRIPTION = "Libcomps is alternative for yum.comps library. It's written in pure C as library and there's bindings for python2 and python3."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/rpm-software-management/libcomps.git \
+           file://0001-Add-crc32.c-to-sources-list.patch \
+           file://0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
+           "
+
+SRCREV = "dee4ae37f7818709802de28c4d16fa823bd83ae2"
+
+S = "${WORKDIR}/git"
+
+inherit cmake distutils3-base
+
+DEPENDS += "libxml2 expat libcheck"
+
+EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3"
+OECMAKE_SOURCEPATH = "${S}/libcomps"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch b/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch
deleted file mode 100644
index b740521..0000000
--- a/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From fc0b81bb717db3f41513f09f6661676a7aea6dd4 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 9 Mar 2021 19:30:42 +0000
-Subject: [PATCH] libdnf/config.h: avoid the use of non-portable __WORDSIZE
-
-Upstream-Status: Submitted [https://github.com/rpm-software-management/libdnf/pull/1159]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- libdnf/config.h | 9 +++------
- 1 file changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/libdnf/config.h b/libdnf/config.h
-index 01b330b4..dbd53f5e 100644
---- a/libdnf/config.h
-+++ b/libdnf/config.h
-@@ -20,14 +20,11 @@
- 
- #ifdef __APPLE__
- #include <stdint.h>
--#else
--#include <bits/wordsize.h>
- #endif
-+#include <limits.h>
- 
--#if __WORDSIZE == 32
--#include "config-32.h"
--#elif __WORDSIZE == 64
-+#if (ULONG_MAX == 0xffffffffffffffff)
- #include "config-64.h"
- #else
--#error "Unknown word size"
-+#include "config-32.h"
- #endif
diff --git a/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-dnf-context.cpp-do-not-try-to-access-BDB-data.patch b/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-dnf-context.cpp-do-not-try-to-access-BDB-data.patch
new file mode 100644
index 0000000..6f8a3dc
--- /dev/null
+++ b/poky/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-dnf-context.cpp-do-not-try-to-access-BDB-data.patch
@@ -0,0 +1,37 @@
+From 2f7382b35d59fe08034603497e82ffb943fedef1 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 30 Jun 2021 15:31:16 +0200
+Subject: [PATCH] libdnf/dnf-context.cpp: do not try to access BDB database
+
+Upstream-Status: Inappropriate [upstream needs to rework this to support
+sqlite]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ libdnf/dnf-context.cpp | 14 --------------
+ 1 file changed, 14 deletions(-)
+
+diff --git a/libdnf/dnf-context.cpp b/libdnf/dnf-context.cpp
+index 86f71a79..9cdcf769 100644
+--- a/libdnf/dnf-context.cpp
++++ b/libdnf/dnf-context.cpp
+@@ -2264,20 +2264,6 @@ dnf_context_setup(DnfContext *context,
+         !dnf_context_set_os_release(context, error))
+         return FALSE;
+ 
+-    /* setup a file monitor on the rpmdb, if we're operating on the native / */
+-    if (g_strcmp0(priv->install_root, "/") == 0) {
+-        rpmdb_path = g_build_filename(priv->install_root, "var/lib/rpm/Packages", NULL);
+-        file_rpmdb = g_file_new_for_path(rpmdb_path);
+-        priv->monitor_rpmdb = g_file_monitor_file(file_rpmdb,
+-                               G_FILE_MONITOR_NONE,
+-                               NULL,
+-                               error);
+-        if (priv->monitor_rpmdb == NULL)
+-            return FALSE;
+-        g_signal_connect(priv->monitor_rpmdb, "changed",
+-                         G_CALLBACK(dnf_context_rpmdb_changed_cb), context);
+-    }
+-
+     /* copy any vendor distributed cached metadata */
+     if (!dnf_context_copy_vendor_cache(context, error))
+         return FALSE;
diff --git a/poky/meta/recipes-devtools/libdnf/libdnf_0.63.1.bb b/poky/meta/recipes-devtools/libdnf/libdnf_0.63.1.bb
deleted file mode 100644
index 282c28e..0000000
--- a/poky/meta/recipes-devtools/libdnf/libdnf_0.63.1.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "Library providing simplified C and Python API to libsolv"
-HOMEPAGE = "https://github.com/rpm-software-management/libdnf"
-DESCRIPTION = "This library provides a high level package-manager. It's core library of dnf, PackageKit and rpm-ostree. It's replacement for deprecated hawkey library which it contains inside and uses librepo under the hood."
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "git://github.com/rpm-software-management/libdnf;branch=dnf-4-master \
-           file://0001-FindGtkDoc.cmake-drop-the-requirement-for-GTKDOC_SCA.patch \
-           file://0004-Set-libsolv-variables-with-pkg-config-cmake-s-own-mo.patch \
-           file://0001-Get-parameters-for-both-libsolv-and-libsolvext-libdn.patch \
-           file://0001-Add-WITH_TESTS-option.patch \
-           file://0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch \
-           file://enable_test_data_dir_set.patch \
-           file://0001-libdnf-config.h-avoid-the-use-of-non-portable-__WORD.patch \
-           file://0001-drop-FindPythonInstDir.cmake.patch \
-           "
-
-SRCREV = "8e451380bf84bd76e3925cbae2a06bb0e56f5cd9"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(?!4\.90)\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "glib-2.0 libsolv libcheck librepo rpm gtk-doc libmodulemd json-c swig-native"
-
-inherit gtk-doc gobject-introspection cmake pkgconfig distutils3-base
-
-EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DWITH_MAN=OFF -DPYTHON_DESIRED=3 \
-                  ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DWITH_GIR=ON', '-DWITH_GIR=OFF', d)} \
-                  -DWITH_TESTS=OFF \
-                  -DWITH_ZCHUNK=OFF \
-                  -DWITH_HTML=OFF \
-                "
-EXTRA_OECMAKE:append:class-native = " -DWITH_GIR=OFF"
-EXTRA_OECMAKE:append:class-nativesdk = " -DWITH_GIR=OFF"
-
-BBCLASSEXTEND = "native nativesdk"
-PNBLACKLIST[libdnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'Does not build without package_rpm in PACKAGE_CLASSES due disabled rpm support in libsolv', d)}"
-
diff --git a/poky/meta/recipes-devtools/libdnf/libdnf_0.65.0.bb b/poky/meta/recipes-devtools/libdnf/libdnf_0.65.0.bb
new file mode 100644
index 0000000..78f2002
--- /dev/null
+++ b/poky/meta/recipes-devtools/libdnf/libdnf_0.65.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Library providing simplified C and Python API to libsolv"
+HOMEPAGE = "https://github.com/rpm-software-management/libdnf"
+DESCRIPTION = "This library provides a high level package-manager. It's core library of dnf, PackageKit and rpm-ostree. It's replacement for deprecated hawkey library which it contains inside and uses librepo under the hood."
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://github.com/rpm-software-management/libdnf;branch=dnf-4-master \
+           file://0001-FindGtkDoc.cmake-drop-the-requirement-for-GTKDOC_SCA.patch \
+           file://0004-Set-libsolv-variables-with-pkg-config-cmake-s-own-mo.patch \
+           file://0001-Get-parameters-for-both-libsolv-and-libsolvext-libdn.patch \
+           file://0001-Add-WITH_TESTS-option.patch \
+           file://0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch \
+           file://enable_test_data_dir_set.patch \
+           file://0001-drop-FindPythonInstDir.cmake.patch \
+           file://0001-libdnf-dnf-context.cpp-do-not-try-to-access-BDB-data.patch \
+           "
+
+SRCREV = "cee3e1c59f849d9be1bb8d7db3090cea5c59f4b6"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(?!4\.90)\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "glib-2.0 libsolv libcheck librepo rpm gtk-doc libmodulemd json-c swig-native"
+
+inherit gtk-doc gobject-introspection cmake pkgconfig distutils3-base
+
+EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DWITH_MAN=OFF -DPYTHON_DESIRED=3 \
+                  ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DWITH_GIR=ON', '-DWITH_GIR=OFF', d)} \
+                  -DWITH_TESTS=OFF \
+                  -DWITH_ZCHUNK=OFF \
+                  -DWITH_HTML=OFF \
+                "
+EXTRA_OECMAKE:append:class-native = " -DWITH_GIR=OFF"
+EXTRA_OECMAKE:append:class-nativesdk = " -DWITH_GIR=OFF"
+
+BBCLASSEXTEND = "native nativesdk"
+PNBLACKLIST[libdnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'Does not build without package_rpm in PACKAGE_CLASSES due disabled rpm support in libsolv', d)}"
+
diff --git a/poky/meta/recipes-devtools/libedit/libedit_20210714-3.1.bb b/poky/meta/recipes-devtools/libedit/libedit_20210714-3.1.bb
deleted file mode 100644
index 8d68d68..0000000
--- a/poky/meta/recipes-devtools/libedit/libedit_20210714-3.1.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "BSD replacement for libreadline"
-DESCRIPTION = "Command line editor library providing generic line editing, \
-history, and tokenization functions"
-HOMEPAGE = "http://www.thrysoee.dk/editline/"
-SECTION = "libs"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1e4228d0c5a9093b01aeaaeae6641533"
-
-DEPENDS = "ncurses"
-
-inherit autotools
-
-SRC_URI = "http://www.thrysoee.dk/editline/${BP}.tar.gz \
-           file://stdc-predef.patch \
-          "
-SRC_URI[sha256sum] = "3023b498ad593fd7745ae3b20abad546de506b67b8fbb5579637ca69ab82dbc9"
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "90"
-ALTERNATIVE:${PN}-doc = "history.3"
-ALTERNATIVE_LINK_NAME[history.3] = "${mandir}/man3/history.3"
diff --git a/poky/meta/recipes-devtools/libedit/libedit_20210910-3.1.bb b/poky/meta/recipes-devtools/libedit/libedit_20210910-3.1.bb
new file mode 100644
index 0000000..5aa83ef
--- /dev/null
+++ b/poky/meta/recipes-devtools/libedit/libedit_20210910-3.1.bb
@@ -0,0 +1,24 @@
+SUMMARY = "BSD replacement for libreadline"
+DESCRIPTION = "Command line editor library providing generic line editing, \
+history, and tokenization functions"
+HOMEPAGE = "http://www.thrysoee.dk/editline/"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1e4228d0c5a9093b01aeaaeae6641533"
+
+DEPENDS = "ncurses"
+
+inherit autotools
+
+SRC_URI = "http://www.thrysoee.dk/editline/${BP}.tar.gz \
+           file://stdc-predef.patch \
+          "
+SRC_URI[sha256sum] = "6792a6a992050762edcca28ff3318cdb7de37dccf7bc30db59fcd7017eed13c5"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "90"
+ALTERNATIVE:${PN}-doc = "history.3"
+ALTERNATIVE_LINK_NAME[history.3] = "${mandir}/man3/history.3"
diff --git a/poky/meta/recipes-devtools/librepo/librepo_1.14.1.bb b/poky/meta/recipes-devtools/librepo/librepo_1.14.1.bb
deleted file mode 100644
index 8676452..0000000
--- a/poky/meta/recipes-devtools/librepo/librepo_1.14.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "A library providing C and Python (libcURL like) API \
-           for downloading linux repository metadata and packages."
-HOMEPAGE = "https://github.com/rpm-software-management/librepo"
-DESCRIPTION = "${SUMMARY}"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "git://github.com/rpm-software-management/librepo.git \
-           file://0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch \
-           file://0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch \
-           "
-
-SRCREV = "c5fe6b85b47f2e4f7a37cff3f3214205d1b54db5"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "curl glib-2.0 openssl attr gpgme libxml2"
-
-inherit cmake distutils3-base pkgconfig
-
-EXTRA_OECMAKE = " \
-    -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} \
-    -DPYTHON_DESIRED=3 \
-    -DENABLE_TESTS=OFF \
-    -DENABLE_DOCS=OFF \
-    -DWITH_ZCHUNK=OFF \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/librepo/librepo_1.14.2.bb b/poky/meta/recipes-devtools/librepo/librepo_1.14.2.bb
new file mode 100644
index 0000000..e7f8c08
--- /dev/null
+++ b/poky/meta/recipes-devtools/librepo/librepo_1.14.2.bb
@@ -0,0 +1,29 @@
+SUMMARY = "A library providing C and Python (libcURL like) API \
+           for downloading linux repository metadata and packages."
+HOMEPAGE = "https://github.com/rpm-software-management/librepo"
+DESCRIPTION = "${SUMMARY}"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://github.com/rpm-software-management/librepo.git \
+           file://0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch \
+           file://0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch \
+           "
+
+SRCREV = "3b9a8d17188ba602d139f79b6e61305030f21109"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "curl glib-2.0 openssl attr gpgme libxml2"
+
+inherit cmake distutils3-base pkgconfig
+
+EXTRA_OECMAKE = " \
+    -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} \
+    -DPYTHON_DESIRED=3 \
+    -DENABLE_TESTS=OFF \
+    -DENABLE_DOCS=OFF \
+    -DWITH_ZCHUNK=OFF \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc b/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc
index 7104c98..2df46aa7 100644
--- a/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc
+++ b/poky/meta/recipes-devtools/libtool/libtool-2.4.6.inc
@@ -9,22 +9,21 @@
     file://libltdl/COPYING.LIB;md5=4fbd65380cdd255951079008b364516c "
 
 SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
-           file://trailingslash.patch \
-           file://rename-with-sysroot.patch \
-           file://use-sysroot-in-libpath.patch \
-           file://fix-final-rpath.patch \
-           file://fix-rpath.patch \
-           file://norm-rpath.patch \
+           file://0001-ltmain.in-Handle-trailing-slashes-on-install-command.patch \
+           file://0002-libtool.m4-Rename-the-with-sysroot-option-to-avoid-c.patch \
+           file://0003-ltmain.in-Add-missing-sysroot-to-library-path.patch \
+           file://0004-ltmain.sh-Fix-sysroot-paths-being-encoded-into-RPATH.patch \
+           file://0005-ltmain.in-Don-t-encode-RATHS-which-match-default-lin.patch \
            file://dont-depend-on-help2man.patch \
-           file://fix-resolve-lt-sysroot.patch \
+           file://0006-libtool.m4-Handle-as-a-sysroot-correctly.patch \
            file://nohardcodepaths.patch \
            file://unwind-opt-parsing.patch \
-           file://0001-libtool-Fix-support-for-NIOS2-processor.patch \
-           file://0001-libtool-Check-for-static-libs-for-internal-compiler-.patch \
-           file://0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch \
-           file://0001-Makefile.am-make-sure-autoheader-run-before-automake.patch \
-           file://lto-prefix.patch \
-           file://debian-no_hostname.patch \
+           file://0007-libtool-Fix-support-for-NIOS2-processor.patch \
+           file://0008-libtool-Check-for-static-libs-for-internal-compiler-.patch \
+           file://0009-Makefile.am-make-sure-autoheader-run-before-autoconf.patch \
+           file://0010-Makefile.am-make-sure-autoheader-run-before-automake.patch \
+           file://0011-ltmain.in-Handle-prefix-map-compiler-options-correct.patch \
+           file://0012-libtool.m4-For-reproducibility-stop-encoding-hostnam.patch \
           "
 
 SRC_URI[md5sum] = "addf44b646ddb4e3919805aa88fa7c5e"
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch b/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch
deleted file mode 100644
index 2e99087..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-autoconf.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From dfbbbd359e43e0a55fbea06f2647279ad8761cb9 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Wed, 24 Mar 2021 03:04:13 +0000
-Subject: [PATCH] Makefile.am: make sure autoheader run before autoconf
-
-autoheader will update ../libtool-2.4.6/libltdl/config-h.in which
-autoconf needs, so there comes a race sometimes as below:
- | configure.ac:45: error: required file 'config-h.in' not found
- | touch '../libtool-2.4.6/libltdl/config-h.in'
-
-So make sure autoheader run before autoconf to avoid this race.
-
-Upstream-Status: Submitted [libtool-patches@gnu.org maillist]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 4142c90..fe1a9fc 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -365,7 +365,7 @@ lt_configure_deps = $(lt_aclocal_m4) $(lt_aclocal_m4_deps)
- $(lt_aclocal_m4): $(lt_aclocal_m4_deps)
- 	$(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(ACLOCAL) -I ../m4
- 
--$(lt_configure): $(lt_configure_deps)
-+$(lt_configure): $(lt_configure_deps) $(lt_config_h_in)
- 	$(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(AUTOCONF)
- 
- $(lt_config_h_in): $(lt_configure_deps)
--- 
-2.29.2
-
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-automake.patch b/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-automake.patch
deleted file mode 100644
index 87f8492..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/0001-Makefile.am-make-sure-autoheader-run-before-automake.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From e82c06584f02e3e4487aa73aa05981e2a35dc6d1 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Tue, 13 Apr 2021 07:17:29 +0000
-Subject: [PATCH] Makefile.am: make sure autoheader run before automake
-
-When use automake to generate Makefile.in from Makefile.am, there
-comes below race:
- | configure.ac:45: error: required file 'config-h.in' not found
-
-It is because the file config-h.in in updating process by autoheader,
-so make automake run after autoheader to avoid the above race.
-
-Upstream-Status: Submitted [libtool-patches@gnu.org maillist]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 2752ecc..29950db 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -328,7 +328,7 @@ EXTRA_DIST     += $(lt_aclocal_m4) \
- 		  $(lt_obsolete_m4) \
- 		  $(stamp_mk)
- 
--$(lt_Makefile_in): $(lt_Makefile_am) $(lt_aclocal_m4)
-+$(lt_Makefile_in): $(lt_Makefile_am) $(lt_aclocal_m4) $(lt_config_h_in)
- 	$(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(AUTOMAKE) Makefile
- 
- # Don't let unused scripts leak into the libltdl Makefile
--- 
-2.29.2
-
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0001-libtool-Check-for-static-libs-for-internal-compiler-.patch b/poky/meta/recipes-devtools/libtool/libtool/0001-libtool-Check-for-static-libs-for-internal-compiler-.patch
deleted file mode 100644
index 8c7c39f..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/0001-libtool-Check-for-static-libs-for-internal-compiler-.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 40a2da75e6d95cc7c498ebda95ab19ae0db2ebfb Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 26 Jan 2019 12:54:26 -0800
-Subject: [PATCH] libtool: Check for static libs for internal compiler
- libraries
-
-Libtool checks only for libraries linked as -l* when trying to
-find internal compiler libraries. Clang, however uses the absolute
-path to link its internal libraries e.g. compiler_rt. This patch
-handles clang's statically linked libraries when finding internal
-compiler libraries.
-
-https://crbug.com/749263
-
-Upstream-Status: Submitted [https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27866]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- m4/libtool.m4 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/m4/libtool.m4 b/m4/libtool.m4
-index d0389a0..9619c57 100644
---- a/m4/libtool.m4
-+++ b/m4/libtool.m4
-@@ -7536,7 +7536,7 @@ if AC_TRY_EVAL(ac_compile); then
-   for p in `eval "$output_verbose_link_cmd"`; do
-     case $prev$p in
- 
--    -L* | -R* | -l*)
-+    -L* | -R* | -l* | */libclang_rt.*.a)
-        # Some compilers place space between "-{L,R}" and the path.
-        # Remove the space.
-        if test x-L = "$p" ||
--- 
-2.20.1
-
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0001-libtool-Fix-support-for-NIOS2-processor.patch b/poky/meta/recipes-devtools/libtool/libtool/0001-libtool-Fix-support-for-NIOS2-processor.patch
deleted file mode 100644
index bbd36d8..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/0001-libtool-Fix-support-for-NIOS2-processor.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From df2cd898e48208f26320d40c3ed6b19c75c27142 Mon Sep 17 00:00:00 2001
-From: Marek Vasut <marex@denx.de>
-Date: Thu, 17 Sep 2015 00:43:15 +0200
-Subject: [PATCH] libtool: Fix support for NIOS2 processor
-
-The name of the system contains the string "nios2". This string
-is caught by the some of the greedy checks for OS/2 in libtool,
-in particular the *os2* branches of switch statements match for
-the nios2 string, which results in incorrect behavior of libtool.
-
-This patch adds an explicit check for *nios2* before the *os2*
-checks to prevent the OS/2 check incorrectly trapping the nios2
-as well.
-
-Signed-off-by: Marek Vasut <marex@denx.de>
-Upstream-Status: Submitted
----
- build-aux/ltmain.in | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
-index d5cf07a..4164284 100644
---- a/build-aux/ltmain.in
-+++ b/build-aux/ltmain.in
-@@ -504,6 +504,12 @@ libtool_validate_options ()
-     test : = "$debug_cmd" || func_append preserve_args " --debug"
- 
-     case $host in
-+      # For NIOS2, we want to make sure that it's not caught by the
-+      # more general OS/2 check below. Otherwise, NIOS2 is the same
-+      # as the default option.
-+      *nios2*)
-+        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-+        ;;
-       # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
-       # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
-       *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
-@@ -6220,6 +6226,15 @@ func_mode_link ()
- 	if test -n "$library_names" &&
- 	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
- 	  case $host in
-+	  *nios2*)
-+	    # For NIOS2, we want to make sure that it's not caught by the
-+	    # more general OS/2 check below. Otherwise, NIOS2 is the same
-+	    # as the default option.
-+	    if test no = "$installed"; then
-+	      func_append notinst_deplibs " $lib"
-+	      need_relink=yes
-+	    fi
-+	    ;;
- 	  *cygwin* | *mingw* | *cegcc* | *os2*)
- 	      # No point in relinking DLLs because paths are not encoded
- 	      func_append notinst_deplibs " $lib"
-@@ -6290,6 +6305,11 @@ func_mode_link ()
- 	    elif test -n "$soname_spec"; then
- 	      # bleh windows
- 	      case $host in
-+	      *nios2*)
-+		# For NIOS2, we want to make sure that it's not caught by the
-+		# more general OS/2 check below. Otherwise, NIOS2 is the same
-+		# as the default option.
-+		;;
- 	      *cygwin* | mingw* | *cegcc* | *os2*)
- 	        func_arith $current - $age
- 		major=$func_arith_result
--- 
-2.5.1
-
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0001-ltmain.in-Handle-trailing-slashes-on-install-command.patch b/poky/meta/recipes-devtools/libtool/libtool/0001-ltmain.in-Handle-trailing-slashes-on-install-command.patch
new file mode 100644
index 0000000..eeb5ebf
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0001-ltmain.in-Handle-trailing-slashes-on-install-command.patch
@@ -0,0 +1,35 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 01/12] ltmain.in: Handle trailing slashes on install commands correctly
+
+A command like:
+
+libtool --mode=install /usr/bin/install -c gck-roots-store-standalone.la '/image/usr/lib/gnome-keyring/standalone/'
+
+where the path ends with a trailing slash currently fails. This occurs in
+software like gnome-keyring or pulseaudio and is because the comparision
+code doesn't see the paths as equal. Strip both paths to ensure this works
+reliably.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00010.html]
+
+diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
+--- a/build-aux/ltmain.in
++++ b/build-aux/ltmain.in
+@@ -2356,8 +2356,14 @@ func_mode_install ()
+ 	func_append dir "$objdir"
+ 
+ 	if test -n "$relink_command"; then
++	  # Strip any trailing slash from the destination.
++	  func_stripname '' '/' "$libdir"
++	  destlibdir=$func_stripname_result
++	  func_stripname '' '/' "$destdir"
++	  s_destdir=$func_stripname_result
++
+ 	  # Determine the prefix the user has applied to our future dir.
+-	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
++	  inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"`
+ 
+ 	  # Don't allow the user to place us outside of our expected
+ 	  # location b/c this prevents finding dependent libraries that
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0002-libtool.m4-Rename-the-with-sysroot-option-to-avoid-c.patch b/poky/meta/recipes-devtools/libtool/libtool/0002-libtool.m4-Rename-the-with-sysroot-option-to-avoid-c.patch
new file mode 100644
index 0000000..6da2839
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0002-libtool.m4-Rename-the-with-sysroot-option-to-avoid-c.patch
@@ -0,0 +1,167 @@
+From: Khem Raj <raj.khem@gmail.com>
+Subject: [PATCH 02/12] libtool.m4: Rename the --with-sysroot option to avoid conflict with gcc/binutils
+
+This patch renames the --with-sysroot option to --with-libtool-sysroot
+to avoid namespace conflict with binutils, gcc and other toolchain
+components since these componets also add that option to configure
+and this becomes confusing and conflicting otherwise.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream report:
+http://lists.gnu.org/archive/html/libtool/2010-10/msg00048.html
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00014.html]
+
+diff --git a/m4/libtool.m4 b/m4/libtool.m4
+--- a/m4/libtool.m4
++++ b/m4/libtool.m4
+@@ -1215,28 +1215,28 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+ # ----------------
+ AC_DEFUN([_LT_WITH_SYSROOT],
+ [AC_MSG_CHECKING([for sysroot])
+-AC_ARG_WITH([sysroot],
+-[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
++AC_ARG_WITH([libtool-sysroot],
++[AS_HELP_STRING([--with-libtool-sysroot@<:@=DIR@:>@],
+   [Search for dependent libraries within DIR (or the compiler's sysroot
+    if not specified).])],
+-[], [with_sysroot=no])
++[], [with_libtool_sysroot=no])
+ 
+ dnl lt_sysroot will always be passed unquoted.  We quote it here
+ dnl in case the user passed a directory name.
+ lt_sysroot=
+-case $with_sysroot in #(
++case $with_libtool_sysroot in #(
+  yes)
+    if test yes = "$GCC"; then
+      lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+    fi
+    ;; #(
+  /*)
+-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++   lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+    ;; #(
+  no|'')
+    ;; #(
+  *)
+-   AC_MSG_RESULT([$with_sysroot])
++   AC_MSG_RESULT([$with_libtool_sysroot])
+    AC_MSG_ERROR([The sysroot must be an absolute path.])
+    ;;
+ esac
+diff --git a/tests/sysroot.at b/tests/sysroot.at
+--- a/tests/sysroot.at
++++ b/tests/sysroot.at
+@@ -64,7 +64,7 @@ while read file; do
+ done])
+ 
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+ 
+ #???
+ if test PATH = "$shlibpath_var"; then
+@@ -114,7 +114,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ ]])
+@@ -155,7 +155,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ ]])
+diff --git a/tests/testsuite b/tests/testsuite
+--- a/tests/testsuite
++++ b/tests/testsuite
+@@ -48945,7 +48945,7 @@ $at_traceon; }
+ 
+ 
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+ 
+ #???
+ if test PATH = "$shlibpath_var"; then
+@@ -49154,7 +49154,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -49342,7 +49342,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -49694,7 +49694,7 @@ $at_traceon; }
+ 
+ 
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+ 
+ #???
+ if test PATH = "$shlibpath_var"; then
+@@ -49903,7 +49903,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -50091,7 +50091,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -50443,7 +50443,7 @@ $at_traceon; }
+ 
+ 
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+ 
+ #???
+ if test PATH = "$shlibpath_var"; then
+@@ -50652,7 +50652,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -50840,7 +50840,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0003-ltmain.in-Add-missing-sysroot-to-library-path.patch b/poky/meta/recipes-devtools/libtool/libtool/0003-ltmain.in-Add-missing-sysroot-to-library-path.patch
new file mode 100644
index 0000000..0103a00
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0003-ltmain.in-Add-missing-sysroot-to-library-path.patch
@@ -0,0 +1,24 @@
+From: Khem Raj <raj.khem@gmail.com>
+Subject: [PATCH 03/12] ltmain.in: Add missing sysroot to library path
+
+When using a sysroot we should append it to libdir, which is helpful in
+cross builds as the system is staged in the sysroot. For normal builds,
+i.e. when lt_sysroot is not set, it will still behave the same and add
+-L/usr/lib to the relink command.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00017.html]
+
+diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
+--- a/build-aux/ltmain.in
++++ b/build-aux/ltmain.in
+@@ -6421,7 +6421,7 @@ func_mode_link ()
+ 	      fi
+ 	    else
+ 	      # We cannot seem to hardcode it, guess we'll fake it.
+-	      add_dir=-L$libdir
++	      add_dir="-L$lt_sysroot$libdir"
+ 	      # Try looking first in the location we're being installed to.
+ 	      if test -n "$inst_prefix_dir"; then
+ 		case $libdir in
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0004-ltmain.sh-Fix-sysroot-paths-being-encoded-into-RPATH.patch b/poky/meta/recipes-devtools/libtool/libtool/0004-ltmain.sh-Fix-sysroot-paths-being-encoded-into-RPATH.patch
new file mode 100644
index 0000000..21b3dfe
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0004-ltmain.sh-Fix-sysroot-paths-being-encoded-into-RPATH.patch
@@ -0,0 +1,50 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 04/12] ltmain.sh: Fix sysroot paths being encoded into RPATHs
+
+There is a bug where RPATHs could end up containing sysroot values when
+cross compiling which is obviously incorrect. Strip out sysroot components
+from libdir when building RPATH values to avoid this.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00009.html]
+
+diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
+--- a/build-aux/ltmain.in
++++ b/build-aux/ltmain.in
+@@ -7569,9 +7569,11 @@ EOF
+ 	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
+ 	  for libdir in $rpath; do
+ 	    if test -n "$hardcode_libdir_flag_spec"; then
++		  func_replace_sysroot "$libdir"
++		  libdir=$func_replace_sysroot_result
++		  func_stripname '=' '' "$libdir"
++		  libdir=$func_stripname_result
+ 	      if test -n "$hardcode_libdir_separator"; then
+-		func_replace_sysroot "$libdir"
+-		libdir=$func_replace_sysroot_result
+ 		if test -z "$hardcode_libdirs"; then
+ 		  hardcode_libdirs=$libdir
+ 		else
+@@ -8301,6 +8303,10 @@ EOF
+       hardcode_libdirs=
+       for libdir in $compile_rpath $finalize_rpath; do
+ 	if test -n "$hardcode_libdir_flag_spec"; then
++	  func_replace_sysroot "$libdir"
++	  libdir=$func_replace_sysroot_result
++	  func_stripname '=' '' "$libdir"
++	  libdir=$func_stripname_result
+ 	  if test -n "$hardcode_libdir_separator"; then
+ 	    if test -z "$hardcode_libdirs"; then
+ 	      hardcode_libdirs=$libdir
+@@ -8352,6 +8358,10 @@ EOF
+       hardcode_libdirs=
+       for libdir in $finalize_rpath; do
+ 	if test -n "$hardcode_libdir_flag_spec"; then
++	  func_replace_sysroot "$libdir"
++	  libdir=$func_replace_sysroot_result
++	  func_stripname '=' '' "$libdir"
++	  libdir=$func_stripname_result
+ 	  if test -n "$hardcode_libdir_separator"; then
+ 	    if test -z "$hardcode_libdirs"; then
+ 	      hardcode_libdirs=$libdir
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0005-ltmain.in-Don-t-encode-RATHS-which-match-default-lin.patch b/poky/meta/recipes-devtools/libtool/libtool/0005-ltmain.in-Don-t-encode-RATHS-which-match-default-lin.patch
new file mode 100644
index 0000000..50d47d9
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0005-ltmain.in-Don-t-encode-RATHS-which-match-default-lin.patch
@@ -0,0 +1,72 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 05/12] ltmain.in: Don't encode RATHS which match default linker paths
+
+We don't want to add RPATHS which match default linker search paths, they're
+a waste of space. This patch filters libtools list of paths to encoode and
+removes the ones we don't need.
+
+Libtool may be passed link paths of the form "/usr/lib/../lib" so normalize
+the paths before comparision.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00013.html]
+
+diff -u b/build-aux/ltmain.in b/build-aux/ltmain.in
+--- b/build-aux/ltmain.in
++++ b/build-aux/ltmain.in	2012-08-22 11:01:34.191345989 -0700
+@@ -7286,8 +7286,16 @@
+ 		  esac
+ 		fi
+ 	      else
+-		eval flag=\"$hardcode_libdir_flag_spec\"
+-		func_append dep_rpath " $flag"
++                # We only want to hardcode in an rpath if it isn't in the
++                # default dlsearch path.
++                func_normal_abspath "$libdir"
++                libdir_norm=$func_normal_abspath_result
++	        case " $sys_lib_dlsearch_path " in
++	        *" $libdir_norm "*) ;;
++	        *) eval flag=\"$hardcode_libdir_flag_spec\"
++                   func_append dep_rpath " $flag"
++                   ;;
++	        esac
+ 	      fi
+ 	    elif test -n "$runpath_var"; then
+ 	      case "$perm_rpath " in
+@@ -8019,8 +8027,16 @@
+ 	      esac
+ 	    fi
+ 	  else
+-	    eval flag=\"$hardcode_libdir_flag_spec\"
+-	    func_append rpath " $flag"
++            # We only want to hardcode in an rpath if it isn't in the
++            # default dlsearch path.
++            func_normal_abspath "$libdir"
++            libdir_norm=$func_normal_abspath_result
++	    case " $sys_lib_dlsearch_path " in
++	    *" $libdir_norm "*) ;;
++	    *) eval flag=\"$hardcode_libdir_flag_spec\"
++               rpath+=" $flag"
++               ;;
++	    esac
+ 	  fi
+ 	elif test -n "$runpath_var"; then
+ 	  case "$perm_rpath " in
+@@ -8070,8 +8086,14 @@
+ 	      esac
+ 	    fi
+ 	  else
+-	    eval flag=\"$hardcode_libdir_flag_spec\"
+-	    func_append rpath " $flag"
++            # We only want to hardcode in an rpath if it isn't in the
++            # default dlsearch path.
++	    case " $sys_lib_dlsearch_path " in
++	    *" $libdir "*) ;;
++	    *) eval flag=\"$hardcode_libdir_flag_spec\"
++               func_append rpath " $flag"
++               ;;
++	    esac    
+ 	  fi
+ 	elif test -n "$runpath_var"; then
+ 	  case "$finalize_perm_rpath " in
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch b/poky/meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch
new file mode 100644
index 0000000..9999712
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch
@@ -0,0 +1,44 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 06/12] libtool.m4: Handle "/" as a sysroot correctly
+
+Update libtool.m4 to resolve a problem with lt_sysroot not being properly
+updated if the option '--with[-libtool]-sysroot' is not provided when
+running the 'configure' script for a package so that "/" as a sysroot
+is handled correctly by libtool.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream Report:
+http://lists.gnu.org/archive/html/bug-libtool/2013-09/msg00005.html
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00018.html]
+
+---
+diff --git a/m4/libtool.m4 b/m4/libtool.m4
+--- a/m4/libtool.m4
++++ b/m4/libtool.m4
+@@ -1225,16 +1225,21 @@ dnl lt_sysroot will always be passed unquoted.  We quote it here
+ dnl in case the user passed a directory name.
+ lt_sysroot=
+ case $with_libtool_sysroot in #(
+- yes)
++ no)
+    if test yes = "$GCC"; then
+      lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++     # Treat "/" the same a an unset sysroot. It seems to be more
++     # compatible across host platforms that way!?
++     if test "$lt_sysroot" = /; then
++       lt_sysroot=
++     fi
+    fi
+    ;; #(
++ yes|''|/)
++   ;; #(
+  /*)
+    lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+    ;; #(
+- no|'')
+-   ;; #(
+  *)
+    AC_MSG_RESULT([$with_libtool_sysroot])
+    AC_MSG_ERROR([The sysroot must be an absolute path.])
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0007-libtool-Fix-support-for-NIOS2-processor.patch b/poky/meta/recipes-devtools/libtool/libtool/0007-libtool-Fix-support-for-NIOS2-processor.patch
new file mode 100644
index 0000000..395464e
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0007-libtool-Fix-support-for-NIOS2-processor.patch
@@ -0,0 +1,69 @@
+From: Marek Vasut <marex@denx.de>
+Subject: [PATCH 07/12] libtool: Fix support for NIOS2 processor
+
+The name of the system contains the string "nios2". This string
+is caught by the some of the greedy checks for OS/2 in libtool,
+in particular the *os2* branches of switch statements match for
+the nios2 string, which results in incorrect behavior of libtool.
+
+This patch adds an explicit check for *nios2* before the *os2*
+checks to prevent the OS/2 check incorrectly trapping the nios2
+as well.
+
+Signed-off-by: Marek Vasut <marex@denx.de>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00021.html]
+
+---
+ build-aux/ltmain.in | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
+index d5cf07a..4164284 100644
+--- a/build-aux/ltmain.in
++++ b/build-aux/ltmain.in
+@@ -504,6 +504,12 @@ libtool_validate_options ()
+     test : = "$debug_cmd" || func_append preserve_args " --debug"
+ 
+     case $host in
++      # For NIOS2, we want to make sure that it's not caught by the
++      # more general OS/2 check below. Otherwise, NIOS2 is the same
++      # as the default option.
++      *nios2*)
++        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
++        ;;
+       # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
+       # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
+       *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
+@@ -6220,6 +6226,15 @@ func_mode_link ()
+ 	if test -n "$library_names" &&
+ 	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
+ 	  case $host in
++	  *nios2*)
++	    # For NIOS2, we want to make sure that it's not caught by the
++	    # more general OS/2 check below. Otherwise, NIOS2 is the same
++	    # as the default option.
++	    if test no = "$installed"; then
++	      func_append notinst_deplibs " $lib"
++	      need_relink=yes
++	    fi
++	    ;;
+ 	  *cygwin* | *mingw* | *cegcc* | *os2*)
+ 	      # No point in relinking DLLs because paths are not encoded
+ 	      func_append notinst_deplibs " $lib"
+@@ -6290,6 +6305,11 @@ func_mode_link ()
+ 	    elif test -n "$soname_spec"; then
+ 	      # bleh windows
+ 	      case $host in
++	      *nios2*)
++		# For NIOS2, we want to make sure that it's not caught by the
++		# more general OS/2 check below. Otherwise, NIOS2 is the same
++		# as the default option.
++		;;
+ 	      *cygwin* | mingw* | *cegcc* | *os2*)
+ 	        func_arith $current - $age
+ 		major=$func_arith_result
+-- 
+2.5.1
+
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0008-libtool-Check-for-static-libs-for-internal-compiler-.patch b/poky/meta/recipes-devtools/libtool/libtool/0008-libtool-Check-for-static-libs-for-internal-compiler-.patch
new file mode 100644
index 0000000..afffdb9
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0008-libtool-Check-for-static-libs-for-internal-compiler-.patch
@@ -0,0 +1,38 @@
+From b9993338080325a6e2b2ec94ca0ece80e7fa3fb6 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 26 Jan 2019 12:54:26 -0800
+Subject: [PATCH 08/12] libtool: Check for static libs for internal compiler libraries
+
+Libtool checks only for libraries linked as -l* when trying to
+find internal compiler libraries. Clang, however uses the absolute
+path to link its internal libraries e.g. compiler_rt. This patch
+handles clang's statically linked libraries when finding internal
+compiler libraries.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+https://crbug.com/749263
+https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27866
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00016.html]
+---
+ m4/libtool.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/m4/libtool.m4 b/m4/libtool.m4
+index d0389a0..9619c57 100644
+--- a/m4/libtool.m4
++++ b/m4/libtool.m4
+@@ -7536,7 +7536,7 @@ if AC_TRY_EVAL(ac_compile); then
+   for p in `eval "$output_verbose_link_cmd"`; do
+     case $prev$p in
+ 
+-    -L* | -R* | -l*)
++    -L* | -R* | -l* | */libclang_rt.*.a)
+        # Some compilers place space between "-{L,R}" and the path.
+        # Remove the space.
+        if test x-L = "$p" ||
+-- 
+2.20.1
+
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0009-Makefile.am-make-sure-autoheader-run-before-autoconf.patch b/poky/meta/recipes-devtools/libtool/libtool/0009-Makefile.am-make-sure-autoheader-run-before-autoconf.patch
new file mode 100644
index 0000000..348cd3c
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0009-Makefile.am-make-sure-autoheader-run-before-autoconf.patch
@@ -0,0 +1,35 @@
+From: Mingli Yu <mingli.yu@windriver.com>
+Subject: [PATCH 09/12] Makefile.am: make sure autoheader run before autoconf
+
+autoheader will update ../libtool-2.4.6/libltdl/config-h.in which
+autoconf needs, so there comes a race sometimes as below:
+ | configure.ac:45: error: required file 'config-h.in' not found
+ | touch '../libtool-2.4.6/libltdl/config-h.in'
+
+So make sure autoheader run before autoconf to avoid this race.
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00015.html]
+
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 4142c90..fe1a9fc 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -365,7 +365,7 @@ lt_configure_deps = $(lt_aclocal_m4) $(lt_aclocal_m4_deps)
+ $(lt_aclocal_m4): $(lt_aclocal_m4_deps)
+ 	$(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(ACLOCAL) -I ../m4
+ 
+-$(lt_configure): $(lt_configure_deps)
++$(lt_configure): $(lt_configure_deps) $(lt_config_h_in)
+ 	$(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(AUTOCONF)
+ 
+ $(lt_config_h_in): $(lt_configure_deps)
+-- 
+2.29.2
+
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0010-Makefile.am-make-sure-autoheader-run-before-automake.patch b/poky/meta/recipes-devtools/libtool/libtool/0010-Makefile.am-make-sure-autoheader-run-before-automake.patch
new file mode 100644
index 0000000..cd963ef
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0010-Makefile.am-make-sure-autoheader-run-before-automake.patch
@@ -0,0 +1,36 @@
+From: Mingli Yu <mingli.yu@windriver.com>
+Subject: [PATCH 10/12] Makefile.am: make sure autoheader run before automake
+
+When use automake to generate Makefile.in from Makefile.am, there
+comes below race:
+ | configure.ac:45: error: required file 'config-h.in' not found
+
+It is because the file config-h.in in updating process by autoheader,
+so make automake run after autoheader to avoid the above race.
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00020.html]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 2752ecc..29950db 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -328,7 +328,7 @@ EXTRA_DIST     += $(lt_aclocal_m4) \
+ 		  $(lt_obsolete_m4) \
+ 		  $(stamp_mk)
+ 
+-$(lt_Makefile_in): $(lt_Makefile_am) $(lt_aclocal_m4)
++$(lt_Makefile_in): $(lt_Makefile_am) $(lt_aclocal_m4) $(lt_config_h_in)
+ 	$(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(AUTOMAKE) Makefile
+ 
+ # Don't let unused scripts leak into the libltdl Makefile
+-- 
+2.29.2
+
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0011-ltmain.in-Handle-prefix-map-compiler-options-correct.patch b/poky/meta/recipes-devtools/libtool/libtool/0011-ltmain.in-Handle-prefix-map-compiler-options-correct.patch
new file mode 100644
index 0000000..b121a3c
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0011-ltmain.in-Handle-prefix-map-compiler-options-correct.patch
@@ -0,0 +1,26 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 11/12] ltmain.in: Handle prefix-map compiler options correctly
+
+If lto is enabled, we need the prefix-map variables to be passed to the linker.
+Add these to the list of options libtool passes through.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00019.html]
+
+Index: libtool-2.4.6/build-aux/ltmain.in
+===================================================================
+--- libtool-2.4.6.orig/build-aux/ltmain.in
++++ libtool-2.4.6/build-aux/ltmain.in
+@@ -5424,9 +5424,10 @@ func_mode_link ()
+       # --sysroot=*          for sysroot support
+       # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+       # -stdlib=*            select c++ std lib with clang
++      # -f*-prefix-map*      needed for lto linking
+       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+-      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
++      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*|-f*-prefix-map*)
+         func_quote_for_eval "$arg"
+ 	arg=$func_quote_for_eval_result
+         func_append compile_command " $arg"
diff --git a/poky/meta/recipes-devtools/libtool/libtool/0012-libtool.m4-For-reproducibility-stop-encoding-hostnam.patch b/poky/meta/recipes-devtools/libtool/libtool/0012-libtool.m4-For-reproducibility-stop-encoding-hostnam.patch
new file mode 100644
index 0000000..64f911d
--- /dev/null
+++ b/poky/meta/recipes-devtools/libtool/libtool/0012-libtool.m4-For-reproducibility-stop-encoding-hostnam.patch
@@ -0,0 +1,27 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 12/12] libtool.m4: For reproducibility stop encoding hostname in libtool script
+
+For reproducibilty, stop encoding the hostname into the libtool script, this isn't
+really adding much to debugging and most distros are carrying such a patch now as
+reproducibility is important.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+https://sources.debian.org/data/main/libt/libtool/2.4.6-10/debian/patches/
+        no_hostname.patch
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00011.html]
+
+---
+Index: libtool-2.4.6/m4/libtool.m4
+===================================================================
+--- libtool-2.4.6.orig/m4/libtool.m4
++++ libtool-2.4.6/m4/libtool.m4
+@@ -728,7 +728,6 @@ _LT_CONFIG_SAVE_COMMANDS([
+     cat <<_LT_EOF >> "$cfgfile"
+ #! $SHELL
+ # Generated automatically by $as_me ($PACKAGE) $VERSION
+-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+ # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+ 
+ # Provide generalized library-building support services.
diff --git a/poky/meta/recipes-devtools/libtool/libtool/debian-no_hostname.patch b/poky/meta/recipes-devtools/libtool/libtool/debian-no_hostname.patch
deleted file mode 100755
index 5add0cc..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/debian-no_hostname.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-libtool: remove host specific info from header file
-
-https://sources.debian.org/data/main/libt/libtool/2.4.6-10/debian/patches/
-        no_hostname.patch
-
-Upstream-Status: Inappropriate [not author]
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
----
-Index: libtool-2.4.6/m4/libtool.m4
-===================================================================
---- libtool-2.4.6.orig/m4/libtool.m4
-+++ libtool-2.4.6/m4/libtool.m4
-@@ -728,7 +728,6 @@ _LT_CONFIG_SAVE_COMMANDS([
-     cat <<_LT_EOF >> "$cfgfile"
- #! $SHELL
- # Generated automatically by $as_me ($PACKAGE) $VERSION
--# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
- # NOTE: Changes made to this file will be lost: look at ltmain.sh.
- 
- # Provide generalized library-building support services.
diff --git a/poky/meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch b/poky/meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch
deleted file mode 100644
index 5c9f8cc..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-Enalbing sysroot support exposed a bug where the final library
-had an RPATH encoded into it which still pointed to the sysroot.
-This works around the issue until it gets sorted out upstream.
-
-Fix suggested by Richard Purdie <richard.purdie@intel.com>
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com>
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
---- a/build-aux/ltmain.in
-+++ b/build-aux/ltmain.in
-@@ -7569,9 +7569,11 @@ EOF
- 	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
- 	  for libdir in $rpath; do
- 	    if test -n "$hardcode_libdir_flag_spec"; then
-+		  func_replace_sysroot "$libdir"
-+		  libdir=$func_replace_sysroot_result
-+		  func_stripname '=' '' "$libdir"
-+		  libdir=$func_stripname_result
- 	      if test -n "$hardcode_libdir_separator"; then
--		func_replace_sysroot "$libdir"
--		libdir=$func_replace_sysroot_result
- 		if test -z "$hardcode_libdirs"; then
- 		  hardcode_libdirs=$libdir
- 		else
-@@ -8301,6 +8303,10 @@ EOF
-       hardcode_libdirs=
-       for libdir in $compile_rpath $finalize_rpath; do
- 	if test -n "$hardcode_libdir_flag_spec"; then
-+	  func_replace_sysroot "$libdir"
-+	  libdir=$func_replace_sysroot_result
-+	  func_stripname '=' '' "$libdir"
-+	  libdir=$func_stripname_result
- 	  if test -n "$hardcode_libdir_separator"; then
- 	    if test -z "$hardcode_libdirs"; then
- 	      hardcode_libdirs=$libdir
-@@ -8352,6 +8358,10 @@ EOF
-       hardcode_libdirs=
-       for libdir in $finalize_rpath; do
- 	if test -n "$hardcode_libdir_flag_spec"; then
-+	  func_replace_sysroot "$libdir"
-+	  libdir=$func_replace_sysroot_result
-+	  func_stripname '=' '' "$libdir"
-+	  libdir=$func_stripname_result
- 	  if test -n "$hardcode_libdir_separator"; then
- 	    if test -z "$hardcode_libdirs"; then
- 	      hardcode_libdirs=$libdir
diff --git a/poky/meta/recipes-devtools/libtool/libtool/fix-resolve-lt-sysroot.patch b/poky/meta/recipes-devtools/libtool/libtool/fix-resolve-lt-sysroot.patch
deleted file mode 100644
index 1bd9598..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/fix-resolve-lt-sysroot.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-Upstream-Status: Pending
-
-This patch updates libtool.m4 (and its output) to resolve a problem
-with variable 'lt_sysroot' not being properly updated if the option
-'--with[-libtool]-sysroot' is not provided when running the 'configure'
-script for a package.
-
-I have also reported the problem to libtool here
-
-http://lists.gnu.org/archive/html/bug-libtool/2013-09/msg00005.html
-
-Signed-off-by: Hans Beckerus <hans.beckerus at gmail.com>
-Updated by: Robert Yang <liezhi.yang@windriver.com>
----
-diff --git a/m4/libtool.m4 b/m4/libtool.m4
---- a/m4/libtool.m4
-+++ b/m4/libtool.m4
-@@ -1225,16 +1225,21 @@ dnl lt_sysroot will always be passed unquoted.  We quote it here
- dnl in case the user passed a directory name.
- lt_sysroot=
- case $with_libtool_sysroot in #(
-- yes)
-+ no)
-    if test yes = "$GCC"; then
-      lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+     # Treat "/" the same a an unset sysroot. It seems to be more
-+     # compatible across host platforms that way!?
-+     if test "$lt_sysroot" = /; then
-+       lt_sysroot=
-+     fi
-    fi
-    ;; #(
-+ yes|''|/)
-+   ;; #(
-  /*)
-    lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
-    ;; #(
-- no|'')
--   ;; #(
-  *)
-    AC_MSG_RESULT([$with_libtool_sysroot])
-    AC_MSG_ERROR([The sysroot must be an absolute path.])
diff --git a/poky/meta/recipes-devtools/libtool/libtool/fix-rpath.patch b/poky/meta/recipes-devtools/libtool/libtool/fix-rpath.patch
deleted file mode 100644
index a2ec947..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/fix-rpath.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-We don't want to add RPATHS which match default linker
-search paths, they're a waste of space. This patch
-filters libtools list and removes the ones we don't need.
-
-RP 23/9/2011
-
-Upstream-Status: Pending
-
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-Index: libtool-2.4.2/build-aux/ltmain.in
-===================================================================
---- libtool-2.4.2.orig/build-aux/ltmain.in
-+++ libtool-2.4.2/build-aux/ltmain.in
-@@ -7286,8 +7286,14 @@ EOF
- 		  esac
- 		fi
- 	      else
--		eval flag=\"$hardcode_libdir_flag_spec\"
--		func_append dep_rpath " $flag"
-+                # We only want to hardcode in an rpath if it isn't in the
-+                # default dlsearch path.
-+	        case " $sys_lib_dlsearch_path " in
-+	        *" $libdir "*) ;;
-+	        *) eval flag=\"$hardcode_libdir_flag_spec\"
-+                   func_append dep_rpath " $flag"
-+                   ;;
-+	        esac
- 	      fi
- 	    elif test -n "$runpath_var"; then
- 	      case "$perm_rpath " in
-@@ -8019,8 +8025,14 @@ EOF
- 	      esac
- 	    fi
- 	  else
--	    eval flag=\"$hardcode_libdir_flag_spec\"
--	    func_append rpath " $flag"
-+            # We only want to hardcode in an rpath if it isn't in the
-+            # default dlsearch path.
-+	    case " $sys_lib_dlsearch_path " in
-+	    *" $libdir "*) ;;
-+	    *) eval flag=\"$hardcode_libdir_flag_spec\"
-+               rpath+=" $flag"
-+               ;;
-+	    esac
- 	  fi
- 	elif test -n "$runpath_var"; then
- 	  case "$perm_rpath " in
-@@ -8070,8 +8082,14 @@ EOF
- 	      esac
- 	    fi
- 	  else
--	    eval flag=\"$hardcode_libdir_flag_spec\"
--	    func_append rpath " $flag"
-+            # We only want to hardcode in an rpath if it isn't in the
-+            # default dlsearch path.
-+	    case " $sys_lib_dlsearch_path " in
-+	    *" $libdir "*) ;;
-+	    *) eval flag=\"$hardcode_libdir_flag_spec\"
-+               func_append rpath " $flag"
-+               ;;
-+	    esac    
- 	  fi
- 	elif test -n "$runpath_var"; then
- 	  case "$finalize_perm_rpath " in
diff --git a/poky/meta/recipes-devtools/libtool/libtool/fixinstall.patch b/poky/meta/recipes-devtools/libtool/libtool/fixinstall.patch
index 8f343bf..48330d8 100644
--- a/poky/meta/recipes-devtools/libtool/libtool/fixinstall.patch
+++ b/poky/meta/recipes-devtools/libtool/libtool/fixinstall.patch
@@ -27,9 +27,9 @@
  
 -	if test -n "$relink_command"; then
 +	if test "$fast_install" = no && test -n "$relink_command"; then
-       # Strip any trailing slash from the destination.
-       func_stripname '' '/' "$libdir"
-       destlibdir=$func_stripname_result
+ 	  # Strip any trailing slash from the destination.
+ 	  func_stripname '' '/' "$libdir"
+	  destlibdir=$func_stripname_result
 @@ -2394,7 +2394,7 @@ func_mode_install ()
  	  shift
  
diff --git a/poky/meta/recipes-devtools/libtool/libtool/lto-prefix.patch b/poky/meta/recipes-devtools/libtool/libtool/lto-prefix.patch
deleted file mode 100644
index 2bd010b..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/lto-prefix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-If lto is enabled, we need the prefix-map variables to be passed to the linker.
-Add these to the list of options libtool passes through.
-
-Upstream-Status: Pending
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
-Index: libtool-2.4.6/build-aux/ltmain.in
-===================================================================
---- libtool-2.4.6.orig/build-aux/ltmain.in
-+++ libtool-2.4.6/build-aux/ltmain.in
-@@ -5424,9 +5424,10 @@ func_mode_link ()
-       # --sysroot=*          for sysroot support
-       # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-       # -stdlib=*            select c++ std lib with clang
-+      # -f*-prefix-map*      needed for lto linking
-       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
--      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
-+      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*|-f*-prefix-map*)
-         func_quote_for_eval "$arg"
- 	arg=$func_quote_for_eval_result
-         func_append compile_command " $arg"
diff --git a/poky/meta/recipes-devtools/libtool/libtool/norm-rpath.patch b/poky/meta/recipes-devtools/libtool/libtool/norm-rpath.patch
deleted file mode 100644
index 1e4c65e..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/norm-rpath.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-libtool: normalize link paths before considering for RPATH
-
-Libtool may be passed link paths of the form "/usr/lib/../lib", which
-fool its detection code into thinking it should be included as an
-RPATH in the generated binary.  Normalize before comparision.
-
-Signed-off-by: Andy Ross <andy.ross@windriver.com>
-Upstream-Status: Pending
-
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff -ur a/build-aux/ltmain.in b/build-aux/ltmain.in
---- a/build-aux/ltmain.in	2012-08-16 13:58:55.058900363 -0700
-+++ b/build-aux/ltmain.in	2012-08-22 11:01:34.191345989 -0700
-@@ -7288,8 +7288,10 @@
- 	      else
-                 # We only want to hardcode in an rpath if it isn't in the
-                 # default dlsearch path.
-+                func_normal_abspath "$libdir"
-+                libdir_norm=$func_normal_abspath_result
- 	        case " $sys_lib_dlsearch_path " in
--	        *" $libdir "*) ;;
-+	        *" $libdir_norm "*) ;;
- 	        *) eval flag=\"$hardcode_libdir_flag_spec\"
-                    func_append dep_rpath " $flag"
-                    ;;
-@@ -8027,8 +8029,10 @@
- 	  else
-             # We only want to hardcode in an rpath if it isn't in the
-             # default dlsearch path.
-+            func_normal_abspath "$libdir"
-+            libdir_norm=$func_normal_abspath_result
- 	    case " $sys_lib_dlsearch_path " in
--	    *" $libdir "*) ;;
-+	    *" $libdir_norm "*) ;;
- 	    *) eval flag=\"$hardcode_libdir_flag_spec\"
-                rpath+=" $flag"
-                ;;
diff --git a/poky/meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch b/poky/meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch
deleted file mode 100644
index ad2b110..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-Upstream-Status: Pending
-
-This patch renames the --with-sysroot option to --with-libtool-sysroot
-to avoid namespace conflict with binutils, gcc and other toolchain
-components.
-
-I also reported the problem to libtool here
-
-http://lists.gnu.org/archive/html/libtool/2010-10/msg00048.html
-
--Khem Raj <raj.khem@gmail.com>
-
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff --git a/m4/libtool.m4 b/m4/libtool.m4
---- a/m4/libtool.m4
-+++ b/m4/libtool.m4
-@@ -1215,28 +1215,28 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
- # ----------------
- AC_DEFUN([_LT_WITH_SYSROOT],
- [AC_MSG_CHECKING([for sysroot])
--AC_ARG_WITH([sysroot],
--[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
-+AC_ARG_WITH([libtool-sysroot],
-+[AS_HELP_STRING([--with-libtool-sysroot@<:@=DIR@:>@],
-   [Search for dependent libraries within DIR (or the compiler's sysroot
-    if not specified).])],
--[], [with_sysroot=no])
-+[], [with_libtool_sysroot=no])
- 
- dnl lt_sysroot will always be passed unquoted.  We quote it here
- dnl in case the user passed a directory name.
- lt_sysroot=
--case $with_sysroot in #(
-+case $with_libtool_sysroot in #(
-  yes)
-    if test yes = "$GCC"; then
-      lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-    fi
-    ;; #(
-  /*)
--   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-+   lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
-    ;; #(
-  no|'')
-    ;; #(
-  *)
--   AC_MSG_RESULT([$with_sysroot])
-+   AC_MSG_RESULT([$with_libtool_sysroot])
-    AC_MSG_ERROR([The sysroot must be an absolute path.])
-    ;;
- esac
-diff --git a/tests/sysroot.at b/tests/sysroot.at
---- a/tests/sysroot.at
-+++ b/tests/sysroot.at
-@@ -64,7 +64,7 @@ while read file; do
- done])
- 
- LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
--configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
-+configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
- 
- #???
- if test PATH = "$shlibpath_var"; then
-@@ -114,7 +114,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([lib2.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- ]])
-@@ -155,7 +155,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([prog.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- ]])
-diff --git a/tests/testsuite b/tests/testsuite
---- a/tests/testsuite
-+++ b/tests/testsuite
-@@ -48945,7 +48945,7 @@ $at_traceon; }
- 
- 
- LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
--configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
-+configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
- 
- #???
- if test PATH = "$shlibpath_var"; then
-@@ -49154,7 +49154,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([lib2.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
-@@ -49342,7 +49342,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([prog.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
-@@ -49694,7 +49694,7 @@ $at_traceon; }
- 
- 
- LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
--configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
-+configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
- 
- #???
- if test PATH = "$shlibpath_var"; then
-@@ -49903,7 +49903,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([lib2.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
-@@ -50091,7 +50091,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([prog.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
-@@ -50443,7 +50443,7 @@ $at_traceon; }
- 
- 
- LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
--configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
-+configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
- 
- #???
- if test PATH = "$shlibpath_var"; then
-@@ -50652,7 +50652,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([lib2.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
-@@ -50840,7 +50840,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([prog.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
diff --git a/poky/meta/recipes-devtools/libtool/libtool/trailingslash.patch b/poky/meta/recipes-devtools/libtool/libtool/trailingslash.patch
deleted file mode 100644
index e8824d7..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/trailingslash.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Upstream-Status: Pending
-
-A command like /bin/sh ../../i586-poky-linux-libtool   --mode=install /usr/bin/install -c   gck-roots-store-standalone.la '/media/data1/builds/poky1/tmp/work/core2-poky-linux/gnome-keyring-2.26.1-r1/image/usr/lib/gnome-keyring/standalone/' fails (e.g. gnome-keyring or pulseaudio)
-
-This is because libdir has a trailing slash which breaks the comparision.
-
-RP 2/1/10
-
-Merged a patch received from Gary Thomas <gary@mlbassoc.com>
-
-Date: 2010/07/12
-Nitin A Kamble <nitin.a.kamble@intel.com>
-
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
---- a/build-aux/ltmain.in
-+++ b/build-aux/ltmain.in
-@@ -2356,8 +2356,15 @@ func_mode_install ()
- 	func_append dir "$objdir"
- 
- 	if test -n "$relink_command"; then
-+      # Strip any trailing slash from the destination.
-+      func_stripname '' '/' "$libdir"
-+      destlibdir=$func_stripname_result
-+
-+      func_stripname '' '/' "$destdir"
-+      s_destdir=$func_stripname_result
-+
- 	  # Determine the prefix the user has applied to our future dir.
--	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
-+	  inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"`
- 
- 	  # Don't allow the user to place us outside of our expected
- 	  # location b/c this prevents finding dependent libraries that
diff --git a/poky/meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch b/poky/meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch
deleted file mode 100644
index 6af99f3..0000000
--- a/poky/meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Upstream-Status: Pending
-
-When using sysroot we should append it to libdir, which is helpful in
-cross builds as the system is staged in the sysroot. For normal builds,
-i.e. when lt_sysroot is not set, it will still behave the same and add
--L/usr/lib to the relink command.
-
--Khem Raj <raj.khem@gmail.com>
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
---- a/build-aux/ltmain.in
-+++ b/build-aux/ltmain.in
-@@ -6421,7 +6421,7 @@ func_mode_link ()
- 	      fi
- 	    else
- 	      # We cannot seem to hardcode it, guess we'll fake it.
--	      add_dir=-L$libdir
-+	      add_dir="-L$lt_sysroot$libdir"
- 	      # Try looking first in the location we're being installed to.
- 	      if test -n "$inst_prefix_dir"; then
- 		case $libdir in
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/lua.pc.in b/poky/meta/recipes-devtools/lua/lua/lua.pc.in
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-devtools/lua/lua/lua.pc.in
rename to poky/meta/recipes-devtools/lua/lua/lua.pc.in
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/run-ptest b/poky/meta/recipes-devtools/lua/lua/run-ptest
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-devtools/lua/lua/run-ptest
rename to poky/meta/recipes-devtools/lua/lua/run-ptest
diff --git a/poky/meta/recipes-devtools/lua/lua_5.4.3.bb b/poky/meta/recipes-devtools/lua/lua_5.4.3.bb
new file mode 100644
index 0000000..0224744
--- /dev/null
+++ b/poky/meta/recipes-devtools/lua/lua_5.4.3.bb
@@ -0,0 +1,62 @@
+DESCRIPTION = "Lua is a powerful light-weight programming language designed \
+for extending applications."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://doc/readme.html;beginline=307;endline=330;md5=79c3f6b19ad05efe24c1681f025026bb"
+HOMEPAGE = "http://www.lua.org/"
+
+SRC_URI = "http://www.lua.org/ftp/lua-${PV}.tar.gz;name=tarballsrc \
+           file://lua.pc.in \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'http://www.lua.org/tests/lua-${PV_testsuites}-tests.tar.gz;name=tarballtest file://run-ptest ', '', d)} \
+           "
+
+# if no test suite matches PV release of Lua exactly, download the suite for the closest Lua release.
+PV_testsuites = "5.4.3"
+
+SRC_URI[tarballsrc.sha256sum] = "f8612276169e3bfcbcfb8f226195bfc6e466fe13042f1076cbde92b7ec96bbfb"
+SRC_URI[tarballtest.sha256sum] = "5d29c3022897a8290f280ebe1c6853248dfa35a668e1fc02ba9c8cde4e7bf110"
+
+# remove at next version upgrade or when output changes
+# was added after intermittent repro failures poisoned the cache
+PR = "r1"
+HASHEQUIV_HASH_VERSION .= ".2"
+
+inherit pkgconfig binconfig ptest
+
+PACKAGECONFIG ??= "readline"
+PACKAGECONFIG[readline] = ",,readline"
+
+TARGET_CC_ARCH += " -fPIC ${LDFLAGS}"
+EXTRA_OEMAKE = "'CC=${CC} -fPIC' 'MYCFLAGS=${CFLAGS} -fPIC' MYLDFLAGS='${LDFLAGS}' 'AR=ar rcD' 'RANLIB=ranlib -D'"
+
+do_configure:prepend() {
+    sed -i -e s:/usr/local:${prefix}:g src/luaconf.h
+    sed -i -e s:lib/lua/:${baselib}/lua/:g src/luaconf.h
+}
+
+do_compile () {
+    oe_runmake ${@bb.utils.contains('PACKAGECONFIG', 'readline', 'linux-readline', 'linux', d)}
+}
+
+do_install () {
+    oe_runmake \
+        'INSTALL_TOP=${D}${prefix}' \
+        'INSTALL_BIN=${D}${bindir}' \
+        'INSTALL_INC=${D}${includedir}/' \
+        'INSTALL_MAN=${D}${mandir}/man1' \
+        'INSTALL_SHARE=${D}${datadir}/lua' \
+        'INSTALL_LIB=${D}${libdir}' \
+        'INSTALL_CMOD=${D}${libdir}/lua/5.4' \
+        install
+    install -d ${D}${libdir}/pkgconfig
+
+    sed -e s/@VERSION@/${PV}/ ${WORKDIR}/lua.pc.in > ${WORKDIR}/lua.pc
+    install -m 0644 ${WORKDIR}/lua.pc ${D}${libdir}/pkgconfig/
+    rmdir ${D}${datadir}/lua/5.4
+    rmdir ${D}${datadir}/lua
+}
+
+do_install_ptest () {
+        cp -R --no-dereference --preserve=mode,links -v ${WORKDIR}/lua-${PV_testsuites}-tests ${D}${PTEST_PATH}/test
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/meson/meson.inc b/poky/meta/recipes-devtools/meson/meson.inc
index f1746d2..174ebd9 100644
--- a/poky/meta/recipes-devtools/meson/meson.inc
+++ b/poky/meta/recipes-devtools/meson/meson.inc
@@ -9,15 +9,13 @@
 
 SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${PV}.tar.gz \
            file://0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch \
-           file://0003-native_bindir.patch \
            file://0001-python-module-do-not-manipulate-the-environment-when.patch \
            file://disable-rpath-handling.patch \
-           file://0001-modules-python.py-do-not-substitute-python-s-install.patch \
-           file://gi-target-dep.patch \
            file://0001-Make-CPU-family-warnings-fatal.patch \
            file://0002-Support-building-allarch-recipes-again.patch \
+           file://0001-is_debianlike-always-return-False.patch \
            "
-SRC_URI[sha256sum] = "3144a3da662fcf79f1e5602fa929f2821cba4eba28c2c923fe0a7d3e3db04d5d"
+SRC_URI[sha256sum] = "13dee549a7ba758b7e33ce7719f28d1d337a98d10d378a4779ccc996f5a2fc49"
 
 UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases"
 UPSTREAM_CHECK_REGEX = "meson-(?P<pver>\d+(\.\d+)+)\.tar"
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch b/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
index bcccfab..c5be526 100644
--- a/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
+++ b/poky/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
@@ -1,20 +1,21 @@
-From b64032a2eb1fb760f4ffd5b4b666e2433cf80d39 Mon Sep 17 00:00:00 2001
+From 6c4eef1d92e9e42fdbc888365cab3c95fb33c605 Mon Sep 17 00:00:00 2001
 From: Ross Burton <ross.burton@intel.com>
 Date: Tue, 3 Jul 2018 13:59:09 +0100
-Subject: [PATCH 1/2] Make CPU family warnings fatal
+Subject: [PATCH] Make CPU family warnings fatal
 
 Upstream-Status: Inappropriate [OE specific]
 Signed-off-by: Ross Burton <ross.burton@intel.com>
+
 ---
  mesonbuild/envconfig.py   | 2 +-
  mesonbuild/environment.py | 4 +---
  2 files changed, 2 insertions(+), 4 deletions(-)
 
 diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py
-index c6a4df3..4d58c91 100644
+index 307aac3..66fb7ec 100644
 --- a/mesonbuild/envconfig.py
 +++ b/mesonbuild/envconfig.py
-@@ -266,7 +266,7 @@ class MachineInfo:
+@@ -267,7 +267,7 @@ class MachineInfo(HoldableObject):
  
          cpu_family = literal['cpu_family']
          if cpu_family not in known_cpu_families:
@@ -24,20 +25,17 @@
          endian = literal['endian']
          if endian not in ('little', 'big'):
 diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
-index fc9b703..eea8345 100644
+index 71286a5..179917e 100644
 --- a/mesonbuild/environment.py
 +++ b/mesonbuild/environment.py
-@@ -436,9 +436,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str:
+@@ -352,9 +352,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str:
              trial = 'ppc64'
  
      if trial not in known_cpu_families:
--        mlog.warning('Unknown CPU family {!r}, please report this at '
+-        mlog.warning(f'Unknown CPU family {trial!r}, please report this at '
 -                     'https://github.com/mesonbuild/meson/issues/new with the '
--                     'output of `uname -a` and `cat /proc/cpuinfo`'.format(trial))
+-                     'output of `uname -a` and `cat /proc/cpuinfo`')
 +        raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % trial)
  
      return trial
  
--- 
-2.24.0
-
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch b/poky/meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch
new file mode 100644
index 0000000..83c4782
--- /dev/null
+++ b/poky/meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch
@@ -0,0 +1,26 @@
+From 667b9ede638677fb37911306937ea62f05897581 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 18 Oct 2021 15:55:59 +0200
+Subject: [PATCH] is_debianlike(): always return False
+
+Otherwise, host contamination happens.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ mesonbuild/mesonlib/universal.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mesonbuild/mesonlib/universal.py b/mesonbuild/mesonlib/universal.py
+index d670d04..47d1b52 100644
+--- a/mesonbuild/mesonlib/universal.py
++++ b/mesonbuild/mesonlib/universal.py
+@@ -651,7 +651,7 @@ def is_cygwin() -> bool:
+ 
+ 
+ def is_debianlike() -> bool:
+-    return os.path.isfile('/etc/debian_version')
++    return False
+ 
+ 
+ def is_dragonflybsd() -> bool:
diff --git a/poky/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch b/poky/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch
deleted file mode 100644
index 231414f..0000000
--- a/poky/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From f8f67c8d5c3f374b1e30e2d40cb56a79f0544471 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 18 Apr 2019 17:36:11 +0200
-Subject: [PATCH] modules/python.py: do not substitute python's install prefix
- with meson's
-
-Not sure why this is being done, but it
-a) relies on Python's internal variable substitution which may break in the future
-b) shouldn't be necessary as Python's prefix ought to be correct in the first place
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- mesonbuild/modules/python.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py
-index eda70ce..18edd15 100644
---- a/mesonbuild/modules/python.py
-+++ b/mesonbuild/modules/python.py
-@@ -251,7 +251,7 @@ INTROSPECT_COMMAND = '''import sysconfig
- import json
- import sys
- 
--install_paths = sysconfig.get_paths(scheme='posix_prefix', vars={'base': '', 'platbase': '', 'installed_base': ''})
-+install_paths = sysconfig.get_paths(scheme='posix_prefix')
- 
- def links_against_libpython():
-     from distutils.core import Distribution, Extension
-@@ -280,8 +280,8 @@ class PythonInstallation(ExternalProgramHolder):
-         self.variables = info['variables']
-         self.paths = info['paths']
-         install_paths = info['install_paths']
--        self.platlib_install_path = os.path.join(prefix, install_paths['platlib'][1:])
--        self.purelib_install_path = os.path.join(prefix, install_paths['purelib'][1:])
-+        self.platlib_install_path = install_paths['platlib']
-+        self.purelib_install_path = install_paths['purelib']
-         self.version = info['version']
-         self.platform = info['platform']
-         self.is_pypy = info['is_pypy']
diff --git a/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch b/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
deleted file mode 100644
index 89257b9..0000000
--- a/poky/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 30e97d4090a3d3f5b7ddcaf27cfa17f3c8c1d462 Mon Sep 17 00:00:00 2001
-From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
-Date: Wed, 15 Nov 2017 15:05:01 +0100
-Subject: [PATCH] native_bindir
-
-Some libraries, like QT, have pre-processors that convert their input
-files into something that the cross-compiler can process. We find the
-path of those pre-processors via pkg-config-native instead of
-pkg-config.
-
-This path forces the use of pkg-config-native for host_bins arguments.
-
-There are some discussions upstream to merge this patch, but I presonaly believe
-that is is OE only. https://github.com/mesonbuild/meson/issues/1849#issuecomment-303730323
-
-Upstream-Status: Inappropriate [OE specific]
-Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
-
----
- mesonbuild/dependencies/base.py | 19 +++++++++++--------
- 1 file changed, 11 insertions(+), 8 deletions(-)
-
-diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
-index 14380d4..d0c443f 100644
---- a/mesonbuild/dependencies/base.py
-+++ b/mesonbuild/dependencies/base.py
-@@ -179,7 +179,7 @@ class Dependency:
-     def get_exe_args(self, compiler):
-         return []
- 
--    def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any]) -> str:
-+    def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any], use_native=False) -> str:
-         raise DependencyException(f'{self.name!r} is not a pkgconfig dependency')
- 
-     def get_configtool_variable(self, variable_name):
-@@ -267,7 +267,7 @@ class InternalDependency(Dependency):
-             return True
-         return any(d.is_built() for d in self.ext_deps)
- 
--    def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any]) -> str:
-+    def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any], use_native=False) -> str:
-         raise DependencyException('Method "get_pkgconfig_variable()" is '
-                                   'invalid for an internal dependency')
- 
-@@ -645,8 +645,11 @@ class PkgConfigDependency(ExternalDependency):
-         return s.format(self.__class__.__name__, self.name, self.is_found,
-                         self.version_reqs)
- 
--    def _call_pkgbin_real(self, args, env):
--        cmd = self.pkgbin.get_command() + args
-+    def _call_pkgbin_real(self, args, env, use_native=False):
-+        if use_native:
-+            cmd = [self.pkgbin.get_command()[0] + "-native"] + args
-+        else:
-+            cmd = self.pkgbin.get_command() + args
-         p, out, err = Popen_safe(cmd, env=env)
-         rc, out, err = p.returncode, out.strip(), err.strip()
-         call = ' '.join(cmd)
-@@ -674,7 +677,7 @@ class PkgConfigDependency(ExternalDependency):
-             if key.startswith('PKG_'):
-                 mlog.debug(f'env[{key}]: {value}')
- 
--    def _call_pkgbin(self, args, env=None):
-+    def _call_pkgbin(self, args, env=None, use_native=False):
-         # Always copy the environment since we're going to modify it
-         # with pkg-config variables
-         if env is None:
-@@ -688,7 +691,7 @@ class PkgConfigDependency(ExternalDependency):
-         targs = tuple(args)
-         cache = PkgConfigDependency.pkgbin_cache
-         if (self.pkgbin, targs, fenv) not in cache:
--            cache[(self.pkgbin, targs, fenv)] = self._call_pkgbin_real(args, env)
-+            cache[(self.pkgbin, targs, fenv)] = self._call_pkgbin_real(args, env, use_native)
-         return cache[(self.pkgbin, targs, fenv)]
- 
-     def _convert_mingw_paths(self, args: T.List[str]) -> T.List[str]:
-@@ -894,7 +897,7 @@ class PkgConfigDependency(ExternalDependency):
-                                       (self.name, out_raw))
-         self.link_args, self.raw_link_args = self._search_libs(out, out_raw)
- 
--    def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any]) -> str:
-+    def get_pkgconfig_variable(self, variable_name: str, kwargs: T.Dict[str, T.Any], use_native=False) -> str:
-         options = ['--variable=' + variable_name, self.name]
- 
-         if 'define_variable' in kwargs:
-@@ -907,7 +910,7 @@ class PkgConfigDependency(ExternalDependency):
- 
-             options = ['--define-variable=' + '='.join(definition)] + options
- 
--        ret, out, err = self._call_pkgbin(options)
-+        ret, out, err = self._call_pkgbin(options, use_native=use_native)
-         variable = ''
-         if ret != 0:
-             if self.required:
diff --git a/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch b/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch
deleted file mode 100644
index 29e164c..0000000
--- a/poky/meta/recipes-devtools/meson/meson/gi-target-dep.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-When building gobject-introspection we want the *native* binaries (as they need
-to be executed) but *host* gobject-introspection libraries, as otherwise the
-native pkg-config can be used and the build will try to link native and host
-binaries together.
-
-Upstream-Status: Backport [589236226856f591c9e8daf0cb7aa1aef8862388]
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
-index f9660838e..2eefc3fc7 100644
---- a/mesonbuild/modules/gnome.py
-+++ b/mesonbuild/modules/gnome.py
-@@ -84,8 +84,8 @@ class GnomeModule(ExtensionModule):
-                      mlog.bold('https://github.com/mesonbuild/meson/issues/1387'),
-                      once=True)
- 
--    def _get_native_dep(self, state, depname, required=True):
--        kwargs = {'native': True, 'required': required}
-+    def _get_dep(self, state, depname, native=False, required=True):
-+        kwargs = {'native': native, 'required': required}
-         holder = self.interpreter.func_dependency(state.current_node, [depname], kwargs)
-         return holder.held_object
- 
-@@ -101,7 +101,7 @@ class GnomeModule(ExtensionModule):
-             return ExternalProgram.from_entry(name, prog)
- 
-         # Check if pkgconfig has a variable
--        dep = self._get_native_dep(state, depname, required=False)
-+        dep = self._get_dep(state, depname, native=True, required=False)
-         if dep.found() and dep.type_name == 'pkgconfig':
-             value = dep.get_pkgconfig_variable(varname, {})
-             if value:
-@@ -481,7 +481,7 @@ class GnomeModule(ExtensionModule):
- 
-     def _get_gir_dep(self, state):
-         if not self.gir_dep:
--            self.gir_dep = self._get_native_dep(state, 'gobject-introspection-1.0')
-+            self.gir_dep = self._get_dep(state, 'gobject-introspection-1.0')
-             self.giscanner = self._get_native_binary(state, 'g-ir-scanner', 'gobject-introspection-1.0', 'g_ir_scanner')
-             self.gicompiler = self._get_native_binary(state, 'g-ir-compiler', 'gobject-introspection-1.0', 'g_ir_compiler')
-         return self.gir_dep, self.giscanner, self.gicompiler
diff --git a/poky/meta/recipes-devtools/meson/meson/meson-setup.py b/poky/meta/recipes-devtools/meson/meson/meson-setup.py
index 7ac4e3a..daaa551 100755
--- a/poky/meta/recipes-devtools/meson/meson/meson-setup.py
+++ b/poky/meta/recipes-devtools/meson/meson/meson-setup.py
@@ -27,9 +27,17 @@
 
 template_file = os.path.join(sysroot, 'usr/share/meson/meson.cross.template')
 cross_file = os.path.join(sysroot, 'usr/share/meson/%smeson.cross' % os.environ["TARGET_PREFIX"])
+native_template_file = os.path.join(sysroot, 'usr/share/meson/meson.native.template')
+native_file = os.path.join(sysroot, 'usr/share/meson/meson.native')
 
 with open(template_file) as in_file:
     template = in_file.read()
     output = Template(template).substitute(Environ())
     with open(cross_file, "w") as out_file:
         out_file.write(output)
+
+with open(native_template_file) as in_file:
+    template = in_file.read()
+    output = Template(template).substitute({'OECORE_NATIVE_SYSROOT': os.environ['OECORE_NATIVE_SYSROOT']})
+    with open(native_file, "w") as out_file:
+        out_file.write(output)
diff --git a/poky/meta/recipes-devtools/meson/meson/meson-wrapper b/poky/meta/recipes-devtools/meson/meson/meson-wrapper
index d4ffe60..d4b5187 100755
--- a/poky/meta/recipes-devtools/meson/meson/meson-wrapper
+++ b/poky/meta/recipes-devtools/meson/meson/meson-wrapper
@@ -11,4 +11,5 @@
 
 exec "$OECORE_NATIVE_SYSROOT/usr/bin/meson.real" \
      --cross-file "${OECORE_NATIVE_SYSROOT}/usr/share/meson/${TARGET_PREFIX}meson.cross" \
+     --native-file "${OECORE_NATIVE_SYSROOT}/usr/share/meson/meson.native" \
      "$@"
diff --git a/poky/meta/recipes-devtools/meson/meson_0.58.1.bb b/poky/meta/recipes-devtools/meson/meson_0.59.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/meson/meson_0.58.1.bb
rename to poky/meta/recipes-devtools/meson/meson_0.59.2.bb
diff --git a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.1.bb b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.1.bb
deleted file mode 100644
index 0e76cc7..0000000
--- a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.58.1.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-include meson.inc
-
-inherit meson-routines
-inherit nativesdk
-
-SRC_URI += "file://meson-setup.py \
-            file://meson-wrapper"
-
-# The cross file logic is similar but not identical to that in meson.bbclass,
-# since it's generating for an SDK rather than a cross-compile. Important
-# differences are:
-# - We can't set vars like CC, CXX, etc. yet because they will be filled in with
-#   real paths by meson-setup.sh when the SDK is extracted.
-# - Some overrides aren't needed, since the SDK injects paths that take care of
-#   them.
-do_install:append() {
-    install -d ${D}${datadir}/meson
-    cat >${D}${datadir}/meson/meson.cross.template <<EOF
-[binaries]
-c = @CC
-cpp = @CXX
-ar = @AR
-nm = @NM
-strip = @STRIP
-pkgconfig = 'pkg-config'
-
-[properties]
-needs_exe_wrapper = true
-c_args = @CFLAGS
-c_link_args = @LDFLAGS
-cpp_args = @CPPFLAGS
-cpp_link_args = @LDFLAGS
-sys_root = @OECORE_TARGET_SYSROOT
-
-[host_machine]
-system = '${SDK_OS}'
-cpu_family = '${@meson_cpu_family("SDK_ARCH", d)}'
-cpu = '${SDK_ARCH}'
-endian = '${@meson_endian("SDK", d)}'
-EOF
-
-    install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d
-    install -m 0755 ${WORKDIR}/meson-setup.py ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
-
-    # We need to wrap the real meson with a thin env setup wrapper.
-    mv ${D}${bindir}/meson ${D}${bindir}/meson.real
-    install -m 0755 ${WORKDIR}/meson-wrapper ${D}${bindir}/meson
-}
-
-RDEPENDS:${PN} += "\
-    nativesdk-ninja \
-    nativesdk-python3 \
-    nativesdk-python3-setuptools \
-    "
-
-FILES:${PN} += "${datadir}/meson ${SDKPATHNATIVE}"
diff --git a/poky/meta/recipes-devtools/meson/nativesdk-meson_0.59.2.bb b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.59.2.bb
new file mode 100644
index 0000000..7b77041
--- /dev/null
+++ b/poky/meta/recipes-devtools/meson/nativesdk-meson_0.59.2.bb
@@ -0,0 +1,104 @@
+include meson.inc
+
+inherit meson-routines
+inherit nativesdk
+
+SRC_URI += "file://meson-setup.py \
+            file://meson-wrapper"
+
+# The cross file logic is similar but not identical to that in meson.bbclass,
+# since it's generating for an SDK rather than a cross-compile. Important
+# differences are:
+# - We can't set vars like CC, CXX, etc. yet because they will be filled in with
+#   real paths by meson-setup.sh when the SDK is extracted.
+# - Some overrides aren't needed, since the SDK injects paths that take care of
+#   them.
+def var_list2str(var, d):
+    items = d.getVar(var).split()
+    return items[0] if len(items) == 1 else ', '.join(repr(s) for s in items)
+
+def generate_native_link_template(d):
+    val = ['-L@{OECORE_NATIVE_SYSROOT}${libdir_native}',
+           '-L@{OECORE_NATIVE_SYSROOT}${base_libdir_native}',
+           '-Wl,-rpath-link,@{OECORE_NATIVE_SYSROOT}${libdir_native}',
+           '-Wl,-rpath-link,@{OECORE_NATIVE_SYSROOT}${base_libdir_native}',
+           '-Wl,--allow-shlib-undefined'
+        ]
+    build_arch = d.getVar('BUILD_ARCH')
+    if 'x86_64' in build_arch:
+        loader = 'ld-linux-x86-64.so.2'
+    elif 'i686' in build_arch:
+        loader = 'ld-linux.so.2'
+    elif 'aarch64' in build_arch:
+        loader = 'ld-linux-aarch64.so.1'
+    elif 'ppc64le' in build_arch:
+        loader = 'ld64.so.2'
+
+    if loader:
+        val += ['-Wl,--dynamic-linker=@{OECORE_NATIVE_SYSROOT}${base_libdir_native}/' + loader]
+
+    return repr(val)
+
+do_install:append() {
+    install -d ${D}${datadir}/meson
+
+    cat >${D}${datadir}/meson/meson.native.template <<EOF
+[binaries]
+c = ${@meson_array('BUILD_CC', d)}
+cpp = ${@meson_array('BUILD_CXX', d)}
+ar = ${@meson_array('BUILD_AR', d)}
+nm = ${@meson_array('BUILD_NM', d)}
+strip = ${@meson_array('BUILD_STRIP', d)}
+readelf = ${@meson_array('BUILD_READELF', d)}
+pkgconfig = 'pkg-config-native'
+
+[built-in options]
+c_args = ['-isystem@{OECORE_NATIVE_SYSROOT}${includedir_native}' , ${@var_list2str('BUILD_OPTIMIZATION', d)}]
+c_link_args = ${@generate_native_link_template(d)}
+cpp_args = ['-isystem@{OECORE_NATIVE_SYSROOT}${includedir_native}' , ${@var_list2str('BUILD_OPTIMIZATION', d)}]
+cpp_link_args = ${@generate_native_link_template(d)}
+[properties]
+sys_root = '@OECORE_NATIVE_SYSROOT'
+EOF
+
+    cat >${D}${datadir}/meson/meson.cross.template <<EOF
+[binaries]
+c = @CC
+cpp = @CXX
+ar = @AR
+nm = @NM
+strip = @STRIP
+pkgconfig = 'pkg-config'
+
+[built-in options]
+c_args = @CFLAGS
+c_link_args = @LDFLAGS
+cpp_args = @CPPFLAGS
+cpp_link_args = @LDFLAGS
+
+[properties]
+needs_exe_wrapper = true
+sys_root = @OECORE_TARGET_SYSROOT
+
+[host_machine]
+system = '${SDK_OS}'
+cpu_family = '${@meson_cpu_family("SDK_ARCH", d)}'
+cpu = '${SDK_ARCH}'
+endian = '${@meson_endian("SDK", d)}'
+EOF
+
+    install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d
+    install -m 0755 ${WORKDIR}/meson-setup.py ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
+
+    # We need to wrap the real meson with a thin env setup wrapper.
+    mv ${D}${bindir}/meson ${D}${bindir}/meson.real
+    install -m 0755 ${WORKDIR}/meson-wrapper ${D}${bindir}/meson
+}
+
+RDEPENDS:${PN} += "\
+    nativesdk-ninja \
+    nativesdk-python3 \
+    nativesdk-python3-setuptools \
+    "
+
+FILES:${PN} += "${datadir}/meson ${SDKPATHNATIVE}"
diff --git a/poky/meta/recipes-devtools/perl/perl_5.34.0.bb b/poky/meta/recipes-devtools/perl/perl_5.34.0.bb
index 175db4e..89de558 100644
--- a/poky/meta/recipes-devtools/perl/perl_5.34.0.bb
+++ b/poky/meta/recipes-devtools/perl/perl_5.34.0.bb
@@ -36,7 +36,7 @@
 
 PERL_LIB_VER = "${@'.'.join(d.getVar('PV').split('.')[0:2])}.0"
 
-PACKAGECONFIG ??= "bdb gdbm"
+PACKAGECONFIG ??= "gdbm"
 PACKAGECONFIG[bdb] = ",-Ui_db,db"
 PACKAGECONFIG[gdbm] = ",-Ui_gdbm,gdbm"
 
diff --git a/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb b/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
index aa2692b..39b87ec 100644
--- a/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
+++ b/poky/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
@@ -8,7 +8,7 @@
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRCREV = "edf8e6f0ea77ede073f07bff0d2ae1fc7a38103b"
+SRCREV = "d97db4fae4c1cd099b506970b285dc2afd818ea2"
 PV = "0.29.2+git${SRCPV}"
 
 SRC_URI = "git://gitlab.freedesktop.org/pkg-config/pkg-config.git;branch=master;protocol=https \
diff --git a/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.2.bb b/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.2.bb
deleted file mode 100644
index 8e09585..0000000
--- a/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.2.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SUMMARY = "A sophisticated Numeric Processing Package for Python"
-HOMEPAGE = "https://numpy.org/"
-DESCRIPTION = "NumPy is the fundamental package needed for scientific computing with Python."
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause & BSD-2-Clause & PSF & Apache-2.0 & MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b076ad374a7d311ba3126a22b2d52596"
-
-SRCNAME = "numpy"
-
-SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/v${PV}/${SRCNAME}-${PV}.tar.gz \
-           file://0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch \
-           file://0001-numpy-core-Define-RISCV-32-support.patch \
-           file://run-ptest \
-"
-SRC_URI[sha256sum] = "76af194fbc117934ec5bbe2ff15177adbd05aeed23f18ee209ed88edcd777e05"
-
-UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
-
-DEPENDS += "python3-cython-native"
-
-inherit ptest setuptools3
-
-S = "${WORKDIR}/numpy-${PV}"
-
-CLEANBROKEN = "1"
-
-FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/lib/*.a ${PYTHON_SITEPACKAGES_DIR}/numpy/random/lib/*.a"
-
-# install what is needed for numpy.test()
-RDEPENDS:${PN} = "${PYTHON_PN}-unittest \
-                  ${PYTHON_PN}-difflib \
-                  ${PYTHON_PN}-pprint \
-                  ${PYTHON_PN}-pickle \
-                  ${PYTHON_PN}-shell \
-                  ${PYTHON_PN}-doctest \
-                  ${PYTHON_PN}-datetime \
-                  ${PYTHON_PN}-distutils \
-                  ${PYTHON_PN}-misc \
-                  ${PYTHON_PN}-mmap \
-                  ${PYTHON_PN}-netclient \
-                  ${PYTHON_PN}-numbers \
-                  ${PYTHON_PN}-pydoc \
-                  ${PYTHON_PN}-pkgutil \
-                  ${PYTHON_PN}-email \
-                  ${PYTHON_PN}-compression \
-                  ${PYTHON_PN}-ctypes \
-                  ${PYTHON_PN}-threading \
-                  ${PYTHON_PN}-multiprocessing \
-"
-RDEPENDS:${PN}-ptest += "${PYTHON_PN}-pytest \
-                         ${PYTHON_PN}-hypothesis \
-                         ${PYTHON_PN}-sortedcontainers \
-                         ${PYTHON_PN}-resource \
-                         ldd \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.3.bb b/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.3.bb
new file mode 100644
index 0000000..4a289c2
--- /dev/null
+++ b/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.3.bb
@@ -0,0 +1,58 @@
+SUMMARY = "A sophisticated Numeric Processing Package for Python"
+HOMEPAGE = "https://numpy.org/"
+DESCRIPTION = "NumPy is the fundamental package needed for scientific computing with Python."
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause & BSD-2-Clause & PSF & Apache-2.0 & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b076ad374a7d311ba3126a22b2d52596"
+
+SRCNAME = "numpy"
+
+SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/v${PV}/${SRCNAME}-${PV}.tar.gz \
+           file://0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch \
+           file://0001-numpy-core-Define-RISCV-32-support.patch \
+           file://run-ptest \
+"
+SRC_URI[sha256sum] = "d0bba24083c01ae43457514d875f10d9ce4c1125d55b1e2573277b2410f2d068"
+
+UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
+
+DEPENDS += "python3-cython-native"
+
+inherit ptest setuptools3
+
+S = "${WORKDIR}/numpy-${PV}"
+
+CLEANBROKEN = "1"
+
+FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/lib/*.a ${PYTHON_SITEPACKAGES_DIR}/numpy/random/lib/*.a"
+
+# install what is needed for numpy.test()
+RDEPENDS:${PN} = "${PYTHON_PN}-unittest \
+                  ${PYTHON_PN}-difflib \
+                  ${PYTHON_PN}-pprint \
+                  ${PYTHON_PN}-pickle \
+                  ${PYTHON_PN}-shell \
+                  ${PYTHON_PN}-doctest \
+                  ${PYTHON_PN}-datetime \
+                  ${PYTHON_PN}-distutils \
+                  ${PYTHON_PN}-misc \
+                  ${PYTHON_PN}-mmap \
+                  ${PYTHON_PN}-netclient \
+                  ${PYTHON_PN}-numbers \
+                  ${PYTHON_PN}-pydoc \
+                  ${PYTHON_PN}-pkgutil \
+                  ${PYTHON_PN}-email \
+                  ${PYTHON_PN}-compression \
+                  ${PYTHON_PN}-ctypes \
+                  ${PYTHON_PN}-threading \
+                  ${PYTHON_PN}-multiprocessing \
+"
+RDEPENDS:${PN}-ptest += "${PYTHON_PN}-pytest \
+                         ${PYTHON_PN}-hypothesis \
+                         ${PYTHON_PN}-sortedcontainers \
+                         ${PYTHON_PN}-resource \
+                         ldd \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch b/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
index 2b1f899..46546eb 100644
--- a/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
+++ b/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
@@ -1,4 +1,4 @@
-From 4e2c87105884af6dfc3bc9f8c65b199ecc3b5186 Mon Sep 17 00:00:00 2001
+From 58b614411867a31cf5f9684a45fe519b8e4f3e7b Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Tue, 17 Jul 2018 10:13:38 +0800
 Subject: [PATCH] conditionally do not fetch code by easy_install
@@ -15,10 +15,10 @@
  1 file changed, 5 insertions(+)
 
 diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
-index 45adb6a..9ac3342 100644
+index 1aed0e8..f491c0a 100644
 --- a/setuptools/command/easy_install.py
 +++ b/setuptools/command/easy_install.py
-@@ -636,6 +636,11 @@ class easy_install(Command):
+@@ -642,6 +642,11 @@ class easy_install(Command):
              os.path.exists(tmpdir) and rmtree(tmpdir)
  
      def easy_install(self, spec, deps=False):
diff --git a/poky/meta/recipes-devtools/python/python-pyparsing.inc b/poky/meta/recipes-devtools/python/python-pyparsing.inc
deleted file mode 100644
index 330bf7e..0000000
--- a/poky/meta/recipes-devtools/python/python-pyparsing.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Python parsing module"
-HOMEPAGE = "http://pyparsing.wikispaces.com/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1"
-
-SRC_URI[md5sum] = "f0953e47a0112f7a65aec2305ffdf7b4"
-SRC_URI[sha256sum] = "c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"
-UPSTREAM_CHECK_REGEX = "pyparsing-(?P<pver>.*)\.tar"
-
-inherit pypi
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-debugger \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-pprint \
-    ${PYTHON_PN}-stringold \
-    ${PYTHON_PN}-threading \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python-smmap.inc b/poky/meta/recipes-devtools/python/python-smmap.inc
deleted file mode 100644
index 7d0cff5..0000000
--- a/poky/meta/recipes-devtools/python/python-smmap.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Python implementation of a sliding window memory map manager"
-DESCRIPTION = "A pure Python implementation of a sliding memory map to \
-help unifying memory mapped access on 32 and 64 bit systems and to help \
-managing resources more efficiently."
-HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
-
-inherit pypi
-
-PYPI_PACKAGE = "smmap"
-
-SRC_URI[sha256sum] = "7e65386bd122d45405ddf795637b7f7d2b532e7e401d46bbe3fb49b9986d5182"
-
-RDEPENDS:${PN} += "${PYTHON_PN}-codecs \
-                   ${PYTHON_PN}-mmap \
-"
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-dbusmock_0.23.1.bb b/poky/meta/recipes-devtools/python/python3-dbusmock_0.23.1.bb
deleted file mode 100644
index 28e9929..0000000
--- a/poky/meta/recipes-devtools/python/python3-dbusmock_0.23.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus"
-HOMEPAGE = "https://pypi.org/project/python-dbusmock/"
-
-LICENSE = "GPL-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-SRC_URI[sha256sum] = "b5c36a9c9935d1867cf79d8666b08ad906660e6d4d967e9fded4361ad7eef54f"
-
-PYPI_PACKAGE = "python-dbusmock"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-dbus \
-    ${PYTHON_PN}-pygobject \
-    ${PYTHON_PN}-unittest \
-    ${PYTHON_PN}-xml \
-    "
diff --git a/poky/meta/recipes-devtools/python/python3-dbusmock_0.24.0.bb b/poky/meta/recipes-devtools/python/python3-dbusmock_0.24.0.bb
new file mode 100644
index 0000000..271a2b1
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-dbusmock_0.24.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus"
+HOMEPAGE = "https://pypi.org/project/python-dbusmock/"
+
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+SRC_URI[sha256sum] = "0be0d51dba4aee050bb2cd9074a377bf9308306df1eb7918038c6ffe7153c272"
+
+PYPI_PACKAGE = "python-dbusmock"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-dbus \
+    ${PYTHON_PN}-pygobject \
+    ${PYTHON_PN}-unittest \
+    ${PYTHON_PN}-xml \
+    "
diff --git a/poky/meta/recipes-devtools/python/python3-git_3.1.20.bb b/poky/meta/recipes-devtools/python/python3-git_3.1.20.bb
deleted file mode 100644
index 2c20d39..0000000
--- a/poky/meta/recipes-devtools/python/python3-git_3.1.20.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Python library used to interact with Git repositories"
-DESCRIPTION = "GitPython provides object model read and write access to \
-a git repository. Access repository information conveniently, alter the \
-index directly, handle remotes, or go down to low-level object database \
-access with big-files support."
-HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8b8d26c37c1d5a04f9b0186edbebc183"
-
-PYPI_PACKAGE = "GitPython"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "df0e072a200703a65387b0cfdf0466e3bab729c0458cf6b7349d0e9877636519"
-
-DEPENDS += " ${PYTHON_PN}-gitdb"
-
-RDEPENDS:${PN} += " \
-                   ${PYTHON_PN}-datetime \
-                   ${PYTHON_PN}-gitdb \
-                   ${PYTHON_PN}-io \
-                   ${PYTHON_PN}-logging \
-                   ${PYTHON_PN}-math \
-                   ${PYTHON_PN}-netclient \
-                   ${PYTHON_PN}-stringold \
-                   ${PYTHON_PN}-unittest \
-                   ${PYTHON_PN}-unixadmin \
-                   git \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-git_3.1.24.bb b/poky/meta/recipes-devtools/python/python3-git_3.1.24.bb
new file mode 100644
index 0000000..445c7b0
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-git_3.1.24.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Python library used to interact with Git repositories"
+DESCRIPTION = "GitPython provides object model read and write access to \
+a git repository. Access repository information conveniently, alter the \
+index directly, handle remotes, or go down to low-level object database \
+access with big-files support."
+HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8b8d26c37c1d5a04f9b0186edbebc183"
+
+PYPI_PACKAGE = "GitPython"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "df83fdf5e684fef7c6ee2c02fc68a5ceb7e7e759d08b694088d0cacb4eba59e5"
+
+DEPENDS += " ${PYTHON_PN}-gitdb"
+
+RDEPENDS:${PN} += " \
+                   ${PYTHON_PN}-datetime \
+                   ${PYTHON_PN}-gitdb \
+                   ${PYTHON_PN}-io \
+                   ${PYTHON_PN}-logging \
+                   ${PYTHON_PN}-math \
+                   ${PYTHON_PN}-netclient \
+                   ${PYTHON_PN}-stringold \
+                   ${PYTHON_PN}-unittest \
+                   ${PYTHON_PN}-unixadmin \
+                   git \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-hypothesis_6.15.0.bb b/poky/meta/recipes-devtools/python/python3-hypothesis_6.15.0.bb
deleted file mode 100644
index 1ea6bb5..0000000
--- a/poky/meta/recipes-devtools/python/python3-hypothesis_6.15.0.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "A library for property-based testing"
-HOMEPAGE = "https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python"
-LICENSE = "MPL-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4ee62c16ebd0f4f99d906f36b7de8c3c"
-
-PYPI_PACKAGE = "hypothesis"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-    file://run-ptest \
-    file://test_binary_search.py \
-    file://test_rle.py \
-    "
-
-SRC_URI[sha256sum] = "10699f595eebb9410fd902908aa13aece19be5c437b405092be34f60f69f7999"
-
-RDEPENDS:${PN} += " \
-    python3-attrs \
-    python3-compression \
-    python3-core \
-    python3-json \
-    python3-sortedcontainers \
-    python3-statistics \
-    python3-unittest \
-    "
-
-RDEPENDS:${PN}-ptest += " \
-    ${PYTHON_PN}-pytest \
-    "
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}/examples
-    install -m 0755 ${WORKDIR}/test_binary_search.py ${D}${PTEST_PATH}/examples/
-    install -m 0755 ${WORKDIR}/test_rle.py ${D}${PTEST_PATH}/examples/
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-hypothesis_6.24.0.bb b/poky/meta/recipes-devtools/python/python3-hypothesis_6.24.0.bb
new file mode 100644
index 0000000..50f7e01
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-hypothesis_6.24.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "A library for property-based testing"
+HOMEPAGE = "https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4ee62c16ebd0f4f99d906f36b7de8c3c"
+
+PYPI_PACKAGE = "hypothesis"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+    file://run-ptest \
+    file://test_binary_search.py \
+    file://test_rle.py \
+    "
+
+SRC_URI[sha256sum] = "ef53bd1c4756436be2e8d4a2e16f6f5ffbca7acbe8041e6872aea16176ff3806"
+
+RDEPENDS:${PN} += " \
+    python3-attrs \
+    python3-compression \
+    python3-core \
+    python3-json \
+    python3-sortedcontainers \
+    python3-statistics \
+    python3-unittest \
+    "
+
+RDEPENDS:${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+    "
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/examples
+    install -m 0755 ${WORKDIR}/test_binary_search.py ${D}${PTEST_PATH}/examples/
+    install -m 0755 ${WORKDIR}/test_rle.py ${D}${PTEST_PATH}/examples/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.6.4.bb b/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.6.4.bb
deleted file mode 100644
index e5aad99..0000000
--- a/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.6.4.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "Read metadata from Python packages"
-HOMEPAGE = "https://pypi.org/project/importlib-metadata/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e88ae122f3925d8bde8319060f2ddb8e"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE = "importlib_metadata"
-UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/"
-
-SRC_URI[sha256sum] = "7b30a78db2922d78a6f47fb30683156a14f3c6aa5cc23f77cc8967e9ab2d002f"
-
-S = "${WORKDIR}/importlib_metadata-${PV}"
-
-DEPENDS += "${PYTHON_PN}-setuptools-scm-native ${PYTHON_PN}-toml-native"
-RDEPENDS:${PN} += "${PYTHON_PN}-zipp ${PYTHON_PN}-pathlib2"
-RDEPENDS:${PN}:append:class-target = " python3-misc"
-RDEPENDS:${PN}:append:class-nativesdk = " python3-misc"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.8.1.bb b/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.8.1.bb
new file mode 100644
index 0000000..3f75668
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.8.1.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Read metadata from Python packages"
+HOMEPAGE = "https://pypi.org/project/importlib-metadata/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e88ae122f3925d8bde8319060f2ddb8e"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "importlib_metadata"
+UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/"
+
+SRC_URI[sha256sum] = "f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"
+
+S = "${WORKDIR}/importlib_metadata-${PV}"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native ${PYTHON_PN}-toml-native"
+RDEPENDS:${PN} += "${PYTHON_PN}-zipp ${PYTHON_PN}-pathlib2"
+RDEPENDS:${PN}:append:class-target = " python3-misc"
+RDEPENDS:${PN}:append:class-nativesdk = " python3-misc"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-jinja2_3.0.1.bb b/poky/meta/recipes-devtools/python/python3-jinja2_3.0.1.bb
deleted file mode 100644
index abb89c9..0000000
--- a/poky/meta/recipes-devtools/python/python3-jinja2_3.0.1.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-DESCRIPTION = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python."
-HOMEPAGE = "https://pypi.org/project/Jinja/"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
-
-SRC_URI[sha256sum] = "703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4"
-
-PYPI_PACKAGE = "Jinja2"
-
-CVE_PRODUCT = "jinja2 jinja"
-
-CLEANBROKEN = "1"
-
-inherit pypi setuptools3
-inherit ${@bb.utils.filter('DISTRO_FEATURES', 'ptest', d)}
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}/tests
-    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-        ${PYTHON_PN}-toml \
-	${PYTHON_PN}-unixadmin \
-"
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-asyncio \
-    ${PYTHON_PN}-crypt \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-markupsafe \
-    ${PYTHON_PN}-math \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-numbers\
-    ${PYTHON_PN}-pickle \
-    ${PYTHON_PN}-pprint \
-    ${PYTHON_PN}-shell \
-    ${PYTHON_PN}-threading \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-jinja2_3.0.2.bb b/poky/meta/recipes-devtools/python/python3-jinja2_3.0.2.bb
new file mode 100644
index 0000000..139fe66
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-jinja2_3.0.2.bb
@@ -0,0 +1,48 @@
+DESCRIPTION = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python."
+HOMEPAGE = "https://pypi.org/project/Jinja/"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
+
+SRC_URI[sha256sum] = "827a0e32839ab1600d4eb1c4c33ec5a8edfbc5cb42dafa13b81f182f97784b45"
+
+PYPI_PACKAGE = "Jinja2"
+
+CVE_PRODUCT = "jinja2 jinja"
+
+CLEANBROKEN = "1"
+
+inherit pypi setuptools3
+inherit ${@bb.utils.filter('DISTRO_FEATURES', 'ptest', d)}
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+        ${PYTHON_PN}-toml \
+	${PYTHON_PN}-unixadmin \
+"
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-asyncio \
+    ${PYTHON_PN}-crypt \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-markupsafe \
+    ${PYTHON_PN}-math \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers\
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-more-itertools_8.10.0.bb b/poky/meta/recipes-devtools/python/python3-more-itertools_8.10.0.bb
new file mode 100644
index 0000000..93d3ad6
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-more-itertools_8.10.0.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "More routines for operating on iterables, beyond itertools"
+HOMEPAGE = "https://github.com/erikrose/more-itertools"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5"
+
+SRC_URI[sha256sum] = "1debcabeb1df793814859d64a81ad7cb10504c24349368ccf214c664c474f41f"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN} += " \
+        ${PYTHON_PN}-asyncio \
+        "
+
+RDEPENDS:${PN}-ptest += " \
+	${PYTHON_PN}-pytest \
+        "
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-more-itertools_8.8.0.bb b/poky/meta/recipes-devtools/python/python3-more-itertools_8.8.0.bb
deleted file mode 100644
index fe41d47..0000000
--- a/poky/meta/recipes-devtools/python/python3-more-itertools_8.8.0.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "More routines for operating on iterables, beyond itertools"
-HOMEPAGE = "https://github.com/erikrose/more-itertools"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5"
-
-SRC_URI[sha256sum] = "83f0308e05477c68f56ea3a888172c78ed5d5b3c282addb67508e7ba6c8f813a"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN} += " \
-        ${PYTHON_PN}-asyncio \
-        "
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-        "
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-packaging_21.0.bb b/poky/meta/recipes-devtools/python/python3-packaging_21.0.bb
index 201b583..f20f888 100644
--- a/poky/meta/recipes-devtools/python/python3-packaging_21.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-packaging_21.0.bb
@@ -7,7 +7,7 @@
 
 inherit pypi setuptools3
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
 
-DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
-RDEPENDS:${PN} += "${PYTHON_PN}-six ${PYTHON_PN}-pyparsing"
+DEPENDS += "${PYTHON_PN}-setuptools-native"
+RDEPENDS:${PN} += "${PYTHON_PN}-pyparsing"
diff --git a/poky/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch b/poky/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch
index 0187001..d6c27b8 100644
--- a/poky/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch
+++ b/poky/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch
@@ -1,4 +1,4 @@
-From baa85a4dab2e8d64eb25d1181b6420db25ce919a Mon Sep 17 00:00:00 2001
+From dca973830d4eee3e0f79e61237c44a9dd8201641 Mon Sep 17 00:00:00 2001
 From: Trevor Gamblin <trevor.gamblin@windriver.com>
 Date: Tue, 22 Jun 2021 12:31:46 -0400
 Subject: [PATCH] change shebang to python3
@@ -10,8 +10,8 @@
 they correctly reference the python3 binary.
 
 Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
+
 ---
- src/pip/_vendor/appdirs.py                    | 2 +-
  src/pip/_vendor/chardet/langbulgarianmodel.py | 2 +-
  src/pip/_vendor/chardet/langgreekmodel.py     | 2 +-
  src/pip/_vendor/chardet/langhebrewmodel.py    | 2 +-
@@ -21,20 +21,10 @@
  src/pip/_vendor/chardet/langturkishmodel.py   | 2 +-
  src/pip/_vendor/chardet/metadata/languages.py | 2 +-
  src/pip/_vendor/requests/certs.py             | 2 +-
- 10 files changed, 10 insertions(+), 10 deletions(-)
+ 9 files changed, 9 insertions(+), 9 deletions(-)
 
-diff --git a/src/pip/_vendor/appdirs.py b/src/pip/_vendor/appdirs.py
-index 33a3b7741..60b9ef5f7 100644
---- a/src/pip/_vendor/appdirs.py
-+++ b/src/pip/_vendor/appdirs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- # Copyright (c) 2005-2010 ActiveState Software Inc.
- # Copyright (c) 2013 Eddy Petrișor
 diff --git a/src/pip/_vendor/chardet/langbulgarianmodel.py b/src/pip/_vendor/chardet/langbulgarianmodel.py
-index e963a5097..97ea6cea8 100644
+index e963a50..97ea6ce 100644
 --- a/src/pip/_vendor/chardet/langbulgarianmodel.py
 +++ b/src/pip/_vendor/chardet/langbulgarianmodel.py
 @@ -1,4 +1,4 @@
@@ -44,7 +34,7 @@
  
  from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
 diff --git a/src/pip/_vendor/chardet/langgreekmodel.py b/src/pip/_vendor/chardet/langgreekmodel.py
-index d99528ede..4a127ea83 100644
+index d99528e..4a127ea 100644
 --- a/src/pip/_vendor/chardet/langgreekmodel.py
 +++ b/src/pip/_vendor/chardet/langgreekmodel.py
 @@ -1,4 +1,4 @@
@@ -54,7 +44,7 @@
  
  from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
 diff --git a/src/pip/_vendor/chardet/langhebrewmodel.py b/src/pip/_vendor/chardet/langhebrewmodel.py
-index 484c652a4..676c1a711 100644
+index 484c652..676c1a7 100644
 --- a/src/pip/_vendor/chardet/langhebrewmodel.py
 +++ b/src/pip/_vendor/chardet/langhebrewmodel.py
 @@ -1,4 +1,4 @@
@@ -64,7 +54,7 @@
  
  from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
 diff --git a/src/pip/_vendor/chardet/langhungarianmodel.py b/src/pip/_vendor/chardet/langhungarianmodel.py
-index bbc5cda64..042eae70a 100644
+index bbc5cda..042eae7 100644
 --- a/src/pip/_vendor/chardet/langhungarianmodel.py
 +++ b/src/pip/_vendor/chardet/langhungarianmodel.py
 @@ -1,4 +1,4 @@
@@ -74,7 +64,7 @@
  
  from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
 diff --git a/src/pip/_vendor/chardet/langrussianmodel.py b/src/pip/_vendor/chardet/langrussianmodel.py
-index 5594452b5..564b02e58 100644
+index 5594452..564b02e 100644
 --- a/src/pip/_vendor/chardet/langrussianmodel.py
 +++ b/src/pip/_vendor/chardet/langrussianmodel.py
 @@ -1,4 +1,4 @@
@@ -84,7 +74,7 @@
  
  from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
 diff --git a/src/pip/_vendor/chardet/langthaimodel.py b/src/pip/_vendor/chardet/langthaimodel.py
-index 9a37db573..c97487959 100644
+index 9a37db5..c974879 100644
 --- a/src/pip/_vendor/chardet/langthaimodel.py
 +++ b/src/pip/_vendor/chardet/langthaimodel.py
 @@ -1,4 +1,4 @@
@@ -94,7 +84,7 @@
  
  from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
 diff --git a/src/pip/_vendor/chardet/langturkishmodel.py b/src/pip/_vendor/chardet/langturkishmodel.py
-index 43f4230ae..7e710c371 100644
+index 43f4230..7e710c3 100644
 --- a/src/pip/_vendor/chardet/langturkishmodel.py
 +++ b/src/pip/_vendor/chardet/langturkishmodel.py
 @@ -1,4 +1,4 @@
@@ -104,7 +94,7 @@
  
  from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
 diff --git a/src/pip/_vendor/chardet/metadata/languages.py b/src/pip/_vendor/chardet/metadata/languages.py
-index 3237d5abf..aa2ec7c35 100644
+index 3237d5a..aa2ec7c 100644
 --- a/src/pip/_vendor/chardet/metadata/languages.py
 +++ b/src/pip/_vendor/chardet/metadata/languages.py
 @@ -1,4 +1,4 @@
@@ -114,7 +104,7 @@
  """
  Metadata about languages used by our model training code for our
 diff --git a/src/pip/_vendor/requests/certs.py b/src/pip/_vendor/requests/certs.py
-index 06a594e58..bfa7839a4 100644
+index 06a594e..bfa7839 100644
 --- a/src/pip/_vendor/requests/certs.py
 +++ b/src/pip/_vendor/requests/certs.py
 @@ -1,4 +1,4 @@
@@ -123,6 +113,3 @@
  # -*- coding: utf-8 -*-
  
  """
--- 
-2.31.1
-
diff --git a/poky/meta/recipes-devtools/python/python3-pip_21.2.4.bb b/poky/meta/recipes-devtools/python/python3-pip_21.2.4.bb
deleted file mode 100644
index 1f0f707..0000000
--- a/poky/meta/recipes-devtools/python/python3-pip_21.2.4.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "The PyPA recommended tool for installing Python packages"
-HOMEPAGE = "https://pypi.org/project/pip"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c4fa2b50f55649f43060fa04b0919b9b"
-
-DEPENDS += "python3 python3-setuptools-native"
-
-inherit pypi distutils3
-
-SRC_URI += "file://0001-change-shebang-to-python3.patch"
-
-SRC_URI[sha256sum] = "0eb8a1516c3d138ae8689c0c1a60fde7143310832f9dc77e11d8a4bc62de193b"
-
-do_install:append() {
-    # Install as pip3 and leave pip2 as default
-    rm ${D}/${bindir}/pip
-}
-
-RDEPENDS:${PN} = "\
-  python3-compile \
-  python3-io \
-  python3-html \
-  python3-json \
-  python3-multiprocessing \
-  python3-netserver \
-  python3-setuptools \
-  python3-unixadmin \
-  python3-xmlrpc \
-  python3-pickle \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-pip_21.3.1.bb b/poky/meta/recipes-devtools/python/python3-pip_21.3.1.bb
new file mode 100644
index 0000000..6ddb1d6
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-pip_21.3.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "The PyPA recommended tool for installing Python packages"
+HOMEPAGE = "https://pypi.org/project/pip"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c4fa2b50f55649f43060fa04b0919b9b"
+
+DEPENDS += "python3 python3-setuptools-native"
+
+inherit pypi distutils3
+
+SRC_URI += "file://0001-change-shebang-to-python3.patch"
+
+SRC_URI[sha256sum] = "fd11ba3d0fdb4c07fbc5ecbba0b1b719809420f25038f8ee3cd913d3faa3033a"
+
+do_install:append() {
+    # Install as pip3 and leave pip2 as default
+    rm ${D}/${bindir}/pip
+}
+
+RDEPENDS:${PN} = "\
+  python3-compile \
+  python3-io \
+  python3-html \
+  python3-json \
+  python3-multiprocessing \
+  python3-netserver \
+  python3-setuptools \
+  python3-unixadmin \
+  python3-xmlrpc \
+  python3-pickle \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-pycryptodome_3.10.1.bb b/poky/meta/recipes-devtools/python/python3-pycryptodome_3.10.1.bb
deleted file mode 100644
index 28448b8..0000000
--- a/poky/meta/recipes-devtools/python/python3-pycryptodome_3.10.1.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require python-pycryptodome.inc
-inherit setuptools3
-
-SRC_URI[sha256sum] = "3e2e3a06580c5f190df843cdb90ea28d61099cf4924334d5297a995de68e4673"
-
diff --git a/poky/meta/recipes-devtools/python/python3-pycryptodome_3.11.0.bb b/poky/meta/recipes-devtools/python/python3-pycryptodome_3.11.0.bb
new file mode 100644
index 0000000..b0e3717
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-pycryptodome_3.11.0.bb
@@ -0,0 +1,5 @@
+require python-pycryptodome.inc
+inherit setuptools3
+
+SRC_URI[sha256sum] = "428096bbf7a77e207f418dfd4d7c284df8ade81d2dc80f010e92753a3e406ad0"
+
diff --git a/poky/meta/recipes-devtools/python/python3-pycryptodomex_3.10.1.bb b/poky/meta/recipes-devtools/python/python3-pycryptodomex_3.10.1.bb
deleted file mode 100644
index 2d929f1..0000000
--- a/poky/meta/recipes-devtools/python/python3-pycryptodomex_3.10.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require python-pycryptodome.inc
-inherit setuptools3
-
-SRC_URI[sha256sum] = "541cd3e3e252fb19a7b48f420b798b53483302b7fe4d9954c947605d0a263d62"
-
-FILES:${PN}-tests = " \
-    ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \
-    ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/__pycache__/ \
-"
diff --git a/poky/meta/recipes-devtools/python/python3-pycryptodomex_3.11.0.bb b/poky/meta/recipes-devtools/python/python3-pycryptodomex_3.11.0.bb
new file mode 100644
index 0000000..f1132c2
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-pycryptodomex_3.11.0.bb
@@ -0,0 +1,9 @@
+require python-pycryptodome.inc
+inherit setuptools3
+
+SRC_URI[sha256sum] = "0398366656bb55ebdb1d1d493a7175fc48ade449283086db254ac44c7d318d6d"
+
+FILES:${PN}-tests = " \
+    ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \
+    ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/__pycache__/ \
+"
diff --git a/poky/meta/recipes-devtools/python/python3-pygobject_3.40.1.bb b/poky/meta/recipes-devtools/python/python3-pygobject_3.40.1.bb
deleted file mode 100644
index a0d4f04..0000000
--- a/poky/meta/recipes-devtools/python/python3-pygobject_3.40.1.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Python GObject bindings"
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/pygobject"
-DESCRIPTION = "PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more."
-SECTION = "devel/python"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase distutils3-base gobject-introspection upstream-version-is-even
-
-DEPENDS += "python3 glib-2.0"
-
-SRCNAME="pygobject"
-
-SRC_URI = " \
-    http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
-    file://0001-Do-not-build-tests.patch \
-"
-SRC_URI[sha256sum] = "00c6d591f4cb40c335ab1fd3e8c17869ba15cfda54416fe363290af766790035"
-
-UNKNOWN_CONFIGURE_WHITELIST = "introspection"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-PACKAGECONFIG ??= "${@bb.utils.contains_any('DISTRO_FEATURES', [ 'directfb', 'wayland', 'x11' ], 'cairo', '', d)}"
-
-RDEPENDS:${PN} += "python3-pkgutil"
-
-# python3-pycairo is checked on configuration -> DEPENDS
-# we don't link against python3-pycairo -> RDEPENDS
-PACKAGECONFIG[cairo] = "-Dpycairo=enabled,-Dpycairo=disabled, cairo python3-pycairo, python3-pycairo"
-
-BBCLASSEXTEND = "native"
-PACKAGECONFIG:class-native = ""
diff --git a/poky/meta/recipes-devtools/python/python3-pygobject_3.42.0.bb b/poky/meta/recipes-devtools/python/python3-pygobject_3.42.0.bb
new file mode 100644
index 0000000..7ff7c5b
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-pygobject_3.42.0.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Python GObject bindings"
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/pygobject"
+DESCRIPTION = "PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more."
+SECTION = "devel/python"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase distutils3-base upstream-version-is-even
+
+DEPENDS += "python3 glib-2.0"
+
+# Generating introspection data depends on a combination of native and target
+# introspection tools, and qemu to run the target tools.
+DEPENDS:append:class-target = " gobject-introspection gobject-introspection-native qemu-native prelink-native"
+
+# Even though introspection is disabled on -native, gobject-introspection package is still
+# needed for m4 macros.
+DEPENDS:append:class-native = " gobject-introspection-native"
+DEPENDS:append:class-nativesdk = " gobject-introspection-native"
+
+SRCNAME="pygobject"
+
+SRC_URI = " \
+    http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
+    file://0001-Do-not-build-tests.patch \
+"
+SRC_URI[sha256sum] = "9b12616e32cfc792f9dc841d9c472a41a35b85ba67d3a6eb427e307a6fe4367b"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+PACKAGECONFIG ??= "${@bb.utils.contains_any('DISTRO_FEATURES', [ 'directfb', 'wayland', 'x11' ], 'cairo', '', d)}"
+
+RDEPENDS:${PN} += "python3-pkgutil"
+
+# python3-pycairo is checked on configuration -> DEPENDS
+# we don't link against python3-pycairo -> RDEPENDS
+PACKAGECONFIG[cairo] = "-Dpycairo=enabled,-Dpycairo=disabled, cairo python3-pycairo, python3-pycairo"
+
+BBCLASSEXTEND = "native"
+PACKAGECONFIG:class-native = ""
diff --git a/poky/meta/recipes-devtools/python/python3-pyparsing_2.4.7.bb b/poky/meta/recipes-devtools/python/python3-pyparsing_2.4.7.bb
deleted file mode 100644
index d0c3d0b..0000000
--- a/poky/meta/recipes-devtools/python/python3-pyparsing_2.4.7.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit setuptools3
-require python-pyparsing.inc
-
diff --git a/poky/meta/recipes-devtools/python/python3-pyparsing_3.0.0.bb b/poky/meta/recipes-devtools/python/python3-pyparsing_3.0.0.bb
new file mode 100644
index 0000000..f1f6b0d
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-pyparsing_3.0.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Python parsing module"
+HOMEPAGE = "http://pyparsing.wikispaces.com/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1"
+
+SRC_URI[sha256sum] = "001cad8d467e7a9248ef9fd513f5c0d39afcbcb9a43684101853bd0ab962e479"
+
+UPSTREAM_CHECK_REGEX = "pyparsing-(?P<pver>.*)\.tar"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-debugger \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-stringold \
+    ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-pytest/0001-Allow-pluggy-1.0.patch b/poky/meta/recipes-devtools/python/python3-pytest/0001-Allow-pluggy-1.0.patch
deleted file mode 100644
index 175ef98..0000000
--- a/poky/meta/recipes-devtools/python/python3-pytest/0001-Allow-pluggy-1.0.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 637d4400d2bab0457688f950ea18cc4a04147c11 Mon Sep 17 00:00:00 2001
-From: Bruno Oliveira <nicoddemus@gmail.com>
-Date: Thu, 26 Aug 2021 09:26:51 -0300
-Subject: [PATCH] Allow pluggy >=1.0
-
-Now that pluggy 1.0 has been released, we can allow pluggy 1.0 with new pytest versions.
-
-Upstream-Status: Backport [commit: fbba504]
-
-Modify to use toml and not tomli. We will create a
-python3-tomli recipe when we do an python3-pytest
-upgrade.
-
-Signed-off-by: Tim Orling <timothy.t.orling@intel.com>
----
- setup.cfg | 36 ++++++++++++++++++------------------
- 1 file changed, 18 insertions(+), 18 deletions(-)
-
-diff --git a/setup.cfg b/setup.cfg
-index f919a9491..a8aeab813 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -32,24 +32,24 @@ project_urls =
- 	Tracker=https://github.com/pytest-dev/pytest/issues
- 
- [options]
--packages = 
--	_pytest
--	_pytest._code
--	_pytest._io
--	_pytest.assertion
--	_pytest.config
--	_pytest.mark
--	pytest
--install_requires = 
--	attrs>=19.2.0
--	iniconfig
--	packaging
--	pluggy>=0.12,<1.0.0a1
--	py>=1.8.2
--	toml
--	atomicwrites>=1.0;sys_platform=="win32"
--	colorama;sys_platform=="win32"
--	importlib-metadata>=0.12;python_version<"3.8"
-+packages =
-+    _pytest
-+    _pytest._code
-+    _pytest._io
-+    _pytest.assertion
-+    _pytest.config
-+    _pytest.mark
-+    pytest
-+install_requires =
-+    attrs>=19.2.0
-+    iniconfig
-+    packaging
-+    pluggy>=0.12,<2.0
-+    py>=1.8.2
-+    toml
-+    atomicwrites>=1.0;sys_platform=="win32"
-+    colorama;sys_platform=="win32"
-+    importlib-metadata>=0.12;python_version<"3.8"
- python_requires = >=3.6
- package_dir = 
- 	=src
diff --git a/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb b/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb
deleted file mode 100644
index 2e90aca..0000000
--- a/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "Simple powerful testing with python"
-HOMEPAGE = "https://pypi.org/project/pytest/"
-DESCRIPTION = "The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b"
-
-SRC_URI += "file://0001-Allow-pluggy-1.0.patch"
-SRC_URI[sha256sum] = "50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b"
-
-DEPENDS = "python3-setuptools-scm-native"
-
-inherit update-alternatives pypi setuptools3
-
-RDEPENDS:${PN}:class-target += " \
-    ${PYTHON_PN}-atomicwrites \
-    ${PYTHON_PN}-attrs \
-    ${PYTHON_PN}-debugger \
-    ${PYTHON_PN}-doctest \
-    ${PYTHON_PN}-importlib-metadata \
-    ${PYTHON_PN}-iniconfig \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-more-itertools \
-    ${PYTHON_PN}-packaging \
-    ${PYTHON_PN}-pathlib2 \
-    ${PYTHON_PN}-pluggy \
-    ${PYTHON_PN}-py \
-    ${PYTHON_PN}-setuptools \
-    ${PYTHON_PN}-six \
-    ${PYTHON_PN}-toml \
-    ${PYTHON_PN}-wcwidth \
-"
-
-ALTERNATIVE:${PN} += "py.test pytest"
-
-NATIVE_LINK_NAME[pytest] = "${bindir}/pytest"
-ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest"
-
-ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test"
-ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-pytest_6.2.5.bb b/poky/meta/recipes-devtools/python/python3-pytest_6.2.5.bb
new file mode 100644
index 0000000..0d8fdf6
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-pytest_6.2.5.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Simple powerful testing with python"
+HOMEPAGE = "https://pypi.org/project/pytest/"
+DESCRIPTION = "The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b"
+
+SRC_URI[sha256sum] = "131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"
+
+DEPENDS = "python3-setuptools-scm-native"
+
+inherit update-alternatives pypi setuptools3
+
+RDEPENDS:${PN}:class-target += " \
+    ${PYTHON_PN}-atomicwrites \
+    ${PYTHON_PN}-attrs \
+    ${PYTHON_PN}-debugger \
+    ${PYTHON_PN}-doctest \
+    ${PYTHON_PN}-importlib-metadata \
+    ${PYTHON_PN}-iniconfig \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-more-itertools \
+    ${PYTHON_PN}-packaging \
+    ${PYTHON_PN}-pathlib2 \
+    ${PYTHON_PN}-pluggy \
+    ${PYTHON_PN}-py \
+    ${PYTHON_PN}-setuptools \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-toml \
+    ${PYTHON_PN}-wcwidth \
+"
+
+ALTERNATIVE:${PN} += "py.test pytest"
+
+NATIVE_LINK_NAME[pytest] = "${bindir}/pytest"
+ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest"
+
+ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test"
+ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-pyyaml_5.4.1.bb b/poky/meta/recipes-devtools/python/python3-pyyaml_5.4.1.bb
deleted file mode 100644
index b11baa6..0000000
--- a/poky/meta/recipes-devtools/python/python3-pyyaml_5.4.1.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Python support for YAML"
-DEPENDS += "libyaml ${PYTHON_PN}-cython-native"
-HOMEPAGE = "https://pyyaml.org/"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=6d8242660a8371add5fe547adf083079"
-
-PYPI_PACKAGE = "PyYAML"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-netclient \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-pyyaml_6.0.bb b/poky/meta/recipes-devtools/python/python3-pyyaml_6.0.bb
new file mode 100644
index 0000000..2df0e64
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-pyyaml_6.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Python support for YAML"
+DEPENDS += "libyaml ${PYTHON_PN}-cython-native"
+HOMEPAGE = "https://pyyaml.org/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6d8242660a8371add5fe547adf083079"
+
+PYPI_PACKAGE = "PyYAML"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-netclient \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-setuptools-scm_6.0.1.bb b/poky/meta/recipes-devtools/python/python3-setuptools-scm_6.0.1.bb
deleted file mode 100644
index afbed17..0000000
--- a/poky/meta/recipes-devtools/python/python3-setuptools-scm_6.0.1.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "the blessed package to manage your versions by scm tags"
-HOMEPAGE = "https://pypi.org/project/setuptools-scm/"
-DESCRIPTION = "setuptools_scm handles managing your Python package versions in SCM metadata instead of declaring them as the version argument or in a SCM managed file."
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
-
-SRC_URI[sha256sum] = "d1925a69cb07e9b29416a275b9fadb009a23c148ace905b2fb220649a6c18e92"
-
-PYPI_PACKAGE = "setuptools_scm"
-inherit pypi setuptools3
-
-UPSTREAM_CHECK_REGEX = "setuptools_scm-(?P<pver>.*)\.tar"
-
-RDEPENDS:${PN} = "\
-    ${PYTHON_PN}-debugger \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-py \
-    ${PYTHON_PN}-setuptools \
-    ${PYTHON_PN}-toml \
-"
-RDEPENDS:${PN}:class-native = "\
-    ${PYTHON_PN}-setuptools-native \
-    ${PYTHON_PN}-toml-native \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-setuptools-scm_6.3.2.bb b/poky/meta/recipes-devtools/python/python3-setuptools-scm_6.3.2.bb
new file mode 100644
index 0000000..bc594d9
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-setuptools-scm_6.3.2.bb
@@ -0,0 +1,26 @@
+SUMMARY = "the blessed package to manage your versions by scm tags"
+HOMEPAGE = "https://pypi.org/project/setuptools-scm/"
+DESCRIPTION = "setuptools_scm handles managing your Python package versions in SCM metadata instead of declaring them as the version argument or in a SCM managed file."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[sha256sum] = "a49aa8081eeb3514eb9728fa5040f2eaa962d6c6f4ec9c32f6c1fba88f88a0f2"
+
+PYPI_PACKAGE = "setuptools_scm"
+inherit pypi setuptools3
+
+UPSTREAM_CHECK_REGEX = "setuptools_scm-(?P<pver>.*)\.tar"
+
+RDEPENDS:${PN} = "\
+    ${PYTHON_PN}-packaging \
+    ${PYTHON_PN}-pyparsing \
+    ${PYTHON_PN}-setuptools \
+    ${PYTHON_PN}-tomli \
+"
+
+RDEPENDS:${PN}:append:class-target = " \
+    ${PYTHON_PN}-debugger \
+    ${PYTHON_PN}-json \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch b/poky/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch
new file mode 100644
index 0000000..565cf8a
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch
@@ -0,0 +1,34 @@
+From 44349672cbff8945693c8d2821c82e9f04bfc8b5 Mon Sep 17 00:00:00 2001
+From: Tim Orling <timothy.t.orling@intel.com>
+Date: Wed, 20 Oct 2021 17:38:10 +0000
+Subject: [PATCH] _distutils/sysconfig: append
+ STAGING_LIBDIR/python-sysconfigdata to sys.path
+
+When python modules set SETUPTOOLS_USE_DISTULS='local', this uses the
+vendored _distutils in setuptools rather than distutils in the Standard
+Library. This is needed so that target configuration can be used with
+python3-setuptools-native.
+
+Based on python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
+from Alex Kanavin <alex.kanavin@gmail.com>
+
+Upstream-Status: Inappropriate [oe-specific]
+
+Signed-off-by: Tim Orling <timothy.t.orling@intel.com>
+---
+ setuptools/_distutils/sysconfig.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/setuptools/_distutils/sysconfig.py b/setuptools/_distutils/sysconfig.py
+index 8832b3e..bbc7c08 100644
+--- a/setuptools/_distutils/sysconfig.py
++++ b/setuptools/_distutils/sysconfig.py
+@@ -461,6 +461,8 @@ def _init_posix():
+         platform=sys.platform,
+         multiarch=getattr(sys.implementation, '_multiarch', ''),
+     ))
++    if 'STAGING_LIBDIR' in os.environ:
++        sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata')
+     try:
+         _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
+     except ImportError:
diff --git a/poky/meta/recipes-devtools/python/python3-setuptools_57.4.0.bb b/poky/meta/recipes-devtools/python/python3-setuptools_57.4.0.bb
deleted file mode 100644
index ae45936..0000000
--- a/poky/meta/recipes-devtools/python/python3-setuptools_57.4.0.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "Download, build, install, upgrade, and uninstall Python packages"
-HOMEPAGE = "https://pypi.org/project/setuptools"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;beginline=1;endline=19;md5=7a7126e068206290f3fe9f8d6c713ea6"
-
-inherit pypi setuptools3
-
-SRC_URI:append:class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
-
-SRC_URI += "file://0001-change-shebang-to-python3.patch"
-
-SRC_URI[sha256sum] = "6bac238ffdf24e8806c61440e755192470352850f3419a52f26ffe0a1a64f465"
-
-DEPENDS += "${PYTHON_PN}"
-
-RDEPENDS:${PN} = "\
-  ${PYTHON_PN}-2to3 \
-  ${PYTHON_PN}-compile \
-  ${PYTHON_PN}-compression \
-  ${PYTHON_PN}-ctypes \
-  ${PYTHON_PN}-distutils \
-  ${PYTHON_PN}-email \
-  ${PYTHON_PN}-html \
-  ${PYTHON_PN}-json \
-  ${PYTHON_PN}-netserver \
-  ${PYTHON_PN}-numbers \
-  ${PYTHON_PN}-pickle \
-  ${PYTHON_PN}-pkg-resources \
-  ${PYTHON_PN}-pkgutil \
-  ${PYTHON_PN}-plistlib \
-  ${PYTHON_PN}-shell \
-  ${PYTHON_PN}-stringold \
-  ${PYTHON_PN}-threading \
-  ${PYTHON_PN}-unittest \
-  ${PYTHON_PN}-xml \
-"
-
-do_install:prepend() {
-    install -d ${D}${PYTHON_SITEPACKAGES_DIR}
-}
-
-BBCLASSEXTEND = "native nativesdk"
-
-# The pkg-resources module can be used by itself, without the package downloader
-# and easy_install. Ship it in a separate package so that it can be used by
-# minimal distributions.
-PACKAGES =+ "${PYTHON_PN}-pkg-resources "
-FILES:${PYTHON_PN}-pkg-resources = "${PYTHON_SITEPACKAGES_DIR}/pkg_resources/*"
-RDEPENDS:${PYTHON_PN}-pkg-resources = "\
-  ${PYTHON_PN}-compression \
-  ${PYTHON_PN}-email \
-  ${PYTHON_PN}-plistlib \
-  ${PYTHON_PN}-pprint \
-"
diff --git a/poky/meta/recipes-devtools/python/python3-setuptools_58.3.0.bb b/poky/meta/recipes-devtools/python/python3-setuptools_58.3.0.bb
new file mode 100644
index 0000000..47107ba
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-setuptools_58.3.0.bb
@@ -0,0 +1,58 @@
+SUMMARY = "Download, build, install, upgrade, and uninstall Python packages"
+HOMEPAGE = "https://pypi.org/project/setuptools"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;beginline=1;endline=19;md5=7a7126e068206290f3fe9f8d6c713ea6"
+
+inherit pypi setuptools3
+
+SRC_URI:append:class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
+
+SRC_URI += "\
+    file://0001-change-shebang-to-python3.patch \
+    file://0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch \
+"
+
+SRC_URI[sha256sum] = "b0c2461641b58fe30e11d4c3dfba316c513bdf9ec85f9fed0c871c678447205e"
+
+DEPENDS += "${PYTHON_PN}"
+
+RDEPENDS:${PN} = "\
+    ${PYTHON_PN}-2to3 \
+    ${PYTHON_PN}-compile \
+    ${PYTHON_PN}-compression \
+    ${PYTHON_PN}-ctypes \
+    ${PYTHON_PN}-distutils \
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-html \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-netserver \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pickle \
+    ${PYTHON_PN}-pkg-resources \
+    ${PYTHON_PN}-pkgutil \
+    ${PYTHON_PN}-plistlib \
+    ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-stringold \
+    ${PYTHON_PN}-threading \
+    ${PYTHON_PN}-unittest \
+    ${PYTHON_PN}-xml \
+"
+
+do_install:prepend() {
+    install -d ${D}${PYTHON_SITEPACKAGES_DIR}
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+# The pkg-resources module can be used by itself, without the package downloader
+# and easy_install. Ship it in a separate package so that it can be used by
+# minimal distributions.
+PACKAGES =+ "${PYTHON_PN}-pkg-resources "
+FILES:${PYTHON_PN}-pkg-resources = "${PYTHON_SITEPACKAGES_DIR}/pkg_resources/*"
+RDEPENDS:${PYTHON_PN}-pkg-resources = "\
+    ${PYTHON_PN}-compression \
+    ${PYTHON_PN}-email \
+    ${PYTHON_PN}-plistlib \
+    ${PYTHON_PN}-pprint \
+"
diff --git a/poky/meta/recipes-devtools/python/python3-smmap_4.0.0.bb b/poky/meta/recipes-devtools/python/python3-smmap_4.0.0.bb
deleted file mode 100644
index 5f0f341..0000000
--- a/poky/meta/recipes-devtools/python/python3-smmap_4.0.0.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit setuptools3
-require python-smmap.inc
-
diff --git a/poky/meta/recipes-devtools/python/python3-smmap_5.0.0.bb b/poky/meta/recipes-devtools/python/python3-smmap_5.0.0.bb
new file mode 100644
index 0000000..ea131ef
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-smmap_5.0.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Python implementation of a sliding window memory map manager"
+DESCRIPTION = "A pure Python implementation of a sliding memory map to \
+help unifying memory mapped access on 32 and 64 bit systems and to help \
+managing resources more efficiently."
+HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "smmap"
+
+SRC_URI[sha256sum] = "c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-codecs \
+                   ${PYTHON_PN}-mmap \
+"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-tomli_1.2.2.bb b/poky/meta/recipes-devtools/python/python3-tomli_1.2.2.bb
new file mode 100644
index 0000000..39030ed
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-tomli_1.2.2.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A lil' TOML parser"
+DESCRIPTION = "Tomli is a Python library for parsing TOML. Tomli is fully \
+compatible with TOML v1.0.0."
+HOMEPAGE = "https://github.com/hukkin/tomli"
+BUGTRACKER = "https://github.com/hukkin/tomli/issues"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "c6ce0015eb38820eaf32b5db832dbc26deb3dd427bd5f6556cf0acac2c214fee"
+
+do_configure:prepend() {
+cat > ${S}/setup.py <<-EOF
+from setuptools import setup
+setup(name="tomli", version="${PV}", packages=["tomli"], package_data={"": ["*"]})
+EOF
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-zipp_3.5.0.bb b/poky/meta/recipes-devtools/python/python3-zipp_3.5.0.bb
deleted file mode 100644
index d6f4676..0000000
--- a/poky/meta/recipes-devtools/python/python3-zipp_3.5.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Backport of pathlib-compatible object wrapper for zip files"
-HOMEPAGE = "https://github.com/jaraco/zipp"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6"
-
-SRC_URI[sha256sum] = "f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4"
-
-DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
-
-inherit pypi setuptools3
-
-DEPENDS += "${PYTHON_PN}-toml-native"
-
-RDEPENDS:${PN} += "${PYTHON_PN}-compression \
-                   ${PYTHON_PN}-math \
-                   ${PYTHON_PN}-more-itertools"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-zipp_3.6.0.bb b/poky/meta/recipes-devtools/python/python3-zipp_3.6.0.bb
new file mode 100644
index 0000000..c98bc7a
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-zipp_3.6.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Backport of pathlib-compatible object wrapper for zip files"
+HOMEPAGE = "https://github.com/jaraco/zipp"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6"
+
+SRC_URI[sha256sum] = "71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+inherit pypi setuptools3
+
+DEPENDS += "${PYTHON_PN}-toml-native"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-compression \
+                   ${PYTHON_PN}-math \
+                   ${PYTHON_PN}-more-itertools"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch b/poky/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
index a94fa0a..46179ba 100644
--- a/poky/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
+++ b/poky/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
@@ -1,4 +1,4 @@
-From 9da913bf5f39c6fe737219af7419170574d6fbfb Mon Sep 17 00:00:00 2001
+From cebb772d718a8f798ed5ae311a6e3e61534bea95 Mon Sep 17 00:00:00 2001
 From: Jeremy Puhlman <jpuhlman@mvista.com>
 Date: Wed, 4 Mar 2020 00:06:42 +0000
 Subject: [PATCH] Don't search system for headers/libraries
@@ -11,10 +11,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/setup.py b/setup.py
-index a0bf9ea..da099bf 100644
+index 95e3e11..32a4d42 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -674,8 +674,8 @@ class PyBuildExt(build_ext):
+@@ -840,8 +840,8 @@ class PyBuildExt(build_ext):
              add_dir_to_list(self.compiler.include_dirs,
                              sysconfig.get_config_var("INCLUDEDIR"))
  
diff --git a/poky/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch b/poky/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
new file mode 100644
index 0000000..d6aa950
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
@@ -0,0 +1,49 @@
+From d8521ee967937184eadc59fff1a30740ad181a98 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Thu, 16 Sep 2021 16:35:37 +0200
+Subject: [PATCH] Lib/pty.py: handle stdin I/O errors same way as master I/O
+ errors
+
+reading stdin can throw the same I/O errors as reading from master fd does,
+e.g. when running under Yocto's test harness:
+======================================================================
+ERROR: test_spawn_doesnt_hang (test.test_pty.PtyTest)
+----------------------------------------------------------------------
+Traceback (most recent call last):
+  File "/usr/lib/python3.10/test/test_pty.py", line 316, in test_spawn_doesnt_hang
+    pty.spawn([sys.executable, '-c', 'print("hi there")'])
+  File "/usr/lib/python3.10/pty.py", line 181, in spawn
+    _copy(master_fd, master_read, stdin_read)
+  File "/usr/lib/python3.10/pty.py", line 157, in _copy
+    data = stdin_read(STDIN_FILENO)
+  File "/usr/lib/python3.10/pty.py", line 132, in _read
+    return os.read(fd, 1024)
+OSError: [Errno 5] Input/output error
+
+So let's treat both channels the same.
+
+Upstream-Status: Submitted [https://github.com/python/cpython/pull/28388]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ Lib/pty.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/Lib/pty.py b/Lib/pty.py
+index 8d8ce40df5..35439c6b96 100644
+--- a/Lib/pty.py
++++ b/Lib/pty.py
+@@ -154,7 +154,10 @@ def _copy(master_fd, master_read=_read, stdin_read=_read):
+                 os.write(STDOUT_FILENO, data)
+ 
+         if STDIN_FILENO in rfds:
+-            data = stdin_read(STDIN_FILENO)
++            try:
++                data = stdin_read(STDIN_FILENO)
++            except OSError:
++                data = b""
+             if not data:
+                 fds.remove(STDIN_FILENO)
+             else:
+-- 
+2.20.1
+
diff --git a/poky/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch b/poky/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch
deleted file mode 100644
index 1490cdb..0000000
--- a/poky/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From deeedd1b8799294ab276ab7dbbfdb59c1dacc9a2 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 22 Oct 2020 13:10:34 +0200
-Subject: [PATCH] Lib/sysconfig.py: use libdir values from configuration file
-
-This allows correctly substituting them for target installs using
-native python.
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- Lib/sysconfig.py | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
-index bf04ac5..ed0462b 100644
---- a/Lib/sysconfig.py
-+++ b/Lib/sysconfig.py
-@@ -20,10 +20,10 @@ __all__ = [
- 
- _INSTALL_SCHEMES = {
-     'posix_prefix': {
--        'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}',
--        'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}',
--        'purelib': '{base}/lib/python{py_version_short}/site-packages',
--        'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages',
-+        'stdlib': '{LIBDEST}',
-+        'platstdlib': '{LIBDEST}',
-+        'purelib': '{LIBDEST}/site-packages',
-+        'platlib': '{LIBDEST}/site-packages',
-         'include':
-             '{installed_base}/include/python{py_version_short}{abiflags}',
-         'platinclude':
--- 
-2.24.0
-
diff --git a/poky/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch b/poky/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
new file mode 100644
index 0000000..b72c709
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
@@ -0,0 +1,34 @@
+From aceaa16e25a8ab6a00f906c340843999635c8e23 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 10 Sep 2021 12:28:31 +0200
+Subject: [PATCH] Lib/sysconfig.py: use prefix value from build configuration
+ file
+
+This allows correctly substituting them for target installs using
+native python.
+
+Upstream-Status: Inappropriate [oe-core cross builds]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ Lib/sysconfig.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
+index 95b48f6..84f6427 100644
+--- a/Lib/sysconfig.py
++++ b/Lib/sysconfig.py
+@@ -613,6 +613,11 @@ def get_config_vars(*args):
+             _init_non_posix(_CONFIG_VARS)
+         if os.name == 'posix':
+             _init_posix(_CONFIG_VARS)
++        _CONFIG_VARS['installed_base'] = _CONFIG_VARS['prefix']
++        _CONFIG_VARS['base'] = _CONFIG_VARS['prefix']
++        _CONFIG_VARS['installed_platbase'] = _CONFIG_VARS['prefix']
++        _CONFIG_VARS['platbase'] = _CONFIG_VARS['prefix']
++        _CONFIG_VARS['platlibdir'] = _CONFIG_VARS['PLATLIBDIR']
+         # For backward compatibility, see issue19555
+         SO = _CONFIG_VARS.get('EXT_SUFFIX')
+         if SO is not None:
+-- 
+2.20.1
+
diff --git a/poky/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch b/poky/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
index b982691..b323ed4 100644
--- a/poky/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
+++ b/poky/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
@@ -1,4 +1,4 @@
-From e65bfe22c858872b08366aff49119d4145a77f40 Mon Sep 17 00:00:00 2001
+From 3a98c2eab187289dc8c55e36738c2c0f4216d906 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Thu, 31 Jan 2019 16:46:30 +0100
 Subject: [PATCH] distutils/sysconfig: append
@@ -10,28 +10,14 @@
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
 
 ---
- Lib/distutils/sysconfig.py | 2 ++
- Lib/sysconfig.py           | 2 ++
- 2 files changed, 4 insertions(+)
+ Lib/sysconfig.py | 2 ++
+ 1 file changed, 2 insertions(+)
 
-diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
-index b51629e..2df348c 100644
---- a/Lib/distutils/sysconfig.py
-+++ b/Lib/distutils/sysconfig.py
-@@ -438,6 +438,8 @@ def _init_posix():
-         platform=sys.platform,
-         multiarch=getattr(sys.implementation, '_multiarch', ''),
-     ))
-+    if 'STAGING_LIBDIR' in os.environ:
-+        sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata')
-     _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
-     build_time_vars = _temp.build_time_vars
-     global _config_vars
 diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
-index b2d790b..405273c 100644
+index a78c0b1..f5c5efe 100644
 --- a/Lib/sysconfig.py
 +++ b/Lib/sysconfig.py
-@@ -419,6 +419,8 @@ def _init_posix(vars):
+@@ -474,6 +474,8 @@ def _init_posix(vars):
      """Initialize the module as appropriate for POSIX systems."""
      # _sysconfigdata is generated at build time, see _generate_posix_vars()
      name = _get_sysconfigdata_name()
diff --git a/poky/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch b/poky/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
index ea0af02..374433c 100644
--- a/poky/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
+++ b/poky/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
@@ -1,4 +1,4 @@
-From 7019ba184b828ed7253750cf409fc5760ef90a54 Mon Sep 17 00:00:00 2001
+From bad7e6a625436402a01d03021fb9ccd58bc9930f Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Thu, 9 Jan 2020 17:44:05 +0100
 Subject: [PATCH] setup.py: pass missing libraries to Extension for
@@ -50,20 +50,21 @@
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
 ---
  setup.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/setup.py b/setup.py
-index ec3f2a4..b0f1541 100644
+index d92face..f42bcbb 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -1671,7 +1671,7 @@ class PyBuildExt(build_ext):
-                                    libraries=libs,
-                                    include_dirs=["Modules/_multiprocessing"]))
- 
+@@ -1836,7 +1836,7 @@ class PyBuildExt(build_ext):
+             if (sysconfig.get_config_var('HAVE_SEM_OPEN') and not
+                 sysconfig.get_config_var('POSIX_SEMAPHORES_NOT_ENABLED')):
+                 multiprocessing_srcs.append('_multiprocessing/semaphore.c')
 -        self.add(Extension('_multiprocessing', multiprocessing_srcs,
 +        self.add(Extension('_multiprocessing', multiprocessing_srcs, libraries=['pthread'],
                             include_dirs=["Modules/_multiprocessing"]))
  
-     def detect_uuid(self):
+         if (not MS_WINDOWS and
diff --git a/poky/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch b/poky/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
new file mode 100644
index 0000000..2b5a7d3
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
@@ -0,0 +1,30 @@
+From 93346d1a2f5d4f7085391bc7c1230d85ebe00606 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Sun, 12 Sep 2021 21:44:36 +0200
+Subject: [PATCH] sysconfig.py: use platlibdir also for purelib
+
+This is needed in multilib configurations where hardcoding 'lib'
+is not correct.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ Lib/sysconfig.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
+index b70d392..c418acd 100644
+--- a/Lib/sysconfig.py
++++ b/Lib/sysconfig.py
+@@ -27,7 +27,7 @@ _INSTALL_SCHEMES = {
+     'posix_prefix': {
+         'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}',
+         'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}',
+-        'purelib': '{base}/lib/python{py_version_short}/site-packages',
++        'purelib': '{base}/{platlibdir}/python{py_version_short}/site-packages',
+         'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages',
+         'include':
+             '{installed_base}/include/python{py_version_short}{abiflags}',
+-- 
+2.20.1
+
diff --git a/poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch b/poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
index 5a39cf8..cc64e3e 100644
--- a/poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
+++ b/poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
@@ -1,7 +1,7 @@
-From c52fa7948ef109db1132fdc1aee0b68f8d767b4e Mon Sep 17 00:00:00 2001
+From f6411021856bafedd784748ec33494151e783b51 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Tue, 14 May 2013 15:00:26 -0700
-Subject: [PATCH 1/2] python3: Add target and native recipes
+Subject: [PATCH] python3: Add target and native recipes
 
 Upstream-Status: Inappropriate [embedded specific]
 
@@ -17,10 +17,10 @@
  1 file changed, 11 insertions(+), 3 deletions(-)
 
 diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
-index 4774e12..ccf7d58 100644
+index 3414a76..361d3a1 100644
 --- a/Lib/distutils/sysconfig.py
 +++ b/Lib/distutils/sysconfig.py
-@@ -95,7 +95,9 @@ def get_python_inc(plat_specific=0, prefix=None):
+@@ -277,7 +277,9 @@ def get_python_inc(plat_specific=0, prefix=None):
      If 'prefix' is supplied, use it instead of sys.base_prefix or
      sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
      """
@@ -31,7 +31,7 @@
          prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
      if os.name == "posix":
          if python_build:
-@@ -138,7 +140,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+@@ -320,7 +322,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
      If 'prefix' is supplied, use it instead of sys.base_prefix or
      sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
      """
@@ -46,7 +46,7 @@
          if standard_lib:
              prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
          else:
-@@ -152,7 +160,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+@@ -334,7 +342,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
          else:
              # Pure Python
              libdir = "lib"
@@ -56,5 +56,5 @@
          if standard_lib:
              return libpython
 -- 
-2.24.0
+2.20.1
 
diff --git a/poky/meta/recipes-devtools/python/python3/makerace.patch b/poky/meta/recipes-devtools/python/python3/makerace.patch
index 96744cb..b150c1c 100644
--- a/poky/meta/recipes-devtools/python/python3/makerace.patch
+++ b/poky/meta/recipes-devtools/python/python3/makerace.patch
@@ -1,3 +1,8 @@
+From 8b8583fb4f2bb3421e31ef06d17c04deec431c7e Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Tue, 13 Jul 2021 23:19:29 +0100
+Subject: [PATCH] python3: Fix make race
+
 libainstall installs python-config.py but the .pyc cache files are generated
 by the libinstall target. This means some builds may not generate the pyc files
 for python-config.py depending on the order things happen in. This means builds
@@ -8,14 +13,18 @@
 Upstream-Status: Pending
 Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
 
-Index: Python-3.9.6/Makefile.pre.in
-===================================================================
---- Python-3.9.6.orig/Makefile.pre.in
-+++ Python-3.9.6/Makefile.pre.in
-@@ -1486,7 +1486,7 @@ LIBSUBDIRS=	tkinter tkinter/test tkinter
- 		venv venv/scripts venv/scripts/common venv/scripts/posix \
- 		curses pydoc_data \
- 		zoneinfo
+---
+ Makefile.pre.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index 69d47a2..c471b60 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -1528,7 +1528,7 @@ TESTSUBDIRS=	ctypes/test \
+ 		unittest/test unittest/test/testmock
+ 
+ TEST_MODULES=@TEST_MODULES@
 -libinstall:	build_all $(srcdir)/Modules/xxmodule.c
 +libinstall:	build_all $(srcdir)/Modules/xxmodule.c libainstall
  	@for i in $(SCRIPTDIR) $(LIBDEST); \
diff --git a/poky/meta/recipes-devtools/python/python3/python3-manifest.json b/poky/meta/recipes-devtools/python/python3/python3-manifest.json
index d65cf49..2f5dad6 100644
--- a/poky/meta/recipes-devtools/python/python3/python3-manifest.json
+++ b/poky/meta/recipes-devtools/python/python3/python3-manifest.json
@@ -980,7 +980,8 @@
     "pprint": {
         "summary": "Python pretty-print support",
         "rdepends": [
-            "core"
+            "core",
+	    "profile"
         ],
         "files": [
             "${libdir}/python${PYTHON_MAJMIN}/pprint.py"
diff --git a/poky/meta/recipes-devtools/python/python3_3.10.0.bb b/poky/meta/recipes-devtools/python/python3_3.10.0.bb
new file mode 100644
index 0000000..e3300b6
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3_3.10.0.bb
@@ -0,0 +1,400 @@
+SUMMARY = "The Python Programming Language"
+HOMEPAGE = "http://www.python.org"
+DESCRIPTION = "Python is a programming language that lets you work more quickly and integrate your systems more effectively."
+LICENSE = "PSFv2"
+SECTION = "devel/python"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3dd7bed622743ef9b77169b3736f7990"
+
+SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
+           file://run-ptest \
+           file://create_manifest3.py \
+           file://get_module_deps3.py \
+           file://python3-manifest.json \
+           file://check_build_completeness.py \
+           file://reformat_sysconfig.py \
+           file://cgi_py.patch \
+           file://0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch \
+           ${@bb.utils.contains('PACKAGECONFIG', 'tk', '', 'file://avoid_warning_about_tkinter.patch', d)} \
+           file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \
+           file://python-config.patch \
+           file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \
+           file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
+           file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \
+           file://crosspythonpath.patch \
+           file://0001-Use-FLAG_REF-always-for-interned-strings.patch \
+           file://0001-test_locale.py-correct-the-test-output-format.patch \
+           file://0017-setup.py-do-not-report-missing-dependencies-for-disa.patch \
+           file://0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \
+           file://0001-Makefile-do-not-compile-.pyc-in-parallel.patch \
+           file://0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch \
+           file://0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch \
+           file://0001-test_ctypes.test_find-skip-without-tools-sdk.patch \
+           file://makerace.patch \
+           file://0001-sysconfig.py-use-platlibdir-also-for-purelib.patch \
+           file://0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch \
+           "
+
+SRC_URI:append:class-native = " \
+           file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \
+           file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \
+           file://12-distutils-prefix-is-inside-staging-area.patch \
+           file://0001-Don-t-search-system-for-headers-libraries.patch \
+           "
+SRC_URI[sha256sum] = "5a99f8e7a6a11a7b98b4e75e0d1303d3832cada5534068f69c7b6222a7b1b002"
+
+# 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"
+
+# Upstream consider this expected behaviour
+CVE_CHECK_WHITELIST += "CVE-2007-4559"
+# This is not exploitable when glibc has CVE-2016-10739 fixed.
+CVE_CHECK_WHITELIST += "CVE-2019-18348"
+
+# This is windows only issue.
+CVE_CHECK_WHITELIST += "CVE-2020-15523"
+
+PYTHON_MAJMIN = "3.10"
+
+S = "${WORKDIR}/Python-${PV}"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit autotools pkgconfig qemu ptest multilib_header update-alternatives
+
+MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
+
+ALTERNATIVE:${PN}-dev = "python3-config"
+ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config"
+ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}"
+
+
+DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2 autoconf-archive-native"
+DEPENDS:append:class-target = " python3-native"
+DEPENDS:append:class-nativesdk = " python3-native"
+
+# force to use the mutex+cond implementation (https://bugs.python.org/issue41710)
+CFLAGS += "-DHAVE_BROKEN_POSIX_SEMAPHORES"
+
+EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib}"
+EXTRA_OECONF:append:class-native = " --bindir=${bindir}/${PN}"
+
+export CROSSPYTHONPATH="${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
+
+EXTRANATIVEPATH += "python3-native"
+
+# LTO will be enabled via packageconfig depending upong distro features
+LTO:class-target = ""
+
+CACHED_CONFIGUREVARS = " \
+                ac_cv_file__dev_ptmx=yes \
+                ac_cv_file__dev_ptc=no \
+                ac_cv_working_tzset=yes \
+"
+
+# PGO currently causes builds to not be reproducible so disable by default, see YOCTO #13407
+PACKAGECONFIG:class-target ??= "readline gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}"
+PACKAGECONFIG:class-native ??= "readline gdbm"
+PACKAGECONFIG:class-nativesdk ??= "readline gdbm"
+PACKAGECONFIG[readline] = ",,readline"
+# Use profile guided optimisation by running PyBench inside qemu-user
+PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native"
+PACKAGECONFIG[tk] = ",,tk"
+PACKAGECONFIG[gdbm] = ",,gdbm"
+PACKAGECONFIG[lto] = "--with-lto,,"
+
+do_configure:prepend () {
+    mkdir -p ${B}/Modules
+    cat > ${B}/Modules/Setup.local << EOF
+*disabled*
+${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '', '_gdbm _dbm', d)}
+${@bb.utils.contains('PACKAGECONFIG', 'readline', '', 'readline', d)}
+EOF
+}
+
+CPPFLAGS:append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid"
+
+EXTRA_OEMAKE = '\
+  STAGING_LIBDIR=${STAGING_LIBDIR} \
+  STAGING_INCDIR=${STAGING_INCDIR} \
+  LIB=${baselib} \
+'
+
+do_compile:prepend:class-target() {
+       if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
+                qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])}"
+                cat >pgo-wrapper <<EOF
+#!/bin/sh
+cd ${B}
+$qemu_binary "\$@"
+EOF
+                chmod +x pgo-wrapper
+        fi
+}
+
+do_install:prepend() {
+        ${WORKDIR}/check_build_completeness.py ${T}/log.do_compile
+}
+
+do_install:append:class-target() {
+        oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
+}
+
+do_install:append:class-native() {
+        # Make sure we use /usr/bin/env python
+        for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
+                sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
+        done
+        # Add a symlink to the native Python so that scripts can just invoke
+        # "nativepython" and get the right one without needing absolute paths
+        # (these often end up too long for the #! parser in the kernel as the
+        # buffer is 128 bytes long).
+        ln -s python3-native/python3 ${D}${bindir}/nativepython3
+}
+
+do_install:append() {
+        for c in ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
+            python3 ${WORKDIR}/reformat_sysconfig.py $c
+        done
+        rm ${D}${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.cpython*
+
+        mkdir -p ${D}${libdir}/python-sysconfigdata
+        sysconfigfile=`find ${D} -name _sysconfig*.py`
+        cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
+
+        sed -i  \
+                -e "s,^ 'LIBDIR'.*, 'LIBDIR': '${STAGING_LIBDIR}'\,,g" \
+                -e "s,^ 'INCLUDEDIR'.*, 'INCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
+                -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
+                -e "/^ 'INCLDIRSTOMAKE'/{N; s,/usr/include,${STAGING_INCDIR},g}" \
+                -e "/^ 'INCLUDEPY'/s,/usr/include,${STAGING_INCDIR},g" \
+                ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
+
+        # Unfortunately the following pyc files are non-deterministc due to 'frozenset'
+        # being written without strict ordering, even with PYTHONHASHSEED = 0
+        # Upstream is discussing ways to solve the issue properly, until then let's
+        # just not install the problematic files.
+        # More info: http://benno.id.au/blog/2013/01/15/python-determinism
+        rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython*
+        rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.cpython*
+}
+
+do_install:append:class-nativesdk () {
+    # Make sure we use /usr/bin/env python
+    for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do
+         sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
+    done
+    create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
+}
+
+SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
+SSTATE_HASHEQUIV_FILEMAP = " \
+    populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${TMPDIR} \
+    populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${COREBASE} \
+    populate_sysroot:*/lib*/python3*/config-*/Makefile:${TMPDIR} \
+    populate_sysroot:*/lib*/python3*/config-*/Makefile:${COREBASE} \
+    populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${TMPDIR} \
+    populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${COREBASE} \
+    "
+PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
+
+py_package_preprocess () {
+        # Remove references to buildmachine paths in target Makefile and _sysconfigdata
+        sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
+                -e 's|${DEBUG_PREFIX_MAP}||g' \
+                -e 's:${HOSTTOOLS_DIR}/::g' \
+                -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
+                -e 's:${RECIPE_SYSROOT}::g' \
+                -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
+                ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
+                ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
+                ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
+
+        # Reformat _sysconfigdata after modifying it so that it remains
+        # reproducible
+        for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
+            python3 ${WORKDIR}/reformat_sysconfig.py $c
+        done
+
+        # Recompile _sysconfigdata after modifying it
+        cd ${PKGD}
+        sysconfigfile=`find . -name _sysconfigdata_*.py`
+        ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+             -c "from py_compile import compile; compile('$sysconfigfile')"
+        ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+             -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)"
+        ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+             -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)"
+        cd -
+
+        mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
+        
+        #Remove the unneeded copy of target sysconfig data
+        rm -rf ${PKGD}/${libdir}/python-sysconfigdata
+}
+
+# We want bytecode precompiled .py files (.pyc's) by default
+# but the user may set it on their own conf
+INCLUDE_PYCS ?= "1"
+
+python(){
+    import collections, json
+
+    filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json')
+    # This python changes the datastore based on the contents of a file, so mark
+    # that dependency.
+    bb.parse.mark_dependency(d, filename)
+
+    with open(filename) as manifest_file:
+        manifest_str =  manifest_file.read()
+        json_start = manifest_str.find('# EOC') + 6
+        manifest_file.seek(json_start)
+        manifest_str = manifest_file.read()
+        python_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict)
+
+    # First set RPROVIDES for -native case
+    # Hardcoded since it cant be python3-native-foo, should be python3-foo-native
+    pn = 'python3'
+    rprovides = (d.getVar('RPROVIDES') or "").split()
+
+    # ${PN}-misc-native is not in the manifest
+    rprovides.append(pn + '-misc-native')
+
+    for key in python_manifest:
+        pypackage = pn + '-' + key + '-native'
+        if pypackage not in rprovides:
+              rprovides.append(pypackage)
+
+    d.setVar('RPROVIDES:class-native', ' '.join(rprovides))
+
+    # Then work on the target
+    include_pycs = d.getVar('INCLUDE_PYCS')
+
+    packages = d.getVar('PACKAGES').split()
+    pn = d.getVar('PN')
+
+    newpackages=[]
+    for key in python_manifest:
+        pypackage = pn + '-' + key
+
+        if pypackage not in packages:
+            # We need to prepend, otherwise python-misc gets everything
+            # so we use a new variable
+            newpackages.append(pypackage)
+
+        # "Build" python's manifest FILES, RDEPENDS and SUMMARY
+        d.setVar('FILES:' + pypackage, '')
+        for value in python_manifest[key]['files']:
+            d.appendVar('FILES:' + pypackage, ' ' + value)
+
+        # Add cached files
+        if include_pycs == '1':
+            for value in python_manifest[key]['cached']:
+                    d.appendVar('FILES:' + pypackage, ' ' + value)
+
+        for value in python_manifest[key]['rdepends']:
+            # Make it work with or without $PN
+            if '${PN}' in value:
+                value=value.split('-', 1)[1]
+            d.appendVar('RDEPENDS:' + pypackage, ' ' + pn + '-' + value)
+
+        for value in python_manifest[key].get('rrecommends', ()):
+            if '${PN}' in value:
+                value=value.split('-', 1)[1]
+            d.appendVar('RRECOMMENDS:' + pypackage, ' ' + pn + '-' + value)
+
+        d.setVar('SUMMARY:' + pypackage, python_manifest[key]['summary'])
+
+    # Prepending so to avoid python-misc getting everything
+    packages = newpackages + packages
+    d.setVar('PACKAGES', ' '.join(packages))
+    d.setVar('ALLOW_EMPTY:${PN}-modules', '1')
+    d.setVar('ALLOW_EMPTY:${PN}-pkgutil', '1')
+
+    if "pgo" in d.getVar("PACKAGECONFIG").split() and not bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d):
+        bb.fatal("pgo cannot be enabled as there is no qemu-usermode support for this architecture/machine")
+}
+
+# Files needed to create a new manifest
+
+do_create_manifest() {
+    # This task should be run with every new release of Python.
+    # We must ensure that PACKAGECONFIG enables everything when creating
+    # a new manifest, this is to base our new manifest on a complete
+    # native python build, containing all dependencies, otherwise the task
+    # wont be able to find the required files.
+    # e.g. BerkeleyDB is an optional build dependency so it may or may not
+    # be present, we must ensure it is.
+
+    cd ${WORKDIR}
+    # This needs to be executed by python-native and NOT by HOST's python
+    nativepython3 create_manifest3.py ${PYTHON_MAJMIN}
+    cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json
+}
+
+# bitbake python -c create_manifest
+# Make sure we have native python ready when we create a new manifest
+addtask do_create_manifest after do_patch do_prepare_recipe_sysroot
+
+# manual dependency additions
+RRECOMMENDS:${PN}-core:append:class-nativesdk = " nativesdk-python3-modules"
+RRECOMMENDS:${PN}-crypt:append:class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
+RRECOMMENDS:${PN}-crypt:append:class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
+
+# For historical reasons PN is empty and provided by python3-modules
+FILES:${PN} = ""
+RPROVIDES:${PN}-modules = "${PN}"
+
+FILES:${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
+FILES:${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
+
+# provide python-pyvenv from python3-venv
+RPROVIDES:${PN}-venv += "${MLPREFIX}python3-pyvenv"
+
+# package libpython3
+PACKAGES =+ "libpython3 libpython3-staticdev"
+FILES:libpython3 = "${libdir}/libpython*.so.*"
+FILES:libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
+INSANE_SKIP:${PN}-dev += "dev-elf"
+INSANE_SKIP:${PN}-ptest = "dev-deps"
+
+# catch all the rest (unsorted)
+PACKAGES += "${PN}-misc"
+RDEPENDS:${PN}-misc += "\
+  ${PN}-core \
+  ${PN}-email \
+  ${PN}-codecs \
+  ${PN}-pydoc \
+  ${PN}-pickle \
+  ${PN}-audio \
+  ${PN}-numbers \
+"
+RDEPENDS:${PN}-modules:append:class-target = " ${MLPREFIX}python3-misc"
+RDEPENDS:${PN}-modules:append:class-nativesdk = " ${MLPREFIX}python3-misc"
+FILES:${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload"
+
+# catch manpage
+PACKAGES += "${PN}-man"
+FILES:${PN}-man = "${datadir}/man"
+
+# See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395
+RDEPENDS:libpython3:append:libc-glibc = " libgcc"
+RDEPENDS:${PN}-ctypes:append:libc-glibc = " ${MLPREFIX}ldconfig"
+RDEPENDS:${PN}-ptest = "${PN}-modules ${PN}-tests ${PN}-dev unzip bzip2 libgcc tzdata-europe coreutils sed"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-tr-tr.iso-8859-9"
+RDEPENDS:${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${MLPREFIX}tk ${MLPREFIX}tk-lib', '', d)}"
+RDEPENDS:${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter ${MLPREFIX}tcl', '', d)}"
+RDEPENDS:${PN}-dev = ""
+RDEPENDS:${PN}-pydoc += "${PN}-io"
+
+RDEPENDS:${PN}-tests:append:class-target = " ${MLPREFIX}bash"
+RDEPENDS:${PN}-tests:append:class-nativesdk = " ${MLPREFIX}bash"
+
+# Python's tests contain large numbers of files we don't need in the recipe sysroots
+SYSROOT_PREPROCESS_FUNCS += " py3_sysroot_cleanup"
+py3_sysroot_cleanup () {
+	rm -rf ${SYSROOT_DESTDIR}${libdir}/python${PYTHON_MAJMIN}/test
+}
diff --git a/poky/meta/recipes-devtools/python/python3_3.9.6.bb b/poky/meta/recipes-devtools/python/python3_3.9.6.bb
deleted file mode 100644
index 8a638b1..0000000
--- a/poky/meta/recipes-devtools/python/python3_3.9.6.bb
+++ /dev/null
@@ -1,402 +0,0 @@
-SUMMARY = "The Python Programming Language"
-HOMEPAGE = "http://www.python.org"
-DESCRIPTION = "Python is a programming language that lets you work more quickly and integrate your systems more effectively."
-LICENSE = "PSFv2"
-SECTION = "devel/python"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c22d2438294c784731bf9dd224a467b7"
-
-SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
-           file://run-ptest \
-           file://create_manifest3.py \
-           file://get_module_deps3.py \
-           file://python3-manifest.json \
-           file://check_build_completeness.py \
-           file://reformat_sysconfig.py \
-           file://cgi_py.patch \
-           file://0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch \
-           ${@bb.utils.contains('PACKAGECONFIG', 'tk', '', 'file://avoid_warning_about_tkinter.patch', d)} \
-           file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \
-           file://python-config.patch \
-           file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \
-           file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
-           file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \
-           file://crosspythonpath.patch \
-           file://0001-Use-FLAG_REF-always-for-interned-strings.patch \
-           file://0001-test_locale.py-correct-the-test-output-format.patch \
-           file://0017-setup.py-do-not-report-missing-dependencies-for-disa.patch \
-           file://0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \
-           file://0001-Makefile-do-not-compile-.pyc-in-parallel.patch \
-           file://0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch \
-           file://0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch \
-           file://0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch \
-           file://0001-test_ctypes.test_find-skip-without-tools-sdk.patch \
-           file://makerace.patch \
-           "
-
-SRC_URI:append:class-native = " \
-           file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \
-           file://12-distutils-prefix-is-inside-staging-area.patch \
-           file://0001-Don-t-search-system-for-headers-libraries.patch \
-           "
-SRC_URI[sha256sum] = "397920af33efc5b97f2e0b57e91923512ef89fc5b3c1d21dbfc8c4828ce0108a"
-
-# 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"
-
-# Upstream consider this expected behaviour
-CVE_CHECK_WHITELIST += "CVE-2007-4559"
-# This is not exploitable when glibc has CVE-2016-10739 fixed.
-CVE_CHECK_WHITELIST += "CVE-2019-18348"
-
-# This is windows only issue.
-CVE_CHECK_WHITELIST += "CVE-2020-15523"
-
-PYTHON_MAJMIN = "3.9"
-
-S = "${WORKDIR}/Python-${PV}"
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit autotools pkgconfig qemu ptest multilib_header update-alternatives
-
-MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
-
-ALTERNATIVE:${PN}-dev = "python3-config"
-ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config"
-ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}"
-
-
-DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2 autoconf-archive-native"
-DEPENDS:append:class-target = " python3-native"
-DEPENDS:append:class-nativesdk = " python3-native"
-
-# force to use the mutex+cond implementation (https://bugs.python.org/issue41710)
-CFLAGS += "-DHAVE_BROKEN_POSIX_SEMAPHORES"
-
-EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib}"
-EXTRA_OECONF:append:class-native = " --bindir=${bindir}/${PN}"
-
-export CROSSPYTHONPATH="${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
-
-EXTRANATIVEPATH += "python3-native"
-
-# LTO will be enabled via packageconfig depending upong distro features
-LTO:class-target = ""
-
-CACHED_CONFIGUREVARS = " \
-                ac_cv_file__dev_ptmx=yes \
-                ac_cv_file__dev_ptc=no \
-                ac_cv_working_tzset=yes \
-"
-
-def possibly_include_pgo(d):
-    # PGO currently causes builds to not be reproducible, so disable it for
-    # now. See YOCTO #13407
-    if bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d) and d.getVar('BUILD_REPRODUCIBLE_BINARIES') != '1':
-        return 'pgo'
-    
-    return ''
-
-PACKAGECONFIG:class-target ??= "readline ${@possibly_include_pgo(d)} gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}"
-PACKAGECONFIG:class-native ??= "readline gdbm"
-PACKAGECONFIG:class-nativesdk ??= "readline gdbm"
-PACKAGECONFIG[readline] = ",,readline"
-# Use profile guided optimisation by running PyBench inside qemu-user
-PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native"
-PACKAGECONFIG[tk] = ",,tk"
-PACKAGECONFIG[gdbm] = ",,gdbm"
-PACKAGECONFIG[lto] = "--with-lto,,"
-
-do_configure:prepend () {
-    mkdir -p ${B}/Modules
-    cat > ${B}/Modules/Setup.local << EOF
-*disabled*
-${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '', '_gdbm _dbm', d)}
-${@bb.utils.contains('PACKAGECONFIG', 'readline', '', 'readline', d)}
-EOF
-}
-
-CPPFLAGS:append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid"
-
-EXTRA_OEMAKE = '\
-  STAGING_LIBDIR=${STAGING_LIBDIR} \
-  STAGING_INCDIR=${STAGING_INCDIR} \
-  LIB=${baselib} \
-'
-
-do_compile:prepend:class-target() {
-       if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
-                qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])}"
-                cat >pgo-wrapper <<EOF
-#!/bin/sh
-cd ${B}
-$qemu_binary "\$@"
-EOF
-                chmod +x pgo-wrapper
-        fi
-}
-
-do_install:prepend() {
-        ${WORKDIR}/check_build_completeness.py ${T}/log.do_compile
-}
-
-do_install:append:class-target() {
-        oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
-}
-
-do_install:append:class-native() {
-        # Make sure we use /usr/bin/env python
-        for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
-                sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
-        done
-        # Add a symlink to the native Python so that scripts can just invoke
-        # "nativepython" and get the right one without needing absolute paths
-        # (these often end up too long for the #! parser in the kernel as the
-        # buffer is 128 bytes long).
-        ln -s python3-native/python3 ${D}${bindir}/nativepython3
-}
-
-do_install:append() {
-        for c in ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
-            python3 ${WORKDIR}/reformat_sysconfig.py $c
-        done
-        rm ${D}${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.cpython*
-
-        mkdir -p ${D}${libdir}/python-sysconfigdata
-        sysconfigfile=`find ${D} -name _sysconfig*.py`
-        cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
-
-        sed -i  \
-                -e "s,^ 'LIBDIR'.*, 'LIBDIR': '${STAGING_LIBDIR}'\,,g" \
-                -e "s,^ 'INCLUDEDIR'.*, 'INCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
-                -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
-                -e "/^ 'INCLDIRSTOMAKE'/{N; s,/usr/include,${STAGING_INCDIR},g}" \
-                -e "/^ 'INCLUDEPY'/s,/usr/include,${STAGING_INCDIR},g" \
-                ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
-
-        # Unfortunately the following pyc files are non-deterministc due to 'frozenset'
-        # being written without strict ordering, even with PYTHONHASHSEED = 0
-        # Upstream is discussing ways to solve the issue properly, until then let's
-        # just not install the problematic files.
-        # More info: http://benno.id.au/blog/2013/01/15/python-determinism
-        rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython*
-        rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.cpython*
-}
-
-do_install:append:class-nativesdk () {
-    # Make sure we use /usr/bin/env python
-    for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do
-         sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
-    done
-    create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
-}
-
-SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
-SSTATE_HASHEQUIV_FILEMAP = " \
-    populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${TMPDIR} \
-    populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${COREBASE} \
-    populate_sysroot:*/lib*/python3*/config-*/Makefile:${TMPDIR} \
-    populate_sysroot:*/lib*/python3*/config-*/Makefile:${COREBASE} \
-    populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${TMPDIR} \
-    populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${COREBASE} \
-    "
-PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
-
-py_package_preprocess () {
-        # Remove references to buildmachine paths in target Makefile and _sysconfigdata
-        sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
-                -e 's|${DEBUG_PREFIX_MAP}||g' \
-                -e 's:${HOSTTOOLS_DIR}/::g' \
-                -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
-                -e 's:${RECIPE_SYSROOT}::g' \
-                -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
-                ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
-                ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
-                ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
-
-        # Reformat _sysconfigdata after modifying it so that it remains
-        # reproducible
-        for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
-            python3 ${WORKDIR}/reformat_sysconfig.py $c
-        done
-
-        # Recompile _sysconfigdata after modifying it
-        cd ${PKGD}
-        sysconfigfile=`find . -name _sysconfigdata_*.py`
-        ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
-             -c "from py_compile import compile; compile('$sysconfigfile')"
-        ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
-             -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)"
-        ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
-             -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)"
-        cd -
-
-        mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
-        
-        #Remove the unneeded copy of target sysconfig data
-        rm -rf ${PKGD}/${libdir}/python-sysconfigdata
-}
-
-# We want bytecode precompiled .py files (.pyc's) by default
-# but the user may set it on their own conf
-INCLUDE_PYCS ?= "1"
-
-python(){
-    import collections, json
-
-    filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json')
-    # This python changes the datastore based on the contents of a file, so mark
-    # that dependency.
-    bb.parse.mark_dependency(d, filename)
-
-    with open(filename) as manifest_file:
-        manifest_str =  manifest_file.read()
-        json_start = manifest_str.find('# EOC') + 6
-        manifest_file.seek(json_start)
-        manifest_str = manifest_file.read()
-        python_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict)
-
-    # First set RPROVIDES for -native case
-    # Hardcoded since it cant be python3-native-foo, should be python3-foo-native
-    pn = 'python3'
-    rprovides = (d.getVar('RPROVIDES') or "").split()
-
-    # ${PN}-misc-native is not in the manifest
-    rprovides.append(pn + '-misc-native')
-
-    for key in python_manifest:
-        pypackage = pn + '-' + key + '-native'
-        if pypackage not in rprovides:
-              rprovides.append(pypackage)
-
-    d.setVar('RPROVIDES:class-native', ' '.join(rprovides))
-
-    # Then work on the target
-    include_pycs = d.getVar('INCLUDE_PYCS')
-
-    packages = d.getVar('PACKAGES').split()
-    pn = d.getVar('PN')
-
-    newpackages=[]
-    for key in python_manifest:
-        pypackage = pn + '-' + key
-
-        if pypackage not in packages:
-            # We need to prepend, otherwise python-misc gets everything
-            # so we use a new variable
-            newpackages.append(pypackage)
-
-        # "Build" python's manifest FILES, RDEPENDS and SUMMARY
-        d.setVar('FILES:' + pypackage, '')
-        for value in python_manifest[key]['files']:
-            d.appendVar('FILES:' + pypackage, ' ' + value)
-
-        # Add cached files
-        if include_pycs == '1':
-            for value in python_manifest[key]['cached']:
-                    d.appendVar('FILES:' + pypackage, ' ' + value)
-
-        for value in python_manifest[key]['rdepends']:
-            # Make it work with or without $PN
-            if '${PN}' in value:
-                value=value.split('-', 1)[1]
-            d.appendVar('RDEPENDS:' + pypackage, ' ' + pn + '-' + value)
-
-        for value in python_manifest[key].get('rrecommends', ()):
-            if '${PN}' in value:
-                value=value.split('-', 1)[1]
-            d.appendVar('RRECOMMENDS:' + pypackage, ' ' + pn + '-' + value)
-
-        d.setVar('SUMMARY:' + pypackage, python_manifest[key]['summary'])
-
-    # Prepending so to avoid python-misc getting everything
-    packages = newpackages + packages
-    d.setVar('PACKAGES', ' '.join(packages))
-    d.setVar('ALLOW_EMPTY:${PN}-modules', '1')
-    d.setVar('ALLOW_EMPTY:${PN}-pkgutil', '1')
-}
-
-# Files needed to create a new manifest
-
-do_create_manifest() {
-    # This task should be run with every new release of Python.
-    # We must ensure that PACKAGECONFIG enables everything when creating
-    # a new manifest, this is to base our new manifest on a complete
-    # native python build, containing all dependencies, otherwise the task
-    # wont be able to find the required files.
-    # e.g. BerkeleyDB is an optional build dependency so it may or may not
-    # be present, we must ensure it is.
-
-    cd ${WORKDIR}
-    # This needs to be executed by python-native and NOT by HOST's python
-    nativepython3 create_manifest3.py ${PYTHON_MAJMIN}
-    cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json
-}
-
-# bitbake python -c create_manifest
-# Make sure we have native python ready when we create a new manifest
-addtask do_create_manifest after do_patch do_prepare_recipe_sysroot
-
-# manual dependency additions
-RRECOMMENDS:${PN}-core:append:class-nativesdk = " nativesdk-python3-modules"
-RRECOMMENDS:${PN}-crypt:append:class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
-RRECOMMENDS:${PN}-crypt:append:class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
-
-# For historical reasons PN is empty and provided by python3-modules
-FILES:${PN} = ""
-RPROVIDES:${PN}-modules = "${PN}"
-
-FILES:${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
-FILES:${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
-
-# provide python-pyvenv from python3-venv
-RPROVIDES:${PN}-venv += "${MLPREFIX}python3-pyvenv"
-
-# package libpython3
-PACKAGES =+ "libpython3 libpython3-staticdev"
-FILES:libpython3 = "${libdir}/libpython*.so.*"
-FILES:libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
-INSANE_SKIP:${PN}-dev += "dev-elf"
-INSANE_SKIP:${PN}-ptest = "dev-deps"
-
-# catch all the rest (unsorted)
-PACKAGES += "${PN}-misc"
-RDEPENDS:${PN}-misc += "\
-  ${PN}-core \
-  ${PN}-email \
-  ${PN}-codecs \
-  ${PN}-pydoc \
-  ${PN}-pickle \
-  ${PN}-audio \
-  ${PN}-numbers \
-"
-RDEPENDS:${PN}-modules:append:class-target = " ${MLPREFIX}python3-misc"
-RDEPENDS:${PN}-modules:append:class-nativesdk = " ${MLPREFIX}python3-misc"
-FILES:${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload"
-
-# catch manpage
-PACKAGES += "${PN}-man"
-FILES:${PN}-man = "${datadir}/man"
-
-# See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395
-RDEPENDS:libpython3:append:libc-glibc = " libgcc"
-RDEPENDS:${PN}-ctypes:append:libc-glibc = " ${MLPREFIX}ldconfig"
-RDEPENDS:${PN}-ptest = "${PN}-modules ${PN}-tests ${PN}-dev unzip bzip2 libgcc tzdata-europe coreutils sed"
-RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-tr-tr.iso-8859-9"
-RDEPENDS:${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${MLPREFIX}tk ${MLPREFIX}tk-lib', '', d)}"
-RDEPENDS:${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter ${MLPREFIX}tcl', '', d)}"
-RDEPENDS:${PN}-dev = ""
-RDEPENDS:${PN}-pydoc += "${PN}-io"
-
-RDEPENDS:${PN}-tests:append:class-target = " ${MLPREFIX}bash"
-RDEPENDS:${PN}-tests:append:class-nativesdk = " ${MLPREFIX}bash"
-
-# Python's tests contain large numbers of files we don't need in the recipe sysroots
-SYSROOT_PREPROCESS_FUNCS += " py3_sysroot_cleanup"
-py3_sysroot_cleanup () {
-	rm -rf ${SYSROOT_DESTDIR}${libdir}/python${PYTHON_MAJMIN}/test
-}
diff --git a/poky/meta/recipes-devtools/qemu/qemu-native_6.0.0.bb b/poky/meta/recipes-devtools/qemu/qemu-native_6.1.0.bb
similarity index 100%
rename from poky/meta/recipes-devtools/qemu/qemu-native_6.0.0.bb
rename to poky/meta/recipes-devtools/qemu/qemu-native_6.1.0.bb
diff --git a/poky/meta/recipes-devtools/qemu/qemu-system-native_6.0.0.bb b/poky/meta/recipes-devtools/qemu/qemu-system-native_6.0.0.bb
deleted file mode 100644
index f98c0b7..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu-system-native_6.0.0.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-BPN = "qemu"
-
-inherit python3-dir
-
-require qemu-native.inc
-
-# As some of the files installed by qemu-native and qemu-system-native
-# are the same, we depend on qemu-native to get the full installation set
-# and avoid file clashes
-DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native bison-native meson-native ninja-native"
-
-EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}"
-
-PACKAGECONFIG ??= "fdt alsa kvm pie \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \
-"
-
-# Handle distros such as CentOS 5 32-bit that do not have kvm support
-PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
-
-do_install:append() {
-    install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
-
-    # The following is also installed by qemu-native
-    rm -f ${D}${datadir}/qemu/trace-events-all
-    rm -rf ${D}${datadir}/qemu/keymaps
-    rm -rf ${D}${datadir}/icons/
-
-    # Install qmp.py to be used with testimage
-    install -D ${S}/python/qemu/qmp.py ${D}${PYTHON_SITEPACKAGES_DIR}/qmp.py
-}
diff --git a/poky/meta/recipes-devtools/qemu/qemu-system-native_6.1.0.bb b/poky/meta/recipes-devtools/qemu/qemu-system-native_6.1.0.bb
new file mode 100644
index 0000000..b544ab4
--- /dev/null
+++ b/poky/meta/recipes-devtools/qemu/qemu-system-native_6.1.0.bb
@@ -0,0 +1,32 @@
+BPN = "qemu"
+
+inherit python3-dir
+
+require qemu-native.inc
+
+# As some of the files installed by qemu-native and qemu-system-native
+# are the same, we depend on qemu-native to get the full installation set
+# and avoid file clashes
+DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native bison-native meson-native ninja-native"
+
+EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}"
+
+PACKAGECONFIG ??= "fdt alsa kvm pie \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \
+"
+
+# Handle distros such as CentOS 5 32-bit that do not have kvm support
+PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
+
+do_install:append() {
+    install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
+
+    # The following is also installed by qemu-native
+    rm -f ${D}${datadir}/qemu/trace-events-all
+    rm -rf ${D}${datadir}/qemu/keymaps
+    rm -rf ${D}${datadir}/icons/
+    rm -rf ${D}${includedir}/qemu-plugin.h
+
+    # Install qmp.py to be used with testimage
+    install -D ${S}/python/qemu/qmp/__init__.py ${D}${libdir}/qemu-python/qmp.py
+}
diff --git a/poky/meta/recipes-devtools/qemu/qemu.inc b/poky/meta/recipes-devtools/qemu/qemu.inc
index 76e8da1..33052a9 100644
--- a/poky/meta/recipes-devtools/qemu/qemu.inc
+++ b/poky/meta/recipes-devtools/qemu/qemu.inc
@@ -9,7 +9,7 @@
 RDEPENDS:${PN}-ptest = "bash"
 
 require qemu-targets.inc
-inherit pkgconfig ptest
+inherit pkgconfig ptest python3-dir
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
                     file://COPYING.LIB;endline=24;md5=8c5efda6cf1e1b03dcfd0e6c0d271c7f"
@@ -19,31 +19,17 @@
            file://run-ptest \
            file://0001-qemu-Add-missing-wacom-HID-descriptor.patch \
            file://0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch \
-           file://0004-qemu-disable-Valgrind.patch \
            file://0006-chardev-connect-socket-to-a-spawned-command.patch \
            file://0007-apic-fixup-fallthrough-to-PIC.patch \
            file://0010-configure-Add-pkg-config-handling-for-libgcrypt.patch \
-           file://0001-Add-enable-disable-udev.patch \
            file://0001-qemu-Do-not-include-file-if-not-exists.patch \
            file://mmap2.patch \
            file://determinism.patch \
            file://0001-tests-meson.build-use-relative-path-to-refer-to-file.patch \
-           file://0001-configure-fix-detection-of-gdbus-codegen.patch \
-           file://0001-vhost-user-gpu-fix-memory-disclosure-in-virgl_cmd_ge.patch \
-           file://0002-vhost-user-gpu-fix-resource-leak-in-vg_resource_crea.patch \
-           file://0003-vhost-user-gpu-fix-memory-leak-in-vg_resource_attach.patch \
-           file://0004-vhost-user-gpu-fix-memory-leak-while-calling-vg_reso.patch \
-           file://0005-vhost-user-gpu-fix-memory-leak-in-virgl_cmd_resource.patch \
-           file://0006-vhost-user-gpu-fix-memory-leak-in-virgl_resource_att.patch \
-           file://0007-vhost-user-gpu-fix-OOB-write-in-virgl_cmd_get_capset.patch \
-           file://0001-linux-user-Tag-vsx-with-ieee128-fpbits.patch \
-           file://CVE-2021-3527-1.patch \
-           file://CVE-2021-3527-2.patch \
-           file://CVE-2021-3682.patch \
            "
 UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
 
-SRC_URI[sha256sum] = "87bc1a471ca24b97e7005711066007d443423d19aacda3d442558ae032fa30b9"
+SRC_URI[sha256sum] = "eebc089db3414bbeedf1e464beda0a7515aad30f73261abc246c9b27503a3c96"
 
 SRC_URI:append:class-target = " file://cross.patch"
 SRC_URI:append:class-nativesdk = " file://cross.patch"
@@ -80,6 +66,9 @@
 
 	# Strip the paths from the QEMU variable, we can use PATH
 	sed -i -e "s#^QEMU=.*/qemu-#QEMU=qemu-#g" ${D}${PTEST_PATH}/tests/tcg/*.mak
+
+        # Strip compiler flags as they break reproducibility
+        sed -i -e "s,CROSS_CC_GUEST=.*,CROSS_CC_GUEST=," ${D}${PTEST_PATH}/tests/tcg/*.mak
 }
 
 # QEMU_TARGETS is overridable variable
@@ -122,7 +111,11 @@
 }
 
 do_configure() {
-    ${S}/configure ${EXTRA_OECONF}
+	# This is taken from meson.bbclass to avoid errors when updating to a
+	# new version of meson.
+	rmdir ${STAGING_LIBDIR_NATIVE}/${PYTHON_DIR}/site-packages/*.egg-info 2>/dev/null || :
+
+	${S}/configure ${EXTRA_OECONF}
 }
 do_configure[cleandirs] += "${B}"
 
@@ -203,6 +196,9 @@
 PACKAGECONFIG[ust] = "--enable-trace-backend=ust,--enable-trace-backend=nop,lttng-ust,"
 PACKAGECONFIG[pie] = "--enable-pie,--disable-pie,,"
 PACKAGECONFIG[seccomp] = "--enable-seccomp,--disable-seccomp,libseccomp"
+# libnfs is currently provided by meta-kodi
+PACKAGECONFIG[libnfs] = "--enable-libnfs,--disable-libnfs,libnfs"
+PACKAGECONFIG[pmem] = "--enable-libpmem,--disable-libpmem,pmdk"
 
 INSANE_SKIP:${PN} = "arch"
 
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch
deleted file mode 100644
index 4b37967..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From b921e5204030845dc7c9d16d5f66d965e8d05367 Mon Sep 17 00:00:00 2001
-From: Jeremy Puhlman <jpuhlman@mvista.com>
-Date: Thu, 19 Mar 2020 11:54:26 -0700
-Subject: [PATCH] Add enable/disable libudev
-
-Upstream-Status: Pending
-Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
-
-[update patch context]
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- configure | 4 ++++
- 1 file changed, 4 insertions(+)
-
-Index: qemu-6.0.0/configure
-===================================================================
---- qemu-6.0.0.orig/configure
-+++ qemu-6.0.0/configure
-@@ -1565,6 +1565,10 @@ for opt do
-   ;;
-   --disable-gio) gio=no
-   ;;
-+  --enable-libudev) libudev="yes"
-+  ;;
-+  --disable-libudev) libudev="no"
-+  ;;
-   *)
-       echo "ERROR: unknown option $opt"
-       echo "Try '$0 --help' for more information"
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-configure-fix-detection-of-gdbus-codegen.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-configure-fix-detection-of-gdbus-codegen.patch
deleted file mode 100644
index 8bffc31..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0001-configure-fix-detection-of-gdbus-codegen.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 464cfc64201b21386030b8f353fe9724a3413a85 Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini@redhat.com>
-Date: Wed, 5 May 2021 10:15:34 -0400
-Subject: [PATCH] configure: fix detection of gdbus-codegen
-
-"pkg-config --variable=gdbus_codegen gio-2.0" returns "gdbus-codegen",
-and it does not pass test -x (which does not walk the path).
-
-Meson 0.58.0 notices that something is iffy, as the dbus_vmstate1
-assignment in tests/qtest/meson.build uses an empty string as the
-command, and fails very eloquently:
-
-../tests/qtest/meson.build:92:2: ERROR: No program name specified.
-
-Use the "has" function instead of test -x, and fix the generation
-of config-host.mak since meson.build expects that GDBUS_CODEGEN
-is absent, rather than empty, if the tool is unavailable.
-
-Reported-by: Sebastian Mitterle <smitterl@redhat.com>
-Fixes: #178
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Upstream-Status: Backport [https://git.qemu.org/?p=qemu.git;a=commitdiff;h=5ecfb76ccc056eb6127e44268e475827ae73b9e0]
-(not in 6.0.0, should be kept when upgrading)
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- configure | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-Index: qemu-6.0.0/configure
-===================================================================
---- qemu-6.0.0.orig/configure
-+++ qemu-6.0.0/configure
-@@ -3366,7 +3366,7 @@ if ! test "$gio" = "no"; then
-         gio_cflags=$($pkg_config --cflags gio-2.0)
-         gio_libs=$($pkg_config --libs gio-2.0)
-         gdbus_codegen=$($pkg_config --variable=gdbus_codegen gio-2.0)
--        if [ ! -x "$gdbus_codegen" ]; then
-+        if ! has "$gdbus_codegen"; then
-             gdbus_codegen=
-         fi
-         # Check that the libraries actually work -- Ubuntu 18.04 ships
-@@ -5704,6 +5704,8 @@ if test "$gio" = "yes" ; then
-     echo "CONFIG_GIO=y" >> $config_host_mak
-     echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak
-     echo "GIO_LIBS=$gio_libs" >> $config_host_mak
-+fi
-+if test "$gdbus_codegen" != "" ; then
-     echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak
- fi
- echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-linux-user-Tag-vsx-with-ieee128-fpbits.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-linux-user-Tag-vsx-with-ieee128-fpbits.patch
deleted file mode 100644
index 11b6e3c..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0001-linux-user-Tag-vsx-with-ieee128-fpbits.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From c5844a4cdee37268c9b65a65e6968ee129bb742d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 14 Jun 2021 10:27:17 -0700
-Subject: [PATCH] linux-user: Tag vsx with ieee128 fpbits
-
-In OE we need this for ppc64le usermode to work since we generate 128bit
-long doubles and glibc 2.34 is now checking for this in hwcaps at
-runtime and failing to run the binary if machine does not support 128bit
-IEEE fp
-
-Fixes
-Fatal glibc error: CPU lacks float128 support (POWER 9 or later required)
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- linux-user/elfload.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/linux-user/elfload.c b/linux-user/elfload.c
-index 17ab06f612..e7dd18fd40 100644
---- a/linux-user/elfload.c
-+++ b/linux-user/elfload.c
-@@ -830,7 +830,7 @@ static uint32_t get_elf_hwcap2(void)
-                   PPC2_ISA207S), QEMU_PPC_FEATURE2_ARCH_2_07 |
-                   QEMU_PPC_FEATURE2_VEC_CRYPTO);
-     GET_FEATURE2(PPC2_ISA300, QEMU_PPC_FEATURE2_ARCH_3_00 |
--                 QEMU_PPC_FEATURE2_DARN);
-+                 QEMU_PPC_FEATURE2_DARN | QEMU_PPC_FEATURE2_HAS_IEEE128);
- 
- #undef GET_FEATURE
- #undef GET_FEATURE2
--- 
-2.32.0
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-vhost-user-gpu-fix-memory-disclosure-in-virgl_cmd_ge.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-vhost-user-gpu-fix-memory-disclosure-in-virgl_cmd_ge.patch
deleted file mode 100644
index 981c237..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0001-vhost-user-gpu-fix-memory-disclosure-in-virgl_cmd_ge.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-CVE: CVE-2021-3545
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From 121841b25d72d13f8cad554363138c360f1250ea Mon Sep 17 00:00:00 2001
-From: Li Qiang <liq3ea@163.com>
-Date: Sat, 15 May 2021 20:03:56 -0700
-Subject: [PATCH 1/7] vhost-user-gpu: fix memory disclosure in
- virgl_cmd_get_capset_info (CVE-2021-3545)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Otherwise some of the 'resp' will be leaked to guest.
-
-Fixes: CVE-2021-3545
-Reported-by: Li Qiang <liq3ea@163.com>
-virtio-gpu fix: 42a8dadc74 ("virtio-gpu: fix information leak
-in getting capset info dispatch")
-
-Signed-off-by: Li Qiang <liq3ea@163.com>
-Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-Message-Id: <20210516030403.107723-2-liq3ea@163.com>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
----
- contrib/vhost-user-gpu/virgl.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/contrib/vhost-user-gpu/virgl.c b/contrib/vhost-user-gpu/virgl.c
-index 9e6660c7ab..6a332d601f 100644
---- a/contrib/vhost-user-gpu/virgl.c
-+++ b/contrib/vhost-user-gpu/virgl.c
-@@ -128,6 +128,7 @@ virgl_cmd_get_capset_info(VuGpu *g,
- 
-     VUGPU_FILL_CMD(info);
- 
-+    memset(&resp, 0, sizeof(resp));
-     if (info.capset_index == 0) {
-         resp.capset_id = VIRTIO_GPU_CAPSET_VIRGL;
-         virgl_renderer_get_cap_set(resp.capset_id,
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0002-vhost-user-gpu-fix-resource-leak-in-vg_resource_crea.patch b/poky/meta/recipes-devtools/qemu/qemu/0002-vhost-user-gpu-fix-resource-leak-in-vg_resource_crea.patch
deleted file mode 100644
index a9aee47..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0002-vhost-user-gpu-fix-resource-leak-in-vg_resource_crea.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-CVE: CVE-2021-3544
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From 86dd8fac2acc366930a5dc08d3fb1b1e816f4e1e Mon Sep 17 00:00:00 2001
-From: Li Qiang <liq3ea@163.com>
-Date: Sat, 15 May 2021 20:03:57 -0700
-Subject: [PATCH 2/7] vhost-user-gpu: fix resource leak in
- 'vg_resource_create_2d' (CVE-2021-3544)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Call 'vugbm_buffer_destroy' in error path to avoid resource leak.
-
-Fixes: CVE-2021-3544
-Reported-by: Li Qiang <liq3ea@163.com>
-Reviewed-by: Prasad J Pandit <pjp@fedoraproject.org>
-Signed-off-by: Li Qiang <liq3ea@163.com>
-Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-Message-Id: <20210516030403.107723-3-liq3ea@163.com>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
----
- contrib/vhost-user-gpu/vhost-user-gpu.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/contrib/vhost-user-gpu/vhost-user-gpu.c b/contrib/vhost-user-gpu/vhost-user-gpu.c
-index f73f292c9f..b5e153d0d6 100644
---- a/contrib/vhost-user-gpu/vhost-user-gpu.c
-+++ b/contrib/vhost-user-gpu/vhost-user-gpu.c
-@@ -349,6 +349,7 @@ vg_resource_create_2d(VuGpu *g,
-         g_critical("%s: resource creation failed %d %d %d",
-                    __func__, c2d.resource_id, c2d.width, c2d.height);
-         g_free(res);
-+        vugbm_buffer_destroy(&res->buffer);
-         cmd->error = VIRTIO_GPU_RESP_ERR_OUT_OF_MEMORY;
-         return;
-     }
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0003-vhost-user-gpu-fix-memory-leak-in-vg_resource_attach.patch b/poky/meta/recipes-devtools/qemu/qemu/0003-vhost-user-gpu-fix-memory-leak-in-vg_resource_attach.patch
deleted file mode 100644
index 1718486..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0003-vhost-user-gpu-fix-memory-leak-in-vg_resource_attach.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-CVE: CVE-2021-3544
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From b9f79858a614d95f5de875d0ca31096eaab72c3b Mon Sep 17 00:00:00 2001
-From: Li Qiang <liq3ea@163.com>
-Date: Sat, 15 May 2021 20:03:58 -0700
-Subject: [PATCH 3/7] vhost-user-gpu: fix memory leak in
- vg_resource_attach_backing (CVE-2021-3544)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Check whether the 'res' has already been attach_backing to avoid
-memory leak.
-
-Fixes: CVE-2021-3544
-Reported-by: Li Qiang <liq3ea@163.com>
-virtio-gpu fix: 204f01b309 ("virtio-gpu: fix memory leak
-in resource attach backing")
-
-Signed-off-by: Li Qiang <liq3ea@163.com>
-Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-Message-Id: <20210516030403.107723-4-liq3ea@163.com>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
----
- contrib/vhost-user-gpu/vhost-user-gpu.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/contrib/vhost-user-gpu/vhost-user-gpu.c b/contrib/vhost-user-gpu/vhost-user-gpu.c
-index b5e153d0d6..0437e52b64 100644
---- a/contrib/vhost-user-gpu/vhost-user-gpu.c
-+++ b/contrib/vhost-user-gpu/vhost-user-gpu.c
-@@ -489,6 +489,11 @@ vg_resource_attach_backing(VuGpu *g,
-         return;
-     }
- 
-+    if (res->iov) {
-+        cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
-+        return;
-+    }
-+
-     ret = vg_create_mapping_iov(g, &ab, cmd, &res->iov);
-     if (ret != 0) {
-         cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch b/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch
deleted file mode 100644
index 330bcae..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 4127296bb1046cdf73994ba69dc913d8c02fd74f Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Tue, 20 Oct 2015 22:19:08 +0100
-Subject: [PATCH] qemu: disable Valgrind
-
-There isn't an option to enable or disable valgrind support, so disable it to avoid non-deterministic builds.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
----
- configure | 9 ---------
- 1 file changed, 9 deletions(-)
-
-Index: qemu-6.0.0/configure
-===================================================================
---- qemu-6.0.0.orig/configure
-+++ qemu-6.0.0/configure
-@@ -4648,15 +4648,6 @@ fi
- # check if we have valgrind/valgrind.h
- 
- valgrind_h=no
--cat > $TMPC << EOF
--#include <valgrind/valgrind.h>
--int main(void) {
--  return 0;
--}
--EOF
--if compile_prog "" "" ; then
--    valgrind_h=yes
--fi
- 
- ########################################
- # check if environ is declared
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0004-vhost-user-gpu-fix-memory-leak-while-calling-vg_reso.patch b/poky/meta/recipes-devtools/qemu/qemu/0004-vhost-user-gpu-fix-memory-leak-while-calling-vg_reso.patch
deleted file mode 100644
index 9fc2faf..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0004-vhost-user-gpu-fix-memory-leak-while-calling-vg_reso.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-CVE: CVE-2021-3544
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From b7afebcf9e6ecf3cf9b5a9b9b731ed04bca6aa3e Mon Sep 17 00:00:00 2001
-From: Li Qiang <liq3ea@163.com>
-Date: Sat, 15 May 2021 20:03:59 -0700
-Subject: [PATCH 4/7] vhost-user-gpu: fix memory leak while calling
- 'vg_resource_unref' (CVE-2021-3544)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-If the guest trigger following sequences, the attach_backing will be leaked:
-
-	vg_resource_create_2d
-	vg_resource_attach_backing
-	vg_resource_unref
-
-This patch fix this by freeing 'res->iov' in vg_resource_destroy.
-
-Fixes: CVE-2021-3544
-Reported-by: Li Qiang <liq3ea@163.com>
-virtio-gpu fix: 5e8e3c4c75 ("virtio-gpu: fix resource leak
-in virgl_cmd_resource_unref")
-
-Reviewed-by: Prasad J Pandit <pjp@fedoraproject.org>
-Signed-off-by: Li Qiang <liq3ea@163.com>
-Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-Message-Id: <20210516030403.107723-5-liq3ea@163.com>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
----
- contrib/vhost-user-gpu/vhost-user-gpu.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/contrib/vhost-user-gpu/vhost-user-gpu.c b/contrib/vhost-user-gpu/vhost-user-gpu.c
-index 0437e52b64..770dfad529 100644
---- a/contrib/vhost-user-gpu/vhost-user-gpu.c
-+++ b/contrib/vhost-user-gpu/vhost-user-gpu.c
-@@ -400,6 +400,7 @@ vg_resource_destroy(VuGpu *g,
-     }
- 
-     vugbm_buffer_destroy(&res->buffer);
-+    g_free(res->iov);
-     pixman_image_unref(res->image);
-     QTAILQ_REMOVE(&g->reslist, res, next);
-     g_free(res);
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0005-vhost-user-gpu-fix-memory-leak-in-virgl_cmd_resource.patch b/poky/meta/recipes-devtools/qemu/qemu/0005-vhost-user-gpu-fix-memory-leak-in-virgl_cmd_resource.patch
deleted file mode 100644
index e70f3c0..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0005-vhost-user-gpu-fix-memory-leak-in-virgl_cmd_resource.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-CVE: CVE-2021-3544
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From f6091d86ba9ea05f4e111b9b42ee0005c37a6779 Mon Sep 17 00:00:00 2001
-From: Li Qiang <liq3ea@163.com>
-Date: Sat, 15 May 2021 20:04:00 -0700
-Subject: [PATCH 5/7] vhost-user-gpu: fix memory leak in
- 'virgl_cmd_resource_unref' (CVE-2021-3544)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The 'res->iov' will be leaked if the guest trigger following sequences:
-
-	virgl_cmd_create_resource_2d
-	virgl_resource_attach_backing
-	virgl_cmd_resource_unref
-
-This patch fixes this.
-
-Fixes: CVE-2021-3544
-Reported-by: Li Qiang <liq3ea@163.com>
-virtio-gpu fix: 5e8e3c4c75 ("virtio-gpu: fix resource leak
-in virgl_cmd_resource_unref"
-
-Signed-off-by: Li Qiang <liq3ea@163.com>
-Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-Message-Id: <20210516030403.107723-6-liq3ea@163.com>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
----
- contrib/vhost-user-gpu/virgl.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/contrib/vhost-user-gpu/virgl.c b/contrib/vhost-user-gpu/virgl.c
-index 6a332d601f..c669d73a1d 100644
---- a/contrib/vhost-user-gpu/virgl.c
-+++ b/contrib/vhost-user-gpu/virgl.c
-@@ -108,9 +108,16 @@ virgl_cmd_resource_unref(VuGpu *g,
-                          struct virtio_gpu_ctrl_command *cmd)
- {
-     struct virtio_gpu_resource_unref unref;
-+    struct iovec *res_iovs = NULL;
-+    int num_iovs = 0;
- 
-     VUGPU_FILL_CMD(unref);
- 
-+    virgl_renderer_resource_detach_iov(unref.resource_id,
-+                                       &res_iovs,
-+                                       &num_iovs);
-+    g_free(res_iovs);
-+
-     virgl_renderer_resource_unref(unref.resource_id);
- }
- 
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0006-vhost-user-gpu-fix-memory-leak-in-virgl_resource_att.patch b/poky/meta/recipes-devtools/qemu/qemu/0006-vhost-user-gpu-fix-memory-leak-in-virgl_resource_att.patch
deleted file mode 100644
index 5efb87c..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0006-vhost-user-gpu-fix-memory-leak-in-virgl_resource_att.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-CVE: CVE-2021-3544
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From 63736af5a6571d9def93769431e0d7e38c6677bf Mon Sep 17 00:00:00 2001
-From: Li Qiang <liq3ea@163.com>
-Date: Sat, 15 May 2021 20:04:01 -0700
-Subject: [PATCH 6/7] vhost-user-gpu: fix memory leak in
- 'virgl_resource_attach_backing' (CVE-2021-3544)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-If 'virgl_renderer_resource_attach_iov' failed, the 'res_iovs' will
-be leaked.
-
-Fixes: CVE-2021-3544
-Reported-by: Li Qiang <liq3ea@163.com>
-virtio-gpu fix: 33243031da ("virtio-gpu-3d: fix memory leak
-in resource attach backing")
-
-Signed-off-by: Li Qiang <liq3ea@163.com>
-Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-Message-Id: <20210516030403.107723-7-liq3ea@163.com>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
----
- contrib/vhost-user-gpu/virgl.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/contrib/vhost-user-gpu/virgl.c b/contrib/vhost-user-gpu/virgl.c
-index c669d73a1d..a16a311d80 100644
---- a/contrib/vhost-user-gpu/virgl.c
-+++ b/contrib/vhost-user-gpu/virgl.c
-@@ -287,8 +287,11 @@ virgl_resource_attach_backing(VuGpu *g,
-         return;
-     }
- 
--    virgl_renderer_resource_attach_iov(att_rb.resource_id,
-+    ret = virgl_renderer_resource_attach_iov(att_rb.resource_id,
-                                        res_iovs, att_rb.nr_entries);
-+    if (ret != 0) {
-+        g_free(res_iovs);
-+    }
- }
- 
- static void
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0007-vhost-user-gpu-fix-OOB-write-in-virgl_cmd_get_capset.patch b/poky/meta/recipes-devtools/qemu/qemu/0007-vhost-user-gpu-fix-OOB-write-in-virgl_cmd_get_capset.patch
deleted file mode 100644
index 33e6a66..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/0007-vhost-user-gpu-fix-OOB-write-in-virgl_cmd_get_capset.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-CVE: CVE-2021-3546
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From 9f22893adcb02580aee5968f32baa2cd109b3ec2 Mon Sep 17 00:00:00 2001
-From: Li Qiang <liq3ea@163.com>
-Date: Sat, 15 May 2021 20:04:02 -0700
-Subject: [PATCH 7/7] vhost-user-gpu: fix OOB write in 'virgl_cmd_get_capset'
- (CVE-2021-3546)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-If 'virgl_cmd_get_capset' set 'max_size' to 0,
-the 'virgl_renderer_fill_caps' will write the data after the 'resp'.
-This patch avoid this by checking the returned 'max_size'.
-
-virtio-gpu fix: abd7f08b23 ("display: virtio-gpu-3d: check
-virgl capabilities max_size")
-
-Fixes: CVE-2021-3546
-Reported-by: Li Qiang <liq3ea@163.com>
-Reviewed-by: Prasad J Pandit <pjp@fedoraproject.org>
-Signed-off-by: Li Qiang <liq3ea@163.com>
-Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-Message-Id: <20210516030403.107723-8-liq3ea@163.com>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
----
- contrib/vhost-user-gpu/virgl.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/contrib/vhost-user-gpu/virgl.c b/contrib/vhost-user-gpu/virgl.c
-index a16a311d80..7172104b19 100644
---- a/contrib/vhost-user-gpu/virgl.c
-+++ b/contrib/vhost-user-gpu/virgl.c
-@@ -177,6 +177,10 @@ virgl_cmd_get_capset(VuGpu *g,
- 
-     virgl_renderer_get_cap_set(gc.capset_id, &max_ver,
-                                &max_size);
-+    if (!max_size) {
-+        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER;
-+        return;
-+    }
-     resp = g_malloc0(sizeof(*resp) + max_size);
- 
-     resp->hdr.type = VIRTIO_GPU_RESP_OK_CAPSET;
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch b/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch
index cc6a5fe..4298964 100644
--- a/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch
+++ b/poky/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch
@@ -1,4 +1,4 @@
-From c207607cdf3996ad9783c3bffbcd3d65e74c0158 Mon Sep 17 00:00:00 2001
+From b51e6dd833172954c718bd600d846540eeb07220 Mon Sep 17 00:00:00 2001
 From: He Zhe <zhe.he@windriver.com>
 Date: Wed, 28 Aug 2019 19:56:28 +0800
 Subject: [PATCH] configure: Add pkg-config handling for libgcrypt
@@ -11,74 +11,19 @@
 Signed-off-by: He Zhe <zhe.he@windriver.com>
 
 ---
- configure | 48 ++++++++++++++++++++++++++++++++++++++++--------
- 1 file changed, 40 insertions(+), 8 deletions(-)
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-Index: qemu-6.0.0/configure
-===================================================================
---- qemu-6.0.0.orig/configure
-+++ qemu-6.0.0/configure
-@@ -2847,6 +2847,30 @@ has_libgcrypt() {
-     return 0
- }
- 
-+has_libgcrypt_pkgconfig() {
-+    if ! has $pkg_config ; then
-+        return 1
-+    fi
-+
-+    if ! $pkg_config --list-all | grep libgcrypt > /dev/null 2>&1 ; then
-+        return 1
-+    fi
-+
-+    if test -n "$cross_prefix" ; then
-+        host=$($pkg_config --variable=host libgcrypt)
-+        if test "${host%-gnu}-" != "${cross_prefix%-gnu}" ; then
-+            print_error "host($host) does not match cross_prefix($cross_prefix)"
-+            return 1
-+        fi
-+    fi
-+
-+    if ! $pkg_config --atleast-version=1.5.0 libgcrypt ; then
-+        print_error "libgcrypt version is $($pkg_config --modversion libgcrypt)"
-+        return 1
-+    fi
-+
-+    return 0
-+}
- 
- if test "$nettle" != "no"; then
-     pass="no"
-@@ -2885,7 +2909,14 @@ fi
- 
- if test "$gcrypt" != "no"; then
-     pass="no"
--    if has_libgcrypt; then
-+    if has_libgcrypt_pkgconfig; then
-+        gcrypt_cflags=$($pkg_config --cflags libgcrypt)
-+        if test "$static" = "yes" ; then
-+            gcrypt_libs=$($pkg_config --libs --static libgcrypt)
-+        else
-+            gcrypt_libs=$($pkg_config --libs libgcrypt)
-+        fi
-+    elif has_libgcrypt; then
-         gcrypt_cflags=$(libgcrypt-config --cflags)
-         gcrypt_libs=$(libgcrypt-config --libs)
-         # Debian has removed -lgpg-error from libgcrypt-config
-@@ -2895,12 +2926,12 @@ if test "$gcrypt" != "no"; then
-         then
-             gcrypt_libs="$gcrypt_libs -lgpg-error"
-         fi
-+    fi
- 
--        # Link test to make sure the given libraries work (e.g for static).
--        write_c_skeleton
--        if compile_prog "" "$gcrypt_libs" ; then
-+    # Link test to make sure the given libraries work (e.g for static).
-+    write_c_skeleton
-+    if compile_prog "" "$gcrypt_libs" ; then
-             pass="yes"
--        fi
-     fi
-     if test "$pass" = "yes"; then
-         gcrypt="yes"
+diff --git a/meson.build b/meson.build
+index b3e7ec0e9..4cbe715b7 100644
+--- a/meson.build
++++ b/meson.build
+@@ -874,7 +874,7 @@ endif
+ if not gnutls_crypto.found()
+   if (not get_option('gcrypt').auto() or have_system) and not get_option('nettle').enabled()
+     gcrypt = dependency('libgcrypt', version: '>=1.8',
+-                        method: 'config-tool',
++                        method: 'pkg-config',
+                         required: get_option('gcrypt'),
+                         kwargs: static_kwargs)
+     # Debian has removed -lgpg-error from libgcrypt-config
diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3527-1.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3527-1.patch
deleted file mode 100644
index 77a5385..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3527-1.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 05a40b172e4d691371534828078be47e7fff524c Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Mon, 3 May 2021 15:29:15 +0200
-Subject: [PATCH] usb: limit combined packets to 1 MiB (CVE-2021-3527)
-
-usb-host and usb-redirect try to batch bulk transfers by combining many
-small usb packets into a single, large transfer request, to reduce the
-overhead and improve performance.
-
-This patch adds a size limit of 1 MiB for those combined packets to
-restrict the host resources the guest can bind that way.
-
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-Message-Id: <20210503132915.2335822-6-kraxel@redhat.com>
-
-Upstream-Status: Backport
-https://gitlab.com/qemu-project/qemu/-/commit/05a40b172e4d691371534828078be47e7fff524c
-CVE: CVE-2021-3527
-Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
-
----
- hw/usb/combined-packet.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/hw/usb/combined-packet.c b/hw/usb/combined-packet.c
-index 5d57e883dc..e56802f89a 100644
---- a/hw/usb/combined-packet.c
-+++ b/hw/usb/combined-packet.c
-@@ -171,7 +171,9 @@ void usb_ep_combine_input_packets(USBEndpoint *ep)
-         if ((p->iov.size % ep->max_packet_size) != 0 || !p->short_not_ok ||
-                 next == NULL ||
-                 /* Work around for Linux usbfs bulk splitting + migration */
--                (totalsize == (16 * KiB - 36) && p->int_req)) {
-+                (totalsize == (16 * KiB - 36) && p->int_req) ||
-+                /* Next package may grow combined package over 1MiB */
-+                totalsize > 1 * MiB - ep->max_packet_size) {
-             usb_device_handle_data(ep->dev, first);
-             assert(first->status == USB_RET_ASYNC);
-             if (first->combined) {
--- 
-GitLab
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3527-2.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3527-2.patch
deleted file mode 100644
index 6371ace..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3527-2.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 7ec54f9eb62b5d177e30eb8b1cad795a5f8d8986 Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Mon, 3 May 2021 15:29:12 +0200
-Subject: [PATCH] usb/redir: avoid dynamic stack allocation (CVE-2021-3527)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Use autofree heap allocation instead.
-
-Fixes: 4f4321c11ff ("usb: use iovecs in USBPacket")
-Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
-Message-Id: <20210503132915.2335822-3-kraxel@redhat.com>
-
-Upstream-Status: Backport
-https://gitlab.com/qemu-project/qemu/-/commit/7ec54f9eb62b5d177e30eb8b1cad795a5f8d8986
-CVE: CVE-2021-3527
-Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
-
----
- hw/usb/redirect.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
-index 17f06f3417..6a75b0dc4a 100644
---- a/hw/usb/redirect.c
-+++ b/hw/usb/redirect.c
-@@ -620,7 +620,7 @@ static void usbredir_handle_iso_data(USBRedirDevice *dev, USBPacket *p,
-                 .endpoint = ep,
-                 .length = p->iov.size
-             };
--            uint8_t buf[p->iov.size];
-+            g_autofree uint8_t *buf = g_malloc(p->iov.size);
-             /* No id, we look at the ep when receiving a status back */
-             usb_packet_copy(p, buf, p->iov.size);
-             usbredirparser_send_iso_packet(dev->parser, 0, &iso_packet,
-@@ -818,7 +818,7 @@ static void usbredir_handle_bulk_data(USBRedirDevice *dev, USBPacket *p,
-         usbredirparser_send_bulk_packet(dev->parser, p->id,
-                                         &bulk_packet, NULL, 0);
-     } else {
--        uint8_t buf[size];
-+        g_autofree uint8_t *buf = g_malloc(size);
-         usb_packet_copy(p, buf, size);
-         usbredir_log_data(dev, "bulk data out:", buf, size);
-         usbredirparser_send_bulk_packet(dev->parser, p->id,
-@@ -923,7 +923,7 @@ static void usbredir_handle_interrupt_out_data(USBRedirDevice *dev,
-                                                USBPacket *p, uint8_t ep)
- {
-     struct usb_redir_interrupt_packet_header interrupt_packet;
--    uint8_t buf[p->iov.size];
-+    g_autofree uint8_t *buf = g_malloc(p->iov.size);
- 
-     DPRINTF("interrupt-out ep %02X len %zd id %"PRIu64"\n", ep,
-             p->iov.size, p->id);
--- 
-GitLab
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3682.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3682.patch
deleted file mode 100644
index 50a4923..0000000
--- a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3682.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 5e796671e6b8d5de4b0b423dce1b3eba144a92c9 Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Thu, 22 Jul 2021 09:27:56 +0200
-Subject: [PATCH] usbredir: fix free call
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-data might point into the middle of a larger buffer, there is a separate
-free_on_destroy pointer passed into bufp_alloc() to handle that.  It is
-only used in the normal workflow though, not when dropping packets due
-to the queue being full.  Fix that.
-
-Resolves: https://gitlab.com/qemu-project/qemu/-/issues/491
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-Message-Id: <20210722072756.647673-1-kraxel@redhat.com>
-
-CVE: CVE-2021-3682
-Upstream-Status: Backport [5e796671e6b8d5de4b0b423dce1b3eba144a92c9]
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- hw/usb/redirect.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
-index 4ec9326e05..1ec909a63a 100644
---- a/hw/usb/redirect.c
-+++ b/hw/usb/redirect.c
-@@ -476,7 +476,7 @@ static int bufp_alloc(USBRedirDevice *dev, uint8_t *data, uint16_t len,
-     if (dev->endpoint[EP2I(ep)].bufpq_dropping_packets) {
-         if (dev->endpoint[EP2I(ep)].bufpq_size >
-                 dev->endpoint[EP2I(ep)].bufpq_target_size) {
--            free(data);
-+            free(free_on_destroy);
-             return -1;
-         }
-         dev->endpoint[EP2I(ep)].bufpq_dropping_packets = 0;
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-devtools/qemu/qemu/cross.patch b/poky/meta/recipes-devtools/qemu/qemu/cross.patch
index a0fc39e..bdb77ec 100644
--- a/poky/meta/recipes-devtools/qemu/qemu/cross.patch
+++ b/poky/meta/recipes-devtools/qemu/qemu/cross.patch
@@ -1,30 +1,40 @@
+From f51ece86f84c877f255746cba22a6745f37d2b7f Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Tue, 5 Jan 2021 23:00:14 +0000
+Subject: [PATCH] qemu: Upgrade 5.1.0->5.2.0
+
 We need to be able to trigger configure's cross code but we don't want
 to set cross_prefix as it does other things we don't want. Patch things
 so we can do what we need in the target config case.
 
 Upstream-Status: Inappropriate [may be rewritten in a way upstream may accept?]
 Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+---
+ configure | 4 ----
+ 1 file changed, 4 deletions(-)
 
-
-Index: qemu-6.0.0/configure
-===================================================================
---- qemu-6.0.0.orig/configure
-+++ qemu-6.0.0/configure
-@@ -6371,7 +6371,6 @@ if has $sdl2_config; then
- fi
- echo "strip = [$(meson_quote $strip)]" >> $cross
- echo "windres = [$(meson_quote $windres)]" >> $cross
--if test "$cross_compile" = "yes"; then
+diff --git a/configure b/configure
+index 9a79a004d..563b7827f 100755
+--- a/configure
++++ b/configure
+@@ -5128,7 +5128,6 @@ if test "$skip_meson" = no; then
+   fi
+   echo "strip = [$(meson_quote $strip)]" >> $cross
+   echo "windres = [$(meson_quote $windres)]" >> $cross
+-  if test "$cross_compile" = "yes"; then
      cross_arg="--cross-file config-meson.cross"
      echo "[host_machine]" >> $cross
      if test "$mingw32" = "yes" ; then
-@@ -6403,9 +6402,6 @@ if test "$cross_compile" = "yes"; then
+@@ -5160,9 +5159,6 @@ if test "$skip_meson" = no; then
      else
          echo "endian = 'little'" >> $cross
      fi
--else
+-  else
 -    cross_arg="--native-file config-meson.cross"
--fi
- mv $cross config-meson.cross
+-  fi
+   mv $cross config-meson.cross
  
- rm -rf meson-private meson-info meson-logs
+   rm -rf meson-private meson-info meson-logs
+-- 
+2.17.1
+
diff --git a/poky/meta/recipes-devtools/qemu/qemu_6.0.0.bb b/poky/meta/recipes-devtools/qemu/qemu_6.1.0.bb
similarity index 100%
rename from poky/meta/recipes-devtools/qemu/qemu_6.0.0.bb
rename to poky/meta/recipes-devtools/qemu/qemu_6.1.0.bb
diff --git a/poky/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch b/poky/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch
index d8fcc16..6d236ac 100644
--- a/poky/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch
+++ b/poky/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch
@@ -1,4 +1,4 @@
-From 7b2dd83d8fcd06af8e583b53da79ed0033793d46 Mon Sep 17 00:00:00 2001
+From 8d013fe154a162305f76141151baf767dd04b598 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Mon, 27 Feb 2017 09:43:30 +0200
 Subject: [PATCH] Do not hardcode "lib/rpm" as the installation path for
@@ -14,10 +14,10 @@
  3 files changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index fe35a90fa..b2faec6f3 100644
+index eb7d6941b..10a889b5d 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -966,7 +966,7 @@ else
+@@ -871,7 +871,7 @@ else
      usrprefix=$prefix
  fi
  
@@ -27,10 +27,10 @@
  
  AC_SUBST(OBJDUMP)
 diff --git a/macros.in b/macros.in
-index 35c8cf9df..9d8b2825c 100644
+index a1f795e5f..689e784ef 100644
 --- a/macros.in
 +++ b/macros.in
-@@ -996,7 +996,7 @@ package or when debugging this package.\
+@@ -933,7 +933,7 @@ package or when debugging this package.\
  %_sharedstatedir	%{_prefix}/com
  %_localstatedir		%{_prefix}/var
  %_lib			lib
@@ -40,7 +40,7 @@
  %_infodir		%{_datadir}/info
  %_mandir		%{_datadir}/man
 diff --git a/rpm.am b/rpm.am
-index 8e1dc2184..3d889ec86 100644
+index 7b57f433b..9bbb9ee96 100644
 --- a/rpm.am
 +++ b/rpm.am
 @@ -1,10 +1,10 @@
@@ -55,4 +55,4 @@
 +rpmconfigdir = $(libdir)/rpm
  
  # Libtool version (current-revision-age) for all our libraries
- rpm_version_info = 10:3:1
+ rpm_version_info = 11:0:2
diff --git a/poky/meta/recipes-devtools/rpm/files/0001-Fix-build-with-musl-C-library.patch b/poky/meta/recipes-devtools/rpm/files/0001-Fix-build-with-musl-C-library.patch
deleted file mode 100644
index b960da6..0000000
--- a/poky/meta/recipes-devtools/rpm/files/0001-Fix-build-with-musl-C-library.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From d076de030deb9cafd9b2e82be5d506cebdefad0b Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 27 Feb 2017 14:43:21 +0200
-Subject: [PATCH 1/9] Fix build with musl C library.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- configure.ac       | 3 ++-
- rpmio/digest_nss.c | 1 +
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
---- a/rpmio/digest_nss.c
-+++ b/rpmio/digest_nss.c
-@@ -1,5 +1,6 @@
- #include "system.h"
- 
-+#include <signal.h>
- #include <pthread.h>
- #include <nss.h>
- #include <sechash.h>
diff --git a/poky/meta/recipes-devtools/rpm/files/0001-docs-do-not-build-manpages-requires-pandoc.patch b/poky/meta/recipes-devtools/rpm/files/0001-docs-do-not-build-manpages-requires-pandoc.patch
new file mode 100644
index 0000000..ced52d1
--- /dev/null
+++ b/poky/meta/recipes-devtools/rpm/files/0001-docs-do-not-build-manpages-requires-pandoc.patch
@@ -0,0 +1,26 @@
+From 9bf1693092385eba9841614613313010221ca01f Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 29 Jun 2021 20:11:26 +0200
+Subject: [PATCH] docs: do not build manpages (requires pandoc)
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ docs/Makefile.am | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/docs/Makefile.am b/docs/Makefile.am
+index 5a6bd203a..6257767fd 100644
+--- a/docs/Makefile.am
++++ b/docs/Makefile.am
+@@ -1,7 +1,5 @@
+ ## Process this file with automake to produce Makefile.in
+ 
+-SUBDIRS = man
+-
+ EXTRA_DIST =
+ 
+ EXTRA_DIST += \
+-- 
+2.32.0
+
diff --git a/poky/meta/recipes-devtools/rpm/files/0001-rpm-rpmio.c-restrict-virtual-memory-usage-if-limit-s.patch b/poky/meta/recipes-devtools/rpm/files/0001-rpm-rpmio.c-restrict-virtual-memory-usage-if-limit-s.patch
deleted file mode 100644
index dc3f74f..0000000
--- a/poky/meta/recipes-devtools/rpm/files/0001-rpm-rpmio.c-restrict-virtual-memory-usage-if-limit-s.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 0066b862bb3a09f39295abd5d972a53ac8dc1555 Mon Sep 17 00:00:00 2001
-From: Peter Bergin <peter@berginkonsult.se>
-Date: Wed, 19 Sep 2018 15:12:31 +0200
-Subject: [PATCH] rpm/rpmio.c: restrict virtual memory usage if limit set
-
-A solution to avoid OOM situation when the virtual memory is restricted
-for a user (ulimit -v). As the lzopen_internal function is run in parallel
-one instance per CPU thread the available virtual memory is limited per
-CPU thread.
-
-Upstream-Status: Pending [merge of multithreading patches to upstream]
-
-Signed-off-by: Peter Bergin <peter@berginkonsult.se>
-Signed-off-by: Ranjitsinh Rathod <ranjitsinh.rathod@kpit.com>
----
- rpmio/rpmio.c | 36 ++++++++++++++++++++++++++++++++++++
- 1 file changed, 36 insertions(+)
-
-diff --git a/rpmio/rpmio.c b/rpmio/rpmio.c
-index e051c98..b3c56b6 100644
---- a/rpmio/rpmio.c
-+++ b/rpmio/rpmio.c
-@@ -845,6 +845,42 @@ static LZFILE *lzopen_internal(const char *mode, int fd, int xz)
- 		}
- #endif
- 
-+		struct rlimit virtual_memory = {RLIM_INFINITY , RLIM_INFINITY};
-+		int status = getrlimit(RLIMIT_AS, &virtual_memory);
-+		if ((status != -1) && (virtual_memory.rlim_cur != RLIM_INFINITY)) {
-+			const uint64_t virtual_memlimit = virtual_memory.rlim_cur;
-+			uint32_t threads_max = lzma_cputhreads();
-+			const uint64_t virtual_memlimit_per_cpu_thread =
-+				virtual_memlimit / ((threads_max == 0) ? 1 : threads_max);
-+			rpmlog(RPMLOG_NOTICE, "XZ: virtual memory restricted to %lu and "
-+			       "per CPU thread %lu\n", virtual_memlimit, virtual_memlimit_per_cpu_thread);
-+			uint64_t memory_usage_virt;
-+			/* keep reducing the number of compression threads until memory
-+			   usage falls below the limit per CPU thread*/
-+			while ((memory_usage_virt = lzma_stream_encoder_mt_memusage(&mt_options)) >
-+			       virtual_memlimit_per_cpu_thread) {
-+				/* If number of threads goes down to zero or in case of any other error
-+				 * lzma_stream_encoder_mt_memusage will return UINT64_MAX. We must check
-+				 * for both the cases here to avoid an infinite loop.
-+				 * If we get into situation that one thread requires more virtual memory
-+				 * than available we set one thread, print error message and try anyway. */
-+				if ((--mt_options.threads == 0) || (memory_usage_virt == UINT64_MAX)) {
-+					mt_options.threads = 1;
-+					rpmlog(RPMLOG_WARNING,
-+					       "XZ: Could not adjust number of threads to get below "
-+					       "virtual memory limit %lu. usage %lu\n",
-+					       virtual_memlimit_per_cpu_thread, memory_usage_virt);
-+					break;
-+				}
-+			}
-+			if (threads != (int)mt_options.threads)
-+				rpmlog(RPMLOG_NOTICE,
-+				       "XZ: Adjusted the number of threads from %d to %d to not "
-+				       "exceed the memory usage limit of %lu bytes\n",
-+				       threads, mt_options.threads, virtual_memlimit);
-+
-+		}
-+
- 		ret = lzma_stream_encoder_mt(&lzfile->strm, &mt_options);
- 	    }
- #endif
--- 
-2.7.4
-
diff --git a/poky/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch b/poky/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch
index e78514b..9783396 100644
--- a/poky/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch
+++ b/poky/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch
@@ -1,4 +1,4 @@
-From b3952bd5e28f2a4d86c7377de239db8fa7237e14 Mon Sep 17 00:00:00 2001
+From 9b9d717f484ec913cdd3804e43489b3dc18bd77c Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 31 Oct 2020 22:14:05 -0700
 Subject: [PATCH] tools: Add error.h for non-glibc case
@@ -9,40 +9,15 @@
 Upstream-Status: Inappropriate [workaround for musl]
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
- tools/debugedit.c      |  6 +++++-
- tools/elfdeps.c        |  6 +++++-
- tools/error.h          | 27 +++++++++++++++++++++++++++
- tools/sepdebugcrcfix.c |  6 +++++-
- 4 files changed, 42 insertions(+), 3 deletions(-)
+ tools/elfdeps.c |  6 +++++-
+ tools/error.h   | 27 +++++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+), 1 deletion(-)
  create mode 100644 tools/error.h
 
-diff --git a/tools/debugedit.c b/tools/debugedit.c
-index 9f8dcd0fb..852f46073 100644
---- a/tools/debugedit.c
-+++ b/tools/debugedit.c
-@@ -26,7 +26,6 @@
- #include <byteswap.h>
- #include <endian.h>
- #include <errno.h>
--#include <error.h>
- #include <limits.h>
- #include <string.h>
- #include <stdlib.h>
-@@ -40,6 +39,11 @@
- 
- #include <gelf.h>
- #include <dwarf.h>
-+#ifdef __GLIBC__
-+#include <error.h>
-+#else
-+#include "error.h"
-+#endif
- 
- 
- /* Unfortunately strtab manipulation functions were only officially added
 diff --git a/tools/elfdeps.c b/tools/elfdeps.c
-index 6d9094874..f69e60997 100644
+index d205935bb..3a8945b33 100644
 --- a/tools/elfdeps.c
 +++ b/tools/elfdeps.c
 @@ -5,10 +5,14 @@
@@ -94,25 +69,3 @@
 +}
 +
 +#endif	/* _ERROR_H_ */
-diff --git a/tools/sepdebugcrcfix.c b/tools/sepdebugcrcfix.c
-index fba460014..2be9c1fd8 100644
---- a/tools/sepdebugcrcfix.c
-+++ b/tools/sepdebugcrcfix.c
-@@ -29,9 +29,13 @@
- #include <endian.h>
- #include <stdio.h>
- #include <stdlib.h>
--#include <error.h>
- #include <libelf.h>
- #include <gelf.h>
-+#ifdef __GLIBC__
-+#include <error.h>
-+#else
-+#include "error.h"
-+#endif
- 
- #ifndef _
- #define _(x) x
--- 
-2.29.2
-
diff --git a/poky/meta/recipes-devtools/rpm/files/0011-Do-not-require-that-ELF-binaries-are-executable-to-b.patch b/poky/meta/recipes-devtools/rpm/files/0011-Do-not-require-that-ELF-binaries-are-executable-to-b.patch
deleted file mode 100644
index 4ac5c38..0000000
--- a/poky/meta/recipes-devtools/rpm/files/0011-Do-not-require-that-ELF-binaries-are-executable-to-b.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5141d50d7b3d3c209a22c53deedb4ceef014401d Mon Sep 17 00:00:00 2001
-From: Peter Kjellerstedt <pkj@axis.com>
-Date: Mon, 15 May 2017 10:21:08 +0200
-Subject: [PATCH 09/15] Do not require that ELF binaries are executable to be
- identifiable
-
-There is nothing that requires, e.g., a DSO to be executable, but it
-is still an ELF binary and should be identified as such.
-
-Upstream probably expects all ELF binaries to be marked as executable,
-but rather than imposing such a limitation for OE, allow any file to
-be identified as an ELF binary regardless of whether it is executable
-or not.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
-
----
- fileattrs/elf.attr | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/fileattrs/elf.attr b/fileattrs/elf.attr
-index 5805dd0ee..3516f309d 100644
---- a/fileattrs/elf.attr
-+++ b/fileattrs/elf.attr
-@@ -1,4 +1,3 @@
- %__elf_provides		%{_rpmconfigdir}/elfdeps --provides %{?__filter_GLIBC_PRIVATE:--filter-private}
- %__elf_requires		%{_rpmconfigdir}/elfdeps --requires %{?__filter_GLIBC_PRIVATE:--filter-private}
- %__elf_magic		^(setuid,? )?(setgid,? )?(sticky )?ELF (32|64)-bit.*$
--%__elf_flags		exeonly
--- 
-2.14.2
-
diff --git a/poky/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb b/poky/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb
deleted file mode 100644
index 2ff9c2b..0000000
--- a/poky/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb
+++ /dev/null
@@ -1,202 +0,0 @@
-SUMMARY = "The RPM package management system"
-DESCRIPTION = "The RPM Package Manager (RPM) is a powerful command line driven \
-package management system capable of installing, uninstalling, \
-verifying, querying, and updating software packages. Each software \
-package consists of an archive of files along with information about \
-the package like its version, a description, etc."
-
-SUMMARY:${PN}-dev = "Development files for manipulating RPM packages"
-DESCRIPTION:${PN}-dev = "This package contains the RPM C library and header files. These \
-development files will simplify the process of writing programs that \
-manipulate RPM packages and databases. These files are intended to \
-simplify the process of creating graphical package managers or any \
-other tools that need an intimate knowledge of RPM packages in order \
-to function."
-
-SUMMARY:python3-rpm = "Python bindings for apps which will manupulate RPM packages"
-DESCRIPTION:python3-rpm = "The python3-rpm package contains a module that permits applications \
-written in the Python programming language to use the interface \
-supplied by the RPM Package Manager libraries."
-
-HOMEPAGE = "http://www.rpm.org"
-
-# libraries are also LGPL - how to express this?
-LICENSE = "GPL-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c4eec0c20c6034b9407a09945b48a43f"
-
-SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.16.x \
-           file://environment.d-rpm.sh \
-           file://0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch \
-           file://0001-Do-not-read-config-files-from-HOME.patch \
-           file://0001-When-cross-installing-execute-package-scriptlets-wit.patch \
-           file://0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch \
-           file://0002-Add-support-for-prefixing-etc-from-RPM_ETCCONFIGDIR-.patch \
-           file://0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch \
-           file://0001-Fix-build-with-musl-C-library.patch \
-           file://0001-Add-a-color-setting-for-mips64_n32-binaries.patch \
-           file://0011-Do-not-require-that-ELF-binaries-are-executable-to-b.patch \
-           file://0001-perl-disable-auto-reqs.patch \
-           file://0001-rpm-rpmio.c-restrict-virtual-memory-usage-if-limit-s.patch \
-           file://0016-rpmscript.c-change-logging-level-around-scriptlets-t.patch \
-           file://0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch \
-           file://0001-tools-Add-error.h-for-non-glibc-case.patch \
-           file://0001-build-pack.c-do-not-insert-payloadflags-into-.rpm-me.patch \
-           "
-
-PE = "1"
-SRCREV = "3659b8a04f5b8bacf6535e0124e7fe23f15286bd"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "libgcrypt file popt xz bzip2 elfutils python3"
-DEPENDS:append:class-native = " file-replacement-native bzip2-replacement-native"
-
-inherit autotools gettext pkgconfig python3native
-export PYTHON_ABI
-
-AUTOTOOLS_AUXDIR = "${S}/build-aux"
-
-# OE-core patches autoreconf to additionally run gnu-configize, which fails with this recipe
-EXTRA_AUTORECONF:append = " --exclude=gnu-configize"
-
-EXTRA_OECONF:append = " --without-lua --enable-python --with-crypto=libgcrypt"
-EXTRA_OECONF:append:libc-musl = " --disable-nls --disable-openmp"
-
-# --sysconfdir prevents rpm from attempting to access machine-specific configuration in sysroot/etc; we need to have it in rootfs
-# --localstatedir prevents rpm from writing its database to native sysroot when building images
-# Forcibly disable plugins for native/nativesdk, as the inhibit and prioreset
-# plugins both behave badly inside builds.
-EXTRA_OECONF:append:class-native = " --sysconfdir=/etc --localstatedir=/var --disable-plugins"
-EXTRA_OECONF:append:class-nativesdk = " --sysconfdir=/etc --disable-plugins"
-
-BBCLASSEXTEND = "native nativesdk"
-
-PACKAGECONFIG ??= "bdb ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'inhibit', '', d)}"
-# The inhibit plugin serves no purpose outside of the target
-PACKAGECONFIG:remove:class-native = "inhibit"
-PACKAGECONFIG:remove:class-nativesdk = "inhibit"
-
-PACKAGECONFIG[bdb] = "--enable-bdb,--disable-bdb,db"
-PACKAGECONFIG[imaevm] = "--with-imaevm,,ima-evm-utils"
-PACKAGECONFIG[inhibit] = "--enable-inhibit-plugin,--disable-inhibit-plugin,dbus"
-PACKAGECONFIG[rpm2archive] = "--with-archive,--without-archive,libarchive"
-
-ASNEEDED = ""
-
-# Direct rpm-native to read configuration from our sysroot, not the one it was compiled in
-# libmagic also has sysroot path contamination, so override it
-
-WRAPPER_TOOLS = " \
-   ${bindir}/rpm \
-   ${bindir}/rpm2archive \
-   ${bindir}/rpm2cpio \
-   ${bindir}/rpmbuild \
-   ${bindir}/rpmdb \
-   ${bindir}/rpmgraph \
-   ${bindir}/rpmkeys \
-   ${bindir}/rpmsign \
-   ${bindir}/rpmspec \
-   ${libdir}/rpm/rpmdeps \
-"
-
-do_configure:prepend() {
-        mkdir -p ${S}/build-aux
-}
-
-do_install:append:class-native() {
-        for tool in ${WRAPPER_TOOLS}; do
-                test -x ${D}$tool && create_wrapper ${D}$tool \
-                        RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
-                        RPM_ETCCONFIGDIR=${STAGING_DIR_NATIVE} \
-                        MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc \
-                        RPM_NO_CHROOT_FOR_SCRIPTS=1
-        done
-}
-
-do_install:append:class-nativesdk() {
-        for tool in ${WRAPPER_TOOLS}; do
-                test -x ${D}$tool && create_wrapper ${D}$tool \
-                        RPM_CONFIGDIR='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir'), d.getVar('bindir'))}/rpm \
-                        RPM_ETCCONFIGDIR='$'{RPM_ETCCONFIGDIR-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir'), d.getVar('bindir'))}/..} \
-                        MAGIC='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir'), d.getVar('bindir'))}/misc/magic.mgc \
-                        RPM_NO_CHROOT_FOR_SCRIPTS=1
-        done
-
-        rm -rf ${D}/var
-
-        mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
-        install -m 644 ${WORKDIR}/environment.d-rpm.sh ${D}${SDKPATHNATIVE}/environment-setup.d/rpm.sh
-}
-
-# Rpm's make install creates var/tmp which clashes with base-files packaging
-do_install:append:class-target() {
-    rm -rf ${D}/var
-}
-
-do_install:append () {
-	sed -i -e 's:${HOSTTOOLS_DIR}/::g' \
-	    ${D}/${libdir}/rpm/macros
-
-	sed -i -e 's|/usr/bin/python|${USRBINPATH}/env ${PYTHON_PN}|' \
-	    ${D}${libdir}/rpm/pythondistdeps.py
-}
-
-FILES:${PN} += "${libdir}/rpm-plugins/*.so \
-               "
-FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/rpm.sh"
-
-FILES:${PN}-dev += "${libdir}/rpm-plugins/*.la \
-                    "
-PACKAGE_BEFORE_PN += "${PN}-build ${PN}-sign ${PN}-archive"
-
-RRECOMMENDS:${PN} += "rpm-sign rpm-archive"
-
-FILES:${PN}-build = "\
-    ${bindir}/rpmbuild \
-    ${bindir}/gendiff \
-    ${bindir}/rpmspec \
-    ${libdir}/librpmbuild.so.* \
-    ${libdir}/rpm/brp-* \
-    ${libdir}/rpm/check-* \
-    ${libdir}/rpm/debugedit \
-    ${libdir}/rpm/sepdebugcrcfix \
-    ${libdir}/rpm/find-debuginfo.sh \
-    ${libdir}/rpm/find-lang.sh \
-    ${libdir}/rpm/*provides* \
-    ${libdir}/rpm/*requires* \
-    ${libdir}/rpm/*deps* \
-    ${libdir}/rpm/*.prov \
-    ${libdir}/rpm/*.req \
-    ${libdir}/rpm/config.* \
-    ${libdir}/rpm/mkinstalldirs \
-    ${libdir}/rpm/macros.p* \
-    ${libdir}/rpm/fileattrs/* \
-"
-
-FILES:${PN}-sign = "\
-    ${bindir}/rpmsign \
-    ${libdir}/librpmsign.so.* \
-"
-
-FILES:${PN}-archive = "\
-    ${bindir}/rpm2archive \
-"
-
-PACKAGES += "python3-rpm"
-PROVIDES += "python3-rpm"
-FILES:python3-rpm = "${PYTHON_SITEPACKAGES_DIR}/rpm/*"
-
-RDEPENDS:${PN}-build = "bash perl python3-core"
-
-PACKAGE_PREPROCESS_FUNCS += "rpm_package_preprocess"
-
-# Do not specify a sysroot when compiling on a target.
-rpm_package_preprocess () {
-	sed -i -e 's:--sysroot[^ ]*::g' \
-	    ${PKGD}/${libdir}/rpm/macros
-}
-
-SSTATE_HASHEQUIV_FILEMAP = " \
-    populate_sysroot:*/rpm/macros:${TMPDIR} \
-    populate_sysroot:*/rpm/macros:${COREBASE} \
-    "
diff --git a/poky/meta/recipes-devtools/rpm/rpm_4.17.0.bb b/poky/meta/recipes-devtools/rpm/rpm_4.17.0.bb
new file mode 100644
index 0000000..00e480b
--- /dev/null
+++ b/poky/meta/recipes-devtools/rpm/rpm_4.17.0.bb
@@ -0,0 +1,202 @@
+SUMMARY = "The RPM package management system"
+DESCRIPTION = "The RPM Package Manager (RPM) is a powerful command line driven \
+package management system capable of installing, uninstalling, \
+verifying, querying, and updating software packages. Each software \
+package consists of an archive of files along with information about \
+the package like its version, a description, etc."
+
+SUMMARY:${PN}-dev = "Development files for manipulating RPM packages"
+DESCRIPTION:${PN}-dev = "This package contains the RPM C library and header files. These \
+development files will simplify the process of writing programs that \
+manipulate RPM packages and databases. These files are intended to \
+simplify the process of creating graphical package managers or any \
+other tools that need an intimate knowledge of RPM packages in order \
+to function."
+
+SUMMARY:python3-rpm = "Python bindings for apps which will manupulate RPM packages"
+DESCRIPTION:python3-rpm = "The python3-rpm package contains a module that permits applications \
+written in the Python programming language to use the interface \
+supplied by the RPM Package Manager libraries."
+
+HOMEPAGE = "http://www.rpm.org"
+
+# libraries are also LGPL - how to express this?
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c4eec0c20c6034b9407a09945b48a43f"
+
+SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.17.x \
+           file://environment.d-rpm.sh \
+           file://0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch \
+           file://0001-Do-not-read-config-files-from-HOME.patch \
+           file://0001-When-cross-installing-execute-package-scriptlets-wit.patch \
+           file://0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch \
+           file://0002-Add-support-for-prefixing-etc-from-RPM_ETCCONFIGDIR-.patch \
+           file://0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch \
+           file://0001-Add-a-color-setting-for-mips64_n32-binaries.patch \
+           file://0001-perl-disable-auto-reqs.patch \
+           file://0016-rpmscript.c-change-logging-level-around-scriptlets-t.patch \
+           file://0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch \
+           file://0001-tools-Add-error.h-for-non-glibc-case.patch \
+           file://0001-docs-do-not-build-manpages-requires-pandoc.patch \
+           file://0001-build-pack.c-do-not-insert-payloadflags-into-.rpm-me.patch \
+           "
+
+PE = "1"
+SRCREV = "3e74e8ba2dd5e76a5353d238dc7fc38651ce27b3"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "lua libgcrypt file popt xz bzip2 elfutils python3"
+DEPENDS:append:class-native = " file-replacement-native bzip2-replacement-native"
+
+inherit autotools gettext pkgconfig python3native
+export PYTHON_ABI
+
+AUTOTOOLS_AUXDIR = "${S}/build-aux"
+
+# OE-core patches autoreconf to additionally run gnu-configize, which fails with this recipe
+EXTRA_AUTORECONF:append = " --exclude=gnu-configize"
+
+# Vendor is detected differently on x86 and aarch64 hosts and can feed into target packages
+EXTRA_OECONF:append = " --enable-python --with-crypto=libgcrypt --with-vendor=pc"
+EXTRA_OECONF:append:libc-musl = " --disable-nls --disable-openmp"
+
+# --sysconfdir prevents rpm from attempting to access machine-specific configuration in sysroot/etc; we need to have it in rootfs
+# --localstatedir prevents rpm from writing its database to native sysroot when building images
+# Forcibly disable plugins for native/nativesdk, as the inhibit and prioreset
+# plugins both behave badly inside builds.
+EXTRA_OECONF:append:class-native = " --sysconfdir=/etc --localstatedir=/var --disable-plugins"
+EXTRA_OECONF:append:class-nativesdk = " --sysconfdir=/etc --disable-plugins"
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'inhibit', '', d)} sqlite zstd"
+# The inhibit plugin serves no purpose outside of the target
+PACKAGECONFIG:remove:class-native = "inhibit"
+PACKAGECONFIG:remove:class-nativesdk = "inhibit"
+
+PACKAGECONFIG[imaevm] = "--with-imaevm,,ima-evm-utils"
+PACKAGECONFIG[inhibit] = "--enable-inhibit-plugin,--disable-inhibit-plugin,dbus"
+PACKAGECONFIG[rpm2archive] = "--with-archive,--without-archive,libarchive"
+PACKAGECONFIG[sqlite] = "--enable-sqlite=yes,--enable-sqlite=no,sqlite3"
+PACKAGECONFIG[ndb] = "--enable-ndb,--disable-ndb"
+PACKAGECONFIG[bdb-ro] = "--enable-bdb-ro,--disable-bdb-ro"
+PACKAGECONFIG[zstd] = "--enable-zstd=yes,--enable-zstd=no,zstd"
+
+ASNEEDED = ""
+
+# Direct rpm-native to read configuration from our sysroot, not the one it was compiled in
+# libmagic also has sysroot path contamination, so override it
+
+WRAPPER_TOOLS = " \
+   ${bindir}/rpm \
+   ${bindir}/rpm2archive \
+   ${bindir}/rpm2cpio \
+   ${bindir}/rpmbuild \
+   ${bindir}/rpmdb \
+   ${bindir}/rpmgraph \
+   ${bindir}/rpmkeys \
+   ${bindir}/rpmsign \
+   ${bindir}/rpmspec \
+   ${libdir}/rpm/rpmdeps \
+"
+
+do_configure:prepend() {
+        mkdir -p ${S}/build-aux
+}
+
+do_install:append:class-native() {
+        for tool in ${WRAPPER_TOOLS}; do
+                test -x ${D}$tool && create_wrapper ${D}$tool \
+                        RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
+                        RPM_ETCCONFIGDIR=${STAGING_DIR_NATIVE} \
+                        MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc \
+                        RPM_NO_CHROOT_FOR_SCRIPTS=1
+        done
+}
+
+do_install:append:class-nativesdk() {
+        for tool in ${WRAPPER_TOOLS}; do
+                test -x ${D}$tool && create_wrapper ${D}$tool \
+                        RPM_CONFIGDIR='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir'), d.getVar('bindir'))}/rpm \
+                        RPM_ETCCONFIGDIR='$'{RPM_ETCCONFIGDIR-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir'), d.getVar('bindir'))}/..} \
+                        MAGIC='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir'), d.getVar('bindir'))}/misc/magic.mgc \
+                        RPM_NO_CHROOT_FOR_SCRIPTS=1
+        done
+
+        rm -rf ${D}/var
+
+        mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
+        install -m 644 ${WORKDIR}/environment.d-rpm.sh ${D}${SDKPATHNATIVE}/environment-setup.d/rpm.sh
+}
+
+# Rpm's make install creates var/tmp which clashes with base-files packaging
+do_install:append:class-target() {
+    rm -rf ${D}/var
+}
+
+do_install:append () {
+	sed -i -e 's:${HOSTTOOLS_DIR}/::g' \
+	    ${D}/${libdir}/rpm/macros
+
+}
+
+FILES:${PN} += "${libdir}/rpm-plugins/*.so \
+               "
+FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/rpm.sh"
+
+FILES:${PN}-dev += "${libdir}/rpm-plugins/*.la \
+                    "
+PACKAGE_BEFORE_PN += "${PN}-build ${PN}-sign ${PN}-archive"
+
+RRECOMMENDS:${PN} += "rpm-sign rpm-archive"
+
+FILES:${PN}-build = "\
+    ${bindir}/rpmbuild \
+    ${bindir}/gendiff \
+    ${bindir}/rpmspec \
+    ${libdir}/librpmbuild.so.* \
+    ${libdir}/rpm/brp-* \
+    ${libdir}/rpm/check-* \
+    ${libdir}/rpm/debugedit \
+    ${libdir}/rpm/sepdebugcrcfix \
+    ${libdir}/rpm/find-debuginfo.sh \
+    ${libdir}/rpm/find-lang.sh \
+    ${libdir}/rpm/*provides* \
+    ${libdir}/rpm/*requires* \
+    ${libdir}/rpm/*deps* \
+    ${libdir}/rpm/*.prov \
+    ${libdir}/rpm/*.req \
+    ${libdir}/rpm/config.* \
+    ${libdir}/rpm/mkinstalldirs \
+    ${libdir}/rpm/macros.p* \
+    ${libdir}/rpm/fileattrs/* \
+"
+
+FILES:${PN}-sign = "\
+    ${bindir}/rpmsign \
+    ${libdir}/librpmsign.so.* \
+"
+
+FILES:${PN}-archive = "\
+    ${bindir}/rpm2archive \
+"
+
+PACKAGES += "python3-rpm"
+PROVIDES += "python3-rpm"
+FILES:python3-rpm = "${PYTHON_SITEPACKAGES_DIR}/rpm/*"
+
+RDEPENDS:${PN}-build = "bash perl python3-core"
+
+PACKAGE_PREPROCESS_FUNCS += "rpm_package_preprocess"
+
+# Do not specify a sysroot when compiling on a target.
+rpm_package_preprocess () {
+	sed -i -e 's:--sysroot[^ ]*::g' \
+	    ${PKGD}/${libdir}/rpm/macros
+}
+
+SSTATE_HASHEQUIV_FILEMAP = " \
+    populate_sysroot:*/rpm/macros:${TMPDIR} \
+    populate_sysroot:*/rpm/macros:${COREBASE} \
+    "
diff --git a/poky/meta/recipes-devtools/ruby/ruby.inc b/poky/meta/recipes-devtools/ruby/ruby.inc
index c953a27..2b5caf3 100644
--- a/poky/meta/recipes-devtools/ruby/ruby.inc
+++ b/poky/meta/recipes-devtools/ruby/ruby.inc
@@ -37,3 +37,8 @@
     sed -i "s#%%TARGET_CFLAGS%%#$CFLAGS#; s#%%TARGET_LDFLAGS%%#$LDFLAGS#" ${S}/common.mk
     rm -rf ${S}/ruby/
 }
+
+# Disable openssl extension until it becomes compatible with openssl 3
+do_configure:prepend() {
+    rm -rf ${S}/ext/openssl/extconf.rb
+}
diff --git a/poky/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch b/poky/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
index 826daf2..226ef3a 100644
--- a/poky/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
+++ b/poky/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
@@ -6,7 +6,7 @@
 
 This helps reproducibility.
 
-Upstream-Status: Inapproppriate [oe-core specific]
+Upstream-Status: Inappropriate [oe-core specific]
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
 ---
  template/Makefile.in | 4 ++--
diff --git a/poky/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch b/poky/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
index 9387506..2efbad7 100644
--- a/poky/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
+++ b/poky/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
@@ -3,7 +3,7 @@
 If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no longer
 reproducible.  Fix this.
 
-Upstream-Status: Inapproppriate [oe-core specific]
+Upstream-Status: Inappropriate [oe-core specific]
 Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
 ---
 --- a/tool/mjit_archflag.sh
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch
deleted file mode 100644
index 7529c4d..0000000
--- a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch
+++ /dev/null
@@ -1,905 +0,0 @@
-From 4e188d047dee33a19902113a3c90cdf1d8310a9e Mon Sep 17 00:00:00 2001
-From: Ralf Anton Beier <ralf_beier@me.com>
-Date: Sun, 8 Aug 2021 11:05:06 +0200
-Subject: [PATCH 5/8] Add base definitions for riscv64 + musl - libc-0.2.93
-
-https://github.com/rust-lang/libc/pull/1994/commits/030a07761f61f3293d53752e60edbd330a9d718d
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
----
- .../src/unix/linux_like/linux/musl/b64/mod.rs |   3 +
- .../linux_like/linux/musl/b64/riscv64/mod.rs  | 867 ++++++++++++++++++
- 2 files changed, 870 insertions(+)
- create mode 100644 vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
-
-diff --git a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/mod.rs b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/mod.rs
-index cfcdaaecf..7261b95d2 100644
---- a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/mod.rs
-+++ b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/mod.rs
-@@ -163,6 +163,9 @@ cfg_if! {
-     } else if #[cfg(any(target_arch = "x86_64"))] {
-         mod x86_64;
-         pub use self::x86_64::*;
-+    } else if #[cfg(any(target_arch = "riscv64"))] {
-+        mod riscv64;
-+        pub use self::riscv64::*;
-     } else {
-         // Unknown target_arch
-     }
-diff --git a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
-new file mode 100644
-index 000000000..14bae11d0
---- /dev/null
-+++ b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
-@@ -0,0 +1,867 @@
-+//! RISC-V-specific definitions for 64-bit linux-like values
-+
-+pub type c_char = u8;
-+pub type c_long = i64;
-+pub type c_ulong = u64;
-+pub type wchar_t = ::c_int;
-+
-+pub type nlink_t = ::c_uint;
-+pub type blksize_t = ::c_int;
-+pub type fsblkcnt64_t = ::c_ulong;
-+pub type fsfilcnt64_t = ::c_ulong;
-+pub type suseconds_t = i64;
-+pub type __u64 = ::c_ulonglong;
-+
-+s! {
-+    pub struct pthread_attr_t {
-+        __size: [::c_ulong; 7],
-+    }
-+
-+    pub struct stat {
-+        pub st_dev: ::dev_t,
-+        pub st_ino: ::ino_t,
-+        pub st_mode: ::mode_t,
-+        pub st_nlink: ::nlink_t,
-+        pub st_uid: ::uid_t,
-+        pub st_gid: ::gid_t,
-+        pub st_rdev: ::dev_t,
-+        pub __pad1: ::dev_t,
-+        pub st_size: ::off_t,
-+        pub st_blksize: ::blksize_t,
-+        pub __pad2: ::c_int,
-+        pub st_blocks: ::blkcnt_t,
-+        pub st_atime: ::time_t,
-+        pub st_atime_nsec: ::c_long,
-+        pub st_mtime: ::time_t,
-+        pub st_mtime_nsec: ::c_long,
-+        pub st_ctime: ::time_t,
-+        pub st_ctime_nsec: ::c_long,
-+        __unused: [::c_int; 2usize],
-+    }
-+
-+    pub struct stat64 {
-+        pub st_dev: ::dev_t,
-+        pub st_ino: ::ino64_t,
-+        pub st_mode: ::mode_t,
-+        pub st_nlink: ::nlink_t,
-+        pub st_uid: ::uid_t,
-+        pub st_gid: ::gid_t,
-+        pub st_rdev: ::dev_t,
-+        pub __pad1: ::dev_t,
-+        pub st_size: ::off64_t,
-+        pub st_blksize: ::blksize_t,
-+        pub __pad2: ::c_int,
-+        pub st_blocks: ::blkcnt_t,
-+        pub st_atime: ::time_t,
-+        pub st_atime_nsec: ::c_long,
-+        pub st_mtime: ::time_t,
-+        pub st_mtime_nsec: ::c_long,
-+        pub st_ctime: ::time_t,
-+        pub st_ctime_nsec: ::c_long,
-+        __unused: [::c_int; 2],
-+    }
-+
-+    pub struct statfs {
-+        pub f_type: ::c_long,
-+        pub f_bsize: ::c_long,
-+        pub f_blocks: ::fsblkcnt_t,
-+        pub f_bfree: ::fsblkcnt_t,
-+        pub f_bavail: ::fsblkcnt_t,
-+        pub f_files: ::fsfilcnt_t,
-+        pub f_ffree: ::fsfilcnt_t,
-+        pub f_fsid: ::fsid_t,
-+        pub f_namelen: ::c_long,
-+        pub f_frsize: ::c_long,
-+        pub f_flags: ::c_long,
-+        pub f_spare: [::c_long; 4],
-+    }
-+
-+    pub struct statfs64 {
-+        pub f_type: ::c_long,
-+        pub f_bsize: ::c_long,
-+        pub f_blocks: ::fsblkcnt64_t,
-+        pub f_bfree: ::fsblkcnt64_t,
-+        pub f_bavail: ::fsblkcnt64_t,
-+        pub f_files: ::fsfilcnt64_t,
-+        pub f_ffree: ::fsfilcnt64_t,
-+        pub f_fsid: ::fsid_t,
-+        pub f_namelen: ::c_long,
-+        pub f_frsize: ::c_long,
-+        pub f_flags: ::c_long,
-+        pub f_spare: [::c_long; 4],
-+    }
-+
-+    pub struct statvfs {
-+        pub f_bsize: ::c_ulong,
-+        pub f_frsize: ::c_ulong,
-+        pub f_blocks: ::fsblkcnt_t,
-+        pub f_bfree: ::fsblkcnt_t,
-+        pub f_bavail: ::fsblkcnt_t,
-+        pub f_files: ::fsfilcnt_t,
-+        pub f_ffree: ::fsfilcnt_t,
-+        pub f_favail: ::fsfilcnt_t,
-+        pub f_fsid: ::c_ulong,
-+        pub f_flag: ::c_ulong,
-+        pub f_namemax: ::c_ulong,
-+        pub __f_spare: [::c_int; 6],
-+    }
-+
-+    pub struct statvfs64 {
-+        pub f_bsize: ::c_ulong,
-+        pub f_frsize: ::c_ulong,
-+        pub f_blocks: ::fsblkcnt64_t,
-+        pub f_bfree: ::fsblkcnt64_t,
-+        pub f_bavail: ::fsblkcnt64_t,
-+        pub f_files: ::fsfilcnt64_t,
-+        pub f_ffree: ::fsfilcnt64_t,
-+        pub f_favail: ::fsfilcnt64_t,
-+        pub f_fsid: ::c_ulong,
-+        pub f_flag: ::c_ulong,
-+        pub f_namemax: ::c_ulong,
-+        pub __f_spare: [::c_int; 6],
-+    }
-+
-+    pub struct siginfo_t {
-+        pub si_signo: ::c_int,
-+        pub si_errno: ::c_int,
-+        pub si_code: ::c_int,
-+        #[doc(hidden)]
-+        #[deprecated(
-+            since="0.2.54",
-+            note="Please leave a comment on \
-+                  https://github.com/rust-lang/libc/pull/1316 if you're using \
-+                  this field"
-+        )]
-+        pub _pad: [::c_int; 29],
-+        _align: [u64; 0],
-+    }
-+
-+    pub struct stack_t {
-+        pub ss_sp: *mut ::c_void,
-+        pub ss_flags: ::c_int,
-+        pub ss_size: ::size_t,
-+    }
-+
-+    pub struct sigaction {
-+        pub sa_sigaction: ::sighandler_t,
-+        pub sa_mask: ::sigset_t,
-+        pub sa_flags: ::c_int,
-+        pub sa_restorer: ::Option<unsafe extern "C" fn()>,
-+    }
-+
-+    pub struct ipc_perm {
-+        pub __key: ::key_t,
-+        pub uid: ::uid_t,
-+        pub gid: ::gid_t,
-+        pub cuid: ::uid_t,
-+        pub cgid: ::gid_t,
-+        pub mode: ::c_ushort,
-+        __pad1: ::c_ushort,
-+        pub __seq: ::c_ushort,
-+        __pad2: ::c_ushort,
-+        __unused1: ::c_ulong,
-+        __unused2: ::c_ulong,
-+    }
-+
-+    pub struct shmid_ds {
-+        pub shm_perm: ::ipc_perm,
-+        pub shm_segsz: ::size_t,
-+        pub shm_atime: ::time_t,
-+        pub shm_dtime: ::time_t,
-+        pub shm_ctime: ::time_t,
-+        pub shm_cpid: ::pid_t,
-+        pub shm_lpid: ::pid_t,
-+        pub shm_nattch: ::shmatt_t,
-+        __unused5: ::c_ulong,
-+        __unused6: ::c_ulong,
-+    }
-+
-+    pub struct flock {
-+        pub l_type: ::c_short,
-+        pub l_whence: ::c_short,
-+        pub l_start: ::off_t,
-+        pub l_len: ::off_t,
-+        pub l_pid: ::pid_t,
-+    }
-+
-+    pub struct flock64 {
-+        pub l_type: ::c_short,
-+        pub l_whence: ::c_short,
-+        pub l_start: ::off64_t,
-+        pub l_len: ::off64_t,
-+        pub l_pid: ::pid_t,
-+    }
-+
-+    pub struct ip_mreqn {
-+        pub imr_multiaddr: ::in_addr,
-+        pub imr_address: ::in_addr,
-+        pub imr_ifindex: ::c_int,
-+    }
-+}
-+
-+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
-+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
-+pub const VEOF: usize = 4;
-+pub const RTLD_DEEPBIND: ::c_int = 0x8;
-+pub const RTLD_GLOBAL: ::c_int = 0x100;
-+pub const RTLD_NOLOAD: ::c_int = 0x4;
-+pub const TIOCGSOFTCAR: ::c_ulong = 21529;
-+pub const TIOCSSOFTCAR: ::c_ulong = 21530;
-+pub const TIOCGRS485: ::c_int = 21550;
-+pub const TIOCSRS485: ::c_int = 21551;
-+pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
-+pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
-+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
-+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
-+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
-+pub const O_APPEND: ::c_int = 1024;
-+pub const O_CREAT: ::c_int = 64;
-+pub const O_EXCL: ::c_int = 128;
-+pub const O_NOCTTY: ::c_int = 256;
-+pub const O_NONBLOCK: ::c_int = 2048;
-+pub const O_SYNC: ::c_int = 1052672;
-+pub const O_RSYNC: ::c_int = 1052672;
-+pub const O_DSYNC: ::c_int = 4096;
-+pub const O_FSYNC: ::c_int = 1052672;
-+pub const O_NOATIME: ::c_int = 262144;
-+pub const O_PATH: ::c_int = 2097152;
-+pub const O_TMPFILE: ::c_int = 4259840;
-+pub const MAP_GROWSDOWN: ::c_int = 256;
-+pub const EDEADLK: ::c_int = 35;
-+pub const ENAMETOOLONG: ::c_int = 36;
-+pub const ENOLCK: ::c_int = 37;
-+pub const ENOSYS: ::c_int = 38;
-+pub const ENOTEMPTY: ::c_int = 39;
-+pub const ELOOP: ::c_int = 40;
-+pub const ENOMSG: ::c_int = 42;
-+pub const EIDRM: ::c_int = 43;
-+pub const ECHRNG: ::c_int = 44;
-+pub const EL2NSYNC: ::c_int = 45;
-+pub const EL3HLT: ::c_int = 46;
-+pub const EL3RST: ::c_int = 47;
-+pub const ELNRNG: ::c_int = 48;
-+pub const EUNATCH: ::c_int = 49;
-+pub const ENOCSI: ::c_int = 50;
-+pub const EL2HLT: ::c_int = 51;
-+pub const EBADE: ::c_int = 52;
-+pub const EBADR: ::c_int = 53;
-+pub const EXFULL: ::c_int = 54;
-+pub const ENOANO: ::c_int = 55;
-+pub const EBADRQC: ::c_int = 56;
-+pub const EBADSLT: ::c_int = 57;
-+pub const EMULTIHOP: ::c_int = 72;
-+pub const EOVERFLOW: ::c_int = 75;
-+pub const ENOTUNIQ: ::c_int = 76;
-+pub const EBADFD: ::c_int = 77;
-+pub const EBADMSG: ::c_int = 74;
-+pub const EREMCHG: ::c_int = 78;
-+pub const ELIBACC: ::c_int = 79;
-+pub const ELIBBAD: ::c_int = 80;
-+pub const ELIBSCN: ::c_int = 81;
-+pub const ELIBMAX: ::c_int = 82;
-+pub const ELIBEXEC: ::c_int = 83;
-+pub const EILSEQ: ::c_int = 84;
-+pub const ERESTART: ::c_int = 85;
-+pub const ESTRPIPE: ::c_int = 86;
-+pub const EUSERS: ::c_int = 87;
-+pub const ENOTSOCK: ::c_int = 88;
-+pub const EDESTADDRREQ: ::c_int = 89;
-+pub const EMSGSIZE: ::c_int = 90;
-+pub const EPROTOTYPE: ::c_int = 91;
-+pub const ENOPROTOOPT: ::c_int = 92;
-+pub const EPROTONOSUPPORT: ::c_int = 93;
-+pub const ESOCKTNOSUPPORT: ::c_int = 94;
-+pub const EOPNOTSUPP: ::c_int = 95;
-+pub const EPFNOSUPPORT: ::c_int = 96;
-+pub const EAFNOSUPPORT: ::c_int = 97;
-+pub const EADDRINUSE: ::c_int = 98;
-+pub const EADDRNOTAVAIL: ::c_int = 99;
-+pub const ENETDOWN: ::c_int = 100;
-+pub const ENETUNREACH: ::c_int = 101;
-+pub const ENETRESET: ::c_int = 102;
-+pub const ECONNABORTED: ::c_int = 103;
-+pub const ECONNRESET: ::c_int = 104;
-+pub const ENOBUFS: ::c_int = 105;
-+pub const EISCONN: ::c_int = 106;
-+pub const ENOTCONN: ::c_int = 107;
-+pub const ESHUTDOWN: ::c_int = 108;
-+pub const ETOOMANYREFS: ::c_int = 109;
-+pub const ETIMEDOUT: ::c_int = 110;
-+pub const ECONNREFUSED: ::c_int = 111;
-+pub const EHOSTDOWN: ::c_int = 112;
-+pub const EHOSTUNREACH: ::c_int = 113;
-+pub const EALREADY: ::c_int = 114;
-+pub const EINPROGRESS: ::c_int = 115;
-+pub const ESTALE: ::c_int = 116;
-+pub const EDQUOT: ::c_int = 122;
-+pub const ENOMEDIUM: ::c_int = 123;
-+pub const EMEDIUMTYPE: ::c_int = 124;
-+pub const ECANCELED: ::c_int = 125;
-+pub const ENOKEY: ::c_int = 126;
-+pub const EKEYEXPIRED: ::c_int = 127;
-+pub const EKEYREVOKED: ::c_int = 128;
-+pub const EKEYREJECTED: ::c_int = 129;
-+pub const EOWNERDEAD: ::c_int = 130;
-+pub const ENOTRECOVERABLE: ::c_int = 131;
-+pub const EHWPOISON: ::c_int = 133;
-+pub const ERFKILL: ::c_int = 132;
-+pub const SOL_SOCKET: ::c_int = 1;
-+pub const SO_REUSEADDR: ::c_int = 2;
-+pub const SO_TYPE: ::c_int = 3;
-+pub const SO_ERROR: ::c_int = 4;
-+pub const SO_DONTROUTE: ::c_int = 5;
-+pub const SO_BROADCAST: ::c_int = 6;
-+pub const SO_SNDBUF: ::c_int = 7;
-+pub const SO_RCVBUF: ::c_int = 8;
-+pub const SO_SNDBUFFORCE: ::c_int = 32;
-+pub const SO_RCVBUFFORCE: ::c_int = 33;
-+pub const SO_KEEPALIVE: ::c_int = 9;
-+pub const SO_OOBINLINE: ::c_int = 10;
-+pub const SO_NO_CHECK: ::c_int = 11;
-+pub const SO_PRIORITY: ::c_int = 12;
-+pub const SO_LINGER: ::c_int = 13;
-+pub const SO_BSDCOMPAT: ::c_int = 14;
-+pub const SO_REUSEPORT: ::c_int = 15;
-+pub const SO_PASSCRED: ::c_int = 16;
-+pub const SO_PEERCRED: ::c_int = 17;
-+pub const SO_RCVLOWAT: ::c_int = 18;
-+pub const SO_SNDLOWAT: ::c_int = 19;
-+pub const SO_RCVTIMEO: ::c_int = 20;
-+pub const SO_SNDTIMEO: ::c_int = 21;
-+pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
-+pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
-+pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
-+pub const SO_BINDTODEVICE: ::c_int = 25;
-+pub const SO_ATTACH_FILTER: ::c_int = 26;
-+pub const SO_DETACH_FILTER: ::c_int = 27;
-+pub const SO_GET_FILTER: ::c_int = 26;
-+pub const SO_PEERNAME: ::c_int = 28;
-+pub const SO_TIMESTAMP: ::c_int = 29;
-+pub const SO_ACCEPTCONN: ::c_int = 30;
-+pub const SO_PEERSEC: ::c_int = 31;
-+pub const SO_PASSSEC: ::c_int = 34;
-+pub const SO_TIMESTAMPNS: ::c_int = 35;
-+pub const SCM_TIMESTAMPNS: ::c_int = 35;
-+pub const SO_MARK: ::c_int = 36;
-+pub const SO_PROTOCOL: ::c_int = 38;
-+pub const SO_DOMAIN: ::c_int = 39;
-+pub const SO_RXQ_OVFL: ::c_int = 40;
-+pub const SO_WIFI_STATUS: ::c_int = 41;
-+pub const SCM_WIFI_STATUS: ::c_int = 41;
-+pub const SO_PEEK_OFF: ::c_int = 42;
-+pub const SO_NOFCS: ::c_int = 43;
-+pub const SO_LOCK_FILTER: ::c_int = 44;
-+pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
-+pub const SO_BUSY_POLL: ::c_int = 46;
-+pub const SO_MAX_PACING_RATE: ::c_int = 47;
-+pub const SO_BPF_EXTENSIONS: ::c_int = 48;
-+pub const SO_INCOMING_CPU: ::c_int = 49;
-+pub const SO_ATTACH_BPF: ::c_int = 50;
-+pub const SO_DETACH_BPF: ::c_int = 27;
-+pub const SOCK_STREAM: ::c_int = 1;
-+pub const SOCK_DGRAM: ::c_int = 2;
-+pub const SA_ONSTACK: ::c_int = 134217728;
-+pub const SA_SIGINFO: ::c_int = 4;
-+pub const SA_NOCLDWAIT: ::c_int = 2;
-+pub const SIGTTIN: ::c_int = 21;
-+pub const SIGTTOU: ::c_int = 22;
-+pub const SIGXCPU: ::c_int = 24;
-+pub const SIGXFSZ: ::c_int = 25;
-+pub const SIGVTALRM: ::c_int = 26;
-+pub const SIGPROF: ::c_int = 27;
-+pub const SIGWINCH: ::c_int = 28;
-+pub const SIGCHLD: ::c_int = 17;
-+pub const SIGBUS: ::c_int = 7;
-+pub const SIGUSR1: ::c_int = 10;
-+pub const SIGUSR2: ::c_int = 12;
-+pub const SIGCONT: ::c_int = 18;
-+pub const SIGSTOP: ::c_int = 19;
-+pub const SIGTSTP: ::c_int = 20;
-+pub const SIGURG: ::c_int = 23;
-+pub const SIGIO: ::c_int = 29;
-+pub const SIGSYS: ::c_int = 31;
-+pub const SIGSTKFLT: ::c_int = 16;
-+pub const SIGPOLL: ::c_int = 29;
-+pub const SIGPWR: ::c_int = 30;
-+pub const SIG_SETMASK: ::c_int = 2;
-+pub const SIG_BLOCK: ::c_int = 0;
-+pub const SIG_UNBLOCK: ::c_int = 1;
-+pub const POLLWRNORM: ::c_short = 256;
-+pub const POLLWRBAND: ::c_short = 512;
-+pub const O_ASYNC: ::c_int = 8192;
-+pub const O_NDELAY: ::c_int = 2048;
-+pub const PTRACE_DETACH: ::c_uint = 17;
-+pub const EFD_NONBLOCK: ::c_int = 2048;
-+pub const F_GETLK: ::c_int = 5;
-+pub const F_GETOWN: ::c_int = 9;
-+pub const F_SETOWN: ::c_int = 8;
-+pub const F_SETLK: ::c_int = 6;
-+pub const F_SETLKW: ::c_int = 7;
-+pub const F_RDLCK: ::c_int = 0;
-+pub const F_WRLCK: ::c_int = 1;
-+pub const F_UNLCK: ::c_int = 2;
-+pub const F_OFD_GETLK: ::c_int = 36;
-+pub const F_OFD_SETLK: ::c_int = 37;
-+pub const F_OFD_SETLKW: ::c_int = 38;
-+pub const SFD_NONBLOCK: ::c_int = 2048;
-+pub const TCSANOW: ::c_int = 0;
-+pub const TCSADRAIN: ::c_int = 1;
-+pub const TCSAFLUSH: ::c_int = 2;
-+pub const TIOCLINUX: ::c_ulong = 21532;
-+pub const TIOCGSERIAL: ::c_ulong = 21534;
-+pub const TIOCEXCL: ::c_ulong = 21516;
-+pub const TIOCNXCL: ::c_ulong = 21517;
-+pub const TIOCSCTTY: ::c_ulong = 21518;
-+pub const TIOCSTI: ::c_ulong = 21522;
-+pub const TIOCMGET: ::c_ulong = 21525;
-+pub const TIOCMBIS: ::c_ulong = 21526;
-+pub const TIOCMBIC: ::c_ulong = 21527;
-+pub const TIOCMSET: ::c_ulong = 21528;
-+pub const TIOCCONS: ::c_ulong = 21533;
-+pub const TIOCM_ST: ::c_int = 8;
-+pub const TIOCM_SR: ::c_int = 16;
-+pub const TIOCM_CTS: ::c_int = 32;
-+pub const TIOCM_CAR: ::c_int = 64;
-+pub const TIOCM_RNG: ::c_int = 128;
-+pub const TIOCM_DSR: ::c_int = 256;
-+pub const SFD_CLOEXEC: ::c_int = 524288;
-+pub const NCCS: usize = 32;
-+pub const O_TRUNC: ::c_int = 512;
-+pub const O_CLOEXEC: ::c_int = 524288;
-+pub const EBFONT: ::c_int = 59;
-+pub const ENOSTR: ::c_int = 60;
-+pub const ENODATA: ::c_int = 61;
-+pub const ETIME: ::c_int = 62;
-+pub const ENOSR: ::c_int = 63;
-+pub const ENONET: ::c_int = 64;
-+pub const ENOPKG: ::c_int = 65;
-+pub const EREMOTE: ::c_int = 66;
-+pub const ENOLINK: ::c_int = 67;
-+pub const EADV: ::c_int = 68;
-+pub const ESRMNT: ::c_int = 69;
-+pub const ECOMM: ::c_int = 70;
-+pub const EPROTO: ::c_int = 71;
-+pub const EDOTDOT: ::c_int = 73;
-+pub const SA_NODEFER: ::c_int = 1073741824;
-+pub const SA_RESETHAND: ::c_int = -2147483648;
-+pub const SA_RESTART: ::c_int = 268435456;
-+pub const SA_NOCLDSTOP: ::c_int = 1;
-+pub const EPOLL_CLOEXEC: ::c_int = 524288;
-+pub const EFD_CLOEXEC: ::c_int = 524288;
-+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
-+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
-+pub const O_DIRECT: ::c_int = 16384;
-+pub const O_DIRECTORY: ::c_int = 65536;
-+pub const O_NOFOLLOW: ::c_int = 131072;
-+pub const MAP_HUGETLB: ::c_int = 262144;
-+pub const MAP_LOCKED: ::c_int = 8192;
-+pub const MAP_NORESERVE: ::c_int = 16384;
-+pub const MAP_ANON: ::c_int = 32;
-+pub const MAP_ANONYMOUS: ::c_int = 32;
-+pub const MAP_DENYWRITE: ::c_int = 2048;
-+pub const MAP_EXECUTABLE: ::c_int = 4096;
-+pub const MAP_POPULATE: ::c_int = 32768;
-+pub const MAP_NONBLOCK: ::c_int = 65536;
-+pub const MAP_STACK: ::c_int = 131072;
-+pub const MAP_SYNC : ::c_int = 0x080000;
-+pub const EDEADLOCK: ::c_int = 35;
-+pub const EUCLEAN: ::c_int = 117;
-+pub const ENOTNAM: ::c_int = 118;
-+pub const ENAVAIL: ::c_int = 119;
-+pub const EISNAM: ::c_int = 120;
-+pub const EREMOTEIO: ::c_int = 121;
-+pub const FIOCLEX: ::c_ulong = 21585;
-+pub const FIONCLEX: ::c_ulong = 21584;
-+pub const FIONBIO: ::c_ulong = 21537;
-+pub const MCL_CURRENT: ::c_int = 1;
-+pub const MCL_FUTURE: ::c_int = 2;
-+pub const SIGSTKSZ: ::size_t = 8192;
-+pub const MINSIGSTKSZ: ::size_t = 2048;
-+pub const CBAUD: ::tcflag_t = 4111;
-+pub const TAB1: ::tcflag_t = 2048;
-+pub const TAB2: ::tcflag_t = 4096;
-+pub const TAB3: ::tcflag_t = 6144;
-+pub const CR1: ::tcflag_t = 512;
-+pub const CR2: ::tcflag_t = 1024;
-+pub const CR3: ::tcflag_t = 1536;
-+pub const FF1: ::tcflag_t = 32768;
-+pub const BS1: ::tcflag_t = 8192;
-+pub const VT1: ::tcflag_t = 16384;
-+pub const VWERASE: usize = 14;
-+pub const VREPRINT: usize = 12;
-+pub const VSUSP: usize = 10;
-+pub const VSTART: usize = 8;
-+pub const VSTOP: usize = 9;
-+pub const VDISCARD: usize = 13;
-+pub const VTIME: usize = 5;
-+pub const IXON: ::tcflag_t = 1024;
-+pub const IXOFF: ::tcflag_t = 4096;
-+pub const ONLCR: ::tcflag_t = 4;
-+pub const CSIZE: ::tcflag_t = 48;
-+pub const CS6: ::tcflag_t = 16;
-+pub const CS7: ::tcflag_t = 32;
-+pub const CS8: ::tcflag_t = 48;
-+pub const CSTOPB: ::tcflag_t = 64;
-+pub const CREAD: ::tcflag_t = 128;
-+pub const PARENB: ::tcflag_t = 256;
-+pub const PARODD: ::tcflag_t = 512;
-+pub const HUPCL: ::tcflag_t = 1024;
-+pub const CLOCAL: ::tcflag_t = 2048;
-+pub const ECHOKE: ::tcflag_t = 2048;
-+pub const ECHOE: ::tcflag_t = 16;
-+pub const ECHOK: ::tcflag_t = 32;
-+pub const ECHONL: ::tcflag_t = 64;
-+pub const ECHOPRT: ::tcflag_t = 1024;
-+pub const ECHOCTL: ::tcflag_t = 512;
-+pub const ISIG: ::tcflag_t = 1;
-+pub const ICANON: ::tcflag_t = 2;
-+pub const PENDIN: ::tcflag_t = 16384;
-+pub const NOFLSH: ::tcflag_t = 128;
-+pub const CIBAUD: ::tcflag_t = 269418496;
-+pub const CBAUDEX: ::tcflag_t = 4096;
-+pub const VSWTC: usize = 7;
-+pub const OLCUC: ::tcflag_t = 2;
-+pub const NLDLY: ::tcflag_t = 256;
-+pub const CRDLY: ::tcflag_t = 1536;
-+pub const TABDLY: ::tcflag_t = 6144;
-+pub const BSDLY: ::tcflag_t = 8192;
-+pub const FFDLY: ::tcflag_t = 32768;
-+pub const VTDLY: ::tcflag_t = 16384;
-+pub const XTABS: ::tcflag_t = 6144;
-+pub const B0: ::speed_t = 0;
-+pub const B50: ::speed_t = 1;
-+pub const B75: ::speed_t = 2;
-+pub const B110: ::speed_t = 3;
-+pub const B134: ::speed_t = 4;
-+pub const B150: ::speed_t = 5;
-+pub const B200: ::speed_t = 6;
-+pub const B300: ::speed_t = 7;
-+pub const B600: ::speed_t = 8;
-+pub const B1200: ::speed_t = 9;
-+pub const B1800: ::speed_t = 10;
-+pub const B2400: ::speed_t = 11;
-+pub const B4800: ::speed_t = 12;
-+pub const B9600: ::speed_t = 13;
-+pub const B19200: ::speed_t = 14;
-+pub const B38400: ::speed_t = 15;
-+pub const EXTA: ::speed_t = 14;
-+pub const EXTB: ::speed_t = 15;
-+pub const B57600: ::speed_t = 4097;
-+pub const B115200: ::speed_t = 4098;
-+pub const B230400: ::speed_t = 4099;
-+pub const B460800: ::speed_t = 4100;
-+pub const B500000: ::speed_t = 4101;
-+pub const B576000: ::speed_t = 4102;
-+pub const B921600: ::speed_t = 4103;
-+pub const B1000000: ::speed_t = 4104;
-+pub const B1152000: ::speed_t = 4105;
-+pub const B1500000: ::speed_t = 4106;
-+pub const B2000000: ::speed_t = 4107;
-+pub const B2500000: ::speed_t = 4108;
-+pub const B3000000: ::speed_t = 4109;
-+pub const B3500000: ::speed_t = 4110;
-+pub const B4000000: ::speed_t = 4111;
-+pub const VEOL: usize = 11;
-+pub const VEOL2: usize = 16;
-+pub const VMIN: usize = 6;
-+pub const IEXTEN: ::tcflag_t = 32768;
-+pub const TOSTOP: ::tcflag_t = 256;
-+pub const FLUSHO: ::tcflag_t = 4096;
-+pub const EXTPROC: ::tcflag_t = 65536;
-+pub const TCGETS: ::c_ulong = 21505;
-+pub const TCSETS: ::c_ulong = 21506;
-+pub const TCSETSW: ::c_ulong = 21507;
-+pub const TCSETSF: ::c_ulong = 21508;
-+pub const TCGETA: ::c_ulong = 21509;
-+pub const TCSETA: ::c_ulong = 21510;
-+pub const TCSETAW: ::c_ulong = 21511;
-+pub const TCSETAF: ::c_ulong = 21512;
-+pub const TCSBRK: ::c_ulong = 21513;
-+pub const TCXONC: ::c_ulong = 21514;
-+pub const TCFLSH: ::c_ulong = 21515;
-+pub const TIOCINQ: ::c_ulong = 21531;
-+pub const TIOCGPGRP: ::c_ulong = 21519;
-+pub const TIOCSPGRP: ::c_ulong = 21520;
-+pub const TIOCOUTQ: ::c_ulong = 21521;
-+pub const TIOCGWINSZ: ::c_ulong = 21523;
-+pub const TIOCSWINSZ: ::c_ulong = 21524;
-+pub const FIONREAD: ::c_ulong = 21531;
-+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
-+pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
-+pub const SYS_read: ::c_long = 63;
-+pub const SYS_write: ::c_long = 64;
-+pub const SYS_close: ::c_long = 57;
-+pub const SYS_fstat: ::c_long = 80;
-+pub const SYS_lseek: ::c_long = 62;
-+pub const SYS_mmap: ::c_long = 222;
-+pub const SYS_mprotect: ::c_long = 226;
-+pub const SYS_munmap: ::c_long = 215;
-+pub const SYS_brk: ::c_long = 214;
-+pub const SYS_rt_sigaction: ::c_long = 134;
-+pub const SYS_rt_sigprocmask: ::c_long = 135;
-+pub const SYS_rt_sigreturn: ::c_long = 139;
-+pub const SYS_ioctl: ::c_long = 29;
-+pub const SYS_pread64: ::c_long = 67;
-+pub const SYS_pwrite64: ::c_long = 68;
-+pub const SYS_readv: ::c_long = 65;
-+pub const SYS_writev: ::c_long = 66;
-+pub const SYS_sched_yield: ::c_long = 124;
-+pub const SYS_mremap: ::c_long = 216;
-+pub const SYS_msync: ::c_long = 227;
-+pub const SYS_mincore: ::c_long = 232;
-+pub const SYS_madvise: ::c_long = 233;
-+pub const SYS_shmget: ::c_long = 194;
-+pub const SYS_shmat: ::c_long = 196;
-+pub const SYS_shmctl: ::c_long = 195;
-+pub const SYS_dup: ::c_long = 23;
-+pub const SYS_nanosleep: ::c_long = 101;
-+pub const SYS_getitimer: ::c_long = 102;
-+pub const SYS_setitimer: ::c_long = 103;
-+pub const SYS_getpid: ::c_long = 172;
-+pub const SYS_sendfile: ::c_long = 71;
-+pub const SYS_socket: ::c_long = 198;
-+pub const SYS_connect: ::c_long = 203;
-+pub const SYS_accept: ::c_long = 202;
-+pub const SYS_sendto: ::c_long = 206;
-+pub const SYS_recvfrom: ::c_long = 207;
-+pub const SYS_sendmsg: ::c_long = 211;
-+pub const SYS_recvmsg: ::c_long = 212;
-+pub const SYS_shutdown: ::c_long = 210;
-+pub const SYS_bind: ::c_long = 200;
-+pub const SYS_listen: ::c_long = 201;
-+pub const SYS_getsockname: ::c_long = 204;
-+pub const SYS_getpeername: ::c_long = 205;
-+pub const SYS_socketpair: ::c_long = 199;
-+pub const SYS_setsockopt: ::c_long = 208;
-+pub const SYS_getsockopt: ::c_long = 209;
-+pub const SYS_clone: ::c_long = 220;
-+pub const SYS_execve: ::c_long = 221;
-+pub const SYS_exit: ::c_long = 93;
-+pub const SYS_wait4: ::c_long = 260;
-+pub const SYS_kill: ::c_long = 129;
-+pub const SYS_uname: ::c_long = 160;
-+pub const SYS_semget: ::c_long = 190;
-+pub const SYS_semop: ::c_long = 193;
-+pub const SYS_semctl: ::c_long = 191;
-+pub const SYS_shmdt: ::c_long = 197;
-+pub const SYS_msgget: ::c_long = 186;
-+pub const SYS_msgsnd: ::c_long = 189;
-+pub const SYS_msgrcv: ::c_long = 188;
-+pub const SYS_msgctl: ::c_long = 187;
-+pub const SYS_fcntl: ::c_long = 25;
-+pub const SYS_flock: ::c_long = 32;
-+pub const SYS_fsync: ::c_long = 82;
-+pub const SYS_fdatasync: ::c_long = 83;
-+pub const SYS_truncate: ::c_long = 45;
-+pub const SYS_ftruncate: ::c_long = 46;
-+pub const SYS_getcwd: ::c_long = 17;
-+pub const SYS_chdir: ::c_long = 49;
-+pub const SYS_fchdir: ::c_long = 50;
-+pub const SYS_fchmod: ::c_long = 52;
-+pub const SYS_fchown: ::c_long = 55;
-+pub const SYS_umask: ::c_long = 166;
-+pub const SYS_gettimeofday: ::c_long = 169;
-+pub const SYS_getrlimit: ::c_long = 163;
-+pub const SYS_getrusage: ::c_long = 165;
-+pub const SYS_sysinfo: ::c_long = 179;
-+pub const SYS_times: ::c_long = 153;
-+pub const SYS_ptrace: ::c_long = 117;
-+pub const SYS_getuid: ::c_long = 174;
-+pub const SYS_syslog: ::c_long = 116;
-+pub const SYS_getgid: ::c_long = 176;
-+pub const SYS_setuid: ::c_long = 146;
-+pub const SYS_setgid: ::c_long = 144;
-+pub const SYS_geteuid: ::c_long = 175;
-+pub const SYS_getegid: ::c_long = 177;
-+pub const SYS_setpgid: ::c_long = 154;
-+pub const SYS_getppid: ::c_long = 173;
-+pub const SYS_setsid: ::c_long = 157;
-+pub const SYS_setreuid: ::c_long = 145;
-+pub const SYS_setregid: ::c_long = 143;
-+pub const SYS_getgroups: ::c_long = 158;
-+pub const SYS_setgroups: ::c_long = 159;
-+pub const SYS_setresuid: ::c_long = 147;
-+pub const SYS_getresuid: ::c_long = 148;
-+pub const SYS_setresgid: ::c_long = 149;
-+pub const SYS_getresgid: ::c_long = 150;
-+pub const SYS_getpgid: ::c_long = 155;
-+pub const SYS_setfsuid: ::c_long = 151;
-+pub const SYS_setfsgid: ::c_long = 152;
-+pub const SYS_getsid: ::c_long = 156;
-+pub const SYS_capget: ::c_long = 90;
-+pub const SYS_capset: ::c_long = 91;
-+pub const SYS_rt_sigpending: ::c_long = 136;
-+pub const SYS_rt_sigtimedwait: ::c_long = 137;
-+pub const SYS_rt_sigqueueinfo: ::c_long = 138;
-+pub const SYS_rt_sigsuspend: ::c_long = 133;
-+pub const SYS_sigaltstack: ::c_long = 132;
-+pub const SYS_personality: ::c_long = 92;
-+pub const SYS_statfs: ::c_long = 43;
-+pub const SYS_fstatfs: ::c_long = 44;
-+pub const SYS_getpriority: ::c_long = 141;
-+pub const SYS_setpriority: ::c_long = 140;
-+pub const SYS_sched_setparam: ::c_long = 118;
-+pub const SYS_sched_getparam: ::c_long = 121;
-+pub const SYS_sched_setscheduler: ::c_long = 119;
-+pub const SYS_sched_getscheduler: ::c_long = 120;
-+pub const SYS_sched_get_priority_max: ::c_long = 125;
-+pub const SYS_sched_get_priority_min: ::c_long = 126;
-+pub const SYS_sched_rr_get_interval: ::c_long = 127;
-+pub const SYS_mlock: ::c_long = 228;
-+pub const SYS_munlock: ::c_long = 229;
-+pub const SYS_mlockall: ::c_long = 230;
-+pub const SYS_munlockall: ::c_long = 231;
-+pub const SYS_vhangup: ::c_long = 58;
-+pub const SYS_pivot_root: ::c_long = 41;
-+pub const SYS_prctl: ::c_long = 167;
-+pub const SYS_adjtimex: ::c_long = 171;
-+pub const SYS_setrlimit: ::c_long = 164;
-+pub const SYS_chroot: ::c_long = 51;
-+pub const SYS_sync: ::c_long = 81;
-+pub const SYS_acct: ::c_long = 89;
-+pub const SYS_settimeofday: ::c_long = 170;
-+pub const SYS_mount: ::c_long = 40;
-+pub const SYS_umount2: ::c_long = 39;
-+pub const SYS_swapon: ::c_long = 224;
-+pub const SYS_swapoff: ::c_long = 225;
-+pub const SYS_reboot: ::c_long = 142;
-+pub const SYS_sethostname: ::c_long = 161;
-+pub const SYS_setdomainname: ::c_long = 162;
-+pub const SYS_init_module: ::c_long = 105;
-+pub const SYS_delete_module: ::c_long = 106;
-+pub const SYS_quotactl: ::c_long = 60;
-+pub const SYS_nfsservctl: ::c_long = 42;
-+pub const SYS_gettid: ::c_long = 178;
-+pub const SYS_readahead: ::c_long = 213;
-+pub const SYS_setxattr: ::c_long = 5;
-+pub const SYS_lsetxattr: ::c_long = 6;
-+pub const SYS_fsetxattr: ::c_long = 7;
-+pub const SYS_getxattr: ::c_long = 8;
-+pub const SYS_lgetxattr: ::c_long = 9;
-+pub const SYS_fgetxattr: ::c_long = 10;
-+pub const SYS_listxattr: ::c_long = 11;
-+pub const SYS_llistxattr: ::c_long = 12;
-+pub const SYS_flistxattr: ::c_long = 13;
-+pub const SYS_removexattr: ::c_long = 14;
-+pub const SYS_lremovexattr: ::c_long = 15;
-+pub const SYS_fremovexattr: ::c_long = 16;
-+pub const SYS_tkill: ::c_long = 130;
-+pub const SYS_futex: ::c_long = 98;
-+pub const SYS_sched_setaffinity: ::c_long = 122;
-+pub const SYS_sched_getaffinity: ::c_long = 123;
-+pub const SYS_io_setup: ::c_long = 0;
-+pub const SYS_io_destroy: ::c_long = 1;
-+pub const SYS_io_getevents: ::c_long = 4;
-+pub const SYS_io_submit: ::c_long = 2;
-+pub const SYS_io_cancel: ::c_long = 3;
-+pub const SYS_lookup_dcookie: ::c_long = 18;
-+pub const SYS_remap_file_pages: ::c_long = 234;
-+pub const SYS_getdents64: ::c_long = 61;
-+pub const SYS_set_tid_address: ::c_long = 96;
-+pub const SYS_restart_syscall: ::c_long = 128;
-+pub const SYS_semtimedop: ::c_long = 192;
-+pub const SYS_fadvise64: ::c_long = 223;
-+pub const SYS_timer_create: ::c_long = 107;
-+pub const SYS_timer_settime: ::c_long = 110;
-+pub const SYS_timer_gettime: ::c_long = 108;
-+pub const SYS_timer_getoverrun: ::c_long = 109;
-+pub const SYS_timer_delete: ::c_long = 111;
-+pub const SYS_clock_settime: ::c_long = 112;
-+pub const SYS_clock_gettime: ::c_long = 113;
-+pub const SYS_clock_getres: ::c_long = 114;
-+pub const SYS_clock_nanosleep: ::c_long = 115;
-+pub const SYS_exit_group: ::c_long = 94;
-+pub const SYS_epoll_ctl: ::c_long = 21;
-+pub const SYS_tgkill: ::c_long = 131;
-+pub const SYS_mbind: ::c_long = 235;
-+pub const SYS_set_mempolicy: ::c_long = 237;
-+pub const SYS_get_mempolicy: ::c_long = 236;
-+pub const SYS_mq_open: ::c_long = 180;
-+pub const SYS_mq_unlink: ::c_long = 181;
-+pub const SYS_mq_timedsend: ::c_long = 182;
-+pub const SYS_mq_timedreceive: ::c_long = 183;
-+pub const SYS_mq_notify: ::c_long = 184;
-+pub const SYS_mq_getsetattr: ::c_long = 185;
-+pub const SYS_kexec_load: ::c_long = 104;
-+pub const SYS_waitid: ::c_long = 95;
-+pub const SYS_add_key: ::c_long = 217;
-+pub const SYS_request_key: ::c_long = 218;
-+pub const SYS_keyctl: ::c_long = 219;
-+pub const SYS_ioprio_set: ::c_long = 30;
-+pub const SYS_ioprio_get: ::c_long = 31;
-+pub const SYS_inotify_add_watch: ::c_long = 27;
-+pub const SYS_inotify_rm_watch: ::c_long = 28;
-+pub const SYS_migrate_pages: ::c_long = 238;
-+pub const SYS_openat: ::c_long = 56;
-+pub const SYS_mkdirat: ::c_long = 34;
-+pub const SYS_mknodat: ::c_long = 33;
-+pub const SYS_fchownat: ::c_long = 54;
-+pub const SYS_newfstatat: ::c_long = 79;
-+pub const SYS_unlinkat: ::c_long = 35;
-+pub const SYS_linkat: ::c_long = 37;
-+pub const SYS_symlinkat: ::c_long = 36;
-+pub const SYS_readlinkat: ::c_long = 78;
-+pub const SYS_fchmodat: ::c_long = 53;
-+pub const SYS_faccessat: ::c_long = 48;
-+pub const SYS_pselect6: ::c_long = 72;
-+pub const SYS_ppoll: ::c_long = 73;
-+pub const SYS_unshare: ::c_long = 97;
-+pub const SYS_set_robust_list: ::c_long = 99;
-+pub const SYS_get_robust_list: ::c_long = 100;
-+pub const SYS_splice: ::c_long = 76;
-+pub const SYS_tee: ::c_long = 77;
-+pub const SYS_sync_file_range: ::c_long = 84;
-+pub const SYS_vmsplice: ::c_long = 75;
-+pub const SYS_move_pages: ::c_long = 239;
-+pub const SYS_utimensat: ::c_long = 88;
-+pub const SYS_epoll_pwait: ::c_long = 22;
-+pub const SYS_timerfd_create: ::c_long = 85;
-+pub const SYS_fallocate: ::c_long = 47;
-+pub const SYS_timerfd_settime: ::c_long = 86;
-+pub const SYS_timerfd_gettime: ::c_long = 87;
-+pub const SYS_accept4: ::c_long = 242;
-+pub const SYS_signalfd4: ::c_long = 74;
-+pub const SYS_eventfd2: ::c_long = 19;
-+pub const SYS_epoll_create1: ::c_long = 20;
-+pub const SYS_dup3: ::c_long = 24;
-+pub const SYS_pipe2: ::c_long = 59;
-+pub const SYS_inotify_init1: ::c_long = 26;
-+pub const SYS_preadv: ::c_long = 69;
-+pub const SYS_pwritev: ::c_long = 70;
-+pub const SYS_rt_tgsigqueueinfo: ::c_long = 240;
-+pub const SYS_perf_event_open: ::c_long = 241;
-+pub const SYS_recvmmsg: ::c_long = 243;
-+pub const SYS_fanotify_init: ::c_long = 262;
-+pub const SYS_fanotify_mark: ::c_long = 263;
-+pub const SYS_prlimit64: ::c_long = 261;
-+pub const SYS_name_to_handle_at: ::c_long = 264;
-+pub const SYS_open_by_handle_at: ::c_long = 265;
-+pub const SYS_clock_adjtime: ::c_long = 266;
-+pub const SYS_syncfs: ::c_long = 267;
-+pub const SYS_sendmmsg: ::c_long = 269;
-+pub const SYS_setns: ::c_long = 268;
-+pub const SYS_getcpu: ::c_long = 168;
-+pub const SYS_process_vm_readv: ::c_long = 270;
-+pub const SYS_process_vm_writev: ::c_long = 271;
-+pub const SYS_kcmp: ::c_long = 272;
-+pub const SYS_finit_module: ::c_long = 273;
-+pub const SYS_sched_setattr: ::c_long = 274;
-+pub const SYS_sched_getattr: ::c_long = 275;
-+pub const SYS_renameat2: ::c_long = 276;
-+pub const SYS_seccomp: ::c_long = 277;
-+pub const SYS_getrandom: ::c_long = 278;
-+pub const SYS_memfd_create: ::c_long = 279;
-+pub const SYS_bpf: ::c_long = 280;
-+pub const SYS_execveat: ::c_long = 281;
-+pub const SYS_userfaultfd: ::c_long = 282;
-+pub const SYS_membarrier: ::c_long = 283;
-+pub const SYS_mlock2: ::c_long = 284;
-+pub const SYS_copy_file_range: ::c_long = 285;
-+pub const SYS_preadv2: ::c_long = 286;
-+pub const SYS_pwritev2: ::c_long = 287;
-+pub const SYS_pkey_mprotect: ::c_long = 288;
-+pub const SYS_pkey_alloc: ::c_long = 289;
-+pub const SYS_pkey_free: ::c_long = 290;
-+pub const SYS_statx: ::c_long = 291;
-+pub const SYS_pidfd_open: ::c_long = 434;
-+pub const SYS_clone3: ::c_long = 435;
--- 
-2.27.0
-
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch
deleted file mode 100644
index d0ddb3c..0000000
--- a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 4319893ebb7fca8bbd2bffc4bddb8d3ecdc08cc2 Mon Sep 17 00:00:00 2001
-From: Ralf Anton Beier <ralf_beier@me.com>
-Date: Sun, 8 Aug 2021 11:07:21 +0200
-Subject: [PATCH 6/8] FIXUP: linux/musl/mod.rs: add riscv64 to b64 set -
- libc-0.2.93
-
-https://github.com/rust-lang/libc/pull/1994/commits/30070c822be2ef399b2ba38cdc1d72ac694d65a3
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
----
- vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs
-index 00f26475d..a37f410fd 100644
---- a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs
-+++ b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs
-@@ -716,7 +716,8 @@ cfg_if! {
-                  target_arch = "aarch64",
-                  target_arch = "mips64",
-                  target_arch = "powerpc64",
--                 target_arch = "s390x"))] {
-+                 target_arch = "s390x",
-+                 target_arch = "riscv64"))] {
-         mod b64;
-         pub use self::b64::*;
-     } else if #[cfg(any(target_arch = "x86",
--- 
-2.27.0
-
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch
deleted file mode 100644
index 8be8104..0000000
--- a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch
+++ /dev/null
@@ -1,741 +0,0 @@
-From 9d240d05c6e6620f36e4ddbcbcb5862fb3269d9f Mon Sep 17 00:00:00 2001
-From: Ralf Anton Beier <ralf_beier@me.com>
-Date: Sun, 8 Aug 2021 11:09:17 +0200
-Subject: [PATCH 7/8] FIXUP Correct definitions to match musl - libc-0.2.93
-
-https://github.com/rust-lang/libc/pull/1994/commits/5f6a4d9745c79c81be63c708515ab116786554a3
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
----
- .../linux_like/linux/musl/b64/riscv64/mod.rs  | 708 ++++++++----------
- 1 file changed, 311 insertions(+), 397 deletions(-)
-
-diff --git a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
-index 14bae11d0..c37190cca 100644
---- a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
-+++ b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
-@@ -191,403 +191,8 @@ s! {
-         pub l_len: ::off64_t,
-         pub l_pid: ::pid_t,
-     }
--
--    pub struct ip_mreqn {
--        pub imr_multiaddr: ::in_addr,
--        pub imr_address: ::in_addr,
--        pub imr_ifindex: ::c_int,
--    }
- }
- 
--pub const POSIX_FADV_DONTNEED: ::c_int = 4;
--pub const POSIX_FADV_NOREUSE: ::c_int = 5;
--pub const VEOF: usize = 4;
--pub const RTLD_DEEPBIND: ::c_int = 0x8;
--pub const RTLD_GLOBAL: ::c_int = 0x100;
--pub const RTLD_NOLOAD: ::c_int = 0x4;
--pub const TIOCGSOFTCAR: ::c_ulong = 21529;
--pub const TIOCSSOFTCAR: ::c_ulong = 21530;
--pub const TIOCGRS485: ::c_int = 21550;
--pub const TIOCSRS485: ::c_int = 21551;
--pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
--pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
--pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
--pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
--pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
--pub const O_APPEND: ::c_int = 1024;
--pub const O_CREAT: ::c_int = 64;
--pub const O_EXCL: ::c_int = 128;
--pub const O_NOCTTY: ::c_int = 256;
--pub const O_NONBLOCK: ::c_int = 2048;
--pub const O_SYNC: ::c_int = 1052672;
--pub const O_RSYNC: ::c_int = 1052672;
--pub const O_DSYNC: ::c_int = 4096;
--pub const O_FSYNC: ::c_int = 1052672;
--pub const O_NOATIME: ::c_int = 262144;
--pub const O_PATH: ::c_int = 2097152;
--pub const O_TMPFILE: ::c_int = 4259840;
--pub const MAP_GROWSDOWN: ::c_int = 256;
--pub const EDEADLK: ::c_int = 35;
--pub const ENAMETOOLONG: ::c_int = 36;
--pub const ENOLCK: ::c_int = 37;
--pub const ENOSYS: ::c_int = 38;
--pub const ENOTEMPTY: ::c_int = 39;
--pub const ELOOP: ::c_int = 40;
--pub const ENOMSG: ::c_int = 42;
--pub const EIDRM: ::c_int = 43;
--pub const ECHRNG: ::c_int = 44;
--pub const EL2NSYNC: ::c_int = 45;
--pub const EL3HLT: ::c_int = 46;
--pub const EL3RST: ::c_int = 47;
--pub const ELNRNG: ::c_int = 48;
--pub const EUNATCH: ::c_int = 49;
--pub const ENOCSI: ::c_int = 50;
--pub const EL2HLT: ::c_int = 51;
--pub const EBADE: ::c_int = 52;
--pub const EBADR: ::c_int = 53;
--pub const EXFULL: ::c_int = 54;
--pub const ENOANO: ::c_int = 55;
--pub const EBADRQC: ::c_int = 56;
--pub const EBADSLT: ::c_int = 57;
--pub const EMULTIHOP: ::c_int = 72;
--pub const EOVERFLOW: ::c_int = 75;
--pub const ENOTUNIQ: ::c_int = 76;
--pub const EBADFD: ::c_int = 77;
--pub const EBADMSG: ::c_int = 74;
--pub const EREMCHG: ::c_int = 78;
--pub const ELIBACC: ::c_int = 79;
--pub const ELIBBAD: ::c_int = 80;
--pub const ELIBSCN: ::c_int = 81;
--pub const ELIBMAX: ::c_int = 82;
--pub const ELIBEXEC: ::c_int = 83;
--pub const EILSEQ: ::c_int = 84;
--pub const ERESTART: ::c_int = 85;
--pub const ESTRPIPE: ::c_int = 86;
--pub const EUSERS: ::c_int = 87;
--pub const ENOTSOCK: ::c_int = 88;
--pub const EDESTADDRREQ: ::c_int = 89;
--pub const EMSGSIZE: ::c_int = 90;
--pub const EPROTOTYPE: ::c_int = 91;
--pub const ENOPROTOOPT: ::c_int = 92;
--pub const EPROTONOSUPPORT: ::c_int = 93;
--pub const ESOCKTNOSUPPORT: ::c_int = 94;
--pub const EOPNOTSUPP: ::c_int = 95;
--pub const EPFNOSUPPORT: ::c_int = 96;
--pub const EAFNOSUPPORT: ::c_int = 97;
--pub const EADDRINUSE: ::c_int = 98;
--pub const EADDRNOTAVAIL: ::c_int = 99;
--pub const ENETDOWN: ::c_int = 100;
--pub const ENETUNREACH: ::c_int = 101;
--pub const ENETRESET: ::c_int = 102;
--pub const ECONNABORTED: ::c_int = 103;
--pub const ECONNRESET: ::c_int = 104;
--pub const ENOBUFS: ::c_int = 105;
--pub const EISCONN: ::c_int = 106;
--pub const ENOTCONN: ::c_int = 107;
--pub const ESHUTDOWN: ::c_int = 108;
--pub const ETOOMANYREFS: ::c_int = 109;
--pub const ETIMEDOUT: ::c_int = 110;
--pub const ECONNREFUSED: ::c_int = 111;
--pub const EHOSTDOWN: ::c_int = 112;
--pub const EHOSTUNREACH: ::c_int = 113;
--pub const EALREADY: ::c_int = 114;
--pub const EINPROGRESS: ::c_int = 115;
--pub const ESTALE: ::c_int = 116;
--pub const EDQUOT: ::c_int = 122;
--pub const ENOMEDIUM: ::c_int = 123;
--pub const EMEDIUMTYPE: ::c_int = 124;
--pub const ECANCELED: ::c_int = 125;
--pub const ENOKEY: ::c_int = 126;
--pub const EKEYEXPIRED: ::c_int = 127;
--pub const EKEYREVOKED: ::c_int = 128;
--pub const EKEYREJECTED: ::c_int = 129;
--pub const EOWNERDEAD: ::c_int = 130;
--pub const ENOTRECOVERABLE: ::c_int = 131;
--pub const EHWPOISON: ::c_int = 133;
--pub const ERFKILL: ::c_int = 132;
--pub const SOL_SOCKET: ::c_int = 1;
--pub const SO_REUSEADDR: ::c_int = 2;
--pub const SO_TYPE: ::c_int = 3;
--pub const SO_ERROR: ::c_int = 4;
--pub const SO_DONTROUTE: ::c_int = 5;
--pub const SO_BROADCAST: ::c_int = 6;
--pub const SO_SNDBUF: ::c_int = 7;
--pub const SO_RCVBUF: ::c_int = 8;
--pub const SO_SNDBUFFORCE: ::c_int = 32;
--pub const SO_RCVBUFFORCE: ::c_int = 33;
--pub const SO_KEEPALIVE: ::c_int = 9;
--pub const SO_OOBINLINE: ::c_int = 10;
--pub const SO_NO_CHECK: ::c_int = 11;
--pub const SO_PRIORITY: ::c_int = 12;
--pub const SO_LINGER: ::c_int = 13;
--pub const SO_BSDCOMPAT: ::c_int = 14;
--pub const SO_REUSEPORT: ::c_int = 15;
--pub const SO_PASSCRED: ::c_int = 16;
--pub const SO_PEERCRED: ::c_int = 17;
--pub const SO_RCVLOWAT: ::c_int = 18;
--pub const SO_SNDLOWAT: ::c_int = 19;
--pub const SO_RCVTIMEO: ::c_int = 20;
--pub const SO_SNDTIMEO: ::c_int = 21;
--pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
--pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
--pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
--pub const SO_BINDTODEVICE: ::c_int = 25;
--pub const SO_ATTACH_FILTER: ::c_int = 26;
--pub const SO_DETACH_FILTER: ::c_int = 27;
--pub const SO_GET_FILTER: ::c_int = 26;
--pub const SO_PEERNAME: ::c_int = 28;
--pub const SO_TIMESTAMP: ::c_int = 29;
--pub const SO_ACCEPTCONN: ::c_int = 30;
--pub const SO_PEERSEC: ::c_int = 31;
--pub const SO_PASSSEC: ::c_int = 34;
--pub const SO_TIMESTAMPNS: ::c_int = 35;
--pub const SCM_TIMESTAMPNS: ::c_int = 35;
--pub const SO_MARK: ::c_int = 36;
--pub const SO_PROTOCOL: ::c_int = 38;
--pub const SO_DOMAIN: ::c_int = 39;
--pub const SO_RXQ_OVFL: ::c_int = 40;
--pub const SO_WIFI_STATUS: ::c_int = 41;
--pub const SCM_WIFI_STATUS: ::c_int = 41;
--pub const SO_PEEK_OFF: ::c_int = 42;
--pub const SO_NOFCS: ::c_int = 43;
--pub const SO_LOCK_FILTER: ::c_int = 44;
--pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
--pub const SO_BUSY_POLL: ::c_int = 46;
--pub const SO_MAX_PACING_RATE: ::c_int = 47;
--pub const SO_BPF_EXTENSIONS: ::c_int = 48;
--pub const SO_INCOMING_CPU: ::c_int = 49;
--pub const SO_ATTACH_BPF: ::c_int = 50;
--pub const SO_DETACH_BPF: ::c_int = 27;
--pub const SOCK_STREAM: ::c_int = 1;
--pub const SOCK_DGRAM: ::c_int = 2;
--pub const SA_ONSTACK: ::c_int = 134217728;
--pub const SA_SIGINFO: ::c_int = 4;
--pub const SA_NOCLDWAIT: ::c_int = 2;
--pub const SIGTTIN: ::c_int = 21;
--pub const SIGTTOU: ::c_int = 22;
--pub const SIGXCPU: ::c_int = 24;
--pub const SIGXFSZ: ::c_int = 25;
--pub const SIGVTALRM: ::c_int = 26;
--pub const SIGPROF: ::c_int = 27;
--pub const SIGWINCH: ::c_int = 28;
--pub const SIGCHLD: ::c_int = 17;
--pub const SIGBUS: ::c_int = 7;
--pub const SIGUSR1: ::c_int = 10;
--pub const SIGUSR2: ::c_int = 12;
--pub const SIGCONT: ::c_int = 18;
--pub const SIGSTOP: ::c_int = 19;
--pub const SIGTSTP: ::c_int = 20;
--pub const SIGURG: ::c_int = 23;
--pub const SIGIO: ::c_int = 29;
--pub const SIGSYS: ::c_int = 31;
--pub const SIGSTKFLT: ::c_int = 16;
--pub const SIGPOLL: ::c_int = 29;
--pub const SIGPWR: ::c_int = 30;
--pub const SIG_SETMASK: ::c_int = 2;
--pub const SIG_BLOCK: ::c_int = 0;
--pub const SIG_UNBLOCK: ::c_int = 1;
--pub const POLLWRNORM: ::c_short = 256;
--pub const POLLWRBAND: ::c_short = 512;
--pub const O_ASYNC: ::c_int = 8192;
--pub const O_NDELAY: ::c_int = 2048;
--pub const PTRACE_DETACH: ::c_uint = 17;
--pub const EFD_NONBLOCK: ::c_int = 2048;
--pub const F_GETLK: ::c_int = 5;
--pub const F_GETOWN: ::c_int = 9;
--pub const F_SETOWN: ::c_int = 8;
--pub const F_SETLK: ::c_int = 6;
--pub const F_SETLKW: ::c_int = 7;
--pub const F_RDLCK: ::c_int = 0;
--pub const F_WRLCK: ::c_int = 1;
--pub const F_UNLCK: ::c_int = 2;
--pub const F_OFD_GETLK: ::c_int = 36;
--pub const F_OFD_SETLK: ::c_int = 37;
--pub const F_OFD_SETLKW: ::c_int = 38;
--pub const SFD_NONBLOCK: ::c_int = 2048;
--pub const TCSANOW: ::c_int = 0;
--pub const TCSADRAIN: ::c_int = 1;
--pub const TCSAFLUSH: ::c_int = 2;
--pub const TIOCLINUX: ::c_ulong = 21532;
--pub const TIOCGSERIAL: ::c_ulong = 21534;
--pub const TIOCEXCL: ::c_ulong = 21516;
--pub const TIOCNXCL: ::c_ulong = 21517;
--pub const TIOCSCTTY: ::c_ulong = 21518;
--pub const TIOCSTI: ::c_ulong = 21522;
--pub const TIOCMGET: ::c_ulong = 21525;
--pub const TIOCMBIS: ::c_ulong = 21526;
--pub const TIOCMBIC: ::c_ulong = 21527;
--pub const TIOCMSET: ::c_ulong = 21528;
--pub const TIOCCONS: ::c_ulong = 21533;
--pub const TIOCM_ST: ::c_int = 8;
--pub const TIOCM_SR: ::c_int = 16;
--pub const TIOCM_CTS: ::c_int = 32;
--pub const TIOCM_CAR: ::c_int = 64;
--pub const TIOCM_RNG: ::c_int = 128;
--pub const TIOCM_DSR: ::c_int = 256;
--pub const SFD_CLOEXEC: ::c_int = 524288;
--pub const NCCS: usize = 32;
--pub const O_TRUNC: ::c_int = 512;
--pub const O_CLOEXEC: ::c_int = 524288;
--pub const EBFONT: ::c_int = 59;
--pub const ENOSTR: ::c_int = 60;
--pub const ENODATA: ::c_int = 61;
--pub const ETIME: ::c_int = 62;
--pub const ENOSR: ::c_int = 63;
--pub const ENONET: ::c_int = 64;
--pub const ENOPKG: ::c_int = 65;
--pub const EREMOTE: ::c_int = 66;
--pub const ENOLINK: ::c_int = 67;
--pub const EADV: ::c_int = 68;
--pub const ESRMNT: ::c_int = 69;
--pub const ECOMM: ::c_int = 70;
--pub const EPROTO: ::c_int = 71;
--pub const EDOTDOT: ::c_int = 73;
--pub const SA_NODEFER: ::c_int = 1073741824;
--pub const SA_RESETHAND: ::c_int = -2147483648;
--pub const SA_RESTART: ::c_int = 268435456;
--pub const SA_NOCLDSTOP: ::c_int = 1;
--pub const EPOLL_CLOEXEC: ::c_int = 524288;
--pub const EFD_CLOEXEC: ::c_int = 524288;
--pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
--pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
--pub const O_DIRECT: ::c_int = 16384;
--pub const O_DIRECTORY: ::c_int = 65536;
--pub const O_NOFOLLOW: ::c_int = 131072;
--pub const MAP_HUGETLB: ::c_int = 262144;
--pub const MAP_LOCKED: ::c_int = 8192;
--pub const MAP_NORESERVE: ::c_int = 16384;
--pub const MAP_ANON: ::c_int = 32;
--pub const MAP_ANONYMOUS: ::c_int = 32;
--pub const MAP_DENYWRITE: ::c_int = 2048;
--pub const MAP_EXECUTABLE: ::c_int = 4096;
--pub const MAP_POPULATE: ::c_int = 32768;
--pub const MAP_NONBLOCK: ::c_int = 65536;
--pub const MAP_STACK: ::c_int = 131072;
--pub const MAP_SYNC : ::c_int = 0x080000;
--pub const EDEADLOCK: ::c_int = 35;
--pub const EUCLEAN: ::c_int = 117;
--pub const ENOTNAM: ::c_int = 118;
--pub const ENAVAIL: ::c_int = 119;
--pub const EISNAM: ::c_int = 120;
--pub const EREMOTEIO: ::c_int = 121;
--pub const FIOCLEX: ::c_ulong = 21585;
--pub const FIONCLEX: ::c_ulong = 21584;
--pub const FIONBIO: ::c_ulong = 21537;
--pub const MCL_CURRENT: ::c_int = 1;
--pub const MCL_FUTURE: ::c_int = 2;
--pub const SIGSTKSZ: ::size_t = 8192;
--pub const MINSIGSTKSZ: ::size_t = 2048;
--pub const CBAUD: ::tcflag_t = 4111;
--pub const TAB1: ::tcflag_t = 2048;
--pub const TAB2: ::tcflag_t = 4096;
--pub const TAB3: ::tcflag_t = 6144;
--pub const CR1: ::tcflag_t = 512;
--pub const CR2: ::tcflag_t = 1024;
--pub const CR3: ::tcflag_t = 1536;
--pub const FF1: ::tcflag_t = 32768;
--pub const BS1: ::tcflag_t = 8192;
--pub const VT1: ::tcflag_t = 16384;
--pub const VWERASE: usize = 14;
--pub const VREPRINT: usize = 12;
--pub const VSUSP: usize = 10;
--pub const VSTART: usize = 8;
--pub const VSTOP: usize = 9;
--pub const VDISCARD: usize = 13;
--pub const VTIME: usize = 5;
--pub const IXON: ::tcflag_t = 1024;
--pub const IXOFF: ::tcflag_t = 4096;
--pub const ONLCR: ::tcflag_t = 4;
--pub const CSIZE: ::tcflag_t = 48;
--pub const CS6: ::tcflag_t = 16;
--pub const CS7: ::tcflag_t = 32;
--pub const CS8: ::tcflag_t = 48;
--pub const CSTOPB: ::tcflag_t = 64;
--pub const CREAD: ::tcflag_t = 128;
--pub const PARENB: ::tcflag_t = 256;
--pub const PARODD: ::tcflag_t = 512;
--pub const HUPCL: ::tcflag_t = 1024;
--pub const CLOCAL: ::tcflag_t = 2048;
--pub const ECHOKE: ::tcflag_t = 2048;
--pub const ECHOE: ::tcflag_t = 16;
--pub const ECHOK: ::tcflag_t = 32;
--pub const ECHONL: ::tcflag_t = 64;
--pub const ECHOPRT: ::tcflag_t = 1024;
--pub const ECHOCTL: ::tcflag_t = 512;
--pub const ISIG: ::tcflag_t = 1;
--pub const ICANON: ::tcflag_t = 2;
--pub const PENDIN: ::tcflag_t = 16384;
--pub const NOFLSH: ::tcflag_t = 128;
--pub const CIBAUD: ::tcflag_t = 269418496;
--pub const CBAUDEX: ::tcflag_t = 4096;
--pub const VSWTC: usize = 7;
--pub const OLCUC: ::tcflag_t = 2;
--pub const NLDLY: ::tcflag_t = 256;
--pub const CRDLY: ::tcflag_t = 1536;
--pub const TABDLY: ::tcflag_t = 6144;
--pub const BSDLY: ::tcflag_t = 8192;
--pub const FFDLY: ::tcflag_t = 32768;
--pub const VTDLY: ::tcflag_t = 16384;
--pub const XTABS: ::tcflag_t = 6144;
--pub const B0: ::speed_t = 0;
--pub const B50: ::speed_t = 1;
--pub const B75: ::speed_t = 2;
--pub const B110: ::speed_t = 3;
--pub const B134: ::speed_t = 4;
--pub const B150: ::speed_t = 5;
--pub const B200: ::speed_t = 6;
--pub const B300: ::speed_t = 7;
--pub const B600: ::speed_t = 8;
--pub const B1200: ::speed_t = 9;
--pub const B1800: ::speed_t = 10;
--pub const B2400: ::speed_t = 11;
--pub const B4800: ::speed_t = 12;
--pub const B9600: ::speed_t = 13;
--pub const B19200: ::speed_t = 14;
--pub const B38400: ::speed_t = 15;
--pub const EXTA: ::speed_t = 14;
--pub const EXTB: ::speed_t = 15;
--pub const B57600: ::speed_t = 4097;
--pub const B115200: ::speed_t = 4098;
--pub const B230400: ::speed_t = 4099;
--pub const B460800: ::speed_t = 4100;
--pub const B500000: ::speed_t = 4101;
--pub const B576000: ::speed_t = 4102;
--pub const B921600: ::speed_t = 4103;
--pub const B1000000: ::speed_t = 4104;
--pub const B1152000: ::speed_t = 4105;
--pub const B1500000: ::speed_t = 4106;
--pub const B2000000: ::speed_t = 4107;
--pub const B2500000: ::speed_t = 4108;
--pub const B3000000: ::speed_t = 4109;
--pub const B3500000: ::speed_t = 4110;
--pub const B4000000: ::speed_t = 4111;
--pub const VEOL: usize = 11;
--pub const VEOL2: usize = 16;
--pub const VMIN: usize = 6;
--pub const IEXTEN: ::tcflag_t = 32768;
--pub const TOSTOP: ::tcflag_t = 256;
--pub const FLUSHO: ::tcflag_t = 4096;
--pub const EXTPROC: ::tcflag_t = 65536;
--pub const TCGETS: ::c_ulong = 21505;
--pub const TCSETS: ::c_ulong = 21506;
--pub const TCSETSW: ::c_ulong = 21507;
--pub const TCSETSF: ::c_ulong = 21508;
--pub const TCGETA: ::c_ulong = 21509;
--pub const TCSETA: ::c_ulong = 21510;
--pub const TCSETAW: ::c_ulong = 21511;
--pub const TCSETAF: ::c_ulong = 21512;
--pub const TCSBRK: ::c_ulong = 21513;
--pub const TCXONC: ::c_ulong = 21514;
--pub const TCFLSH: ::c_ulong = 21515;
--pub const TIOCINQ: ::c_ulong = 21531;
--pub const TIOCGPGRP: ::c_ulong = 21519;
--pub const TIOCSPGRP: ::c_ulong = 21520;
--pub const TIOCOUTQ: ::c_ulong = 21521;
--pub const TIOCGWINSZ: ::c_ulong = 21523;
--pub const TIOCSWINSZ: ::c_ulong = 21524;
--pub const FIONREAD: ::c_ulong = 21531;
--pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
--pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
- pub const SYS_read: ::c_long = 63;
- pub const SYS_write: ::c_long = 64;
- pub const SYS_close: ::c_long = 57;
-@@ -863,5 +468,314 @@ pub const SYS_pkey_mprotect: ::c_long = 288;
- pub const SYS_pkey_alloc: ::c_long = 289;
- pub const SYS_pkey_free: ::c_long = 290;
- pub const SYS_statx: ::c_long = 291;
--pub const SYS_pidfd_open: ::c_long = 434;
--pub const SYS_clone3: ::c_long = 435;
-+
-+pub const O_APPEND: ::c_int = 1024;
-+pub const O_DIRECT: ::c_int = 0x4000;
-+pub const O_DIRECTORY: ::c_int = 0x10000;
-+pub const O_LARGEFILE: ::c_int = 0;
-+pub const O_NOFOLLOW: ::c_int = 0x20000;
-+pub const O_CREAT: ::c_int = 64;
-+pub const O_EXCL: ::c_int = 128;
-+pub const O_NOCTTY: ::c_int = 256;
-+pub const O_NONBLOCK: ::c_int = 2048;
-+pub const O_SYNC: ::c_int = 1052672;
-+pub const O_RSYNC: ::c_int = 1052672;
-+pub const O_DSYNC: ::c_int = 4096;
-+pub const O_ASYNC: ::c_int = 0x2000;
-+
-+pub const TIOCGRS485: ::c_int = 0x542E;
-+pub const TIOCSRS485: ::c_int = 0x542F;
-+
-+pub const SIGSTKSZ: ::size_t = 8192;
-+pub const MINSIGSTKSZ: ::size_t = 2048;
-+
-+pub const ENAMETOOLONG: ::c_int = 36;
-+pub const ENOLCK: ::c_int = 37;
-+pub const ENOSYS: ::c_int = 38;
-+pub const ENOTEMPTY: ::c_int = 39;
-+pub const ELOOP: ::c_int = 40;
-+pub const ENOMSG: ::c_int = 42;
-+pub const EIDRM: ::c_int = 43;
-+pub const ECHRNG: ::c_int = 44;
-+pub const EL2NSYNC: ::c_int = 45;
-+pub const EL3HLT: ::c_int = 46;
-+pub const EL3RST: ::c_int = 47;
-+pub const ELNRNG: ::c_int = 48;
-+pub const EUNATCH: ::c_int = 49;
-+pub const ENOCSI: ::c_int = 50;
-+pub const EL2HLT: ::c_int = 51;
-+pub const EBADE: ::c_int = 52;
-+pub const EBADR: ::c_int = 53;
-+pub const EXFULL: ::c_int = 54;
-+pub const ENOANO: ::c_int = 55;
-+pub const EBADRQC: ::c_int = 56;
-+pub const EBADSLT: ::c_int = 57;
-+pub const EMULTIHOP: ::c_int = 72;
-+pub const EOVERFLOW: ::c_int = 75;
-+pub const ENOTUNIQ: ::c_int = 76;
-+pub const EBADFD: ::c_int = 77;
-+pub const EBADMSG: ::c_int = 74;
-+pub const EREMCHG: ::c_int = 78;
-+pub const ELIBACC: ::c_int = 79;
-+pub const ELIBBAD: ::c_int = 80;
-+pub const ELIBSCN: ::c_int = 81;
-+pub const ELIBMAX: ::c_int = 82;
-+pub const ELIBEXEC: ::c_int = 83;
-+pub const EILSEQ: ::c_int = 84;
-+pub const ERESTART: ::c_int = 85;
-+pub const ESTRPIPE: ::c_int = 86;
-+pub const EUSERS: ::c_int = 87;
-+pub const ENOTSOCK: ::c_int = 88;
-+pub const EDESTADDRREQ: ::c_int = 89;
-+pub const EMSGSIZE: ::c_int = 90;
-+pub const EPROTOTYPE: ::c_int = 91;
-+pub const ENOPROTOOPT: ::c_int = 92;
-+pub const EPROTONOSUPPORT: ::c_int = 93;
-+pub const ESOCKTNOSUPPORT: ::c_int = 94;
-+pub const EOPNOTSUPP: ::c_int = 95;
-+pub const EPFNOSUPPORT: ::c_int = 96;
-+pub const EAFNOSUPPORT: ::c_int = 97;
-+pub const EADDRINUSE: ::c_int = 98;
-+pub const EADDRNOTAVAIL: ::c_int = 99;
-+pub const ENETDOWN: ::c_int = 100;
-+pub const ENETUNREACH: ::c_int = 101;
-+pub const ENETRESET: ::c_int = 102;
-+pub const ECONNABORTED: ::c_int = 103;
-+pub const ECONNRESET: ::c_int = 104;
-+pub const ENOBUFS: ::c_int = 105;
-+pub const EISCONN: ::c_int = 106;
-+pub const ENOTCONN: ::c_int = 107;
-+pub const ESHUTDOWN: ::c_int = 108;
-+pub const ETOOMANYREFS: ::c_int = 109;
-+pub const ETIMEDOUT: ::c_int = 110;
-+pub const ECONNREFUSED: ::c_int = 111;
-+pub const EHOSTDOWN: ::c_int = 112;
-+pub const EHOSTUNREACH: ::c_int = 113;
-+pub const EALREADY: ::c_int = 114;
-+pub const EINPROGRESS: ::c_int = 115;
-+pub const ESTALE: ::c_int = 116;
-+pub const EDQUOT: ::c_int = 122;
-+pub const ENOMEDIUM: ::c_int = 123;
-+pub const EMEDIUMTYPE: ::c_int = 124;
-+pub const ECANCELED: ::c_int = 125;
-+pub const ENOKEY: ::c_int = 126;
-+pub const EKEYEXPIRED: ::c_int = 127;
-+pub const EKEYREVOKED: ::c_int = 128;
-+pub const EKEYREJECTED: ::c_int = 129;
-+pub const EOWNERDEAD: ::c_int = 130;
-+pub const ENOTRECOVERABLE: ::c_int = 131;
-+pub const EHWPOISON: ::c_int = 133;
-+pub const ERFKILL: ::c_int = 132;
-+
-+pub const SA_ONSTACK: ::c_int = 0x08000000;
-+pub const SA_SIGINFO: ::c_int = 0x00000004;
-+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
-+
-+pub const SIGCHLD: ::c_int = 17;
-+pub const SIGBUS: ::c_int = 7;
-+pub const SIGTTIN: ::c_int = 21;
-+pub const SIGTTOU: ::c_int = 22;
-+pub const SIGXCPU: ::c_int = 24;
-+pub const SIGXFSZ: ::c_int = 25;
-+pub const SIGVTALRM: ::c_int = 26;
-+pub const SIGPROF: ::c_int = 27;
-+pub const SIGWINCH: ::c_int = 28;
-+pub const SIGUSR1: ::c_int = 10;
-+pub const SIGUSR2: ::c_int = 12;
-+pub const SIGCONT: ::c_int = 18;
-+pub const SIGSTOP: ::c_int = 19;
-+pub const SIGTSTP: ::c_int = 20;
-+pub const SIGURG: ::c_int = 23;
-+pub const SIGIO: ::c_int = 29;
-+pub const SIGSYS: ::c_int = 31;
-+pub const SIGSTKFLT: ::c_int = 16;
-+pub const SIGPOLL: ::c_int = 29;
-+pub const SIGPWR: ::c_int = 30;
-+pub const SIG_SETMASK: ::c_int = 2;
-+pub const SIG_BLOCK: ::c_int = 0x000000;
-+pub const SIG_UNBLOCK: ::c_int = 0x01;
-+
-+pub const F_GETLK: ::c_int = 5;
-+pub const F_GETOWN: ::c_int = 9;
-+pub const F_SETLK: ::c_int = 6;
-+pub const F_SETLKW: ::c_int = 7;
-+pub const F_SETOWN: ::c_int = 8;
-+pub const F_OFD_GETLK: ::c_int = 36;
-+pub const F_OFD_SETLK: ::c_int = 37;
-+pub const F_OFD_SETLKW: ::c_int = 38;
-+
-+pub const VEOF: usize = 4;
-+
-+pub const POLLWRNORM: ::c_short = 0x100;
-+pub const POLLWRBAND: ::c_short = 0x200;
-+
-+pub const SOCK_STREAM: ::c_int = 1;
-+pub const SOCK_DGRAM: ::c_int = 2;
-+pub const SOL_SOCKET: ::c_int = 1;
-+pub const SO_REUSEADDR: ::c_int = 2;
-+pub const SO_TYPE: ::c_int = 3;
-+pub const SO_ERROR: ::c_int = 4;
-+pub const SO_DONTROUTE: ::c_int = 5;
-+pub const SO_BROADCAST: ::c_int = 6;
-+pub const SO_SNDBUF: ::c_int = 7;
-+pub const SO_RCVBUF: ::c_int = 8;
-+pub const SO_KEEPALIVE: ::c_int = 9;
-+pub const SO_OOBINLINE: ::c_int = 10;
-+pub const SO_NO_CHECK: ::c_int = 11;
-+pub const SO_PRIORITY: ::c_int = 12;
-+pub const SO_LINGER: ::c_int = 13;
-+pub const SO_BSDCOMPAT: ::c_int = 14;
-+pub const SO_REUSEPORT: ::c_int = 15;
-+pub const SO_ACCEPTCONN: ::c_int = 30;
-+pub const SO_SNDBUFFORCE: ::c_int = 32;
-+pub const SO_RCVBUFFORCE: ::c_int = 33;
-+pub const SO_PROTOCOL: ::c_int = 38;
-+pub const SO_DOMAIN: ::c_int = 39;
-+
-+pub const MAP_ANON: ::c_int = 0x0020;
-+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
-+pub const MAP_DENYWRITE: ::c_int = 0x0800;
-+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
-+pub const MAP_LOCKED: ::c_int = 0x02000;
-+pub const MAP_NORESERVE: ::c_int = 0x04000;
-+pub const MAP_POPULATE: ::c_int = 0x08000;
-+pub const MAP_NONBLOCK: ::c_int = 0x010000;
-+pub const MAP_STACK: ::c_int = 0x020000;
-+pub const MAP_HUGETLB: ::c_int = 0x040000;
-+pub const MAP_SYNC : ::c_int = 0x080000;
-+
-+pub const RLIMIT_NLIMITS: ::c_int = 15;
-+pub const TIOCINQ: ::c_int = ::FIONREAD;
-+pub const MCL_CURRENT: ::c_int = 0x0001;
-+pub const MCL_FUTURE: ::c_int = 0x0002;
-+pub const CBAUD: ::tcflag_t = 0o0010017;
-+pub const TAB1: ::c_int = 0x00000800;
-+pub const TAB2: ::c_int = 0x00001000;
-+pub const TAB3: ::c_int = 0x00001800;
-+pub const CR1: ::c_int = 0x00000200;
-+pub const CR2: ::c_int = 0x00000400;
-+pub const CR3: ::c_int = 0x00000600;
-+pub const FF1: ::c_int = 0x00008000;
-+pub const BS1: ::c_int = 0x00002000;
-+pub const VT1: ::c_int = 0x00004000;
-+pub const VWERASE: usize = 14;
-+pub const VREPRINT: usize = 12;
-+pub const VSUSP: usize = 10;
-+pub const VSTART: usize = 8;
-+pub const VSTOP: usize = 9;
-+pub const VDISCARD: usize = 13;
-+pub const VTIME: usize = 5;
-+pub const IXON: ::tcflag_t = 0x00000400;
-+pub const IXOFF: ::tcflag_t = 0x00001000;
-+pub const ONLCR: ::tcflag_t = 0x4;
-+pub const CSIZE: ::tcflag_t = 0x00000030;
-+pub const CS6: ::tcflag_t = 0x00000010;
-+pub const CS7: ::tcflag_t = 0x00000020;
-+pub const CS8: ::tcflag_t = 0x00000030;
-+pub const CSTOPB: ::tcflag_t = 0x00000040;
-+pub const CREAD: ::tcflag_t = 0x00000080;
-+pub const PARENB: ::tcflag_t = 0x00000100;
-+pub const PARODD: ::tcflag_t = 0x00000200;
-+pub const HUPCL: ::tcflag_t = 0x00000400;
-+pub const CLOCAL: ::tcflag_t = 0x00000800;
-+pub const ECHOKE: ::tcflag_t = 0x00000800;
-+pub const ECHOE: ::tcflag_t = 0x00000010;
-+pub const ECHOK: ::tcflag_t = 0x00000020;
-+pub const ECHONL: ::tcflag_t = 0x00000040;
-+pub const ECHOPRT: ::tcflag_t = 0x00000400;
-+pub const ECHOCTL: ::tcflag_t = 0x00000200;
-+pub const ISIG: ::tcflag_t = 0x00000001;
-+pub const ICANON: ::tcflag_t = 0x00000002;
-+pub const PENDIN: ::tcflag_t = 0x00004000;
-+pub const NOFLSH: ::tcflag_t = 0x00000080;
-+pub const CIBAUD: ::tcflag_t = 0o02003600000;
-+pub const CBAUDEX: ::tcflag_t = 0o010000;
-+pub const VSWTC: usize = 7;
-+pub const OLCUC: ::tcflag_t = 0o000002;
-+pub const NLDLY: ::tcflag_t = 0o000400;
-+pub const CRDLY: ::tcflag_t = 0o003000;
-+pub const TABDLY: ::tcflag_t = 0o014000;
-+pub const BSDLY: ::tcflag_t = 0o020000;
-+pub const FFDLY: ::tcflag_t = 0o100000;
-+pub const VTDLY: ::tcflag_t = 0o040000;
-+pub const XTABS: ::tcflag_t = 0o014000;
-+pub const B57600: ::speed_t = 0o010001;
-+pub const B115200: ::speed_t = 0o010002;
-+pub const B230400: ::speed_t = 0o010003;
-+pub const B460800: ::speed_t = 0o010004;
-+pub const B500000: ::speed_t = 0o010005;
-+pub const B576000: ::speed_t = 0o010006;
-+pub const B921600: ::speed_t = 0o010007;
-+pub const B1000000: ::speed_t = 0o010010;
-+pub const B1152000: ::speed_t = 0o010011;
-+pub const B1500000: ::speed_t = 0o010012;
-+pub const B2000000: ::speed_t = 0o010013;
-+pub const B2500000: ::speed_t = 0o010014;
-+pub const B3000000: ::speed_t = 0o010015;
-+pub const B3500000: ::speed_t = 0o010016;
-+pub const B4000000: ::speed_t = 0o010017;
-+
-+pub const FIOCLEX: ::c_int = 0x5451;
-+pub const FIONCLEX: ::c_int = 0x5450;
-+pub const FIONBIO: ::c_int = 0x5421;
-+pub const EDEADLK: ::c_int = 35;
-+pub const EDEADLOCK: ::c_int = EDEADLK;
-+pub const SO_PASSCRED: ::c_int = 16;
-+pub const SO_PEERCRED: ::c_int = 17;
-+pub const SO_RCVLOWAT: ::c_int = 18;
-+pub const SO_SNDLOWAT: ::c_int = 19;
-+pub const SO_RCVTIMEO: ::c_int = 20;
-+pub const SO_SNDTIMEO: ::c_int = 21;
-+pub const EXTPROC: ::tcflag_t = 0x00010000;
-+pub const VEOL: usize = 11;
-+pub const VEOL2: usize = 16;
-+pub const VMIN: usize = 6;
-+pub const IEXTEN: ::tcflag_t = 0x00008000;
-+pub const TOSTOP: ::tcflag_t = 0x00000100;
-+pub const FLUSHO: ::tcflag_t = 0x00001000;
-+pub const TCGETS: ::c_int = 0x5401;
-+pub const TCSETS: ::c_int = 0x5402;
-+pub const TCSETSW: ::c_int = 0x5403;
-+pub const TCSETSF: ::c_int = 0x5404;
-+pub const TCGETA: ::c_int = 0x5405;
-+pub const TCSETA: ::c_int = 0x5406;
-+pub const TCSETAW: ::c_int = 0x5407;
-+pub const TCSETAF: ::c_int = 0x5408;
-+pub const TCSBRK: ::c_int = 0x5409;
-+pub const TCXONC: ::c_int = 0x540A;
-+pub const TCFLSH: ::c_int = 0x540B;
-+pub const TIOCGSOFTCAR: ::c_int = 0x5419;
-+pub const TIOCSSOFTCAR: ::c_int = 0x541A;
-+pub const TIOCLINUX: ::c_int = 0x541C;
-+pub const TIOCGSERIAL: ::c_int = 0x541E;
-+pub const TIOCEXCL: ::c_int = 0x540C;
-+pub const TIOCNXCL: ::c_int = 0x540D;
-+pub const TIOCSCTTY: ::c_int = 0x540E;
-+pub const TIOCGPGRP: ::c_int = 0x540F;
-+pub const TIOCSPGRP: ::c_int = 0x5410;
-+pub const TIOCOUTQ: ::c_int = 0x5411;
-+pub const TIOCSTI: ::c_int = 0x5412;
-+pub const TIOCGWINSZ: ::c_int = 0x5413;
-+pub const TIOCSWINSZ: ::c_int = 0x5414;
-+pub const TIOCMGET: ::c_int = 0x5415;
-+pub const TIOCMBIS: ::c_int = 0x5416;
-+pub const TIOCMBIC: ::c_int = 0x5417;
-+pub const TIOCMSET: ::c_int = 0x5418;
-+pub const FIONREAD: ::c_int = 0x541B;
-+pub const TIOCCONS: ::c_int = 0x541D;
-+
-+pub const TIOCM_LE: ::c_int = 0x001;
-+pub const TIOCM_DTR: ::c_int = 0x002;
-+pub const TIOCM_RTS: ::c_int = 0x004;
-+pub const TIOCM_ST: ::c_int = 0x008;
-+pub const TIOCM_SR: ::c_int = 0x010;
-+pub const TIOCM_CTS: ::c_int = 0x020;
-+pub const TIOCM_CAR: ::c_int = 0x040;
-+pub const TIOCM_RNG: ::c_int = 0x080;
-+pub const TIOCM_DSR: ::c_int = 0x100;
-+pub const TIOCM_CD: ::c_int = TIOCM_CAR;
-+pub const TIOCM_RI: ::c_int = TIOCM_RNG;
-+
-+extern "C" {
-+    pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
-+}
--- 
-2.27.0
-
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch
deleted file mode 100644
index 23bb3af..0000000
--- a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 2b1c373f9a3341e8926d6be8d7cdcedc1fc6fca3 Mon Sep 17 00:00:00 2001
-From: Ralf Anton Beier <ralf_beier@me.com>
-Date: Sun, 8 Aug 2021 11:19:24 +0200
-Subject: [PATCH 8/8] Update checksums for modified files for rust 1.54.0 and
- libc-0.2.93
-
-Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
----
- vendor/libc-0.2.93/.cargo-checksum.json | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/vendor/libc-0.2.93/.cargo-checksum.json b/vendor/libc-0.2.93/.cargo-checksum.json
-index 104eaa0ea..48576fb81 100644
---- a/vendor/libc-0.2.93/.cargo-checksum.json
-+++ b/vendor/libc-0.2.93/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"c65ce090d2ce0144faeb8d9ed9039d698ab19d92eee1121ef234238041ec6153","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"770bf9c7c799dd3536b1e716cb42e7b5569cb4721f02e1d67dd2b932718dea2c","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"e992965c141308f1ab38c9646b6197b308143dedd2771b6df2f12eb5909ce663","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"d4f7452c0fe720f3a961b918b74ec86d19cef33e6b4aac08efbbad6f6d818e09","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"6a4ce300da0d2b0db04b18548286603ffe4b47d679a41cf60f1902895894aa1f","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"46d5d061c7a74cbc09cbdfb3bee9a600867bf4e04c0e4d0ca6c817e6033b32e1","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"cc6878dd130c3f255418e4da74992ae9ba6a3cdb0530772de76c518077d3b12a","src/unix/bsd/apple/mod.rs":"3fe42dd50ccc476255ebe7c1f5bf65950f3d1b5a62fbf8ac91c8c29c945781bc","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"06e3e4a8972f367275c7d1226a47cf86db13afad74a22344d91d1ec2ab043bd9","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"14f0bd6693967d4fedec904f7042bd51f2138cb843ec4df18c911b357417cdd2","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"6523af60c0e4937ad374003c1653e9e721f5b6f11572c747732f76522d07d034","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"e777354db19a183fba4c616cb8c72ac88839528c5e2095bbdf7e47e8e5d2148e","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"f3dc5dc3ca3e9cf999ee73222c4fc2200a06f92ce6e9dd6fc357d019bb4999a5","src/unix/bsd/freebsdlike/freebsd/mod.rs":"154dfc0825d39fb19fcf87ccc43bb3923d7faec1eac7b50464a6106dc44a32a8","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"6132aa0973454379674ea6cbc77e6eace1e1032dd9f38182071388a036f1bc08","src/unix/bsd/freebsdlike/mod.rs":"52a793977374d138c46e62b967e97dc5df06ef143701ffd8f4563658cbe77cf2","src/unix/bsd/mod.rs":"33df9bc4e6f92f78842defe59d9ac2c2afa0942ba990134ec0bf57aa76faa798","src/unix/bsd/netbsdlike/mod.rs":"c640eb7106c8af2ffee0644ea715528da3a8124fd2c9ca6ac617ab9eebc88787","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"b38fc046f9a40fea28bd26328b96629f4d5d63d7524936bd6af1865d401a8716","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"ff10f80b8182dc3a8fa5739bddd5362a2280f396b09d2da6c8adbf596d9643b0","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"135509edeaf3fb3f102d89d51ff1a8f82323497336a8dc7e1f0f23b5c2434b73","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/mod.rs":"04372b08f57319b08002c1a5e1b200723ed1293754ea5b7d12beafa735c0c2db","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"e59b7fd65f68f8e857eec39e0c03bac1d3af6ddc26c9ba58494336b83659bb9b","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"34d74b3f86953c4bdba363b7b629fd3fc72d3842260ba208f91b9dc6024634ff","src/unix/haiku/native.rs":"7f43160df105a83a8527c59ad99b2578f479837a7c7d8bcdd5ee6607803e49f4","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"d611801c875a1066ff596ba813a80c1689aa54489bbd5bd8af4610c786d97a36","src/unix/linux_like/android/b32/mod.rs":"87c46d1ce6899df80b5eea1ca4fd30bc437028e281ea16b658209c2a9b4edbec","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"db23f94bc3ed46a0967dde748f0d4566fc885cc6171d0555007f3398ff99a708","src/unix/linux_like/android/b64/mod.rs":"e3078e856e43fde9b57d8a5aa840a590f2e18517a3e8de23e9c2a3d798596f43","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"e84176d838e663d351450bad218715db1fafbb531e47ea0e262cbb45829dae89","src/unix/linux_like/android/mod.rs":"ead1d5880fa288e11470e560e119c29b16198a0a1bbd853c51e10b1bf4db7583","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"d4c59585ca4802029a41e269092ccfa20f982b352a74abc54d3e7edc3102fb05","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"ff1fe8fad4ea15d9bec3db25efcfcb4939190c5189f86cfa4d05825aa8c10956","src/unix/linux_like/linux/arch/mips/mod.rs":"e4a980b002105aaa057eb6568e1e2c6168ade5c00e13a31ef67e316ddffdb900","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"ded708124ee610267d011dee31fb02d1ec697c334aa822776ec95a7ddf6fc541","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"07adf9f4b96854062db518aaf08521fde0ad4a21a5c049efccba437bd97b2b5a","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"1cb5c0c9df3af2bbe131a91593583259fac9118931744c8435e197a394eb0462","src/unix/linux_like/linux/gnu/b32/mod.rs":"1e05278ab6295e95165d0fab1698bdc82a511bcbda3250093af4e5edf08991f8","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"9c628cd97806181dc4d34b072f63fe1eb42f08108712002e0628ffe27f2fa93f","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"1bcec269a8416ccc48a384ca5765eaaa23f30f39f32311f50008ef4eeadafb2f","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"5317dbf2323577b89370bbee3894882b89d8333176db4f7b271ddc2f036ef43c","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c3730792dabcc166d8fd22929ef2633d49bc626875382dfcd401e8e125fb7a84","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"68bcb71bbfccb4e8648948e494366d94767ce96f36daab9c1329375cdd32a459","src/unix/linux_like/linux/gnu/b64/mod.rs":"7bf5c9813032db77b964ccb90bdce15236ae9ea06ea185595278ea4565c21b7b","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"18edaa89c9746125863ff53182e0ef32cb1e1612e1ed9a2672558a9de85440e9","src/unix/linux_like/linux/gnu/b64/s390x.rs":"d9bb4e524e70d6fef49e0f77d89a92f478fd95d9a1aea32f4dc845275a7465d4","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"26fda11bdce99372c2c246e60866b56d98beb9fb49a2f6b69347ecfd03d18255","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"5a5ce7c5c92f60d8900dce63d363a38f3126aaf5be981710e172bec96ef95ac6","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"08c8e94116dd5bc3e78bd9118647169d6decfbab4b15c6d4f2fc378c2d802cd1","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"8fbd8e1d91f9e748755e11be5c385d9ba2c03acff741b4f75100d679cbcc44bf","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"273f58d7483c7b562725fba71ff0b1f9685258c040f7f4830032aa5f42eced23","src/unix/linux_like/linux/musl/b32/hexagon.rs":"a8811791809672be8338e6e27d1c4fcf383c2f26585be8bf9ab2923b219de032","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"33dfff5266bbc50c36d93e7b15381b9b9245031aa49e3db811b8984dd81851c0","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"bdfed99eb8beb541cc026a86eb99622687eecf603deb35204fee70f5464ad225","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"c34c06d1a2f02a761825a49ad6b37393c4f31afb9a3347de0a0c61979634b9b2","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"3f01dbb2155877208ba58908396f75c7d3f57015662acb46cb19be6b2e81310b","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d18abc0aeba2e26342bf3416a4dba0836db2bb0ee013b0a39629475cf8640289","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"028d235cb9d5af1b80e287b52373640532752ddce4812dee831948c6db4d434b","src/unix/linux_like/linux/musl/b64/s390x.rs":"38bbf839c22a07a46fd5b195812cf8a4d2966611a62213a5b4972422a7e5b8cc","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"aeb436f2575e4e34eb88b597923e480e1e8214b1c8be7f1e41d63c8a0dd9c78b","src/unix/linux_like/linux/musl/mod.rs":"1a8ff52e8f3c52ad53a0d423fae3d79a8f7e07a0b83d5ff9b759eb2a421bda9a","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"9b691eeec0a9bf7b2abb87e09062d2c148d18e11c96ecad0edd0b74d1d0509fd","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"18753a99b820d69e062e3ba22a63fa86577b6dcc42f740479c7be1a4c658e1be","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"4320e8731666e30f850d45d51cd59311e23cd22dad5d04b3be98a6419e70e0a1","src/unix/linux_like/linux/uclibc/mod.rs":"0438ffcfa951516cbfdbd7bdc31ccee06614d5150fd271ca6ba9ba06890041ad","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"bb31053d6403091e11f95ac2203982f279f8b984a19adf30796878c45fdd8c25","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"02e21c0550a423a3f6db0a0af6a0f37cf5937feb2562a490e0ad0e09a8d9fc77","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"35e17aa16019a82bb1667c43a97ecef151c16ecb5f489793adac918e704e21de","src/unix/mod.rs":"a5fbb90b99244f04bb37dc7d79d56261f5c5a41e9a09b7958aed9a2b4882eae8","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/mod.rs":"407fe7e3c77f4c4c129788b3888a7da5d4b7b818ed3e96abb8de8cd780f83fb6","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/newlib/xtensa/mod.rs":"08b314a27797ee27989f48f5a0e66e0d73670071ceabd341076cdce7ea67201c","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"aa2fdf95ead6cde2937f2f0e7e0c72fdf2a6827d8b1bac647d3ca79e4d409348","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"e01acc1b176e15268ac0ca4d1de50bf372ba80a465af35cd612c8f7e702baf92","src/unix/solarish/mod.rs":"be9f7a37d17a7616f6dbebd871fe4ae83612af6b582ebf153284cff1e7162334","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"9caf6ff3faad5b39c9deb8eae497a61ef15aa5e03aa409a16299e700240c3b63","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"69460feb515652ec62ff258ccba4ed46738ee472938e78a3c34cbbf7a0e865c1","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"a0752b528fe6239536b9e915806326b20dc06183f078592b7394a10f5f56a621","src/windows/msvc.rs":"ea6d87a6a9cd668261b1c043e7c36cf599e80b5d09f6e4502e85daa4797c7927","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41"}
-\ No newline at end of file
-+{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"c65ce090d2ce0144faeb8d9ed9039d698ab19d92eee1121ef234238041ec6153","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"770bf9c7c799dd3536b1e716cb42e7b5569cb4721f02e1d67dd2b932718dea2c","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"e992965c141308f1ab38c9646b6197b308143dedd2771b6df2f12eb5909ce663","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"d4f7452c0fe720f3a961b918b74ec86d19cef33e6b4aac08efbbad6f6d818e09","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"6a4ce300da0d2b0db04b18548286603ffe4b47d679a41cf60f1902895894aa1f","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"46d5d061c7a74cbc09cbdfb3bee9a600867bf4e04c0e4d0ca6c817e6033b32e1","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"cc6878dd130c3f255418e4da74992ae9ba6a3cdb0530772de76c518077d3b12a","src/unix/bsd/apple/mod.rs":"3fe42dd50ccc476255ebe7c1f5bf65950f3d1b5a62fbf8ac91c8c29c945781bc","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"06e3e4a8972f367275c7d1226a47cf86db13afad74a22344d91d1ec2ab043bd9","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"14f0bd6693967d4fedec904f7042bd51f2138cb843ec4df18c911b357417cdd2","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"6523af60c0e4937ad374003c1653e9e721f5b6f11572c747732f76522d07d034","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"e777354db19a183fba4c616cb8c72ac88839528c5e2095bbdf7e47e8e5d2148e","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"f3dc5dc3ca3e9cf999ee73222c4fc2200a06f92ce6e9dd6fc357d019bb4999a5","src/unix/bsd/freebsdlike/freebsd/mod.rs":"154dfc0825d39fb19fcf87ccc43bb3923d7faec1eac7b50464a6106dc44a32a8","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"6132aa0973454379674ea6cbc77e6eace1e1032dd9f38182071388a036f1bc08","src/unix/bsd/freebsdlike/mod.rs":"52a793977374d138c46e62b967e97dc5df06ef143701ffd8f4563658cbe77cf2","src/unix/bsd/mod.rs":"33df9bc4e6f92f78842defe59d9ac2c2afa0942ba990134ec0bf57aa76faa798","src/unix/bsd/netbsdlike/mod.rs":"c640eb7106c8af2ffee0644ea715528da3a8124fd2c9ca6ac617ab9eebc88787","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"b38fc046f9a40fea28bd26328b96629f4d5d63d7524936bd6af1865d401a8716","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"ff10f80b8182dc3a8fa5739bddd5362a2280f396b09d2da6c8adbf596d9643b0","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"135509edeaf3fb3f102d89d51ff1a8f82323497336a8dc7e1f0f23b5c2434b73","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/mod.rs":"04372b08f57319b08002c1a5e1b200723ed1293754ea5b7d12beafa735c0c2db","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"e59b7fd65f68f8e857eec39e0c03bac1d3af6ddc26c9ba58494336b83659bb9b","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"34d74b3f86953c4bdba363b7b629fd3fc72d3842260ba208f91b9dc6024634ff","src/unix/haiku/native.rs":"7f43160df105a83a8527c59ad99b2578f479837a7c7d8bcdd5ee6607803e49f4","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"d611801c875a1066ff596ba813a80c1689aa54489bbd5bd8af4610c786d97a36","src/unix/linux_like/android/b32/mod.rs":"87c46d1ce6899df80b5eea1ca4fd30bc437028e281ea16b658209c2a9b4edbec","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"db23f94bc3ed46a0967dde748f0d4566fc885cc6171d0555007f3398ff99a708","src/unix/linux_like/android/b64/mod.rs":"e3078e856e43fde9b57d8a5aa840a590f2e18517a3e8de23e9c2a3d798596f43","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"e84176d838e663d351450bad218715db1fafbb531e47ea0e262cbb45829dae89","src/unix/linux_like/android/mod.rs":"ead1d5880fa288e11470e560e119c29b16198a0a1bbd853c51e10b1bf4db7583","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"d4c59585ca4802029a41e269092ccfa20f982b352a74abc54d3e7edc3102fb05","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"ff1fe8fad4ea15d9bec3db25efcfcb4939190c5189f86cfa4d05825aa8c10956","src/unix/linux_like/linux/arch/mips/mod.rs":"e4a980b002105aaa057eb6568e1e2c6168ade5c00e13a31ef67e316ddffdb900","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"ded708124ee610267d011dee31fb02d1ec697c334aa822776ec95a7ddf6fc541","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"07adf9f4b96854062db518aaf08521fde0ad4a21a5c049efccba437bd97b2b5a","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"1cb5c0c9df3af2bbe131a91593583259fac9118931744c8435e197a394eb0462","src/unix/linux_like/linux/gnu/b32/mod.rs":"1e05278ab6295e95165d0fab1698bdc82a511bcbda3250093af4e5edf08991f8","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"9c628cd97806181dc4d34b072f63fe1eb42f08108712002e0628ffe27f2fa93f","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"1bcec269a8416ccc48a384ca5765eaaa23f30f39f32311f50008ef4eeadafb2f","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"5317dbf2323577b89370bbee3894882b89d8333176db4f7b271ddc2f036ef43c","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c3730792dabcc166d8fd22929ef2633d49bc626875382dfcd401e8e125fb7a84","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"68bcb71bbfccb4e8648948e494366d94767ce96f36daab9c1329375cdd32a459","src/unix/linux_like/linux/gnu/b64/mod.rs":"7bf5c9813032db77b964ccb90bdce15236ae9ea06ea185595278ea4565c21b7b","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"18edaa89c9746125863ff53182e0ef32cb1e1612e1ed9a2672558a9de85440e9","src/unix/linux_like/linux/gnu/b64/s390x.rs":"d9bb4e524e70d6fef49e0f77d89a92f478fd95d9a1aea32f4dc845275a7465d4","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"26fda11bdce99372c2c246e60866b56d98beb9fb49a2f6b69347ecfd03d18255","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"5a5ce7c5c92f60d8900dce63d363a38f3126aaf5be981710e172bec96ef95ac6","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"08c8e94116dd5bc3e78bd9118647169d6decfbab4b15c6d4f2fc378c2d802cd1","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"8fbd8e1d91f9e748755e11be5c385d9ba2c03acff741b4f75100d679cbcc44bf","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"273f58d7483c7b562725fba71ff0b1f9685258c040f7f4830032aa5f42eced23","src/unix/linux_like/linux/musl/b32/hexagon.rs":"a8811791809672be8338e6e27d1c4fcf383c2f26585be8bf9ab2923b219de032","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"33dfff5266bbc50c36d93e7b15381b9b9245031aa49e3db811b8984dd81851c0","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"bdfed99eb8beb541cc026a86eb99622687eecf603deb35204fee70f5464ad225","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"c34c06d1a2f02a761825a49ad6b37393c4f31afb9a3347de0a0c61979634b9b2","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"3f01dbb2155877208ba58908396f75c7d3f57015662acb46cb19be6b2e81310b","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d847206d9f2d594c8febe780a938cdccf40d985dafc11e90f235947735a09bac","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"028d235cb9d5af1b80e287b52373640532752ddce4812dee831948c6db4d434b","src/unix/linux_like/linux/musl/b64/s390x.rs":"38bbf839c22a07a46fd5b195812cf8a4d2966611a62213a5b4972422a7e5b8cc","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"aeb436f2575e4e34eb88b597923e480e1e8214b1c8be7f1e41d63c8a0dd9c78b","src/unix/linux_like/linux/musl/mod.rs":"bc727b710a7ba23980ad13ad95d360070759074ff5e8ee4522501d256472862e","src/unix/linux_like/linux/musl/b64/riscv64/mod.rs":"e0591197f0f9ebee3addb1a439f3db4d403712a859e76066d0484ee98a9ff724","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"9b691eeec0a9bf7b2abb87e09062d2c148d18e11c96ecad0edd0b74d1d0509fd","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"18753a99b820d69e062e3ba22a63fa86577b6dcc42f740479c7be1a4c658e1be","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"4320e8731666e30f850d45d51cd59311e23cd22dad5d04b3be98a6419e70e0a1","src/unix/linux_like/linux/uclibc/mod.rs":"0438ffcfa951516cbfdbd7bdc31ccee06614d5150fd271ca6ba9ba06890041ad","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"bb31053d6403091e11f95ac2203982f279f8b984a19adf30796878c45fdd8c25","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"02e21c0550a423a3f6db0a0af6a0f37cf5937feb2562a490e0ad0e09a8d9fc77","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"35e17aa16019a82bb1667c43a97ecef151c16ecb5f489793adac918e704e21de","src/unix/mod.rs":"a5fbb90b99244f04bb37dc7d79d56261f5c5a41e9a09b7958aed9a2b4882eae8","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/mod.rs":"407fe7e3c77f4c4c129788b3888a7da5d4b7b818ed3e96abb8de8cd780f83fb6","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/newlib/xtensa/mod.rs":"08b314a27797ee27989f48f5a0e66e0d73670071ceabd341076cdce7ea67201c","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"aa2fdf95ead6cde2937f2f0e7e0c72fdf2a6827d8b1bac647d3ca79e4d409348","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"e01acc1b176e15268ac0ca4d1de50bf372ba80a465af35cd612c8f7e702baf92","src/unix/solarish/mod.rs":"be9f7a37d17a7616f6dbebd871fe4ae83612af6b582ebf153284cff1e7162334","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"9caf6ff3faad5b39c9deb8eae497a61ef15aa5e03aa409a16299e700240c3b63","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"69460feb515652ec62ff258ccba4ed46738ee472938e78a3c34cbbf7a0e865c1","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"a0752b528fe6239536b9e915806326b20dc06183f078592b7394a10f5f56a621","src/windows/msvc.rs":"ea6d87a6a9cd668261b1c043e7c36cf599e80b5d09f6e4502e85daa4797c7927","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41"}
-\ No newline at end of file
--- 
-2.27.0
-
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs/0005-Add-base-definitions-for-riscv64-musl-libc.patch b/poky/meta/recipes-devtools/rust/libstd-rs/0005-Add-base-definitions-for-riscv64-musl-libc.patch
new file mode 100644
index 0000000..180e2b5
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs/0005-Add-base-definitions-for-riscv64-musl-libc.patch
@@ -0,0 +1,862 @@
+From 4e188d047dee33a19902113a3c90cdf1d8310a9e Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:05:06 +0200
+Subject: [PATCH 5/8] Add base definitions for riscv64 + musl
+
+https://github.com/rust-lang/libc/pull/1994/commits/030a07761f61f3293d53752e60edbd330a9d718d
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ .../src/unix/linux_like/linux/musl/b64/mod.rs |   3 +
+ .../linux_like/linux/musl/b64/riscv64/mod.rs  | 867 ++++++++++++++++++
+ 2 files changed, 870 insertions(+)
+ create mode 100644 vendor/libc-0.2.98/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
+@@ -163,6 +163,9 @@ cfg_if! {
+     } else if #[cfg(any(target_arch = "x86_64"))] {
+         mod x86_64;
+         pub use self::x86_64::*;
++    } else if #[cfg(any(target_arch = "riscv64"))] {
++        mod riscv64;
++        pub use self::riscv64::*;
+     } else {
+         // Unknown target_arch
+     }
+--- /dev/null
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -0,0 +1,832 @@
++//! RISC-V-specific definitions for 64-bit linux-like values
++
++pub type c_char = u8;
++pub type c_long = i64;
++pub type c_ulong = u64;
++pub type wchar_t = ::c_int;
++
++pub type nlink_t = ::c_uint;
++pub type blksize_t = ::c_int;
++pub type fsblkcnt64_t = ::c_ulong;
++pub type fsfilcnt64_t = ::c_ulong;
++pub type suseconds_t = i64;
++pub type __u64 = ::c_ulonglong;
++
++s! {
++    pub struct pthread_attr_t {
++        __size: [::c_ulong; 7],
++    }
++
++    pub struct stat {
++        pub st_dev: ::dev_t,
++        pub st_ino: ::ino_t,
++        pub st_mode: ::mode_t,
++        pub st_nlink: ::nlink_t,
++        pub st_uid: ::uid_t,
++        pub st_gid: ::gid_t,
++        pub st_rdev: ::dev_t,
++        pub __pad1: ::dev_t,
++        pub st_size: ::off_t,
++        pub st_blksize: ::blksize_t,
++        pub __pad2: ::c_int,
++        pub st_blocks: ::blkcnt_t,
++        pub st_atime: ::time_t,
++        pub st_atime_nsec: ::c_long,
++        pub st_mtime: ::time_t,
++        pub st_mtime_nsec: ::c_long,
++        pub st_ctime: ::time_t,
++        pub st_ctime_nsec: ::c_long,
++        __unused: [::c_int; 2usize],
++    }
++
++    pub struct stat64 {
++        pub st_dev: ::dev_t,
++        pub st_ino: ::ino64_t,
++        pub st_mode: ::mode_t,
++        pub st_nlink: ::nlink_t,
++        pub st_uid: ::uid_t,
++        pub st_gid: ::gid_t,
++        pub st_rdev: ::dev_t,
++        pub __pad1: ::dev_t,
++        pub st_size: ::off64_t,
++        pub st_blksize: ::blksize_t,
++        pub __pad2: ::c_int,
++        pub st_blocks: ::blkcnt_t,
++        pub st_atime: ::time_t,
++        pub st_atime_nsec: ::c_long,
++        pub st_mtime: ::time_t,
++        pub st_mtime_nsec: ::c_long,
++        pub st_ctime: ::time_t,
++        pub st_ctime_nsec: ::c_long,
++        __unused: [::c_int; 2],
++    }
++
++    pub struct statfs {
++        pub f_type: ::c_long,
++        pub f_bsize: ::c_long,
++        pub f_blocks: ::fsblkcnt_t,
++        pub f_bfree: ::fsblkcnt_t,
++        pub f_bavail: ::fsblkcnt_t,
++        pub f_files: ::fsfilcnt_t,
++        pub f_ffree: ::fsfilcnt_t,
++        pub f_fsid: ::fsid_t,
++        pub f_namelen: ::c_long,
++        pub f_frsize: ::c_long,
++        pub f_flags: ::c_long,
++        pub f_spare: [::c_long; 4],
++    }
++
++    pub struct statfs64 {
++        pub f_type: ::c_long,
++        pub f_bsize: ::c_long,
++        pub f_blocks: ::fsblkcnt64_t,
++        pub f_bfree: ::fsblkcnt64_t,
++        pub f_bavail: ::fsblkcnt64_t,
++        pub f_files: ::fsfilcnt64_t,
++        pub f_ffree: ::fsfilcnt64_t,
++        pub f_fsid: ::fsid_t,
++        pub f_namelen: ::c_long,
++        pub f_frsize: ::c_long,
++        pub f_flags: ::c_long,
++        pub f_spare: [::c_long; 4],
++    }
++
++    pub struct statvfs {
++        pub f_bsize: ::c_ulong,
++        pub f_frsize: ::c_ulong,
++        pub f_blocks: ::fsblkcnt_t,
++        pub f_bfree: ::fsblkcnt_t,
++        pub f_bavail: ::fsblkcnt_t,
++        pub f_files: ::fsfilcnt_t,
++        pub f_ffree: ::fsfilcnt_t,
++        pub f_favail: ::fsfilcnt_t,
++        pub f_fsid: ::c_ulong,
++        pub f_flag: ::c_ulong,
++        pub f_namemax: ::c_ulong,
++        pub __f_spare: [::c_int; 6],
++    }
++
++    pub struct statvfs64 {
++        pub f_bsize: ::c_ulong,
++        pub f_frsize: ::c_ulong,
++        pub f_blocks: ::fsblkcnt64_t,
++        pub f_bfree: ::fsblkcnt64_t,
++        pub f_bavail: ::fsblkcnt64_t,
++        pub f_files: ::fsfilcnt64_t,
++        pub f_ffree: ::fsfilcnt64_t,
++        pub f_favail: ::fsfilcnt64_t,
++        pub f_fsid: ::c_ulong,
++        pub f_flag: ::c_ulong,
++        pub f_namemax: ::c_ulong,
++        pub __f_spare: [::c_int; 6],
++    }
++
++    pub struct siginfo_t {
++        pub si_signo: ::c_int,
++        pub si_errno: ::c_int,
++        pub si_code: ::c_int,
++        #[doc(hidden)]
++        #[deprecated(
++            since="0.2.54",
++            note="Please leave a comment on \
++                  https://github.com/rust-lang/libc/pull/1316 if you're using \
++                  this field"
++        )]
++        pub _pad: [::c_int; 29],
++        _align: [u64; 0],
++    }
++
++    pub struct stack_t {
++        pub ss_sp: *mut ::c_void,
++        pub ss_flags: ::c_int,
++        pub ss_size: ::size_t,
++    }
++
++    pub struct sigaction {
++        pub sa_sigaction: ::sighandler_t,
++        pub sa_mask: ::sigset_t,
++        pub sa_flags: ::c_int,
++        pub sa_restorer: ::Option<unsafe extern "C" fn()>,
++    }
++
++    pub struct ipc_perm {
++        pub __key: ::key_t,
++        pub uid: ::uid_t,
++        pub gid: ::gid_t,
++        pub cuid: ::uid_t,
++        pub cgid: ::gid_t,
++        pub mode: ::c_ushort,
++        __pad1: ::c_ushort,
++        pub __seq: ::c_ushort,
++        __pad2: ::c_ushort,
++        __unused1: ::c_ulong,
++        __unused2: ::c_ulong,
++    }
++
++    pub struct shmid_ds {
++        pub shm_perm: ::ipc_perm,
++        pub shm_segsz: ::size_t,
++        pub shm_atime: ::time_t,
++        pub shm_dtime: ::time_t,
++        pub shm_ctime: ::time_t,
++        pub shm_cpid: ::pid_t,
++        pub shm_lpid: ::pid_t,
++        pub shm_nattch: ::shmatt_t,
++        __unused5: ::c_ulong,
++        __unused6: ::c_ulong,
++    }
++
++    pub struct flock {
++        pub l_type: ::c_short,
++        pub l_whence: ::c_short,
++        pub l_start: ::off_t,
++        pub l_len: ::off_t,
++        pub l_pid: ::pid_t,
++    }
++
++    pub struct flock64 {
++        pub l_type: ::c_short,
++        pub l_whence: ::c_short,
++        pub l_start: ::off64_t,
++        pub l_len: ::off64_t,
++        pub l_pid: ::pid_t,
++    }
++
++    pub struct ip_mreqn {
++        pub imr_multiaddr: ::in_addr,
++        pub imr_address: ::in_addr,
++        pub imr_ifindex: ::c_int,
++    }
++}
++
++pub const POSIX_FADV_DONTNEED: ::c_int = 4;
++pub const POSIX_FADV_NOREUSE: ::c_int = 5;
++pub const VEOF: usize = 4;
++pub const RTLD_DEEPBIND: ::c_int = 0x8;
++pub const RTLD_GLOBAL: ::c_int = 0x100;
++pub const RTLD_NOLOAD: ::c_int = 0x4;
++pub const TIOCGSOFTCAR: ::c_ulong = 21529;
++pub const TIOCSSOFTCAR: ::c_ulong = 21530;
++pub const TIOCGRS485: ::c_int = 21550;
++pub const TIOCSRS485: ::c_int = 21551;
++pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
++pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
++pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
++pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
++pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
++pub const O_APPEND: ::c_int = 1024;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++pub const O_FSYNC: ::c_int = 1052672;
++pub const O_NOATIME: ::c_int = 262144;
++pub const O_PATH: ::c_int = 2097152;
++pub const O_TMPFILE: ::c_int = 4259840;
++pub const MAP_GROWSDOWN: ::c_int = 256;
++pub const EDEADLK: ::c_int = 35;
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EBADMSG: ::c_int = 74;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const EHWPOISON: ::c_int = 133;
++pub const ERFKILL: ::c_int = 132;
++
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SA_ONSTACK: ::c_int = 134217728;
++pub const SA_SIGINFO: ::c_int = 4;
++pub const SA_NOCLDWAIT: ::c_int = 2;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0;
++pub const SIG_UNBLOCK: ::c_int = 1;
++pub const POLLWRNORM: ::c_short = 256;
++pub const POLLWRBAND: ::c_short = 512;
++pub const O_ASYNC: ::c_int = 8192;
++pub const O_NDELAY: ::c_int = 2048;
++pub const PTRACE_DETACH: ::c_uint = 17;
++pub const EFD_NONBLOCK: ::c_int = 2048;
++pub const F_GETLK: ::c_int = 5;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETOWN: ::c_int = 8;
++pub const F_SETLK: ::c_int = 6;
++pub const F_SETLKW: ::c_int = 7;
++pub const F_RDLCK: ::c_int = 0;
++pub const F_WRLCK: ::c_int = 1;
++pub const F_UNLCK: ::c_int = 2;
++pub const F_OFD_GETLK: ::c_int = 36;
++pub const F_OFD_SETLK: ::c_int = 37;
++pub const F_OFD_SETLKW: ::c_int = 38;
++pub const SFD_NONBLOCK: ::c_int = 2048;
++pub const TCSANOW: ::c_int = 0;
++pub const TCSADRAIN: ::c_int = 1;
++pub const TCSAFLUSH: ::c_int = 2;
++pub const TIOCLINUX: ::c_ulong = 21532;
++pub const TIOCGSERIAL: ::c_ulong = 21534;
++pub const TIOCEXCL: ::c_ulong = 21516;
++pub const TIOCNXCL: ::c_ulong = 21517;
++pub const TIOCSCTTY: ::c_ulong = 21518;
++pub const TIOCSTI: ::c_ulong = 21522;
++pub const TIOCMGET: ::c_ulong = 21525;
++pub const TIOCMBIS: ::c_ulong = 21526;
++pub const TIOCMBIC: ::c_ulong = 21527;
++pub const TIOCMSET: ::c_ulong = 21528;
++pub const TIOCCONS: ::c_ulong = 21533;
++pub const TIOCM_ST: ::c_int = 8;
++pub const TIOCM_SR: ::c_int = 16;
++pub const TIOCM_CTS: ::c_int = 32;
++pub const TIOCM_CAR: ::c_int = 64;
++pub const TIOCM_RNG: ::c_int = 128;
++pub const TIOCM_DSR: ::c_int = 256;
++pub const SFD_CLOEXEC: ::c_int = 524288;
++pub const NCCS: usize = 32;
++pub const O_TRUNC: ::c_int = 512;
++pub const O_CLOEXEC: ::c_int = 524288;
++pub const EBFONT: ::c_int = 59;
++pub const ENOSTR: ::c_int = 60;
++pub const ENODATA: ::c_int = 61;
++pub const ETIME: ::c_int = 62;
++pub const ENOSR: ::c_int = 63;
++pub const ENONET: ::c_int = 64;
++pub const ENOPKG: ::c_int = 65;
++pub const EREMOTE: ::c_int = 66;
++pub const ENOLINK: ::c_int = 67;
++pub const EADV: ::c_int = 68;
++pub const ESRMNT: ::c_int = 69;
++pub const ECOMM: ::c_int = 70;
++pub const EPROTO: ::c_int = 71;
++pub const EDOTDOT: ::c_int = 73;
++pub const SA_NODEFER: ::c_int = 1073741824;
++pub const SA_RESETHAND: ::c_int = -2147483648;
++pub const SA_RESTART: ::c_int = 268435456;
++pub const SA_NOCLDSTOP: ::c_int = 1;
++pub const EPOLL_CLOEXEC: ::c_int = 524288;
++pub const EFD_CLOEXEC: ::c_int = 524288;
++pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
++pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
++pub const O_DIRECT: ::c_int = 16384;
++pub const O_DIRECTORY: ::c_int = 65536;
++pub const O_NOFOLLOW: ::c_int = 131072;
++pub const MAP_HUGETLB: ::c_int = 262144;
++pub const MAP_LOCKED: ::c_int = 8192;
++pub const MAP_NORESERVE: ::c_int = 16384;
++pub const MAP_ANON: ::c_int = 32;
++pub const MAP_ANONYMOUS: ::c_int = 32;
++pub const MAP_DENYWRITE: ::c_int = 2048;
++pub const MAP_EXECUTABLE: ::c_int = 4096;
++pub const MAP_POPULATE: ::c_int = 32768;
++pub const MAP_NONBLOCK: ::c_int = 65536;
++pub const MAP_STACK: ::c_int = 131072;
++pub const MAP_SYNC: ::c_int = 0x080000;
++pub const EDEADLOCK: ::c_int = 35;
++pub const EUCLEAN: ::c_int = 117;
++pub const ENOTNAM: ::c_int = 118;
++pub const ENAVAIL: ::c_int = 119;
++pub const EISNAM: ::c_int = 120;
++pub const EREMOTEIO: ::c_int = 121;
++pub const FIOCLEX: ::c_ulong = 21585;
++pub const FIONCLEX: ::c_ulong = 21584;
++pub const FIONBIO: ::c_ulong = 21537;
++pub const MCL_CURRENT: ::c_int = 1;
++pub const MCL_FUTURE: ::c_int = 2;
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++pub const CBAUD: ::tcflag_t = 4111;
++pub const TAB1: ::tcflag_t = 2048;
++pub const TAB2: ::tcflag_t = 4096;
++pub const TAB3: ::tcflag_t = 6144;
++pub const CR1: ::tcflag_t = 512;
++pub const CR2: ::tcflag_t = 1024;
++pub const CR3: ::tcflag_t = 1536;
++pub const FF1: ::tcflag_t = 32768;
++pub const BS1: ::tcflag_t = 8192;
++pub const VT1: ::tcflag_t = 16384;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 1024;
++pub const IXOFF: ::tcflag_t = 4096;
++pub const ONLCR: ::tcflag_t = 4;
++pub const CSIZE: ::tcflag_t = 48;
++pub const CS6: ::tcflag_t = 16;
++pub const CS7: ::tcflag_t = 32;
++pub const CS8: ::tcflag_t = 48;
++pub const CSTOPB: ::tcflag_t = 64;
++pub const CREAD: ::tcflag_t = 128;
++pub const PARENB: ::tcflag_t = 256;
++pub const PARODD: ::tcflag_t = 512;
++pub const HUPCL: ::tcflag_t = 1024;
++pub const CLOCAL: ::tcflag_t = 2048;
++pub const ECHOKE: ::tcflag_t = 2048;
++pub const ECHOE: ::tcflag_t = 16;
++pub const ECHOK: ::tcflag_t = 32;
++pub const ECHONL: ::tcflag_t = 64;
++pub const ECHOPRT: ::tcflag_t = 1024;
++pub const ECHOCTL: ::tcflag_t = 512;
++pub const ISIG: ::tcflag_t = 1;
++pub const ICANON: ::tcflag_t = 2;
++pub const PENDIN: ::tcflag_t = 16384;
++pub const NOFLSH: ::tcflag_t = 128;
++pub const CIBAUD: ::tcflag_t = 269418496;
++pub const CBAUDEX: ::tcflag_t = 4096;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 2;
++pub const NLDLY: ::tcflag_t = 256;
++pub const CRDLY: ::tcflag_t = 1536;
++pub const TABDLY: ::tcflag_t = 6144;
++pub const BSDLY: ::tcflag_t = 8192;
++pub const FFDLY: ::tcflag_t = 32768;
++pub const VTDLY: ::tcflag_t = 16384;
++pub const XTABS: ::tcflag_t = 6144;
++pub const B0: ::speed_t = 0;
++pub const B50: ::speed_t = 1;
++pub const B75: ::speed_t = 2;
++pub const B110: ::speed_t = 3;
++pub const B134: ::speed_t = 4;
++pub const B150: ::speed_t = 5;
++pub const B200: ::speed_t = 6;
++pub const B300: ::speed_t = 7;
++pub const B600: ::speed_t = 8;
++pub const B1200: ::speed_t = 9;
++pub const B1800: ::speed_t = 10;
++pub const B2400: ::speed_t = 11;
++pub const B4800: ::speed_t = 12;
++pub const B9600: ::speed_t = 13;
++pub const B19200: ::speed_t = 14;
++pub const B38400: ::speed_t = 15;
++pub const EXTA: ::speed_t = 14;
++pub const EXTB: ::speed_t = 15;
++pub const B57600: ::speed_t = 4097;
++pub const B115200: ::speed_t = 4098;
++pub const B230400: ::speed_t = 4099;
++pub const B460800: ::speed_t = 4100;
++pub const B500000: ::speed_t = 4101;
++pub const B576000: ::speed_t = 4102;
++pub const B921600: ::speed_t = 4103;
++pub const B1000000: ::speed_t = 4104;
++pub const B1152000: ::speed_t = 4105;
++pub const B1500000: ::speed_t = 4106;
++pub const B2000000: ::speed_t = 4107;
++pub const B2500000: ::speed_t = 4108;
++pub const B3000000: ::speed_t = 4109;
++pub const B3500000: ::speed_t = 4110;
++pub const B4000000: ::speed_t = 4111;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 32768;
++pub const TOSTOP: ::tcflag_t = 256;
++pub const FLUSHO: ::tcflag_t = 4096;
++pub const EXTPROC: ::tcflag_t = 65536;
++pub const TCGETS: ::c_ulong = 21505;
++pub const TCSETS: ::c_ulong = 21506;
++pub const TCSETSW: ::c_ulong = 21507;
++pub const TCSETSF: ::c_ulong = 21508;
++pub const TCGETA: ::c_ulong = 21509;
++pub const TCSETA: ::c_ulong = 21510;
++pub const TCSETAW: ::c_ulong = 21511;
++pub const TCSETAF: ::c_ulong = 21512;
++pub const TCSBRK: ::c_ulong = 21513;
++pub const TCXONC: ::c_ulong = 21514;
++pub const TCFLSH: ::c_ulong = 21515;
++pub const TIOCINQ: ::c_ulong = 21531;
++pub const TIOCGPGRP: ::c_ulong = 21519;
++pub const TIOCSPGRP: ::c_ulong = 21520;
++pub const TIOCOUTQ: ::c_ulong = 21521;
++pub const TIOCGWINSZ: ::c_ulong = 21523;
++pub const TIOCSWINSZ: ::c_ulong = 21524;
++pub const FIONREAD: ::c_ulong = 21531;
++pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
++pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
++pub const SYS_read: ::c_long = 63;
++pub const SYS_write: ::c_long = 64;
++pub const SYS_close: ::c_long = 57;
++pub const SYS_fstat: ::c_long = 80;
++pub const SYS_lseek: ::c_long = 62;
++pub const SYS_mmap: ::c_long = 222;
++pub const SYS_mprotect: ::c_long = 226;
++pub const SYS_munmap: ::c_long = 215;
++pub const SYS_brk: ::c_long = 214;
++pub const SYS_rt_sigaction: ::c_long = 134;
++pub const SYS_rt_sigprocmask: ::c_long = 135;
++pub const SYS_rt_sigreturn: ::c_long = 139;
++pub const SYS_ioctl: ::c_long = 29;
++pub const SYS_pread64: ::c_long = 67;
++pub const SYS_pwrite64: ::c_long = 68;
++pub const SYS_readv: ::c_long = 65;
++pub const SYS_writev: ::c_long = 66;
++pub const SYS_sched_yield: ::c_long = 124;
++pub const SYS_mremap: ::c_long = 216;
++pub const SYS_msync: ::c_long = 227;
++pub const SYS_mincore: ::c_long = 232;
++pub const SYS_madvise: ::c_long = 233;
++pub const SYS_shmget: ::c_long = 194;
++pub const SYS_shmat: ::c_long = 196;
++pub const SYS_shmctl: ::c_long = 195;
++pub const SYS_dup: ::c_long = 23;
++pub const SYS_nanosleep: ::c_long = 101;
++pub const SYS_getitimer: ::c_long = 102;
++pub const SYS_setitimer: ::c_long = 103;
++pub const SYS_getpid: ::c_long = 172;
++pub const SYS_sendfile: ::c_long = 71;
++pub const SYS_socket: ::c_long = 198;
++pub const SYS_connect: ::c_long = 203;
++pub const SYS_accept: ::c_long = 202;
++pub const SYS_sendto: ::c_long = 206;
++pub const SYS_recvfrom: ::c_long = 207;
++pub const SYS_sendmsg: ::c_long = 211;
++pub const SYS_recvmsg: ::c_long = 212;
++pub const SYS_shutdown: ::c_long = 210;
++pub const SYS_bind: ::c_long = 200;
++pub const SYS_listen: ::c_long = 201;
++pub const SYS_getsockname: ::c_long = 204;
++pub const SYS_getpeername: ::c_long = 205;
++pub const SYS_socketpair: ::c_long = 199;
++pub const SYS_setsockopt: ::c_long = 208;
++pub const SYS_getsockopt: ::c_long = 209;
++pub const SYS_clone: ::c_long = 220;
++pub const SYS_execve: ::c_long = 221;
++pub const SYS_exit: ::c_long = 93;
++pub const SYS_wait4: ::c_long = 260;
++pub const SYS_kill: ::c_long = 129;
++pub const SYS_uname: ::c_long = 160;
++pub const SYS_semget: ::c_long = 190;
++pub const SYS_semop: ::c_long = 193;
++pub const SYS_semctl: ::c_long = 191;
++pub const SYS_shmdt: ::c_long = 197;
++pub const SYS_msgget: ::c_long = 186;
++pub const SYS_msgsnd: ::c_long = 189;
++pub const SYS_msgrcv: ::c_long = 188;
++pub const SYS_msgctl: ::c_long = 187;
++pub const SYS_fcntl: ::c_long = 25;
++pub const SYS_flock: ::c_long = 32;
++pub const SYS_fsync: ::c_long = 82;
++pub const SYS_fdatasync: ::c_long = 83;
++pub const SYS_truncate: ::c_long = 45;
++pub const SYS_ftruncate: ::c_long = 46;
++pub const SYS_getcwd: ::c_long = 17;
++pub const SYS_chdir: ::c_long = 49;
++pub const SYS_fchdir: ::c_long = 50;
++pub const SYS_fchmod: ::c_long = 52;
++pub const SYS_fchown: ::c_long = 55;
++pub const SYS_umask: ::c_long = 166;
++pub const SYS_gettimeofday: ::c_long = 169;
++pub const SYS_getrlimit: ::c_long = 163;
++pub const SYS_getrusage: ::c_long = 165;
++pub const SYS_sysinfo: ::c_long = 179;
++pub const SYS_times: ::c_long = 153;
++pub const SYS_ptrace: ::c_long = 117;
++pub const SYS_getuid: ::c_long = 174;
++pub const SYS_syslog: ::c_long = 116;
++pub const SYS_getgid: ::c_long = 176;
++pub const SYS_setuid: ::c_long = 146;
++pub const SYS_setgid: ::c_long = 144;
++pub const SYS_geteuid: ::c_long = 175;
++pub const SYS_getegid: ::c_long = 177;
++pub const SYS_setpgid: ::c_long = 154;
++pub const SYS_getppid: ::c_long = 173;
++pub const SYS_setsid: ::c_long = 157;
++pub const SYS_setreuid: ::c_long = 145;
++pub const SYS_setregid: ::c_long = 143;
++pub const SYS_getgroups: ::c_long = 158;
++pub const SYS_setgroups: ::c_long = 159;
++pub const SYS_setresuid: ::c_long = 147;
++pub const SYS_getresuid: ::c_long = 148;
++pub const SYS_setresgid: ::c_long = 149;
++pub const SYS_getresgid: ::c_long = 150;
++pub const SYS_getpgid: ::c_long = 155;
++pub const SYS_setfsuid: ::c_long = 151;
++pub const SYS_setfsgid: ::c_long = 152;
++pub const SYS_getsid: ::c_long = 156;
++pub const SYS_capget: ::c_long = 90;
++pub const SYS_capset: ::c_long = 91;
++pub const SYS_rt_sigpending: ::c_long = 136;
++pub const SYS_rt_sigtimedwait: ::c_long = 137;
++pub const SYS_rt_sigqueueinfo: ::c_long = 138;
++pub const SYS_rt_sigsuspend: ::c_long = 133;
++pub const SYS_sigaltstack: ::c_long = 132;
++pub const SYS_personality: ::c_long = 92;
++pub const SYS_statfs: ::c_long = 43;
++pub const SYS_fstatfs: ::c_long = 44;
++pub const SYS_getpriority: ::c_long = 141;
++pub const SYS_setpriority: ::c_long = 140;
++pub const SYS_sched_setparam: ::c_long = 118;
++pub const SYS_sched_getparam: ::c_long = 121;
++pub const SYS_sched_setscheduler: ::c_long = 119;
++pub const SYS_sched_getscheduler: ::c_long = 120;
++pub const SYS_sched_get_priority_max: ::c_long = 125;
++pub const SYS_sched_get_priority_min: ::c_long = 126;
++pub const SYS_sched_rr_get_interval: ::c_long = 127;
++pub const SYS_mlock: ::c_long = 228;
++pub const SYS_munlock: ::c_long = 229;
++pub const SYS_mlockall: ::c_long = 230;
++pub const SYS_munlockall: ::c_long = 231;
++pub const SYS_vhangup: ::c_long = 58;
++pub const SYS_pivot_root: ::c_long = 41;
++pub const SYS_prctl: ::c_long = 167;
++pub const SYS_adjtimex: ::c_long = 171;
++pub const SYS_setrlimit: ::c_long = 164;
++pub const SYS_chroot: ::c_long = 51;
++pub const SYS_sync: ::c_long = 81;
++pub const SYS_acct: ::c_long = 89;
++pub const SYS_settimeofday: ::c_long = 170;
++pub const SYS_mount: ::c_long = 40;
++pub const SYS_umount2: ::c_long = 39;
++pub const SYS_swapon: ::c_long = 224;
++pub const SYS_swapoff: ::c_long = 225;
++pub const SYS_reboot: ::c_long = 142;
++pub const SYS_sethostname: ::c_long = 161;
++pub const SYS_setdomainname: ::c_long = 162;
++pub const SYS_init_module: ::c_long = 105;
++pub const SYS_delete_module: ::c_long = 106;
++pub const SYS_quotactl: ::c_long = 60;
++pub const SYS_nfsservctl: ::c_long = 42;
++pub const SYS_gettid: ::c_long = 178;
++pub const SYS_readahead: ::c_long = 213;
++pub const SYS_setxattr: ::c_long = 5;
++pub const SYS_lsetxattr: ::c_long = 6;
++pub const SYS_fsetxattr: ::c_long = 7;
++pub const SYS_getxattr: ::c_long = 8;
++pub const SYS_lgetxattr: ::c_long = 9;
++pub const SYS_fgetxattr: ::c_long = 10;
++pub const SYS_listxattr: ::c_long = 11;
++pub const SYS_llistxattr: ::c_long = 12;
++pub const SYS_flistxattr: ::c_long = 13;
++pub const SYS_removexattr: ::c_long = 14;
++pub const SYS_lremovexattr: ::c_long = 15;
++pub const SYS_fremovexattr: ::c_long = 16;
++pub const SYS_tkill: ::c_long = 130;
++pub const SYS_futex: ::c_long = 98;
++pub const SYS_sched_setaffinity: ::c_long = 122;
++pub const SYS_sched_getaffinity: ::c_long = 123;
++pub const SYS_io_setup: ::c_long = 0;
++pub const SYS_io_destroy: ::c_long = 1;
++pub const SYS_io_getevents: ::c_long = 4;
++pub const SYS_io_submit: ::c_long = 2;
++pub const SYS_io_cancel: ::c_long = 3;
++pub const SYS_lookup_dcookie: ::c_long = 18;
++pub const SYS_remap_file_pages: ::c_long = 234;
++pub const SYS_getdents64: ::c_long = 61;
++pub const SYS_set_tid_address: ::c_long = 96;
++pub const SYS_restart_syscall: ::c_long = 128;
++pub const SYS_semtimedop: ::c_long = 192;
++pub const SYS_fadvise64: ::c_long = 223;
++pub const SYS_timer_create: ::c_long = 107;
++pub const SYS_timer_settime: ::c_long = 110;
++pub const SYS_timer_gettime: ::c_long = 108;
++pub const SYS_timer_getoverrun: ::c_long = 109;
++pub const SYS_timer_delete: ::c_long = 111;
++pub const SYS_clock_settime: ::c_long = 112;
++pub const SYS_clock_gettime: ::c_long = 113;
++pub const SYS_clock_getres: ::c_long = 114;
++pub const SYS_clock_nanosleep: ::c_long = 115;
++pub const SYS_exit_group: ::c_long = 94;
++pub const SYS_epoll_ctl: ::c_long = 21;
++pub const SYS_tgkill: ::c_long = 131;
++pub const SYS_mbind: ::c_long = 235;
++pub const SYS_set_mempolicy: ::c_long = 237;
++pub const SYS_get_mempolicy: ::c_long = 236;
++pub const SYS_mq_open: ::c_long = 180;
++pub const SYS_mq_unlink: ::c_long = 181;
++pub const SYS_mq_timedsend: ::c_long = 182;
++pub const SYS_mq_timedreceive: ::c_long = 183;
++pub const SYS_mq_notify: ::c_long = 184;
++pub const SYS_mq_getsetattr: ::c_long = 185;
++pub const SYS_kexec_load: ::c_long = 104;
++pub const SYS_waitid: ::c_long = 95;
++pub const SYS_add_key: ::c_long = 217;
++pub const SYS_request_key: ::c_long = 218;
++pub const SYS_keyctl: ::c_long = 219;
++pub const SYS_ioprio_set: ::c_long = 30;
++pub const SYS_ioprio_get: ::c_long = 31;
++pub const SYS_inotify_add_watch: ::c_long = 27;
++pub const SYS_inotify_rm_watch: ::c_long = 28;
++pub const SYS_migrate_pages: ::c_long = 238;
++pub const SYS_openat: ::c_long = 56;
++pub const SYS_mkdirat: ::c_long = 34;
++pub const SYS_mknodat: ::c_long = 33;
++pub const SYS_fchownat: ::c_long = 54;
++pub const SYS_newfstatat: ::c_long = 79;
++pub const SYS_unlinkat: ::c_long = 35;
++pub const SYS_linkat: ::c_long = 37;
++pub const SYS_symlinkat: ::c_long = 36;
++pub const SYS_readlinkat: ::c_long = 78;
++pub const SYS_fchmodat: ::c_long = 53;
++pub const SYS_faccessat: ::c_long = 48;
++pub const SYS_pselect6: ::c_long = 72;
++pub const SYS_ppoll: ::c_long = 73;
++pub const SYS_unshare: ::c_long = 97;
++pub const SYS_set_robust_list: ::c_long = 99;
++pub const SYS_get_robust_list: ::c_long = 100;
++pub const SYS_splice: ::c_long = 76;
++pub const SYS_tee: ::c_long = 77;
++pub const SYS_sync_file_range: ::c_long = 84;
++pub const SYS_vmsplice: ::c_long = 75;
++pub const SYS_move_pages: ::c_long = 239;
++pub const SYS_utimensat: ::c_long = 88;
++pub const SYS_epoll_pwait: ::c_long = 22;
++pub const SYS_timerfd_create: ::c_long = 85;
++pub const SYS_fallocate: ::c_long = 47;
++pub const SYS_timerfd_settime: ::c_long = 86;
++pub const SYS_timerfd_gettime: ::c_long = 87;
++pub const SYS_accept4: ::c_long = 242;
++pub const SYS_signalfd4: ::c_long = 74;
++pub const SYS_eventfd2: ::c_long = 19;
++pub const SYS_epoll_create1: ::c_long = 20;
++pub const SYS_dup3: ::c_long = 24;
++pub const SYS_pipe2: ::c_long = 59;
++pub const SYS_inotify_init1: ::c_long = 26;
++pub const SYS_preadv: ::c_long = 69;
++pub const SYS_pwritev: ::c_long = 70;
++pub const SYS_rt_tgsigqueueinfo: ::c_long = 240;
++pub const SYS_perf_event_open: ::c_long = 241;
++pub const SYS_recvmmsg: ::c_long = 243;
++pub const SYS_fanotify_init: ::c_long = 262;
++pub const SYS_fanotify_mark: ::c_long = 263;
++pub const SYS_prlimit64: ::c_long = 261;
++pub const SYS_name_to_handle_at: ::c_long = 264;
++pub const SYS_open_by_handle_at: ::c_long = 265;
++pub const SYS_clock_adjtime: ::c_long = 266;
++pub const SYS_syncfs: ::c_long = 267;
++pub const SYS_sendmmsg: ::c_long = 269;
++pub const SYS_setns: ::c_long = 268;
++pub const SYS_getcpu: ::c_long = 168;
++pub const SYS_process_vm_readv: ::c_long = 270;
++pub const SYS_process_vm_writev: ::c_long = 271;
++pub const SYS_kcmp: ::c_long = 272;
++pub const SYS_finit_module: ::c_long = 273;
++pub const SYS_sched_setattr: ::c_long = 274;
++pub const SYS_sched_getattr: ::c_long = 275;
++pub const SYS_renameat2: ::c_long = 276;
++pub const SYS_seccomp: ::c_long = 277;
++pub const SYS_getrandom: ::c_long = 278;
++pub const SYS_memfd_create: ::c_long = 279;
++pub const SYS_bpf: ::c_long = 280;
++pub const SYS_execveat: ::c_long = 281;
++pub const SYS_userfaultfd: ::c_long = 282;
++pub const SYS_membarrier: ::c_long = 283;
++pub const SYS_mlock2: ::c_long = 284;
++pub const SYS_copy_file_range: ::c_long = 285;
++pub const SYS_preadv2: ::c_long = 286;
++pub const SYS_pwritev2: ::c_long = 287;
++pub const SYS_pkey_mprotect: ::c_long = 288;
++pub const SYS_pkey_alloc: ::c_long = 289;
++pub const SYS_pkey_free: ::c_long = 290;
++pub const SYS_statx: ::c_long = 291;
++pub const SYS_pidfd_send_signal: ::c_long = 424;
++pub const SYS_io_uring_setup: ::c_long = 425;
++pub const SYS_io_uring_enter: ::c_long = 426;
++pub const SYS_io_uring_register: ::c_long = 427;
++pub const SYS_open_tree: ::c_long = 428;
++pub const SYS_move_mount: ::c_long = 429;
++pub const SYS_fsopen: ::c_long = 430;
++pub const SYS_fsconfig: ::c_long = 431;
++pub const SYS_fsmount: ::c_long = 432;
++pub const SYS_fspick: ::c_long = 433;
++pub const SYS_pidfd_open: ::c_long = 434;
++pub const SYS_clone3: ::c_long = 435;
++pub const SYS_close_range: ::c_long = 436;
++pub const SYS_openat2: ::c_long = 437;
++pub const SYS_pidfd_getfd: ::c_long = 438;
++pub const SYS_faccessat2: ::c_long = 439;
++pub const SYS_process_madvise: ::c_long = 440;
++pub const SYS_epoll_pwait2: ::c_long = 441;
++pub const SYS_mount_setattr: ::c_long = 442;
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch b/poky/meta/recipes-devtools/rust/libstd-rs/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch
new file mode 100644
index 0000000..047c4f2
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch
@@ -0,0 +1,25 @@
+From 4319893ebb7fca8bbd2bffc4bddb8d3ecdc08cc2 Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:07:21 +0200
+Subject: [PATCH 6/8] FIXUP: linux/musl/mod.rs: add riscv64 to b64 set
+
+https://github.com/rust-lang/libc/pull/1994/commits/30070c822be2ef399b2ba38cdc1d72ac694d65a3
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ vendor/libc-0.2.98/src/unix/linux_like/linux/musl/mod.rs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
+@@ -709,7 +709,8 @@ cfg_if! {
+                  target_arch = "aarch64",
+                  target_arch = "mips64",
+                  target_arch = "powerpc64",
+-                 target_arch = "s390x"))] {
++                 target_arch = "s390x",
++                 target_arch = "riscv64"))] {
+         mod b64;
+         pub use self::b64::*;
+     } else if #[cfg(any(target_arch = "x86",
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs/0007-FIXUP-Correct-definitions-to-match-musl.patch b/poky/meta/recipes-devtools/rust/libstd-rs/0007-FIXUP-Correct-definitions-to-match-musl.patch
new file mode 100644
index 0000000..211d2e2
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs/0007-FIXUP-Correct-definitions-to-match-musl.patch
@@ -0,0 +1,683 @@
+From 9d240d05c6e6620f36e4ddbcbcb5862fb3269d9f Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:09:17 +0200
+Subject: [PATCH 7/8] FIXUP Correct definitions to match musl
+
+https://github.com/rust-lang/libc/pull/1994/commits/5f6a4d9745c79c81be63c708515ab116786554a3
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ .../linux_like/linux/musl/b64/riscv64/mod.rs  | 708 ++++++++----------
+ 1 file changed, 311 insertions(+), 397 deletions(-)
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -191,351 +191,8 @@ s! {
+         pub l_len: ::off64_t,
+         pub l_pid: ::pid_t,
+     }
+-
+-    pub struct ip_mreqn {
+-        pub imr_multiaddr: ::in_addr,
+-        pub imr_address: ::in_addr,
+-        pub imr_ifindex: ::c_int,
+-    }
+ }
+ 
+-pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+-pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+-pub const VEOF: usize = 4;
+-pub const RTLD_DEEPBIND: ::c_int = 0x8;
+-pub const RTLD_GLOBAL: ::c_int = 0x100;
+-pub const RTLD_NOLOAD: ::c_int = 0x4;
+-pub const TIOCGSOFTCAR: ::c_ulong = 21529;
+-pub const TIOCSSOFTCAR: ::c_ulong = 21530;
+-pub const TIOCGRS485: ::c_int = 21550;
+-pub const TIOCSRS485: ::c_int = 21551;
+-pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+-pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+-pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+-pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+-pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
+-pub const O_APPEND: ::c_int = 1024;
+-pub const O_CREAT: ::c_int = 64;
+-pub const O_EXCL: ::c_int = 128;
+-pub const O_NOCTTY: ::c_int = 256;
+-pub const O_NONBLOCK: ::c_int = 2048;
+-pub const O_SYNC: ::c_int = 1052672;
+-pub const O_RSYNC: ::c_int = 1052672;
+-pub const O_DSYNC: ::c_int = 4096;
+-pub const O_FSYNC: ::c_int = 1052672;
+-pub const O_NOATIME: ::c_int = 262144;
+-pub const O_PATH: ::c_int = 2097152;
+-pub const O_TMPFILE: ::c_int = 4259840;
+-pub const MAP_GROWSDOWN: ::c_int = 256;
+-pub const EDEADLK: ::c_int = 35;
+-pub const ENAMETOOLONG: ::c_int = 36;
+-pub const ENOLCK: ::c_int = 37;
+-pub const ENOSYS: ::c_int = 38;
+-pub const ENOTEMPTY: ::c_int = 39;
+-pub const ELOOP: ::c_int = 40;
+-pub const ENOMSG: ::c_int = 42;
+-pub const EIDRM: ::c_int = 43;
+-pub const ECHRNG: ::c_int = 44;
+-pub const EL2NSYNC: ::c_int = 45;
+-pub const EL3HLT: ::c_int = 46;
+-pub const EL3RST: ::c_int = 47;
+-pub const ELNRNG: ::c_int = 48;
+-pub const EUNATCH: ::c_int = 49;
+-pub const ENOCSI: ::c_int = 50;
+-pub const EL2HLT: ::c_int = 51;
+-pub const EBADE: ::c_int = 52;
+-pub const EBADR: ::c_int = 53;
+-pub const EXFULL: ::c_int = 54;
+-pub const ENOANO: ::c_int = 55;
+-pub const EBADRQC: ::c_int = 56;
+-pub const EBADSLT: ::c_int = 57;
+-pub const EMULTIHOP: ::c_int = 72;
+-pub const EOVERFLOW: ::c_int = 75;
+-pub const ENOTUNIQ: ::c_int = 76;
+-pub const EBADFD: ::c_int = 77;
+-pub const EBADMSG: ::c_int = 74;
+-pub const EREMCHG: ::c_int = 78;
+-pub const ELIBACC: ::c_int = 79;
+-pub const ELIBBAD: ::c_int = 80;
+-pub const ELIBSCN: ::c_int = 81;
+-pub const ELIBMAX: ::c_int = 82;
+-pub const ELIBEXEC: ::c_int = 83;
+-pub const EILSEQ: ::c_int = 84;
+-pub const ERESTART: ::c_int = 85;
+-pub const ESTRPIPE: ::c_int = 86;
+-pub const EUSERS: ::c_int = 87;
+-pub const ENOTSOCK: ::c_int = 88;
+-pub const EDESTADDRREQ: ::c_int = 89;
+-pub const EMSGSIZE: ::c_int = 90;
+-pub const EPROTOTYPE: ::c_int = 91;
+-pub const ENOPROTOOPT: ::c_int = 92;
+-pub const EPROTONOSUPPORT: ::c_int = 93;
+-pub const ESOCKTNOSUPPORT: ::c_int = 94;
+-pub const EOPNOTSUPP: ::c_int = 95;
+-pub const EPFNOSUPPORT: ::c_int = 96;
+-pub const EAFNOSUPPORT: ::c_int = 97;
+-pub const EADDRINUSE: ::c_int = 98;
+-pub const EADDRNOTAVAIL: ::c_int = 99;
+-pub const ENETDOWN: ::c_int = 100;
+-pub const ENETUNREACH: ::c_int = 101;
+-pub const ENETRESET: ::c_int = 102;
+-pub const ECONNABORTED: ::c_int = 103;
+-pub const ECONNRESET: ::c_int = 104;
+-pub const ENOBUFS: ::c_int = 105;
+-pub const EISCONN: ::c_int = 106;
+-pub const ENOTCONN: ::c_int = 107;
+-pub const ESHUTDOWN: ::c_int = 108;
+-pub const ETOOMANYREFS: ::c_int = 109;
+-pub const ETIMEDOUT: ::c_int = 110;
+-pub const ECONNREFUSED: ::c_int = 111;
+-pub const EHOSTDOWN: ::c_int = 112;
+-pub const EHOSTUNREACH: ::c_int = 113;
+-pub const EALREADY: ::c_int = 114;
+-pub const EINPROGRESS: ::c_int = 115;
+-pub const ESTALE: ::c_int = 116;
+-pub const EDQUOT: ::c_int = 122;
+-pub const ENOMEDIUM: ::c_int = 123;
+-pub const EMEDIUMTYPE: ::c_int = 124;
+-pub const ECANCELED: ::c_int = 125;
+-pub const ENOKEY: ::c_int = 126;
+-pub const EKEYEXPIRED: ::c_int = 127;
+-pub const EKEYREVOKED: ::c_int = 128;
+-pub const EKEYREJECTED: ::c_int = 129;
+-pub const EOWNERDEAD: ::c_int = 130;
+-pub const ENOTRECOVERABLE: ::c_int = 131;
+-pub const EHWPOISON: ::c_int = 133;
+-pub const ERFKILL: ::c_int = 132;
+-
+-pub const SOCK_STREAM: ::c_int = 1;
+-pub const SOCK_DGRAM: ::c_int = 2;
+-pub const SA_ONSTACK: ::c_int = 134217728;
+-pub const SA_SIGINFO: ::c_int = 4;
+-pub const SA_NOCLDWAIT: ::c_int = 2;
+-pub const SIGTTIN: ::c_int = 21;
+-pub const SIGTTOU: ::c_int = 22;
+-pub const SIGXCPU: ::c_int = 24;
+-pub const SIGXFSZ: ::c_int = 25;
+-pub const SIGVTALRM: ::c_int = 26;
+-pub const SIGPROF: ::c_int = 27;
+-pub const SIGWINCH: ::c_int = 28;
+-pub const SIGCHLD: ::c_int = 17;
+-pub const SIGBUS: ::c_int = 7;
+-pub const SIGUSR1: ::c_int = 10;
+-pub const SIGUSR2: ::c_int = 12;
+-pub const SIGCONT: ::c_int = 18;
+-pub const SIGSTOP: ::c_int = 19;
+-pub const SIGTSTP: ::c_int = 20;
+-pub const SIGURG: ::c_int = 23;
+-pub const SIGIO: ::c_int = 29;
+-pub const SIGSYS: ::c_int = 31;
+-pub const SIGSTKFLT: ::c_int = 16;
+-pub const SIGPOLL: ::c_int = 29;
+-pub const SIGPWR: ::c_int = 30;
+-pub const SIG_SETMASK: ::c_int = 2;
+-pub const SIG_BLOCK: ::c_int = 0;
+-pub const SIG_UNBLOCK: ::c_int = 1;
+-pub const POLLWRNORM: ::c_short = 256;
+-pub const POLLWRBAND: ::c_short = 512;
+-pub const O_ASYNC: ::c_int = 8192;
+-pub const O_NDELAY: ::c_int = 2048;
+-pub const PTRACE_DETACH: ::c_uint = 17;
+-pub const EFD_NONBLOCK: ::c_int = 2048;
+-pub const F_GETLK: ::c_int = 5;
+-pub const F_GETOWN: ::c_int = 9;
+-pub const F_SETOWN: ::c_int = 8;
+-pub const F_SETLK: ::c_int = 6;
+-pub const F_SETLKW: ::c_int = 7;
+-pub const F_RDLCK: ::c_int = 0;
+-pub const F_WRLCK: ::c_int = 1;
+-pub const F_UNLCK: ::c_int = 2;
+-pub const F_OFD_GETLK: ::c_int = 36;
+-pub const F_OFD_SETLK: ::c_int = 37;
+-pub const F_OFD_SETLKW: ::c_int = 38;
+-pub const SFD_NONBLOCK: ::c_int = 2048;
+-pub const TCSANOW: ::c_int = 0;
+-pub const TCSADRAIN: ::c_int = 1;
+-pub const TCSAFLUSH: ::c_int = 2;
+-pub const TIOCLINUX: ::c_ulong = 21532;
+-pub const TIOCGSERIAL: ::c_ulong = 21534;
+-pub const TIOCEXCL: ::c_ulong = 21516;
+-pub const TIOCNXCL: ::c_ulong = 21517;
+-pub const TIOCSCTTY: ::c_ulong = 21518;
+-pub const TIOCSTI: ::c_ulong = 21522;
+-pub const TIOCMGET: ::c_ulong = 21525;
+-pub const TIOCMBIS: ::c_ulong = 21526;
+-pub const TIOCMBIC: ::c_ulong = 21527;
+-pub const TIOCMSET: ::c_ulong = 21528;
+-pub const TIOCCONS: ::c_ulong = 21533;
+-pub const TIOCM_ST: ::c_int = 8;
+-pub const TIOCM_SR: ::c_int = 16;
+-pub const TIOCM_CTS: ::c_int = 32;
+-pub const TIOCM_CAR: ::c_int = 64;
+-pub const TIOCM_RNG: ::c_int = 128;
+-pub const TIOCM_DSR: ::c_int = 256;
+-pub const SFD_CLOEXEC: ::c_int = 524288;
+-pub const NCCS: usize = 32;
+-pub const O_TRUNC: ::c_int = 512;
+-pub const O_CLOEXEC: ::c_int = 524288;
+-pub const EBFONT: ::c_int = 59;
+-pub const ENOSTR: ::c_int = 60;
+-pub const ENODATA: ::c_int = 61;
+-pub const ETIME: ::c_int = 62;
+-pub const ENOSR: ::c_int = 63;
+-pub const ENONET: ::c_int = 64;
+-pub const ENOPKG: ::c_int = 65;
+-pub const EREMOTE: ::c_int = 66;
+-pub const ENOLINK: ::c_int = 67;
+-pub const EADV: ::c_int = 68;
+-pub const ESRMNT: ::c_int = 69;
+-pub const ECOMM: ::c_int = 70;
+-pub const EPROTO: ::c_int = 71;
+-pub const EDOTDOT: ::c_int = 73;
+-pub const SA_NODEFER: ::c_int = 1073741824;
+-pub const SA_RESETHAND: ::c_int = -2147483648;
+-pub const SA_RESTART: ::c_int = 268435456;
+-pub const SA_NOCLDSTOP: ::c_int = 1;
+-pub const EPOLL_CLOEXEC: ::c_int = 524288;
+-pub const EFD_CLOEXEC: ::c_int = 524288;
+-pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+-pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+-pub const O_DIRECT: ::c_int = 16384;
+-pub const O_DIRECTORY: ::c_int = 65536;
+-pub const O_NOFOLLOW: ::c_int = 131072;
+-pub const MAP_HUGETLB: ::c_int = 262144;
+-pub const MAP_LOCKED: ::c_int = 8192;
+-pub const MAP_NORESERVE: ::c_int = 16384;
+-pub const MAP_ANON: ::c_int = 32;
+-pub const MAP_ANONYMOUS: ::c_int = 32;
+-pub const MAP_DENYWRITE: ::c_int = 2048;
+-pub const MAP_EXECUTABLE: ::c_int = 4096;
+-pub const MAP_POPULATE: ::c_int = 32768;
+-pub const MAP_NONBLOCK: ::c_int = 65536;
+-pub const MAP_STACK: ::c_int = 131072;
+-pub const MAP_SYNC: ::c_int = 0x080000;
+-pub const EDEADLOCK: ::c_int = 35;
+-pub const EUCLEAN: ::c_int = 117;
+-pub const ENOTNAM: ::c_int = 118;
+-pub const ENAVAIL: ::c_int = 119;
+-pub const EISNAM: ::c_int = 120;
+-pub const EREMOTEIO: ::c_int = 121;
+-pub const FIOCLEX: ::c_ulong = 21585;
+-pub const FIONCLEX: ::c_ulong = 21584;
+-pub const FIONBIO: ::c_ulong = 21537;
+-pub const MCL_CURRENT: ::c_int = 1;
+-pub const MCL_FUTURE: ::c_int = 2;
+-pub const SIGSTKSZ: ::size_t = 8192;
+-pub const MINSIGSTKSZ: ::size_t = 2048;
+-pub const CBAUD: ::tcflag_t = 4111;
+-pub const TAB1: ::tcflag_t = 2048;
+-pub const TAB2: ::tcflag_t = 4096;
+-pub const TAB3: ::tcflag_t = 6144;
+-pub const CR1: ::tcflag_t = 512;
+-pub const CR2: ::tcflag_t = 1024;
+-pub const CR3: ::tcflag_t = 1536;
+-pub const FF1: ::tcflag_t = 32768;
+-pub const BS1: ::tcflag_t = 8192;
+-pub const VT1: ::tcflag_t = 16384;
+-pub const VWERASE: usize = 14;
+-pub const VREPRINT: usize = 12;
+-pub const VSUSP: usize = 10;
+-pub const VSTART: usize = 8;
+-pub const VSTOP: usize = 9;
+-pub const VDISCARD: usize = 13;
+-pub const VTIME: usize = 5;
+-pub const IXON: ::tcflag_t = 1024;
+-pub const IXOFF: ::tcflag_t = 4096;
+-pub const ONLCR: ::tcflag_t = 4;
+-pub const CSIZE: ::tcflag_t = 48;
+-pub const CS6: ::tcflag_t = 16;
+-pub const CS7: ::tcflag_t = 32;
+-pub const CS8: ::tcflag_t = 48;
+-pub const CSTOPB: ::tcflag_t = 64;
+-pub const CREAD: ::tcflag_t = 128;
+-pub const PARENB: ::tcflag_t = 256;
+-pub const PARODD: ::tcflag_t = 512;
+-pub const HUPCL: ::tcflag_t = 1024;
+-pub const CLOCAL: ::tcflag_t = 2048;
+-pub const ECHOKE: ::tcflag_t = 2048;
+-pub const ECHOE: ::tcflag_t = 16;
+-pub const ECHOK: ::tcflag_t = 32;
+-pub const ECHONL: ::tcflag_t = 64;
+-pub const ECHOPRT: ::tcflag_t = 1024;
+-pub const ECHOCTL: ::tcflag_t = 512;
+-pub const ISIG: ::tcflag_t = 1;
+-pub const ICANON: ::tcflag_t = 2;
+-pub const PENDIN: ::tcflag_t = 16384;
+-pub const NOFLSH: ::tcflag_t = 128;
+-pub const CIBAUD: ::tcflag_t = 269418496;
+-pub const CBAUDEX: ::tcflag_t = 4096;
+-pub const VSWTC: usize = 7;
+-pub const OLCUC: ::tcflag_t = 2;
+-pub const NLDLY: ::tcflag_t = 256;
+-pub const CRDLY: ::tcflag_t = 1536;
+-pub const TABDLY: ::tcflag_t = 6144;
+-pub const BSDLY: ::tcflag_t = 8192;
+-pub const FFDLY: ::tcflag_t = 32768;
+-pub const VTDLY: ::tcflag_t = 16384;
+-pub const XTABS: ::tcflag_t = 6144;
+-pub const B0: ::speed_t = 0;
+-pub const B50: ::speed_t = 1;
+-pub const B75: ::speed_t = 2;
+-pub const B110: ::speed_t = 3;
+-pub const B134: ::speed_t = 4;
+-pub const B150: ::speed_t = 5;
+-pub const B200: ::speed_t = 6;
+-pub const B300: ::speed_t = 7;
+-pub const B600: ::speed_t = 8;
+-pub const B1200: ::speed_t = 9;
+-pub const B1800: ::speed_t = 10;
+-pub const B2400: ::speed_t = 11;
+-pub const B4800: ::speed_t = 12;
+-pub const B9600: ::speed_t = 13;
+-pub const B19200: ::speed_t = 14;
+-pub const B38400: ::speed_t = 15;
+-pub const EXTA: ::speed_t = 14;
+-pub const EXTB: ::speed_t = 15;
+-pub const B57600: ::speed_t = 4097;
+-pub const B115200: ::speed_t = 4098;
+-pub const B230400: ::speed_t = 4099;
+-pub const B460800: ::speed_t = 4100;
+-pub const B500000: ::speed_t = 4101;
+-pub const B576000: ::speed_t = 4102;
+-pub const B921600: ::speed_t = 4103;
+-pub const B1000000: ::speed_t = 4104;
+-pub const B1152000: ::speed_t = 4105;
+-pub const B1500000: ::speed_t = 4106;
+-pub const B2000000: ::speed_t = 4107;
+-pub const B2500000: ::speed_t = 4108;
+-pub const B3000000: ::speed_t = 4109;
+-pub const B3500000: ::speed_t = 4110;
+-pub const B4000000: ::speed_t = 4111;
+-pub const VEOL: usize = 11;
+-pub const VEOL2: usize = 16;
+-pub const VMIN: usize = 6;
+-pub const IEXTEN: ::tcflag_t = 32768;
+-pub const TOSTOP: ::tcflag_t = 256;
+-pub const FLUSHO: ::tcflag_t = 4096;
+-pub const EXTPROC: ::tcflag_t = 65536;
+-pub const TCGETS: ::c_ulong = 21505;
+-pub const TCSETS: ::c_ulong = 21506;
+-pub const TCSETSW: ::c_ulong = 21507;
+-pub const TCSETSF: ::c_ulong = 21508;
+-pub const TCGETA: ::c_ulong = 21509;
+-pub const TCSETA: ::c_ulong = 21510;
+-pub const TCSETAW: ::c_ulong = 21511;
+-pub const TCSETAF: ::c_ulong = 21512;
+-pub const TCSBRK: ::c_ulong = 21513;
+-pub const TCXONC: ::c_ulong = 21514;
+-pub const TCFLSH: ::c_ulong = 21515;
+-pub const TIOCINQ: ::c_ulong = 21531;
+-pub const TIOCGPGRP: ::c_ulong = 21519;
+-pub const TIOCSPGRP: ::c_ulong = 21520;
+-pub const TIOCOUTQ: ::c_ulong = 21521;
+-pub const TIOCGWINSZ: ::c_ulong = 21523;
+-pub const TIOCSWINSZ: ::c_ulong = 21524;
+-pub const FIONREAD: ::c_ulong = 21531;
+-pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+-pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+ pub const SYS_read: ::c_long = 63;
+ pub const SYS_write: ::c_long = 64;
+ pub const SYS_close: ::c_long = 57;
+@@ -830,3 +487,315 @@ pub const SYS_faccessat2: ::c_long = 439
+ pub const SYS_process_madvise: ::c_long = 440;
+ pub const SYS_epoll_pwait2: ::c_long = 441;
+ pub const SYS_mount_setattr: ::c_long = 442;
++
++
++pub const O_APPEND: ::c_int = 1024;
++pub const O_DIRECT: ::c_int = 0x4000;
++pub const O_DIRECTORY: ::c_int = 0x10000;
++pub const O_LARGEFILE: ::c_int = 0;
++pub const O_NOFOLLOW: ::c_int = 0x20000;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++pub const O_ASYNC: ::c_int = 0x2000;
++
++pub const TIOCGRS485: ::c_int = 0x542E;
++pub const TIOCSRS485: ::c_int = 0x542F;
++
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EBADMSG: ::c_int = 74;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const EHWPOISON: ::c_int = 133;
++pub const ERFKILL: ::c_int = 132;
++
++pub const SA_ONSTACK: ::c_int = 0x08000000;
++pub const SA_SIGINFO: ::c_int = 0x00000004;
++pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
++
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0x000000;
++pub const SIG_UNBLOCK: ::c_int = 0x01;
++
++pub const F_GETLK: ::c_int = 5;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETLK: ::c_int = 6;
++pub const F_SETLKW: ::c_int = 7;
++pub const F_SETOWN: ::c_int = 8;
++pub const F_OFD_GETLK: ::c_int = 36;
++pub const F_OFD_SETLK: ::c_int = 37;
++pub const F_OFD_SETLKW: ::c_int = 38;
++
++pub const VEOF: usize = 4;
++
++pub const POLLWRNORM: ::c_short = 0x100;
++pub const POLLWRBAND: ::c_short = 0x200;
++
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SOL_SOCKET: ::c_int = 1;
++pub const SO_REUSEADDR: ::c_int = 2;
++pub const SO_TYPE: ::c_int = 3;
++pub const SO_ERROR: ::c_int = 4;
++pub const SO_DONTROUTE: ::c_int = 5;
++pub const SO_BROADCAST: ::c_int = 6;
++pub const SO_SNDBUF: ::c_int = 7;
++pub const SO_RCVBUF: ::c_int = 8;
++pub const SO_KEEPALIVE: ::c_int = 9;
++pub const SO_OOBINLINE: ::c_int = 10;
++pub const SO_NO_CHECK: ::c_int = 11;
++pub const SO_PRIORITY: ::c_int = 12;
++pub const SO_LINGER: ::c_int = 13;
++pub const SO_BSDCOMPAT: ::c_int = 14;
++pub const SO_REUSEPORT: ::c_int = 15;
++pub const SO_ACCEPTCONN: ::c_int = 30;
++pub const SO_SNDBUFFORCE: ::c_int = 32;
++pub const SO_RCVBUFFORCE: ::c_int = 33;
++pub const SO_PROTOCOL: ::c_int = 38;
++pub const SO_DOMAIN: ::c_int = 39;
++
++pub const MAP_ANON: ::c_int = 0x0020;
++pub const MAP_GROWSDOWN: ::c_int = 0x0100;
++pub const MAP_DENYWRITE: ::c_int = 0x0800;
++pub const MAP_EXECUTABLE: ::c_int = 0x01000;
++pub const MAP_LOCKED: ::c_int = 0x02000;
++pub const MAP_NORESERVE: ::c_int = 0x04000;
++pub const MAP_POPULATE: ::c_int = 0x08000;
++pub const MAP_NONBLOCK: ::c_int = 0x010000;
++pub const MAP_STACK: ::c_int = 0x020000;
++pub const MAP_HUGETLB: ::c_int = 0x040000;
++pub const MAP_SYNC : ::c_int = 0x080000;
++
++pub const RLIMIT_NLIMITS: ::c_int = 15;
++pub const TIOCINQ: ::c_int = ::FIONREAD;
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
++
++pub const FIOCLEX: ::c_int = 0x5451;
++pub const FIONCLEX: ::c_int = 0x5450;
++pub const FIONBIO: ::c_int = 0x5421;
++pub const EDEADLK: ::c_int = 35;
++pub const EDEADLOCK: ::c_int = EDEADLK;
++pub const SO_PASSCRED: ::c_int = 16;
++pub const SO_PEERCRED: ::c_int = 17;
++pub const SO_RCVLOWAT: ::c_int = 18;
++pub const SO_SNDLOWAT: ::c_int = 19;
++pub const SO_RCVTIMEO: ::c_int = 20;
++pub const SO_SNDTIMEO: ::c_int = 21;
++pub const EXTPROC: ::tcflag_t = 0x00010000;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 0x00008000;
++pub const TOSTOP: ::tcflag_t = 0x00000100;
++pub const FLUSHO: ::tcflag_t = 0x00001000;
++pub const TCGETS: ::c_int = 0x5401;
++pub const TCSETS: ::c_int = 0x5402;
++pub const TCSETSW: ::c_int = 0x5403;
++pub const TCSETSF: ::c_int = 0x5404;
++pub const TCGETA: ::c_int = 0x5405;
++pub const TCSETA: ::c_int = 0x5406;
++pub const TCSETAW: ::c_int = 0x5407;
++pub const TCSETAF: ::c_int = 0x5408;
++pub const TCSBRK: ::c_int = 0x5409;
++pub const TCXONC: ::c_int = 0x540A;
++pub const TCFLSH: ::c_int = 0x540B;
++pub const TIOCGSOFTCAR: ::c_int = 0x5419;
++pub const TIOCSSOFTCAR: ::c_int = 0x541A;
++pub const TIOCLINUX: ::c_int = 0x541C;
++pub const TIOCGSERIAL: ::c_int = 0x541E;
++pub const TIOCEXCL: ::c_int = 0x540C;
++pub const TIOCNXCL: ::c_int = 0x540D;
++pub const TIOCSCTTY: ::c_int = 0x540E;
++pub const TIOCGPGRP: ::c_int = 0x540F;
++pub const TIOCSPGRP: ::c_int = 0x5410;
++pub const TIOCOUTQ: ::c_int = 0x5411;
++pub const TIOCSTI: ::c_int = 0x5412;
++pub const TIOCGWINSZ: ::c_int = 0x5413;
++pub const TIOCSWINSZ: ::c_int = 0x5414;
++pub const TIOCMGET: ::c_int = 0x5415;
++pub const TIOCMBIS: ::c_int = 0x5416;
++pub const TIOCMBIC: ::c_int = 0x5417;
++pub const TIOCMSET: ::c_int = 0x5418;
++pub const FIONREAD: ::c_int = 0x541B;
++pub const TIOCCONS: ::c_int = 0x541D;
++
++pub const TIOCM_LE: ::c_int = 0x001;
++pub const TIOCM_DTR: ::c_int = 0x002;
++pub const TIOCM_RTS: ::c_int = 0x004;
++pub const TIOCM_ST: ::c_int = 0x008;
++pub const TIOCM_SR: ::c_int = 0x010;
++pub const TIOCM_CTS: ::c_int = 0x020;
++pub const TIOCM_CAR: ::c_int = 0x040;
++pub const TIOCM_RNG: ::c_int = 0x080;
++pub const TIOCM_DSR: ::c_int = 0x100;
++pub const TIOCM_CD: ::c_int = TIOCM_CAR;
++pub const TIOCM_RI: ::c_int = TIOCM_RNG;
++
++extern "C" {
++    pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
++}
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs/0008-Update-checksums-for-modified-files-for-rust.patch b/poky/meta/recipes-devtools/rust/libstd-rs/0008-Update-checksums-for-modified-files-for-rust.patch
new file mode 100644
index 0000000..29131a0
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs/0008-Update-checksums-for-modified-files-for-rust.patch
@@ -0,0 +1,16 @@
+From 2b1c373f9a3341e8926d6be8d7cdcedc1fc6fca3 Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:19:24 +0200
+Subject: [PATCH 8/8] Update checksums for modified files for rust
+
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ vendor/libc-0.2.93/.cargo-checksum.json | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/vendor/libc/.cargo-checksum.json
++++ b/vendor/libc/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"9d8cd25bb60fc4bb42c4b034bfa26ba45a691fd7cae155dab8f8b5819fe12647","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"8e0e8d33cc9e7c25cde75c2b502420f943266a681024169f94084774b422681d","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"975b86cbe0335d64082ca88bb24f0e3402371f6f5b33e940c4e12ce4342bb658","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"d4f7452c0fe720f3a961b918b74ec86d19cef33e6b4aac08efbbad6f6d818e09","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"6a4ce300da0d2b0db04b18548286603ffe4b47d679a41cf60f1902895894aa1f","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"46d5d061c7a74cbc09cbdfb3bee9a600867bf4e04c0e4d0ca6c817e6033b32e1","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"cc6878dd130c3f255418e4da74992ae9ba6a3cdb0530772de76c518077d3b12a","src/unix/bsd/apple/mod.rs":"55e2ddba00f002fac0e3ed1c43932423ea6682aaff95491542dce9562c81e217","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"efdfed8f750d6a6233a3a753be80bdb6e06ec9ccdfa5b9246f09aa1d39d3cffe","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"14f0bd6693967d4fedec904f7042bd51f2138cb843ec4df18c911b357417cdd2","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"6523af60c0e4937ad374003c1653e9e721f5b6f11572c747732f76522d07d034","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"b449a5914d3175e0a390bad616370f28fe59efaee3b81c38fb6e556507c2711a","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"ce31af8c04d1a1b384f55f80db14b5f74c59d02c94b3b30288411c9bca5eba04","src/unix/bsd/freebsdlike/freebsd/mod.rs":"a4fc19429762fac85106180e87c4d10a61b4c07563f4e844771fcde71c14fc51","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"6132aa0973454379674ea6cbc77e6eace1e1032dd9f38182071388a036f1bc08","src/unix/bsd/freebsdlike/mod.rs":"9dbe0fcf66f13ba27f163d9f4362c25036ff1973a3b67244bcb3e8f39c3efbfd","src/unix/bsd/mod.rs":"67e0932ebcd1605045744c3f15286204cc547019b0a2696419da1c14c61393f5","src/unix/bsd/netbsdlike/mod.rs":"ceaec69f85bbe5beaf0b2dd73e0fd2b7fa49c0ea9727dcf51415f99bd2bc4b9c","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"b38fc046f9a40fea28bd26328b96629f4d5d63d7524936bd6af1865d401a8716","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"6b30cadcf243eb6098cad6ec869f4739570df0f356aefd826ef1c347c146685c","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/mod.rs":"ac6fff797511b00659849242b997de4d9f948698b5677de928375fc84d2ac1f3","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"e59b7fd65f68f8e857eec39e0c03bac1d3af6ddc26c9ba58494336b83659bb9b","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"cb829d468fecc8dacf3f03f5808f0c265a62dc82e34a208a025a8b903027a121","src/unix/haiku/native.rs":"fd34e56a7b27591d83a980c92afefc543df9a2d4fe64c732d2b7d6aea31ac0a3","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"433c1530f602cc5ed26610c58055dde0c4ceea5e00150063b24ddc60768332a4","src/unix/linux_like/android/b32/mod.rs":"d971b98530a96f5892f98e1edc3133cf278d1b3939d77ab0a27a6323e0961715","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"8fe667d2b14abc5ac8aad32e16c3da24350471d8156eaea9ab4989f73dd9f9fc","src/unix/linux_like/android/b64/mod.rs":"5d94d05d8c10a748f0b1f67a4abaf4dd8415351e14e3bc6c84f6a46c8e18874c","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"06b22dc184e85a988ab969c75cadc52b9878faeab0eb9d21215878c95fe07c19","src/unix/linux_like/android/mod.rs":"9e79edebb5c7b1b62f0e253570d02338a50f06fdb2fd4b27488e0ae50871a836","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"6ef97140ca6fb24125fdd0aacb986ef785aa21993229660d7f703f8875ebfe49","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"ff1fe8fad4ea15d9bec3db25efcfcb4939190c5189f86cfa4d05825aa8c10956","src/unix/linux_like/linux/arch/mips/mod.rs":"e4a980b002105aaa057eb6568e1e2c6168ade5c00e13a31ef67e316ddffdb900","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"ded708124ee610267d011dee31fb02d1ec697c334aa822776ec95a7ddf6fc541","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"07adf9f4b96854062db518aaf08521fde0ad4a21a5c049efccba437bd97b2b5a","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"1cb5c0c9df3af2bbe131a91593583259fac9118931744c8435e197a394eb0462","src/unix/linux_like/linux/gnu/b32/mod.rs":"794dbcbae7dae8fd6b0b814573243197ceb532b56ef0772ad86b4b401478fcd9","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"9c628cd97806181dc4d34b072f63fe1eb42f08108712002e0628ffe27f2fa93f","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"1bcec269a8416ccc48a384ca5765eaaa23f30f39f32311f50008ef4eeadafb2f","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"5317dbf2323577b89370bbee3894882b89d8333176db4f7b271ddc2f036ef43c","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c3730792dabcc166d8fd22929ef2633d49bc626875382dfcd401e8e125fb7a84","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"68bcb71bbfccb4e8648948e494366d94767ce96f36daab9c1329375cdd32a459","src/unix/linux_like/linux/gnu/b64/mod.rs":"6336065423c26b59681fd2ce77f1117ea36af13e163fdadaefd108bd8191e8c8","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"18edaa89c9746125863ff53182e0ef32cb1e1612e1ed9a2672558a9de85440e9","src/unix/linux_like/linux/gnu/b64/s390x.rs":"d9bb4e524e70d6fef49e0f77d89a92f478fd95d9a1aea32f4dc845275a7465d4","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"26fda11bdce99372c2c246e60866b56d98beb9fb49a2f6b69347ecfd03d18255","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"5a5ce7c5c92f60d8900dce63d363a38f3126aaf5be981710e172bec96ef95ac6","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"5597b67f1cfc4e2012540a8cebf17ff139363c0835834ca8f308952ffe6e99c9","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"d6f8e72a6d67e0af6d1f7a09420f92906a52ae226a66f43268064249ce7019df","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"6255abe2ee04986832d12b7b2190589580f2a43e9bfb285b32b5747227f62727","src/unix/linux_like/linux/musl/b32/hexagon.rs":"a8811791809672be8338e6e27d1c4fcf383c2f26585be8bf9ab2923b219de032","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"b9e9ff42363ebbb884ddf6445129ec4164471df45846874fc08f5f458e659254","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"4592dc5f1f2fe888dfef85fa862d42d168e73a2c6f4fc052b58287d0f4d4ffcd","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"a19a8decfab185af3cebd34aae4b15082e7552be573904b8c1a3f0c0e493ef34","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"a73035c6d9b776f13b839008e15c04c2c53455571efd06664affcb047e457112","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d18abc0aeba2e26342bf3416a4dba0836db2bb0ee013b0a39629475cf8640289","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"e5a55525b42493923956d668f978fb45e22d51deea00ce5edbfddf76ff19c741","src/unix/linux_like/linux/musl/b64/s390x.rs":"03dfec6794d93cb31a7c52b2d53a0973755168f91f8fa437cc5dbd54882c8ee7","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"0dd168f5a6881f32e5239fb312b23cf137b800d0ff323286a92c8a2c382b5456","src/unix/linux_like/linux/musl/mod.rs":"0602b1ee75b70eea30ad64234c9c6e772b6a73262ce886971781a2bcf923f9b4","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"9b691eeec0a9bf7b2abb87e09062d2c148d18e11c96ecad0edd0b74d1d0509fd","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"18753a99b820d69e062e3ba22a63fa86577b6dcc42f740479c7be1a4c658e1be","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"656fbf5157ab6d06fc365a8353b138818ad5b8429ea5628ff35a3972c63a1a7c","src/unix/linux_like/linux/uclibc/mod.rs":"22f712c3e08fd8cb37e274718de1bac09966a4cd4b0f018f28737bc30940b8af","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"bb31053d6403091e11f95ac2203982f279f8b984a19adf30796878c45fdd8c25","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"02e21c0550a423a3f6db0a0af6a0f37cf5937feb2562a490e0ad0e09a8d9fc77","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"9f6eadebed153e31777482932dae2f3fd3471d5b5465099f98f1e2a9429922fe","src/unix/mod.rs":"0550f5ed6a8292e62781cdfcca54b0f2652dd279314d1b73db555fccfb059499","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/espidf/mod.rs":"c198cb4beccdab483be61c102da74dc51ac80f766797e33021f3110394ed5a3d","src/unix/newlib/mod.rs":"07c282da3fedf04d061c70ab918b561ba44e5d67670e0b04664505afc9c5979f","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"251ade5cbe9d648ba7186f58dfe7d4fd8e08be1ab9d0d51bba13e0bf3a0207d0","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"be7cf5334fc8f2c6bc1b856288e53af7f90a92bd64793eb19b60b660383e508c","src/unix/solarish/mod.rs":"a5e87e2197011ceae4d6aa1bc8a16d2e01dd39583448e6809f32ba58143baee9","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"2689e3cad6461682892fcae8a23c0c51600e4750c147dd8d7538c6c6c876b7ec","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"3800e710a40322fe0229f7665b18542dc066680c4d151e3c4f29f82202a1c294","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"2b960d585c2fc0c82659cc4caeaa3268e67a8de0a0390d084629eefd39a14c8d","src/windows/msvc.rs":"ea6d87a6a9cd668261b1c043e7c36cf599e80b5d09f6e4502e85daa4797c7927","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"a7f823d141fe0a24df1e23b4af4e3c7ba9e5966ec514ea068c93024aa7deb765"}
+\ No newline at end of file
++{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"9d8cd25bb60fc4bb42c4b034bfa26ba45a691fd7cae155dab8f8b5819fe12647","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"8e0e8d33cc9e7c25cde75c2b502420f943266a681024169f94084774b422681d","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"975b86cbe0335d64082ca88bb24f0e3402371f6f5b33e940c4e12ce4342bb658","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"d4f7452c0fe720f3a961b918b74ec86d19cef33e6b4aac08efbbad6f6d818e09","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"6a4ce300da0d2b0db04b18548286603ffe4b47d679a41cf60f1902895894aa1f","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"46d5d061c7a74cbc09cbdfb3bee9a600867bf4e04c0e4d0ca6c817e6033b32e1","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"cc6878dd130c3f255418e4da74992ae9ba6a3cdb0530772de76c518077d3b12a","src/unix/bsd/apple/mod.rs":"55e2ddba00f002fac0e3ed1c43932423ea6682aaff95491542dce9562c81e217","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"efdfed8f750d6a6233a3a753be80bdb6e06ec9ccdfa5b9246f09aa1d39d3cffe","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"14f0bd6693967d4fedec904f7042bd51f2138cb843ec4df18c911b357417cdd2","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"6523af60c0e4937ad374003c1653e9e721f5b6f11572c747732f76522d07d034","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"b449a5914d3175e0a390bad616370f28fe59efaee3b81c38fb6e556507c2711a","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"ce31af8c04d1a1b384f55f80db14b5f74c59d02c94b3b30288411c9bca5eba04","src/unix/bsd/freebsdlike/freebsd/mod.rs":"a4fc19429762fac85106180e87c4d10a61b4c07563f4e844771fcde71c14fc51","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"6132aa0973454379674ea6cbc77e6eace1e1032dd9f38182071388a036f1bc08","src/unix/bsd/freebsdlike/mod.rs":"9dbe0fcf66f13ba27f163d9f4362c25036ff1973a3b67244bcb3e8f39c3efbfd","src/unix/bsd/mod.rs":"67e0932ebcd1605045744c3f15286204cc547019b0a2696419da1c14c61393f5","src/unix/bsd/netbsdlike/mod.rs":"ceaec69f85bbe5beaf0b2dd73e0fd2b7fa49c0ea9727dcf51415f99bd2bc4b9c","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"b38fc046f9a40fea28bd26328b96629f4d5d63d7524936bd6af1865d401a8716","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"6b30cadcf243eb6098cad6ec869f4739570df0f356aefd826ef1c347c146685c","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/mod.rs":"ac6fff797511b00659849242b997de4d9f948698b5677de928375fc84d2ac1f3","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"e59b7fd65f68f8e857eec39e0c03bac1d3af6ddc26c9ba58494336b83659bb9b","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"cb829d468fecc8dacf3f03f5808f0c265a62dc82e34a208a025a8b903027a121","src/unix/haiku/native.rs":"fd34e56a7b27591d83a980c92afefc543df9a2d4fe64c732d2b7d6aea31ac0a3","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"433c1530f602cc5ed26610c58055dde0c4ceea5e00150063b24ddc60768332a4","src/unix/linux_like/android/b32/mod.rs":"d971b98530a96f5892f98e1edc3133cf278d1b3939d77ab0a27a6323e0961715","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"8fe667d2b14abc5ac8aad32e16c3da24350471d8156eaea9ab4989f73dd9f9fc","src/unix/linux_like/android/b64/mod.rs":"5d94d05d8c10a748f0b1f67a4abaf4dd8415351e14e3bc6c84f6a46c8e18874c","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"06b22dc184e85a988ab969c75cadc52b9878faeab0eb9d21215878c95fe07c19","src/unix/linux_like/android/mod.rs":"9e79edebb5c7b1b62f0e253570d02338a50f06fdb2fd4b27488e0ae50871a836","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"6ef97140ca6fb24125fdd0aacb986ef785aa21993229660d7f703f8875ebfe49","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"ff1fe8fad4ea15d9bec3db25efcfcb4939190c5189f86cfa4d05825aa8c10956","src/unix/linux_like/linux/arch/mips/mod.rs":"e4a980b002105aaa057eb6568e1e2c6168ade5c00e13a31ef67e316ddffdb900","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"ded708124ee610267d011dee31fb02d1ec697c334aa822776ec95a7ddf6fc541","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"07adf9f4b96854062db518aaf08521fde0ad4a21a5c049efccba437bd97b2b5a","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"1cb5c0c9df3af2bbe131a91593583259fac9118931744c8435e197a394eb0462","src/unix/linux_like/linux/gnu/b32/mod.rs":"794dbcbae7dae8fd6b0b814573243197ceb532b56ef0772ad86b4b401478fcd9","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"9c628cd97806181dc4d34b072f63fe1eb42f08108712002e0628ffe27f2fa93f","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"1bcec269a8416ccc48a384ca5765eaaa23f30f39f32311f50008ef4eeadafb2f","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"5317dbf2323577b89370bbee3894882b89d8333176db4f7b271ddc2f036ef43c","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c3730792dabcc166d8fd22929ef2633d49bc626875382dfcd401e8e125fb7a84","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"68bcb71bbfccb4e8648948e494366d94767ce96f36daab9c1329375cdd32a459","src/unix/linux_like/linux/gnu/b64/mod.rs":"6336065423c26b59681fd2ce77f1117ea36af13e163fdadaefd108bd8191e8c8","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"18edaa89c9746125863ff53182e0ef32cb1e1612e1ed9a2672558a9de85440e9","src/unix/linux_like/linux/gnu/b64/s390x.rs":"d9bb4e524e70d6fef49e0f77d89a92f478fd95d9a1aea32f4dc845275a7465d4","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"26fda11bdce99372c2c246e60866b56d98beb9fb49a2f6b69347ecfd03d18255","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"5a5ce7c5c92f60d8900dce63d363a38f3126aaf5be981710e172bec96ef95ac6","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"5597b67f1cfc4e2012540a8cebf17ff139363c0835834ca8f308952ffe6e99c9","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"d6f8e72a6d67e0af6d1f7a09420f92906a52ae226a66f43268064249ce7019df","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"6255abe2ee04986832d12b7b2190589580f2a43e9bfb285b32b5747227f62727","src/unix/linux_like/linux/musl/b32/hexagon.rs":"a8811791809672be8338e6e27d1c4fcf383c2f26585be8bf9ab2923b219de032","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"b9e9ff42363ebbb884ddf6445129ec4164471df45846874fc08f5f458e659254","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"4592dc5f1f2fe888dfef85fa862d42d168e73a2c6f4fc052b58287d0f4d4ffcd","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"a19a8decfab185af3cebd34aae4b15082e7552be573904b8c1a3f0c0e493ef34","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"a73035c6d9b776f13b839008e15c04c2c53455571efd06664affcb047e457112","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d847206d9f2d594c8febe780a938cdccf40d985dafc11e90f235947735a09bac","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"e5a55525b42493923956d668f978fb45e22d51deea00ce5edbfddf76ff19c741","src/unix/linux_like/linux/musl/b64/s390x.rs":"03dfec6794d93cb31a7c52b2d53a0973755168f91f8fa437cc5dbd54882c8ee7","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"0dd168f5a6881f32e5239fb312b23cf137b800d0ff323286a92c8a2c382b5456","src/unix/linux_like/linux/musl/mod.rs":"b69394bbcab5c452d3d3c04541a35702b9394f52cf63628449a5a2b61059517a","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"9b691eeec0a9bf7b2abb87e09062d2c148d18e11c96ecad0edd0b74d1d0509fd","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"18753a99b820d69e062e3ba22a63fa86577b6dcc42f740479c7be1a4c658e1be","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"656fbf5157ab6d06fc365a8353b138818ad5b8429ea5628ff35a3972c63a1a7c","src/unix/linux_like/linux/uclibc/mod.rs":"22f712c3e08fd8cb37e274718de1bac09966a4cd4b0f018f28737bc30940b8af","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"bb31053d6403091e11f95ac2203982f279f8b984a19adf30796878c45fdd8c25","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"02e21c0550a423a3f6db0a0af6a0f37cf5937feb2562a490e0ad0e09a8d9fc77","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"9f6eadebed153e31777482932dae2f3fd3471d5b5465099f98f1e2a9429922fe","src/unix/mod.rs":"0550f5ed6a8292e62781cdfcca54b0f2652dd279314d1b73db555fccfb059499","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/espidf/mod.rs":"c198cb4beccdab483be61c102da74dc51ac80f766797e33021f3110394ed5a3d","src/unix/newlib/mod.rs":"07c282da3fedf04d061c70ab918b561ba44e5d67670e0b04664505afc9c5979f","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"251ade5cbe9d648ba7186f58dfe7d4fd8e08be1ab9d0d51bba13e0bf3a0207d0","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"be7cf5334fc8f2c6bc1b856288e53af7f90a92bd64793eb19b60b660383e508c","src/unix/solarish/mod.rs":"a5e87e2197011ceae4d6aa1bc8a16d2e01dd39583448e6809f32ba58143baee9","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"2689e3cad6461682892fcae8a23c0c51600e4750c147dd8d7538c6c6c876b7ec","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"3800e710a40322fe0229f7665b18542dc066680c4d151e3c4f29f82202a1c294","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"2b960d585c2fc0c82659cc4caeaa3268e67a8de0a0390d084629eefd39a14c8d","src/windows/msvc.rs":"ea6d87a6a9cd668261b1c043e7c36cf599e80b5d09f6e4502e85daa4797c7927","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"a7f823d141fe0a24df1e23b4af4e3c7ba9e5966ec514ea068c93024aa7deb765"}
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs_1.54.0.bb b/poky/meta/recipes-devtools/rust/libstd-rs_1.54.0.bb
deleted file mode 100644
index 1239f6a..0000000
--- a/poky/meta/recipes-devtools/rust/libstd-rs_1.54.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require rust-source-${PV}.inc
-require libstd-rs.inc
-
-SRC_URI += " \
-            file://0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch;patchdir=../../ \
-            file://0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch;patchdir=../../ \
-            file://0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch;patchdir=../../ \
-            file://0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch;patchdir=../../ \
-            "
-# libstd moved from src/libstd to library/std in 1.47+
-S = "${RUSTSRC}/library/std"
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs_1.56.0.bb b/poky/meta/recipes-devtools/rust/libstd-rs_1.56.0.bb
new file mode 100644
index 0000000..e50665e
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs_1.56.0.bb
@@ -0,0 +1,11 @@
+require rust-source.inc
+require libstd-rs.inc
+
+SRC_URI += " \
+    file://0005-Add-base-definitions-for-riscv64-musl-libc.patch;patchdir=../../ \
+    file://0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch;patchdir=../../ \
+    file://0007-FIXUP-Correct-definitions-to-match-musl.patch;patchdir=../../ \
+    file://0008-Update-checksums-for-modified-files-for-rust.patch;patchdir=../../ \
+"
+# libstd moved from src/libstd to library/std in 1.47+
+S = "${RUSTSRC}/library/std"
diff --git a/poky/meta/recipes-devtools/rust/rust-common.inc b/poky/meta/recipes-devtools/rust/rust-common.inc
index 153fa3a..ceeee97 100644
--- a/poky/meta/recipes-devtools/rust/rust-common.inc
+++ b/poky/meta/recipes-devtools/rust/rust-common.inc
@@ -119,22 +119,22 @@
 
 
 ## arm-unknown-linux-gnueabihf
-DATA_LAYOUT[arm] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
-LLVM_TARGET[arm] = "${RUST_TARGET_SYS}"
-TARGET_ENDIAN[arm] = "little"
-TARGET_POINTER_WIDTH[arm] = "32"
-TARGET_C_INT_WIDTH[arm] = "32"
-MAX_ATOMIC_WIDTH[arm] = "64"
-FEATURES[arm] = "+v6,+vfp2"
+DATA_LAYOUT[arm-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
+LLVM_TARGET[arm-eabi] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[arm-eabi] = "little"
+TARGET_POINTER_WIDTH[arm-eabi] = "32"
+TARGET_C_INT_WIDTH[arm-eabi] = "32"
+MAX_ATOMIC_WIDTH[arm-eabi] = "64"
+FEATURES[arm-eabi] = "+v6,+vfp2"
 
 ## armv7-unknown-linux-gnueabihf
-DATA_LAYOUT[armv7] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
-LLVM_TARGET[armv7] = "${RUST_TARGET_SYS}"
-TARGET_ENDIAN[armv7] = "little"
-TARGET_POINTER_WIDTH[armv7] = "32"
-TARGET_C_INT_WIDTH[armv7] = "32"
-MAX_ATOMIC_WIDTH[armv7] = "64"
-FEATURES[armv7] = "+v7,+vfp2,+thumb2"
+DATA_LAYOUT[armv7-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
+LLVM_TARGET[armv7-eabi] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[armv7-eabi] = "little"
+TARGET_POINTER_WIDTH[armv7-eabi] = "32"
+TARGET_C_INT_WIDTH[armv7-eabi] = "32"
+MAX_ATOMIC_WIDTH[armv7-eabi] = "64"
+FEATURES[armv7-eabi] = "+v7,+vfp2,+thumb2"
 
 ## aarch64-unknown-linux-{gnu, musl}
 DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
@@ -152,6 +152,14 @@
 TARGET_C_INT_WIDTH[x86_64] = "32"
 MAX_ATOMIC_WIDTH[x86_64] = "64"
 
+## x86_64-unknown-linux-gnux32
+DATA_LAYOUT[x86_64-x32] = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+LLVM_TARGET[x86_64-x32] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[x86_64-x32] = "little"
+TARGET_POINTER_WIDTH[x86_64-x32] = "32"
+TARGET_C_INT_WIDTH[x86_64-x32] = "32"
+MAX_ATOMIC_WIDTH[x86_64-x32] = "64"
+
 ## i686-unknown-linux-{gnu, musl}
 DATA_LAYOUT[i686] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
 LLVM_TARGET[i686] = "${RUST_TARGET_SYS}"
@@ -208,6 +216,14 @@
 TARGET_C_INT_WIDTH[powerpc] = "32"
 MAX_ATOMIC_WIDTH[powerpc] = "32"
 
+## powerpc64-unknown-linux-{gnu, musl}
+DATA_LAYOUT[powerpc64] = "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512"
+LLVM_TARGET[powerpc64] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[powerpc64] = "big"
+TARGET_POINTER_WIDTH[powerpc64] = "64"
+TARGET_C_INT_WIDTH[powerpc64] = "64"
+MAX_ATOMIC_WIDTH[powerpc64] = "64"
+
 ## powerpc64le-unknown-linux-{gnu, musl}
 DATA_LAYOUT[powerpc64le] = "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512"
 LLVM_TARGET[powerpc64le] = "${RUST_TARGET_SYS}"
@@ -292,22 +308,27 @@
 # (original) target.
 TARGET_LLVM_FEATURES:class-native = "${@','.join(llvm_features_from_cc_arch(d))}"
 
-def rust_gen_target(d, thing, wd, features, cpu, arch):
+def rust_gen_target(d, thing, wd, features, cpu, arch, abi=""):
     import json
     sys = sys_for(d, thing)
     prefix = prefix_for(d, thing)
 
-    features = features or d.getVarFlag('FEATURES', arch) or ""
+    if abi:
+        arch_abi = "{}-{}".format(arch, abi)
+    else:
+        arch_abi = arch
+
+    features = features or d.getVarFlag('FEATURES', arch_abi) or ""
     features = features.strip()
 
     # build tspec
     tspec = {}
-    tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch)
-    tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch)
-    tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch))
-    tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch)
-    tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch)
-    tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch)
+    tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch_abi)
+    tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch_abi)
+    tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch_abi))
+    tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch_abi)
+    tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch_abi)
+    tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch_abi)
     tspec['arch'] = arch_to_rust_target_arch(arch)
     tspec['os'] = "linux"
     if "musl" in tspec['llvm-target']:
@@ -321,7 +342,6 @@
     tspec['vendor'] = "unknown"
     tspec['target-family'] = "unix"
     tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
-    tspec['ar'] = "{}ar".format(prefix)
     tspec['cpu'] = cpu
     if features != "":
         tspec['features'] = features
diff --git a/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.54.0.bb b/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.54.0.bb
deleted file mode 100644
index a5d02eb..0000000
--- a/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.54.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require rust-cross-canadian.inc
-require rust-source-${PV}.inc
-require rust-snapshot-${PV}.inc
-
-FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"
-
diff --git a/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.56.0.bb b/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.56.0.bb
new file mode 100644
index 0000000..766912c
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.56.0.bb
@@ -0,0 +1,6 @@
+require rust-cross-canadian.inc
+require rust-source.inc
+require rust-snapshot.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"
+
diff --git a/poky/meta/recipes-devtools/rust/rust-cross.inc b/poky/meta/recipes-devtools/rust/rust-cross.inc
index bee7c9f..bb625f4 100644
--- a/poky/meta/recipes-devtools/rust/rust-cross.inc
+++ b/poky/meta/recipes-devtools/rust/rust-cross.inc
@@ -11,13 +11,15 @@
         features = ""
         cpu = "generic"
         arch = d.getVar('{}_ARCH'.format(thing))
+        abi = ""
         if thing is "TARGET":
+            abi = d.getVar('ABIEXTENSION')
             # arm and armv7 have different targets in llvm
             if arch == "arm" and target_is_armv7(d):
                 arch = 'armv7'
             features = d.getVar('TARGET_LLVM_FEATURES') or ""
             cpu = d.getVar('TARGET_LLVM_CPU')
-        rust_gen_target(d, thing, wd, features, cpu, arch)
+        rust_gen_target(d, thing, wd, features, cpu, arch, abi)
 }
 
 # Otherwise we'll depend on what we provide
@@ -32,7 +34,7 @@
 DEPENDS += "rust-native"
 
 PROVIDES = "virtual/${TARGET_PREFIX}rust"
-PN = "rust-cross-${TARGET_ARCH}"
+PN = "rust-cross-${TARGET_ARCH}-${TCLIBC}"
 
 # In the cross compilation case, rustc doesn't seem to get the rpath quite
 # right. It manages to include '../../lib/${TARGET_PREFIX}', but doesn't
diff --git a/poky/meta/recipes-devtools/rust/rust-cross_1.54.0.bb b/poky/meta/recipes-devtools/rust/rust-cross_1.54.0.bb
deleted file mode 100644
index ddc25d3..0000000
--- a/poky/meta/recipes-devtools/rust/rust-cross_1.54.0.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require rust-cross.inc
-require rust-source-${PV}.inc
diff --git a/poky/meta/recipes-devtools/rust/rust-cross_1.56.0.bb b/poky/meta/recipes-devtools/rust/rust-cross_1.56.0.bb
new file mode 100644
index 0000000..3179d39
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-cross_1.56.0.bb
@@ -0,0 +1,2 @@
+require rust-cross.inc
+require rust-source.inc
diff --git a/poky/meta/recipes-devtools/rust/rust-llvm.inc b/poky/meta/recipes-devtools/rust/rust-llvm.inc
index d7f4453..0f8fb78 100644
--- a/poky/meta/recipes-devtools/rust/rust-llvm.inc
+++ b/poky/meta/recipes-devtools/rust/rust-llvm.inc
@@ -15,6 +15,11 @@
 ARM_INSTRUCTION_SET:armv5 = "arm"
 ARM_INSTRUCTION_SET:armv4t = "arm"
 
+# rustc_llvm with debug info is not recognized as a valid crate that's
+# generated by rust-llvm-native.
+CFLAGS:remove = "-g"
+CXXFLAGS:remove = "-g"
+
 LLVM_DIR = "llvm${LLVM_RELEASE}"
 
 EXTRA_OECMAKE = " \
diff --git a/poky/meta/recipes-devtools/rust/rust-llvm_1.54.0.bb b/poky/meta/recipes-devtools/rust/rust-llvm_1.54.0.bb
deleted file mode 100644
index 81b2bd1..0000000
--- a/poky/meta/recipes-devtools/rust/rust-llvm_1.54.0.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-# check src/llvm-project/llvm/CMakeLists.txt for llvm version in use
-#
-LLVM_RELEASE = "12.0.1"
-require rust-source-${PV}.inc
-require rust-llvm.inc
diff --git a/poky/meta/recipes-devtools/rust/rust-llvm_1.56.0.bb b/poky/meta/recipes-devtools/rust/rust-llvm_1.56.0.bb
new file mode 100644
index 0000000..222c20a
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-llvm_1.56.0.bb
@@ -0,0 +1,5 @@
+# check src/llvm-project/llvm/CMakeLists.txt for llvm version in use
+#
+LLVM_RELEASE = "13.0.0"
+require rust-source.inc
+require rust-llvm.inc
diff --git a/poky/meta/recipes-devtools/rust/rust-snapshot-1.54.0.inc b/poky/meta/recipes-devtools/rust/rust-snapshot-1.54.0.inc
deleted file mode 100644
index 598f4ed..0000000
--- a/poky/meta/recipes-devtools/rust/rust-snapshot-1.54.0.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-require rust-snapshot.inc
-
-## This is information on the rust-snapshot (binary) used to build our current release.
-## snapshot info is taken from rust/src/stage0.txt
-## TODO: find a way to add additional SRC_URIs based on the contents of an
-##       earlier SRC_URI.
-RS_VERSION = "1.53.0"
-CARGO_VERSION = "1.53.0"
-
-# TODO: Add hashes for other architecture toolchains as well. Make a script?
-SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "66d5257bbd194db08e67ca63a74cc80cdc4a36eaa30bf7dfe65861d9deaff7f7"
-SRC_URI[rustc-snapshot-x86_64.sha256sum] = "9c2f0443a546dd18f1f020c7711a7b9864432545ceb812e79315c1e76508b193"
-SRC_URI[cargo-snapshot-x86_64.sha256sum] = "e4437f6c83574fc60e183f4df439190f7610e4a669476802795645da66fbb83b"
-
-SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "fc261d0ff057c58b36057c30217bad1a29a9a3f257c70f5df88ad3f1d982386e"
-SRC_URI[rustc-snapshot-aarch64.sha256sum] = "a857e5c615f6b5b3afc6b707ae007b3b4624585b0b2ba9b38b553114db37f8d5"
-SRC_URI[cargo-snapshot-aarch64.sha256sum] = "4fa425a2d4633aeca67fa42695b3b9100f8b988dd1c21e60d6b2aa1164e55c0c"
-
diff --git a/poky/meta/recipes-devtools/rust/rust-snapshot.inc b/poky/meta/recipes-devtools/rust/rust-snapshot.inc
index 79d03af..18e98d7 100644
--- a/poky/meta/recipes-devtools/rust/rust-snapshot.inc
+++ b/poky/meta/recipes-devtools/rust/rust-snapshot.inc
@@ -1,3 +1,19 @@
+## This is information on the rust-snapshot (binary) used to build our current release.
+## snapshot info is taken from rust/src/stage0.txt
+## TODO: find a way to add additional SRC_URIs based on the contents of an
+##       earlier SRC_URI.
+RS_VERSION = "1.56.0"
+CARGO_VERSION = "1.56.0"
+
+# TODO: Add hashes for other architecture toolchains as well. Make a script?
+SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "f693e4f41a959d62528e0043b0b010c4815fb9f5887267ae34ff8b860f8ec4ae"
+SRC_URI[rustc-snapshot-x86_64.sha256sum] = "2a5f919e2036496c02ab4707a5eb8bd8a4ce6ea589e01cb39f25d213a26dcdfe"
+SRC_URI[cargo-snapshot-x86_64.sha256sum] = "f972125810d2db7df2e0af56d9f6a3dcdacc52d983bdf0ca17309b45fc44209b"
+
+SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "3cd1c69c618e5efaf578a156c2a950c93964f9b47ba4d705d5700bdc64880231"
+SRC_URI[rustc-snapshot-aarch64.sha256sum] = "0d2491a59f697d2ea52fc429b8d4665acb5f79b0e16703f3604b61b8aa68d1c4"
+SRC_URI[cargo-snapshot-aarch64.sha256sum] = "9d97cd655845572846c058577f68ea74b6111f8ea7649db308f786475f764a09"
+
 SRC_URI += " \
     https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
     https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
diff --git a/poky/meta/recipes-devtools/rust/rust-source-1.54.0.inc b/poky/meta/recipes-devtools/rust/rust-source-1.54.0.inc
deleted file mode 100644
index 335c7ce..0000000
--- a/poky/meta/recipes-devtools/rust/rust-source-1.54.0.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-require rust-source.inc
-
-SRC_URI[rust.sha256sum] = "a2934f85f76a35a3796c0fefd31e91f5b6dd8377cd8c3769c1c10e7ce7a495f4"
diff --git a/poky/meta/recipes-devtools/rust/rust-source.inc b/poky/meta/recipes-devtools/rust/rust-source.inc
index 1529ecf..326a592 100644
--- a/poky/meta/recipes-devtools/rust/rust-source.inc
+++ b/poky/meta/recipes-devtools/rust/rust-source.inc
@@ -1,4 +1,5 @@
 SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
+SRC_URI[rust.sha256sum] = "f13468889833c88e744ad579c5d8fbb7ecb53216159b54481a90e5dcdaa9e320"
 
 RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
 
diff --git a/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.54.0.bb b/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.54.0.bb
deleted file mode 100644
index 053147b..0000000
--- a/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.54.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require rust-tools-cross-canadian.inc
-require rust-source-${PV}.inc
-require rust-snapshot-${PV}.inc
-
-FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"
-
diff --git a/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.56.0.bb b/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.56.0.bb
new file mode 100644
index 0000000..2d809d6
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.56.0.bb
@@ -0,0 +1,6 @@
+require rust-tools-cross-canadian.inc
+require rust-source.inc
+require rust-snapshot.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"
+
diff --git a/poky/meta/recipes-devtools/rust/rust.inc b/poky/meta/recipes-devtools/rust/rust.inc
index dc92cf5..1d6f99a 100644
--- a/poky/meta/recipes-devtools/rust/rust.inc
+++ b/poky/meta/recipes-devtools/rust/rust.inc
@@ -61,6 +61,7 @@
 }
 addtask rust_setup_snapshot after do_unpack before do_configure
 do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
+do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
 
 python do_configure() {
     import json
diff --git a/poky/meta/recipes-devtools/rust/rust_1.54.0.bb b/poky/meta/recipes-devtools/rust/rust_1.54.0.bb
deleted file mode 100644
index e7d8d70..0000000
--- a/poky/meta/recipes-devtools/rust/rust_1.54.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require rust-target.inc
-require rust-source-${PV}.inc
-require rust-snapshot-${PV}.inc
-
-INSANE_SKIP:${PN}:class-native = "already-stripped"
-
-do_compile () {
-    rust_runx build --stage 2
-}
-
-rust_do_install() {
-    rust_runx install
-}
-
-python () {
-    pn = d.getVar('PN')
-
-    if not pn.endswith("-native"):
-        raise bb.parse.SkipRecipe("Rust recipe doesn't work for target builds at this time. Fixes welcome.")
-}
diff --git a/poky/meta/recipes-devtools/rust/rust_1.56.0.bb b/poky/meta/recipes-devtools/rust/rust_1.56.0.bb
new file mode 100644
index 0000000..036fb43
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust_1.56.0.bb
@@ -0,0 +1,20 @@
+require rust-target.inc
+require rust-source.inc
+require rust-snapshot.inc
+
+INSANE_SKIP:${PN}:class-native = "already-stripped"
+
+do_compile () {
+    rust_runx build --stage 2
+}
+
+rust_do_install() {
+    rust_runx install
+}
+
+python () {
+    pn = d.getVar('PN')
+
+    if not pn.endswith("-native"):
+        raise bb.parse.SkipRecipe("Rust recipe doesn't work for target builds at this time. Fixes welcome.")
+}
diff --git a/poky/meta/recipes-devtools/strace/strace/run-ptest b/poky/meta/recipes-devtools/strace/strace/run-ptest
index 3a51fb0..02bb91e 100755
--- a/poky/meta/recipes-devtools/strace/strace/run-ptest
+++ b/poky/meta/recipes-devtools/strace/strace/run-ptest
@@ -1,6 +1,15 @@
 #!/bin/sh
+
+set -u
+
 export TIMEOUT_DURATION=240
 chown nobody tests
 chown nobody tests/*
 chown nobody ../ptest
+
 su nobody -c "make -B -C tests -k test-suite.log"
+res=$?
+if [ $res -ne 0 ]; then
+    cat tests/test-suite.log
+fi
+exit $res
diff --git a/poky/meta/recipes-devtools/strace/strace/uintptr_t.patch b/poky/meta/recipes-devtools/strace/strace/uintptr_t.patch
deleted file mode 100644
index 088d685..0000000
--- a/poky/meta/recipes-devtools/strace/strace/uintptr_t.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From a6c9366bfbcef6f3f4bb068b1f1a5623935b5013 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 5 Nov 2019 20:05:08 -0800
-Subject: [PATCH] include stdint.h for getting uintptr_t definition
-
-fixes do_compile_ptest_base
-tests/fanotify_mark.c:191:23: error: 'uintptr_t' undeclared (first use in this function); did you mean 'intptr_t'?
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- tests/fanotify_mark.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tests/fanotify_mark.c b/tests/fanotify_mark.c
-index aade643..de579f3 100644
---- a/tests/fanotify_mark.c
-+++ b/tests/fanotify_mark.c
-@@ -18,6 +18,7 @@
- 
- # include <limits.h>
- # include <stdio.h>
-+# include <stdint.h>
- # include <unistd.h>
- # include <sys/fanotify.h>
- 
diff --git a/poky/meta/recipes-devtools/strace/strace_5.14.bb b/poky/meta/recipes-devtools/strace/strace_5.14.bb
index 02a4843..aa6b06d 100644
--- a/poky/meta/recipes-devtools/strace/strace_5.14.bb
+++ b/poky/meta/recipes-devtools/strace/strace_5.14.bb
@@ -12,7 +12,6 @@
            file://mips-SIGEMT.patch \
            file://0001-caps-abbrev.awk-fix-gawk-s-path.patch \
            file://ptest-spacesave.patch \
-           file://uintptr_t.patch \
            file://0001-strace-fix-reproducibilty-issues.patch \
            "
 SRC_URI[sha256sum] = "901bee6db5e17debad4530dd9ffb4dc9a96c4a656edbe1c3141b7cb307b11e73"
@@ -53,4 +52,3 @@
 "
 
 BBCLASSEXTEND = "native"
-TOOLCHAIN = "gcc"
diff --git a/poky/meta/recipes-devtools/vala/vala_0.52.5.bb b/poky/meta/recipes-devtools/vala/vala_0.52.5.bb
deleted file mode 100644
index 2f78c4a..0000000
--- a/poky/meta/recipes-devtools/vala/vala_0.52.5.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require ${BPN}.inc
-
-SRC_URI += " file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch"
-
-SRC_URI[sha256sum] = "84a1bb312b3e5dcae4b7b25c45598d375e2cb69233cefb59a15d2350c76bdd91"
diff --git a/poky/meta/recipes-devtools/vala/vala_0.54.2.bb b/poky/meta/recipes-devtools/vala/vala_0.54.2.bb
new file mode 100644
index 0000000..faaf761
--- /dev/null
+++ b/poky/meta/recipes-devtools/vala/vala_0.54.2.bb
@@ -0,0 +1,5 @@
+require ${BPN}.inc
+
+SRC_URI += " file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch"
+
+SRC_URI[sha256sum] = "884de745317d4d56e4e8cede993dc8f04d50cfca36cf60d2f2f278c30c2b1311"
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-Add-missing-musl.supp.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-Add-missing-musl.supp.patch
deleted file mode 100644
index 2a73f7e..0000000
--- a/poky/meta/recipes-devtools/valgrind/valgrind/0001-Add-missing-musl.supp.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 61bc8664f93cd980831c9da4a3e8a385b089a0ab Mon Sep 17 00:00:00 2001
-From: Yi Fan Yu <yifan.yu@windriver.com>
-Date: Tue, 23 Mar 2021 09:32:22 -0700
-Subject: [PATCH] Add missing musl.supp
-
-3.17 did not ship musl.supp in the tarball.
-
-This is a workaround until next release.
-
-Upstream-Status: Backport [dde556d51f8226a6de564a00bf82536bb7042c54]
-
-Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
----
- musl.supp | 46 ++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 46 insertions(+)
- create mode 100644 musl.supp
-
-diff --git a/musl.supp b/musl.supp
-new file mode 100644
-index 000000000..864172a24
---- /dev/null
-+++ b/musl.supp
-@@ -0,0 +1,46 @@
-+# Suppressions for musl libc
-+# See: https://www.openwall.com/lists/musl/2017/06/15/4
-+
-+{
-+   musl-dynlink-false-positive1
-+   Memcheck:Leak
-+   fun:calloc
-+   fun:load_direct_deps
-+   fun:load_deps
-+   fun:load_deps
-+   fun:__dls3
-+   fun:__dls2b
-+   fun:__dls2
-+}
-+
-+{
-+   musl-dynlink-false-positive2
-+   Memcheck:Leak
-+   fun:calloc
-+   fun:load_direct_deps
-+   fun:load_deps
-+   fun:load_deps
-+   fun:__dls3
-+   fun:__dls2
-+}
-+
-+{
-+   musl-dynlink-false-positive3
-+   Memcheck:Leak
-+   fun:calloc
-+   fun:load_library
-+   fun:load_preload
-+   fun:__dls3
-+   fun:__dls2b
-+   fun:__dls2
-+}
-+
-+{
-+   musl-dynlink-false-positive4
-+   Memcheck:Leak
-+   fun:calloc
-+   fun:load_library
-+   fun:load_preload
-+   fun:__dls3
-+   fun:__dls2
-+}
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch
deleted file mode 100644
index 371c170..0000000
--- a/poky/meta/recipes-devtools/valgrind/valgrind/0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 4c8c4a9c3a92300e3e6500e5a278ca37514a1fdb Mon Sep 17 00:00:00 2001
-From: Yi Fan Yu <yifan.yu@windriver.com>
-Date: Thu, 1 Apr 2021 15:31:47 -0400
-Subject: [PATCH] drd/tests/swapcontext: Add SIGALRM handler to avoid
- stacktrace
-
-During testing for oe-core build on QEMU,
-SIGALRM can trigger during nanosleep.
-This results a different stderr output than expected.
-
-```
-==277== Process terminating with default action of signal 14 (SIGALRM)
-==277==    at 0x36C74C3943: clock_nanosleep@@GLIBC_2.17 (clock_nanosleep.c:43)
-==277==    by 0x36C74C8726: nanosleep (nanosleep.c:25)
-```
-
-This stacktrace printing will not occur
-if we add a handler that simply exits.
-
-https://bugs.kde.org/show_bug.cgi?id=435160
-
-Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
----
- drd/tests/swapcontext.c          | 5 +++++
- drd/tests/swapcontext.stderr.exp | 4 ----
- 2 files changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/drd/tests/swapcontext.c b/drd/tests/swapcontext.c
-index 622c70bc5..2cb969a5e 100644
---- a/drd/tests/swapcontext.c
-+++ b/drd/tests/swapcontext.c
-@@ -25,6 +25,10 @@ typedef struct thread_local {
-   size_t nrsw;
- } thread_local_t;
- 
-+static void sig_alrm_handler(int signo) {
-+    _exit(1);
-+}
-+
- static void f(void *data, int n)
- {
-   enum { NR_SWITCHES = 200000 };
-@@ -76,6 +80,7 @@ int main(int argc, char *argv[])
-   pthread_attr_t attr;
-   int i, res;
- 
-+  signal(SIGALRM, sig_alrm_handler);
-   memset(tlocal, 0, sizeof(tlocal));
- 
-   pthread_attr_init(&attr);
-diff --git a/drd/tests/swapcontext.stderr.exp b/drd/tests/swapcontext.stderr.exp
-index fcb5d5ed4..d18786f80 100644
---- a/drd/tests/swapcontext.stderr.exp
-+++ b/drd/tests/swapcontext.stderr.exp
-@@ -1,7 +1,3 @@
- 
- 
--Process terminating with default action of signal 14 (SIGALRM)
--   at 0x........: swapcontext (in /...libc...)
--   by 0x........: f (swapcontext.c:?)
--
- ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch
index 185b8f9..8f771ed 100644
--- a/poky/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch
+++ b/poky/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch
@@ -1,4 +1,4 @@
-From de692e359801a1f0488c76267e4f904dd2efe754 Mon Sep 17 00:00:00 2001
+From 568224da7e647d00abf14a7160997689d9745c89 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 10 Jun 2017 00:39:07 -0700
 Subject: [PATCH] str_tester.c: Limit rawmemchr() test to glibc
@@ -6,34 +6,30 @@
 rawmemchr() is a GNU extention therefore mark it so
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
 Upstream-Status: Pending
-
+---
  memcheck/tests/str_tester.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/memcheck/tests/str_tester.c b/memcheck/tests/str_tester.c
-index 9f7790a..47e4b4a 100644
+index 7c2ff1e..8b82ced 100644
 --- a/memcheck/tests/str_tester.c
 +++ b/memcheck/tests/str_tester.c
 @@ -504,7 +504,7 @@ test_strchrnul (void)
  #endif
  
  // DDD: better done by testing for the function.
--#if !defined(__APPLE__) && !defined(__sun)
-+#if !defined(__APPLE__) && !defined(__sun) && defined(__GLIBC__)
+-#if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__)
++#if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) && defined(__GLIBC__)
  static void
  test_rawmemchr (void)
  {
-@@ -1442,7 +1442,7 @@ main (void)
+@@ -1451,7 +1451,7 @@ main (void)
    test_strchrnul ();
  # endif
  
--# if !defined(__APPLE__) && !defined(__sun)
-+# if !defined(__APPLE__) && !defined(__sun) && defined(__GLIBC__)
+-# if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__)
++# if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) && defined(__GLIBC__)
    /* rawmemchr.  */
    test_rawmemchr ();
  # endif
--- 
-2.13.1
-
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch
index 4570f63..06b19b0 100644
--- a/poky/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch
+++ b/poky/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch
@@ -1,4 +1,4 @@
-From 8f916dcb395fe5a2429f2867ba4daf8ef3af073a Mon Sep 17 00:00:00 2001
+From 59e3190e9121c5439d54298b083b44c5c3794a7f Mon Sep 17 00:00:00 2001
 From: Randy MacLeod <Randy.MacLeod@windriver.com>
 Date: Tue, 16 Oct 2018 21:01:04 -0400
 Subject: [PATCH] Fix out of tree builds.
@@ -16,15 +16,16 @@
 
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
 Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
+
 ---
- configure.ac | 66 ++++++++++++++++++++++++++--------------------------
- 1 file changed, 33 insertions(+), 33 deletions(-)
+ configure.ac | 62 ++++++++++++++++++++++++++--------------------------
+ 1 file changed, 31 insertions(+), 31 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index 524230d..54861c5 100755
+index b851798..d360896 100755
 --- a/configure.ac
 +++ b/configure.ac
-@@ -396,50 +396,50 @@ case "${host_os}" in
+@@ -447,50 +447,50 @@ case "${host_os}" in
  	     9.*)
  		  AC_MSG_RESULT([Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard])
  		  AC_DEFINE([DARWIN_VERS], DARWIN_10_5, [Darwin / Mac OS X version])
@@ -91,7 +92,7 @@
  		  ;;
  	     17.*)
  		  AC_MSG_RESULT([Darwin 17.x (${kernel}) / macOS 10.13 High Sierra])
-@@ -464,7 +464,7 @@ case "${host_os}" in
+@@ -515,7 +515,7 @@ case "${host_os}" in
                   DEFAULT_SUPP="solaris12.supp ${DEFAULT_SUPP}"
                   ;;
               *)
@@ -100,7 +101,7 @@
                   ;;
  	esac
          ;;
-@@ -472,7 +472,7 @@ case "${host_os}" in
+@@ -523,7 +523,7 @@ case "${host_os}" in
       solaris2.12*)
          AC_MSG_RESULT([ok (${host_os})])
          VGCONF_OS="solaris"
@@ -109,7 +110,7 @@
          ;;
  
       *) 
-@@ -1095,29 +1095,29 @@ AC_MSG_CHECKING([the glibc version])
+@@ -1237,15 +1237,15 @@ AC_MSG_CHECKING([the glibc version])
  case "${GLIBC_VERSION}" in
       2.2)
  	AC_MSG_RESULT(${GLIBC_VERSION} family)
@@ -123,44 +124,37 @@
       2.[[3-6]])
  	AC_MSG_RESULT(${GLIBC_VERSION} family)
 -	DEFAULT_SUPP="glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}"
--	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+-	DEFAULT_SUPP="glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
 -	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
 +        DEFAULT_SUPP="$srcdir/glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}"
-+        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
 +        DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  	;;
       2.[[7-9]])
  	AC_MSG_RESULT(${GLIBC_VERSION} family)
- 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
--	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
--	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+        DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
- 	;;
-      2.10|2.11)
- 	AC_MSG_RESULT(${GLIBC_VERSION} family)
+@@ -1258,8 +1258,8 @@ case "${GLIBC_VERSION}" in
  	AC_DEFINE([GLIBC_MANDATORY_STRLEN_REDIRECT], 1,
  		  [Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10)])
  	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
--	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+-	DEFAULT_SUPP="glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
 -	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
 +        DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  	;;
       2.*)
  	AC_MSG_RESULT(${GLIBC_VERSION} family)
-@@ -1126,8 +1126,8 @@ case "${GLIBC_VERSION}" in
+@@ -1268,8 +1268,8 @@ case "${GLIBC_VERSION}" in
  	AC_DEFINE([GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT], 1,
  		  [Define to 1 if index() and strlen() have been optimized heavily (x86 glibc >= 2.12)])
  	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
--	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+-	DEFAULT_SUPP="glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
 -	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
 +        DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  	;;
       darwin)
  	AC_MSG_RESULT(Darwin)
-@@ -1137,7 +1137,7 @@ case "${GLIBC_VERSION}" in
+@@ -1284,7 +1284,7 @@ case "${GLIBC_VERSION}" in
       bionic)
  	AC_MSG_RESULT(Bionic)
  	AC_DEFINE([BIONIC_LIBC], 1, [Define to 1 if you're using Bionic])
@@ -169,7 +163,7 @@
  	;;
       solaris)
  	AC_MSG_RESULT(Solaris)
-@@ -1164,8 +1164,8 @@ if test "$VGCONF_OS" != "solaris"; then
+@@ -1313,8 +1313,8 @@ if test "$VGCONF_OS" != "solaris"; then
      # attempt to detect whether such libraries are installed on the
      # build machine (or even if any X facilities are present); just
      # add the suppressions antidisirregardless.
@@ -180,6 +174,3 @@
  fi
  
  
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch
index 6176640..0224178 100644
--- a/poky/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch
+++ b/poky/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch
@@ -1,30 +1,28 @@
-From b4b9f072c22f96844e02cb9d68f7ff2408680817 Mon Sep 17 00:00:00 2001
+From ace5fe19b3f13039d5d6bd5d99d54c20ea79e09c Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 10 Jun 2017 01:07:59 -0700
-Subject: [PATCH 5/6] tc20_verifywrap.c: Fake __GLIBC_PREREQ with musl
+Subject: [PATCH] tc20_verifywrap.c: Fake __GLIBC_PREREQ with musl
 
 similar to sun
 
 Upstream-Status: Pending
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  helgrind/tests/tc20_verifywrap.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/helgrind/tests/tc20_verifywrap.c b/helgrind/tests/tc20_verifywrap.c
-index c110000..a311a49 100644
+index ae97bde..db2eb70 100644
 --- a/helgrind/tests/tc20_verifywrap.c
 +++ b/helgrind/tests/tc20_verifywrap.c
 @@ -20,7 +20,7 @@
  
- #if !defined(__APPLE__)
+ #if !defined(__APPLE__) && !defined(__FreeBSD__)
  
 -#if defined(__sun__)
 +#if defined(__sun__) || (defined(__linux__) && !defined(__GLIBC__))
  /* Fake __GLIBC_PREREQ on Solaris. Pretend glibc >= 2.4. */
  # define __GLIBC_PREREQ
  #else
--- 
-2.13.1
-
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/200b6a5a0ea3e1e154663b0fc575bfe2becf177d.patch b/poky/meta/recipes-devtools/valgrind/valgrind/200b6a5a0ea3e1e154663b0fc575bfe2becf177d.patch
deleted file mode 100644
index 9a5f6a3..0000000
--- a/poky/meta/recipes-devtools/valgrind/valgrind/200b6a5a0ea3e1e154663b0fc575bfe2becf177d.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 200b6a5a0ea3e1e154663b0fc575bfe2becf177d Mon Sep 17 00:00:00 2001
-From: Mark Wielaard <mark@klomp.org>
-Date: Wed, 21 Jul 2021 17:55:40 +0200
-Subject: [PATCH] m_debuginfo/debuginfo.c VG_(get_fnname_kind) _start is below
- main
-
-With glibc 2.34 we might see the _start symbol as the frame that
-called main instead of directly after __libc_start_main or
-generic_start_main.
-
-Fixes memcheck/tests/badjump[2], memcheck/tests/origin4-many,
-helgrind/tests/tc04_free_lock, helgrind/tests/tc09_bad_unlock
-and helgrind/tests/tc20_verifywrap.
-
-Upstream-Status: Backport
----
- coregrind/m_debuginfo/debuginfo.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/coregrind/m_debuginfo/debuginfo.c b/coregrind/m_debuginfo/debuginfo.c
-index bc2578b377..e2218f2668 100644
---- a/coregrind/m_debuginfo/debuginfo.c
-+++ b/coregrind/m_debuginfo/debuginfo.c
-@@ -2289,6 +2289,7 @@ Vg_FnNameKind VG_(get_fnname_kind) ( const HChar* name )
-        VG_STREQN(18, "__libc_start_main.", name) || // gcc optimization
-        VG_STREQ("generic_start_main", name) ||  // Yellow Dog doggedness
-        VG_STREQN(19, "generic_start_main.", name) || // gcc optimization
-+       VG_STREQ("_start", name) ||
- #      elif defined(VGO_darwin)
-        // See readmacho.c for an explanation of this.
-        VG_STREQ("start_according_to_valgrind", name) ||  // Darwin, darling
--- 
-2.27.0
-
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/52ed51fc35f8a6148c2940eb46932b02dd3b9b23.patch b/poky/meta/recipes-devtools/valgrind/valgrind/52ed51fc35f8a6148c2940eb46932b02dd3b9b23.patch
deleted file mode 100644
index 451a459..0000000
--- a/poky/meta/recipes-devtools/valgrind/valgrind/52ed51fc35f8a6148c2940eb46932b02dd3b9b23.patch
+++ /dev/null
@@ -1,171 +0,0 @@
-From 52ed51fc35f8a6148c2940eb46932b02dd3b9b23 Mon Sep 17 00:00:00 2001
-From: Mark Wielaard <mark@klomp.org>
-Date: Wed, 21 Jul 2021 19:53:13 +0200
-Subject: [PATCH] Generate a ENOSYS (sys_ni_syscall) for clone3 on all linux
- arches
-
-glibc 2.34 will try to use clone3 first before falling back to
-the clone syscall. So implement clone3 as sys_ni_syscall which
-simply return ENOSYS without producing a warning.
-
-https://bugs.kde.org/show_bug.cgi?id=439590
-
-Upstream-Status: Backport
----
- 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-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 ++
- 11 files changed, 20 insertions(+)
-
-diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c
-index 45e1f3d1bb..3b2dcb8e30 100644
---- a/coregrind/m_syswrap/syswrap-amd64-linux.c
-+++ b/coregrind/m_syswrap/syswrap-amd64-linux.c
-@@ -874,6 +874,8 @@ static SyscallTableEntry syscall_table[] = {
-    LINXY(__NR_io_uring_enter,    sys_io_uring_enter),    // 426
-    LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
- 
-+   GENX_(__NR_clone3,            sys_ni_syscall),        // 435
-+
-    LINX_(__NR_faccessat2,	 sys_faccessat2),        // 439
- };
- 
-diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c
-index 428cb7c6fc..7f41b07491 100644
---- a/coregrind/m_syswrap/syswrap-arm-linux.c
-+++ b/coregrind/m_syswrap/syswrap-arm-linux.c
-@@ -1051,6 +1051,8 @@ static SyscallTableEntry syscall_main_table[] = {
-    LINXY(__NR_io_uring_enter,    sys_io_uring_enter),    // 426
-    LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
- 
-+   GENX_(__NR_clone3,            sys_ni_syscall),        // 435
-+
-    LINX_(__NR_faccessat2,    sys_faccessat2),           // 439
- };
- 
-diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c
-index 024ece27f5..0d717f44be 100644
---- a/coregrind/m_syswrap/syswrap-arm64-linux.c
-+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c
-@@ -830,6 +830,8 @@ static SyscallTableEntry syscall_main_table[] = {
-    LINXY(__NR_io_uring_enter,    sys_io_uring_enter),    // 426
-    LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
- 
-+   GENX_(__NR_clone3,            sys_ni_syscall),        // 435
-+
-    LINX_(__NR_faccessat2,        sys_faccessat2),        // 439
- };
- 
-diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c
-index 62b085ea21..b62129111b 100644
---- a/coregrind/m_syswrap/syswrap-mips32-linux.c
-+++ b/coregrind/m_syswrap/syswrap-mips32-linux.c
-@@ -1136,6 +1136,8 @@ static SyscallTableEntry syscall_main_table[] = {
-    LINXY(__NR_io_uring_enter,          sys_io_uring_enter),          // 426
-    LINXY(__NR_io_uring_register,       sys_io_uring_register),       // 427
- 
-+   GENX_(__NR_clone3,                  sys_ni_syscall),              // 435
-+
-    LINX_ (__NR_faccessat2,             sys_faccessat2),              // 439
- };
- 
-diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c
-index b73c03da16..94f38366f0 100644
---- a/coregrind/m_syswrap/syswrap-mips64-linux.c
-+++ b/coregrind/m_syswrap/syswrap-mips64-linux.c
-@@ -815,6 +815,7 @@ static SyscallTableEntry syscall_main_table[] = {
-    LINXY (__NR_io_uring_setup, sys_io_uring_setup),
-    LINXY (__NR_io_uring_enter, sys_io_uring_enter),
-    LINXY (__NR_io_uring_register, sys_io_uring_register),
-+   GENX_ (__NR_clone3, sys_ni_syscall),
-    LINX_ (__NR_faccessat2, sys_faccessat2),
- };
- 
-diff --git a/coregrind/m_syswrap/syswrap-nanomips-linux.c b/coregrind/m_syswrap/syswrap-nanomips-linux.c
-index 14127b181a..102c155507 100644
---- a/coregrind/m_syswrap/syswrap-nanomips-linux.c
-+++ b/coregrind/m_syswrap/syswrap-nanomips-linux.c
-@@ -824,6 +824,7 @@ static SyscallTableEntry syscall_main_table[] = {
-    LINXY (__NR_io_uring_setup,         sys_io_uring_setup),
-    LINXY (__NR_io_uring_enter,         sys_io_uring_enter),
-    LINXY (__NR_io_uring_register,      sys_io_uring_register),
-+   GENX_ (__NR_clone3,                 sys_ni_syscall),
-    LINX_ (__NR_faccessat2,             sys_faccessat2),
- };
- 
-diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c
-index aad14f8ba4..1e2efc6777 100644
---- a/coregrind/m_syswrap/syswrap-ppc32-linux.c
-+++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c
-@@ -1054,6 +1054,8 @@ static SyscallTableEntry syscall_table[] = {
-    LINXY(__NR_io_uring_enter,    sys_io_uring_enter),    // 426
-    LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
- 
-+   GENX_(__NR_clone3,            sys_ni_syscall),        // 435
-+
-    LINX_(__NR_faccessat2,        sys_faccessat2),       // 439
- };
- 
-diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
-index c0e3f55491..76610e1423 100644
---- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
-+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
-@@ -1023,6 +1023,8 @@ static SyscallTableEntry syscall_table[] = {
-    LINXY(__NR_io_uring_enter,    sys_io_uring_enter),    // 426
-    LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
- 
-+   GENX_(__NR_clone3,            sys_ni_syscall),        // 435
-+
-    LINX_(__NR_faccessat2,        sys_faccessat2),       // 439
- };
- 
-diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c
-index af6c4eb210..5283c19fe4 100644
---- a/coregrind/m_syswrap/syswrap-s390x-linux.c
-+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c
-@@ -864,6 +864,8 @@ static SyscallTableEntry syscall_table[] = {
-    LINXY(__NR_io_uring_enter, sys_io_uring_enter),                    // 426
-    LINXY(__NR_io_uring_register, sys_io_uring_register),              // 427
- 
-+   GENX_(__NR_clone3, sys_ni_syscall),                                // 435
-+
-    LINX_(__NR_faccessat2,  sys_faccessat2),                           // 439
- };
- 
-diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c
-index 67d866497d..418c769750 100644
---- a/coregrind/m_syswrap/syswrap-x86-linux.c
-+++ b/coregrind/m_syswrap/syswrap-x86-linux.c
-@@ -1645,6 +1645,8 @@ static SyscallTableEntry syscall_table[] = {
-    LINXY(__NR_io_uring_enter,    sys_io_uring_enter),   // 426
-    LINXY(__NR_io_uring_register, sys_io_uring_register),// 427
- 
-+   GENX_(__NR_clone3,            sys_ni_syscall),       // 435
-+
-    LINX_(__NR_faccessat2,	 sys_faccessat2),       // 439
- };
- 
-diff --git a/include/vki/vki-scnums-shared-linux.h b/include/vki/vki-scnums-shared-linux.h
-index c8bc31b4b3..6c70c9981d 100644
---- a/include/vki/vki-scnums-shared-linux.h
-+++ b/include/vki/vki-scnums-shared-linux.h
-@@ -39,6 +39,8 @@
- #define __NR_fsmount		432
- #define __NR_fspick		433
- 
-+#define __NR_clone3		435
-+
- #define __NR_faccessat2		439
- 
- #endif
--- 
-2.27.0
-
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/6da22a4d246519cd1a638cfc7eff00cdd74413c4.patch b/poky/meta/recipes-devtools/valgrind/valgrind/6da22a4d246519cd1a638cfc7eff00cdd74413c4.patch
deleted file mode 100644
index fce66b9..0000000
--- a/poky/meta/recipes-devtools/valgrind/valgrind/6da22a4d246519cd1a638cfc7eff00cdd74413c4.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 6da22a4d246519cd1a638cfc7eff00cdd74413c4 Mon Sep 17 00:00:00 2001
-From: Mark Wielaard <mark@klomp.org>
-Date: Fri, 16 Jul 2021 21:37:21 +0200
-Subject: [PATCH] gdbserver_tests: update filters for newer glibc/gdb
-
-With newer glibc/gdb we might see a __select call without anything
-following on the line. Also when gdb cannot find a file it might
-now print "Inappropriate ioctl for device" instead of the message
-"No such file or directory"
-
-Upstream-Status: Backport
----
- gdbserver_tests/filter_gdb  | 1 +
- gdbserver_tests/filter_vgdb | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/gdbserver_tests/filter_gdb b/gdbserver_tests/filter_gdb
-index 3bcd26d86c..4a5b5d7a5b 100755
---- a/gdbserver_tests/filter_gdb
-+++ b/gdbserver_tests/filter_gdb
-@@ -111,6 +111,7 @@ s/\(0x........\) in ?? ()$/\1 in syscall .../
- #         If select.c sources are present, we can also get a line containing:
- #              return SYSCALL_CANCEL....
- s/in __select .*/in syscall .../
-+s/in __select$/in syscall .../
- /exceptfds/d
- /sysv\/linux\/select\.c/d
- /return SYSCALL_CANCEL /d
-diff --git a/gdbserver_tests/filter_vgdb b/gdbserver_tests/filter_vgdb
-index f8028a39ad..679ca4b31c 100755
---- a/gdbserver_tests/filter_vgdb
-+++ b/gdbserver_tests/filter_vgdb
-@@ -18,6 +18,7 @@ sed -e '/relaying data between gdb and process/d'                        \
-     
- # filter some debuginfo problems with ld.so and SLES11
- sed -e '/^1	rtld.c: No such file or directory\./d' |
-+sed -e '/rtld.c: Inappropriate ioctl for device\./d' |
- 
- # and filter out any remaining empty lines
- sed -e '/^$/d'
--- 
-2.27.0
-
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/a1364805fc74b5690f763033c0c9b43f27613572.patch b/poky/meta/recipes-devtools/valgrind/valgrind/a1364805fc74b5690f763033c0c9b43f27613572.patch
deleted file mode 100644
index ece8840..0000000
--- a/poky/meta/recipes-devtools/valgrind/valgrind/a1364805fc74b5690f763033c0c9b43f27613572.patch
+++ /dev/null
@@ -1,1422 +0,0 @@
-From a1364805fc74b5690f763033c0c9b43f27613572 Mon Sep 17 00:00:00 2001
-From: Mark Wielaard <mark@klomp.org>
-Date: Fri, 16 Jul 2021 15:47:08 -0400
-Subject: [PATCH] Update helgrind and drd suppression libc and libpthread paths
- in glibc 2.34
-
-glibc 2.34 moved all pthread functions into the main libc library.
-And it changed the (in memory) path of the main libc library to
-libc.so.6 (before it was libc-2.xx.so).
-
-This breaks various standard suppressions for helgrind and drd.
-Fix this by doing a configure check for whether we are using glibc
-2.34 by checking whether pthread_create is in libc instead of in
-libpthread. If we are using glibc then define GLIBC_LIBC_PATH and
-GLIBC_LIBPTHREAD_PATH variables that point to the (regexp) path
-of the library that contains all libc functions and pthread functions
-(which will be the same path for glibc 2.34+).
-
-Rename glibc-2.34567-NPTL-helgrind.supp to glibc-2.X-helgrind.supp.in
-and glibc-2.X-drd.supp to glibc-2.X-drd.supp.in and replace the
-GLIBC_LIBC_PATH and GLIBC_LIBPTHREAD_PATH at configure time.
-
-The same could be done for the glibc-2.X.supp.in file, but hasn't
-yet because it looks like most suppressions in that file are obsolete.
-
-Upstream-Status: Backport
----
- Makefile.am                                   |  2 +-
- configure.ac                                  | 37 +++++++++++++++++--
- glibc-2.X-drd.supp => glibc-2.X-drd.supp.in   |  6 ++-
- ...elgrind.supp => glibc-2.X-helgrind.supp.in | 16 ++++----
- 4 files changed, 47 insertions(+), 14 deletions(-)
- rename glibc-2.X-drd.supp => glibc-2.X-drd.supp.in (97%)
- rename glibc-2.34567-NPTL-helgrind.supp => glibc-2.X-helgrind.supp.in (95%)
-
-Index: valgrind-3.17.0/Makefile.am
-===================================================================
---- valgrind-3.17.0.orig/Makefile.am
-+++ valgrind-3.17.0/Makefile.am
-@@ -41,7 +41,7 @@ SUPP_FILES = \
- 	glibc-2.2.supp glibc-2.3.supp glibc-2.4.supp glibc-2.5.supp \
- 	glibc-2.6.supp glibc-2.7.supp glibc-2.X.supp.in \
- 	xfree-3.supp xfree-4.supp \
--	glibc-2.34567-NPTL-helgrind.supp \
-+	glibc-2.X-helgrind.supp \
- 	glibc-2.2-LinuxThreads-helgrind.supp \
- 	glibc-2.X-drd.supp \
- 	darwin9.supp darwin9-drd.supp \
-Index: valgrind-3.17.0/configure.ac
-===================================================================
---- valgrind-3.17.0.orig/configure.ac
-+++ valgrind-3.17.0/configure.ac
-@@ -1090,6 +1090,31 @@ if test x$GLIBC_VERSION = x; then
-     fi
- fi
- 
-+# If this is glibc then figure out the generic (in file) libc.so and
-+# libpthread.so file paths to use in suppressions. Before 2.34 libpthread
-+# was a separate library, afterwards it was merged into libc.so and
-+# the library is called libc.so.6 (before it was libc-2.[0-9]+.so).
-+# Use this fact to set GLIBC_LIBC_PATH and GLIBC_LIBPTHREAD_PATH.
-+case ${GLIBC_VERSION} in
-+2*)
-+  AC_MSG_CHECKING([whether pthread_create needs libpthread])
-+  AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_create])],
-+  [
-+    AC_MSG_RESULT([no])
-+    GLIBC_LIBC_PATH="*/lib*/libc.so.6"
-+    GLIBC_LIBPTHREAD_PATH="$GLIBC_LIBC_PATH"
-+  ], [
-+    AC_MSG_RESULT([yes])
-+    GLIBC_LIBC_PATH="*/lib*/libc-2.*so*"
-+    GLIBC_LIBPTHREAD_PATH="*/lib*/libpthread-2.*so*"
-+  ])
-+  ;;
-+*)
-+  AC_MSG_CHECKING([not glibc...])
-+  AC_MSG_RESULT([${GLIBC_VERSION}])
-+  ;;
-+esac
-+
- AC_MSG_CHECKING([the glibc version])
- 
- case "${GLIBC_VERSION}" in
-@@ -1102,13 +1127,13 @@ case "${GLIBC_VERSION}" in
-      2.[[3-6]])
- 	AC_MSG_RESULT(${GLIBC_VERSION} family)
-         DEFAULT_SUPP="$srcdir/glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}"
--        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
-         DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
- 	;;
-      2.[[7-9]])
- 	AC_MSG_RESULT(${GLIBC_VERSION} family)
- 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
--        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
-         DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
- 	;;
-      2.10|2.11)
-@@ -1116,7 +1141,7 @@ case "${GLIBC_VERSION}" in
- 	AC_DEFINE([GLIBC_MANDATORY_STRLEN_REDIRECT], 1,
- 		  [Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10)])
- 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
--        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
-         DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
- 	;;
-      2.*)
-@@ -1126,7 +1151,7 @@ case "${GLIBC_VERSION}" in
- 	AC_DEFINE([GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT], 1,
- 		  [Define to 1 if index() and strlen() have been optimized heavily (x86 glibc >= 2.12)])
- 	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
--        DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+        DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
-         DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
- 	;;
-      darwin)
-@@ -1157,6 +1182,8 @@ case "${GLIBC_VERSION}" in
- esac
- 
- AC_SUBST(GLIBC_VERSION)
-+AC_SUBST(GLIBC_LIBC_PATH)
-+AC_SUBST(GLIBC_LIBPTHREAD_PATH)
- 
- 
- if test "$VGCONF_OS" != "solaris"; then
-@@ -4910,6 +4937,8 @@ AC_CONFIG_FILES([
-    valgrind.spec
-    valgrind.pc
-    glibc-2.X.supp
-+   glibc-2.X-helgrind.supp
-+   glibc-2.X-drd.supp
-    docs/Makefile 
-    tests/Makefile 
-    tests/vg_regtest 
-Index: valgrind-3.17.0/glibc-2.X-drd.supp
-===================================================================
---- valgrind-3.17.0.orig/glibc-2.X-drd.supp
-+++ /dev/null
-@@ -1,330 +0,0 @@
--#
--# Suppression patterns for ld, the dynamic loader.
--#
--
--# Suppress all data races triggered by ld.
--{
--   drd-ld
--   drd:ConflictingAccess
--   obj:*/lib*/ld-*.so
--}
--
--#
--# Suppression patterns for libc.
--#
--
--# Suppress all data races where the topmost frame is inside libc.so. Although
--# this could hide some real data races, unfortunately this is the only way to
--# not report any false positives on stdio functions. The glibc functions
--# manipulating FILE objects use locking primitives that cannot be intercepted
--# easily. See also the definitions of _IO_lock_lock() etc. in the file
--# nptl/sysdeps/pthread/bits/stdio-lock.h in the glibc source tree.
--{
--   drd-libc-stdio
--   drd:ConflictingAccess
--   obj:*/lib*/libc-*
--}
--{
--   drd-libc-thread-cancellation-test
--   drd:ConflictingAccess
--   fun:write
--}
--{
--   drd-libc-random
--   drd:ConflictingAccess
--   fun:random_r
--   fun:random
--}
--
--#
--# Suppression patterns for libstdc++, the implementation of the standard C++
--# library included with the gcc compiler.
--#
--# Note: several versions of the libstdc++ library (4.2.2, 4.3.2, 4.4.0, 4.5.0
--# and their predecessors) contain an implementation of the std::string class
--# that triggers conflicting memory accesses. See also
--# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40518
--#
--
--# {
--#    drd-libstdc++-std::string::string()
--#    drd:ConflictingAccess
--#    fun:_ZNSsC1ERKSs
--# }
--
--{
--   drd-libstdc++-cxa_guard_release
--   drd:CondErr
--   fun:pthread_cond_broadcast@*
--   fun:__cxa_guard_release
--}
--{
--   drd-libstdc++-std::__ostream_insert()
--   drd:ConflictingAccess
--   fun:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
--   fun:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
--}
--{
--   drd-libstdc++-std::ostream::_M_insert<long>()
--   drd:ConflictingAccess
--   ...
--   fun:_ZNSo9_M_insertIlEERSoT_
--}
--
--
--#
--# Suppression patterns for libpthread.
--#
--
--{
--   drd-libpthread-pthread_create
--   drd:ConflictingAccess
--   ...
--   fun:pthread_create*
--}
--{
--   drd-libpthread-pthread_join
--   drd:ConflictingAccess
--   fun:pthread_join
--   fun:pthread_join
--}
--{
--   drd-libpthread-__deallocate_stack
--   drd:ConflictingAccess
--   ...
--   fun:__deallocate_stack
--}
--{
--   drd-libpthread-__free_stacks
--   drd:ConflictingAccess
--   fun:__free_stacks
--}
--{
--   drd-libpthread-__free_tcb
--   drd:ConflictingAccess
--   ...
--   fun:__free_tcb
--}
--{
--   drd-libpthread-__nptl_deallocate_tsd
--   drd:ConflictingAccess
--   fun:__nptl_deallocate_tsd
--}
--{
--   drd-libpthread-pthread_detach
--   drd:ConflictingAccess
--   fun:pthread_detach
--   fun:pthread_detach
--}
--{
--   drd-libpthread-pthread_once
--   drd:ConflictingAccess
--   fun:pthread_once
--}
--{
--   drd-libpthread-pthread_cancel_init
--   drd:ConflictingAccess
--   fun:pthread_cancel_init
--}
--{
--   drd-libpthread-pthread_cancel
--   drd:ConflictingAccess
--   fun:pthread_cancel
--   fun:pthread_cancel_intercept
--}
--{
--   drd-libpthread-_Unwind_ForcedUnwind
--   drd:ConflictingAccess
--   ...
--   fun:_Unwind_ForcedUnwind
--}
--{
--   drd-libpthread-_Unwind_GetCFA
--   drd:ConflictingAccess
--   fun:_Unwind_GetCFA
--}
--{
--   drd-libpthread-_Unwind_Resume
--   drd:ConflictingAccess
--   ...
--   fun:_Unwind_Resume
--}
--{
--   drd-libpthread-?
--   drd:ConflictingAccess
--   obj:*/lib/libgcc_s.so.1
--}
--{
--   drd-libpthread-nanosleep
--   drd:ConflictingAccess
--   fun:nanosleep
--}
--
--#
--# Suppression patterns for libgomp.
--#
--
--# Unfortunately many statements in libgomp trigger conflicting accesses. It is
--# not clear to me which of these are safe and which ones not. See also
--# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362
--{
--   drd-libgomp
--   drd:ConflictingAccess
--   obj:/usr/lib*/libgomp.so*
--}
--
--#
--# Suppression patterns for libX11.
--#
--
--{
--   drd-libX11-XCreateFontSet
--   drd:CondErr
--   fun:pthread_cond_init*
--   fun:_XReply
--   fun:XListFontsWithInfo
--   obj:/usr/lib*/libX11.so*
--   fun:XCreateOC
--   fun:XCreateFontSet
--}
--
--#
--# Suppression patterns for libxcb.
--#
--
--{
--   drd-libxcb-xcb_wait_for_reply
--   drd:CondErr
--   ...
--   fun:pthread_cond_destroy*
--   fun:xcb_wait_for_reply
--}
--
--#
--# Suppression patterns for libglib.
--#
--
--{
--   drd-libglib-access-g_threads_got_initialized
--   drd:ConflictingAccess
--   ...
--   fun:g_slice_alloc
--   fun:g_ptr_array_sized_new
--}
--{
--   drd-libglib-access-g_threads_got_initialized
--   drd:ConflictingAccess
--   ...
--   fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext
--   fun:_ZN20QEventDispatcherGlibC1EP7QObject
--   obj:/usr/lib*/libQtCore.so.4.*
--   obj:/usr/lib*/libQtCore.so.4.*
--}
--{
--   drd-libglib-access-g_mem_initialized
--   drd:ConflictingAccess
--   fun:g_malloc0
--}
--{
--   drd-libglib-g_private_get_posix_impl
--   drd:ConflictingAccess
--   fun:g_private_get_posix_impl
--}
--{
--   drd-libglib-g_private_set_posix_impl
--   drd:ConflictingAccess
--   fun:g_private_set_posix_impl
--}
--{
--   drd-libglib-g_get_language_names
--   drd:ConflictingAccess
--   fun:g_slice_free_chain_with_offset
--}
--{
--   drd-libglib-g_main_context_new
--   drd:ConflictingAccess
--   fun:fcntl
--   obj:/usr/lib*/libglib-*.so*
--   fun:g_main_context_new
--}
--
--#
--# Suppression patterns for libQtCore.
--#
--
--{
--   drd-libQtCore-deref-that-calls-QThreadData-destructor
--   drd:ConflictingAccess
--   fun:_ZN11QThreadDataD1Ev
--   obj:/usr/lib*/libQtCore.so.4.*
--}
--{
--   drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList
--   drd:ConflictingAccess
--   obj:/usr/lib*/libQtCore.so.4.*
--   fun:_ZN11QMetaObject8activateEP7QObjectiiPPv
--   fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv
--}
--{
--   drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
--   drd:ConflictingAccess
--   fun:_ZN14QReadWriteLock12lockForWriteEv
--   fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
--   fun:_ZN7QObjectD2Ev
--}
--{
--   drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
--   drd:ConflictingAccess
--   fun:_ZN14QReadWriteLock12lockForWriteEv
--   fun:_ZN12QWriteLocker6relockEv
--   fun:_ZN12QWriteLockerC1EP14QReadWriteLock
--   fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
--   fun:_ZN7QObjectD2Ev
--   fun:_ZN24QAbstractEventDispatcherD2Ev
--   fun:_ZN20QEventDispatcherGlibD0Ev
--}
--{
--   drd-libQtCore-QMutexPool::get(void const*)
--   drd:ConflictingAccess
--   fun:_ZN10QMutexPool3getEPKv
--}
--{
--   drd-libQtCore-qt_gettime_is_monotonic()
--   drd:ConflictingAccess
--   fun:_Z23qt_gettime_is_monotonicv
--}
--
--#
--# Suppression patterns for libboost.
--#
--
--# Suppress the races on boost::once_flag::epoch and on
--# boost::detail::this_thread_epoch. See also the source file
--# boost/thread/pthread/once.hpp in the Boost source tree
--# (https://svn.boost.org/trac/boost/browser/trunk/boost/thread/pthread/once.hpp).
--{
--   drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)())
--   drd:ConflictingAccess
--   ...
--   fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_
--}
--{
--   drd-libboost-boost::detail::get_once_per_thread_epoch()
--   drd:ConflictingAccess
--   fun:_ZN5boost6detail25get_once_per_thread_epochEv
--}
--# Suppress the race reports on boost::detail::current_thread_tls_key. See also
--# https://svn.boost.org/trac/boost/ticket/3526 for more information about why
--# the access pattern of current_thread_tls_key is safe.
--{
--   drd-libboost-boost::detail::get_current_thread_data()
--   drd:ConflictingAccess
--   ...
--   fun:_ZN5boost6detail23get_current_thread_dataEv
--}
--{
--   drd-libboost-boost::detail::set_current_thread_data(boost::detail::thread_data_base*)
--   drd:ConflictingAccess
--   ...
--   fun:_ZN5boost6detail23set_current_thread_dataEPNS0_16thread_data_baseE
--}
-Index: valgrind-3.17.0/glibc-2.X-drd.supp.in
-===================================================================
---- /dev/null
-+++ valgrind-3.17.0/glibc-2.X-drd.supp.in
-@@ -0,0 +1,332 @@
-+# IMPORTANT: DO NOT EDIT glibc-2.X-drd.supp, as it is as a generated
-+# file.  Instead edit glibc-2.X-drd.supp.in.
-+#
-+# Suppression patterns for ld, the dynamic loader.
-+#
-+
-+# Suppress all data races triggered by ld.
-+{
-+   drd-ld
-+   drd:ConflictingAccess
-+   obj:*/lib*/ld*.so*
-+}
-+
-+#
-+# Suppression patterns for libc.
-+#
-+
-+# Suppress all data races where the topmost frame is inside libc.so. Although
-+# this could hide some real data races, unfortunately this is the only way to
-+# not report any false positives on stdio functions. The glibc functions
-+# manipulating FILE objects use locking primitives that cannot be intercepted
-+# easily. See also the definitions of _IO_lock_lock() etc. in the file
-+# nptl/sysdeps/pthread/bits/stdio-lock.h in the glibc source tree.
-+{
-+   drd-libc-stdio
-+   drd:ConflictingAccess
-+   obj:@GLIBC_LIBC_PATH@
-+}
-+{
-+   drd-libc-thread-cancellation-test
-+   drd:ConflictingAccess
-+   fun:write
-+}
-+{
-+   drd-libc-random
-+   drd:ConflictingAccess
-+   fun:random_r
-+   fun:random
-+}
-+
-+#
-+# Suppression patterns for libstdc++, the implementation of the standard C++
-+# library included with the gcc compiler.
-+#
-+# Note: several versions of the libstdc++ library (4.2.2, 4.3.2, 4.4.0, 4.5.0
-+# and their predecessors) contain an implementation of the std::string class
-+# that triggers conflicting memory accesses. See also
-+# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40518
-+#
-+
-+# {
-+#    drd-libstdc++-std::string::string()
-+#    drd:ConflictingAccess
-+#    fun:_ZNSsC1ERKSs
-+# }
-+
-+{
-+   drd-libstdc++-cxa_guard_release
-+   drd:CondErr
-+   fun:pthread_cond_broadcast@*
-+   fun:__cxa_guard_release
-+}
-+{
-+   drd-libstdc++-std::__ostream_insert()
-+   drd:ConflictingAccess
-+   fun:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
-+   fun:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
-+}
-+{
-+   drd-libstdc++-std::ostream::_M_insert<long>()
-+   drd:ConflictingAccess
-+   ...
-+   fun:_ZNSo9_M_insertIlEERSoT_
-+}
-+
-+
-+#
-+# Suppression patterns for libpthread.
-+#
-+
-+{
-+   drd-libpthread-pthread_create
-+   drd:ConflictingAccess
-+   ...
-+   fun:pthread_create*
-+}
-+{
-+   drd-libpthread-pthread_join
-+   drd:ConflictingAccess
-+   fun:pthread_join
-+   fun:pthread_join
-+}
-+{
-+   drd-libpthread-__deallocate_stack
-+   drd:ConflictingAccess
-+   ...
-+   fun:__deallocate_stack
-+}
-+{
-+   drd-libpthread-__free_stacks
-+   drd:ConflictingAccess
-+   fun:__free_stacks
-+}
-+{
-+   drd-libpthread-__free_tcb
-+   drd:ConflictingAccess
-+   ...
-+   fun:__free_tcb
-+}
-+{
-+   drd-libpthread-__nptl_deallocate_tsd
-+   drd:ConflictingAccess
-+   fun:__nptl_deallocate_tsd
-+}
-+{
-+   drd-libpthread-pthread_detach
-+   drd:ConflictingAccess
-+   fun:pthread_detach
-+   fun:pthread_detach
-+}
-+{
-+   drd-libpthread-pthread_once
-+   drd:ConflictingAccess
-+   fun:pthread_once
-+}
-+{
-+   drd-libpthread-pthread_cancel_init
-+   drd:ConflictingAccess
-+   fun:pthread_cancel_init
-+}
-+{
-+   drd-libpthread-pthread_cancel
-+   drd:ConflictingAccess
-+   fun:pthread_cancel
-+   fun:pthread_cancel_intercept
-+}
-+{
-+   drd-libpthread-_Unwind_ForcedUnwind
-+   drd:ConflictingAccess
-+   ...
-+   fun:_Unwind_ForcedUnwind
-+}
-+{
-+   drd-libpthread-_Unwind_GetCFA
-+   drd:ConflictingAccess
-+   fun:_Unwind_GetCFA
-+}
-+{
-+   drd-libpthread-_Unwind_Resume
-+   drd:ConflictingAccess
-+   ...
-+   fun:_Unwind_Resume
-+}
-+{
-+   drd-libpthread-?
-+   drd:ConflictingAccess
-+   obj:*/lib/libgcc_s.so.1
-+}
-+{
-+   drd-libpthread-nanosleep
-+   drd:ConflictingAccess
-+   fun:nanosleep
-+}
-+
-+#
-+# Suppression patterns for libgomp.
-+#
-+
-+# Unfortunately many statements in libgomp trigger conflicting accesses. It is
-+# not clear to me which of these are safe and which ones not. See also
-+# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362
-+{
-+   drd-libgomp
-+   drd:ConflictingAccess
-+   obj:/usr/lib*/libgomp.so*
-+}
-+
-+#
-+# Suppression patterns for libX11.
-+#
-+
-+{
-+   drd-libX11-XCreateFontSet
-+   drd:CondErr
-+   fun:pthread_cond_init*
-+   fun:_XReply
-+   fun:XListFontsWithInfo
-+   obj:/usr/lib*/libX11.so*
-+   fun:XCreateOC
-+   fun:XCreateFontSet
-+}
-+
-+#
-+# Suppression patterns for libxcb.
-+#
-+
-+{
-+   drd-libxcb-xcb_wait_for_reply
-+   drd:CondErr
-+   ...
-+   fun:pthread_cond_destroy*
-+   fun:xcb_wait_for_reply
-+}
-+
-+#
-+# Suppression patterns for libglib.
-+#
-+
-+{
-+   drd-libglib-access-g_threads_got_initialized
-+   drd:ConflictingAccess
-+   ...
-+   fun:g_slice_alloc
-+   fun:g_ptr_array_sized_new
-+}
-+{
-+   drd-libglib-access-g_threads_got_initialized
-+   drd:ConflictingAccess
-+   ...
-+   fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext
-+   fun:_ZN20QEventDispatcherGlibC1EP7QObject
-+   obj:/usr/lib*/libQtCore.so.4.*
-+   obj:/usr/lib*/libQtCore.so.4.*
-+}
-+{
-+   drd-libglib-access-g_mem_initialized
-+   drd:ConflictingAccess
-+   fun:g_malloc0
-+}
-+{
-+   drd-libglib-g_private_get_posix_impl
-+   drd:ConflictingAccess
-+   fun:g_private_get_posix_impl
-+}
-+{
-+   drd-libglib-g_private_set_posix_impl
-+   drd:ConflictingAccess
-+   fun:g_private_set_posix_impl
-+}
-+{
-+   drd-libglib-g_get_language_names
-+   drd:ConflictingAccess
-+   fun:g_slice_free_chain_with_offset
-+}
-+{
-+   drd-libglib-g_main_context_new
-+   drd:ConflictingAccess
-+   fun:fcntl
-+   obj:/usr/lib*/libglib-*.so*
-+   fun:g_main_context_new
-+}
-+
-+#
-+# Suppression patterns for libQtCore.
-+#
-+
-+{
-+   drd-libQtCore-deref-that-calls-QThreadData-destructor
-+   drd:ConflictingAccess
-+   fun:_ZN11QThreadDataD1Ev
-+   obj:/usr/lib*/libQtCore.so.4.*
-+}
-+{
-+   drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList
-+   drd:ConflictingAccess
-+   obj:/usr/lib*/libQtCore.so.4.*
-+   fun:_ZN11QMetaObject8activateEP7QObjectiiPPv
-+   fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv
-+}
-+{
-+   drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
-+   drd:ConflictingAccess
-+   fun:_ZN14QReadWriteLock12lockForWriteEv
-+   fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
-+   fun:_ZN7QObjectD2Ev
-+}
-+{
-+   drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
-+   drd:ConflictingAccess
-+   fun:_ZN14QReadWriteLock12lockForWriteEv
-+   fun:_ZN12QWriteLocker6relockEv
-+   fun:_ZN12QWriteLockerC1EP14QReadWriteLock
-+   fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
-+   fun:_ZN7QObjectD2Ev
-+   fun:_ZN24QAbstractEventDispatcherD2Ev
-+   fun:_ZN20QEventDispatcherGlibD0Ev
-+}
-+{
-+   drd-libQtCore-QMutexPool::get(void const*)
-+   drd:ConflictingAccess
-+   fun:_ZN10QMutexPool3getEPKv
-+}
-+{
-+   drd-libQtCore-qt_gettime_is_monotonic()
-+   drd:ConflictingAccess
-+   fun:_Z23qt_gettime_is_monotonicv
-+}
-+
-+#
-+# Suppression patterns for libboost.
-+#
-+
-+# Suppress the races on boost::once_flag::epoch and on
-+# boost::detail::this_thread_epoch. See also the source file
-+# boost/thread/pthread/once.hpp in the Boost source tree
-+# (https://svn.boost.org/trac/boost/browser/trunk/boost/thread/pthread/once.hpp).
-+{
-+   drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)())
-+   drd:ConflictingAccess
-+   ...
-+   fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_
-+}
-+{
-+   drd-libboost-boost::detail::get_once_per_thread_epoch()
-+   drd:ConflictingAccess
-+   fun:_ZN5boost6detail25get_once_per_thread_epochEv
-+}
-+# Suppress the race reports on boost::detail::current_thread_tls_key. See also
-+# https://svn.boost.org/trac/boost/ticket/3526 for more information about why
-+# the access pattern of current_thread_tls_key is safe.
-+{
-+   drd-libboost-boost::detail::get_current_thread_data()
-+   drd:ConflictingAccess
-+   ...
-+   fun:_ZN5boost6detail23get_current_thread_dataEv
-+}
-+{
-+   drd-libboost-boost::detail::set_current_thread_data(boost::detail::thread_data_base*)
-+   drd:ConflictingAccess
-+   ...
-+   fun:_ZN5boost6detail23set_current_thread_dataEPNS0_16thread_data_baseE
-+}
-Index: valgrind-3.17.0/glibc-2.34567-NPTL-helgrind.supp
-===================================================================
---- valgrind-3.17.0.orig/glibc-2.34567-NPTL-helgrind.supp
-+++ /dev/null
-@@ -1,301 +0,0 @@
--
--# FIXME 22 Jan 09: helgrind-glibc2X-005 overlaps with a lot of
--# other stuff.  They should be removed.
--
--##----------------------------------------------------------------------##
--# Suppressions for the Helgrind tool when using 
--# a glibc-2.{3,4,5,6,7,8,9} system
--
--####################################################
--# glibc-2.X specific
--# These are generic cover-alls which catch a lot of stuff
--# in various combinations of ld, libc and libpthread
--#
--# Note this is heavyhanded and not very clever:
--#
--# - suppress anything that has its top frame in ld.so
--#   That's fine, since it's mostly dynamic linking stuff,
--#   which has various deliberate (harmless) races
--#
--# - suppress anything that has its top frame in libc.so.
--#   This really isn't clever, since it could hide some 
--#   legitimate races.  But the problem is, if we don't do
--#   this, then loads of errors to do with stdio are reported, because
--#   H fails to see glibc's internal locking/unlocking of FILE*s
--#   as required by POSIX.  A better solution is needed.
--#
--# - some of the stdio functions in newer glibc manipulate stdio
--#   FILE*s state through mempcpy, which we intercept, so we also need
--#   to suppress such manipulations.
--
--#{
--#   helgrind-glibc2X-001
--#   Helgrind:Race
--#   obj:*/lib*/ld-2.*so*
--#}
--
--# helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
--
--# helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
--
--{
--   helgrind-glibc2X-004
--   Helgrind:Race
--   obj:*/lib*/libc-2.*so*
--}
--
--{
--   helgrind-glibc-io-xsputn-mempcpy
--   Helgrind:Race
--   fun:__GI_mempcpy
--   fun:_IO_*xsputn*
--   obj:*/lib*/libc-2.*so*
--}
--
--{
--   helgrind-glibc2X-005
--   Helgrind:Race
--   obj:*/lib*/libpthread-2.*so*
--}
--
--# helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
--
--# helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
--
--# helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
--
--# helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
--
--# helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
--
--# helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
--
--# helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
--
--# helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
--
--# helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
--
--# helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
--
--# helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
--
--# These are very ugly.  They are needed to suppress errors inside (eg)
--# NPTL's pthread_cond_signal.  Why only one stack frame -- at least we
--# should see the wrapper calling the real functions, right?
--# Unfortunately, no: the real functions are handwritten assembly (in
--# the glibc-2.5 sources) and does not create a proper stack frame.
--# Therefore it's only one level of unwinding before we're back out in
--# user code rather than the 2 levels you'd expect.
--{
--   helgrind-glibc2X-101
--   Helgrind:Race
--   obj:*/lib*/libpthread-2.*so*
--   fun:pthread_*
--}
--{
--   helgrind-glibc2X-102
--   Helgrind:Race
--   fun:mythread_wrapper
--   obj:*/lib*/libpthread-2.*so*
--}
--{
--   helgrind-glibc2X-103
--   Helgrind:Race
--   fun:pthread_cond_*@@GLIBC_2.*
--}
--{
--   helgrind-glibc2X-104
--   Helgrind:Race
--   fun:__lll_mutex_*
--}
--{
--   helgrind-glibc2X-105
--   Helgrind:Race
--   fun:pthread_rwlock_*lock*
--}
--{
--   helgrind-glibc2X-106
--   Helgrind:Race
--   fun:__lll_lock_wait
--}
--{
--   helgrind-glibc2X-107
--   Helgrind:Race
--   obj:*/lib*/libpthread-2.*so*
--   fun:sem_*
--}
--{
--   helgrind-glibc2X-108
--   Helgrind:Race
--   fun:clone
--}
--{
--   helgrind-glibc2X-109
--   Helgrind:Race
--   fun:start_thread
--}
--{
--   helgrind-glibc2X-110
--   Helgrind:Race
--   obj:*/lib*/libc-2.*so*
--   fun:pthread_*
--}
--{
--   helgrind-glibc2X-111
--   Helgrind:Race
--   fun:__lll_*lock_*
--}
--{
--   helgrind-glibc2X-113
--   Helgrind:Race
--   fun:pthread_barrier_wait*
--}
--
--
--####################################################
--# qt4 specific (GNU mangling)
--#
--{
--   helgrind-qt4---QMutex::lock()-QMutex::lock()
--   Helgrind:Race
--   ...
--   fun:_ZN6QMutex4lockEv
--   fun:_ZN6QMutex4lockEv
--}
--
--{                                                               
--   helgrind-qt4---QMutex::unlock()-QMutex::unlock()
--   Helgrind:Race                                                
--   ...
--   fun:_ZN6QMutex6unlockEv                                      
--   fun:_ZN6QMutex6unlockEv
--}
--
--{
--   helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
--   Helgrind:Race
--   fun:pthread_setspecific
--   fun:_ZN14QThreadPrivate5startEPv
--}
--
--
--####################################################
--# Other stuff.
--#
--# pthread_exit apparently calls some kind of unwind
--# mechanism - maybe to remove some number of frames
--# from the thread's stack, so as to get back to the 
--# outermost frame for the thread?  Anyway..
--
--{
--   helgrind---*Unwind*-...-pthread_exit
--   Helgrind:Race
--   fun:*Unwind*
--   ...
--   fun:pthread_exit
--}
--
--{
--   helgrind---...-*Unwind*-*pthread_unwind*
--   Helgrind:Race
--   ...
--   fun:*Unwind*
--   fun:*pthread_unwind*
--}
--
--{
--   helgrind---...-*Unwind*-*pthread_unwind*
--   Helgrind:Race
--   ...
--   fun:_Unwind*
--   ...
--   fun:_Unwind_Backtrace
--}
--
--
--
--
--####################################################
--# To do with thread stack allocation and deallocation?
--#
--{
--   helgrind---free_stacks-__deallocate_stack
--   Helgrind:Race
--   fun:free_stacks
--   fun:__deallocate_stack
--}
--
--{
--   helgrind---__deallocate_stack-start_thread-clone
--   Helgrind:Race
--   fun:__deallocate_stack
--   fun:start_thread
--   fun:clone
--}
--
--
--####################################################
--# To do with pthread_{set,get}specific
--#
--{
--   helgrind---pthread_setspecific
--   Helgrind:Race
--   fun:pthread_setspecific
--}
--
--{
--   helgrind---pthread_getspecific
--   Helgrind:Race
--   fun:pthread_getspecific
--}
--
--
--####################################################
--# To do with dynamic linking
--#
--# helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
--
--{
--   helgrind---_dl_allocate_tls 
--   Helgrind:Race
--   fun:mempcpy
--   fun:_dl_allocate_tls_init
--   ...
--   fun:pthread_create@@GLIBC_2.2*
--   fun:pthread_create_WRK
--   fun:pthread_create@*
--}
--
--{
--   helgrind---_dl_allocate_tls2
--   Helgrind:Race
--   fun:memcpy
--   fun:__mempcpy_inline
--   fun:_dl_allocate_tls_init
--   ...
--   fun:pthread_create@@GLIBC_2.2*
--   fun:pthread_create_WRK
--   fun:pthread_create@*
--}
--
--####################################################
--# To do with GNU libgomp
--#
--{
--   helgrind---libgomp43-1
--   Helgrind:Race
--   fun:gomp_ordered_sync
--}
--
--{
--   helgrind---libgomp43-1
--   Helgrind:Race
--   fun:gomp_ordered_next
--}
--
--{
--   helgrind---libgomp43-1
--   Helgrind:Race
--   fun:gomp_ordered_last
--}
-Index: valgrind-3.17.0/glibc-2.X-helgrind.supp.in
-===================================================================
---- /dev/null
-+++ valgrind-3.17.0/glibc-2.X-helgrind.supp.in
-@@ -0,0 +1,303 @@
-+# IMPORTANT: DO NOT EDIT glibc-2.X-helgrind.supp, as it is as a generated
-+# file.  Instead edit glibc-2.X-helgrind.supp.in.
-+
-+# FIXME 22 Jan 09: helgrind-glibc2X-005 overlaps with a lot of
-+# other stuff.  They should be removed.
-+
-+##----------------------------------------------------------------------##
-+# Suppressions for the Helgrind tool when using 
-+# a glibc-2.{3,4,5,6,7,8,9} system
-+
-+####################################################
-+# glibc-2.X specific
-+# These are generic cover-alls which catch a lot of stuff
-+# in various combinations of ld, libc and libpthread
-+#
-+# Note this is heavyhanded and not very clever:
-+#
-+# - suppress anything that has its top frame in ld.so
-+#   That's fine, since it's mostly dynamic linking stuff,
-+#   which has various deliberate (harmless) races
-+#
-+# - suppress anything that has its top frame in libc.so.
-+#   This really isn't clever, since it could hide some 
-+#   legitimate races.  But the problem is, if we don't do
-+#   this, then loads of errors to do with stdio are reported, because
-+#   H fails to see glibc's internal locking/unlocking of FILE*s
-+#   as required by POSIX.  A better solution is needed.
-+#
-+# - some of the stdio functions in newer glibc manipulate stdio
-+#   FILE*s state through mempcpy, which we intercept, so we also need
-+#   to suppress such manipulations.
-+
-+#{
-+#   helgrind-glibc2X-001
-+#   Helgrind:Race
-+#   obj:*/lib*/ld-2.*so*
-+#}
-+
-+# helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
-+
-+# helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
-+
-+{
-+   helgrind-glibc2X-004
-+   Helgrind:Race
-+   obj:@GLIBC_LIBC_PATH@
-+}
-+
-+{
-+   helgrind-glibc-io-xsputn-mempcpy
-+   Helgrind:Race
-+   fun:__GI_mempcpy
-+   fun:_IO_*xsputn*
-+   obj:@GLIBC_LIBC_PATH@
-+}
-+
-+{
-+   helgrind-glibc2X-005
-+   Helgrind:Race
-+   obj:@GLIBC_LIBPTHREAD_PATH@
-+}
-+
-+# helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
-+
-+# helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
-+
-+# helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
-+
-+# helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
-+
-+# helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
-+
-+# helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
-+
-+# helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
-+
-+# helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
-+
-+# helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
-+
-+# helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
-+
-+# helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
-+
-+# These are very ugly.  They are needed to suppress errors inside (eg)
-+# NPTL's pthread_cond_signal.  Why only one stack frame -- at least we
-+# should see the wrapper calling the real functions, right?
-+# Unfortunately, no: the real functions are handwritten assembly (in
-+# the glibc-2.5 sources) and does not create a proper stack frame.
-+# Therefore it's only one level of unwinding before we're back out in
-+# user code rather than the 2 levels you'd expect.
-+{
-+   helgrind-glibc2X-101
-+   Helgrind:Race
-+   obj:@GLIBC_LIBPTHREAD_PATH@
-+   fun:pthread_*
-+}
-+{
-+   helgrind-glibc2X-102
-+   Helgrind:Race
-+   fun:mythread_wrapper
-+   obj:@GLIBC_LIBPTHREAD_PATH@
-+}
-+{
-+   helgrind-glibc2X-103
-+   Helgrind:Race
-+   fun:pthread_cond_*@@GLIBC_2.*
-+}
-+{
-+   helgrind-glibc2X-104
-+   Helgrind:Race
-+   fun:__lll_mutex_*
-+}
-+{
-+   helgrind-glibc2X-105
-+   Helgrind:Race
-+   fun:pthread_rwlock_*lock*
-+}
-+{
-+   helgrind-glibc2X-106
-+   Helgrind:Race
-+   fun:__lll_lock_wait
-+}
-+{
-+   helgrind-glibc2X-107
-+   Helgrind:Race
-+   obj:@GLIBC_LIBPTHREAD_PATH@
-+   fun:sem_*
-+}
-+{
-+   helgrind-glibc2X-108
-+   Helgrind:Race
-+   fun:clone
-+}
-+{
-+   helgrind-glibc2X-109
-+   Helgrind:Race
-+   fun:start_thread
-+}
-+{
-+   helgrind-glibc2X-110
-+   Helgrind:Race
-+   obj:@GLIBC_LIBC_PATH@
-+   fun:pthread_*
-+}
-+{
-+   helgrind-glibc2X-111
-+   Helgrind:Race
-+   fun:__lll_*lock_*
-+}
-+{
-+   helgrind-glibc2X-113
-+   Helgrind:Race
-+   fun:pthread_barrier_wait*
-+}
-+
-+
-+####################################################
-+# qt4 specific (GNU mangling)
-+#
-+{
-+   helgrind-qt4---QMutex::lock()-QMutex::lock()
-+   Helgrind:Race
-+   ...
-+   fun:_ZN6QMutex4lockEv
-+   fun:_ZN6QMutex4lockEv
-+}
-+
-+{                                                               
-+   helgrind-qt4---QMutex::unlock()-QMutex::unlock()
-+   Helgrind:Race                                                
-+   ...
-+   fun:_ZN6QMutex6unlockEv                                      
-+   fun:_ZN6QMutex6unlockEv
-+}
-+
-+{
-+   helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
-+   Helgrind:Race
-+   fun:pthread_setspecific
-+   fun:_ZN14QThreadPrivate5startEPv
-+}
-+
-+
-+####################################################
-+# Other stuff.
-+#
-+# pthread_exit apparently calls some kind of unwind
-+# mechanism - maybe to remove some number of frames
-+# from the thread's stack, so as to get back to the 
-+# outermost frame for the thread?  Anyway..
-+
-+{
-+   helgrind---*Unwind*-...-pthread_exit
-+   Helgrind:Race
-+   fun:*Unwind*
-+   ...
-+   fun:pthread_exit
-+}
-+
-+{
-+   helgrind---...-*Unwind*-*pthread_unwind*
-+   Helgrind:Race
-+   ...
-+   fun:*Unwind*
-+   fun:*pthread_unwind*
-+}
-+
-+{
-+   helgrind---...-*Unwind*-*pthread_unwind*
-+   Helgrind:Race
-+   ...
-+   fun:_Unwind*
-+   ...
-+   fun:_Unwind_Backtrace
-+}
-+
-+
-+
-+
-+####################################################
-+# To do with thread stack allocation and deallocation?
-+#
-+{
-+   helgrind---free_stacks-__deallocate_stack
-+   Helgrind:Race
-+   fun:free_stacks
-+   fun:__deallocate_stack
-+}
-+
-+{
-+   helgrind---__deallocate_stack-start_thread-clone
-+   Helgrind:Race
-+   fun:__deallocate_stack
-+   fun:start_thread
-+   fun:clone
-+}
-+
-+
-+####################################################
-+# To do with pthread_{set,get}specific
-+#
-+{
-+   helgrind---pthread_setspecific
-+   Helgrind:Race
-+   fun:pthread_setspecific
-+}
-+
-+{
-+   helgrind---pthread_getspecific
-+   Helgrind:Race
-+   fun:pthread_getspecific
-+}
-+
-+
-+####################################################
-+# To do with dynamic linking
-+#
-+# helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
-+
-+{
-+   helgrind---_dl_allocate_tls 
-+   Helgrind:Race
-+   fun:mempcpy
-+   fun:_dl_allocate_tls_init
-+   ...
-+   fun:pthread_create@@GLIBC_2.2*
-+   fun:pthread_create_WRK
-+   fun:pthread_create@*
-+}
-+
-+{
-+   helgrind---_dl_allocate_tls2
-+   Helgrind:Race
-+   fun:memcpy
-+   fun:__mempcpy_inline
-+   fun:_dl_allocate_tls_init
-+   ...
-+   fun:pthread_create@@GLIBC_2.2*
-+   fun:pthread_create_WRK
-+   fun:pthread_create@*
-+}
-+
-+####################################################
-+# To do with GNU libgomp
-+#
-+{
-+   helgrind---libgomp43-1
-+   Helgrind:Race
-+   fun:gomp_ordered_sync
-+}
-+
-+{
-+   helgrind---libgomp43-1
-+   Helgrind:Race
-+   fun:gomp_ordered_next
-+}
-+
-+{
-+   helgrind---libgomp43-1
-+   Helgrind:Race
-+   fun:gomp_ordered_last
-+}
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb b/poky/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb
deleted file mode 100644
index 3fa483d..0000000
--- a/poky/meta/recipes-devtools/valgrind/valgrind_3.17.0.bb
+++ /dev/null
@@ -1,260 +0,0 @@
-SUMMARY = "Valgrind memory debugger and instrumentation framework"
-HOMEPAGE = "http://valgrind.org/"
-DESCRIPTION = "Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail."
-BUGTRACKER = "http://valgrind.org/support/bug_reports.html"
-LICENSE = "GPLv2 & GPLv2+ & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://include/pub_tool_basics.h;beginline=6;endline=29;md5=41c410e8d3f305aee7aaa666b2e4f366 \
-                    file://include/valgrind.h;beginline=1;endline=56;md5=ad3b317f3286b6b704575d9efe6ca5df \
-                    file://COPYING.DOCS;md5=24ea4c7092233849b4394699333b5c56"
-
-DEPENDS = " \
-           ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'boost', '', d)} \
-        "
-
-SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \
-           file://fixed-perl-path.patch \
-           file://Added-support-for-PPC-instructions-mfatbu-mfatbl.patch \
-           file://run-ptest \
-           file://remove-for-aarch64 \
-           file://remove-for-all \
-           file://taskset_nondeterministic_tests \
-           file://0004-Fix-out-of-tree-builds.patch \
-           file://0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch \
-           file://0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch \
-           file://use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch \
-           file://avoid-neon-for-targets-which-don-t-support-it.patch \
-           file://valgrind-make-ld-XXX.so-strlen-intercept-optional.patch \
-           file://0001-makefiles-Drop-setting-mcpu-to-cortex-a8-on-arm-arch.patch \
-           file://0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch \
-           file://0001-sigqueue-Rename-_sifields-to-__si_fields-on-musl.patch \
-           file://0002-context-APIs-are-not-available-on-musl.patch \
-           file://0003-correct-include-directive-path-for-config.h.patch \
-           file://0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch \
-           file://0001-memcheck-arm64-Define-__THROW-if-not-already-defined.patch \
-           file://0002-memcheck-x86-Define-__THROW-if-not-defined.patch \
-           file://0003-tests-seg_override-Replace-__modify_ldt-with-syscall.patch \
-           file://0001-fix-opcode-not-supported-on-mips32-linux.patch \
-           file://0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch \
-           file://0001-Make-local-functions-static-to-avoid-assembler-error.patch \
-           file://0001-Return-a-valid-exit_code-from-vg_regtest.patch \
-           file://0001-valgrind-filter_xml_frames-do-not-filter-usr.patch \
-           file://0001-memcheck-vgtests-remove-fullpath-after-flags.patch \
-           file://s390x_vec_op_t.patch \
-           file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \
-           file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \
-           file://0001-Add-missing-musl.supp.patch \
-           file://0001-drd-tests-swapcontext-Add-SIGALRM-handler-to-avoid-s.patch \
-           file://6da22a4d246519cd1a638cfc7eff00cdd74413c4.patch \
-           file://200b6a5a0ea3e1e154663b0fc575bfe2becf177d.patch \
-           file://a1364805fc74b5690f763033c0c9b43f27613572.patch \
-           file://52ed51fc35f8a6148c2940eb46932b02dd3b9b23.patch \
-           "
-SRC_URI[md5sum] = "afe11b5572c3121a781433b7c0ab741b"
-SRC_URI[sha256sum] = "ad3aec668e813e40f238995f60796d9590eee64a16dff88421430630e69285a2"
-UPSTREAM_CHECK_REGEX = "valgrind-(?P<pver>\d+(\.\d+)+)\.tar"
-
-COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux'
-
-# patch 0001-memcheck-vgtests-remove-fullpath-after-flags.patch removes relative path
-# argument. Change expected stderr files accordingly.
-do_patch:append() {
-    bb.build.exec_func('do_sed_paths', d)
-}
-
-do_sed_paths() {
-    sed -i -e 's|tests/||' ${S}/memcheck/tests/badfree3.stderr.exp
-    sed -i -e 's|tests/||' ${S}/memcheck/tests/varinfo5.stderr.exp
-}
-
-# valgrind supports armv7 and above
-COMPATIBLE_HOST:armv4 = 'null'
-COMPATIBLE_HOST:armv5 = 'null'
-COMPATIBLE_HOST:armv6 = 'null'
-
-# valgrind fails with powerpc soft-float
-COMPATIBLE_HOST:powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', 'null', '.*-linux', d)}"
-
-# X32 isn't supported by valgrind at this time
-COMPATIBLE_HOST:linux-gnux32 = 'null'
-COMPATIBLE_HOST:linux-muslx32 = 'null'
-
-# Disable for some MIPS variants
-COMPATIBLE_HOST:mipsarchr6 = 'null'
-COMPATIBLE_HOST:linux-gnun32 = 'null'
-
-# Disable for powerpc64 with musl
-COMPATIBLE_HOST:libc-musl:powerpc64 = 'null'
-
-# brokenseip is unfortunately required by ptests to pass
-inherit autotools-brokensep ptest multilib_header
-
-EXTRA_OECONF = "--enable-tls --without-mpicc"
-EXTRA_OECONF += "${@['--enable-only32bit','--enable-only64bit'][d.getVar('SITEINFO_BITS') != '32']}"
-
-# valgrind checks host_cpu "armv7*)", so we need to over-ride the autotools.bbclass default --host option
-EXTRA_OECONF:append:arm = " --host=armv7${HOST_VENDOR}-${HOST_OS}"
-
-EXTRA_OEMAKE = "-w"
-
-CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
-
-# valgrind likes to control its own optimisation flags. It generally defaults
-# to -O2 but uses -O0 for some specific test apps etc. Passing our own flags
-# (via CFLAGS) means we interfere with that. Only pass DEBUG_FLAGS to it
-# which fixes build path issue in DWARF.
-SELECTED_OPTIMIZATION = "${DEBUG_FLAGS}"
-
-do_configure:prepend () {
-    rm -rf ${S}/config.h
-    sed -i -e 's:$(abs_top_builddir):$(pkglibdir)/ptest:g' ${S}/none/tests/Makefile.am
-    sed -i -e 's:$(top_builddir):$(pkglibdir)/ptest:g' ${S}/memcheck/tests/Makefile.am
-}
-
-do_install:append () {
-    install -m 644 ${B}/default.supp ${D}/${libexecdir}/valgrind/
-    oe_multilib_header valgrind/config.h
-}
-
-VALGRINDARCH ?= "${TARGET_ARCH}"
-VALGRINDARCH:aarch64 = "arm64"
-VALGRINDARCH:x86-64 = "amd64"
-VALGRINDARCH:x86 = "x86"
-VALGRINDARCH:mips = "mips32"
-VALGRINDARCH:mipsel = "mips32"
-VALGRINDARCH:mips64el = "mips64"
-VALGRINDARCH:powerpc = "ppc"
-VALGRINDARCH:powerpc64 = "ppc64"
-VALGRINDARCH:powerpc64le = "ppc64le"
-
-INHIBIT_PACKAGE_STRIP_FILES = "${PKGD}${libexecdir}/valgrind/vgpreload_memcheck-${VALGRINDARCH}-linux.so"
-
-RDEPENDS:${PN} += "perl"
-
-# valgrind needs debug information for ld.so at runtime in order to
-# redirect functions like strlen.
-RRECOMMENDS:${PN} += "${TCLIBC}-dbg"
-
-RDEPENDS:${PN}-ptest += " bash coreutils curl file \
-   gdb libgomp \
-   perl \
-   perl-module-file-basename perl-module-file-glob perl-module-getopt-long \
-   perl-module-overloading perl-module-cwd perl-module-ipc-open3 \
-   perl-module-carp perl-module-symbol \
-   procps sed ${PN}-dbg ${PN}-src ${TCLIBC}-src gcc-runtime-dbg"
-RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils"
-
-# One of the tests contains a bogus interpreter path on purpose.
-# Skip file dependency check
-SKIP_FILEDEPS:${PN}-ptest = '1'
-INSANE_SKIP:${PN}-ptest = "debug-deps"
-
-do_compile_ptest() {
-    oe_runmake check
-}
-
-do_install_ptest() {
-    chmod +x ${B}/tests/vg_regtest
-
-    # The test application binaries are not automatically installed.
-    # Grab them from the build directory.
-    #
-    # The regression tests require scripts and data files that are not
-    # copied to the build directory.  They must be copied from the
-    # source directory.
-    saved_dir=$PWD
-    for parent_dir in ${S} ${B} ; do
-        cd $parent_dir
-
-        subdirs=" \
-	   .in_place \
-	   cachegrind/tests \
-	   callgrind/tests \
-	   dhat/tests \
-	   drd/tests \
-	   gdbserver_tests \
-	   helgrind/tests \
-	   lackey/tests \
-	   massif/tests \
-	   memcheck/tests \
-	   none/tests \
-	   tests \
-	   exp-bbv/tests \
-	"
-        # Get the vg test scripts, filters, and expected files
-        for dir in $subdirs ; do
-            find $dir | cpio -pvdu ${D}${PTEST_PATH}
-        done
-        cd $saved_dir
-    done
-
-    # The scripts reference config.h so add it to the top ptest dir.
-    cp ${B}/config.h ${D}${PTEST_PATH}
-    install -D ${WORKDIR}/remove-for-aarch64 ${D}${PTEST_PATH}
-    install -D ${WORKDIR}/remove-for-all ${D}${PTEST_PATH}
-    install -D ${WORKDIR}/taskset_nondeterministic_tests ${D}${PTEST_PATH}
-
-    # Add an executable need by none/tests/bigcode
-    mkdir ${D}${PTEST_PATH}/perf
-    cp ${B}/perf/bigcode ${D}${PTEST_PATH}/perf
-
-    # Add an executable needed by memcheck/tests/vcpu_bz2
-    cp ${B}/perf/bz2 ${D}${PTEST_PATH}/perf
-
-    # Make the ptest dir look like the top level valgrind src dir
-    # This is checked by the gdbserver_tests/make_local_links script
-    mkdir ${D}${PTEST_PATH}/coregrind
-    cp ${B}/coregrind/vgdb ${D}${PTEST_PATH}/coregrind
-
-    # Add an executable needed by massif tests
-    cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print
-
-    find ${D}${PTEST_PATH} \
-        \( \
-	   -name "Makefile*" \
-        -o -name "*.o" \
-	\) \
-        -exec rm {} \;
-
-    # These files need to be newer so touch them.
-    touch ${D}${PTEST_PATH}/cachegrind/tests/a.c -r ${D}${PTEST_PATH}/cachegrind/tests/cgout-test
-
-    # find *_annotate in ${bindir} for yocto build
-    sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann1.vgtest
-    sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann2.vgtest
-
-    sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest
-    sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest
-
-    # point the expanded @abs_top_builddir@ of the host to PTEST_PATH
-    sed -i s:${S}:${PTEST_PATH}:g \
-        ${D}${PTEST_PATH}/memcheck/tests/linux/debuginfod-check.vgtest
-
-    # handle multilib
-    sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
-    sed -i s:@libexecdir@:${libexecdir}:g ${D}${PTEST_PATH}/run-ptest
-    sed -i s:@bindir@:${bindir}:g ${D}${PTEST_PATH}/run-ptest
-
-    # This test fails on the host as well, using both 3.15 and git master (as of Jan 24 2020)
-    # https://bugs.kde.org/show_bug.cgi?id=402833
-    rm ${D}${PTEST_PATH}/memcheck/tests/overlap.vgtest
-
-    # This is known failure see https://bugs.kde.org/show_bug.cgi?id=435732
-    rm ${D}${PTEST_PATH}/memcheck/tests/leak_cpp_interior.vgtest
-
-    # As the binary isn't stripped or debug-splitted, the source file isn't fetched
-    # via dwarfsrcfiles either, so it needs to be installed manually.
-    mkdir -p ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/
-    install ${S}/none/tests/tls.c ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/
-}
-
-# avoid stripping some generated binaries otherwise some of the tests will fail
-# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
-INHIBIT_PACKAGE_STRIP_FILES += "\
-    ${PKGD}${PTEST_PATH}/none/tests/tls \
-    ${PKGD}${PTEST_PATH}/none/tests/tls.so \
-    ${PKGD}${PTEST_PATH}/none/tests/tls2.so \
-    ${PKGD}${PTEST_PATH}/helgrind/tests/tc09_bad_unlock \
-    ${PKGD}${PTEST_PATH}/memcheck/tests/manuel1 \
-    ${PKGD}${PTEST_PATH}/drd/tests/pth_detached3 \
-"
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind_3.18.1.bb b/poky/meta/recipes-devtools/valgrind/valgrind_3.18.1.bb
new file mode 100644
index 0000000..6fc2f36
--- /dev/null
+++ b/poky/meta/recipes-devtools/valgrind/valgrind_3.18.1.bb
@@ -0,0 +1,253 @@
+SUMMARY = "Valgrind memory debugger and instrumentation framework"
+HOMEPAGE = "http://valgrind.org/"
+DESCRIPTION = "Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail."
+BUGTRACKER = "http://valgrind.org/support/bug_reports.html"
+LICENSE = "GPLv2 & GPLv2+ & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://include/pub_tool_basics.h;beginline=6;endline=29;md5=41c410e8d3f305aee7aaa666b2e4f366 \
+                    file://include/valgrind.h;beginline=1;endline=56;md5=ad3b317f3286b6b704575d9efe6ca5df \
+                    file://COPYING.DOCS;md5=24ea4c7092233849b4394699333b5c56"
+
+DEPENDS = " \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'boost', '', d)} \
+        "
+
+SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \
+           file://fixed-perl-path.patch \
+           file://Added-support-for-PPC-instructions-mfatbu-mfatbl.patch \
+           file://run-ptest \
+           file://remove-for-aarch64 \
+           file://remove-for-all \
+           file://taskset_nondeterministic_tests \
+           file://0004-Fix-out-of-tree-builds.patch \
+           file://0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch \
+           file://0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch \
+           file://use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch \
+           file://avoid-neon-for-targets-which-don-t-support-it.patch \
+           file://valgrind-make-ld-XXX.so-strlen-intercept-optional.patch \
+           file://0001-makefiles-Drop-setting-mcpu-to-cortex-a8-on-arm-arch.patch \
+           file://0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch \
+           file://0001-sigqueue-Rename-_sifields-to-__si_fields-on-musl.patch \
+           file://0002-context-APIs-are-not-available-on-musl.patch \
+           file://0003-correct-include-directive-path-for-config.h.patch \
+           file://0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch \
+           file://0001-memcheck-arm64-Define-__THROW-if-not-already-defined.patch \
+           file://0002-memcheck-x86-Define-__THROW-if-not-defined.patch \
+           file://0003-tests-seg_override-Replace-__modify_ldt-with-syscall.patch \
+           file://0001-fix-opcode-not-supported-on-mips32-linux.patch \
+           file://0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch \
+           file://0001-Make-local-functions-static-to-avoid-assembler-error.patch \
+           file://0001-Return-a-valid-exit_code-from-vg_regtest.patch \
+           file://0001-valgrind-filter_xml_frames-do-not-filter-usr.patch \
+           file://0001-memcheck-vgtests-remove-fullpath-after-flags.patch \
+           file://s390x_vec_op_t.patch \
+           file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \
+           file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \
+           "
+SRC_URI[sha256sum] = "00859aa13a772eddf7822225f4b46ee0d39afbe071d32778da4d99984081f7f5"
+UPSTREAM_CHECK_REGEX = "valgrind-(?P<pver>\d+(\.\d+)+)\.tar"
+
+COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux'
+
+# patch 0001-memcheck-vgtests-remove-fullpath-after-flags.patch removes relative path
+# argument. Change expected stderr files accordingly.
+do_patch:append() {
+    bb.build.exec_func('do_sed_paths', d)
+}
+
+do_sed_paths() {
+    sed -i -e 's|tests/||' ${S}/memcheck/tests/badfree3.stderr.exp
+    sed -i -e 's|tests/||' ${S}/memcheck/tests/varinfo5.stderr.exp
+}
+
+# valgrind supports armv7 and above
+COMPATIBLE_HOST:armv4 = 'null'
+COMPATIBLE_HOST:armv5 = 'null'
+COMPATIBLE_HOST:armv6 = 'null'
+
+# valgrind fails with powerpc soft-float
+COMPATIBLE_HOST:powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', 'null', '.*-linux', d)}"
+
+# X32 isn't supported by valgrind at this time
+COMPATIBLE_HOST:linux-gnux32 = 'null'
+COMPATIBLE_HOST:linux-muslx32 = 'null'
+
+# Disable for some MIPS variants
+COMPATIBLE_HOST:mipsarchr6 = 'null'
+COMPATIBLE_HOST:linux-gnun32 = 'null'
+
+# Disable for powerpc64 with musl
+COMPATIBLE_HOST:libc-musl:powerpc64 = 'null'
+
+# brokenseip is unfortunately required by ptests to pass
+inherit autotools-brokensep ptest multilib_header
+
+EXTRA_OECONF = "--enable-tls --without-mpicc"
+EXTRA_OECONF += "${@['--enable-only32bit','--enable-only64bit'][d.getVar('SITEINFO_BITS') != '32']}"
+
+# valgrind checks host_cpu "armv7*)", so we need to over-ride the autotools.bbclass default --host option
+EXTRA_OECONF:append:arm = " --host=armv7${HOST_VENDOR}-${HOST_OS}"
+
+EXTRA_OEMAKE = "-w"
+
+CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
+
+# valgrind likes to control its own optimisation flags. It generally defaults
+# to -O2 but uses -O0 for some specific test apps etc. Passing our own flags
+# (via CFLAGS) means we interfere with that. Only pass DEBUG_FLAGS to it
+# which fixes build path issue in DWARF.
+SELECTED_OPTIMIZATION = "${DEBUG_FLAGS}"
+
+do_configure:prepend () {
+    rm -rf ${S}/config.h
+    sed -i -e 's:$(abs_top_builddir):$(pkglibdir)/ptest:g' ${S}/none/tests/Makefile.am
+    sed -i -e 's:$(top_builddir):$(pkglibdir)/ptest:g' ${S}/memcheck/tests/Makefile.am
+}
+
+do_install:append () {
+    install -m 644 ${B}/default.supp ${D}/${libexecdir}/valgrind/
+    oe_multilib_header valgrind/config.h
+}
+
+VALGRINDARCH ?= "${TARGET_ARCH}"
+VALGRINDARCH:aarch64 = "arm64"
+VALGRINDARCH:x86-64 = "amd64"
+VALGRINDARCH:x86 = "x86"
+VALGRINDARCH:mips = "mips32"
+VALGRINDARCH:mipsel = "mips32"
+VALGRINDARCH:mips64el = "mips64"
+VALGRINDARCH:powerpc = "ppc"
+VALGRINDARCH:powerpc64 = "ppc64"
+VALGRINDARCH:powerpc64le = "ppc64le"
+
+INHIBIT_PACKAGE_STRIP_FILES = "${PKGD}${libexecdir}/valgrind/vgpreload_memcheck-${VALGRINDARCH}-linux.so"
+
+RDEPENDS:${PN} += "perl"
+
+# valgrind needs debug information for ld.so at runtime in order to
+# redirect functions like strlen.
+RRECOMMENDS:${PN} += "${TCLIBC}-dbg"
+
+RDEPENDS:${PN}-ptest += " bash coreutils curl file \
+   gdb libgomp \
+   perl \
+   perl-module-file-basename perl-module-file-glob perl-module-getopt-long \
+   perl-module-overloading perl-module-cwd perl-module-ipc-open3 \
+   perl-module-carp perl-module-symbol \
+   procps sed ${PN}-dbg ${PN}-src ${TCLIBC}-src gcc-runtime-dbg"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils"
+
+# One of the tests contains a bogus interpreter path on purpose.
+# Skip file dependency check
+SKIP_FILEDEPS:${PN}-ptest = '1'
+INSANE_SKIP:${PN}-ptest = "debug-deps"
+
+do_compile_ptest() {
+    oe_runmake check
+}
+
+do_install_ptest() {
+    chmod +x ${B}/tests/vg_regtest
+
+    # The test application binaries are not automatically installed.
+    # Grab them from the build directory.
+    #
+    # The regression tests require scripts and data files that are not
+    # copied to the build directory.  They must be copied from the
+    # source directory.
+    saved_dir=$PWD
+    for parent_dir in ${S} ${B} ; do
+        cd $parent_dir
+
+        subdirs=" \
+	   .in_place \
+	   cachegrind/tests \
+	   callgrind/tests \
+	   dhat/tests \
+	   drd/tests \
+	   gdbserver_tests \
+	   helgrind/tests \
+	   lackey/tests \
+	   massif/tests \
+	   memcheck/tests \
+	   none/tests \
+	   tests \
+	   exp-bbv/tests \
+	"
+        # Get the vg test scripts, filters, and expected files
+        for dir in $subdirs ; do
+            find $dir | cpio -pvdu ${D}${PTEST_PATH}
+        done
+        cd $saved_dir
+    done
+
+    # The scripts reference config.h so add it to the top ptest dir.
+    cp ${B}/config.h ${D}${PTEST_PATH}
+    install -D ${WORKDIR}/remove-for-aarch64 ${D}${PTEST_PATH}
+    install -D ${WORKDIR}/remove-for-all ${D}${PTEST_PATH}
+    install -D ${WORKDIR}/taskset_nondeterministic_tests ${D}${PTEST_PATH}
+
+    # Add an executable need by none/tests/bigcode
+    mkdir ${D}${PTEST_PATH}/perf
+    cp ${B}/perf/bigcode ${D}${PTEST_PATH}/perf
+
+    # Add an executable needed by memcheck/tests/vcpu_bz2
+    cp ${B}/perf/bz2 ${D}${PTEST_PATH}/perf
+
+    # Make the ptest dir look like the top level valgrind src dir
+    # This is checked by the gdbserver_tests/make_local_links script
+    mkdir ${D}${PTEST_PATH}/coregrind
+    cp ${B}/coregrind/vgdb ${D}${PTEST_PATH}/coregrind
+
+    # Add an executable needed by massif tests
+    cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print
+
+    find ${D}${PTEST_PATH} \
+        \( \
+	   -name "Makefile*" \
+        -o -name "*.o" \
+	\) \
+        -exec rm {} \;
+
+    # These files need to be newer so touch them.
+    touch ${D}${PTEST_PATH}/cachegrind/tests/a.c -r ${D}${PTEST_PATH}/cachegrind/tests/cgout-test
+
+    # find *_annotate in ${bindir} for yocto build
+    sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann1.vgtest
+    sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann2.vgtest
+
+    sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest
+    sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest
+
+    # point the expanded @abs_top_builddir@ of the host to PTEST_PATH
+    sed -i s:${S}:${PTEST_PATH}:g \
+        ${D}${PTEST_PATH}/memcheck/tests/linux/debuginfod-check.vgtest
+
+    # handle multilib
+    sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
+    sed -i s:@libexecdir@:${libexecdir}:g ${D}${PTEST_PATH}/run-ptest
+    sed -i s:@bindir@:${bindir}:g ${D}${PTEST_PATH}/run-ptest
+
+    # This test fails on the host as well, using both 3.15 and git master (as of Jan 24 2020)
+    # https://bugs.kde.org/show_bug.cgi?id=402833
+    rm ${D}${PTEST_PATH}/memcheck/tests/overlap.vgtest
+
+    # This is known failure see https://bugs.kde.org/show_bug.cgi?id=435732
+    rm ${D}${PTEST_PATH}/memcheck/tests/leak_cpp_interior.vgtest
+
+    # As the binary isn't stripped or debug-splitted, the source file isn't fetched
+    # via dwarfsrcfiles either, so it needs to be installed manually.
+    mkdir -p ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/
+    install ${S}/none/tests/tls.c ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/
+}
+
+# avoid stripping some generated binaries otherwise some of the tests will fail
+# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
+INHIBIT_PACKAGE_STRIP_FILES += "\
+    ${PKGD}${PTEST_PATH}/none/tests/tls \
+    ${PKGD}${PTEST_PATH}/none/tests/tls.so \
+    ${PKGD}${PTEST_PATH}/none/tests/tls2.so \
+    ${PKGD}${PTEST_PATH}/helgrind/tests/tc09_bad_unlock \
+    ${PKGD}${PTEST_PATH}/memcheck/tests/manuel1 \
+    ${PKGD}${PTEST_PATH}/drd/tests/pth_detached3 \
+"
diff --git a/poky/meta/recipes-extended/acpica/acpica_20210730.bb b/poky/meta/recipes-extended/acpica/acpica_20210730.bb
deleted file mode 100644
index b66e605..0000000
--- a/poky/meta/recipes-extended/acpica/acpica_20210730.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "ACPICA tools for the development and debug of ACPI tables"
-DESCRIPTION = "The ACPI Component Architecture (ACPICA) project provides an \
-OS-independent reference implementation of the Advanced Configuration and \
-Power Interface Specification (ACPI). ACPICA code contains those portions of \
-ACPI meant to be directly integrated into the host OS as a kernel-resident \
-subsystem, and a small set of tools to assist in developing and debugging \
-ACPI tables."
-
-HOMEPAGE = "http://www.acpica.org/"
-SECTION = "console/tools"
-
-LICENSE = "Intel | BSD-3-Clause | GPLv2"
-LIC_FILES_CHKSUM = "file://source/compiler/aslcompile.c;beginline=7;endline=150;md5=c33ce358fdcd142684e41e336b7992e8"
-
-COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
-
-DEPENDS = "m4-native flex-native bison-native"
-
-SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix-${PV}.tar.gz"
-SRC_URI[sha256sum] = "4a0c14d5148666612aa0555c5179eaa86230602394fd1bc3d16b506fcf49b5de"
-
-UPSTREAM_CHECK_URI = "https://acpica.org/downloads"
-
-S = "${WORKDIR}/acpica-unix-${PV}"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE:${PN} = "acpixtract acpidump"
-
-EXTRA_OEMAKE = "CC='${CC}' \
-                OPT_CFLAGS=-Wall \
-                DESTDIR=${D} \
-                PREFIX=${prefix} \
-                INSTALLDIR=${bindir} \
-                INSTALLFLAGS= \
-                YACC=bison \
-                YFLAGS='-y --file-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}' \
-                "
-
-do_install() {
-    oe_runmake install
-}
-
-# iasl*.bb is a subset of this recipe, so RREPLACE it
-PROVIDES = "iasl"
-RPROVIDES:${PN} += "iasl"
-RREPLACES:${PN} += "iasl"
-RCONFLICTS:${PN} += "iasl"
-
-BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-extended/acpica/acpica_20210930.bb b/poky/meta/recipes-extended/acpica/acpica_20210930.bb
new file mode 100644
index 0000000..47f1b62
--- /dev/null
+++ b/poky/meta/recipes-extended/acpica/acpica_20210930.bb
@@ -0,0 +1,51 @@
+SUMMARY = "ACPICA tools for the development and debug of ACPI tables"
+DESCRIPTION = "The ACPI Component Architecture (ACPICA) project provides an \
+OS-independent reference implementation of the Advanced Configuration and \
+Power Interface Specification (ACPI). ACPICA code contains those portions of \
+ACPI meant to be directly integrated into the host OS as a kernel-resident \
+subsystem, and a small set of tools to assist in developing and debugging \
+ACPI tables."
+
+HOMEPAGE = "http://www.acpica.org/"
+SECTION = "console/tools"
+
+LICENSE = "Intel | BSD-3-Clause | GPLv2"
+LIC_FILES_CHKSUM = "file://source/compiler/aslcompile.c;beginline=7;endline=150;md5=c33ce358fdcd142684e41e336b7992e8"
+
+COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
+
+DEPENDS = "m4-native flex-native bison-native"
+
+SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix-${PV}.tar.gz"
+SRC_URI[sha256sum] = "3cd82a281a16bc70c2708665668f138c4fc606c31161d46ce77230454ec04821"
+
+UPSTREAM_CHECK_URI = "https://acpica.org/downloads"
+
+S = "${WORKDIR}/acpica-unix-${PV}"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "acpixtract acpidump"
+
+EXTRA_OEMAKE = "CC='${CC}' \
+                OPT_CFLAGS=-Wall \
+                DESTDIR=${D} \
+                PREFIX=${prefix} \
+                INSTALLDIR=${bindir} \
+                INSTALLFLAGS= \
+                YACC=bison \
+                YFLAGS='-y --file-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}' \
+                "
+
+do_install() {
+    oe_runmake install
+}
+
+# iasl*.bb is a subset of this recipe, so RREPLACE it
+PROVIDES = "iasl"
+RPROVIDES:${PN} += "iasl"
+RREPLACES:${PN} += "iasl"
+RCONFLICTS:${PN} += "iasl"
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-extended/asciidoc/asciidoc_10.0.0.bb b/poky/meta/recipes-extended/asciidoc/asciidoc_10.0.0.bb
new file mode 100644
index 0000000..f7fa668
--- /dev/null
+++ b/poky/meta/recipes-extended/asciidoc/asciidoc_10.0.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Tool for creating HTML, PDF, EPUB, man pages"
+DESCRIPTION = "AsciiDoc is a text document format for writing short documents, \
+articles, books and UNIX man pages."
+
+HOMEPAGE = "http://asciidoc.org/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=4e5d1baf6f20559e3bec172226a47e4e \
+                    file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 "
+
+SRC_URI = "git://github.com/asciidoc/asciidoc-py3;protocol=https;branch=main"
+SRCREV = "4667219e473a24e8e645eb9b9fb0a7ddba322f44"
+
+DEPENDS = "libxml2-native libxslt-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
+
+S = "${WORKDIR}/git"
+
+# Tell xmllint where to find the DocBook XML catalogue, because right now it
+# opens /etc/xml/catalog on the host. Depends on auto-catalogs.patch
+export SGML_CATALOG_FILES="file://${STAGING_ETCDIR_NATIVE}/xml/catalog"
+
+inherit setuptools3
+CLEANBROKEN = "1"
+
+BBCLASSEXTEND = "native nativesdk"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))$"
diff --git a/poky/meta/recipes-extended/asciidoc/asciidoc_9.1.0.bb b/poky/meta/recipes-extended/asciidoc/asciidoc_9.1.0.bb
deleted file mode 100644
index dd9f8e3..0000000
--- a/poky/meta/recipes-extended/asciidoc/asciidoc_9.1.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Tool for creating HTML, PDF, EPUB, man pages"
-DESCRIPTION = "AsciiDoc is a text document format for writing short documents, \
-articles, books and UNIX man pages."
-
-HOMEPAGE = "http://asciidoc.org/"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=4e5d1baf6f20559e3bec172226a47e4e \
-                    file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 "
-
-SRC_URI = "git://github.com/asciidoc/asciidoc-py3;protocol=https;branch=9.x"
-SRCREV = "9705d428439530104ce55d0ba12e8ef9d1b57ad1"
-
-DEPENDS = "libxml2-native libxslt-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-
-S = "${WORKDIR}/git"
-
-# Tell xmllint where to find the DocBook XML catalogue, because right now it
-# opens /etc/xml/catalog on the host. Depends on auto-catalogs.patch
-export SGML_CATALOG_FILES="file://${STAGING_ETCDIR_NATIVE}/xml/catalog"
-
-# Not using automake
-inherit autotools-brokensep
-CLEANBROKEN = "1"
-
-# target and nativesdk needs python3, but for native we can use the host.
-RDEPENDS:${PN} += "python3"
-RDEPENDS:remove:class-native = "python3"
-
-BBCLASSEXTEND = "native nativesdk"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))$"
diff --git a/poky/meta/recipes-extended/cups/cups.inc b/poky/meta/recipes-extended/cups/cups.inc
index f6f8637..2994973 100644
--- a/poky/meta/recipes-extended/cups/cups.inc
+++ b/poky/meta/recipes-extended/cups/cups.inc
@@ -18,7 +18,7 @@
            "
 
 UPSTREAM_CHECK_URI = "https://github.com/OpenPrinting/cups/releases"
-UPSTREAM_CHECK_REGEX = "cups-(?P<pver>.+)-source.tar"
+UPSTREAM_CHECK_REGEX = "cups-(?P<pver>(?!.+\d(b|rc)\d.+).+)-source.tar"
 
 # Issue only applies to MacOS
 CVE_CHECK_WHITELIST += "CVE-2008-1033"
@@ -116,4 +116,4 @@
 
 # -25317 concerns /var/log/cups having lp ownership.  Our /var/log/cups is
 # root:root, so this doesn't apply.
-CVE_CHECK_WHITELIST += "CVE-2021-25317"
\ No newline at end of file
+CVE_CHECK_WHITELIST += "CVE-2021-25317"
diff --git a/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch b/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
index 3b639eb..e4abadb 100644
--- a/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
+++ b/poky/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
@@ -1,4 +1,4 @@
-From e652ccd8965895087887c270fc0d380b61f96b11 Mon Sep 17 00:00:00 2001
+From cd444e576d446b7ccb51a26a02c0e75d6ee2abf2 Mon Sep 17 00:00:00 2001
 From: Tudor Florea <tudor.florea@enea.com>
 Date: Wed, 28 May 2014 18:59:54 +0200
 Subject: [PATCH] ethtool: use serial-tests config needed by ptest.
@@ -15,11 +15,11 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/configure.ac b/configure.ac
-index 6b620bf..ff62b2a 100644
+index 6c9453c..7c0f829 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
- AC_INIT(ethtool, 5.13, netdev@vger.kernel.org)
+ AC_INIT(ethtool, 5.14, netdev@vger.kernel.org)
  AC_PREREQ(2.52)
  AC_CONFIG_SRCDIR([ethtool.c])
 -AM_INIT_AUTOMAKE([gnu subdir-objects])
diff --git a/poky/meta/recipes-extended/ethtool/ethtool_5.13.bb b/poky/meta/recipes-extended/ethtool/ethtool_5.13.bb
deleted file mode 100644
index 3c99deb..0000000
--- a/poky/meta/recipes-extended/ethtool/ethtool_5.13.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Display or change ethernet card settings"
-DESCRIPTION = "A small utility for examining and tuning the settings of your ethernet-based network interfaces."
-HOMEPAGE = "http://www.kernel.org/pub/software/network/ethtool/"
-SECTION = "console/network"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://ethtool.c;beginline=4;endline=17;md5=c19b30548c582577fc6b443626fc1216"
-
-SRC_URI = "${KERNELORG_MIRROR}/software/network/ethtool/ethtool-${PV}.tar.gz \
-           file://run-ptest \
-           file://avoid_parallel_tests.patch \
-           "
-
-SRC_URI[sha256sum] = "e66ab0d74d2a888fd64a0053290dbea66ddc9b75b3d21d117b7edd9576b9db60"
-
-UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/software/network/ethtool/"
-
-inherit autotools ptest bash-completion pkgconfig
-
-RDEPENDS:${PN}-ptest += "make"
-
-PACKAGECONFIG ?= "netlink"
-PACKAGECONFIG[netlink] = "--enable-netlink,--disable-netlink,libmnl,"
-
-do_compile_ptest() {
-   oe_runmake buildtest-TESTS
-}
-
-do_install_ptest () {
-   cp ${B}/Makefile                 ${D}${PTEST_PATH}
-   install ${B}/test-cmdline        ${D}${PTEST_PATH}
-   if ${@bb.utils.contains('PACKAGECONFIG', 'netlink', 'false', 'true', d)}; then
-       install ${B}/test-features       ${D}${PTEST_PATH}
-   fi
-   install ${B}/ethtool             ${D}${PTEST_PATH}/ethtool
-   sed -i 's/^Makefile/_Makefile/'  ${D}${PTEST_PATH}/Makefile
-}
diff --git a/poky/meta/recipes-extended/ethtool/ethtool_5.14.bb b/poky/meta/recipes-extended/ethtool/ethtool_5.14.bb
new file mode 100644
index 0000000..28a49f4
--- /dev/null
+++ b/poky/meta/recipes-extended/ethtool/ethtool_5.14.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Display or change ethernet card settings"
+DESCRIPTION = "A small utility for examining and tuning the settings of your ethernet-based network interfaces."
+HOMEPAGE = "http://www.kernel.org/pub/software/network/ethtool/"
+SECTION = "console/network"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://ethtool.c;beginline=4;endline=17;md5=c19b30548c582577fc6b443626fc1216"
+
+SRC_URI = "${KERNELORG_MIRROR}/software/network/ethtool/ethtool-${PV}.tar.gz \
+           file://run-ptest \
+           file://avoid_parallel_tests.patch \
+           "
+
+SRC_URI[sha256sum] = "9868604c913e5483000c00d5dcb2bb3169a05252de47f62174702ff19cf6de7a"
+
+UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/software/network/ethtool/"
+
+inherit autotools ptest bash-completion pkgconfig
+
+RDEPENDS:${PN}-ptest += "make"
+
+PACKAGECONFIG ?= "netlink"
+PACKAGECONFIG[netlink] = "--enable-netlink,--disable-netlink,libmnl,"
+
+do_compile_ptest() {
+   oe_runmake buildtest-TESTS
+}
+
+do_install_ptest () {
+   cp ${B}/Makefile                 ${D}${PTEST_PATH}
+   install ${B}/test-cmdline        ${D}${PTEST_PATH}
+   if ${@bb.utils.contains('PACKAGECONFIG', 'netlink', 'false', 'true', d)}; then
+       install ${B}/test-features       ${D}${PTEST_PATH}
+   fi
+   install ${B}/ethtool             ${D}${PTEST_PATH}/ethtool
+   sed -i 's/^Makefile/_Makefile/'  ${D}${PTEST_PATH}/Makefile
+}
diff --git a/poky/meta/recipes-extended/findutils/findutils.inc b/poky/meta/recipes-extended/findutils/findutils.inc
index ea8a1b7..ddcc057 100644
--- a/poky/meta/recipes-extended/findutils/findutils.inc
+++ b/poky/meta/recipes-extended/findutils/findutils.inc
@@ -6,9 +6,11 @@
 BUGTRACKER = "http://savannah.gnu.org/bugs/?group=findutils"
 SECTION = "console/utils"
 
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.xz"
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.xz \
+          file://run-ptest \
+          "
 
-inherit autotools gettext texinfo update-alternatives
+inherit autotools gettext texinfo update-alternatives ptest
 
 ALTERNATIVE:${PN} = "find xargs"
 ALTERNATIVE_PRIORITY = "100"
diff --git a/poky/meta/recipes-extended/findutils/findutils/run-ptest b/poky/meta/recipes-extended/findutils/findutils/run-ptest
new file mode 100644
index 0000000..ec71583
--- /dev/null
+++ b/poky/meta/recipes-extended/findutils/findutils/run-ptest
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+# create temporary symlink to workaround missing oldfind
+ln -s /usr/bin/find /tmp/oldfind
+# make oldfind visible
+export PATH="/tmp:${PATH}"
+
+export built_programs="find xargs locate updatedb"
+
+# this gets substituted by sed during build
+export VERSION="__run_ptest_version__"
+
+# define missing functions for tests/init.sh
+fu_path_prepend_ () {
+	path_prepend_ $@
+}
+
+print_ver_ () {
+	:
+}
+
+skip_if_root_ () {
+	[ $(id -u) = 0 ] && exit 77;
+}
+
+require_root_ () {
+	[ $(id -u) = 0 ] || exit 77;
+}
+
+expensive_ () {
+	:
+}
+
+export -f fu_path_prepend_
+export -f print_ver_
+export -f skip_if_root_
+export -f require_root_
+export -f expensive_
+
+
+for f in tests/*/*.sh; do
+	bash $f ;
+	case $? in
+		0 )
+			echo -n "PASS";;
+		77 )
+			echo -n "SKIP";;
+		* )
+			echo -n "FAIL";;
+	esac
+	echo ": $f"
+done
+
+#remove symlink
+rm -f /tmp/oldfind
+
+echo
diff --git a/poky/meta/recipes-extended/findutils/findutils_4.8.0.bb b/poky/meta/recipes-extended/findutils/findutils_4.8.0.bb
index d8ccf4b..b0e56da 100644
--- a/poky/meta/recipes-extended/findutils/findutils_4.8.0.bb
+++ b/poky/meta/recipes-extended/findutils/findutils_4.8.0.bb
@@ -13,3 +13,14 @@
 CACHED_CONFIGUREVARS += "gl_cv_func_wcwidth_works=yes"
 
 EXTRA_OECONF += "ac_cv_path_SORT=${bindir}/sort"
+
+RDEPENDS:${PN}-ptest += "bash sed grep"
+
+do_install_ptest:class-target() {
+	mkdir -p ${D}${PTEST_PATH}/tests/
+	cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests/
+
+	# substitute value in run-ptest with actual version
+	sed -i -e 's/__run_ptest_version__/${PV}/' ${D}${PTEST_PATH}/run-ptest
+
+}
diff --git a/poky/meta/recipes-extended/gawk/gawk/0001-Use-cross-AR-during-compile.patch b/poky/meta/recipes-extended/gawk/gawk/0001-Use-cross-AR-during-compile.patch
index ca0d668..be6dbe1 100644
--- a/poky/meta/recipes-extended/gawk/gawk/0001-Use-cross-AR-during-compile.patch
+++ b/poky/meta/recipes-extended/gawk/gawk/0001-Use-cross-AR-during-compile.patch
@@ -1,35 +1,30 @@
-From 207b94e37c84007b294e57878c913271aad544ef Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 11 Nov 2020 23:13:23 -0800
-Subject: [PATCH] Use cross AR during compile
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
 
-If AR is specifcied then it should be used instead of defaulting to 'ar'
-from host
+From 47dce6a7002a8d7b818c19d574d81327b769871b Mon Sep 17 00:00:00 2001
+From: "Arnold D. Robbins" <arnold@skeeve.com>
+Date: Fri, 5 Jun 2020 13:14:54 +0300
+Subject: Allow for cross-compile version of ar.
 
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
- configure.ac | 7 +++++++
- 1 file changed, 7 insertions(+)
+ configure.ac | 3 +++
+ 1 file changed, 3 insertions(+)
+
+(limited to 'configure.ac')
 
 diff --git a/configure.ac b/configure.ac
-index 31364ab..4804f7b 100644
+index 31364ab8..8c256f21 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -92,6 +92,13 @@ GAWK_CANONICAL_HOST
- AC_USE_SYSTEM_EXTENSIONS
+@@ -105,6 +105,9 @@ AC_EXEEXT
+ AC_PROG_INSTALL
+ AC_PROG_MAKE_SET
  
- dnl checks for programs
-+m4_ifndef([AC_PROG_AR],[dnl
-+  AN_MAKEVAR([AR], [AC_PROG_AR])
-+  AN_PROGRAM([ar], [AC_PROG_AR])
-+  AC_DEFUN([AC_PROG_AR],
-+  [AC_CHECK_TOOL(AR, ar, :)])
-+])
-+AC_PROG_AR
- AC_PROG_EGREP
- AC_PROG_YACC
- AC_PROG_LN_S
++# support/ builds libsupport.a, allow for cross version of ar
++AM_PROG_AR
++
+ # This is mainly for my use during testing and development.
+ # Yes, it's a bit of a hack.
+ AC_MSG_CHECKING([for special development options])
 -- 
-2.29.2
-
+cgit v1.2.1
diff --git a/poky/meta/recipes-extended/gawk/gawk/test-time.patch b/poky/meta/recipes-extended/gawk/gawk/test-time.patch
new file mode 100644
index 0000000..05a68c5
--- /dev/null
+++ b/poky/meta/recipes-extended/gawk/gawk/test-time.patch
@@ -0,0 +1,22 @@
+The test time.awk does a sleep() and checks that the real sleep duration is
+close to the expected duration.
+
+As currently our tests can run on a heavily loaded system, increase the range of
+a passing duration.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/test/time.awk b/test/time.awk
+index 517377e2..ca81d92d 100644
+--- a/test/time.awk
++++ b/test/time.awk
+@@ -16,7 +16,7 @@ BEGIN {
+    printf "sleep(%s) = %s\n",delta,sleep(delta)
+    t1 = timecheck()
+    slept = t1-t0
+-   if ((slept < 0.9*delta) || (slept > 1.3*delta))
++   if ((slept < 0.5*delta) || (slept > 2*delta))
+       printf "Warning: tried to sleep %.2f secs, but slept for %.2f secs\n",
+ 	     delta,slept
+ }
diff --git a/poky/meta/recipes-extended/gawk/gawk_5.1.0.bb b/poky/meta/recipes-extended/gawk/gawk_5.1.0.bb
index 3c801e8..0961efa 100644
--- a/poky/meta/recipes-extended/gawk/gawk_5.1.0.bb
+++ b/poky/meta/recipes-extended/gawk/gawk_5.1.0.bb
@@ -18,6 +18,7 @@
 SRC_URI = "${GNU_MIRROR}/gawk/gawk-${PV}.tar.gz \
            file://run-ptest \
            file://0001-Use-cross-AR-during-compile.patch \
+           file://test-time.patch \
 "
 
 SRC_URI[md5sum] = "f719bc9966df28e67fc6ebc405e7ea03"
diff --git a/poky/meta/recipes-extended/ghostscript/ghostscript_9.54.0.bb b/poky/meta/recipes-extended/ghostscript/ghostscript_9.54.0.bb
deleted file mode 100644
index 59cc560..0000000
--- a/poky/meta/recipes-extended/ghostscript/ghostscript_9.54.0.bb
+++ /dev/null
@@ -1,129 +0,0 @@
-SUMMARY = "The GPL Ghostscript PostScript/PDF interpreter"
-DESCRIPTION = "Ghostscript is used for PostScript/PDF preview and printing.  Usually as \
-a back-end to a program such as ghostview, it can display PostScript and PDF \
-documents in an X11 environment. \
-\
-Furthermore, it can render PostScript and PDF files as graphics to be printed \
-on non-PostScript printers. Supported printers include common \
-dot-matrix, inkjet and laser models. \
-"
-HOMEPAGE = "http://www.ghostscript.com"
-SECTION = "console/utils"
-
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=70dc2bac4d0ce4448da873cd86b123fc"
-
-DEPENDS = "ghostscript-native tiff jpeg fontconfig cups libpng"
-DEPENDS:class-native = "libpng-native"
-
-UPSTREAM_CHECK_URI = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
-
-# As of ghostscript 9.54.0 the jpeg issue in the CVE is present in the gs jpeg sources
-# however we use an external jpeg which doesn't have the issue.
-CVE_CHECK_WHITELIST += "CVE-2013-6629"
-
-def gs_verdir(v):
-    return "".join(v.split("."))
-
-
-SRC_URI_BASE = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${@gs_verdir("${PV}")}/${BPN}-${PV}.tar.gz \
-                file://ghostscript-9.15-parallel-make.patch \
-                file://ghostscript-9.16-Werror-return-type.patch \
-                file://do-not-check-local-libpng-source.patch \
-                file://avoid-host-contamination.patch \
-                file://mkdir-p.patch \
-"
-
-SRC_URI = "${SRC_URI_BASE} \
-           file://ghostscript-9.21-prevent_recompiling.patch \
-           file://cups-no-gcrypt.patch \
-           "
-
-SRC_URI:class-native = "${SRC_URI_BASE} \
-                        file://ghostscript-9.21-native-fix-disable-system-libtiff.patch \
-                        file://base-genht.c-add-a-preprocessor-define-to-allow-fope.patch \
-                        "
-
-SRC_URI[sha256sum] = "0646bb97f6f4d10a763f4919c54fa28b4fbdd3dff8e7de3410431c81762cade0"
-
-# Put something like
-#
-#   PACKAGECONFIG:append:pn-ghostscript = " x11"
-#
-# in local.conf to enable building with X11.  Be careful.  The order
-# of the overrides matters!
-#
-#PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
-PACKAGECONFIG:class-native = ""
-
-PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR}, \
-                      --without-x, virtual/libx11 libxext libxt gtk+3\
-                      "
-
-EXTRA_OECONF = "--without-libpaper --with-system-libtiff --without-jbig2dec \
-                --with-fontpath=${datadir}/fonts \
-                --without-libidn --with-cups-serverbin=${exec_prefix}/lib/cups \
-                --with-cups-datadir=${datadir}/cups \
-                CUPSCONFIG="${STAGING_BINDIR_CROSS}/cups-config" \
-                "
-
-EXTRA_OECONF:append:mipsarcho32 = " --with-large_color_index=0"
-
-# Explicity disable libtiff, fontconfig,
-# freetype, cups for ghostscript-native
-EXTRA_OECONF:class-native = "--without-x --with-system-libtiff=no \
-                             --without-jbig2dec --without-libpaper \
-                             --with-fontpath=${datadir}/fonts \
-                             --without-libidn --disable-fontconfig \
-                             --enable-freetype --disable-cups "
-
-# This has been fixed upstream but for now we need to subvert the check for time.h
-# http://bugs.ghostscript.com/show_bug.cgi?id=692443
-# http://bugs.ghostscript.com/show_bug.cgi?id=692426
-CFLAGS += "-DHAVE_SYS_TIME_H=1"
-BUILD_CFLAGS += "-DHAVE_SYS_TIME_H=1"
-
-inherit autotools-brokensep
-
-do_configure:prepend:class-target () {
-        rm -rf ${S}/jpeg/
-}
-
-do_configure:append () {
-	# copy tools from the native ghostscript build
-	if [ "${PN}" != "ghostscript-native" ]; then
-		mkdir -p obj/aux soobj
-		for i in genarch genconf mkromfs echogs gendev genht packps; do
-			cp ${STAGING_BINDIR_NATIVE}/ghostscript-${PV}/$i obj/aux/$i
-		done
-	fi
-}
-
-do_install:append () {
-    mkdir -p ${D}${datadir}/ghostscript/${PV}/
-    cp -r ${S}/Resource ${D}${datadir}/ghostscript/${PV}/
-    cp -r ${S}/iccprofiles ${D}${datadir}/ghostscript/${PV}/
-}
-
-do_compile:class-native () {
-    mkdir -p obj
-    for i in genarch genconf mkromfs echogs gendev genht packps; do
-        oe_runmake obj/aux/$i
-    done
-}
-
-do_install:class-native () {
-    install -d ${D}${bindir}/ghostscript-${PV}
-    for i in genarch genconf mkromfs echogs gendev genht packps; do
-        install -m 755 obj/aux/$i ${D}${bindir}/ghostscript-${PV}/$i
-    done
-}
-
-BBCLASSEXTEND = "native"
-
-# ghostscript does not supports "arc"
-COMPATIBLE_HOST = "^(?!arc).*"
-
-# some entries in NVD uses gpl_ghostscript
-CVE_PRODUCT = "ghostscript gpl_ghostscript"
diff --git a/poky/meta/recipes-extended/ghostscript/ghostscript_9.55.0.bb b/poky/meta/recipes-extended/ghostscript/ghostscript_9.55.0.bb
new file mode 100644
index 0000000..3993603
--- /dev/null
+++ b/poky/meta/recipes-extended/ghostscript/ghostscript_9.55.0.bb
@@ -0,0 +1,129 @@
+SUMMARY = "The GPL Ghostscript PostScript/PDF interpreter"
+DESCRIPTION = "Ghostscript is used for PostScript/PDF preview and printing.  Usually as \
+a back-end to a program such as ghostview, it can display PostScript and PDF \
+documents in an X11 environment. \
+\
+Furthermore, it can render PostScript and PDF files as graphics to be printed \
+on non-PostScript printers. Supported printers include common \
+dot-matrix, inkjet and laser models. \
+"
+HOMEPAGE = "http://www.ghostscript.com"
+SECTION = "console/utils"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f98ffa763e50cded76f49bce73aade16"
+
+DEPENDS = "ghostscript-native tiff jpeg fontconfig cups libpng"
+DEPENDS:class-native = "libpng-native"
+
+UPSTREAM_CHECK_URI = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
+
+# As of ghostscript 9.54.0 the jpeg issue in the CVE is present in the gs jpeg sources
+# however we use an external jpeg which doesn't have the issue.
+CVE_CHECK_WHITELIST += "CVE-2013-6629"
+
+def gs_verdir(v):
+    return "".join(v.split("."))
+
+
+SRC_URI_BASE = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${@gs_verdir("${PV}")}/${BPN}-${PV}.tar.gz \
+                file://ghostscript-9.15-parallel-make.patch \
+                file://ghostscript-9.16-Werror-return-type.patch \
+                file://do-not-check-local-libpng-source.patch \
+                file://avoid-host-contamination.patch \
+                file://mkdir-p.patch \
+"
+
+SRC_URI = "${SRC_URI_BASE} \
+           file://ghostscript-9.21-prevent_recompiling.patch \
+           file://cups-no-gcrypt.patch \
+           "
+
+SRC_URI:class-native = "${SRC_URI_BASE} \
+                        file://ghostscript-9.21-native-fix-disable-system-libtiff.patch \
+                        file://base-genht.c-add-a-preprocessor-define-to-allow-fope.patch \
+                        "
+
+SRC_URI[sha256sum] = "31e2064be67e15b478a8da007d96d6cd4d2bee253e5be220703a225f7f79a70b"
+
+# Put something like
+#
+#   PACKAGECONFIG:append:pn-ghostscript = " x11"
+#
+# in local.conf to enable building with X11.  Be careful.  The order
+# of the overrides matters!
+#
+#PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG:class-native = ""
+
+PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR}, \
+                      --without-x, virtual/libx11 libxext libxt gtk+3\
+                      "
+
+EXTRA_OECONF = "--without-libpaper --with-system-libtiff --with-jbig2dec \
+                --with-fontpath=${datadir}/fonts \
+                --without-libidn --with-cups-serverbin=${exec_prefix}/lib/cups \
+                --with-cups-datadir=${datadir}/cups \
+                CUPSCONFIG="${STAGING_BINDIR_CROSS}/cups-config" \
+                "
+
+EXTRA_OECONF:append:mipsarcho32 = " --with-large_color_index=0"
+
+# Explicity disable libtiff, fontconfig,
+# freetype, cups for ghostscript-native
+EXTRA_OECONF:class-native = "--without-x --with-system-libtiff=no \
+                             --without-jbig2dec --without-libpaper \
+                             --with-fontpath=${datadir}/fonts \
+                             --without-libidn --disable-fontconfig \
+                             --enable-freetype --disable-cups "
+
+# This has been fixed upstream but for now we need to subvert the check for time.h
+# http://bugs.ghostscript.com/show_bug.cgi?id=692443
+# http://bugs.ghostscript.com/show_bug.cgi?id=692426
+CFLAGS += "-DHAVE_SYS_TIME_H=1"
+BUILD_CFLAGS += "-DHAVE_SYS_TIME_H=1"
+
+inherit autotools-brokensep
+
+do_configure:prepend:class-target () {
+        rm -rf ${S}/jpeg/
+}
+
+do_configure:append () {
+	# copy tools from the native ghostscript build
+	if [ "${PN}" != "ghostscript-native" ]; then
+		mkdir -p obj/aux soobj
+		for i in genarch genconf mkromfs echogs gendev genht packps; do
+			cp ${STAGING_BINDIR_NATIVE}/ghostscript-${PV}/$i obj/aux/$i
+		done
+	fi
+}
+
+do_install:append () {
+    mkdir -p ${D}${datadir}/ghostscript/${PV}/
+    cp -r ${S}/Resource ${D}${datadir}/ghostscript/${PV}/
+    cp -r ${S}/iccprofiles ${D}${datadir}/ghostscript/${PV}/
+}
+
+do_compile:class-native () {
+    mkdir -p obj
+    for i in genarch genconf mkromfs echogs gendev genht packps; do
+        oe_runmake obj/aux/$i
+    done
+}
+
+do_install:class-native () {
+    install -d ${D}${bindir}/ghostscript-${PV}
+    for i in genarch genconf mkromfs echogs gendev genht packps; do
+        install -m 755 obj/aux/$i ${D}${bindir}/ghostscript-${PV}/$i
+    done
+}
+
+BBCLASSEXTEND = "native"
+
+# ghostscript does not supports "arc"
+COMPATIBLE_HOST = "^(?!arc).*"
+
+# some entries in NVD uses gpl_ghostscript
+CVE_PRODUCT = "ghostscript gpl_ghostscript"
diff --git a/poky/meta/recipes-extended/gzip/gzip-1.10/wrong-path-fix.patch b/poky/meta/recipes-extended/gzip/gzip-1.11/wrong-path-fix.patch
similarity index 100%
rename from poky/meta/recipes-extended/gzip/gzip-1.10/wrong-path-fix.patch
rename to poky/meta/recipes-extended/gzip/gzip-1.11/wrong-path-fix.patch
diff --git a/poky/meta/recipes-extended/gzip/gzip_1.10.bb b/poky/meta/recipes-extended/gzip/gzip_1.10.bb
deleted file mode 100644
index 120e1d4..0000000
--- a/poky/meta/recipes-extended/gzip/gzip_1.10.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-require gzip.inc
-
-LICENSE = "GPLv3+"
-
-SRC_URI = "${GNU_MIRROR}/gzip/${BP}.tar.gz \
-           file://run-ptest \
-          "
-SRC_URI:append:class-target = " file://wrong-path-fix.patch"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://gzip.h;beginline=8;endline=20;md5=6e47caaa630e0c8bf9f1bc8d94a8ed0e"
-
-PROVIDES:append:class-native = " gzip-replacement-native"
-
-RDEPENDS:${PN}-ptest += "make perl grep diffutils"
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit ptest
-
-do_install_ptest() {
-	mkdir -p ${D}${PTEST_PATH}/src/build-aux
-	cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/src/build-aux/
-	mkdir -p ${D}${PTEST_PATH}/src/tests
-	cp -r ${S}/tests/* ${D}${PTEST_PATH}/src/tests
-	sed -e 's/^abs_srcdir = ..*/abs_srcdir = \.\./' \
-            -e 's/^top_srcdir = ..*/top_srcdir = \.\./' \
-            -e 's/^GREP = ..*/GREP = grep/'             \
-            -e 's/^AWK = ..*/AWK = awk/'                \
-            -e 's/^srcdir = ..*/srcdir = \./'           \
-            -e 's/^Makefile: ..*/Makefile: /'           \
-            -e 's,--sysroot=${STAGING_DIR_TARGET},,g'   \
-            -e 's|${DEBUG_PREFIX_MAP}||g' \
-            -e 's:${HOSTTOOLS_DIR}/::g'                 \
-            -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
-            ${B}/tests/Makefile > ${D}${PTEST_PATH}/src/tests/Makefile
-}
-
-SRC_URI[md5sum] = "cf9ee51aff167ff69844d5d7d71c8b20"
-SRC_URI[sha256sum] = "c91f74430bf7bc20402e1f657d0b252cb80aa66ba333a25704512af346633c68"
diff --git a/poky/meta/recipes-extended/gzip/gzip_1.11.bb b/poky/meta/recipes-extended/gzip/gzip_1.11.bb
new file mode 100644
index 0000000..eb3054c
--- /dev/null
+++ b/poky/meta/recipes-extended/gzip/gzip_1.11.bb
@@ -0,0 +1,39 @@
+require gzip.inc
+
+LICENSE = "GPLv3+"
+
+SRC_URI = "${GNU_MIRROR}/gzip/${BP}.tar.gz \
+           file://run-ptest \
+          "
+SRC_URI:append:class-target = " file://wrong-path-fix.patch"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://gzip.h;beginline=8;endline=20;md5=6e47caaa630e0c8bf9f1bc8d94a8ed0e"
+
+PROVIDES:append:class-native = " gzip-replacement-native"
+
+RDEPENDS:${PN}-ptest += "make perl grep diffutils"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit ptest
+
+do_install_ptest() {
+	mkdir -p ${D}${PTEST_PATH}/src/build-aux
+	cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/src/build-aux/
+	mkdir -p ${D}${PTEST_PATH}/src/tests
+	cp -r ${S}/tests/* ${D}${PTEST_PATH}/src/tests
+	sed -e 's/^abs_srcdir = ..*/abs_srcdir = \.\./' \
+            -e 's/^top_srcdir = ..*/top_srcdir = \.\./' \
+            -e 's/^GREP = ..*/GREP = grep/'             \
+            -e 's/^AWK = ..*/AWK = awk/'                \
+            -e 's/^srcdir = ..*/srcdir = \./'           \
+            -e 's/^Makefile: ..*/Makefile: /'           \
+            -e 's,--sysroot=${STAGING_DIR_TARGET},,g'   \
+            -e 's|${DEBUG_PREFIX_MAP}||g' \
+            -e 's:${HOSTTOOLS_DIR}/::g'                 \
+            -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
+            ${B}/tests/Makefile > ${D}${PTEST_PATH}/src/tests/Makefile
+}
+
+SRC_URI[sha256sum] = "3e8a0e0c45bad3009341dce17d71536c4c655d9313039021ce7554a26cd50ed9"
diff --git a/poky/meta/recipes-extended/libarchive/libarchive_3.5.1.bb b/poky/meta/recipes-extended/libarchive/libarchive_3.5.1.bb
deleted file mode 100644
index 7d98e57..0000000
--- a/poky/meta/recipes-extended/libarchive/libarchive_3.5.1.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "Support for reading various archive formats"
-DESCRIPTION = "C library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats"
-HOMEPAGE = "http://www.libarchive.org/"
-SECTION = "devel"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d499814247adaee08d88080841cb5665"
-
-DEPENDS = "e2fsprogs-native"
-
-PACKAGECONFIG ?= "zlib bz2 xz lzo zstd"
-
-PACKAGECONFIG:append:class-target = "\
-	${@bb.utils.filter('DISTRO_FEATURES', 'acl xattr', d)} \
-"
-
-DEPENDS_BZIP2 = "bzip2-replacement-native"
-DEPENDS_BZIP2:class-target = "bzip2"
-
-PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
-PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
-PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib,"
-PACKAGECONFIG[bz2] = "--with-bz2lib,--without-bz2lib,${DEPENDS_BZIP2},"
-PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz,"
-PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
-PACKAGECONFIG[libxml2] = "--with-xml2,--without-xml2,libxml2,"
-PACKAGECONFIG[expat] = "--with-expat,--without-expat,expat,"
-PACKAGECONFIG[lzo] = "--with-lzo2,--without-lzo2,lzo,"
-PACKAGECONFIG[nettle] = "--with-nettle,--without-nettle,nettle,"
-PACKAGECONFIG[lz4] = "--with-lz4,--without-lz4,lz4,"
-PACKAGECONFIG[mbedtls] = "--with-mbedtls,--without-mbedtls,mbedtls,"
-PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd,"
-
-EXTRA_OECONF += "--enable-largefile"
-
-SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz"
-
-SRC_URI[sha256sum] = "9015d109ec00bb9ae1a384b172bf2fc1dff41e2c66e5a9eeddf933af9db37f5a"
-
-inherit autotools update-alternatives pkgconfig
-
-CPPFLAGS += "-I${WORKDIR}/extra-includes"
-
-do_configure[cleandirs] += "${WORKDIR}/extra-includes"
-do_configure:prepend() {
-	# We just need the headers for some type constants, so no need to
-	# build all of e2fsprogs for the target
-	cp -R ${STAGING_INCDIR_NATIVE}/ext2fs ${WORKDIR}/extra-includes/
-}
-
-ALTERNATIVE_PRIORITY = "80"
-
-PACKAGES =+ "bsdtar"
-FILES:bsdtar = "${bindir}/bsdtar"
-
-ALTERNATIVE:bsdtar = "tar"
-ALTERNATIVE_LINK_NAME[tar] = "${base_bindir}/tar"
-ALTERNATIVE_TARGET[tar] = "${bindir}/bsdtar"
-
-PACKAGES =+ "bsdcpio"
-FILES:bsdcpio = "${bindir}/bsdcpio"
-
-ALTERNATIVE:bsdcpio = "cpio"
-ALTERNATIVE_LINK_NAME[cpio] = "${base_bindir}/cpio"
-ALTERNATIVE_TARGET[cpio] = "${bindir}/bsdcpio"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-extended/libarchive/libarchive_3.5.2.bb b/poky/meta/recipes-extended/libarchive/libarchive_3.5.2.bb
new file mode 100644
index 0000000..385bcef
--- /dev/null
+++ b/poky/meta/recipes-extended/libarchive/libarchive_3.5.2.bb
@@ -0,0 +1,66 @@
+SUMMARY = "Support for reading various archive formats"
+DESCRIPTION = "C library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats"
+HOMEPAGE = "http://www.libarchive.org/"
+SECTION = "devel"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d499814247adaee08d88080841cb5665"
+
+DEPENDS = "e2fsprogs-native"
+
+PACKAGECONFIG ?= "zlib bz2 xz lzo zstd"
+
+PACKAGECONFIG:append:class-target = "\
+	${@bb.utils.filter('DISTRO_FEATURES', 'acl xattr', d)} \
+"
+
+DEPENDS_BZIP2 = "bzip2-replacement-native"
+DEPENDS_BZIP2:class-target = "bzip2"
+
+PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
+PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
+PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib,"
+PACKAGECONFIG[bz2] = "--with-bz2lib,--without-bz2lib,${DEPENDS_BZIP2},"
+PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz,"
+PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
+PACKAGECONFIG[libxml2] = "--with-xml2,--without-xml2,libxml2,"
+PACKAGECONFIG[expat] = "--with-expat,--without-expat,expat,"
+PACKAGECONFIG[lzo] = "--with-lzo2,--without-lzo2,lzo,"
+PACKAGECONFIG[nettle] = "--with-nettle,--without-nettle,nettle,"
+PACKAGECONFIG[lz4] = "--with-lz4,--without-lz4,lz4,"
+PACKAGECONFIG[mbedtls] = "--with-mbedtls,--without-mbedtls,mbedtls,"
+PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd,"
+
+EXTRA_OECONF += "--enable-largefile"
+
+SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "5f245bd5176bc5f67428eb0aa497e09979264a153a074d35416521a5b8e86189"
+
+inherit autotools update-alternatives pkgconfig
+
+CPPFLAGS += "-I${WORKDIR}/extra-includes"
+
+do_configure[cleandirs] += "${WORKDIR}/extra-includes"
+do_configure:prepend() {
+	# We just need the headers for some type constants, so no need to
+	# build all of e2fsprogs for the target
+	cp -R ${STAGING_INCDIR_NATIVE}/ext2fs ${WORKDIR}/extra-includes/
+}
+
+ALTERNATIVE_PRIORITY = "80"
+
+PACKAGES =+ "bsdtar"
+FILES:bsdtar = "${bindir}/bsdtar"
+
+ALTERNATIVE:bsdtar = "tar"
+ALTERNATIVE_LINK_NAME[tar] = "${base_bindir}/tar"
+ALTERNATIVE_TARGET[tar] = "${bindir}/bsdtar"
+
+PACKAGES =+ "bsdcpio"
+FILES:bsdcpio = "${bindir}/bsdcpio"
+
+ALTERNATIVE:bsdcpio = "cpio"
+ALTERNATIVE_LINK_NAME[cpio] = "${base_bindir}/cpio"
+ALTERNATIVE_TARGET[cpio] = "${bindir}/bsdcpio"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-extended/libsolv/libsolv_0.7.19.bb b/poky/meta/recipes-extended/libsolv/libsolv_0.7.19.bb
deleted file mode 100644
index bb92507..0000000
--- a/poky/meta/recipes-extended/libsolv/libsolv_0.7.19.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Library for solving packages and reading repositories"
-DESCRIPTION = "This is libsolv, a free package dependency solver using a satisfiability algorithm for solving packages and reading repositories"
-HOMEPAGE = "https://github.com/openSUSE/libsolv"
-BUGTRACKER = "https://github.com/openSUSE/libsolv/issues"
-SECTION = "devel"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8"
-
-DEPENDS = "expat zlib"
-
-SRC_URI = "git://github.com/openSUSE/libsolv.git \
-"
-
-SRCREV = "c773294be6b0a2425f344a8999f173fb00cfd16f"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-PACKAGECONFIG ??= "${@bb.utils.contains('PACKAGE_CLASSES','package_rpm','rpm','',d)}"
-PACKAGECONFIG[rpm] = "-DENABLE_RPMMD=ON -DENABLE_RPMDB=ON -DENABLE_RPMDB_BDB=ON,,db rpm"
-
-EXTRA_OECMAKE = "-DMULTI_SEMANTICS=ON -DENABLE_COMPLEX_DEPS=ON"
-
-PACKAGES =+ "${PN}-tools ${PN}ext"
-
-FILES:${PN}-tools = "${bindir}/*"
-FILES:${PN}ext = "${libdir}/${PN}ext.so.*"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-extended/libsolv/libsolv_0.7.20.bb b/poky/meta/recipes-extended/libsolv/libsolv_0.7.20.bb
new file mode 100644
index 0000000..d4d6538
--- /dev/null
+++ b/poky/meta/recipes-extended/libsolv/libsolv_0.7.20.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Library for solving packages and reading repositories"
+DESCRIPTION = "This is libsolv, a free package dependency solver using a satisfiability algorithm for solving packages and reading repositories"
+HOMEPAGE = "https://github.com/openSUSE/libsolv"
+BUGTRACKER = "https://github.com/openSUSE/libsolv/issues"
+SECTION = "devel"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8"
+
+DEPENDS = "expat zlib"
+
+SRC_URI = "git://github.com/openSUSE/libsolv.git \
+"
+
+SRCREV = "f618e6aae1d44be633b2ab91d4fd4f4f974f4d40"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+PACKAGECONFIG ??= "${@bb.utils.contains('PACKAGE_CLASSES','package_rpm','rpm','',d)}"
+PACKAGECONFIG[rpm] = "-DENABLE_RPMMD=ON -DENABLE_RPMDB=ON,,rpm"
+
+EXTRA_OECMAKE = "-DMULTI_SEMANTICS=ON -DENABLE_COMPLEX_DEPS=ON"
+
+PACKAGES =+ "${PN}-tools ${PN}ext"
+
+FILES:${PN}-tools = "${bindir}/*"
+FILES:${PN}ext = "${libdir}/${PN}ext.so.*"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-extended/lighttpd/lighttpd/0001-meson-add-with_zstd-to-meson_options.txt.patch b/poky/meta/recipes-extended/lighttpd/lighttpd/0001-meson-add-with_zstd-to-meson_options.txt.patch
deleted file mode 100644
index ceedccb..0000000
--- a/poky/meta/recipes-extended/lighttpd/lighttpd/0001-meson-add-with_zstd-to-meson_options.txt.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From f24bd105388c305beeead5d3fa0a028b82354f18 Mon Sep 17 00:00:00 2001
-From: Glenn Strauss <gstrauss@gluelogic.com>
-Date: Wed, 3 Feb 2021 00:35:34 -0500
-Subject: [PATCH] [meson] add with_zstd to meson_options.txt
-
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- meson_options.txt | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/meson_options.txt b/meson_options.txt
-index 51bea44d..f6687159 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -148,6 +148,11 @@ option('with_zlib',
- 	value: true,
- 	description: 'with deflate-support for mod_deflate [default: on]',
- )
-+option('with_zstd',
-+	type: 'boolean',
-+	value: false,
-+	description: 'with zstd-support for mod_deflate [default: off]',
-+)
- 
- option('build_extra_warnings',
- 	type: 'boolean',
diff --git a/poky/meta/recipes-extended/lighttpd/lighttpd/0002-define-__BEGIN_DECLS-__END_DECLS-if-needed.patch b/poky/meta/recipes-extended/lighttpd/lighttpd/0002-define-__BEGIN_DECLS-__END_DECLS-if-needed.patch
new file mode 100644
index 0000000..2a9bb35
--- /dev/null
+++ b/poky/meta/recipes-extended/lighttpd/lighttpd/0002-define-__BEGIN_DECLS-__END_DECLS-if-needed.patch
@@ -0,0 +1,38 @@
+From c1466f3620f608e4def4b8853c4e2bc6d9a19646 Mon Sep 17 00:00:00 2001
+From: Glenn Strauss <gstrauss@gluelogic.com>
+Date: Mon, 4 Oct 2021 09:51:22 -0400
+Subject: [PATCH] define __BEGIN_DECLS, __END_DECLS if needed
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ src/first.h | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/src/first.h b/src/first.h
+index df747ba..9d0428a 100644
+--- a/src/first.h
++++ b/src/first.h
+@@ -39,6 +39,22 @@
+ #include <sys/types.h>
+ #include <stddef.h>
+ 
++#ifndef __BEGIN_DECLS
++#ifdef __cplusplus
++#define __BEGIN_DECLS extern "C" {
++#else
++#define __BEGIN_DECLS
++#endif
++#endif
++
++#ifndef __END_DECLS
++#ifdef __cplusplus
++#define __END_DECLS }
++#else
++#define __END_DECLS
++#endif
++#endif
++
+ #if defined HAVE_STDINT_H
+ # include <stdint.h>
+ #elif defined HAVE_INTTYPES_H
diff --git a/poky/meta/recipes-extended/lighttpd/lighttpd_1.4.59.bb b/poky/meta/recipes-extended/lighttpd/lighttpd_1.4.59.bb
deleted file mode 100644
index 8cb3a9a..0000000
--- a/poky/meta/recipes-extended/lighttpd/lighttpd_1.4.59.bb
+++ /dev/null
@@ -1,83 +0,0 @@
-SUMMARY = "Lightweight high-performance web server"
-HOMEPAGE = "http://www.lighttpd.net/"
-DESCRIPTION = "Lightweight high-performance web server is designed and optimized for high performance environments. With a small memory footprint compared to other web-servers, effective management of the cpu-load, and advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more)"
-BUGTRACKER = "http://redmine.lighttpd.net/projects/lighttpd/issues"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e4dac5c6ab169aa212feb5028853a579"
-
-SECTION = "net"
-RDEPENDS:${PN} = "lighttpd-module-dirlisting \
-                  lighttpd-module-indexfile \
-                  lighttpd-module-staticfile"
-RRECOMMENDS:${PN} = "lighttpd-module-access \
-                     lighttpd-module-accesslog"
-
-SRC_URI = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${PV}.tar.xz \
-           file://index.html.lighttpd \
-           file://lighttpd.conf \
-           file://lighttpd \
-           file://0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch \
-           file://0001-meson-add-with_zstd-to-meson_options.txt.patch \
-           "
-
-SRC_URI[sha256sum] = "fb953db273daef08edb6e202556cae8a3d07eed6081c96bd9903db957d1084d5"
-
-DEPENDS = "virtual/crypt"
-
-PACKAGECONFIG ??= "openssl pcre zlib \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)} \
-"
-
-PACKAGECONFIG[libev] = "-Dwith_libev=true,-Dwith_libev=false,libev"
-PACKAGECONFIG[mysql] = "-Dwith_mysql=true,-Dwith_mysql=false,mariadb"
-PACKAGECONFIG[ldap] = "-Dwith_ldap=true,-Dwith_ldap=false,openldap"
-PACKAGECONFIG[attr] = "-Dwith_xattr=true,-Dwith_xattr=false,attr"
-PACKAGECONFIG[openssl] = "-Dwith_openssl=true,-Dwith_openssl=false,openssl"
-PACKAGECONFIG[krb5] = "-Dwith_krb5=true,-Dwith_krb5=false,krb5"
-PACKAGECONFIG[pcre] = "-Dwith_pcre=true,-Dwith_pcre=false,libpcre"
-PACKAGECONFIG[zlib] = "-Dwith_zlib=true,-Dwith_zlib=false,zlib"
-PACKAGECONFIG[bzip2] = "-Dwith_bzip=true,-Dwith_bzip=false,bzip2"
-PACKAGECONFIG[webdav-props] = "-Dwith_webdav_props=true,-Dwith_webdav_props=false,libxml2 sqlite3"
-PACKAGECONFIG[webdav-locks] = "-Dwith_webdav_locks=true,-Dwith_webdav_locks=false,util-linux"
-PACKAGECONFIG[gdbm] = "-Dwith_gdbm=true,-Dwith_gdbm=false,gdbm"
-PACKAGECONFIG[memcache] = "-Dwith_memcached=true,-Dwith_memcached=false,libmemcached"
-PACKAGECONFIG[lua] = "-Dwith_lua=true,-Dwith_lua=false,lua"
-PACKAGECONFIG[zstd] = "-Dwith_zstd=true,-Dwith_zstd=false,zstd"
-
-inherit meson pkgconfig update-rc.d gettext systemd
-
-INITSCRIPT_NAME = "lighttpd"
-INITSCRIPT_PARAMS = "defaults 70"
-
-SYSTEMD_SERVICE:${PN} = "lighttpd.service"
-
-do_install:append() {
-	install -d ${D}${sysconfdir}/init.d ${D}${sysconfdir}/lighttpd ${D}${sysconfdir}/lighttpd.d ${D}/www/pages/dav
-	install -m 0755 ${WORKDIR}/lighttpd ${D}${sysconfdir}/init.d
-	install -m 0644 ${WORKDIR}/lighttpd.conf ${D}${sysconfdir}/lighttpd
-	install -m 0644 ${WORKDIR}/index.html.lighttpd ${D}/www/pages/index.html
-
-	install -d ${D}${systemd_system_unitdir}
-	install -m 0644 ${S}/doc/systemd/lighttpd.service ${D}${systemd_system_unitdir}
-	sed -i -e 's,@SBINDIR@,${sbindir},g' \
-		-e 's,@SYSCONFDIR@,${sysconfdir},g' \
-		-e 's,@BASE_BINDIR@,${base_bindir},g' \
-		${D}${systemd_system_unitdir}/lighttpd.service
-	#For FHS compliance, create symbolic links to /var/log and /var/tmp for logs and temporary data
-	ln -sf ${localstatedir}/log ${D}/www/logs
-	ln -sf ${localstatedir}/tmp ${D}/www/var
-}
-
-# bitbake.conf sets ${libdir}/${BPN}/* in FILES, which messes up the module split.
-# So we re-do the variable.
-FILES:${PN} = "${sysconfdir} /www ${sbindir}"
-
-CONFFILES:${PN} = "${sysconfdir}/lighttpd/lighttpd.conf"
-
-PACKAGES_DYNAMIC += "^lighttpd-module-.*"
-
-python populate_packages:prepend () {
-    lighttpd_libdir = d.expand('${prefix}/lib/lighttpd')
-    do_split_packages(d, lighttpd_libdir, r'^mod_(.*)\.so$', 'lighttpd-module-%s', 'Lighttpd module for %s', extra_depends='')
-}
diff --git a/poky/meta/recipes-extended/lighttpd/lighttpd_1.4.60.bb b/poky/meta/recipes-extended/lighttpd/lighttpd_1.4.60.bb
new file mode 100644
index 0000000..dca8934
--- /dev/null
+++ b/poky/meta/recipes-extended/lighttpd/lighttpd_1.4.60.bb
@@ -0,0 +1,83 @@
+SUMMARY = "Lightweight high-performance web server"
+HOMEPAGE = "http://www.lighttpd.net/"
+DESCRIPTION = "Lightweight high-performance web server is designed and optimized for high performance environments. With a small memory footprint compared to other web-servers, effective management of the cpu-load, and advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more)"
+BUGTRACKER = "http://redmine.lighttpd.net/projects/lighttpd/issues"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e4dac5c6ab169aa212feb5028853a579"
+
+SECTION = "net"
+RDEPENDS:${PN} = "lighttpd-module-dirlisting \
+                  lighttpd-module-indexfile \
+                  lighttpd-module-staticfile"
+RRECOMMENDS:${PN} = "lighttpd-module-access \
+                     lighttpd-module-accesslog"
+
+SRC_URI = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${PV}.tar.xz \
+           file://index.html.lighttpd \
+           file://lighttpd.conf \
+           file://lighttpd \
+           file://0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch \
+           file://0002-define-__BEGIN_DECLS-__END_DECLS-if-needed.patch \
+           "
+
+SRC_URI[sha256sum] = "4bb1dd859e541a3131e5be101557d2e1195b4129d3a849a3a6fbd21fe1c946f0"
+
+DEPENDS = "virtual/crypt"
+
+PACKAGECONFIG ??= "openssl pcre zlib \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)} \
+"
+
+PACKAGECONFIG[libev] = "-Dwith_libev=true,-Dwith_libev=false,libev"
+PACKAGECONFIG[mysql] = "-Dwith_mysql=true,-Dwith_mysql=false,mariadb"
+PACKAGECONFIG[ldap] = "-Dwith_ldap=true,-Dwith_ldap=false,openldap"
+PACKAGECONFIG[attr] = "-Dwith_xattr=true,-Dwith_xattr=false,attr"
+PACKAGECONFIG[openssl] = "-Dwith_openssl=true,-Dwith_openssl=false,openssl"
+PACKAGECONFIG[krb5] = "-Dwith_krb5=true,-Dwith_krb5=false,krb5"
+PACKAGECONFIG[pcre] = "-Dwith_pcre=true,-Dwith_pcre=false,libpcre"
+PACKAGECONFIG[zlib] = "-Dwith_zlib=true,-Dwith_zlib=false,zlib"
+PACKAGECONFIG[bzip2] = "-Dwith_bzip=true,-Dwith_bzip=false,bzip2"
+PACKAGECONFIG[webdav-props] = "-Dwith_webdav_props=true,-Dwith_webdav_props=false,libxml2 sqlite3"
+PACKAGECONFIG[webdav-locks] = "-Dwith_webdav_locks=true,-Dwith_webdav_locks=false,util-linux"
+PACKAGECONFIG[gdbm] = "-Dwith_gdbm=true,-Dwith_gdbm=false,gdbm"
+PACKAGECONFIG[memcache] = "-Dwith_memcached=true,-Dwith_memcached=false,libmemcached"
+PACKAGECONFIG[lua] = "-Dwith_lua=true,-Dwith_lua=false,lua"
+PACKAGECONFIG[zstd] = "-Dwith_zstd=true,-Dwith_zstd=false,zstd"
+
+inherit meson pkgconfig update-rc.d gettext systemd
+
+INITSCRIPT_NAME = "lighttpd"
+INITSCRIPT_PARAMS = "defaults 70"
+
+SYSTEMD_SERVICE:${PN} = "lighttpd.service"
+
+do_install:append() {
+	install -d ${D}${sysconfdir}/init.d ${D}${sysconfdir}/lighttpd ${D}${sysconfdir}/lighttpd.d ${D}/www/pages/dav
+	install -m 0755 ${WORKDIR}/lighttpd ${D}${sysconfdir}/init.d
+	install -m 0644 ${WORKDIR}/lighttpd.conf ${D}${sysconfdir}/lighttpd
+	install -m 0644 ${WORKDIR}/index.html.lighttpd ${D}/www/pages/index.html
+
+	install -d ${D}${systemd_system_unitdir}
+	install -m 0644 ${S}/doc/systemd/lighttpd.service ${D}${systemd_system_unitdir}
+	sed -i -e 's,@SBINDIR@,${sbindir},g' \
+		-e 's,@SYSCONFDIR@,${sysconfdir},g' \
+		-e 's,@BASE_BINDIR@,${base_bindir},g' \
+		${D}${systemd_system_unitdir}/lighttpd.service
+	#For FHS compliance, create symbolic links to /var/log and /var/tmp for logs and temporary data
+	ln -sf ${localstatedir}/log ${D}/www/logs
+	ln -sf ${localstatedir}/tmp ${D}/www/var
+}
+
+# bitbake.conf sets ${libdir}/${BPN}/* in FILES, which messes up the module split.
+# So we re-do the variable.
+FILES:${PN} = "${sysconfdir} /www ${sbindir}"
+
+CONFFILES:${PN} = "${sysconfdir}/lighttpd/lighttpd.conf"
+
+PACKAGES_DYNAMIC += "^lighttpd-module-.*"
+
+python populate_packages:prepend () {
+    lighttpd_libdir = d.expand('${prefix}/lib/lighttpd')
+    do_split_packages(d, lighttpd_libdir, r'^mod_(.*)\.so$', 'lighttpd-module-%s', 'Lighttpd module for %s', extra_depends='')
+}
diff --git a/poky/meta/recipes-extended/lsof/files/lsof-remove-host-information.patch b/poky/meta/recipes-extended/lsof/files/lsof-remove-host-information.patch
index b7d2323..70155f9 100644
--- a/poky/meta/recipes-extended/lsof/files/lsof-remove-host-information.patch
+++ b/poky/meta/recipes-extended/lsof/files/lsof-remove-host-information.patch
@@ -1,25 +1,29 @@
-Remove host information from version.h
+From 95b8a13c1ea4274f58304bf5c4f7ca3d036b10f3 Mon Sep 17 00:00:00 2001
+From: Li Wang <li.wang@windriver.com>
+Date: Wed, 30 Aug 2017 15:05:16 +0800
+Subject: [PATCH] Remove host information from version.h
 
 make lsof not include host information
 
 Upstream-Status: Inappropriate [embedded specific]
 
 Signed-off-by: Li Wang <li.wang@windriver.com>
+
 ---
- dialects/linux/Makefile |   50 +++++++++--------------------------------------
+ dialects/linux/Makefile | 50 ++++++++---------------------------------
  1 file changed, 9 insertions(+), 41 deletions(-)
 
 diff --git a/dialects/linux/Makefile b/dialects/linux/Makefile
-index 2bea108..792142b 100644
+index 61e8643..5458a0a 100644
 --- a/dialects/linux/Makefile
 +++ b/dialects/linux/Makefile
-@@ -76,48 +76,16 @@ version.h:	FRC
+@@ -95,48 +95,16 @@ version.h:	FRC
  	@echo Constructing version.h
  	@rm -f version.h
  	@echo '#define	LSOF_BLDCMT	"${LSOF_BLDCMT}"' > version.h;
 -	@echo '#define	LSOF_CC		"${CC}"' >> version.h
 -	@echo '#define	LSOF_CCV	"${CCV}"' >> version.h
--	@echo '#define	LSOF_CCDATE	"'`date`'"' >> version.h
+-	@echo '#define	LSOF_CCDATE	"$(BUILD_DATE)"' >> version.h
 -	@echo '#define	LSOF_CCFLAGS	"'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h
 +	@echo '#define	LSOF_CC		""' >> version.h
 +	@echo '#define	LSOF_CCV	""' >> version.h
@@ -71,6 +75,3 @@
  	@sed '/VN/s/.ds VN \(.*\)/#define	LSOF_VERSION	"\1"/' < version >> version.h
  
  FRC:
--- 
-1.7.9.5
-
diff --git a/poky/meta/recipes-extended/lsof/lsof_4.91.bb b/poky/meta/recipes-extended/lsof/lsof_4.91.bb
deleted file mode 100644
index d7428ea..0000000
--- a/poky/meta/recipes-extended/lsof/lsof_4.91.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "LiSt Open Files tool"
-DESCRIPTION = "Lsof is a Unix-specific diagnostic tool. \
-Its name stands for LiSt Open Files, and it does just that."
-HOMEPAGE = "http://people.freebsd.org/~abe/"
-SECTION = "devel"
-LICENSE = "Spencer-94"
-LIC_FILES_CHKSUM = "file://00README;beginline=645;endline=679;md5=964df275d26429ba3b39dbb9f205172a"
-
-# Upstream lsof releases are hosted on an ftp server which times out download
-# attempts from hosts for which it can not perform a DNS reverse-lookup (See:
-# https://people.freebsd.org/~abe/ ). http://www.mirrorservice.org seems to be
-# the most commonly used alternative.
-
-SRC_URI = "http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_${PV}.tar.bz2 \
-           file://lsof-remove-host-information.patch \
-          "
-
-SRC_URI[md5sum] = "148ed410cb52e08c2adc0c60f480f11f"
-SRC_URI[sha256sum] = "c9da946a525fbf82ff80090b6d1879c38df090556f3fe0e6d782cb44172450a3"
-
-UPSTREAM_CHECK_URI = "https://github.com/lsof-org/lsof/releases/"
-UPSTREAM_CHECK_REGEX = "lsof_(?P<pver>.*)\.linux\.tar"
-
-LOCALSRC = "file://${WORKDIR}/lsof_${PV}/lsof_${PV}_src.tar"
-
-S = "${WORKDIR}/lsof_${PV}_src"
-
-python do_unpack () {
-    if not bb.data.inherits_class('externalsrc', d) or not d.getVar('EXTERNALSRC'):
-        # temporarily change S for unpack of lsof_${PV}
-        s = d.getVar('S', False)
-        d.setVar('S', '${WORKDIR}/lsof_${PV}')
-        bb.build.exec_func('base_do_unpack', d)
-        # temporarily change SRC_URI for unpack of lsof_${PV}_src
-        src_uri = d.getVar('SRC_URI', False)
-        d.setVar('SRC_URI', '${LOCALSRC}')
-        d.setVar('S', s)
-        bb.build.exec_func('base_do_unpack', d)
-        d.setVar('SRC_URI', src_uri)
-}
-
-export LSOF_INCLUDE = "${STAGING_INCDIR}"
-
-do_configure () {
-	export LSOF_AR="${AR} cr"
-	export LSOF_RANLIB="${RANLIB}"
-	if [ "x${GLIBCVERSION}" != "x" ]; then
-		LINUX_CLIB=`echo ${GLIBCVERSION} |sed -e 's,\.,,g'`
-		LINUX_CLIB="-DGLIBCV=${LINUX_CLIB}"
-		export LINUX_CLIB
-	fi
-	yes | ./Configure linux
-}
-
-export I = "${STAGING_INCDIR}"
-export L = "${STAGING_INCDIR}"
-
-do_compile () {
-	oe_runmake 'CC=${CC}' 'CFGL=${LDFLAGS} -L./lib -llsof' 'DEBUG=' 'INCL=${CFLAGS}'
-}
-
-do_install () {
-	install -d ${D}${sbindir} ${D}${mandir}/man8
-	install -m 0755 lsof ${D}${sbindir}/lsof
-	install -m 0644 lsof.8 ${D}${mandir}/man8/lsof.8
-}
diff --git a/poky/meta/recipes-extended/lsof/lsof_4.94.0.bb b/poky/meta/recipes-extended/lsof/lsof_4.94.0.bb
new file mode 100644
index 0000000..9659fa8
--- /dev/null
+++ b/poky/meta/recipes-extended/lsof/lsof_4.94.0.bb
@@ -0,0 +1,46 @@
+SUMMARY = "LiSt Open Files tool"
+DESCRIPTION = "Lsof is a Unix-specific diagnostic tool. \
+Its name stands for LiSt Open Files, and it does just that."
+HOMEPAGE = "http://people.freebsd.org/~abe/"
+SECTION = "devel"
+LICENSE = "Spencer-94"
+LIC_FILES_CHKSUM = "file://00README;beginline=645;endline=679;md5=964df275d26429ba3b39dbb9f205172a"
+
+# Upstream lsof releases are hosted on an ftp server which times out download
+# attempts from hosts for which it can not perform a DNS reverse-lookup (See:
+# https://people.freebsd.org/~abe/ ). http://www.mirrorservice.org seems to be
+# the most commonly used alternative.
+
+SRC_URI = "git://github.com/lsof-org/lsof \
+           file://lsof-remove-host-information.patch \
+          "
+
+SRCREV = "005e014e1abdadb2493d8b3ce87b37a2c0a2351d"
+
+S = "${WORKDIR}/git"
+
+export LSOF_INCLUDE = "${STAGING_INCDIR}"
+
+do_configure () {
+	export LSOF_AR="${AR} cr"
+	export LSOF_RANLIB="${RANLIB}"
+	if [ "x${GLIBCVERSION}" != "x" ]; then
+		LINUX_CLIB=`echo ${GLIBCVERSION} |sed -e 's,\.,,g'`
+		LINUX_CLIB="-DGLIBCV=${LINUX_CLIB}"
+		export LINUX_CLIB
+	fi
+	yes | ./Configure linux
+}
+
+export I = "${STAGING_INCDIR}"
+export L = "${STAGING_INCDIR}"
+
+do_compile () {
+	oe_runmake 'CC=${CC}' 'CFGL=${LDFLAGS} -L./lib -llsof' 'DEBUG=' 'INCL=${CFLAGS}'
+}
+
+do_install () {
+	install -d ${D}${sbindir} ${D}${mandir}/man8
+	install -m 0755 lsof ${D}${sbindir}/lsof
+	install -m 0644 Lsof.8 ${D}${mandir}/man8/lsof.8
+}
diff --git a/poky/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch b/poky/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
index e51950f..6d94570 100644
--- a/poky/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
+++ b/poky/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
@@ -1,4 +1,4 @@
-From 93772c511d954d755cc9128c58ed8968a5af541b Mon Sep 17 00:00:00 2001
+From e87c2ad1e16cdbd62ba71b2ace3270503decaa56 Mon Sep 17 00:00:00 2001
 From: "Mingde (Matthew) Zeng" <matthewzmd@gmail.com>
 Date: Wed, 29 Jul 2020 08:47:09 -0400
 Subject: [PATCH] Remove OOM tests from runtest/mm
@@ -7,16 +7,17 @@
 
 Upstream-Status: Inappropriate [oe-core specific]
 Signed-off-by: Mingde (Matthew) Zeng <matthew.zeng@windriver.com>
-
+[ pvorel: rebased for 20210927 ]
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
 ---
  runtest/mm | 6 ------
  1 file changed, 6 deletions(-)
 
 diff --git a/runtest/mm b/runtest/mm
-index 481d39691..cf207d10e 100644
+index 6537666a9..e5a091a5a 100644
 --- a/runtest/mm
 +++ b/runtest/mm
-@@ -74,12 +74,6 @@ ksm06_2 ksm06 -n 10000
+@@ -73,12 +73,6 @@ ksm06_2 ksm06 -n 8000
  
  cpuset01 cpuset01
  
@@ -29,3 +30,6 @@
  swapping01 swapping01 -i 5
  
  thp01 thp01 -I 120
+-- 
+2.33.0
+
diff --git a/poky/meta/recipes-extended/ltp/ltp/0001-syscalls-ioctl_ns05.c-ioctl_ns06.c-Fix-too-small-buf.patch b/poky/meta/recipes-extended/ltp/ltp/0001-syscalls-ioctl_ns05.c-ioctl_ns06.c-Fix-too-small-buf.patch
deleted file mode 100644
index 08b88a3..0000000
--- a/poky/meta/recipes-extended/ltp/ltp/0001-syscalls-ioctl_ns05.c-ioctl_ns06.c-Fix-too-small-buf.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From af2b6f5ee6b171078b18246dd73f71cf6e350859 Mon Sep 17 00:00:00 2001
-From: Marius Hillenbrand <mhillen@linux.ibm.com>
-Date: Mon, 19 Jul 2021 13:58:35 +0800
-Subject: [PATCH] syscalls/ioctl_ns05.c, ioctl_ns06.c: Fix too small buffer for
- path
-
-commit af2b6f5ee6b171078b18246dd73f71cf6e350859 upstream.
-
-Resize the buffer used for paths into /proc/ to grant enough space
-for long PIDs. While at it, replace sprintf with snprintf to avoid
-buffer overflows if we ever ran out of space again.
-
-Fixes: #847
-Signed-off-by: Marius Hillenbrand <mhillen@linux.ibm.com>
-Reviewed-by: Yang Xu <xuyang2018.jy@fujitsu.com>
-Upstream-Status: Backport
-Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-
-diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ns05.c b/testcases/kernel/syscalls/ioctl/ioctl_ns05.c
-index a67ddbe2c66f..52613810c7ce 100644
---- a/testcases/kernel/syscalls/ioctl/ioctl_ns05.c
-+++ b/testcases/kernel/syscalls/ioctl/ioctl_ns05.c
-@@ -59,10 +59,10 @@ static void run(void)
- 	if (pid == -1)
- 		tst_brk(TBROK | TERRNO, "ltp_clone failed");
- 
--	char child_namespace[20];
-+	char child_namespace[30];
- 	int my_fd, child_fd, parent_fd;
- 
--	sprintf(child_namespace, "/proc/%i/ns/pid", pid);
-+	snprintf(child_namespace, sizeof(child_namespace), "/proc/%i/ns/pid", pid);
- 	my_fd = SAFE_OPEN("/proc/self/ns/pid", O_RDONLY);
- 	child_fd = SAFE_OPEN(child_namespace, O_RDONLY);
- 	parent_fd = ioctl(child_fd, NS_GET_PARENT);
-diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ns06.c b/testcases/kernel/syscalls/ioctl/ioctl_ns06.c
-index b6ac80208d02..c30f7de91e09 100644
---- a/testcases/kernel/syscalls/ioctl/ioctl_ns06.c
-+++ b/testcases/kernel/syscalls/ioctl/ioctl_ns06.c
-@@ -51,14 +51,14 @@ static int child(void *arg LTP_ATTRIBUTE_UNUSED)
- 
- static void run(void)
- {
--	char child_namespace[20];
-+	char child_namespace[30];
- 
- 	pid_t pid = ltp_clone(CLONE_NEWUSER | SIGCHLD, &child, 0,
- 		STACK_SIZE, child_stack);
- 	if (pid == -1)
- 		tst_brk(TBROK | TERRNO, "ltp_clone failed");
- 
--	sprintf(child_namespace, "/proc/%i/ns/user", pid);
-+	snprintf(child_namespace, sizeof(child_namespace), "/proc/%i/ns/user", pid);
- 	int my_fd, child_fd, parent_fd;
- 
- 	my_fd = SAFE_OPEN("/proc/self/ns/user", O_RDONLY);
--- 
-2.32.0
-
diff --git a/poky/meta/recipes-extended/ltp/ltp/0002-lib-fix-MemAvailable-parsing.patch b/poky/meta/recipes-extended/ltp/ltp/0002-lib-fix-MemAvailable-parsing.patch
new file mode 100644
index 0000000..1860b95
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp/0002-lib-fix-MemAvailable-parsing.patch
@@ -0,0 +1,36 @@
+From 29a096fe2bd356f419bd8a8404d5b652c996b92f Mon Sep 17 00:00:00 2001
+From: Ralph Siemsen <ralph.siemsen@linaro.org>
+Date: Mon, 27 Sep 2021 22:18:50 -0400
+Subject: [PATCH] lib: fix MemAvailable parsing
+
+The amount of available memory was not being returned correctly, which
+resulted in tests being executed when they should have been skipped.
+
+Fixes: 8759f4 ("lib: adjust the tmpfs size according to .dev_min_size and MemAvailable")
+Signed-off-by: Ralph Siemsen <ralph.siemsen@linaro.org>
+Signed-off-by: Li Wang <liwang@redhat.com>
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+Upstream-Status: Backport [e42149e28 ("lib: fix MemAvailable parsing")]
+---
+ lib/tst_memutils.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/tst_memutils.c b/lib/tst_memutils.c
+index ae1cad29b..a46de78f5 100644
+--- a/lib/tst_memutils.c
++++ b/lib/tst_memutils.c
+@@ -65,9 +65,9 @@ void tst_pollute_memory(size_t maxsize, int fillchar)
+ 
+ long long tst_available_mem(void)
+ {
+-	long long mem_available;
++	unsigned long long mem_available = 0;
+ 
+-	if (FILE_LINES_SCANF("/proc/meminfo", "MemAvailable: %ld",
++	if (FILE_LINES_SCANF("/proc/meminfo", "MemAvailable: %llu",
+ 		&mem_available)) {
+ 		mem_available = SAFE_READ_MEMINFO("MemFree:")
+ 			+ SAFE_READ_MEMINFO("Cached:");
+-- 
+2.33.0
+
diff --git a/poky/meta/recipes-extended/ltp/ltp/0003-lapi-rtnetlink.h-Fix-include-guards.patch b/poky/meta/recipes-extended/ltp/ltp/0003-lapi-rtnetlink.h-Fix-include-guards.patch
new file mode 100644
index 0000000..6fcafaf
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp/0003-lapi-rtnetlink.h-Fix-include-guards.patch
@@ -0,0 +1,37 @@
+From 881709d1e4d1bba5bf8ca365bc058f338bd72dc2 Mon Sep 17 00:00:00 2001
+From: Petr Vorel <petr.vorel@gmail.com>
+Date: Wed, 29 Sep 2021 19:38:42 +0200
+Subject: [PATCH] lapi/rtnetlink.h: Fix include guards
+
+Fixes: 5fea0638a ("lapi: Add missing IFA_FLAGS")
+
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+Upstream-Status: Backport [a2a212cf8 ("lapi/rtnetlink.h: Fix include guards")]
+---
+ include/lapi/rtnetlink.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/include/lapi/rtnetlink.h b/include/lapi/rtnetlink.h
+index 8a1b5385b..04e9ad51a 100644
+--- a/include/lapi/rtnetlink.h
++++ b/include/lapi/rtnetlink.h
+@@ -1,8 +1,8 @@
+ // SPDX-License-Identifier: GPL-2.0-or-later
+ /* Copyright (c) 2021 Petr Vorel <petr.vorel@gmail.com> */
+
+-#ifndef LAPI_IF_ADDR_H__
+-# define LAPI_IF_ADDR_H__
++#ifndef LAPI_RTNETLINK_H__
++# define LAPI_RTNETLINK_H__
+
+ #include <linux/rtnetlink.h>
+
+@@ -10,4 +10,4 @@
+ # define IFA_FLAGS 8
+ #endif
+
+-#endif	/* LAPI_IF_ADDR_H__ */
++#endif	/* LAPI_RTNETLINK_H__ */
+--
+2.33.0
+
diff --git a/poky/meta/recipes-extended/ltp/ltp/0004-lapi-Create-if_addr.h-and-reuse-it-in-rtnetlink.h.patch b/poky/meta/recipes-extended/ltp/ltp/0004-lapi-Create-if_addr.h-and-reuse-it-in-rtnetlink.h.patch
new file mode 100644
index 0000000..19ac3ba
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp/0004-lapi-Create-if_addr.h-and-reuse-it-in-rtnetlink.h.patch
@@ -0,0 +1,58 @@
+From b13440627bd4a9f060a33d400a47a40daa2bc12e Mon Sep 17 00:00:00 2001
+From: Petr Vorel <petr.vorel@gmail.com>
+Date: Wed, 29 Sep 2021 19:37:19 +0200
+Subject: [PATCH] lapi: Create if_addr.h and reuse it in rtnetlink.h
+
+There will be fix in next commit for missing IFA_F_NOPREFIXROUTE which
+requires creating lapi/if_addr.h. Thus move IFA_FLAGS to lapi/if_addr.h,
+as it belongs there and reuse lapi/if_addr.h in lapi/rtnetlink.h just
+like <linux/rtnetlink.h> includes <linux/if_addr.h>.
+
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+Upstream-Status: Submitted [https://lore.kernel.org/ltp/20210930183058.5240-3-petr.vorel@gmail.com/T/#u]
+---
+ include/lapi/if_addr.h   | 16 ++++++++++++++++
+ include/lapi/rtnetlink.h |  5 +----
+ 2 files changed, 17 insertions(+), 4 deletions(-)
+ create mode 100644 include/lapi/if_addr.h
+
+diff --git a/include/lapi/if_addr.h b/include/lapi/if_addr.h
+new file mode 100644
+index 000000000..4e50a0a4e
+--- /dev/null
++++ b/include/lapi/if_addr.h
+@@ -0,0 +1,16 @@
++// SPDX-License-Identifier: GPL-2.0-or-later
++/*
++ * Copyright (c) 2021 Petr Vorel <petr.vorel@gmail.com>
++ */
++
++#ifndef LAPI_IF_ADDR_H__
++#define LAPI_IF_ADDR_H__
++
++#include <linux/if_addr.h>
++
++#ifndef IFA_FLAGS
++# define IFA_FLAGS 8
++#endif
++
++
++#endif /* LAPI_IF_ADDR_H__ */
+diff --git a/include/lapi/rtnetlink.h b/include/lapi/rtnetlink.h
+index 04e9ad51a..089bf1a0d 100644
+--- a/include/lapi/rtnetlink.h
++++ b/include/lapi/rtnetlink.h
+@@ -5,9 +5,6 @@
+ # define LAPI_RTNETLINK_H__
+
+ #include <linux/rtnetlink.h>
+-
+-#ifndef IFA_FLAGS
+-# define IFA_FLAGS 8
+-#endif
++#include "lapi/if_addr.h"
+
+ #endif	/* LAPI_RTNETLINK_H__ */
+--
+2.33.0
+
diff --git a/poky/meta/recipes-extended/ltp/ltp/0005-lapi-if_addr.h-Define-IFA_FLAGS.patch b/poky/meta/recipes-extended/ltp/ltp/0005-lapi-if_addr.h-Define-IFA_FLAGS.patch
new file mode 100644
index 0000000..f510fda
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp/0005-lapi-if_addr.h-Define-IFA_FLAGS.patch
@@ -0,0 +1,60 @@
+From 9e357fb4fc00ab9c303e314b85b9ae3836141f81 Mon Sep 17 00:00:00 2001
+From: Petr Vorel <petr.vorel@gmail.com>
+Date: Wed, 29 Sep 2021 19:56:29 +0200
+Subject: [PATCH] lapi/if_addr.h: Define IFA_F_NOPREFIXROUTE
+
+and use it in icmp_rate_limit01.c.
+
+This fixes error on toolchains with very old kernel headers, e.g.
+Buildroot sourcery-arm:
+
+icmp_rate_limit01.c:82:3: error: 'IFA_F_NOPREFIXROUTE' undeclared (first use in this function)
+   IFA_F_NOPREFIXROUTE);
+
+Fixed because IFA_F_NOPREFIXROUTE was added in 3.14 and the oldest
+system we still support is Cent0S 7 with 3.10 kernel.
+
+NOTE: Cent0S 7 is obviously heavily patched thus it contains
+IFA_F_NOPREFIXROUTE and therefore CI build didn't catch this error.
+
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+Upstream-Status: Submitted [https://lore.kernel.org/ltp/20210930183058.5240-4-petr.vorel@gmail.com/T/#u]
+---
+ include/lapi/if_addr.h            | 3 +++
+ testcases/cve/icmp_rate_limit01.c | 3 ++-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/include/lapi/if_addr.h b/include/lapi/if_addr.h
+index 4e50a0a4e..0f7e44784 100644
+--- a/include/lapi/if_addr.h
++++ b/include/lapi/if_addr.h
+@@ -12,5 +12,8 @@
+ # define IFA_FLAGS 8
+ #endif
+
++#ifndef IFA_F_NOPREFIXROUTE
++# define IFA_F_NOPREFIXROUTE	0x200
++#endif
+
+ #endif /* LAPI_IF_ADDR_H__ */
+diff --git a/testcases/cve/icmp_rate_limit01.c b/testcases/cve/icmp_rate_limit01.c
+index b3a237b30..3ada32675 100644
+--- a/testcases/cve/icmp_rate_limit01.c
++++ b/testcases/cve/icmp_rate_limit01.c
+@@ -27,11 +27,12 @@
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+-#include <linux/if_addr.h>
+ #include <linux/errqueue.h>
+
+ #include <sched.h>
+ #include <limits.h>
++
++#include "lapi/if_addr.h"
+ #include "tst_test.h"
+ #include "tst_netdevice.h"
+
+--
+2.33.0
+
diff --git a/poky/meta/recipes-extended/ltp/ltp_20210524.bb b/poky/meta/recipes-extended/ltp/ltp_20210524.bb
deleted file mode 100644
index 20e2def..0000000
--- a/poky/meta/recipes-extended/ltp/ltp_20210524.bb
+++ /dev/null
@@ -1,139 +0,0 @@
-SUMMARY = "Linux Test Project"
-DESCRIPTION = "The Linux Test Project is a joint project with SGI, IBM, OSDL, and Bull with a goal to deliver test suites to the open source community that validate the reliability, robustness, and stability of Linux. The Linux Test Project is a collection of tools for testing the Linux kernel and related features."
-HOMEPAGE = "https://linux-test-project.github.io/"
-SECTION = "console/utils"
-LICENSE = "GPLv2 & GPLv2+ & LGPLv2+ & LGPLv2.1+ & BSD-2-Clause"
-LIC_FILES_CHKSUM = "\
-    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-    file://testcases/kernel/controllers/freezer/COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
-    file://testcases/kernel/controllers/freezer/run_freezer.sh;beginline=5;endline=17;md5=86a61d2c042d59836ffb353a21456498 \
-    file://testcases/kernel/hotplug/memory_hotplug/COPYING;md5=e04a2e542b2b8629bf9cd2ba29b0fe41 \
-    file://testcases/kernel/hotplug/cpu_hotplug/COPYING;md5=e04a2e542b2b8629bf9cd2ba29b0fe41 \
-    file://testcases/open_posix_testsuite/COPYING;md5=48b1c5ec633e3e30ec2cf884ae699947 \
-    file://testcases/realtime/COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
-    file://utils/benchmark/kernbench-0.42/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-"
-
-DEPENDS = "attr libaio libcap acl openssl zip-native"
-DEPENDS:append:libc-musl = " fts "
-EXTRA_OEMAKE:append:libc-musl = " LIBC=musl "
-EXTRA_OECONF:append:libc-musl = " LIBS=-lfts "
-
-# since ltp contains x86-64 assembler which uses the frame-pointer register,
-# set -fomit-frame-pointer x86-64 to handle cases where optimisation
-# is set to -O0 or frame pointers have been enabled by -fno-omit-frame-pointer
-# earlier in CFLAGS, etc.
-CFLAGS:append:x86-64 = " -fomit-frame-pointer"
-
-CFLAGS:append:powerpc64 = " -D__SANE_USERSPACE_TYPES__"
-CFLAGS:append:mipsarchn64 = " -D__SANE_USERSPACE_TYPES__"
-SRCREV = "0fb171f2beddaf64bd27597577c206c0f892b3cd"
-
-SRC_URI = "git://github.com/linux-test-project/ltp.git \
-           file://0001-Remove-OOM-tests-from-runtest-mm.patch \
-           file://0001-syscalls-ioctl_ns05.c-ioctl_ns06.c-Fix-too-small-buf.patch \
-           "
-
-S = "${WORKDIR}/git"
-
-inherit autotools-brokensep pkgconfig
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-export prefix = "/opt/${PN}"
-export exec_prefix = "/opt/${PN}"
-
-PACKAGECONFIG[numa] = "--with-numa, --without-numa, numactl,"
-EXTRA_AUTORECONF += "-I ${S}/testcases/realtime/m4"
-EXTRA_OECONF = " --with-realtime-testsuite --with-open-posix-testsuite "
-# ltp network/rpc test cases ftbfs when libtirpc is found
-EXTRA_OECONF += " --without-tirpc "
-
-do_install(){
-    install -d ${D}${prefix}/
-    oe_runmake DESTDIR=${D} SKIP_IDCHECK=1 install include-install
-
-    # fixup not deploy STPfailure_report.pl to avoid confusing about it fails to run
-    # as it lacks dependency on some perl moudle such as LWP::Simple
-    # And this script previously works as a tool for analyzing failures from LTP
-    # runs on the OSDL's Scaleable Test Platform (STP) and it mainly accesses
-    # http://khack.osdl.org to retrieve ltp test results run on
-    # OSDL's Scaleable Test Platform, but now http://khack.osdl.org unaccessible
-    rm -rf ${D}${prefix}/bin/STPfailure_report.pl
-
-    # Copy POSIX test suite into ${D}${prefix}/testcases by manual
-    cp -r testcases/open_posix_testsuite ${D}${prefix}/testcases
-
-    # Makefile were configured in the build system
-    find ${D}${prefix} -name Makefile | xargs -n 1 sed -i \
-         -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
-         -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
-         -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
-         -e 's@[^ ]*--sysroot=[^ "]*@@g'
-
-    # The controllers memcg_stree test seems to cause us hangs and takes 900s
-    # (maybe we expect more regular output?), anyhow, skip it
-    sed -e '/^memcg_stress/d' -i ${D}${prefix}/runtest/controllers
-}
-
-RDEPENDS:${PN} = "\
-    attr \
-    bash \
-    bc \
-    coreutils \
-    cpio \
-    cronie \
-    curl \
-    e2fsprogs \
-    e2fsprogs-mke2fs \
-    expect \
-    file \
-    gawk \
-    gdb \
-    gzip \
-    iproute2 \
-    ldd \
-    libaio \
-    logrotate \
-    net-tools \
-    perl \
-    python3-core \
-    procps \
-    quota \
-    unzip \
-    util-linux \
-    which \
-    tar \
-"
-
-FILES:${PN} += "${prefix}/* ${prefix}/runtest/* ${prefix}/scenario_groups/* ${prefix}/testcases/bin/* ${prefix}/testcases/bin/*/bin/* ${prefix}/testscripts/* ${prefix}/testcases/open_posix_testsuite/* ${prefix}/testcases/open_posix_testsuite/conformance/* ${prefix}/testcases/open_posix_testsuite/Documentation/* ${prefix}/testcases/open_posix_testsuite/functional/* ${prefix}/testcases/open_posix_testsuite/include/* ${prefix}/testcases/open_posix_testsuite/scripts/* ${prefix}/testcases/open_posix_testsuite/stress/* ${prefix}/testcases/open_posix_testsuite/tools/* ${prefix}/testcases/data/nm01/lib.a ${prefix}/lib/libmem.a"
-
-# Avoid stripping some generated binaries otherwise some of the ltp tests such as ldd01 & nm01 fail
-INHIBIT_PACKAGE_STRIP_FILES = "${prefix}/testcases/bin/nm01 ${prefix}/testcases/bin/ldd01"
-INSANE_SKIP:${PN} += "already-stripped staticdev"
-
-remove_broken_musl_sources() {
-	[ "${TCLIBC}" = "musl" ] || return 0
-
-	cd ${S}
-	echo "WARNING: remove unsupported tests (until they're fixed)"
-
-	# sync with upstream
-	# https://github.com/linux-test-project/ltp/blob/master/travis/alpine.sh#L33
-	rm -rfv \
-		testcases/kernel/sched/process_stress/process.c \
-		testcases/kernel/syscalls/confstr/confstr01.c \
-		testcases/kernel/syscalls/fmtmsg/fmtmsg01.c \
-		testcases/kernel/syscalls/getcontext/getcontext01.c \
-		testcases/kernel/syscalls/rt_tgsigqueueinfo/rt_tgsigqueueinfo01.c \
-		testcases/kernel/syscalls/timer_create/timer_create01.c \
-		testcases/kernel/syscalls/timer_create/timer_create03.c \
-		utils/benchmark/ebizzy-0.3
-}
-do_patch[postfuncs] += "remove_broken_musl_sources"
-
-# Avoid file dependency scans, as LTP checks for things that may or may not
-# exist on the running system.  For instance it has specific checks for
-# csh and ksh which are not typically part of OpenEmbedded systems (but
-# can be added via additional layers.)
-SKIP_FILEDEPS:${PN} = '1'
diff --git a/poky/meta/recipes-extended/ltp/ltp_20210927.bb b/poky/meta/recipes-extended/ltp/ltp_20210927.bb
new file mode 100644
index 0000000..359a0013
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp_20210927.bb
@@ -0,0 +1,136 @@
+SUMMARY = "Linux Test Project"
+DESCRIPTION = "The Linux Test Project is a joint project with SGI, IBM, OSDL, and Bull with a goal to deliver test suites to the open source community that validate the reliability, robustness, and stability of Linux. The Linux Test Project is a collection of tools for testing the Linux kernel and related features."
+HOMEPAGE = "https://linux-test-project.github.io/"
+SECTION = "console/utils"
+LICENSE = "GPLv2 & GPLv2+ & LGPLv2+ & LGPLv2.1+ & BSD-2-Clause"
+LIC_FILES_CHKSUM = "\
+    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://testcases/open_posix_testsuite/COPYING;md5=48b1c5ec633e3e30ec2cf884ae699947 \
+    file://testcases/network/can/filter-tests/COPYING;md5=5b155ea7d7f86eae8e8832955d8b70bc \
+"
+
+DEPENDS = "attr libaio libcap acl openssl zip-native"
+DEPENDS:append:libc-musl = " fts "
+EXTRA_OEMAKE:append:libc-musl = " LIBC=musl "
+EXTRA_OECONF:append:libc-musl = " LIBS=-lfts "
+
+# since ltp contains x86-64 assembler which uses the frame-pointer register,
+# set -fomit-frame-pointer x86-64 to handle cases where optimisation
+# is set to -O0 or frame pointers have been enabled by -fno-omit-frame-pointer
+# earlier in CFLAGS, etc.
+CFLAGS:append:x86-64 = " -fomit-frame-pointer"
+
+CFLAGS:append:powerpc64 = " -D__SANE_USERSPACE_TYPES__"
+CFLAGS:append:mipsarchn64 = " -D__SANE_USERSPACE_TYPES__"
+SRCREV = "12beeda351b5d758a729aaf695b836ccc9eb5304"
+
+SRC_URI = "git://github.com/linux-test-project/ltp.git \
+           file://0001-Remove-OOM-tests-from-runtest-mm.patch \
+           file://0002-lib-fix-MemAvailable-parsing.patch \
+           file://0003-lapi-rtnetlink.h-Fix-include-guards.patch \
+           file://0004-lapi-Create-if_addr.h-and-reuse-it-in-rtnetlink.h.patch \
+           file://0005-lapi-if_addr.h-Define-IFA_FLAGS.patch \
+           "
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep pkgconfig
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+export prefix = "/opt/${PN}"
+export exec_prefix = "/opt/${PN}"
+
+PACKAGECONFIG[numa] = "--with-numa, --without-numa, numactl,"
+EXTRA_AUTORECONF += "-I ${S}/testcases/realtime/m4"
+EXTRA_OECONF = " --with-realtime-testsuite --with-open-posix-testsuite "
+# ltp network/rpc test cases ftbfs when libtirpc is found
+EXTRA_OECONF += " --without-tirpc "
+
+do_install(){
+    install -d ${D}${prefix}/
+    oe_runmake DESTDIR=${D} SKIP_IDCHECK=1 install include-install
+
+    # fixup not deploy STPfailure_report.pl to avoid confusing about it fails to run
+    # as it lacks dependency on some perl moudle such as LWP::Simple
+    # And this script previously works as a tool for analyzing failures from LTP
+    # runs on the OSDL's Scaleable Test Platform (STP) and it mainly accesses
+    # http://khack.osdl.org to retrieve ltp test results run on
+    # OSDL's Scaleable Test Platform, but now http://khack.osdl.org unaccessible
+    rm -rf ${D}${prefix}/bin/STPfailure_report.pl
+
+    # Copy POSIX test suite into ${D}${prefix}/testcases by manual
+    cp -r testcases/open_posix_testsuite ${D}${prefix}/testcases
+
+    # Makefile were configured in the build system
+    find ${D}${prefix} -name Makefile | xargs -n 1 sed -i \
+         -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
+         -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
+         -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
+         -e 's@[^ ]*--sysroot=[^ "]*@@g'
+
+    # The controllers memcg_stree test seems to cause us hangs and takes 900s
+    # (maybe we expect more regular output?), anyhow, skip it
+    sed -e '/^memcg_stress/d' -i ${D}${prefix}/runtest/controllers
+}
+
+RDEPENDS:${PN} = "\
+    attr \
+    bash \
+    bc \
+    coreutils \
+    cpio \
+    cronie \
+    curl \
+    e2fsprogs \
+    e2fsprogs-mke2fs \
+    expect \
+    file \
+    gawk \
+    gdb \
+    gzip \
+    iproute2 \
+    ldd \
+    libaio \
+    logrotate \
+    net-tools \
+    perl \
+    python3-core \
+    procps \
+    quota \
+    unzip \
+    util-linux \
+    which \
+    tar \
+"
+
+FILES:${PN} += "${prefix}/* ${prefix}/runtest/* ${prefix}/scenario_groups/* ${prefix}/testcases/bin/* ${prefix}/testcases/bin/*/bin/* ${prefix}/testscripts/* ${prefix}/testcases/open_posix_testsuite/* ${prefix}/testcases/open_posix_testsuite/conformance/* ${prefix}/testcases/open_posix_testsuite/Documentation/* ${prefix}/testcases/open_posix_testsuite/functional/* ${prefix}/testcases/open_posix_testsuite/include/* ${prefix}/testcases/open_posix_testsuite/scripts/* ${prefix}/testcases/open_posix_testsuite/stress/* ${prefix}/testcases/open_posix_testsuite/tools/* ${prefix}/testcases/data/nm01/lib.a ${prefix}/lib/libmem.a"
+
+# Avoid stripping some generated binaries otherwise some of the ltp tests such as ldd01 & nm01 fail
+INHIBIT_PACKAGE_STRIP_FILES = "${prefix}/testcases/bin/nm01 ${prefix}/testcases/bin/ldd01"
+INSANE_SKIP:${PN} += "already-stripped staticdev"
+
+remove_broken_musl_sources() {
+	[ "${TCLIBC}" = "musl" ] || return 0
+
+	cd ${S}
+	echo "WARNING: remove unsupported tests (until they're fixed)"
+
+	# sync with upstream
+	# https://github.com/linux-test-project/ltp/blob/master/ci/alpine.sh#L33
+	rm -rfv \
+		testcases/kernel/syscalls/confstr/confstr01.c \
+		testcases/kernel/syscalls/fmtmsg/fmtmsg01.c \
+		testcases/kernel/syscalls/getcontext/getcontext01.c \
+		testcases/kernel/syscalls/rt_tgsigqueueinfo/rt_tgsigqueueinfo01.c \
+		testcases/kernel/syscalls/timer_create/timer_create01.c \
+		testcases/kernel/syscalls/timer_create/timer_create03.c \
+		utils/benchmark/ebizzy-0.3
+}
+do_patch[postfuncs] += "remove_broken_musl_sources"
+
+# Avoid file dependency scans, as LTP checks for things that may or may not
+# exist on the running system.  For instance it has specific checks for
+# csh and ksh which are not typically part of OpenEmbedded systems (but
+# can be added via additional layers.)
+SKIP_FILEDEPS:${PN} = '1'
diff --git a/poky/meta/recipes-extended/man-pages/man-pages_5.12.bb b/poky/meta/recipes-extended/man-pages/man-pages_5.12.bb
deleted file mode 100644
index ed30103..0000000
--- a/poky/meta/recipes-extended/man-pages/man-pages_5.12.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Linux man-pages"
-DESCRIPTION = "The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs"
-SECTION = "console/utils"
-HOMEPAGE = "http://www.kernel.org/pub/linux/docs/man-pages"
-LICENSE = "GPLv2+"
-
-LIC_FILES_CHKSUM = "file://README;md5=92cd5ee2e0b35d782817e7e277b6ce4b"
-SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/${BP}.tar.gz"
-
-SRC_URI[sha256sum] = "2684d42ab53184d7607105834e277577daa7e854cdce0d4aacf9f7ad8437c7ce"
-
-inherit manpages
-
-MAN_PKG = "${PN}"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[manpages] = ""
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install() {
-        oe_runmake install prefix=${prefix} DESTDIR=${D}
-}
-
-# Only deliveres man-pages so FILES:${PN} gets everything
-FILES:${PN}-doc = ""
-FILES:${PN} = "${mandir}/*"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE:${PN} = "passwd.5 getspnam.3 crypt.3"
-ALTERNATIVE_LINK_NAME[passwd.5] = "${mandir}/man5/passwd.5"
-ALTERNATIVE_LINK_NAME[getspnam.3] = "${mandir}/man3/getspnam.3"
-ALTERNATIVE_LINK_NAME[crypt.3] = "${mandir}/man3/crypt.3"
diff --git a/poky/meta/recipes-extended/man-pages/man-pages_5.13.bb b/poky/meta/recipes-extended/man-pages/man-pages_5.13.bb
new file mode 100644
index 0000000..2447d9f
--- /dev/null
+++ b/poky/meta/recipes-extended/man-pages/man-pages_5.13.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Linux man-pages"
+DESCRIPTION = "The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs"
+SECTION = "console/utils"
+HOMEPAGE = "http://www.kernel.org/pub/linux/docs/man-pages"
+LICENSE = "GPLv2+"
+
+LIC_FILES_CHKSUM = "file://README;md5=92cd5ee2e0b35d782817e7e277b6ce4b"
+SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/${BP}.tar.gz"
+
+SRC_URI[sha256sum] = "ed615e9a31978833f59e7316667b9aeffbbdb0a92d1391f9c66fadc6e77d0da8"
+
+inherit manpages
+
+MAN_PKG = "${PN}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[manpages] = ""
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+        oe_runmake install prefix=${prefix} DESTDIR=${D}
+}
+
+# Only deliveres man-pages so FILES:${PN} gets everything
+FILES:${PN}-doc = ""
+FILES:${PN} = "${mandir}/*"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "passwd.5 getspnam.3 crypt.3"
+ALTERNATIVE_LINK_NAME[passwd.5] = "${mandir}/man5/passwd.5"
+ALTERNATIVE_LINK_NAME[getspnam.3] = "${mandir}/man3/getspnam.3"
+ALTERNATIVE_LINK_NAME[crypt.3] = "${mandir}/man3/crypt.3"
diff --git a/poky/meta/recipes-extended/msmtp/msmtp_1.8.15.bb b/poky/meta/recipes-extended/msmtp/msmtp_1.8.15.bb
deleted file mode 100644
index bb56a2e..0000000
--- a/poky/meta/recipes-extended/msmtp/msmtp_1.8.15.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "msmtp is an SMTP client"
-DESCRIPTION = "A sendmail replacement for use in MTAs like mutt"
-HOMEPAGE = "https://marlam.de/msmtp/"
-SECTION = "console/network"
-
-LICENSE = "GPLv3"
-DEPENDS = "zlib gnutls"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-UPSTREAM_CHECK_URI = "https://marlam.de/msmtp/download/"
-
-SRC_URI = "https://marlam.de/${BPN}/releases/${BP}.tar.xz"
-SRC_URI[sha256sum] = "2265dc639ebf2edf3069fffe0a3bd76749f8b58f4001d5cdeae19873949099ce"
-
-inherit gettext autotools update-alternatives pkgconfig
-
-EXTRA_OECONF += "--without-libsecret --without-libgsasl --without-libidn"
-
-ALTERNATIVE:${PN} = "sendmail"
-# /usr/lib/sendmial is required by LSB core test
-ALTERNATIVE:${PN}:linuxstdbase = "sendmail usr-lib-sendmail"
-ALTERNATIVE_TARGET[sendmail] = "${bindir}/msmtp"
-ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
-ALTERNATIVE_TARGET[usr-lib-sendmail] = "${bindir}/msmtp"
-ALTERNATIVE_LINK_NAME[usr-lib-sendmail] = "/usr/lib/sendmail"
-ALTERNATIVE_PRIORITY = "100"
diff --git a/poky/meta/recipes-extended/msmtp/msmtp_1.8.18.bb b/poky/meta/recipes-extended/msmtp/msmtp_1.8.18.bb
new file mode 100644
index 0000000..1a6cf72
--- /dev/null
+++ b/poky/meta/recipes-extended/msmtp/msmtp_1.8.18.bb
@@ -0,0 +1,27 @@
+SUMMARY = "msmtp is an SMTP client"
+DESCRIPTION = "A sendmail replacement for use in MTAs like mutt"
+HOMEPAGE = "https://marlam.de/msmtp/"
+SECTION = "console/network"
+
+LICENSE = "GPLv3"
+DEPENDS = "zlib gnutls"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+UPSTREAM_CHECK_URI = "https://marlam.de/msmtp/download/"
+
+SRC_URI = "https://marlam.de/${BPN}/releases/${BP}.tar.xz"
+SRC_URI[sha256sum] = "14fc62af37ebdcc5ed19a245a05eb8376efe7016118f00c9c594bc999d5560a5"
+
+inherit gettext autotools update-alternatives pkgconfig
+
+EXTRA_OECONF += "--without-libsecret --without-libgsasl --without-libidn"
+
+ALTERNATIVE:${PN} = "sendmail"
+# /usr/lib/sendmial is required by LSB core test
+ALTERNATIVE:${PN}:linuxstdbase = "sendmail usr-lib-sendmail"
+ALTERNATIVE_TARGET[sendmail] = "${bindir}/msmtp"
+ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
+ALTERNATIVE_TARGET[usr-lib-sendmail] = "${bindir}/msmtp"
+ALTERNATIVE_LINK_NAME[usr-lib-sendmail] = "/usr/lib/sendmail"
+ALTERNATIVE_PRIORITY = "100"
diff --git a/poky/meta/recipes-extended/newt/libnewt_0.52.21.bb b/poky/meta/recipes-extended/newt/libnewt_0.52.21.bb
index 84d327c..86301b9 100644
--- a/poky/meta/recipes-extended/newt/libnewt_0.52.21.bb
+++ b/poky/meta/recipes-extended/newt/libnewt_0.52.21.bb
@@ -29,7 +29,7 @@
 
 S = "${WORKDIR}/newt-${PV}"
 
-inherit autotools-brokensep python3native python3-dir
+inherit autotools-brokensep python3native python3-dir python3targetconfig
 
 EXTRA_OECONF = "--without-tcl --with-python"
 
diff --git a/poky/meta/recipes-extended/pam/libpam/0001-Makefile.am-support-usrmage.patch b/poky/meta/recipes-extended/pam/libpam/0001-Makefile.am-support-usrmage.patch
deleted file mode 100644
index 5c6bc92..0000000
--- a/poky/meta/recipes-extended/pam/libpam/0001-Makefile.am-support-usrmage.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From c09e012590c1ec2d3b622b64f1bfc10a2286c9ea Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Wed, 6 Jan 2021 12:08:20 +0800
-Subject: [PATCH] Makefile.am: support usrmage
-
-Upstream-Status: Inappropriate [oe-specific]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- modules/pam_namespace/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/pam_namespace/Makefile.am b/modules/pam_namespace/Makefile.am
-index ddd5fc0..a1f1bec 100644
---- a/modules/pam_namespace/Makefile.am
-+++ b/modules/pam_namespace/Makefile.am
-@@ -18,7 +18,7 @@ TESTS = $(dist_check_SCRIPTS)
- securelibdir = $(SECUREDIR)
- secureconfdir = $(SCONFIGDIR)
- namespaceddir = $(SCONFIGDIR)/namespace.d
--servicedir = /lib/systemd/system
-+servicedir = $(systemd_system_unitdir)
- 
- AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
-         -DSECURECONF_DIR=\"$(SCONFIGDIR)/\" $(WARN_CFLAGS)
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-extended/pam/libpam/0001-modules-pam_namespace-Makefile.am-correctly-install-.patch b/poky/meta/recipes-extended/pam/libpam/0001-modules-pam_namespace-Makefile.am-correctly-install-.patch
deleted file mode 100644
index b41d1e5..0000000
--- a/poky/meta/recipes-extended/pam/libpam/0001-modules-pam_namespace-Makefile.am-correctly-install-.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e2db4082f6b988f1d5803028e9e47aee5f3519ac Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Sun, 27 Dec 2020 00:30:45 +0100
-Subject: [PATCH] modules/pam_namespace/Makefile.am: correctly install systemd
- unit file
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- modules/pam_namespace/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/pam_namespace/Makefile.am b/modules/pam_namespace/Makefile.am
-index 21e1b33..ddd5fc0 100644
---- a/modules/pam_namespace/Makefile.am
-+++ b/modules/pam_namespace/Makefile.am
-@@ -18,7 +18,7 @@ TESTS = $(dist_check_SCRIPTS)
- securelibdir = $(SECUREDIR)
- secureconfdir = $(SCONFIGDIR)
- namespaceddir = $(SCONFIGDIR)/namespace.d
--servicedir = $(prefix)/lib/systemd/system
-+servicedir = /lib/systemd/system
- 
- AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
-         -DSECURECONF_DIR=\"$(SCONFIGDIR)/\" $(WARN_CFLAGS)
--- 
-2.24.0
-
diff --git a/poky/meta/recipes-extended/perl/libconvert-asn1-perl_0.31.bb b/poky/meta/recipes-extended/perl/libconvert-asn1-perl_0.31.bb
deleted file mode 100644
index 1848ef6..0000000
--- a/poky/meta/recipes-extended/perl/libconvert-asn1-perl_0.31.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Convert::ASN1 - Perl ASN.1 Encode/Decode library"
-SECTION = "libs"
-HOMEPAGE = "http://search.cpan.org/dist/Convert-ASN1/"
-DESCRIPTION = "Convert::ASN1 is a perl library for encoding/decoding data using ASN.1 definitions."
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-LIC_FILES_CHKSUM = "file://README.md;beginline=91;endline=97;md5=ceff7fd286eb6d8e8e0d3d23e096a63f"
-
-SRC_URI = "https://cpan.metacpan.org/authors/id/T/TI/TIMLEGGE/Convert-ASN1-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "1e12b263a5042804bb1c59ddce899876"
-SRC_URI[sha256sum] = "6fe4c1ba744c3a8212bf2c9b2703d93530acc153435cf2f93633540b439fbbeb"
-
-S = "${WORKDIR}/Convert-ASN1-${PV}"
-
-inherit cpan ptest-perl
-
-EXTRA_PERLFLAGS = "-I ${PERLHOSTLIB}"
-
-RDEPENDS:${PN} += "perl-module-exporter perl-module-constant perl-module-encode perl-module-encode-encoding perl-module-utf8 perl-module-socket perl-module-time-local perl-module-posix"
-RDEPENDS:${PN}-ptest += "perl-module-math-bigint perl-module-io-socket perl-module-data-dumper perl-module-math-bigint-calc"
-
-BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-extended/perl/libconvert-asn1-perl_0.33.bb b/poky/meta/recipes-extended/perl/libconvert-asn1-perl_0.33.bb
new file mode 100644
index 0000000..4f5a78d
--- /dev/null
+++ b/poky/meta/recipes-extended/perl/libconvert-asn1-perl_0.33.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Convert::ASN1 - Perl ASN.1 Encode/Decode library"
+SECTION = "libs"
+HOMEPAGE = "http://search.cpan.org/dist/Convert-ASN1/"
+DESCRIPTION = "Convert::ASN1 is a perl library for encoding/decoding data using ASN.1 definitions."
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README.md;beginline=91;endline=97;md5=ceff7fd286eb6d8e8e0d3d23e096a63f"
+
+SRC_URI = "https://cpan.metacpan.org/authors/id/T/TI/TIMLEGGE/Convert-ASN1-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "1fdf004520c79e3a244cf9688616293516c11793d746c761f367496eb3d06076"
+
+S = "${WORKDIR}/Convert-ASN1-${PV}"
+
+inherit cpan ptest-perl
+
+EXTRA_PERLFLAGS = "-I ${PERLHOSTLIB}"
+
+RDEPENDS:${PN} += "perl-module-exporter perl-module-constant perl-module-encode perl-module-encode-encoding perl-module-utf8 perl-module-socket perl-module-time-local perl-module-posix"
+RDEPENDS:${PN}-ptest += "perl-module-math-bigint perl-module-io-socket perl-module-data-dumper perl-module-math-bigint-calc"
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng/0001-Makefile-do-not-write-the-timestamp-into-compressed-.patch b/poky/meta/recipes-extended/stress-ng/stress-ng/0001-Makefile-do-not-write-the-timestamp-into-compressed-.patch
new file mode 100644
index 0000000..21a410f
--- /dev/null
+++ b/poky/meta/recipes-extended/stress-ng/stress-ng/0001-Makefile-do-not-write-the-timestamp-into-compressed-.patch
@@ -0,0 +1,26 @@
+From 2386cd8f907b379ae5cc1ce2888abef7d30e709a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Sat, 23 Oct 2021 20:20:59 +0200
+Subject: [PATCH] Makefile: do not write the timestamp into compressed manpage.
+
+This helps reproducibility.
+
+Upstream-Status: Submitted [https://github.com/ColinIanKing/stress-ng/pull/156]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 886018f9..f4290f9c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -468,7 +468,7 @@ git-commit-id.h:
+ $(OBJS): stress-ng.h Makefile
+ 
+ stress-ng.1.gz: stress-ng.1
+-	$(V)gzip -c $< > $@
++	$(V)gzip -n -c $< > $@
+ 
+ .PHONY: dist
+ dist:
diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng_0.13.00.bb b/poky/meta/recipes-extended/stress-ng/stress-ng_0.13.00.bb
index 198f7e8..5889569 100644
--- a/poky/meta/recipes-extended/stress-ng/stress-ng_0.13.00.bb
+++ b/poky/meta/recipes-extended/stress-ng/stress-ng_0.13.00.bb
@@ -1,14 +1,16 @@
 SUMMARY = "System load testing utility"
 DESCRIPTION = "Deliberately simple workload generator for POSIX systems. It \
 imposes a configurable amount of CPU, memory, I/O, and disk stress on the system."
-HOMEPAGE = "https://kernel.ubuntu.com/~cking/stress-ng/"
+HOMEPAGE = "https://github.com/ColinIanKing/stress-ng#readme"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRC_URI = "https://kernel.ubuntu.com/~cking/tarballs/${BPN}/${BP}.tar.xz \
+SRC_URI = "git://github.com/ColinIanKing/stress-ng.git;protocol=https \
            file://0001-Do-not-preserve-ownership-when-installing-example-jo.patch \
+           file://0001-Makefile-do-not-write-the-timestamp-into-compressed-.patch \
            "
-SRC_URI[sha256sum] = "1cefe4a3057c1522b146e62f61b80ce6e2e99da2d85ebe25bc03fc45228e58cd"
+SRCREV = "61b454b4a3a9d052e63c78a9574ccf8a650575dc"
+S = "${WORKDIR}/git"
 
 DEPENDS = "coreutils-native"
 
diff --git a/poky/meta/recipes-extended/sudo/files/0001-lib-util-mksigname.c-correctly-include-header-for-ou.patch b/poky/meta/recipes-extended/sudo/files/0001-lib-util-mksigname.c-correctly-include-header-for-ou.patch
new file mode 100644
index 0000000..e7875c9
--- /dev/null
+++ b/poky/meta/recipes-extended/sudo/files/0001-lib-util-mksigname.c-correctly-include-header-for-ou.patch
@@ -0,0 +1,25 @@
+From f993c5c88faacc43971899aae2168ffb3e34dc80 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 24 Sep 2021 13:36:24 +0200
+Subject: [PATCH] lib/util/mksigname.c: correctly include header for out of
+ tree builds
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ lib/util/mksigname.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/util/mksigname.c b/lib/util/mksigname.c
+index de8b1ad..0a69e7e 100644
+--- a/lib/util/mksigname.c
++++ b/lib/util/mksigname.c
+@@ -36,7 +36,7 @@ main(int argc, char *argv[])
+ {
+     unsigned int i;
+ 
+-#include "mksigname.h"
++#include "lib/util/mksigname.h"
+ 
+     printf("const char *const sudo_sys_signame[] = {\n");
+     for (i = 0; i < nitems(sudo_sys_signame); i++) {
diff --git a/poky/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch b/poky/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch
index f7ccfdd..f4fc376 100644
--- a/poky/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch
+++ b/poky/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch
@@ -13,11 +13,11 @@
 
 Upstream-Status: Inappropriate [OE configuration specific]
 ---
- examples/sudo.conf.in | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ examples/sudo.conf.in | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/examples/sudo.conf.in b/examples/sudo.conf.in
-index 19e33ff..af78235 100644
+index 6535d3a..50afc8f 100644
 --- a/examples/sudo.conf.in
 +++ b/examples/sudo.conf.in
 @@ -4,7 +4,7 @@
@@ -29,7 +29,16 @@
  #   fully qualified.
  # The plugin_name corresponds to a global symbol in the plugin
  #   that contains the plugin interface structure.
-@@ -50,7 +50,7 @@ Plugin sudoers_audit sudoers.so
+@@ -51,7 +51,7 @@
+ # The compiled-in value is usually sufficient and should only be changed
+ # if you rename or move the sudo_intercept.so file.
+ #
+-#Path intercept @plugindir@/sudo_intercept.so
++#Path intercept $plugindir/sudo_intercept.so
+ 
+ #
+ # Sudo noexec:
+@@ -65,7 +65,7 @@
  # The compiled-in value is usually sufficient and should only be changed
  # if you rename or move the sudo_noexec.so file.
  #
@@ -38,7 +47,7 @@
  
  #
  # Sudo plugin directory:
-@@ -59,7 +59,7 @@ Plugin sudoers_audit sudoers.so
+@@ -74,7 +74,7 @@
  # The default directory to use when searching for plugins that are
  # specified without a fully qualified path name.
  #
diff --git a/poky/meta/recipes-extended/sudo/sudo.inc b/poky/meta/recipes-extended/sudo/sudo.inc
index 6a18609..82040de 100644
--- a/poky/meta/recipes-extended/sudo/sudo.inc
+++ b/poky/meta/recipes-extended/sudo/sudo.inc
@@ -4,7 +4,7 @@
 BUGTRACKER = "http://www.sudo.ws/bugs/"
 SECTION = "admin"
 LICENSE = "ISC & BSD-3-Clause & BSD-2-Clause & Zlib"
-LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=fdff64d4fd19126330aa81b94d167173 \
+LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=b969d389e79703121cbffc9f3ea18a8b \
                     file://plugins/sudoers/redblack.c;beginline=1;endline=46;md5=03e35317699ba00b496251e0dfe9f109 \
                     file://lib/util/reallocarray.c;beginline=3;endline=15;md5=397dd45c7683e90b9f8bf24638cf03bf \
                     file://lib/util/fnmatch.c;beginline=3;endline=27;md5=004d7d2866ba1f5b41174906849d2e0f \
@@ -30,15 +30,13 @@
 
 EXTRA_OECONF:append:libc-musl = " --disable-hardening "
 
-# mksigname/mksiglist are used on build host to generate source files
 do_compile:prepend () {
-	# Remove build host references from sudo_usage.h
-	sed -i  \
-	    -e 's,--with-libtool-sysroot=${STAGING_DIR_TARGET},,g' \
-	    -e 's,--build=${BUILD_SYS},,g' \
-	    -e 's,--host=${HOST_SYS},,g' \
-	    ${B}/src/sudo_usage.h
-	oe_runmake SSP_CFLAGS="" SSP_LDFLAGS="" CC="$BUILD_CC" CFLAGS="$BUILD_CFLAGS" CPPFLAGS="$BUILD_CPPFLAGS -I${S}/include -I${S} -I${B}"  -C lib/util mksigname mksiglist
+       # Remove build host references from sudo_usage.h
+       sed -i  \
+           -e 's,--with-libtool-sysroot=${STAGING_DIR_TARGET},,g' \
+           -e 's,--build=${BUILD_SYS},,g' \
+           -e 's,--host=${HOST_SYS},,g' \
+           ${B}/src/sudo_usage.h
 }
 
 # Explicitly create ${localstatedir}/lib before do_install to ensure
diff --git a/poky/meta/recipes-extended/sudo/sudo_1.9.7p2.bb b/poky/meta/recipes-extended/sudo/sudo_1.9.7p2.bb
deleted file mode 100644
index 9b5b2f3..0000000
--- a/poky/meta/recipes-extended/sudo/sudo_1.9.7p2.bb
+++ /dev/null
@@ -1,59 +0,0 @@
-require sudo.inc
-
-SRC_URI = "https://www.sudo.ws/dist/sudo-${PV}.tar.gz \
-           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
-           file://0001-sudo.conf.in-fix-conflict-with-multilib.patch \
-           "
-
-PAM_SRC_URI = "file://sudo.pam"
-
-SRC_URI[sha256sum] = "28b5ee725dbf89a7852f42f309ca877d2810a9531b4eecfe59f3a84b6b4afca8"
-
-DEPENDS += " virtual/crypt ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-RDEPENDS:${PN} += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-limits pam-plugin-keyinit', '', d)}"
-
-CACHED_CONFIGUREVARS = " \
-        ac_cv_type_rsize_t=no \
-        ac_cv_path_MVPROG=${base_bindir}/mv \
-        ac_cv_path_BSHELLPROG=${base_bindir}/sh \
-        ac_cv_path_SENDMAILPROG=${sbindir}/sendmail \
-        ac_cv_path_VIPROG=${base_bindir}/vi \
-        "
-
-EXTRA_OECONF += " \
-             ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
-             ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--enable-tmpfiles.d=${nonarch_libdir}/tmpfiles.d', '--disable-tmpfiles.d', d)} \
-             --with-rundir=/run/sudo \
-             --with-vardir=/var/lib/sudo \
-             --libexecdir=${libdir} \
-             "
-
-do_install:append () {
-	if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
-		install -D -m 644 ${WORKDIR}/sudo.pam ${D}/${sysconfdir}/pam.d/sudo
-		if ${@bb.utils.contains('PACKAGECONFIG', 'pam-wheel', 'true', 'false', d)} ; then
-			echo 'auth       required     pam_wheel.so use_uid' >>${D}${sysconfdir}/pam.d/sudo
-			sed -i 's/# \(%wheel ALL=(ALL) ALL\)/\1/' ${D}${sysconfdir}/sudoers
-		fi
-	fi
-
-	chmod 4111 ${D}${bindir}/sudo
-	chmod 0440 ${D}${sysconfdir}/sudoers
-
-	# Explicitly remove the /sudo directory to avoid QA error
-	rmdir -p --ignore-fail-on-non-empty ${D}/run/sudo
-}
-
-FILES:${PN}-dev += "${libdir}/${BPN}/lib*${SOLIBSDEV} ${libdir}/${BPN}/*.la \
-                    ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la"
-
-SUDO_PACKAGES = "${PN}-sudo\
-                 ${PN}-lib"
-
-PACKAGE_BEFORE_PN = "${SUDO_PACKAGES}"
-
-RDEPENDS:${PN}-sudo = "${PN}-lib"
-RDEPENDS:${PN} += "${SUDO_PACKAGES}"
-
-FILES:${PN}-sudo = "${bindir}/sudo ${bindir}/sudoedit"
-FILES:${PN}-lib = "${localstatedir} ${libexecdir} ${sysconfdir} ${libdir} ${nonarch_libdir}"
diff --git a/poky/meta/recipes-extended/sudo/sudo_1.9.8p2.bb b/poky/meta/recipes-extended/sudo/sudo_1.9.8p2.bb
new file mode 100644
index 0000000..b2afd1f
--- /dev/null
+++ b/poky/meta/recipes-extended/sudo/sudo_1.9.8p2.bb
@@ -0,0 +1,60 @@
+require sudo.inc
+
+SRC_URI = "https://www.sudo.ws/dist/sudo-${PV}.tar.gz \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+           file://0001-sudo.conf.in-fix-conflict-with-multilib.patch \
+           file://0001-lib-util-mksigname.c-correctly-include-header-for-ou.patch \
+           "
+
+PAM_SRC_URI = "file://sudo.pam"
+
+SRC_URI[sha256sum] = "9e3b8b8da7def43b6e60c257abe80467205670fd0f7c081de1423c414b680f2d"
+
+DEPENDS += " virtual/crypt ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+RDEPENDS:${PN} += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-limits pam-plugin-keyinit', '', d)}"
+
+CACHED_CONFIGUREVARS = " \
+        ac_cv_type_rsize_t=no \
+        ac_cv_path_MVPROG=${base_bindir}/mv \
+        ac_cv_path_BSHELLPROG=${base_bindir}/sh \
+        ac_cv_path_SENDMAILPROG=${sbindir}/sendmail \
+        ac_cv_path_VIPROG=${base_bindir}/vi \
+        "
+
+EXTRA_OECONF += " \
+             ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
+             ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--enable-tmpfiles.d=${nonarch_libdir}/tmpfiles.d', '--disable-tmpfiles.d', d)} \
+             --with-rundir=/run/sudo \
+             --with-vardir=/var/lib/sudo \
+             --libexecdir=${libdir} \
+             "
+
+do_install:append () {
+	if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
+		install -D -m 644 ${WORKDIR}/sudo.pam ${D}/${sysconfdir}/pam.d/sudo
+		if ${@bb.utils.contains('PACKAGECONFIG', 'pam-wheel', 'true', 'false', d)} ; then
+			echo 'auth       required     pam_wheel.so use_uid' >>${D}${sysconfdir}/pam.d/sudo
+			sed -i 's/# \(%wheel ALL=(ALL) ALL\)/\1/' ${D}${sysconfdir}/sudoers
+		fi
+	fi
+
+	chmod 4111 ${D}${bindir}/sudo
+	chmod 0440 ${D}${sysconfdir}/sudoers
+
+	# Explicitly remove the /sudo directory to avoid QA error
+	rmdir -p --ignore-fail-on-non-empty ${D}/run/sudo
+}
+
+FILES:${PN}-dev += "${libdir}/${BPN}/lib*${SOLIBSDEV} ${libdir}/${BPN}/*.la \
+                    ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la"
+
+SUDO_PACKAGES = "${PN}-sudo\
+                 ${PN}-lib"
+
+PACKAGE_BEFORE_PN = "${SUDO_PACKAGES}"
+
+RDEPENDS:${PN}-sudo = "${PN}-lib"
+RDEPENDS:${PN} += "${SUDO_PACKAGES}"
+
+FILES:${PN}-sudo = "${bindir}/sudo ${bindir}/sudoedit"
+FILES:${PN}-lib = "${localstatedir} ${libexecdir} ${sysconfdir} ${libdir} ${nonarch_libdir}"
diff --git a/poky/meta/recipes-extended/tar/tar_1.34.bb b/poky/meta/recipes-extended/tar/tar_1.34.bb
index 3488a6c..5a415c7 100644
--- a/poky/meta/recipes-extended/tar/tar_1.34.bb
+++ b/poky/meta/recipes-extended/tar/tar_1.34.bb
@@ -63,6 +63,6 @@
 
 BBCLASSEXTEND = "native nativesdk"
 
-# These are both specific to the NPM package node-tar
-CVE_CHECK_WHITELIST += "CVE-2021-32803 CVE-2021-32804"
-CVE_CHECK_WHITELIST += "CVE-2021-37701 CVE-2021-37712 CVE-2021-37713"
+# Avoid false positives from CVEs in node-tar package
+# For example CVE-2021-{32803,32804,37701,37712,37713}
+CVE_PRODUCT = "gnu:tar"
diff --git a/poky/meta/recipes-extended/timezone/timezone.inc b/poky/meta/recipes-extended/timezone/timezone.inc
index c7d4965..43d14d7 100644
--- a/poky/meta/recipes-extended/timezone/timezone.inc
+++ b/poky/meta/recipes-extended/timezone/timezone.inc
@@ -6,7 +6,7 @@
 LICENSE = "PD & BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c679c9d6b02bc2757b3eaf8f53c43fba"
 
-PV = "2021a"
+PV = "2021e"
 
 SRC_URI =" http://www.iana.org/time-zones/repository/releases/tzcode${PV}.tar.gz;name=tzcode \
            http://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata \
@@ -14,5 +14,6 @@
 
 UPSTREAM_CHECK_URI = "http://www.iana.org/time-zones"
 
-SRC_URI[tzcode.sha256sum] = "eb46bfa124b5b6bd13d61a609bfde8351bd192894708d33aa06e5c1e255802d0"
-SRC_URI[tzdata.sha256sum] = "39e7d2ba08c68cbaefc8de3227aab0dec2521be8042cf56855f7dc3a9fb14e08"
+SRC_URI[tzcode.sha256sum] = "584666393a5424d13d27ec01183da17703273664742e049d4f62f62dab631775"
+SRC_URI[tzdata.sha256sum] = "07ec42b737d0d3c6be9c337f8abb5f00554a0f9cc4fcf01a703d69403b6bb2b1"
+
diff --git a/poky/meta/recipes-extended/wget/wget.inc b/poky/meta/recipes-extended/wget/wget.inc
index cd7290b..2491199 100644
--- a/poky/meta/recipes-extended/wget/wget.inc
+++ b/poky/meta/recipes-extended/wget/wget.inc
@@ -11,6 +11,8 @@
 
 inherit autotools gettext texinfo update-alternatives pkgconfig
 
+DEPENDS += "autoconf-archive"
+
 EXTRA_OECONF = "--without-libgnutls-prefix --without-libssl-prefix \
                 --disable-rpath"
 
diff --git a/poky/meta/recipes-extended/wget/wget_1.21.1.bb b/poky/meta/recipes-extended/wget/wget_1.21.1.bb
deleted file mode 100644
index 21385bb..0000000
--- a/poky/meta/recipes-extended/wget/wget_1.21.1.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
-           file://0002-improve-reproducibility.patch \
-          "
-
-SRC_URI[sha256sum] = "59ba0bdade9ad135eda581ae4e59a7a9f25e3a4bde6a5419632b31906120e26e"
-
-require wget.inc
diff --git a/poky/meta/recipes-extended/wget/wget_1.21.2.bb b/poky/meta/recipes-extended/wget/wget_1.21.2.bb
new file mode 100644
index 0000000..90f3eb1
--- /dev/null
+++ b/poky/meta/recipes-extended/wget/wget_1.21.2.bb
@@ -0,0 +1,7 @@
+SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
+           file://0002-improve-reproducibility.patch \
+          "
+
+SRC_URI[sha256sum] = "e6d4c76be82c676dd7e8c61a29b2ac8510ae108a810b5d1d18fc9a1d2c9a2497"
+
+require wget.inc
diff --git a/poky/meta/recipes-gnome/epiphany/epiphany_40.3.bb b/poky/meta/recipes-gnome/epiphany/epiphany_40.3.bb
deleted file mode 100644
index c5dc0ba..0000000
--- a/poky/meta/recipes-gnome/epiphany/epiphany_40.3.bb
+++ /dev/null
@@ -1,29 +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 = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-DEPENDS = "libsoup-2.4 webkitgtk gtk+3 iso-codes avahi libnotify gcr gnutls \
-	   gsettings-desktop-schemas libxml2-native \
-	   glib-2.0 glib-2.0-native json-glib libdazzle libhandy libportal \
-	   libarchive"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase gsettings features_check gettext mime-xdg
-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] = "dad138b9f2d55de271128fca38b61f53fd980c587d29e1ba6b508fff3b19f564"
-
-# 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"
diff --git a/poky/meta/recipes-gnome/epiphany/epiphany_41.0.bb b/poky/meta/recipes-gnome/epiphany/epiphany_41.0.bb
new file mode 100644
index 0000000..09210b6
--- /dev/null
+++ b/poky/meta/recipes-gnome/epiphany/epiphany_41.0.bb
@@ -0,0 +1,39 @@
+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 = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = " \
+          webkitgtk \
+          gcr \
+          gsettings-desktop-schemas \
+          nettle \
+          json-glib \
+          libarchive \
+          libdazzle \
+          libhandy \
+          libportal \
+          glib-2.0-native \
+          "
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase gsettings features_check gettext mime-xdg
+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] = "b39d1825492595b0b74c5d6a6686a857f9419dfa4c02f8013c297bc870e26dd0"
+
+EXTRA_OEMESON += "-Dsoup2=disabled"
+
+# 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"
diff --git a/poky/meta/recipes-gnome/gi-docgen/gi-docgen_git.bb b/poky/meta/recipes-gnome/gi-docgen/gi-docgen_git.bb
index f319f96..bacf983 100644
--- a/poky/meta/recipes-gnome/gi-docgen/gi-docgen_git.bb
+++ b/poky/meta/recipes-gnome/gi-docgen/gi-docgen_git.bb
@@ -10,8 +10,8 @@
 
 SRC_URI = "git://gitlab.gnome.org/GNOME/gi-docgen.git;protocol=https;branch=main"
 
-PV = "2021.7"
-SRCREV = "8401357079fdd2f61bff0e110d7379635b73ead8"
+PV = "2021.8"
+SRCREV = "a284455af9b3cad179900f6e1f12b59a3d40c06b"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST-3.34.3.patch b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST-3.34.3.patch
deleted file mode 100644
index 4ed5e15..0000000
--- a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST-3.34.3.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 8b3b153b6b95662316528ef083365b46cf5f7841 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Tue, 30 May 2017 14:55:49 +0300
-Subject: [PATCH] Don't use AC_CANONICAL_HOST
-
-This won't work when building allarch (and is only used to find out if
-target is windows).
-
-Upstream-Status: Inappropriate [embedded specific]
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-
----
- configure.ac | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 449865d..888649e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -3,7 +3,6 @@ AC_PREREQ(2.53)
- 
- AC_INIT([adwaita-icon-theme], [3.34.3],
-         [http://bugzilla.gnome.org/enter_bug.cgi?product=adwaita-icon-theme])
--AC_CANONICAL_HOST
- AC_CONFIG_MACRO_DIR([m4])
- AC_CONFIG_SRCDIR([index.theme.in])
- 
diff --git a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch
index c8c70c4..5afba3c 100644
--- a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch
+++ b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch
@@ -1,4 +1,4 @@
-From 8b3b153b6b95662316528ef083365b46cf5f7841 Mon Sep 17 00:00:00 2001
+From 63d97fefdbc90f5c68f67bdc30844776d9a1b720 Mon Sep 17 00:00:00 2001
 From: Jussi Kukkonen <jussi.kukkonen@intel.com>
 Date: Tue, 30 May 2017 14:55:49 +0300
 Subject: [PATCH] Don't use AC_CANONICAL_HOST
@@ -14,12 +14,12 @@
  1 file changed, 1 deletion(-)
 
 diff --git a/configure.ac b/configure.ac
-index 449865d..888649e 100644
+index f2659a5..1e8b016 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -3,7 +3,6 @@ AC_PREREQ(2.53)
  
- AC_INIT([adwaita-icon-theme], [3.38.0],
+ AC_INIT([adwaita-icon-theme], [41.0],
          [http://bugzilla.gnome.org/enter_bug.cgi?product=adwaita-icon-theme])
 -AC_CANONICAL_HOST
  AC_CONFIG_MACRO_DIR([m4])
diff --git a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch
index c4d7e25..54e3e5e 100644
--- a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch
+++ b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch
@@ -1,4 +1,4 @@
-From 8dcd73b45a660dbdc560676835ba46f495334f14 Mon Sep 17 00:00:00 2001
+From 79da031e9811f3eef34b14cce419be93fea34319 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Tue, 13 Jun 2017 18:10:06 +0300
 Subject: [PATCH] Run installation commands as shell jobs
@@ -7,14 +7,15 @@
 
 Upstream-Status: Pending
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
 ---
- src/fullcolor/Makefile.am | 3 ++-
- src/spinner/Makefile.am   | 5 +++--
- src/symbolic/Makefile.am  | 7 ++++---
- 3 files changed, 9 insertions(+), 6 deletions(-)
+ src/fullcolor/Makefile.am |  5 +++--
+ src/spinner/Makefile.am   |  7 ++++---
+ src/symbolic/Makefile.am  | 11 ++++++-----
+ 3 files changed, 13 insertions(+), 10 deletions(-)
 
 diff --git a/src/fullcolor/Makefile.am b/src/fullcolor/Makefile.am
-index 1c940a5..3998ee6 100644
+index d73529b..b7d0808 100644
 --- a/src/fullcolor/Makefile.am
 +++ b/src/fullcolor/Makefile.am
 @@ -9,9 +9,10 @@ install-data-local:
@@ -31,7 +32,7 @@
  ## FIXME we should add a way to remove links generated by icon mapping
  uninstall-local:
 diff --git a/src/spinner/Makefile.am b/src/spinner/Makefile.am
-index 86f4d7c..3fae8c1 100644
+index c14caf6..322dc0d 100644
 --- a/src/spinner/Makefile.am
 +++ b/src/spinner/Makefile.am
 @@ -24,13 +24,14 @@ install-data-local:
@@ -45,18 +46,18 @@
  		context="`dirname $$file`"; \
  		$(mkdir_p) $(DESTDIR)$(themedir)/scalable-up-to-32/$$context; \
 -		$(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32/$$file $(DESTDIR)$(themedir)/scalable-up-to-32/$$file; \
-+		$(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32/$$file $(DESTDIR)$(themedir)/scalable-up-to-32/$$file & \
 -	done
++		$(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32/$$file $(DESTDIR)$(themedir)/scalable-up-to-32/$$file & \
 +	done; \
 +	wait
  
  uninstall-local:
  	      for file in `cd $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32; find . -name "*.svg"`; do \
 diff --git a/src/symbolic/Makefile.am b/src/symbolic/Makefile.am
-index 24aac9b..61ba071 100644
+index 957c0ee..e1f8818 100644
 --- a/src/symbolic/Makefile.am
 +++ b/src/symbolic/Makefile.am
-@@ -25,18 +25,19 @@ install-data-local:
+@@ -34,18 +34,19 @@ install-data-local:
  		for file in `cd $(top_srcdir)/$(SVGOUTDIR)/$$size; find . -name "*.png"`; do \
  			context="`dirname $$file`"; \
  			$(mkdir_p) $(DESTDIR)$(themedir)/$$size/$$context; \
@@ -81,6 +82,3 @@
  
  uninstall-local:
  	for file in `cd $(top_srcdir)/$(SVGOUTDIR)/scalable; find . -name "*.svg"`; do \
--- 
-2.11.0
-
diff --git a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.34.3.bb b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.34.3.bb
deleted file mode 100644
index f98f20c..0000000
--- a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.34.3.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "GTK+ icon theme"
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme/issues"
-SECTION = "x11/gnome"
-
-LICENSE = "LGPL-3.0 | CC-BY-SA-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c \
-                    file://COPYING_CCBYSA3;md5=96143d33de3a79321b1006c4e8ed07e7 \
-                    file://COPYING_LGPL;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-inherit allarch autotools pkgconfig gettext gtk-icon-cache
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
-           file://0001-Don-t-use-AC_CANONICAL_HOST-3.34.3.patch \
-           file://0001-Run-installation-commands-as-shell-jobs.patch \
-           "
-
-SRC_URI[md5sum] = "9aea4ad9bc002aacad155ee0748b357f"
-SRC_URI[sha256sum] = "e7c2d8c259125d5f35ec09522b88c8fe7ecf625224ab0811213ef0a95d90b908"
-
-DEPENDS += "librsvg-native"
-
-PACKAGES = "${PN}-cursors ${PN}-symbolic-hires ${PN}-symbolic ${PN}-hires ${PN}"
-
-RREPLACES:${PN} = "gnome-icon-theme"
-RCONFLICTS:${PN} = "gnome-icon-theme"
-RPROVIDES:${PN} = "gnome-icon-theme"
-
-FILES:${PN}-cursors = "${prefix}/share/icons/Adwaita/cursors/"
-FILES:${PN}-symbolic-hires = "${prefix}/share/icons/Adwaita/96x96/*/*.symbolic.png \
-                              ${prefix}/share/icons/Adwaita/64x64/*/*.symbolic.png \
-                              ${prefix}/share/icons/Adwaita/48x48/*/*.symbolic.png \
-                              ${prefix}/share/icons/Adwaita/32x32/*/*.symbolic.png"
-FILES:${PN}-symbolic = "${prefix}/share/icons/Adwaita/16x16/*/*.symbolic.png \
-                        ${prefix}/share/icons/Adwaita/24x24/*/*.symbolic.png \
-                        ${prefix}/share/icons/Adwaita/scalable/*/*-symbolic*.svg"
-FILES:${PN}-hires = "${prefix}/share/icons/Adwaita/256x256/ \
-                     ${prefix}/share/icons/Adwaita/512x512/"
-FILES:${PN} = "${prefix}/share/icons/Adwaita/ \
-               ${prefix}/share/pkgconfig/adwaita-icon-theme.pc"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb
deleted file mode 100644
index f9e52ca..0000000
--- a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "GTK+ icon theme"
-DESCRIPTION = "The Adwaita icon theme is the default icon theme of the GNOME desktop \
-This package package contains an icon theme for Gtk+ 3 applications."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme/issues"
-SECTION = "x11/gnome"
-
-LICENSE = "LGPL-3.0 | CC-BY-SA-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c \
-                    file://COPYING_CCBYSA3;md5=96143d33de3a79321b1006c4e8ed07e7 \
-                    file://COPYING_LGPL;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-inherit allarch autotools pkgconfig gettext gtk-icon-cache
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
-           file://0001-Don-t-use-AC_CANONICAL_HOST.patch \
-           file://0001-Run-installation-commands-as-shell-jobs.patch \
-           "
-
-SRC_URI[sha256sum] = "6683a1aaf2430ccd9ea638dd4bfe1002bc92b412050c3dba20e480f979faaf97"
-
-DEPENDS += "librsvg-native"
-
-PACKAGES = "${PN}-cursors ${PN}-symbolic-hires ${PN}-symbolic ${PN}-hires ${PN}"
-
-RREPLACES:${PN} = "gnome-icon-theme"
-RCONFLICTS:${PN} = "gnome-icon-theme"
-RPROVIDES:${PN} = "gnome-icon-theme"
-
-FILES:${PN}-cursors = "${prefix}/share/icons/Adwaita/cursors/"
-FILES:${PN}-symbolic-hires = "${prefix}/share/icons/Adwaita/96x96/*/*.symbolic.png \
-                              ${prefix}/share/icons/Adwaita/64x64/*/*.symbolic.png \
-                              ${prefix}/share/icons/Adwaita/48x48/*/*.symbolic.png \
-                              ${prefix}/share/icons/Adwaita/32x32/*/*.symbolic.png"
-FILES:${PN}-symbolic = "${prefix}/share/icons/Adwaita/16x16/*/*.symbolic.png \
-                        ${prefix}/share/icons/Adwaita/24x24/*/*.symbolic.png \
-                        ${prefix}/share/icons/Adwaita/scalable/*/*-symbolic*.svg"
-FILES:${PN}-hires = "${prefix}/share/icons/Adwaita/256x256/ \
-                     ${prefix}/share/icons/Adwaita/512x512/"
-FILES:${PN} = "${prefix}/share/icons/Adwaita/ \
-               ${prefix}/share/pkgconfig/adwaita-icon-theme.pc"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_41.0.bb b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_41.0.bb
new file mode 100644
index 0000000..2b21e1b
--- /dev/null
+++ b/poky/meta/recipes-gnome/gnome/adwaita-icon-theme_41.0.bb
@@ -0,0 +1,43 @@
+SUMMARY = "GTK+ icon theme"
+DESCRIPTION = "The Adwaita icon theme is the default icon theme of the GNOME desktop \
+This package package contains an icon theme for Gtk+ 3 applications."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme/issues"
+SECTION = "x11/gnome"
+
+LICENSE = "LGPL-3.0 | CC-BY-SA-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c \
+                    file://COPYING_CCBYSA3;md5=96143d33de3a79321b1006c4e8ed07e7 \
+                    file://COPYING_LGPL;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+inherit allarch autotools pkgconfig gettext gtk-icon-cache gnomebase
+
+SRC_URI += " \
+           file://0001-Don-t-use-AC_CANONICAL_HOST.patch \
+           file://0001-Run-installation-commands-as-shell-jobs.patch \
+           "
+
+SRC_URI[archive.sha256sum] = "ef5339d8c35fcad5d10481b70480803f0fa20b3d3cbc339238fcaceeaee01eba"
+
+DEPENDS += "librsvg-native"
+
+PACKAGES = "${PN}-cursors ${PN}-symbolic-hires ${PN}-symbolic ${PN}-hires ${PN}"
+
+RREPLACES:${PN} = "gnome-icon-theme"
+RCONFLICTS:${PN} = "gnome-icon-theme"
+RPROVIDES:${PN} = "gnome-icon-theme"
+
+FILES:${PN}-cursors = "${prefix}/share/icons/Adwaita/cursors/"
+FILES:${PN}-symbolic-hires = "${prefix}/share/icons/Adwaita/96x96/*/*.symbolic.png \
+                              ${prefix}/share/icons/Adwaita/64x64/*/*.symbolic.png \
+                              ${prefix}/share/icons/Adwaita/48x48/*/*.symbolic.png \
+                              ${prefix}/share/icons/Adwaita/32x32/*/*.symbolic.png"
+FILES:${PN}-symbolic = "${prefix}/share/icons/Adwaita/16x16/*/*.symbolic.png \
+                        ${prefix}/share/icons/Adwaita/24x24/*/*.symbolic.png \
+                        ${prefix}/share/icons/Adwaita/scalable/*/*-symbolic*.svg"
+FILES:${PN}-hires = "${prefix}/share/icons/Adwaita/256x256/ \
+                     ${prefix}/share/icons/Adwaita/512x512/"
+FILES:${PN} = "${prefix}/share/icons/Adwaita/ \
+               ${prefix}/share/pkgconfig/adwaita-icon-theme.pc"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch b/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch
index 9071245..ba96509 100644
--- a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch
+++ b/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch
@@ -1,4 +1,4 @@
-From 5c606356523431769dffb02fffd2fbca8fb20232 Mon Sep 17 00:00:00 2001
+From 74a0fee892235c722ac60ddea6ee79bc3d7a93f5 Mon Sep 17 00:00:00 2001
 From: Sascha Silbe <x-yo17@se-silbe.de>
 Date: Fri, 8 Jun 2018 13:55:10 +0200
 Subject: [PATCH] Relocate the repository directory for native builds
@@ -62,7 +62,7 @@
        typelib_search_path = g_slist_prepend (typelib_search_path, typelib_dir);
  
 diff --git a/girepository/meson.build b/girepository/meson.build
-index c8ef6aa..b85ff7f 100644
+index 786749a..15cf2a9 100644
 --- a/girepository/meson.build
 +++ b/girepository/meson.build
 @@ -45,7 +45,7 @@ girepo_internals_lib = static_library('girepository-internals',
diff --git a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.68.0.bb b/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.68.0.bb
deleted file mode 100644
index b1d3d8a..0000000
--- a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.68.0.bb
+++ /dev/null
@@ -1,206 +0,0 @@
-SUMMARY = "Middleware layer between GObject-using C libraries and language bindings"
-DESCRIPTION = "GObject Introspection is a project for providing machine \
-readable introspection data of the API of C libraries. This introspection \
-data can be used in several different use cases, for example automatic code \
-generation for bindings, API verification and documentation generation."
-HOMEPAGE = "https://wiki.gnome.org/action/show/Projects/GObjectIntrospection"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/gobject-introspection/issues"
-SECTION = "libs"
-LICENSE = "LGPLv2+ & GPLv2+ & MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c434e8128a68bedd59b80b2ac1eb1c4a \
-                    file://tools/compiler.c;endline=20;md5=fc5007fc20022720e6c0b0cdde41fabd \
-                    file://giscanner/sourcescanner.c;endline=22;md5=194d6e0c1d00662f32d030ce44de8d39 \
-                    file://girepository/giregisteredtypeinfo.c;endline=21;md5=661847611ae6979465415f31a759ba27 \
-                    "
-
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${@oe.utils.trim_version("${PV}", 2)}/${BPN}-${PV}.tar.xz \
-           file://0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch \
-           "
-
-SRC_URI[sha256sum] = "d229242481a201b84a0c66716de1752bca41db4133672cfcfb37c93eb6e54a27"
-
-SRC_URI:append:class-native = " file://0001-Relocate-the-repository-directory-for-native-builds.patch"
-
-inherit meson pkgconfig gtk-doc python3native qemu gobject-introspection-data upstream-version-is-even multilib_script
-
-GTKDOC_MESON_OPTION = "gtk_doc"
-
-MULTILIB_SCRIPTS = "${PN}:${bindir}/g-ir-annotation-tool ${PN}:${bindir}/g-ir-scanner"
-
-DEPENDS += " libffi zlib glib-2.0 python3 flex-native bison-native autoconf-archive"
-
-# target build needs qemu to run temporary introspection binaries created
-# on the fly by g-ir-scanner and a native version of itself to run
-# native versions of its own tools during build.
-# Also prelink-rtld is used to find out library dependencies of introspection binaries
-# (standard ldd doesn't work when cross-compiling).
-DEPENDS:append:class-target = " gobject-introspection-native qemu-native prelink-native"
-
-# needed for writing out the qemu wrapper script
-export STAGING_DIR_HOST
-export B
-
-PACKAGECONFIG ?= ""
-PACKAGECONFIG[doctool] = "-Ddoctool=enabled,-Ddoctool=disabled,python3-mako,"
-
-# Configure target build to use native tools of itself and to use a qemu wrapper
-# and optionally to generate introspection data
-EXTRA_OEMESON:class-target = " \
-    -Dgi_cross_use_prebuilt_gi=true \
-    -Dgi_cross_binary_wrapper=${B}/g-ir-scanner-qemuwrapper \
-    -Dgi_cross_ldd_wrapper=${B}/g-ir-scanner-lddwrapper \
-    -Dgi_cross_pkgconfig_sysroot_path=${PKG_CONFIG_SYSROOT_DIR} \
-    ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Dbuild_introspection_data=true', '-Dbuild_introspection_data=false', d)} \
-    ${@'-Dgir_dir_prefix=${libdir}' if d.getVar('MULTILIBS') else ''} \
-"
-
-# Need to ensure ld.so.conf exists so prelink-native works
-# both before we build and if we install from sstate
-do_configure[prefuncs] += "gobject_introspection_preconfigure"
-python gobject_introspection_preconfigure () {
-    oe.utils.write_ld_so_conf(d)
-}
-
-do_configure:prepend:class-native() {
-        # Tweak the native python scripts so that they don't refer to the
-        # full path of native python binary (the solution is taken from glib-2.0 recipe)
-        # This removes the risk of exceeding Linux kernel's shebang line limit (128 bytes)
-        sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
-}
-
-do_configure:prepend:class-target() {
-        # Write out a qemu wrapper that will be given to gi-scanner so that it
-        # can run target helper binaries through that.
-        qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\\$GIR_EXTRA_LIBS_PATH','.libs','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
-        cat > ${B}/g-ir-scanner-qemuwrapper << EOF
-#!/bin/sh
-# Use a modules directory which doesn't exist so we don't load random things
-# which may then get deleted (or their dependencies) and potentially segfault
-export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
-
-$qemu_binary "\$@"
-if [ \$? -ne 0 ]; then
-    echo "If the above error message is about missing .so libraries, then setting up GIR_EXTRA_LIBS_PATH in the recipe should help."
-    echo "(typically like this: GIR_EXTRA_LIBS_PATH=\"$""{B}/something/.libs\" )"
-    exit 1
-fi
-EOF
-        chmod +x ${B}/g-ir-scanner-qemuwrapper
-
-        # Write out a wrapper for g-ir-scanner itself, which will be used when building introspection files
-        # for glib-based packages. This wrapper calls the native version of the scanner, and tells it to use
-        # a qemu wrapper for running transient target binaries produced by the scanner, and an include directory
-        # from the target sysroot.
-        cat > ${B}/g-ir-scanner-wrapper << EOF
-#!/bin/sh
-# This prevents g-ir-scanner from writing cache data to user's HOME dir
-export GI_SCANNER_DISABLE_CACHE=1
-
-g-ir-scanner --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH --use-binary-wrapper=${STAGING_BINDIR}/g-ir-scanner-qemuwrapper --use-ldd-wrapper=${STAGING_BINDIR}/g-ir-scanner-lddwrapper --add-include-path=${STAGING_DATADIR}/gir-1.0 --add-include-path=${STAGING_LIBDIR}/gir-1.0 "\$@"
-EOF
-        chmod +x ${B}/g-ir-scanner-wrapper
-
-        # Write out a wrapper for g-ir-compiler, which runs the target version of it through qemu.
-        # g-ir-compiler writes out the raw content of a C struct to disk, and therefore is architecture dependent.
-        cat > ${B}/g-ir-compiler-wrapper << EOF
-#!/bin/sh
-${STAGING_BINDIR}/g-ir-scanner-qemuwrapper ${STAGING_BINDIR}/g-ir-compiler "\$@"
-EOF
-        chmod +x ${B}/g-ir-compiler-wrapper
-
-        # Write out a wrapper to use instead of ldd, which does not work when a binary is built
-        # for a different architecture
-        cat > ${B}/g-ir-scanner-lddwrapper << EOF
-#!/bin/sh
-prelink-rtld --root=$STAGING_DIR_HOST "\$@"
-EOF
-        chmod +x ${B}/g-ir-scanner-lddwrapper
-
-        # Also tweak the target python scripts so that they don't refer to the
-        # native version of python binary (the solution is taken from glib-2.0 recipe)
-        sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
-}
-
-do_compile:prepend() {
-        # This prevents g-ir-scanner from writing cache data to $HOME
-        export GI_SCANNER_DISABLE_CACHE=1
-
-        # Needed to run g-ir unit tests, which won't be able to find the built libraries otherwise
-        export GIR_EXTRA_LIBS_PATH=$B/.libs
-}
-
-do_install:prepend() {
-        # This prevents g-ir-scanner from writing cache data to $HOME
-        export GI_SCANNER_DISABLE_CACHE=1
-}
-
-# Our wrappers need to be available system-wide, because they will be used
-# to build introspection files for all other gobject-based packages
-do_install:append:class-target() {
-        install -d ${D}${bindir}/
-        install ${B}/g-ir-scanner-qemuwrapper ${D}${bindir}/
-        install ${B}/g-ir-scanner-wrapper ${D}${bindir}/
-        install ${B}/g-ir-compiler-wrapper ${D}${bindir}/
-        install ${B}/g-ir-scanner-lddwrapper ${D}${bindir}/
-}
-
-# we need target versions of introspection tools in sysroot so that they can be run via qemu
-# when building introspection files in other packages
-SYSROOT_DIRS:append:class-target = " ${bindir}"
-
-SYSROOT_PREPROCESS_FUNCS:append:class-target = " gi_binaries_sysroot_preprocess"
-gi_binaries_sysroot_preprocess() {
-        # Tweak the binary names in the introspection pkgconfig file, so that it
-        # picks up our wrappers which do the cross-compile and qemu magic.
-        sed -i \
-           -e "s|g_ir_scanner=.*|g_ir_scanner=${bindir}/g-ir-scanner-wrapper|" \
-           -e "s|g_ir_compiler=.*|g_ir_compiler=${bindir}/g-ir-compiler-wrapper|" \
-           ${SYSROOT_DESTDIR}${libdir}/pkgconfig/gobject-introspection-1.0.pc
-}
-
-SYSROOT_PREPROCESS_FUNCS:append = " gi_ldsoconf_sysroot_preprocess"
-gi_ldsoconf_sysroot_preprocess () {
-	mkdir -p ${SYSROOT_DESTDIR}${bindir}
-	dest=${SYSROOT_DESTDIR}${bindir}/postinst-ldsoconf-${PN}
-	echo "#!/bin/sh" > $dest
-	echo "mkdir -p ${STAGING_DIR_TARGET}${sysconfdir}" >> $dest
-	echo "echo ${base_libdir} >> ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf" >> $dest
-	echo "echo ${libdir} >> ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf" >> $dest
-	chmod 755 $dest
-}
-
-# Remove wrapper files from the package, only used for cross-compiling
-PACKAGE_PREPROCESS_FUNCS += "gi_package_preprocess"
-gi_package_preprocess() {
-	rm -f ${PKGD}${bindir}/g-ir-scanner-qemuwrapper
-	rm -f ${PKGD}${bindir}/g-ir-scanner-wrapper
-	rm -f ${PKGD}${bindir}/g-ir-compiler-wrapper
-	rm -f ${PKGD}${bindir}/g-ir-scanner-lddwrapper
-}
-
-SSTATE_SCAN_FILES += "g-ir-scanner-qemuwrapper g-ir-scanner-wrapper g-ir-compiler-wrapper g-ir-scanner-lddwrapper Gio-2.0.gir postinst-ldsoconf-${PN}"
-
-# .typelib files are needed at runtime and so they go to the main package
-FILES:${PN}:append = " ${libdir}/girepository-*/*.typelib"
-
-# .gir files go to dev package, as they're needed for developing (but not for running)
-# things that depends on introspection.
-FILES:${PN}-dev:append = " ${datadir}/gir-*/*.gir ${libdir}/gir-*/*.gir"
-FILES:${PN}-dev:append = " ${datadir}/gir-*/*.rnc"
-
-# These are used by gobject-based packages
-# to generate transient introspection binaries
-FILES:${PN}-dev:append = " ${datadir}/gobject-introspection-1.0/gdump.c \
-                           ${datadir}/gobject-introspection-1.0/Makefile.introspection"
-
-# These are used by dependent packages (e.g. pygobject) to build their
-# testsuites.
-FILES:${PN}-dev:append = " ${datadir}/gobject-introspection-1.0/tests/*.c \
-                           ${datadir}/gobject-introspection-1.0/tests/*.h"
-
-FILES:${PN}-dbg += "${libdir}/gobject-introspection/giscanner/.debug/"
-FILES:${PN}-staticdev += "${libdir}/gobject-introspection/giscanner/*.a"
-
-RDEPENDS:${PN} = "python3-pickle python3-xml"
-
-BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.70.0.bb b/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.70.0.bb
new file mode 100644
index 0000000..d96caf0
--- /dev/null
+++ b/poky/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.70.0.bb
@@ -0,0 +1,206 @@
+SUMMARY = "Middleware layer between GObject-using C libraries and language bindings"
+DESCRIPTION = "GObject Introspection is a project for providing machine \
+readable introspection data of the API of C libraries. This introspection \
+data can be used in several different use cases, for example automatic code \
+generation for bindings, API verification and documentation generation."
+HOMEPAGE = "https://wiki.gnome.org/action/show/Projects/GObjectIntrospection"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/gobject-introspection/issues"
+SECTION = "libs"
+LICENSE = "LGPLv2+ & GPLv2+ & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c434e8128a68bedd59b80b2ac1eb1c4a \
+                    file://tools/compiler.c;endline=20;md5=fc5007fc20022720e6c0b0cdde41fabd \
+                    file://giscanner/sourcescanner.c;endline=22;md5=194d6e0c1d00662f32d030ce44de8d39 \
+                    file://girepository/giregisteredtypeinfo.c;endline=21;md5=661847611ae6979465415f31a759ba27 \
+                    "
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${@oe.utils.trim_version("${PV}", 2)}/${BPN}-${PV}.tar.xz \
+           file://0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch \
+           "
+
+SRC_URI[sha256sum] = "902b4906e3102d17aa2fcb6dad1c19971c70f2a82a159ddc4a94df73a3cafc4a"
+
+SRC_URI:append:class-native = " file://0001-Relocate-the-repository-directory-for-native-builds.patch"
+
+inherit meson pkgconfig gtk-doc python3native qemu gobject-introspection-data upstream-version-is-even multilib_script
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+MULTILIB_SCRIPTS = "${PN}:${bindir}/g-ir-annotation-tool ${PN}:${bindir}/g-ir-scanner"
+
+DEPENDS += " libffi zlib glib-2.0 python3 flex-native bison-native autoconf-archive"
+
+# target build needs qemu to run temporary introspection binaries created
+# on the fly by g-ir-scanner and a native version of itself to run
+# native versions of its own tools during build.
+# Also prelink-rtld is used to find out library dependencies of introspection binaries
+# (standard ldd doesn't work when cross-compiling).
+DEPENDS:append:class-target = " gobject-introspection-native qemu-native prelink-native"
+
+# needed for writing out the qemu wrapper script
+export STAGING_DIR_HOST
+export B
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[doctool] = "-Ddoctool=enabled,-Ddoctool=disabled,python3-mako,"
+
+# Configure target build to use native tools of itself and to use a qemu wrapper
+# and optionally to generate introspection data
+EXTRA_OEMESON:class-target = " \
+    -Dgi_cross_use_prebuilt_gi=true \
+    -Dgi_cross_binary_wrapper=${B}/g-ir-scanner-qemuwrapper \
+    -Dgi_cross_ldd_wrapper=${B}/g-ir-scanner-lddwrapper \
+    -Dgi_cross_pkgconfig_sysroot_path=${PKG_CONFIG_SYSROOT_DIR} \
+    ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Dbuild_introspection_data=true', '-Dbuild_introspection_data=false', d)} \
+    ${@'-Dgir_dir_prefix=${libdir}' if d.getVar('MULTILIBS') else ''} \
+"
+
+# Need to ensure ld.so.conf exists so prelink-native works
+# both before we build and if we install from sstate
+do_configure[prefuncs] += "gobject_introspection_preconfigure"
+python gobject_introspection_preconfigure () {
+    oe.utils.write_ld_so_conf(d)
+}
+
+do_configure:prepend:class-native() {
+        # Tweak the native python scripts so that they don't refer to the
+        # full path of native python binary (the solution is taken from glib-2.0 recipe)
+        # This removes the risk of exceeding Linux kernel's shebang line limit (128 bytes)
+        sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
+}
+
+do_configure:prepend:class-target() {
+        # Write out a qemu wrapper that will be given to gi-scanner so that it
+        # can run target helper binaries through that.
+        qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\\$GIR_EXTRA_LIBS_PATH','.libs','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
+        cat > ${B}/g-ir-scanner-qemuwrapper << EOF
+#!/bin/sh
+# Use a modules directory which doesn't exist so we don't load random things
+# which may then get deleted (or their dependencies) and potentially segfault
+export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
+
+$qemu_binary "\$@"
+if [ \$? -ne 0 ]; then
+    echo "If the above error message is about missing .so libraries, then setting up GIR_EXTRA_LIBS_PATH in the recipe should help."
+    echo "(typically like this: GIR_EXTRA_LIBS_PATH=\"$""{B}/something/.libs\" )"
+    exit 1
+fi
+EOF
+        chmod +x ${B}/g-ir-scanner-qemuwrapper
+
+        # Write out a wrapper for g-ir-scanner itself, which will be used when building introspection files
+        # for glib-based packages. This wrapper calls the native version of the scanner, and tells it to use
+        # a qemu wrapper for running transient target binaries produced by the scanner, and an include directory
+        # from the target sysroot.
+        cat > ${B}/g-ir-scanner-wrapper << EOF
+#!/bin/sh
+# This prevents g-ir-scanner from writing cache data to user's HOME dir
+export GI_SCANNER_DISABLE_CACHE=1
+
+g-ir-scanner --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH --use-binary-wrapper=${STAGING_BINDIR}/g-ir-scanner-qemuwrapper --use-ldd-wrapper=${STAGING_BINDIR}/g-ir-scanner-lddwrapper --add-include-path=${STAGING_DATADIR}/gir-1.0 --add-include-path=${STAGING_LIBDIR}/gir-1.0 "\$@"
+EOF
+        chmod +x ${B}/g-ir-scanner-wrapper
+
+        # Write out a wrapper for g-ir-compiler, which runs the target version of it through qemu.
+        # g-ir-compiler writes out the raw content of a C struct to disk, and therefore is architecture dependent.
+        cat > ${B}/g-ir-compiler-wrapper << EOF
+#!/bin/sh
+${STAGING_BINDIR}/g-ir-scanner-qemuwrapper ${STAGING_BINDIR}/g-ir-compiler "\$@"
+EOF
+        chmod +x ${B}/g-ir-compiler-wrapper
+
+        # Write out a wrapper to use instead of ldd, which does not work when a binary is built
+        # for a different architecture
+        cat > ${B}/g-ir-scanner-lddwrapper << EOF
+#!/bin/sh
+prelink-rtld --root=$STAGING_DIR_HOST "\$@"
+EOF
+        chmod +x ${B}/g-ir-scanner-lddwrapper
+
+        # Also tweak the target python scripts so that they don't refer to the
+        # native version of python binary (the solution is taken from glib-2.0 recipe)
+        sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
+}
+
+do_compile:prepend() {
+        # This prevents g-ir-scanner from writing cache data to $HOME
+        export GI_SCANNER_DISABLE_CACHE=1
+
+        # Needed to run g-ir unit tests, which won't be able to find the built libraries otherwise
+        export GIR_EXTRA_LIBS_PATH=$B/.libs
+}
+
+do_install:prepend() {
+        # This prevents g-ir-scanner from writing cache data to $HOME
+        export GI_SCANNER_DISABLE_CACHE=1
+}
+
+# Our wrappers need to be available system-wide, because they will be used
+# to build introspection files for all other gobject-based packages
+do_install:append:class-target() {
+        install -d ${D}${bindir}/
+        install ${B}/g-ir-scanner-qemuwrapper ${D}${bindir}/
+        install ${B}/g-ir-scanner-wrapper ${D}${bindir}/
+        install ${B}/g-ir-compiler-wrapper ${D}${bindir}/
+        install ${B}/g-ir-scanner-lddwrapper ${D}${bindir}/
+}
+
+# we need target versions of introspection tools in sysroot so that they can be run via qemu
+# when building introspection files in other packages
+SYSROOT_DIRS:append:class-target = " ${bindir}"
+
+SYSROOT_PREPROCESS_FUNCS:append:class-target = " gi_binaries_sysroot_preprocess"
+gi_binaries_sysroot_preprocess() {
+        # Tweak the binary names in the introspection pkgconfig file, so that it
+        # picks up our wrappers which do the cross-compile and qemu magic.
+        sed -i \
+           -e "s|g_ir_scanner=.*|g_ir_scanner=${bindir}/g-ir-scanner-wrapper|" \
+           -e "s|g_ir_compiler=.*|g_ir_compiler=${bindir}/g-ir-compiler-wrapper|" \
+           ${SYSROOT_DESTDIR}${libdir}/pkgconfig/gobject-introspection-1.0.pc
+}
+
+SYSROOT_PREPROCESS_FUNCS:append = " gi_ldsoconf_sysroot_preprocess"
+gi_ldsoconf_sysroot_preprocess () {
+	mkdir -p ${SYSROOT_DESTDIR}${bindir}
+	dest=${SYSROOT_DESTDIR}${bindir}/postinst-ldsoconf-${PN}
+	echo "#!/bin/sh" > $dest
+	echo "mkdir -p ${STAGING_DIR_TARGET}${sysconfdir}" >> $dest
+	echo "echo ${base_libdir} >> ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf" >> $dest
+	echo "echo ${libdir} >> ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf" >> $dest
+	chmod 755 $dest
+}
+
+# Remove wrapper files from the package, only used for cross-compiling
+PACKAGE_PREPROCESS_FUNCS += "gi_package_preprocess"
+gi_package_preprocess() {
+	rm -f ${PKGD}${bindir}/g-ir-scanner-qemuwrapper
+	rm -f ${PKGD}${bindir}/g-ir-scanner-wrapper
+	rm -f ${PKGD}${bindir}/g-ir-compiler-wrapper
+	rm -f ${PKGD}${bindir}/g-ir-scanner-lddwrapper
+}
+
+SSTATE_SCAN_FILES += "g-ir-scanner-qemuwrapper g-ir-scanner-wrapper g-ir-compiler-wrapper g-ir-scanner-lddwrapper Gio-2.0.gir postinst-ldsoconf-${PN}"
+
+# .typelib files are needed at runtime and so they go to the main package
+FILES:${PN}:append = " ${libdir}/girepository-*/*.typelib"
+
+# .gir files go to dev package, as they're needed for developing (but not for running)
+# things that depends on introspection.
+FILES:${PN}-dev:append = " ${datadir}/gir-*/*.gir ${libdir}/gir-*/*.gir"
+FILES:${PN}-dev:append = " ${datadir}/gir-*/*.rnc"
+
+# These are used by gobject-based packages
+# to generate transient introspection binaries
+FILES:${PN}-dev:append = " ${datadir}/gobject-introspection-1.0/gdump.c \
+                           ${datadir}/gobject-introspection-1.0/Makefile.introspection"
+
+# These are used by dependent packages (e.g. pygobject) to build their
+# testsuites.
+FILES:${PN}-dev:append = " ${datadir}/gobject-introspection-1.0/tests/*.c \
+                           ${datadir}/gobject-introspection-1.0/tests/*.h"
+
+FILES:${PN}-dbg += "${libdir}/gobject-introspection/giscanner/.debug/"
+FILES:${PN}-staticdev += "${libdir}/gobject-introspection/giscanner/*.a"
+
+RDEPENDS:${PN} = "python3-pickle python3-xml"
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_40.0.bb b/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_40.0.bb
deleted file mode 100644
index 89751a8..0000000
--- a/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_40.0.bb
+++ /dev/null
@@ -1,16 +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 = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS = "glib-2.0"
-
-GNOMEBASEBUILDCLASS = "meson"
-
-inherit gnomebase gsettings gobject-introspection gettext
-
-SRC_URI[archive.sha256sum] = "f1b83bf023c0261eacd0ed36066b76f4a520bbcb14bb69c402b7959257125685"
diff --git a/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_41.0.bb b/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_41.0.bb
new file mode 100644
index 0000000..693ccd0
--- /dev/null
+++ b/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_41.0.bb
@@ -0,0 +1,16 @@
+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 = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "glib-2.0"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gsettings gobject-introspection gettext
+
+SRC_URI[archive.sha256sum] = "77289972e596d044583f0c056306d8f1dbd8adcf912910a50da0a663e65332ed"
diff --git a/poky/meta/recipes-gnome/json-glib/json-glib_1.6.4.bb b/poky/meta/recipes-gnome/json-glib/json-glib_1.6.4.bb
deleted file mode 100644
index 072c240..0000000
--- a/poky/meta/recipes-gnome/json-glib/json-glib_1.6.4.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "JSON-GLib implements a full JSON parser using GLib and GObject"
-DESCRIPTION = "Use JSON-GLib it is possible to parse and generate valid JSON\
- data structures, using a DOM-like API. JSON-GLib also offers GObject \
-integration, providing the ability to serialize and deserialize GObject \
-instances to and from JSON data types."
-HOMEPAGE = "https://wiki.gnome.org/Projects/JsonGlib"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/json-glib/issues"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
-
-DEPENDS = "glib-2.0"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase lib_package gobject-introspection gi-docgen gettext ptest-gnome manpages upstream-version-is-even
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-GIDOCGEN_MESON_ENABLE_FLAG = 'enabled'
-GIDOCGEN_MESON_DISABLE_FLAG = 'disabled'
-
-SRC_URI += " file://run-ptest"
-SRC_URI[archive.sha256sum] = "b1f6a7930808f77a827f3b397a04bb89d4c0c0b2550885d4a5e4c411dfa13f5f"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
-PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native"
-PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# Currently it's not possible to disable gettext in Meson, so we need to force
-# this back on.
-USE_NLS:class-native = "yes"
diff --git a/poky/meta/recipes-gnome/json-glib/json-glib_1.6.6.bb b/poky/meta/recipes-gnome/json-glib/json-glib_1.6.6.bb
new file mode 100644
index 0000000..c3572a1
--- /dev/null
+++ b/poky/meta/recipes-gnome/json-glib/json-glib_1.6.6.bb
@@ -0,0 +1,32 @@
+SUMMARY = "JSON-GLib implements a full JSON parser using GLib and GObject"
+DESCRIPTION = "Use JSON-GLib it is possible to parse and generate valid JSON\
+ data structures, using a DOM-like API. JSON-GLib also offers GObject \
+integration, providing the ability to serialize and deserialize GObject \
+instances to and from JSON data types."
+HOMEPAGE = "https://wiki.gnome.org/Projects/JsonGlib"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/json-glib/issues"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+DEPENDS = "glib-2.0"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase lib_package gobject-introspection gi-docgen gettext ptest-gnome manpages upstream-version-is-even
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GIDOCGEN_MESON_ENABLE_FLAG = 'enabled'
+GIDOCGEN_MESON_DISABLE_FLAG = 'disabled'
+
+SRC_URI += " file://run-ptest"
+SRC_URI[archive.sha256sum] = "96ec98be7a91f6dde33636720e3da2ff6ecbb90e76ccaa49497f31a6855a490e"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
+PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native"
+PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Currently it's not possible to disable gettext in Meson, so we need to force
+# this back on.
+USE_NLS:class-native = "yes"
diff --git a/poky/meta/recipes-gnome/libdazzle/libdazzle_3.40.0.bb b/poky/meta/recipes-gnome/libdazzle/libdazzle_3.40.0.bb
deleted file mode 100644
index ff9088a..0000000
--- a/poky/meta/recipes-gnome/libdazzle/libdazzle_3.40.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "The libdazzle library is a companion library to GObject and Gtk+."
-DESCRIPTION = "A wide range of components from utilities for GIO, widgets for \
-GTK+, an animation framework, state machines, paneling and high-performance \
-counters are included."
-LICENSE = "GPLv3+"
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/libdazzle"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/libdazzle/issues"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase upstream-version-is-even vala features_check gobject-introspection
-
-DEPENDS = "glib-2.0-native glib-2.0 gtk+3"
-
-SRC_URI[archive.sha256sum] = "dba99a7e65fa6662c012b306e5d0f99ff3b466a46059ea7aa0104aaf65ce4ba5"
-
-GIR_MESON_OPTION = 'with_introspection'
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
diff --git a/poky/meta/recipes-gnome/libdazzle/libdazzle_3.42.0.bb b/poky/meta/recipes-gnome/libdazzle/libdazzle_3.42.0.bb
new file mode 100644
index 0000000..1b6109d
--- /dev/null
+++ b/poky/meta/recipes-gnome/libdazzle/libdazzle_3.42.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "The libdazzle library is a companion library to GObject and Gtk+."
+DESCRIPTION = "A wide range of components from utilities for GIO, widgets for \
+GTK+, an animation framework, state machines, paneling and high-performance \
+counters are included."
+LICENSE = "GPLv3+"
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/libdazzle"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/libdazzle/issues"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase upstream-version-is-even vala features_check gobject-introspection
+
+DEPENDS = "glib-2.0-native glib-2.0 gtk+3"
+
+SRC_URI[archive.sha256sum] = "eae67a3b3d9cce408ee9ec0ab6adecb83e52eb53f9bc93713f4df1e84da16925"
+
+GIR_MESON_OPTION = 'with_introspection'
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
diff --git a/poky/meta/recipes-gnome/libhandy/libhandy_1.2.3.bb b/poky/meta/recipes-gnome/libhandy/libhandy_1.2.3.bb
deleted file mode 100644
index 3921099..0000000
--- a/poky/meta/recipes-gnome/libhandy/libhandy_1.2.3.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "A library full of GTK+ widgets for mobile phones"
-DESCRIPTION = "Library with GTK widgets for mobile phones. Libhandy provides \
-GTK widgets and GObjects to ease developing applications for mobile phones. \
-It was developed by Purism (and used by several official GNOME projects) \
-to extend Gtk by providing mobile-friendly widgets and make the creation of \
-responsive apps easier."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/libhandy"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/libhandy/-/issues"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "git://gitlab.gnome.org/GNOME/libhandy.git;protocol=https;branch=libhandy-1-2"
-SRCREV = "e9ca4ac4b134bbd6ab91b6f916a915192fd3a465"
-S = "${WORKDIR}/git"
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-GTKDOC_MESON_OPTION = 'gtk_doc'
-
-inherit meson gobject-introspection vala gettext gtk-doc features_check
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-DEPENDS += "gtk+3"
-
-PACKAGES =+ "${PN}-examples"
-FILES:${PN}-examples = "${bindir}"
diff --git a/poky/meta/recipes-gnome/libhandy/libhandy_1.4.0.bb b/poky/meta/recipes-gnome/libhandy/libhandy_1.4.0.bb
new file mode 100644
index 0000000..39ee2aa
--- /dev/null
+++ b/poky/meta/recipes-gnome/libhandy/libhandy_1.4.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "A library full of GTK+ widgets for mobile phones"
+DESCRIPTION = "Library with GTK widgets for mobile phones. Libhandy provides \
+GTK widgets and GObjects to ease developing applications for mobile phones. \
+It was developed by Purism (and used by several official GNOME projects) \
+to extend Gtk by providing mobile-friendly widgets and make the creation of \
+responsive apps easier."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/libhandy"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/libhandy/-/issues"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://gitlab.gnome.org/GNOME/libhandy.git;protocol=https"
+SRCREV = "f8626427acebfa08b2b4ee1166d51e416d3d7407"
+S = "${WORKDIR}/git"
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GTKDOC_MESON_OPTION = 'gtk_doc'
+
+inherit meson gobject-introspection vala gettext gtk-doc features_check
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+DEPENDS += "gtk+3"
+
+PACKAGES =+ "${PN}-examples"
+FILES:${PN}-examples = "${bindir}"
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/0001-Auto-detect-Bsymbolic-fixes-configure-on-macOS.patch b/poky/meta/recipes-gnome/librsvg/librsvg/0001-Auto-detect-Bsymbolic-fixes-configure-on-macOS.patch
deleted file mode 100644
index 954bb60..0000000
--- a/poky/meta/recipes-gnome/librsvg/librsvg/0001-Auto-detect-Bsymbolic-fixes-configure-on-macOS.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From b99891e31eb6ce550e7e1cb2ca592095b3050a93 Mon Sep 17 00:00:00 2001
-From: Brion Vibber <brion@pobox.com>
-Date: Sun, 25 Feb 2018 18:42:36 -0800
-Subject: Auto-detect -Bsymbolic, fixes configure on macOS
-
-The -Bsymbolic linker option is ELF-specific, and was breaking
-configure on macOS unless --disable-Bsymbolic was explicitly passed.
-
-Switching the behavior from requiring -Bsymbolic to be available
-by default to just warning and continuing on without.
-
-Fixes https://gitlab.gnome.org/GNOME/librsvg/issues/211
-
-Upstream-Status: Backport
-Signed-off-by: Adrian Bunk <bunk@stusta.de>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 15b26b2d..9f8dce29 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -216,7 +216,7 @@ AM_CONDITIONAL([ENABLE_PIXBUF_LOADER],[test "$enable_pixbuf_loader" = "yes"])
- AC_ARG_ENABLE([Bsymbolic],
-   [AS_HELP_STRING([--disable-Bsymbolic],
-                   [disable linking with -Bsymbolic])],
--  [],[enable_Bsymbolic=yes])
-+  [enable_Bsymbolic=no],[enable_Bsymbolic=auto])
- 
- BSYMBOLIC_LDFLAG=
- if test "$enable_Bsymbolic" != "no"; then
--- 
-2.20.1
-
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/0001-Makefile.am-pass-rust-target-to-cargo-also-when-not-.patch b/poky/meta/recipes-gnome/librsvg/librsvg/0001-Makefile.am-pass-rust-target-to-cargo-also-when-not-.patch
new file mode 100644
index 0000000..d7487c2
--- /dev/null
+++ b/poky/meta/recipes-gnome/librsvg/librsvg/0001-Makefile.am-pass-rust-target-to-cargo-also-when-not-.patch
@@ -0,0 +1,47 @@
+From 95b2cd0169cb1b4694c2bce67169b1aa1d5e2be0 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 21 Sep 2021 16:27:14 +0200
+Subject: [PATCH] Makefile.am: pass rust target to cargo also when not cross
+ compiling
+
+Otherwise oe-core's native build doesn't work either.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ Makefile.am  | 2 --
+ configure.ac | 4 +---
+ 2 files changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index e93714e..effe5d3 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -137,9 +137,7 @@ else
+ CARGO_RELEASE_ARGS=--release
+ endif
+ 
+-if CROSS_COMPILING
+ CARGO_TARGET_ARGS=--target=$(RUST_TARGET)
+-endif
+ 
+ CARGO_VERBOSE = $(cargo_verbose_$(V))
+ cargo_verbose_ = $(cargo_verbose_$(AM_DEFAULT_VERBOSITY))
+diff --git a/configure.ac b/configure.ac
+index 41590ca..84cd56b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -255,9 +255,7 @@ AC_ARG_VAR(RUST_TARGET, [Set rust target (default=$host)])
+ : ${RUST_TARGET:=$host}
+ 
+ AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = xyes])
+-AS_IF([test "x$cross_compiling" = "xyes"], [
+-	RUST_TARGET_SUBDIR="$RUST_TARGET/$RUST_TARGET_SUBDIR"
+-])
++RUST_TARGET_SUBDIR="$RUST_TARGET/$RUST_TARGET_SUBDIR"
+ AC_SUBST([RUST_TARGET_SUBDIR])
+ 
+ dnl ===========================================================================
+-- 
+2.20.1
+
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/0001-Remove-non-reproducible-SRCDIR.patch b/poky/meta/recipes-gnome/librsvg/librsvg/0001-Remove-non-reproducible-SRCDIR.patch
deleted file mode 100644
index 75fc7f9..0000000
--- a/poky/meta/recipes-gnome/librsvg/librsvg/0001-Remove-non-reproducible-SRCDIR.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From bea5156cd7e7122715b26c769c35928141a1da2c Mon Sep 17 00:00:00 2001
-From: Joshua Watt <JPEWhacker@gmail.com>
-Date: Mon, 18 Nov 2019 14:46:34 -0600
-Subject: [PATCH] Remove non-reproducible SRCDIR
-
-Removes SRCDIR as the prefix for finding the test font. This wouldn't
-work anyway, since that path is not present on the target.
-
-This patch is specific to OE, since it appears that this entire method
-of testing was removed when upstream was re-written in rust
-
-Upstream-Status: Inappropriate [OE-specific, no longer present upstream]
-Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
----
- rsvg-cairo-draw.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/rsvg-cairo-draw.c b/rsvg-cairo-draw.c
-index caa9104..cfb7ed2 100644
---- a/rsvg-cairo-draw.c
-+++ b/rsvg-cairo-draw.c
-@@ -398,7 +398,7 @@ set_font_options_for_testing (PangoContext *context)
- static void
- create_font_config_for_testing (RsvgCairoRender *render)
- {
--    const char *font_path = SRCDIR "/tests/resources/LiberationSans-Regular.ttf";
-+    const char *font_path = "/tests/resources/LiberationSans-Regular.ttf";
- 
-     if (render->font_config_for_testing != NULL)
-         return;
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/0001-crossbeam-utils-check-only-the-architecture-not-the-.patch b/poky/meta/recipes-gnome/librsvg/librsvg/0001-crossbeam-utils-check-only-the-architecture-not-the-.patch
new file mode 100644
index 0000000..0c1cf59
--- /dev/null
+++ b/poky/meta/recipes-gnome/librsvg/librsvg/0001-crossbeam-utils-check-only-the-architecture-not-the-.patch
@@ -0,0 +1,143 @@
+From 70557b217644901daaf9d8ef793f5e84c937762e Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 5 Oct 2021 23:41:59 +0200
+Subject: [PATCH] crossbeam-utils: check only the architecture, not the whole
+ target string
+
+There can be custom targets in use, and it's not possible to make a list
+of them; for the check only the first item in the target string is actually
+relevant (the architecture of the target).
+
+Upstream-Status: Pending [needs an upstream ticket and possibly a rework of list generator script]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ vendor/crossbeam-utils/.cargo-checksum.json |  4 +-
+ vendor/crossbeam-utils/build.rs             |  8 ++-
+ vendor/crossbeam-utils/no_atomic.rs         | 78 ++++++++-------------
+ 3 files changed, 38 insertions(+), 52 deletions(-)
+
+--- a/vendor/crossbeam-utils/.cargo-checksum.json
++++ b/vendor/crossbeam-utils/.cargo-checksum.json
+@@ -1 +1,3 @@
+-{"files":{"CHANGELOG.md":"5242f1740c65509c465c9a36326d344722facff5f5e58dd064f7b77806b83a46","Cargo.toml":"ac35a7b8ccb16f1ab256951576537aa4179a316c068929c2acef89e0adc12319","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"dfa9fbed47c344c134a63c84b7c0e4651baeac1554b7b3266d0e38643743fc33","benches/atomic_cell.rs":"c927eb3cd1e5ecc4b91adbc3bde98af15ffab4086190792ba64d5cde0e24df3d","build.rs":"68cfc4be02429834a19411fba29cb1cb52c841f03ac8104d1bae59a8b2184f9c","no_atomic.rs":"a2621c1b029c614fb0ab8e3f5cda2e839df88d90d26133181c1b901965f7eec4","src/atomic/atomic_cell.rs":"1a3a1e073340317b5ce7a94e29c6a87db89ff7e00da6b92cb3c0339364c3b084","src/atomic/consume.rs":"7a7736fcd64f6473dfea7653559ffc5e1a2a234df43835f8aa8734862145ac15","src/atomic/mod.rs":"7f6afd5bd0da1f7b51765ab04da4e5f683588ac2d23506e61bf7007bb1e61ba2","src/atomic/seq_lock.rs":"27182e6b87a9db73c5f6831759f8625f9fcdec3c2828204c444aef04f427735a","src/atomic/seq_lock_wide.rs":"9888dd03116bb89ca36d4ab8d5a0b5032107a2983a7eb8024454263b09080088","src/backoff.rs":"7cc7754e15f69b52e92a70d4f49d1bc274693455a0933a2d7eb0605806566af3","src/cache_padded.rs":"6a512698115ad0d5a5b163dbd7a83247e1f1c146c4a30f3fc74b952e3b767b59","src/lib.rs":"6f1bcf157abe06ad8458a53e865bf8efab9fad4a9424790147cee8fefb3795d8","src/sync/mod.rs":"59986f559a8f170a4b3247ab2eea2460b09809d87c8110ed88e4e7103d3519dc","src/sync/parker.rs":"ba8f75bff31b8be9275808e8f393e71cc682dfc1109ceccb12f69a3700cff5be","src/sync/sharded_lock.rs":"14be659744918d0b27db24c56b41c618b0f0484b6761da46561023d96c4c120f","src/sync/wait_group.rs":"32e946a7581c55f8aa9904527b92b177c538fa0cf7cbcfa1d1f25990582cb6ea","src/thread.rs":"0eb5ec1d3c1b40600d88eb70539d14276e32307f5bed2b679f50f6a20777a01e","tests/atomic_cell.rs":"6c9453384ecbbe76f8b97b62f022d478d3a76b4eae1e960f49790970f5d52158","tests/cache_padded.rs":"1bfaff8354c8184e1ee1f902881ca9400b60effb273b0d3f752801a483d2b66d","tests/parker.rs":"6def4721287d9d70b1cfd63ebb34e1c83fbb3376edbad2bc8aac6ef69dd99d20","tests/sharded_lock.rs":"726025ce6351fb56ed629d5a56bdf6e833b7afc5dedfa08de0b056c726b6c26d","tests/thread.rs":"9a7d7d3028c552fd834c68598b04a1cc252a816bc20ab62cec060d6cd09cab10","tests/wait_group.rs":"ad8f0cdfed31f9594a2e0737234d418f8b924d784a4db8d7e469deab8c95f5f8"},"package":"d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"}
+\ No newline at end of file
++{"files":{"CHANGELOG.md":"5242f1740c65509c465c9a36326d344722facff5f5e58dd064f7b77806b83a46","Cargo.toml":"ac35a7b8ccb16f1ab256951576537aa4179a316c068929c2acef89e0adc12319","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"dfa9fbed47c344c134a63c84b7c0e4651baeac1554b7b3266d0e38643743fc33","benches/atomic_cell.rs":"c927eb3cd1e5ecc4b91adbc3bde98af15ffab4086190792ba64d5cde0e24df3d",
++"build.rs":"15c1a41a88373231cbc17c7de5ade07c6098455af9cdeef81b576f37ed923354",
++"no_atomic.rs":"dcbd845deda197b13361238a6aab60b6d8124fb588fd0b33740e127441db3f1a","src/atomic/atomic_cell.rs":"1a3a1e073340317b5ce7a94e29c6a87db89ff7e00da6b92cb3c0339364c3b084","src/atomic/consume.rs":"7a7736fcd64f6473dfea7653559ffc5e1a2a234df43835f8aa8734862145ac15","src/atomic/mod.rs":"7f6afd5bd0da1f7b51765ab04da4e5f683588ac2d23506e61bf7007bb1e61ba2","src/atomic/seq_lock.rs":"27182e6b87a9db73c5f6831759f8625f9fcdec3c2828204c444aef04f427735a","src/atomic/seq_lock_wide.rs":"9888dd03116bb89ca36d4ab8d5a0b5032107a2983a7eb8024454263b09080088","src/backoff.rs":"7cc7754e15f69b52e92a70d4f49d1bc274693455a0933a2d7eb0605806566af3","src/cache_padded.rs":"6a512698115ad0d5a5b163dbd7a83247e1f1c146c4a30f3fc74b952e3b767b59","src/lib.rs":"6f1bcf157abe06ad8458a53e865bf8efab9fad4a9424790147cee8fefb3795d8","src/sync/mod.rs":"59986f559a8f170a4b3247ab2eea2460b09809d87c8110ed88e4e7103d3519dc","src/sync/parker.rs":"ba8f75bff31b8be9275808e8f393e71cc682dfc1109ceccb12f69a3700cff5be","src/sync/sharded_lock.rs":"14be659744918d0b27db24c56b41c618b0f0484b6761da46561023d96c4c120f","src/sync/wait_group.rs":"32e946a7581c55f8aa9904527b92b177c538fa0cf7cbcfa1d1f25990582cb6ea","src/thread.rs":"0eb5ec1d3c1b40600d88eb70539d14276e32307f5bed2b679f50f6a20777a01e","tests/atomic_cell.rs":"6c9453384ecbbe76f8b97b62f022d478d3a76b4eae1e960f49790970f5d52158","tests/cache_padded.rs":"1bfaff8354c8184e1ee1f902881ca9400b60effb273b0d3f752801a483d2b66d","tests/parker.rs":"6def4721287d9d70b1cfd63ebb34e1c83fbb3376edbad2bc8aac6ef69dd99d20","tests/sharded_lock.rs":"726025ce6351fb56ed629d5a56bdf6e833b7afc5dedfa08de0b056c726b6c26d","tests/thread.rs":"9a7d7d3028c552fd834c68598b04a1cc252a816bc20ab62cec060d6cd09cab10","tests/wait_group.rs":"ad8f0cdfed31f9594a2e0737234d418f8b924d784a4db8d7e469deab8c95f5f8"},"package":"d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"}
+--- a/vendor/crossbeam-utils/build.rs
++++ b/vendor/crossbeam-utils/build.rs
+@@ -20,17 +20,19 @@ fn main() {
+         }
+     };
+ 
++    let target_arch = target.split('-').next().unwrap_or_default();
++
+     // Note that this is `no_*`, not `has_*`. This allows treating
+     // `cfg(target_has_atomic = "ptr")` as true when the build script doesn't
+     // run. This is needed for compatibility with non-cargo build systems that
+     // don't run the build script.
+-    if NO_ATOMIC_CAS.contains(&&*target) {
++    if NO_ATOMIC_CAS.contains(&&*target_arch) {
+         println!("cargo:rustc-cfg=crossbeam_no_atomic_cas");
+     }
+-    if NO_ATOMIC.contains(&&*target) {
++    if NO_ATOMIC.contains(&&*target_arch) {
+         println!("cargo:rustc-cfg=crossbeam_no_atomic");
+         println!("cargo:rustc-cfg=crossbeam_no_atomic_64");
+-    } else if NO_ATOMIC_64.contains(&&*target) {
++    } else if NO_ATOMIC_64.contains(&&*target_arch) {
+         println!("cargo:rustc-cfg=crossbeam_no_atomic_64");
+     } else {
+         // Otherwise, assuming `"max-atomic-width" == 64`.
+--- a/vendor/crossbeam-utils/no_atomic.rs
++++ b/vendor/crossbeam-utils/no_atomic.rs
+@@ -2,58 +2,41 @@
+ // It is not intended for manual editing.
+ 
+ const NO_ATOMIC_CAS: &[&str] = &[
+-    "avr-unknown-gnu-atmega328",
+-    "msp430-none-elf",
+-    "riscv32i-unknown-none-elf",
+-    "riscv32imc-unknown-none-elf",
+-    "thumbv4t-none-eabi",
+-    "thumbv6m-none-eabi",
++    "avr",
++    "msp430",
++    "riscv32i",
++    "riscv32imc",
++    "thumbv4t",
++    "thumbv6m",
+ ];
+ #[allow(dead_code)]
+ const NO_ATOMIC_64: &[&str] = &[
+-    "arm-linux-androideabi",
+-    "armebv7r-none-eabi",
+-    "armebv7r-none-eabihf",
+-    "armv4t-unknown-linux-gnueabi",
+-    "armv5te-unknown-linux-gnueabi",
+-    "armv5te-unknown-linux-musleabi",
+-    "armv5te-unknown-linux-uclibceabi",
+-    "armv7r-none-eabi",
+-    "armv7r-none-eabihf",
+-    "hexagon-unknown-linux-musl",
+-    "mips-unknown-linux-gnu",
+-    "mips-unknown-linux-musl",
+-    "mips-unknown-linux-uclibc",
+-    "mipsel-unknown-linux-gnu",
+-    "mipsel-unknown-linux-musl",
+-    "mipsel-unknown-linux-uclibc",
+-    "mipsel-unknown-none",
+-    "mipsisa32r6-unknown-linux-gnu",
+-    "mipsisa32r6el-unknown-linux-gnu",
+-    "powerpc-unknown-linux-gnu",
+-    "powerpc-unknown-linux-gnuspe",
+-    "powerpc-unknown-linux-musl",
+-    "powerpc-unknown-netbsd",
+-    "powerpc-unknown-openbsd",
+-    "powerpc-wrs-vxworks",
+-    "powerpc-wrs-vxworks-spe",
+-    "riscv32gc-unknown-linux-gnu",
+-    "riscv32gc-unknown-linux-musl",
+-    "riscv32imac-unknown-none-elf",
+-    "thumbv7em-none-eabi",
+-    "thumbv7em-none-eabihf",
+-    "thumbv7m-none-eabi",
+-    "thumbv8m.base-none-eabi",
+-    "thumbv8m.main-none-eabi",
+-    "thumbv8m.main-none-eabihf",
+-    "mipsel-sony-psp",
+-    "thumbv4t-none-eabi",
+-    "thumbv6m-none-eabi",
++    "arm",
++    "armebv7r",
++    "armv4t",
++    "armv5te",
++    "armv7r",
++    "hexagon",
++    "mips",
++    "mipsel",
++    "mipsisa32r6",
++    "mipsisa32r6el",
++    "powerpc",
++    "riscv32",
++    "riscv32gc",
++    "riscv32imac",
++    "thumbv7em",
++    "thumbv7m",
++    "thumbv8m.base",
++    "thumbv8m.main",
++    "mipsel",
++    "thumbv4t",
++    "thumbv6m",
+ ];
+ #[allow(dead_code)]
+ const NO_ATOMIC: &[&str] = &[
+-    "avr-unknown-gnu-atmega328",
+-    "msp430-none-elf",
+-    "riscv32i-unknown-none-elf",
+-    "riscv32imc-unknown-none-elf",
++    "avr",
++    "msp430",
++    "riscv32i",
++    "riscv32imc",
+ ];
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch b/poky/meta/recipes-gnome/librsvg/librsvg/0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch
new file mode 100644
index 0000000..849dd98
--- /dev/null
+++ b/poky/meta/recipes-gnome/librsvg/librsvg/0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch
@@ -0,0 +1,53 @@
+From 6d1f0740b111e86e99dcaf0222f3d1d67d3bf1e6 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 21 Sep 2021 16:54:23 +0200
+Subject: [PATCH] system-deps/src/lib.rs: do not probe into harcoded list of
+ targets
+
+Oe-core defines custom targets, and this probe fails.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ vendor/system-deps/.cargo-checksum.json |  2 +-
+ vendor/system-deps/src/lib.rs           | 16 +---------------
+ 2 files changed, 2 insertions(+), 16 deletions(-)
+
+diff --git a/vendor/system-deps/.cargo-checksum.json b/vendor/system-deps/.cargo-checksum.json
+index ecebb94..30d594e 100644
+--- a/vendor/system-deps/.cargo-checksum.json
++++ b/vendor/system-deps/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"56ab5070dc9019b039c5e9904bb466b0879c33a7f69dd030b97abab321b7cc04","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3fe7396637bf9233908f41c6001cfcb00a379225e06e36e508c8b3d7264a8aae","src/lib.rs":"015518f4337d80249d12c7e6c55e9063705a0b8805ebf46a445c89253edc5de0","src/metadata.rs":"4c8d6ac2c88646a5b97ecb50ed44b65e5b2865cce6897add85b29ca2ae08c2bb","src/test.rs":"1ec48d1e443a0a4ac8035a2b60ff0321543aa2fa998fee72cf7762a936bf5f8c","src/tests/testanotherlib.pc":"bb4fd942324e6d49ce3becd827aa5c948d1924ca6681904a3695c19b1424eb3c","src/tests/testdata.pc":"43f481e989c03674fed5ef78c6420b3f8d36a2ce001928d86c418d1844acd5e7","src/tests/testlib-2.0.pc":"152eb0c70c14c3d948118408f3d1fd3bb7531b02aa792db85bd957f7db90b45b","src/tests/testlib-3.0.pc":"cd39c2ef88f6828c9291150cc4b624e769abef484674eaebaa4f67979501315f","src/tests/testlib.pc":"75c0d8a5345f65794f583c83e1cf0dbf3385af6e6abea1d61bb86eef707a52db","src/tests/toml-missing-file/no-cargo-toml-here":"6ab4da4b56f15315df6538610cfcd2ba3d0f9a7a8414678ff00ab5a78f7d41fa"},"package":"480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6"}
+\ No newline at end of file
++{"files":{"Cargo.toml":"56ab5070dc9019b039c5e9904bb466b0879c33a7f69dd030b97abab321b7cc04","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3fe7396637bf9233908f41c6001cfcb00a379225e06e36e508c8b3d7264a8aae","src/lib.rs":"594e5f14180590adc9ea0a8ba1cc35f9a8a260322d08de3037efac3ce1dc729b","src/metadata.rs":"4c8d6ac2c88646a5b97ecb50ed44b65e5b2865cce6897add85b29ca2ae08c2bb","src/test.rs":"1ec48d1e443a0a4ac8035a2b60ff0321543aa2fa998fee72cf7762a936bf5f8c","src/tests/testanotherlib.pc":"bb4fd942324e6d49ce3becd827aa5c948d1924ca6681904a3695c19b1424eb3c","src/tests/testdata.pc":"43f481e989c03674fed5ef78c6420b3f8d36a2ce001928d86c418d1844acd5e7","src/tests/testlib-2.0.pc":"152eb0c70c14c3d948118408f3d1fd3bb7531b02aa792db85bd957f7db90b45b","src/tests/testlib-3.0.pc":"cd39c2ef88f6828c9291150cc4b624e769abef484674eaebaa4f67979501315f","src/tests/testlib.pc":"75c0d8a5345f65794f583c83e1cf0dbf3385af6e6abea1d61bb86eef707a52db","src/tests/toml-missing-file/no-cargo-toml-here":"6ab4da4b56f15315df6538610cfcd2ba3d0f9a7a8414678ff00ab5a78f7d41fa"},"package":"480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6"}
+diff --git a/vendor/system-deps/src/lib.rs b/vendor/system-deps/src/lib.rs
+index a0d4f00..a666817 100644
+--- a/vendor/system-deps/src/lib.rs
++++ b/vendor/system-deps/src/lib.rs
+@@ -725,21 +725,7 @@ impl Config {
+     }
+ 
+     fn check_cfg(&self, cfg: &cfg_expr::Expression) -> Result<bool, Error> {
+-        use cfg_expr::{targets::get_builtin_target_by_triple, Predicate};
+-
+-        let target = self
+-            .env
+-            .get("TARGET")
+-            .expect("no TARGET env variable defined");
+-        let target = get_builtin_target_by_triple(&target)
+-            .unwrap_or_else(|| panic!("Invalid TARGET: {}", target));
+-
+-        let res = cfg.eval(|pred| match pred {
+-            Predicate::Target(tp) => Some(tp.matches(target)),
+-            _ => None,
+-        });
+-
+-        res.ok_or_else(|| Error::UnsupportedCfg(cfg.original().to_string()))
++        Ok(true)
+     }
+ }
+ 
+-- 
+2.20.1
+
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/0001-vendor-system-deps-sort-dependencies-before-using-th.patch b/poky/meta/recipes-gnome/librsvg/librsvg/0001-vendor-system-deps-sort-dependencies-before-using-th.patch
new file mode 100644
index 0000000..9fe1193
--- /dev/null
+++ b/poky/meta/recipes-gnome/librsvg/librsvg/0001-vendor-system-deps-sort-dependencies-before-using-th.patch
@@ -0,0 +1,53 @@
+From 9c20757ef8055535579ca3b7e69834e6917200e2 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 24 Sep 2021 16:20:40 +0200
+Subject: [PATCH] vendor/system-deps: sort dependencies before using them
+
+Otherwise they come out in non-reproducible order, leaking into
+target binaries.
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+
+
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ vendor/system-deps/.cargo-checksum.json | 3 ++-
+ vendor/system-deps/src/lib.rs           | 6 +++---
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/vendor/system-deps/.cargo-checksum.json b/vendor/system-deps/.cargo-checksum.json
+index aae6cb9..73155dc 100644
+--- a/vendor/system-deps/.cargo-checksum.json
++++ b/vendor/system-deps/.cargo-checksum.json
+@@ -1 +1,2 @@
+-{"files":{"Cargo.toml":"56ab5070dc9019b039c5e9904bb466b0879c33a7f69dd030b97abab321b7cc04","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3fe7396637bf9233908f41c6001cfcb00a379225e06e36e508c8b3d7264a8aae","src/lib.rs":"594e5f14180590adc9ea0a8ba1cc35f9a8a260322d08de3037efac3ce1dc729b","src/metadata.rs":"4c8d6ac2c88646a5b97ecb50ed44b65e5b2865cce6897add85b29ca2ae08c2bb","src/test.rs":"1ec48d1e443a0a4ac8035a2b60ff0321543aa2fa998fee72cf7762a936bf5f8c","src/tests/testanotherlib.pc":"bb4fd942324e6d49ce3becd827aa5c948d1924ca6681904a3695c19b1424eb3c","src/tests/testdata.pc":"43f481e989c03674fed5ef78c6420b3f8d36a2ce001928d86c418d1844acd5e7","src/tests/testlib-2.0.pc":"152eb0c70c14c3d948118408f3d1fd3bb7531b02aa792db85bd957f7db90b45b","src/tests/testlib-3.0.pc":"cd39c2ef88f6828c9291150cc4b624e769abef484674eaebaa4f67979501315f","src/tests/testlib.pc":"75c0d8a5345f65794f583c83e1cf0dbf3385af6e6abea1d61bb86eef707a52db","src/tests/toml-missing-file/no-cargo-toml-here":"6ab4da4b56f15315df6538610cfcd2ba3d0f9a7a8414678ff00ab5a78f7d41fa"},"package":"480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6"}
++{"files":{"Cargo.toml":"56ab5070dc9019b039c5e9904bb466b0879c33a7f69dd030b97abab321b7cc04","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3fe7396637bf9233908f41c6001cfcb00a379225e06e36e508c8b3d7264a8aae",
++"src/lib.rs":"d88593afdcb0cc3765bf427913ebb718ac6dcd9d62d1381d9afe44dddef3abbf","src/metadata.rs":"4c8d6ac2c88646a5b97ecb50ed44b65e5b2865cce6897add85b29ca2ae08c2bb","src/test.rs":"1ec48d1e443a0a4ac8035a2b60ff0321543aa2fa998fee72cf7762a936bf5f8c","src/tests/testanotherlib.pc":"bb4fd942324e6d49ce3becd827aa5c948d1924ca6681904a3695c19b1424eb3c","src/tests/testdata.pc":"43f481e989c03674fed5ef78c6420b3f8d36a2ce001928d86c418d1844acd5e7","src/tests/testlib-2.0.pc":"152eb0c70c14c3d948118408f3d1fd3bb7531b02aa792db85bd957f7db90b45b","src/tests/testlib-3.0.pc":"cd39c2ef88f6828c9291150cc4b624e769abef484674eaebaa4f67979501315f","src/tests/testlib.pc":"75c0d8a5345f65794f583c83e1cf0dbf3385af6e6abea1d61bb86eef707a52db","src/tests/toml-missing-file/no-cargo-toml-here":"6ab4da4b56f15315df6538610cfcd2ba3d0f9a7a8414678ff00ab5a78f7d41fa"},"package":"480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6"}
+diff --git a/vendor/system-deps/src/lib.rs b/vendor/system-deps/src/lib.rs
+index af14348..5f0682e 100644
+--- a/vendor/system-deps/src/lib.rs
++++ b/vendor/system-deps/src/lib.rs
+@@ -242,11 +242,11 @@ impl Dependencies {
+         self.libs.get(name)
+     }
+ 
+-    /// An iterator visiting all system dependencies in arbitrary order.
++    /// An iterator visiting all system dependencies in sorted (for build reproducibility) order.
+     /// The first element of the tuple is the name of the `toml` key defining the
+     /// dependency in `Cargo.toml`.
+     pub fn iter(&self) -> impl Iterator<Item = (&str, &Library)> {
+-        self.libs.iter().map(|(k, v)| (k.as_str(), v))
++        self.libs.iter().map(|(k, v)| (k.as_str(), v)).sorted_by_key(|x| x.0)
+     }
+ 
+     fn aggregate_str<F: Fn(&Library) -> &Vec<String>>(
+@@ -338,7 +338,7 @@ impl Dependencies {
+         let mut flags = BuildFlags::new();
+         let mut include_paths = Vec::new();
+ 
+-        for (name, lib) in self.libs.iter() {
++        for (name, lib) in self.libs.iter().sorted_by_key(|x| x.0) {
+             include_paths.extend(lib.include_paths.clone());
+ 
+             if lib.source == Source::EnvVariables
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch b/poky/meta/recipes-gnome/librsvg/librsvg/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch
new file mode 100644
index 0000000..c141e7a
--- /dev/null
+++ b/poky/meta/recipes-gnome/librsvg/librsvg/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch
@@ -0,0 +1,897 @@
+From 4e188d047dee33a19902113a3c90cdf1d8310a9e Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:05:06 +0200
+Subject: [PATCH 5/8] Add base definitions for riscv64 + musl - libc-0.2.93
+
+https://github.com/rust-lang/libc/pull/1994/commits/030a07761f61f3293d53752e60edbd330a9d718d
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ .../src/unix/linux_like/linux/musl/b64/mod.rs |   3 +
+ .../linux_like/linux/musl/b64/riscv64/mod.rs  | 867 ++++++++++++++++++
+ 2 files changed, 870 insertions(+)
+ create mode 100644 vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
+@@ -163,6 +163,9 @@ cfg_if! {
+     } else if #[cfg(any(target_arch = "x86_64"))] {
+         mod x86_64;
+         pub use self::x86_64::*;
++    } else if #[cfg(any(target_arch = "riscv64"))] {
++        mod riscv64;
++        pub use self::riscv64::*;
+     } else {
+         // Unknown target_arch
+     }
+--- /dev/null
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -0,0 +1,867 @@
++//! RISC-V-specific definitions for 64-bit linux-like values
++
++pub type c_char = u8;
++pub type c_long = i64;
++pub type c_ulong = u64;
++pub type wchar_t = ::c_int;
++
++pub type nlink_t = ::c_uint;
++pub type blksize_t = ::c_int;
++pub type fsblkcnt64_t = ::c_ulong;
++pub type fsfilcnt64_t = ::c_ulong;
++pub type suseconds_t = i64;
++pub type __u64 = ::c_ulonglong;
++
++s! {
++    pub struct pthread_attr_t {
++        __size: [::c_ulong; 7],
++    }
++
++    pub struct stat {
++        pub st_dev: ::dev_t,
++        pub st_ino: ::ino_t,
++        pub st_mode: ::mode_t,
++        pub st_nlink: ::nlink_t,
++        pub st_uid: ::uid_t,
++        pub st_gid: ::gid_t,
++        pub st_rdev: ::dev_t,
++        pub __pad1: ::dev_t,
++        pub st_size: ::off_t,
++        pub st_blksize: ::blksize_t,
++        pub __pad2: ::c_int,
++        pub st_blocks: ::blkcnt_t,
++        pub st_atime: ::time_t,
++        pub st_atime_nsec: ::c_long,
++        pub st_mtime: ::time_t,
++        pub st_mtime_nsec: ::c_long,
++        pub st_ctime: ::time_t,
++        pub st_ctime_nsec: ::c_long,
++        __unused: [::c_int; 2usize],
++    }
++
++    pub struct stat64 {
++        pub st_dev: ::dev_t,
++        pub st_ino: ::ino64_t,
++        pub st_mode: ::mode_t,
++        pub st_nlink: ::nlink_t,
++        pub st_uid: ::uid_t,
++        pub st_gid: ::gid_t,
++        pub st_rdev: ::dev_t,
++        pub __pad1: ::dev_t,
++        pub st_size: ::off64_t,
++        pub st_blksize: ::blksize_t,
++        pub __pad2: ::c_int,
++        pub st_blocks: ::blkcnt_t,
++        pub st_atime: ::time_t,
++        pub st_atime_nsec: ::c_long,
++        pub st_mtime: ::time_t,
++        pub st_mtime_nsec: ::c_long,
++        pub st_ctime: ::time_t,
++        pub st_ctime_nsec: ::c_long,
++        __unused: [::c_int; 2],
++    }
++
++    pub struct statfs {
++        pub f_type: ::c_long,
++        pub f_bsize: ::c_long,
++        pub f_blocks: ::fsblkcnt_t,
++        pub f_bfree: ::fsblkcnt_t,
++        pub f_bavail: ::fsblkcnt_t,
++        pub f_files: ::fsfilcnt_t,
++        pub f_ffree: ::fsfilcnt_t,
++        pub f_fsid: ::fsid_t,
++        pub f_namelen: ::c_long,
++        pub f_frsize: ::c_long,
++        pub f_flags: ::c_long,
++        pub f_spare: [::c_long; 4],
++    }
++
++    pub struct statfs64 {
++        pub f_type: ::c_long,
++        pub f_bsize: ::c_long,
++        pub f_blocks: ::fsblkcnt64_t,
++        pub f_bfree: ::fsblkcnt64_t,
++        pub f_bavail: ::fsblkcnt64_t,
++        pub f_files: ::fsfilcnt64_t,
++        pub f_ffree: ::fsfilcnt64_t,
++        pub f_fsid: ::fsid_t,
++        pub f_namelen: ::c_long,
++        pub f_frsize: ::c_long,
++        pub f_flags: ::c_long,
++        pub f_spare: [::c_long; 4],
++    }
++
++    pub struct statvfs {
++        pub f_bsize: ::c_ulong,
++        pub f_frsize: ::c_ulong,
++        pub f_blocks: ::fsblkcnt_t,
++        pub f_bfree: ::fsblkcnt_t,
++        pub f_bavail: ::fsblkcnt_t,
++        pub f_files: ::fsfilcnt_t,
++        pub f_ffree: ::fsfilcnt_t,
++        pub f_favail: ::fsfilcnt_t,
++        pub f_fsid: ::c_ulong,
++        pub f_flag: ::c_ulong,
++        pub f_namemax: ::c_ulong,
++        pub __f_spare: [::c_int; 6],
++    }
++
++    pub struct statvfs64 {
++        pub f_bsize: ::c_ulong,
++        pub f_frsize: ::c_ulong,
++        pub f_blocks: ::fsblkcnt64_t,
++        pub f_bfree: ::fsblkcnt64_t,
++        pub f_bavail: ::fsblkcnt64_t,
++        pub f_files: ::fsfilcnt64_t,
++        pub f_ffree: ::fsfilcnt64_t,
++        pub f_favail: ::fsfilcnt64_t,
++        pub f_fsid: ::c_ulong,
++        pub f_flag: ::c_ulong,
++        pub f_namemax: ::c_ulong,
++        pub __f_spare: [::c_int; 6],
++    }
++
++    pub struct siginfo_t {
++        pub si_signo: ::c_int,
++        pub si_errno: ::c_int,
++        pub si_code: ::c_int,
++        #[doc(hidden)]
++        #[deprecated(
++            since="0.2.54",
++            note="Please leave a comment on \
++                  https://github.com/rust-lang/libc/pull/1316 if you're using \
++                  this field"
++        )]
++        pub _pad: [::c_int; 29],
++        _align: [u64; 0],
++    }
++
++    pub struct stack_t {
++        pub ss_sp: *mut ::c_void,
++        pub ss_flags: ::c_int,
++        pub ss_size: ::size_t,
++    }
++
++    pub struct sigaction {
++        pub sa_sigaction: ::sighandler_t,
++        pub sa_mask: ::sigset_t,
++        pub sa_flags: ::c_int,
++        pub sa_restorer: ::Option<unsafe extern "C" fn()>,
++    }
++
++    pub struct ipc_perm {
++        pub __key: ::key_t,
++        pub uid: ::uid_t,
++        pub gid: ::gid_t,
++        pub cuid: ::uid_t,
++        pub cgid: ::gid_t,
++        pub mode: ::c_ushort,
++        __pad1: ::c_ushort,
++        pub __seq: ::c_ushort,
++        __pad2: ::c_ushort,
++        __unused1: ::c_ulong,
++        __unused2: ::c_ulong,
++    }
++
++    pub struct shmid_ds {
++        pub shm_perm: ::ipc_perm,
++        pub shm_segsz: ::size_t,
++        pub shm_atime: ::time_t,
++        pub shm_dtime: ::time_t,
++        pub shm_ctime: ::time_t,
++        pub shm_cpid: ::pid_t,
++        pub shm_lpid: ::pid_t,
++        pub shm_nattch: ::shmatt_t,
++        __unused5: ::c_ulong,
++        __unused6: ::c_ulong,
++    }
++
++    pub struct flock {
++        pub l_type: ::c_short,
++        pub l_whence: ::c_short,
++        pub l_start: ::off_t,
++        pub l_len: ::off_t,
++        pub l_pid: ::pid_t,
++    }
++
++    pub struct flock64 {
++        pub l_type: ::c_short,
++        pub l_whence: ::c_short,
++        pub l_start: ::off64_t,
++        pub l_len: ::off64_t,
++        pub l_pid: ::pid_t,
++    }
++
++    pub struct ip_mreqn {
++        pub imr_multiaddr: ::in_addr,
++        pub imr_address: ::in_addr,
++        pub imr_ifindex: ::c_int,
++    }
++}
++
++pub const POSIX_FADV_DONTNEED: ::c_int = 4;
++pub const POSIX_FADV_NOREUSE: ::c_int = 5;
++pub const VEOF: usize = 4;
++pub const RTLD_DEEPBIND: ::c_int = 0x8;
++pub const RTLD_GLOBAL: ::c_int = 0x100;
++pub const RTLD_NOLOAD: ::c_int = 0x4;
++pub const TIOCGSOFTCAR: ::c_ulong = 21529;
++pub const TIOCSSOFTCAR: ::c_ulong = 21530;
++pub const TIOCGRS485: ::c_int = 21550;
++pub const TIOCSRS485: ::c_int = 21551;
++pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
++pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
++pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
++pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
++pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
++pub const O_APPEND: ::c_int = 1024;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++pub const O_FSYNC: ::c_int = 1052672;
++pub const O_NOATIME: ::c_int = 262144;
++pub const O_PATH: ::c_int = 2097152;
++pub const O_TMPFILE: ::c_int = 4259840;
++pub const MAP_GROWSDOWN: ::c_int = 256;
++pub const EDEADLK: ::c_int = 35;
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EBADMSG: ::c_int = 74;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const EHWPOISON: ::c_int = 133;
++pub const ERFKILL: ::c_int = 132;
++pub const SOL_SOCKET: ::c_int = 1;
++pub const SO_REUSEADDR: ::c_int = 2;
++pub const SO_TYPE: ::c_int = 3;
++pub const SO_ERROR: ::c_int = 4;
++pub const SO_DONTROUTE: ::c_int = 5;
++pub const SO_BROADCAST: ::c_int = 6;
++pub const SO_SNDBUF: ::c_int = 7;
++pub const SO_RCVBUF: ::c_int = 8;
++pub const SO_SNDBUFFORCE: ::c_int = 32;
++pub const SO_RCVBUFFORCE: ::c_int = 33;
++pub const SO_KEEPALIVE: ::c_int = 9;
++pub const SO_OOBINLINE: ::c_int = 10;
++pub const SO_NO_CHECK: ::c_int = 11;
++pub const SO_PRIORITY: ::c_int = 12;
++pub const SO_LINGER: ::c_int = 13;
++pub const SO_BSDCOMPAT: ::c_int = 14;
++pub const SO_REUSEPORT: ::c_int = 15;
++pub const SO_PASSCRED: ::c_int = 16;
++pub const SO_PEERCRED: ::c_int = 17;
++pub const SO_RCVLOWAT: ::c_int = 18;
++pub const SO_SNDLOWAT: ::c_int = 19;
++pub const SO_RCVTIMEO: ::c_int = 20;
++pub const SO_SNDTIMEO: ::c_int = 21;
++pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
++pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
++pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
++pub const SO_BINDTODEVICE: ::c_int = 25;
++pub const SO_ATTACH_FILTER: ::c_int = 26;
++pub const SO_DETACH_FILTER: ::c_int = 27;
++pub const SO_GET_FILTER: ::c_int = 26;
++pub const SO_PEERNAME: ::c_int = 28;
++pub const SO_TIMESTAMP: ::c_int = 29;
++pub const SO_ACCEPTCONN: ::c_int = 30;
++pub const SO_PEERSEC: ::c_int = 31;
++pub const SO_PASSSEC: ::c_int = 34;
++pub const SO_TIMESTAMPNS: ::c_int = 35;
++pub const SCM_TIMESTAMPNS: ::c_int = 35;
++pub const SO_MARK: ::c_int = 36;
++pub const SO_PROTOCOL: ::c_int = 38;
++pub const SO_DOMAIN: ::c_int = 39;
++pub const SO_RXQ_OVFL: ::c_int = 40;
++pub const SO_WIFI_STATUS: ::c_int = 41;
++pub const SCM_WIFI_STATUS: ::c_int = 41;
++pub const SO_PEEK_OFF: ::c_int = 42;
++pub const SO_NOFCS: ::c_int = 43;
++pub const SO_LOCK_FILTER: ::c_int = 44;
++pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
++pub const SO_BUSY_POLL: ::c_int = 46;
++pub const SO_MAX_PACING_RATE: ::c_int = 47;
++pub const SO_BPF_EXTENSIONS: ::c_int = 48;
++pub const SO_INCOMING_CPU: ::c_int = 49;
++pub const SO_ATTACH_BPF: ::c_int = 50;
++pub const SO_DETACH_BPF: ::c_int = 27;
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SA_ONSTACK: ::c_int = 134217728;
++pub const SA_SIGINFO: ::c_int = 4;
++pub const SA_NOCLDWAIT: ::c_int = 2;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0;
++pub const SIG_UNBLOCK: ::c_int = 1;
++pub const POLLWRNORM: ::c_short = 256;
++pub const POLLWRBAND: ::c_short = 512;
++pub const O_ASYNC: ::c_int = 8192;
++pub const O_NDELAY: ::c_int = 2048;
++pub const PTRACE_DETACH: ::c_uint = 17;
++pub const EFD_NONBLOCK: ::c_int = 2048;
++pub const F_GETLK: ::c_int = 5;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETOWN: ::c_int = 8;
++pub const F_SETLK: ::c_int = 6;
++pub const F_SETLKW: ::c_int = 7;
++pub const F_RDLCK: ::c_int = 0;
++pub const F_WRLCK: ::c_int = 1;
++pub const F_UNLCK: ::c_int = 2;
++pub const F_OFD_GETLK: ::c_int = 36;
++pub const F_OFD_SETLK: ::c_int = 37;
++pub const F_OFD_SETLKW: ::c_int = 38;
++pub const SFD_NONBLOCK: ::c_int = 2048;
++pub const TCSANOW: ::c_int = 0;
++pub const TCSADRAIN: ::c_int = 1;
++pub const TCSAFLUSH: ::c_int = 2;
++pub const TIOCLINUX: ::c_ulong = 21532;
++pub const TIOCGSERIAL: ::c_ulong = 21534;
++pub const TIOCEXCL: ::c_ulong = 21516;
++pub const TIOCNXCL: ::c_ulong = 21517;
++pub const TIOCSCTTY: ::c_ulong = 21518;
++pub const TIOCSTI: ::c_ulong = 21522;
++pub const TIOCMGET: ::c_ulong = 21525;
++pub const TIOCMBIS: ::c_ulong = 21526;
++pub const TIOCMBIC: ::c_ulong = 21527;
++pub const TIOCMSET: ::c_ulong = 21528;
++pub const TIOCCONS: ::c_ulong = 21533;
++pub const TIOCM_ST: ::c_int = 8;
++pub const TIOCM_SR: ::c_int = 16;
++pub const TIOCM_CTS: ::c_int = 32;
++pub const TIOCM_CAR: ::c_int = 64;
++pub const TIOCM_RNG: ::c_int = 128;
++pub const TIOCM_DSR: ::c_int = 256;
++pub const SFD_CLOEXEC: ::c_int = 524288;
++pub const NCCS: usize = 32;
++pub const O_TRUNC: ::c_int = 512;
++pub const O_CLOEXEC: ::c_int = 524288;
++pub const EBFONT: ::c_int = 59;
++pub const ENOSTR: ::c_int = 60;
++pub const ENODATA: ::c_int = 61;
++pub const ETIME: ::c_int = 62;
++pub const ENOSR: ::c_int = 63;
++pub const ENONET: ::c_int = 64;
++pub const ENOPKG: ::c_int = 65;
++pub const EREMOTE: ::c_int = 66;
++pub const ENOLINK: ::c_int = 67;
++pub const EADV: ::c_int = 68;
++pub const ESRMNT: ::c_int = 69;
++pub const ECOMM: ::c_int = 70;
++pub const EPROTO: ::c_int = 71;
++pub const EDOTDOT: ::c_int = 73;
++pub const SA_NODEFER: ::c_int = 1073741824;
++pub const SA_RESETHAND: ::c_int = -2147483648;
++pub const SA_RESTART: ::c_int = 268435456;
++pub const SA_NOCLDSTOP: ::c_int = 1;
++pub const EPOLL_CLOEXEC: ::c_int = 524288;
++pub const EFD_CLOEXEC: ::c_int = 524288;
++pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
++pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
++pub const O_DIRECT: ::c_int = 16384;
++pub const O_DIRECTORY: ::c_int = 65536;
++pub const O_NOFOLLOW: ::c_int = 131072;
++pub const MAP_HUGETLB: ::c_int = 262144;
++pub const MAP_LOCKED: ::c_int = 8192;
++pub const MAP_NORESERVE: ::c_int = 16384;
++pub const MAP_ANON: ::c_int = 32;
++pub const MAP_ANONYMOUS: ::c_int = 32;
++pub const MAP_DENYWRITE: ::c_int = 2048;
++pub const MAP_EXECUTABLE: ::c_int = 4096;
++pub const MAP_POPULATE: ::c_int = 32768;
++pub const MAP_NONBLOCK: ::c_int = 65536;
++pub const MAP_STACK: ::c_int = 131072;
++pub const MAP_SYNC : ::c_int = 0x080000;
++pub const EDEADLOCK: ::c_int = 35;
++pub const EUCLEAN: ::c_int = 117;
++pub const ENOTNAM: ::c_int = 118;
++pub const ENAVAIL: ::c_int = 119;
++pub const EISNAM: ::c_int = 120;
++pub const EREMOTEIO: ::c_int = 121;
++pub const FIOCLEX: ::c_ulong = 21585;
++pub const FIONCLEX: ::c_ulong = 21584;
++pub const FIONBIO: ::c_ulong = 21537;
++pub const MCL_CURRENT: ::c_int = 1;
++pub const MCL_FUTURE: ::c_int = 2;
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++pub const CBAUD: ::tcflag_t = 4111;
++pub const TAB1: ::tcflag_t = 2048;
++pub const TAB2: ::tcflag_t = 4096;
++pub const TAB3: ::tcflag_t = 6144;
++pub const CR1: ::tcflag_t = 512;
++pub const CR2: ::tcflag_t = 1024;
++pub const CR3: ::tcflag_t = 1536;
++pub const FF1: ::tcflag_t = 32768;
++pub const BS1: ::tcflag_t = 8192;
++pub const VT1: ::tcflag_t = 16384;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 1024;
++pub const IXOFF: ::tcflag_t = 4096;
++pub const ONLCR: ::tcflag_t = 4;
++pub const CSIZE: ::tcflag_t = 48;
++pub const CS6: ::tcflag_t = 16;
++pub const CS7: ::tcflag_t = 32;
++pub const CS8: ::tcflag_t = 48;
++pub const CSTOPB: ::tcflag_t = 64;
++pub const CREAD: ::tcflag_t = 128;
++pub const PARENB: ::tcflag_t = 256;
++pub const PARODD: ::tcflag_t = 512;
++pub const HUPCL: ::tcflag_t = 1024;
++pub const CLOCAL: ::tcflag_t = 2048;
++pub const ECHOKE: ::tcflag_t = 2048;
++pub const ECHOE: ::tcflag_t = 16;
++pub const ECHOK: ::tcflag_t = 32;
++pub const ECHONL: ::tcflag_t = 64;
++pub const ECHOPRT: ::tcflag_t = 1024;
++pub const ECHOCTL: ::tcflag_t = 512;
++pub const ISIG: ::tcflag_t = 1;
++pub const ICANON: ::tcflag_t = 2;
++pub const PENDIN: ::tcflag_t = 16384;
++pub const NOFLSH: ::tcflag_t = 128;
++pub const CIBAUD: ::tcflag_t = 269418496;
++pub const CBAUDEX: ::tcflag_t = 4096;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 2;
++pub const NLDLY: ::tcflag_t = 256;
++pub const CRDLY: ::tcflag_t = 1536;
++pub const TABDLY: ::tcflag_t = 6144;
++pub const BSDLY: ::tcflag_t = 8192;
++pub const FFDLY: ::tcflag_t = 32768;
++pub const VTDLY: ::tcflag_t = 16384;
++pub const XTABS: ::tcflag_t = 6144;
++pub const B0: ::speed_t = 0;
++pub const B50: ::speed_t = 1;
++pub const B75: ::speed_t = 2;
++pub const B110: ::speed_t = 3;
++pub const B134: ::speed_t = 4;
++pub const B150: ::speed_t = 5;
++pub const B200: ::speed_t = 6;
++pub const B300: ::speed_t = 7;
++pub const B600: ::speed_t = 8;
++pub const B1200: ::speed_t = 9;
++pub const B1800: ::speed_t = 10;
++pub const B2400: ::speed_t = 11;
++pub const B4800: ::speed_t = 12;
++pub const B9600: ::speed_t = 13;
++pub const B19200: ::speed_t = 14;
++pub const B38400: ::speed_t = 15;
++pub const EXTA: ::speed_t = 14;
++pub const EXTB: ::speed_t = 15;
++pub const B57600: ::speed_t = 4097;
++pub const B115200: ::speed_t = 4098;
++pub const B230400: ::speed_t = 4099;
++pub const B460800: ::speed_t = 4100;
++pub const B500000: ::speed_t = 4101;
++pub const B576000: ::speed_t = 4102;
++pub const B921600: ::speed_t = 4103;
++pub const B1000000: ::speed_t = 4104;
++pub const B1152000: ::speed_t = 4105;
++pub const B1500000: ::speed_t = 4106;
++pub const B2000000: ::speed_t = 4107;
++pub const B2500000: ::speed_t = 4108;
++pub const B3000000: ::speed_t = 4109;
++pub const B3500000: ::speed_t = 4110;
++pub const B4000000: ::speed_t = 4111;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 32768;
++pub const TOSTOP: ::tcflag_t = 256;
++pub const FLUSHO: ::tcflag_t = 4096;
++pub const EXTPROC: ::tcflag_t = 65536;
++pub const TCGETS: ::c_ulong = 21505;
++pub const TCSETS: ::c_ulong = 21506;
++pub const TCSETSW: ::c_ulong = 21507;
++pub const TCSETSF: ::c_ulong = 21508;
++pub const TCGETA: ::c_ulong = 21509;
++pub const TCSETA: ::c_ulong = 21510;
++pub const TCSETAW: ::c_ulong = 21511;
++pub const TCSETAF: ::c_ulong = 21512;
++pub const TCSBRK: ::c_ulong = 21513;
++pub const TCXONC: ::c_ulong = 21514;
++pub const TCFLSH: ::c_ulong = 21515;
++pub const TIOCINQ: ::c_ulong = 21531;
++pub const TIOCGPGRP: ::c_ulong = 21519;
++pub const TIOCSPGRP: ::c_ulong = 21520;
++pub const TIOCOUTQ: ::c_ulong = 21521;
++pub const TIOCGWINSZ: ::c_ulong = 21523;
++pub const TIOCSWINSZ: ::c_ulong = 21524;
++pub const FIONREAD: ::c_ulong = 21531;
++pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
++pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
++pub const SYS_read: ::c_long = 63;
++pub const SYS_write: ::c_long = 64;
++pub const SYS_close: ::c_long = 57;
++pub const SYS_fstat: ::c_long = 80;
++pub const SYS_lseek: ::c_long = 62;
++pub const SYS_mmap: ::c_long = 222;
++pub const SYS_mprotect: ::c_long = 226;
++pub const SYS_munmap: ::c_long = 215;
++pub const SYS_brk: ::c_long = 214;
++pub const SYS_rt_sigaction: ::c_long = 134;
++pub const SYS_rt_sigprocmask: ::c_long = 135;
++pub const SYS_rt_sigreturn: ::c_long = 139;
++pub const SYS_ioctl: ::c_long = 29;
++pub const SYS_pread64: ::c_long = 67;
++pub const SYS_pwrite64: ::c_long = 68;
++pub const SYS_readv: ::c_long = 65;
++pub const SYS_writev: ::c_long = 66;
++pub const SYS_sched_yield: ::c_long = 124;
++pub const SYS_mremap: ::c_long = 216;
++pub const SYS_msync: ::c_long = 227;
++pub const SYS_mincore: ::c_long = 232;
++pub const SYS_madvise: ::c_long = 233;
++pub const SYS_shmget: ::c_long = 194;
++pub const SYS_shmat: ::c_long = 196;
++pub const SYS_shmctl: ::c_long = 195;
++pub const SYS_dup: ::c_long = 23;
++pub const SYS_nanosleep: ::c_long = 101;
++pub const SYS_getitimer: ::c_long = 102;
++pub const SYS_setitimer: ::c_long = 103;
++pub const SYS_getpid: ::c_long = 172;
++pub const SYS_sendfile: ::c_long = 71;
++pub const SYS_socket: ::c_long = 198;
++pub const SYS_connect: ::c_long = 203;
++pub const SYS_accept: ::c_long = 202;
++pub const SYS_sendto: ::c_long = 206;
++pub const SYS_recvfrom: ::c_long = 207;
++pub const SYS_sendmsg: ::c_long = 211;
++pub const SYS_recvmsg: ::c_long = 212;
++pub const SYS_shutdown: ::c_long = 210;
++pub const SYS_bind: ::c_long = 200;
++pub const SYS_listen: ::c_long = 201;
++pub const SYS_getsockname: ::c_long = 204;
++pub const SYS_getpeername: ::c_long = 205;
++pub const SYS_socketpair: ::c_long = 199;
++pub const SYS_setsockopt: ::c_long = 208;
++pub const SYS_getsockopt: ::c_long = 209;
++pub const SYS_clone: ::c_long = 220;
++pub const SYS_execve: ::c_long = 221;
++pub const SYS_exit: ::c_long = 93;
++pub const SYS_wait4: ::c_long = 260;
++pub const SYS_kill: ::c_long = 129;
++pub const SYS_uname: ::c_long = 160;
++pub const SYS_semget: ::c_long = 190;
++pub const SYS_semop: ::c_long = 193;
++pub const SYS_semctl: ::c_long = 191;
++pub const SYS_shmdt: ::c_long = 197;
++pub const SYS_msgget: ::c_long = 186;
++pub const SYS_msgsnd: ::c_long = 189;
++pub const SYS_msgrcv: ::c_long = 188;
++pub const SYS_msgctl: ::c_long = 187;
++pub const SYS_fcntl: ::c_long = 25;
++pub const SYS_flock: ::c_long = 32;
++pub const SYS_fsync: ::c_long = 82;
++pub const SYS_fdatasync: ::c_long = 83;
++pub const SYS_truncate: ::c_long = 45;
++pub const SYS_ftruncate: ::c_long = 46;
++pub const SYS_getcwd: ::c_long = 17;
++pub const SYS_chdir: ::c_long = 49;
++pub const SYS_fchdir: ::c_long = 50;
++pub const SYS_fchmod: ::c_long = 52;
++pub const SYS_fchown: ::c_long = 55;
++pub const SYS_umask: ::c_long = 166;
++pub const SYS_gettimeofday: ::c_long = 169;
++pub const SYS_getrlimit: ::c_long = 163;
++pub const SYS_getrusage: ::c_long = 165;
++pub const SYS_sysinfo: ::c_long = 179;
++pub const SYS_times: ::c_long = 153;
++pub const SYS_ptrace: ::c_long = 117;
++pub const SYS_getuid: ::c_long = 174;
++pub const SYS_syslog: ::c_long = 116;
++pub const SYS_getgid: ::c_long = 176;
++pub const SYS_setuid: ::c_long = 146;
++pub const SYS_setgid: ::c_long = 144;
++pub const SYS_geteuid: ::c_long = 175;
++pub const SYS_getegid: ::c_long = 177;
++pub const SYS_setpgid: ::c_long = 154;
++pub const SYS_getppid: ::c_long = 173;
++pub const SYS_setsid: ::c_long = 157;
++pub const SYS_setreuid: ::c_long = 145;
++pub const SYS_setregid: ::c_long = 143;
++pub const SYS_getgroups: ::c_long = 158;
++pub const SYS_setgroups: ::c_long = 159;
++pub const SYS_setresuid: ::c_long = 147;
++pub const SYS_getresuid: ::c_long = 148;
++pub const SYS_setresgid: ::c_long = 149;
++pub const SYS_getresgid: ::c_long = 150;
++pub const SYS_getpgid: ::c_long = 155;
++pub const SYS_setfsuid: ::c_long = 151;
++pub const SYS_setfsgid: ::c_long = 152;
++pub const SYS_getsid: ::c_long = 156;
++pub const SYS_capget: ::c_long = 90;
++pub const SYS_capset: ::c_long = 91;
++pub const SYS_rt_sigpending: ::c_long = 136;
++pub const SYS_rt_sigtimedwait: ::c_long = 137;
++pub const SYS_rt_sigqueueinfo: ::c_long = 138;
++pub const SYS_rt_sigsuspend: ::c_long = 133;
++pub const SYS_sigaltstack: ::c_long = 132;
++pub const SYS_personality: ::c_long = 92;
++pub const SYS_statfs: ::c_long = 43;
++pub const SYS_fstatfs: ::c_long = 44;
++pub const SYS_getpriority: ::c_long = 141;
++pub const SYS_setpriority: ::c_long = 140;
++pub const SYS_sched_setparam: ::c_long = 118;
++pub const SYS_sched_getparam: ::c_long = 121;
++pub const SYS_sched_setscheduler: ::c_long = 119;
++pub const SYS_sched_getscheduler: ::c_long = 120;
++pub const SYS_sched_get_priority_max: ::c_long = 125;
++pub const SYS_sched_get_priority_min: ::c_long = 126;
++pub const SYS_sched_rr_get_interval: ::c_long = 127;
++pub const SYS_mlock: ::c_long = 228;
++pub const SYS_munlock: ::c_long = 229;
++pub const SYS_mlockall: ::c_long = 230;
++pub const SYS_munlockall: ::c_long = 231;
++pub const SYS_vhangup: ::c_long = 58;
++pub const SYS_pivot_root: ::c_long = 41;
++pub const SYS_prctl: ::c_long = 167;
++pub const SYS_adjtimex: ::c_long = 171;
++pub const SYS_setrlimit: ::c_long = 164;
++pub const SYS_chroot: ::c_long = 51;
++pub const SYS_sync: ::c_long = 81;
++pub const SYS_acct: ::c_long = 89;
++pub const SYS_settimeofday: ::c_long = 170;
++pub const SYS_mount: ::c_long = 40;
++pub const SYS_umount2: ::c_long = 39;
++pub const SYS_swapon: ::c_long = 224;
++pub const SYS_swapoff: ::c_long = 225;
++pub const SYS_reboot: ::c_long = 142;
++pub const SYS_sethostname: ::c_long = 161;
++pub const SYS_setdomainname: ::c_long = 162;
++pub const SYS_init_module: ::c_long = 105;
++pub const SYS_delete_module: ::c_long = 106;
++pub const SYS_quotactl: ::c_long = 60;
++pub const SYS_nfsservctl: ::c_long = 42;
++pub const SYS_gettid: ::c_long = 178;
++pub const SYS_readahead: ::c_long = 213;
++pub const SYS_setxattr: ::c_long = 5;
++pub const SYS_lsetxattr: ::c_long = 6;
++pub const SYS_fsetxattr: ::c_long = 7;
++pub const SYS_getxattr: ::c_long = 8;
++pub const SYS_lgetxattr: ::c_long = 9;
++pub const SYS_fgetxattr: ::c_long = 10;
++pub const SYS_listxattr: ::c_long = 11;
++pub const SYS_llistxattr: ::c_long = 12;
++pub const SYS_flistxattr: ::c_long = 13;
++pub const SYS_removexattr: ::c_long = 14;
++pub const SYS_lremovexattr: ::c_long = 15;
++pub const SYS_fremovexattr: ::c_long = 16;
++pub const SYS_tkill: ::c_long = 130;
++pub const SYS_futex: ::c_long = 98;
++pub const SYS_sched_setaffinity: ::c_long = 122;
++pub const SYS_sched_getaffinity: ::c_long = 123;
++pub const SYS_io_setup: ::c_long = 0;
++pub const SYS_io_destroy: ::c_long = 1;
++pub const SYS_io_getevents: ::c_long = 4;
++pub const SYS_io_submit: ::c_long = 2;
++pub const SYS_io_cancel: ::c_long = 3;
++pub const SYS_lookup_dcookie: ::c_long = 18;
++pub const SYS_remap_file_pages: ::c_long = 234;
++pub const SYS_getdents64: ::c_long = 61;
++pub const SYS_set_tid_address: ::c_long = 96;
++pub const SYS_restart_syscall: ::c_long = 128;
++pub const SYS_semtimedop: ::c_long = 192;
++pub const SYS_fadvise64: ::c_long = 223;
++pub const SYS_timer_create: ::c_long = 107;
++pub const SYS_timer_settime: ::c_long = 110;
++pub const SYS_timer_gettime: ::c_long = 108;
++pub const SYS_timer_getoverrun: ::c_long = 109;
++pub const SYS_timer_delete: ::c_long = 111;
++pub const SYS_clock_settime: ::c_long = 112;
++pub const SYS_clock_gettime: ::c_long = 113;
++pub const SYS_clock_getres: ::c_long = 114;
++pub const SYS_clock_nanosleep: ::c_long = 115;
++pub const SYS_exit_group: ::c_long = 94;
++pub const SYS_epoll_ctl: ::c_long = 21;
++pub const SYS_tgkill: ::c_long = 131;
++pub const SYS_mbind: ::c_long = 235;
++pub const SYS_set_mempolicy: ::c_long = 237;
++pub const SYS_get_mempolicy: ::c_long = 236;
++pub const SYS_mq_open: ::c_long = 180;
++pub const SYS_mq_unlink: ::c_long = 181;
++pub const SYS_mq_timedsend: ::c_long = 182;
++pub const SYS_mq_timedreceive: ::c_long = 183;
++pub const SYS_mq_notify: ::c_long = 184;
++pub const SYS_mq_getsetattr: ::c_long = 185;
++pub const SYS_kexec_load: ::c_long = 104;
++pub const SYS_waitid: ::c_long = 95;
++pub const SYS_add_key: ::c_long = 217;
++pub const SYS_request_key: ::c_long = 218;
++pub const SYS_keyctl: ::c_long = 219;
++pub const SYS_ioprio_set: ::c_long = 30;
++pub const SYS_ioprio_get: ::c_long = 31;
++pub const SYS_inotify_add_watch: ::c_long = 27;
++pub const SYS_inotify_rm_watch: ::c_long = 28;
++pub const SYS_migrate_pages: ::c_long = 238;
++pub const SYS_openat: ::c_long = 56;
++pub const SYS_mkdirat: ::c_long = 34;
++pub const SYS_mknodat: ::c_long = 33;
++pub const SYS_fchownat: ::c_long = 54;
++pub const SYS_newfstatat: ::c_long = 79;
++pub const SYS_unlinkat: ::c_long = 35;
++pub const SYS_linkat: ::c_long = 37;
++pub const SYS_symlinkat: ::c_long = 36;
++pub const SYS_readlinkat: ::c_long = 78;
++pub const SYS_fchmodat: ::c_long = 53;
++pub const SYS_faccessat: ::c_long = 48;
++pub const SYS_pselect6: ::c_long = 72;
++pub const SYS_ppoll: ::c_long = 73;
++pub const SYS_unshare: ::c_long = 97;
++pub const SYS_set_robust_list: ::c_long = 99;
++pub const SYS_get_robust_list: ::c_long = 100;
++pub const SYS_splice: ::c_long = 76;
++pub const SYS_tee: ::c_long = 77;
++pub const SYS_sync_file_range: ::c_long = 84;
++pub const SYS_vmsplice: ::c_long = 75;
++pub const SYS_move_pages: ::c_long = 239;
++pub const SYS_utimensat: ::c_long = 88;
++pub const SYS_epoll_pwait: ::c_long = 22;
++pub const SYS_timerfd_create: ::c_long = 85;
++pub const SYS_fallocate: ::c_long = 47;
++pub const SYS_timerfd_settime: ::c_long = 86;
++pub const SYS_timerfd_gettime: ::c_long = 87;
++pub const SYS_accept4: ::c_long = 242;
++pub const SYS_signalfd4: ::c_long = 74;
++pub const SYS_eventfd2: ::c_long = 19;
++pub const SYS_epoll_create1: ::c_long = 20;
++pub const SYS_dup3: ::c_long = 24;
++pub const SYS_pipe2: ::c_long = 59;
++pub const SYS_inotify_init1: ::c_long = 26;
++pub const SYS_preadv: ::c_long = 69;
++pub const SYS_pwritev: ::c_long = 70;
++pub const SYS_rt_tgsigqueueinfo: ::c_long = 240;
++pub const SYS_perf_event_open: ::c_long = 241;
++pub const SYS_recvmmsg: ::c_long = 243;
++pub const SYS_fanotify_init: ::c_long = 262;
++pub const SYS_fanotify_mark: ::c_long = 263;
++pub const SYS_prlimit64: ::c_long = 261;
++pub const SYS_name_to_handle_at: ::c_long = 264;
++pub const SYS_open_by_handle_at: ::c_long = 265;
++pub const SYS_clock_adjtime: ::c_long = 266;
++pub const SYS_syncfs: ::c_long = 267;
++pub const SYS_sendmmsg: ::c_long = 269;
++pub const SYS_setns: ::c_long = 268;
++pub const SYS_getcpu: ::c_long = 168;
++pub const SYS_process_vm_readv: ::c_long = 270;
++pub const SYS_process_vm_writev: ::c_long = 271;
++pub const SYS_kcmp: ::c_long = 272;
++pub const SYS_finit_module: ::c_long = 273;
++pub const SYS_sched_setattr: ::c_long = 274;
++pub const SYS_sched_getattr: ::c_long = 275;
++pub const SYS_renameat2: ::c_long = 276;
++pub const SYS_seccomp: ::c_long = 277;
++pub const SYS_getrandom: ::c_long = 278;
++pub const SYS_memfd_create: ::c_long = 279;
++pub const SYS_bpf: ::c_long = 280;
++pub const SYS_execveat: ::c_long = 281;
++pub const SYS_userfaultfd: ::c_long = 282;
++pub const SYS_membarrier: ::c_long = 283;
++pub const SYS_mlock2: ::c_long = 284;
++pub const SYS_copy_file_range: ::c_long = 285;
++pub const SYS_preadv2: ::c_long = 286;
++pub const SYS_pwritev2: ::c_long = 287;
++pub const SYS_pkey_mprotect: ::c_long = 288;
++pub const SYS_pkey_alloc: ::c_long = 289;
++pub const SYS_pkey_free: ::c_long = 290;
++pub const SYS_statx: ::c_long = 291;
++pub const SYS_pidfd_open: ::c_long = 434;
++pub const SYS_clone3: ::c_long = 435;
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch b/poky/meta/recipes-gnome/librsvg/librsvg/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch
new file mode 100644
index 0000000..e993c45
--- /dev/null
+++ b/poky/meta/recipes-gnome/librsvg/librsvg/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch
@@ -0,0 +1,26 @@
+From 4319893ebb7fca8bbd2bffc4bddb8d3ecdc08cc2 Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:07:21 +0200
+Subject: [PATCH 6/8] FIXUP: linux/musl/mod.rs: add riscv64 to b64 set -
+ libc-0.2.93
+
+https://github.com/rust-lang/libc/pull/1994/commits/30070c822be2ef399b2ba38cdc1d72ac694d65a3
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
+@@ -800,7 +800,8 @@ cfg_if! {
+                  target_arch = "aarch64",
+                  target_arch = "mips64",
+                  target_arch = "powerpc64",
+-                 target_arch = "s390x"))] {
++                 target_arch = "s390x",
++                 target_arch = "riscv64"))] {
+         mod b64;
+         pub use self::b64::*;
+     } else if #[cfg(any(target_arch = "x86",
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch b/poky/meta/recipes-gnome/librsvg/librsvg/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch
new file mode 100644
index 0000000..77e6b0a
--- /dev/null
+++ b/poky/meta/recipes-gnome/librsvg/librsvg/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch
@@ -0,0 +1,736 @@
+From 9d240d05c6e6620f36e4ddbcbcb5862fb3269d9f Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:09:17 +0200
+Subject: [PATCH 7/8] FIXUP Correct definitions to match musl - libc-0.2.93
+
+https://github.com/rust-lang/libc/pull/1994/commits/5f6a4d9745c79c81be63c708515ab116786554a3
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ .../linux_like/linux/musl/b64/riscv64/mod.rs  | 708 ++++++++----------
+ 1 file changed, 311 insertions(+), 397 deletions(-)
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -191,403 +191,8 @@ s! {
+         pub l_len: ::off64_t,
+         pub l_pid: ::pid_t,
+     }
+-
+-    pub struct ip_mreqn {
+-        pub imr_multiaddr: ::in_addr,
+-        pub imr_address: ::in_addr,
+-        pub imr_ifindex: ::c_int,
+-    }
+ }
+ 
+-pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+-pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+-pub const VEOF: usize = 4;
+-pub const RTLD_DEEPBIND: ::c_int = 0x8;
+-pub const RTLD_GLOBAL: ::c_int = 0x100;
+-pub const RTLD_NOLOAD: ::c_int = 0x4;
+-pub const TIOCGSOFTCAR: ::c_ulong = 21529;
+-pub const TIOCSSOFTCAR: ::c_ulong = 21530;
+-pub const TIOCGRS485: ::c_int = 21550;
+-pub const TIOCSRS485: ::c_int = 21551;
+-pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+-pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+-pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+-pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+-pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
+-pub const O_APPEND: ::c_int = 1024;
+-pub const O_CREAT: ::c_int = 64;
+-pub const O_EXCL: ::c_int = 128;
+-pub const O_NOCTTY: ::c_int = 256;
+-pub const O_NONBLOCK: ::c_int = 2048;
+-pub const O_SYNC: ::c_int = 1052672;
+-pub const O_RSYNC: ::c_int = 1052672;
+-pub const O_DSYNC: ::c_int = 4096;
+-pub const O_FSYNC: ::c_int = 1052672;
+-pub const O_NOATIME: ::c_int = 262144;
+-pub const O_PATH: ::c_int = 2097152;
+-pub const O_TMPFILE: ::c_int = 4259840;
+-pub const MAP_GROWSDOWN: ::c_int = 256;
+-pub const EDEADLK: ::c_int = 35;
+-pub const ENAMETOOLONG: ::c_int = 36;
+-pub const ENOLCK: ::c_int = 37;
+-pub const ENOSYS: ::c_int = 38;
+-pub const ENOTEMPTY: ::c_int = 39;
+-pub const ELOOP: ::c_int = 40;
+-pub const ENOMSG: ::c_int = 42;
+-pub const EIDRM: ::c_int = 43;
+-pub const ECHRNG: ::c_int = 44;
+-pub const EL2NSYNC: ::c_int = 45;
+-pub const EL3HLT: ::c_int = 46;
+-pub const EL3RST: ::c_int = 47;
+-pub const ELNRNG: ::c_int = 48;
+-pub const EUNATCH: ::c_int = 49;
+-pub const ENOCSI: ::c_int = 50;
+-pub const EL2HLT: ::c_int = 51;
+-pub const EBADE: ::c_int = 52;
+-pub const EBADR: ::c_int = 53;
+-pub const EXFULL: ::c_int = 54;
+-pub const ENOANO: ::c_int = 55;
+-pub const EBADRQC: ::c_int = 56;
+-pub const EBADSLT: ::c_int = 57;
+-pub const EMULTIHOP: ::c_int = 72;
+-pub const EOVERFLOW: ::c_int = 75;
+-pub const ENOTUNIQ: ::c_int = 76;
+-pub const EBADFD: ::c_int = 77;
+-pub const EBADMSG: ::c_int = 74;
+-pub const EREMCHG: ::c_int = 78;
+-pub const ELIBACC: ::c_int = 79;
+-pub const ELIBBAD: ::c_int = 80;
+-pub const ELIBSCN: ::c_int = 81;
+-pub const ELIBMAX: ::c_int = 82;
+-pub const ELIBEXEC: ::c_int = 83;
+-pub const EILSEQ: ::c_int = 84;
+-pub const ERESTART: ::c_int = 85;
+-pub const ESTRPIPE: ::c_int = 86;
+-pub const EUSERS: ::c_int = 87;
+-pub const ENOTSOCK: ::c_int = 88;
+-pub const EDESTADDRREQ: ::c_int = 89;
+-pub const EMSGSIZE: ::c_int = 90;
+-pub const EPROTOTYPE: ::c_int = 91;
+-pub const ENOPROTOOPT: ::c_int = 92;
+-pub const EPROTONOSUPPORT: ::c_int = 93;
+-pub const ESOCKTNOSUPPORT: ::c_int = 94;
+-pub const EOPNOTSUPP: ::c_int = 95;
+-pub const EPFNOSUPPORT: ::c_int = 96;
+-pub const EAFNOSUPPORT: ::c_int = 97;
+-pub const EADDRINUSE: ::c_int = 98;
+-pub const EADDRNOTAVAIL: ::c_int = 99;
+-pub const ENETDOWN: ::c_int = 100;
+-pub const ENETUNREACH: ::c_int = 101;
+-pub const ENETRESET: ::c_int = 102;
+-pub const ECONNABORTED: ::c_int = 103;
+-pub const ECONNRESET: ::c_int = 104;
+-pub const ENOBUFS: ::c_int = 105;
+-pub const EISCONN: ::c_int = 106;
+-pub const ENOTCONN: ::c_int = 107;
+-pub const ESHUTDOWN: ::c_int = 108;
+-pub const ETOOMANYREFS: ::c_int = 109;
+-pub const ETIMEDOUT: ::c_int = 110;
+-pub const ECONNREFUSED: ::c_int = 111;
+-pub const EHOSTDOWN: ::c_int = 112;
+-pub const EHOSTUNREACH: ::c_int = 113;
+-pub const EALREADY: ::c_int = 114;
+-pub const EINPROGRESS: ::c_int = 115;
+-pub const ESTALE: ::c_int = 116;
+-pub const EDQUOT: ::c_int = 122;
+-pub const ENOMEDIUM: ::c_int = 123;
+-pub const EMEDIUMTYPE: ::c_int = 124;
+-pub const ECANCELED: ::c_int = 125;
+-pub const ENOKEY: ::c_int = 126;
+-pub const EKEYEXPIRED: ::c_int = 127;
+-pub const EKEYREVOKED: ::c_int = 128;
+-pub const EKEYREJECTED: ::c_int = 129;
+-pub const EOWNERDEAD: ::c_int = 130;
+-pub const ENOTRECOVERABLE: ::c_int = 131;
+-pub const EHWPOISON: ::c_int = 133;
+-pub const ERFKILL: ::c_int = 132;
+-pub const SOL_SOCKET: ::c_int = 1;
+-pub const SO_REUSEADDR: ::c_int = 2;
+-pub const SO_TYPE: ::c_int = 3;
+-pub const SO_ERROR: ::c_int = 4;
+-pub const SO_DONTROUTE: ::c_int = 5;
+-pub const SO_BROADCAST: ::c_int = 6;
+-pub const SO_SNDBUF: ::c_int = 7;
+-pub const SO_RCVBUF: ::c_int = 8;
+-pub const SO_SNDBUFFORCE: ::c_int = 32;
+-pub const SO_RCVBUFFORCE: ::c_int = 33;
+-pub const SO_KEEPALIVE: ::c_int = 9;
+-pub const SO_OOBINLINE: ::c_int = 10;
+-pub const SO_NO_CHECK: ::c_int = 11;
+-pub const SO_PRIORITY: ::c_int = 12;
+-pub const SO_LINGER: ::c_int = 13;
+-pub const SO_BSDCOMPAT: ::c_int = 14;
+-pub const SO_REUSEPORT: ::c_int = 15;
+-pub const SO_PASSCRED: ::c_int = 16;
+-pub const SO_PEERCRED: ::c_int = 17;
+-pub const SO_RCVLOWAT: ::c_int = 18;
+-pub const SO_SNDLOWAT: ::c_int = 19;
+-pub const SO_RCVTIMEO: ::c_int = 20;
+-pub const SO_SNDTIMEO: ::c_int = 21;
+-pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
+-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
+-pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
+-pub const SO_BINDTODEVICE: ::c_int = 25;
+-pub const SO_ATTACH_FILTER: ::c_int = 26;
+-pub const SO_DETACH_FILTER: ::c_int = 27;
+-pub const SO_GET_FILTER: ::c_int = 26;
+-pub const SO_PEERNAME: ::c_int = 28;
+-pub const SO_TIMESTAMP: ::c_int = 29;
+-pub const SO_ACCEPTCONN: ::c_int = 30;
+-pub const SO_PEERSEC: ::c_int = 31;
+-pub const SO_PASSSEC: ::c_int = 34;
+-pub const SO_TIMESTAMPNS: ::c_int = 35;
+-pub const SCM_TIMESTAMPNS: ::c_int = 35;
+-pub const SO_MARK: ::c_int = 36;
+-pub const SO_PROTOCOL: ::c_int = 38;
+-pub const SO_DOMAIN: ::c_int = 39;
+-pub const SO_RXQ_OVFL: ::c_int = 40;
+-pub const SO_WIFI_STATUS: ::c_int = 41;
+-pub const SCM_WIFI_STATUS: ::c_int = 41;
+-pub const SO_PEEK_OFF: ::c_int = 42;
+-pub const SO_NOFCS: ::c_int = 43;
+-pub const SO_LOCK_FILTER: ::c_int = 44;
+-pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
+-pub const SO_BUSY_POLL: ::c_int = 46;
+-pub const SO_MAX_PACING_RATE: ::c_int = 47;
+-pub const SO_BPF_EXTENSIONS: ::c_int = 48;
+-pub const SO_INCOMING_CPU: ::c_int = 49;
+-pub const SO_ATTACH_BPF: ::c_int = 50;
+-pub const SO_DETACH_BPF: ::c_int = 27;
+-pub const SOCK_STREAM: ::c_int = 1;
+-pub const SOCK_DGRAM: ::c_int = 2;
+-pub const SA_ONSTACK: ::c_int = 134217728;
+-pub const SA_SIGINFO: ::c_int = 4;
+-pub const SA_NOCLDWAIT: ::c_int = 2;
+-pub const SIGTTIN: ::c_int = 21;
+-pub const SIGTTOU: ::c_int = 22;
+-pub const SIGXCPU: ::c_int = 24;
+-pub const SIGXFSZ: ::c_int = 25;
+-pub const SIGVTALRM: ::c_int = 26;
+-pub const SIGPROF: ::c_int = 27;
+-pub const SIGWINCH: ::c_int = 28;
+-pub const SIGCHLD: ::c_int = 17;
+-pub const SIGBUS: ::c_int = 7;
+-pub const SIGUSR1: ::c_int = 10;
+-pub const SIGUSR2: ::c_int = 12;
+-pub const SIGCONT: ::c_int = 18;
+-pub const SIGSTOP: ::c_int = 19;
+-pub const SIGTSTP: ::c_int = 20;
+-pub const SIGURG: ::c_int = 23;
+-pub const SIGIO: ::c_int = 29;
+-pub const SIGSYS: ::c_int = 31;
+-pub const SIGSTKFLT: ::c_int = 16;
+-pub const SIGPOLL: ::c_int = 29;
+-pub const SIGPWR: ::c_int = 30;
+-pub const SIG_SETMASK: ::c_int = 2;
+-pub const SIG_BLOCK: ::c_int = 0;
+-pub const SIG_UNBLOCK: ::c_int = 1;
+-pub const POLLWRNORM: ::c_short = 256;
+-pub const POLLWRBAND: ::c_short = 512;
+-pub const O_ASYNC: ::c_int = 8192;
+-pub const O_NDELAY: ::c_int = 2048;
+-pub const PTRACE_DETACH: ::c_uint = 17;
+-pub const EFD_NONBLOCK: ::c_int = 2048;
+-pub const F_GETLK: ::c_int = 5;
+-pub const F_GETOWN: ::c_int = 9;
+-pub const F_SETOWN: ::c_int = 8;
+-pub const F_SETLK: ::c_int = 6;
+-pub const F_SETLKW: ::c_int = 7;
+-pub const F_RDLCK: ::c_int = 0;
+-pub const F_WRLCK: ::c_int = 1;
+-pub const F_UNLCK: ::c_int = 2;
+-pub const F_OFD_GETLK: ::c_int = 36;
+-pub const F_OFD_SETLK: ::c_int = 37;
+-pub const F_OFD_SETLKW: ::c_int = 38;
+-pub const SFD_NONBLOCK: ::c_int = 2048;
+-pub const TCSANOW: ::c_int = 0;
+-pub const TCSADRAIN: ::c_int = 1;
+-pub const TCSAFLUSH: ::c_int = 2;
+-pub const TIOCLINUX: ::c_ulong = 21532;
+-pub const TIOCGSERIAL: ::c_ulong = 21534;
+-pub const TIOCEXCL: ::c_ulong = 21516;
+-pub const TIOCNXCL: ::c_ulong = 21517;
+-pub const TIOCSCTTY: ::c_ulong = 21518;
+-pub const TIOCSTI: ::c_ulong = 21522;
+-pub const TIOCMGET: ::c_ulong = 21525;
+-pub const TIOCMBIS: ::c_ulong = 21526;
+-pub const TIOCMBIC: ::c_ulong = 21527;
+-pub const TIOCMSET: ::c_ulong = 21528;
+-pub const TIOCCONS: ::c_ulong = 21533;
+-pub const TIOCM_ST: ::c_int = 8;
+-pub const TIOCM_SR: ::c_int = 16;
+-pub const TIOCM_CTS: ::c_int = 32;
+-pub const TIOCM_CAR: ::c_int = 64;
+-pub const TIOCM_RNG: ::c_int = 128;
+-pub const TIOCM_DSR: ::c_int = 256;
+-pub const SFD_CLOEXEC: ::c_int = 524288;
+-pub const NCCS: usize = 32;
+-pub const O_TRUNC: ::c_int = 512;
+-pub const O_CLOEXEC: ::c_int = 524288;
+-pub const EBFONT: ::c_int = 59;
+-pub const ENOSTR: ::c_int = 60;
+-pub const ENODATA: ::c_int = 61;
+-pub const ETIME: ::c_int = 62;
+-pub const ENOSR: ::c_int = 63;
+-pub const ENONET: ::c_int = 64;
+-pub const ENOPKG: ::c_int = 65;
+-pub const EREMOTE: ::c_int = 66;
+-pub const ENOLINK: ::c_int = 67;
+-pub const EADV: ::c_int = 68;
+-pub const ESRMNT: ::c_int = 69;
+-pub const ECOMM: ::c_int = 70;
+-pub const EPROTO: ::c_int = 71;
+-pub const EDOTDOT: ::c_int = 73;
+-pub const SA_NODEFER: ::c_int = 1073741824;
+-pub const SA_RESETHAND: ::c_int = -2147483648;
+-pub const SA_RESTART: ::c_int = 268435456;
+-pub const SA_NOCLDSTOP: ::c_int = 1;
+-pub const EPOLL_CLOEXEC: ::c_int = 524288;
+-pub const EFD_CLOEXEC: ::c_int = 524288;
+-pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+-pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+-pub const O_DIRECT: ::c_int = 16384;
+-pub const O_DIRECTORY: ::c_int = 65536;
+-pub const O_NOFOLLOW: ::c_int = 131072;
+-pub const MAP_HUGETLB: ::c_int = 262144;
+-pub const MAP_LOCKED: ::c_int = 8192;
+-pub const MAP_NORESERVE: ::c_int = 16384;
+-pub const MAP_ANON: ::c_int = 32;
+-pub const MAP_ANONYMOUS: ::c_int = 32;
+-pub const MAP_DENYWRITE: ::c_int = 2048;
+-pub const MAP_EXECUTABLE: ::c_int = 4096;
+-pub const MAP_POPULATE: ::c_int = 32768;
+-pub const MAP_NONBLOCK: ::c_int = 65536;
+-pub const MAP_STACK: ::c_int = 131072;
+-pub const MAP_SYNC : ::c_int = 0x080000;
+-pub const EDEADLOCK: ::c_int = 35;
+-pub const EUCLEAN: ::c_int = 117;
+-pub const ENOTNAM: ::c_int = 118;
+-pub const ENAVAIL: ::c_int = 119;
+-pub const EISNAM: ::c_int = 120;
+-pub const EREMOTEIO: ::c_int = 121;
+-pub const FIOCLEX: ::c_ulong = 21585;
+-pub const FIONCLEX: ::c_ulong = 21584;
+-pub const FIONBIO: ::c_ulong = 21537;
+-pub const MCL_CURRENT: ::c_int = 1;
+-pub const MCL_FUTURE: ::c_int = 2;
+-pub const SIGSTKSZ: ::size_t = 8192;
+-pub const MINSIGSTKSZ: ::size_t = 2048;
+-pub const CBAUD: ::tcflag_t = 4111;
+-pub const TAB1: ::tcflag_t = 2048;
+-pub const TAB2: ::tcflag_t = 4096;
+-pub const TAB3: ::tcflag_t = 6144;
+-pub const CR1: ::tcflag_t = 512;
+-pub const CR2: ::tcflag_t = 1024;
+-pub const CR3: ::tcflag_t = 1536;
+-pub const FF1: ::tcflag_t = 32768;
+-pub const BS1: ::tcflag_t = 8192;
+-pub const VT1: ::tcflag_t = 16384;
+-pub const VWERASE: usize = 14;
+-pub const VREPRINT: usize = 12;
+-pub const VSUSP: usize = 10;
+-pub const VSTART: usize = 8;
+-pub const VSTOP: usize = 9;
+-pub const VDISCARD: usize = 13;
+-pub const VTIME: usize = 5;
+-pub const IXON: ::tcflag_t = 1024;
+-pub const IXOFF: ::tcflag_t = 4096;
+-pub const ONLCR: ::tcflag_t = 4;
+-pub const CSIZE: ::tcflag_t = 48;
+-pub const CS6: ::tcflag_t = 16;
+-pub const CS7: ::tcflag_t = 32;
+-pub const CS8: ::tcflag_t = 48;
+-pub const CSTOPB: ::tcflag_t = 64;
+-pub const CREAD: ::tcflag_t = 128;
+-pub const PARENB: ::tcflag_t = 256;
+-pub const PARODD: ::tcflag_t = 512;
+-pub const HUPCL: ::tcflag_t = 1024;
+-pub const CLOCAL: ::tcflag_t = 2048;
+-pub const ECHOKE: ::tcflag_t = 2048;
+-pub const ECHOE: ::tcflag_t = 16;
+-pub const ECHOK: ::tcflag_t = 32;
+-pub const ECHONL: ::tcflag_t = 64;
+-pub const ECHOPRT: ::tcflag_t = 1024;
+-pub const ECHOCTL: ::tcflag_t = 512;
+-pub const ISIG: ::tcflag_t = 1;
+-pub const ICANON: ::tcflag_t = 2;
+-pub const PENDIN: ::tcflag_t = 16384;
+-pub const NOFLSH: ::tcflag_t = 128;
+-pub const CIBAUD: ::tcflag_t = 269418496;
+-pub const CBAUDEX: ::tcflag_t = 4096;
+-pub const VSWTC: usize = 7;
+-pub const OLCUC: ::tcflag_t = 2;
+-pub const NLDLY: ::tcflag_t = 256;
+-pub const CRDLY: ::tcflag_t = 1536;
+-pub const TABDLY: ::tcflag_t = 6144;
+-pub const BSDLY: ::tcflag_t = 8192;
+-pub const FFDLY: ::tcflag_t = 32768;
+-pub const VTDLY: ::tcflag_t = 16384;
+-pub const XTABS: ::tcflag_t = 6144;
+-pub const B0: ::speed_t = 0;
+-pub const B50: ::speed_t = 1;
+-pub const B75: ::speed_t = 2;
+-pub const B110: ::speed_t = 3;
+-pub const B134: ::speed_t = 4;
+-pub const B150: ::speed_t = 5;
+-pub const B200: ::speed_t = 6;
+-pub const B300: ::speed_t = 7;
+-pub const B600: ::speed_t = 8;
+-pub const B1200: ::speed_t = 9;
+-pub const B1800: ::speed_t = 10;
+-pub const B2400: ::speed_t = 11;
+-pub const B4800: ::speed_t = 12;
+-pub const B9600: ::speed_t = 13;
+-pub const B19200: ::speed_t = 14;
+-pub const B38400: ::speed_t = 15;
+-pub const EXTA: ::speed_t = 14;
+-pub const EXTB: ::speed_t = 15;
+-pub const B57600: ::speed_t = 4097;
+-pub const B115200: ::speed_t = 4098;
+-pub const B230400: ::speed_t = 4099;
+-pub const B460800: ::speed_t = 4100;
+-pub const B500000: ::speed_t = 4101;
+-pub const B576000: ::speed_t = 4102;
+-pub const B921600: ::speed_t = 4103;
+-pub const B1000000: ::speed_t = 4104;
+-pub const B1152000: ::speed_t = 4105;
+-pub const B1500000: ::speed_t = 4106;
+-pub const B2000000: ::speed_t = 4107;
+-pub const B2500000: ::speed_t = 4108;
+-pub const B3000000: ::speed_t = 4109;
+-pub const B3500000: ::speed_t = 4110;
+-pub const B4000000: ::speed_t = 4111;
+-pub const VEOL: usize = 11;
+-pub const VEOL2: usize = 16;
+-pub const VMIN: usize = 6;
+-pub const IEXTEN: ::tcflag_t = 32768;
+-pub const TOSTOP: ::tcflag_t = 256;
+-pub const FLUSHO: ::tcflag_t = 4096;
+-pub const EXTPROC: ::tcflag_t = 65536;
+-pub const TCGETS: ::c_ulong = 21505;
+-pub const TCSETS: ::c_ulong = 21506;
+-pub const TCSETSW: ::c_ulong = 21507;
+-pub const TCSETSF: ::c_ulong = 21508;
+-pub const TCGETA: ::c_ulong = 21509;
+-pub const TCSETA: ::c_ulong = 21510;
+-pub const TCSETAW: ::c_ulong = 21511;
+-pub const TCSETAF: ::c_ulong = 21512;
+-pub const TCSBRK: ::c_ulong = 21513;
+-pub const TCXONC: ::c_ulong = 21514;
+-pub const TCFLSH: ::c_ulong = 21515;
+-pub const TIOCINQ: ::c_ulong = 21531;
+-pub const TIOCGPGRP: ::c_ulong = 21519;
+-pub const TIOCSPGRP: ::c_ulong = 21520;
+-pub const TIOCOUTQ: ::c_ulong = 21521;
+-pub const TIOCGWINSZ: ::c_ulong = 21523;
+-pub const TIOCSWINSZ: ::c_ulong = 21524;
+-pub const FIONREAD: ::c_ulong = 21531;
+-pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+-pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+ pub const SYS_read: ::c_long = 63;
+ pub const SYS_write: ::c_long = 64;
+ pub const SYS_close: ::c_long = 57;
+@@ -863,5 +468,314 @@ pub const SYS_pkey_mprotect: ::c_long =
+ pub const SYS_pkey_alloc: ::c_long = 289;
+ pub const SYS_pkey_free: ::c_long = 290;
+ pub const SYS_statx: ::c_long = 291;
+-pub const SYS_pidfd_open: ::c_long = 434;
+-pub const SYS_clone3: ::c_long = 435;
++
++pub const O_APPEND: ::c_int = 1024;
++pub const O_DIRECT: ::c_int = 0x4000;
++pub const O_DIRECTORY: ::c_int = 0x10000;
++pub const O_LARGEFILE: ::c_int = 0;
++pub const O_NOFOLLOW: ::c_int = 0x20000;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++pub const O_ASYNC: ::c_int = 0x2000;
++
++pub const TIOCGRS485: ::c_int = 0x542E;
++pub const TIOCSRS485: ::c_int = 0x542F;
++
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EBADMSG: ::c_int = 74;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const EHWPOISON: ::c_int = 133;
++pub const ERFKILL: ::c_int = 132;
++
++pub const SA_ONSTACK: ::c_int = 0x08000000;
++pub const SA_SIGINFO: ::c_int = 0x00000004;
++pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
++
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0x000000;
++pub const SIG_UNBLOCK: ::c_int = 0x01;
++
++pub const F_GETLK: ::c_int = 5;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETLK: ::c_int = 6;
++pub const F_SETLKW: ::c_int = 7;
++pub const F_SETOWN: ::c_int = 8;
++pub const F_OFD_GETLK: ::c_int = 36;
++pub const F_OFD_SETLK: ::c_int = 37;
++pub const F_OFD_SETLKW: ::c_int = 38;
++
++pub const VEOF: usize = 4;
++
++pub const POLLWRNORM: ::c_short = 0x100;
++pub const POLLWRBAND: ::c_short = 0x200;
++
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SOL_SOCKET: ::c_int = 1;
++pub const SO_REUSEADDR: ::c_int = 2;
++pub const SO_TYPE: ::c_int = 3;
++pub const SO_ERROR: ::c_int = 4;
++pub const SO_DONTROUTE: ::c_int = 5;
++pub const SO_BROADCAST: ::c_int = 6;
++pub const SO_SNDBUF: ::c_int = 7;
++pub const SO_RCVBUF: ::c_int = 8;
++pub const SO_KEEPALIVE: ::c_int = 9;
++pub const SO_OOBINLINE: ::c_int = 10;
++pub const SO_NO_CHECK: ::c_int = 11;
++pub const SO_PRIORITY: ::c_int = 12;
++pub const SO_LINGER: ::c_int = 13;
++pub const SO_BSDCOMPAT: ::c_int = 14;
++pub const SO_REUSEPORT: ::c_int = 15;
++pub const SO_ACCEPTCONN: ::c_int = 30;
++pub const SO_SNDBUFFORCE: ::c_int = 32;
++pub const SO_RCVBUFFORCE: ::c_int = 33;
++pub const SO_PROTOCOL: ::c_int = 38;
++pub const SO_DOMAIN: ::c_int = 39;
++
++pub const MAP_ANON: ::c_int = 0x0020;
++pub const MAP_GROWSDOWN: ::c_int = 0x0100;
++pub const MAP_DENYWRITE: ::c_int = 0x0800;
++pub const MAP_EXECUTABLE: ::c_int = 0x01000;
++pub const MAP_LOCKED: ::c_int = 0x02000;
++pub const MAP_NORESERVE: ::c_int = 0x04000;
++pub const MAP_POPULATE: ::c_int = 0x08000;
++pub const MAP_NONBLOCK: ::c_int = 0x010000;
++pub const MAP_STACK: ::c_int = 0x020000;
++pub const MAP_HUGETLB: ::c_int = 0x040000;
++pub const MAP_SYNC : ::c_int = 0x080000;
++
++pub const RLIMIT_NLIMITS: ::c_int = 15;
++pub const TIOCINQ: ::c_int = ::FIONREAD;
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
++
++pub const FIOCLEX: ::c_int = 0x5451;
++pub const FIONCLEX: ::c_int = 0x5450;
++pub const FIONBIO: ::c_int = 0x5421;
++pub const EDEADLK: ::c_int = 35;
++pub const EDEADLOCK: ::c_int = EDEADLK;
++pub const SO_PASSCRED: ::c_int = 16;
++pub const SO_PEERCRED: ::c_int = 17;
++pub const SO_RCVLOWAT: ::c_int = 18;
++pub const SO_SNDLOWAT: ::c_int = 19;
++pub const SO_RCVTIMEO: ::c_int = 20;
++pub const SO_SNDTIMEO: ::c_int = 21;
++pub const EXTPROC: ::tcflag_t = 0x00010000;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 0x00008000;
++pub const TOSTOP: ::tcflag_t = 0x00000100;
++pub const FLUSHO: ::tcflag_t = 0x00001000;
++pub const TCGETS: ::c_int = 0x5401;
++pub const TCSETS: ::c_int = 0x5402;
++pub const TCSETSW: ::c_int = 0x5403;
++pub const TCSETSF: ::c_int = 0x5404;
++pub const TCGETA: ::c_int = 0x5405;
++pub const TCSETA: ::c_int = 0x5406;
++pub const TCSETAW: ::c_int = 0x5407;
++pub const TCSETAF: ::c_int = 0x5408;
++pub const TCSBRK: ::c_int = 0x5409;
++pub const TCXONC: ::c_int = 0x540A;
++pub const TCFLSH: ::c_int = 0x540B;
++pub const TIOCGSOFTCAR: ::c_int = 0x5419;
++pub const TIOCSSOFTCAR: ::c_int = 0x541A;
++pub const TIOCLINUX: ::c_int = 0x541C;
++pub const TIOCGSERIAL: ::c_int = 0x541E;
++pub const TIOCEXCL: ::c_int = 0x540C;
++pub const TIOCNXCL: ::c_int = 0x540D;
++pub const TIOCSCTTY: ::c_int = 0x540E;
++pub const TIOCGPGRP: ::c_int = 0x540F;
++pub const TIOCSPGRP: ::c_int = 0x5410;
++pub const TIOCOUTQ: ::c_int = 0x5411;
++pub const TIOCSTI: ::c_int = 0x5412;
++pub const TIOCGWINSZ: ::c_int = 0x5413;
++pub const TIOCSWINSZ: ::c_int = 0x5414;
++pub const TIOCMGET: ::c_int = 0x5415;
++pub const TIOCMBIS: ::c_int = 0x5416;
++pub const TIOCMBIC: ::c_int = 0x5417;
++pub const TIOCMSET: ::c_int = 0x5418;
++pub const FIONREAD: ::c_int = 0x541B;
++pub const TIOCCONS: ::c_int = 0x541D;
++
++pub const TIOCM_LE: ::c_int = 0x001;
++pub const TIOCM_DTR: ::c_int = 0x002;
++pub const TIOCM_RTS: ::c_int = 0x004;
++pub const TIOCM_ST: ::c_int = 0x008;
++pub const TIOCM_SR: ::c_int = 0x010;
++pub const TIOCM_CTS: ::c_int = 0x020;
++pub const TIOCM_CAR: ::c_int = 0x040;
++pub const TIOCM_RNG: ::c_int = 0x080;
++pub const TIOCM_DSR: ::c_int = 0x100;
++pub const TIOCM_CD: ::c_int = TIOCM_CAR;
++pub const TIOCM_RI: ::c_int = TIOCM_RNG;
++
++extern "C" {
++    pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
++}
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch b/poky/meta/recipes-gnome/librsvg/librsvg/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch
new file mode 100644
index 0000000..6c78d0c
--- /dev/null
+++ b/poky/meta/recipes-gnome/librsvg/librsvg/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch
@@ -0,0 +1,17 @@
+From 2b1c373f9a3341e8926d6be8d7cdcedc1fc6fca3 Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:19:24 +0200
+Subject: [PATCH 8/8] Update checksums for modified files for rust 1.54.0 and
+ libc-0.2.93
+
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ vendor/libc-0.2.93/.cargo-checksum.json | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/vendor/libc/.cargo-checksum.json
++++ b/vendor/libc/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"aad61c58f04e78be520769d8927ab4c121a6536f532b159be1b706550fcd0234","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"8e0e8d33cc9e7c25cde75c2b502420f943266a681024169f94084774b422681d","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"520300ff260d377930f2f456135ec9a3ac7740a949ce7bf5269c0dc60d56c0df","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"d4f7452c0fe720f3a961b918b74ec86d19cef33e6b4aac08efbbad6f6d818e09","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"6a4ce300da0d2b0db04b18548286603ffe4b47d679a41cf60f1902895894aa1f","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"46d5d061c7a74cbc09cbdfb3bee9a600867bf4e04c0e4d0ca6c817e6033b32e1","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"cc6878dd130c3f255418e4da74992ae9ba6a3cdb0530772de76c518077d3b12a","src/unix/bsd/apple/mod.rs":"e0ebe1040b8ff87c52d581f96234291a6380ebe3af3088c4f6ff748fbd7d2a7a","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"1466715589ed18b66789d60904e8258b20d7783a6f3bf72f775617bc0d9373d8","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"2a215bd6136b8617aacedf9be738ccee94da9d29b418e9a78101d6291c182352","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"6523af60c0e4937ad374003c1653e9e721f5b6f11572c747732f76522d07d034","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"0821543bf2073cb3dc46157e47140caa30704e062b23099d52bf80cb56e25321","src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"21416cad3e76f53d10d0c73840469290aa80c2d92c773307a1ca92485d3c0e13","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/mod.rs":"0ee5530ddde5690cdc6f91acca86ce74c37ec06886418c34b201c154fd2c9e41","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"c3a0111252e201c172b99e7d9cbee4cf088d3dd47995110e819f04276bccd198","src/unix/bsd/freebsdlike/mod.rs":"77763a8dfe2d31c78ee7c3e64001ceee6d4ba34cc77b7fd4fdde153e5abbbeb8","src/unix/bsd/mod.rs":"2fed08973739d7f6a7412b204724af64b1a915c712689c250cf9a08263ba05ff","src/unix/bsd/netbsdlike/mod.rs":"4e9da54e541773c7ad4cca9dade1df00f28f2fdac3f8df5957f4c74b7e082344","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"96edbcf448b89c991c9254c194232322dce69fb8050bab9f9741f5aecb2104ea","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"dd91931d373b7ecaf6e2de25adadee10d16fa9b12c2cbacdff3eb291e1ba36af","src/unix/bsd/netbsdlike/openbsd/mod.rs":"9a9878e70ee8765d95cb1b010e39d74004278ca6da58fb82354f69752a84c926","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"d31db31630289c85af3339dbe357998a21ca584cbae31607448fe2cf7675a4e1","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"912969bc1d59a6cec74de3140982b7f0b69e74d44936646587f1c8820be7c0fe","src/unix/haiku/native.rs":"44855f52906f607de137fc4baa8c6b1b9a26baaa666f25d5f7a7ec5e017c8be6","src/unix/haiku/x86_64.rs":"3ec3aeeb7ed208b8916f3e32d42bfd085ff5e16936a1a35d9a52789f043b7237","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"433c1530f602cc5ed26610c58055dde0c4ceea5e00150063b24ddc60768332a4","src/unix/linux_like/android/b32/mod.rs":"d971b98530a96f5892f98e1edc3133cf278d1b3939d77ab0a27a6323e0961715","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"8fe667d2b14abc5ac8aad32e16c3da24350471d8156eaea9ab4989f73dd9f9fc","src/unix/linux_like/android/b64/mod.rs":"d7bbbadafdb2cb2ff8e9cde3d89a03b9facaabb6b2d45705225d3ece1c5cce37","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"06b22dc184e85a988ab969c75cadc52b9878faeab0eb9d21215878c95fe07c19","src/unix/linux_like/android/mod.rs":"8688204b3236db28b66ff0f1de5320f47ec5c1ef5395dddcc9df025a8d78630a","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"6ef97140ca6fb24125fdd0aacb986ef785aa21993229660d7f703f8875ebfe49","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"ff1fe8fad4ea15d9bec3db25efcfcb4939190c5189f86cfa4d05825aa8c10956","src/unix/linux_like/linux/arch/mips/mod.rs":"e4a980b002105aaa057eb6568e1e2c6168ade5c00e13a31ef67e316ddffdb900","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"ded708124ee610267d011dee31fb02d1ec697c334aa822776ec95a7ddf6fc541","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"07adf9f4b96854062db518aaf08521fde0ad4a21a5c049efccba437bd97b2b5a","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"1cb5c0c9df3af2bbe131a91593583259fac9118931744c8435e197a394eb0462","src/unix/linux_like/linux/gnu/b32/mod.rs":"794dbcbae7dae8fd6b0b814573243197ceb532b56ef0772ad86b4b401478fcd9","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"ee5145a383386b716605a8d1ff3df212d418aae1aa1f37d2307d4f9cd1a08e99","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"1bcec269a8416ccc48a384ca5765eaaa23f30f39f32311f50008ef4eeadafb2f","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"5317dbf2323577b89370bbee3894882b89d8333176db4f7b271ddc2f036ef43c","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c3730792dabcc166d8fd22929ef2633d49bc626875382dfcd401e8e125fb7a84","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"68bcb71bbfccb4e8648948e494366d94767ce96f36daab9c1329375cdd32a459","src/unix/linux_like/linux/gnu/b64/mod.rs":"6336065423c26b59681fd2ce77f1117ea36af13e163fdadaefd108bd8191e8c8","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"5b982c41097f4f91adcb0968290afeccb27dce1695a261c964d34ef85df87cf4","src/unix/linux_like/linux/gnu/b64/s390x.rs":"a9484dfd3c7ca1174537957bef997c3ba7ea41989cdf61ede22b1bbc45a667bf","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"26fda11bdce99372c2c246e60866b56d98beb9fb49a2f6b69347ecfd03d18255","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"5a5ce7c5c92f60d8900dce63d363a38f3126aaf5be981710e172bec96ef95ac6","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"a040250bc2b4b2831ae2cad6f1abf3dc73e6015c4f570abf21350e220e898338","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"8f282fe98fe7fcdae158aad41b2a9e6130c130c7a041fe13919357bf7b548057","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"6255abe2ee04986832d12b7b2190589580f2a43e9bfb285b32b5747227f62727","src/unix/linux_like/linux/musl/b32/hexagon.rs":"a8811791809672be8338e6e27d1c4fcf383c2f26585be8bf9ab2923b219de032","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"b9e9ff42363ebbb884ddf6445129ec4164471df45846874fc08f5f458e659254","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"4592dc5f1f2fe888dfef85fa862d42d168e73a2c6f4fc052b58287d0f4d4ffcd","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"a19a8decfab185af3cebd34aae4b15082e7552be573904b8c1a3f0c0e493ef34","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"a73035c6d9b776f13b839008e15c04c2c53455571efd06664affcb047e457112","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d18abc0aeba2e26342bf3416a4dba0836db2bb0ee013b0a39629475cf8640289","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"e5a55525b42493923956d668f978fb45e22d51deea00ce5edbfddf76ff19c741","src/unix/linux_like/linux/musl/b64/s390x.rs":"03dfec6794d93cb31a7c52b2d53a0973755168f91f8fa437cc5dbd54882c8ee7","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"0dd168f5a6881f32e5239fb312b23cf137b800d0ff323286a92c8a2c382b5456","src/unix/linux_like/linux/musl/mod.rs":"55ccd71342276ccb4c441a4bc2772aebfd163af299669b658c6c8c6add331ec3","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"1e3bf809508b5872949136859bf48ddf58b7d24ae9f0b663e79f0efd1aaeb6a6","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"fa4102d9a596d90de604ce2962b0e64f184dfbf10552a4c3ecf28f12d4704379","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"a2877679fef0f14f54a89ccbc41fb02f0c25bf6e536f9eb2cb2fa437e1d3f739","src/unix/linux_like/linux/uclibc/mod.rs":"82d504d3aa12cb0f7933980f81c4708fa6e070d4c57efdf407f2de05b71bc06d","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"024eba5753e852dbdd212427351affe7e83f9916c1864bce414d7aa2618f192e","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"02e21c0550a423a3f6db0a0af6a0f37cf5937feb2562a490e0ad0e09a8d9fc77","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"0a97d43fdce7f9bd57a0b47d770867f4e234eba602adc9ef993ed02a182276f2","src/unix/mod.rs":"6b2b57833e37cd3231944696c8216eb587a2a68069346150cf321153eaf04d03","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/espidf/mod.rs":"c198cb4beccdab483be61c102da74dc51ac80f766797e33021f3110394ed5a3d","src/unix/newlib/mod.rs":"d7271c13748be08305d36f9af6f41f6950a7a1d6d4382149194a35d5fe2090de","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"267a413e63dbdcaed6e758f9a5c10bd00178ed76c7b3527e8e984341f617d3a5","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"7d8f47fd37880715b449723688aaee568785325a46f1c360a05bdca13252278e","src/unix/solarish/mod.rs":"080e0cf03b50874ba9d5082b314eabb0d253532dc4b13d8af095a0c78e0fba84","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/unix/solarish/x86_64.rs":"9d761573bdccbdd1ac61da571f7e96b5374df70241d9b72d45a069611f495085","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"aea3da66f2140f2a82dfc9c58f6e6531d2dd9c15ea696e0f95a0d4a2a187b5b6","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"2c945bce3ddd26bf20ff03fb4192c9c3f625f1308a479c5cb4bd4510a892629a","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"1cd9223293255b994814487e28d9979fb8ebef4538a236c1aa47fdc166a149cc","src/windows/msvc/mod.rs":"860dc98245039bc3aa5782ef2b5798d009ea6655bd27a63f244be2206d2cb47f","src/windows/msvc/x86_64.rs":"25d35a5ba8e19569a5bed573dcf8c82f7ce53da7c91941f9ceda6fe86cab1088","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6"}
+\ No newline at end of file
++{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"aad61c58f04e78be520769d8927ab4c121a6536f532b159be1b706550fcd0234","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"8e0e8d33cc9e7c25cde75c2b502420f943266a681024169f94084774b422681d","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"520300ff260d377930f2f456135ec9a3ac7740a949ce7bf5269c0dc60d56c0df","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"d4f7452c0fe720f3a961b918b74ec86d19cef33e6b4aac08efbbad6f6d818e09","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"6a4ce300da0d2b0db04b18548286603ffe4b47d679a41cf60f1902895894aa1f","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"46d5d061c7a74cbc09cbdfb3bee9a600867bf4e04c0e4d0ca6c817e6033b32e1","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"cc6878dd130c3f255418e4da74992ae9ba6a3cdb0530772de76c518077d3b12a","src/unix/bsd/apple/mod.rs":"e0ebe1040b8ff87c52d581f96234291a6380ebe3af3088c4f6ff748fbd7d2a7a","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"1466715589ed18b66789d60904e8258b20d7783a6f3bf72f775617bc0d9373d8","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"2a215bd6136b8617aacedf9be738ccee94da9d29b418e9a78101d6291c182352","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"6523af60c0e4937ad374003c1653e9e721f5b6f11572c747732f76522d07d034","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"0821543bf2073cb3dc46157e47140caa30704e062b23099d52bf80cb56e25321","src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"21416cad3e76f53d10d0c73840469290aa80c2d92c773307a1ca92485d3c0e13","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/mod.rs":"0ee5530ddde5690cdc6f91acca86ce74c37ec06886418c34b201c154fd2c9e41","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"c3a0111252e201c172b99e7d9cbee4cf088d3dd47995110e819f04276bccd198","src/unix/bsd/freebsdlike/mod.rs":"77763a8dfe2d31c78ee7c3e64001ceee6d4ba34cc77b7fd4fdde153e5abbbeb8","src/unix/bsd/mod.rs":"2fed08973739d7f6a7412b204724af64b1a915c712689c250cf9a08263ba05ff","src/unix/bsd/netbsdlike/mod.rs":"4e9da54e541773c7ad4cca9dade1df00f28f2fdac3f8df5957f4c74b7e082344","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"96edbcf448b89c991c9254c194232322dce69fb8050bab9f9741f5aecb2104ea","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"dd91931d373b7ecaf6e2de25adadee10d16fa9b12c2cbacdff3eb291e1ba36af","src/unix/bsd/netbsdlike/openbsd/mod.rs":"9a9878e70ee8765d95cb1b010e39d74004278ca6da58fb82354f69752a84c926","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"d31db31630289c85af3339dbe357998a21ca584cbae31607448fe2cf7675a4e1","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"912969bc1d59a6cec74de3140982b7f0b69e74d44936646587f1c8820be7c0fe","src/unix/haiku/native.rs":"44855f52906f607de137fc4baa8c6b1b9a26baaa666f25d5f7a7ec5e017c8be6","src/unix/haiku/x86_64.rs":"3ec3aeeb7ed208b8916f3e32d42bfd085ff5e16936a1a35d9a52789f043b7237","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"433c1530f602cc5ed26610c58055dde0c4ceea5e00150063b24ddc60768332a4","src/unix/linux_like/android/b32/mod.rs":"d971b98530a96f5892f98e1edc3133cf278d1b3939d77ab0a27a6323e0961715","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"8fe667d2b14abc5ac8aad32e16c3da24350471d8156eaea9ab4989f73dd9f9fc","src/unix/linux_like/android/b64/mod.rs":"d7bbbadafdb2cb2ff8e9cde3d89a03b9facaabb6b2d45705225d3ece1c5cce37","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"06b22dc184e85a988ab969c75cadc52b9878faeab0eb9d21215878c95fe07c19","src/unix/linux_like/android/mod.rs":"8688204b3236db28b66ff0f1de5320f47ec5c1ef5395dddcc9df025a8d78630a","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"6ef97140ca6fb24125fdd0aacb986ef785aa21993229660d7f703f8875ebfe49","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"ff1fe8fad4ea15d9bec3db25efcfcb4939190c5189f86cfa4d05825aa8c10956","src/unix/linux_like/linux/arch/mips/mod.rs":"e4a980b002105aaa057eb6568e1e2c6168ade5c00e13a31ef67e316ddffdb900","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"ded708124ee610267d011dee31fb02d1ec697c334aa822776ec95a7ddf6fc541","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"07adf9f4b96854062db518aaf08521fde0ad4a21a5c049efccba437bd97b2b5a","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"1cb5c0c9df3af2bbe131a91593583259fac9118931744c8435e197a394eb0462","src/unix/linux_like/linux/gnu/b32/mod.rs":"794dbcbae7dae8fd6b0b814573243197ceb532b56ef0772ad86b4b401478fcd9","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"ee5145a383386b716605a8d1ff3df212d418aae1aa1f37d2307d4f9cd1a08e99","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"1bcec269a8416ccc48a384ca5765eaaa23f30f39f32311f50008ef4eeadafb2f","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"5317dbf2323577b89370bbee3894882b89d8333176db4f7b271ddc2f036ef43c","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c3730792dabcc166d8fd22929ef2633d49bc626875382dfcd401e8e125fb7a84","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"68bcb71bbfccb4e8648948e494366d94767ce96f36daab9c1329375cdd32a459","src/unix/linux_like/linux/gnu/b64/mod.rs":"6336065423c26b59681fd2ce77f1117ea36af13e163fdadaefd108bd8191e8c8","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"5b982c41097f4f91adcb0968290afeccb27dce1695a261c964d34ef85df87cf4","src/unix/linux_like/linux/gnu/b64/s390x.rs":"a9484dfd3c7ca1174537957bef997c3ba7ea41989cdf61ede22b1bbc45a667bf","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"26fda11bdce99372c2c246e60866b56d98beb9fb49a2f6b69347ecfd03d18255","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"5a5ce7c5c92f60d8900dce63d363a38f3126aaf5be981710e172bec96ef95ac6","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"a040250bc2b4b2831ae2cad6f1abf3dc73e6015c4f570abf21350e220e898338","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"8f282fe98fe7fcdae158aad41b2a9e6130c130c7a041fe13919357bf7b548057","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"6255abe2ee04986832d12b7b2190589580f2a43e9bfb285b32b5747227f62727","src/unix/linux_like/linux/musl/b32/hexagon.rs":"a8811791809672be8338e6e27d1c4fcf383c2f26585be8bf9ab2923b219de032","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"b9e9ff42363ebbb884ddf6445129ec4164471df45846874fc08f5f458e659254","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"4592dc5f1f2fe888dfef85fa862d42d168e73a2c6f4fc052b58287d0f4d4ffcd","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"a19a8decfab185af3cebd34aae4b15082e7552be573904b8c1a3f0c0e493ef34","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"a73035c6d9b776f13b839008e15c04c2c53455571efd06664affcb047e457112","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d847206d9f2d594c8febe780a938cdccf40d985dafc11e90f235947735a09bac","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"e5a55525b42493923956d668f978fb45e22d51deea00ce5edbfddf76ff19c741","src/unix/linux_like/linux/musl/b64/s390x.rs":"03dfec6794d93cb31a7c52b2d53a0973755168f91f8fa437cc5dbd54882c8ee7","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"0dd168f5a6881f32e5239fb312b23cf137b800d0ff323286a92c8a2c382b5456","src/unix/linux_like/linux/musl/mod.rs":"ac08dd0891304a0e6f478a38bffa4fe8e6b27ad79094b2f7139c7a95082c3a18","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"1e3bf809508b5872949136859bf48ddf58b7d24ae9f0b663e79f0efd1aaeb6a6","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"fa4102d9a596d90de604ce2962b0e64f184dfbf10552a4c3ecf28f12d4704379","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"a2877679fef0f14f54a89ccbc41fb02f0c25bf6e536f9eb2cb2fa437e1d3f739","src/unix/linux_like/linux/uclibc/mod.rs":"82d504d3aa12cb0f7933980f81c4708fa6e070d4c57efdf407f2de05b71bc06d","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"024eba5753e852dbdd212427351affe7e83f9916c1864bce414d7aa2618f192e","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"02e21c0550a423a3f6db0a0af6a0f37cf5937feb2562a490e0ad0e09a8d9fc77","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"0a97d43fdce7f9bd57a0b47d770867f4e234eba602adc9ef993ed02a182276f2","src/unix/mod.rs":"6b2b57833e37cd3231944696c8216eb587a2a68069346150cf321153eaf04d03","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/espidf/mod.rs":"c198cb4beccdab483be61c102da74dc51ac80f766797e33021f3110394ed5a3d","src/unix/newlib/mod.rs":"d7271c13748be08305d36f9af6f41f6950a7a1d6d4382149194a35d5fe2090de","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"267a413e63dbdcaed6e758f9a5c10bd00178ed76c7b3527e8e984341f617d3a5","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"7d8f47fd37880715b449723688aaee568785325a46f1c360a05bdca13252278e","src/unix/solarish/mod.rs":"080e0cf03b50874ba9d5082b314eabb0d253532dc4b13d8af095a0c78e0fba84","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/unix/solarish/x86_64.rs":"9d761573bdccbdd1ac61da571f7e96b5374df70241d9b72d45a069611f495085","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"aea3da66f2140f2a82dfc9c58f6e6531d2dd9c15ea696e0f95a0d4a2a187b5b6","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"2c945bce3ddd26bf20ff03fb4192c9c3f625f1308a479c5cb4bd4510a892629a","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"1cd9223293255b994814487e28d9979fb8ebef4538a236c1aa47fdc166a149cc","src/windows/msvc/mod.rs":"860dc98245039bc3aa5782ef2b5798d009ea6655bd27a63f244be2206d2cb47f","src/windows/msvc/x86_64.rs":"25d35a5ba8e19569a5bed573dcf8c82f7ce53da7c91941f9ceda6fe86cab1088","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6"}
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch b/poky/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch
deleted file mode 100644
index 6c23071..0000000
--- a/poky/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 4e0ce3f22d45033a108cbacca3e5ec6728bd44f3 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Tue, 11 Aug 2015 16:25:38 +0300
-Subject: [PATCH] configure: add option to enable/disable use of GTK+
-
-Distro packagers like predictability and automatically detected optional
-dependencies are not predicable.  Add a --with-gtk3 option (default to "auto")
-for forcibly controlling whether GTK+ will be used or not.
-
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=712693]
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- configure.ac | 17 +++++++++++------
- 1 file changed, 11 insertions(+), 6 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index e61a952..c3aae84 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -130,17 +130,22 @@ AC_CHECK_FUNCS(strtok_r)
- # GTK
- # ===========================================================================
- 
--PKG_CHECK_MODULES([GTK3],[gtk+-3.0 >= $GTK3_REQUIRED],[have_gtk_3=yes],[have_gtk_3=no])
--
- GTK3_BINARY_VERSION=
- 
--if test "$have_gtk_3" = "yes"; then
--    GTK3_BINARY_VERSION="`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0`"
-+AC_MSG_CHECKING([whether to use GTK+ 3])
-+AC_ARG_WITH([gtk3],
-+  [AS_HELP_STRING([--without-gtk3],[Don't build GTK+3 tools (default=auto)])],
-+  [],[PKG_CHECK_EXISTS([gtk+-3.0 >= $GTK3_REQUIRED],[with_gtk3=yes],[with_gtk3=no])])
-+AC_MSG_RESULT([$with_gtk3])
-+
-+if test "$with_gtk3" = "yes"; then
-+  PKG_CHECK_MODULES(GTK3, [gtk+-3.0 >= $GTK3_REQUIRED])
-+  GTK3_BINARY_VERSION="`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0`"
- fi
- 
- AC_SUBST([GTK3_BINARY_VERSION])
- 
--AM_CONDITIONAL([HAVE_GTK_3],[test "$have_gtk_3" = "yes"])
-+AM_CONDITIONAL([HAVE_GTK_3],[test "$with_gtk3" = "yes"])
- 
- dnl ===========================================================================
- dnl GDK-Pixbuf SVG loader
-@@ -298,6 +303,6 @@ librsvg-$VERSION
- 	Build introspectable bindings:  ${found_introspection}
- 	Build Vala bindings:            ${enable_vala}
- 	Build GdkPixbuf loader:         ${enable_pixbuf_loader}
--        GTK+ $GTK3_REQUIRED or later:           ${have_gtk_3}
-+        GTK+ $GTK3_REQUIRED or later:           ${with_gtk_3}
- 	Build miscellaneous tools:      ${build_misc_tools}
- "
--- 
-2.1.4
-
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg_2.40.21.bb b/poky/meta/recipes-gnome/librsvg/librsvg_2.40.21.bb
deleted file mode 100644
index 39b9aec..0000000
--- a/poky/meta/recipes-gnome/librsvg/librsvg_2.40.21.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "Library for rendering SVG files"
-DESCRIPTION = "A small library to render Scalable Vector Graphics (SVG), \
-associated with the GNOME Project. It renders SVG files to Cairo surfaces. \
-Cairo is the 2D, antialiased drawing library that GNOME uses to draw things to \
-the screen or to generate output for printing."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/librsvg"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/librsvg/issues"
-
-RECIPE_NO_UPDATE_REASON = "Versions from 2.41.0 requires Rust compiler to build it"
-
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://rsvg.h;beginline=3;endline=24;md5=20b4113c4909bbf0d67e006778302bc6"
-
-SECTION = "x11/utils"
-DEPENDS = "cairo gdk-pixbuf glib-2.0 libcroco libxml2 pango"
-BBCLASSEXTEND = "native nativesdk"
-
-inherit gnomebase gtk-doc pixbufcache upstream-version-is-even gobject-introspection
-
-SRC_URI += "file://gtk-option.patch \
-            file://0001-Auto-detect-Bsymbolic-fixes-configure-on-macOS.patch \
-            file://0001-Remove-non-reproducible-SRCDIR.patch \
-"
-
-SRC_URI[archive.sha256sum] = "f7628905f1cada84e87e2b14883ed57d8094dca3281d5bcb24ece4279e9a92ba"
-
-# Issue only on windows
-CVE_CHECK_WHITELIST += "CVE-2018-1000041"
-
-CACHED_CONFIGUREVARS = "ac_cv_path_GDK_PIXBUF_QUERYLOADERS=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
-
-PACKAGECONFIG ??= "gdkpixbuf"
-# The gdk-pixbuf loader
-PACKAGECONFIG[gdkpixbuf] = "--enable-pixbuf-loader,--disable-pixbuf-loader,gdk-pixbuf-native"
-# GTK+ test application (rsvg-view)
-PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3"
-
-do_install:append() {
-	# Loadable modules don't need .a or .la on Linux
-	rm -f ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.a ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.la
-}
-
-PACKAGES =+ "librsvg-gtk rsvg"
-FILES:rsvg = "${bindir}/rsvg* \
-	      ${datadir}/pixmaps/svg-viewer.svg \
-	      ${datadir}/themes"
-FILES:librsvg-gtk = "${libdir}/gdk-pixbuf-2.0/*/*/*.so \
-                     ${datadir}/thumbnailers/librsvg.thumbnailer"
-RRECOMMENDS:librsvg-gtk = "gdk-pixbuf-bin"
-
-PIXBUF_PACKAGES = "librsvg-gtk"
diff --git a/poky/meta/recipes-gnome/librsvg/librsvg_2.52.2.bb b/poky/meta/recipes-gnome/librsvg/librsvg_2.52.2.bb
new file mode 100644
index 0000000..1197559
--- /dev/null
+++ b/poky/meta/recipes-gnome/librsvg/librsvg_2.52.2.bb
@@ -0,0 +1,76 @@
+SUMMARY = "Library for rendering SVG files"
+DESCRIPTION = "A small library to render Scalable Vector Graphics (SVG), \
+associated with the GNOME Project. It renders SVG files to Cairo surfaces. \
+Cairo is the 2D, antialiased drawing library that GNOME uses to draw things to \
+the screen or to generate output for printing."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/librsvg"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/librsvg/issues"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+                   "
+
+SECTION = "x11/utils"
+DEPENDS = "cairo gdk-pixbuf glib-2.0 libcroco libxml2 pango"
+BBCLASSEXTEND = "native"
+
+inherit gnomebase gtk-doc pixbufcache upstream-version-is-even gobject-introspection rust
+
+SRC_URI += "file://0001-Makefile.am-pass-rust-target-to-cargo-also-when-not-.patch \
+           file://0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch \
+           file://0001-crossbeam-utils-check-only-the-architecture-not-the-.patch \
+           file://0001-vendor-system-deps-sort-dependencies-before-using-th.patch \
+           file://0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch \
+           file://0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch \
+           file://0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch \
+           file://0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch \
+           "
+
+SRC_URI[archive.sha256sum] = "03d2887c18ffb906e1a60f97fe46a7169f69aa28d6db5d285748f3618b093427"
+
+# librsvg is still autotools-based, but is calling cargo from its automake-driven makefiles
+# so we cannot use cargo class directly, but still need bits and pieces from it 
+# for cargo to be happy
+BASEDEPENDS:append = " cargo-native"
+
+export RUST_BACKTRACE = "full"
+export RUSTFLAGS
+export RUST_TARGET_PATH
+
+export RUST_TARGET = "${HOST_SYS}"
+
+# rust-cross writes the target linker binary into target json definition without any flags.
+# This breaks here because the linker isn't going to work without at least knowing where
+# the sysroot is. So copy the json to workdir, and patch in the path to wrapper from rust class
+# which supplies the needed flags.
+do_compile:prepend() {
+    cp ${STAGING_LIBDIR_NATIVE}/rustlib/${HOST_SYS}.json ${WORKDIR}
+    cp ${STAGING_LIBDIR_NATIVE}/rustlib/${BUILD_SYS}.json ${WORKDIR}
+    sed -ie 's,"linker": ".*","linker": "${RUST_TARGET_CC}",g' ${WORKDIR}/${HOST_SYS}.json
+    RUST_TARGET_PATH="${WORKDIR}"
+    export RUST_TARGET_PATH
+}
+
+# Issue only on windows
+CVE_CHECK_WHITELIST += "CVE-2018-1000041"
+
+CACHED_CONFIGUREVARS = "ac_cv_path_GDK_PIXBUF_QUERYLOADERS=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
+
+PACKAGECONFIG ??= "gdkpixbuf"
+# The gdk-pixbuf loader
+PACKAGECONFIG[gdkpixbuf] = "--enable-pixbuf-loader,--disable-pixbuf-loader,gdk-pixbuf-native"
+
+do_install:append() {
+	# Loadable modules don't need .a or .la on Linux
+	rm -f ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.a ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.la
+}
+
+PACKAGES =+ "librsvg-gtk rsvg"
+FILES:rsvg = "${bindir}/rsvg* \
+	      ${datadir}/pixmaps/svg-viewer.svg \
+	      ${datadir}/themes"
+FILES:librsvg-gtk = "${libdir}/gdk-pixbuf-2.0/*/*/*.so \
+                     ${datadir}/thumbnailers/librsvg.thumbnailer"
+RRECOMMENDS:librsvg-gtk = "gdk-pixbuf-bin"
+
+PIXBUF_PACKAGES = "librsvg-gtk"
diff --git a/poky/meta/recipes-graphics/glslang/glslang_11.5.0.bb b/poky/meta/recipes-graphics/glslang/glslang_11.5.0.bb
deleted file mode 100644
index 2f076e5..0000000
--- a/poky/meta/recipes-graphics/glslang/glslang_11.5.0.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "OpenGL / OpenGL ES Reference Compiler"
-DESCRIPTION = "Glslang is the official reference compiler front end for the \
-OpenGL ES and OpenGL shading languages. It implements a strict interpretation \
-of the specifications for these languages. It is open and free for anyone to use, \
-either from a command line or programmatically."
-SECTION = "graphics"
-HOMEPAGE = "https://www.khronos.org/opengles/sdk/tools/Reference-Compiler"
-LICENSE = "BSD-3-Clause & BSD-2-Clause & MIT & Apache-2.0 & GPL-3-with-bison-exception"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c5ce49c0456e9b413b98a4368c378229"
-
-SRCREV = "ae2a562936cc8504c9ef2757cceaff163147834f"
-SRC_URI = "git://github.com/KhronosGroup/glslang.git;protocol=https \
-           file://0001-generate-glslang-pkg-config.patch"
-UPSTREAM_CHECK_GITTAGREGEX = "^(?P<pver>\d+(\.\d+)+)$"
-S = "${WORKDIR}/git"
-
-inherit cmake python3native
-
-EXTRA_OECMAKE = " \
-    -DCMAKE_BUILD_TYPE=Release \
-    -DBUILD_SHARED_LIBS=ON \
-    -DENABLE_PCH=OFF \
-    -DENABLE_CTEST=OFF \
-    -DBUILD_EXTERNAL=OFF \
-"
-
-SOLIBSDEV = "glslang.so"
-# all the other libraries are unversioned, so pack it on PN
-FILES:${PN} += "${libdir}/*.so"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/glslang/glslang_11.6.0.bb b/poky/meta/recipes-graphics/glslang/glslang_11.6.0.bb
new file mode 100644
index 0000000..c39be55
--- /dev/null
+++ b/poky/meta/recipes-graphics/glslang/glslang_11.6.0.bb
@@ -0,0 +1,31 @@
+SUMMARY = "OpenGL / OpenGL ES Reference Compiler"
+DESCRIPTION = "Glslang is the official reference compiler front end for the \
+OpenGL ES and OpenGL shading languages. It implements a strict interpretation \
+of the specifications for these languages. It is open and free for anyone to use, \
+either from a command line or programmatically."
+SECTION = "graphics"
+HOMEPAGE = "https://www.khronos.org/opengles/sdk/tools/Reference-Compiler"
+LICENSE = "BSD-3-Clause & BSD-2-Clause & MIT & Apache-2.0 & GPL-3-with-bison-exception"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c5ce49c0456e9b413b98a4368c378229"
+
+SRCREV = "2fb89a0072ae7316af1c856f22663fde4928128a"
+SRC_URI = "git://github.com/KhronosGroup/glslang.git;protocol=https \
+           file://0001-generate-glslang-pkg-config.patch"
+UPSTREAM_CHECK_GITTAGREGEX = "^(?P<pver>\d+(\.\d+)+)$"
+S = "${WORKDIR}/git"
+
+inherit cmake python3native
+
+EXTRA_OECMAKE = " \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DBUILD_SHARED_LIBS=ON \
+    -DENABLE_PCH=OFF \
+    -DENABLE_CTEST=OFF \
+    -DBUILD_EXTERNAL=OFF \
+"
+
+SOLIBSDEV = "glslang.so"
+# all the other libraries are unversioned, so pack it on PN
+FILES:${PN} += "${libdir}/*.so"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.9.0.bb b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.9.0.bb
deleted file mode 100644
index bc91a8c..0000000
--- a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.9.0.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-SUMMARY = "Text shaping library"
-DESCRIPTION = "HarfBuzz is an OpenType text shaping engine."
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/HarfBuzz"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=HarfBuzz"
-SECTION = "libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6ee0f16281694fb6aa689cca1e0fb3da \
-                    file://src/hb-ucd.cc;beginline=1;endline=15;md5=29d4dcb6410429195df67efe3382d8bc \
-                    "
-
-UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
-UPSTREAM_CHECK_REGEX = "harfbuzz-(?P<pver>\d+(\.\d+)+).tar"
-
-SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "3e1c2e1d2c65d56364fd16d1c41a06b2a35795496f78dfff635c2b7414b54c5a"
-
-inherit meson pkgconfig lib_package gtk-doc gobject-introspection
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-GTKDOC_MESON_ENABLE_FLAG = 'enabled'
-GTKDOC_MESON_DISABLE_FLAG = 'disabled'
-
-PACKAGECONFIG ??= "cairo freetype glib icu"
-PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo"
-PACKAGECONFIG[freetype] = "-Dfreetype=enabled,-Dfreetype=disabled,freetype"
-PACKAGECONFIG[glib] = "-Dglib=enabled,-Dglib=disabled,glib-2.0"
-PACKAGECONFIG[graphite] = "-Dgraphite=enabled,-Dgraphite=disabled,graphite2"
-PACKAGECONFIG[icu] = "-Dicu=enabled,-Dicu=disabled,icu"
-
-PACKAGES =+ "${PN}-icu ${PN}-icu-dev ${PN}-subset"
-
-LEAD_SONAME = "libharfbuzz.so"
-
-do_install:append() {
-    # If no tools are installed due to PACKAGECONFIG then this directory is
-    #still installed, so remove it to stop packaging wanings.
-    rmdir --ignore-fail-on-non-empty ${D}${bindir}
-}
-
-FILES:${PN}-icu = "${libdir}/libharfbuzz-icu.so.*"
-FILES:${PN}-icu-dev = "${libdir}/libharfbuzz-icu.la \
-                       ${libdir}/libharfbuzz-icu.so \
-                       ${libdir}/pkgconfig/harfbuzz-icu.pc \
-"
-FILES:${PN}-subset = "${libdir}/libharfbuzz-subset.so.*"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_3.0.0.bb b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_3.0.0.bb
new file mode 100644
index 0000000..fef9453
--- /dev/null
+++ b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_3.0.0.bb
@@ -0,0 +1,48 @@
+SUMMARY = "Text shaping library"
+DESCRIPTION = "HarfBuzz is an OpenType text shaping engine."
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/HarfBuzz"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=HarfBuzz"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6ee0f16281694fb6aa689cca1e0fb3da \
+                    file://src/hb-ucd.cc;beginline=1;endline=15;md5=29d4dcb6410429195df67efe3382d8bc \
+                    "
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+UPSTREAM_CHECK_REGEX = "harfbuzz-(?P<pver>\d+(\.\d+)+).tar"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "036b0ee118451539783ec7864148bb4106be42a2eb964df4e83e6703ec46f3d9"
+
+inherit meson pkgconfig lib_package gtk-doc gobject-introspection
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GTKDOC_MESON_ENABLE_FLAG = 'enabled'
+GTKDOC_MESON_DISABLE_FLAG = 'disabled'
+
+PACKAGECONFIG ??= "cairo freetype glib icu"
+PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo"
+PACKAGECONFIG[freetype] = "-Dfreetype=enabled,-Dfreetype=disabled,freetype"
+PACKAGECONFIG[glib] = "-Dglib=enabled,-Dglib=disabled,glib-2.0"
+PACKAGECONFIG[graphite] = "-Dgraphite=enabled,-Dgraphite=disabled,graphite2"
+PACKAGECONFIG[icu] = "-Dicu=enabled,-Dicu=disabled,icu"
+
+PACKAGES =+ "${PN}-icu ${PN}-icu-dev ${PN}-subset"
+
+LEAD_SONAME = "libharfbuzz.so"
+
+do_install:append() {
+    # If no tools are installed due to PACKAGECONFIG then this directory is
+    #still installed, so remove it to stop packaging wanings.
+    rmdir --ignore-fail-on-non-empty ${D}${bindir}
+}
+
+FILES:${PN}-icu = "${libdir}/libharfbuzz-icu.so.*"
+FILES:${PN}-icu-dev = "${libdir}/libharfbuzz-icu.la \
+                       ${libdir}/libharfbuzz-icu.so \
+                       ${libdir}/pkgconfig/harfbuzz-icu.pc \
+"
+FILES:${PN}-subset = "${libdir}/libharfbuzz-subset.so.*"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/0001-lib-meson.build-fix-meson-0.60-compatibility.patch b/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/0001-lib-meson.build-fix-meson-0.60-compatibility.patch
new file mode 100644
index 0000000..159425a
--- /dev/null
+++ b/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/0001-lib-meson.build-fix-meson-0.60-compatibility.patch
@@ -0,0 +1,24 @@
+From b9a19aa4bdb21751c04c0e3ba8a9e2e35a10c953 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 25 Oct 2021 18:18:15 +0200
+Subject: [PATCH] lib/meson.build: fix meson 0.60 compatibility
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ lib/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/meson.build b/lib/meson.build
+index 9929520e..1a525587 100644
+--- a/lib/meson.build
++++ b/lib/meson.build
+@@ -152,7 +152,7 @@ lib_version = vcs_tag(input : 'version.h.in', output : 'version.h',
+ 
+ lib_intermediates = []
+ foreach f: lib_sources
+-    name = f.underscorify(f)
++    name = f.underscorify()
+     lib = static_library('igt-' + name,
+ 	[ f, lib_version ],
+ 	include_directories: inc,
diff --git a/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb b/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb
index 1a00eca..7d912e4 100644
--- a/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb
+++ b/poky/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb
@@ -12,7 +12,9 @@
 SRCREV = "203def046b466fb2da67f9f15552d84e1c0b41f2"
 PV = "1.26"
 
-SRC_URI = "git://gitlab.freedesktop.org/drm/igt-gpu-tools.git;protocol=https"
+SRC_URI = "git://gitlab.freedesktop.org/drm/igt-gpu-tools.git;protocol=https \
+           file://0001-lib-meson.build-fix-meson-0.60-compatibility.patch \
+           "
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-graphics/libva/libva-initial_2.12.0.bb b/poky/meta/recipes-graphics/libva/libva-initial_2.13.0.bb
similarity index 100%
rename from poky/meta/recipes-graphics/libva/libva-initial_2.12.0.bb
rename to poky/meta/recipes-graphics/libva/libva-initial_2.13.0.bb
diff --git a/poky/meta/recipes-graphics/libva/libva-utils_2.12.0.bb b/poky/meta/recipes-graphics/libva/libva-utils_2.12.0.bb
deleted file mode 100644
index 096d80b..0000000
--- a/poky/meta/recipes-graphics/libva/libva-utils_2.12.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "libva-utils is a collection of utilities from libva project"
-
-DESCRIPTION = "libva-utils is a collection of utilities \
-and examples to exercise VA-API in accordance with the libva \
-project.VA-API is an open-source library and API specification, \
-which provides access to graphics hardware acceleration capabilities \
-for video processing. It consists of a main library and driver-specific \
-acceleration backends for each supported hardware vendor"
-
-HOMEPAGE = "https://01.org/linuxmedia/vaapi"
-BUGTRACKER = "https://github.com/intel/libva-utils/issues"
-
-SECTION = "x11"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e"
-
-SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.11-branch"
-SRCREV = "c0145a895ebe9b24cde5c441733f90482f1e3d71"
-S = "${WORKDIR}/git"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))$"
-
-DEPENDS = "libva"
-
-inherit meson pkgconfig features_check
-
-# depends on libva which requires opengl
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-PACKAGECONFIG[x11] = "-Dx11=true, -Dx11=false,virtual/libx11 libxext libxfixes"
-PACKAGECONFIG[wayland] = "-Dwayland=true, -Dwayland=false,wayland-native wayland"
diff --git a/poky/meta/recipes-graphics/libva/libva-utils_2.13.0.bb b/poky/meta/recipes-graphics/libva/libva-utils_2.13.0.bb
new file mode 100644
index 0000000..baa0719
--- /dev/null
+++ b/poky/meta/recipes-graphics/libva/libva-utils_2.13.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "libva-utils is a collection of utilities from libva project"
+
+DESCRIPTION = "libva-utils is a collection of utilities \
+and examples to exercise VA-API in accordance with the libva \
+project.VA-API is an open-source library and API specification, \
+which provides access to graphics hardware acceleration capabilities \
+for video processing. It consists of a main library and driver-specific \
+acceleration backends for each supported hardware vendor"
+
+HOMEPAGE = "https://01.org/linuxmedia/vaapi"
+BUGTRACKER = "https://github.com/intel/libva-utils/issues"
+
+SECTION = "x11"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e"
+
+SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.13-branch"
+SRCREV = "7bad184b2cf2ffaf4fb3cc71d4df63d7b142d592"
+S = "${WORKDIR}/git"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))$"
+
+DEPENDS = "libva"
+
+inherit meson pkgconfig features_check
+
+# depends on libva which requires opengl
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
+PACKAGECONFIG[x11] = "-Dx11=true, -Dx11=false,virtual/libx11 libxext libxfixes"
+PACKAGECONFIG[wayland] = "-Dwayland=true, -Dwayland=false,wayland-native wayland"
diff --git a/poky/meta/recipes-graphics/libva/libva.inc b/poky/meta/recipes-graphics/libva/libva.inc
index 3d65ac5..bcf9757 100644
--- a/poky/meta/recipes-graphics/libva/libva.inc
+++ b/poky/meta/recipes-graphics/libva/libva.inc
@@ -18,7 +18,7 @@
 
 SRC_URI = "https://github.com/intel/libva/releases/download/${PV}/libva-${PV}.tar.bz2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f"
-SRC_URI[sha256sum] = "d3f4873715077a8c969c9bfe4ba8455a133353176be0ffe0c41ffd4155c9a8c8"
+SRC_URI[sha256sum] = "fad383f39f36115814bd0eda1496a4cc01761643bd962635400df2d4470ad460"
 
 S = "${WORKDIR}/libva-${PV}"
 
diff --git a/poky/meta/recipes-graphics/libva/libva_2.12.0.bb b/poky/meta/recipes-graphics/libva/libva_2.13.0.bb
similarity index 100%
rename from poky/meta/recipes-graphics/libva/libva_2.12.0.bb
rename to poky/meta/recipes-graphics/libva/libva_2.13.0.bb
diff --git a/poky/meta/recipes-graphics/mesa/files/without-neon.patch b/poky/meta/recipes-graphics/mesa/files/without-neon.patch
deleted file mode 100644
index 56e4aa7..0000000
--- a/poky/meta/recipes-graphics/mesa/files/without-neon.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Since 80923e8d ("util/format: Add some NEON intrinsics-based u_format_unpack.")
-upstream the build fails on Arm platforms which use the soft-float ABI, such as
-qemuarmv5:
-
- arm_neon.h:31:2: error: #error "NEON intrinsics not available with the
- soft-float ABI.  Please use -mfloat-abi=softfp or -mfloat-abi=hard"
-
-Take a patch from upstream to check the ABI being used before trying to
-use NEON instructions.
-
-Upstream-Status: Backport [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12569]
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From 5dcce985a6dd3b7856d65e21db753e2c7a0f5dd5 Mon Sep 17 00:00:00 2001
-From: Adrian Bunk <bunk@debian.org>
-Date: Thu, 26 Aug 2021 22:35:49 +0300
-Subject: [PATCH] util/format: NEON is not available with the soft-float ABI
-
-Fixes: 80923e8d58cc ("util/format: Add some NEON intrinsics-based u_format_unpack.")
----
- src/util/format/u_format.c             | 2 +-
- src/util/format/u_format_unpack_neon.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/util/format/u_format.c b/src/util/format/u_format.c
-index c49b3788c82..31f1f240efc 100644
---- a/src/util/format/u_format.c
-+++ b/src/util/format/u_format.c
-@@ -1138,7 +1138,7 @@ static void
- util_format_unpack_table_init(void)
- {
-    for (enum pipe_format format = PIPE_FORMAT_NONE; format < PIPE_FORMAT_COUNT; format++) {
--#if (defined(PIPE_ARCH_AARCH64) || defined(PIPE_ARCH_ARM)) && !defined NO_FORMAT_ASM
-+#if (defined(PIPE_ARCH_AARCH64) || defined(PIPE_ARCH_ARM)) && !defined(NO_FORMAT_ASM) && !defined(__SOFTFP__)
-       const struct util_format_unpack_description *unpack = util_format_unpack_description_neon(format);
-       if (unpack) {
-          util_format_unpack_table[format] = unpack;
-diff --git a/src/util/format/u_format_unpack_neon.c b/src/util/format/u_format_unpack_neon.c
-index 7456d7aaa88..a4a5cb1f723 100644
---- a/src/util/format/u_format_unpack_neon.c
-+++ b/src/util/format/u_format_unpack_neon.c
-@@ -23,7 +23,7 @@
- 
- #include <u_format.h>
- 
--#if (defined(PIPE_ARCH_AARCH64) || defined(PIPE_ARCH_ARM)) && !defined NO_FORMAT_ASM
-+#if (defined(PIPE_ARCH_AARCH64) || defined(PIPE_ARCH_ARM)) && !defined(NO_FORMAT_ASM) && !defined(__SOFTFP__)
- 
- /* armhf builds default to vfp, not neon, and refuses to compile neon intrinsics
-  * unless you tell it "no really".
--- 
-GitLab
-
diff --git a/poky/meta/recipes-graphics/mesa/mesa-gl_21.2.1.bb b/poky/meta/recipes-graphics/mesa/mesa-gl_21.2.4.bb
similarity index 100%
rename from poky/meta/recipes-graphics/mesa/mesa-gl_21.2.1.bb
rename to poky/meta/recipes-graphics/mesa/mesa-gl_21.2.4.bb
diff --git a/poky/meta/recipes-graphics/mesa/mesa.inc b/poky/meta/recipes-graphics/mesa/mesa.inc
index 282671d..f1a1e57 100644
--- a/poky/meta/recipes-graphics/mesa/mesa.inc
+++ b/poky/meta/recipes-graphics/mesa/mesa.inc
@@ -19,10 +19,9 @@
            file://0002-meson.build-make-TLS-ELF-optional.patch \
            file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
            file://0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch \
-           file://without-neon.patch \
            "
 
-SRC_URI[sha256sum] = "2c65e6710b419b67456a48beefd0be827b32db416772e0e363d5f7d54dc01787"
+SRC_URI[sha256sum] = "fe6ede82d1ac02339da3c2ec1820a379641902fd351a52cc01153f76eff85b44"
 
 UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
 
@@ -143,7 +142,9 @@
 
 # radeonsi requires LLVM
 GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}"
-GALLIUMDRIVERS_LLVM = "r300,svga,nouveau${GALLIUMDRIVERS_RADEONSI}"
+GALLIUMDRIVERS_LLVM = "r300,nouveau${GALLIUMDRIVERS_RADEONSI}"
+GALLIUMDRIVERS_LLVM:append:x86:class-target = ",svga"
+GALLIUMDRIVERS_LLVM:append:x86-64:class-target = ",svga"
 
 PACKAGECONFIG[r600] = ""
 PACKAGECONFIG[virgl] = ""
diff --git a/poky/meta/recipes-graphics/mesa/mesa_21.2.1.bb b/poky/meta/recipes-graphics/mesa/mesa_21.2.4.bb
similarity index 100%
rename from poky/meta/recipes-graphics/mesa/mesa_21.2.1.bb
rename to poky/meta/recipes-graphics/mesa/mesa_21.2.4.bb
diff --git a/poky/meta/recipes-graphics/pango/pango_1.48.10.bb b/poky/meta/recipes-graphics/pango/pango_1.48.10.bb
new file mode 100644
index 0000000..40df704
--- /dev/null
+++ b/poky/meta/recipes-graphics/pango/pango_1.48.10.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Framework for layout and rendering of internationalized text"
+DESCRIPTION = "Pango is a library for laying out and rendering of text, \
+with an emphasis on internationalization. Pango can be used anywhere \
+that text layout is needed, though most of the work on Pango so far has \
+been done in the context of the GTK+ widget toolkit. Pango forms the \
+core of text and font handling for GTK+-2.x."
+HOMEPAGE = "http://www.pango.org/"
+BUGTRACKER = "http://bugzilla.gnome.org"
+SECTION = "libs"
+LICENSE = "LGPLv2.0+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gi-docgen ptest-gnome upstream-version-is-even gobject-introspection
+
+GIR_MESON_ENABLE_FLAG = "enabled"
+GIR_MESON_DISABLE_FLAG = "disabled"
+
+SRC_URI += "file://run-ptest"
+
+SRC_URI[archive.sha256sum] = "21e1f5798bcdfda75eabc4280514b0896ab56f656d4e7e66030b9a2535ecdc98"
+
+DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz fribidi"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \
+                   ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
+
+PACKAGECONFIG[x11] = ",,virtual/libx11 libxft"
+PACKAGECONFIG[tests] = "-Dinstall-tests=true, -Dinstall-tests=false"
+PACKAGECONFIG[thai] = ",,libthai"
+
+GIR_MESON_OPTION = 'introspection'
+
+do_configure:prepend() {
+    chmod +x ${S}/tests/*.py
+}
+
+do_configure:prepend:toolchain-clang() {
+    sed -i -e "/Werror=implicit-fallthrough/d" ${S}/meson.build
+}
+
+LEAD_SONAME = "libpango-1.0*"
+
+FILES:${PN} = "${bindir}/* ${libdir}/libpango*${SOLIBS}"
+
+RDEPENDS:${PN}-ptest += "cantarell-fonts"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-en-us"
+
+RPROVIDES:${PN} += "pango-modules pango-module-indic-lang \
+                    pango-module-basic-fc pango-module-arabic-lang"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/pango/pango_1.48.9.bb b/poky/meta/recipes-graphics/pango/pango_1.48.9.bb
deleted file mode 100644
index 54e1697..0000000
--- a/poky/meta/recipes-graphics/pango/pango_1.48.9.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-SUMMARY = "Framework for layout and rendering of internationalized text"
-DESCRIPTION = "Pango is a library for laying out and rendering of text, \
-with an emphasis on internationalization. Pango can be used anywhere \
-that text layout is needed, though most of the work on Pango so far has \
-been done in the context of the GTK+ widget toolkit. Pango forms the \
-core of text and font handling for GTK+-2.x."
-HOMEPAGE = "http://www.pango.org/"
-BUGTRACKER = "http://bugzilla.gnome.org"
-SECTION = "libs"
-LICENSE = "LGPLv2.0+"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
-
-GNOMEBASEBUILDCLASS = "meson"
-
-inherit gnomebase gi-docgen ptest-gnome upstream-version-is-even gobject-introspection
-
-GIR_MESON_ENABLE_FLAG = "enabled"
-GIR_MESON_DISABLE_FLAG = "disabled"
-
-SRC_URI += "file://run-ptest"
-
-SRC_URI[archive.sha256sum] = "a913657d3fe5aa04c03958a3b5d3fc859e891b75cd81b873a819330f6c0872aa"
-
-DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz fribidi"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \
-                   ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
-
-PACKAGECONFIG[x11] = ",,virtual/libx11 libxft"
-PACKAGECONFIG[tests] = "-Dinstall-tests=true, -Dinstall-tests=false"
-PACKAGECONFIG[thai] = ",,libthai"
-
-GIR_MESON_OPTION = 'introspection'
-
-do_configure:prepend() {
-    chmod +x ${S}/tests/*.py
-}
-
-do_configure:prepend:toolchain-clang() {
-    sed -i -e "/Werror=implicit-fallthrough/d" ${S}/meson.build
-}
-
-LEAD_SONAME = "libpango-1.0*"
-
-FILES:${PN} = "${bindir}/* ${libdir}/libpango*${SOLIBS}"
-
-RDEPENDS:${PN}-ptest += "cantarell-fonts"
-RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-en-us"
-
-RPROVIDES:${PN} += "pango-modules pango-module-indic-lang \
-                    pango-module-basic-fc pango-module-arabic-lang"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/piglit/piglit_git.bb b/poky/meta/recipes-graphics/piglit/piglit_git.bb
index 2e0dfee..0a3de46 100644
--- a/poky/meta/recipes-graphics/piglit/piglit_git.bb
+++ b/poky/meta/recipes-graphics/piglit/piglit_git.bb
@@ -6,7 +6,7 @@
 LICENSE = "MIT & LGPLv2+ & GPLv3 & GPLv2+ & BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b2beded7103a3d8a442a2a0391d607b0"
 
-SRC_URI = "git://gitlab.freedesktop.org/mesa/piglit.git;protocol=https \
+SRC_URI = "git://gitlab.freedesktop.org/mesa/piglit.git;protocol=https;branch=main \
            file://0001-cmake-install-bash-completions-in-the-right-place.patch \
            file://0001-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch \
            file://0001-Add-a-missing-include-for-htobe32-definition.patch \
@@ -18,7 +18,7 @@
            "
 UPSTREAM_CHECK_COMMITS = "1"
 
-SRCREV = "6a4be9e9946df310d9402f995f371c7deb8c27ba"
+SRCREV = "83bc56abf2686e2cd9024a152e121ca4aa524985"
 # (when PV goes above 1.0 remove the trailing r)
 PV = "1.0+gitr${SRCPV}"
 
@@ -43,6 +43,7 @@
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
 PACKAGECONFIG[freeglut] = "-DPIGLIT_USE_GLUT=1,-DPIGLIT_USE_GLUT=0,freeglut,"
 PACKAGECONFIG[x11] = "-DPIGLIT_BUILD_GL_TESTS=ON,-DPIGLIT_BUILD_GL_TESTS=OFF,${X11_DEPS}, ${X11_RDEPS}"
+PACKAGECONFIG[vulkan] = "-DPIGLIT_BUILD_VK_TESTS=ON,-DPIGLIT_BUILD_VK_TESTS=OFF,vulkan-loader"
 
 export PIGLIT_BUILD_DIR = "../../../../git"
 
diff --git a/poky/meta/recipes-graphics/shaderc/shaderc_2021.1.bb b/poky/meta/recipes-graphics/shaderc/shaderc_2021.1.bb
deleted file mode 100644
index ad3f62c..0000000
--- a/poky/meta/recipes-graphics/shaderc/shaderc_2021.1.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY  = "A collection of tools, libraries and tests for shader compilation"
-DESCRIPTION = "The Shaderc library provides an API for compiling GLSL/HLSL \
-source code to SPIRV modules. It has been shipping in the Android NDK since version r12b."
-SECTION = "graphics"
-HOMEPAGE = "https://github.com/google/shaderc"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRCREV = "031a8c9715df5d7c69dcc1ee9d53cbfa35c7b026"
-SRC_URI = "git://github.com/google/shaderc.git;protocol=https;branch=main \
-           file://0001-cmake-disable-building-external-dependencies.patch \
-           file://0002-libshaderc_util-fix-glslang-header-file-location.patch \
-           "
-UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>\d+(\.\d+)+)$"
-S = "${WORKDIR}/git"
-
-inherit cmake python3native pkgconfig
-
-DEPENDS = "spirv-headers spirv-tools glslang"
-
-EXTRA_OECMAKE = " \
-    -DCMAKE_BUILD_TYPE=Release \
-    -DBUILD_EXTERNAL=OFF \
-    -DSHADERC_SKIP_TESTS=ON \
-    -DSHADERC_SKIP_EXAMPLES=ON \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/shaderc/shaderc_2021.2.bb b/poky/meta/recipes-graphics/shaderc/shaderc_2021.2.bb
new file mode 100644
index 0000000..eee9817
--- /dev/null
+++ b/poky/meta/recipes-graphics/shaderc/shaderc_2021.2.bb
@@ -0,0 +1,28 @@
+SUMMARY  = "A collection of tools, libraries and tests for shader compilation"
+DESCRIPTION = "The Shaderc library provides an API for compiling GLSL/HLSL \
+source code to SPIRV modules. It has been shipping in the Android NDK since version r12b."
+SECTION = "graphics"
+HOMEPAGE = "https://github.com/google/shaderc"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRCREV = "2c5ef1b8f8b1fdcbe1b22764e82d5caaa1d04ef9"
+SRC_URI = "git://github.com/google/shaderc.git;protocol=https;branch=main \
+           file://0001-cmake-disable-building-external-dependencies.patch \
+           file://0002-libshaderc_util-fix-glslang-header-file-location.patch \
+           "
+UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>\d+(\.\d+)+)$"
+S = "${WORKDIR}/git"
+
+inherit cmake python3native pkgconfig
+
+DEPENDS = "spirv-headers spirv-tools glslang"
+
+EXTRA_OECMAKE = " \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DBUILD_EXTERNAL=OFF \
+    -DSHADERC_SKIP_TESTS=ON \
+    -DSHADERC_SKIP_EXAMPLES=ON \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/spir/files/0001-fix-strncpy-bound-error.patch b/poky/meta/recipes-graphics/spir/files/0001-fix-strncpy-bound-error.patch
deleted file mode 100644
index bc59faa..0000000
--- a/poky/meta/recipes-graphics/spir/files/0001-fix-strncpy-bound-error.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 1ba007583b83468494c4146bcb7267d863de6a7b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 26 Feb 2021 23:54:10 -0800
-Subject: [PATCH] fix strncpy bound error
-
-This patch fixes the following error while using gcc 11
-error: 'char* __builtin_strncpy(char*, const char*, long unsigned int)' specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
-
-Upstream-Status: Submitted [https://github.com/KhronosGroup/SPIRV-Tools/pull/4151]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- source/diagnostic.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/source/diagnostic.cpp b/source/diagnostic.cpp
-index edc27c8fd..77c29d70c 100644
---- a/source/diagnostic.cpp
-+++ b/source/diagnostic.cpp
-@@ -37,7 +37,7 @@ spv_diagnostic spvDiagnosticCreate(const spv_position position,
-   diagnostic->position = *position;
-   diagnostic->isTextSource = false;
-   memset(diagnostic->error, 0, length);
--  strncpy(diagnostic->error, message, length);
-+  memcpy(diagnostic->error, message, length);
-   return diagnostic;
- }
- 
--- 
-2.30.1
-
diff --git a/poky/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb b/poky/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb
index 7a43af5..8f8206d 100644
--- a/poky/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb
+++ b/poky/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb
@@ -7,7 +7,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c938b85bceb8fb26c1a807f28a52ae2d"
 
-SRCREV = "bcf55210f13a4fa3c3d0963b509ff1070e434c79"
+SRCREV = "6cae8216a6ea19ff3f237af01e54378c1ff81fcd"
 SRC_URI = "git://github.com/KhronosGroup/SPIRV-Headers;protocol=https"
 UPSTREAM_CHECK_GITTAGREGEX = "^(?P<pver>\d+(\.\d+)+)$"
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-graphics/spir/spirv-tools_2021.2.bb b/poky/meta/recipes-graphics/spir/spirv-tools_2021.2.bb
deleted file mode 100644
index f55bd51..0000000
--- a/poky/meta/recipes-graphics/spir/spirv-tools_2021.2.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY  = "The SPIR-V Tools project provides an API and commands for \
-processing SPIR-V modules"
-DESCRIPTION = "The project includes an assembler, binary module parser, \
-disassembler, validator, and optimizer for SPIR-V."
-HOMEPAGE = "https://github.com/KhronosGroup/SPIRV-Tools"
-SECTION = "graphics"
-LICENSE  = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-SRCREV = "e198c6a785d388db68eb9166b43ac5e5208fd5cc"
-SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git \
-           file://0001-fix-strncpy-bound-error.patch \
-          "
-UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>\d+(\.\d+)+)$"
-S = "${WORKDIR}/git"
-
-inherit cmake python3native
-
-DEPENDS = "spirv-headers"
-
-EXTRA_OECMAKE += "\
-    -DSPIRV-Headers_SOURCE_DIR=${STAGING_EXECPREFIXDIR} \
-    -DSPIRV_TOOLS_BUILD_STATIC=OFF \
-    -DBUILD_SHARED_LIBS=ON \
-    -DSPIRV_SKIP_TESTS=ON \
-"
-
-do_install:append:class-target() {
-    # reproducibility: remove build host path
-    sed -i ${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake \
-        -e 's:${STAGING_DIR_HOST}::g'
-}
-
-# all the libraries are unversioned, so don't pack it on PN-dev
-SOLIBS = ".so"
-FILES_SOLIBSDEV = ""
-
-PACKAGES =+ "${PN}-lesspipe"
-FILES:${PN}-lesspipe = "${base_bindir}/spirv-lesspipe.sh"
-RDEPENDS:${PN}-lesspipe += "${PN} bash"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/spir/spirv-tools_2021.3.bb b/poky/meta/recipes-graphics/spir/spirv-tools_2021.3.bb
new file mode 100644
index 0000000..62330f2
--- /dev/null
+++ b/poky/meta/recipes-graphics/spir/spirv-tools_2021.3.bb
@@ -0,0 +1,40 @@
+SUMMARY  = "The SPIR-V Tools project provides an API and commands for \
+processing SPIR-V modules"
+DESCRIPTION = "The project includes an assembler, binary module parser, \
+disassembler, validator, and optimizer for SPIR-V."
+HOMEPAGE = "https://github.com/KhronosGroup/SPIRV-Tools"
+SECTION = "graphics"
+LICENSE  = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRCREV = "1fbed83c8aab8517d821fcb4164c08567951938f"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git"
+UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>\d+(\.\d+)+)$"
+S = "${WORKDIR}/git"
+
+inherit cmake python3native
+
+DEPENDS = "spirv-headers"
+
+EXTRA_OECMAKE += "\
+    -DSPIRV-Headers_SOURCE_DIR=${STAGING_EXECPREFIXDIR} \
+    -DSPIRV_TOOLS_BUILD_STATIC=OFF \
+    -DBUILD_SHARED_LIBS=ON \
+    -DSPIRV_SKIP_TESTS=ON \
+"
+
+do_install:append:class-target() {
+    # reproducibility: remove build host path
+    sed -i ${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake \
+        -e 's:${STAGING_DIR_HOST}::g'
+}
+
+# all the libraries are unversioned, so don't pack it on PN-dev
+SOLIBS = ".so"
+FILES_SOLIBSDEV = ""
+
+PACKAGES =+ "${PN}-lesspipe"
+FILES:${PN}-lesspipe = "${base_bindir}/spirv-lesspipe.sh"
+RDEPENDS:${PN}-lesspipe += "${PN} bash"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.4.bb b/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.4.bb
deleted file mode 100644
index b8c2946..0000000
--- a/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.4.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "Liberation(tm) Fonts"
-DESCRIPTION = "The Liberation(tm) Fonts is a font family originally \
-created by Ascender(c) which aims at metric compatibility with \
-Arial, Times New Roman, Courier New."
-HOMEPAGE = "https://github.com/liberationfonts/liberation-fonts"
-BUGTRACKER = "https://bugzilla.redhat.com/"
-
-SECTION = "x11/fonts"
-LICENSE = "OFL-1.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f96db970a9a46c5369142b99f530366b"
-PE = "1"
-
-SRC_URI = "https://github.com/liberationfonts/liberation-fonts/files/6418984/liberation-fonts-ttf-${PV}.tar.gz \
-           file://30-liberation-aliases.conf"
-SRC_URI[sha256sum] = "26f85412dd0aa9d061504a1cc8aaf0aa12a70710e8d47d8b65a1251757c1a5ef"
-UPSTREAM_CHECK_URI = "https://github.com/liberationfonts/liberation-fonts/releases"
-
-S = "${WORKDIR}/liberation-fonts-ttf-${PV}"
-
-inherit allarch fontcache
-
-do_install () {
-	install -d ${D}${datadir}/fonts/ttf/
-	for i in *.ttf; do
-		install -m 0644 $i ${D}${prefix}/share/fonts/ttf/${i}
-	done
-
-	install -d ${D}${sysconfdir}/fonts/conf.d/
-	install -m 0644 ${WORKDIR}/30-liberation-aliases.conf ${D}${sysconfdir}/fonts/conf.d/
-
-	install -d ${D}${prefix}/share/doc/${BPN}/
-	install -m 0644 LICENSE ${D}${datadir}/doc/${BPN}/
-}
-
-PACKAGES = "${PN}"
-FILES:${PN} += "${sysconfdir} ${datadir}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.5.bb b/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.5.bb
new file mode 100644
index 0000000..32247b0
--- /dev/null
+++ b/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.5.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Liberation(tm) Fonts"
+DESCRIPTION = "The Liberation(tm) Fonts is a font family originally \
+created by Ascender(c) which aims at metric compatibility with \
+Arial, Times New Roman, Courier New."
+HOMEPAGE = "https://github.com/liberationfonts/liberation-fonts"
+BUGTRACKER = "https://bugzilla.redhat.com/"
+
+SECTION = "x11/fonts"
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f96db970a9a46c5369142b99f530366b"
+PE = "1"
+
+SRC_URI = "https://github.com/liberationfonts/liberation-fonts/files/7261482/liberation-fonts-ttf-${PV}.tar.gz \
+           file://30-liberation-aliases.conf"
+SRC_URI[sha256sum] = "7191c669bf38899f73a2094ed00f7b800553364f90e2637010a69c0e268f25d0"
+UPSTREAM_CHECK_URI = "https://github.com/liberationfonts/liberation-fonts/releases"
+
+S = "${WORKDIR}/liberation-fonts-ttf-${PV}"
+
+inherit allarch fontcache
+
+do_install () {
+	install -d ${D}${datadir}/fonts/ttf/
+	for i in *.ttf; do
+		install -m 0644 $i ${D}${prefix}/share/fonts/ttf/${i}
+	done
+
+	install -d ${D}${sysconfdir}/fonts/conf.d/
+	install -m 0644 ${WORKDIR}/30-liberation-aliases.conf ${D}${sysconfdir}/fonts/conf.d/
+
+	install -d ${D}${prefix}/share/doc/${BPN}/
+	install -m 0644 LICENSE ${D}${datadir}/doc/${BPN}/
+}
+
+PACKAGES = "${PN}"
+FILES:${PN} += "${sysconfdir} ${datadir}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.182.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.182.0.bb
deleted file mode 100644
index 5ae56ec..0000000
--- a/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.182.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Vulkan Header files and API registry"
-DESCRIPTION = "Vulkan is a 3D graphics and compute API providing cross-platform access \
-to modern GPUs with low overhead and targeting realtime graphics applications such as \
-games and interactive media. This package contains the development headers \
-for packages wanting to make use of Vulkan."
-HOMEPAGE = "https://www.khronos.org/vulkan/"
-BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Headers"
-SECTION = "libs"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=master"
-
-SRCREV = "37164a5726f7e6113810f9557903a117498421cf"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-FILES:${PN} += "${datadir}/vulkan"
-
-UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.191.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.191.0.bb
new file mode 100644
index 0000000..679a455
--- /dev/null
+++ b/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.2.191.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Vulkan Header files and API registry"
+DESCRIPTION = "Vulkan is a 3D graphics and compute API providing cross-platform access \
+to modern GPUs with low overhead and targeting realtime graphics applications such as \
+games and interactive media. This package contains the development headers \
+for packages wanting to make use of Vulkan."
+HOMEPAGE = "https://www.khronos.org/vulkan/"
+BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Headers"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=main"
+
+SRCREV = "4fee3efc189c83ccd26a9cd8265185c98458c94d"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+FILES:${PN} += "${datadir}/vulkan"
+
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.182.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.182.0.bb
deleted file mode 100644
index a36fa1f..0000000
--- a/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.182.0.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "3D graphics and compute API common loader"
-DESCRIPTION = "Vulkan is a new generation graphics and compute API \
-that provides efficient access to modern GPUs. These packages \
-provide only the common vendor-agnostic library loader, headers and \
-the vulkaninfo utility."
-HOMEPAGE = "https://www.khronos.org/vulkan/"
-BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Loader"
-SECTION = "libs"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7dbefed23242760aa3475ee42801c5ac"
-SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git \
-           "
-SRCREV = "1896143df69d439b0933c1bb485f5a4587bdf2dc"
-
-S = "${WORKDIR}/git"
-
-REQUIRED_DISTRO_FEATURES = "vulkan"
-
-inherit cmake features_check
-ANY_OF_DISTRO_FEATURES = "x11 wayland"
-
-DEPENDS += "vulkan-headers"
-
-EXTRA_OECMAKE = "\
-                 -DBUILD_TESTS=OFF \
-                 -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
-                 -DASSEMBLER_WORKS=FALSE \
-                 -DVulkanHeaders_INCLUDE_DIR=${STAGING_INCDIR} \
-                 -DVulkanRegistry_DIR=${RECIPE_SYSROOT}/${datadir} \
-                 "
-
-# must choose x11 or wayland or both
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-
-PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr"
-PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland"
-
-RRECOMMENDS:${PN} = "mesa-vulkan-drivers"
-
-UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.191.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.191.0.bb
new file mode 100644
index 0000000..898a790
--- /dev/null
+++ b/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.2.191.0.bb
@@ -0,0 +1,41 @@
+SUMMARY = "3D graphics and compute API common loader"
+DESCRIPTION = "Vulkan is a new generation graphics and compute API \
+that provides efficient access to modern GPUs. These packages \
+provide only the common vendor-agnostic library loader, headers and \
+the vulkaninfo utility."
+HOMEPAGE = "https://www.khronos.org/vulkan/"
+BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Loader"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7dbefed23242760aa3475ee42801c5ac"
+SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git \
+           "
+SRCREV = "7d7cdaa17bc8c349102cfee1d5062d6b7185c172"
+
+S = "${WORKDIR}/git"
+
+REQUIRED_DISTRO_FEATURES = "vulkan"
+
+inherit cmake features_check
+ANY_OF_DISTRO_FEATURES = "x11 wayland"
+
+DEPENDS += "vulkan-headers"
+
+EXTRA_OECMAKE = "\
+                 -DBUILD_TESTS=OFF \
+                 -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
+                 -DASSEMBLER_WORKS=FALSE \
+                 -DVulkanHeaders_INCLUDE_DIR=${STAGING_INCDIR} \
+                 -DVulkanRegistry_DIR=${RECIPE_SYSROOT}/${datadir} \
+                 "
+
+# must choose x11 or wayland or both
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
+
+PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr"
+PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland"
+
+RRECOMMENDS:${PN} = "mesa-vulkan-drivers"
+
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.182.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.182.0.bb
deleted file mode 100644
index d0a298e..0000000
--- a/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.182.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Vulkan Utilities and Tools"
-DESCRIPTION = "Assist development by enabling developers to verify their applications correct use of the Vulkan API."
-HOMEPAGE = "https://www.khronos.org/vulkan/"
-BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Tools"
-SECTION = "libs"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=sdk-1.2.182"
-SRCREV = "9d3305731c3be8de05c9f223a79959d448506a37"
-
-S = "${WORKDIR}/git"
-
-inherit cmake features_check
-ANY_OF_DISTRO_FEATURES = "x11 wayland"
-REQUIRED_DISTRO_FEATURES = "vulkan"
-
-DEPENDS += "vulkan-headers vulkan-loader"
-
-EXTRA_OECMAKE = "\
-                 -DBUILD_TESTS=OFF \
-                 -DBUILD_CUBE=OFF \
-                 -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
-                 "
-
-# must choose x11 or wayland or both
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-
-PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr"
-PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland"
-
-UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.191.0.bb b/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.191.0.bb
new file mode 100644
index 0000000..5350b6e
--- /dev/null
+++ b/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.2.191.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Vulkan Utilities and Tools"
+DESCRIPTION = "Assist development by enabling developers to verify their applications correct use of the Vulkan API."
+HOMEPAGE = "https://www.khronos.org/vulkan/"
+BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Tools"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git"
+SRCREV = "f4974ccd170cf2338c0582f607af5d8dfc3dac51"
+
+S = "${WORKDIR}/git"
+
+inherit cmake features_check
+ANY_OF_DISTRO_FEATURES = "x11 wayland"
+REQUIRED_DISTRO_FEATURES = "vulkan"
+
+DEPENDS += "vulkan-headers vulkan-loader"
+
+EXTRA_OECMAKE = "\
+                 -DBUILD_TESTS=OFF \
+                 -DBUILD_CUBE=OFF \
+                 -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
+                 "
+
+# must choose x11 or wayland or both
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
+
+PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr"
+PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland"
+
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/poky/meta/recipes-graphics/waffle/waffle/0001-waffle-do-not-make-core-protocol-into-the-library.patch b/poky/meta/recipes-graphics/waffle/waffle/0001-waffle-do-not-make-core-protocol-into-the-library.patch
new file mode 100644
index 0000000..24b2de5
--- /dev/null
+++ b/poky/meta/recipes-graphics/waffle/waffle/0001-waffle-do-not-make-core-protocol-into-the-library.patch
@@ -0,0 +1,56 @@
+From 7610ec4b572d3a54d30fca6798f0c406f3fd8a46 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 26 Oct 2021 08:52:17 +0200
+Subject: [PATCH] waffle: do not make core protocol into the library
+
+None of the consumers (which is just piglit) use it, and
+this avoids host contamination from pkg-config suggesting
+wayland.xml from the host.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ meson.build            | 4 ----
+ src/waffle/meson.build | 7 -------
+ 2 files changed, 11 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index ffc02ff..0bb6128 100644
+--- a/meson.build
++++ b/meson.build
+@@ -104,10 +104,6 @@ else
+   dep_wayland_client = dependency(
+     'wayland-client', version : '>= 1.10', required : get_option('wayland'),
+   )
+-  if dep_wayland_client.found()
+-    wayland_core_xml = join_paths(dep_wayland_client.get_pkgconfig_variable('pkgdatadir'),
+-    'wayland.xml')
+-  endif
+   dep_wayland_egl = dependency(
+     'wayland-egl', version : '>= 9.1', required : get_option('wayland'),
+   )
+diff --git a/src/waffle/meson.build b/src/waffle/meson.build
+index 01898c8..6245868 100644
+--- a/src/waffle/meson.build
++++ b/src/waffle/meson.build
+@@ -88,12 +88,6 @@ if build_surfaceless
+ endif
+ 
+ if build_wayland
+-  wl_core_proto_c = custom_target(
+-    'wl-core-proto.c',
+-    input: wayland_core_xml,
+-    output: 'wl-core-proto.c',
+-    command: [prog_wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@'],
+-  )
+   wl_xdg_shell_proto_c = custom_target(
+     'wl-xdg-shell-proto.c',
+     input: wayland_xdg_shell_xml,
+@@ -114,7 +108,6 @@ if build_wayland
+     'wayland/wayland_wrapper.c',
+   )
+   files_libwaffle += [
+-    wl_core_proto_c,
+     wl_xdg_shell_proto_c,
+     wl_xdg_shell_proto_h,
+   ]
diff --git a/poky/meta/recipes-graphics/waffle/waffle_1.6.1.bb b/poky/meta/recipes-graphics/waffle/waffle_1.6.1.bb
deleted file mode 100644
index 3954940..0000000
--- a/poky/meta/recipes-graphics/waffle/waffle_1.6.1.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-SUMMARY = "A C library for selecting an OpenGL API and window system at runtime"
-DESCRIPTION = "A cross-platform C library that allows one to defer selection \
-of an OpenGL API and window system until runtime. For example, on Linux, Waffle \
-enables an application to select X11/EGL with an OpenGL 3.3 core profile, \
-Wayland with OpenGL ES2, and other window system / API combinations."
-HOMEPAGE = "http://www.waffle-gl.org/"
-BUGTRACKER = "https://gitlab.freedesktop.org/mesa/waffle"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4c5154407c2490750dd461c50ad94797 \
-                    file://include/waffle/waffle.h;endline=24;md5=61dbf8697f61c78645e75a93c585b1bf"
-
-SRC_URI = "http://waffle-gl.org/files/release/${BPN}-${PV}/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "c91529e579483f44fb330052872b9c73"
-SRC_URI[sha256sum] = "31565649ff0e2d8dff1b8f7f2264ab7a78452063c7e04adfc4ce03e64b655080"
-
-UPSTREAM_CHECK_URI = "http://www.waffle-gl.org/releases.html"
-
-inherit meson features_check lib_package bash-completion pkgconfig
-
-DEPENDS:append = " python3"
-
-# This should be overridden per-machine to reflect the capabilities of the GL
-# stack.
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11-egl', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
-                   surfaceless-egl gbm"
-
-# virtual/libgl requires opengl in DISTRO_FEATURES.
-REQUIRED_DISTRO_FEATURES += "${@bb.utils.contains('DEPENDS', 'virtual/${MLPREFIX}libgl', 'opengl', '', d)}"
-
-# I say virtual/libgl, actually wants gl.pc
-PACKAGECONFIG[glx] = "-Dglx=enabled,-Dglx=disabled,virtual/${MLPREFIX}libgl libx11"
-
-# I say virtual/libgl, actually wants wayland-egl.pc, egl.pc, and the wayland
-# DISTRO_FEATURE.
-PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,virtual/${MLPREFIX}libgl wayland"
-
-# I say virtual/libgl, actually wants gbm.pc egl.pc
-PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled,virtual/${MLPREFIX}libgl udev"
-
-# I say virtual/libgl, actually wants egl.pc
-PACKAGECONFIG[x11-egl] = "-Dx11_egl=enabled,-Dx11_egl=disabled,virtual/${MLPREFIX}libgl libxcb"
-PACKAGECONFIG[surfaceless-egl] = "-Dsurfaceless_egl=enabled,-Dsurfaceless_egl=disabled,virtual/${MLPREFIX}libgl"
-
-# TODO: optionally build manpages and examples
diff --git a/poky/meta/recipes-graphics/waffle/waffle_1.7.0.bb b/poky/meta/recipes-graphics/waffle/waffle_1.7.0.bb
new file mode 100644
index 0000000..846cd0d
--- /dev/null
+++ b/poky/meta/recipes-graphics/waffle/waffle_1.7.0.bb
@@ -0,0 +1,49 @@
+SUMMARY = "A C library for selecting an OpenGL API and window system at runtime"
+DESCRIPTION = "A cross-platform C library that allows one to defer selection \
+of an OpenGL API and window system until runtime. For example, on Linux, Waffle \
+enables an application to select X11/EGL with an OpenGL 3.3 core profile, \
+Wayland with OpenGL ES2, and other window system / API combinations."
+HOMEPAGE = "https://gitlab.freedesktop.org/mesa/waffle"
+BUGTRACKER = "https://gitlab.freedesktop.org/mesa/waffle"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4c5154407c2490750dd461c50ad94797 \
+                    file://include/waffle-1/waffle.h;endline=24;md5=61dbf8697f61c78645e75a93c585b1bf"
+
+SRC_URI = "git://gitlab.freedesktop.org/mesa/waffle.git;protocol=https \
+           file://0001-waffle-do-not-make-core-protocol-into-the-library.patch \
+           "
+SRCREV = "905c6c10f2483adf0cbfa024e2d3c2ed541fb300"
+S = "${WORKDIR}/git"
+
+inherit meson features_check lib_package bash-completion pkgconfig
+
+DEPENDS:append = " python3"
+
+# This should be overridden per-machine to reflect the capabilities of the GL
+# stack.
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11-egl', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
+                   surfaceless-egl gbm"
+
+# virtual/libgl requires opengl in DISTRO_FEATURES.
+REQUIRED_DISTRO_FEATURES += "${@bb.utils.contains('DEPENDS', 'virtual/${MLPREFIX}libgl', 'opengl', '', d)}"
+
+# I say virtual/libgl, actually wants gl.pc
+PACKAGECONFIG[glx] = "-Dglx=enabled,-Dglx=disabled,virtual/${MLPREFIX}libgl libx11"
+
+# I say virtual/libgl, actually wants wayland-egl.pc, egl.pc, and the wayland
+# DISTRO_FEATURE.
+PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,virtual/${MLPREFIX}libgl wayland wayland-native"
+
+# I say virtual/libgl, actually wants gbm.pc egl.pc
+PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled,virtual/${MLPREFIX}libgl udev"
+
+# I say virtual/libgl, actually wants egl.pc
+PACKAGECONFIG[x11-egl] = "-Dx11_egl=enabled,-Dx11_egl=disabled,virtual/${MLPREFIX}libgl libxcb"
+PACKAGECONFIG[surfaceless-egl] = "-Dsurfaceless_egl=enabled,-Dsurfaceless_egl=disabled,virtual/${MLPREFIX}libgl"
+
+# TODO: optionally build manpages and examples
+
+do_install:append() {
+    sed -i -e "s,${WORKDIR},,g" ${D}/${libdir}/cmake/Waffle/WaffleConfig.cmake
+}
diff --git a/poky/meta/recipes-graphics/wayland/libinput_1.18.1.bb b/poky/meta/recipes-graphics/wayland/libinput_1.18.1.bb
deleted file mode 100644
index 4e9be5e..0000000
--- a/poky/meta/recipes-graphics/wayland/libinput_1.18.1.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "Library to handle input devices in Wayland compositors"
-DESCRIPTION = "libinput is a library to handle input devices in Wayland \
-compositors and to provide a generic X.Org input driver. It provides \
-device detection, device handling, input device event processing and \
-abstraction so minimize the amount of custom input code compositors need to \
-provide the common set of functionality that users expect."
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bab4ac7dc1c10bc0fb037dc76c46ef8a"
-
-DEPENDS = "libevdev udev mtdev libcheck"
-
-SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \
-           file://run-ptest \
-           file://determinism.patch \
-           "
-SRC_URI[sha256sum] = "9ca14021fbc2523bc0610582c51f368321592040b6ca63becc2fa1ea11f1a7cb"
-
-UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
-
-inherit meson pkgconfig lib_package ptest
-
-# Patch out build directory, otherwise it leaks into ptest binary
-do_configure:append() {
-    sed -i -e "s,${WORKDIR},,g" config.h
-    if [ -e "litest-config.h" ]; then
-        sed -i -e "s,${WORKDIR},,g" litest-config.h
-    fi
-}
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[libwacom] = "-Dlibwacom=true,-Dlibwacom=false,libwacom"
-PACKAGECONFIG[gui] = "-Ddebug-gui=true,-Ddebug-gui=false,cairo gtk+3"
-
-UDEVDIR = "`pkg-config --variable=udevdir udev`"
-
-EXTRA_OEMESON += "-Dudev-dir=${UDEVDIR} \
-                  -Ddocumentation=false \
-                  ${@bb.utils.contains('PTEST_ENABLED', '1', '-Dtests=true -Dinstall-tests=true', '-Dtests=false -Dinstall-tests=false', d)} \
-                  -Dzshcompletiondir=no"
-
-# package name changed in 1.8.1 upgrade: make sure package upgrades work
-RPROVIDES:${PN} = "libinput"
-RREPLACES:${PN} = "libinput"
-RCONFLICTS:${PN} = "libinput"
-
-FILES:${PN}-ptest += "${libexecdir}/libinput/libinput-test-suite"
diff --git a/poky/meta/recipes-graphics/wayland/libinput_1.19.2.bb b/poky/meta/recipes-graphics/wayland/libinput_1.19.2.bb
new file mode 100644
index 0000000..590dee4
--- /dev/null
+++ b/poky/meta/recipes-graphics/wayland/libinput_1.19.2.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Library to handle input devices in Wayland compositors"
+DESCRIPTION = "libinput is a library to handle input devices in Wayland \
+compositors and to provide a generic X.Org input driver. It provides \
+device detection, device handling, input device event processing and \
+abstraction so minimize the amount of custom input code compositors need to \
+provide the common set of functionality that users expect."
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/"
+SECTION = "libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bab4ac7dc1c10bc0fb037dc76c46ef8a"
+
+DEPENDS = "libevdev udev mtdev libcheck"
+
+SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \
+           file://run-ptest \
+           file://determinism.patch \
+           "
+SRC_URI[sha256sum] = "0fc39f0af3ee1a77c60c34bc45391a4d0879169f7c0f7bbbeb5eef590b98b883"
+
+UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
+
+inherit meson pkgconfig lib_package ptest
+
+# Patch out build directory, otherwise it leaks into ptest binary
+do_configure:append() {
+    sed -i -e "s,${WORKDIR},,g" config.h
+    if [ -e "litest-config.h" ]; then
+        sed -i -e "s,${WORKDIR},,g" litest-config.h
+    fi
+}
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[libwacom] = "-Dlibwacom=true,-Dlibwacom=false,libwacom"
+PACKAGECONFIG[gui] = "-Ddebug-gui=true,-Ddebug-gui=false,cairo gtk+3"
+
+UDEVDIR = "`pkg-config --variable=udevdir udev`"
+
+EXTRA_OEMESON += "-Dudev-dir=${UDEVDIR} \
+                  -Ddocumentation=false \
+                  ${@bb.utils.contains('PTEST_ENABLED', '1', '-Dtests=true -Dinstall-tests=true', '-Dtests=false -Dinstall-tests=false', d)} \
+                  -Dzshcompletiondir=no"
+
+# package name changed in 1.8.1 upgrade: make sure package upgrades work
+RPROVIDES:${PN} = "libinput"
+RREPLACES:${PN} = "libinput"
+RCONFLICTS:${PN} = "libinput"
+
+FILES:${PN}-ptest += "${libexecdir}/libinput/libinput-test-suite"
diff --git a/poky/meta/recipes-graphics/wayland/wayland-protocols_1.21.bb b/poky/meta/recipes-graphics/wayland/wayland-protocols_1.21.bb
deleted file mode 100644
index 4a5a295..0000000
--- a/poky/meta/recipes-graphics/wayland/wayland-protocols_1.21.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Collection of additional Wayland protocols"
-DESCRIPTION = "Wayland protocols that add functionality not \
-available in the Wayland core protocol. Such protocols either add \
-completely new functionality, or extend the functionality of some other \
-protocol either in Wayland core, or some other protocol in \
-wayland-protocols."
-HOMEPAGE = "http://wayland.freedesktop.org"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
-                    file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53"
-
-SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
-           "
-SRC_URI[sha256sum] = "b99945842d8be18817c26ee77dafa157883af89268e15f4a5a1a1ff3ffa4cde5"
-
-UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
-
-inherit allarch autotools pkgconfig
-
-PACKAGES = "${PN}"
-FILES:${PN} += "${datadir}/pkgconfig/wayland-protocols.pc"
diff --git a/poky/meta/recipes-graphics/wayland/wayland-protocols_1.23.bb b/poky/meta/recipes-graphics/wayland/wayland-protocols_1.23.bb
new file mode 100644
index 0000000..60b6eb1
--- /dev/null
+++ b/poky/meta/recipes-graphics/wayland/wayland-protocols_1.23.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Collection of additional Wayland protocols"
+DESCRIPTION = "Wayland protocols that add functionality not \
+available in the Wayland core protocol. Such protocols either add \
+completely new functionality, or extend the functionality of some other \
+protocol either in Wayland core, or some other protocol in \
+wayland-protocols."
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
+                    file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53"
+
+SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
+           "
+SRC_URI[sha256sum] = "6c0af1915f96f615927a6270d025bd973ff1c58e521e4ca1fc9abfc914633f76"
+
+UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+
+inherit allarch autotools pkgconfig
+
+PACKAGES = "${PN}"
+FILES:${PN} += "${datadir}/pkgconfig/wayland-protocols.pc"
diff --git a/poky/meta/recipes-graphics/wayland/weston-init/weston-start b/poky/meta/recipes-graphics/wayland/weston-init/weston-start
index 0b93dc9..0f1bc4c 100755
--- a/poky/meta/recipes-graphics/wayland/weston-init/weston-start
+++ b/poky/meta/recipes-graphics/wayland/weston-init/weston-start
@@ -21,6 +21,14 @@
 # Add openvt extra argument
 add_openvt_argument() {
 	openvt_args="$openvt_args $1"
+
+}
+## Add module to --modules argument
+add_weston_module() {
+	if [[ "x${weston_modules}" == "x" ]]; then
+		weston_modules="--modules "
+	fi;
+	weston_modules+="${1},"
 }
 
 if [ -n "$WAYLAND_DISPLAY" ]; then
@@ -68,6 +76,9 @@
 
 		# process module
 		. $m
+		if [[ x"{$weston_modules}" != "x" ]]; then
+			add_weston_argument "${weston_modules}"
+		fi;
 	done
 fi
 
diff --git a/poky/meta/recipes-graphics/wayland/weston/systemd-notify.weston-start b/poky/meta/recipes-graphics/wayland/weston/systemd-notify.weston-start
new file mode 100644
index 0000000..a97e7b3
--- /dev/null
+++ b/poky/meta/recipes-graphics/wayland/weston/systemd-notify.weston-start
@@ -0,0 +1,9 @@
+#!/bin/sh
+  
+# SPDX-FileCopyrightText: Huawei Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+
+if [[ -x "/usr/lib/weston/systemd-notify.so" ]]; then
+        add_weston_module "systemd-notify.so"
+fi
diff --git a/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb b/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb
index 1f1d62e..59ab217 100644
--- a/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb
+++ b/poky/meta/recipes-graphics/wayland/weston_9.0.0.bb
@@ -9,6 +9,7 @@
            file://weston.png \
            file://weston.desktop \
            file://xwayland.weston-start \
+           file://systemd-notify.weston-start \
            file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
            file://0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch \
            file://0001-meson.build-fix-incorrect-header.patch \
@@ -111,6 +112,10 @@
 		install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland
 	fi
 
+	if [ "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'yes', 'no', d)}" = "yes" ]; then
+		install -Dm 644 ${WORKDIR}/systemd-notify.weston-start ${D}${datadir}/weston-start/systemd-notify
+	fi
+
 	if [ "${@bb.utils.contains('PACKAGECONFIG', 'launch', 'yes', 'no', d)}" = "yes" ]; then
 		chmod u+s ${D}${bindir}/weston-launch
 	fi
diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.1.0.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.1.0.bb
deleted file mode 100644
index 3b5af3f..0000000
--- a/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.1.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-driver-input.inc
-
-SUMMARY = "Generic input driver for the X.Org server based on libinput"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a22925127bd3c827c384cedd23ed2309"
-
-DEPENDS += "libinput"
-
-SRC_URI[sha256sum] = "e11d2a41419124a6e9b148f1df181bf7819fc7398c8ee9a1b6390b0742c68d16"
-
-FILES:${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.0.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.0.bb
new file mode 100644
index 0000000..b0168df
--- /dev/null
+++ b/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.0.bb
@@ -0,0 +1,11 @@
+require xorg-driver-input.inc
+
+SUMMARY = "Generic input driver for the X.Org server based on libinput"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a22925127bd3c827c384cedd23ed2309"
+
+DEPENDS += "libinput"
+
+SRC_URI[sha256sum] = "f80da3c514fe1cbf57fa1b1bd6ff97f6b0a1f87466ad89247bac59cd0a5869f6"
+
+FILES:${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.99.2.bb b/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.99.2.bb
deleted file mode 100644
index 8afa9aa..0000000
--- a/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.99.2.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require xorg-lib-common.inc
-
-SUMMARY = "XI: X Input extension library"
-
-DESCRIPTION = "libxi is an extension to the X11 protocol to support \
-input devices other than the core X keyboard and pointer.  It allows \
-client programs to select input from these devices independently from \
-each other and independently from the core devices."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=17b064789fab936a1c58c4e13d965b0f \
-                    file://src/XIGetDevFocus.c;endline=23;md5=cdfb0d435a33ec57ea0d1e8e395b729f"
-
-DEPENDS += "libxext xorgproto libxfixes"
-
-PE = "1"
-
-XORG_PN = "libXi"
-
-SRC_URI[sha256sum] = "2ce90ebcb7fa0c3ed671924f1268b8f4c500fff62e1284699fc413e182a7896b"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/xorg-lib/libxi_1.8.bb b/poky/meta/recipes-graphics/xorg-lib/libxi_1.8.bb
new file mode 100644
index 0000000..83101c5
--- /dev/null
+++ b/poky/meta/recipes-graphics/xorg-lib/libxi_1.8.bb
@@ -0,0 +1,22 @@
+require xorg-lib-common.inc
+
+SUMMARY = "XI: X Input extension library"
+
+DESCRIPTION = "libxi is an extension to the X11 protocol to support \
+input devices other than the core X keyboard and pointer.  It allows \
+client programs to select input from these devices independently from \
+each other and independently from the core devices."
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=17b064789fab936a1c58c4e13d965b0f \
+                    file://src/XIGetDevFocus.c;endline=23;md5=cdfb0d435a33ec57ea0d1e8e395b729f"
+
+DEPENDS += "libxext xorgproto libxfixes"
+
+PE = "1"
+
+XORG_PN = "libXi"
+
+SRC_URI[sha256sum] = "2ed181446a61c7337576467870bc5336fc9e222a281122d96c4d39a3298bba00"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.0.bb b/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.0.bb
deleted file mode 100644
index 57c318c..0000000
--- a/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.0.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Generic XKB keymap library"
-DESCRIPTION = "libxkbcommon is a keymap compiler and support library which \
-processes a reduced subset of keymaps as defined by the XKB specification."
-HOMEPAGE = "http://www.xkbcommon.org"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e525ed9809e1f8a07cf4bce8b09e8b87"
-LICENSE = "MIT & MIT-style"
-
-DEPENDS = "util-macros flex-native bison-native"
-
-SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "7b09e098ea69bc3054f0c57a9a25fda571c4df22398811606e32b5fffeb75e7b"
-
-UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
-
-inherit meson pkgconfig
-
-EXTRA_OEMESON = "-Denable-docs=false -Denable-xkbregistry=false"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)}"
-PACKAGECONFIG[x11] = "-Denable-x11=true,-Denable-x11=false,libxcb xkeyboard-config,"
-PACKAGECONFIG[wayland] = "-Denable-wayland=true,-Denable-wayland=false,wayland-native wayland wayland-protocols,"
-
-# Fix a following runtime error:
-# xkbcommon: ERROR: couldn't find a Compose file for locale "C"
-RDEPENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libx11-locale', 'libx11-compose-data', d)}"
diff --git a/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.1.bb b/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.1.bb
new file mode 100644
index 0000000..0e75ed0
--- /dev/null
+++ b/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.1.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Generic XKB keymap library"
+DESCRIPTION = "libxkbcommon is a keymap compiler and support library which \
+processes a reduced subset of keymaps as defined by the XKB specification."
+HOMEPAGE = "http://www.xkbcommon.org"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e525ed9809e1f8a07cf4bce8b09e8b87"
+LICENSE = "MIT & MIT-style"
+
+DEPENDS = "util-macros flex-native bison-native"
+
+SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "b3c710d27a2630054e1e1399c85b7f330ef03359b460f0c1b3b587fd01fe9234"
+
+UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
+
+inherit meson pkgconfig
+
+EXTRA_OEMESON = "-Denable-docs=false -Denable-xkbregistry=false"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)}"
+PACKAGECONFIG[x11] = "-Denable-x11=true,-Denable-x11=false,libxcb xkeyboard-config,"
+PACKAGECONFIG[wayland] = "-Denable-wayland=true,-Denable-wayland=false,wayland-native wayland wayland-protocols,"
+
+# Fix a following runtime error:
+# xkbcommon: ERROR: couldn't find a Compose file for locale "C"
+RDEPENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libx11-locale', 'libx11-compose-data', d)}"
diff --git a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.33.bb b/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.33.bb
deleted file mode 100644
index 138e451..0000000
--- a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.33.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Keyboard configuration database for X Window"
-
-DESCRIPTION = "The non-arch keyboard configuration database for X \
-Window.  The goal is to provide the consistent, well-structured, \
-frequently released open source of X keyboard configuration data for X \
-Window System implementations.  The project is targeted to XKB-based \
-systems."
-
-HOMEPAGE = "http://freedesktop.org/wiki/Software/XKeyboardConfig"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xkeyboard-config"
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
-
-SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2"
-SRC_URI[sha256sum] = "657fd790d6dcf781cd395de4cf726120a5b0f93ba91dfb2628bcc70ae8b1d3bc"
-
-SECTION = "x11/libs"
-DEPENDS = "util-macros libxslt-native"
-
-EXTRA_OECONF = "--with-xkb-rules-symlink=xorg --disable-runtime-deps"
-
-FILES:${PN} += "${datadir}/X11/xkb"
-
-inherit autotools pkgconfig gettext python3native
-
-do_install:append () {
-    install -d ${D}${datadir}/X11/xkb/compiled
-    cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg
-}
diff --git a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.34.bb b/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.34.bb
new file mode 100644
index 0000000..5d431a4
--- /dev/null
+++ b/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.34.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Keyboard configuration database for X Window"
+
+DESCRIPTION = "The non-arch keyboard configuration database for X \
+Window.  The goal is to provide the consistent, well-structured, \
+frequently released open source of X keyboard configuration data for X \
+Window System implementations.  The project is targeted to XKB-based \
+systems."
+
+HOMEPAGE = "http://freedesktop.org/wiki/Software/XKeyboardConfig"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xkeyboard-config"
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
+
+SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2"
+SRC_URI[sha256sum] = "b321d27686ee7e6610ffe7b56e28d5bbf60625a1f595124cd320c0caa717b8ce"
+
+SECTION = "x11/libs"
+DEPENDS = "util-macros libxslt-native"
+
+EXTRA_OECONF = "--with-xkb-rules-symlink=xorg --disable-runtime-deps"
+
+FILES:${PN} += "${datadir}/X11/xkb"
+
+inherit autotools pkgconfig gettext python3native
+
+do_install:append () {
+    install -d ${D}${datadir}/X11/xkb/compiled
+    cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg
+}
diff --git a/poky/meta/recipes-graphics/xorg-proto/xorgproto_2021.4.99.2.bb b/poky/meta/recipes-graphics/xorg-proto/xorgproto_2021.4.99.2.bb
deleted file mode 100644
index 1780e78..0000000
--- a/poky/meta/recipes-graphics/xorg-proto/xorgproto_2021.4.99.2.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "X Window System unified protocol definitions"
-DESCRIPTION = "This package provides the headers and specification documents defining \
-the core protocol and (many) extensions for the X Window System"
-HOMEPAGE = "http://www.x.org"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg"
-
-SECTION = "x11/libs"
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=dfc4bd2b0568b31725b85b0604e69b56"
-
-SRC_URI = "${XORG_MIRROR}/individual/proto/${BP}.tar.bz2"
-SRC_URI[sha256sum] = "c38878053179c6f8bc2daeeeeb4710b5fbf0e46db5b3134aee4a1977ffb06e7a"
-
-inherit meson
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[legacy] = "-Dlegacy=true,-Dlegacy=false"
-
-# Datadir only used to install pc files, $datadir/pkgconfig
-datadir="${libdir}"
-# ${PN} is empty so we need to tweak -dev and -dbg package dependencies
-RDEPENDS:${PN}-dev = ""
-RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-graphics/xorg-proto/xorgproto_2021.5.bb b/poky/meta/recipes-graphics/xorg-proto/xorgproto_2021.5.bb
new file mode 100644
index 0000000..8edb459
--- /dev/null
+++ b/poky/meta/recipes-graphics/xorg-proto/xorgproto_2021.5.bb
@@ -0,0 +1,25 @@
+SUMMARY = "X Window System unified protocol definitions"
+DESCRIPTION = "This package provides the headers and specification documents defining \
+the core protocol and (many) extensions for the X Window System"
+HOMEPAGE = "http://www.x.org"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg"
+
+SECTION = "x11/libs"
+LICENSE = "MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=dfc4bd2b0568b31725b85b0604e69b56"
+
+SRC_URI = "${XORG_MIRROR}/individual/proto/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "aa2f663b8dbd632960b24f7477aa07d901210057f6ab1a1db5158732569ca015"
+
+inherit meson
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[legacy] = "-Dlegacy=true,-Dlegacy=false"
+
+# Datadir only used to install pc files, $datadir/pkgconfig
+datadir="${libdir}"
+# ${PN} is empty so we need to tweak -dev and -dbg package dependencies
+RDEPENDS:${PN}-dev = ""
+RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb b/poky/meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb
index c1adbb6..c541478 100644
--- a/poky/meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb
+++ b/poky/meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb
@@ -6,6 +6,7 @@
 
 SRC_URI += " \
 file://0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch \
+file://0001-tests-Makefile-do-not-use-Werror.patch \
 "
 
 EXTRA_OEMAKE='KERNEL_DIR="${STAGING_EXECPREFIXDIR}" PREFIX="${D}"'
diff --git a/poky/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch b/poky/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch
new file mode 100644
index 0000000..347a4ae
--- /dev/null
+++ b/poky/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch
@@ -0,0 +1,24 @@
+From e2c2895d52761ddc6384a31364236dd13f677c34 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 10 Sep 2021 10:44:42 +0200
+Subject: [PATCH] tests/Makefile: do not use -Werror
+
+Otherwise, openssl 3 deprecation warnings become errors.
+Reported at https://github.com/cryptodev-linux/cryptodev-linux/issues/67
+
+Upstream-Status: Inappropriate [upstream needs to update the code]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ tests/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/Makefile b/tests/Makefile
+index 2fb7a9a..e94f80e 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -1,4 +1,4 @@
+-CFLAGS += -I.. $(CRYPTODEV_CFLAGS) -Wall -Werror
++CFLAGS += -I.. $(CRYPTODEV_CFLAGS) -Wall
+ 
+ comp_progs := cipher_comp hash_comp hmac_comp
+ 
diff --git a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210818.bb b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210818.bb
deleted file mode 100644
index 0249332..0000000
--- a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210818.bb
+++ /dev/null
@@ -1,1067 +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-atheros_firmware \
-    & Firmware-atmel \
-    & Firmware-broadcom_bcm43xx \
-    & Firmware-ca0132 \
-    & Firmware-cavium \
-    & Firmware-chelsio_firmware \
-    & Firmware-cw1200 \
-    & Firmware-cypress \
-    & Firmware-dib0700 \
-    & Firmware-e100 \
-    & Firmware-ene_firmware \
-    & Firmware-fw_sst_0f28 \
-    & Firmware-go7007 \
-    & Firmware-GPLv2 \
-    & Firmware-hfi1_firmware \
-    & Firmware-i2400m \
-    & Firmware-i915 \
-    & Firmware-ibt_firmware \
-    & Firmware-ice \
-    & Firmware-it913x \
-    & Firmware-iwlwifi_firmware \
-    & Firmware-IntcSST2 \
-    & Firmware-kaweth \
-    & Firmware-Lontium \
-    & Firmware-Marvell \
-    & Firmware-moxa \
-    & Firmware-myri10ge_firmware \
-    & Firmware-netronome \
-    & Firmware-nvidia \
-    & Firmware-OLPC \
-    & Firmware-ath9k-htc \
-    & Firmware-phanfw \
-    & Firmware-qat \
-    & Firmware-qcom \
-    & 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-rtlwifi_firmware \
-    & Firmware-imx-sdma_firmware \
-    & Firmware-siano \
-    & Firmware-tda7706-firmware \
-    & 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=d357524f5099e2a3db3c1838921c593f \
-                    file://LICENSE.amd-ucode;md5=3c5399dc9148d7f0e1f41e34b69cf14f \
-                    file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \
-                    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://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://LICENCE.i2400m;md5=14b901969e23c41881327c0d9e4b7d36 \
-                    file://LICENSE.i915;md5=2b0b2e0d20984affd4490ba2cba02570 \
-                    file://LICENCE.ibt_firmware;md5=fdbee1ddfe0fb7ab0b2fcd6b454a366b \
-                    file://LICENSE.ice;md5=742ab4850f2670792940e6d15c974b2f \
-                    file://LICENCE.IntcSST2;md5=9e7d8bea77612d7cc7d9e9b54b623062 \
-                    file://LICENCE.it913x;md5=1fbf727bfb6a949810c4dbfa7e6ce4f8 \
-                    file://LICENCE.iwlwifi_firmware;md5=2ce6786e0fc11ac6e36b54bb9b799f1b \
-                    file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \
-                    file://LICENSE.Lontium;md5=4ec8dc582ff7295f39e2ca6a7b0be2b6 \
-                    file://LICENCE.Marvell;md5=28b6ed8bd04ba105af6e4dcd6e997772 \
-                    file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \
-                    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://LICENCE.OLPC;md5=5b917f9d8c061991be4f6f5f108719cd \
-                    file://LICENCE.open-ath9k-htc-firmware;md5=1b33c9f4d17bc4d457bdb23727046837 \
-                    file://LICENCE.phanfw;md5=954dcec0e051f9409812b561ea743bfa \
-                    file://LICENCE.qat_firmware;md5=9e7d8bea77612d7cc7d9e9b54b623062 \
-                    file://LICENSE.qcom;md5=164e3362a538eb11d3ac51e8e134294b \
-                    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.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \
-                    file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \
-                    file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \
-                    file://LICENCE.tda7706-firmware.txt;md5=835997cf5e3c131d0dddd695c7d9103e \
-                    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=15ad289bf2359e8ecf613f3b04f72fab \
-                    "
-
-# 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-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-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-i2400m] = "LICENCE.i2400m"
-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-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-Lontium] = "LICENSE.Lontium"
-NO_GENERIC_LICENSE[Firmware-Marvell] = "LICENCE.Marvell"
-NO_GENERIC_LICENSE[Firmware-mediatek] = "LICENCE.mediatek"
-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-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-qat] = "LICENCE.qat_firmware"
-NO_GENERIC_LICENSE[Firmware-qcom] = "LICENSE.qcom"
-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-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-tda7706-firmware] = "LICENCE.tda7706-firmware.txt"
-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"
-
-SRC_URI[sha256sum] = "bef3d317c348d962b3a1b95cb4e19ea4f282e18112b2c669cff74f9267ce3893"
-
-inherit allarch
-
-CLEANBROKEN = "1"
-
-do_compile() {
-	:
-}
-
-do_install() {
-        oe_runmake 'DESTDIR=${D}' 'FIRMWAREDIR=${nonarch_base_libdir}/firmware' install
-        cp GPL-2 LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/
-}
-
-
-PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \
-             ${PN}-mt7601u-license ${PN}-mt7601u \
-             ${PN}-radeon-license ${PN}-radeon \
-             ${PN}-marvell-license ${PN}-pcie8897 ${PN}-pcie8997 \
-             ${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}-vt6656-license ${PN}-vt6656 \
-             ${PN}-rs9113 ${PN}-rs9116 \
-             ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \
-             ${PN}-rtl8168 \
-             ${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}-atheros-license ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k \
-             ${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}-adsp-sst-license ${PN}-adsp-sst \
-             ${PN}-bnx2-mips \
-             ${PN}-liquidio \
-             ${PN}-nvidia-license \
-             ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \
-             ${PN}-nvidia-gpu \
-             ${PN}-netronome-license ${PN}-netronome \
-             ${PN}-qat ${PN}-qat-license \
-             ${PN}-qcom-license \
-             ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 \
-             ${PN}-qcom-vpu-1.0 ${PN}-qcom-vpu-2.0 \
-             ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a530 \
-             ${PN}-qcom-adreno-a630 ${PN}-qcom-adreno-a650 ${PN}-qcom-adreno-a660 \
-             ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \
-             ${PN}-qcom-sm8250-audio ${PN}-qcom-sm8250-compute \
-             ${PN}-amlogic-vdec-license ${PN}-amlogic-vdec \
-             ${PN}-lt9611uxc ${PN}-lontium-license \
-             ${PN}-whence-license \
-             ${PN}-license \
-             "
-
-# For atheros
-LICENSE:${PN}-ar9170 = "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}-ar9170 = " \
-  ${nonarch_base_libdir}/firmware/ar9170*.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}-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"
-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"
-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}-mt7601u = "Firmware-ralink_a_mediatek_company_firmware"
-LICENSE:${PN}-mt7601u-license = "Firmware-ralink_a_mediatek_company_firmware"
-
-FILES:${PN}-mt7601u-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware"
-FILES:${PN}-mt7601u = " \
-  ${nonarch_base_libdir}/firmware/mt7601u.bin \
-"
-
-RDEPENDS:${PN}-mt7601u += "${PN}-mt7601u-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 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 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 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}-rtl8821 = "Firmware-rtlwifi_firmware"
-LICENSE:${PN}-rtl-license = "Firmware-rtlwifi_firmware"
-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 \
-"
-FILES:${PN}-rtl8168 = " \
-  ${nonarch_base_libdir}/firmware/rtl_nic/rtl8168*.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}-rtl8168 += "${PN}-whence-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 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 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 \
-"
-
-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-mips
-#
-# which is a separate case to the other Broadcom firmwares since its
-# license is contained in the shared WHENCE file.
-
-LICENSE:${PN}-bnx2-mips = "WHENCE"
-LICENSE:${PN}-whence-license = "WHENCE"
-
-FILES:${PN}-bnx2-mips = "${nonarch_base_libdir}/firmware/bnx2/bnx2-mips-09-6.2.1b.fw"
-FILES:${PN}-whence-license = "${nonarch_base_libdir}/firmware/WHENCE"
-
-RDEPENDS:${PN}-bnx2-mips += "${PN}-whence-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"
-
-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"
-
-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"
-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"
-
-# For QCOM VPU/GPU and SDM845
-LICENSE:${PN}-qcom-license = "Firmware-qcom"
-FILES:${PN}-qcom-license   = "${nonarch_base_libdir}/firmware/LICENSE.qcom ${nonarch_base_libdir}/firmware/qcom/NOTICE.txt"
-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-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-a3xx = "${nonarch_base_libdir}/firmware/qcom/a300_*.fw ${nonarch_base_libdir}/firmware/a300_*.fw"
-FILES:${PN}-qcom-adreno-a530 = "${nonarch_base_libdir}/firmware/qcom/a530*.*"
-FILES:${PN}-qcom-adreno-a630 = "${nonarch_base_libdir}/firmware/qcom/a630*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/a630*.*"
-FILES:${PN}-qcom-adreno-a650 = "${nonarch_base_libdir}/firmware/qcom/a650*.* ${nonarch_base_libdir}/firmware/qcom/sm8250/a650*.*"
-FILES:${PN}-qcom-adreno-a660 = "${nonarch_base_libdir}/firmware/qcom/a660*.*"
-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"
-FILES:${PN}-qcom-sm8250-audio = "${nonarch_base_libdir}/firmware/qcom/sm8250/adsp*.*"
-FILES:${PN}-qcom-sm8250-compute = "${nonarch_base_libdir}/firmware/qcom/sm8250/cdsp*.*"
-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-vpu-1.0 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-vpu-2.0 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-adreno-a3xx = "${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-sdm845-audio = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sdm845-compute = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sdm845-modem = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sm8250-audio = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sm8250-compute = "${PN}-qcom-license"
-
-FILES:${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio"
-
-# 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-cw1200 \
-    & Firmware-dib0700 \
-    & Firmware-e100 \
-    & Firmware-ene_firmware \
-    & Firmware-fw_sst_0f28 \
-    & Firmware-go7007 \
-    & Firmware-hfi1_firmware \
-    & Firmware-i2400m \
-    & Firmware-ibt_firmware \
-    & Firmware-it913x \
-    & Firmware-IntcSST2 \
-    & Firmware-kaweth \
-    & Firmware-moxa \
-    & Firmware-myri10ge_firmware \
-    & Firmware-nvidia \
-    & 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-tda7706-firmware \
-    & 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"
diff --git a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210919.bb b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210919.bb
new file mode 100644
index 0000000..48c01d9
--- /dev/null
+++ b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20210919.bb
@@ -0,0 +1,1067 @@
+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-atheros_firmware \
+    & Firmware-atmel \
+    & Firmware-broadcom_bcm43xx \
+    & Firmware-ca0132 \
+    & Firmware-cavium \
+    & Firmware-chelsio_firmware \
+    & Firmware-cw1200 \
+    & Firmware-cypress \
+    & Firmware-dib0700 \
+    & Firmware-e100 \
+    & Firmware-ene_firmware \
+    & Firmware-fw_sst_0f28 \
+    & Firmware-go7007 \
+    & Firmware-GPLv2 \
+    & Firmware-hfi1_firmware \
+    & Firmware-i2400m \
+    & Firmware-i915 \
+    & Firmware-ibt_firmware \
+    & Firmware-ice \
+    & Firmware-it913x \
+    & Firmware-iwlwifi_firmware \
+    & Firmware-IntcSST2 \
+    & Firmware-kaweth \
+    & Firmware-Lontium \
+    & Firmware-Marvell \
+    & Firmware-moxa \
+    & Firmware-myri10ge_firmware \
+    & Firmware-netronome \
+    & Firmware-nvidia \
+    & Firmware-OLPC \
+    & Firmware-ath9k-htc \
+    & Firmware-phanfw \
+    & Firmware-qat \
+    & Firmware-qcom \
+    & 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-rtlwifi_firmware \
+    & Firmware-imx-sdma_firmware \
+    & Firmware-siano \
+    & Firmware-tda7706-firmware \
+    & 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=d357524f5099e2a3db3c1838921c593f \
+                    file://LICENSE.amd-ucode;md5=3c5399dc9148d7f0e1f41e34b69cf14f \
+                    file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \
+                    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://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://LICENCE.i2400m;md5=14b901969e23c41881327c0d9e4b7d36 \
+                    file://LICENSE.i915;md5=2b0b2e0d20984affd4490ba2cba02570 \
+                    file://LICENCE.ibt_firmware;md5=fdbee1ddfe0fb7ab0b2fcd6b454a366b \
+                    file://LICENSE.ice;md5=742ab4850f2670792940e6d15c974b2f \
+                    file://LICENCE.IntcSST2;md5=9e7d8bea77612d7cc7d9e9b54b623062 \
+                    file://LICENCE.it913x;md5=1fbf727bfb6a949810c4dbfa7e6ce4f8 \
+                    file://LICENCE.iwlwifi_firmware;md5=2ce6786e0fc11ac6e36b54bb9b799f1b \
+                    file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \
+                    file://LICENSE.Lontium;md5=4ec8dc582ff7295f39e2ca6a7b0be2b6 \
+                    file://LICENCE.Marvell;md5=28b6ed8bd04ba105af6e4dcd6e997772 \
+                    file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \
+                    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://LICENCE.OLPC;md5=5b917f9d8c061991be4f6f5f108719cd \
+                    file://LICENCE.open-ath9k-htc-firmware;md5=1b33c9f4d17bc4d457bdb23727046837 \
+                    file://LICENCE.phanfw;md5=954dcec0e051f9409812b561ea743bfa \
+                    file://LICENCE.qat_firmware;md5=9e7d8bea77612d7cc7d9e9b54b623062 \
+                    file://LICENSE.qcom;md5=164e3362a538eb11d3ac51e8e134294b \
+                    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.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \
+                    file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \
+                    file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \
+                    file://LICENCE.tda7706-firmware.txt;md5=835997cf5e3c131d0dddd695c7d9103e \
+                    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=76f012f7e9b2260d34eccf5726374f08 \
+                    "
+
+# 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-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-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-i2400m] = "LICENCE.i2400m"
+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-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-Lontium] = "LICENSE.Lontium"
+NO_GENERIC_LICENSE[Firmware-Marvell] = "LICENCE.Marvell"
+NO_GENERIC_LICENSE[Firmware-mediatek] = "LICENCE.mediatek"
+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-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-qat] = "LICENCE.qat_firmware"
+NO_GENERIC_LICENSE[Firmware-qcom] = "LICENSE.qcom"
+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-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-tda7706-firmware] = "LICENCE.tda7706-firmware.txt"
+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"
+
+SRC_URI[sha256sum] = "2fb22a5d7d23bf1f5800ab8152b39a00a445fbf4923de5a01b59d3f6253f0a9f"
+
+inherit allarch
+
+CLEANBROKEN = "1"
+
+do_compile() {
+	:
+}
+
+do_install() {
+        oe_runmake 'DESTDIR=${D}' 'FIRMWAREDIR=${nonarch_base_libdir}/firmware' install
+        cp GPL-2 LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/
+}
+
+
+PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \
+             ${PN}-mt7601u-license ${PN}-mt7601u \
+             ${PN}-radeon-license ${PN}-radeon \
+             ${PN}-marvell-license ${PN}-pcie8897 ${PN}-pcie8997 \
+             ${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}-vt6656-license ${PN}-vt6656 \
+             ${PN}-rs9113 ${PN}-rs9116 \
+             ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \
+             ${PN}-rtl8168 \
+             ${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}-atheros-license ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k \
+             ${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}-adsp-sst-license ${PN}-adsp-sst \
+             ${PN}-bnx2-mips \
+             ${PN}-liquidio \
+             ${PN}-nvidia-license \
+             ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \
+             ${PN}-nvidia-gpu \
+             ${PN}-netronome-license ${PN}-netronome \
+             ${PN}-qat ${PN}-qat-license \
+             ${PN}-qcom-license \
+             ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 \
+             ${PN}-qcom-vpu-1.0 ${PN}-qcom-vpu-2.0 \
+             ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a530 \
+             ${PN}-qcom-adreno-a630 ${PN}-qcom-adreno-a650 ${PN}-qcom-adreno-a660 \
+             ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \
+             ${PN}-qcom-sm8250-audio ${PN}-qcom-sm8250-compute \
+             ${PN}-amlogic-vdec-license ${PN}-amlogic-vdec \
+             ${PN}-lt9611uxc ${PN}-lontium-license \
+             ${PN}-whence-license \
+             ${PN}-license \
+             "
+
+# For atheros
+LICENSE:${PN}-ar9170 = "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}-ar9170 = " \
+  ${nonarch_base_libdir}/firmware/ar9170*.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}-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"
+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"
+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}-mt7601u = "Firmware-ralink_a_mediatek_company_firmware"
+LICENSE:${PN}-mt7601u-license = "Firmware-ralink_a_mediatek_company_firmware"
+
+FILES:${PN}-mt7601u-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware"
+FILES:${PN}-mt7601u = " \
+  ${nonarch_base_libdir}/firmware/mt7601u.bin \
+"
+
+RDEPENDS:${PN}-mt7601u += "${PN}-mt7601u-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 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 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 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}-rtl8821 = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl-license = "Firmware-rtlwifi_firmware"
+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 \
+"
+FILES:${PN}-rtl8168 = " \
+  ${nonarch_base_libdir}/firmware/rtl_nic/rtl8168*.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}-rtl8168 += "${PN}-whence-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 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 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 \
+"
+
+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-mips
+#
+# which is a separate case to the other Broadcom firmwares since its
+# license is contained in the shared WHENCE file.
+
+LICENSE:${PN}-bnx2-mips = "WHENCE"
+LICENSE:${PN}-whence-license = "WHENCE"
+
+FILES:${PN}-bnx2-mips = "${nonarch_base_libdir}/firmware/bnx2/bnx2-mips-09-6.2.1b.fw"
+FILES:${PN}-whence-license = "${nonarch_base_libdir}/firmware/WHENCE"
+
+RDEPENDS:${PN}-bnx2-mips += "${PN}-whence-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"
+
+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"
+
+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"
+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"
+
+# For QCOM VPU/GPU and SDM845
+LICENSE:${PN}-qcom-license = "Firmware-qcom"
+FILES:${PN}-qcom-license   = "${nonarch_base_libdir}/firmware/LICENSE.qcom ${nonarch_base_libdir}/firmware/qcom/NOTICE.txt"
+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-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-a3xx = "${nonarch_base_libdir}/firmware/qcom/a300_*.fw ${nonarch_base_libdir}/firmware/a300_*.fw"
+FILES:${PN}-qcom-adreno-a530 = "${nonarch_base_libdir}/firmware/qcom/a530*.*"
+FILES:${PN}-qcom-adreno-a630 = "${nonarch_base_libdir}/firmware/qcom/a630*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/a630*.*"
+FILES:${PN}-qcom-adreno-a650 = "${nonarch_base_libdir}/firmware/qcom/a650*.* ${nonarch_base_libdir}/firmware/qcom/sm8250/a650*.*"
+FILES:${PN}-qcom-adreno-a660 = "${nonarch_base_libdir}/firmware/qcom/a660*.*"
+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"
+FILES:${PN}-qcom-sm8250-audio = "${nonarch_base_libdir}/firmware/qcom/sm8250/adsp*.*"
+FILES:${PN}-qcom-sm8250-compute = "${nonarch_base_libdir}/firmware/qcom/sm8250/cdsp*.*"
+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-vpu-1.0 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-vpu-2.0 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a3xx = "${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-sdm845-audio = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sdm845-compute = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sdm845-modem = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sm8250-audio = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sm8250-compute = "${PN}-qcom-license"
+
+FILES:${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio"
+
+# 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-cw1200 \
+    & Firmware-dib0700 \
+    & Firmware-e100 \
+    & Firmware-ene_firmware \
+    & Firmware-fw_sst_0f28 \
+    & Firmware-go7007 \
+    & Firmware-hfi1_firmware \
+    & Firmware-i2400m \
+    & Firmware-ibt_firmware \
+    & Firmware-it913x \
+    & Firmware-IntcSST2 \
+    & Firmware-kaweth \
+    & Firmware-moxa \
+    & Firmware-myri10ge_firmware \
+    & Firmware-nvidia \
+    & 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-tda7706-firmware \
+    & 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"
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb b/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
index f58b5ab..005b688 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
@@ -38,6 +38,7 @@
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
 DEPENDS += "openssl-native util-linux-native"
+DEPENDS += "gmp-native libmpc-native"
 
 COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv64)"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb
index 097dd7b..2795887 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb
@@ -11,13 +11,13 @@
         raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
 }
 
-SRCREV_machine ?= "31e2870ebfd892708e8c5f3aced96565e2456ed9"
-SRCREV_meta ?= "bce2813b162bb472c137fb503951295a931c25b6"
+SRCREV_machine ?= "1d0eb980c3f825c193b07e925090a1a3dd752dbc"
+SRCREV_meta ?= "9ff1e75562075e35b5c8649b0a1aece50d8531b7"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
 
-LINUX_VERSION ?= "5.10.63"
+LINUX_VERSION ?= "5.10.75"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.14.bb b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.14.bb
index a147e63..e5dc3c3 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.14.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.14.bb
@@ -11,13 +11,13 @@
         raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
 }
 
-SRCREV_machine ?= "7630ebb9fd510cf7aa31b6f1dd472f3b0442afb3"
-SRCREV_meta ?= "42d2cf670ed06f4dddd2a035611a519ea68e2d26"
+SRCREV_machine ?= "725e45fd0b3b344905a44398b1d7ba64b76c6af2"
+SRCREV_meta ?= "11430e73de6cbc577b69ab4844250346146eb3cf"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.14;destsuffix=${KMETA}"
 
-LINUX_VERSION ?= "5.14.6"
+LINUX_VERSION ?= "5.14.14"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb
index 0693a57..94d0473 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb
@@ -6,7 +6,7 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
-LINUX_VERSION ?= "5.10.63"
+LINUX_VERSION ?= "5.10.75"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -15,9 +15,9 @@
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-SRCREV_machine:qemuarm ?= "96ec3026283d29493f757a077f9c51e6d698c634"
-SRCREV_machine ?= "29ff88e6cdf170fbf71e27de32c09e4f6db95078"
-SRCREV_meta ?= "bce2813b162bb472c137fb503951295a931c25b6"
+SRCREV_machine:qemuarm ?= "773ad5db722c1cbac17a944ab2fd4f1d9d72c55d"
+SRCREV_machine ?= "b1ee56b4baf8a85fa02965b76dbc4ba7de898540"
+SRCREV_meta ?= "9ff1e75562075e35b5c8649b0a1aece50d8531b7"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb
index 20ff40d..0da8ae5 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb
@@ -6,7 +6,7 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
-LINUX_VERSION ?= "5.14.6"
+LINUX_VERSION ?= "5.14.14"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -15,9 +15,9 @@
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-SRCREV_machine:qemuarm ?= "ee2ccc84e65ade5ba0f8e1a700fba29a755746a1"
-SRCREV_machine ?= "7ae156be3bdbf033839f7f3ec2e9a0ffffb18818"
-SRCREV_meta ?= "42d2cf670ed06f4dddd2a035611a519ea68e2d26"
+SRCREV_machine:qemuarm ?= "bdbb56b345a04855091cbf667c70d761f417ddff"
+SRCREV_machine ?= "28c011f5b095822798d2a8320f104abc0fc216cd"
+SRCREV_meta ?= "11430e73de6cbc577b69ab4844250346146eb3cf"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb b/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb
index 7c16343..e7f8cc1 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto_5.10.bb
@@ -13,17 +13,17 @@
 KBRANCH:qemux86-64 ?= "v5.10/standard/base"
 KBRANCH:qemumips64 ?= "v5.10/standard/mti-malta64"
 
-SRCREV_machine:qemuarm ?= "36e0cc294f77cf72b01a1f9ea62bb13d1ab0693e"
-SRCREV_machine:qemuarm64 ?= "a1c9c936088b6cf4ec56f5180672d6f0e8e3b955"
-SRCREV_machine:qemumips ?= "4962920baaee3235448b48e992a3da0259dcfa57"
-SRCREV_machine:qemuppc ?= "57b30ad7f8a6c3be0ad8eac742476da3f97c23f3"
-SRCREV_machine:qemuriscv64 ?= "164ed895bc1e94722e80fe6496b176f6bb815cd4"
-SRCREV_machine:qemuriscv32 ?= "164ed895bc1e94722e80fe6496b176f6bb815cd4"
-SRCREV_machine:qemux86 ?= "164ed895bc1e94722e80fe6496b176f6bb815cd4"
-SRCREV_machine:qemux86-64 ?= "164ed895bc1e94722e80fe6496b176f6bb815cd4"
-SRCREV_machine:qemumips64 ?= "a615aa60bc10bea5262f2d65da7ddff4ba32146e"
-SRCREV_machine ?= "164ed895bc1e94722e80fe6496b176f6bb815cd4"
-SRCREV_meta ?= "bce2813b162bb472c137fb503951295a931c25b6"
+SRCREV_machine:qemuarm ?= "eaf94169288a0cdaa7f919e81b9cde11637328a0"
+SRCREV_machine:qemuarm64 ?= "0a2409ae4ca5c3efc6633891d807c189f8c2e6ec"
+SRCREV_machine:qemumips ?= "73ca3b526488435d4f2a404642078b3b111879af"
+SRCREV_machine:qemuppc ?= "14edaae440f2835071ffacced9f240cdd8cf7094"
+SRCREV_machine:qemuriscv64 ?= "97699547a2625645320510db2237e8619a7954ef"
+SRCREV_machine:qemuriscv32 ?= "97699547a2625645320510db2237e8619a7954ef"
+SRCREV_machine:qemux86 ?= "97699547a2625645320510db2237e8619a7954ef"
+SRCREV_machine:qemux86-64 ?= "97699547a2625645320510db2237e8619a7954ef"
+SRCREV_machine:qemumips64 ?= "9e86c3417c2c6a61a52664ebcfdd541f6af7e099"
+SRCREV_machine ?= "97699547a2625645320510db2237e8619a7954ef"
+SRCREV_meta ?= "9ff1e75562075e35b5c8649b0a1aece50d8531b7"
 
 # remap qemuarm to qemuarma15 for the 5.8 kernel
 # KMACHINE:qemuarm ?= "qemuarma15"
@@ -32,7 +32,7 @@
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-LINUX_VERSION ?= "5.10.63"
+LINUX_VERSION ?= "5.10.75"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
 DEPENDS += "openssl-native util-linux-native"
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto_5.14.bb b/poky/meta/recipes-kernel/linux/linux-yocto_5.14.bb
index 0c6fbff..ed20557 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto_5.14.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto_5.14.bb
@@ -13,17 +13,17 @@
 KBRANCH:qemux86-64 ?= "v5.14/standard/base"
 KBRANCH:qemumips64 ?= "v5.14/standard/mti-malta64"
 
-SRCREV_machine:qemuarm ?= "8226a3a65df2dbae0fe71e9ff54cba70a9ba85e5"
-SRCREV_machine:qemuarm64 ?= "7ae156be3bdbf033839f7f3ec2e9a0ffffb18818"
-SRCREV_machine:qemumips ?= "b5389debd85300e24b877f25c2e90381f1df7678"
-SRCREV_machine:qemuppc ?= "7ae156be3bdbf033839f7f3ec2e9a0ffffb18818"
-SRCREV_machine:qemuriscv64 ?= "7ae156be3bdbf033839f7f3ec2e9a0ffffb18818"
-SRCREV_machine:qemuriscv32 ?= "7ae156be3bdbf033839f7f3ec2e9a0ffffb18818"
-SRCREV_machine:qemux86 ?= "7ae156be3bdbf033839f7f3ec2e9a0ffffb18818"
-SRCREV_machine:qemux86-64 ?= "7ae156be3bdbf033839f7f3ec2e9a0ffffb18818"
-SRCREV_machine:qemumips64 ?= "56cc67b699194944809832f4c8f58b9828f02bf9"
-SRCREV_machine ?= "7ae156be3bdbf033839f7f3ec2e9a0ffffb18818"
-SRCREV_meta ?= "42d2cf670ed06f4dddd2a035611a519ea68e2d26"
+SRCREV_machine:qemuarm ?= "3e04a89e8e89fe2f799cd201f6994ff515ca95c1"
+SRCREV_machine:qemuarm64 ?= "28c011f5b095822798d2a8320f104abc0fc216cd"
+SRCREV_machine:qemumips ?= "566b7915f715e00e4ebb2a4121239de4cb1f33b5"
+SRCREV_machine:qemuppc ?= "28c011f5b095822798d2a8320f104abc0fc216cd"
+SRCREV_machine:qemuriscv64 ?= "28c011f5b095822798d2a8320f104abc0fc216cd"
+SRCREV_machine:qemuriscv32 ?= "28c011f5b095822798d2a8320f104abc0fc216cd"
+SRCREV_machine:qemux86 ?= "28c011f5b095822798d2a8320f104abc0fc216cd"
+SRCREV_machine:qemux86-64 ?= "28c011f5b095822798d2a8320f104abc0fc216cd"
+SRCREV_machine:qemumips64 ?= "13d9e1b6481efec1e72733134e83b981e0adf6bb"
+SRCREV_machine ?= "28c011f5b095822798d2a8320f104abc0fc216cd"
+SRCREV_meta ?= "11430e73de6cbc577b69ab4844250346146eb3cf"
 
 # 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
@@ -31,7 +31,7 @@
 # normal PREFERRED_VERSION settings.
 BBCLASSEXTEND = "devupstream:target"
 DEFAULT_PREFERENCE:class-devupstream = "-1"
-SRCREV_machine:class-devupstream ?= "6a7ababc0268063d0798c46d5859a90ee996612f"
+SRCREV_machine:class-devupstream ?= "fe024e004fa31dc64d18440c006b02cd8d722a03"
 PN:class-devupstream = "linux-yocto-upstream"
 KBRANCH:class-devupstream = "v5.14/base"
 
@@ -42,11 +42,11 @@
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.14;destsuffix=${KMETA}"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-LINUX_VERSION ?= "5.14.6"
+LINUX_VERSION ?= "5.14.14"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
 DEPENDS += "openssl-native util-linux-native"
-DEPENDS += "gmp-native"
+DEPENDS += "gmp-native libmpc-native"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0001-tests-wait-some-more-before-analysing-traces-or-star.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-tests-wait-some-more-before-analysing-traces-or-star.patch
deleted file mode 100644
index c4cac9c..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-tools/0001-tests-wait-some-more-before-analysing-traces-or-star.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 8d9daede0882d239b0a47b0f7a6db68ba4934a7d Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex@linutronix.de>
-Date: Sat, 4 Sep 2021 13:57:39 +0200
-Subject: [PATCH] tests: wait some more before analysing traces or starting
- tracing
-
-Otherwise, there are sporadic race failures where lttng tracing
-is stopped before all expected events are collected or is started too soon, e.g.:
-
-PASS: tools/tracker/test_event_tracker 205 - Traced application stopped.
-PASS: tools/tracker/test_event_tracker 206 - Stop lttng tracing for session
-PASS: tools/tracker/test_event_tracker 207 - Destroy session tracker
-FAIL: tools/tracker/test_event_tracker 208 - Validate empty trace
-
-PASS: ust/namespaces/test_ns_contexts_change 42 - Stop lttng tracing for session mnt_ns
-PASS: ust/namespaces/test_ns_contexts_change 43 - Destroy session mnt_ns
-PASS: ust/namespaces/test_ns_contexts_change 44 - Wait after kill session daemon
-PASS: ust/namespaces/test_ns_contexts_change 45 - Validate trace for event mnt_ns = 4026531840, 1000 events
-PASS: ust/namespaces/test_ns_contexts_change 46 - Read a total of 1000 events, expected 1000
-PASS: ust/namespaces/test_ns_contexts_change 47 - Validate trace for event mnt_ns = 4026532303, 233 events
-FAIL: ust/namespaces/test_ns_contexts_change 48 - Read a total of 233 events, expected 1000
-
-This is a hack; issue should be fixed upstream with explicit syncs.
-It has been reported here: https://bugs.lttng.org/issues/1217
-
-Upstream-Status: Inappropriate [needs a real fix]
-Signed-off-by: Alexander Kanavin <alex@linutronix.de>
----
- tests/regression/tools/tracker/test_event_tracker       | 8 ++++++++
- tests/regression/ust/namespaces/test_ns_contexts_change | 2 ++
- 2 files changed, 10 insertions(+)
-
-diff --git a/tests/regression/tools/tracker/test_event_tracker b/tests/regression/tools/tracker/test_event_tracker
-index feb3787..a0f2257 100755
---- a/tests/regression/tools/tracker/test_event_tracker
-+++ b/tests/regression/tools/tracker/test_event_tracker
-@@ -130,6 +130,8 @@ function test_event_vpid_tracker()
- 
- 	prepare_"$domain"_app
- 
-+sleep 5
-+
- 	start_lttng_tracing_ok
- 
- 	if [ "$expect_event" -eq 1 ]; then
-@@ -173,6 +175,8 @@ function test_event_pid_tracker()
- 
- 	prepare_"$domain"_app
- 
-+sleep 5
-+
- 	start_lttng_tracing_ok
- 
- 	if [ "$expect_event" -eq 1 ]; then
-@@ -275,6 +279,8 @@ function test_event_vpid_track_untrack()
- 
- 	prepare_"$domain"_app
- 
-+sleep 5
-+
- 	start_lttng_tracing_ok
- 
- 	lttng_track_"$domain"_ok "--vpid ${CHILD_PID}"
-@@ -315,6 +321,8 @@ function test_event_pid_track_untrack()
- 
- 	prepare_"$domain"_app
- 
-+sleep 5
-+
- 	start_lttng_tracing_ok
- 
- 	lttng_track_"$domain"_ok "--pid ${CHILD_PID}"
-diff --git a/tests/regression/ust/namespaces/test_ns_contexts_change b/tests/regression/ust/namespaces/test_ns_contexts_change
-index c0af15e..b111bfe 100755
---- a/tests/regression/ust/namespaces/test_ns_contexts_change
-+++ b/tests/regression/ust/namespaces/test_ns_contexts_change
-@@ -79,6 +79,8 @@ function test_ns()
- 
- 	touch "$file_sync_before_last"
- 
-+sleep 5
-+
- 	# stop and destroy
- 	stop_lttng_tracing_ok "$session_name"
- 	destroy_lttng_session_ok "$session_name"
--- 
-2.20.1
-
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools_2.13.0.bb b/poky/meta/recipes-kernel/lttng/lttng-tools_2.13.0.bb
deleted file mode 100644
index 47cab42..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-tools_2.13.0.bb
+++ /dev/null
@@ -1,189 +0,0 @@
-SECTION = "devel"
-SUMMARY = "Linux Trace Toolkit Control"
-DESCRIPTION = "The Linux trace toolkit is a suite of tools designed \
-to extract program execution details from the Linux operating system \
-and interpret them."
-HOMEPAGE = "https://github.com/lttng/lttng-tools"
-
-LICENSE = "GPLv2 & LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=40ef17463fbd6f377db3c47b1cbaded8 \
-                    file://LICENSES/GPL-2.0;md5=e68f69a54b44ba526ad7cb963e18fbce \
-                    file://LICENSES/LGPL-2.1;md5=9920968d0f2ff585ce61fae30344dd95"
-
-include lttng-platforms.inc
-
-DEPENDS = "liburcu popt libxml2 util-linux bison-native"
-RDEPENDS:${PN} = "libgcc"
-RRECOMMENDS:${PN} += "${LTTNGMODULES}"
-RDEPENDS:${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod ${LTTNGMODULES} sed python3-core grep"
-RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils"
-RDEPENDS:${PN}-ptest:append:libc-musl = " musl-utils"
-# babelstats.pl wants getopt-long
-RDEPENDS:${PN}-ptest += "perl-module-getopt-long"
-
-PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \
-                 am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \
-                 PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \
-"
-PACKAGECONFIG ??= "${LTTNGUST} kmod"
-PACKAGECONFIG[python] = "--enable-python-bindings ${PYTHON_OPTION},,python3 swig-native"
-PACKAGECONFIG[lttng-ust] = "--with-lttng-ust, --without-lttng-ust, lttng-ust"
-PACKAGECONFIG[kmod] = "--with-kmod, --without-kmod, kmod"
-PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native"
-
-SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
-           file://0001-tests-do-not-strip-a-helper-library.patch \
-           file://run-ptest \
-           file://lttng-sessiond.service \
-           file://determinism.patch \
-           file://0001-src-common-correct-header-location.patch \
-           file://0001-tests-wait-some-more-before-analysing-traces-or-star.patch \
-           "
-
-SRC_URI[sha256sum] = "8dc894f9a7a840e943c1c344345c75f001a9529daa9157f1a0e6175c081c29e6"
-
-inherit autotools ptest pkgconfig useradd python3-dir manpages systemd
-
-CACHED_CONFIGUREVARS = "PGREP=/usr/bin/pgrep"
-
-SYSTEMD_SERVICE:${PN} = "lttng-sessiond.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM:${PN} = "tracing"
-
-FILES:${PN} += "${libdir}/lttng/libexec/* ${datadir}/xml/lttng \
-                ${PYTHON_SITEPACKAGES_DIR}/*"
-FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
-FILES:${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
-
-# Since files are installed into ${libdir}/lttng/libexec we match 
-# the libexec insane test so skip it.
-# Python module needs to keep _lttng.so
-INSANE_SKIP:${PN} = "libexec dev-so"
-INSANE_SKIP:${PN}-dbg = "libexec"
-
-PRIVATE_LIBS:${PN}-ptest = "libfoo.so"
-
-do_install:append () {
-    # install systemd unit file
-    install -d ${D}${systemd_system_unitdir}
-    install -m 0644 ${WORKDIR}/lttng-sessiond.service ${D}${systemd_system_unitdir}
-}
-
-do_install_ptest () {
-    for f in Makefile tests/Makefile tests/utils/utils.sh tests/regression/tools/save-load/*.lttng \
-            tests/regression/tools/save-load/configuration/load-42*.lttng tests/regression/tools/health/test_health.sh \
-            tests/regression/tools/metadata/utils.sh tests/regression/tools/rotation/rotate_utils.sh \
-            tests/regression/tools/notification/util_event_generator.sh \
-            tests/regression/tools/base-path/*.lttng; do
-        install -D "${B}/$f" "${D}${PTEST_PATH}/$f"
-    done
-
-    for f in tests/utils/tap-driver.sh config/test-driver src/common/config/session.xsd src/common/mi-lttng-4.1.xsd; do
-        install -D "${S}/$f" "${D}${PTEST_PATH}/$f"
-    done
-
-    # Patch in the correct path for the custom libraries a helper executable needs
-    sed -i -e 's!FIXMEPTESTPATH!${PTEST_PATH}!' "${D}${PTEST_PATH}/run-ptest"
-
-    # Prevent 'make check' from recursing into non-test subdirectories.
-    sed -i -e 's!^SUBDIRS = .*!SUBDIRS = tests!' "${D}${PTEST_PATH}/Makefile"
-
-    # We don't need these
-    sed -i -e '/dist_noinst_SCRIPTS = /,/^$/d' "${D}${PTEST_PATH}/tests/Makefile"
-
-    # We shouldn't need to build anything in tests/utils
-    sed -i -e 's!am__append_1 = . utils!am__append_1 = . !' \
-        "${D}${PTEST_PATH}/tests/Makefile"
-
-    # Copy the tests directory tree and the executables and
-    # Makefiles found within.
-    for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do
-        install -d "${D}${PTEST_PATH}/tests/$d"
-        find "${B}/tests/$d" -maxdepth 1 -executable -type f \
-            -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
-        # Take all .py scripts for tests using the python bindings.
-        find "${B}/tests/$d" -maxdepth 1 -type f -name "*.py" \
-            -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
-        test -r "${B}/tests/$d/Makefile" && \
-            install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile"
-    done
-
-    for d in $(find "${B}/tests" -type d -name .libs -printf '%P ') ; do
-        for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do
-            cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f
-            case $f in
-                *.so|userspace-probe-elf-binary)
-                    install -d ${D}${PTEST_PATH}/tests/$d/
-                    ln -s  ../$f ${D}${PTEST_PATH}/tests/$d/$f
-                    # Remove any rpath/runpath to pass QA check.
-                    chrpath --delete ${D}${PTEST_PATH}/tests/$d/$f
-                    ;;
-            esac
-        done
-    done
-
-    chrpath --delete ${D}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary
-    chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libbar.so
-    chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libfoo.so
-
-    #
-    # Use the versioned libs of liblttng-ust-dl.
-    #
-    ustdl="${D}${PTEST_PATH}/tests/regression/ust/ust-dl/test_ust-dl.py"
-    if [ -e $ustdl ]; then
-        sed -i -e 's!:liblttng-ust-dl.so!:liblttng-ust-dl.so.0!' $ustdl
-    fi
-
-    install ${B}/tests/unit/ini_config/sample.ini ${D}${PTEST_PATH}/tests/unit/ini_config/
-
-    # We shouldn't need to build anything in tests/regression/tools
-    sed -i -e 's!^SUBDIRS = tools !SUBDIRS = !' \
-        "${D}${PTEST_PATH}/tests/regression/Makefile"
-
-    # Prevent attempts to update Makefiles during test runs, and
-    # silence "Making check in $SUBDIR" messages.
-    find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
-        sed -i -e '/Makefile:/,/^$/d' -e '/%: %.in/,/^$/d' \
-        -e '/echo "Making $$target in $$subdir"; \\/d' \
-        -e 's/^srcdir = \(.*\)/srcdir = ./' \
-        -e 's/^builddir = \(.*\)/builddir = ./' \
-        -e 's/^all-am:.*/all-am:/' \
-        {} +
-
-    find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
-        touch -r "${B}/Makefile" {} +
-
-    #
-    # Need to stop generated binaries from rebuilding by removing their source dependencies
-    #
-    sed -e 's#\(^test.*OBJECTS.=\)#disable\1#g' \
-        -e 's#\(^test.*DEPENDENCIES.=\)#disable\1#g' \
-        -e 's#\(^test.*SOURCES.=\)#disable\1#g' \
-        -e 's#\(^test.*LDADD.=\)#disable\1#g' \
-        -i ${D}${PTEST_PATH}/tests/unit/Makefile
-
-    # Fix hardcoded build path
-    sed -e 's#TESTAPP_PATH=.*/tests/regression/#TESTAPP_PATH="${PTEST_PATH}/tests/regression/#' \
-        -i ${D}${PTEST_PATH}/tests/regression/ust/python-logging/test_python_logging
-
-    # Substitute links to installed binaries.
-    for prog in lttng lttng-relayd lttng-sessiond lttng-consumerd lttng-crash; do
-        exedir="${D}${PTEST_PATH}/src/bin/${prog}"
-        install -d "$exedir"
-        case "$prog" in
-            lttng-consumerd)
-                ln -s "${libdir}/lttng/libexec/$prog" "$exedir"
-                ;;
-            *)
-                ln -s "${bindir}/$prog" "$exedir"
-                ;;
-        esac
-    done
-}
-
-INHIBIT_PACKAGE_STRIP_FILES = "\
-    ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary \
-    ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary \
-    "
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools_2.13.1.bb b/poky/meta/recipes-kernel/lttng/lttng-tools_2.13.1.bb
new file mode 100644
index 0000000..063d8e8
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools_2.13.1.bb
@@ -0,0 +1,188 @@
+SECTION = "devel"
+SUMMARY = "Linux Trace Toolkit Control"
+DESCRIPTION = "The Linux trace toolkit is a suite of tools designed \
+to extract program execution details from the Linux operating system \
+and interpret them."
+HOMEPAGE = "https://github.com/lttng/lttng-tools"
+
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=40ef17463fbd6f377db3c47b1cbaded8 \
+                    file://LICENSES/GPL-2.0;md5=e68f69a54b44ba526ad7cb963e18fbce \
+                    file://LICENSES/LGPL-2.1;md5=9920968d0f2ff585ce61fae30344dd95"
+
+include lttng-platforms.inc
+
+DEPENDS = "liburcu popt libxml2 util-linux bison-native"
+RDEPENDS:${PN} = "libgcc"
+RRECOMMENDS:${PN} += "${LTTNGMODULES}"
+RDEPENDS:${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod ${LTTNGMODULES} sed python3-core grep"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils"
+RDEPENDS:${PN}-ptest:append:libc-musl = " musl-utils"
+# babelstats.pl wants getopt-long
+RDEPENDS:${PN}-ptest += "perl-module-getopt-long"
+
+PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \
+                 am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \
+                 PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \
+"
+PACKAGECONFIG ??= "${LTTNGUST} kmod"
+PACKAGECONFIG[python] = "--enable-python-bindings ${PYTHON_OPTION},,python3 swig-native"
+PACKAGECONFIG[lttng-ust] = "--with-lttng-ust, --without-lttng-ust, lttng-ust"
+PACKAGECONFIG[kmod] = "--with-kmod, --without-kmod, kmod"
+PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native"
+
+SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
+           file://0001-tests-do-not-strip-a-helper-library.patch \
+           file://run-ptest \
+           file://lttng-sessiond.service \
+           file://determinism.patch \
+           file://0001-src-common-correct-header-location.patch \
+           "
+
+SRC_URI[sha256sum] = "cfe6df7da831fc07fd07ce46b442c2ec1074c167af73f3a1b1d2fba0c453c8b5"
+
+inherit autotools ptest pkgconfig useradd python3-dir manpages systemd
+
+CACHED_CONFIGUREVARS = "PGREP=/usr/bin/pgrep"
+
+SYSTEMD_SERVICE:${PN} = "lttng-sessiond.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM:${PN} = "tracing"
+
+FILES:${PN} += "${libdir}/lttng/libexec/* ${datadir}/xml/lttng \
+                ${PYTHON_SITEPACKAGES_DIR}/*"
+FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
+FILES:${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
+
+# Since files are installed into ${libdir}/lttng/libexec we match 
+# the libexec insane test so skip it.
+# Python module needs to keep _lttng.so
+INSANE_SKIP:${PN} = "libexec dev-so"
+INSANE_SKIP:${PN}-dbg = "libexec"
+
+PRIVATE_LIBS:${PN}-ptest = "libfoo.so"
+
+do_install:append () {
+    # install systemd unit file
+    install -d ${D}${systemd_system_unitdir}
+    install -m 0644 ${WORKDIR}/lttng-sessiond.service ${D}${systemd_system_unitdir}
+}
+
+do_install_ptest () {
+    for f in Makefile tests/Makefile tests/utils/utils.sh tests/regression/tools/save-load/*.lttng \
+            tests/regression/tools/save-load/configuration/load-42*.lttng tests/regression/tools/health/test_health.sh \
+            tests/regression/tools/metadata/utils.sh tests/regression/tools/rotation/rotate_utils.sh \
+            tests/regression/tools/notification/util_event_generator.sh \
+            tests/regression/tools/base-path/*.lttng; do
+        install -D "${B}/$f" "${D}${PTEST_PATH}/$f"
+    done
+
+    for f in tests/utils/tap-driver.sh config/test-driver src/common/config/session.xsd src/common/mi-lttng-4.1.xsd; do
+        install -D "${S}/$f" "${D}${PTEST_PATH}/$f"
+    done
+
+    # Patch in the correct path for the custom libraries a helper executable needs
+    sed -i -e 's!FIXMEPTESTPATH!${PTEST_PATH}!' "${D}${PTEST_PATH}/run-ptest"
+
+    # Prevent 'make check' from recursing into non-test subdirectories.
+    sed -i -e 's!^SUBDIRS = .*!SUBDIRS = tests!' "${D}${PTEST_PATH}/Makefile"
+
+    # We don't need these
+    sed -i -e '/dist_noinst_SCRIPTS = /,/^$/d' "${D}${PTEST_PATH}/tests/Makefile"
+
+    # We shouldn't need to build anything in tests/utils
+    sed -i -e 's!am__append_1 = . utils!am__append_1 = . !' \
+        "${D}${PTEST_PATH}/tests/Makefile"
+
+    # Copy the tests directory tree and the executables and
+    # Makefiles found within.
+    for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do
+        install -d "${D}${PTEST_PATH}/tests/$d"
+        find "${B}/tests/$d" -maxdepth 1 -executable -type f \
+            -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
+        # Take all .py scripts for tests using the python bindings.
+        find "${B}/tests/$d" -maxdepth 1 -type f -name "*.py" \
+            -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
+        test -r "${B}/tests/$d/Makefile" && \
+            install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile"
+    done
+
+    for d in $(find "${B}/tests" -type d -name .libs -printf '%P ') ; do
+        for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do
+            cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f
+            case $f in
+                *.so|userspace-probe-elf-binary)
+                    install -d ${D}${PTEST_PATH}/tests/$d/
+                    ln -s  ../$f ${D}${PTEST_PATH}/tests/$d/$f
+                    # Remove any rpath/runpath to pass QA check.
+                    chrpath --delete ${D}${PTEST_PATH}/tests/$d/$f
+                    ;;
+            esac
+        done
+    done
+
+    chrpath --delete ${D}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary
+    chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libbar.so
+    chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libfoo.so
+
+    #
+    # Use the versioned libs of liblttng-ust-dl.
+    #
+    ustdl="${D}${PTEST_PATH}/tests/regression/ust/ust-dl/test_ust-dl.py"
+    if [ -e $ustdl ]; then
+        sed -i -e 's!:liblttng-ust-dl.so!:liblttng-ust-dl.so.0!' $ustdl
+    fi
+
+    install ${B}/tests/unit/ini_config/sample.ini ${D}${PTEST_PATH}/tests/unit/ini_config/
+
+    # We shouldn't need to build anything in tests/regression/tools
+    sed -i -e 's!^SUBDIRS = tools !SUBDIRS = !' \
+        "${D}${PTEST_PATH}/tests/regression/Makefile"
+
+    # Prevent attempts to update Makefiles during test runs, and
+    # silence "Making check in $SUBDIR" messages.
+    find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
+        sed -i -e '/Makefile:/,/^$/d' -e '/%: %.in/,/^$/d' \
+        -e '/echo "Making $$target in $$subdir"; \\/d' \
+        -e 's/^srcdir = \(.*\)/srcdir = ./' \
+        -e 's/^builddir = \(.*\)/builddir = ./' \
+        -e 's/^all-am:.*/all-am:/' \
+        {} +
+
+    find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
+        touch -r "${B}/Makefile" {} +
+
+    #
+    # Need to stop generated binaries from rebuilding by removing their source dependencies
+    #
+    sed -e 's#\(^test.*OBJECTS.=\)#disable\1#g' \
+        -e 's#\(^test.*DEPENDENCIES.=\)#disable\1#g' \
+        -e 's#\(^test.*SOURCES.=\)#disable\1#g' \
+        -e 's#\(^test.*LDADD.=\)#disable\1#g' \
+        -i ${D}${PTEST_PATH}/tests/unit/Makefile
+
+    # Fix hardcoded build path
+    sed -e 's#TESTAPP_PATH=.*/tests/regression/#TESTAPP_PATH="${PTEST_PATH}/tests/regression/#' \
+        -i ${D}${PTEST_PATH}/tests/regression/ust/python-logging/test_python_logging
+
+    # Substitute links to installed binaries.
+    for prog in lttng lttng-relayd lttng-sessiond lttng-consumerd lttng-crash; do
+        exedir="${D}${PTEST_PATH}/src/bin/${prog}"
+        install -d "$exedir"
+        case "$prog" in
+            lttng-consumerd)
+                ln -s "${libdir}/lttng/libexec/$prog" "$exedir"
+                ;;
+            *)
+                ln -s "${bindir}/$prog" "$exedir"
+                ;;
+        esac
+    done
+}
+
+INHIBIT_PACKAGE_STRIP_FILES = "\
+    ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary \
+    ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary \
+    "
diff --git a/poky/meta/recipes-kernel/lttng/lttng-ust_2.13.0.bb b/poky/meta/recipes-kernel/lttng/lttng-ust_2.13.0.bb
index 4ec92c0..7c6a074 100644
--- a/poky/meta/recipes-kernel/lttng/lttng-ust_2.13.0.bb
+++ b/poky/meta/recipes-kernel/lttng/lttng-ust_2.13.0.bb
@@ -16,6 +16,7 @@
 include lttng-platforms.inc
 
 EXTRA_OECONF = "--disable-numa"
+CPPFLAGS:append:arm = "${@oe.utils.vartrue('DEBUG_BUILD', '-DUATOMIC_NO_LINK_ERROR', '', d)}"
 
 DEPENDS = "liburcu util-linux"
 RDEPENDS:${PN}-bin = "python3-core"
diff --git a/poky/meta/recipes-kernel/powertop/powertop/0001-src-fix-compatibility-with-ncurses-6.3.patch b/poky/meta/recipes-kernel/powertop/powertop/0001-src-fix-compatibility-with-ncurses-6.3.patch
new file mode 100644
index 0000000..84b05ac
--- /dev/null
+++ b/poky/meta/recipes-kernel/powertop/powertop/0001-src-fix-compatibility-with-ncurses-6.3.patch
@@ -0,0 +1,52 @@
+From 76d3f0851520bc8488e432f423941f1e72cc7405 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 25 Oct 2021 17:47:23 +0200
+Subject: [PATCH] src: fix compatibility with ncurses 6.3
+
+Upstream-Status: Submitted [https://github.com/fenrus75/powertop/pull/92]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ src/devices/devfreq.cpp | 2 +-
+ src/display.cpp         | 2 +-
+ src/lib.cpp             | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/devices/devfreq.cpp b/src/devices/devfreq.cpp
+index 0509d0f..b194ac4 100644
+--- a/src/devices/devfreq.cpp
++++ b/src/devices/devfreq.cpp
+@@ -297,7 +297,7 @@ void display_devfreq_devices(void)
+ 			df->fill_freq_utilization(j, buf);
+ 			strcat(fline, buf);
+ 			strcat(fline, "\n");
+-			wprintw(win, fline);
++			wprintw(win, "%s", fline);
+ 		}
+ 		wprintw(win, "\n");
+ 	}
+diff --git a/src/display.cpp b/src/display.cpp
+index 7131144..cc03919 100644
+--- a/src/display.cpp
++++ b/src/display.cpp
+@@ -125,7 +125,7 @@ void show_tab(unsigned int tab)
+ 
+ 	c = bottom_lines[tab_names[tab]].c_str();
+ 	if (c && strlen(c) > 0)
+-		mvwprintw(bottom_line, 0,0, c);
++		mvwprintw(bottom_line, 0,0, "%s", c);
+ 	else
+ 		mvwprintw(bottom_line, 0, 0,
+ 			"<ESC> %s | <TAB> / <Shift + TAB> %s | ", _("Exit"),
+diff --git a/src/lib.cpp b/src/lib.cpp
+index 5e48f37..5cd1c4a 100644
+--- a/src/lib.cpp
++++ b/src/lib.cpp
+@@ -583,7 +583,7 @@ void ui_notify_user_ncurses(const char *frmt, ...)
+ 	 * buffer */
+ 	vsnprintf(notify, UI_NOTIFY_BUFF_SZ - 1, frmt, list);
+ 	va_end(list);
+-	mvprintw(1, 0, notify);
++	mvprintw(1, 0, "%s", notify);
+ 	attroff(COLOR_PAIR(1));
+ }
+ 
diff --git a/poky/meta/recipes-kernel/powertop/powertop_2.14.bb b/poky/meta/recipes-kernel/powertop/powertop_2.14.bb
index c176cba..3a7c3ba 100644
--- a/poky/meta/recipes-kernel/powertop/powertop_2.14.bb
+++ b/poky/meta/recipes-kernel/powertop/powertop_2.14.bb
@@ -7,8 +7,9 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
 
 SRC_URI = "git://github.com/fenrus75/powertop;protocol=https \
-    file://0001-wakeup_xxx.h-include-limits.h.patch \
-"
+           file://0001-wakeup_xxx.h-include-limits.h.patch \
+           file://0001-src-fix-compatibility-with-ncurses-6.3.patch \
+           "
 SRCREV = "52f022f9bbe6e060fba11701d657a8d9762702ba"
 
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch b/poky/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch
new file mode 100644
index 0000000..b53e107
--- /dev/null
+++ b/poky/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch
@@ -0,0 +1,61 @@
+From 191f528da19193d713d94ee252e2485efd9af4d3 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 25 Oct 2021 17:59:24 +0200
+Subject: [PATCH] staprun: address ncurses 6.3 failures
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ staprun/monitor.c | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/staprun/monitor.c b/staprun/monitor.c
+index 478634c09..f4fbfd686 100644
+--- a/staprun/monitor.c
++++ b/staprun/monitor.c
+@@ -448,12 +448,12 @@ void monitor_render(void)
+       if (active_window == 0)
+         wattron(status, A_BOLD);
+       wprintw(status, "\n%*s\t%*s\t%*s\t%*s\t%*s\t%*s\t%s\n",
+-              width[p_index], HIGHLIGHT("index", p_index, comp_fn_index),
+-              width[p_state], HIGHLIGHT("state", p_state, comp_fn_index),
+-              width[p_hits], HIGHLIGHT("hits", p_hits, comp_fn_index),
+-              width[p_min], HIGHLIGHT("min", p_min, comp_fn_index),
+-              width[p_avg], HIGHLIGHT("avg", p_avg, comp_fn_index),
+-              width[p_max], HIGHLIGHT("max", p_max, comp_fn_index),
++              (int)width[p_index], HIGHLIGHT("index", p_index, comp_fn_index),
++              (int)width[p_state], HIGHLIGHT("state", p_state, comp_fn_index),
++              (int)width[p_hits], HIGHLIGHT("hits", p_hits, comp_fn_index),
++              (int)width[p_min], HIGHLIGHT("min", p_min, comp_fn_index),
++              (int)width[p_avg], HIGHLIGHT("avg", p_avg, comp_fn_index),
++              (int)width[p_max], HIGHLIGHT("max", p_max, comp_fn_index),
+               HIGHLIGHT("name", p_name, comp_fn_index));
+       if (active_window == 0)
+         wattroff(status, A_BOLD);
+@@ -466,17 +466,17 @@ void monitor_render(void)
+           json_object *probe, *field;
+           probe = json_object_array_get_idx(jso_probe_list, i);
+           json_object_object_get_ex(probe, "index", &field);
+-          wprintw(status, "%*s\t", width[p_index], json_object_get_string(field));
++          wprintw(status, "%*s\t", (int)width[p_index], json_object_get_string(field));
+           json_object_object_get_ex(probe, "state", &field);
+-          wprintw(status, "%*s\t", width[p_state], json_object_get_string(field));
++          wprintw(status, "%*s\t", (int)width[p_state], json_object_get_string(field));
+           json_object_object_get_ex(probe, "hits", &field);
+-          wprintw(status, "%*s\t", width[p_hits], json_object_get_string(field));
++          wprintw(status, "%*s\t", (int)width[p_hits], json_object_get_string(field));
+           json_object_object_get_ex(probe, "min", &field);
+-          wprintw(status, "%*s\t", width[p_min], json_object_get_string(field));
++          wprintw(status, "%*s\t", (int)width[p_min], json_object_get_string(field));
+           json_object_object_get_ex(probe, "avg", &field);
+-          wprintw(status, "%*s\t", width[p_avg], json_object_get_string(field));
++          wprintw(status, "%*s\t", (int)width[p_avg], json_object_get_string(field));
+           json_object_object_get_ex(probe, "max", &field);
+-          wprintw(status, "%*s\t", width[p_max], json_object_get_string(field));
++          wprintw(status, "%*s\t", (int)width[p_max], json_object_get_string(field));
+           getyx(status, discard, cur_x);
+           json_object_object_get_ex(probe, "name", &field);
+           wprintw(status, "%.*s", max_cols-cur_x-1, json_object_get_string(field));
+-- 
+2.20.1
+
diff --git a/poky/meta/recipes-kernel/systemtap/systemtap_git.bb b/poky/meta/recipes-kernel/systemtap/systemtap_git.bb
index 8f0de5f..d11d9b9 100644
--- a/poky/meta/recipes-kernel/systemtap/systemtap_git.bb
+++ b/poky/meta/recipes-kernel/systemtap/systemtap_git.bb
@@ -6,7 +6,9 @@
 
 require systemtap_git.inc
 
-SRC_URI += "file://0001-improve-reproducibility-for-c-compiling.patch"
+SRC_URI += "file://0001-improve-reproducibility-for-c-compiling.patch \
+           file://0001-staprun-address-ncurses-6.3-failures.patch \
+           "
 
 DEPENDS = "elfutils"
 
diff --git a/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.07.14.bb b/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.07.14.bb
deleted file mode 100644
index a396f15..0000000
--- a/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.07.14.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "Wireless Central Regulatory Domain Database"
-HOMEPAGE = "https://wireless.wiki.kernel.org/en/developers/regulatory/crda"
-SECTION = "net"
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c"
-
-SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz"
-SRC_URI[sha256sum] = "2e2dd216a5f1a310b849774af63e6309d94c2207c34771a534c47ae18b162742"
-
-inherit bin_package allarch
-
-do_install() {
-    install -d -m0755 ${D}${nonarch_libdir}/crda
-    install -d -m0755 ${D}${sysconfdir}/wireless-regdb/pubkeys
-    install -m 0644 regulatory.bin ${D}${nonarch_libdir}/crda/regulatory.bin
-    install -m 0644 sforshee.key.pub.pem ${D}${sysconfdir}/wireless-regdb/pubkeys/sforshee.key.pub.pem
-
-    install -m 0644 -D regulatory.db ${D}${nonarch_base_libdir}/firmware/regulatory.db
-    install -m 0644 regulatory.db.p7s ${D}${nonarch_base_libdir}/firmware/regulatory.db.p7s
-}
-
-# Install static regulatory DB in /lib/firmware for kernel to load.
-# This requires Linux kernel >= v4.15.
-# For kernel <= v4.14, inherit the kernel_wireless_regdb.bbclass
-# (in meta-networking) in kernel's recipe.
-PACKAGES = "${PN}-static ${PN}"
-RCONFLICTS:${PN} = "${PN}-static"
-
-FILES:${PN}-static = " \
-    ${nonarch_base_libdir}/firmware/regulatory.db \
-    ${nonarch_base_libdir}/firmware/regulatory.db.p7s \
-"
-
-# Native users might want to use the source of regulatory DB.
-# This is for example used by Linux kernel <= v4.14 and
-# kernel_wireless_regdb.bbclass in meta-networking.
-do_install:append:class-native() {
-    install -m 0644 -D db.txt ${D}${libdir}/crda/db.txt
-}
-
-RSUGGESTS:${PN} = "crda"
-
-BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.08.28.bb b/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.08.28.bb
new file mode 100644
index 0000000..c673f80
--- /dev/null
+++ b/poky/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.08.28.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Wireless Central Regulatory Domain Database"
+HOMEPAGE = "https://wireless.wiki.kernel.org/en/developers/regulatory/crda"
+SECTION = "net"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c"
+
+SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz"
+SRC_URI[sha256sum] = "cff370c410d1e6d316ae0a7fa8ac6278fdf1efca5d3d664aca7cfd2aafa54446"
+
+inherit bin_package allarch
+
+do_install() {
+    install -d -m0755 ${D}${nonarch_libdir}/crda
+    install -d -m0755 ${D}${sysconfdir}/wireless-regdb/pubkeys
+    install -m 0644 regulatory.bin ${D}${nonarch_libdir}/crda/regulatory.bin
+    install -m 0644 sforshee.key.pub.pem ${D}${sysconfdir}/wireless-regdb/pubkeys/sforshee.key.pub.pem
+
+    install -m 0644 -D regulatory.db ${D}${nonarch_base_libdir}/firmware/regulatory.db
+    install -m 0644 regulatory.db.p7s ${D}${nonarch_base_libdir}/firmware/regulatory.db.p7s
+}
+
+# Install static regulatory DB in /lib/firmware for kernel to load.
+# This requires Linux kernel >= v4.15.
+# For kernel <= v4.14, inherit the kernel_wireless_regdb.bbclass
+# (in meta-networking) in kernel's recipe.
+PACKAGES = "${PN}-static ${PN}"
+RCONFLICTS:${PN} = "${PN}-static"
+
+FILES:${PN}-static = " \
+    ${nonarch_base_libdir}/firmware/regulatory.db \
+    ${nonarch_base_libdir}/firmware/regulatory.db.p7s \
+"
+
+# Native users might want to use the source of regulatory DB.
+# This is for example used by Linux kernel <= v4.14 and
+# kernel_wireless_regdb.bbclass in meta-networking.
+do_install:append:class-native() {
+    install -m 0644 -D db.txt ${D}${libdir}/crda/db.txt
+}
+
+RSUGGESTS:${PN} = "crda"
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/fix-CVE-2021-38114.patch b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/fix-CVE-2021-38114.patch
new file mode 100644
index 0000000..ab3ecfe
--- /dev/null
+++ b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg/fix-CVE-2021-38114.patch
@@ -0,0 +1,67 @@
+CVE: CVE-2021-38114
+Upstream-Status: Backport
+Signed-off-by: Kiran Surendran <kiran.surendran@windriver.com>
+
+From 463dbe4e78cc560ca5b09f23a07add0eb78ccee8 Mon Sep 17 00:00:00 2001
+From: maryam ebr <me22bee@outlook.com>
+Date: Tue, 3 Aug 2021 01:05:47 -0400
+Subject: [PATCH] avcodec/dnxhddec: check and propagate function return value
+
+Similar to CVE-2013-0868, here return value check for 'init_vlc' is needed.
+crafted DNxHD data can cause unspecified impact.
+
+Reviewed-by: Paul B Mahol <onemda@gmail.com>
+Signed-off-by: James Almer <jamrial@gmail.com>
+---
+ libavcodec/dnxhddec.c | 22 +++++++++++++++-------
+ 1 file changed, 15 insertions(+), 7 deletions(-)
+
+diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
+index c78d55aee5..9b475a6979 100644
+--- a/libavcodec/dnxhddec.c
++++ b/libavcodec/dnxhddec.c
+@@ -112,6 +112,7 @@ static av_cold int dnxhd_decode_init(AVCodecContext *avctx)
+ 
+ static int dnxhd_init_vlc(DNXHDContext *ctx, uint32_t cid, int bitdepth)
+ {
++    int ret;
+     if (cid != ctx->cid) {
+         const CIDEntry *cid_table = ff_dnxhd_get_cid_table(cid);
+ 
+@@ -132,19 +133,26 @@ static int dnxhd_init_vlc(DNXHDContext *ctx, uint32_t cid, int bitdepth)
+         ff_free_vlc(&ctx->dc_vlc);
+         ff_free_vlc(&ctx->run_vlc);
+ 
+-        init_vlc(&ctx->ac_vlc, DNXHD_VLC_BITS, 257,
++        if ((ret = init_vlc(&ctx->ac_vlc, DNXHD_VLC_BITS, 257,
+                  ctx->cid_table->ac_bits, 1, 1,
+-                 ctx->cid_table->ac_codes, 2, 2, 0);
+-        init_vlc(&ctx->dc_vlc, DNXHD_DC_VLC_BITS, bitdepth > 8 ? 14 : 12,
++                 ctx->cid_table->ac_codes, 2, 2, 0)) < 0)
++            goto out;
++        if ((ret = init_vlc(&ctx->dc_vlc, DNXHD_DC_VLC_BITS, bitdepth > 8 ? 14 : 12,
+                  ctx->cid_table->dc_bits, 1, 1,
+-                 ctx->cid_table->dc_codes, 1, 1, 0);
+-        init_vlc(&ctx->run_vlc, DNXHD_VLC_BITS, 62,
++                 ctx->cid_table->dc_codes, 1, 1, 0)) < 0)
++            goto out;
++        if ((ret = init_vlc(&ctx->run_vlc, DNXHD_VLC_BITS, 62,
+                  ctx->cid_table->run_bits, 1, 1,
+-                 ctx->cid_table->run_codes, 2, 2, 0);
++                 ctx->cid_table->run_codes, 2, 2, 0)) < 0)
++            goto out;
+ 
+         ctx->cid = cid;
+     }
+-    return 0;
++    ret = 0;
++out:
++    if (ret < 0)
++        av_log(ctx->avctx, AV_LOG_ERROR, "init_vlc failed\n");
++    return ret;
+ }
+ 
+ static int dnxhd_get_profile(int cid)
+-- 
+2.31.1
+
diff --git a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.4.bb b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.4.bb
index 0c6af65..c0318ef 100644
--- a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.4.bb
+++ b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.4.bb
@@ -31,7 +31,8 @@
            file://fix-CVE-2020-22021.patch \
            file://fix-CVE-2020-22033-CVE-2020-22019.patch \
            file://fix-CVE-2021-33815.patch \
-           file://fix-CVE-2021-38171.patch \ 
+           file://fix-CVE-2021-38171.patch \
+	   file://fix-CVE-2021-38114.patch \ 
           "
 SRC_URI[sha256sum] = "06b10a183ce5371f915c6bb15b7b1fffbe046e8275099c96affc29e17645d909"
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.4.bb
deleted file mode 100644
index be554a6..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.4.bb
+++ /dev/null
@@ -1,49 +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 = "LGPLv2.1"
-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] = "ffbd194c40912cb5e7fca2863648bf9dd8257b7af97d3a60c4fcd4efd8526ccf"
-
-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'
-
-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.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.5.bb
new file mode 100644
index 0000000..1b46b89
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.5.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Gstreamer validation tool"
+DESCRIPTION = "A Tool to test GStreamer components"
+HOMEPAGE = "https://gstreamer.freedesktop.org/documentation/gst-devtools/index.html"
+SECTION = "multimedia"
+
+LICENSE = "LGPLv2.1"
+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] = "fecffc86447daf5c2a06843c757a991d745caa2069446a0d746e99b13f7cb079"
+
+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'
+
+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-examples_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.4.bb
deleted file mode 100644
index 9d8fef86..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.4.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "GStreamer examples (including gtk-play, gst-play)"
-DESCRIPTION = "GStreamer example applications"
-HOMEPAGE = "https://gitlab.freedesktop.org/gstreamer/gst-examples"
-BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-examples/-/issues"
-LICENSE = "LGPL-2.0+"
-LIC_FILES_CHKSUM = "file://playback/player/gtk/gtk-play.c;beginline=1;endline=20;md5=f8c72dae3d36823ec716a9ebcae593b9"
-
-DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3 libsoup-2.4 json-glib glib-2.0-native"
-
-SRC_URI = "git://gitlab.freedesktop.org/gstreamer/gst-examples.git;protocol=https;branch=1.18 \
-           file://0001-Make-player-examples-installable.patch \
-           file://gst-player.desktop \
-           "
-
-SRCREV = "959bb246a5b1f5f9c78557da11c3f22b42ff89c0"
-
-S = "${WORKDIR}/git"
-
-inherit meson pkgconfig features_check
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)"
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-do_install:append() {
-	install -m 0644 -D ${WORKDIR}/gst-player.desktop ${D}${datadir}/applications/gst-player.desktop
-}
-
-RDEPENDS:${PN} = "gstreamer1.0-plugins-base-playback"
-RRECOMMENDS:${PN} = "gstreamer1.0-plugins-base-meta \
-                     gstreamer1.0-plugins-good-meta \
-                     gstreamer1.0-plugins-bad-meta \
-                      ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-libav", "", d)} \
-                     ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}"
-RPROVIDES:${PN} += "gst-player gst-player-bin"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.5.bb
new file mode 100644
index 0000000..a720bb7
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gst-examples_1.18.5.bb
@@ -0,0 +1,35 @@
+SUMMARY = "GStreamer examples (including gtk-play, gst-play)"
+DESCRIPTION = "GStreamer example applications"
+HOMEPAGE = "https://gitlab.freedesktop.org/gstreamer/gst-examples"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-examples/-/issues"
+LICENSE = "LGPL-2.0+"
+LIC_FILES_CHKSUM = "file://playback/player/gtk/gtk-play.c;beginline=1;endline=20;md5=f8c72dae3d36823ec716a9ebcae593b9"
+
+DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3 libsoup-2.4 json-glib glib-2.0-native"
+
+SRC_URI = "git://gitlab.freedesktop.org/gstreamer/gst-examples.git;protocol=https;branch=1.18 \
+           file://0001-Make-player-examples-installable.patch \
+           file://gst-player.desktop \
+           "
+
+SRCREV = "fe9a365dc0f1ff632abcfe3322ac5527a2cf30a0"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig features_check
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)"
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+do_install:append() {
+	install -m 0644 -D ${WORKDIR}/gst-player.desktop ${D}${datadir}/applications/gst-player.desktop
+}
+
+RDEPENDS:${PN} = "gstreamer1.0-plugins-base-playback"
+RRECOMMENDS:${PN} = "gstreamer1.0-plugins-base-meta \
+                     gstreamer1.0-plugins-good-meta \
+                     gstreamer1.0-plugins-bad-meta \
+                      ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-libav", "", d)} \
+                     ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}"
+RPROVIDES:${PN} += "gst-player gst-player-bin"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.4.bb
deleted file mode 100644
index 0c4f50c..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.4.bb
+++ /dev/null
@@ -1,24 +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 = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
-                    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] = "344a463badca216c2cef6ee36f9510c190862bdee48dc4591c0a430df7e8c396"
-
-S = "${WORKDIR}/gst-libav-${PV}"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base ffmpeg"
-
-inherit meson pkgconfig upstream-version-is-even
-
-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.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.5.bb
new file mode 100644
index 0000000..a77ec62
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.5.bb
@@ -0,0 +1,24 @@
+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 = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
+                    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] = "822e008a910e9dd13aedbdd8dc63fedef4040c0ee2e927bab3112e9de693a548"
+
+S = "${WORKDIR}/gst-libav-${PV}"
+
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base ffmpeg"
+
+inherit meson pkgconfig upstream-version-is-even
+
+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.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.4.bb
deleted file mode 100644
index 7baccfe..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.4.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 = "LGPLv2.1"
-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] = "e35051cf891eb2f31d6fcf176ff37d985f97f33874ac31b0b3ad3b5b95035043"
-
-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.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.5.bb
new file mode 100644
index 0000000..b2c1eb3
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.5.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 = "LGPLv2.1"
+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] = "2cd457c1e8deb1a9b39608048fb36a44f6c9a864a6b6115b1453a32e7be93b42"
+
+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.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.4.bb
deleted file mode 100644
index 81c8391..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.4.bb
+++ /dev/null
@@ -1,154 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-
-DESCRIPTION = "'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://0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch \
-           file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \
-           file://0005-msdk-fix-includedir-path.patch \
-           "
-SRC_URI[sha256sum] = "74e806bc5595b18c70e9ca93571e27e79dfb808e5d2e7967afa952b52e99c85f"
-
-S = "${WORKDIR}/gst-plugins-bad-${PV}"
-
-LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
-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', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)} \
-    bz2 closedcaption curl dash dtls hls openssl rsvg sbc smoothstreaming \
-    sndfile ttml uvch264 webp \
-"
-
-PACKAGECONFIG[aom]             = "-Daom=enabled,-Daom=disabled,aom"
-PACKAGECONFIG[assrender]       = "-Dassrender=enabled,-Dassrender=disabled,libass"
-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[libmms]          = "-Dlibmms=enabled,-Dlibmms=disabled,libmms"
-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,-Dmsdk=disabled,intel-mediasdk"
-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"
-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[x265]            = "-Dx265=enabled,-Dx265=disabled,x265"
-
-EXTRA_OEMESON += " \
-    -Ddoc=disabled \
-    -Ddecklink=enabled \
-    -Ddvb=enabled \
-    -Dfbdev=enabled \
-    -Dipcpipeline=enabled \
-    -Dshm=enabled \
-    -Dtranscode=enabled \
-    -Dandroidmedia=disabled \
-    -Dapplemedia=disabled \
-    -Davtp=disabled \
-    -Dbs2b=disabled \
-    -Dchromaprint=disabled \
-    -Dd3dvideosink=disabled \
-    -Dd3d11=disabled \
-    -Ddirectsound=disabled \
-    -Ddts=disabled \
-    -Dfdkaac=disabled \
-    -Dflite=disabled \
-    -Dgme=disabled \
-    -Dgsm=disabled \
-    -Diqa=disabled \
-    -Dkate=disabled \
-    -Dladspa=disabled \
-    -Dlv2=disabled \
-    -Dmagicleap=disabled \
-    -Dmediafoundation=disabled \
-    -Dmicrodns=disabled \
-    -Dmpeg2enc=disabled \
-    -Dmplex=disabled \
-    -Dmusepack=disabled \
-    -Dnvcodec=disabled \
-    -Dofa=disabled \
-    -Dopenexr=disabled \
-    -Dopenni2=disabled \
-    -Dopensles=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.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.5.bb
new file mode 100644
index 0000000..f3ea6f7
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.5.bb
@@ -0,0 +1,155 @@
+require gstreamer1.0-plugins-common.inc
+
+DESCRIPTION = "'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://0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch \
+           file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \
+           file://0005-msdk-fix-includedir-path.patch \
+           "
+SRC_URI[sha256sum] = "a164923b94f0d08578a6fcaeaac6e0c05da788a46903a1086870e9ca45ad678e"
+
+S = "${WORKDIR}/gst-plugins-bad-${PV}"
+
+LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
+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', 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[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[libmms]          = "-Dlibmms=enabled,-Dlibmms=disabled,libmms"
+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,-Dmsdk=disabled,intel-mediasdk"
+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"
+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[x265]            = "-Dx265=enabled,-Dx265=disabled,x265"
+
+EXTRA_OEMESON += " \
+    -Ddoc=disabled \
+    -Ddecklink=enabled \
+    -Ddvb=enabled \
+    -Dfbdev=enabled \
+    -Dipcpipeline=enabled \
+    -Dshm=enabled \
+    -Dtranscode=enabled \
+    -Dandroidmedia=disabled \
+    -Dapplemedia=disabled \
+    -Davtp=disabled \
+    -Dbs2b=disabled \
+    -Dchromaprint=disabled \
+    -Dd3dvideosink=disabled \
+    -Dd3d11=disabled \
+    -Ddirectsound=disabled \
+    -Ddts=disabled \
+    -Dfdkaac=disabled \
+    -Dflite=disabled \
+    -Dgme=disabled \
+    -Dgsm=disabled \
+    -Diqa=disabled \
+    -Dkate=disabled \
+    -Dladspa=disabled \
+    -Dlv2=disabled \
+    -Dmagicleap=disabled \
+    -Dmediafoundation=disabled \
+    -Dmicrodns=disabled \
+    -Dmpeg2enc=disabled \
+    -Dmplex=disabled \
+    -Dmusepack=disabled \
+    -Dnvcodec=disabled \
+    -Dofa=disabled \
+    -Dopenexr=disabled \
+    -Dopenni2=disabled \
+    -Dopensles=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/4ef5c91697a141fea7317aff7f0f28e5a861db99.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/4ef5c91697a141fea7317aff7f0f28e5a861db99.patch
deleted file mode 100644
index a2f5dff..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/4ef5c91697a141fea7317aff7f0f28e5a861db99.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 4ef5c91697a141fea7317aff7f0f28e5a861db99 Mon Sep 17 00:00:00 2001
-From: Xavier Claessens <xavier.claessens@collabora.com>
-Date: Mon, 26 Apr 2021 14:25:03 -0400
-Subject: [PATCH] gstgl: Fix build when Meson >= 0.58.0rc1
-
-"implicit_include_directories: false" now also means that current build
-directory is not added to include paths by default any more. We have to
-add it manually because we have some custom_target() that generate
-headers in current build directory.
-
-See https://github.com/mesonbuild/meson/issues/8700.
-
-Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1125>
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- gst-libs/gst/gl/meson.build | 15 ++++++++++++---
- 1 file changed, 12 insertions(+), 3 deletions(-)
-
-diff --git a/gst-libs/gst/gl/meson.build b/gst-libs/gst/gl/meson.build
-index 66668644e..53891625a 100644
---- a/gst-libs/gst/gl/meson.build
-+++ b/gst-libs/gst/gl/meson.build
-@@ -1004,11 +1004,20 @@ if build_gstgl
-     command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
-   gen_sources = [gl_enumtypes_h]
- 
-+  common_args = gst_plugins_base_args + gl_cpp_args + ['-DBUILDING_GST_GL']
-+
-+  # We have custom_target() that generate headers in the current build dir,
-+  # but with implicit_include_directories: false, meson >= 0.58.0 won't include
-+  # it by default. We cannot use include_directories('.') here because it would
-+  # also include current source dir which is what we want to avoid because
-+  # case-insensitive FS would include gst-libs/gl/egl/egl.h as EGL/egl.h.
-+  common_args += '-I@0@'.format(meson.current_build_dir())
-+
-   gstgl = library('gstgl-' + api_version,
-     gl_sources, gl_egl_sources, gl_x11_sources, gl_wayland_sources, gl_priv_sources, gl_enumtypes_c, gl_enumtypes_h,
--    c_args : gst_plugins_base_args + gl_cpp_args + ['-DBUILDING_GST_GL'],
--    cpp_args : gst_plugins_base_args + gl_cpp_args + ['-DBUILDING_GST_GL'],
--    objc_args : gst_plugins_base_args + gl_cpp_args + gl_objc_args + ['-DBUILDING_GST_GL'],
-+    c_args : common_args,
-+    cpp_args : common_args,
-+    objc_args : common_args + gl_objc_args,
-     include_directories : [configinc, libsinc, gl_includes],
-     version : libversion,
-     soversion : soversion,
--- 
-GitLab
-
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.4.bb
deleted file mode 100644
index 90a8d7d..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.4.bb
+++ /dev/null
@@ -1,95 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-
-DESCRIPTION = "'Base' GStreamer plugins and helper libraries"
-HOMEPAGE = "https://gstreamer.freedesktop.org/"
-BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues"
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
-
-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 \
-           file://0004-glimagesink-Downrank-to-marginal.patch \
-           file://4ef5c91697a141fea7317aff7f0f28e5a861db99.patch \
-           "
-SRC_URI[sha256sum] = "29e53229a84d01d722f6f6db13087231cdf6113dd85c25746b9b58c3d68e8323"
-
-S = "${WORKDIR}/gst-plugins-base-${PV}"
-
-DEPENDS += "iso-codes util-linux zlib"
-
-inherit gobject-introspection
-
-PACKAGES_DYNAMIC =+ "^libgst.*"
-
-# opengl packageconfig factored out to make it easy for distros
-# and BSP layers to choose OpenGL APIs/platforms/window systems
-PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', 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'
-
-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[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"
-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"
-
-# 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 \
-    -Dgl-graphene=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.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.5.bb
new file mode 100644
index 0000000..5e2cca3
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.5.bb
@@ -0,0 +1,94 @@
+require gstreamer1.0-plugins-common.inc
+
+DESCRIPTION = "'Base' GStreamer plugins and helper libraries"
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues"
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
+
+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 \
+           file://0004-glimagesink-Downrank-to-marginal.patch \
+           "
+SRC_URI[sha256sum] = "960b7af4585700db0fdd5b843554e11e2564fed9e061f591fae88a7be6446fa3"
+
+S = "${WORKDIR}/gst-plugins-base-${PV}"
+
+DEPENDS += "iso-codes util-linux zlib"
+
+inherit gobject-introspection
+
+PACKAGES_DYNAMIC =+ "^libgst.*"
+
+# opengl packageconfig factored out to make it easy for distros
+# and BSP layers to choose OpenGL APIs/platforms/window systems
+PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', 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'
+
+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[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"
+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"
+
+# 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 \
+    -Dgl-graphene=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/0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch
deleted file mode 100644
index 14a9fe2..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From ec1949dffd931d0ec7e4f67108a08ab1e2af0cfe Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
-Date: Tue, 16 Mar 2021 19:25:36 +0200
-Subject: [PATCH] rtpjitterbuffer: Fix parsing of the mediaclk:direct= field
-
-Due to an off-by-one when parsing the string, the most significant digit
-or the clock offset was skipped when parsing the offset.
-
-Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/910>
-
-Upstream-Status: Backport [b5bb4ede3a42273fafc1054f9cf106ca527e3c26]
-
-Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
----
- gst/rtpmanager/gstrtpjitterbuffer.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c
-index 60d8ad875..02fe15adc 100644
---- a/gst/rtpmanager/gstrtpjitterbuffer.c
-+++ b/gst/rtpmanager/gstrtpjitterbuffer.c
-@@ -1534,7 +1534,7 @@ gst_jitter_buffer_sink_parse_caps (GstRtpJitterBuffer * jitterbuffer,
-       GST_DEBUG_OBJECT (jitterbuffer, "Got media clock %s", mediaclk);
- 
-       if (!g_str_has_prefix (mediaclk, "direct=") ||
--          !g_ascii_string_to_unsigned (&mediaclk[8], 10, 0, G_MAXUINT64,
-+          !g_ascii_string_to_unsigned (&mediaclk[7], 10, 0, G_MAXUINT64,
-               &clock_offset, NULL))
-         GST_FIXME_OBJECT (jitterbuffer, "Unsupported media clock");
-       if (strstr (mediaclk, "rate=") != NULL) {
--- 
-2.31.0
-
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0003-Remove-volatile-from-static-vars-to-fix-build-with-g.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0003-Remove-volatile-from-static-vars-to-fix-build-with-g.patch
deleted file mode 100644
index 8722382..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0003-Remove-volatile-from-static-vars-to-fix-build-with-g.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 07572920319ea86cebb6dd073ab65915ec207eed Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Sat, 8 May 2021 14:08:41 +0200
-Subject: [PATCH] Remove volatile from static vars to fix build with gcc11
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Stolen from [1]
-
-[1] https://src.fedoraproject.org/rpms/gstreamer1-plugins-good/blob/rawhide/f/gstreamer1-plugins-good-gcc11.patch
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- ext/qt/gstqsgtexture.cc  | 2 +-
- ext/qt/gstqtglutility.cc | 2 +-
- ext/qt/qtglrenderer.cc   | 2 +-
- ext/qt/qtitem.cc         | 2 +-
- ext/qt/qtwindow.cc       | 4 ++--
- 5 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/ext/qt/gstqsgtexture.cc b/ext/qt/gstqsgtexture.cc
-index 4cc9fc6..50c8d7f 100644
---- a/ext/qt/gstqsgtexture.cc
-+++ b/ext/qt/gstqsgtexture.cc
-@@ -35,7 +35,7 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
- 
- GstQSGTexture::GstQSGTexture ()
- {
--  static volatile gsize _debug;
-+  static gsize _debug;
- 
-   initializeOpenGLFunctions();
- 
-diff --git a/ext/qt/gstqtglutility.cc b/ext/qt/gstqtglutility.cc
-index acb89b6..d2c0922 100644
---- a/ext/qt/gstqtglutility.cc
-+++ b/ext/qt/gstqtglutility.cc
-@@ -66,7 +66,7 @@ gst_qt_get_gl_display ()
- {
-   GstGLDisplay *display = NULL;
-   QGuiApplication *app = static_cast<QGuiApplication *> (QCoreApplication::instance ());
--  static volatile gsize _debug;
-+  static gsize _debug;
- 
-   g_assert (app != NULL);
- 
-diff --git a/ext/qt/qtglrenderer.cc b/ext/qt/qtglrenderer.cc
-index 2ad5601..bffba8f 100644
---- a/ext/qt/qtglrenderer.cc
-+++ b/ext/qt/qtglrenderer.cc
-@@ -22,7 +22,7 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
- static void
- init_debug (void)
- {
--  static volatile gsize _debug;
-+  static gsize _debug;
- 
-   if (g_once_init_enter (&_debug)) {
-     GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglrenderer", 0,
-diff --git a/ext/qt/qtitem.cc b/ext/qt/qtitem.cc
-index 7659800..bc99639 100644
---- a/ext/qt/qtitem.cc
-+++ b/ext/qt/qtitem.cc
-@@ -104,7 +104,7 @@ void InitializeSceneGraph::run()
- 
- QtGLVideoItem::QtGLVideoItem()
- {
--  static volatile gsize _debug;
-+  static gsize _debug;
- 
-   if (g_once_init_enter (&_debug)) {
-     GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "qtglwidget", 0, "Qt GL Widget");
-diff --git a/ext/qt/qtwindow.cc b/ext/qt/qtwindow.cc
-index 0dfd3f1..f1bd4ae 100644
---- a/ext/qt/qtwindow.cc
-+++ b/ext/qt/qtwindow.cc
-@@ -103,7 +103,7 @@ QtGLWindow::QtGLWindow ( QWindow * parent, QQuickWindow *src ) :
-   QQuickWindow( parent ), source (src)
- {
-   QGuiApplication *app = static_cast<QGuiApplication *> (QCoreApplication::instance ());
--  static volatile gsize _debug;
-+  static gsize _debug;
- 
-   g_assert (app != NULL);
- 
-@@ -152,7 +152,7 @@ QtGLWindow::beforeRendering()
- 
-   g_mutex_lock (&this->priv->lock);
- 
--  static volatile gsize once = 0;
-+  static gsize once = 0;
-   if (g_once_init_enter(&once)) {
-     this->priv->start = QDateTime::currentDateTime().toMSecsSinceEpoch();
-     g_once_init_leave(&once,1);
--- 
-2.30.2
-
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.4.bb
deleted file mode 100644
index a90594a..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.4.bb
+++ /dev/null
@@ -1,78 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-
-DESCRIPTION = "'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://0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch \
-           file://0003-Remove-volatile-from-static-vars-to-fix-build-with-g.patch \
-           "
-
-SRC_URI[sha256sum] = "b6e50e3a9bbcd56ee6ec71c33aa8332cc9c926b0c1fae995aac8b3040ebe39b0"
-
-S = "${WORKDIR}/gst-plugins-good-${PV}"
-
-LICENSE = "GPLv2+ & LGPLv2.1+"
-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"
-
-PACKAGECONFIG ??= " \
-    ${GSTREAMER_ORC} \
-    ${@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 soup 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[soup]       = "-Dsoup=enabled,-Dsoup=disabled,libsoup-2.4"
-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.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.5.bb
new file mode 100644
index 0000000..ade935d
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.5.bb
@@ -0,0 +1,76 @@
+require gstreamer1.0-plugins-common.inc
+
+DESCRIPTION = "'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 \
+           "
+
+SRC_URI[sha256sum] = "3aaeeea7765fbf8801acce4a503a9b05f73f04e8a35352e9d00232cfd555796b"
+
+S = "${WORKDIR}/gst-plugins-good-${PV}"
+
+LICENSE = "GPLv2+ & LGPLv2.1+"
+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"
+
+PACKAGECONFIG ??= " \
+    ${GSTREAMER_ORC} \
+    ${@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 soup 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[soup]       = "-Dsoup=enabled,-Dsoup=disabled,libsoup-2.4"
+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.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.4.bb
deleted file mode 100644
index 817dffe..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.4.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-
-DESCRIPTION = "'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 \
-                    file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068"
-
-LICENSE = "GPLv2+ & LGPLv2.1+ & LGPLv2+"
-LICENSE_FLAGS = "commercial"
-
-SRC_URI = " \
-            https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
-            "
-SRC_URI[sha256sum] = "218df0ce0d31e8ca9cdeb01a3b0c573172cc9c21bb3d41811c7820145623d13c"
-
-S = "${WORKDIR}/gst-plugins-ugly-${PV}"
-
-DEPENDS += "gstreamer1.0-plugins-base"
-
-GST_PLUGIN_SET_HAS_EXAMPLES = "0"
-
-PACKAGECONFIG ??= " \
-    ${GSTREAMER_ORC} \
-    a52dec mpeg2dec \
-"
-
-PACKAGECONFIG[a52dec]   = "-Da52dec=enabled,-Da52dec=disabled,liba52"
-PACKAGECONFIG[amrnb]    = "-Damrnb=enabled,-Damrnb=disabled,opencore-amr"
-PACKAGECONFIG[amrwb]    = "-Damrwbdec=enabled,-Damrwbdec=disabled,opencore-amr"
-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"
-
-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.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.5.bb
new file mode 100644
index 0000000..9777aae
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.5.bb
@@ -0,0 +1,43 @@
+require gstreamer1.0-plugins-common.inc
+
+DESCRIPTION = "'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 \
+                    file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068"
+
+LICENSE = "GPLv2+ & LGPLv2.1+ & LGPLv2+"
+LICENSE_FLAGS = "commercial"
+
+SRC_URI = " \
+            https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
+            "
+SRC_URI[sha256sum] = "df32803e98f8a9979373fa2ca7e05e62f977b1097576d3a80619d9f5c69f66d9"
+
+S = "${WORKDIR}/gst-plugins-ugly-${PV}"
+
+DEPENDS += "gstreamer1.0-plugins-base"
+
+GST_PLUGIN_SET_HAS_EXAMPLES = "0"
+
+PACKAGECONFIG ??= " \
+    ${GSTREAMER_ORC} \
+    a52dec mpeg2dec \
+"
+
+PACKAGECONFIG[a52dec]   = "-Da52dec=enabled,-Da52dec=disabled,liba52"
+PACKAGECONFIG[amrnb]    = "-Damrnb=enabled,-Damrnb=disabled,opencore-amr"
+PACKAGECONFIG[amrwb]    = "-Damrwbdec=enabled,-Damrwbdec=disabled,opencore-amr"
+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"
+
+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.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.4.bb
deleted file mode 100644
index 2fd73cb..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.4.bb
+++ /dev/null
@@ -1,26 +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 = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "cb68e08a7e825e08b83a12a22dcd6e4f1b328a7b02a7ac84f42f68f4ddc7098e"
-
-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 += "-Dlibpython-dir=${libdir}"
-
-# gobject-introspection is mandatory and cannot be configured
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
-UNKNOWN_CONFIGURE_WHITELIST:append = " introspection"
-
-inherit meson pkgconfig distutils3-base upstream-version-is-even gobject-introspection features_check
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.5.bb
new file mode 100644
index 0000000..a32805d
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.5.bb
@@ -0,0 +1,34 @@
+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 = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "533685871305959d6db89507f3b3aa6c765c2f2b0dacdc32c5a6543e72e5bc52"
+
+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 += "-Dlibpython-dir=${libdir}"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+
+inherit meson pkgconfig distutils3-base upstream-version-is-even features_check
+
+# Generating introspection data depends on a combination of native and target
+# introspection tools, and qemu to run the target tools.
+DEPENDS:append:class-target = " gobject-introspection gobject-introspection-native qemu-native prelink-native"
+
+# Even though introspection is disabled on -native, gobject-introspection package is still
+# needed for m4 macros.
+DEPENDS:append:class-native = " gobject-introspection-native"
+DEPENDS:append:class-nativesdk = " gobject-introspection-native"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.4.bb
deleted file mode 100644
index f7bfe98..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.4.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 = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
-
-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] = "a46bb8de40b971a048580279d2660e616796f871ad3ed00c8a95fe4d273a6c94"
-
-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.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.5.bb
new file mode 100644
index 0000000..50426ad
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.5.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 = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
+
+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] = "04d63bf48816c6f41c73f6de0f912a7cef0aab39c44162a7bcece1923dfc9d1f"
+
+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.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.4.bb
deleted file mode 100644
index 5c9025f..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.4.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 = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "92db98af86f3150d429c9ab17e88d2364f9c07a140c8f445ed739e8f10252aea"
-
-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] = "-Dwith_drm=yes,-Dwith_drm=no,udev libdrm"
-PACKAGECONFIG[egl] = "-Dwith_egl=yes,-Dwith_egl=no,virtual/egl"
-PACKAGECONFIG[encoders] = "-Dwith_encoders=yes,-Dwith_encoders=no"
-PACKAGECONFIG[glx] = "-Dwith_glx=yes,-Dwith_glx=no,virtual/libgl"
-PACKAGECONFIG[wayland] = "-Dwith_wayland=yes,-Dwith_wayland=no,wayland-native wayland wayland-protocols"
-PACKAGECONFIG[x11] = "-Dwith_x11=yes,-Dwith_x11=no,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.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.5.bb
new file mode 100644
index 0000000..9a68a3f
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.5.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 = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "4a460fb95559f41444eb24864ad2d9e37922b6eea941510310319fc3e0ba727b"
+
+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] = "-Dwith_drm=yes,-Dwith_drm=no,udev libdrm"
+PACKAGECONFIG[egl] = "-Dwith_egl=yes,-Dwith_egl=no,virtual/egl"
+PACKAGECONFIG[encoders] = "-Dwith_encoders=yes,-Dwith_encoders=no"
+PACKAGECONFIG[glx] = "-Dwith_glx=yes,-Dwith_glx=no,virtual/libgl"
+PACKAGECONFIG[wayland] = "-Dwith_wayland=yes,-Dwith_wayland=no,wayland-native wayland wayland-protocols"
+PACKAGECONFIG[x11] = "-Dwith_x11=yes,-Dwith_x11=no,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/0002-Remove-unused-valgrind-detection.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch
index 96abef1..5121044 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch
@@ -1,4 +1,4 @@
-From 598d108e2c438d8f2ecd3bf948fa3ebbd3681490 Mon Sep 17 00:00:00 2001
+From e275ba2bd854ac15a4b65a8f07d9f042021950da Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
 Date: Fri, 14 Aug 2020 16:38:26 +0100
 Subject: [PATCH 2/3] Remove unused valgrind detection
@@ -19,7 +19,7 @@
  3 files changed, 42 deletions(-)
 
 diff --git a/gst/gst_private.h b/gst/gst_private.h
-index eefd044d9..8252ede51 100644
+index eefd044..8252ede 100644
 --- a/gst/gst_private.h
 +++ b/gst/gst_private.h
 @@ -116,8 +116,6 @@ G_GNUC_INTERNAL  gboolean _priv_plugin_deps_env_vars_changed (GstPlugin * plugin
@@ -32,12 +32,12 @@
  G_GNUC_INTERNAL  void  _priv_gst_quarks_initialize (void);
  G_GNUC_INTERNAL  void  _priv_gst_mini_object_initialize (void);
 diff --git a/gst/gstinfo.c b/gst/gstinfo.c
-index 5d317877b..097f8b20d 100644
+index eea1a21..d3035d6 100644
 --- a/gst/gstinfo.c
 +++ b/gst/gstinfo.c
 @@ -305,36 +305,6 @@ static gboolean pretty_tags = PRETTY_TAGS_DEFAULT;
- static volatile gint G_GNUC_MAY_ALIAS __default_level = GST_LEVEL_DEFAULT;
- static volatile gint G_GNUC_MAY_ALIAS __use_color = GST_DEBUG_COLOR_MODE_ON;
+ static gint G_GNUC_MAY_ALIAS __default_level = GST_LEVEL_DEFAULT;
+ static gint G_GNUC_MAY_ALIAS __use_color = GST_DEBUG_COLOR_MODE_ON;
  
 -/* FIXME: export this? */
 -gboolean
@@ -82,7 +82,7 @@
    env = g_getenv ("GST_DEBUG_OPTIONS");
    if (env != NULL) {
      if (strstr (env, "full_tags") || strstr (env, "full-tags"))
-@@ -2503,12 +2470,6 @@ gst_debug_construct_win_color (guint colorinfo)
+@@ -2505,12 +2472,6 @@ gst_debug_construct_win_color (guint colorinfo)
    return 0;
  }
  
@@ -96,7 +96,7 @@
  _gst_debug_dump_mem (GstDebugCategory * cat, const gchar * file,
      const gchar * func, gint line, GObject * obj, const gchar * msg,
 diff --git a/meson.build b/meson.build
-index ce1921aa4..7a84d0981 100644
+index 82a1728..42ae617 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -200,7 +200,6 @@ check_headers = [
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.4.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.4.bb
deleted file mode 100644
index ee41832..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.4.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 = "LGPLv2+"
-
-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=6762ed442b3822387a51c92d928ead0d \
-                    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-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch \
-           file://0002-Remove-unused-valgrind-detection.patch \
-           file://0003-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch \
-           file://0004-tests-respect-the-idententaion-used-in-meson.patch \
-           file://0005-tests-add-support-for-install-the-tests.patch \
-           file://0006-tests-use-a-dictionaries-for-environment.patch \
-           file://0007-tests-install-the-environment-for-installed_tests.patch \
-           "
-SRC_URI[sha256sum] = "9aeec99b38e310817012aa2d1d76573b787af47f8a725a65b833880a094dfbc5"
-
-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"
-
-CVE_PRODUCT = "gstreamer"
-
-PTEST_BUILD_HOST_FILES = ""
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.5.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.5.bb
new file mode 100644
index 0000000..0d82dd3
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.5.bb
@@ -0,0 +1,75 @@
+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 = "LGPLv2+"
+
+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=6762ed442b3822387a51c92d928ead0d \
+                    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-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch \
+           file://0002-Remove-unused-valgrind-detection.patch \
+           file://0003-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch \
+           file://0004-tests-respect-the-idententaion-used-in-meson.patch \
+           file://0005-tests-add-support-for-install-the-tests.patch \
+           file://0006-tests-use-a-dictionaries-for-environment.patch \
+           file://0007-tests-install-the-environment-for-installed_tests.patch \
+           "
+SRC_URI[sha256sum] = "55862232a63459bbf56abebde3085ca9aec211b478e891dacea4d6df8cafe80a"
+
+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"
+
+CVE_PRODUCT = "gstreamer"
+
+PTEST_BUILD_HOST_FILES = ""
diff --git a/poky/meta/recipes-multimedia/mpg123/mpg123_1.28.2.bb b/poky/meta/recipes-multimedia/mpg123/mpg123_1.28.2.bb
deleted file mode 100644
index 896162a..0000000
--- a/poky/meta/recipes-multimedia/mpg123/mpg123_1.28.2.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "Audio decoder for MPEG-1 Layer 1/2/3"
-DESCRIPTION = "The core of mpg123 is an MPEG-1 Layer 1/2/3 decoding library, which can be used by other programs. \
-mpg123 also comes with a command-line tool which can playback using ALSA, PulseAudio, OSS, and several other APIs, \
-and also can write the decoded audio to WAV."
-HOMEPAGE = "http://mpg123.de/"
-BUGTRACKER = "http://sourceforge.net/p/mpg123/bugs/"
-SECTION = "multimedia"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e7b9c15fcfb986abb4cc5e8400a24169"
-
-SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2"
-SRC_URI[sha256sum] = "7eefd4b68fdac7e138d04c37efe12155a8ebf25a5bccf0fb7e775af22d21db00"
-
-UPSTREAM_CHECK_REGEX = "mpg123-(?P<pver>\d+(\.\d+)+)\.tar"
-
-inherit autotools pkgconfig
-
-# The options should be mutually exclusive for configuration script.
-# If both alsa and pulseaudio are specified (as in the default distro features)
-# pulseaudio takes precedence.
-PACKAGECONFIG_ALSA = "${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)}"
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '${PACKAGECONFIG_ALSA}', d)}"
-
-PACKAGECONFIG[alsa] = "--with-default-audio=alsa,,alsa-lib"
-PACKAGECONFIG[esd] = ",,esound"
-PACKAGECONFIG[jack] = ",,jack"
-PACKAGECONFIG[openal] = ",,openal-soft"
-PACKAGECONFIG[portaudio] = ",,portaudio-v19"
-PACKAGECONFIG[pulseaudio] = "--with-default-audio=pulse,,pulseaudio"
-PACKAGECONFIG[sdl] = ",,libsdl2"
-
-# Following are possible sound output modules:
-# alsa arts coreaudio dummy esd jack nas openal os2 oss portaudio pulse sdl sndio sun tinyalsa win32 win32_wasapi
-AUDIOMODS += "${@bb.utils.filter('PACKAGECONFIG', 'alsa esd jack openal portaudio sdl', d)}"
-AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'pulse', '', d)}"
-
-EXTRA_OECONF = " \
-    --enable-shared \
-    --with-audio='${AUDIOMODS}' \
-    ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-cpu=neon', '', d)} \
-    ${@bb.utils.contains('TUNE_FEATURES', 'altivec', '--with-cpu=altivec', '', d)} \
-    ${@bb.utils.contains('TARGET_FPU', 'soft', '--with-cpu=generic_nofpu', '', d)} \
-"
-# Fails to build with thumb-1 (qemuarm)
-#| {standard input}: Assembler messages:
-#| {standard input}:47: Error: selected processor does not support Thumb mode `smull r5,r6,r7,r4'
-#| {standard input}:48: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r5,r5,lsr#24'
-#...
-#| make[3]: *** [equalizer.lo] Error 1
-ARM_INSTRUCTION_SET:armv4 = "arm"
-ARM_INSTRUCTION_SET:armv5 = "arm"
diff --git a/poky/meta/recipes-multimedia/mpg123/mpg123_1.29.2.bb b/poky/meta/recipes-multimedia/mpg123/mpg123_1.29.2.bb
new file mode 100644
index 0000000..ba09e1c
--- /dev/null
+++ b/poky/meta/recipes-multimedia/mpg123/mpg123_1.29.2.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Audio decoder for MPEG-1 Layer 1/2/3"
+DESCRIPTION = "The core of mpg123 is an MPEG-1 Layer 1/2/3 decoding library, which can be used by other programs. \
+mpg123 also comes with a command-line tool which can playback using ALSA, PulseAudio, OSS, and several other APIs, \
+and also can write the decoded audio to WAV."
+HOMEPAGE = "http://mpg123.de/"
+BUGTRACKER = "http://sourceforge.net/p/mpg123/bugs/"
+SECTION = "multimedia"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e7b9c15fcfb986abb4cc5e8400a24169"
+
+SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "9071214ebdfc1b6ed0c0a85d530010bbb8ebc044cfe5ae5930e83f7e6b7937e6"
+
+UPSTREAM_CHECK_REGEX = "mpg123-(?P<pver>\d+(\.\d+)+)\.tar"
+
+inherit autotools pkgconfig
+
+# The options should be mutually exclusive for configuration script.
+# If both alsa and pulseaudio are specified (as in the default distro features)
+# pulseaudio takes precedence.
+PACKAGECONFIG_ALSA = "${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)}"
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '${PACKAGECONFIG_ALSA}', d)}"
+
+PACKAGECONFIG[alsa] = "--with-default-audio=alsa,,alsa-lib"
+PACKAGECONFIG[esd] = ",,esound"
+PACKAGECONFIG[jack] = ",,jack"
+PACKAGECONFIG[openal] = ",,openal-soft"
+PACKAGECONFIG[portaudio] = ",,portaudio-v19"
+PACKAGECONFIG[pulseaudio] = "--with-default-audio=pulse,,pulseaudio"
+PACKAGECONFIG[sdl] = ",,libsdl2"
+
+# Following are possible sound output modules:
+# alsa arts coreaudio dummy esd jack nas openal os2 oss portaudio pulse sdl sndio sun tinyalsa win32 win32_wasapi
+AUDIOMODS += "${@bb.utils.filter('PACKAGECONFIG', 'alsa esd jack openal portaudio sdl', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'pulse', '', d)}"
+
+EXTRA_OECONF = " \
+    --enable-shared \
+    --with-audio='${AUDIOMODS}' \
+    ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-cpu=neon', '', d)} \
+    ${@bb.utils.contains('TUNE_FEATURES', 'altivec', '--with-cpu=altivec', '', d)} \
+    ${@bb.utils.contains('TARGET_FPU', 'soft', '--with-cpu=generic_nofpu', '', d)} \
+"
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:47: Error: selected processor does not support Thumb mode `smull r5,r6,r7,r4'
+#| {standard input}:48: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r5,r5,lsr#24'
+#...
+#| make[3]: *** [equalizer.lo] Error 1
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
diff --git a/poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch b/poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch
index 56556df..1e8ff46 100644
--- a/poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch
+++ b/poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch
@@ -1,4 +1,4 @@
-From 7b0ab10370cad38e26c5ffaaa55a1fd77fff0f18 Mon Sep 17 00:00:00 2001
+From 05ccf5045adf4248f29623ad0db2d2a55ae5cd06 Mon Sep 17 00:00:00 2001
 From: Randy Witt <randy.e.witt@intel.com>
 Date: Fri, 16 Oct 2020 16:54:30 -0700
 Subject: [PATCH] Makefile: Allow for CC and AR to be overridden
@@ -15,11 +15,11 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/Makefile b/Makefile
-index 63cd77c..495d6bb 100644
+index ec5d693..ab8a8de 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -1,6 +1,6 @@
- VERSION = 2.1
+ VERSION = 2.2
 -CC = $(CROSS_COMPILE)gcc
 -AR = $(CROSS_COMPILE)ar
 +CC ?= $(CROSS_COMPILE)gcc
diff --git a/poky/meta/recipes-rt/rt-tests/rt-tests.inc b/poky/meta/recipes-rt/rt-tests/rt-tests.inc
index 5ce4d29..7122730 100644
--- a/poky/meta/recipes-rt/rt-tests/rt-tests.inc
+++ b/poky/meta/recipes-rt/rt-tests/rt-tests.inc
@@ -1,5 +1,5 @@
-SRCREV = "667e1aae896f8448615b062d27c818b32cb960ff"
-PV = "2.1"
+SRCREV = "75c16956e32817dfb0d5cb7379e731061e16593f"
+PV = "2.2"
 PE = "1"
 
 SRC_URI = "git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git;branch=main"
diff --git a/poky/meta/recipes-sato/puzzles/puzzles_git.bb b/poky/meta/recipes-sato/puzzles/puzzles_git.bb
index 298e29f..1355630 100644
--- a/poky/meta/recipes-sato/puzzles/puzzles_git.bb
+++ b/poky/meta/recipes-sato/puzzles/puzzles_git.bb
@@ -17,7 +17,7 @@
            "
 
 UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "8f3413c31ffd43c4ebde40894ac1b2f7cdf222c3"
+SRCREV = "ad1c6ade2af0e681fb964a17cc3a031951047068"
 PE = "2"
 PV = "0.0+git${SRCPV}"
 
diff --git a/poky/meta/recipes-sato/webkit/libwpe_1.10.1.bb b/poky/meta/recipes-sato/webkit/libwpe_1.10.1.bb
deleted file mode 100644
index 68214ff..0000000
--- a/poky/meta/recipes-sato/webkit/libwpe_1.10.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "General-purpose library specifically developed for the WPE-flavored port of WebKit."
-HOMEPAGE = "https://github.com/WebPlatformForEmbedded/libwpe"
-BUGTRACKER = "https://github.com/WebPlatformForEmbedded/libwpe/issues"
-
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=371a616eb4903c6cb79e9893a5f615cc"
-DEPENDS = "virtual/egl libxkbcommon"
-
-inherit cmake features_check pkgconfig
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "a327b3ffcf2356dbe8148c1db4bbdc5359d7e7163d177f67551a8393b144adf0"
-
-# This is a tweak of upstream-version-is-even needed because
-# ipstream directory contains tarballs for other components as well.
-UPSTREAM_CHECK_REGEX = "libwpe-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar"
diff --git a/poky/meta/recipes-sato/webkit/libwpe_1.12.0.bb b/poky/meta/recipes-sato/webkit/libwpe_1.12.0.bb
new file mode 100644
index 0000000..ac4ee3e
--- /dev/null
+++ b/poky/meta/recipes-sato/webkit/libwpe_1.12.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "General-purpose library specifically developed for the WPE-flavored port of WebKit."
+HOMEPAGE = "https://github.com/WebPlatformForEmbedded/libwpe"
+BUGTRACKER = "https://github.com/WebPlatformForEmbedded/libwpe/issues"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=371a616eb4903c6cb79e9893a5f615cc"
+DEPENDS = "virtual/egl libxkbcommon"
+
+inherit cmake features_check pkgconfig
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "e8eeca228a6b4c36294cfb63f7d3ba9ada47a430904a5a973b3c99c96a44c18c"
+
+# This is a tweak of upstream-version-is-even needed because
+# ipstream directory contains tarballs for other components as well.
+UPSTREAM_CHECK_REGEX = "libwpe-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar"
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch
index 6d7d706..a65cfc8 100644
--- a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch
@@ -1,4 +1,4 @@
-From acf26a385d17a59ccd4b767d6303ec3dbf78e788 Mon Sep 17 00:00:00 2001
+From b055bd199f9c40148334725a227796c0d7d14788 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 3 Feb 2020 17:06:27 -0800
 Subject: [PATCH] Enable THREADS_PREFER_PTHREAD_FLAG
@@ -20,11 +20,11 @@
  2 files changed, 2 insertions(+)
 
 diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
-index f316f49..de81ce0 100644
+index 3cb5a495..dfba9900 100644
 --- a/Source/cmake/OptionsGTK.cmake
 +++ b/Source/cmake/OptionsGTK.cmake
-@@ -6,6 +6,7 @@ WEBKIT_OPTION_BEGIN()
- SET_PROJECT_VERSION(2 32 3)
+@@ -7,6 +7,7 @@ SET_PROJECT_VERSION(2 34 0)
+ 
  
  set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string")
 +set(THREADS_PREFER_PTHREAD_FLAG ON)
@@ -32,7 +32,7 @@
  find_package(Cairo 1.14.0 REQUIRED)
  find_package(Fontconfig 2.8.0 REQUIRED)
 diff --git a/Source/cmake/OptionsJSCOnly.cmake b/Source/cmake/OptionsJSCOnly.cmake
-index 1066440..d9aca95 100644
+index e892b427..73bf9e4d 100644
 --- a/Source/cmake/OptionsJSCOnly.cmake
 +++ b/Source/cmake/OptionsJSCOnly.cmake
 @@ -1,3 +1,4 @@
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-without-opengl-or-es.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-without-opengl-or-es.patch
new file mode 100644
index 0000000..e4c7d77
--- /dev/null
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-without-opengl-or-es.patch
@@ -0,0 +1,133 @@
+From 646e347c173dbb9782492ac7cb4f54b65533ba90 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sun, 17 Oct 2021 20:49:21 +0000
+Subject: [PATCH] Fix build without opengl-or-es
+
+* fix build failure when opengl-or-es is disabled:
+  In file included from /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/webkitgtk/2.34.0-r0/webkitgtk-2.34.0/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:30,
+                   from /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/webkitgtk/2.34.0-r0/build/DerivedSources/WebKit/unified-sources/UnifiedSource-54928a2b-36.cpp:1:
+  /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/webkitgtk/2.34.0-r0/webkitgtk-2.34.0/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:41:10: fatal error: WebCore/CoordinatedGraphicsLayer.h: No such file or directory
+     41 | #include <WebCore/CoordinatedGraphicsLayer.h>
+        |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  compilation terminated.
+
+* the CoordinatedGraphicsLayer.h header installation is controled by
+  USE_COORDINATED_GRAPHICS in webkitgtk-2.34.0/Source/WebCore/platform/TextureMapper.cmake
+  but in Source/cmake/OptionsGTK.cmake USE_COORDINATED_GRAPHICS was enabled only inside
+  if (USE_OPENGL_OR_ES)
+
+Upstream-Status: Pending
+---
+ .../DrawingAreaProxyCoordinatedGraphics.cpp                 | 2 +-
+ .../DrawingAreaProxyCoordinatedGraphics.h                   | 2 +-
+ .../CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp  | 2 +-
+ .../CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h    | 2 +-
+ .../WebPage/CoordinatedGraphics/LayerTreeHost.cpp           | 4 ++--
+ .../WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h  | 6 +++---
+ 6 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp
+index 038d9ee2..5e828a10 100644
+--- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp
++++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp
+@@ -152,7 +152,7 @@ void DrawingAreaProxyCoordinatedGraphics::setBackingStoreIsDiscardable(bool isBa
+ #endif
+ }
+ 
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ void DrawingAreaProxyCoordinatedGraphics::adjustTransientZoom(double scale, FloatPoint origin)
+ {
+     send(Messages::DrawingArea::AdjustTransientZoom(scale, origin));
+diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h
+index b23a45ff..cd263402 100644
+--- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h
++++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h
+@@ -57,7 +57,7 @@ private:
+     void waitForBackingStoreUpdateOnNextPaint() override;
+     void setBackingStoreIsDiscardable(bool) override;
+ 
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+     void adjustTransientZoom(double scale, WebCore::FloatPoint origin) override;
+     void commitTransientZoom(double scale, WebCore::FloatPoint origin) override;
+ #endif
+diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp
+index 33ac2e1d..42375784 100644
+--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp
++++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp
+@@ -486,7 +486,7 @@ void DrawingAreaCoordinatedGraphics::didUpdate()
+     displayTimerFired();
+ }
+ 
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ void DrawingAreaCoordinatedGraphics::adjustTransientZoom(double scale, FloatPoint origin)
+ {
+     if (!m_transientZoom) {
+diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h
+index d8dc6df7..c8322364 100644
+--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h
++++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h
+@@ -84,7 +84,7 @@ private:
+     void updateBackingStoreState(uint64_t backingStoreStateID, bool respondImmediately, float deviceScaleFactor, const WebCore::IntSize&, const WebCore::IntSize& scrollOffset) override;
+     void didUpdate() override;
+ 
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+     void adjustTransientZoom(double scale, WebCore::FloatPoint origin) override;
+     void commitTransientZoom(double scale, WebCore::FloatPoint origin) override;
+ #endif
+diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp
+index f3304d10..ca0476ff 100644
+--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp
++++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp
+@@ -156,7 +156,7 @@ void LayerTreeHost::layerFlushTimerFired()
+ 
+     bool didSync = m_coordinator.flushPendingLayerChanges(flags);
+ 
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+     // If we have an active transient zoom, we want the zoom to win over any changes
+     // that WebCore makes to the relevant layers, so re-apply our changes after flushing.
+     if (m_transientZoom)
+@@ -453,7 +453,7 @@ void LayerTreeHost::renderNextFrame(bool forceRepaint)
+     }
+ }
+ 
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ FloatPoint LayerTreeHost::constrainTransientZoomOrigin(double scale, FloatPoint origin) const
+ {
+     FrameView& frameView = *m_webPage.mainFrameView();
+diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h
+index 4f727e41..b070266e 100644
+--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h
++++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h
+@@ -37,7 +37,7 @@
+ #include <wtf/Forward.h>
+ #include <wtf/OptionSet.h>
+ #include <wtf/RunLoop.h>
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ #include <WebCore/CoordinatedGraphicsLayer.h>
+ #endif
+ 
+@@ -100,7 +100,7 @@ public:
+ 
+     WebCore::PlatformDisplayID displayID() const { return m_displayID; }
+ 
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+     void adjustTransientZoom(double, WebCore::FloatPoint);
+     void commitTransientZoom(double, WebCore::FloatPoint);
+ #endif
+@@ -213,7 +213,7 @@ private:
+ #endif // USE(COORDINATED_GRAPHICS)
+     WebCore::PlatformDisplayID m_displayID;
+ 
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+     bool m_transientZoom { false };
+     double m_transientZoomScale { 1 };
+     WebCore::FloatPoint m_transientZoomOrigin;
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0001-MiniBrowser-Fix-reproduciblity.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0001-MiniBrowser-Fix-reproduciblity.patch
deleted file mode 100644
index 98d2d1de..0000000
--- a/poky/meta/recipes-sato/webkit/webkitgtk/0001-MiniBrowser-Fix-reproduciblity.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From dcf9ae0dc0b4510eddbeeea09e11edfb123f95af Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 2 May 2021 13:10:49 -0700
-Subject: [PATCH] MiniBrowser: Fix reproduciblity
-
-Do not emit references to source dir in generated sourcecode
-
-Upstream-Status: Submitted [https://bugs.webkit.org/show_bug.cgi?id=225283]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Tools/MiniBrowser/gtk/CMakeLists.txt | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Tools/MiniBrowser/gtk/CMakeLists.txt b/Tools/MiniBrowser/gtk/CMakeLists.txt
-index 93b62521..482d3b00 100644
---- a/Tools/MiniBrowser/gtk/CMakeLists.txt
-+++ b/Tools/MiniBrowser/gtk/CMakeLists.txt
-@@ -51,8 +51,8 @@ add_custom_command(
-     OUTPUT ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.c
-            ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.h
-     MAIN_DEPENDENCY ${MiniBrowser_DIR}/browser-marshal.list
--    COMMAND glib-genmarshal --prefix=browser_marshal ${MiniBrowser_DIR}/browser-marshal.list --body > ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.c
--    COMMAND glib-genmarshal --prefix=browser_marshal ${MiniBrowser_DIR}/browser-marshal.list --header > ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.h
-+    COMMAND glib-genmarshal --prefix=browser_marshal ${MiniBrowser_DIR}/browser-marshal.list --body --skip-source > ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.c
-+    COMMAND glib-genmarshal --prefix=browser_marshal ${MiniBrowser_DIR}/browser-marshal.list --header --skip-source > ${MiniBrowser_DERIVED_SOURCES_DIR}/BrowserMarshal.h
-     VERBATIM)
- 
- if (USE_GTK4)
--- 
-2.31.1
-
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch b/poky/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch
index ffe1b74..e7a4cc2 100644
--- a/poky/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch
@@ -1,4 +1,4 @@
-From d95f46e149226f634830e76cc1f4f8e3ee04ff5a Mon Sep 17 00:00:00 2001
+From 2cc9d445b4c8eb70c2ab6c1723dfd208218f103e Mon Sep 17 00:00:00 2001
 From: Martin Jansa <Martin.Jansa@gmail.com>
 Date: Fri, 6 Nov 2020 04:38:13 +0100
 Subject: [PATCH] webkitgtk: fix build with x11 enabled
@@ -21,12 +21,12 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp b/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp
-index 2d66b9cd..424fb5a1 100644
+index bad56eba..fc141f98 100644
 --- a/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp
 +++ b/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp
-@@ -30,6 +30,7 @@
- 
+@@ -31,6 +31,7 @@
  #if PLATFORM(X11)
+ #include <X11/Xatom.h>
  #include <X11/Xlib.h>
 +#include <X11/Xutil.h>
  #include <X11/extensions/Xcomposite.h>
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch b/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch
index f71f845..d8d36fa 100644
--- a/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch
@@ -1,4 +1,4 @@
-From 04e4999c6fa2e9810634745a07f1e380f27b8e61 Mon Sep 17 00:00:00 2001
+From 358a8f053c367aab7fba8ab059244e0530c7ff82 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 17 Mar 2021 13:24:57 -0700
 Subject: [PATCH] reduce thread stack and heap usage for javascriptcore on musl
@@ -25,10 +25,10 @@
  2 files changed, 19 insertions(+), 3 deletions(-)
 
 diff --git a/Source/JavaScriptCore/runtime/OptionsList.h b/Source/JavaScriptCore/runtime/OptionsList.h
-index bb6d2f1d..a6209742 100644
+index a0c2170e..9e107af7 100644
 --- a/Source/JavaScriptCore/runtime/OptionsList.h
 +++ b/Source/JavaScriptCore/runtime/OptionsList.h
-@@ -71,6 +71,18 @@ JS_EXPORT_PRIVATE bool canUseJITCage();
+@@ -77,6 +77,18 @@ bool canUseWebAssemblyFastMemory();
  // On instantiation of the first VM instance, the Options will be write protected
  // and cannot be modified thereafter.
  
@@ -47,7 +47,7 @@
  #define FOR_EACH_JSC_OPTION(v)                                          \
      v(Bool, useKernTCSM, defaultTCSMValue(), Normal, "Note: this needs to go before other options since they depend on this value.") \
      v(Bool, validateOptions, false, Normal, "crashes if mis-typed JSC options were passed to the VM") \
-@@ -86,9 +98,9 @@ JS_EXPORT_PRIVATE bool canUseJITCage();
+@@ -92,9 +104,9 @@ bool canUseWebAssemblyFastMemory();
      \
      v(Bool, reportMustSucceedExecutableAllocations, false, Normal, nullptr) \
      \
@@ -61,11 +61,11 @@
      v(Bool, crashOnDisallowedVMEntry, ASSERT_ENABLED, Normal, "Forces a crash if we attempt to enter the VM when disallowed") \
      v(Bool, crashIfCantAllocateJITMemory, false, Normal, nullptr) \
 diff --git a/Source/WTF/wtf/Threading.h b/Source/WTF/wtf/Threading.h
-index 9495d6c1..190b3811 100644
+index 178f9808..95ec5a85 100644
 --- a/Source/WTF/wtf/Threading.h
 +++ b/Source/WTF/wtf/Threading.h
-@@ -60,6 +60,10 @@
- #include <dispatch/dispatch.h>
+@@ -67,6 +67,10 @@
+ #undef None
  #endif
  
 +#if OS(LINUX) && !defined(__GLIBC__)
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk_2.32.3.bb b/poky/meta/recipes-sato/webkit/webkitgtk_2.32.3.bb
deleted file mode 100644
index 1f3f7a9..0000000
--- a/poky/meta/recipes-sato/webkit/webkitgtk_2.32.3.bb
+++ /dev/null
@@ -1,150 +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 & LGPLv2+"
-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://0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch \
-           file://0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch \
-           file://0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch \
-           file://0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch \
-           file://include_xutil.patch \
-           file://reduce-memory-overheads.patch \
-           file://musl-lower-stack-usage.patch \
-           file://0001-MiniBrowser-Fix-reproduciblity.patch \
-           "
-
-SRC_URI[sha256sum] = "c1f496f5ac654efe4cef62fbd4f2fbeeef265a07c5e7419e5d2900bfeea52cbc"
-
-inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gtk-doc
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'opengl', '', d)}"
-
-CVE_PRODUCT = "webkitgtk webkitgtk\+"
-
-DEPENDS = "zlib libsoup-2.4 curl libxml2 cairo libxslt libgcrypt \
-           gtk+3 gstreamer1.0 gstreamer1.0-plugins-base flex-native gperf-native sqlite3 \
-	   pango icu bison-native gawk intltool-native libwebp \
-	   atk udev harfbuzz jpeg libpng librsvg libtheora libvorbis \
-	   ruby-native libnotify gstreamer1.0-plugins-bad \
-	   gettext-native glib-2.0 glib-2.0-native libtasn1 \
-          "
-
-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)} \
-                   enchant \
-                   libsecret \
-                  "
-
-PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native"
-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/libgl"
-PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/libgl"
-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,,"
-
-# webkitgtk is full of /usr/bin/env python, particular for generating docs
-do_configure[postfuncs] += "setup_python_link"
-setup_python_link() {
-	if [ ! -e ${STAGING_BINDIR_NATIVE}/python ]; then
-		ln -s `which python3` ${STAGING_BINDIR_NATIVE}/python
-	fi
-}
-
-EXTRA_OECMAKE = " \
-		-DPORT=GTK \
-		${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
-		${@bb.utils.contains('GTKDOC_ENABLED', 'True', '-DENABLE_GTKDOC=ON', '-DENABLE_GTKDOC=OFF', d)} \
-		-DENABLE_MINIBROWSER=ON \
-                -DPYTHON_EXECUTABLE=`which python3` \
-                -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
-                -DENABLE_GAMEPAD=OFF \
-		"
-
-# 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"
-
-# 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:armv5 = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF "
-
-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 -DENABLE_JIT=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.0/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"
-
-# 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}/DerivedSources/webkit2gtk/webkit2/*.cpp \
-            ${B}/DerivedSources/ForwardingHeaders/JavaScriptCore/*.h \
-            ${B}/DerivedSources/JavaScriptCore/*.h \
-            ${B}/DerivedSources/JavaScriptCore/yarr/*.h \
-            ${B}/DerivedSources/MiniBrowser/*.c
-}
-
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk_2.34.1.bb b/poky/meta/recipes-sato/webkit/webkitgtk_2.34.1.bb
new file mode 100644
index 0000000..4e2562d
--- /dev/null
+++ b/poky/meta/recipes-sato/webkit/webkitgtk_2.34.1.bb
@@ -0,0 +1,164 @@
+SUMMARY = "WebKit web rendering engine for the GTK+ platform"
+HOMEPAGE = "https://www.webkitgtk.org/"
+BUGTRACKER = "https://bugs.webkit.org/"
+
+LICENSE = "BSD-2-Clause & LGPLv2+"
+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://0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch \
+           file://0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch \
+           file://0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch \
+           file://0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch \
+           file://include_xutil.patch \
+           file://reduce-memory-overheads.patch \
+           file://musl-lower-stack-usage.patch \
+           file://0001-Fix-build-without-opengl-or-es.patch \
+           "
+
+SRC_URI[sha256sum] = "443c1316705de024741748e85fe32324d299d9ee68e6feb340b89e4a04073dee"
+
+inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gtk-doc
+
+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 \
+          cairo \
+          harfbuzz \
+          jpeg \
+          atk \
+          libwebp \
+          gtk+3 \
+          libsoup \
+          libxslt \
+          libtasn1 \
+          libnotify \
+          gstreamer1.0 \
+          gstreamer1.0-plugins-base \
+          "
+
+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 angle', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl-or-es', '', d)} \
+                   enchant \
+                   libsecret \
+                  "
+
+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/libgl"
+PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/libgl"
+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"
+
+# webkitgtk is full of /usr/bin/env python, particular for generating docs
+do_configure[postfuncs] += "setup_python_link"
+setup_python_link() {
+	if [ ! -e ${STAGING_BINDIR_NATIVE}/python ]; then
+		ln -s `which python3` ${STAGING_BINDIR_NATIVE}/python
+	fi
+}
+
+EXTRA_OECMAKE = " \
+		-DPORT=GTK \
+		${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
+		${@bb.utils.contains('GTKDOC_ENABLED', 'True', '-DENABLE_GTKDOC=ON', '-DENABLE_GTKDOC=OFF', d)} \
+		-DENABLE_MINIBROWSER=ON \
+                -DPYTHON_EXECUTABLE=`which python3` \
+                -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
+                -DENABLE_GAMEPAD=OFF \
+		"
+
+# 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"
+
+# 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:armv5 = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF "
+
+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 -DENABLE_JIT=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.1/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"
+
+# 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}/WebKit2Gtk/DerivedSources/webkit2/*.cpp \
+            ${B}/WebKit2Gtk/DerivedSources/webkit2/*.h
+
+}
+
diff --git a/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.10.0.bb b/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.10.0.bb
deleted file mode 100644
index f2d640f..0000000
--- a/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.10.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "WPE's backend based on a freedesktop.org stack."
-HOMEPAGE = "https://github.com/Igalia/WPEBackend-fdo"
-BUGTRACKER = "https://github.com/Igalia/WPEBackend-fdo/issues"
-
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1f62cef2e3645e3e74eb05fd389d7a66"
-DEPENDS = "glib-2.0 libxkbcommon wayland virtual/egl libwpe libepoxy"
-
-DEPENDS:append:class-target = " wayland-native"
-
-inherit meson features_check pkgconfig
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "b89dfd3500a4dec711132cd7bff72599e67d56a419d000730e14bb99547509cc"
-
-# This is a tweak of upstream-version-is-even needed because
-# ipstream directory contains tarballs for other components as well.
-UPSTREAM_CHECK_REGEX = "wpebackend-fdo-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar"
diff --git a/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.12.0.bb b/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.12.0.bb
new file mode 100644
index 0000000..ba6c544
--- /dev/null
+++ b/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.12.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "WPE's backend based on a freedesktop.org stack."
+HOMEPAGE = "https://github.com/Igalia/WPEBackend-fdo"
+BUGTRACKER = "https://github.com/Igalia/WPEBackend-fdo/issues"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1f62cef2e3645e3e74eb05fd389d7a66"
+DEPENDS = "glib-2.0 libxkbcommon wayland virtual/egl libwpe libepoxy"
+
+DEPENDS:append:class-target = " wayland-native"
+
+inherit meson features_check pkgconfig
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "6239c9c15523410798d66315de6b491712ab30009ba180f3e0dd076d9b0074ac"
+
+# This is a tweak of upstream-version-is-even needed because
+# ipstream directory contains tarballs for other components as well.
+UPSTREAM_CHECK_REGEX = "wpebackend-fdo-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar"
diff --git a/poky/meta/recipes-support/atk/at-spi2-core/0001-Ensure-x11_dep-is-defined.patch b/poky/meta/recipes-support/atk/at-spi2-core/0001-Ensure-x11_dep-is-defined.patch
new file mode 100644
index 0000000..4a9bbbc
--- /dev/null
+++ b/poky/meta/recipes-support/atk/at-spi2-core/0001-Ensure-x11_dep-is-defined.patch
@@ -0,0 +1,33 @@
+From 9e726133319298a835f724904c80e5adf78f475f Mon Sep 17 00:00:00 2001
+From: Tim Orling <timothy.t.orling@intel.com>
+Date: Fri, 15 Oct 2021 18:00:04 +0000
+Subject: [PATCH] Ensure x11_dep is defined
+
+bus/meson.build checks if x11_dep.found(), but this fails when
+-Dx11=no
+
+Upstream-Status: Submitted
+[https://gitlab.gnome.org/GNOME/at-spi2-core/-/merge_requests/60]
+
+References:
+  https://gitlab.gnome.org/GNOME/at-spi2-core/-/issues/42
+  https://mesonbuild.com/howtox.html#get-a-default-notfound-dependency
+
+Signed-off-by: Tim Orling <timothy.t.orling@intel.com>
+---
+ meson.build | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index b5104c8..85d7a0e 100644
+--- a/meson.build
++++ b/meson.build
+@@ -62,6 +62,8 @@ endif
+ 
+ x11_deps = []
+ x11_option = get_option('x11')
++# ensure x11_dep is defined for use in bus/meson.build
++x11_dep = dependency('', required: false)
+ if x11_option != 'no'
+   x11_dep = dependency('x11', required: false)
+ 
diff --git a/poky/meta/recipes-support/atk/at-spi2-core_2.40.3.bb b/poky/meta/recipes-support/atk/at-spi2-core_2.40.3.bb
deleted file mode 100644
index 427ea7c..0000000
--- a/poky/meta/recipes-support/atk/at-spi2-core_2.40.3.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "Assistive Technology Service Provider Interface (dbus core)"
-
-DESCRIPTION = "It provides a Service Provider Interface for the Assistive Technologies available on the GNOME platform and a library against which applications can be linked."
-
-HOMEPAGE = "https://wiki.linuxfoundation.org/accessibility/d-bus"
-BUGTRACKER = "http://bugzilla.gnome.org/"
-LICENSE = "LGPL-2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "e49837c2ad30d71e1f29ca8e0968a54b95030272f7ff40b89b48968653f37a5c"
-
-X11DEPENDS = "virtual/libx11 libxi libxtst"
-
-DEPENDS = "dbus glib-2.0"
-DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${X11DEPENDS}', '', d)}"
-
-inherit meson gtk-doc gettext systemd pkgconfig upstream-version-is-even gobject-introspection
-
-EXTRA_OEMESON = " -Dsystemd_user_dir=${systemd_user_unitdir} \
-                  -Ddbus_daemon=${bindir}/dbus-daemon \
-                  ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '-Dx11=yes', '-Dx11=no', d)} \
-"
-
-GTKDOC_MESON_OPTION = "docs"
-
-GIR_MESON_OPTION = 'introspection'
-GIR_MESON_ENABLE_FLAG = 'yes'
-GIR_MESON_DISABLE_FLAG = 'no'
-
-FILES:${PN} += "${datadir}/dbus-1/services/*.service \
-                ${datadir}/dbus-1/accessibility-services/*.service \
-                ${datadir}/defaults/at-spi2 \
-                ${systemd_user_unitdir}/at-spi-dbus-bus.service \
-                "
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/atk/at-spi2-core_2.42.0.bb b/poky/meta/recipes-support/atk/at-spi2-core_2.42.0.bb
new file mode 100644
index 0000000..e09c74a
--- /dev/null
+++ b/poky/meta/recipes-support/atk/at-spi2-core_2.42.0.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Assistive Technology Service Provider Interface (dbus core)"
+
+DESCRIPTION = "It provides a Service Provider Interface for the Assistive Technologies available on the GNOME platform and a library against which applications can be linked."
+
+HOMEPAGE = "https://wiki.linuxfoundation.org/accessibility/d-bus"
+BUGTRACKER = "http://bugzilla.gnome.org/"
+LICENSE = "LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
+           file://0001-Ensure-x11_dep-is-defined.patch \
+           "
+
+SRC_URI[sha256sum] = "4b5da10e94fa3c6195f95222438f63a0234b99ef9df772c7640e82baeaa6e386"
+
+X11DEPENDS = "virtual/libx11 libxi libxtst"
+
+DEPENDS = "dbus glib-2.0"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${X11DEPENDS}', '', d)}"
+
+inherit meson gtk-doc gettext systemd pkgconfig upstream-version-is-even gobject-introspection
+
+EXTRA_OEMESON = " -Dsystemd_user_dir=${systemd_user_unitdir} \
+                  -Ddbus_daemon=${bindir}/dbus-daemon \
+                  ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '-Dx11=yes', '-Dx11=no', d)} \
+"
+
+GTKDOC_MESON_OPTION = "docs"
+
+GIR_MESON_OPTION = 'introspection'
+GIR_MESON_ENABLE_FLAG = 'yes'
+GIR_MESON_DISABLE_FLAG = 'no'
+
+FILES:${PN} += "${datadir}/dbus-1/services/*.service \
+                ${datadir}/dbus-1/accessibility-services/*.service \
+                ${datadir}/defaults/at-spi2 \
+                ${systemd_user_unitdir}/at-spi-dbus-bus.service \
+                "
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/boost/boost/0001-BoostConfig.cmake-allow-searching-for-python310.patch b/poky/meta/recipes-support/boost/boost/0001-BoostConfig.cmake-allow-searching-for-python310.patch
new file mode 100644
index 0000000..0a9ee2c
--- /dev/null
+++ b/poky/meta/recipes-support/boost/boost/0001-BoostConfig.cmake-allow-searching-for-python310.patch
@@ -0,0 +1,50 @@
+From e193f080c7d209516ac9b712fa0c50bb08026fa2 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 19 Oct 2021 12:24:31 +0000
+Subject: [PATCH] BoostConfig.cmake: allow searching for python310
+
+* accept double digits in Python3_VERSION_MINOR
+
+* if someone is using e.g.:
+  find_package(Python3 REQUIRED)
+  find_package(Boost REQUIRED python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR})
+
+  with python-3.10 then it currently fails with:
+
+  -- Found PythonLibs: /usr/lib/libpython3.10.so (found version "3.10.0")
+  -- Found Python3: -native/usr/bin/python3-native/python3 (found version "3.10.0") found components: Interpreter
+  CMake Error at /usr/lib/cmake/Boost-1.77.0/BoostConfig.cmake:141 (find_package):
+    Could not find a package configuration file provided by "boost_python310"
+    (requested version 1.77.0) with any of the following names:
+
+      boost_python310Config.cmake
+      boost_python310-config.cmake
+
+    Add the installation prefix of "boost_python310" to CMAKE_PREFIX_PATH or
+    set "boost_python310_DIR" to a directory containing one of the above files.
+    If "boost_python310" provides a separate development package or SDK, be
+    sure it has been installed.
+  Call Stack (most recent call first):
+    /usr/lib/cmake/Boost-1.77.0/BoostConfig.cmake:258 (boost_find_component)
+    /usr/share/cmake-3.21/Modules/FindBoost.cmake:594 (find_package)
+    CMakeLists.txt:18 (find_package)
+
+Upstream-Status: Submitted [https://github.com/boostorg/boost_install/pull/53]
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ tools/boost_install/BoostConfig.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/boost_install/BoostConfig.cmake b/tools/boost_install/BoostConfig.cmake
+index fd17821..5dffa58 100644
+--- a/tools/boost_install/BoostConfig.cmake
++++ b/tools/boost_install/BoostConfig.cmake
+@@ -113,7 +113,7 @@ macro(boost_find_component comp required quiet)
+     set(_BOOST_REQUIRED REQUIRED)
+   endif()
+ 
+-  if("${comp}" MATCHES "^(python|numpy|mpi_python)([1-9])([0-9])$")
++  if("${comp}" MATCHES "^(python|numpy|mpi_python)([1-9])([0-9][0-9]?)$")
+ 
+     # handle pythonXY and numpyXY versioned components for compatibility
+ 
diff --git a/poky/meta/recipes-support/boost/boost_1.77.0.bb b/poky/meta/recipes-support/boost/boost_1.77.0.bb
index df8e08a..ba60281 100644
--- a/poky/meta/recipes-support/boost/boost_1.77.0.bb
+++ b/poky/meta/recipes-support/boost/boost_1.77.0.bb
@@ -6,4 +6,5 @@
            file://0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch \
            file://0001-dont-setup-compiler-flags-m32-m64.patch \
            file://0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch \
+           file://0001-BoostConfig.cmake-allow-searching-for-python310.patch \
            "
diff --git a/poky/meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch b/poky/meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch
new file mode 100644
index 0000000..5c4a32f
--- /dev/null
+++ b/poky/meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch
@@ -0,0 +1,80 @@
+From cb43ec15b700b25f3c4fe44043a1a021aaf5b768 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 18 Oct 2021 12:05:49 +0200
+Subject: [PATCH] Revert "mozilla/certdata2pem.py: print a warning for expired
+ certificates."
+
+This avoids a dependency on python3-cryptography, and only checks
+for expired certs (which is upstream concern, but not ours).
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ debian/changelog        |  1 -
+ debian/control          |  2 +-
+ mozilla/certdata2pem.py | 11 -----------
+ 3 files changed, 1 insertion(+), 13 deletions(-)
+
+diff --git a/debian/changelog b/debian/changelog
+index 531e4d0..4006509 100644
+--- a/debian/changelog
++++ b/debian/changelog
+@@ -37,7 +37,6 @@ ca-certificates (20211004) unstable; urgency=low
+     - "Trustis FPS Root CA"
+     - "Staat der Nederlanden Root CA - G3"
+   * Blacklist expired root certificate "DST Root CA X3" (closes: #995432)
+-  * mozilla/certdata2pem.py: print a warning for expired certificates.
+ 
+  -- Julien Cristau <jcristau@debian.org>  Thu, 07 Oct 2021 17:12:47 +0200
+ 
+diff --git a/debian/control b/debian/control
+index 4434b7a..5c6ba24 100644
+--- a/debian/control
++++ b/debian/control
+@@ -3,7 +3,7 @@ Section: misc
+ Priority: optional
+ Maintainer: Julien Cristau <jcristau@debian.org>
+ Build-Depends: debhelper-compat (= 13), po-debconf
+-Build-Depends-Indep: python3, openssl, python3-cryptography
++Build-Depends-Indep: python3, openssl
+ Standards-Version: 4.5.0.2
+ Vcs-Git: https://salsa.debian.org/debian/ca-certificates.git
+ Vcs-Browser: https://salsa.debian.org/debian/ca-certificates
+diff --git a/mozilla/certdata2pem.py b/mozilla/certdata2pem.py
+index ede23d4..7d796f1 100644
+--- a/mozilla/certdata2pem.py
++++ b/mozilla/certdata2pem.py
+@@ -21,16 +21,12 @@
+ # USA.
+ 
+ import base64
+-import datetime
+ import os.path
+ import re
+ import sys
+ import textwrap
+ import io
+ 
+-from cryptography import x509
+-
+-
+ objects = []
+ 
+ # Dirty file parser.
+@@ -121,13 +117,6 @@ for obj in objects:
+     if obj['CKA_CLASS'] == 'CKO_CERTIFICATE':
+         if not obj['CKA_LABEL'] in trust or not trust[obj['CKA_LABEL']]:
+             continue
+-
+-        cert = x509.load_der_x509_certificate(obj['CKA_VALUE'])
+-        if cert.not_valid_after < datetime.datetime.now():
+-            print('!'*74)
+-            print('Trusted but expired certificate found: %s' % obj['CKA_LABEL'])
+-            print('!'*74)
+-
+         bname = obj['CKA_LABEL'][1:-1].replace('/', '_')\
+                                       .replace(' ', '_')\
+                                       .replace('(', '=')\
+-- 
+2.20.1
+
diff --git a/poky/meta/recipes-support/ca-certificates/ca-certificates/sbindir.patch b/poky/meta/recipes-support/ca-certificates/ca-certificates/sbindir.patch
deleted file mode 100644
index f343ebf..0000000
--- a/poky/meta/recipes-support/ca-certificates/ca-certificates/sbindir.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-sbin/Makefile: Allow the sbin path to be configurable
-
-Some project sharing ca-certificates from Debian allow configuration
-of the installation location. Make the sbin location configurable.
-
-Also ensure the target directory exists
-
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-Upstream-Status: Submitted [https://salsa.debian.org/debian/ca-certificates/-/merge_requests/5]
-
---- ca-certificates-20130119.orig/sbin/Makefile
-+++ ca-certificates-20130119/sbin/Makefile
-@@ -3,9 +3,12 @@
- #
- #
-
-+SBINDIR = /usr/sbin
-+
- all:
-
- clean:
-
- install:
--	install -m755 update-ca-certificates $(DESTDIR)/usr/sbin/
-+	install -d $(DESTDIR)$(SBINDIR)
-+	install -m755 update-ca-certificates $(DESTDIR)$(SBINDIR)/
diff --git a/poky/meta/recipes-support/ca-certificates/ca-certificates/update-ca-certificates-support-Toybox.patch b/poky/meta/recipes-support/ca-certificates/ca-certificates/update-ca-certificates-support-Toybox.patch
deleted file mode 100644
index f787909..0000000
--- a/poky/meta/recipes-support/ca-certificates/ca-certificates/update-ca-certificates-support-Toybox.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-update-ca-certificates: Replace deprecated mktemp -t with mktemp --tmpdir
-
-According to coreutils docs, mktemp -t is deprecated, switch to the
---tmpdir option instead.
-
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-Upstream-Status: Submitted [https://salsa.debian.org/debian/ca-certificates/-/merge_requests/5]
-
-[This was originally for compatibility with toybox but toybox now
-supports -t]
----
- sbin/update-ca-certificates | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/sbin/update-ca-certificates b/sbin/update-ca-certificates
-index 79c41bb..ae9e3f1 100755
---- a/sbin/update-ca-certificates
-+++ b/sbin/update-ca-certificates
-@@ -113,9 +113,9 @@ trap cleanup 0
- 
- # Helper files.  (Some of them are not simple arrays because we spawn
- # subshells later on.)
--TEMPBUNDLE="$(mktemp -t "${CERTBUNDLE}.tmp.XXXXXX")"
--ADDED="$(mktemp -t "ca-certificates.tmp.XXXXXX")"
--REMOVED="$(mktemp -t "ca-certificates.tmp.XXXXXX")"
-+TEMPBUNDLE="$(mktemp --tmpdir "${CERTBUNDLE}.tmp.XXXXXX")"
-+ADDED="$(mktemp --tmpdir "ca-certificates.tmp.XXXXXX")"
-+REMOVED="$(mktemp --tmpdir "ca-certificates.tmp.XXXXXX")"
- 
- # Adds a certificate to the list of trusted ones.  This includes a symlink
- # in /etc/ssl/certs to the certificate file and its inclusion into the
--- 
-2.1.4
diff --git a/poky/meta/recipes-support/ca-certificates/ca-certificates_20210119.bb b/poky/meta/recipes-support/ca-certificates/ca-certificates_20210119.bb
deleted file mode 100644
index 3632038..0000000
--- a/poky/meta/recipes-support/ca-certificates/ca-certificates_20210119.bb
+++ /dev/null
@@ -1,90 +0,0 @@
-SUMMARY = "Common CA certificates"
-DESCRIPTION = "This package includes PEM files of CA certificates to allow \
-SSL-based applications to check for the authenticity of SSL connections. \
-This derived from Debian's CA Certificates."
-HOMEPAGE = "http://packages.debian.org/sid/ca-certificates"
-SECTION = "misc"
-LICENSE = "GPL-2.0+ & MPL-2.0"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=ae5b36b514e3f12ce1aa8e2ee67f3d7e"
-
-# This is needed to ensure we can run the postinst at image creation time
-DEPENDS = ""
-DEPENDS:class-native = "openssl-native"
-DEPENDS:class-nativesdk = "openssl-native"
-# Need rehash from openssl and run-parts from debianutils
-PACKAGE_WRITE_DEPS += "openssl-native debianutils-native"
-
-SRCREV = "181be7ebd169b4a6fb5d90c3e6dc791e90534144"
-
-SRC_URI = "git://salsa.debian.org/debian/ca-certificates.git;protocol=https \
-           file://0002-update-ca-certificates-use-SYSROOT.patch \
-           file://0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch \
-           file://update-ca-certificates-support-Toybox.patch \
-           file://default-sysroot.patch \
-           file://sbindir.patch \
-           file://0003-update-ca-certificates-use-relative-symlinks-from-ET.patch \
-           "
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+)"
-
-S = "${WORKDIR}/git"
-
-inherit allarch
-
-EXTRA_OEMAKE = "\
-    'CERTSDIR=${datadir}/ca-certificates' \
-    'SBINDIR=${sbindir}' \
-"
-
-do_compile:prepend() {
-    oe_runmake clean
-}
-
-do_install () {
-    install -d ${D}${datadir}/ca-certificates \
-               ${D}${sysconfdir}/ssl/certs \
-               ${D}${sysconfdir}/ca-certificates/update.d
-    oe_runmake 'DESTDIR=${D}' install
-
-    install -d ${D}${mandir}/man8
-    install -m 0644 sbin/update-ca-certificates.8 ${D}${mandir}/man8/
-
-    install -d ${D}${sysconfdir}
-    {
-        echo "# Lines starting with # will be ignored"
-        echo "# Lines starting with ! will remove certificate on next update"
-        echo "#"
-        find ${D}${datadir}/ca-certificates -type f -name '*.crt' | \
-            sed 's,^${D}${datadir}/ca-certificates/,,' | sort
-    } >${D}${sysconfdir}/ca-certificates.conf
-}
-
-do_install:append:class-target () {
-    sed -i -e 's,/etc/,${sysconfdir}/,' \
-           -e 's,/usr/share/,${datadir}/,' \
-           -e 's,/usr/local,${prefix}/local,' \
-        ${D}${sbindir}/update-ca-certificates \
-        ${D}${mandir}/man8/update-ca-certificates.8
-}
-
-pkg_postinst:${PN}:class-target () {
-    SYSROOT="$D" $D${sbindir}/update-ca-certificates
-}
-
-CONFFILES:${PN} += "${sysconfdir}/ca-certificates.conf"
-
-# Rather than make a postinst script that works for both target and nativesdk,
-# we just run update-ca-certificate from do_install() for nativesdk.
-CONFFILES:${PN}:append:class-nativesdk = " ${sysconfdir}/ssl/certs/ca-certificates.crt"
-do_install:append:class-nativesdk () {
-    SYSROOT="${D}${SDKPATHNATIVE}" ${D}${sbindir}/update-ca-certificates
-}
-
-do_install:append:class-native () {
-    SYSROOT="${D}${base_prefix}" ${D}${sbindir}/update-ca-certificates
-}
-
-RDEPENDS:${PN}:append:class-target = " openssl-bin openssl"
-RDEPENDS:${PN}:append:class-native = " openssl-native"
-RDEPENDS:${PN}:append:class-nativesdk = " nativesdk-openssl-bin nativesdk-openssl"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/ca-certificates/ca-certificates_20211016.bb b/poky/meta/recipes-support/ca-certificates/ca-certificates_20211016.bb
new file mode 100644
index 0000000..0bb192c
--- /dev/null
+++ b/poky/meta/recipes-support/ca-certificates/ca-certificates_20211016.bb
@@ -0,0 +1,89 @@
+SUMMARY = "Common CA certificates"
+DESCRIPTION = "This package includes PEM files of CA certificates to allow \
+SSL-based applications to check for the authenticity of SSL connections. \
+This derived from Debian's CA Certificates."
+HOMEPAGE = "http://packages.debian.org/sid/ca-certificates"
+SECTION = "misc"
+LICENSE = "GPL-2.0+ & MPL-2.0"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=ae5b36b514e3f12ce1aa8e2ee67f3d7e"
+
+# This is needed to ensure we can run the postinst at image creation time
+DEPENDS = ""
+DEPENDS:class-native = "openssl-native"
+DEPENDS:class-nativesdk = "openssl-native"
+# Need rehash from openssl and run-parts from debianutils
+PACKAGE_WRITE_DEPS += "openssl-native debianutils-native"
+
+SRCREV = "07de54fdcc5806bde549e1edf60738c6bccf50e8"
+
+SRC_URI = "git://salsa.debian.org/debian/ca-certificates.git;protocol=https \
+           file://0002-update-ca-certificates-use-SYSROOT.patch \
+           file://0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch \
+           file://default-sysroot.patch \
+           file://0003-update-ca-certificates-use-relative-symlinks-from-ET.patch \
+           file://0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch \
+           "
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+)"
+
+S = "${WORKDIR}/git"
+
+inherit allarch
+
+EXTRA_OEMAKE = "\
+    'CERTSDIR=${datadir}/ca-certificates' \
+    'SBINDIR=${sbindir}' \
+"
+
+do_compile:prepend() {
+    oe_runmake clean
+}
+
+do_install () {
+    install -d ${D}${datadir}/ca-certificates \
+               ${D}${sysconfdir}/ssl/certs \
+               ${D}${sysconfdir}/ca-certificates/update.d
+    oe_runmake 'DESTDIR=${D}' install
+
+    install -d ${D}${mandir}/man8
+    install -m 0644 sbin/update-ca-certificates.8 ${D}${mandir}/man8/
+
+    install -d ${D}${sysconfdir}
+    {
+        echo "# Lines starting with # will be ignored"
+        echo "# Lines starting with ! will remove certificate on next update"
+        echo "#"
+        find ${D}${datadir}/ca-certificates -type f -name '*.crt' | \
+            sed 's,^${D}${datadir}/ca-certificates/,,' | sort
+    } >${D}${sysconfdir}/ca-certificates.conf
+}
+
+do_install:append:class-target () {
+    sed -i -e 's,/etc/,${sysconfdir}/,' \
+           -e 's,/usr/share/,${datadir}/,' \
+           -e 's,/usr/local,${prefix}/local,' \
+        ${D}${sbindir}/update-ca-certificates \
+        ${D}${mandir}/man8/update-ca-certificates.8
+}
+
+pkg_postinst:${PN}:class-target () {
+    SYSROOT="$D" $D${sbindir}/update-ca-certificates
+}
+
+CONFFILES:${PN} += "${sysconfdir}/ca-certificates.conf"
+
+# Rather than make a postinst script that works for both target and nativesdk,
+# we just run update-ca-certificate from do_install() for nativesdk.
+CONFFILES:${PN}:append:class-nativesdk = " ${sysconfdir}/ssl/certs/ca-certificates.crt"
+do_install:append:class-nativesdk () {
+    SYSROOT="${D}${SDKPATHNATIVE}" ${D}${sbindir}/update-ca-certificates
+}
+
+do_install:append:class-native () {
+    SYSROOT="${D}${base_prefix}" ${D}${sbindir}/update-ca-certificates
+}
+
+RDEPENDS:${PN}:append:class-target = " openssl-bin openssl"
+RDEPENDS:${PN}:append:class-native = " openssl-native"
+RDEPENDS:${PN}:append:class-nativesdk = " nativesdk-openssl-bin nativesdk-openssl"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/curl/curl_7.78.0.bb b/poky/meta/recipes-support/curl/curl_7.78.0.bb
deleted file mode 100644
index dece0ba..0000000
--- a/poky/meta/recipes-support/curl/curl_7.78.0.bb
+++ /dev/null
@@ -1,90 +0,0 @@
-SUMMARY = "Command line tool and library for client-side URL transfers"
-DESCRIPTION = "It uses URL syntax to transfer data to and from servers. \
-curl is a widely used because of its ability to be flexible and complete \
-complex tasks. For example, you can use curl for things like user authentication, \
-HTTP post, SSL connections, proxy support, FTP uploads, and more!"
-HOMEPAGE = "http://curl.haxx.se/"
-BUGTRACKER = "http://curl.haxx.se/mail/list.cgi?list=curl-tracker"
-SECTION = "console/network"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=425f6fdc767cc067518eef9bbdf4ab7b"
-
-SRC_URI = "https://curl.haxx.se/download/curl-${PV}.tar.bz2 \
-           file://0001-replace-krb5-config-with-pkg-config.patch \
-"
-
-SRC_URI[sha256sum] = "98530b317dc95ccb324bbe4f834f07bb642fbc393b794ddf3434f246a71ea44a"
-
-# Curl has used many names over the years...
-CVE_PRODUCT = "haxx:curl haxx:libcurl curl:curl curl:libcurl libcurl:libcurl daniel_stenberg:curl"
-
-inherit autotools pkgconfig binconfig multilib_header
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} ssl libidn proxy threaded-resolver verbose zlib"
-PACKAGECONFIG:class-native = "ipv6 proxy ssl threaded-resolver verbose zlib"
-PACKAGECONFIG:class-nativesdk = "ipv6 proxy ssl threaded-resolver verbose zlib"
-
-# 'ares' and 'threaded-resolver' are mutually exclusive
-PACKAGECONFIG[ares] = "--enable-ares,--disable-ares,c-ares,,,threaded-resolver"
-PACKAGECONFIG[brotli] = "--with-brotli,--without-brotli,brotli"
-PACKAGECONFIG[builtinmanual] = "--enable-manual,--disable-manual"
-PACKAGECONFIG[dict] = "--enable-dict,--disable-dict,"
-PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
-PACKAGECONFIG[gopher] = "--enable-gopher,--disable-gopher,"
-PACKAGECONFIG[imap] = "--enable-imap,--disable-imap,"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-PACKAGECONFIG[krb5] = "--with-gssapi,--without-gssapi,krb5"
-PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,"
-PACKAGECONFIG[ldaps] = "--enable-ldaps,--disable-ldaps,"
-PACKAGECONFIG[libgsasl] = "--with-libgsasl,--without-libgsasl,libgsasl"
-PACKAGECONFIG[libidn] = "--with-libidn2,--without-libidn2,libidn2"
-PACKAGECONFIG[libssh2] = "--with-libssh2,--without-libssh2,libssh2"
-PACKAGECONFIG[mbedtls] = "--with-mbedtls=${STAGING_DIR_TARGET},--without-mbedtls,mbedtls"
-PACKAGECONFIG[mqtt] = "--enable-mqtt,--disable-mqtt,"
-PACKAGECONFIG[nghttp2] = "--with-nghttp2,--without-nghttp2,nghttp2"
-PACKAGECONFIG[pop3] = "--enable-pop3,--disable-pop3,"
-PACKAGECONFIG[proxy] = "--enable-proxy,--disable-proxy,"
-PACKAGECONFIG[rtmpdump] = "--with-librtmp,--without-librtmp,rtmpdump"
-PACKAGECONFIG[rtsp] = "--enable-rtsp,--disable-rtsp,"
-PACKAGECONFIG[smb] = "--enable-smb,--disable-smb,"
-PACKAGECONFIG[smtp] = "--enable-smtp,--disable-smtp,"
-PACKAGECONFIG[ssl] = "--with-ssl --with-random=/dev/urandom,--without-ssl,openssl"
-PACKAGECONFIG[nss] = "--with-nss,--without-nss,nss"
-PACKAGECONFIG[telnet] = "--enable-telnet,--disable-telnet,"
-PACKAGECONFIG[tftp] = "--enable-tftp,--disable-tftp,"
-PACKAGECONFIG[threaded-resolver] = "--enable-threaded-resolver,--disable-threaded-resolver,,,,ares"
-PACKAGECONFIG[verbose] = "--enable-verbose,--disable-verbose"
-PACKAGECONFIG[zlib] = "--with-zlib=${STAGING_LIBDIR}/../,--without-zlib,zlib"
-
-EXTRA_OECONF = " \
-    --disable-libcurl-option \
-    --disable-ntlm-wb \
-    --enable-crypto-auth \
-    --with-ca-bundle=${sysconfdir}/ssl/certs/ca-certificates.crt \
-    --without-libpsl \
-    --enable-debug \
-    --enable-optimize \
-    --disable-curldebug \
-"
-
-do_install:append:class-target() {
-	# cleanup buildpaths from curl-config
-	sed -i \
-	    -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
-	    -e 's,--with-libtool-sysroot=${STAGING_DIR_TARGET},,g' \
-	    -e 's|${DEBUG_PREFIX_MAP}||g' \
-	    -e 's|${@" ".join(d.getVar("DEBUG_PREFIX_MAP").split())}||g' \
-	    ${D}${bindir}/curl-config
-}
-
-PACKAGES =+ "lib${BPN}"
-
-FILES:lib${BPN} = "${libdir}/lib*.so.*"
-RRECOMMENDS:lib${BPN} += "ca-certificates"
-
-FILES:${PN} += "${datadir}/zsh"
-
-inherit multilib_script
-MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/curl-config"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/curl/curl_7.79.1.bb b/poky/meta/recipes-support/curl/curl_7.79.1.bb
new file mode 100644
index 0000000..919777c
--- /dev/null
+++ b/poky/meta/recipes-support/curl/curl_7.79.1.bb
@@ -0,0 +1,90 @@
+SUMMARY = "Command line tool and library for client-side URL transfers"
+DESCRIPTION = "It uses URL syntax to transfer data to and from servers. \
+curl is a widely used because of its ability to be flexible and complete \
+complex tasks. For example, you can use curl for things like user authentication, \
+HTTP post, SSL connections, proxy support, FTP uploads, and more!"
+HOMEPAGE = "http://curl.haxx.se/"
+BUGTRACKER = "http://curl.haxx.se/mail/list.cgi?list=curl-tracker"
+SECTION = "console/network"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=425f6fdc767cc067518eef9bbdf4ab7b"
+
+SRC_URI = "https://curl.haxx.se/download/curl-${PV}.tar.bz2 \
+           file://0001-replace-krb5-config-with-pkg-config.patch \
+           "
+
+SRC_URI[sha256sum] = "de62c4ab9a9316393962e8b94777a570bb9f71feb580fb4475e412f2f9387851"
+
+# Curl has used many names over the years...
+CVE_PRODUCT = "haxx:curl haxx:libcurl curl:curl curl:libcurl libcurl:libcurl daniel_stenberg:curl"
+
+inherit autotools pkgconfig binconfig multilib_header
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} ssl libidn proxy threaded-resolver verbose zlib"
+PACKAGECONFIG:class-native = "ipv6 proxy ssl threaded-resolver verbose zlib"
+PACKAGECONFIG:class-nativesdk = "ipv6 proxy ssl threaded-resolver verbose zlib"
+
+# 'ares' and 'threaded-resolver' are mutually exclusive
+PACKAGECONFIG[ares] = "--enable-ares,--disable-ares,c-ares,,,threaded-resolver"
+PACKAGECONFIG[brotli] = "--with-brotli,--without-brotli,brotli"
+PACKAGECONFIG[builtinmanual] = "--enable-manual,--disable-manual"
+PACKAGECONFIG[dict] = "--enable-dict,--disable-dict,"
+PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
+PACKAGECONFIG[gopher] = "--enable-gopher,--disable-gopher,"
+PACKAGECONFIG[imap] = "--enable-imap,--disable-imap,"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+PACKAGECONFIG[krb5] = "--with-gssapi,--without-gssapi,krb5"
+PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,"
+PACKAGECONFIG[ldaps] = "--enable-ldaps,--disable-ldaps,"
+PACKAGECONFIG[libgsasl] = "--with-libgsasl,--without-libgsasl,libgsasl"
+PACKAGECONFIG[libidn] = "--with-libidn2,--without-libidn2,libidn2"
+PACKAGECONFIG[libssh2] = "--with-libssh2,--without-libssh2,libssh2"
+PACKAGECONFIG[mbedtls] = "--with-mbedtls=${STAGING_DIR_TARGET},--without-mbedtls,mbedtls"
+PACKAGECONFIG[mqtt] = "--enable-mqtt,--disable-mqtt,"
+PACKAGECONFIG[nghttp2] = "--with-nghttp2,--without-nghttp2,nghttp2"
+PACKAGECONFIG[pop3] = "--enable-pop3,--disable-pop3,"
+PACKAGECONFIG[proxy] = "--enable-proxy,--disable-proxy,"
+PACKAGECONFIG[rtmpdump] = "--with-librtmp,--without-librtmp,rtmpdump"
+PACKAGECONFIG[rtsp] = "--enable-rtsp,--disable-rtsp,"
+PACKAGECONFIG[smb] = "--enable-smb,--disable-smb,"
+PACKAGECONFIG[smtp] = "--enable-smtp,--disable-smtp,"
+PACKAGECONFIG[ssl] = "--with-ssl --with-random=/dev/urandom,--without-ssl,openssl"
+PACKAGECONFIG[nss] = "--with-nss,--without-nss,nss"
+PACKAGECONFIG[telnet] = "--enable-telnet,--disable-telnet,"
+PACKAGECONFIG[tftp] = "--enable-tftp,--disable-tftp,"
+PACKAGECONFIG[threaded-resolver] = "--enable-threaded-resolver,--disable-threaded-resolver,,,,ares"
+PACKAGECONFIG[verbose] = "--enable-verbose,--disable-verbose"
+PACKAGECONFIG[zlib] = "--with-zlib=${STAGING_LIBDIR}/../,--without-zlib,zlib"
+
+EXTRA_OECONF = " \
+    --disable-libcurl-option \
+    --disable-ntlm-wb \
+    --enable-crypto-auth \
+    --with-ca-bundle=${sysconfdir}/ssl/certs/ca-certificates.crt \
+    --without-libpsl \
+    --enable-debug \
+    --enable-optimize \
+    --disable-curldebug \
+"
+
+do_install:append:class-target() {
+	# cleanup buildpaths from curl-config
+	sed -i \
+	    -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+	    -e 's,--with-libtool-sysroot=${STAGING_DIR_TARGET},,g' \
+	    -e 's|${DEBUG_PREFIX_MAP}||g' \
+	    -e 's|${@" ".join(d.getVar("DEBUG_PREFIX_MAP").split())}||g' \
+	    ${D}${bindir}/curl-config
+}
+
+PACKAGES =+ "lib${BPN}"
+
+FILES:lib${BPN} = "${libdir}/lib*.so.*"
+RRECOMMENDS:lib${BPN} += "ca-certificates"
+
+FILES:${PN} += "${datadir}/zsh"
+
+inherit multilib_script
+MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/curl-config"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/diffoscope/diffoscope_181.bb b/poky/meta/recipes-support/diffoscope/diffoscope_181.bb
deleted file mode 100644
index 8b2f3cc..0000000
--- a/poky/meta/recipes-support/diffoscope/diffoscope_181.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "in-depth comparison of files, archives, and directories"
-DESCRIPTION = "Tries to get to the bottom of what makes files or directories \
-different. It will recursively unpack archives of many kinds and transform \
-various binary formats into more human-readable form to compare them. \
-It can compare two tarballs, ISO images, or PDF just as easily."
-HOMEPAGE = "https://diffoscope.org/"
-BUGTRACKER = "https://salsa.debian.org/reproducible-builds/diffoscope/-/issues"
-LICENSE = "GPL-3.0+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-PYPI_PACKAGE = "diffoscope"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "a295024acf713c58693c152f9a43fae268c08078f60ba502a7947b7840ece5d7"
-
-RDEPENDS:${PN} += "binutils vim squashfs-tools python3-libarchive-c python3-magic python3-rpm"
-
-# Dependencies don't build for musl
-COMPATIBLE_HOST:libc-musl = 'null'
-
-do_install:append:class-native() {
-	create_wrapper ${D}${bindir}/diffoscope \
-		MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc \
-		RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
-		LD_LIBRARY_PATH=${STAGING_LIBDIR_NATIVE} \
-		RPM_ETCCONFIGDIR=${STAGING_DIR_NATIVE}
-}
-
-BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-support/diffoscope/diffoscope_188.bb b/poky/meta/recipes-support/diffoscope/diffoscope_188.bb
new file mode 100644
index 0000000..d4fd112
--- /dev/null
+++ b/poky/meta/recipes-support/diffoscope/diffoscope_188.bb
@@ -0,0 +1,30 @@
+SUMMARY = "in-depth comparison of files, archives, and directories"
+DESCRIPTION = "Tries to get to the bottom of what makes files or directories \
+different. It will recursively unpack archives of many kinds and transform \
+various binary formats into more human-readable form to compare them. \
+It can compare two tarballs, ISO images, or PDF just as easily."
+HOMEPAGE = "https://diffoscope.org/"
+BUGTRACKER = "https://salsa.debian.org/reproducible-builds/diffoscope/-/issues"
+LICENSE = "GPL-3.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+PYPI_PACKAGE = "diffoscope"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "cdbc401c78d59779ad8ebbb8e2008166f912e77c7ed3be8dc788d36948712ff5"
+
+RDEPENDS:${PN} += "binutils vim squashfs-tools python3-libarchive-c python3-magic python3-rpm"
+
+# Dependencies don't build for musl
+COMPATIBLE_HOST:libc-musl = 'null'
+
+do_install:append:class-native() {
+	create_wrapper ${D}${bindir}/diffoscope \
+		MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc \
+		RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
+		LD_LIBRARY_PATH=${STAGING_LIBDIR_NATIVE} \
+		RPM_ETCCONFIGDIR=${STAGING_DIR_NATIVE}
+}
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-support/fribidi/fribidi_1.0.10.bb b/poky/meta/recipes-support/fribidi/fribidi_1.0.10.bb
deleted file mode 100644
index b2ef773..0000000
--- a/poky/meta/recipes-support/fribidi/fribidi_1.0.10.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Free Implementation of the Unicode Bidirectional Algorithm"
-DESCRIPTION = "It provides utility functions to aid in the development \
-of interactive editors and widgets that implement BiDi functionality. \
-The BiDi algorithm is a prerequisite for supporting right-to-left scripts such \
-as Hebrew, Arabic, Syriac, and Thaana. "
-SECTION = "libs"
-HOMEPAGE = "http://fribidi.org/"
-BUGTRACKER = "https://github.com/fribidi/fribidi/issues"
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
-
-SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.xz \
-           "
-SRC_URI[md5sum] = "97c87da9930e8e70fbfc8e2bcd031554"
-SRC_URI[sha256sum] = "7f1c687c7831499bcacae5e8675945a39bacbad16ecaa945e9454a32df653c01"
-
-UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
-
-inherit meson lib_package pkgconfig
-
-CVE_PRODUCT = "gnu_fribidi fribidi"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/fribidi/fribidi_1.0.11.bb b/poky/meta/recipes-support/fribidi/fribidi_1.0.11.bb
new file mode 100644
index 0000000..7e4f294
--- /dev/null
+++ b/poky/meta/recipes-support/fribidi/fribidi_1.0.11.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Free Implementation of the Unicode Bidirectional Algorithm"
+DESCRIPTION = "It provides utility functions to aid in the development \
+of interactive editors and widgets that implement BiDi functionality. \
+The BiDi algorithm is a prerequisite for supporting right-to-left scripts such \
+as Hebrew, Arabic, Syriac, and Thaana. "
+SECTION = "libs"
+HOMEPAGE = "http://fribidi.org/"
+BUGTRACKER = "https://github.com/fribidi/fribidi/issues"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.xz \
+           "
+SRC_URI[sha256sum] = "30f93e9c63ee627d1a2cedcf59ac34d45bf30240982f99e44c6e015466b4e73d"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+
+inherit meson lib_package pkgconfig
+
+CVE_PRODUCT = "gnu_fribidi fribidi"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch b/poky/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch
index ecd6263..b58fbfe 100644
--- a/poky/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch
+++ b/poky/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch
@@ -1,4 +1,4 @@
-From 52ba9d34cd9317145ee8a93afd5d73dd0cbf3182 Mon Sep 17 00:00:00 2001
+From bdde1faa774753e29d582d79186e08a38597de9e Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Mon, 22 Jan 2018 18:00:21 +0200
 Subject: [PATCH] configure.ac: use a custom value for the location of
@@ -14,10 +14,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/configure.ac b/configure.ac
-index 7a2d410..14a7203 100644
+index 5cdd316..e5f2d6a 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1841,7 +1841,7 @@ AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf",
+@@ -1962,7 +1962,7 @@ AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf",
  
  AC_DEFINE_UNQUOTED(GPGTAR_NAME, "gpgtar", [The name of the gpgtar tool])
  
diff --git a/poky/meta/recipes-support/gnupg/gnupg/relocate.patch b/poky/meta/recipes-support/gnupg/gnupg/relocate.patch
index 9b0f0a8..53679bf 100644
--- a/poky/meta/recipes-support/gnupg/gnupg/relocate.patch
+++ b/poky/meta/recipes-support/gnupg/gnupg/relocate.patch
@@ -1,4 +1,4 @@
-From d6992692d1c36983b709fe1ff049cc91ef2c408a Mon Sep 17 00:00:00 2001
+From 766d37fe9acd9fdaaff9c094635e06b50c5902d7 Mon Sep 17 00:00:00 2001
 From: Ross Burton <ross.burton@intel.com>
 Date: Wed, 19 Sep 2018 14:44:40 +0100
 Subject: [PATCH] Allow the environment to override where gnupg looks for its
@@ -7,83 +7,78 @@
 Upstream-Status: Inappropriate [OE-specific]
 Signed-off-by: Ross Burton <ross.burton@intel.com>
 
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
 ---
- common/homedir.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
+ common/homedir.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
 
 diff --git a/common/homedir.c b/common/homedir.c
-index 85e09c4..e1410e2 100644
+index 455c188..55049db 100644
 --- a/common/homedir.c
 +++ b/common/homedir.c
-@@ -788,7 +788,7 @@ gnupg_socketdir (void)
+@@ -1155,7 +1155,7 @@ gnupg_socketdir (void)
    if (!name)
      {
        unsigned int dummy;
 -      name = _gnupg_socketdir_internal (0, &dummy);
 +      name = getenv("GNUPG_SOCKETDIR") ?: _gnupg_socketdir_internal (0, &dummy);
+       gpgrt_annotate_leaked_object (name);
      }
  
-   return name;
-@@ -814,7 +814,7 @@ gnupg_sysconfdir (void)
-     }
-   return name;
- #else /*!HAVE_W32_SYSTEM*/
--  return GNUPG_SYSCONFDIR;
-+  return getenv("GNUPG_SYSCONFDIR") ?: GNUPG_SYSCONFDIR;
- #endif /*!HAVE_W32_SYSTEM*/
- }
- 
-@@ -843,7 +843,7 @@ gnupg_bindir (void)
+@@ -1187,7 +1187,7 @@ gnupg_sysconfdir (void)
+   if (dir)
+     return dir;
    else
-     return rdir;
- #else /*!HAVE_W32_SYSTEM*/
--  return GNUPG_BINDIR;
-+  return getenv("GNUPG_BINDIR") ?: GNUPG_BINDIR;
+-    return GNUPG_SYSCONFDIR;
++    return getenv("GNUPG_SYSCONFDIR") ?: GNUPG_SYSCONFDIR;
  #endif /*!HAVE_W32_SYSTEM*/
  }
  
-@@ -856,7 +856,7 @@ gnupg_libexecdir (void)
- #ifdef HAVE_W32_SYSTEM
-   return gnupg_bindir ();
- #else /*!HAVE_W32_SYSTEM*/
--  return GNUPG_LIBEXECDIR;
-+  return getenv("GNUPG_LIBEXECDIR") ?: GNUPG_LIBEXECDIR;
- #endif /*!HAVE_W32_SYSTEM*/
- }
- 
-@@ -870,7 +870,7 @@ gnupg_libdir (void)
-     name = xstrconcat (w32_rootdir (), DIRSEP_S "lib" DIRSEP_S "gnupg", NULL);
-   return name;
- #else /*!HAVE_W32_SYSTEM*/
--  return GNUPG_LIBDIR;
-+  return getenv("GNUPG_LIBDIR") ?: GNUPG_LIBDIR;
- #endif /*!HAVE_W32_SYSTEM*/
- }
- 
-@@ -884,7 +884,7 @@ gnupg_datadir (void)
-     name = xstrconcat (w32_rootdir (), DIRSEP_S "share" DIRSEP_S "gnupg", NULL);
-   return name;
- #else /*!HAVE_W32_SYSTEM*/
--  return GNUPG_DATADIR;
-+  return getenv("GNUPG_DATADIR") ?: GNUPG_DATADIR;
- #endif /*!HAVE_W32_SYSTEM*/
- }
- 
-@@ -900,7 +900,7 @@ gnupg_localedir (void)
-                        NULL);
-   return name;
- #else /*!HAVE_W32_SYSTEM*/
--  return LOCALEDIR;
-+  return getenv("LOCALEDIR") ?: LOCALEDIR;
- #endif /*!HAVE_W32_SYSTEM*/
- }
- 
-@@ -971,7 +971,7 @@ gnupg_cachedir (void)
+@@ -1223,7 +1223,7 @@ gnupg_bindir (void)
+       return name;
      }
-   return dir;
- #else /*!HAVE_W32_SYSTEM*/
--  return GNUPG_LOCALSTATEDIR "/cache/" PACKAGE_NAME;
-+  return getenv("GNUPG_LOCALSTATEDIR") ?: GNUPG_LOCALSTATEDIR "/cache/" PACKAGE_NAME;
+   else
+-    return GNUPG_BINDIR;
++    return getenv("GNUPG_BINDIR") ?: GNUPG_BINDIR;
  #endif /*!HAVE_W32_SYSTEM*/
  }
  
+@@ -1250,7 +1250,7 @@ gnupg_libexecdir (void)
+       return name;
+     }
+   else
+-    return GNUPG_LIBEXECDIR;
++    return getenv("GNUPG_LIBEXECDIR") ?: GNUPG_LIBEXECDIR;
+ #endif /*!HAVE_W32_SYSTEM*/
+ }
+ 
+@@ -1280,7 +1280,7 @@ gnupg_libdir (void)
+       return name;
+     }
+   else
+-    return GNUPG_LIBDIR;
++    return getenv("GNUPG_LIBDIR") ?: GNUPG_LIBDIR;
+ #endif /*!HAVE_W32_SYSTEM*/
+ }
+ 
+@@ -1311,7 +1311,7 @@ gnupg_datadir (void)
+       return name;
+     }
+   else
+-    return GNUPG_DATADIR;
++    return getenv("GNUPG_DATADIR") ?: GNUPG_DATADIR;
+ #endif /*!HAVE_W32_SYSTEM*/
+ }
+ 
+@@ -1343,7 +1343,7 @@ gnupg_localedir (void)
+       return name;
+     }
+   else
+-    return LOCALEDIR;
++    return getenv("LOCALEDIR") ?: LOCALEDIR;
+ #endif /*!HAVE_W32_SYSTEM*/
+ }
+ 
+-- 
+2.20.1
+
diff --git a/poky/meta/recipes-support/gnupg/gnupg_2.3.1.bb b/poky/meta/recipes-support/gnupg/gnupg_2.3.1.bb
deleted file mode 100644
index 411ea95..0000000
--- a/poky/meta/recipes-support/gnupg/gnupg_2.3.1.bb
+++ /dev/null
@@ -1,85 +0,0 @@
-SUMMARY = "GNU Privacy Guard - encryption and signing tools (2.x)"
-DESCRIPTION = "A complete and free implementation of the OpenPGP standard \
-as defined by RFC4880 (also known as PGP). GnuPG allows you to encrypt \
-and sign your data and communications; it features a versatile key \
-management system, along with access modules for all kinds of public \
-key directories."
-HOMEPAGE = "http://www.gnupg.org/"
-LICENSE = "GPLv3 & LGPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=189af8afca6d6075ba6c9e0aa8077626 \
-                    file://COPYING.LGPL3;md5=a2b6bf2cb38ee52619e60f30a1fc7257"
-
-DEPENDS = "npth libassuan libksba zlib bzip2 readline libgcrypt"
-
-inherit autotools gettext texinfo pkgconfig
-
-UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
-SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
-           file://0002-use-pkgconfig-instead-of-npth-config.patch \
-           file://0003-dirmngr-uses-libgpg-error.patch \
-           file://0004-autogen.sh-fix-find-version-for-beta-checking.patch \
-           file://0001-Woverride-init-is-not-needed-with-gcc-9.patch \
-           "
-SRC_URI:append:class-native = " file://0001-configure.ac-use-a-custom-value-for-the-location-of-.patch \
-                                file://relocate.patch"
-SRC_URI:append:class-nativesdk = " file://relocate.patch"
-
-SRC_URI[sha256sum] = "c498db346a9b9a4b399e514c8f56dfc0a888ce8f327f10376ff984452cd154ec"
-
-EXTRA_OECONF = "--disable-ldap \
-		--disable-ccid-driver \
-		--with-zlib=${STAGING_LIBDIR}/.. \
-		--with-bzip2=${STAGING_LIBDIR}/.. \
-		--with-readline=${STAGING_LIBDIR}/.. \
-		--with-mailprog=${sbindir}/sendmail \
-		--enable-gpg-is-gpg2 \
-               "
-
-# A minimal package containing just enough to run gpg+gpgagent (E.g. use gpgme in opkg)
-PACKAGES =+ "${PN}-gpg"
-FILES:${PN}-gpg = " \
-	${bindir}/gpg \
-	${bindir}/gpg2 \
-	${bindir}/gpg-agent \
-"
-
-# Normal package (gnupg) should depend on minimal package (gnupg-gpg)
-# to ensure all tools are included. This is done only in non-native
-# builds. Native builds don't have sub-packages, so appending RDEPENDS
-# in this case breaks recipe parsing.
-RDEPENDS:${PN} += "${@ "" if ("native" in d.getVar("PN")) else (d.getVar("PN") + "-gpg")}"
-
-RRECOMMENDS:${PN} = "pinentry"
-
-do_configure:prepend () {
-	# Else these could be used in prefernce to those in aclocal-copy
-	rm -f ${S}/m4/gpg-error.m4
-	rm -f ${S}/m4/libassuan.m4
-	rm -f ${S}/m4/ksba.m4
-	rm -f ${S}/m4/libgcrypt.m4
-}
-
-do_install:append() {
-	ln -sf gpg2 ${D}${bindir}/gpg
-	ln -sf gpgv2 ${D}${bindir}/gpgv
-}
-
-do_install:append:class-native() {
-	create_wrappers ${STAGING_BINDIR_NATIVE}
-}
-
-do_install:append:class-nativesdk() {
-	create_wrappers ${SDKPATHNATIVE}${bindir_nativesdk}
-}
-
-create_wrappers() {
-	for i in gpg2 gpgconf gpg-agent gpg-connect-agent; do
-		create_wrapper ${D}${bindir}/$i GNUPG_BINDIR=$1
-	done
-}
-
-PACKAGECONFIG ??= "gnutls"
-PACKAGECONFIG[gnutls] = "--enable-gnutls, --disable-gnutls, gnutls"
-PACKAGECONFIG[sqlite3] = "--enable-sqlite, --disable-sqlite, sqlite3"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/gnupg/gnupg_2.3.3.bb b/poky/meta/recipes-support/gnupg/gnupg_2.3.3.bb
new file mode 100644
index 0000000..5614ac6
--- /dev/null
+++ b/poky/meta/recipes-support/gnupg/gnupg_2.3.3.bb
@@ -0,0 +1,85 @@
+SUMMARY = "GNU Privacy Guard - encryption and signing tools (2.x)"
+DESCRIPTION = "A complete and free implementation of the OpenPGP standard \
+as defined by RFC4880 (also known as PGP). GnuPG allows you to encrypt \
+and sign your data and communications; it features a versatile key \
+management system, along with access modules for all kinds of public \
+key directories."
+HOMEPAGE = "http://www.gnupg.org/"
+LICENSE = "GPLv3 & LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=189af8afca6d6075ba6c9e0aa8077626 \
+                    file://COPYING.LGPL3;md5=a2b6bf2cb38ee52619e60f30a1fc7257"
+
+DEPENDS = "npth libassuan libksba zlib bzip2 readline libgcrypt"
+
+inherit autotools gettext texinfo pkgconfig
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
+           file://0002-use-pkgconfig-instead-of-npth-config.patch \
+           file://0003-dirmngr-uses-libgpg-error.patch \
+           file://0004-autogen.sh-fix-find-version-for-beta-checking.patch \
+           file://0001-Woverride-init-is-not-needed-with-gcc-9.patch \
+           "
+SRC_URI:append:class-native = " file://0001-configure.ac-use-a-custom-value-for-the-location-of-.patch \
+                                file://relocate.patch"
+SRC_URI:append:class-nativesdk = " file://relocate.patch"
+
+SRC_URI[sha256sum] = "5789b86da6a1a6752efb38598f16a77af51170a8494039c3842b085032e8e937"
+
+EXTRA_OECONF = "--disable-ldap \
+		--disable-ccid-driver \
+		--with-zlib=${STAGING_LIBDIR}/.. \
+		--with-bzip2=${STAGING_LIBDIR}/.. \
+		--with-readline=${STAGING_LIBDIR}/.. \
+		--with-mailprog=${sbindir}/sendmail \
+		--enable-gpg-is-gpg2 \
+               "
+
+# A minimal package containing just enough to run gpg+gpgagent (E.g. use gpgme in opkg)
+PACKAGES =+ "${PN}-gpg"
+FILES:${PN}-gpg = " \
+	${bindir}/gpg \
+	${bindir}/gpg2 \
+	${bindir}/gpg-agent \
+"
+
+# Normal package (gnupg) should depend on minimal package (gnupg-gpg)
+# to ensure all tools are included. This is done only in non-native
+# builds. Native builds don't have sub-packages, so appending RDEPENDS
+# in this case breaks recipe parsing.
+RDEPENDS:${PN} += "${@ "" if ("native" in d.getVar("PN")) else (d.getVar("PN") + "-gpg")}"
+
+RRECOMMENDS:${PN} = "pinentry"
+
+do_configure:prepend () {
+	# Else these could be used in prefernce to those in aclocal-copy
+	rm -f ${S}/m4/gpg-error.m4
+	rm -f ${S}/m4/libassuan.m4
+	rm -f ${S}/m4/ksba.m4
+	rm -f ${S}/m4/libgcrypt.m4
+}
+
+do_install:append() {
+	ln -sf gpg2 ${D}${bindir}/gpg
+	ln -sf gpgv2 ${D}${bindir}/gpgv
+}
+
+do_install:append:class-native() {
+	create_wrappers ${STAGING_BINDIR_NATIVE}
+}
+
+do_install:append:class-nativesdk() {
+	create_wrappers ${SDKPATHNATIVE}${bindir_nativesdk}
+}
+
+create_wrappers() {
+	for i in gpg2 gpgconf gpg-agent gpg-connect-agent; do
+		create_wrapper ${D}${bindir}/$i GNUPG_BINDIR=$1
+	done
+}
+
+PACKAGECONFIG ??= "gnutls"
+PACKAGECONFIG[gnutls] = "--enable-gnutls, --disable-gnutls, gnutls"
+PACKAGECONFIG[sqlite3] = "--enable-sqlite, --disable-sqlite, sqlite3"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/iso-codes/iso-codes_4.6.0.bb b/poky/meta/recipes-support/iso-codes/iso-codes_4.6.0.bb
deleted file mode 100644
index 6dd9bfa..0000000
--- a/poky/meta/recipes-support/iso-codes/iso-codes_4.6.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "ISO language, territory, currency, script codes and their translations"
-DESCRIPTION = "Provides lists of various ISO standards (e.g. country, \
-language, language scripts, and currency names) in one place, rather \
-than repeated in many programs throughout the system."
-HOMEPAGE = "https://salsa.debian.org/iso-codes-team/iso-codes"
-BUGTRACKER = "https://salsa.debian.org/iso-codes-team/iso-codes/issues"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "git://salsa.debian.org/iso-codes-team/iso-codes.git;protocol=https;branch=main;"
-SRCREV = "3c012d266acaeda93d3e61ec11b8c18c1964fce1" 
-
-# inherit gettext cannot be used, because it adds gettext-native to BASEDEPENDS which
-# are inhibited by allarch
-DEPENDS = "gettext-native"
-
-S = "${WORKDIR}/git"
-
-inherit allarch autotools
-
-FILES:${PN} += "${datadir}/xml/"
diff --git a/poky/meta/recipes-support/iso-codes/iso-codes_4.7.0.bb b/poky/meta/recipes-support/iso-codes/iso-codes_4.7.0.bb
new file mode 100644
index 0000000..46988a7
--- /dev/null
+++ b/poky/meta/recipes-support/iso-codes/iso-codes_4.7.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "ISO language, territory, currency, script codes and their translations"
+DESCRIPTION = "Provides lists of various ISO standards (e.g. country, \
+language, language scripts, and currency names) in one place, rather \
+than repeated in many programs throughout the system."
+HOMEPAGE = "https://salsa.debian.org/iso-codes-team/iso-codes"
+BUGTRACKER = "https://salsa.debian.org/iso-codes-team/iso-codes/issues"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://salsa.debian.org/iso-codes-team/iso-codes.git;protocol=https;branch=main;"
+SRCREV = "59767ed869f3952575f7d0f639a290a4c4b315e5"
+
+# inherit gettext cannot be used, because it adds gettext-native to BASEDEPENDS which
+# are inhibited by allarch
+DEPENDS = "gettext-native"
+
+S = "${WORKDIR}/git"
+
+inherit allarch autotools
+
+FILES:${PN} += "${datadir}/xml/"
diff --git a/poky/meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch b/poky/meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch
index 19a858b..fdcbe46 100644
--- a/poky/meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch
+++ b/poky/meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch
@@ -1,4 +1,4 @@
-From 335ef14fc801c9dfbe7e5692dc71cfbe72049d2b Mon Sep 17 00:00:00 2001
+From c47820450ce7f55d22c672cf94d20a5f9fd208bf Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Sun, 27 Oct 2019 16:38:52 +0100
 Subject: [PATCH] Native: Don't use build time hardcoded python binary path.
@@ -16,12 +16,13 @@
 Upstream-Status: Inappropriate [OE specific]
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+
 ---
  itstool.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/itstool.in b/itstool.in
-index e64cd34..05d264f 100755
+index c21ad4b..daea177 100755
 --- a/itstool.in
 +++ b/itstool.in
 @@ -1,4 +1,4 @@
@@ -30,6 +31,3 @@
  #
  # Copyright (c) 2010-2018 Shaun McCance <shaunm@gnome.org>
  #
--- 
-2.21.0
-
diff --git a/poky/meta/recipes-support/itstool/itstool_2.0.6.bb b/poky/meta/recipes-support/itstool/itstool_2.0.6.bb
deleted file mode 100644
index eba53e7..0000000
--- a/poky/meta/recipes-support/itstool/itstool_2.0.6.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "ITS Tool allows you to translate your XML documents with PO files"
-DESCRIPTION = "It extracts messages from XML files and outputs PO template \
-files, then merges translations from MO files to create translated \
-XML files. It determines what to translate and how to chunk it into \
-messages using the W3C Internationalization Tag Set (ITS). "
-HOMEPAGE = "http://itstool.org/"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59c57b95fd7d0e9e238ebbc7ad47c5a5"
-
-inherit autotools python3native
-
-DEPENDS = "libxml2-native"
-
-SRC_URI = "http://files.itstool.org/${BPN}/${BPN}-${PV}.tar.bz2"
-SRC_URI:append:class-native = " file://0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch"
-SRC_URI:append:class-nativesdk = " file://0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch"
-SRC_URI:append:class-target = " file://0002-Don-t-use-build-time-hardcoded-python-binary-path.patch"
-
-SRC_URI[md5sum] = "4306eeba4f4aee6b393d14f9c3c57ca1"
-SRC_URI[sha256sum] = "6233cc22726a9a5a83664bf67d1af79549a298c23185d926c3677afa917b92a9"
-
-BBCLASSEXTEND = "native nativesdk"
-
-RDEPENDS:${PN} += "libxml2-python"
diff --git a/poky/meta/recipes-support/itstool/itstool_2.0.7.bb b/poky/meta/recipes-support/itstool/itstool_2.0.7.bb
new file mode 100644
index 0000000..2416835
--- /dev/null
+++ b/poky/meta/recipes-support/itstool/itstool_2.0.7.bb
@@ -0,0 +1,24 @@
+SUMMARY = "ITS Tool allows you to translate your XML documents with PO files"
+DESCRIPTION = "It extracts messages from XML files and outputs PO template \
+files, then merges translations from MO files to create translated \
+XML files. It determines what to translate and how to chunk it into \
+messages using the W3C Internationalization Tag Set (ITS). "
+HOMEPAGE = "http://itstool.org/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59c57b95fd7d0e9e238ebbc7ad47c5a5"
+
+inherit autotools python3native
+
+DEPENDS = "libxml2-native"
+
+SRC_URI = "http://files.itstool.org/${BPN}/${BPN}-${PV}.tar.bz2 \
+           "
+SRC_URI:append:class-native = " file://0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch"
+SRC_URI:append:class-nativesdk = " file://0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch"
+SRC_URI:append:class-target = " file://0002-Don-t-use-build-time-hardcoded-python-binary-path.patch"
+
+SRC_URI[sha256sum] = "6b9a7cd29a12bb95598f5750e8763cee78836a1a207f85b74d8b3275b27e87ca"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN} += "libxml2-python"
diff --git a/poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.10.bb b/poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.10.bb
deleted file mode 100644
index 74afe9c..0000000
--- a/poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.10.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "A library for atomic integer operations"
-DESCRIPTION = "Package provides semi-portable access to hardware-provided atomic memory update operations on a number of architectures."
-HOMEPAGE = "https://github.com/ivmai/libatomic_ops/"
-SECTION = "optional"
-PROVIDES += "libatomics-ops"
-LICENSE = "GPLv2 & MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://doc/LICENSING.txt;md5=e00dd5c8ac03a14c5ae5225a4525fa2d \
-                    "
-
-SRC_URI = "https://github.com/ivmai/libatomic_ops/releases/download/v${PV}/libatomic_ops-${PV}.tar.gz"
-UPSTREAM_CHECK_URI = "https://github.com/ivmai/libatomic_ops/releases"
-
-SRC_URI[md5sum] = "90a78a84d9c28ce11f331c25289bfbd0"
-SRC_URI[sha256sum] = "587edf60817f56daf1e1ab38a4b3c729b8e846ff67b4f62a6157183708f099af"
-
-S = "${WORKDIR}/libatomic_ops-${PV}"
-
-ALLOW_EMPTY:${PN} = "1"
-
-inherit autotools pkgconfig
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.12.bb b/poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.12.bb
new file mode 100644
index 0000000..d7aecc7
--- /dev/null
+++ b/poky/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.12.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A library for atomic integer operations"
+DESCRIPTION = "Package provides semi-portable access to hardware-provided atomic memory update operations on a number of architectures."
+HOMEPAGE = "https://github.com/ivmai/libatomic_ops/"
+SECTION = "optional"
+PROVIDES += "libatomics-ops"
+LICENSE = "GPLv2 & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://doc/LICENSING.txt;md5=e00dd5c8ac03a14c5ae5225a4525fa2d \
+                    "
+
+SRC_URI = "https://github.com/ivmai/libatomic_ops/releases/download/v${PV}/libatomic_ops-${PV}.tar.gz"
+UPSTREAM_CHECK_URI = "https://github.com/ivmai/libatomic_ops/releases"
+
+SRC_URI[sha256sum] = "f0ab566e25fce08b560e1feab6a3db01db4a38e5bc687804334ef3920c549f3e"
+
+S = "${WORKDIR}/libatomic_ops-${PV}"
+
+ALLOW_EMPTY:${PN} = "1"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libcap/files/0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch b/poky/meta/recipes-support/libcap/files/0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch
new file mode 100644
index 0000000..89f6bcd
--- /dev/null
+++ b/poky/meta/recipes-support/libcap/files/0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch
@@ -0,0 +1,34 @@
+From 42b3e19d4e584fb9b47fb471e02bb25de90ac641 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 14 Oct 2021 15:57:36 +0800
+Subject: [PATCH] nativesdk-libcap: Raise the size of arrays containing dl
+ paths
+
+This patch puts the dynamic loader path in the binaries, SYSTEM_DIRS strings
+and lengths as well as ld.so.cache path in the dynamic loader to specific
+sections in memory. The sections that contain paths have been allocated a 4096
+byte section, which is the maximum path length in linux. This will allow the
+relocating script to parse the ELF binary, detect the section and easily replace
+the strings in a certain path.
+
+Upstream-Status: Inappropriate [SDK specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+---
+ libcap/execable.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libcap/execable.h b/libcap/execable.h
+index 0bcc5d4..6e2a080 100644
+--- a/libcap/execable.h
++++ b/libcap/execable.h
+@@ -23,7 +23,7 @@
+ #endif
+ #define __EXECABLE_H
+ 
+-const char __execable_dl_loader[] __attribute((section(".interp"))) =
++const char __execable_dl_loader[4096] __attribute((section(".interp"))) =
+     SHARED_LOADER ;
+ 
+ static void __execable_parse_args(int *argc_p, char ***argv_p)
diff --git a/poky/meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch b/poky/meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch
deleted file mode 100644
index 55872aa..0000000
--- a/poky/meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 897900f3f9084c5542097851323bba3f2691df20 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 15 Jan 2020 17:16:28 +0100
-Subject: [PATCH] tests: do not statically link a test
-
-This fails on e.g. centos 7
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- progs/Makefile | 2 +-
- tests/Makefile | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/progs/Makefile b/progs/Makefile
-index 3e82862..48533f3 100644
---- a/progs/Makefile
-+++ b/progs/Makefile
-@@ -49,7 +49,7 @@ capsh: capsh.c capshdoc.h.cf $(DEPS)
- 	$(CC) $(IPATH) $(CAPSH_SHELL) $(CFLAGS) -o $@ $< $(LIBCAPLIB) $(LDFLAGS)
- 
- tcapsh-static: capsh.c capshdoc.h.cf $(DEPS)
--	$(CC) $(IPATH) $(CAPSH_SHELL) $(CFLAGS) -o $@ $< $(LIBCAPLIB) $(LDFLAGS) --static
-+	$(CC) $(IPATH) $(CAPSH_SHELL) $(CFLAGS) -o $@ $< $(LIBCAPLIB) $(LDFLAGS)
- 
- uns_test: ../tests/uns_test.c
- 	$(MAKE) -C ../tests uns_test
-diff --git a/tests/Makefile b/tests/Makefile
-index 4a5f2f9..4266d86 100644
---- a/tests/Makefile
-+++ b/tests/Makefile
-@@ -22,7 +22,7 @@ ifeq ($(PTHREADS),yes)
- DEPS += ../libcap/libpsx.so
- endif
- else
--LDFLAGS += --static
-+LDFLAGS +=
- DEPS=../libcap/libcap.a
- ifeq ($(PTHREADS),yes)
- DEPS +=  ../libcap/libpsx.a
-@@ -113,7 +113,7 @@ noexploit: exploit.o $(DEPS)
- 
- # This one runs in a chroot with no shared library files.
- noop: noop.c
--	$(CC) $(CFLAGS) $< -o $@ --static
-+	$(CC) $(CFLAGS) $< -o $@
- 
- clean:
- 	rm -f psx_test libcap_psx_test libcap_launch_test uns_test *~
--- 
-2.25.1
-
diff --git a/poky/meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch b/poky/meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch
index 6928715..20346cf 100644
--- a/poky/meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch
+++ b/poky/meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch
@@ -1,4 +1,4 @@
-From 652071e430d5eea758965176b7648e79ad404daa Mon Sep 17 00:00:00 2001
+From 10212b6d4e8843feffbeab5336342d97f3a46bb2 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Fri, 20 Dec 2019 16:54:05 +0100
 Subject: [PATCH] tests: do not run target executables
@@ -11,20 +11,20 @@
  1 file changed, 2 deletions(-)
 
 diff --git a/tests/Makefile b/tests/Makefile
-index fc39fee..3431df9 100644
+index ecb7d1b..8950c73 100644
 --- a/tests/Makefile
 +++ b/tests/Makefile
-@@ -59,13 +59,11 @@ endif
+@@ -61,13 +61,11 @@ endif
  
  # unprivileged
  run_psx_test: psx_test
 -	./psx_test
  
  psx_test: psx_test.c $(DEPS)
- 	$(CC) $(CFLAGS) $(IPATH) $< -o $@ $(LINKEXTRA) $(LIBPSXLIB) $(LDFLAGS)
+ 	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $< -o $@ $(LINKEXTRA) $(LIBPSXLIB)
  
  run_libcap_psx_test: libcap_psx_test
 -	./libcap_psx_test
  
  libcap_psx_test: libcap_psx_test.c $(DEPS)
- 	$(CC) $(CFLAGS) $(IPATH) $< -o $@ $(LINKEXTRA) $(LIBCAPLIB) $(LIBPSXLIB) $(LDFLAGS)
+ 	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $< -o $@ $(LINKEXTRA) $(LIBCAPLIB) $(LIBPSXLIB)
diff --git a/poky/meta/recipes-support/libcap/libcap_2.51.bb b/poky/meta/recipes-support/libcap/libcap_2.51.bb
deleted file mode 100644
index c9c30fb..0000000
--- a/poky/meta/recipes-support/libcap/libcap_2.51.bb
+++ /dev/null
@@ -1,73 +0,0 @@
-SUMMARY = "Library for getting/setting POSIX.1e capabilities"
-DESCRIPTION = "A library providing the API to access POSIX capabilities. \
-These allow giving various kinds of specific privileges to individual \
-users, without giving them full root permissions."
-HOMEPAGE = "http://sites.google.com/site/fullycapable/"
-# no specific GPL version required
-LICENSE = "BSD-3-Clause | GPLv2"
-LIC_FILES_CHKSUM = "file://License;md5=e2370ba375efe9e1a095c26d37e483b8"
-
-DEPENDS = "hostperl-runtime-native gperf-native"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/libs/security/linux-privs/${BPN}2/${BPN}-${PV}.tar.xz \
-           file://0001-ensure-the-XATTR_NAME_CAPS-is-defined-when-it-is-use.patch \
-           file://0002-tests-do-not-run-target-executables.patch \
-           file://0001-tests-do-not-statically-link-a-test.patch \
-           "
-SRC_URI[sha256sum] = "6609f3ab7aebcc8f9277f53a577c657d9f3056d1352ea623da7fd7c0f00890f9"
-
-UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/linux/libs/security/linux-privs/${BPN}2/"
-
-inherit lib_package
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
-PACKAGECONFIG:class-native ??= ""
-
-PACKAGECONFIG[pam] = "PAM_CAP=yes,PAM_CAP=no,libpam"
-
-EXTRA_OEMAKE = " \
-  INDENT=  \
-  lib='${baselib}' \
-  RAISE_SETFCAP=no \
-  DYNAMIC=yes \
-  BUILD_GPERF=yes \
-"
-
-EXTRA_OEMAKE:append:class-target = " SYSTEM_HEADERS=${STAGING_INCDIR}"
-
-do_compile() {
-	unset CFLAGS BUILD_CFLAGS
-	oe_runmake \
-		${PACKAGECONFIG_CONFARGS} \
-		AR="${AR}" \
-		CC="${CC}" \
-		RANLIB="${RANLIB}" \
-		COPTS="${CFLAGS}" \
-		BUILD_COPTS="${BUILD_CFLAGS}"
-}
-
-do_install() {
-	oe_runmake install \
-		${PACKAGECONFIG_CONFARGS} \
-		DESTDIR="${D}" \
-		prefix="${prefix}" \
-		SBINDIR="${sbindir}"
-}
-
-do_install:append() {
-	# Move the library to base_libdir
-	install -d ${D}${base_libdir}
-	if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
-		mv ${D}${libdir}/libcap* ${D}${base_libdir}
-                if [ -d ${D}${libdir}/security ]; then
-			mv ${D}${libdir}/security ${D}${base_libdir}
-		fi
-	fi
-}
-
-FILES:${PN}-dev += "${base_libdir}/*.so"
-
-# pam files
-FILES:${PN} += "${base_libdir}/security/*.so"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libcap/libcap_2.60.bb b/poky/meta/recipes-support/libcap/libcap_2.60.bb
new file mode 100644
index 0000000..030198c
--- /dev/null
+++ b/poky/meta/recipes-support/libcap/libcap_2.60.bb
@@ -0,0 +1,76 @@
+SUMMARY = "Library for getting/setting POSIX.1e capabilities"
+DESCRIPTION = "A library providing the API to access POSIX capabilities. \
+These allow giving various kinds of specific privileges to individual \
+users, without giving them full root permissions."
+HOMEPAGE = "http://sites.google.com/site/fullycapable/"
+# no specific GPL version required
+LICENSE = "BSD-3-Clause | GPLv2"
+LIC_FILES_CHKSUM = "file://License;md5=e2370ba375efe9e1a095c26d37e483b8"
+
+DEPENDS = "hostperl-runtime-native gperf-native"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/libs/security/linux-privs/${BPN}2/${BPN}-${PV}.tar.xz \
+           file://0001-ensure-the-XATTR_NAME_CAPS-is-defined-when-it-is-use.patch \
+           file://0002-tests-do-not-run-target-executables.patch \
+           "
+SRC_URI:append:class-nativesdk = " \
+           file://0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch \
+           "
+SRC_URI[sha256sum] = "06a92076ce39a78bd28089e32085f1bde7f3bfa448fad37d895c2358f760b2eb"
+
+UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/linux/libs/security/linux-privs/${BPN}2/"
+
+inherit lib_package
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
+PACKAGECONFIG:class-native ??= ""
+
+PACKAGECONFIG[pam] = "PAM_CAP=yes,PAM_CAP=no,libpam"
+
+EXTRA_OEMAKE = " \
+  INDENT=  \
+  lib='${baselib}' \
+  RAISE_SETFCAP=no \
+  DYNAMIC=yes \
+  BUILD_GPERF=yes \
+"
+
+EXTRA_OEMAKE:append:class-target = " SYSTEM_HEADERS=${STAGING_INCDIR}"
+
+do_compile() {
+	unset CFLAGS BUILD_CFLAGS
+	oe_runmake \
+		${PACKAGECONFIG_CONFARGS} \
+		AR="${AR}" \
+		CC="${CC}" \
+		RANLIB="${RANLIB}" \
+                OBJCOPY="${OBJCOPY}" \
+		COPTS="${CFLAGS}" \
+		BUILD_COPTS="${BUILD_CFLAGS}"
+}
+
+do_install() {
+	oe_runmake install \
+		${PACKAGECONFIG_CONFARGS} \
+		DESTDIR="${D}" \
+		prefix="${prefix}" \
+		SBINDIR="${sbindir}"
+}
+
+do_install:append() {
+	# Move the library to base_libdir
+	install -d ${D}${base_libdir}
+	if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
+		mv ${D}${libdir}/libcap* ${D}${base_libdir}
+                if [ -d ${D}${libdir}/security ]; then
+			mv ${D}${libdir}/security ${D}${base_libdir}
+		fi
+	fi
+}
+
+FILES:${PN}-dev += "${base_libdir}/*.so"
+
+# pam files
+FILES:${PN} += "${base_libdir}/security/*.so"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libevent/libevent/0003-test-mark-util-monotonic_prc_fallback-as-retriable.patch b/poky/meta/recipes-support/libevent/libevent/0003-test-mark-util-monotonic_prc_fallback-as-retriable.patch
index 8a2c789..ddc19c4 100644
--- a/poky/meta/recipes-support/libevent/libevent/0003-test-mark-util-monotonic_prc_fallback-as-retriable.patch
+++ b/poky/meta/recipes-support/libevent/libevent/0003-test-mark-util-monotonic_prc_fallback-as-retriable.patch
@@ -5,7 +5,7 @@
 
 Refs: #1193
 
-Upstream-status: Backported
+Upstream-Status: Backport
 ---
  test/regress_util.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/poky/meta/recipes-support/libevent/libevent/0004-test-retriable-tests-are-marked-failed-only-when-all-a.patch b/poky/meta/recipes-support/libevent/libevent/0004-test-retriable-tests-are-marked-failed-only-when-all-a.patch
index ae7db0b..ea17e87 100644
--- a/poky/meta/recipes-support/libevent/libevent/0004-test-retriable-tests-are-marked-failed-only-when-all-a.patch
+++ b/poky/meta/recipes-support/libevent/libevent/0004-test-retriable-tests-are-marked-failed-only-when-all-a.patch
@@ -6,7 +6,7 @@
 
 Fixes: #1193
 
-Upstream-status: Pending
+Upstream-Status: Accepted
 
 Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
 ---
diff --git a/poky/meta/recipes-support/libexif/files/CVE-2020-0198.patch b/poky/meta/recipes-support/libexif/files/CVE-2020-0198.patch
deleted file mode 100644
index 2a48844..0000000
--- a/poky/meta/recipes-support/libexif/files/CVE-2020-0198.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From ca71eda33fe8421f98fbe20eb4392473357c1c43 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Wed, 30 Dec 2020 10:22:47 +0800
-Subject: [PATCH] fixed another unsigned integer overflow
-
-first fixed by google in android fork,
-https://android.googlesource.com/platform/external/libexif/+/1e187b62682ffab5003c702657d6d725b4278f16%5E%21/#F0
-
-(use a more generic overflow check method, also check second overflow instance.)
-
-https://security-tracker.debian.org/tracker/CVE-2020-0198
-
-Upstream-Status: Backport[https://github.com/libexif/libexif/commit/ce03ad7ef4e8aeefce79192bf5b6f69fae396f0c]
-CVE: CVE-2020-0198
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- libexif/exif-data.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/libexif/exif-data.c b/libexif/exif-data.c
-index 8b280d3..34d58fc 100644
---- a/libexif/exif-data.c
-+++ b/libexif/exif-data.c
-@@ -47,6 +47,8 @@
- #undef JPEG_MARKER_APP1
- #define JPEG_MARKER_APP1 0xe1
- 
-+#define CHECKOVERFLOW(offset,datasize,structsize) (( offset >= datasize) || (structsize > datasize) || (offset > datasize - structsize ))
-+
- static const unsigned char ExifHeader[] = {0x45, 0x78, 0x69, 0x66, 0x00, 0x00};
- 
- struct _ExifDataPrivate
-@@ -327,7 +329,7 @@ exif_data_load_data_thumbnail (ExifData *data, const unsigned char *d,
- 		exif_log (data->priv->log, EXIF_LOG_CODE_DEBUG, "ExifData", "Bogus thumbnail offset (%u).", o);
- 		return;
- 	}
--	if (s > ds - o) {
-+	if (CHECKOVERFLOW(o,ds,s)) {
- 		exif_log (data->priv->log, EXIF_LOG_CODE_DEBUG, "ExifData", "Bogus thumbnail size (%u), max would be %u.", s, ds-o);
- 		return;
- 	}
-@@ -420,9 +422,9 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
- 	}
- 
- 	/* Read the number of entries */
--	if ((offset + 2 < offset) || (offset + 2 < 2) || (offset + 2 > ds)) {
-+	if (CHECKOVERFLOW(offset, ds, 2)) {
- 		exif_log (data->priv->log, EXIF_LOG_CODE_CORRUPT_DATA, "ExifData",
--			  "Tag data past end of buffer (%u > %u)", offset+2, ds);
-+			  "Tag data past end of buffer (%u+2 > %u)", offset, ds);
- 		return;
- 	}
- 	n = exif_get_short (d + offset, data->priv->order);
-@@ -431,7 +433,7 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
- 	offset += 2;
- 
- 	/* Check if we have enough data. */
--	if (offset + 12 * n > ds) {
-+	if (CHECKOVERFLOW(offset, ds, 12*n)) {
- 		n = (ds - offset) / 12;
- 		exif_log (data->priv->log, EXIF_LOG_CODE_DEBUG, "ExifData",
- 				  "Short data; only loading %hu entries...", n);
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-support/libexif/files/CVE-2020-0452.patch b/poky/meta/recipes-support/libexif/files/CVE-2020-0452.patch
deleted file mode 100644
index a117b8b..0000000
--- a/poky/meta/recipes-support/libexif/files/CVE-2020-0452.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 302acd49eba0a125b0f20692df6abc6f7f7ca53e Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Wed, 30 Dec 2020 10:18:51 +0800
-Subject: [PATCH] fixed a incorrect overflow check that could be optimized
- away.
-
-inspired by:
-https://android.googlesource.com/platform/external/libexif/+/8e7345f3bc0bad06ac369d6cbc1124c8ceaf7d4b
-
-https://source.android.com/security/bulletin/2020-11-01
-
-CVE-2020-0452
-
-Upsteam-Status: Backport[https://github.com/libexif/libexif/commit/9266d14b5ca4e29b970fa03272318e5f99386e06]
-CVE: CVE-2020-0452
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- libexif/exif-entry.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libexif/exif-entry.c b/libexif/exif-entry.c
-index 5de215f..3a6ce84 100644
---- a/libexif/exif-entry.c
-+++ b/libexif/exif-entry.c
-@@ -1371,8 +1371,8 @@ exif_entry_get_value (ExifEntry *e, char *val, unsigned int maxlen)
- 	{
- 		unsigned char *utf16;
- 
--		/* Sanity check the size to prevent overflow */
--		if (e->size+sizeof(uint16_t)+1 < e->size) break;
-+		/* Sanity check the size to prevent overflow. Note EXIF files are 64kb at most. */
-+		if (e->size >= 65536 - sizeof(uint16_t)*2) break;
- 
- 		/* The tag may not be U+0000-terminated , so make a local
- 		   U+0000-terminated copy before converting it */
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-support/libexif/libexif_0.6.22.bb b/poky/meta/recipes-support/libexif/libexif_0.6.22.bb
deleted file mode 100644
index 9ca96d5..0000000
--- a/poky/meta/recipes-support/libexif/libexif_0.6.22.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Library for reading extended image information (EXIF) from JPEG files"
-DESCRIPTION = "libexif is a library for parsing, editing, and saving EXIF data. It is \
-intended to replace lots of redundant implementations in command-line \
-utilities and programs with GUIs."
-HOMEPAGE = "https://libexif.github.io/"
-SECTION = "libs"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
-
-def version_underscore(v):
-    return "_".join(v.split("."))
-
-SRC_URI = "https://github.com/libexif/libexif/releases/download/libexif-${@version_underscore("${PV}")}-release/libexif-${PV}.tar.xz \
-           file://CVE-2020-0198.patch \
-           file://CVE-2020-0452.patch \
-           "
-
-SRC_URI[sha256sum] = "5048f1c8fc509cc636c2f97f4b40c293338b6041a5652082d5ee2cf54b530c56"
-
-UPSTREAM_CHECK_URI = "https://github.com/libexif/libexif/releases/"
-
-inherit autotools gettext
-
-EXTRA_OECONF += "--disable-docs"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libexif/libexif_0.6.23.bb b/poky/meta/recipes-support/libexif/libexif_0.6.23.bb
new file mode 100644
index 0000000..b33522d
--- /dev/null
+++ b/poky/meta/recipes-support/libexif/libexif_0.6.23.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Library for reading extended image information (EXIF) from JPEG files"
+DESCRIPTION = "libexif is a library for parsing, editing, and saving EXIF data. It is \
+intended to replace lots of redundant implementations in command-line \
+utilities and programs with GUIs."
+HOMEPAGE = "https://libexif.github.io/"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
+
+def version_underscore(v):
+    return "_".join(v.split("."))
+
+SRC_URI = "https://github.com/libexif/libexif/releases/download/v${PV}/libexif-${PV}.tar.xz \
+           "
+
+SRC_URI[sha256sum] = "a740a99920eb81ae0aa802bb46e683ce6e0cde061c210f5d5bde5b8572380431"
+
+UPSTREAM_CHECK_URI = "https://github.com/libexif/libexif/releases/"
+
+inherit autotools gettext
+
+EXTRA_OECONF += "--disable-docs"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libgit2/libgit2_1.1.1.bb b/poky/meta/recipes-support/libgit2/libgit2_1.1.1.bb
deleted file mode 100644
index ae30a7a..0000000
--- a/poky/meta/recipes-support/libgit2/libgit2_1.1.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "the Git linkable library"
-HOMEPAGE = "http://libgit2.github.com/"
-LICENSE = "GPL-2.0-with-GCC-exception & MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5b002a195fb7ea2d8d583f07eaff3a8e"
-
-DEPENDS = "curl openssl zlib libssh2 libgcrypt libpcre2"
-
-SRC_URI = "git://github.com/libgit2/libgit2.git;branch=maint/v1.1"
-SRCREV = "8a0dc6783c340e61a44c179c48f832165ad2053c"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-EXTRA_OECMAKE = "\
-    -DBUILD_CLAR=OFF \
-    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-    -DLIB_INSTALL_DIR=${libdir} \
-    -DREGEX_BACKEND='pcre2' \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-support/libgit2/libgit2_1.3.0.bb b/poky/meta/recipes-support/libgit2/libgit2_1.3.0.bb
new file mode 100644
index 0000000..bf625c3
--- /dev/null
+++ b/poky/meta/recipes-support/libgit2/libgit2_1.3.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "the Git linkable library"
+HOMEPAGE = "http://libgit2.github.com/"
+LICENSE = "GPL-2.0-with-GCC-exception & MIT & openssl"
+LIC_FILES_CHKSUM = "file://COPYING;md5=73fa96e40ce64f79bab087c7e1deeacd"
+
+DEPENDS = "curl openssl zlib libssh2 libgcrypt libpcre2"
+
+SRC_URI = "git://github.com/libgit2/libgit2.git;branch=main"
+SRCREV = "b7bad55e4bb0a285b073ba5e02b01d3f522fc95d"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+EXTRA_OECMAKE = "\
+    -DBUILD_CLAR=OFF \
+    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+    -DLIB_INSTALL_DIR=${libdir} \
+    -DREGEX_BACKEND='pcre2' \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-support/libical/libical_3.0.10.bb b/poky/meta/recipes-support/libical/libical_3.0.10.bb
deleted file mode 100644
index aa5f11e..0000000
--- a/poky/meta/recipes-support/libical/libical_3.0.10.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "iCal and scheduling (RFC 2445, 2446, 2447) library"
-DESCRIPTION = "An Open Source implementation of the iCalendar protocols \
-and protocol data units. The iCalendar specification describes how \
-calendar clients can communicate with calendar servers so users can store \
-their calendar data and arrange meetings with other users. "
-HOMEPAGE = "https://github.com/libical/libical"
-BUGTRACKER = "https://github.com/libical/libical/issues"
-LICENSE = "LGPLv2.1 | MPL-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=1910a2a76ddf6a9ba369182494170d87 \
-                    file://LICENSE.LGPL21.txt;md5=933adb561f159e7c3da079536f0ed871 \
-                    file://LICENSE.MPL2.txt;md5=f75d2927d3c1ed2414ef72048f5ad640 \
-                    "
-SECTION = "libs"
-
-SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz \
-"
-SRC_URI[sha256sum] = "f933b3e6cf9d56a35bb5625e8e4a9c3a50239a85aea05ed842932c1a1dc336b4"
-UPSTREAM_CHECK_URI = "https://github.com/libical/libical/releases"
-
-inherit cmake pkgconfig
-
-DEPENDS:append:class-target = "libical-native"
-
-PACKAGECONFIG ??= "icu glib"
-PACKAGECONFIG[bdb] = ",-DCMAKE_DISABLE_FIND_PACKAGE_BDB=True,db"
-PACKAGECONFIG[glib] = "-DICAL_GLIB=True,-DICAL_GLIB=False,glib-2.0-native libxml2-native glib-2.0 libxml2"
-# ICU is used for RSCALE (RFC7529) support
-PACKAGECONFIG[icu] = ",-DCMAKE_DISABLE_FIND_PACKAGE_ICU=True,icu"
-
-# No need to use perl-native, the host perl is sufficient.
-EXTRA_OECMAKE += "-DPERL_EXECUTABLE=${HOSTTOOLS_DIR}/perl"
-# doc build fails with linker error (??) for libical-glib so disable it
-EXTRA_OECMAKE += "-DICAL_BUILD_DOCS=false"
-
-EXTRA_OECMAKE:append:class-target = " -DIMPORT_ICAL_GLIB_SRC_GENERATOR=${STAGING_LIBDIR_NATIVE}/cmake/LibIcal/IcalGlibSrcGenerator.cmake"
-
-do_install:append () {
-    # Remove build host references
-    sed -i \
-       -e 's,${STAGING_LIBDIR},${libdir},g' \
-       -e 's,${STAGING_INCDIR},${includedir},g' \
-       ${D}${libdir}/cmake/LibIcal/LibIcal*.cmake \
-       ${D}${libdir}/cmake/LibIcal/Ical*.cmake
-}
-
-BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-support/libical/libical_3.0.11.bb b/poky/meta/recipes-support/libical/libical_3.0.11.bb
new file mode 100644
index 0000000..b16081e
--- /dev/null
+++ b/poky/meta/recipes-support/libical/libical_3.0.11.bb
@@ -0,0 +1,46 @@
+SUMMARY = "iCal and scheduling (RFC 2445, 2446, 2447) library"
+DESCRIPTION = "An Open Source implementation of the iCalendar protocols \
+and protocol data units. The iCalendar specification describes how \
+calendar clients can communicate with calendar servers so users can store \
+their calendar data and arrange meetings with other users. "
+HOMEPAGE = "https://github.com/libical/libical"
+BUGTRACKER = "https://github.com/libical/libical/issues"
+LICENSE = "LGPLv2.1 | MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1910a2a76ddf6a9ba369182494170d87 \
+                    file://LICENSE.LGPL21.txt;md5=933adb561f159e7c3da079536f0ed871 \
+                    file://LICENSE.MPL2.txt;md5=f75d2927d3c1ed2414ef72048f5ad640 \
+                    "
+SECTION = "libs"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz \
+"
+SRC_URI[sha256sum] = "1e6c5e10c5a48f7a40c68958055f0e2759d9ab3563aca17273fe35a5df7dbbf1"
+UPSTREAM_CHECK_URI = "https://github.com/libical/libical/releases"
+
+inherit cmake pkgconfig
+
+DEPENDS:append:class-target = " libical-native"
+
+PACKAGECONFIG ??= "icu glib"
+PACKAGECONFIG[bdb] = ",-DCMAKE_DISABLE_FIND_PACKAGE_BDB=True,db"
+PACKAGECONFIG[glib] = "-DICAL_GLIB=True,-DICAL_GLIB=False,glib-2.0-native libxml2-native glib-2.0 libxml2"
+# ICU is used for RSCALE (RFC7529) support
+PACKAGECONFIG[icu] = ",-DCMAKE_DISABLE_FIND_PACKAGE_ICU=True,icu"
+
+# No need to use perl-native, the host perl is sufficient.
+EXTRA_OECMAKE += "-DPERL_EXECUTABLE=${HOSTTOOLS_DIR}/perl"
+# doc build fails with linker error (??) for libical-glib so disable it
+EXTRA_OECMAKE += "-DICAL_BUILD_DOCS=false"
+
+EXTRA_OECMAKE:append:class-target = " -DIMPORT_ICAL_GLIB_SRC_GENERATOR=${STAGING_LIBDIR_NATIVE}/cmake/LibIcal/IcalGlibSrcGenerator.cmake"
+
+do_install:append () {
+    # Remove build host references
+    sed -i \
+       -e 's,${STAGING_LIBDIR},${libdir},g' \
+       -e 's,${STAGING_INCDIR},${includedir},g' \
+       ${D}${libdir}/cmake/LibIcal/LibIcal*.cmake \
+       ${D}${libdir}/cmake/LibIcal/Ical*.cmake
+}
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-support/libjitterentropy/libjitterentropy/0001-Makefile-restore-build-reproducibility.patch b/poky/meta/recipes-support/libjitterentropy/libjitterentropy/0001-Makefile-restore-build-reproducibility.patch
deleted file mode 100644
index 3290ff7..0000000
--- a/poky/meta/recipes-support/libjitterentropy/libjitterentropy/0001-Makefile-restore-build-reproducibility.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 905333229103510e9dee2fec29b261ccedb031d0 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 20 Aug 2021 19:37:04 +0000
-Subject: [PATCH] Makefile: restore build reproducibility
-
-wildcards result in an unpredictable order, and thus different binary outputs
-in otherwise identical builds.
-
-Upstream-Status: Submitted [https://github.com/smuellerDD/jitterentropy-library/pull/67]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 42932d8..dfb96a8 100644
---- a/Makefile
-+++ b/Makefile
-@@ -36,7 +36,7 @@ LIBMINOR=$(shell cat $(SRCDIR)/jitterentropy-base.c | grep define | grep MINVERS
- LIBPATCH=$(shell cat $(SRCDIR)/jitterentropy-base.c | grep define | grep PATCHLEVEL | awk '{print $$3}')
- LIBVERSION := $(LIBMAJOR).$(LIBMINOR).$(LIBPATCH)
- 
--C_SRCS := $(wildcard $(SRCDIR)/*.c) 
-+C_SRCS := $(sort $(wildcard $(SRCDIR)/*.c))
- C_OBJS := ${C_SRCS:.c=.o}
- OBJS := $(C_OBJS)
- 
diff --git a/poky/meta/recipes-support/libjitterentropy/libjitterentropy_3.1.0.bb b/poky/meta/recipes-support/libjitterentropy/libjitterentropy_3.1.0.bb
deleted file mode 100644
index d9fbb5e..0000000
--- a/poky/meta/recipes-support/libjitterentropy/libjitterentropy_3.1.0.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Hardware RNG based on CPU timing jitter"
-DESCRIPTION = "The Jitter RNG provides a noise source using the CPU execution timing jitter. \
-It does not depend on any system resource other than a high-resolution time \
-stamp. It is a small-scale, yet fast entropy source that is viable in almost \
-all environments and on a lot of CPU architectures."
-HOMEPAGE = "http://www.chronox.de/jent.html"
-LICENSE = "GPLv2+ | BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=1c94a9d191202a5552f381a023551396 \
-                    file://LICENSE.gplv2;md5=eb723b61539feef013de476e68b5c50a \
-                    file://LICENSE.bsd;md5=66a5cedaf62c4b2637025f049f9b826f \
-                    "
-SRC_URI = "git://github.com/smuellerDD/jitterentropy-library.git \
-           file://0001-Makefile-restore-build-reproducibility.patch \
-           "
-SRCREV = "409828cfccf4b3b07edc40a7840a821ce074e2c3"
-S = "${WORKDIR}/git"
-
-# remove at next version upgrade or when output changes
-PR = "r1"
-HASHEQUIV_HASH_VERSION .= ".2"
-
-do_configure[noexec] = "1"
-
-LDFLAGS += "-Wl,-O0"
-
-do_install () {
-    oe_runmake install INCDIR="/include" \
-                       DESTDIR="${D}" \
-                       PREFIX="${exec_prefix}" \
-                       LIBDIR="${baselib}" \
-                       INSTALL_STRIP="install"
-}
-
diff --git a/poky/meta/recipes-support/libjitterentropy/libjitterentropy_3.3.0.bb b/poky/meta/recipes-support/libjitterentropy/libjitterentropy_3.3.0.bb
new file mode 100644
index 0000000..dae2fb1
--- /dev/null
+++ b/poky/meta/recipes-support/libjitterentropy/libjitterentropy_3.3.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Hardware RNG based on CPU timing jitter"
+DESCRIPTION = "The Jitter RNG provides a noise source using the CPU execution timing jitter. \
+It does not depend on any system resource other than a high-resolution time \
+stamp. It is a small-scale, yet fast entropy source that is viable in almost \
+all environments and on a lot of CPU architectures."
+HOMEPAGE = "http://www.chronox.de/jent.html"
+LICENSE = "GPLv2+ | BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1c94a9d191202a5552f381a023551396 \
+                    file://LICENSE.gplv2;md5=eb723b61539feef013de476e68b5c50a \
+                    file://LICENSE.bsd;md5=66a5cedaf62c4b2637025f049f9b826f \
+                    "
+SRC_URI = "git://github.com/smuellerDD/jitterentropy-library.git"
+SRCREV = "418c1e64231255aec2167cbb20aab62a0863415d"
+S = "${WORKDIR}/git"
+
+# remove at next version upgrade or when output changes
+HASHEQUIV_HASH_VERSION .= ".2"
+
+do_configure[noexec] = "1"
+
+LDFLAGS += "-Wl,-O0"
+
+do_install () {
+    oe_runmake install INCDIR="/include" \
+                       DESTDIR="${D}" \
+                       PREFIX="${exec_prefix}" \
+                       LIBDIR="${baselib}" \
+                       INSTALL_STRIP="install"
+}
+
diff --git a/poky/meta/recipes-support/libmd/libmd_1.0.3.bb b/poky/meta/recipes-support/libmd/libmd_1.0.3.bb
deleted file mode 100644
index 2e6762e..0000000
--- a/poky/meta/recipes-support/libmd/libmd_1.0.3.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "Message Digest functions from BSD systems"
-DESCRIPTION = "This library provides message digest functions \
-found on BSD systems either on their libc (NetBSD, OpenBSD) or \
-libmd (FreeBSD, DragonflyBSD, macOS, Solaris) libraries and \
-lacking on others like GNU systems."
-HOMEPAGE = "https://www.hadrons.org/software/libmd/"
-
-LICENSE = "BSD-3-Clause & BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0436d4fb62a71f661d6e8b7812f9e1df"
-
-SRC_URI = "https://archive.hadrons.org/software/libmd/libmd-${PV}.tar.xz"
-SRC_URI[sha256sum] = "5a02097f95cc250a3f1001865e4dbba5f1d15554120f95693c0541923c52af4a"
-
-inherit autotools
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libmd/libmd_1.0.4.bb b/poky/meta/recipes-support/libmd/libmd_1.0.4.bb
new file mode 100644
index 0000000..b93dc2d
--- /dev/null
+++ b/poky/meta/recipes-support/libmd/libmd_1.0.4.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Message Digest functions from BSD systems"
+DESCRIPTION = "This library provides message digest functions \
+found on BSD systems either on their libc (NetBSD, OpenBSD) or \
+libmd (FreeBSD, DragonflyBSD, macOS, Solaris) libraries and \
+lacking on others like GNU systems."
+HOMEPAGE = "https://www.hadrons.org/software/libmd/"
+
+LICENSE = "BSD-3-Clause & BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0436d4fb62a71f661d6e8b7812f9e1df"
+
+SRC_URI = "https://archive.hadrons.org/software/libmd/libmd-${PV}.tar.xz"
+SRC_URI[sha256sum] = "f51c921042e34beddeded4b75557656559cf5b1f2448033b4c1eec11c07e530f"
+
+inherit autotools
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libseccomp/files/0001-arch-Add-riscv32-architecture-support.patch b/poky/meta/recipes-support/libseccomp/files/0001-arch-Add-riscv32-architecture-support.patch
index 62bd61f..2fd22b1 100644
--- a/poky/meta/recipes-support/libseccomp/files/0001-arch-Add-riscv32-architecture-support.patch
+++ b/poky/meta/recipes-support/libseccomp/files/0001-arch-Add-riscv32-architecture-support.patch
@@ -1,18 +1,18 @@
-From 6d127a0463ea2d7bb5021562678324e28e0407e5 Mon Sep 17 00:00:00 2001
+From e99b00a78acaf80236cba8b3fabaebdb3ef1987b Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Tue, 8 Jun 2021 19:45:34 -0700
-Subject: [PATCH 1/2] arch: Add riscv32 architecture support
+Subject: [PATCH 1/4] arch: Add riscv32 architecture support
 
 Support for rv32 was upstreamed into 5.4+ kernel
-
 Upstream-Status: Submitted [https://github.com/seccomp/libseccomp/pull/327]
+
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  CREDITS                            |  1 +
  README.md                          |  1 +
  doc/man/man1/scmp_sys_resolver.1   |  2 +-
  doc/man/man3/seccomp_arch_add.3    |  1 +
- include/seccomp-syscalls.h         | 31 ++++++++++++++++++
+ include/seccomp-syscalls.h         | 32 +++++++++++++++++++
  include/seccomp.h.in               |  9 ++++++
  src/Makefile.am                    |  1 +
  src/arch-riscv32.c                 | 31 ++++++++++++++++++
@@ -24,7 +24,6 @@
  src/python/libseccomp.pxd          |  1 +
  src/python/seccomp.pyx             |  2 ++
  src/syscalls.c                     |  1 +
- src/syscalls.csv                   |  2 +-
  src/syscalls.h                     |  2 ++
  src/system.c                       |  1 +
  tests/15-basic-resolver.c          |  1 +
@@ -40,12 +39,12 @@
  tools/scmp_bpf_sim.c               |  2 ++
  tools/util.c                       |  6 +++-
  tools/util.h                       |  7 ++++
- 32 files changed, 208 insertions(+), 7 deletions(-)
+ 31 files changed, 208 insertions(+), 6 deletions(-)
  create mode 100644 src/arch-riscv32.c
  create mode 100644 src/arch-riscv32.h
 
 diff --git a/CREDITS b/CREDITS
-index d6bbc2a..ad2f7e0 100644
+index b685712..c1ffdb3 100644
 --- a/CREDITS
 +++ b/CREDITS
 @@ -33,6 +33,7 @@ John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
@@ -55,9 +54,9 @@
 +Khem Raj <raj.khem@gmail.com>
  Kyle R. Conway <kyle.r.conway@gmail.com>
  Kenta Tada <Kenta.Tada@sony.com>
- Luca Bruno <lucab@debian.org>
+ Kir Kolyshkin <kolyshkin@gmail.com>
 diff --git a/README.md b/README.md
-index ba02186..2cd718f 100644
+index 579f226..8199a71 100644
 --- a/README.md
 +++ b/README.md
 @@ -54,6 +54,7 @@ The libseccomp library currently supports the architectures listed below:
@@ -67,7 +66,7 @@
 +* 32-bit RISC-V (riscv32)
  * 32-bit SuperH big endian (sheb)
  * 32-bit SuperH (sh)
-
+ 
 diff --git a/doc/man/man1/scmp_sys_resolver.1 b/doc/man/man1/scmp_sys_resolver.1
 index 267187b..fc68d18 100644
 --- a/doc/man/man1/scmp_sys_resolver.1
@@ -94,93 +93,94 @@
  .sp
  .BI "uint32_t seccomp_arch_resolve_name(const char *" arch_name ");"
 diff --git a/include/seccomp-syscalls.h b/include/seccomp-syscalls.h
-index c694db1..c6ea5ca 100644
+index 476f953..4ff814c 100644
 --- a/include/seccomp-syscalls.h
 +++ b/include/seccomp-syscalls.h
-@@ -275,6 +275,13 @@
- #define __PNR_ppoll				-10241
+@@ -276,6 +276,14 @@
  #define __PNR_renameat				-10242
  #define __PNR_riscv_flush_icache		-10243
-+#define __PNR_fstat				-10244
-+#define __PNR_futex				-10245
-+#define __PNR_nanosleep				-10246
-+#define __PNR_lseek				-10247
-+#define __PNR_clock_gettime			-10248
-+#define __PNR_clock_nanosleep			-10249
-+#define __PNR_gettimeofday			-10250
-
+ #define __PNR_memfd_secret			-10244
++#define __PNR_fstat				-10245
++#define __PNR_futex				-10246
++#define __PNR_nanosleep				-10247
++#define __PNR_lseek				-10248
++#define __PNR_clock_gettime			-10249
++#define __PNR_clock_nanosleep			-10250
++#define __PNR_gettimeofday			-10251
++#define __PNR_fcntl				-10252
+ 
  /*
   * libseccomp syscall definitions
-@@ -442,7 +449,11 @@
+@@ -443,7 +451,11 @@
  #define __SNR_clock_getres_time64	__PNR_clock_getres_time64
  #endif
-
+ 
 +#ifdef __NR_clock_gettime
  #define __SNR_clock_gettime		__NR_clock_gettime
 +#else
 +#define __SNR_clock_gettime		__PNR_clock_gettime
 +#endif
-
+ 
  #ifdef __NR_clock_gettime64
  #define __SNR_clock_gettime64		__NR_clock_gettime64
-@@ -450,7 +461,11 @@
+@@ -451,7 +463,11 @@
  #define __SNR_clock_gettime64		__PNR_clock_gettime64
  #endif
-
+ 
 +#ifdef __NR_clock_nanosleep
  #define __SNR_clock_nanosleep		__NR_clock_nanosleep
 +#else
 +#define __SNR_clock_nanosleep		__PNR_clock_nanosleep
 +#endif
-
+ 
  #ifdef __NR_clock_nanosleep_time64
  #define __SNR_clock_nanosleep_time64	__NR_clock_nanosleep_time64
-@@ -710,7 +725,11 @@
+@@ -713,7 +729,11 @@
  #define __SNR_ftruncate64		__PNR_ftruncate64
  #endif
-
+ 
 +#ifdef __NR_futex
  #define __SNR_futex			__NR_futex
 +#else
 +#define __SNR_futex			__PNR_futex
 +#endif
-
+ 
  #ifdef __NR_futex_time64
  #define __SNR_futex_time64		__NR_futex_time64
-@@ -896,7 +915,11 @@
-
+@@ -899,7 +919,11 @@
+ 
  #define __SNR_gettid			__NR_gettid
-
+ 
 +#ifdef __NR_gettimeofday
  #define __SNR_gettimeofday		__NR_gettimeofday
 +#else
 +#define __SNR_gettimeofday		__PNR_gettimeofday
 +#endif
-
+ 
  #ifdef __NR_getuid
  #define __SNR_getuid			__NR_getuid
-@@ -1046,7 +1069,11 @@
-
+@@ -1049,7 +1073,11 @@
+ 
  #define __SNR_lremovexattr		__NR_lremovexattr
-
+ 
 +#ifdef __NR_lseek
  #define __SNR_lseek			__NR_lseek
 +#else
 +#define __SNR_lseek			__PNR_lseek
 +#endif
-
+ 
  #define __SNR_lsetxattr			__NR_lsetxattr
-
-@@ -1218,7 +1245,11 @@
-
+ 
+@@ -1227,7 +1255,11 @@
+ 
  #define __SNR_name_to_handle_at			__NR_name_to_handle_at
-
+ 
 +#ifdef __NR_nanosleep
  #define __SNR_nanosleep			__NR_nanosleep
 +#else
 +#define __SNR_nanosleep			__PNR_nanosleep
 +#endif
-
+ 
  #ifdef __NR_newfstatat
  #define __SNR_newfstatat		__NR_newfstatat
 diff --git a/include/seccomp.h.in b/include/seccomp.h.in
@@ -201,14 +201,14 @@
 +
  #define SCMP_ARCH_RISCV64	AUDIT_ARCH_RISCV64
 +#define SCMP_ARCH_RISCV32	AUDIT_ARCH_RISCV32
-
+ 
  /**
   * The SuperH architecture tokens
 diff --git a/src/Makefile.am b/src/Makefile.am
-index 7b59810..7961925 100644
+index 04e7ba5..a30bbc0 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
-@@ -44,6 +44,7 @@ SOURCES_ALL = \
+@@ -40,6 +40,7 @@ SOURCES_ALL = \
  	arch-ppc.h arch-ppc.c \
  	arch-ppc64.h arch-ppc64.c \
  	arch-riscv64.h arch-riscv64.c \
@@ -218,7 +218,7 @@
  	arch-sh.h arch-sh.c \
 diff --git a/src/arch-riscv32.c b/src/arch-riscv32.c
 new file mode 100644
-index 0000000..53b3126
+index 0000000..10418f4
 --- /dev/null
 +++ b/src/arch-riscv32.c
 @@ -0,0 +1,31 @@
@@ -248,8 +248,8 @@
 +	.token_bpf = AUDIT_ARCH_RISCV32,
 +	.size = ARCH_SIZE_32,
 +	.endian = ARCH_ENDIAN_LITTLE,
-+	.syscall_resolve_name = riscv32_syscall_resolve_name,
-+	.syscall_resolve_num = riscv32_syscall_resolve_num,
++	.syscall_resolve_name_raw = riscv32_syscall_resolve_name,
++	.syscall_resolve_num_raw = riscv32_syscall_resolve_num,
 +	.syscall_rewrite = NULL,
 +	.rule_add = NULL,
 +};
@@ -310,7 +310,7 @@
 @@ -519,6 +519,49 @@ function dump_lib_riscv64() {
  	dump_lib_arch riscv64 | mangle_lib_syscall riscv64
  }
-
+ 
 +#
 +# Dump the riscv32 system syscall table
 +#
@@ -385,9 +385,9 @@
 +	abi_list+=" riscv32 riscv64"
  	abi_list+=" s390 s390x"
  	abi_list+=" sh"
-
+ 
 diff --git a/src/arch.c b/src/arch.c
-index 6ab922f..acf80af 100644
+index 921e455..07935a9 100644
 --- a/src/arch.c
 +++ b/src/arch.c
 @@ -43,6 +43,7 @@
@@ -453,10 +453,10 @@
          SCMP_ARCH_S390X
 +        SCMP_ARCH_RISCV32
          SCMP_ARCH_RISCV64
-
+ 
      cdef enum scmp_filter_attr:
 diff --git a/src/python/seccomp.pyx b/src/python/seccomp.pyx
-index 1a9eb24..c94ad1d 100644
+index 2eeabc1..2895d78 100644
 --- a/src/python/seccomp.pyx
 +++ b/src/python/seccomp.pyx
 @@ -214,6 +214,7 @@ cdef class Arch:
@@ -466,36 +466,29 @@
 +    RISCV32 - 32-bit RISC-V
      RISCV64 - 64-bit RISC-V
      """
-
+ 
 @@ -238,6 +239,7 @@ cdef class Arch:
      PPC64LE = libseccomp.SCMP_ARCH_PPC64LE
      S390 = libseccomp.SCMP_ARCH_S390
      S390X = libseccomp.SCMP_ARCH_S390X
 +    RISCV32 = libseccomp.SCMP_ARCH_RISCV32
      RISCV64 = libseccomp.SCMP_ARCH_RISCV64
-
+ 
      def __cinit__(self, arch=libseccomp.SCMP_ARCH_NATIVE):
 diff --git a/src/syscalls.c b/src/syscalls.c
-index ddb84fa..34e08d9 100644
+index faddff0..15952ce 100644
 --- a/src/syscalls.c
 +++ b/src/syscalls.c
-@@ -55,3 +55,4 @@ ARCH_DEF(sh)
+@@ -59,6 +59,7 @@ ARCH_DEF(sh)
  ARCH_DEF(x32)
  ARCH_DEF(x86)
  ARCH_DEF(riscv64)
 +ARCH_DEF(riscv32)
-diff --git a/src/syscalls.csv b/src/syscalls.csv
-index fbd1058..0ee6c15 100644
---- a/src/syscalls.csv
-+++ b/src/syscalls.csv
-@@ -1,4 +1,4 @@
--#syscall (v5.12.0-rc7 2021-04-17),x86,x86_64,x32,arm,aarch64,mips,mips64,mips64n32,parisc,parisc64,ppc,ppc64,riscv64,s390,s390x,sh
-+#syscall (v5.12.0-rc7 2021-04-17),x86,x86_64,x32,arm,aarch64,mips,mips64,mips64n32,parisc,parisc64,ppc,ppc64,riscv32,riscv64,s390,s390x,sh
- accept,PNR,43,43,285,202,168,42,42,35,35,330,330,202,PNR,PNR,344
- accept4,364,288,288,366,242,334,293,297,320,320,344,344,242,364,364,358
- access,33,21,21,33,PNR,33,20,20,33,33,33,33,PNR,33,33,33
+ 
+ /**
+  * Resolve a syscall name to a number
 diff --git a/src/syscalls.h b/src/syscalls.h
-index 4f959af..49887ba 100644
+index 58a788c..c6b5db5 100644
 --- a/src/syscalls.h
 +++ b/src/syscalls.h
 @@ -28,6 +28,7 @@
@@ -503,7 +496,7 @@
  #include "arch-x86.h"
  #include "arch-riscv64.h"
 +#include "arch-riscv32.h"
-
+ 
  /* NOTE: changes to the arch_syscall_table layout may require changes to the
   *       generate_syscalls_perf.sh and arch-syscall-validate scripts */
 @@ -49,6 +50,7 @@ struct arch_syscall_table {
@@ -527,7 +520,7 @@
  		break;
  	default:
 diff --git a/tests/15-basic-resolver.c b/tests/15-basic-resolver.c
-index 2679270..57092f3 100644
+index c759dd1..fd94dbf 100644
 --- a/tests/15-basic-resolver.c
 +++ b/tests/15-basic-resolver.c
 @@ -45,6 +45,7 @@ unsigned int arch_list[] = {
@@ -536,8 +529,8 @@
  	SCMP_ARCH_PARISC64,
 +	SCMP_ARCH_RISCV32,
  	SCMP_ARCH_RISCV64,
+ 	SCMP_ARCH_SH,
  	-1
- };
 diff --git a/tests/16-sim-arch_basic.c b/tests/16-sim-arch_basic.c
 index 4fcbb5c..662e081 100644
 --- a/tests/16-sim-arch_basic.c
@@ -587,7 +580,7 @@
 +	rc = seccomp_arch_add(ctx, seccomp_arch_resolve_name("riscv32"));
  	if (rc != 0)
  		goto out;
-
+ 
 diff --git a/tests/23-sim-arch_all_le_basic.py b/tests/23-sim-arch_all_le_basic.py
 index 12bb243..1eebc20 100755
 --- a/tests/23-sim-arch_all_le_basic.py
@@ -622,10 +615,10 @@
               "ppc64le",
 +             "riscv32",
               "riscv64"]
-
+ 
  def test_arch(arch, init):
 diff --git a/tests/regression b/tests/regression
-index 53dab75..2869629 100755
+index d28b848..057ff67 100755
 --- a/tests/regression
 +++ b/tests/regression
 @@ -26,7 +26,7 @@ GLBL_ARCH_LE_SUPPORT=" \
@@ -644,9 +637,9 @@
 +	riscv32 \
  	s390 \
  	sheb sh"
-
-@@ -785,7 +786,7 @@ function run_test_live() {
-
+ 
+@@ -801,7 +802,7 @@ function run_test_live() {
+ 
  	# setup the arch specific return values
  	case "$arch" in
 -	x86|x86_64|x32|arm|aarch64|parisc|parisc64|ppc|ppc64|ppc64le|ppc|s390|s390x|riscv64|sh|sheb)
@@ -669,10 +662,10 @@
  			printf("unknown\n");
  		}
 diff --git a/tools/scmp_bpf_disasm.c b/tools/scmp_bpf_disasm.c
-index b95cdeb..49a89c7 100644
+index b682de7..4f759fc 100644
 --- a/tools/scmp_bpf_disasm.c
 +++ b/tools/scmp_bpf_disasm.c
-@@ -510,6 +510,8 @@ int main(int argc, char *argv[])
+@@ -508,6 +508,8 @@ int main(int argc, char *argv[])
  				arch = AUDIT_ARCH_S390X;
  			else if (strcmp(optarg, "riscv64") == 0)
  				arch = AUDIT_ARCH_RISCV64;
@@ -719,7 +712,7 @@
 @@ -79,6 +79,13 @@
  #define AUDIT_ARCH_RISCV64	(EM_RISCV|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
  #endif /* AUDIT_ARCH_RISCV64 */
-
+ 
 +#ifndef AUDIT_ARCH_RISCV32
 +#ifndef EM_RISCV
 +#define EM_RISCV		243
@@ -728,7 +721,8 @@
 +#endif /* AUDIT_ARCH_RISCV32 */
 +
  extern uint32_t arch;
-
+ 
  uint16_t ttoh16(uint32_t arch, uint16_t val);
---
-2.32.0
+-- 
+2.33.0
+
diff --git a/poky/meta/recipes-support/libseccomp/files/0002-Regenerate-syscall-cvs-file-from-5.13-rc5-kernel.patch b/poky/meta/recipes-support/libseccomp/files/0002-Regenerate-syscall-cvs-file-from-5.13-rc5-kernel.patch
deleted file mode 100644
index 7ca861a..0000000
--- a/poky/meta/recipes-support/libseccomp/files/0002-Regenerate-syscall-cvs-file-from-5.13-rc5-kernel.patch
+++ /dev/null
@@ -1,996 +0,0 @@
-From ee4aba3f59b4bf52a74cb3917e64c704250de8ef Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 8 Jun 2021 20:42:19 -0700
-Subject: [PATCH 2/2] Regenerate syscall cvs file from 5.13-rc5 kernel
-
-Upstream-Status: Submitted [https://github.com/seccomp/libseccomp/pull/327]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- include/seccomp-syscalls.h |   7 +
- src/syscalls.csv           | 952 +++++++++++++++++++------------------
- 2 files changed, 485 insertions(+), 474 deletions(-)
-
-diff --git a/include/seccomp-syscalls.h b/include/seccomp-syscalls.h
-index c6ea5ca..b7651bf 100644
---- a/include/seccomp-syscalls.h
-+++ b/include/seccomp-syscalls.h
-@@ -282,6 +282,7 @@
- #define __PNR_clock_gettime			-10248
- #define __PNR_clock_nanosleep			-10249
- #define __PNR_gettimeofday			-10250
-+#define __PNR_quotactl_path			-10251
-
- /*
-  * libseccomp syscall definitions
-@@ -1547,6 +1548,12 @@
- #define __SNR_riscv_flush_icache	__PNR_riscv_flush_icache
- #endif
-
-+#ifdef __NR_quotactl_path
-+#define __SNR_quotactl_path       __NR_quotactl_path
-+#else
-+#define __SNR_quotactl_path       __PNR_quotactl_path
-+#endif
-+
- #ifdef __NR_rmdir
- #define __SNR_rmdir			__NR_rmdir
- #else
-diff --git a/src/syscalls.csv b/src/syscalls.csv
-index 0ee6c15..eec8d21 100644
---- a/src/syscalls.csv
-+++ b/src/syscalls.csv
-@@ -1,474 +1,478 @@
--#syscall (v5.12.0-rc7 2021-04-17),x86,x86_64,x32,arm,aarch64,mips,mips64,mips64n32,parisc,parisc64,ppc,ppc64,riscv32,riscv64,s390,s390x,sh
--accept,PNR,43,43,285,202,168,42,42,35,35,330,330,202,PNR,PNR,344
--accept4,364,288,288,366,242,334,293,297,320,320,344,344,242,364,364,358
--access,33,21,21,33,PNR,33,20,20,33,33,33,33,PNR,33,33,33
--acct,51,163,163,51,89,51,158,158,51,51,51,51,89,51,51,51
--add_key,286,248,248,309,217,280,239,243,264,264,269,269,217,278,278,285
--adjtimex,124,159,159,124,171,124,154,154,124,124,124,124,171,124,124,124
--afs_syscall,137,183,183,PNR,PNR,137,176,176,PNR,PNR,137,137,PNR,137,137,PNR
--alarm,27,37,37,PNR,PNR,27,37,37,27,27,27,27,PNR,27,27,27
--arch_prctl,384,158,158,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--arm_fadvise64_64,PNR,PNR,PNR,270,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--arm_sync_file_range,PNR,PNR,PNR,341,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--bdflush,134,PNR,PNR,134,PNR,134,PNR,PNR,134,134,134,134,PNR,134,134,134
--bind,361,49,49,282,200,169,48,48,22,22,327,327,200,361,361,341
--bpf,357,321,321,386,280,355,315,319,341,341,361,361,280,351,351,375
--break,17,PNR,PNR,PNR,PNR,17,PNR,PNR,PNR,PNR,17,17,PNR,PNR,PNR,PNR
--breakpoint,PNR,PNR,PNR,983041,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--brk,45,12,12,45,214,45,12,12,45,45,45,45,214,45,45,45
--cachectl,PNR,PNR,PNR,PNR,PNR,148,198,198,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--cacheflush,PNR,PNR,PNR,983042,PNR,147,197,197,PNR,PNR,PNR,PNR,PNR,PNR,PNR,123
--capget,184,125,125,184,90,204,123,123,106,106,183,183,90,184,184,184
--capset,185,126,126,185,91,205,124,124,107,107,184,184,91,185,185,185
--chdir,12,80,80,12,49,12,78,78,12,12,12,12,49,12,12,12
--chmod,15,90,90,15,PNR,15,88,88,15,15,15,15,PNR,15,15,15
--chown,182,92,92,182,PNR,202,90,90,180,180,181,181,PNR,182,212,182
--chown32,212,PNR,PNR,212,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,212,PNR,212
--chroot,61,161,161,61,51,61,156,156,61,61,61,61,51,61,61,61
--clock_adjtime,343,305,305,372,266,341,300,305,324,324,347,347,266,337,337,361
--clock_adjtime64,405,PNR,PNR,405,PNR,405,PNR,405,405,PNR,405,PNR,PNR,405,PNR,405
--clock_getres,266,229,229,264,114,264,223,227,257,257,247,247,114,261,261,266
--clock_getres_time64,406,PNR,PNR,406,PNR,406,PNR,406,406,PNR,406,PNR,PNR,406,PNR,406
--clock_gettime,265,228,228,263,113,263,222,226,256,256,246,246,113,260,260,265
--clock_gettime64,403,PNR,PNR,403,PNR,403,PNR,403,403,PNR,403,PNR,PNR,403,PNR,403
--clock_nanosleep,267,230,230,265,115,265,224,228,258,258,248,248,115,262,262,267
--clock_nanosleep_time64,407,PNR,PNR,407,PNR,407,PNR,407,407,PNR,407,PNR,PNR,407,PNR,407
--clock_settime,264,227,227,262,112,262,221,225,255,255,245,245,112,259,259,264
--clock_settime64,404,PNR,PNR,404,PNR,404,PNR,404,404,PNR,404,PNR,PNR,404,PNR,404
--clone,120,56,56,120,220,120,55,55,120,120,120,120,220,120,120,120
--clone3,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,PNR
--close,6,3,3,6,57,6,3,3,6,6,6,6,57,6,6,6
--close_range,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436
--connect,362,42,42,283,203,170,41,41,31,31,328,328,203,362,362,342
--copy_file_range,377,326,326,391,285,360,320,324,346,346,379,379,285,375,375,380
--creat,8,85,85,8,PNR,8,83,83,8,8,8,8,PNR,8,8,8
--create_module,127,174,PNR,PNR,PNR,127,167,167,PNR,PNR,127,127,PNR,127,127,PNR
--delete_module,129,176,176,129,106,129,169,169,129,129,129,129,106,129,129,129
--dup,41,32,32,41,23,41,31,31,41,41,41,41,23,41,41,41
--dup2,63,33,33,63,PNR,63,32,32,63,63,63,63,PNR,63,63,63
--dup3,330,292,292,358,24,327,286,290,312,312,316,316,24,326,326,330
--epoll_create,254,213,213,250,PNR,248,207,207,224,224,236,236,PNR,249,249,254
--epoll_create1,329,291,291,357,20,326,285,289,311,311,315,315,20,327,327,329
--epoll_ctl,255,233,233,251,21,249,208,208,225,225,237,237,21,250,250,255
--epoll_ctl_old,PNR,214,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--epoll_pwait,319,281,281,346,22,313,272,276,297,297,303,303,22,312,312,319
--epoll_pwait2,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441
--epoll_wait,256,232,232,252,PNR,250,209,209,226,226,238,238,PNR,251,251,256
--epoll_wait_old,PNR,215,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--eventfd,323,284,284,351,PNR,319,278,282,304,304,307,307,PNR,318,318,323
--eventfd2,328,290,290,356,19,325,284,288,310,310,314,314,19,323,323,328
--execve,11,59,520,11,221,11,57,57,11,11,11,11,221,11,11,11
--execveat,358,322,545,387,281,356,316,320,342,342,362,362,281,354,354,376
--exit,1,60,60,1,93,1,58,58,1,1,1,1,93,1,1,1
--exit_group,252,231,231,248,94,246,205,205,222,222,234,234,94,248,248,252
--faccessat,307,269,269,334,48,300,259,263,287,287,298,298,48,300,300,307
--faccessat2,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439
--fadvise64,250,221,221,PNR,223,254,215,216,PNR,PNR,233,233,223,253,253,250
--fadvise64_64,272,PNR,PNR,PNR,PNR,PNR,PNR,PNR,236,236,254,PNR,PNR,264,PNR,272
--fallocate,324,285,285,352,47,320,279,283,305,305,309,309,47,314,314,324
--fanotify_init,338,300,300,367,262,336,295,300,322,322,323,323,262,332,332,337
--fanotify_mark,339,301,301,368,263,337,296,301,323,323,324,324,263,333,333,338
--fchdir,133,81,81,133,50,133,79,79,133,133,133,133,50,133,133,133
--fchmod,94,91,91,94,52,94,89,89,94,94,94,94,52,94,94,94
--fchmodat,306,268,268,333,53,299,258,262,286,286,297,297,53,299,299,306
--fchown,95,93,93,95,55,95,91,91,95,95,95,95,55,95,207,95
--fchown32,207,PNR,PNR,207,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,207,PNR,207
--fchownat,298,260,260,325,54,291,250,254,278,278,289,289,54,291,291,298
--fcntl,55,72,72,55,25,55,70,70,55,55,55,55,25,55,55,55
--fcntl64,221,PNR,PNR,221,PNR,220,PNR,212,202,202,204,PNR,PNR,221,PNR,221
--fdatasync,148,75,75,148,83,152,73,73,148,148,148,148,83,148,148,148
--fgetxattr,231,193,193,231,10,229,185,185,243,243,214,214,10,229,229,231
--finit_module,350,313,313,379,273,348,307,312,333,333,353,353,273,344,344,368
--flistxattr,234,196,196,234,13,232,188,188,246,246,217,217,13,232,232,234
--flock,143,73,73,143,32,143,71,71,143,143,143,143,32,143,143,143
--fork,2,57,57,2,PNR,2,56,56,2,2,2,2,PNR,2,2,2
--fremovexattr,237,199,199,237,16,235,191,191,249,249,220,220,16,235,235,237
--fsconfig,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431
--fsetxattr,228,190,190,228,7,226,182,182,240,240,211,211,7,226,226,228
--fsmount,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432
--fsopen,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430
--fspick,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433
--fstat,108,5,5,108,80,108,5,5,28,28,108,108,80,108,108,108
--fstat64,197,PNR,PNR,197,PNR,215,PNR,PNR,112,112,197,PNR,PNR,197,PNR,197
--fstatat64,300,PNR,PNR,327,PNR,293,PNR,PNR,280,280,291,PNR,PNR,293,PNR,300
--fstatfs,100,138,138,100,44,100,135,135,100,100,100,100,44,100,100,100
--fstatfs64,269,PNR,PNR,267,PNR,256,PNR,218,299,299,253,253,PNR,266,266,269
--fsync,118,74,74,118,82,118,72,72,118,118,118,118,82,118,118,118
--ftime,35,PNR,PNR,PNR,PNR,35,PNR,PNR,PNR,PNR,35,35,PNR,PNR,PNR,PNR
--ftruncate,93,77,77,93,46,93,75,75,93,93,93,93,46,93,93,93
--ftruncate64,194,PNR,PNR,194,PNR,212,PNR,PNR,200,200,194,PNR,PNR,194,PNR,194
--futex,240,202,202,240,98,238,194,194,210,210,221,221,98,238,238,240
--futex_time64,422,PNR,PNR,422,PNR,422,PNR,422,422,PNR,422,PNR,PNR,422,PNR,422
--futimesat,299,261,261,326,PNR,292,251,255,279,279,290,290,PNR,292,292,299
--getcpu,318,309,309,345,168,312,271,275,296,296,302,302,168,311,311,318
--getcwd,183,79,79,183,17,203,77,77,110,110,182,182,17,183,183,183
--getdents,141,78,78,141,PNR,141,76,76,141,141,141,141,PNR,141,141,141
--getdents64,220,217,217,217,61,219,308,299,201,201,202,202,61,220,220,220
--getegid,50,108,108,50,177,50,106,106,50,50,50,50,177,50,202,50
--getegid32,202,PNR,PNR,202,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,202,PNR,202
--geteuid,49,107,107,49,175,49,105,105,49,49,49,49,175,49,201,49
--geteuid32,201,PNR,PNR,201,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,201,PNR,201
--getgid,47,104,104,47,176,47,102,102,47,47,47,47,176,47,200,47
--getgid32,200,PNR,PNR,200,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,200,PNR,200
--getgroups,80,115,115,80,158,80,113,113,80,80,80,80,158,80,205,80
--getgroups32,205,PNR,PNR,205,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,205,PNR,205
--getitimer,105,36,36,105,102,105,35,35,105,105,105,105,102,105,105,105
--get_kernel_syms,130,177,PNR,PNR,PNR,130,170,170,PNR,PNR,130,130,PNR,130,130,PNR
--get_mempolicy,275,239,239,320,236,269,228,232,261,261,260,260,236,269,269,275
--getpeername,368,52,52,287,205,171,51,51,53,53,332,332,205,368,368,346
--getpgid,132,121,121,132,155,132,119,119,132,132,132,132,155,132,132,132
--getpgrp,65,111,111,65,PNR,65,109,109,65,65,65,65,PNR,65,65,65
--getpid,20,39,39,20,172,20,38,38,20,20,20,20,172,20,20,20
--getpmsg,188,181,181,PNR,PNR,208,174,174,PNR,PNR,187,187,PNR,188,188,PNR
--getppid,64,110,110,64,173,64,108,108,64,64,64,64,173,64,64,64
--getpriority,96,140,140,96,141,96,137,137,96,96,96,96,141,96,96,96
--getrandom,355,318,318,384,278,353,313,317,339,339,359,359,278,349,349,373
--getresgid,171,120,120,171,150,191,118,118,171,171,170,170,150,171,211,171
--getresgid32,211,PNR,PNR,211,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,211,PNR,211
--getresuid,165,118,118,165,148,186,116,116,165,165,165,165,148,165,209,165
--getresuid32,209,PNR,PNR,209,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,209,PNR,209
--getrlimit,76,97,97,PNR,163,76,95,95,76,76,76,76,163,76,191,76
--get_robust_list,312,274,531,339,100,310,269,273,290,290,299,299,100,305,305,312
--getrusage,77,98,98,77,165,77,96,96,77,77,77,77,165,77,77,77
--getsid,147,124,124,147,156,151,122,122,147,147,147,147,156,147,147,147
--getsockname,367,51,51,286,204,172,50,50,44,44,331,331,204,367,367,345
--getsockopt,365,55,542,295,209,173,54,54,182,182,340,340,209,365,365,354
--get_thread_area,244,211,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--gettid,224,186,186,224,178,222,178,178,206,206,207,207,178,236,236,224
--gettimeofday,78,96,96,78,169,78,94,94,78,78,78,78,169,78,78,78
--get_tls,PNR,PNR,PNR,983046,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--getuid,24,102,102,24,174,24,100,100,24,24,24,24,174,24,199,24
--getuid32,199,PNR,PNR,199,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,199,PNR,199
--getxattr,229,191,191,229,8,227,183,183,241,241,212,212,8,227,227,229
--gtty,32,PNR,PNR,PNR,PNR,32,PNR,PNR,PNR,PNR,32,32,PNR,PNR,PNR,PNR
--idle,112,PNR,PNR,PNR,PNR,112,PNR,PNR,PNR,PNR,112,112,PNR,112,112,PNR
--init_module,128,175,175,128,105,128,168,168,128,128,128,128,105,128,128,128
--inotify_add_watch,292,254,254,317,27,285,244,248,270,270,276,276,27,285,285,291
--inotify_init,291,253,253,316,PNR,284,243,247,269,269,275,275,PNR,284,284,290
--inotify_init1,332,294,294,360,26,329,288,292,314,314,318,318,26,324,324,332
--inotify_rm_watch,293,255,255,318,28,286,245,249,271,271,277,277,28,286,286,292
--io_cancel,249,210,210,247,3,245,204,204,219,219,231,231,3,247,247,249
--ioctl,54,16,514,54,29,54,15,15,54,54,54,54,29,54,54,54
--io_destroy,246,207,207,244,1,242,201,201,216,216,228,228,1,244,244,246
--io_getevents,247,208,208,245,4,243,202,202,217,217,229,229,4,245,245,247
--ioperm,101,173,173,PNR,PNR,101,PNR,PNR,PNR,PNR,101,101,PNR,101,PNR,PNR
--io_pgetevents,385,333,333,399,292,368,328,332,350,350,388,388,292,382,382,PNR
--io_pgetevents_time64,416,PNR,PNR,416,PNR,416,PNR,416,416,PNR,416,PNR,PNR,416,PNR,416
--iopl,110,172,172,PNR,PNR,110,PNR,PNR,PNR,PNR,110,110,PNR,PNR,PNR,PNR
--ioprio_get,290,252,252,315,31,315,274,278,268,268,274,274,31,283,283,289
--ioprio_set,289,251,251,314,30,314,273,277,267,267,273,273,30,282,282,288
--io_setup,245,206,543,243,0,241,200,200,215,215,227,227,0,243,243,245
--io_submit,248,209,544,246,2,244,203,203,218,218,230,230,2,246,246,248
--io_uring_enter,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426
--io_uring_register,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427
--io_uring_setup,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425
--ipc,117,PNR,PNR,PNR,PNR,117,PNR,PNR,PNR,PNR,117,117,PNR,117,117,117
--kcmp,349,312,312,378,272,347,306,311,332,332,354,354,272,343,343,367
--kexec_file_load,PNR,320,320,401,294,PNR,PNR,PNR,355,355,382,382,294,381,381,PNR
--kexec_load,283,246,528,347,104,311,270,274,300,300,268,268,104,277,277,283
--keyctl,288,250,250,311,219,282,241,245,266,266,271,271,219,280,280,287
--kill,37,62,62,37,129,37,60,60,37,37,37,37,129,37,37,37
--lchown,16,94,94,16,PNR,16,92,92,16,16,16,16,PNR,16,198,16
--lchown32,198,PNR,PNR,198,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,198,PNR,198
--lgetxattr,230,192,192,230,9,228,184,184,242,242,213,213,9,228,228,230
--link,9,86,86,9,PNR,9,84,84,9,9,9,9,PNR,9,9,9
--linkat,303,265,265,330,37,296,255,259,283,283,294,294,37,296,296,303
--listen,363,50,50,284,201,174,49,49,32,32,329,329,201,363,363,343
--listxattr,232,194,194,232,11,230,186,186,244,244,215,215,11,230,230,232
--llistxattr,233,195,195,233,12,231,187,187,245,245,216,216,12,231,231,233
--_llseek,140,PNR,PNR,140,PNR,140,PNR,PNR,140,140,140,140,PNR,140,PNR,140
--lock,53,PNR,PNR,PNR,PNR,53,PNR,PNR,PNR,PNR,53,53,PNR,PNR,PNR,PNR
--lookup_dcookie,253,212,212,249,18,247,206,206,223,223,235,235,18,110,110,253
--lremovexattr,236,198,198,236,15,234,190,190,248,248,219,219,15,234,234,236
--lseek,19,8,8,19,62,19,8,8,19,19,19,19,62,19,19,19
--lsetxattr,227,189,189,227,6,225,181,181,239,239,210,210,6,225,225,227
--lstat,107,6,6,107,PNR,107,6,6,84,84,107,107,PNR,107,107,107
--lstat64,196,PNR,PNR,196,PNR,214,PNR,PNR,198,198,196,PNR,PNR,196,PNR,196
--madvise,219,28,28,220,233,218,27,27,119,119,205,205,233,219,219,219
--mbind,274,237,237,319,235,268,227,231,260,260,259,259,235,268,268,274
--membarrier,375,324,324,389,283,358,318,322,343,343,365,365,283,356,356,378
--memfd_create,356,319,319,385,279,354,314,318,340,340,360,360,279,350,350,374
--migrate_pages,294,256,256,400,238,287,246,250,272,272,258,258,238,287,287,294
--mincore,218,27,27,219,232,217,26,26,72,72,206,206,232,218,218,218
--mkdir,39,83,83,39,PNR,39,81,81,39,39,39,39,PNR,39,39,39
--mkdirat,296,258,258,323,34,289,248,252,276,276,287,287,34,289,289,296
--mknod,14,133,133,14,PNR,14,131,131,14,14,14,14,PNR,14,14,14
--mknodat,297,259,259,324,33,290,249,253,277,277,288,288,33,290,290,297
--mlock,150,149,149,150,228,154,146,146,150,150,150,150,228,150,150,150
--mlock2,376,325,325,390,284,359,319,323,345,345,378,378,284,374,374,379
--mlockall,152,151,151,152,230,156,148,148,152,152,152,152,230,152,152,152
--mmap,90,9,9,PNR,222,90,9,9,90,90,90,90,222,90,90,90
--mmap2,192,PNR,PNR,192,PNR,210,PNR,PNR,89,89,192,PNR,PNR,192,PNR,192
--modify_ldt,123,154,154,PNR,PNR,123,PNR,PNR,PNR,PNR,123,123,PNR,PNR,PNR,PNR
--mount,21,165,165,21,40,21,160,160,21,21,21,21,40,21,21,21
--mount_setattr,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442
--move_mount,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429
--move_pages,317,279,533,344,239,308,267,271,295,295,301,301,239,310,310,317
--mprotect,125,10,10,125,226,125,10,10,125,125,125,125,226,125,125,125
--mpx,56,PNR,PNR,PNR,PNR,56,PNR,PNR,PNR,PNR,56,56,PNR,PNR,PNR,PNR
--mq_getsetattr,282,245,245,279,185,276,235,239,234,234,267,267,185,276,276,282
--mq_notify,281,244,527,278,184,275,234,238,233,233,266,266,184,275,275,281
--mq_open,277,240,240,274,180,271,230,234,229,229,262,262,180,271,271,277
--mq_timedreceive,280,243,243,277,183,274,233,237,232,232,265,265,183,274,274,280
--mq_timedreceive_time64,419,PNR,PNR,419,PNR,419,PNR,419,419,PNR,419,PNR,PNR,419,PNR,419
--mq_timedsend,279,242,242,276,182,273,232,236,231,231,264,264,182,273,273,279
--mq_timedsend_time64,418,PNR,PNR,418,PNR,418,PNR,418,418,PNR,418,PNR,PNR,418,PNR,418
--mq_unlink,278,241,241,275,181,272,231,235,230,230,263,263,181,272,272,278
--mremap,163,25,25,163,216,167,24,24,163,163,163,163,216,163,163,163
--msgctl,402,71,71,304,187,402,69,69,191,191,402,402,187,402,402,402
--msgget,399,68,68,303,186,399,66,66,190,190,399,399,186,399,399,399
--msgrcv,401,70,70,302,188,401,68,68,189,189,401,401,188,401,401,401
--msgsnd,400,69,69,301,189,400,67,67,188,188,400,400,189,400,400,400
--msync,144,26,26,144,227,144,25,25,144,144,144,144,227,144,144,144
--multiplexer,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,201,201,PNR,PNR,PNR,PNR
--munlock,151,150,150,151,229,155,147,147,151,151,151,151,229,151,151,151
--munlockall,153,152,152,153,231,157,149,149,153,153,153,153,231,153,153,153
--munmap,91,11,11,91,215,91,11,11,91,91,91,91,215,91,91,91
--name_to_handle_at,341,303,303,370,264,339,298,303,325,325,345,345,264,335,335,359
--nanosleep,162,35,35,162,101,166,34,34,162,162,162,162,101,162,162,162
--newfstatat,PNR,262,262,PNR,79,PNR,252,256,PNR,PNR,PNR,291,79,PNR,293,PNR
--_newselect,142,PNR,PNR,142,PNR,142,22,22,142,142,142,142,PNR,142,PNR,142
--nfsservctl,169,180,PNR,169,42,189,173,173,PNR,PNR,168,168,42,169,169,169
--nice,34,PNR,PNR,34,PNR,34,PNR,PNR,34,34,34,34,PNR,34,34,34
--oldfstat,28,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,28,28,PNR,PNR,PNR,28
--oldlstat,84,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,84,84,PNR,PNR,PNR,84
--oldolduname,59,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,59,59,PNR,PNR,PNR,PNR
--oldstat,18,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,18,18,PNR,PNR,PNR,18
--olduname,109,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,109,109,PNR,PNR,PNR,109
--open,5,2,2,5,PNR,5,2,2,5,5,5,5,PNR,5,5,5
--openat,295,257,257,322,56,288,247,251,275,275,286,286,56,288,288,295
--openat2,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437
--open_by_handle_at,342,304,304,371,265,340,299,304,326,326,346,346,265,336,336,360
--open_tree,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428
--pause,29,34,34,29,PNR,29,33,33,29,29,29,29,PNR,29,29,29
--pciconfig_iobase,PNR,PNR,PNR,271,PNR,PNR,PNR,PNR,PNR,PNR,200,200,PNR,PNR,PNR,PNR
--pciconfig_read,PNR,PNR,PNR,272,PNR,PNR,PNR,PNR,PNR,PNR,198,198,PNR,PNR,PNR,PNR
--pciconfig_write,PNR,PNR,PNR,273,PNR,PNR,PNR,PNR,PNR,PNR,199,199,PNR,PNR,PNR,PNR
--perf_event_open,336,298,298,364,241,333,292,296,318,318,319,319,241,331,331,336
--personality,136,135,135,136,92,136,132,132,136,136,136,136,92,136,136,136
--pidfd_getfd,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438
--pidfd_open,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434
--pidfd_send_signal,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424
--pipe,42,22,22,42,PNR,42,21,21,42,42,42,42,PNR,42,42,42
--pipe2,331,293,293,359,59,328,287,291,313,313,317,317,59,325,325,331
--pivot_root,217,155,155,218,41,216,151,151,67,67,203,203,41,217,217,217
--pkey_alloc,381,330,330,395,289,364,324,328,352,352,384,384,289,385,385,385
--pkey_free,382,331,331,396,290,365,325,329,353,353,385,385,290,386,386,386
--pkey_mprotect,380,329,329,394,288,363,323,327,351,351,386,386,288,384,384,384
--poll,168,7,7,168,PNR,188,7,7,168,168,167,167,PNR,168,168,168
--ppoll,309,271,271,336,73,302,261,265,274,274,281,281,73,302,302,309
--ppoll_time64,414,PNR,PNR,414,PNR,414,PNR,414,414,PNR,414,PNR,PNR,414,PNR,414
--prctl,172,157,157,172,167,192,153,153,172,172,171,171,167,172,172,172
--pread64,180,17,17,180,67,200,16,16,108,108,179,179,67,180,180,180
--preadv,333,295,534,361,69,330,289,293,315,315,320,320,69,328,328,333
--preadv2,378,327,546,392,286,361,321,325,347,347,380,380,286,376,376,381
--prlimit64,340,302,302,369,261,338,297,302,321,321,325,325,261,334,334,339
--process_madvise,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440
--process_vm_readv,347,310,539,376,270,345,304,309,330,330,351,351,270,340,340,365
--process_vm_writev,348,311,540,377,271,346,305,310,331,331,352,352,271,341,341,366
--prof,44,PNR,PNR,PNR,PNR,44,PNR,PNR,PNR,PNR,44,44,PNR,PNR,PNR,PNR
--profil,98,PNR,PNR,PNR,PNR,98,PNR,PNR,PNR,PNR,98,98,PNR,PNR,PNR,PNR
--pselect6,308,270,270,335,72,301,260,264,273,273,280,280,72,301,301,308
--pselect6_time64,413,PNR,PNR,413,PNR,413,PNR,413,413,PNR,413,PNR,PNR,413,PNR,413
--ptrace,26,101,521,26,117,26,99,99,26,26,26,26,117,26,26,26
--putpmsg,189,182,182,PNR,PNR,209,175,175,PNR,PNR,188,188,PNR,189,189,PNR
--pwrite64,181,18,18,181,68,201,17,17,109,109,180,180,68,181,181,181
--pwritev,334,296,535,362,70,331,290,294,316,316,321,321,70,329,329,334
--pwritev2,379,328,547,393,287,362,322,326,348,348,381,381,287,377,377,382
--query_module,167,178,PNR,PNR,PNR,187,171,171,PNR,PNR,166,166,PNR,167,167,PNR
--quotactl,131,179,179,131,60,131,172,172,131,131,131,131,60,131,131,131
--read,3,0,0,3,63,3,0,0,3,3,3,3,63,3,3,3
--readahead,225,187,187,225,213,223,179,179,207,207,191,191,213,222,222,225
--readdir,89,PNR,PNR,PNR,PNR,89,PNR,PNR,PNR,PNR,89,89,PNR,89,89,89
--readlink,85,89,89,85,PNR,85,87,87,85,85,85,85,PNR,85,85,85
--readlinkat,305,267,267,332,78,298,257,261,285,285,296,296,78,298,298,305
--readv,145,19,515,145,65,145,18,18,145,145,145,145,65,145,145,145
--reboot,88,169,169,88,142,88,164,164,88,88,88,88,142,88,88,88
--recv,PNR,PNR,PNR,291,PNR,175,PNR,PNR,98,98,336,336,PNR,PNR,PNR,350
--recvfrom,371,45,517,292,207,176,44,44,123,123,337,337,207,371,371,351
--recvmmsg,337,299,537,365,243,335,294,298,319,319,343,343,243,357,357,357
--recvmmsg_time64,417,PNR,PNR,417,PNR,417,PNR,417,417,PNR,417,PNR,PNR,417,PNR,417
--recvmsg,372,47,519,297,212,177,46,46,184,184,342,342,212,372,372,356
--remap_file_pages,257,216,216,253,234,251,210,210,227,227,239,239,234,267,267,257
--removexattr,235,197,197,235,14,233,189,189,247,247,218,218,14,233,233,235
--rename,38,82,82,38,PNR,38,80,80,38,38,38,38,PNR,38,38,38
--renameat,302,264,264,329,38,295,254,258,282,282,293,293,PNR,295,295,302
--renameat2,353,316,316,382,276,351,311,315,337,337,357,357,276,347,347,371
--request_key,287,249,249,310,218,281,240,244,265,265,270,270,218,279,279,286
--restart_syscall,0,219,219,0,128,253,213,214,0,0,0,0,128,7,7,0
--riscv_flush_icache,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,259,PNR,PNR,PNR
--rmdir,40,84,84,40,PNR,40,82,82,40,40,40,40,PNR,40,40,40
--rseq,386,334,334,398,293,367,327,331,354,354,387,387,293,383,383,387
--rtas,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,255,255,PNR,PNR,PNR,PNR
--rt_sigaction,174,13,512,174,134,194,13,13,174,174,173,173,134,174,174,174
--rt_sigpending,176,127,522,176,136,196,125,125,176,176,175,175,136,176,176,176
--rt_sigprocmask,175,14,14,175,135,195,14,14,175,175,174,174,135,175,175,175
--rt_sigqueueinfo,178,129,524,178,138,198,127,127,178,178,177,177,138,178,178,178
--rt_sigreturn,173,15,513,173,139,193,211,211,173,173,172,172,139,173,173,173
--rt_sigsuspend,179,130,130,179,133,199,128,128,179,179,178,178,133,179,179,179
--rt_sigtimedwait,177,128,523,177,137,197,126,126,177,177,176,176,137,177,177,177
--rt_sigtimedwait_time64,421,PNR,PNR,421,PNR,421,PNR,421,421,PNR,421,PNR,PNR,421,PNR,421
--rt_tgsigqueueinfo,335,297,536,363,240,332,291,295,317,317,322,322,240,330,330,335
--s390_guarded_storage,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,378,378,PNR
--s390_pci_mmio_read,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,353,353,PNR
--s390_pci_mmio_write,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,352,352,PNR
--s390_runtime_instr,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,342,342,PNR
--s390_sthyi,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,380,380,PNR
--sched_getaffinity,242,204,204,242,123,240,196,196,212,212,223,223,123,240,240,242
--sched_getattr,352,315,315,381,275,350,310,314,335,335,356,356,275,346,346,369
--sched_getparam,155,143,143,155,121,159,140,140,155,155,155,155,121,155,155,155
--sched_get_priority_max,159,146,146,159,125,163,143,143,159,159,159,159,125,159,159,159
--sched_get_priority_min,160,147,147,160,126,164,144,144,160,160,160,160,126,160,160,160
--sched_getscheduler,157,145,145,157,120,161,142,142,157,157,157,157,120,157,157,157
--sched_rr_get_interval,161,148,148,161,127,165,145,145,161,161,161,161,127,161,161,161
--sched_rr_get_interval_time64,423,PNR,PNR,423,PNR,423,PNR,423,423,PNR,423,PNR,PNR,423,PNR,423
--sched_setaffinity,241,203,203,241,122,239,195,195,211,211,222,222,122,239,239,241
--sched_setattr,351,314,314,380,274,349,309,313,334,334,355,355,274,345,345,370
--sched_setparam,154,142,142,154,118,158,139,139,154,154,154,154,118,154,154,154
--sched_setscheduler,156,144,144,156,119,160,141,141,156,156,156,156,119,156,156,156
--sched_yield,158,24,24,158,124,162,23,23,158,158,158,158,124,158,158,158
--seccomp,354,317,317,383,277,352,312,316,338,338,358,358,277,348,348,372
--security,PNR,185,185,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--select,82,23,23,PNR,PNR,PNR,PNR,PNR,PNR,PNR,82,82,PNR,PNR,142,PNR
--semctl,394,66,66,300,191,394,64,64,187,187,394,394,191,394,394,394
--semget,393,64,64,299,190,393,62,62,186,186,393,393,190,393,393,393
--semop,PNR,65,65,298,193,PNR,63,63,185,185,PNR,PNR,193,PNR,PNR,PNR
--semtimedop,PNR,220,220,312,192,PNR,214,215,228,228,PNR,392,192,PNR,392,PNR
--semtimedop_time64,420,PNR,PNR,420,PNR,420,PNR,420,420,PNR,420,PNR,PNR,420,PNR,420
--send,PNR,PNR,PNR,289,PNR,178,PNR,PNR,58,58,334,334,PNR,PNR,PNR,348
--sendfile,187,40,40,187,71,207,39,39,122,122,186,186,71,187,187,187
--sendfile64,239,PNR,PNR,239,PNR,237,PNR,219,209,209,226,PNR,PNR,223,PNR,239
--sendmmsg,345,307,538,374,269,343,302,307,329,329,349,349,269,358,358,363
--sendmsg,370,46,518,296,211,179,45,45,183,183,341,341,211,370,370,355
--sendto,369,44,44,290,206,180,43,43,82,82,335,335,206,369,369,349
--setdomainname,121,171,171,121,162,121,166,166,121,121,121,121,162,121,121,121
--setfsgid,139,123,123,139,152,139,121,121,139,139,139,139,152,139,216,139
--setfsgid32,216,PNR,PNR,216,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,216,PNR,216
--setfsuid,138,122,122,138,151,138,120,120,138,138,138,138,151,138,215,138
--setfsuid32,215,PNR,PNR,215,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,215,PNR,215
--setgid,46,106,106,46,144,46,104,104,46,46,46,46,144,46,214,46
--setgid32,214,PNR,PNR,214,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,214,PNR,214
--setgroups,81,116,116,81,159,81,114,114,81,81,81,81,159,81,206,81
--setgroups32,206,PNR,PNR,206,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,206,PNR,206
--sethostname,74,170,170,74,161,74,165,165,74,74,74,74,161,74,74,74
--setitimer,104,38,38,104,103,104,36,36,104,104,104,104,103,104,104,104
--set_mempolicy,276,238,238,321,237,270,229,233,262,262,261,261,237,270,270,276
--setns,346,308,308,375,268,344,303,308,328,328,350,350,268,339,339,364
--setpgid,57,109,109,57,154,57,107,107,57,57,57,57,154,57,57,57
--setpriority,97,141,141,97,140,97,138,138,97,97,97,97,140,97,97,97
--setregid,71,114,114,71,143,71,112,112,71,71,71,71,143,71,204,71
--setregid32,204,PNR,PNR,204,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,204,PNR,204
--setresgid,170,119,119,170,149,190,117,117,170,170,169,169,149,170,210,170
--setresgid32,210,PNR,PNR,210,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,210,PNR,210
--setresuid,164,117,117,164,147,185,115,115,164,164,164,164,147,164,208,164
--setresuid32,208,PNR,PNR,208,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,208,PNR,208
--setreuid,70,113,113,70,145,70,111,111,70,70,70,70,145,70,203,70
--setreuid32,203,PNR,PNR,203,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,203,PNR,203
--setrlimit,75,160,160,75,164,75,155,155,75,75,75,75,164,75,75,75
--set_robust_list,311,273,530,338,99,309,268,272,289,289,300,300,99,304,304,311
--setsid,66,112,112,66,157,66,110,110,66,66,66,66,157,66,66,66
--setsockopt,366,54,541,294,208,181,53,53,181,181,339,339,208,366,366,353
--set_thread_area,243,205,PNR,PNR,PNR,283,242,246,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--set_tid_address,258,218,218,256,96,252,212,213,237,237,232,232,96,252,252,258
--settimeofday,79,164,164,79,170,79,159,159,79,79,79,79,170,79,79,79
--set_tls,PNR,PNR,PNR,983045,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--setuid,23,105,105,23,146,23,103,103,23,23,23,23,146,23,213,23
--setuid32,213,PNR,PNR,213,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,213,PNR,213
--setxattr,226,188,188,226,5,224,180,180,238,238,209,209,5,224,224,226
--sgetmask,68,PNR,PNR,PNR,PNR,68,PNR,PNR,68,68,68,68,PNR,PNR,PNR,68
--shmat,397,30,30,305,196,397,29,29,192,192,397,397,196,397,397,397
--shmctl,396,31,31,308,195,396,30,30,195,195,396,396,195,396,396,396
--shmdt,398,67,67,306,197,398,65,65,193,193,398,398,197,398,398,398
--shmget,395,29,29,307,194,395,28,28,194,194,395,395,194,395,395,395
--shutdown,373,48,48,293,210,182,47,47,117,117,338,338,210,373,373,352
--sigaction,67,PNR,PNR,67,PNR,67,PNR,PNR,PNR,PNR,67,67,PNR,67,67,67
--sigaltstack,186,131,525,186,132,206,129,129,166,166,185,185,132,186,186,186
--signal,48,PNR,PNR,PNR,PNR,48,PNR,PNR,48,48,48,48,PNR,48,48,48
--signalfd,321,282,282,349,PNR,317,276,280,302,302,305,305,PNR,316,316,321
--signalfd4,327,289,289,355,74,324,283,287,309,309,313,313,74,322,322,327
--sigpending,73,PNR,PNR,73,PNR,73,PNR,PNR,73,73,73,73,PNR,73,73,73
--sigprocmask,126,PNR,PNR,126,PNR,126,PNR,PNR,126,126,126,126,PNR,126,126,126
--sigreturn,119,PNR,PNR,119,PNR,119,PNR,PNR,PNR,PNR,119,119,PNR,119,119,119
--sigsuspend,72,PNR,PNR,72,PNR,72,PNR,PNR,PNR,PNR,72,72,PNR,72,72,72
--socket,359,41,41,281,198,183,40,40,17,17,326,326,198,359,359,340
--socketcall,102,PNR,PNR,PNR,PNR,102,PNR,PNR,PNR,PNR,102,102,PNR,102,102,102
--socketpair,360,53,53,288,199,184,52,52,56,56,333,333,199,360,360,347
--splice,313,275,275,340,76,304,263,267,291,291,283,283,76,306,306,313
--spu_create,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,279,279,PNR,PNR,PNR,PNR
--spu_run,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,278,278,PNR,PNR,PNR,PNR
--ssetmask,69,PNR,PNR,PNR,PNR,69,PNR,PNR,69,69,69,69,PNR,PNR,PNR,69
--stat,106,4,4,106,PNR,106,4,4,18,18,106,106,PNR,106,106,106
--stat64,195,PNR,PNR,195,PNR,213,PNR,PNR,101,101,195,PNR,PNR,195,PNR,195
--statfs,99,137,137,99,43,99,134,134,99,99,99,99,43,99,99,99
--statfs64,268,PNR,PNR,266,PNR,255,PNR,217,298,298,252,252,PNR,265,265,268
--statx,383,332,332,397,291,366,326,330,349,349,383,383,291,379,379,383
--stime,25,PNR,PNR,PNR,PNR,25,PNR,PNR,25,25,25,25,PNR,25,PNR,25
--stty,31,PNR,PNR,PNR,PNR,31,PNR,PNR,PNR,PNR,31,31,PNR,PNR,PNR,PNR
--subpage_prot,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,310,310,PNR,PNR,PNR,PNR
--swapcontext,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,249,249,PNR,PNR,PNR,PNR
--swapoff,115,168,168,115,225,115,163,163,115,115,115,115,225,115,115,115
--swapon,87,167,167,87,224,87,162,162,87,87,87,87,224,87,87,87
--switch_endian,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,363,363,PNR,PNR,PNR,PNR
--symlink,83,88,88,83,PNR,83,86,86,83,83,83,83,PNR,83,83,83
--symlinkat,304,266,266,331,36,297,256,260,284,284,295,295,36,297,297,304
--sync,36,162,162,36,81,36,157,157,36,36,36,36,81,36,36,36
--sync_file_range,314,277,277,PNR,84,305,264,268,292,292,PNR,PNR,84,307,307,314
--sync_file_range2,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,308,308,PNR,PNR,PNR,PNR
--syncfs,344,306,306,373,267,342,301,306,327,327,348,348,267,338,338,362
--syscall,PNR,PNR,PNR,PNR,PNR,0,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--_sysctl,149,156,PNR,149,PNR,153,152,152,149,149,149,149,PNR,149,149,149
--sys_debug_setcontext,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,256,256,PNR,PNR,PNR,PNR
--sysfs,135,139,139,135,PNR,135,136,136,135,135,135,135,PNR,135,135,135
--sysinfo,116,99,99,116,179,116,97,97,116,116,116,116,179,116,116,116
--syslog,103,103,103,103,116,103,101,101,103,103,103,103,116,103,103,103
--sysmips,PNR,PNR,PNR,PNR,PNR,149,199,199,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--tee,315,276,276,342,77,306,265,269,293,293,284,284,77,308,308,315
--tgkill,270,234,234,268,131,266,225,229,259,259,250,250,131,241,241,270
--time,13,201,201,PNR,PNR,13,PNR,PNR,13,13,13,13,PNR,13,PNR,13
--timer_create,259,222,526,257,107,257,216,220,250,250,240,240,107,254,254,259
--timer_delete,263,226,226,261,111,261,220,224,254,254,244,244,111,258,258,263
--timerfd,PNR,PNR,PNR,PNR,PNR,318,277,281,PNR,PNR,PNR,PNR,PNR,317,317,PNR
--timerfd_create,322,283,283,350,85,321,280,284,306,306,306,306,85,319,319,322
--timerfd_gettime,326,287,287,354,87,322,281,285,308,308,312,312,87,321,321,326
--timerfd_gettime64,410,PNR,PNR,410,PNR,410,PNR,410,410,PNR,410,PNR,PNR,410,PNR,410
--timerfd_settime,325,286,286,353,86,323,282,286,307,307,311,311,86,320,320,325
--timerfd_settime64,411,PNR,PNR,411,PNR,411,PNR,411,411,PNR,411,PNR,PNR,411,PNR,411
--timer_getoverrun,262,225,225,260,109,260,219,223,253,253,243,243,109,257,257,262
--timer_gettime,261,224,224,259,108,259,218,222,252,252,242,242,108,256,256,261
--timer_gettime64,408,PNR,PNR,408,PNR,408,PNR,408,408,PNR,408,PNR,PNR,408,PNR,408
--timer_settime,260,223,223,258,110,258,217,221,251,251,241,241,110,255,255,260
--timer_settime64,409,PNR,PNR,409,PNR,409,PNR,409,409,PNR,409,PNR,PNR,409,PNR,409
--times,43,100,100,43,153,43,98,98,43,43,43,43,153,43,43,43
--tkill,238,200,200,238,130,236,192,192,208,208,208,208,130,237,237,238
--truncate,92,76,76,92,45,92,74,74,92,92,92,92,45,92,92,92
--truncate64,193,PNR,PNR,193,PNR,211,PNR,PNR,199,199,193,PNR,PNR,193,PNR,193
--tuxcall,PNR,184,184,PNR,PNR,PNR,PNR,PNR,PNR,PNR,225,225,PNR,PNR,PNR,PNR
--ugetrlimit,191,PNR,PNR,191,PNR,PNR,PNR,PNR,PNR,PNR,190,190,PNR,191,PNR,191
--ulimit,58,PNR,PNR,PNR,PNR,58,PNR,PNR,PNR,PNR,58,58,PNR,PNR,PNR,PNR
--umask,60,95,95,60,166,60,93,93,60,60,60,60,166,60,60,60
--umount,22,PNR,PNR,PNR,PNR,22,PNR,PNR,PNR,PNR,22,22,PNR,22,22,22
--umount2,52,166,166,52,39,52,161,161,52,52,52,52,39,52,52,52
--uname,122,63,63,122,160,122,61,61,59,59,122,122,160,122,122,122
--unlink,10,87,87,10,PNR,10,85,85,10,10,10,10,PNR,10,10,10
--unlinkat,301,263,263,328,35,294,253,257,281,281,292,292,35,294,294,301
--unshare,310,272,272,337,97,303,262,266,288,288,282,282,97,303,303,310
--uselib,86,134,PNR,86,PNR,86,PNR,PNR,86,86,86,86,PNR,86,86,86
--userfaultfd,374,323,323,388,282,357,317,321,344,344,364,364,282,355,355,377
--usr26,PNR,PNR,PNR,983043,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--usr32,PNR,PNR,PNR,983044,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--ustat,62,136,136,62,PNR,62,133,133,62,62,62,62,PNR,62,62,62
--utime,30,132,132,PNR,PNR,30,130,130,30,30,30,30,PNR,30,30,30
--utimensat,320,280,280,348,88,316,275,279,301,301,304,304,88,315,315,320
--utimensat_time64,412,PNR,PNR,412,PNR,412,PNR,412,412,PNR,412,PNR,PNR,412,PNR,412
--utimes,271,235,235,269,PNR,267,226,230,336,336,251,251,PNR,313,313,271
--vfork,190,58,58,190,PNR,PNR,PNR,PNR,113,113,189,189,PNR,190,190,190
--vhangup,111,153,153,111,58,111,150,150,111,111,111,111,58,111,111,111
--vm86,166,PNR,PNR,PNR,PNR,113,PNR,PNR,PNR,PNR,113,113,PNR,PNR,PNR,PNR
--vm86old,113,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--vmsplice,316,278,532,343,75,307,266,270,294,294,285,285,75,309,309,316
--vserver,273,236,PNR,313,PNR,277,236,240,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
--wait4,114,61,61,114,260,114,59,59,114,114,114,114,260,114,114,114
--waitid,284,247,529,280,95,278,237,241,235,235,272,272,95,281,281,284
--waitpid,7,PNR,PNR,PNR,PNR,7,PNR,PNR,7,7,7,7,PNR,PNR,PNR,7
--write,4,1,1,4,64,4,1,1,4,4,4,4,64,4,4,4
--writev,146,20,516,146,66,146,19,19,146,146,146,146,66,146,146,146
-+#syscall (v5.13.0-rc5 2021-06-09),x86,x86_64,x32,arm,aarch64,mips,mips64,mips64n32,parisc,parisc64,ppc,ppc64,riscv32,riscv64,s390,s390x,sh
-+accept,PNR,43,43,285,202,168,42,42,35,35,330,330,202,202,PNR,PNR,344
-+accept4,364,288,288,366,242,334,293,297,320,320,344,344,242,242,364,364,358
-+access,33,21,21,33,PNR,33,20,20,33,33,33,33,PNR,PNR,33,33,33
-+acct,51,163,163,51,89,51,158,158,51,51,51,51,89,89,51,51,51
-+add_key,286,248,248,309,217,280,239,243,264,264,269,269,217,217,278,278,285
-+adjtimex,124,159,159,124,171,124,154,154,124,124,124,124,171,171,124,124,124
-+afs_syscall,137,183,183,PNR,PNR,137,176,176,PNR,PNR,137,137,PNR,PNR,137,137,PNR
-+alarm,27,37,37,PNR,PNR,27,37,37,27,27,27,27,PNR,PNR,27,27,27
-+arch_prctl,384,158,158,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+arm_fadvise64_64,PNR,PNR,PNR,270,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+arm_sync_file_range,PNR,PNR,PNR,341,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+bdflush,134,PNR,PNR,134,PNR,134,PNR,PNR,134,134,134,134,PNR,PNR,134,134,134
-+bind,361,49,49,282,200,169,48,48,22,22,327,327,200,200,361,361,341
-+bpf,357,321,321,386,280,355,315,319,341,341,361,361,280,280,351,351,375
-+break,17,PNR,PNR,PNR,PNR,17,PNR,PNR,PNR,PNR,17,17,PNR,PNR,PNR,PNR,PNR
-+breakpoint,PNR,PNR,PNR,983041,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+brk,45,12,12,45,214,45,12,12,45,45,45,45,214,214,45,45,45
-+cachectl,PNR,PNR,PNR,PNR,PNR,148,198,198,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+cacheflush,PNR,PNR,PNR,983042,PNR,147,197,197,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,123
-+capget,184,125,125,184,90,204,123,123,106,106,183,183,90,90,184,184,184
-+capset,185,126,126,185,91,205,124,124,107,107,184,184,91,91,185,185,185
-+chdir,12,80,80,12,49,12,78,78,12,12,12,12,49,49,12,12,12
-+chmod,15,90,90,15,PNR,15,88,88,15,15,15,15,PNR,PNR,15,15,15
-+chown,182,92,92,182,PNR,202,90,90,180,180,181,181,PNR,PNR,182,212,182
-+chown32,212,PNR,PNR,212,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,212,PNR,212
-+chroot,61,161,161,61,51,61,156,156,61,61,61,61,51,51,61,61,61
-+clock_adjtime,343,305,305,372,266,341,300,305,324,324,347,347,266,266,337,337,361
-+clock_adjtime64,405,PNR,PNR,405,PNR,405,PNR,405,405,PNR,405,PNR,PNR,PNR,405,PNR,405
-+clock_getres,266,229,229,264,114,264,223,227,257,257,247,247,114,114,261,261,266
-+clock_getres_time64,406,PNR,PNR,406,PNR,406,PNR,406,406,PNR,406,PNR,PNR,PNR,406,PNR,406
-+clock_gettime,265,228,228,263,113,263,222,226,256,256,246,246,113,113,260,260,265
-+clock_gettime64,403,PNR,PNR,403,PNR,403,PNR,403,403,PNR,403,PNR,PNR,PNR,403,PNR,403
-+clock_nanosleep,267,230,230,265,115,265,224,228,258,258,248,248,115,115,262,262,267
-+clock_nanosleep_time64,407,PNR,PNR,407,PNR,407,PNR,407,407,PNR,407,PNR,PNR,PNR,407,PNR,407
-+clock_settime,264,227,227,262,112,262,221,225,255,255,245,245,112,112,259,259,264
-+clock_settime64,404,PNR,PNR,404,PNR,404,PNR,404,404,PNR,404,PNR,PNR,PNR,404,PNR,404
-+clone,120,56,56,120,220,120,55,55,120,120,120,120,220,220,120,120,120
-+clone3,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,PNR
-+close,6,3,3,6,57,6,3,3,6,6,6,6,57,57,6,6,6
-+close_range,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436
-+connect,362,42,42,283,203,170,41,41,31,31,328,328,203,203,362,362,342
-+copy_file_range,377,326,326,391,285,360,320,324,346,346,379,379,285,285,375,375,380
-+creat,8,85,85,8,PNR,8,83,83,8,8,8,8,PNR,PNR,8,8,8
-+create_module,127,174,PNR,PNR,PNR,127,167,167,PNR,PNR,127,127,PNR,PNR,127,127,PNR
-+delete_module,129,176,176,129,106,129,169,169,129,129,129,129,106,106,129,129,129
-+dup,41,32,32,41,23,41,31,31,41,41,41,41,23,23,41,41,41
-+dup2,63,33,33,63,PNR,63,32,32,63,63,63,63,PNR,PNR,63,63,63
-+dup3,330,292,292,358,24,327,286,290,312,312,316,316,24,24,326,326,330
-+epoll_create,254,213,213,250,PNR,248,207,207,224,224,236,236,PNR,PNR,249,249,254
-+epoll_create1,329,291,291,357,20,326,285,289,311,311,315,315,20,20,327,327,329
-+epoll_ctl,255,233,233,251,21,249,208,208,225,225,237,237,21,21,250,250,255
-+epoll_ctl_old,PNR,214,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+epoll_pwait,319,281,281,346,22,313,272,276,297,297,303,303,22,22,312,312,319
-+epoll_pwait2,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441
-+epoll_wait,256,232,232,252,PNR,250,209,209,226,226,238,238,PNR,PNR,251,251,256
-+epoll_wait_old,PNR,215,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+eventfd,323,284,284,351,PNR,319,278,282,304,304,307,307,PNR,PNR,318,318,323
-+eventfd2,328,290,290,356,19,325,284,288,310,310,314,314,19,19,323,323,328
-+execve,11,59,520,11,221,11,57,57,11,11,11,11,221,221,11,11,11
-+execveat,358,322,545,387,281,356,316,320,342,342,362,362,281,281,354,354,376
-+exit,1,60,60,1,93,1,58,58,1,1,1,1,93,93,1,1,1
-+exit_group,252,231,231,248,94,246,205,205,222,222,234,234,94,94,248,248,252
-+faccessat,307,269,269,334,48,300,259,263,287,287,298,298,48,48,300,300,307
-+faccessat2,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439
-+fadvise64,250,221,221,PNR,223,254,215,216,PNR,PNR,233,233,223,223,253,253,250
-+fadvise64_64,272,PNR,PNR,PNR,PNR,PNR,PNR,PNR,236,236,254,PNR,PNR,PNR,264,PNR,272
-+fallocate,324,285,285,352,47,320,279,283,305,305,309,309,47,47,314,314,324
-+fanotify_init,338,300,300,367,262,336,295,300,322,322,323,323,262,262,332,332,337
-+fanotify_mark,339,301,301,368,263,337,296,301,323,323,324,324,263,263,333,333,338
-+fchdir,133,81,81,133,50,133,79,79,133,133,133,133,50,50,133,133,133
-+fchmod,94,91,91,94,52,94,89,89,94,94,94,94,52,52,94,94,94
-+fchmodat,306,268,268,333,53,299,258,262,286,286,297,297,53,53,299,299,306
-+fchown,95,93,93,95,55,95,91,91,95,95,95,95,55,55,95,207,95
-+fchown32,207,PNR,PNR,207,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,207,PNR,207
-+fchownat,298,260,260,325,54,291,250,254,278,278,289,289,54,54,291,291,298
-+fcntl,55,72,72,55,25,55,70,70,55,55,55,55,25,25,55,55,55
-+fcntl64,221,PNR,PNR,221,PNR,220,PNR,212,202,202,204,PNR,PNR,PNR,221,PNR,221
-+fdatasync,148,75,75,148,83,152,73,73,148,148,148,148,83,83,148,148,148
-+fgetxattr,231,193,193,231,10,229,185,185,243,243,214,214,10,10,229,229,231
-+finit_module,350,313,313,379,273,348,307,312,333,333,353,353,273,273,344,344,368
-+flistxattr,234,196,196,234,13,232,188,188,246,246,217,217,13,13,232,232,234
-+flock,143,73,73,143,32,143,71,71,143,143,143,143,32,32,143,143,143
-+fork,2,57,57,2,PNR,2,56,56,2,2,2,2,PNR,PNR,2,2,2
-+fremovexattr,237,199,199,237,16,235,191,191,249,249,220,220,16,16,235,235,237
-+fsconfig,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431
-+fsetxattr,228,190,190,228,7,226,182,182,240,240,211,211,7,7,226,226,228
-+fsmount,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432
-+fsopen,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430
-+fspick,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433
-+fstat,108,5,5,108,80,108,5,5,28,28,108,108,80,80,108,108,108
-+fstat64,197,PNR,PNR,197,PNR,215,PNR,PNR,112,112,197,PNR,PNR,PNR,197,PNR,197
-+fstatat64,300,PNR,PNR,327,PNR,293,PNR,PNR,280,280,291,PNR,PNR,PNR,293,PNR,300
-+fstatfs,100,138,138,100,44,100,135,135,100,100,100,100,44,44,100,100,100
-+fstatfs64,269,PNR,PNR,267,PNR,256,PNR,218,299,299,253,253,PNR,PNR,266,266,269
-+fsync,118,74,74,118,82,118,72,72,118,118,118,118,82,82,118,118,118
-+ftime,35,PNR,PNR,PNR,PNR,35,PNR,PNR,PNR,PNR,35,35,PNR,PNR,PNR,PNR,PNR
-+ftruncate,93,77,77,93,46,93,75,75,93,93,93,93,46,46,93,93,93
-+ftruncate64,194,PNR,PNR,194,PNR,212,PNR,PNR,200,200,194,PNR,PNR,PNR,194,PNR,194
-+futex,240,202,202,240,98,238,194,194,210,210,221,221,98,98,238,238,240
-+futex_time64,422,PNR,PNR,422,PNR,422,PNR,422,422,PNR,422,PNR,PNR,PNR,422,PNR,422
-+futimesat,299,261,261,326,PNR,292,251,255,279,279,290,290,PNR,PNR,292,292,299
-+getcpu,318,309,309,345,168,312,271,275,296,296,302,302,168,168,311,311,318
-+getcwd,183,79,79,183,17,203,77,77,110,110,182,182,17,17,183,183,183
-+getdents,141,78,78,141,PNR,141,76,76,141,141,141,141,PNR,PNR,141,141,141
-+getdents64,220,217,217,217,61,219,308,299,201,201,202,202,61,61,220,220,220
-+getegid,50,108,108,50,177,50,106,106,50,50,50,50,177,177,50,202,50
-+getegid32,202,PNR,PNR,202,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,202,PNR,202
-+geteuid,49,107,107,49,175,49,105,105,49,49,49,49,175,175,49,201,49
-+geteuid32,201,PNR,PNR,201,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,201,PNR,201
-+getgid,47,104,104,47,176,47,102,102,47,47,47,47,176,176,47,200,47
-+getgid32,200,PNR,PNR,200,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,200,PNR,200
-+getgroups,80,115,115,80,158,80,113,113,80,80,80,80,158,158,80,205,80
-+getgroups32,205,PNR,PNR,205,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,205,PNR,205
-+getitimer,105,36,36,105,102,105,35,35,105,105,105,105,102,102,105,105,105
-+get_kernel_syms,130,177,PNR,PNR,PNR,130,170,170,PNR,PNR,130,130,PNR,PNR,130,130,PNR
-+get_mempolicy,275,239,239,320,236,269,228,232,261,261,260,260,236,236,269,269,275
-+getpeername,368,52,52,287,205,171,51,51,53,53,332,332,205,205,368,368,346
-+getpgid,132,121,121,132,155,132,119,119,132,132,132,132,155,155,132,132,132
-+getpgrp,65,111,111,65,PNR,65,109,109,65,65,65,65,PNR,PNR,65,65,65
-+getpid,20,39,39,20,172,20,38,38,20,20,20,20,172,172,20,20,20
-+getpmsg,188,181,181,PNR,PNR,208,174,174,PNR,PNR,187,187,PNR,PNR,188,188,PNR
-+getppid,64,110,110,64,173,64,108,108,64,64,64,64,173,173,64,64,64
-+getpriority,96,140,140,96,141,96,137,137,96,96,96,96,141,141,96,96,96
-+getrandom,355,318,318,384,278,353,313,317,339,339,359,359,278,278,349,349,373
-+getresgid,171,120,120,171,150,191,118,118,171,171,170,170,150,150,171,211,171
-+getresgid32,211,PNR,PNR,211,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,211,PNR,211
-+getresuid,165,118,118,165,148,186,116,116,165,165,165,165,148,148,165,209,165
-+getresuid32,209,PNR,PNR,209,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,209,PNR,209
-+getrlimit,76,97,97,PNR,163,76,95,95,76,76,76,76,163,163,76,191,76
-+get_robust_list,312,274,531,339,100,310,269,273,290,290,299,299,100,100,305,305,312
-+getrusage,77,98,98,77,165,77,96,96,77,77,77,77,165,165,77,77,77
-+getsid,147,124,124,147,156,151,122,122,147,147,147,147,156,156,147,147,147
-+getsockname,367,51,51,286,204,172,50,50,44,44,331,331,204,204,367,367,345
-+getsockopt,365,55,542,295,209,173,54,54,182,182,340,340,209,209,365,365,354
-+get_thread_area,244,211,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+gettid,224,186,186,224,178,222,178,178,206,206,207,207,178,178,236,236,224
-+gettimeofday,78,96,96,78,169,78,94,94,78,78,78,78,169,169,78,78,78
-+get_tls,PNR,PNR,PNR,983046,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+getuid,24,102,102,24,174,24,100,100,24,24,24,24,174,174,24,199,24
-+getuid32,199,PNR,PNR,199,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,199,PNR,199
-+getxattr,229,191,191,229,8,227,183,183,241,241,212,212,8,8,227,227,229
-+gtty,32,PNR,PNR,PNR,PNR,32,PNR,PNR,PNR,PNR,32,32,PNR,PNR,PNR,PNR,PNR
-+idle,112,PNR,PNR,PNR,PNR,112,PNR,PNR,PNR,PNR,112,112,PNR,PNR,112,112,PNR
-+init_module,128,175,175,128,105,128,168,168,128,128,128,128,105,105,128,128,128
-+inotify_add_watch,292,254,254,317,27,285,244,248,270,270,276,276,27,27,285,285,291
-+inotify_init,291,253,253,316,PNR,284,243,247,269,269,275,275,PNR,PNR,284,284,290
-+inotify_init1,332,294,294,360,26,329,288,292,314,314,318,318,26,26,324,324,332
-+inotify_rm_watch,293,255,255,318,28,286,245,249,271,271,277,277,28,28,286,286,292
-+io_cancel,249,210,210,247,3,245,204,204,219,219,231,231,3,3,247,247,249
-+ioctl,54,16,514,54,29,54,15,15,54,54,54,54,29,29,54,54,54
-+io_destroy,246,207,207,244,1,242,201,201,216,216,228,228,1,1,244,244,246
-+io_getevents,247,208,208,245,4,243,202,202,217,217,229,229,4,4,245,245,247
-+ioperm,101,173,173,PNR,PNR,101,PNR,PNR,PNR,PNR,101,101,PNR,PNR,101,PNR,PNR
-+io_pgetevents,385,333,333,399,292,368,328,332,350,350,388,388,292,292,382,382,PNR
-+io_pgetevents_time64,416,PNR,PNR,416,PNR,416,PNR,416,416,PNR,416,PNR,PNR,PNR,416,PNR,416
-+iopl,110,172,172,PNR,PNR,110,PNR,PNR,PNR,PNR,110,110,PNR,PNR,PNR,PNR,PNR
-+ioprio_get,290,252,252,315,31,315,274,278,268,268,274,274,31,31,283,283,289
-+ioprio_set,289,251,251,314,30,314,273,277,267,267,273,273,30,30,282,282,288
-+io_setup,245,206,543,243,0,241,200,200,215,215,227,227,0,0,243,243,245
-+io_submit,248,209,544,246,2,244,203,203,218,218,230,230,2,2,246,246,248
-+io_uring_enter,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426
-+io_uring_register,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427
-+io_uring_setup,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425
-+ipc,117,PNR,PNR,PNR,PNR,117,PNR,PNR,PNR,PNR,117,117,PNR,PNR,117,117,117
-+kcmp,349,312,312,378,272,347,306,311,332,332,354,354,272,272,343,343,367
-+kexec_file_load,PNR,320,320,401,294,PNR,PNR,PNR,355,355,382,382,294,294,381,381,PNR
-+kexec_load,283,246,528,347,104,311,270,274,300,300,268,268,104,104,277,277,283
-+keyctl,288,250,250,311,219,282,241,245,266,266,271,271,219,219,280,280,287
-+kill,37,62,62,37,129,37,60,60,37,37,37,37,129,129,37,37,37
-+landlock_add_rule,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445
-+landlock_create_ruleset,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444
-+landlock_restrict_self,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446
-+lchown,16,94,94,16,PNR,16,92,92,16,16,16,16,PNR,PNR,16,198,16
-+lchown32,198,PNR,PNR,198,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,198,PNR,198
-+lgetxattr,230,192,192,230,9,228,184,184,242,242,213,213,9,9,228,228,230
-+link,9,86,86,9,PNR,9,84,84,9,9,9,9,PNR,PNR,9,9,9
-+linkat,303,265,265,330,37,296,255,259,283,283,294,294,37,37,296,296,303
-+listen,363,50,50,284,201,174,49,49,32,32,329,329,201,201,363,363,343
-+listxattr,232,194,194,232,11,230,186,186,244,244,215,215,11,11,230,230,232
-+llistxattr,233,195,195,233,12,231,187,187,245,245,216,216,12,12,231,231,233
-+_llseek,140,PNR,PNR,140,PNR,140,PNR,PNR,140,140,140,140,PNR,PNR,140,PNR,140
-+lock,53,PNR,PNR,PNR,PNR,53,PNR,PNR,PNR,PNR,53,53,PNR,PNR,PNR,PNR,PNR
-+lookup_dcookie,253,212,212,249,18,247,206,206,223,223,235,235,18,18,110,110,253
-+lremovexattr,236,198,198,236,15,234,190,190,248,248,219,219,15,15,234,234,236
-+lseek,19,8,8,19,62,19,8,8,19,19,19,19,62,62,19,19,19
-+lsetxattr,227,189,189,227,6,225,181,181,239,239,210,210,6,6,225,225,227
-+lstat,107,6,6,107,PNR,107,6,6,84,84,107,107,PNR,PNR,107,107,107
-+lstat64,196,PNR,PNR,196,PNR,214,PNR,PNR,198,198,196,PNR,PNR,PNR,196,PNR,196
-+madvise,219,28,28,220,233,218,27,27,119,119,205,205,233,233,219,219,219
-+mbind,274,237,237,319,235,268,227,231,260,260,259,259,235,235,268,268,274
-+membarrier,375,324,324,389,283,358,318,322,343,343,365,365,283,283,356,356,378
-+memfd_create,356,319,319,385,279,354,314,318,340,340,360,360,279,279,350,350,374
-+migrate_pages,294,256,256,400,238,287,246,250,272,272,258,258,238,238,287,287,294
-+mincore,218,27,27,219,232,217,26,26,72,72,206,206,232,232,218,218,218
-+mkdir,39,83,83,39,PNR,39,81,81,39,39,39,39,PNR,PNR,39,39,39
-+mkdirat,296,258,258,323,34,289,248,252,276,276,287,287,34,34,289,289,296
-+mknod,14,133,133,14,PNR,14,131,131,14,14,14,14,PNR,PNR,14,14,14
-+mknodat,297,259,259,324,33,290,249,253,277,277,288,288,33,33,290,290,297
-+mlock,150,149,149,150,228,154,146,146,150,150,150,150,228,228,150,150,150
-+mlock2,376,325,325,390,284,359,319,323,345,345,378,378,284,284,374,374,379
-+mlockall,152,151,151,152,230,156,148,148,152,152,152,152,230,230,152,152,152
-+mmap,90,9,9,PNR,222,90,9,9,90,90,90,90,222,222,90,90,90
-+mmap2,192,PNR,PNR,192,PNR,210,PNR,PNR,89,89,192,PNR,PNR,PNR,192,PNR,192
-+modify_ldt,123,154,154,PNR,PNR,123,PNR,PNR,PNR,PNR,123,123,PNR,PNR,PNR,PNR,PNR
-+mount,21,165,165,21,40,21,160,160,21,21,21,21,40,40,21,21,21
-+mount_setattr,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442
-+move_mount,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429
-+move_pages,317,279,533,344,239,308,267,271,295,295,301,301,239,239,310,310,317
-+mprotect,125,10,10,125,226,125,10,10,125,125,125,125,226,226,125,125,125
-+mpx,56,PNR,PNR,PNR,PNR,56,PNR,PNR,PNR,PNR,56,56,PNR,PNR,PNR,PNR,PNR
-+mq_getsetattr,282,245,245,279,185,276,235,239,234,234,267,267,185,185,276,276,282
-+mq_notify,281,244,527,278,184,275,234,238,233,233,266,266,184,184,275,275,281
-+mq_open,277,240,240,274,180,271,230,234,229,229,262,262,180,180,271,271,277
-+mq_timedreceive,280,243,243,277,183,274,233,237,232,232,265,265,183,183,274,274,280
-+mq_timedreceive_time64,419,PNR,PNR,419,PNR,419,PNR,419,419,PNR,419,PNR,PNR,PNR,419,PNR,419
-+mq_timedsend,279,242,242,276,182,273,232,236,231,231,264,264,182,182,273,273,279
-+mq_timedsend_time64,418,PNR,PNR,418,PNR,418,PNR,418,418,PNR,418,PNR,PNR,PNR,418,PNR,418
-+mq_unlink,278,241,241,275,181,272,231,235,230,230,263,263,181,181,272,272,278
-+mremap,163,25,25,163,216,167,24,24,163,163,163,163,216,216,163,163,163
-+msgctl,402,71,71,304,187,402,69,69,191,191,402,402,187,187,402,402,402
-+msgget,399,68,68,303,186,399,66,66,190,190,399,399,186,186,399,399,399
-+msgrcv,401,70,70,302,188,401,68,68,189,189,401,401,188,188,401,401,401
-+msgsnd,400,69,69,301,189,400,67,67,188,188,400,400,189,189,400,400,400
-+msync,144,26,26,144,227,144,25,25,144,144,144,144,227,227,144,144,144
-+multiplexer,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,201,201,PNR,PNR,PNR,PNR,PNR
-+munlock,151,150,150,151,229,155,147,147,151,151,151,151,229,229,151,151,151
-+munlockall,153,152,152,153,231,157,149,149,153,153,153,153,231,231,153,153,153
-+munmap,91,11,11,91,215,91,11,11,91,91,91,91,215,215,91,91,91
-+name_to_handle_at,341,303,303,370,264,339,298,303,325,325,345,345,264,264,335,335,359
-+nanosleep,162,35,35,162,101,166,34,34,162,162,162,162,101,101,162,162,162
-+newfstatat,PNR,262,262,PNR,79,PNR,252,256,PNR,PNR,PNR,291,79,79,PNR,293,PNR
-+_newselect,142,PNR,PNR,142,PNR,142,22,22,142,142,142,142,PNR,PNR,142,PNR,142
-+nfsservctl,169,180,PNR,169,42,189,173,173,PNR,PNR,168,168,42,42,169,169,169
-+nice,34,PNR,PNR,34,PNR,34,PNR,PNR,34,34,34,34,PNR,PNR,34,34,34
-+oldfstat,28,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,28,28,PNR,PNR,PNR,PNR,28
-+oldlstat,84,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,84,84,PNR,PNR,PNR,PNR,84
-+oldolduname,59,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,59,59,PNR,PNR,PNR,PNR,PNR
-+oldstat,18,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,18,18,PNR,PNR,PNR,PNR,18
-+olduname,109,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,109,109,PNR,PNR,PNR,PNR,109
-+open,5,2,2,5,PNR,5,2,2,5,5,5,5,PNR,PNR,5,5,5
-+openat,295,257,257,322,56,288,247,251,275,275,286,286,56,56,288,288,295
-+openat2,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437
-+open_by_handle_at,342,304,304,371,265,340,299,304,326,326,346,346,265,265,336,336,360
-+open_tree,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428
-+pause,29,34,34,29,PNR,29,33,33,29,29,29,29,PNR,PNR,29,29,29
-+pciconfig_iobase,PNR,PNR,PNR,271,PNR,PNR,PNR,PNR,PNR,PNR,200,200,PNR,PNR,PNR,PNR,PNR
-+pciconfig_read,PNR,PNR,PNR,272,PNR,PNR,PNR,PNR,PNR,PNR,198,198,PNR,PNR,PNR,PNR,PNR
-+pciconfig_write,PNR,PNR,PNR,273,PNR,PNR,PNR,PNR,PNR,PNR,199,199,PNR,PNR,PNR,PNR,PNR
-+perf_event_open,336,298,298,364,241,333,292,296,318,318,319,319,241,241,331,331,336
-+personality,136,135,135,136,92,136,132,132,136,136,136,136,92,92,136,136,136
-+pidfd_getfd,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438
-+pidfd_open,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434
-+pidfd_send_signal,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424
-+pipe,42,22,22,42,PNR,42,21,21,42,42,42,42,PNR,PNR,42,42,42
-+pipe2,331,293,293,359,59,328,287,291,313,313,317,317,59,59,325,325,331
-+pivot_root,217,155,155,218,41,216,151,151,67,67,203,203,41,41,217,217,217
-+pkey_alloc,381,330,330,395,289,364,324,328,352,352,384,384,289,289,385,385,385
-+pkey_free,382,331,331,396,290,365,325,329,353,353,385,385,290,290,386,386,386
-+pkey_mprotect,380,329,329,394,288,363,323,327,351,351,386,386,288,288,384,384,384
-+poll,168,7,7,168,PNR,188,7,7,168,168,167,167,PNR,PNR,168,168,168
-+ppoll,309,271,271,336,73,302,261,265,274,274,281,281,73,73,302,302,309
-+ppoll_time64,414,PNR,PNR,414,PNR,414,PNR,414,414,PNR,414,PNR,PNR,PNR,414,PNR,414
-+prctl,172,157,157,172,167,192,153,153,172,172,171,171,167,167,172,172,172
-+pread64,180,17,17,180,67,200,16,16,108,108,179,179,67,67,180,180,180
-+preadv,333,295,534,361,69,330,289,293,315,315,320,320,69,69,328,328,333
-+preadv2,378,327,546,392,286,361,321,325,347,347,380,380,286,286,376,376,381
-+prlimit64,340,302,302,369,261,338,297,302,321,321,325,325,261,261,334,334,339
-+process_madvise,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440
-+process_vm_readv,347,310,539,376,270,345,304,309,330,330,351,351,270,270,340,340,365
-+process_vm_writev,348,311,540,377,271,346,305,310,331,331,352,352,271,271,341,341,366
-+prof,44,PNR,PNR,PNR,PNR,44,PNR,PNR,PNR,PNR,44,44,PNR,PNR,PNR,PNR,PNR
-+profil,98,PNR,PNR,PNR,PNR,98,PNR,PNR,PNR,PNR,98,98,PNR,PNR,PNR,PNR,PNR
-+pselect6,308,270,270,335,72,301,260,264,273,273,280,280,72,72,301,301,308
-+pselect6_time64,413,PNR,PNR,413,PNR,413,PNR,413,413,PNR,413,PNR,PNR,PNR,413,PNR,413
-+ptrace,26,101,521,26,117,26,99,99,26,26,26,26,117,117,26,26,26
-+putpmsg,189,182,182,PNR,PNR,209,175,175,PNR,PNR,188,188,PNR,PNR,189,189,PNR
-+pwrite64,181,18,18,181,68,201,17,17,109,109,180,180,68,68,181,181,181
-+pwritev,334,296,535,362,70,331,290,294,316,316,321,321,70,70,329,329,334
-+pwritev2,379,328,547,393,287,362,322,326,348,348,381,381,287,287,377,377,382
-+query_module,167,178,PNR,PNR,PNR,187,171,171,PNR,PNR,166,166,PNR,PNR,167,167,PNR
-+quotactl,131,179,179,131,60,131,172,172,131,131,131,131,60,60,131,131,131
-+quotactl_path,PNR,PNR,PNR,PNR,443,PNR,PNR,PNR,PNR,PNR,PNR,PNR,443,443,PNR,PNR,PNR
-+read,3,0,0,3,63,3,0,0,3,3,3,3,63,63,3,3,3
-+readahead,225,187,187,225,213,223,179,179,207,207,191,191,213,213,222,222,225
-+readdir,89,PNR,PNR,PNR,PNR,89,PNR,PNR,PNR,PNR,89,89,PNR,PNR,89,89,89
-+readlink,85,89,89,85,PNR,85,87,87,85,85,85,85,PNR,PNR,85,85,85
-+readlinkat,305,267,267,332,78,298,257,261,285,285,296,296,78,78,298,298,305
-+readv,145,19,515,145,65,145,18,18,145,145,145,145,65,65,145,145,145
-+reboot,88,169,169,88,142,88,164,164,88,88,88,88,142,142,88,88,88
-+recv,PNR,PNR,PNR,291,PNR,175,PNR,PNR,98,98,336,336,PNR,PNR,PNR,PNR,350
-+recvfrom,371,45,517,292,207,176,44,44,123,123,337,337,207,207,371,371,351
-+recvmmsg,337,299,537,365,243,335,294,298,319,319,343,343,243,243,357,357,357
-+recvmmsg_time64,417,PNR,PNR,417,PNR,417,PNR,417,417,PNR,417,PNR,PNR,PNR,417,PNR,417
-+recvmsg,372,47,519,297,212,177,46,46,184,184,342,342,212,212,372,372,356
-+remap_file_pages,257,216,216,253,234,251,210,210,227,227,239,239,234,234,267,267,257
-+removexattr,235,197,197,235,14,233,189,189,247,247,218,218,14,14,233,233,235
-+rename,38,82,82,38,PNR,38,80,80,38,38,38,38,PNR,PNR,38,38,38
-+renameat,302,264,264,329,38,295,254,258,282,282,293,293,PNR,PNR,295,295,302
-+renameat2,353,316,316,382,276,351,311,315,337,337,357,357,276,276,347,347,371
-+request_key,287,249,249,310,218,281,240,244,265,265,270,270,218,218,279,279,286
-+restart_syscall,0,219,219,0,128,253,213,214,0,0,0,0,128,128,7,7,0
-+riscv_flush_icache,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,259,259,PNR,PNR,PNR
-+rmdir,40,84,84,40,PNR,40,82,82,40,40,40,40,PNR,PNR,40,40,40
-+rseq,386,334,334,398,293,367,327,331,354,354,387,387,293,293,383,383,387
-+rtas,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,255,255,PNR,PNR,PNR,PNR,PNR
-+rt_sigaction,174,13,512,174,134,194,13,13,174,174,173,173,134,134,174,174,174
-+rt_sigpending,176,127,522,176,136,196,125,125,176,176,175,175,136,136,176,176,176
-+rt_sigprocmask,175,14,14,175,135,195,14,14,175,175,174,174,135,135,175,175,175
-+rt_sigqueueinfo,178,129,524,178,138,198,127,127,178,178,177,177,138,138,178,178,178
-+rt_sigreturn,173,15,513,173,139,193,211,211,173,173,172,172,139,139,173,173,173
-+rt_sigsuspend,179,130,130,179,133,199,128,128,179,179,178,178,133,133,179,179,179
-+rt_sigtimedwait,177,128,523,177,137,197,126,126,177,177,176,176,137,137,177,177,177
-+rt_sigtimedwait_time64,421,PNR,PNR,421,PNR,421,PNR,421,421,PNR,421,PNR,PNR,PNR,421,PNR,421
-+rt_tgsigqueueinfo,335,297,536,363,240,332,291,295,317,317,322,322,240,240,330,330,335
-+s390_guarded_storage,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,378,378,PNR
-+s390_pci_mmio_read,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,353,353,PNR
-+s390_pci_mmio_write,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,352,352,PNR
-+s390_runtime_instr,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,342,342,PNR
-+s390_sthyi,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,380,380,PNR
-+sched_getaffinity,242,204,204,242,123,240,196,196,212,212,223,223,123,123,240,240,242
-+sched_getattr,352,315,315,381,275,350,310,314,335,335,356,356,275,275,346,346,369
-+sched_getparam,155,143,143,155,121,159,140,140,155,155,155,155,121,121,155,155,155
-+sched_get_priority_max,159,146,146,159,125,163,143,143,159,159,159,159,125,125,159,159,159
-+sched_get_priority_min,160,147,147,160,126,164,144,144,160,160,160,160,126,126,160,160,160
-+sched_getscheduler,157,145,145,157,120,161,142,142,157,157,157,157,120,120,157,157,157
-+sched_rr_get_interval,161,148,148,161,127,165,145,145,161,161,161,161,127,127,161,161,161
-+sched_rr_get_interval_time64,423,PNR,PNR,423,PNR,423,PNR,423,423,PNR,423,PNR,PNR,PNR,423,PNR,423
-+sched_setaffinity,241,203,203,241,122,239,195,195,211,211,222,222,122,122,239,239,241
-+sched_setattr,351,314,314,380,274,349,309,313,334,334,355,355,274,274,345,345,370
-+sched_setparam,154,142,142,154,118,158,139,139,154,154,154,154,118,118,154,154,154
-+sched_setscheduler,156,144,144,156,119,160,141,141,156,156,156,156,119,119,156,156,156
-+sched_yield,158,24,24,158,124,162,23,23,158,158,158,158,124,124,158,158,158
-+seccomp,354,317,317,383,277,352,312,316,338,338,358,358,277,277,348,348,372
-+security,PNR,185,185,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+select,82,23,23,PNR,PNR,PNR,PNR,PNR,PNR,PNR,82,82,PNR,PNR,PNR,142,PNR
-+semctl,394,66,66,300,191,394,64,64,187,187,394,394,191,191,394,394,394
-+semget,393,64,64,299,190,393,62,62,186,186,393,393,190,190,393,393,393
-+semop,PNR,65,65,298,193,PNR,63,63,185,185,PNR,PNR,193,193,PNR,PNR,PNR
-+semtimedop,PNR,220,220,312,192,PNR,214,215,228,228,PNR,392,192,192,PNR,392,PNR
-+semtimedop_time64,420,PNR,PNR,420,PNR,420,PNR,420,420,PNR,420,PNR,PNR,PNR,420,PNR,420
-+send,PNR,PNR,PNR,289,PNR,178,PNR,PNR,58,58,334,334,PNR,PNR,PNR,PNR,348
-+sendfile,187,40,40,187,71,207,39,39,122,122,186,186,71,71,187,187,187
-+sendfile64,239,PNR,PNR,239,PNR,237,PNR,219,209,209,226,PNR,PNR,PNR,223,PNR,239
-+sendmmsg,345,307,538,374,269,343,302,307,329,329,349,349,269,269,358,358,363
-+sendmsg,370,46,518,296,211,179,45,45,183,183,341,341,211,211,370,370,355
-+sendto,369,44,44,290,206,180,43,43,82,82,335,335,206,206,369,369,349
-+setdomainname,121,171,171,121,162,121,166,166,121,121,121,121,162,162,121,121,121
-+setfsgid,139,123,123,139,152,139,121,121,139,139,139,139,152,152,139,216,139
-+setfsgid32,216,PNR,PNR,216,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,216,PNR,216
-+setfsuid,138,122,122,138,151,138,120,120,138,138,138,138,151,151,138,215,138
-+setfsuid32,215,PNR,PNR,215,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,215,PNR,215
-+setgid,46,106,106,46,144,46,104,104,46,46,46,46,144,144,46,214,46
-+setgid32,214,PNR,PNR,214,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,214,PNR,214
-+setgroups,81,116,116,81,159,81,114,114,81,81,81,81,159,159,81,206,81
-+setgroups32,206,PNR,PNR,206,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,206,PNR,206
-+sethostname,74,170,170,74,161,74,165,165,74,74,74,74,161,161,74,74,74
-+setitimer,104,38,38,104,103,104,36,36,104,104,104,104,103,103,104,104,104
-+set_mempolicy,276,238,238,321,237,270,229,233,262,262,261,261,237,237,270,270,276
-+setns,346,308,308,375,268,344,303,308,328,328,350,350,268,268,339,339,364
-+setpgid,57,109,109,57,154,57,107,107,57,57,57,57,154,154,57,57,57
-+setpriority,97,141,141,97,140,97,138,138,97,97,97,97,140,140,97,97,97
-+setregid,71,114,114,71,143,71,112,112,71,71,71,71,143,143,71,204,71
-+setregid32,204,PNR,PNR,204,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,204,PNR,204
-+setresgid,170,119,119,170,149,190,117,117,170,170,169,169,149,149,170,210,170
-+setresgid32,210,PNR,PNR,210,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,210,PNR,210
-+setresuid,164,117,117,164,147,185,115,115,164,164,164,164,147,147,164,208,164
-+setresuid32,208,PNR,PNR,208,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,208,PNR,208
-+setreuid,70,113,113,70,145,70,111,111,70,70,70,70,145,145,70,203,70
-+setreuid32,203,PNR,PNR,203,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,203,PNR,203
-+setrlimit,75,160,160,75,164,75,155,155,75,75,75,75,164,164,75,75,75
-+set_robust_list,311,273,530,338,99,309,268,272,289,289,300,300,99,99,304,304,311
-+setsid,66,112,112,66,157,66,110,110,66,66,66,66,157,157,66,66,66
-+setsockopt,366,54,541,294,208,181,53,53,181,181,339,339,208,208,366,366,353
-+set_thread_area,243,205,PNR,PNR,PNR,283,242,246,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+set_tid_address,258,218,218,256,96,252,212,213,237,237,232,232,96,96,252,252,258
-+settimeofday,79,164,164,79,170,79,159,159,79,79,79,79,170,170,79,79,79
-+set_tls,PNR,PNR,PNR,983045,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+setuid,23,105,105,23,146,23,103,103,23,23,23,23,146,146,23,213,23
-+setuid32,213,PNR,PNR,213,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,213,PNR,213
-+setxattr,226,188,188,226,5,224,180,180,238,238,209,209,5,5,224,224,226
-+sgetmask,68,PNR,PNR,PNR,PNR,68,PNR,PNR,68,68,68,68,PNR,PNR,PNR,PNR,68
-+shmat,397,30,30,305,196,397,29,29,192,192,397,397,196,196,397,397,397
-+shmctl,396,31,31,308,195,396,30,30,195,195,396,396,195,195,396,396,396
-+shmdt,398,67,67,306,197,398,65,65,193,193,398,398,197,197,398,398,398
-+shmget,395,29,29,307,194,395,28,28,194,194,395,395,194,194,395,395,395
-+shutdown,373,48,48,293,210,182,47,47,117,117,338,338,210,210,373,373,352
-+sigaction,67,PNR,PNR,67,PNR,67,PNR,PNR,PNR,PNR,67,67,PNR,PNR,67,67,67
-+sigaltstack,186,131,525,186,132,206,129,129,166,166,185,185,132,132,186,186,186
-+signal,48,PNR,PNR,PNR,PNR,48,PNR,PNR,48,48,48,48,PNR,PNR,48,48,48
-+signalfd,321,282,282,349,PNR,317,276,280,302,302,305,305,PNR,PNR,316,316,321
-+signalfd4,327,289,289,355,74,324,283,287,309,309,313,313,74,74,322,322,327
-+sigpending,73,PNR,PNR,73,PNR,73,PNR,PNR,73,73,73,73,PNR,PNR,73,73,73
-+sigprocmask,126,PNR,PNR,126,PNR,126,PNR,PNR,126,126,126,126,PNR,PNR,126,126,126
-+sigreturn,119,PNR,PNR,119,PNR,119,PNR,PNR,PNR,PNR,119,119,PNR,PNR,119,119,119
-+sigsuspend,72,PNR,PNR,72,PNR,72,PNR,PNR,PNR,PNR,72,72,PNR,PNR,72,72,72
-+socket,359,41,41,281,198,183,40,40,17,17,326,326,198,198,359,359,340
-+socketcall,102,PNR,PNR,PNR,PNR,102,PNR,PNR,PNR,PNR,102,102,PNR,PNR,102,102,102
-+socketpair,360,53,53,288,199,184,52,52,56,56,333,333,199,199,360,360,347
-+splice,313,275,275,340,76,304,263,267,291,291,283,283,76,76,306,306,313
-+spu_create,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,279,279,PNR,PNR,PNR,PNR,PNR
-+spu_run,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,278,278,PNR,PNR,PNR,PNR,PNR
-+ssetmask,69,PNR,PNR,PNR,PNR,69,PNR,PNR,69,69,69,69,PNR,PNR,PNR,PNR,69
-+stat,106,4,4,106,PNR,106,4,4,18,18,106,106,PNR,PNR,106,106,106
-+stat64,195,PNR,PNR,195,PNR,213,PNR,PNR,101,101,195,PNR,PNR,PNR,195,PNR,195
-+statfs,99,137,137,99,43,99,134,134,99,99,99,99,43,43,99,99,99
-+statfs64,268,PNR,PNR,266,PNR,255,PNR,217,298,298,252,252,PNR,PNR,265,265,268
-+statx,383,332,332,397,291,366,326,330,349,349,383,383,291,291,379,379,383
-+stime,25,PNR,PNR,PNR,PNR,25,PNR,PNR,25,25,25,25,PNR,PNR,25,PNR,25
-+stty,31,PNR,PNR,PNR,PNR,31,PNR,PNR,PNR,PNR,31,31,PNR,PNR,PNR,PNR,PNR
-+subpage_prot,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,310,310,PNR,PNR,PNR,PNR,PNR
-+swapcontext,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,249,249,PNR,PNR,PNR,PNR,PNR
-+swapoff,115,168,168,115,225,115,163,163,115,115,115,115,225,225,115,115,115
-+swapon,87,167,167,87,224,87,162,162,87,87,87,87,224,224,87,87,87
-+switch_endian,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,363,363,PNR,PNR,PNR,PNR,PNR
-+symlink,83,88,88,83,PNR,83,86,86,83,83,83,83,PNR,PNR,83,83,83
-+symlinkat,304,266,266,331,36,297,256,260,284,284,295,295,36,36,297,297,304
-+sync,36,162,162,36,81,36,157,157,36,36,36,36,81,81,36,36,36
-+sync_file_range,314,277,277,PNR,84,305,264,268,292,292,PNR,PNR,84,84,307,307,314
-+sync_file_range2,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,308,308,PNR,PNR,PNR,PNR,PNR
-+syncfs,344,306,306,373,267,342,301,306,327,327,348,348,267,267,338,338,362
-+syscall,PNR,PNR,PNR,PNR,PNR,0,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+_sysctl,149,156,PNR,149,PNR,153,152,152,149,149,149,149,PNR,PNR,149,149,149
-+sys_debug_setcontext,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,256,256,PNR,PNR,PNR,PNR,PNR
-+sysfs,135,139,139,135,PNR,135,136,136,135,135,135,135,PNR,PNR,135,135,135
-+sysinfo,116,99,99,116,179,116,97,97,116,116,116,116,179,179,116,116,116
-+syslog,103,103,103,103,116,103,101,101,103,103,103,103,116,116,103,103,103
-+sysmips,PNR,PNR,PNR,PNR,PNR,149,199,199,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+tee,315,276,276,342,77,306,265,269,293,293,284,284,77,77,308,308,315
-+tgkill,270,234,234,268,131,266,225,229,259,259,250,250,131,131,241,241,270
-+time,13,201,201,PNR,PNR,13,PNR,PNR,13,13,13,13,PNR,PNR,13,PNR,13
-+timer_create,259,222,526,257,107,257,216,220,250,250,240,240,107,107,254,254,259
-+timer_delete,263,226,226,261,111,261,220,224,254,254,244,244,111,111,258,258,263
-+timerfd,PNR,PNR,PNR,PNR,PNR,318,277,281,PNR,PNR,PNR,PNR,PNR,PNR,317,317,PNR
-+timerfd_create,322,283,283,350,85,321,280,284,306,306,306,306,85,85,319,319,322
-+timerfd_gettime,326,287,287,354,87,322,281,285,308,308,312,312,87,87,321,321,326
-+timerfd_gettime64,410,PNR,PNR,410,PNR,410,PNR,410,410,PNR,410,PNR,PNR,PNR,410,PNR,410
-+timerfd_settime,325,286,286,353,86,323,282,286,307,307,311,311,86,86,320,320,325
-+timerfd_settime64,411,PNR,PNR,411,PNR,411,PNR,411,411,PNR,411,PNR,PNR,PNR,411,PNR,411
-+timer_getoverrun,262,225,225,260,109,260,219,223,253,253,243,243,109,109,257,257,262
-+timer_gettime,261,224,224,259,108,259,218,222,252,252,242,242,108,108,256,256,261
-+timer_gettime64,408,PNR,PNR,408,PNR,408,PNR,408,408,PNR,408,PNR,PNR,PNR,408,PNR,408
-+timer_settime,260,223,223,258,110,258,217,221,251,251,241,241,110,110,255,255,260
-+timer_settime64,409,PNR,PNR,409,PNR,409,PNR,409,409,PNR,409,PNR,PNR,PNR,409,PNR,409
-+times,43,100,100,43,153,43,98,98,43,43,43,43,153,153,43,43,43
-+tkill,238,200,200,238,130,236,192,192,208,208,208,208,130,130,237,237,238
-+truncate,92,76,76,92,45,92,74,74,92,92,92,92,45,45,92,92,92
-+truncate64,193,PNR,PNR,193,PNR,211,PNR,PNR,199,199,193,PNR,PNR,PNR,193,PNR,193
-+tuxcall,PNR,184,184,PNR,PNR,PNR,PNR,PNR,PNR,PNR,225,225,PNR,PNR,PNR,PNR,PNR
-+ugetrlimit,191,PNR,PNR,191,PNR,PNR,PNR,PNR,PNR,PNR,190,190,PNR,PNR,191,PNR,191
-+ulimit,58,PNR,PNR,PNR,PNR,58,PNR,PNR,PNR,PNR,58,58,PNR,PNR,PNR,PNR,PNR
-+umask,60,95,95,60,166,60,93,93,60,60,60,60,166,166,60,60,60
-+umount,22,PNR,PNR,PNR,PNR,22,PNR,PNR,PNR,PNR,22,22,PNR,PNR,22,22,22
-+umount2,52,166,166,52,39,52,161,161,52,52,52,52,39,39,52,52,52
-+uname,122,63,63,122,160,122,61,61,59,59,122,122,160,160,122,122,122
-+unlink,10,87,87,10,PNR,10,85,85,10,10,10,10,PNR,PNR,10,10,10
-+unlinkat,301,263,263,328,35,294,253,257,281,281,292,292,35,35,294,294,301
-+unshare,310,272,272,337,97,303,262,266,288,288,282,282,97,97,303,303,310
-+uselib,86,134,PNR,86,PNR,86,PNR,PNR,86,86,86,86,PNR,PNR,86,86,86
-+userfaultfd,374,323,323,388,282,357,317,321,344,344,364,364,282,282,355,355,377
-+usr26,PNR,PNR,PNR,983043,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+usr32,PNR,PNR,PNR,983044,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+ustat,62,136,136,62,PNR,62,133,133,62,62,62,62,PNR,PNR,62,62,62
-+utime,30,132,132,PNR,PNR,30,130,130,30,30,30,30,PNR,PNR,30,30,30
-+utimensat,320,280,280,348,88,316,275,279,301,301,304,304,88,88,315,315,320
-+utimensat_time64,412,PNR,PNR,412,PNR,412,PNR,412,412,PNR,412,PNR,PNR,PNR,412,PNR,412
-+utimes,271,235,235,269,PNR,267,226,230,336,336,251,251,PNR,PNR,313,313,271
-+vfork,190,58,58,190,PNR,PNR,PNR,PNR,113,113,189,189,PNR,PNR,190,190,190
-+vhangup,111,153,153,111,58,111,150,150,111,111,111,111,58,58,111,111,111
-+vm86,166,PNR,PNR,PNR,PNR,113,PNR,PNR,PNR,PNR,113,113,PNR,PNR,PNR,PNR,PNR
-+vm86old,113,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+vmsplice,316,278,532,343,75,307,266,270,294,294,285,285,75,75,309,309,316
-+vserver,273,236,PNR,313,PNR,277,236,240,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
-+wait4,114,61,61,114,260,114,59,59,114,114,114,114,260,260,114,114,114
-+waitid,284,247,529,280,95,278,237,241,235,235,272,272,95,95,281,281,284
-+waitpid,7,PNR,PNR,PNR,PNR,7,PNR,PNR,7,7,7,7,PNR,PNR,PNR,PNR,7
-+write,4,1,1,4,64,4,1,1,4,4,4,4,64,64,4,4,4
-+writev,146,20,516,146,66,146,19,19,146,146,146,146,66,66,146,146,146
---
-2.32.0
diff --git a/poky/meta/recipes-support/libseccomp/files/0002-man-Add-RISCV64-to-arch-list.patch b/poky/meta/recipes-support/libseccomp/files/0002-man-Add-RISCV64-to-arch-list.patch
new file mode 100644
index 0000000..511d457
--- /dev/null
+++ b/poky/meta/recipes-support/libseccomp/files/0002-man-Add-RISCV64-to-arch-list.patch
@@ -0,0 +1,28 @@
+From e016ce3949caf34ee0f8fc6d976c52eb2fb019ce Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 28 Jul 2021 11:03:24 -0700
+Subject: [PATCH 2/4] man: Add RISCV64 to arch list
+
+Upstream-Status: Submitted [https://github.com/seccomp/libseccomp/pull/327]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ doc/man/man1/scmp_sys_resolver.1 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/doc/man/man1/scmp_sys_resolver.1 b/doc/man/man1/scmp_sys_resolver.1
+index fc68d18..74d8a8a 100644
+--- a/doc/man/man1/scmp_sys_resolver.1
++++ b/doc/man/man1/scmp_sys_resolver.1
+@@ -36,7 +36,7 @@ The architecture to use for resolving the system call.  Valid
+ .I ARCH
+ values are "x86", "x86_64", "x32", "arm", "aarch64", "mips", "mipsel", "mips64",
+ "mipsel64", "mips64n32", "mipsel64n32", "parisc", "parisc64", "ppc", "ppc64",
+-"ppc64le", "riscv32", "s390", "s390x", "sheb" and "sh".
++"ppc64le", "riscv64", "riscv32", "s390", "s390x", "sheb" and "sh".
+ .TP
+ .B \-t
+ If necessary, translate the system call name to the proper system call number,
+-- 
+2.33.0
+
diff --git a/poky/meta/recipes-support/libseccomp/files/0003-syscalls-update-the-syscall-defs-for-Linux-v5.15.0-r.patch b/poky/meta/recipes-support/libseccomp/files/0003-syscalls-update-the-syscall-defs-for-Linux-v5.15.0-r.patch
new file mode 100644
index 0000000..150d9bd
--- /dev/null
+++ b/poky/meta/recipes-support/libseccomp/files/0003-syscalls-update-the-syscall-defs-for-Linux-v5.15.0-r.patch
@@ -0,0 +1,980 @@
+From 54d8136679f4a1238397f7b7a8b3e8cf4626f018 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 30 Sep 2021 21:35:15 -0700
+Subject: [PATCH 3/4] syscalls: update the syscall defs for Linux v5.15.0-rc3
+
+Include RISCV32 arch as well
+Upstream-Status: Submitted [https://github.com/seccomp/libseccomp/pull/327]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/syscalls.csv | 959 ++++++++++++++++++++++++-----------------------
+ 1 file changed, 480 insertions(+), 479 deletions(-)
+
+diff --git a/src/syscalls.csv b/src/syscalls.csv
+index 5bd0c9f..37ddb3d 100644
+--- a/src/syscalls.csv
++++ b/src/syscalls.csv
+@@ -1,479 +1,480 @@
+-#syscall (v5.14.0-rc7 2021-08-23),x86,x86_64,x32,arm,aarch64,mips,mips64,mips64n32,parisc,parisc64,ppc,ppc64,riscv64,s390,s390x,sh
+-accept,PNR,43,43,285,202,168,42,42,35,35,330,330,202,PNR,PNR,344
+-accept4,364,288,288,366,242,334,293,297,320,320,344,344,242,364,364,358
+-access,33,21,21,33,PNR,33,20,20,33,33,33,33,PNR,33,33,33
+-acct,51,163,163,51,89,51,158,158,51,51,51,51,89,51,51,51
+-add_key,286,248,248,309,217,280,239,243,264,264,269,269,217,278,278,285
+-adjtimex,124,159,159,124,171,124,154,154,124,124,124,124,171,124,124,124
+-afs_syscall,137,183,183,PNR,PNR,137,176,176,PNR,PNR,137,137,PNR,137,137,PNR
+-alarm,27,37,37,PNR,PNR,27,37,37,27,27,27,27,PNR,27,27,27
+-arch_prctl,384,158,158,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-arm_fadvise64_64,PNR,PNR,PNR,270,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-arm_sync_file_range,PNR,PNR,PNR,341,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-bdflush,134,PNR,PNR,134,PNR,134,PNR,PNR,134,134,134,134,PNR,134,134,134
+-bind,361,49,49,282,200,169,48,48,22,22,327,327,200,361,361,341
+-bpf,357,321,321,386,280,355,315,319,341,341,361,361,280,351,351,375
+-break,17,PNR,PNR,PNR,PNR,17,PNR,PNR,PNR,PNR,17,17,PNR,PNR,PNR,PNR
+-breakpoint,PNR,PNR,PNR,983041,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-brk,45,12,12,45,214,45,12,12,45,45,45,45,214,45,45,45
+-cachectl,PNR,PNR,PNR,PNR,PNR,148,198,198,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-cacheflush,PNR,PNR,PNR,983042,PNR,147,197,197,PNR,PNR,PNR,PNR,PNR,PNR,PNR,123
+-capget,184,125,125,184,90,204,123,123,106,106,183,183,90,184,184,184
+-capset,185,126,126,185,91,205,124,124,107,107,184,184,91,185,185,185
+-chdir,12,80,80,12,49,12,78,78,12,12,12,12,49,12,12,12
+-chmod,15,90,90,15,PNR,15,88,88,15,15,15,15,PNR,15,15,15
+-chown,182,92,92,182,PNR,202,90,90,180,180,181,181,PNR,182,212,182
+-chown32,212,PNR,PNR,212,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,212,PNR,212
+-chroot,61,161,161,61,51,61,156,156,61,61,61,61,51,61,61,61
+-clock_adjtime,343,305,305,372,266,341,300,305,324,324,347,347,266,337,337,361
+-clock_adjtime64,405,PNR,PNR,405,PNR,405,PNR,405,405,PNR,405,PNR,PNR,405,PNR,405
+-clock_getres,266,229,229,264,114,264,223,227,257,257,247,247,114,261,261,266
+-clock_getres_time64,406,PNR,PNR,406,PNR,406,PNR,406,406,PNR,406,PNR,PNR,406,PNR,406
+-clock_gettime,265,228,228,263,113,263,222,226,256,256,246,246,113,260,260,265
+-clock_gettime64,403,PNR,PNR,403,PNR,403,PNR,403,403,PNR,403,PNR,PNR,403,PNR,403
+-clock_nanosleep,267,230,230,265,115,265,224,228,258,258,248,248,115,262,262,267
+-clock_nanosleep_time64,407,PNR,PNR,407,PNR,407,PNR,407,407,PNR,407,PNR,PNR,407,PNR,407
+-clock_settime,264,227,227,262,112,262,221,225,255,255,245,245,112,259,259,264
+-clock_settime64,404,PNR,PNR,404,PNR,404,PNR,404,404,PNR,404,PNR,PNR,404,PNR,404
+-clone,120,56,56,120,220,120,55,55,120,120,120,120,220,120,120,120
+-clone3,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,PNR
+-close,6,3,3,6,57,6,3,3,6,6,6,6,57,6,6,6
+-close_range,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436
+-connect,362,42,42,283,203,170,41,41,31,31,328,328,203,362,362,342
+-copy_file_range,377,326,326,391,285,360,320,324,346,346,379,379,285,375,375,380
+-creat,8,85,85,8,PNR,8,83,83,8,8,8,8,PNR,8,8,8
+-create_module,127,174,PNR,PNR,PNR,127,167,167,PNR,PNR,127,127,PNR,127,127,PNR
+-delete_module,129,176,176,129,106,129,169,169,129,129,129,129,106,129,129,129
+-dup,41,32,32,41,23,41,31,31,41,41,41,41,23,41,41,41
+-dup2,63,33,33,63,PNR,63,32,32,63,63,63,63,PNR,63,63,63
+-dup3,330,292,292,358,24,327,286,290,312,312,316,316,24,326,326,330
+-epoll_create,254,213,213,250,PNR,248,207,207,224,224,236,236,PNR,249,249,254
+-epoll_create1,329,291,291,357,20,326,285,289,311,311,315,315,20,327,327,329
+-epoll_ctl,255,233,233,251,21,249,208,208,225,225,237,237,21,250,250,255
+-epoll_ctl_old,PNR,214,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-epoll_pwait,319,281,281,346,22,313,272,276,297,297,303,303,22,312,312,319
+-epoll_pwait2,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441
+-epoll_wait,256,232,232,252,PNR,250,209,209,226,226,238,238,PNR,251,251,256
+-epoll_wait_old,PNR,215,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-eventfd,323,284,284,351,PNR,319,278,282,304,304,307,307,PNR,318,318,323
+-eventfd2,328,290,290,356,19,325,284,288,310,310,314,314,19,323,323,328
+-execve,11,59,520,11,221,11,57,57,11,11,11,11,221,11,11,11
+-execveat,358,322,545,387,281,356,316,320,342,342,362,362,281,354,354,376
+-exit,1,60,60,1,93,1,58,58,1,1,1,1,93,1,1,1
+-exit_group,252,231,231,248,94,246,205,205,222,222,234,234,94,248,248,252
+-faccessat,307,269,269,334,48,300,259,263,287,287,298,298,48,300,300,307
+-faccessat2,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439
+-fadvise64,250,221,221,PNR,223,254,215,216,PNR,PNR,233,233,223,253,253,250
+-fadvise64_64,272,PNR,PNR,PNR,PNR,PNR,PNR,PNR,236,236,254,PNR,PNR,264,PNR,272
+-fallocate,324,285,285,352,47,320,279,283,305,305,309,309,47,314,314,324
+-fanotify_init,338,300,300,367,262,336,295,300,322,322,323,323,262,332,332,337
+-fanotify_mark,339,301,301,368,263,337,296,301,323,323,324,324,263,333,333,338
+-fchdir,133,81,81,133,50,133,79,79,133,133,133,133,50,133,133,133
+-fchmod,94,91,91,94,52,94,89,89,94,94,94,94,52,94,94,94
+-fchmodat,306,268,268,333,53,299,258,262,286,286,297,297,53,299,299,306
+-fchown,95,93,93,95,55,95,91,91,95,95,95,95,55,95,207,95
+-fchown32,207,PNR,PNR,207,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,207,PNR,207
+-fchownat,298,260,260,325,54,291,250,254,278,278,289,289,54,291,291,298
+-fcntl,55,72,72,55,25,55,70,70,55,55,55,55,25,55,55,55
+-fcntl64,221,PNR,PNR,221,PNR,220,PNR,212,202,202,204,PNR,PNR,221,PNR,221
+-fdatasync,148,75,75,148,83,152,73,73,148,148,148,148,83,148,148,148
+-fgetxattr,231,193,193,231,10,229,185,185,243,243,214,214,10,229,229,231
+-finit_module,350,313,313,379,273,348,307,312,333,333,353,353,273,344,344,368
+-flistxattr,234,196,196,234,13,232,188,188,246,246,217,217,13,232,232,234
+-flock,143,73,73,143,32,143,71,71,143,143,143,143,32,143,143,143
+-fork,2,57,57,2,PNR,2,56,56,2,2,2,2,PNR,2,2,2
+-fremovexattr,237,199,199,237,16,235,191,191,249,249,220,220,16,235,235,237
+-fsconfig,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431
+-fsetxattr,228,190,190,228,7,226,182,182,240,240,211,211,7,226,226,228
+-fsmount,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432
+-fsopen,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430
+-fspick,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433
+-fstat,108,5,5,108,80,108,5,5,28,28,108,108,80,108,108,108
+-fstat64,197,PNR,PNR,197,PNR,215,PNR,PNR,112,112,197,PNR,PNR,197,PNR,197
+-fstatat64,300,PNR,PNR,327,PNR,293,PNR,PNR,280,280,291,PNR,PNR,293,PNR,300
+-fstatfs,100,138,138,100,44,100,135,135,100,100,100,100,44,100,100,100
+-fstatfs64,269,PNR,PNR,267,PNR,256,PNR,218,299,299,253,253,PNR,266,266,269
+-fsync,118,74,74,118,82,118,72,72,118,118,118,118,82,118,118,118
+-ftime,35,PNR,PNR,PNR,PNR,35,PNR,PNR,PNR,PNR,35,35,PNR,PNR,PNR,PNR
+-ftruncate,93,77,77,93,46,93,75,75,93,93,93,93,46,93,93,93
+-ftruncate64,194,PNR,PNR,194,PNR,212,PNR,PNR,200,200,194,PNR,PNR,194,PNR,194
+-futex,240,202,202,240,98,238,194,194,210,210,221,221,98,238,238,240
+-futex_time64,422,PNR,PNR,422,PNR,422,PNR,422,422,PNR,422,PNR,PNR,422,PNR,422
+-futimesat,299,261,261,326,PNR,292,251,255,279,279,290,290,PNR,292,292,299
+-getcpu,318,309,309,345,168,312,271,275,296,296,302,302,168,311,311,318
+-getcwd,183,79,79,183,17,203,77,77,110,110,182,182,17,183,183,183
+-getdents,141,78,78,141,PNR,141,76,76,141,141,141,141,PNR,141,141,141
+-getdents64,220,217,217,217,61,219,308,299,201,201,202,202,61,220,220,220
+-getegid,50,108,108,50,177,50,106,106,50,50,50,50,177,50,202,50
+-getegid32,202,PNR,PNR,202,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,202,PNR,202
+-geteuid,49,107,107,49,175,49,105,105,49,49,49,49,175,49,201,49
+-geteuid32,201,PNR,PNR,201,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,201,PNR,201
+-getgid,47,104,104,47,176,47,102,102,47,47,47,47,176,47,200,47
+-getgid32,200,PNR,PNR,200,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,200,PNR,200
+-getgroups,80,115,115,80,158,80,113,113,80,80,80,80,158,80,205,80
+-getgroups32,205,PNR,PNR,205,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,205,PNR,205
+-getitimer,105,36,36,105,102,105,35,35,105,105,105,105,102,105,105,105
+-get_kernel_syms,130,177,PNR,PNR,PNR,130,170,170,PNR,PNR,130,130,PNR,130,130,PNR
+-get_mempolicy,275,239,239,320,236,269,228,232,261,261,260,260,236,269,269,275
+-getpeername,368,52,52,287,205,171,51,51,53,53,332,332,205,368,368,346
+-getpgid,132,121,121,132,155,132,119,119,132,132,132,132,155,132,132,132
+-getpgrp,65,111,111,65,PNR,65,109,109,65,65,65,65,PNR,65,65,65
+-getpid,20,39,39,20,172,20,38,38,20,20,20,20,172,20,20,20
+-getpmsg,188,181,181,PNR,PNR,208,174,174,PNR,PNR,187,187,PNR,188,188,PNR
+-getppid,64,110,110,64,173,64,108,108,64,64,64,64,173,64,64,64
+-getpriority,96,140,140,96,141,96,137,137,96,96,96,96,141,96,96,96
+-getrandom,355,318,318,384,278,353,313,317,339,339,359,359,278,349,349,373
+-getresgid,171,120,120,171,150,191,118,118,171,171,170,170,150,171,211,171
+-getresgid32,211,PNR,PNR,211,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,211,PNR,211
+-getresuid,165,118,118,165,148,186,116,116,165,165,165,165,148,165,209,165
+-getresuid32,209,PNR,PNR,209,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,209,PNR,209
+-getrlimit,76,97,97,PNR,163,76,95,95,76,76,76,76,163,76,191,76
+-get_robust_list,312,274,531,339,100,310,269,273,290,290,299,299,100,305,305,312
+-getrusage,77,98,98,77,165,77,96,96,77,77,77,77,165,77,77,77
+-getsid,147,124,124,147,156,151,122,122,147,147,147,147,156,147,147,147
+-getsockname,367,51,51,286,204,172,50,50,44,44,331,331,204,367,367,345
+-getsockopt,365,55,542,295,209,173,54,54,182,182,340,340,209,365,365,354
+-get_thread_area,244,211,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-gettid,224,186,186,224,178,222,178,178,206,206,207,207,178,236,236,224
+-gettimeofday,78,96,96,78,169,78,94,94,78,78,78,78,169,78,78,78
+-get_tls,PNR,PNR,PNR,983046,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-getuid,24,102,102,24,174,24,100,100,24,24,24,24,174,24,199,24
+-getuid32,199,PNR,PNR,199,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,199,PNR,199
+-getxattr,229,191,191,229,8,227,183,183,241,241,212,212,8,227,227,229
+-gtty,32,PNR,PNR,PNR,PNR,32,PNR,PNR,PNR,PNR,32,32,PNR,PNR,PNR,PNR
+-idle,112,PNR,PNR,PNR,PNR,112,PNR,PNR,PNR,PNR,112,112,PNR,112,112,PNR
+-init_module,128,175,175,128,105,128,168,168,128,128,128,128,105,128,128,128
+-inotify_add_watch,292,254,254,317,27,285,244,248,270,270,276,276,27,285,285,291
+-inotify_init,291,253,253,316,PNR,284,243,247,269,269,275,275,PNR,284,284,290
+-inotify_init1,332,294,294,360,26,329,288,292,314,314,318,318,26,324,324,332
+-inotify_rm_watch,293,255,255,318,28,286,245,249,271,271,277,277,28,286,286,292
+-io_cancel,249,210,210,247,3,245,204,204,219,219,231,231,3,247,247,249
+-ioctl,54,16,514,54,29,54,15,15,54,54,54,54,29,54,54,54
+-io_destroy,246,207,207,244,1,242,201,201,216,216,228,228,1,244,244,246
+-io_getevents,247,208,208,245,4,243,202,202,217,217,229,229,4,245,245,247
+-ioperm,101,173,173,PNR,PNR,101,PNR,PNR,PNR,PNR,101,101,PNR,101,PNR,PNR
+-io_pgetevents,385,333,333,399,292,368,328,332,350,350,388,388,292,382,382,PNR
+-io_pgetevents_time64,416,PNR,PNR,416,PNR,416,PNR,416,416,PNR,416,PNR,PNR,416,PNR,416
+-iopl,110,172,172,PNR,PNR,110,PNR,PNR,PNR,PNR,110,110,PNR,PNR,PNR,PNR
+-ioprio_get,290,252,252,315,31,315,274,278,268,268,274,274,31,283,283,289
+-ioprio_set,289,251,251,314,30,314,273,277,267,267,273,273,30,282,282,288
+-io_setup,245,206,543,243,0,241,200,200,215,215,227,227,0,243,243,245
+-io_submit,248,209,544,246,2,244,203,203,218,218,230,230,2,246,246,248
+-io_uring_enter,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426
+-io_uring_register,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427
+-io_uring_setup,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425
+-ipc,117,PNR,PNR,PNR,PNR,117,PNR,PNR,PNR,PNR,117,117,PNR,117,117,117
+-kcmp,349,312,312,378,272,347,306,311,332,332,354,354,272,343,343,367
+-kexec_file_load,PNR,320,320,401,294,PNR,PNR,PNR,355,355,382,382,294,381,381,PNR
+-kexec_load,283,246,528,347,104,311,270,274,300,300,268,268,104,277,277,283
+-keyctl,288,250,250,311,219,282,241,245,266,266,271,271,219,280,280,287
+-kill,37,62,62,37,129,37,60,60,37,37,37,37,129,37,37,37
+-landlock_add_rule,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445
+-landlock_create_ruleset,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444
+-landlock_restrict_self,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446
+-lchown,16,94,94,16,PNR,16,92,92,16,16,16,16,PNR,16,198,16
+-lchown32,198,PNR,PNR,198,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,198,PNR,198
+-lgetxattr,230,192,192,230,9,228,184,184,242,242,213,213,9,228,228,230
+-link,9,86,86,9,PNR,9,84,84,9,9,9,9,PNR,9,9,9
+-linkat,303,265,265,330,37,296,255,259,283,283,294,294,37,296,296,303
+-listen,363,50,50,284,201,174,49,49,32,32,329,329,201,363,363,343
+-listxattr,232,194,194,232,11,230,186,186,244,244,215,215,11,230,230,232
+-llistxattr,233,195,195,233,12,231,187,187,245,245,216,216,12,231,231,233
+-_llseek,140,PNR,PNR,140,PNR,140,PNR,PNR,140,140,140,140,PNR,140,PNR,140
+-lock,53,PNR,PNR,PNR,PNR,53,PNR,PNR,PNR,PNR,53,53,PNR,PNR,PNR,PNR
+-lookup_dcookie,253,212,212,249,18,247,206,206,223,223,235,235,18,110,110,253
+-lremovexattr,236,198,198,236,15,234,190,190,248,248,219,219,15,234,234,236
+-lseek,19,8,8,19,62,19,8,8,19,19,19,19,62,19,19,19
+-lsetxattr,227,189,189,227,6,225,181,181,239,239,210,210,6,225,225,227
+-lstat,107,6,6,107,PNR,107,6,6,84,84,107,107,PNR,107,107,107
+-lstat64,196,PNR,PNR,196,PNR,214,PNR,PNR,198,198,196,PNR,PNR,196,PNR,196
+-madvise,219,28,28,220,233,218,27,27,119,119,205,205,233,219,219,219
+-mbind,274,237,237,319,235,268,227,231,260,260,259,259,235,268,268,274
+-membarrier,375,324,324,389,283,358,318,322,343,343,365,365,283,356,356,378
+-memfd_create,356,319,319,385,279,354,314,318,340,340,360,360,279,350,350,374
+-memfd_secret,447,447,447,PNR,447,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-migrate_pages,294,256,256,400,238,287,246,250,272,272,258,258,238,287,287,294
+-mincore,218,27,27,219,232,217,26,26,72,72,206,206,232,218,218,218
+-mkdir,39,83,83,39,PNR,39,81,81,39,39,39,39,PNR,39,39,39
+-mkdirat,296,258,258,323,34,289,248,252,276,276,287,287,34,289,289,296
+-mknod,14,133,133,14,PNR,14,131,131,14,14,14,14,PNR,14,14,14
+-mknodat,297,259,259,324,33,290,249,253,277,277,288,288,33,290,290,297
+-mlock,150,149,149,150,228,154,146,146,150,150,150,150,228,150,150,150
+-mlock2,376,325,325,390,284,359,319,323,345,345,378,378,284,374,374,379
+-mlockall,152,151,151,152,230,156,148,148,152,152,152,152,230,152,152,152
+-mmap,90,9,9,PNR,222,90,9,9,90,90,90,90,222,90,90,90
+-mmap2,192,PNR,PNR,192,PNR,210,PNR,PNR,89,89,192,PNR,PNR,192,PNR,192
+-modify_ldt,123,154,154,PNR,PNR,123,PNR,PNR,PNR,PNR,123,123,PNR,PNR,PNR,PNR
+-mount,21,165,165,21,40,21,160,160,21,21,21,21,40,21,21,21
+-mount_setattr,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442
+-move_mount,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429
+-move_pages,317,279,533,344,239,308,267,271,295,295,301,301,239,310,310,317
+-mprotect,125,10,10,125,226,125,10,10,125,125,125,125,226,125,125,125
+-mpx,56,PNR,PNR,PNR,PNR,56,PNR,PNR,PNR,PNR,56,56,PNR,PNR,PNR,PNR
+-mq_getsetattr,282,245,245,279,185,276,235,239,234,234,267,267,185,276,276,282
+-mq_notify,281,244,527,278,184,275,234,238,233,233,266,266,184,275,275,281
+-mq_open,277,240,240,274,180,271,230,234,229,229,262,262,180,271,271,277
+-mq_timedreceive,280,243,243,277,183,274,233,237,232,232,265,265,183,274,274,280
+-mq_timedreceive_time64,419,PNR,PNR,419,PNR,419,PNR,419,419,PNR,419,PNR,PNR,419,PNR,419
+-mq_timedsend,279,242,242,276,182,273,232,236,231,231,264,264,182,273,273,279
+-mq_timedsend_time64,418,PNR,PNR,418,PNR,418,PNR,418,418,PNR,418,PNR,PNR,418,PNR,418
+-mq_unlink,278,241,241,275,181,272,231,235,230,230,263,263,181,272,272,278
+-mremap,163,25,25,163,216,167,24,24,163,163,163,163,216,163,163,163
+-msgctl,402,71,71,304,187,402,69,69,191,191,402,402,187,402,402,402
+-msgget,399,68,68,303,186,399,66,66,190,190,399,399,186,399,399,399
+-msgrcv,401,70,70,302,188,401,68,68,189,189,401,401,188,401,401,401
+-msgsnd,400,69,69,301,189,400,67,67,188,188,400,400,189,400,400,400
+-msync,144,26,26,144,227,144,25,25,144,144,144,144,227,144,144,144
+-multiplexer,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,201,201,PNR,PNR,PNR,PNR
+-munlock,151,150,150,151,229,155,147,147,151,151,151,151,229,151,151,151
+-munlockall,153,152,152,153,231,157,149,149,153,153,153,153,231,153,153,153
+-munmap,91,11,11,91,215,91,11,11,91,91,91,91,215,91,91,91
+-name_to_handle_at,341,303,303,370,264,339,298,303,325,325,345,345,264,335,335,359
+-nanosleep,162,35,35,162,101,166,34,34,162,162,162,162,101,162,162,162
+-newfstatat,PNR,262,262,PNR,79,PNR,252,256,PNR,PNR,PNR,291,79,PNR,293,PNR
+-_newselect,142,PNR,PNR,142,PNR,142,22,22,142,142,142,142,PNR,142,PNR,142
+-nfsservctl,169,180,PNR,169,42,189,173,173,PNR,PNR,168,168,42,169,169,169
+-nice,34,PNR,PNR,34,PNR,34,PNR,PNR,34,34,34,34,PNR,34,34,34
+-oldfstat,28,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,28,28,PNR,PNR,PNR,28
+-oldlstat,84,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,84,84,PNR,PNR,PNR,84
+-oldolduname,59,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,59,59,PNR,PNR,PNR,PNR
+-oldstat,18,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,18,18,PNR,PNR,PNR,18
+-olduname,109,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,109,109,PNR,PNR,PNR,109
+-open,5,2,2,5,PNR,5,2,2,5,5,5,5,PNR,5,5,5
+-openat,295,257,257,322,56,288,247,251,275,275,286,286,56,288,288,295
+-openat2,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437
+-open_by_handle_at,342,304,304,371,265,340,299,304,326,326,346,346,265,336,336,360
+-open_tree,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428
+-pause,29,34,34,29,PNR,29,33,33,29,29,29,29,PNR,29,29,29
+-pciconfig_iobase,PNR,PNR,PNR,271,PNR,PNR,PNR,PNR,PNR,PNR,200,200,PNR,PNR,PNR,PNR
+-pciconfig_read,PNR,PNR,PNR,272,PNR,PNR,PNR,PNR,PNR,PNR,198,198,PNR,PNR,PNR,PNR
+-pciconfig_write,PNR,PNR,PNR,273,PNR,PNR,PNR,PNR,PNR,PNR,199,199,PNR,PNR,PNR,PNR
+-perf_event_open,336,298,298,364,241,333,292,296,318,318,319,319,241,331,331,336
+-personality,136,135,135,136,92,136,132,132,136,136,136,136,92,136,136,136
+-pidfd_getfd,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438
+-pidfd_open,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434
+-pidfd_send_signal,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424
+-pipe,42,22,22,42,PNR,42,21,21,42,42,42,42,PNR,42,42,42
+-pipe2,331,293,293,359,59,328,287,291,313,313,317,317,59,325,325,331
+-pivot_root,217,155,155,218,41,216,151,151,67,67,203,203,41,217,217,217
+-pkey_alloc,381,330,330,395,289,364,324,328,352,352,384,384,289,385,385,385
+-pkey_free,382,331,331,396,290,365,325,329,353,353,385,385,290,386,386,386
+-pkey_mprotect,380,329,329,394,288,363,323,327,351,351,386,386,288,384,384,384
+-poll,168,7,7,168,PNR,188,7,7,168,168,167,167,PNR,168,168,168
+-ppoll,309,271,271,336,73,302,261,265,274,274,281,281,73,302,302,309
+-ppoll_time64,414,PNR,PNR,414,PNR,414,PNR,414,414,PNR,414,PNR,PNR,414,PNR,414
+-prctl,172,157,157,172,167,192,153,153,172,172,171,171,167,172,172,172
+-pread64,180,17,17,180,67,200,16,16,108,108,179,179,67,180,180,180
+-preadv,333,295,534,361,69,330,289,293,315,315,320,320,69,328,328,333
+-preadv2,378,327,546,392,286,361,321,325,347,347,380,380,286,376,376,381
+-prlimit64,340,302,302,369,261,338,297,302,321,321,325,325,261,334,334,339
+-process_madvise,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440
+-process_vm_readv,347,310,539,376,270,345,304,309,330,330,351,351,270,340,340,365
+-process_vm_writev,348,311,540,377,271,346,305,310,331,331,352,352,271,341,341,366
+-prof,44,PNR,PNR,PNR,PNR,44,PNR,PNR,PNR,PNR,44,44,PNR,PNR,PNR,PNR
+-profil,98,PNR,PNR,PNR,PNR,98,PNR,PNR,PNR,PNR,98,98,PNR,PNR,PNR,PNR
+-pselect6,308,270,270,335,72,301,260,264,273,273,280,280,72,301,301,308
+-pselect6_time64,413,PNR,PNR,413,PNR,413,PNR,413,413,PNR,413,PNR,PNR,413,PNR,413
+-ptrace,26,101,521,26,117,26,99,99,26,26,26,26,117,26,26,26
+-putpmsg,189,182,182,PNR,PNR,209,175,175,PNR,PNR,188,188,PNR,189,189,PNR
+-pwrite64,181,18,18,181,68,201,17,17,109,109,180,180,68,181,181,181
+-pwritev,334,296,535,362,70,331,290,294,316,316,321,321,70,329,329,334
+-pwritev2,379,328,547,393,287,362,322,326,348,348,381,381,287,377,377,382
+-query_module,167,178,PNR,PNR,PNR,187,171,171,PNR,PNR,166,166,PNR,167,167,PNR
+-quotactl,131,179,179,131,60,131,172,172,131,131,131,131,60,131,131,131
+-quotactl_fd,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443
+-read,3,0,0,3,63,3,0,0,3,3,3,3,63,3,3,3
+-readahead,225,187,187,225,213,223,179,179,207,207,191,191,213,222,222,225
+-readdir,89,PNR,PNR,PNR,PNR,89,PNR,PNR,PNR,PNR,89,89,PNR,89,89,89
+-readlink,85,89,89,85,PNR,85,87,87,85,85,85,85,PNR,85,85,85
+-readlinkat,305,267,267,332,78,298,257,261,285,285,296,296,78,298,298,305
+-readv,145,19,515,145,65,145,18,18,145,145,145,145,65,145,145,145
+-reboot,88,169,169,88,142,88,164,164,88,88,88,88,142,88,88,88
+-recv,PNR,PNR,PNR,291,PNR,175,PNR,PNR,98,98,336,336,PNR,PNR,PNR,350
+-recvfrom,371,45,517,292,207,176,44,44,123,123,337,337,207,371,371,351
+-recvmmsg,337,299,537,365,243,335,294,298,319,319,343,343,243,357,357,357
+-recvmmsg_time64,417,PNR,PNR,417,PNR,417,PNR,417,417,PNR,417,PNR,PNR,417,PNR,417
+-recvmsg,372,47,519,297,212,177,46,46,184,184,342,342,212,372,372,356
+-remap_file_pages,257,216,216,253,234,251,210,210,227,227,239,239,234,267,267,257
+-removexattr,235,197,197,235,14,233,189,189,247,247,218,218,14,233,233,235
+-rename,38,82,82,38,PNR,38,80,80,38,38,38,38,PNR,38,38,38
+-renameat,302,264,264,329,38,295,254,258,282,282,293,293,PNR,295,295,302
+-renameat2,353,316,316,382,276,351,311,315,337,337,357,357,276,347,347,371
+-request_key,287,249,249,310,218,281,240,244,265,265,270,270,218,279,279,286
+-restart_syscall,0,219,219,0,128,253,213,214,0,0,0,0,128,7,7,0
+-riscv_flush_icache,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,259,PNR,PNR,PNR
+-rmdir,40,84,84,40,PNR,40,82,82,40,40,40,40,PNR,40,40,40
+-rseq,386,334,334,398,293,367,327,331,354,354,387,387,293,383,383,387
+-rtas,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,255,255,PNR,PNR,PNR,PNR
+-rt_sigaction,174,13,512,174,134,194,13,13,174,174,173,173,134,174,174,174
+-rt_sigpending,176,127,522,176,136,196,125,125,176,176,175,175,136,176,176,176
+-rt_sigprocmask,175,14,14,175,135,195,14,14,175,175,174,174,135,175,175,175
+-rt_sigqueueinfo,178,129,524,178,138,198,127,127,178,178,177,177,138,178,178,178
+-rt_sigreturn,173,15,513,173,139,193,211,211,173,173,172,172,139,173,173,173
+-rt_sigsuspend,179,130,130,179,133,199,128,128,179,179,178,178,133,179,179,179
+-rt_sigtimedwait,177,128,523,177,137,197,126,126,177,177,176,176,137,177,177,177
+-rt_sigtimedwait_time64,421,PNR,PNR,421,PNR,421,PNR,421,421,PNR,421,PNR,PNR,421,PNR,421
+-rt_tgsigqueueinfo,335,297,536,363,240,332,291,295,317,317,322,322,240,330,330,335
+-s390_guarded_storage,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,378,378,PNR
+-s390_pci_mmio_read,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,353,353,PNR
+-s390_pci_mmio_write,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,352,352,PNR
+-s390_runtime_instr,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,342,342,PNR
+-s390_sthyi,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,380,380,PNR
+-sched_getaffinity,242,204,204,242,123,240,196,196,212,212,223,223,123,240,240,242
+-sched_getattr,352,315,315,381,275,350,310,314,335,335,356,356,275,346,346,369
+-sched_getparam,155,143,143,155,121,159,140,140,155,155,155,155,121,155,155,155
+-sched_get_priority_max,159,146,146,159,125,163,143,143,159,159,159,159,125,159,159,159
+-sched_get_priority_min,160,147,147,160,126,164,144,144,160,160,160,160,126,160,160,160
+-sched_getscheduler,157,145,145,157,120,161,142,142,157,157,157,157,120,157,157,157
+-sched_rr_get_interval,161,148,148,161,127,165,145,145,161,161,161,161,127,161,161,161
+-sched_rr_get_interval_time64,423,PNR,PNR,423,PNR,423,PNR,423,423,PNR,423,PNR,PNR,423,PNR,423
+-sched_setaffinity,241,203,203,241,122,239,195,195,211,211,222,222,122,239,239,241
+-sched_setattr,351,314,314,380,274,349,309,313,334,334,355,355,274,345,345,370
+-sched_setparam,154,142,142,154,118,158,139,139,154,154,154,154,118,154,154,154
+-sched_setscheduler,156,144,144,156,119,160,141,141,156,156,156,156,119,156,156,156
+-sched_yield,158,24,24,158,124,162,23,23,158,158,158,158,124,158,158,158
+-seccomp,354,317,317,383,277,352,312,316,338,338,358,358,277,348,348,372
+-security,PNR,185,185,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-select,82,23,23,PNR,PNR,PNR,PNR,PNR,PNR,PNR,82,82,PNR,PNR,142,PNR
+-semctl,394,66,66,300,191,394,64,64,187,187,394,394,191,394,394,394
+-semget,393,64,64,299,190,393,62,62,186,186,393,393,190,393,393,393
+-semop,PNR,65,65,298,193,PNR,63,63,185,185,PNR,PNR,193,PNR,PNR,PNR
+-semtimedop,PNR,220,220,312,192,PNR,214,215,228,228,PNR,392,192,PNR,392,PNR
+-semtimedop_time64,420,PNR,PNR,420,PNR,420,PNR,420,420,PNR,420,PNR,PNR,420,PNR,420
+-send,PNR,PNR,PNR,289,PNR,178,PNR,PNR,58,58,334,334,PNR,PNR,PNR,348
+-sendfile,187,40,40,187,71,207,39,39,122,122,186,186,71,187,187,187
+-sendfile64,239,PNR,PNR,239,PNR,237,PNR,219,209,209,226,PNR,PNR,223,PNR,239
+-sendmmsg,345,307,538,374,269,343,302,307,329,329,349,349,269,358,358,363
+-sendmsg,370,46,518,296,211,179,45,45,183,183,341,341,211,370,370,355
+-sendto,369,44,44,290,206,180,43,43,82,82,335,335,206,369,369,349
+-setdomainname,121,171,171,121,162,121,166,166,121,121,121,121,162,121,121,121
+-setfsgid,139,123,123,139,152,139,121,121,139,139,139,139,152,139,216,139
+-setfsgid32,216,PNR,PNR,216,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,216,PNR,216
+-setfsuid,138,122,122,138,151,138,120,120,138,138,138,138,151,138,215,138
+-setfsuid32,215,PNR,PNR,215,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,215,PNR,215
+-setgid,46,106,106,46,144,46,104,104,46,46,46,46,144,46,214,46
+-setgid32,214,PNR,PNR,214,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,214,PNR,214
+-setgroups,81,116,116,81,159,81,114,114,81,81,81,81,159,81,206,81
+-setgroups32,206,PNR,PNR,206,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,206,PNR,206
+-sethostname,74,170,170,74,161,74,165,165,74,74,74,74,161,74,74,74
+-setitimer,104,38,38,104,103,104,36,36,104,104,104,104,103,104,104,104
+-set_mempolicy,276,238,238,321,237,270,229,233,262,262,261,261,237,270,270,276
+-setns,346,308,308,375,268,344,303,308,328,328,350,350,268,339,339,364
+-setpgid,57,109,109,57,154,57,107,107,57,57,57,57,154,57,57,57
+-setpriority,97,141,141,97,140,97,138,138,97,97,97,97,140,97,97,97
+-setregid,71,114,114,71,143,71,112,112,71,71,71,71,143,71,204,71
+-setregid32,204,PNR,PNR,204,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,204,PNR,204
+-setresgid,170,119,119,170,149,190,117,117,170,170,169,169,149,170,210,170
+-setresgid32,210,PNR,PNR,210,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,210,PNR,210
+-setresuid,164,117,117,164,147,185,115,115,164,164,164,164,147,164,208,164
+-setresuid32,208,PNR,PNR,208,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,208,PNR,208
+-setreuid,70,113,113,70,145,70,111,111,70,70,70,70,145,70,203,70
+-setreuid32,203,PNR,PNR,203,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,203,PNR,203
+-setrlimit,75,160,160,75,164,75,155,155,75,75,75,75,164,75,75,75
+-set_robust_list,311,273,530,338,99,309,268,272,289,289,300,300,99,304,304,311
+-setsid,66,112,112,66,157,66,110,110,66,66,66,66,157,66,66,66
+-setsockopt,366,54,541,294,208,181,53,53,181,181,339,339,208,366,366,353
+-set_thread_area,243,205,PNR,PNR,PNR,283,242,246,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-set_tid_address,258,218,218,256,96,252,212,213,237,237,232,232,96,252,252,258
+-settimeofday,79,164,164,79,170,79,159,159,79,79,79,79,170,79,79,79
+-set_tls,PNR,PNR,PNR,983045,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-setuid,23,105,105,23,146,23,103,103,23,23,23,23,146,23,213,23
+-setuid32,213,PNR,PNR,213,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,213,PNR,213
+-setxattr,226,188,188,226,5,224,180,180,238,238,209,209,5,224,224,226
+-sgetmask,68,PNR,PNR,PNR,PNR,68,PNR,PNR,68,68,68,68,PNR,PNR,PNR,68
+-shmat,397,30,30,305,196,397,29,29,192,192,397,397,196,397,397,397
+-shmctl,396,31,31,308,195,396,30,30,195,195,396,396,195,396,396,396
+-shmdt,398,67,67,306,197,398,65,65,193,193,398,398,197,398,398,398
+-shmget,395,29,29,307,194,395,28,28,194,194,395,395,194,395,395,395
+-shutdown,373,48,48,293,210,182,47,47,117,117,338,338,210,373,373,352
+-sigaction,67,PNR,PNR,67,PNR,67,PNR,PNR,PNR,PNR,67,67,PNR,67,67,67
+-sigaltstack,186,131,525,186,132,206,129,129,166,166,185,185,132,186,186,186
+-signal,48,PNR,PNR,PNR,PNR,48,PNR,PNR,48,48,48,48,PNR,48,48,48
+-signalfd,321,282,282,349,PNR,317,276,280,302,302,305,305,PNR,316,316,321
+-signalfd4,327,289,289,355,74,324,283,287,309,309,313,313,74,322,322,327
+-sigpending,73,PNR,PNR,73,PNR,73,PNR,PNR,73,73,73,73,PNR,73,73,73
+-sigprocmask,126,PNR,PNR,126,PNR,126,PNR,PNR,126,126,126,126,PNR,126,126,126
+-sigreturn,119,PNR,PNR,119,PNR,119,PNR,PNR,PNR,PNR,119,119,PNR,119,119,119
+-sigsuspend,72,PNR,PNR,72,PNR,72,PNR,PNR,PNR,PNR,72,72,PNR,72,72,72
+-socket,359,41,41,281,198,183,40,40,17,17,326,326,198,359,359,340
+-socketcall,102,PNR,PNR,PNR,PNR,102,PNR,PNR,PNR,PNR,102,102,PNR,102,102,102
+-socketpair,360,53,53,288,199,184,52,52,56,56,333,333,199,360,360,347
+-splice,313,275,275,340,76,304,263,267,291,291,283,283,76,306,306,313
+-spu_create,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,279,279,PNR,PNR,PNR,PNR
+-spu_run,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,278,278,PNR,PNR,PNR,PNR
+-ssetmask,69,PNR,PNR,PNR,PNR,69,PNR,PNR,69,69,69,69,PNR,PNR,PNR,69
+-stat,106,4,4,106,PNR,106,4,4,18,18,106,106,PNR,106,106,106
+-stat64,195,PNR,PNR,195,PNR,213,PNR,PNR,101,101,195,PNR,PNR,195,PNR,195
+-statfs,99,137,137,99,43,99,134,134,99,99,99,99,43,99,99,99
+-statfs64,268,PNR,PNR,266,PNR,255,PNR,217,298,298,252,252,PNR,265,265,268
+-statx,383,332,332,397,291,366,326,330,349,349,383,383,291,379,379,383
+-stime,25,PNR,PNR,PNR,PNR,25,PNR,PNR,25,25,25,25,PNR,25,PNR,25
+-stty,31,PNR,PNR,PNR,PNR,31,PNR,PNR,PNR,PNR,31,31,PNR,PNR,PNR,PNR
+-subpage_prot,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,310,310,PNR,PNR,PNR,PNR
+-swapcontext,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,249,249,PNR,PNR,PNR,PNR
+-swapoff,115,168,168,115,225,115,163,163,115,115,115,115,225,115,115,115
+-swapon,87,167,167,87,224,87,162,162,87,87,87,87,224,87,87,87
+-switch_endian,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,363,363,PNR,PNR,PNR,PNR
+-symlink,83,88,88,83,PNR,83,86,86,83,83,83,83,PNR,83,83,83
+-symlinkat,304,266,266,331,36,297,256,260,284,284,295,295,36,297,297,304
+-sync,36,162,162,36,81,36,157,157,36,36,36,36,81,36,36,36
+-sync_file_range,314,277,277,PNR,84,305,264,268,292,292,PNR,PNR,84,307,307,314
+-sync_file_range2,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,308,308,PNR,PNR,PNR,PNR
+-syncfs,344,306,306,373,267,342,301,306,327,327,348,348,267,338,338,362
+-syscall,PNR,PNR,PNR,PNR,PNR,0,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-_sysctl,149,156,PNR,149,PNR,153,152,152,149,149,149,149,PNR,149,149,149
+-sys_debug_setcontext,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,256,256,PNR,PNR,PNR,PNR
+-sysfs,135,139,139,135,PNR,135,136,136,135,135,135,135,PNR,135,135,135
+-sysinfo,116,99,99,116,179,116,97,97,116,116,116,116,179,116,116,116
+-syslog,103,103,103,103,116,103,101,101,103,103,103,103,116,103,103,103
+-sysmips,PNR,PNR,PNR,PNR,PNR,149,199,199,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-tee,315,276,276,342,77,306,265,269,293,293,284,284,77,308,308,315
+-tgkill,270,234,234,268,131,266,225,229,259,259,250,250,131,241,241,270
+-time,13,201,201,PNR,PNR,13,PNR,PNR,13,13,13,13,PNR,13,PNR,13
+-timer_create,259,222,526,257,107,257,216,220,250,250,240,240,107,254,254,259
+-timer_delete,263,226,226,261,111,261,220,224,254,254,244,244,111,258,258,263
+-timerfd,PNR,PNR,PNR,PNR,PNR,318,277,281,PNR,PNR,PNR,PNR,PNR,317,317,PNR
+-timerfd_create,322,283,283,350,85,321,280,284,306,306,306,306,85,319,319,322
+-timerfd_gettime,326,287,287,354,87,322,281,285,308,308,312,312,87,321,321,326
+-timerfd_gettime64,410,PNR,PNR,410,PNR,410,PNR,410,410,PNR,410,PNR,PNR,410,PNR,410
+-timerfd_settime,325,286,286,353,86,323,282,286,307,307,311,311,86,320,320,325
+-timerfd_settime64,411,PNR,PNR,411,PNR,411,PNR,411,411,PNR,411,PNR,PNR,411,PNR,411
+-timer_getoverrun,262,225,225,260,109,260,219,223,253,253,243,243,109,257,257,262
+-timer_gettime,261,224,224,259,108,259,218,222,252,252,242,242,108,256,256,261
+-timer_gettime64,408,PNR,PNR,408,PNR,408,PNR,408,408,PNR,408,PNR,PNR,408,PNR,408
+-timer_settime,260,223,223,258,110,258,217,221,251,251,241,241,110,255,255,260
+-timer_settime64,409,PNR,PNR,409,PNR,409,PNR,409,409,PNR,409,PNR,PNR,409,PNR,409
+-times,43,100,100,43,153,43,98,98,43,43,43,43,153,43,43,43
+-tkill,238,200,200,238,130,236,192,192,208,208,208,208,130,237,237,238
+-truncate,92,76,76,92,45,92,74,74,92,92,92,92,45,92,92,92
+-truncate64,193,PNR,PNR,193,PNR,211,PNR,PNR,199,199,193,PNR,PNR,193,PNR,193
+-tuxcall,PNR,184,184,PNR,PNR,PNR,PNR,PNR,PNR,PNR,225,225,PNR,PNR,PNR,PNR
+-ugetrlimit,191,PNR,PNR,191,PNR,PNR,PNR,PNR,PNR,PNR,190,190,PNR,191,PNR,191
+-ulimit,58,PNR,PNR,PNR,PNR,58,PNR,PNR,PNR,PNR,58,58,PNR,PNR,PNR,PNR
+-umask,60,95,95,60,166,60,93,93,60,60,60,60,166,60,60,60
+-umount,22,PNR,PNR,PNR,PNR,22,PNR,PNR,PNR,PNR,22,22,PNR,22,22,22
+-umount2,52,166,166,52,39,52,161,161,52,52,52,52,39,52,52,52
+-uname,122,63,63,122,160,122,61,61,59,59,122,122,160,122,122,122
+-unlink,10,87,87,10,PNR,10,85,85,10,10,10,10,PNR,10,10,10
+-unlinkat,301,263,263,328,35,294,253,257,281,281,292,292,35,294,294,301
+-unshare,310,272,272,337,97,303,262,266,288,288,282,282,97,303,303,310
+-uselib,86,134,PNR,86,PNR,86,PNR,PNR,86,86,86,86,PNR,86,86,86
+-userfaultfd,374,323,323,388,282,357,317,321,344,344,364,364,282,355,355,377
+-usr26,PNR,PNR,PNR,983043,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-usr32,PNR,PNR,PNR,983044,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-ustat,62,136,136,62,PNR,62,133,133,62,62,62,62,PNR,62,62,62
+-utime,30,132,132,PNR,PNR,30,130,130,30,30,30,30,PNR,30,30,30
+-utimensat,320,280,280,348,88,316,275,279,301,301,304,304,88,315,315,320
+-utimensat_time64,412,PNR,PNR,412,PNR,412,PNR,412,412,PNR,412,PNR,PNR,412,PNR,412
+-utimes,271,235,235,269,PNR,267,226,230,336,336,251,251,PNR,313,313,271
+-vfork,190,58,58,190,PNR,PNR,PNR,PNR,113,113,189,189,PNR,190,190,190
+-vhangup,111,153,153,111,58,111,150,150,111,111,111,111,58,111,111,111
+-vm86,166,PNR,PNR,PNR,PNR,113,PNR,PNR,PNR,PNR,113,113,PNR,PNR,PNR,PNR
+-vm86old,113,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-vmsplice,316,278,532,343,75,307,266,270,294,294,285,285,75,309,309,316
+-vserver,273,236,PNR,313,PNR,277,236,240,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
+-wait4,114,61,61,114,260,114,59,59,114,114,114,114,260,114,114,114
+-waitid,284,247,529,280,95,278,237,241,235,235,272,272,95,281,281,284
+-waitpid,7,PNR,PNR,PNR,PNR,7,PNR,PNR,7,7,7,7,PNR,PNR,PNR,7
+-write,4,1,1,4,64,4,1,1,4,4,4,4,64,4,4,4
+-writev,146,20,516,146,66,146,19,19,146,146,146,146,66,146,146,146
++#syscall (v5.15.0-rc3 2021-10-01),x86,x86_64,x32,arm,aarch64,mips,mips64,mips64n32,parisc,parisc64,ppc,ppc64,riscv32,riscv64,s390,s390x,sh
++accept,PNR,43,43,285,202,168,42,42,35,35,330,330,202,202,PNR,PNR,344
++accept4,364,288,288,366,242,334,293,297,320,320,344,344,242,242,364,364,358
++access,33,21,21,33,PNR,33,20,20,33,33,33,33,PNR,PNR,33,33,33
++acct,51,163,163,51,89,51,158,158,51,51,51,51,89,89,51,51,51
++add_key,286,248,248,309,217,280,239,243,264,264,269,269,217,217,278,278,285
++adjtimex,124,159,159,124,171,124,154,154,124,124,124,124,171,171,124,124,124
++afs_syscall,137,183,183,PNR,PNR,137,176,176,PNR,PNR,137,137,PNR,PNR,137,137,PNR
++alarm,27,37,37,PNR,PNR,27,37,37,27,27,27,27,PNR,PNR,27,27,27
++arch_prctl,384,158,158,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++arm_fadvise64_64,PNR,PNR,PNR,270,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++arm_sync_file_range,PNR,PNR,PNR,341,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++bdflush,134,PNR,PNR,134,PNR,134,PNR,PNR,134,134,134,134,PNR,PNR,134,134,134
++bind,361,49,49,282,200,169,48,48,22,22,327,327,200,200,361,361,341
++bpf,357,321,321,386,280,355,315,319,341,341,361,361,280,280,351,351,375
++break,17,PNR,PNR,PNR,PNR,17,PNR,PNR,PNR,PNR,17,17,PNR,PNR,PNR,PNR,PNR
++breakpoint,PNR,PNR,PNR,983041,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++brk,45,12,12,45,214,45,12,12,45,45,45,45,214,214,45,45,45
++cachectl,PNR,PNR,PNR,PNR,PNR,148,198,198,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++cacheflush,PNR,PNR,PNR,983042,PNR,147,197,197,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,123
++capget,184,125,125,184,90,204,123,123,106,106,183,183,90,90,184,184,184
++capset,185,126,126,185,91,205,124,124,107,107,184,184,91,91,185,185,185
++chdir,12,80,80,12,49,12,78,78,12,12,12,12,49,49,12,12,12
++chmod,15,90,90,15,PNR,15,88,88,15,15,15,15,PNR,PNR,15,15,15
++chown,182,92,92,182,PNR,202,90,90,180,180,181,181,PNR,PNR,182,212,182
++chown32,212,PNR,PNR,212,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,212,PNR,212
++chroot,61,161,161,61,51,61,156,156,61,61,61,61,51,51,61,61,61
++clock_adjtime,343,305,305,372,266,341,300,305,324,324,347,347,266,266,337,337,361
++clock_adjtime64,405,PNR,PNR,405,PNR,405,PNR,405,405,PNR,405,PNR,PNR,PNR,405,PNR,405
++clock_getres,266,229,229,264,114,264,223,227,257,257,247,247,114,114,261,261,266
++clock_getres_time64,406,PNR,PNR,406,PNR,406,PNR,406,406,PNR,406,PNR,PNR,PNR,406,PNR,406
++clock_gettime,265,228,228,263,113,263,222,226,256,256,246,246,113,113,260,260,265
++clock_gettime64,403,PNR,PNR,403,PNR,403,PNR,403,403,PNR,403,PNR,PNR,PNR,403,PNR,403
++clock_nanosleep,267,230,230,265,115,265,224,228,258,258,248,248,115,115,262,262,267
++clock_nanosleep_time64,407,PNR,PNR,407,PNR,407,PNR,407,407,PNR,407,PNR,PNR,PNR,407,PNR,407
++clock_settime,264,227,227,262,112,262,221,225,255,255,245,245,112,112,259,259,264
++clock_settime64,404,PNR,PNR,404,PNR,404,PNR,404,404,PNR,404,PNR,PNR,PNR,404,PNR,404
++clone,120,56,56,120,220,120,55,55,120,120,120,120,220,220,120,120,120
++clone3,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,PNR
++close,6,3,3,6,57,6,3,3,6,6,6,6,57,57,6,6,6
++close_range,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436
++connect,362,42,42,283,203,170,41,41,31,31,328,328,203,203,362,362,342
++copy_file_range,377,326,326,391,285,360,320,324,346,346,379,379,285,285,375,375,380
++creat,8,85,85,8,PNR,8,83,83,8,8,8,8,PNR,PNR,8,8,8
++create_module,127,174,PNR,PNR,PNR,127,167,167,PNR,PNR,127,127,PNR,PNR,127,127,PNR
++delete_module,129,176,176,129,106,129,169,169,129,129,129,129,106,106,129,129,129
++dup,41,32,32,41,23,41,31,31,41,41,41,41,23,23,41,41,41
++dup2,63,33,33,63,PNR,63,32,32,63,63,63,63,PNR,PNR,63,63,63
++dup3,330,292,292,358,24,327,286,290,312,312,316,316,24,24,326,326,330
++epoll_create,254,213,213,250,PNR,248,207,207,224,224,236,236,PNR,PNR,249,249,254
++epoll_create1,329,291,291,357,20,326,285,289,311,311,315,315,20,20,327,327,329
++epoll_ctl,255,233,233,251,21,249,208,208,225,225,237,237,21,21,250,250,255
++epoll_ctl_old,PNR,214,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++epoll_pwait,319,281,281,346,22,313,272,276,297,297,303,303,22,22,312,312,319
++epoll_pwait2,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441
++epoll_wait,256,232,232,252,PNR,250,209,209,226,226,238,238,PNR,PNR,251,251,256
++epoll_wait_old,PNR,215,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++eventfd,323,284,284,351,PNR,319,278,282,304,304,307,307,PNR,PNR,318,318,323
++eventfd2,328,290,290,356,19,325,284,288,310,310,314,314,19,19,323,323,328
++execve,11,59,520,11,221,11,57,57,11,11,11,11,221,221,11,11,11
++execveat,358,322,545,387,281,356,316,320,342,342,362,362,281,281,354,354,376
++exit,1,60,60,1,93,1,58,58,1,1,1,1,93,93,1,1,1
++exit_group,252,231,231,248,94,246,205,205,222,222,234,234,94,94,248,248,252
++faccessat,307,269,269,334,48,300,259,263,287,287,298,298,48,48,300,300,307
++faccessat2,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439
++fadvise64,250,221,221,PNR,223,254,215,216,PNR,PNR,233,233,223,223,253,253,250
++fadvise64_64,272,PNR,PNR,PNR,PNR,PNR,PNR,PNR,236,236,254,PNR,PNR,PNR,264,PNR,272
++fallocate,324,285,285,352,47,320,279,283,305,305,309,309,47,47,314,314,324
++fanotify_init,338,300,300,367,262,336,295,300,322,322,323,323,262,262,332,332,337
++fanotify_mark,339,301,301,368,263,337,296,301,323,323,324,324,263,263,333,333,338
++fchdir,133,81,81,133,50,133,79,79,133,133,133,133,50,50,133,133,133
++fchmod,94,91,91,94,52,94,89,89,94,94,94,94,52,52,94,94,94
++fchmodat,306,268,268,333,53,299,258,262,286,286,297,297,53,53,299,299,306
++fchown,95,93,93,95,55,95,91,91,95,95,95,95,55,55,95,207,95
++fchown32,207,PNR,PNR,207,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,207,PNR,207
++fchownat,298,260,260,325,54,291,250,254,278,278,289,289,54,54,291,291,298
++fcntl,55,72,72,55,25,55,70,70,55,55,55,55,25,25,55,55,55
++fcntl64,221,PNR,PNR,221,PNR,220,PNR,212,202,202,204,PNR,PNR,PNR,221,PNR,221
++fdatasync,148,75,75,148,83,152,73,73,148,148,148,148,83,83,148,148,148
++fgetxattr,231,193,193,231,10,229,185,185,243,243,214,214,10,10,229,229,231
++finit_module,350,313,313,379,273,348,307,312,333,333,353,353,273,273,344,344,368
++flistxattr,234,196,196,234,13,232,188,188,246,246,217,217,13,13,232,232,234
++flock,143,73,73,143,32,143,71,71,143,143,143,143,32,32,143,143,143
++fork,2,57,57,2,PNR,2,56,56,2,2,2,2,PNR,PNR,2,2,2
++fremovexattr,237,199,199,237,16,235,191,191,249,249,220,220,16,16,235,235,237
++fsconfig,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431
++fsetxattr,228,190,190,228,7,226,182,182,240,240,211,211,7,7,226,226,228
++fsmount,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432
++fsopen,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430
++fspick,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433
++fstat,108,5,5,108,80,108,5,5,28,28,108,108,80,80,108,108,108
++fstat64,197,PNR,PNR,197,PNR,215,PNR,PNR,112,112,197,PNR,PNR,PNR,197,PNR,197
++fstatat64,300,PNR,PNR,327,PNR,293,PNR,PNR,280,280,291,PNR,PNR,PNR,293,PNR,300
++fstatfs,100,138,138,100,44,100,135,135,100,100,100,100,44,44,100,100,100
++fstatfs64,269,PNR,PNR,267,PNR,256,PNR,218,299,299,253,253,PNR,PNR,266,266,269
++fsync,118,74,74,118,82,118,72,72,118,118,118,118,82,82,118,118,118
++ftime,35,PNR,PNR,PNR,PNR,35,PNR,PNR,PNR,PNR,35,35,PNR,PNR,PNR,PNR,PNR
++ftruncate,93,77,77,93,46,93,75,75,93,93,93,93,46,46,93,93,93
++ftruncate64,194,PNR,PNR,194,PNR,212,PNR,PNR,200,200,194,PNR,PNR,PNR,194,PNR,194
++futex,240,202,202,240,98,238,194,194,210,210,221,221,98,98,238,238,240
++futex_time64,422,PNR,PNR,422,PNR,422,PNR,422,422,PNR,422,PNR,PNR,PNR,422,PNR,422
++futimesat,299,261,261,326,PNR,292,251,255,279,279,290,290,PNR,PNR,292,292,299
++getcpu,318,309,309,345,168,312,271,275,296,296,302,302,168,168,311,311,318
++getcwd,183,79,79,183,17,203,77,77,110,110,182,182,17,17,183,183,183
++getdents,141,78,78,141,PNR,141,76,76,141,141,141,141,PNR,PNR,141,141,141
++getdents64,220,217,217,217,61,219,308,299,201,201,202,202,61,61,220,220,220
++getegid,50,108,108,50,177,50,106,106,50,50,50,50,177,177,50,202,50
++getegid32,202,PNR,PNR,202,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,202,PNR,202
++geteuid,49,107,107,49,175,49,105,105,49,49,49,49,175,175,49,201,49
++geteuid32,201,PNR,PNR,201,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,201,PNR,201
++getgid,47,104,104,47,176,47,102,102,47,47,47,47,176,176,47,200,47
++getgid32,200,PNR,PNR,200,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,200,PNR,200
++getgroups,80,115,115,80,158,80,113,113,80,80,80,80,158,158,80,205,80
++getgroups32,205,PNR,PNR,205,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,205,PNR,205
++getitimer,105,36,36,105,102,105,35,35,105,105,105,105,102,102,105,105,105
++get_kernel_syms,130,177,PNR,PNR,PNR,130,170,170,PNR,PNR,130,130,PNR,PNR,130,130,PNR
++get_mempolicy,275,239,239,320,236,269,228,232,261,261,260,260,236,236,269,269,275
++getpeername,368,52,52,287,205,171,51,51,53,53,332,332,205,205,368,368,346
++getpgid,132,121,121,132,155,132,119,119,132,132,132,132,155,155,132,132,132
++getpgrp,65,111,111,65,PNR,65,109,109,65,65,65,65,PNR,PNR,65,65,65
++getpid,20,39,39,20,172,20,38,38,20,20,20,20,172,172,20,20,20
++getpmsg,188,181,181,PNR,PNR,208,174,174,PNR,PNR,187,187,PNR,PNR,188,188,PNR
++getppid,64,110,110,64,173,64,108,108,64,64,64,64,173,173,64,64,64
++getpriority,96,140,140,96,141,96,137,137,96,96,96,96,141,141,96,96,96
++getrandom,355,318,318,384,278,353,313,317,339,339,359,359,278,278,349,349,373
++getresgid,171,120,120,171,150,191,118,118,171,171,170,170,150,150,171,211,171
++getresgid32,211,PNR,PNR,211,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,211,PNR,211
++getresuid,165,118,118,165,148,186,116,116,165,165,165,165,148,148,165,209,165
++getresuid32,209,PNR,PNR,209,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,209,PNR,209
++getrlimit,76,97,97,PNR,163,76,95,95,76,76,76,76,163,163,76,191,76
++get_robust_list,312,274,531,339,100,310,269,273,290,290,299,299,100,100,305,305,312
++getrusage,77,98,98,77,165,77,96,96,77,77,77,77,165,165,77,77,77
++getsid,147,124,124,147,156,151,122,122,147,147,147,147,156,156,147,147,147
++getsockname,367,51,51,286,204,172,50,50,44,44,331,331,204,204,367,367,345
++getsockopt,365,55,542,295,209,173,54,54,182,182,340,340,209,209,365,365,354
++get_thread_area,244,211,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++gettid,224,186,186,224,178,222,178,178,206,206,207,207,178,178,236,236,224
++gettimeofday,78,96,96,78,169,78,94,94,78,78,78,78,169,169,78,78,78
++get_tls,PNR,PNR,PNR,983046,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++getuid,24,102,102,24,174,24,100,100,24,24,24,24,174,174,24,199,24
++getuid32,199,PNR,PNR,199,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,199,PNR,199
++getxattr,229,191,191,229,8,227,183,183,241,241,212,212,8,8,227,227,229
++gtty,32,PNR,PNR,PNR,PNR,32,PNR,PNR,PNR,PNR,32,32,PNR,PNR,PNR,PNR,PNR
++idle,112,PNR,PNR,PNR,PNR,112,PNR,PNR,PNR,PNR,112,112,PNR,PNR,112,112,PNR
++init_module,128,175,175,128,105,128,168,168,128,128,128,128,105,105,128,128,128
++inotify_add_watch,292,254,254,317,27,285,244,248,270,270,276,276,27,27,285,285,291
++inotify_init,291,253,253,316,PNR,284,243,247,269,269,275,275,PNR,PNR,284,284,290
++inotify_init1,332,294,294,360,26,329,288,292,314,314,318,318,26,26,324,324,332
++inotify_rm_watch,293,255,255,318,28,286,245,249,271,271,277,277,28,28,286,286,292
++io_cancel,249,210,210,247,3,245,204,204,219,219,231,231,3,3,247,247,249
++ioctl,54,16,514,54,29,54,15,15,54,54,54,54,29,29,54,54,54
++io_destroy,246,207,207,244,1,242,201,201,216,216,228,228,1,1,244,244,246
++io_getevents,247,208,208,245,4,243,202,202,217,217,229,229,4,4,245,245,247
++ioperm,101,173,173,PNR,PNR,101,PNR,PNR,PNR,PNR,101,101,PNR,PNR,101,PNR,PNR
++io_pgetevents,385,333,333,399,292,368,328,332,350,350,388,388,292,292,382,382,PNR
++io_pgetevents_time64,416,PNR,PNR,416,PNR,416,PNR,416,416,PNR,416,PNR,PNR,PNR,416,PNR,416
++iopl,110,172,172,PNR,PNR,110,PNR,PNR,PNR,PNR,110,110,PNR,PNR,PNR,PNR,PNR
++ioprio_get,290,252,252,315,31,315,274,278,268,268,274,274,31,31,283,283,289
++ioprio_set,289,251,251,314,30,314,273,277,267,267,273,273,30,30,282,282,288
++io_setup,245,206,543,243,0,241,200,200,215,215,227,227,0,0,243,243,245
++io_submit,248,209,544,246,2,244,203,203,218,218,230,230,2,2,246,246,248
++io_uring_enter,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426
++io_uring_register,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427
++io_uring_setup,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425
++ipc,117,PNR,PNR,PNR,PNR,117,PNR,PNR,PNR,PNR,117,117,PNR,PNR,117,117,117
++kcmp,349,312,312,378,272,347,306,311,332,332,354,354,272,272,343,343,367
++kexec_file_load,PNR,320,320,401,294,PNR,PNR,PNR,355,355,382,382,294,294,381,381,PNR
++kexec_load,283,246,528,347,104,311,270,274,300,300,268,268,104,104,277,277,283
++keyctl,288,250,250,311,219,282,241,245,266,266,271,271,219,219,280,280,287
++kill,37,62,62,37,129,37,60,60,37,37,37,37,129,129,37,37,37
++landlock_add_rule,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445
++landlock_create_ruleset,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444
++landlock_restrict_self,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446
++lchown,16,94,94,16,PNR,16,92,92,16,16,16,16,PNR,PNR,16,198,16
++lchown32,198,PNR,PNR,198,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,198,PNR,198
++lgetxattr,230,192,192,230,9,228,184,184,242,242,213,213,9,9,228,228,230
++link,9,86,86,9,PNR,9,84,84,9,9,9,9,PNR,PNR,9,9,9
++linkat,303,265,265,330,37,296,255,259,283,283,294,294,37,37,296,296,303
++listen,363,50,50,284,201,174,49,49,32,32,329,329,201,201,363,363,343
++listxattr,232,194,194,232,11,230,186,186,244,244,215,215,11,11,230,230,232
++llistxattr,233,195,195,233,12,231,187,187,245,245,216,216,12,12,231,231,233
++_llseek,140,PNR,PNR,140,PNR,140,PNR,PNR,140,140,140,140,PNR,PNR,140,PNR,140
++lock,53,PNR,PNR,PNR,PNR,53,PNR,PNR,PNR,PNR,53,53,PNR,PNR,PNR,PNR,PNR
++lookup_dcookie,253,212,212,249,18,247,206,206,223,223,235,235,18,18,110,110,253
++lremovexattr,236,198,198,236,15,234,190,190,248,248,219,219,15,15,234,234,236
++lseek,19,8,8,19,62,19,8,8,19,19,19,19,62,62,19,19,19
++lsetxattr,227,189,189,227,6,225,181,181,239,239,210,210,6,6,225,225,227
++lstat,107,6,6,107,PNR,107,6,6,84,84,107,107,PNR,PNR,107,107,107
++lstat64,196,PNR,PNR,196,PNR,214,PNR,PNR,198,198,196,PNR,PNR,PNR,196,PNR,196
++madvise,219,28,28,220,233,218,27,27,119,119,205,205,233,233,219,219,219
++mbind,274,237,237,319,235,268,227,231,260,260,259,259,235,235,268,268,274
++membarrier,375,324,324,389,283,358,318,322,343,343,365,365,283,283,356,356,378
++memfd_create,356,319,319,385,279,354,314,318,340,340,360,360,279,279,350,350,374
++memfd_secret,447,447,447,PNR,447,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++migrate_pages,294,256,256,400,238,287,246,250,272,272,258,258,238,238,287,287,294
++mincore,218,27,27,219,232,217,26,26,72,72,206,206,232,232,218,218,218
++mkdir,39,83,83,39,PNR,39,81,81,39,39,39,39,PNR,PNR,39,39,39
++mkdirat,296,258,258,323,34,289,248,252,276,276,287,287,34,34,289,289,296
++mknod,14,133,133,14,PNR,14,131,131,14,14,14,14,PNR,PNR,14,14,14
++mknodat,297,259,259,324,33,290,249,253,277,277,288,288,33,33,290,290,297
++mlock,150,149,149,150,228,154,146,146,150,150,150,150,228,228,150,150,150
++mlock2,376,325,325,390,284,359,319,323,345,345,378,378,284,284,374,374,379
++mlockall,152,151,151,152,230,156,148,148,152,152,152,152,230,230,152,152,152
++mmap,90,9,9,PNR,222,90,9,9,90,90,90,90,222,222,90,90,90
++mmap2,192,PNR,PNR,192,PNR,210,PNR,PNR,89,89,192,PNR,PNR,PNR,192,PNR,192
++modify_ldt,123,154,154,PNR,PNR,123,PNR,PNR,PNR,PNR,123,123,PNR,PNR,PNR,PNR,PNR
++mount,21,165,165,21,40,21,160,160,21,21,21,21,40,40,21,21,21
++mount_setattr,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442
++move_mount,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429
++move_pages,317,279,533,344,239,308,267,271,295,295,301,301,239,239,310,310,317
++mprotect,125,10,10,125,226,125,10,10,125,125,125,125,226,226,125,125,125
++mpx,56,PNR,PNR,PNR,PNR,56,PNR,PNR,PNR,PNR,56,56,PNR,PNR,PNR,PNR,PNR
++mq_getsetattr,282,245,245,279,185,276,235,239,234,234,267,267,185,185,276,276,282
++mq_notify,281,244,527,278,184,275,234,238,233,233,266,266,184,184,275,275,281
++mq_open,277,240,240,274,180,271,230,234,229,229,262,262,180,180,271,271,277
++mq_timedreceive,280,243,243,277,183,274,233,237,232,232,265,265,183,183,274,274,280
++mq_timedreceive_time64,419,PNR,PNR,419,PNR,419,PNR,419,419,PNR,419,PNR,PNR,PNR,419,PNR,419
++mq_timedsend,279,242,242,276,182,273,232,236,231,231,264,264,182,182,273,273,279
++mq_timedsend_time64,418,PNR,PNR,418,PNR,418,PNR,418,418,PNR,418,PNR,PNR,PNR,418,PNR,418
++mq_unlink,278,241,241,275,181,272,231,235,230,230,263,263,181,181,272,272,278
++mremap,163,25,25,163,216,167,24,24,163,163,163,163,216,216,163,163,163
++msgctl,402,71,71,304,187,402,69,69,191,191,402,402,187,187,402,402,402
++msgget,399,68,68,303,186,399,66,66,190,190,399,399,186,186,399,399,399
++msgrcv,401,70,70,302,188,401,68,68,189,189,401,401,188,188,401,401,401
++msgsnd,400,69,69,301,189,400,67,67,188,188,400,400,189,189,400,400,400
++msync,144,26,26,144,227,144,25,25,144,144,144,144,227,227,144,144,144
++multiplexer,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,201,201,PNR,PNR,PNR,PNR,PNR
++munlock,151,150,150,151,229,155,147,147,151,151,151,151,229,229,151,151,151
++munlockall,153,152,152,153,231,157,149,149,153,153,153,153,231,231,153,153,153
++munmap,91,11,11,91,215,91,11,11,91,91,91,91,215,215,91,91,91
++name_to_handle_at,341,303,303,370,264,339,298,303,325,325,345,345,264,264,335,335,359
++nanosleep,162,35,35,162,101,166,34,34,162,162,162,162,101,101,162,162,162
++newfstatat,PNR,262,262,PNR,79,PNR,252,256,PNR,PNR,PNR,291,79,79,PNR,293,PNR
++_newselect,142,PNR,PNR,142,PNR,142,22,22,142,142,142,142,PNR,PNR,142,PNR,142
++nfsservctl,169,180,PNR,169,42,189,173,173,PNR,PNR,168,168,42,42,169,169,169
++nice,34,PNR,PNR,34,PNR,34,PNR,PNR,34,34,34,34,PNR,PNR,34,34,34
++oldfstat,28,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,28,28,PNR,PNR,PNR,PNR,28
++oldlstat,84,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,84,84,PNR,PNR,PNR,PNR,84
++oldolduname,59,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,59,59,PNR,PNR,PNR,PNR,PNR
++oldstat,18,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,18,18,PNR,PNR,PNR,PNR,18
++olduname,109,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,109,109,PNR,PNR,PNR,PNR,109
++open,5,2,2,5,PNR,5,2,2,5,5,5,5,PNR,PNR,5,5,5
++openat,295,257,257,322,56,288,247,251,275,275,286,286,56,56,288,288,295
++openat2,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437
++open_by_handle_at,342,304,304,371,265,340,299,304,326,326,346,346,265,265,336,336,360
++open_tree,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428
++pause,29,34,34,29,PNR,29,33,33,29,29,29,29,PNR,PNR,29,29,29
++pciconfig_iobase,PNR,PNR,PNR,271,PNR,PNR,PNR,PNR,PNR,PNR,200,200,PNR,PNR,PNR,PNR,PNR
++pciconfig_read,PNR,PNR,PNR,272,PNR,PNR,PNR,PNR,PNR,PNR,198,198,PNR,PNR,PNR,PNR,PNR
++pciconfig_write,PNR,PNR,PNR,273,PNR,PNR,PNR,PNR,PNR,PNR,199,199,PNR,PNR,PNR,PNR,PNR
++perf_event_open,336,298,298,364,241,333,292,296,318,318,319,319,241,241,331,331,336
++personality,136,135,135,136,92,136,132,132,136,136,136,136,92,92,136,136,136
++pidfd_getfd,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438
++pidfd_open,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434
++pidfd_send_signal,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424
++pipe,42,22,22,42,PNR,42,21,21,42,42,42,42,PNR,PNR,42,42,42
++pipe2,331,293,293,359,59,328,287,291,313,313,317,317,59,59,325,325,331
++pivot_root,217,155,155,218,41,216,151,151,67,67,203,203,41,41,217,217,217
++pkey_alloc,381,330,330,395,289,364,324,328,352,352,384,384,289,289,385,385,385
++pkey_free,382,331,331,396,290,365,325,329,353,353,385,385,290,290,386,386,386
++pkey_mprotect,380,329,329,394,288,363,323,327,351,351,386,386,288,288,384,384,384
++poll,168,7,7,168,PNR,188,7,7,168,168,167,167,PNR,PNR,168,168,168
++ppoll,309,271,271,336,73,302,261,265,274,274,281,281,73,73,302,302,309
++ppoll_time64,414,PNR,PNR,414,PNR,414,PNR,414,414,PNR,414,PNR,PNR,PNR,414,PNR,414
++prctl,172,157,157,172,167,192,153,153,172,172,171,171,167,167,172,172,172
++pread64,180,17,17,180,67,200,16,16,108,108,179,179,67,67,180,180,180
++preadv,333,295,534,361,69,330,289,293,315,315,320,320,69,69,328,328,333
++preadv2,378,327,546,392,286,361,321,325,347,347,380,380,286,286,376,376,381
++prlimit64,340,302,302,369,261,338,297,302,321,321,325,325,261,261,334,334,339
++process_madvise,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440
++process_mrelease,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448
++process_vm_readv,347,310,539,376,270,345,304,309,330,330,351,351,270,270,340,340,365
++process_vm_writev,348,311,540,377,271,346,305,310,331,331,352,352,271,271,341,341,366
++prof,44,PNR,PNR,PNR,PNR,44,PNR,PNR,PNR,PNR,44,44,PNR,PNR,PNR,PNR,PNR
++profil,98,PNR,PNR,PNR,PNR,98,PNR,PNR,PNR,PNR,98,98,PNR,PNR,PNR,PNR,PNR
++pselect6,308,270,270,335,72,301,260,264,273,273,280,280,72,72,301,301,308
++pselect6_time64,413,PNR,PNR,413,PNR,413,PNR,413,413,PNR,413,PNR,PNR,PNR,413,PNR,413
++ptrace,26,101,521,26,117,26,99,99,26,26,26,26,117,117,26,26,26
++putpmsg,189,182,182,PNR,PNR,209,175,175,PNR,PNR,188,188,PNR,PNR,189,189,PNR
++pwrite64,181,18,18,181,68,201,17,17,109,109,180,180,68,68,181,181,181
++pwritev,334,296,535,362,70,331,290,294,316,316,321,321,70,70,329,329,334
++pwritev2,379,328,547,393,287,362,322,326,348,348,381,381,287,287,377,377,382
++query_module,167,178,PNR,PNR,PNR,187,171,171,PNR,PNR,166,166,PNR,PNR,167,167,PNR
++quotactl,131,179,179,131,60,131,172,172,131,131,131,131,60,60,131,131,131
++quotactl_fd,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443
++read,3,0,0,3,63,3,0,0,3,3,3,3,63,63,3,3,3
++readahead,225,187,187,225,213,223,179,179,207,207,191,191,213,213,222,222,225
++readdir,89,PNR,PNR,PNR,PNR,89,PNR,PNR,PNR,PNR,89,89,PNR,PNR,89,89,89
++readlink,85,89,89,85,PNR,85,87,87,85,85,85,85,PNR,PNR,85,85,85
++readlinkat,305,267,267,332,78,298,257,261,285,285,296,296,78,78,298,298,305
++readv,145,19,515,145,65,145,18,18,145,145,145,145,65,65,145,145,145
++reboot,88,169,169,88,142,88,164,164,88,88,88,88,142,142,88,88,88
++recv,PNR,PNR,PNR,291,PNR,175,PNR,PNR,98,98,336,336,PNR,PNR,PNR,PNR,350
++recvfrom,371,45,517,292,207,176,44,44,123,123,337,337,207,207,371,371,351
++recvmmsg,337,299,537,365,243,335,294,298,319,319,343,343,243,243,357,357,357
++recvmmsg_time64,417,PNR,PNR,417,PNR,417,PNR,417,417,PNR,417,PNR,PNR,PNR,417,PNR,417
++recvmsg,372,47,519,297,212,177,46,46,184,184,342,342,212,212,372,372,356
++remap_file_pages,257,216,216,253,234,251,210,210,227,227,239,239,234,234,267,267,257
++removexattr,235,197,197,235,14,233,189,189,247,247,218,218,14,14,233,233,235
++rename,38,82,82,38,PNR,38,80,80,38,38,38,38,PNR,PNR,38,38,38
++renameat,302,264,264,329,38,295,254,258,282,282,293,293,PNR,PNR,295,295,302
++renameat2,353,316,316,382,276,351,311,315,337,337,357,357,276,276,347,347,371
++request_key,287,249,249,310,218,281,240,244,265,265,270,270,218,218,279,279,286
++restart_syscall,0,219,219,0,128,253,213,214,0,0,0,0,128,128,7,7,0
++riscv_flush_icache,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,259,259,PNR,PNR,PNR
++rmdir,40,84,84,40,PNR,40,82,82,40,40,40,40,PNR,PNR,40,40,40
++rseq,386,334,334,398,293,367,327,331,354,354,387,387,293,293,383,383,387
++rtas,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,255,255,PNR,PNR,PNR,PNR,PNR
++rt_sigaction,174,13,512,174,134,194,13,13,174,174,173,173,134,134,174,174,174
++rt_sigpending,176,127,522,176,136,196,125,125,176,176,175,175,136,136,176,176,176
++rt_sigprocmask,175,14,14,175,135,195,14,14,175,175,174,174,135,135,175,175,175
++rt_sigqueueinfo,178,129,524,178,138,198,127,127,178,178,177,177,138,138,178,178,178
++rt_sigreturn,173,15,513,173,139,193,211,211,173,173,172,172,139,139,173,173,173
++rt_sigsuspend,179,130,130,179,133,199,128,128,179,179,178,178,133,133,179,179,179
++rt_sigtimedwait,177,128,523,177,137,197,126,126,177,177,176,176,137,137,177,177,177
++rt_sigtimedwait_time64,421,PNR,PNR,421,PNR,421,PNR,421,421,PNR,421,PNR,PNR,PNR,421,PNR,421
++rt_tgsigqueueinfo,335,297,536,363,240,332,291,295,317,317,322,322,240,240,330,330,335
++s390_guarded_storage,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,378,378,PNR
++s390_pci_mmio_read,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,353,353,PNR
++s390_pci_mmio_write,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,352,352,PNR
++s390_runtime_instr,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,342,342,PNR
++s390_sthyi,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,380,380,PNR
++sched_getaffinity,242,204,204,242,123,240,196,196,212,212,223,223,123,123,240,240,242
++sched_getattr,352,315,315,381,275,350,310,314,335,335,356,356,275,275,346,346,369
++sched_getparam,155,143,143,155,121,159,140,140,155,155,155,155,121,121,155,155,155
++sched_get_priority_max,159,146,146,159,125,163,143,143,159,159,159,159,125,125,159,159,159
++sched_get_priority_min,160,147,147,160,126,164,144,144,160,160,160,160,126,126,160,160,160
++sched_getscheduler,157,145,145,157,120,161,142,142,157,157,157,157,120,120,157,157,157
++sched_rr_get_interval,161,148,148,161,127,165,145,145,161,161,161,161,127,127,161,161,161
++sched_rr_get_interval_time64,423,PNR,PNR,423,PNR,423,PNR,423,423,PNR,423,PNR,PNR,PNR,423,PNR,423
++sched_setaffinity,241,203,203,241,122,239,195,195,211,211,222,222,122,122,239,239,241
++sched_setattr,351,314,314,380,274,349,309,313,334,334,355,355,274,274,345,345,370
++sched_setparam,154,142,142,154,118,158,139,139,154,154,154,154,118,118,154,154,154
++sched_setscheduler,156,144,144,156,119,160,141,141,156,156,156,156,119,119,156,156,156
++sched_yield,158,24,24,158,124,162,23,23,158,158,158,158,124,124,158,158,158
++seccomp,354,317,317,383,277,352,312,316,338,338,358,358,277,277,348,348,372
++security,PNR,185,185,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++select,82,23,23,PNR,PNR,PNR,PNR,PNR,PNR,PNR,82,82,PNR,PNR,PNR,142,PNR
++semctl,394,66,66,300,191,394,64,64,187,187,394,394,191,191,394,394,394
++semget,393,64,64,299,190,393,62,62,186,186,393,393,190,190,393,393,393
++semop,PNR,65,65,298,193,PNR,63,63,185,185,PNR,PNR,193,193,PNR,PNR,PNR
++semtimedop,PNR,220,220,312,192,PNR,214,215,228,228,PNR,392,192,192,PNR,392,PNR
++semtimedop_time64,420,PNR,PNR,420,PNR,420,PNR,420,420,PNR,420,PNR,PNR,PNR,420,PNR,420
++send,PNR,PNR,PNR,289,PNR,178,PNR,PNR,58,58,334,334,PNR,PNR,PNR,PNR,348
++sendfile,187,40,40,187,71,207,39,39,122,122,186,186,71,71,187,187,187
++sendfile64,239,PNR,PNR,239,PNR,237,PNR,219,209,209,226,PNR,PNR,PNR,223,PNR,239
++sendmmsg,345,307,538,374,269,343,302,307,329,329,349,349,269,269,358,358,363
++sendmsg,370,46,518,296,211,179,45,45,183,183,341,341,211,211,370,370,355
++sendto,369,44,44,290,206,180,43,43,82,82,335,335,206,206,369,369,349
++setdomainname,121,171,171,121,162,121,166,166,121,121,121,121,162,162,121,121,121
++setfsgid,139,123,123,139,152,139,121,121,139,139,139,139,152,152,139,216,139
++setfsgid32,216,PNR,PNR,216,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,216,PNR,216
++setfsuid,138,122,122,138,151,138,120,120,138,138,138,138,151,151,138,215,138
++setfsuid32,215,PNR,PNR,215,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,215,PNR,215
++setgid,46,106,106,46,144,46,104,104,46,46,46,46,144,144,46,214,46
++setgid32,214,PNR,PNR,214,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,214,PNR,214
++setgroups,81,116,116,81,159,81,114,114,81,81,81,81,159,159,81,206,81
++setgroups32,206,PNR,PNR,206,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,206,PNR,206
++sethostname,74,170,170,74,161,74,165,165,74,74,74,74,161,161,74,74,74
++setitimer,104,38,38,104,103,104,36,36,104,104,104,104,103,103,104,104,104
++set_mempolicy,276,238,238,321,237,270,229,233,262,262,261,261,237,237,270,270,276
++setns,346,308,308,375,268,344,303,308,328,328,350,350,268,268,339,339,364
++setpgid,57,109,109,57,154,57,107,107,57,57,57,57,154,154,57,57,57
++setpriority,97,141,141,97,140,97,138,138,97,97,97,97,140,140,97,97,97
++setregid,71,114,114,71,143,71,112,112,71,71,71,71,143,143,71,204,71
++setregid32,204,PNR,PNR,204,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,204,PNR,204
++setresgid,170,119,119,170,149,190,117,117,170,170,169,169,149,149,170,210,170
++setresgid32,210,PNR,PNR,210,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,210,PNR,210
++setresuid,164,117,117,164,147,185,115,115,164,164,164,164,147,147,164,208,164
++setresuid32,208,PNR,PNR,208,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,208,PNR,208
++setreuid,70,113,113,70,145,70,111,111,70,70,70,70,145,145,70,203,70
++setreuid32,203,PNR,PNR,203,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,203,PNR,203
++setrlimit,75,160,160,75,164,75,155,155,75,75,75,75,164,164,75,75,75
++set_robust_list,311,273,530,338,99,309,268,272,289,289,300,300,99,99,304,304,311
++setsid,66,112,112,66,157,66,110,110,66,66,66,66,157,157,66,66,66
++setsockopt,366,54,541,294,208,181,53,53,181,181,339,339,208,208,366,366,353
++set_thread_area,243,205,PNR,PNR,PNR,283,242,246,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++set_tid_address,258,218,218,256,96,252,212,213,237,237,232,232,96,96,252,252,258
++settimeofday,79,164,164,79,170,79,159,159,79,79,79,79,170,170,79,79,79
++set_tls,PNR,PNR,PNR,983045,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++setuid,23,105,105,23,146,23,103,103,23,23,23,23,146,146,23,213,23
++setuid32,213,PNR,PNR,213,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,213,PNR,213
++setxattr,226,188,188,226,5,224,180,180,238,238,209,209,5,5,224,224,226
++sgetmask,68,PNR,PNR,PNR,PNR,68,PNR,PNR,68,68,68,68,PNR,PNR,PNR,PNR,68
++shmat,397,30,30,305,196,397,29,29,192,192,397,397,196,196,397,397,397
++shmctl,396,31,31,308,195,396,30,30,195,195,396,396,195,195,396,396,396
++shmdt,398,67,67,306,197,398,65,65,193,193,398,398,197,197,398,398,398
++shmget,395,29,29,307,194,395,28,28,194,194,395,395,194,194,395,395,395
++shutdown,373,48,48,293,210,182,47,47,117,117,338,338,210,210,373,373,352
++sigaction,67,PNR,PNR,67,PNR,67,PNR,PNR,PNR,PNR,67,67,PNR,PNR,67,67,67
++sigaltstack,186,131,525,186,132,206,129,129,166,166,185,185,132,132,186,186,186
++signal,48,PNR,PNR,PNR,PNR,48,PNR,PNR,48,48,48,48,PNR,PNR,48,48,48
++signalfd,321,282,282,349,PNR,317,276,280,302,302,305,305,PNR,PNR,316,316,321
++signalfd4,327,289,289,355,74,324,283,287,309,309,313,313,74,74,322,322,327
++sigpending,73,PNR,PNR,73,PNR,73,PNR,PNR,73,73,73,73,PNR,PNR,73,73,73
++sigprocmask,126,PNR,PNR,126,PNR,126,PNR,PNR,126,126,126,126,PNR,PNR,126,126,126
++sigreturn,119,PNR,PNR,119,PNR,119,PNR,PNR,PNR,PNR,119,119,PNR,PNR,119,119,119
++sigsuspend,72,PNR,PNR,72,PNR,72,PNR,PNR,PNR,PNR,72,72,PNR,PNR,72,72,72
++socket,359,41,41,281,198,183,40,40,17,17,326,326,198,198,359,359,340
++socketcall,102,PNR,PNR,PNR,PNR,102,PNR,PNR,PNR,PNR,102,102,PNR,PNR,102,102,102
++socketpair,360,53,53,288,199,184,52,52,56,56,333,333,199,199,360,360,347
++splice,313,275,275,340,76,304,263,267,291,291,283,283,76,76,306,306,313
++spu_create,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,279,279,PNR,PNR,PNR,PNR,PNR
++spu_run,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,278,278,PNR,PNR,PNR,PNR,PNR
++ssetmask,69,PNR,PNR,PNR,PNR,69,PNR,PNR,69,69,69,69,PNR,PNR,PNR,PNR,69
++stat,106,4,4,106,PNR,106,4,4,18,18,106,106,PNR,PNR,106,106,106
++stat64,195,PNR,PNR,195,PNR,213,PNR,PNR,101,101,195,PNR,PNR,PNR,195,PNR,195
++statfs,99,137,137,99,43,99,134,134,99,99,99,99,43,43,99,99,99
++statfs64,268,PNR,PNR,266,PNR,255,PNR,217,298,298,252,252,PNR,PNR,265,265,268
++statx,383,332,332,397,291,366,326,330,349,349,383,383,291,291,379,379,383
++stime,25,PNR,PNR,PNR,PNR,25,PNR,PNR,25,25,25,25,PNR,PNR,25,PNR,25
++stty,31,PNR,PNR,PNR,PNR,31,PNR,PNR,PNR,PNR,31,31,PNR,PNR,PNR,PNR,PNR
++subpage_prot,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,310,310,PNR,PNR,PNR,PNR,PNR
++swapcontext,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,249,249,PNR,PNR,PNR,PNR,PNR
++swapoff,115,168,168,115,225,115,163,163,115,115,115,115,225,225,115,115,115
++swapon,87,167,167,87,224,87,162,162,87,87,87,87,224,224,87,87,87
++switch_endian,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,363,363,PNR,PNR,PNR,PNR,PNR
++symlink,83,88,88,83,PNR,83,86,86,83,83,83,83,PNR,PNR,83,83,83
++symlinkat,304,266,266,331,36,297,256,260,284,284,295,295,36,36,297,297,304
++sync,36,162,162,36,81,36,157,157,36,36,36,36,81,81,36,36,36
++sync_file_range,314,277,277,PNR,84,305,264,268,292,292,PNR,PNR,84,84,307,307,314
++sync_file_range2,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,308,308,PNR,PNR,PNR,PNR,PNR
++syncfs,344,306,306,373,267,342,301,306,327,327,348,348,267,267,338,338,362
++syscall,PNR,PNR,PNR,PNR,PNR,0,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++_sysctl,149,156,PNR,149,PNR,153,152,152,149,149,149,149,PNR,PNR,149,149,149
++sys_debug_setcontext,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,256,256,PNR,PNR,PNR,PNR,PNR
++sysfs,135,139,139,135,PNR,135,136,136,135,135,135,135,PNR,PNR,135,135,135
++sysinfo,116,99,99,116,179,116,97,97,116,116,116,116,179,179,116,116,116
++syslog,103,103,103,103,116,103,101,101,103,103,103,103,116,116,103,103,103
++sysmips,PNR,PNR,PNR,PNR,PNR,149,199,199,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++tee,315,276,276,342,77,306,265,269,293,293,284,284,77,77,308,308,315
++tgkill,270,234,234,268,131,266,225,229,259,259,250,250,131,131,241,241,270
++time,13,201,201,PNR,PNR,13,PNR,PNR,13,13,13,13,PNR,PNR,13,PNR,13
++timer_create,259,222,526,257,107,257,216,220,250,250,240,240,107,107,254,254,259
++timer_delete,263,226,226,261,111,261,220,224,254,254,244,244,111,111,258,258,263
++timerfd,PNR,PNR,PNR,PNR,PNR,318,277,281,PNR,PNR,PNR,PNR,PNR,PNR,317,317,PNR
++timerfd_create,322,283,283,350,85,321,280,284,306,306,306,306,85,85,319,319,322
++timerfd_gettime,326,287,287,354,87,322,281,285,308,308,312,312,87,87,321,321,326
++timerfd_gettime64,410,PNR,PNR,410,PNR,410,PNR,410,410,PNR,410,PNR,PNR,PNR,410,PNR,410
++timerfd_settime,325,286,286,353,86,323,282,286,307,307,311,311,86,86,320,320,325
++timerfd_settime64,411,PNR,PNR,411,PNR,411,PNR,411,411,PNR,411,PNR,PNR,PNR,411,PNR,411
++timer_getoverrun,262,225,225,260,109,260,219,223,253,253,243,243,109,109,257,257,262
++timer_gettime,261,224,224,259,108,259,218,222,252,252,242,242,108,108,256,256,261
++timer_gettime64,408,PNR,PNR,408,PNR,408,PNR,408,408,PNR,408,PNR,PNR,PNR,408,PNR,408
++timer_settime,260,223,223,258,110,258,217,221,251,251,241,241,110,110,255,255,260
++timer_settime64,409,PNR,PNR,409,PNR,409,PNR,409,409,PNR,409,PNR,PNR,PNR,409,PNR,409
++times,43,100,100,43,153,43,98,98,43,43,43,43,153,153,43,43,43
++tkill,238,200,200,238,130,236,192,192,208,208,208,208,130,130,237,237,238
++truncate,92,76,76,92,45,92,74,74,92,92,92,92,45,45,92,92,92
++truncate64,193,PNR,PNR,193,PNR,211,PNR,PNR,199,199,193,PNR,PNR,PNR,193,PNR,193
++tuxcall,PNR,184,184,PNR,PNR,PNR,PNR,PNR,PNR,PNR,225,225,PNR,PNR,PNR,PNR,PNR
++ugetrlimit,191,PNR,PNR,191,PNR,PNR,PNR,PNR,PNR,PNR,190,190,PNR,PNR,191,PNR,191
++ulimit,58,PNR,PNR,PNR,PNR,58,PNR,PNR,PNR,PNR,58,58,PNR,PNR,PNR,PNR,PNR
++umask,60,95,95,60,166,60,93,93,60,60,60,60,166,166,60,60,60
++umount,22,PNR,PNR,PNR,PNR,22,PNR,PNR,PNR,PNR,22,22,PNR,PNR,22,22,22
++umount2,52,166,166,52,39,52,161,161,52,52,52,52,39,39,52,52,52
++uname,122,63,63,122,160,122,61,61,59,59,122,122,160,160,122,122,122
++unlink,10,87,87,10,PNR,10,85,85,10,10,10,10,PNR,PNR,10,10,10
++unlinkat,301,263,263,328,35,294,253,257,281,281,292,292,35,35,294,294,301
++unshare,310,272,272,337,97,303,262,266,288,288,282,282,97,97,303,303,310
++uselib,86,134,PNR,86,PNR,86,PNR,PNR,86,86,86,86,PNR,PNR,86,86,86
++userfaultfd,374,323,323,388,282,357,317,321,344,344,364,364,282,282,355,355,377
++usr26,PNR,PNR,PNR,983043,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++usr32,PNR,PNR,PNR,983044,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++ustat,62,136,136,62,PNR,62,133,133,62,62,62,62,PNR,PNR,62,62,62
++utime,30,132,132,PNR,PNR,30,130,130,30,30,30,30,PNR,PNR,30,30,30
++utimensat,320,280,280,348,88,316,275,279,301,301,304,304,88,88,315,315,320
++utimensat_time64,412,PNR,PNR,412,PNR,412,PNR,412,412,PNR,412,PNR,PNR,PNR,412,PNR,412
++utimes,271,235,235,269,PNR,267,226,230,336,336,251,251,PNR,PNR,313,313,271
++vfork,190,58,58,190,PNR,PNR,PNR,PNR,113,113,189,189,PNR,PNR,190,190,190
++vhangup,111,153,153,111,58,111,150,150,111,111,111,111,58,58,111,111,111
++vm86,166,PNR,PNR,PNR,PNR,113,PNR,PNR,PNR,PNR,113,113,PNR,PNR,PNR,PNR,PNR
++vm86old,113,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++vmsplice,316,278,532,343,75,307,266,270,294,294,285,285,75,75,309,309,316
++vserver,273,236,PNR,313,PNR,277,236,240,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR,PNR
++wait4,114,61,61,114,260,114,59,59,114,114,114,114,260,260,114,114,114
++waitid,284,247,529,280,95,278,237,241,235,235,272,272,95,95,281,281,284
++waitpid,7,PNR,PNR,PNR,PNR,7,PNR,PNR,7,7,7,7,PNR,PNR,PNR,PNR,7
++write,4,1,1,4,64,4,1,1,4,4,4,4,64,64,4,4,4
++writev,146,20,516,146,66,146,19,19,146,146,146,146,66,66,146,146,146
+-- 
+2.33.0
+
diff --git a/poky/meta/recipes-support/libseccomp/files/0004-syscalls-Add-quotactl_path.patch b/poky/meta/recipes-support/libseccomp/files/0004-syscalls-Add-quotactl_path.patch
new file mode 100644
index 0000000..bedf748
--- /dev/null
+++ b/poky/meta/recipes-support/libseccomp/files/0004-syscalls-Add-quotactl_path.patch
@@ -0,0 +1,40 @@
+From d59e03b5a82b3e0debc3a3c77270bd160f4309f9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 8 Jun 2021 20:42:19 -0700
+Subject: [PATCH 4/4] syscalls: Add quotactl_path
+
+Upstream-Status: Submitted [https://github.com/seccomp/libseccomp/pull/327]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ include/seccomp-syscalls.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/include/seccomp-syscalls.h b/include/seccomp-syscalls.h
+index 4ff814c..dd347d3 100644
+--- a/include/seccomp-syscalls.h
++++ b/include/seccomp-syscalls.h
+@@ -284,6 +284,7 @@
+ #define __PNR_clock_nanosleep			-10250
+ #define __PNR_gettimeofday			-10251
+ #define __PNR_fcntl				-10252
++#define __PNR_quotactl_path			-10253
+ 
+ /*
+  * libseccomp syscall definitions
+@@ -1557,6 +1558,12 @@
+ #define __SNR_riscv_flush_icache	__PNR_riscv_flush_icache
+ #endif
+ 
++#ifdef __NR_quotactl_path
++#define __SNR_quotactl_path       __NR_quotactl_path
++#else
++#define __SNR_quotactl_path       __PNR_quotactl_path
++#endif
++
+ #ifdef __NR_rmdir
+ #define __SNR_rmdir			__NR_rmdir
+ #else
+-- 
+2.33.0
+
diff --git a/poky/meta/recipes-support/libseccomp/libseccomp_2.5.1.bb b/poky/meta/recipes-support/libseccomp/libseccomp_2.5.1.bb
deleted file mode 100644
index 74bface..0000000
--- a/poky/meta/recipes-support/libseccomp/libseccomp_2.5.1.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-SUMMARY = "interface to seccomp filtering mechanism"
-DESCRIPTION = "The libseccomp library provides and easy to use, platform independent,interface to the Linux Kernel's syscall filtering mechanism: seccomp."
-HOMEPAGE = "https://github.com/seccomp/libseccomp"
-SECTION = "security"
-LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;beginline=0;endline=1;md5=8eac08d22113880357ceb8e7c37f989f"
-
-DEPENDS += "gperf-native"
-
-PV .= "+git${SRCPV}"
-SRCREV = "5822e50c2920ce597d038077dea4a0eedf193f86"
-
-SRC_URI = "git://github.com/seccomp/libseccomp.git;branch=main \
-           file://0001-configure.ac-Bump-version-to-2.5.99.patch \
-           file://0001-arch-Add-riscv32-architecture-support.patch \
-           file://0002-Regenerate-syscall-cvs-file-from-5.13-rc5-kernel.patch \
-           file://run-ptest \
-           "
-
-S = "${WORKDIR}/git"
-
-inherit autotools-brokensep pkgconfig ptest features_check
-
-REQUIRED_DISTRO_FEATURES = "seccomp"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[python] = "--enable-python, --disable-python, python3"
-
-DISABLE_STATIC = ""
-
-do_compile_ptest() {
-    oe_runmake -C tests check-build
-}
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}/tests
-    install -d ${D}${PTEST_PATH}/tools
-    for file in $(find tests/* -executable -type f); do
-        install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tests
-    done
-    for file in $(find tests/*.tests -type f); do
-        install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tests
-    done
-    for file in $(find tools/* -executable -type f); do
-        install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tools
-    done
-    # Overwrite libtool wrappers with real executables
-    for file in $(find tools/.libs/* -executable -type f); do
-        install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tools
-    done
-}
-
-FILES:${PN} = "${bindir} ${libdir}/${BPN}.so*"
-FILES:${PN}-dbg += "${libdir}/${PN}/tests/.debug/* ${libdir}/${PN}/tools/.debug"
-
-RDEPENDS:${PN}-ptest = "coreutils bash"
diff --git a/poky/meta/recipes-support/libseccomp/libseccomp_2.5.2.bb b/poky/meta/recipes-support/libseccomp/libseccomp_2.5.2.bb
new file mode 100644
index 0000000..3ec6f13
--- /dev/null
+++ b/poky/meta/recipes-support/libseccomp/libseccomp_2.5.2.bb
@@ -0,0 +1,58 @@
+SUMMARY = "interface to seccomp filtering mechanism"
+DESCRIPTION = "The libseccomp library provides and easy to use, platform independent,interface to the Linux Kernel's syscall filtering mechanism: seccomp."
+HOMEPAGE = "https://github.com/seccomp/libseccomp"
+SECTION = "security"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;beginline=0;endline=1;md5=8eac08d22113880357ceb8e7c37f989f"
+
+DEPENDS += "gperf-native"
+
+PV .= "+git${SRCPV}"
+SRCREV = "2457dec1a90101d720e89e8027376742e2f3c327"
+
+SRC_URI = "git://github.com/seccomp/libseccomp.git;branch=main \
+           file://0001-configure.ac-Bump-version-to-2.5.99.patch \
+           file://0001-arch-Add-riscv32-architecture-support.patch \
+           file://0002-man-Add-RISCV64-to-arch-list.patch \
+           file://0003-syscalls-update-the-syscall-defs-for-Linux-v5.15.0-r.patch \
+           file://0004-syscalls-Add-quotactl_path.patch \
+           file://run-ptest \
+           "
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep pkgconfig ptest features_check
+
+REQUIRED_DISTRO_FEATURES = "seccomp"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[python] = "--enable-python, --disable-python, python3"
+
+DISABLE_STATIC = ""
+
+do_compile_ptest() {
+    oe_runmake -C tests check-build
+}
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    install -d ${D}${PTEST_PATH}/tools
+    for file in $(find tests/* -executable -type f); do
+        install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tests
+    done
+    for file in $(find tests/*.tests -type f); do
+        install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tests
+    done
+    for file in $(find tools/* -executable -type f); do
+        install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tools
+    done
+    # Overwrite libtool wrappers with real executables
+    for file in $(find tools/.libs/* -executable -type f); do
+        install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tools
+    done
+}
+
+FILES:${PN} = "${bindir} ${libdir}/${BPN}.so*"
+FILES:${PN}-dbg += "${libdir}/${PN}/tests/.debug/* ${libdir}/${PN}/tools/.debug"
+
+RDEPENDS:${PN}-ptest = "coreutils bash"
diff --git a/poky/meta/recipes-support/libsoup/libsoup-2.4_2.72.0.bb b/poky/meta/recipes-support/libsoup/libsoup-2.4_2.72.0.bb
deleted file mode 100644
index e888202..0000000
--- a/poky/meta/recipes-support/libsoup/libsoup-2.4_2.72.0.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "An HTTP library implementation in C"
-DESCRIPTION = "libsoup is an HTTP client/server library for GNOME. It uses GObjects \
-and the glib main loop, to integrate well with GNOME applications."
-HOMEPAGE = "https://wiki.gnome.org/Projects/libsoup"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-SECTION = "x11/gnome/libs"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 libpsl"
-
-SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
-
-SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz"
-SRC_URI[sha256sum] = "170c3f8446b0f65f8e4b93603349172b1085fb8917c181d10962f02bb85f5387"
-
-CVE_PRODUCT = "libsoup"
-
-S = "${WORKDIR}/libsoup-${PV}"
-
-inherit meson gettext pkgconfig upstream-version-is-even gobject-introspection gtk-doc
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-
-# libsoup-gnome is entirely deprecated and just stubs in 2.42 onwards. Disable by default.
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[gnome] = "-Dgnome=true,-Dgnome=false"
-PACKAGECONFIG[gssapi] = "-Dgssapi=enabled,-Dgssapi=disabled,krb5"
-
-EXTRA_OEMESON:append = " -Dvapi=disabled -Dtls_check=false"
-
-GTKDOC_MESON_OPTION = "gtk_doc"
-
-# When built without gnome support, libsoup-2.4 will contain only one shared lib
-# and will therefore become subject to renaming by debian.bbclass. Prevent
-# renaming in order to keep the package name consistent regardless of whether
-# gnome support is enabled or disabled.
-DEBIAN_NOAUTONAME:${PN} = "1"
-
-# glib-networking is needed for SSL, proxies, etc.
-RRECOMMENDS:${PN} = "glib-networking"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libsoup/libsoup-2.4_2.74.0.bb b/poky/meta/recipes-support/libsoup/libsoup-2.4_2.74.0.bb
new file mode 100644
index 0000000..ea34373
--- /dev/null
+++ b/poky/meta/recipes-support/libsoup/libsoup-2.4_2.74.0.bb
@@ -0,0 +1,46 @@
+SUMMARY = "An HTTP library implementation in C"
+DESCRIPTION = "libsoup is an HTTP client/server library for GNOME. It uses GObjects \
+and the glib main loop, to integrate well with GNOME applications."
+HOMEPAGE = "https://wiki.gnome.org/Projects/libsoup"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "x11/gnome/libs"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 libpsl"
+
+SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
+
+SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz"
+SRC_URI[sha256sum] = "33b1d4e0d639456c675c227877e94a8078d731233e2d57689c11abcef7d3c48e"
+
+CVE_PRODUCT = "libsoup"
+
+S = "${WORKDIR}/libsoup-${PV}"
+
+inherit meson gettext pkgconfig upstream-version-is-even gobject-introspection gtk-doc
+
+UPSTREAM_CHECK_REGEX = "libsoup-(?P<pver>2(\.(?!99)\d+)+)\.tar"
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+
+# libsoup-gnome is entirely deprecated and just stubs in 2.42 onwards. Disable by default.
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gnome] = "-Dgnome=true,-Dgnome=false"
+PACKAGECONFIG[gssapi] = "-Dgssapi=enabled,-Dgssapi=disabled,krb5"
+
+EXTRA_OEMESON:append = " -Dvapi=disabled -Dtls_check=false"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+# When built without gnome support, libsoup-2.4 will contain only one shared lib
+# and will therefore become subject to renaming by debian.bbclass. Prevent
+# renaming in order to keep the package name consistent regardless of whether
+# gnome support is enabled or disabled.
+DEBIAN_NOAUTONAME:${PN} = "1"
+
+# glib-networking is needed for SSL, proxies, etc.
+RRECOMMENDS:${PN} = "glib-networking"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libsoup/libsoup_3.0.1.bb b/poky/meta/recipes-support/libsoup/libsoup_3.0.1.bb
new file mode 100644
index 0000000..1e4d3b2
--- /dev/null
+++ b/poky/meta/recipes-support/libsoup/libsoup_3.0.1.bb
@@ -0,0 +1,44 @@
+SUMMARY = "An HTTP library implementation in C"
+DESCRIPTION = "libsoup is an HTTP client/server library for GNOME. It uses GObjects \
+and the glib main loop, to integrate well with GNOME applications."
+HOMEPAGE = "https://wiki.gnome.org/Projects/libsoup"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "x11/gnome/libs"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 libpsl nghttp2"
+
+SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
+
+SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz"
+SRC_URI[sha256sum] = "6f0c316d10f8458b96f564c7644be3c2011bd75ad5054c8db26afb0c9a91bc47"
+
+PROVIDES = "libsoup-3.0"
+CVE_PRODUCT = "libsoup"
+
+S = "${WORKDIR}/libsoup-${PV}"
+
+inherit meson gettext pkgconfig upstream-version-is-even gobject-introspection gtk-doc
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+
+# libsoup-gnome is entirely deprecated and just stubs in 2.42 onwards. Disable by default.
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gssapi] = "-Dgssapi=enabled,-Dgssapi=disabled,krb5"
+
+EXTRA_OEMESON:append = " -Dvapi=disabled -Dtls_check=false"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+# When built without gnome support, libsoup will contain only one shared lib
+# and will therefore become subject to renaming by debian.bbclass. Prevent
+# renaming in order to keep the package name consistent regardless of whether
+# gnome support is enabled or disabled.
+DEBIAN_NOAUTONAME:${PN} = "1"
+
+# glib-networking is needed for SSL, proxies, etc.
+RRECOMMENDS:${PN} = "glib-networking"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libssh2/files/0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch b/poky/meta/recipes-support/libssh2/files/0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch
index 5ff9bf8..b1204e4 100644
--- a/poky/meta/recipes-support/libssh2/files/0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch
+++ b/poky/meta/recipes-support/libssh2/files/0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch
@@ -1,4 +1,4 @@
-From f9e3e2ee7b18ba5bb8efe083171f3e701eb0a663 Mon Sep 17 00:00:00 2001
+From f6abce5ba41a412a247250dcd80e387e53474466 Mon Sep 17 00:00:00 2001
 From: Your Name <you@example.com>
 Date: Mon, 28 Dec 2020 02:08:03 +0000
 Subject: [PATCH] Don't let host enviroment to decide if a test is build
@@ -9,6 +9,7 @@
 Upstream-Status: Inappropriate[oe specific]
 
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
 ---
  tests/Makefile.am | 6 +-----
  1 file changed, 1 insertion(+), 5 deletions(-)
@@ -41,6 +42,3 @@
 -endif
 \ No newline at end of file
 +endif
--- 
-2.20.1
-
diff --git a/poky/meta/recipes-support/libssh2/files/0001-configure-Conditionally-undefine-backend-m4-macro.patch b/poky/meta/recipes-support/libssh2/files/0001-configure-Conditionally-undefine-backend-m4-macro.patch
deleted file mode 100644
index 1128c7e..0000000
--- a/poky/meta/recipes-support/libssh2/files/0001-configure-Conditionally-undefine-backend-m4-macro.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From efe7101786193eaddb749c0583af6b54aec6f289 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 2 Feb 2021 18:45:16 -0800
-Subject: [PATCH] configure: Conditionally undefine backend m4 macro
-
-Unlike the M4 builtin, this macro fails if macro is not defined
-therefore recover the behavior of the builtin.
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index fe5054a..758f8c2 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -127,7 +127,7 @@ fi
- m4_set_foreach([crypto_backends], [backend],
-   [AM_CONDITIONAL(m4_toupper(backend), test "$found_crypto" = "backend")]
- )
--m4_undefine([backend])
-+m4_ifdef([backend], [m4_undefine([backend])])
- 
- 
- # libz
--- 
-2.30.0
-
diff --git a/poky/meta/recipes-support/libssh2/files/0001-kex.c-move-EC-macro-outside-of-if-check-549-550.patch b/poky/meta/recipes-support/libssh2/files/0001-kex.c-move-EC-macro-outside-of-if-check-549-550.patch
deleted file mode 100644
index b331c1b..0000000
--- a/poky/meta/recipes-support/libssh2/files/0001-kex.c-move-EC-macro-outside-of-if-check-549-550.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 1f76151c92e1b52e9c24ebf06adc77fbd6c062bc Mon Sep 17 00:00:00 2001
-From: Will Cosgrove <will@panic.com>
-Date: Tue, 26 Jan 2021 11:41:21 -0800
-Subject: [PATCH] kex.c: move EC macro outside of if check #549 (#550)
-
-File: kex.c
-
-Notes:
-Moved the macro LIBSSH2_KEX_METHOD_EC_SHA_HASH_CREATE_VERIFY outside of the LIBSSH2_ECDSA since it's also now used by the ED25519 code.
-
-Sha 256, 384 and 512 need to be defined for all backends now even if they aren't used directly. I believe this is already the case, but just a heads up.
-
-Credit:
-Stefan-Ghinea
-
-Upstream-Status: Backport
-
-Reference to upstream patch:
-https://github.com/libssh2/libssh2/commit/1f76151c92e1b52e9c24ebf06adc77fbd6c062bc
-
-Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
----
- src/kex.c | 66 +++++++++++++++++++++++++++----------------------------
- 1 file changed, 33 insertions(+), 33 deletions(-)
-
-diff --git a/src/kex.c b/src/kex.c
-index cb16639..19ab6ec 100644
---- a/src/kex.c
-+++ b/src/kex.c
-@@ -1885,39 +1885,6 @@ kex_method_diffie_hellman_group_exchange_sha256_key_exchange
- }
- 
- 
--#if LIBSSH2_ECDSA
--
--/* kex_session_ecdh_curve_type
-- * returns the EC curve type by name used in key exchange
-- */
--
--static int
--kex_session_ecdh_curve_type(const char *name, libssh2_curve_type *out_type)
--{
--    int ret = 0;
--    libssh2_curve_type type;
--
--    if(name == NULL)
--        return -1;
--
--    if(strcmp(name, "ecdh-sha2-nistp256") == 0)
--        type = LIBSSH2_EC_CURVE_NISTP256;
--    else if(strcmp(name, "ecdh-sha2-nistp384") == 0)
--        type = LIBSSH2_EC_CURVE_NISTP384;
--    else if(strcmp(name, "ecdh-sha2-nistp521") == 0)
--        type = LIBSSH2_EC_CURVE_NISTP521;
--    else {
--        ret = -1;
--    }
--
--    if(ret == 0 && out_type) {
--        *out_type = type;
--    }
--
--    return ret;
--}
--
--
- /* LIBSSH2_KEX_METHOD_EC_SHA_HASH_CREATE_VERIFY
-  *
-  * Macro that create and verifies EC SHA hash with a given digest bytes
-@@ -2027,6 +1994,39 @@ kex_session_ecdh_curve_type(const char *name, libssh2_curve_type *out_type)
- }                                                                       \
- 
- 
-+#if LIBSSH2_ECDSA
-+
-+/* kex_session_ecdh_curve_type
-+ * returns the EC curve type by name used in key exchange
-+ */
-+
-+static int
-+kex_session_ecdh_curve_type(const char *name, libssh2_curve_type *out_type)
-+{
-+    int ret = 0;
-+    libssh2_curve_type type;
-+
-+    if(name == NULL)
-+        return -1;
-+
-+    if(strcmp(name, "ecdh-sha2-nistp256") == 0)
-+        type = LIBSSH2_EC_CURVE_NISTP256;
-+    else if(strcmp(name, "ecdh-sha2-nistp384") == 0)
-+        type = LIBSSH2_EC_CURVE_NISTP384;
-+    else if(strcmp(name, "ecdh-sha2-nistp521") == 0)
-+        type = LIBSSH2_EC_CURVE_NISTP521;
-+    else {
-+        ret = -1;
-+    }
-+
-+    if(ret == 0 && out_type) {
-+        *out_type = type;
-+    }
-+
-+    return ret;
-+}
-+
-+
- /* ecdh_sha2_nistp
-  * Elliptic Curve Diffie Hellman Key Exchange
-  */
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-support/libssh2/files/CVE-2019-17498.patch b/poky/meta/recipes-support/libssh2/files/CVE-2019-17498.patch
deleted file mode 100644
index 0010800..0000000
--- a/poky/meta/recipes-support/libssh2/files/CVE-2019-17498.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From dedcbd106f8e52d5586b0205bc7677e4c9868f9c Mon Sep 17 00:00:00 2001
-From: Will Cosgrove <will@panic.com>
-Date: Fri, 30 Aug 2019 09:57:38 -0700
-Subject: [PATCH] packet.c: improve message parsing (#402)
-
-* packet.c: improve parsing of packets
-
-file: packet.c
-
-notes:
-Use _libssh2_get_string API in SSH_MSG_DEBUG/SSH_MSG_DISCONNECT. Additional uint32 bounds check in SSH_MSG_GLOBAL_REQUEST.
-
-Upstream-Status: Backport
-CVE: CVE-2019-17498
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- src/packet.c | 68 ++++++++++++++++++++++------------------------------
- 1 file changed, 29 insertions(+), 39 deletions(-)
-
-diff --git a/src/packet.c b/src/packet.c
-index 38ab629..2e01bfc 100644
---- a/src/packet.c
-+++ b/src/packet.c
-@@ -419,8 +419,8 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
-                     size_t datalen, int macstate)
- {
-     int rc = 0;
--    char *message = NULL;
--    char *language = NULL;
-+    unsigned char *message = NULL;
-+    unsigned char *language = NULL;
-     size_t message_len = 0;
-     size_t language_len = 0;
-     LIBSSH2_CHANNEL *channelp = NULL;
-@@ -472,33 +472,23 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
- 
-         case SSH_MSG_DISCONNECT:
-             if(datalen >= 5) {
--                size_t reason = _libssh2_ntohu32(data + 1);
-+                uint32_t reason = 0;
-+                struct string_buf buf;
-+                buf.data = (unsigned char *)data;
-+                buf.dataptr = buf.data;
-+                buf.len = datalen;
-+                buf.dataptr++; /* advance past type */
- 
--                if(datalen >= 9) {
--                    message_len = _libssh2_ntohu32(data + 5);
-+                _libssh2_get_u32(&buf, &reason);
-+                _libssh2_get_string(&buf, &message, &message_len);
-+                _libssh2_get_string(&buf, &language, &language_len);
- 
--                    if(message_len < datalen-13) {
--                        /* 9 = packet_type(1) + reason(4) + message_len(4) */
--                        message = (char *) data + 9;
--
--                        language_len =
--                            _libssh2_ntohu32(data + 9 + message_len);
--                        language = (char *) data + 9 + message_len + 4;
--
--                        if(language_len > (datalen-13-message_len)) {
--                            /* bad input, clear info */
--                            language = message = NULL;
--                            language_len = message_len = 0;
--                        }
--                    }
--                    else
--                        /* bad size, clear it */
--                        message_len = 0;
--                }
-                 if(session->ssh_msg_disconnect) {
--                    LIBSSH2_DISCONNECT(session, reason, message,
--                                       message_len, language, language_len);
-+                    LIBSSH2_DISCONNECT(session, reason, (const char *)message,
-+                                       message_len, (const char *)language,
-+                                       language_len);
-                 }
-+
-                 _libssh2_debug(session, LIBSSH2_TRACE_TRANS,
-                                "Disconnect(%d): %s(%s)", reason,
-                                message, language);
-@@ -539,24 +529,24 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
-                 int always_display = data[1];
- 
-                 if(datalen >= 6) {
--                    message_len = _libssh2_ntohu32(data + 2);
--
--                    if(message_len <= (datalen - 10)) {
--                        /* 6 = packet_type(1) + display(1) + message_len(4) */
--                        message = (char *) data + 6;
--                        language_len = _libssh2_ntohu32(data + 6 +
--                                                        message_len);
--
--                        if(language_len <= (datalen - 10 - message_len))
--                            language = (char *) data + 10 + message_len;
--                    }
-+                    struct string_buf buf;
-+                    buf.data = (unsigned char *)data;
-+                    buf.dataptr = buf.data;
-+                    buf.len = datalen;
-+                    buf.dataptr += 2; /* advance past type & always display */
-+
-+                    _libssh2_get_string(&buf, &message, &message_len);
-+                    _libssh2_get_string(&buf, &language, &language_len);
-                 }
- 
-                 if(session->ssh_msg_debug) {
--                    LIBSSH2_DEBUG(session, always_display, message,
--                                  message_len, language, language_len);
-+                    LIBSSH2_DEBUG(session, always_display,
-+                                  (const char *)message,
-+                                  message_len, (const char *)language,
-+                                  language_len);
-                 }
-             }
-+
-             /*
-              * _libssh2_debug will actually truncate this for us so
-              * that it's not an inordinate about of data
-@@ -579,7 +569,7 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
-                 uint32_t len = 0;
-                 unsigned char want_reply = 0;
-                 len = _libssh2_ntohu32(data + 1);
--                if(datalen >= (6 + len)) {
-+                if((len <= (UINT_MAX - 6)) && (datalen >= (6 + len))) {
-                     want_reply = data[5 + len];
-                     _libssh2_debug(session,
-                                    LIBSSH2_TRACE_CONN,
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-support/libssh2/files/run-ptest b/poky/meta/recipes-support/libssh2/files/run-ptest
index 5fd7ec6..9e2fce2 100644
--- a/poky/meta/recipes-support/libssh2/files/run-ptest
+++ b/poky/meta/recipes-support/libssh2/files/run-ptest
@@ -2,7 +2,8 @@
 
 ptestdir=$(dirname "$(readlink -f "$0")")
 cd tests
-for test in simple ssh2.sh mansyntax.sh
+# omit ssh2.sh until https://github.com/libssh2/libssh2/issues/630 is fixed
+for test in simple mansyntax.sh
 do
 	./../test-driver --test-name $test --log-file ../$test.log --trs-file ../$test.trs --color-tests no --enable-hard-errors yes --expect-failure no -- ./$test
 done
diff --git a/poky/meta/recipes-support/libssh2/libssh2_1.10.0.bb b/poky/meta/recipes-support/libssh2/libssh2_1.10.0.bb
new file mode 100644
index 0000000..072d681
--- /dev/null
+++ b/poky/meta/recipes-support/libssh2/libssh2_1.10.0.bb
@@ -0,0 +1,50 @@
+SUMMARY = "A client-side C library implementing the SSH2 protocol"
+HOMEPAGE = "http://www.libssh2.org/"
+SECTION = "libs"
+
+DEPENDS = "zlib"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3e089ad0cf27edf1e7f261dfcd06acc7"
+
+SRC_URI = "http://www.libssh2.org/download/${BP}.tar.gz \
+           file://run-ptest \
+           "
+
+SRC_URI:append:ptest = " file://0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch"
+
+SRC_URI[sha256sum] = "2d64e90f3ded394b91d3a2e774ca203a4179f69aebee03003e5a6fa621e41d51"
+
+inherit autotools pkgconfig ptest
+
+EXTRA_OECONF += "\
+                 --with-libz \
+                 --with-libz-prefix=${STAGING_LIBDIR} \
+                "
+
+# only one of openssl and gcrypt could be set
+PACKAGECONFIG ??= "openssl"
+PACKAGECONFIG[openssl] = "--with-crypto=openssl --with-libssl-prefix=${STAGING_LIBDIR}, , openssl"
+PACKAGECONFIG[gcrypt] = "--with-crypto=libgcrypt --with-libgcrypt-prefix=${STAGING_EXECPREFIXDIR}, , libgcrypt"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# required for ptest on documentation
+RDEPENDS:${PN}-ptest = "man-db openssh util-linux-col"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-en-us"
+
+do_compile_ptest() {
+	sed -i "/\$(MAKE) \$(AM_MAKEFLAGS) check-TESTS/d" tests/Makefile
+	oe_runmake check
+}
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	install -m 0755 ${S}/test-driver ${D}${PTEST_PATH}/
+	cp -rf ${B}/tests/.libs/* ${D}${PTEST_PATH}/tests/
+	cp -rf ${S}/tests/mansyntax.sh  ${D}${PTEST_PATH}/tests/
+	cp -rf ${S}/tests/ssh2.sh  ${D}${PTEST_PATH}/tests/
+	cp -rf ${S}/tests/etc ${D}${PTEST_PATH}/tests/
+	mkdir -p ${D}${PTEST_PATH}/docs
+	cp -r ${S}/docs/* ${D}${PTEST_PATH}/docs/
+}
diff --git a/poky/meta/recipes-support/libssh2/libssh2_1.9.0.bb b/poky/meta/recipes-support/libssh2/libssh2_1.9.0.bb
deleted file mode 100644
index a0cbb6a..0000000
--- a/poky/meta/recipes-support/libssh2/libssh2_1.9.0.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-SUMMARY = "A client-side C library implementing the SSH2 protocol"
-HOMEPAGE = "http://www.libssh2.org/"
-SECTION = "libs"
-
-DEPENDS = "zlib"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c5cf34fc0acb44b082ef50ef5e4354ca"
-
-SRC_URI = "http://www.libssh2.org/download/${BP}.tar.gz \
-           file://CVE-2019-17498.patch \
-           file://0001-configure-Conditionally-undefine-backend-m4-macro.patch \
-           file://run-ptest \
-           file://0001-kex.c-move-EC-macro-outside-of-if-check-549-550.patch \
-"
-
-SRC_URI:append:ptest = " file://0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch"
-
-SRC_URI[md5sum] = "1beefafe8963982adc84b408b2959927"
-SRC_URI[sha256sum] = "d5fb8bd563305fd1074dda90bd053fb2d29fc4bce048d182f96eaa466dfadafd"
-
-inherit autotools pkgconfig ptest
-
-EXTRA_OECONF += "\
-                 --with-libz \
-                 --with-libz-prefix=${STAGING_LIBDIR} \
-                "
-
-# only one of openssl and gcrypt could be set
-PACKAGECONFIG ??= "openssl"
-PACKAGECONFIG[openssl] = "--with-crypto=openssl --with-libssl-prefix=${STAGING_LIBDIR}, , openssl"
-PACKAGECONFIG[gcrypt] = "--with-crypto=libgcrypt --with-libgcrypt-prefix=${STAGING_EXECPREFIXDIR}, , libgcrypt"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# required for ptest on documentation
-RDEPENDS:${PN}-ptest = "man-db openssh util-linux-col"
-RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-en-us"
-
-do_compile_ptest() {
-	sed -i "/\$(MAKE) \$(AM_MAKEFLAGS) check-TESTS/d" tests/Makefile
-	oe_runmake check
-}
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	install -m 0755 ${S}/test-driver ${D}${PTEST_PATH}/
-	cp -rf ${B}/tests/.libs/* ${D}${PTEST_PATH}/tests/
-	cp -rf ${S}/tests/mansyntax.sh  ${D}${PTEST_PATH}/tests/
-	cp -rf ${S}/tests/ssh2.sh  ${D}${PTEST_PATH}/tests/
-	cp -rf ${S}/tests/etc ${D}${PTEST_PATH}/tests/
-	mkdir -p ${D}${PTEST_PATH}/docs
-	cp -r ${S}/docs/* ${D}${PTEST_PATH}/docs/
-}
diff --git a/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2/0001-fetch-ocsp-response-use-python3.patch b/poky/meta/recipes-support/nghttp2/nghttp2/0001-fetch-ocsp-response-use-python3.patch
similarity index 100%
rename from meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2/0001-fetch-ocsp-response-use-python3.patch
rename to poky/meta/recipes-support/nghttp2/nghttp2/0001-fetch-ocsp-response-use-python3.patch
diff --git a/poky/meta/recipes-support/nghttp2/nghttp2_1.45.1.bb b/poky/meta/recipes-support/nghttp2/nghttp2_1.45.1.bb
new file mode 100644
index 0000000..3de509a
--- /dev/null
+++ b/poky/meta/recipes-support/nghttp2/nghttp2_1.45.1.bb
@@ -0,0 +1,35 @@
+SUMMARY = "HTTP/2 C Library and tools"
+HOMEPAGE = "https://nghttp2.org/"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=764abdf30b2eadd37ce47dcbce0ea1ec"
+
+UPSTREAM_CHECK_URI = "https://github.com/nghttp2/nghttp2/releases"
+
+SRC_URI = "\
+    https://github.com/nghttp2/nghttp2/releases/download/v${PV}/nghttp2-${PV}.tar.xz \
+    file://0001-fetch-ocsp-response-use-python3.patch \
+"
+SRC_URI[sha256sum] = "abdc4addccadbc7d89abe27c4d6427d78e57d139f69c1f45749227393c68bf79"
+
+inherit cmake manpages python3native
+PACKAGECONFIG[manpages] = ""
+
+# examples are never installed, and don't need to be built in the
+# first place
+EXTRA_OECMAKE = "-DENABLE_EXAMPLES=OFF -DENABLE_APP=OFF -DENABLE_HPACK_TOOLS=OFF"
+
+PACKAGES =+ "lib${PN} ${PN}-client ${PN}-proxy ${PN}-server"
+
+RDEPENDS:${PN} = "${PN}-client (>= ${PV}) ${PN}-proxy (>= ${PV}) ${PN}-server (>= ${PV})"
+RDEPENDS:${PN}:class-native = ""
+RDEPENDS:${PN}-proxy = "openssl python3-core python3-io python3-shell"
+
+ALLOW_EMPTY:${PN} = "1"
+FILES:${PN} = ""
+FILES:lib${PN} = "${libdir}/*${SOLIBS}"
+FILES:${PN}-client = "${bindir}/h2load ${bindir}/nghttp"
+FILES:${PN}-proxy = "${bindir}/nghttpx ${datadir}/${BPN}/fetch-ocsp-response"
+FILES:${PN}-server = "${bindir}/nghttpd"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/pinentry/pinentry-1.1.1/gpg-error_pkconf.patch b/poky/meta/recipes-support/pinentry/pinentry-1.1.1/gpg-error_pkconf.patch
deleted file mode 100644
index 537735d..0000000
--- a/poky/meta/recipes-support/pinentry/pinentry-1.1.1/gpg-error_pkconf.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-From 7b60f1563ecdb7020c145de8a96cae1c0a66c595 Mon Sep 17 00:00:00 2001
-From: Armin Kuster <akuster@mvista.com>
-Date: Fri, 2 Sep 2005 11:50:01 +0000
-Subject: [PATCH] Add gtk+, avahi, dbus-0.34 (.36 coming soon) and
-
-Convert to pkg-config support to match changes done to
-the gpg-error recipe for gpg-error.pc  generation.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- m4/gpg-error.m4 | 141 ++----------------------------------------------
- 1 file changed, 4 insertions(+), 137 deletions(-)
-
-diff --git a/m4/gpg-error.m4 b/m4/gpg-error.m4
-index c9b235f..a4fd41c 100644
---- a/m4/gpg-error.m4
-+++ b/m4/gpg-error.m4
-@@ -25,141 +25,12 @@ dnl config script does not match the host specification the script
- dnl is added to the gpg_config_script_warn variable.
- dnl
- AC_DEFUN([AM_PATH_GPG_ERROR],
--[ AC_REQUIRE([AC_CANONICAL_HOST])
--  gpg_error_config_prefix=""
--  dnl --with-libgpg-error-prefix=PFX is the preferred name for this option,
--  dnl since that is consistent with how our three siblings use the directory/
--  dnl package name in --with-$dir_name-prefix=PFX.
--  AC_ARG_WITH(libgpg-error-prefix,
--              AS_HELP_STRING([--with-libgpg-error-prefix=PFX],
--                             [prefix where GPG Error is installed (optional)]),
--              [gpg_error_config_prefix="$withval"])
--
--  dnl Accept --with-gpg-error-prefix and make it work the same as
--  dnl --with-libgpg-error-prefix above, for backwards compatibility,
--  dnl but do not document this old, inconsistently-named option.
--  AC_ARG_WITH(gpg-error-prefix,,
--              [gpg_error_config_prefix="$withval"])
--
--  if test x"${GPG_ERROR_CONFIG}" = x ; then
--     if test x"${gpg_error_config_prefix}" != x ; then
--        GPG_ERROR_CONFIG="${gpg_error_config_prefix}/bin/gpg-error-config"
--     else
--       case "${SYSROOT}" in
--         /*)
--           if test -x "${SYSROOT}/bin/gpg-error-config" ; then
--             GPG_ERROR_CONFIG="${SYSROOT}/bin/gpg-error-config"
--           fi
--           ;;
--         '')
--           ;;
--          *)
--           AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.])
--           ;;
--       esac
--     fi
--  fi
--
--  AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
--  min_gpg_error_version=ifelse([$1], ,1.33,$1)
--  ok=no
--
--  if test "$prefix" = NONE ; then
--    prefix_option_expanded=/usr/local
--  else
--    prefix_option_expanded="$prefix"
--  fi
--  if test "$exec_prefix" = NONE ; then
--    exec_prefix_option_expanded=$prefix_option_expanded
--  else
--    exec_prefix_option_expanded=$(prefix=$prefix_option_expanded eval echo $exec_prefix)
--  fi
--  libdir_option_expanded=$(prefix=$prefix_option_expanded exec_prefix=$exec_prefix_option_expanded eval echo $libdir)
--
--  if test -f $libdir_option_expanded/pkgconfig/gpg-error.pc; then
--    gpgrt_libdir=$libdir_option_expanded
--  else
--    if crt1_path=$(${CC:-cc} -print-file-name=crt1.o 2>/dev/null); then
--      if possible_libdir=$(cd ${crt1_path%/*} && pwd 2>/dev/null); then
--        if test -f $possible_libdir/pkgconfig/gpg-error.pc; then
--          gpgrt_libdir=$possible_libdir
--        fi
--      fi
--    fi
--  fi
--
--  if test "$GPG_ERROR_CONFIG" = "no" -a -n "$gpgrt_libdir"; then
--    AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no)
--    if test "$GPGRT_CONFIG" = "no"; then
--      unset GPGRT_CONFIG
--    else
--      GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
--      if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
--        GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
--        AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
--        gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
--      else
--        unset GPGRT_CONFIG
--      fi
--    fi
--  else
--    gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
--  fi
--  if test "$GPG_ERROR_CONFIG" != "no"; then
--    req_major=`echo $min_gpg_error_version | \
--               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
--    req_minor=`echo $min_gpg_error_version | \
--               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
--    major=`echo $gpg_error_config_version | \
--               sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
--    minor=`echo $gpg_error_config_version | \
--               sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
--    if test "$major" -gt "$req_major"; then
--        ok=yes
--    else
--        if test "$major" -eq "$req_major"; then
--            if test "$minor" -ge "$req_minor"; then
--               ok=yes
--            fi
--        fi
--    fi
--    if test -z "$GPGRT_CONFIG" -a -n "$gpgrt_libdir"; then
--      if test "$major" -gt 1 -o "$major" -eq 1 -a "$minor" -ge 33; then
--        AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no)
--        if test "$GPGRT_CONFIG" = "no"; then
--          unset GPGRT_CONFIG
--        else
--          GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
--          if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
--            GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
--            AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
--          else
--            unset GPGRT_CONFIG
--          fi
--        fi
--      fi
--    fi
--  fi
--  AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
-+[
-+  min_gpg_error_version=ifelse([$1], ,0.0,$1)
-+  PKG_CHECK_MODULES(GPG_ERROR, [gpg-error >= $min_gpg_error_version gpg-error], [ok=yes], [ok=no])
-   if test $ok = yes; then
--    GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG --cflags`
--    GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG --libs`
--    if test -z "$GPGRT_CONFIG"; then
--      GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --mt --cflags 2>/dev/null`
--      GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --mt --libs 2>/dev/null`
--    else
--      GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --variable=mtcflags 2>/dev/null`
--      GPG_ERROR_MT_CFLAGS="$GPG_ERROR_CFLAGS${GPG_ERROR_CFLAGS:+ }$GPG_ERROR_MT_CFLAGS"
--      GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --variable=mtlibs 2>/dev/null`
--      GPG_ERROR_MT_LIBS="$GPG_ERROR_LIBS${GPG_ERROR_LIBS:+ }$GPG_ERROR_MT_LIBS"
--    fi
--    AC_MSG_RESULT([yes ($gpg_error_config_version)])
-     ifelse([$2], , :, [$2])
--    if test -z "$GPGRT_CONFIG"; then
--      gpg_error_config_host=`$GPG_ERROR_CONFIG --host 2>/dev/null || echo none`
--    else
--      gpg_error_config_host=`$GPG_ERROR_CONFIG --variable=host 2>/dev/null || echo none`
--    fi
-+    gpg_error_config_host=`$PKG_CONFIG --host gpg-error 2>/dev/null || echo none`
-     if test x"$gpg_error_config_host" != xnone ; then
-       if test x"$gpg_error_config_host" != x"$host" ; then
-   AC_MSG_WARN([[
-@@ -174,10 +45,6 @@ AC_DEFUN([AM_PATH_GPG_ERROR],
-       fi
-     fi
-   else
--    GPG_ERROR_CFLAGS=""
--    GPG_ERROR_LIBS=""
--    GPG_ERROR_MT_CFLAGS=""
--    GPG_ERROR_MT_LIBS=""
-     AC_MSG_RESULT(no)
-     ifelse([$3], , :, [$3])
-   fi
diff --git a/poky/meta/recipes-support/pinentry/pinentry-1.2.0/gpg-error_pkconf.patch b/poky/meta/recipes-support/pinentry/pinentry-1.2.0/gpg-error_pkconf.patch
new file mode 100644
index 0000000..507c0c3
--- /dev/null
+++ b/poky/meta/recipes-support/pinentry/pinentry-1.2.0/gpg-error_pkconf.patch
@@ -0,0 +1,195 @@
+From 54a4c9d3e5f1897ed4b978d5cdee646ca7a4f637 Mon Sep 17 00:00:00 2001
+From: Armin Kuster <akuster@mvista.com>
+Date: Fri, 2 Sep 2005 11:50:01 +0000
+Subject: [PATCH] Add gtk+, avahi, dbus-0.34 (.36 coming soon) and
+
+Convert to pkg-config support to match changes done to
+the gpg-error recipe for gpg-error.pc  generation.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ m4/gpg-error.m4 | 159 ++----------------------------------------------
+ 1 file changed, 4 insertions(+), 155 deletions(-)
+
+diff --git a/m4/gpg-error.m4 b/m4/gpg-error.m4
+index 56a5d07..c0bec1f 100644
+--- a/m4/gpg-error.m4
++++ b/m4/gpg-error.m4
+@@ -26,159 +26,12 @@ dnl config script does not match the host specification the script
+ dnl is added to the gpg_config_script_warn variable.
+ dnl
+ AC_DEFUN([AM_PATH_GPG_ERROR],
+-[ AC_REQUIRE([AC_CANONICAL_HOST])
+-  gpg_error_config_prefix=""
+-  dnl --with-libgpg-error-prefix=PFX is the preferred name for this option,
+-  dnl since that is consistent with how our three siblings use the directory/
+-  dnl package name in --with-$dir_name-prefix=PFX.
+-  AC_ARG_WITH(libgpg-error-prefix,
+-              AS_HELP_STRING([--with-libgpg-error-prefix=PFX],
+-                             [prefix where GPG Error is installed (optional)]),
+-              [gpg_error_config_prefix="$withval"])
+-
+-  dnl Accept --with-gpg-error-prefix and make it work the same as
+-  dnl --with-libgpg-error-prefix above, for backwards compatibility,
+-  dnl but do not document this old, inconsistently-named option.
+-  AC_ARG_WITH(gpg-error-prefix,,
+-              [gpg_error_config_prefix="$withval"])
+-
+-  if test x"${GPG_ERROR_CONFIG}" = x ; then
+-     if test x"${gpg_error_config_prefix}" != x ; then
+-        GPG_ERROR_CONFIG="${gpg_error_config_prefix}/bin/gpg-error-config"
+-     else
+-       case "${SYSROOT}" in
+-         /*)
+-           if test -x "${SYSROOT}/bin/gpg-error-config" ; then
+-             GPG_ERROR_CONFIG="${SYSROOT}/bin/gpg-error-config"
+-           fi
+-           ;;
+-         '')
+-           ;;
+-          *)
+-           AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.])
+-           ;;
+-       esac
+-     fi
+-  fi
+-
+-  AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
+-  min_gpg_error_version=ifelse([$1], ,1.33,$1)
+-  ok=no
+-
+-  AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no, [$prefix/bin:$PATH])
+-  if test "$GPGRT_CONFIG" != "no"; then
+-    # Determine gpgrt_libdir
+-    #
+-    # Get the prefix of gpgrt-config assuming it's something like:
+-    #   <PREFIX>/bin/gpgrt-config
+-    gpgrt_prefix=${GPGRT_CONFIG%/*/*}
+-    possible_libdir1=${gpgrt_prefix}/lib
+-    # Determine by using system libdir-format with CC, it's like:
+-    #   Normal style: /usr/lib
+-    #   GNU cross style: /usr/<triplet>/lib
+-    #   Debian style: /usr/lib/<multiarch-name>
+-    #   Fedora/openSUSE style: /usr/lib, /usr/lib32 or /usr/lib64
+-    # It is assumed that CC is specified to the one of host on cross build.
+-    if libdir_candidates=$(${CC:-cc} -print-search-dirs | \
+-          sed -n -e "/^libraries/{s/libraries: =//;s/:/\\
+-/g;p;}"); then
+-      # From the output of -print-search-dirs, select valid pkgconfig dirs.
+-      libdir_candidates=$(for dir in $libdir_candidates; do
+-        if p=$(cd $dir 2>/dev/null && pwd); then
+-          test -d "$p/pkgconfig" && echo $p;
+-        fi
+-      done)
+-
+-      for possible_libdir0 in $libdir_candidates; do
+-        # possible_libdir0:
+-        #   Fallback candidate, the one of system-installed (by $CC)
+-        #   (/usr/<triplet>/lib, /usr/lib/<multiarch-name> or /usr/lib32)
+-        # possible_libdir1:
+-        #   Another candidate, user-locally-installed
+-        #   (<gpgrt_prefix>/lib)
+-        # possible_libdir2
+-        #   Most preferred
+-        #   (<gpgrt_prefix>/<triplet>/lib,
+-        #    <gpgrt_prefix>/lib/<multiarch-name> or <gpgrt_prefix>/lib32)
+-        if test "${possible_libdir0##*/}" = "lib"; then
+-          possible_prefix0=${possible_libdir0%/lib}
+-          possible_prefix0_triplet=${possible_prefix0##*/}
+-          if test -z "$possible_prefix0_triplet"; then
+-            continue
+-          fi
+-          possible_libdir2=${gpgrt_prefix}/$possible_prefix0_triplet/lib
+-        else
+-          possible_prefix0=${possible_libdir0%%/lib*}
+-          possible_libdir2=${gpgrt_prefix}${possible_libdir0#$possible_prefix0}
+-        fi
+-        if test -f ${possible_libdir2}/pkgconfig/gpg-error.pc; then
+-          gpgrt_libdir=${possible_libdir2}
+-        elif test -f ${possible_libdir1}/pkgconfig/gpg-error.pc; then
+-          gpgrt_libdir=${possible_libdir1}
+-        elif test -f ${possible_libdir0}/pkgconfig/gpg-error.pc; then
+-          gpgrt_libdir=${possible_libdir0}
+-        fi
+-        if test -n "$gpgrt_libdir"; then break; fi
+-      done
+-    else
+-      # When we cannot determine system libdir-format, use this:
+-      gpgrt_libdir=${possible_libdir1}
+-    fi
+-  else
+-    unset GPGRT_CONFIG
+-  fi
+-
+-  if test -n "$gpgrt_libdir"; then
+-    GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
+-    if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
+-      GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
+-      AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
+-      gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
+-    else
+-      unset GPGRT_CONFIG
+-    fi
+-  elif test "$GPG_ERROR_CONFIG" != "no"; then
+-    gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
+-  fi
+-  if test "$GPG_ERROR_CONFIG" != "no"; then
+-    req_major=`echo $min_gpg_error_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
+-    req_minor=`echo $min_gpg_error_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
+-    major=`echo $gpg_error_config_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
+-    minor=`echo $gpg_error_config_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
+-    if test "$major" -gt "$req_major"; then
+-        ok=yes
+-    else
+-        if test "$major" -eq "$req_major"; then
+-            if test "$minor" -ge "$req_minor"; then
+-               ok=yes
+-            fi
+-        fi
+-    fi
+-  fi
+-  AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
++[
++  min_gpg_error_version=ifelse([$1], ,0.0,$1)
++  PKG_CHECK_MODULES(GPG_ERROR, [gpg-error >= $min_gpg_error_version gpg-error], [ok=yes], [ok=no])
+   if test $ok = yes; then
+-    GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG --cflags`
+-    GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG --libs`
+-    if test -z "$GPGRT_CONFIG"; then
+-      GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --mt --cflags 2>/dev/null`
+-      GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --mt --libs 2>/dev/null`
+-    else
+-      GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --variable=mtcflags 2>/dev/null`
+-      GPG_ERROR_MT_CFLAGS="$GPG_ERROR_CFLAGS${GPG_ERROR_CFLAGS:+ }$GPG_ERROR_MT_CFLAGS"
+-      GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --variable=mtlibs 2>/dev/null`
+-      GPG_ERROR_MT_LIBS="$GPG_ERROR_LIBS${GPG_ERROR_LIBS:+ }$GPG_ERROR_MT_LIBS"
+-    fi
+-    AC_MSG_RESULT([yes ($gpg_error_config_version)])
+     ifelse([$2], , :, [$2])
+-    if test -z "$GPGRT_CONFIG"; then
+-      gpg_error_config_host=`$GPG_ERROR_CONFIG --host 2>/dev/null || echo none`
+-    else
+-      gpg_error_config_host=`$GPG_ERROR_CONFIG --variable=host 2>/dev/null || echo none`
+-    fi
++    gpg_error_config_host=`$PKG_CONFIG --host gpg-error 2>/dev/null || echo none`
+     if test x"$gpg_error_config_host" != xnone ; then
+       if test x"$gpg_error_config_host" != x"$host" ; then
+   AC_MSG_WARN([[
+@@ -193,10 +46,6 @@ AC_DEFUN([AM_PATH_GPG_ERROR],
+       fi
+     fi
+   else
+-    GPG_ERROR_CFLAGS=""
+-    GPG_ERROR_LIBS=""
+-    GPG_ERROR_MT_CFLAGS=""
+-    GPG_ERROR_MT_LIBS=""
+     AC_MSG_RESULT(no)
+     ifelse([$3], , :, [$3])
+   fi
diff --git a/poky/meta/recipes-support/pinentry/pinentry-1.1.1/libassuan_pkgconf.patch b/poky/meta/recipes-support/pinentry/pinentry-1.2.0/libassuan_pkgconf.patch
similarity index 100%
rename from poky/meta/recipes-support/pinentry/pinentry-1.1.1/libassuan_pkgconf.patch
rename to poky/meta/recipes-support/pinentry/pinentry-1.2.0/libassuan_pkgconf.patch
diff --git a/poky/meta/recipes-support/pinentry/pinentry_1.1.1.bb b/poky/meta/recipes-support/pinentry/pinentry_1.1.1.bb
deleted file mode 100644
index 98577fe..0000000
--- a/poky/meta/recipes-support/pinentry/pinentry_1.1.1.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Collection of simple PIN or passphrase entry dialogs"
-DESCRIPTION = "\
-	Pinentry is a collection of simple PIN or passphrase entry dialogs which \
-	utilize the Assuan protocol as described by the aegypten project; see \
-	http://www.gnupg.org/aegypten/ for details."
-
-HOMEPAGE = "http://www.gnupg.org/related_software/pinentry/index.en.html"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cbbd794e2a0a289b9dfcc9f513d1996e"
-
-DEPENDS = "gettext-native libassuan libgpg-error"
-
-UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
-SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
-           file://libassuan_pkgconf.patch \
-           file://gpg-error_pkconf.patch \
-"
-
-SRC_URI[sha256sum] = "cd12a064013ed18e2ee8475e669b9f58db1b225a0144debdb85a68cecddba57f"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= "ncurses libcap"
-
-PACKAGECONFIG[ncurses] = "--enable-ncurses  --with-ncurses-include-dir=${STAGING_INCDIR}, --disable-ncurses, ncurses"
-PACKAGECONFIG[libcap] = "--with-libcap, --without-libcap, libcap"
-PACKAGECONFIG[qt] = "--enable-pinentry-qt, --disable-pinentry-qt, qtbase-native qtbase"
-PACKAGECONFIG[gtk2] = "--enable-pinentry-gtk2, --disable-pinentry-gtk2, gtk+ glib-2.0"
-
-PACKAGECONFIG[secret] = "--enable-libsecret, --disable-libsecret, libsecret"
-
-EXTRA_OECONF = " \
-    --disable-rpath \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/pinentry/pinentry_1.2.0.bb b/poky/meta/recipes-support/pinentry/pinentry_1.2.0.bb
new file mode 100644
index 0000000..504ba3b
--- /dev/null
+++ b/poky/meta/recipes-support/pinentry/pinentry_1.2.0.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Collection of simple PIN or passphrase entry dialogs"
+DESCRIPTION = "\
+	Pinentry is a collection of simple PIN or passphrase entry dialogs which \
+	utilize the Assuan protocol as described by the aegypten project; see \
+	http://www.gnupg.org/aegypten/ for details."
+
+HOMEPAGE = "http://www.gnupg.org/related_software/pinentry/index.en.html"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=cbbd794e2a0a289b9dfcc9f513d1996e"
+
+DEPENDS = "gettext-native libassuan libgpg-error"
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
+           file://libassuan_pkgconf.patch \
+           file://gpg-error_pkconf.patch \
+"
+
+SRC_URI[sha256sum] = "10072045a3e043d0581f91cd5676fcac7ffee957a16636adedaa4f583a616470"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= "ncurses libcap"
+
+PACKAGECONFIG[ncurses] = "--enable-ncurses  --with-ncurses-include-dir=${STAGING_INCDIR}, --disable-ncurses, ncurses"
+PACKAGECONFIG[libcap] = "--with-libcap, --without-libcap, libcap"
+PACKAGECONFIG[qt] = "--enable-pinentry-qt, --disable-pinentry-qt, qtbase-native qtbase"
+PACKAGECONFIG[gtk2] = "--enable-pinentry-gtk2, --disable-pinentry-gtk2, gtk+ glib-2.0"
+
+PACKAGECONFIG[secret] = "--enable-libsecret, --disable-libsecret, libsecret"
+
+EXTRA_OECONF = " \
+    --disable-rpath \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb b/poky/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb
index 1d3c24a..23ab48ba 100644
--- a/poky/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb
+++ b/poky/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb
@@ -15,7 +15,7 @@
 
 S = "${WORKDIR}/git"
 
-FILES:${PN} = "${bindir}/ptest-runner"
+FILES:${PN} = "${bindir}/ptest-runner ${bindir}/ptest-runner-collect-system-data"
 
 EXTRA_OEMAKE = "-e MAKEFLAGS= CFLAGS="${CFLAGS} -DDEFAULT_DIRECTORY=\\\"${libdir}\\\"""
 
@@ -25,6 +25,10 @@
 
 do_install () {
 	install -D -m 0755 ${S}/ptest-runner ${D}${bindir}/ptest-runner
+	install -D -m 0755 ${S}/ptest-runner-collect-system-data ${D}${bindir}/ptest-runner-collect-system-data
 }
 
 RDEPENDS:${PN}:append:libc-glibc = " libgcc"
+
+# pstree is called by ptest-runner-collect-system-data
+RDEPENDS:${PN}:append = " pstree"
diff --git a/poky/meta/recipes-support/serf/serf/0001-buckets-ssl_buckets.c-do-not-use-ERR_GET_FUNC.patch b/poky/meta/recipes-support/serf/serf/0001-buckets-ssl_buckets.c-do-not-use-ERR_GET_FUNC.patch
new file mode 100644
index 0000000..e6172ef
--- /dev/null
+++ b/poky/meta/recipes-support/serf/serf/0001-buckets-ssl_buckets.c-do-not-use-ERR_GET_FUNC.patch
@@ -0,0 +1,28 @@
+From 2f45711a66ff99886b6e4a5708e2db01a63e5af4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 10 Sep 2021 11:05:10 +0200
+Subject: [PATCH] buckets/ssl_buckets.c: do not use ERR_GET_FUNC
+
+Upstream removed it in
+https://github.com/openssl/openssl/pull/16004
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ buckets/ssl_buckets.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/buckets/ssl_buckets.c b/buckets/ssl_buckets.c
+index b01e535..9801f87 100644
+--- a/buckets/ssl_buckets.c
++++ b/buckets/ssl_buckets.c
+@@ -1325,8 +1325,7 @@ static int ssl_need_client_cert(SSL *ssl, X509 **cert, EVP_PKEY **pkey)
+                 return 0;
+             }
+             else {
+-                printf("OpenSSL cert error: %d %d %d\n", ERR_GET_LIB(err),
+-                       ERR_GET_FUNC(err),
++                printf("OpenSSL cert error: %d %d\n", ERR_GET_LIB(err),
+                        ERR_GET_REASON(err));
+                 PKCS12_free(p12);
+                 bio_meth_free(biom);
diff --git a/poky/meta/recipes-support/serf/serf_1.3.9.bb b/poky/meta/recipes-support/serf/serf_1.3.9.bb
index 2151586..669f42b 100644
--- a/poky/meta/recipes-support/serf/serf_1.3.9.bb
+++ b/poky/meta/recipes-support/serf/serf_1.3.9.bb
@@ -12,6 +12,7 @@
            file://0003-gen_def.patch \
            file://0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch \
            file://SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch \
+           file://0001-buckets-ssl_buckets.c-do-not-use-ERR_GET_FUNC.patch \
            "
 
 SRC_URI[md5sum] = "370a6340ff20366ab088012cd13f2b57"
diff --git a/poky/meta/recipes-support/vte/vte/0001-Makefile.docs-correctly-substitute-gtkdoc-qemu-wrapp.patch b/poky/meta/recipes-support/vte/vte/0001-Makefile.docs-correctly-substitute-gtkdoc-qemu-wrapp.patch
new file mode 100644
index 0000000..c69a52e
--- /dev/null
+++ b/poky/meta/recipes-support/vte/vte/0001-Makefile.docs-correctly-substitute-gtkdoc-qemu-wrapp.patch
@@ -0,0 +1,24 @@
+From daa30d0039397a735d49ea535305ed0bc5f9d73b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 26 Oct 2021 09:38:42 +0200
+Subject: [PATCH] Makefile.docs: correctly substitute gtkdoc qemu wrapper
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ doc/reference/Makefile.docs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/doc/reference/Makefile.docs b/doc/reference/Makefile.docs
+index b18f0a4..da18440 100644
+--- a/doc/reference/Makefile.docs
++++ b/doc/reference/Makefile.docs
+@@ -233,7 +233,7 @@ INSTALL_DATA = $(INSTALL) -m 644
+ 
+ GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(CPPFLAGS) $(CFLAGS)
+ GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(CFLAGS) $(LDFLAGS)
+-GTKDOC_RUN =
++GTKDOC_RUN = $(top_builddir)/gtkdoc-qemuwrapper
+ 
+ GTKDOC_CHECK_PATH = gtkdoc-check
+ GTKDOC_REBASE = gtkdoc-rebase
diff --git a/poky/meta/recipes-support/vte/vte_0.64.2.bb b/poky/meta/recipes-support/vte/vte_0.64.2.bb
deleted file mode 100644
index a79f2e4..0000000
--- a/poky/meta/recipes-support/vte/vte_0.64.2.bb
+++ /dev/null
@@ -1,61 +0,0 @@
-SUMMARY = "Virtual terminal emulator GTK+ widget library"
-DESCRIPTION = "VTE provides a virtual terminal widget for GTK applications."
-HOMEPAGE = "https://wiki.gnome.org/Apps/Terminal/VTE"
-BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte"
-LICENSE = "GPLv3 & LGPLv3+ & MIT-X"
-LICENSE:libvte = "LGPLv3+"
-
-LIC_FILES_CHKSUM = " \
-    file://COPYING.GPL3;md5=cc702cf3444d1f19680c794cc61948f9 \
-    file://COPYING.LGPL3;md5=b52f2d57d10c4f7ee67a7eb9615d5d24 \
-    file://COPYING.XTERM;md5=d7fc3a23c16c039afafe2e042030f057 \
-"
-
-DEPENDS = "glib-2.0 gtk+3 libpcre2 libxml2-native gperf-native icu"
-
-GNOMEBASEBUILDCLASS = "meson"
-GIR_MESON_OPTION = 'gir'
-
-inherit gnomebase gtk-doc features_check upstream-version-is-even gobject-introspection
-
-# vapigen.m4 is required when vala is not present (but the one from vala should be used normally)
-SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch"
-SRC_URI[archive.sha256sum] = "2b3c820b65a667c1d8859ba20478be626d1519cc3159dac25f703330c6d07e18"
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-# Instead of "inherit vala" we do the relevant settings here so we can
-# set DEPENDS based on PACKAGECONFIG.
-
-# Our patched version of Vala looks in STAGING_DATADIR for .vapi files
-export STAGING_DATADIR
-# Upstream Vala >= 0.11 looks in XDG_DATA_DIRS for .vapi files
-export XDG_DATA_DIRS = "${STAGING_DATADIR}"
-
-# Help g-ir-scanner find the .so for linking
-do_compile:prepend() {
-    export GIR_EXTRA_LIBS_PATH="${B}/src/.libs"
-}
-
-# Package additional files
-FILES:${PN}-dev += "${datadir}/vala/vapi/*"
-
-PACKAGECONFIG ??= "gnutls"
-PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false,vala-native vala"
-PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
-PACKAGECONFIG[systemd] = "-D_systemd=true,-D_systemd=false,systemd"
-# vala requires gir
-PACKAGECONFIG:remove:class-native = "vala"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-PACKAGES =+ "libvte ${PN}-prompt"
-FILES:libvte = "${libdir}/*.so.* ${libdir}/girepository-1.0/*"
-FILES:${PN}-prompt = " \
-    ${sysconfdir}/profile.d \
-    ${libexecdir}/vte-urlencode-cwd \
-"
-
-FILES:${PN}-dev += "${datadir}/glade/"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/vte/vte_0.66.0.bb b/poky/meta/recipes-support/vte/vte_0.66.0.bb
new file mode 100644
index 0000000..6676b7f
--- /dev/null
+++ b/poky/meta/recipes-support/vte/vte_0.66.0.bb
@@ -0,0 +1,62 @@
+SUMMARY = "Virtual terminal emulator GTK+ widget library"
+DESCRIPTION = "VTE provides a virtual terminal widget for GTK applications."
+HOMEPAGE = "https://wiki.gnome.org/Apps/Terminal/VTE"
+BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte"
+LICENSE = "GPLv3 & LGPLv3+ & MIT-X"
+LICENSE:libvte = "LGPLv3+"
+
+LIC_FILES_CHKSUM = " \
+    file://COPYING.GPL3;md5=cc702cf3444d1f19680c794cc61948f9 \
+    file://COPYING.LGPL3;md5=b52f2d57d10c4f7ee67a7eb9615d5d24 \
+    file://COPYING.XTERM;md5=d7fc3a23c16c039afafe2e042030f057 \
+"
+
+DEPENDS = "glib-2.0 gtk+3 libpcre2 libxml2-native gperf-native icu"
+
+GNOMEBASEBUILDCLASS = "meson"
+GIR_MESON_OPTION = 'gir'
+
+inherit gnomebase gtk-doc features_check upstream-version-is-even gobject-introspection
+
+# vapigen.m4 is required when vala is not present (but the one from vala should be used normally)
+SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch \
+            file://0001-Makefile.docs-correctly-substitute-gtkdoc-qemu-wrapp.patch"
+SRC_URI[archive.sha256sum] = "d0813ac00fb1d74d88851e765f755d496c83e097097358ea1baadb38b37b7b33"
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+# Instead of "inherit vala" we do the relevant settings here so we can
+# set DEPENDS based on PACKAGECONFIG.
+
+# Our patched version of Vala looks in STAGING_DATADIR for .vapi files
+export STAGING_DATADIR
+# Upstream Vala >= 0.11 looks in XDG_DATA_DIRS for .vapi files
+export XDG_DATA_DIRS = "${STAGING_DATADIR}"
+
+# Help g-ir-scanner find the .so for linking
+do_compile:prepend() {
+    export GIR_EXTRA_LIBS_PATH="${B}/src/.libs"
+}
+
+# Package additional files
+FILES:${PN}-dev += "${datadir}/vala/vapi/*"
+
+PACKAGECONFIG ??= "gnutls"
+PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false,vala-native vala"
+PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
+PACKAGECONFIG[systemd] = "-D_systemd=true,-D_systemd=false,systemd"
+# vala requires gir
+PACKAGECONFIG:remove:class-native = "vala"
+
+CFLAGS += "-D_GNU_SOURCE"
+
+PACKAGES =+ "libvte ${PN}-prompt"
+FILES:libvte = "${libdir}/*.so.* ${libdir}/girepository-1.0/*"
+FILES:${PN}-prompt = " \
+    ${sysconfdir}/profile.d \
+    ${libexecdir}/vte-urlencode-cwd \
+"
+
+FILES:${PN}-dev += "${datadir}/glade/"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/scripts/autobuilder-worker-prereq-tests b/poky/scripts/autobuilder-worker-prereq-tests
index 5d7e6e2..82e9a77 100755
--- a/poky/scripts/autobuilder-worker-prereq-tests
+++ b/poky/scripts/autobuilder-worker-prereq-tests
@@ -35,6 +35,11 @@
     echo "Please set git config --global user.email"
     exit 1
 fi
+python3 -c "import jinja2"
+if [ "$?" != "0" ]; then
+    echo "Please ensure jinja2 is available"
+    exit 1
+fi
 bitbake -p
 if [ "$?" != "0" ]; then
     echo "Bitbake parsing failed"
diff --git a/poky/scripts/gen-lockedsig-cache b/poky/scripts/gen-lockedsig-cache
index cd8f9a4..cc674f9 100755
--- a/poky/scripts/gen-lockedsig-cache
+++ b/poky/scripts/gen-lockedsig-cache
@@ -94,8 +94,7 @@
 print('Processing files')
 for f in files:
     sys.stdout.write('Processing %s... ' % f)
-    _, ext = os.path.splitext(f)
-    if not ext in ['.tgz', '.siginfo', '.sig']:
+    if not f.endswith(('.tar.zst', '.siginfo', '.sig')):
         # Most likely a temp file, skip it
         print('skipping')
         continue
diff --git a/poky/scripts/lib/recipetool/create.py b/poky/scripts/lib/recipetool/create.py
index 5cd72ea..5a267fb 100644
--- a/poky/scripts/lib/recipetool/create.py
+++ b/poky/scripts/lib/recipetool/create.py
@@ -1002,55 +1002,37 @@
     handled.append(('license', licvalues))
     return licvalues
 
-def get_license_md5sums(d, static_only=False):
+def get_license_md5sums(d, static_only=False, linenumbers=False):
     import bb.utils
+    import csv
     md5sums = {}
-    if not static_only:
+    if not static_only and not linenumbers:
         # Gather md5sums of license files in common license dir
         commonlicdir = d.getVar('COMMON_LICENSE_DIR')
         for fn in os.listdir(commonlicdir):
             md5value = bb.utils.md5_file(os.path.join(commonlicdir, fn))
             md5sums[md5value] = fn
+
     # The following were extracted from common values in various recipes
     # (double checking the license against the license file itself, not just
     # the LICENSE value in the recipe)
-    md5sums['94d55d512a9ba36caa9b7df079bae19f'] = 'GPLv2'
-    md5sums['b234ee4d69f5fce4486a80fdaf4a4263'] = 'GPLv2'
-    md5sums['59530bdf33659b29e73d4adb9f9f6552'] = 'GPLv2'
-    md5sums['0636e73ff0215e8d672dc4c32c317bb3'] = 'GPLv2'
-    md5sums['eb723b61539feef013de476e68b5c50a'] = 'GPLv2'
-    md5sums['751419260aa954499f7abaabaa882bbe'] = 'GPLv2'
-    md5sums['393a5ca445f6965873eca0259a17f833'] = 'GPLv2'
-    md5sums['12f884d2ae1ff87c09e5b7ccc2c4ca7e'] = 'GPLv2'
-    md5sums['8ca43cbc842c2336e835926c2166c28b'] = 'GPLv2'
-    md5sums['ebb5c50ab7cab4baeffba14977030c07'] = 'GPLv2'
-    md5sums['c93c0550bd3173f4504b2cbd8991e50b'] = 'GPLv2'
-    md5sums['9ac2e7cff1ddaf48b6eab6028f23ef88'] = 'GPLv2'
-    md5sums['4325afd396febcb659c36b49533135d4'] = 'GPLv2'
-    md5sums['18810669f13b87348459e611d31ab760'] = 'GPLv2'
-    md5sums['d7810fab7487fb0aad327b76f1be7cd7'] = 'GPLv2' # the Linux kernel's COPYING file
-    md5sums['bbb461211a33b134d42ed5ee802b37ff'] = 'LGPLv2.1'
-    md5sums['7fbc338309ac38fefcd64b04bb903e34'] = 'LGPLv2.1'
-    md5sums['4fbd65380cdd255951079008b364516c'] = 'LGPLv2.1'
-    md5sums['2d5025d4aa3495befef8f17206a5b0a1'] = 'LGPLv2.1'
-    md5sums['fbc093901857fcd118f065f900982c24'] = 'LGPLv2.1'
-    md5sums['a6f89e2100d9b6cdffcea4f398e37343'] = 'LGPLv2.1'
-    md5sums['d8045f3b8f929c1cb29a1e3fd737b499'] = 'LGPLv2.1'
-    md5sums['fad9b3332be894bab9bc501572864b29'] = 'LGPLv2.1'
-    md5sums['3bf50002aefd002f49e7bb854063f7e7'] = 'LGPLv2'
-    md5sums['9f604d8a4f8e74f4f5140845a21b6674'] = 'LGPLv2'
-    md5sums['5f30f0716dfdd0d91eb439ebec522ec2'] = 'LGPLv2'
-    md5sums['55ca817ccb7d5b5b66355690e9abc605'] = 'LGPLv2'
-    md5sums['252890d9eee26aab7b432e8b8a616475'] = 'LGPLv2'
-    md5sums['3214f080875748938ba060314b4f727d'] = 'LGPLv2'
-    md5sums['db979804f025cf55aabec7129cb671ed'] = 'LGPLv2'
-    md5sums['d32239bcb673463ab874e80d47fae504'] = 'GPLv3'
-    md5sums['f27defe1e96c2e1ecd4e0c9be8967949'] = 'GPLv3'
-    md5sums['6a6a8e020838b23406c81b19c1d46df6'] = 'LGPLv3'
-    md5sums['3b83ef96387f14655fc854ddc3c6bd57'] = 'Apache-2.0'
-    md5sums['385c55653886acac3821999a3ccd17b3'] = 'Artistic-1.0 | GPL-2.0' # some perl modules
-    md5sums['54c7042be62e169199200bc6477f04d1'] = 'BSD-3-Clause'
-    md5sums['bfe1f75d606912a4111c90743d6c7325'] = 'MPL-1.1'
+
+    # Read license md5sums from csv file
+    scripts_path = os.path.dirname(os.path.realpath(__file__))
+    for path in (d.getVar('BBPATH').split(':')
+                + [os.path.join(scripts_path, '..', '..')]):
+        csv_path = os.path.join(path, 'lib', 'recipetool', 'licenses.csv')
+        if os.path.isfile(csv_path):
+            with open(csv_path, newline='') as csv_file:
+                fieldnames = ['md5sum', 'license', 'beginline', 'endline', 'md5']
+                reader = csv.DictReader(csv_file, delimiter=',', fieldnames=fieldnames)
+                for row in reader:
+                    if linenumbers:
+                        md5sums[row['md5sum']] = (
+                            row['license'], row['beginline'], row['endline'], row['md5'])
+                    else:
+                        md5sums[row['md5sum']] = row['license']
+
     return md5sums
 
 def crunch_license(licfile):
@@ -1066,54 +1048,127 @@
     import oe.utils
 
     # Note: these are carefully constructed!
-    license_title_re = re.compile(r'^\(?(#+ *)?(The )?.{1,10} [Ll]icen[sc]e( \(.{1,10}\))?\)?:?$')
-    license_statement_re = re.compile(r'^(This (project|software) is( free software)? (released|licen[sc]ed)|(Released|Licen[cs]ed)) under the .{1,10} [Ll]icen[sc]e:?$')
-    copyright_re = re.compile('^(#+)? *Copyright .*$')
+    license_title_re = re.compile(r'^#*\(? *(This is )?([Tt]he )?.{0,15} ?[Ll]icen[sc]e( \(.{1,10}\))?\)?[:\.]? ?#*$')
+    license_statement_re = re.compile(r'^((This (project|software)|.{1,10}) is( free software)? (released|licen[sc]ed)|(Released|Licen[cs]ed)) under the .{1,10} [Ll]icen[sc]e:?$')
+    copyright_re = re.compile('^ *[#\*]* *(Modified work |MIT LICENSED )?Copyright ?(\([cC]\))? .*$')
+    disclaimer_re = re.compile('^ *\*? ?All [Rr]ights [Rr]eserved\.$')
+    email_re = re.compile('^.*<[\w\.-]*@[\w\.\-]*>$')
+    header_re = re.compile('^(\/\**!?)? ?[\-=\*]* ?(\*\/)?$')
+    tag_re = re.compile('^ *@?\(?([Ll]icense|MIT)\)?$')
+    url_re = re.compile('^ *[#\*]* *https?:\/\/[\w\.\/\-]+$')
 
     crunched_md5sums = {}
+
+    # common licenses
+    crunched_md5sums['89f3bf322f30a1dcfe952e09945842f0'] = 'Apache-2.0'
+    crunched_md5sums['13b6fe3075f8f42f2270a748965bf3a1'] = 'BSD-0-Clause'
+    crunched_md5sums['ba87a7d7c20719c8df4b8beed9b78c43'] = 'BSD-2-Clause'
+    crunched_md5sums['7f8892c03b72de419c27be4ebfa253f8'] = 'BSD-3-Clause'
+    crunched_md5sums['21128c0790b23a8a9f9e260d5f6b3619'] = 'BSL-1.0'
+    crunched_md5sums['975742a59ae1b8abdea63a97121f49f4'] = 'EDL-1.0'
+    crunched_md5sums['5322cee4433d84fb3aafc9e253116447'] = 'EPL-1.0'
+    crunched_md5sums['6922352e87de080f42419bed93063754'] = 'EPL-2.0'
+    crunched_md5sums['793475baa22295cae1d3d4046a3a0ceb'] = 'GPL-2.0-only'
+    crunched_md5sums['ff9047f969b02c20f0559470df5cb433'] = 'GPL-2.0-or-later'
+    crunched_md5sums['ea6de5453fcadf534df246e6cdafadcd'] = 'GPL-3.0-only'
+    crunched_md5sums['b419257d4d153a6fde92ddf96acf5b67'] = 'GPL-3.0-or-later'
+    crunched_md5sums['228737f4c49d3ee75b8fb3706b090b84'] = 'ISC'
+    crunched_md5sums['c6a782e826ca4e85bf7f8b89435a677d'] = 'LGPL-2.0-only'
+    crunched_md5sums['32d8f758a066752f0db09bd7624b8090'] = 'LGPL-2.0-or-later'
+    crunched_md5sums['4820937eb198b4f84c52217ed230be33'] = 'LGPL-2.1-only'
+    crunched_md5sums['db13fe9f3a13af7adab2dc7a76f9e44a'] = 'LGPL-2.1-or-later'
+    crunched_md5sums['d7a0f2e4e0950e837ac3eabf5bd1d246'] = 'LGPL-3.0-only'
+    crunched_md5sums['abbf328e2b434f9153351f06b9f79d02'] = 'LGPL-3.0-or-later'
+    crunched_md5sums['eecf6429523cbc9693547cf2db790b5c'] = 'MIT'
+    crunched_md5sums['b218b0e94290b9b818c4be67c8e1cc82'] = 'MIT-0'
+    crunched_md5sums['ddc18131d6748374f0f35a621c245b49'] = 'Unlicense'
+    crunched_md5sums['51f9570ff32571fc0a443102285c5e33'] = 'WTFPL'
+
     # The following two were gleaned from the "forever" npm package
     crunched_md5sums['0a97f8e4cbaf889d6fa51f84b89a79f6'] = 'ISC'
-    crunched_md5sums['eecf6429523cbc9693547cf2db790b5c'] = 'MIT'
-    # https://github.com/vasi/pixz/blob/master/LICENSE
-    crunched_md5sums['2f03392b40bbe663597b5bd3cc5ebdb9'] = 'BSD-2-Clause'
     # https://github.com/waffle-gl/waffle/blob/master/LICENSE.txt
-    crunched_md5sums['e72e5dfef0b1a4ca8a3d26a60587db66'] = 'BSD-2-Clause'
+    crunched_md5sums['50fab24ce589d69af8964fdbfe414c60'] = 'BSD-2-Clause'
     # https://github.com/spigwitmer/fakeds1963s/blob/master/LICENSE
-    crunched_md5sums['8be76ac6d191671f347ee4916baa637e'] = 'GPLv2'
-    # https://github.com/datto/dattobd/blob/master/COPYING
-    # http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/GPLv2.TXT
-    crunched_md5sums['1d65c5ad4bf6489f85f4812bf08ae73d'] = 'GPLv2'
+    crunched_md5sums['88a4355858a1433fea99fae34a44da88'] = 'GPLv2'
     # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
-    # http://git.neil.brown.name/?p=mdadm.git;a=blob;f=COPYING;h=d159169d1050894d3ea3b98e1c965c4058208fe1;hb=HEAD
-    crunched_md5sums['fb530f66a7a89ce920f0e912b5b66d4b'] = 'GPLv2'
-    # https://github.com/gkos/nrf24/blob/master/COPYING
-    crunched_md5sums['7b6aaa4daeafdfa6ed5443fd2684581b'] = 'GPLv2'
-    # https://github.com/josch09/resetusb/blob/master/COPYING
-    crunched_md5sums['8b8ac1d631a4d220342e83bcf1a1fbc3'] = 'GPLv3'
+    crunched_md5sums['063b5c3ebb5f3aa4c85a2ed18a31fbe7'] = 'GPLv2'
     # https://github.com/FFmpeg/FFmpeg/blob/master/COPYING.LGPLv2.1
-    crunched_md5sums['2ea316ed973ae176e502e2297b574bb3'] = 'LGPLv2.1'
+    crunched_md5sums['7f5202f4d44ed15dcd4915f5210417d8'] = 'LGPLv2.1'
     # unixODBC-2.3.4 COPYING
-    crunched_md5sums['1daebd9491d1e8426900b4fa5a422814'] = 'LGPLv2.1'
+    crunched_md5sums['3debde09238a8c8e1f6a847e1ec9055b'] = 'LGPLv2.1'
     # https://github.com/FFmpeg/FFmpeg/blob/master/COPYING.LGPLv3
-    crunched_md5sums['2ebfb3bb49b9a48a075cc1425e7f4129'] = 'LGPLv3'
+    crunched_md5sums['f90c613c51aa35da4d79dd55fc724ceb'] = 'LGPLv3'
     # https://raw.githubusercontent.com/eclipse/mosquitto/v1.4.14/epl-v10
     crunched_md5sums['efe2cb9a35826992b9df68224e3c2628'] = 'EPL-1.0'
-    # https://raw.githubusercontent.com/eclipse/mosquitto/v1.4.14/edl-v10
-    crunched_md5sums['0a9c78c0a398d1bbce4a166757d60387'] = 'EDL-1.0'
+
+    # https://raw.githubusercontent.com/jquery/esprima/3.1.3/LICENSE.BSD
+    crunched_md5sums['80fa7b56a28e8c902e6af194003220a5'] = 'BSD-2-Clause'
+    # https://raw.githubusercontent.com/npm/npm-install-checks/master/LICENSE
+    crunched_md5sums['e659f77bfd9002659e112d0d3d59b2c1'] = 'BSD-2-Clause'
+    # https://raw.githubusercontent.com/silverwind/default-gateway/4.2.0/LICENSE
+    crunched_md5sums['4c641f2d995c47f5cb08bdb4b5b6ea05'] = 'BSD-2-Clause'
+    # https://raw.githubusercontent.com/tad-lispy/node-damerau-levenshtein/v1.0.5/LICENSE
+    crunched_md5sums['2b8c039b2b9a25f0feb4410c4542d346'] = 'BSD-2-Clause'
+    # https://raw.githubusercontent.com/terser/terser/v3.17.0/LICENSE
+    crunched_md5sums['8bd23871802951c9ad63855151204c2c'] = 'BSD-2-Clause'
+    # https://raw.githubusercontent.com/alexei/sprintf.js/1.0.3/LICENSE
+    crunched_md5sums['008c22318c8ea65928bf730ddd0273e3'] = 'BSD-3-Clause'
+    # https://raw.githubusercontent.com/Caligatio/jsSHA/v3.2.0/LICENSE
+    crunched_md5sums['0e46634a01bfef056892949acaea85b1'] = 'BSD-3-Clause'
+    # https://raw.githubusercontent.com/d3/d3-path/v1.0.9/LICENSE
+    crunched_md5sums['b5f72aef53d3b2b432702c30b0215666'] = 'BSD-3-Clause'
+    # https://raw.githubusercontent.com/feross/ieee754/v1.1.13/LICENSE
+    crunched_md5sums['a39327c997c20da0937955192d86232d'] = 'BSD-3-Clause'
+    # https://raw.githubusercontent.com/joyent/node-extsprintf/v1.3.0/LICENSE
+    crunched_md5sums['721f23a96ff4161ca3a5f071bbe18108'] = 'MIT'
+    # https://raw.githubusercontent.com/pvorb/clone/v0.2.0/LICENSE
+    crunched_md5sums['b376d29a53c9573006b9970709231431'] = 'MIT'
+    # https://raw.githubusercontent.com/andris9/encoding/v0.1.12/LICENSE
+    crunched_md5sums['85d8a977ee9d7c5ab4ac03c9b95431c4'] = 'MIT-0'
+    # https://raw.githubusercontent.com/faye/websocket-driver-node/0.7.3/LICENSE.md
+    crunched_md5sums['b66384e7137e41a9b1904ef4d39703b6'] = 'Apache-2.0'
+    # https://raw.githubusercontent.com/less/less.js/v4.1.1/LICENSE
+    crunched_md5sums['b27575459e02221ccef97ec0bfd457ae'] = 'Apache-2.0'
+    # https://raw.githubusercontent.com/microsoft/TypeScript/v3.5.3/LICENSE.txt
+    crunched_md5sums['a54a1a6a39e7f9dbb4a23a42f5c7fd1c'] = 'Apache-2.0'
+    # https://raw.githubusercontent.com/request/request/v2.87.0/LICENSE
+    crunched_md5sums['1034431802e57486b393d00c5d262b8a'] = 'Apache-2.0'
+    # https://raw.githubusercontent.com/dchest/tweetnacl-js/v0.14.5/LICENSE
+    crunched_md5sums['75605e6bdd564791ab698fca65c94a4f'] = 'Unlicense'
+    # https://raw.githubusercontent.com/stackgl/gl-mat3/v2.0.0/LICENSE.md
+    crunched_md5sums['75512892d6f59dddb6d1c7e191957e9c'] = 'Zlib'
+
     lictext = []
     with open(licfile, 'r', errors='surrogateescape') as f:
         for line in f:
             # Drop opening statements
             if copyright_re.match(line):
                 continue
+            elif disclaimer_re.match(line):
+                continue
+            elif email_re.match(line):
+                continue
+            elif header_re.match(line):
+                continue
+            elif tag_re.match(line):
+                continue
+            elif url_re.match(line):
+                continue
             elif license_title_re.match(line):
                 continue
             elif license_statement_re.match(line):
                 continue
-            # Squash spaces, and replace smart quotes, double quotes
-            # and backticks with single quotes
+            # Strip comment symbols
+            line = line.replace('*', '') \
+                       .replace('#', '')
+            # Unify spelling
+            line = line.replace('sub-license', 'sublicense')
+            # Squash spaces
             line = oe.utils.squashspaces(line.strip())
+            # Replace smart quotes, double quotes and backticks with single quotes
             line = line.replace(u"\u2018", "'").replace(u"\u2019", "'").replace(u"\u201c","'").replace(u"\u201d", "'").replace('"', '\'').replace('`', '\'')
+            # Unify brackets
+            line = line.replace("{", "[").replace("}", "]")
             if line:
                 lictext.append(line)
 
@@ -1133,9 +1188,12 @@
 
     licenses = []
     licspecs = ['*LICEN[CS]E*', 'COPYING*', '*[Ll]icense*', 'LEGAL*', '[Ll]egal*', '*GPL*', 'README.lic*', 'COPYRIGHT*', '[Cc]opyright*', 'e[dp]l-v10']
+    skip_extensions = (".html", ".js", ".json", ".svg", ".ts")
     licfiles = []
     for root, dirs, files in os.walk(srctree):
         for fn in files:
+            if fn.endswith(skip_extensions):
+                continue
             for spec in licspecs:
                 if fnmatch.fnmatch(fn, spec):
                     fullpath = os.path.join(root, fn)
@@ -1146,15 +1204,19 @@
         license = md5sums.get(md5value, None)
         if not license:
             license, crunched_md5, lictext = crunch_license(licfile)
-            if not license:
+            if lictext and not license:
                 license = 'Unknown'
-        licenses.append((license, os.path.relpath(licfile, srctree), md5value))
+                logger.info("Please add the following line for '%s' to a 'lib/recipetool/licenses.csv' " \
+                    "and replace `Unknown` with the license:\n" \
+                    "%s,Unknown" % (os.path.relpath(licfile, srctree), md5value))
+        if license:
+            licenses.append((license, os.path.relpath(licfile, srctree), md5value))
 
     # FIXME should we grab at least one source file with a license header and add that too?
 
     return licenses
 
-def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=None, pn='${PN}'):
+def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=[], pn='${PN}'):
     """
     Given a list of (license, path, md5sum) as returned by guess_license(),
     a dict of package name to path mappings, write out a set of
diff --git a/poky/scripts/lib/recipetool/create_npm.py b/poky/scripts/lib/recipetool/create_npm.py
index 2bcae91..3394a89 100644
--- a/poky/scripts/lib/recipetool/create_npm.py
+++ b/poky/scripts/lib/recipetool/create_npm.py
@@ -6,6 +6,7 @@
 """Recipe creation tool - npm module support plugin"""
 
 import json
+import logging
 import os
 import re
 import sys
@@ -14,8 +15,10 @@
 from bb.fetch2.npm import NpmEnvironment
 from bb.fetch2.npmsw import foreach_dependencies
 from recipetool.create import RecipeHandler
+from recipetool.create import get_license_md5sums
 from recipetool.create import guess_license
 from recipetool.create import split_pkg_licenses
+logger = logging.getLogger('recipetool')
 
 TINFOIL = None
 
@@ -118,23 +121,33 @@
         licfiles = []
         packages = {}
 
-        def _licfiles_append(licfile):
-            """Append 'licfile' to the license files list"""
-            licfilepath = os.path.join(srctree, licfile)
-            licmd5 = bb.utils.md5_file(licfilepath)
-            licfiles.append("file://%s;md5=%s" % (licfile, licmd5))
-
         # Handle the parent package
-        _licfiles_append("package.json")
         packages["${PN}"] = ""
 
+        def _licfiles_append_fallback_readme_files(destdir):
+            """Append README files as fallback to license files if a license files is missing"""
+
+            fallback = True
+            readmes = []
+            basedir = os.path.join(srctree, destdir)
+            for fn in os.listdir(basedir):
+                upper = fn.upper()
+                if upper.startswith("README"):
+                    fullpath = os.path.join(basedir, fn)
+                    readmes.append(fullpath)
+                if upper.startswith("COPYING") or "LICENCE" in upper or "LICENSE" in upper:
+                    fallback = False
+            if fallback:
+                for readme in readmes:
+                    licfiles.append(os.path.relpath(readme, srctree))
+
         # Handle the dependencies
         def _handle_dependency(name, params, deptree):
             suffix = "-".join([self._npm_name(dep) for dep in deptree])
             destdirs = [os.path.join("node_modules", dep) for dep in deptree]
             destdir = os.path.join(*destdirs)
-            _licfiles_append(os.path.join(destdir, "package.json"))
             packages["${PN}-" + suffix] = destdir
+            _licfiles_append_fallback_readme_files(destdir)
 
         with open(shrinkwrap_file, "r") as f:
             shrinkwrap = json.load(f)
@@ -246,8 +259,35 @@
 
         bb.note("Handling licences ...")
         (licfiles, packages) = self._handle_licenses(srctree, shrinkwrap_file, dev)
-        extravalues["LIC_FILES_CHKSUM"] = licfiles
-        split_pkg_licenses(guess_license(srctree, d), packages, lines_after, [])
+
+        def _guess_odd_license(licfiles):
+            import bb
+
+            md5sums = get_license_md5sums(d, linenumbers=True)
+
+            chksums = []
+            licenses = []
+            for licfile in licfiles:
+                f = os.path.join(srctree, licfile)
+                md5value = bb.utils.md5_file(f)
+                (license, beginline, endline, md5) = md5sums.get(md5value,
+                    (None, "", "", ""))
+                if not license:
+                    license = "Unknown"
+                    logger.info("Please add the following line for '%s' to a "
+                        "'lib/recipetool/licenses.csv' and replace `Unknown`, "
+                        "`X`, `Y` and `MD5` with the license, begin line, "
+                        "end line and partial MD5 checksum:\n" \
+                        "%s,Unknown,X,Y,MD5" % (licfile, md5value))
+                chksums.append("file://%s%s%s;md5=%s" % (licfile,
+                    ";beginline=%s" % (beginline) if beginline else "",
+                    ";endline=%s" % (endline) if endline else "",
+                    md5 if md5 else md5value))
+                licenses.append((license, licfile, md5value))
+            return (licenses, chksums)
+
+        (licenses, extravalues["LIC_FILES_CHKSUM"]) = _guess_odd_license(licfiles)
+        split_pkg_licenses([*licenses, *guess_license(srctree, d)], packages, lines_after)
 
         classes.append("npm")
         handled.append("buildsystem")
diff --git a/poky/scripts/lib/recipetool/licenses.csv b/poky/scripts/lib/recipetool/licenses.csv
new file mode 100644
index 0000000..0d3fb06
--- /dev/null
+++ b/poky/scripts/lib/recipetool/licenses.csv
@@ -0,0 +1,37 @@
+0636e73ff0215e8d672dc4c32c317bb3,GPLv2
+12f884d2ae1ff87c09e5b7ccc2c4ca7e,GPLv2
+18810669f13b87348459e611d31ab760,GPLv2
+252890d9eee26aab7b432e8b8a616475,LGPLv2
+2d5025d4aa3495befef8f17206a5b0a1,LGPLv2.1
+3214f080875748938ba060314b4f727d,LGPLv2
+385c55653886acac3821999a3ccd17b3,Artistic-1.0 | GPL-2.0
+393a5ca445f6965873eca0259a17f833,GPLv2
+3b83ef96387f14655fc854ddc3c6bd57,Apache-2.0
+3bf50002aefd002f49e7bb854063f7e7,LGPLv2
+4325afd396febcb659c36b49533135d4,GPLv2
+4fbd65380cdd255951079008b364516c,LGPLv2.1
+54c7042be62e169199200bc6477f04d1,BSD-3-Clause
+55ca817ccb7d5b5b66355690e9abc605,LGPLv2
+59530bdf33659b29e73d4adb9f9f6552,GPLv2
+5f30f0716dfdd0d91eb439ebec522ec2,LGPLv2
+6a6a8e020838b23406c81b19c1d46df6,LGPLv3
+751419260aa954499f7abaabaa882bbe,GPLv2
+7fbc338309ac38fefcd64b04bb903e34,LGPLv2.1
+8ca43cbc842c2336e835926c2166c28b,GPLv2
+94d55d512a9ba36caa9b7df079bae19f,GPLv2
+9ac2e7cff1ddaf48b6eab6028f23ef88,GPLv2
+9f604d8a4f8e74f4f5140845a21b6674,LGPLv2
+a6f89e2100d9b6cdffcea4f398e37343,LGPLv2.1
+b234ee4d69f5fce4486a80fdaf4a4263,GPLv2
+bbb461211a33b134d42ed5ee802b37ff,LGPLv2.1
+bfe1f75d606912a4111c90743d6c7325,MPL-1.1
+c93c0550bd3173f4504b2cbd8991e50b,GPLv2
+d32239bcb673463ab874e80d47fae504,GPLv3
+d7810fab7487fb0aad327b76f1be7cd7,GPLv2
+d8045f3b8f929c1cb29a1e3fd737b499,LGPLv2.1
+db979804f025cf55aabec7129cb671ed,LGPLv2
+eb723b61539feef013de476e68b5c50a,GPLv2
+ebb5c50ab7cab4baeffba14977030c07,GPLv2
+f27defe1e96c2e1ecd4e0c9be8967949,GPLv3
+fad9b3332be894bab9bc501572864b29,LGPLv2.1
+fbc093901857fcd118f065f900982c24,LGPLv2.1
diff --git a/poky/scripts/oepydevshell-internal.py b/poky/scripts/oepydevshell-internal.py
index 96c078e..e3c35bb 100755
--- a/poky/scripts/oepydevshell-internal.py
+++ b/poky/scripts/oepydevshell-internal.py
@@ -43,7 +43,7 @@
 nonblockingfd(sys.stdin)
 
 
-histfile = os.path.expanduser("~/.oedevpyshell-history")
+histfile = os.path.expanduser("~/.oepydevshell-history")
 readline.parse_and_bind("tab: complete")
 try:
     readline.read_history_file(histfile)
diff --git a/poky/scripts/runqemu b/poky/scripts/runqemu
index c467b0e..54f2336 100755
--- a/poky/scripts/runqemu
+++ b/poky/scripts/runqemu
@@ -1350,7 +1350,7 @@
 
         if self.sdl == True or self.gtk == True or self.egl_headless == True:
             self.set_dri_path()
-            self.qemu_opt += ' -vga virtio -display '
+            self.qemu_opt += ' -device virtio-vga-gl -display '
             if self.egl_headless == True:
                 self.qemu_opt += 'egl-headless,'
             else:
@@ -1412,7 +1412,7 @@
         if not os.access(qemu_bin, os.X_OK):
             raise OEPathError("No QEMU binary '%s' could be found" % qemu_bin)
 
-        self.qemu_opt = "%s %s %s %s %s" % (qemu_bin, self.get('NETWORK_CMD'), self.get('QB_RNG'), self.get('ROOTFS_OPTIONS'), self.get('QB_OPT_APPEND'))
+        self.qemu_opt = "%s %s %s %s %s" % (qemu_bin, self.get('NETWORK_CMD'), self.get('QB_RNG'), self.get('ROOTFS_OPTIONS'), self.get('QB_OPT_APPEND').replace('@DEPLOY_DIR_IMAGE@', self.get('DEPLOY_DIR_IMAGE')))
 
         for ovmf in self.ovmf_bios:
             format = ovmf.rsplit('.', 1)[-1]
diff --git a/poky/scripts/sstate-cache-management.sh b/poky/scripts/sstate-cache-management.sh
index f1706a2..d39671f 100755
--- a/poky/scripts/sstate-cache-management.sh
+++ b/poky/scripts/sstate-cache-management.sh
@@ -114,7 +114,7 @@
 # * Add .done/.siginfo to the remove list
 # * Add destination of symlink to the remove list
 #
-# $1: output file, others: sstate cache file (.tgz)
+# $1: output file, others: sstate cache file (.tar.zst)
 gen_rmlist (){
   local rmlist_file="$1"
   shift
@@ -131,13 +131,13 @@
               dest="`readlink -e $i`"
               if [ -n "$dest" ]; then
                   echo $dest >> $rmlist_file
-                  # Remove the .siginfo when .tgz is removed
+                  # Remove the .siginfo when .tar.zst is removed
                   if [ -f "$dest.siginfo" ]; then
                       echo $dest.siginfo >> $rmlist_file
                   fi
               fi
           fi
-          # Add the ".tgz.done" and ".siginfo.done" (may exist in the future)
+          # Add the ".tar.zst.done" and ".siginfo.done" (may exist in the future)
           base_fn="${i##/*/}"
           t_fn="$base_fn.done"
           s_fn="$base_fn.siginfo.done"
@@ -188,10 +188,10 @@
   total_files=`find $cache_dir -name 'sstate*' | wc -l`
   # Save all the sstate files in a file
   sstate_files_list=`mktemp` || exit 1
-  find $cache_dir -name 'sstate:*:*:*:*:*:*:*.tgz*' >$sstate_files_list
+  find $cache_dir -iname 'sstate:*:*:*:*:*:*:*.tar.zst*' >$sstate_files_list
 
   echo "Figuring out the suffixes in the sstate cache dir ... "
-  sstate_suffixes="`sed 's%.*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^_]*_\([^:]*\)\.tgz.*%\1%g' $sstate_files_list | sort -u`"
+  sstate_suffixes="`sed 's%.*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^_]*_\([^:]*\)\.tar\.zst.*%\1%g' $sstate_files_list | sort -u`"
   echo "Done"
   echo "The following suffixes have been found in the cache dir:"
   echo $sstate_suffixes
@@ -200,10 +200,10 @@
   # Using this SSTATE_PKGSPEC definition it's 6th colon separated field
   # SSTATE_PKGSPEC    = "sstate:${PN}:${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}:${PV}:${PR}:${SSTATE_PKGARCH}:${SSTATE_VERSION}:"
   for arch in $all_archs; do
-      grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:$arch:[^:]*:[^:]*\.tgz$" $sstate_files_list
+      grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:$arch:[^:]*:[^:]*\.tar\.zst$" $sstate_files_list
       [ $? -eq 0 ] && ava_archs="$ava_archs $arch"
       # ${builder_arch}_$arch used by toolchain sstate
-      grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:${builder_arch}_$arch:[^:]*:[^:]*\.tgz$" $sstate_files_list
+      grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:${builder_arch}_$arch:[^:]*:[^:]*\.tar\.zst$" $sstate_files_list
       [ $? -eq 0 ] && ava_archs="$ava_archs ${builder_arch}_$arch"
   done
   echo "Done"
@@ -219,13 +219,13 @@
           continue
       fi
       # Total number of files including .siginfo and .done files
-      total_files_suffix=`grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tgz.*" $sstate_files_list | wc -l 2>/dev/null`
-      total_tgz_suffix=`grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tgz$" $sstate_files_list | wc -l 2>/dev/null`
+      total_files_suffix=`grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tar\.zst.*" $sstate_files_list | wc -l 2>/dev/null`
+      total_archive_suffix=`grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tar\.zst$" $sstate_files_list | wc -l 2>/dev/null`
       # Save the file list to a file, some suffix's file may not exist
-      grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tgz.*" $sstate_files_list >$list_suffix 2>/dev/null
-      local deleted_tgz=0
+      grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tar\.zst.*" $sstate_files_list >$list_suffix 2>/dev/null
+      local deleted_archives=0
       local deleted_files=0
-      for ext in tgz tgz.siginfo tgz.done; do
+      for ext in tar.zst tar.zst.siginfo tar.zst.done; do
           echo "Figuring out the sstate:xxx_$suffix.$ext ... "
           # Uniq BPNs
           file_names=`for arch in $ava_archs ""; do
@@ -268,19 +268,19 @@
               done
           done
       done
-      deleted_tgz=`cat $rm_list.* 2>/dev/null | grep ".tgz$" | wc -l`
+      deleted_archives=`cat $rm_list.* 2>/dev/null | grep "\.tar\.zst$" | wc -l`
       deleted_files=`cat $rm_list.* 2>/dev/null | wc -l`
       [ "$deleted_files" -gt 0 -a $debug -gt 0 ] && cat $rm_list.*
-      echo "($deleted_tgz out of $total_tgz_suffix .tgz files for $suffix suffix will be removed or $deleted_files out of $total_files_suffix when counting also .siginfo and .done files)"
+      echo "($deleted_archives out of $total_archives_suffix .tar.zst files for $suffix suffix will be removed or $deleted_files out of $total_files_suffix when counting also .siginfo and .done files)"
       let total_deleted=$total_deleted+$deleted_files
   done
-  deleted_tgz=0
+  deleted_archives=0
   rm_old_list=$remove_listdir/sstate-old-filenames
-  find $cache_dir -name 'sstate-*.tgz' >$rm_old_list
-  [ -s "$rm_old_list" ] && deleted_tgz=`cat $rm_old_list | grep ".tgz$" | wc -l`
+  find $cache_dir -name 'sstate-*.tar.zst' >$rm_old_list
+  [ -s "$rm_old_list" ] && deleted_archives=`cat $rm_old_list | grep "\.tar\.zst$" | wc -l`
   [ -s "$rm_old_list" ] && deleted_files=`cat $rm_old_list | wc -l`
   [ -s "$rm_old_list" -a $debug -gt 0 ] && cat $rm_old_list
-  echo "($deleted_tgz .tgz files with old sstate-* filenames will be removed or $deleted_files when counting also .siginfo and .done files)"
+  echo "($deleted_archives or .tar.zst files with old sstate-* filenames will be removed or $deleted_files when counting also .siginfo and .done files)"
   let total_deleted=$total_deleted+$deleted_files
 
   rm -f $list_suffix
@@ -289,7 +289,7 @@
       read_confirm
       if [ "$confirm" = "y" -o "$confirm" = "Y" ]; then
           for list in `ls $remove_listdir/`; do
-              echo "Removing $list.tgz (`cat $remove_listdir/$list | wc -w` files) ... "
+              echo "Removing $list.tar.zst archive (`cat $remove_listdir/$list | wc -w` files) ... "
               # Remove them one by one to avoid the argument list too long error
               for i in `cat $remove_listdir/$list`; do
                   rm -f $verbose $i
@@ -322,7 +322,7 @@
   find $cache_dir -type f -name 'sstate*' | sort -u -o $cache_list
 
   echo "Figuring out the suffixes in the sstate cache dir ... "
-  local sstate_suffixes="`sed 's%.*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^_]*_\([^:]*\)\.tgz.*%\1%g' $cache_list | sort -u`"
+  local sstate_suffixes="`sed 's%.*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^_]*_\([^:]*\)\.tar\.zst.*%\1%g' $cache_list | sort -u`"
   echo "Done"
   echo "The following suffixes have been found in the cache dir:"
   echo $sstate_suffixes