subtree updates

meta-arm: 9b6c8c95e4..c60d7865dd:
  Adam Johnston (3):
        arm-bsp/optee: Update OP-TEE TA devkit to 3.20 for N1SDP
        CI: Remove ts-smm-gateway from N1SDP
        arm-bsp/trusted-firmware-a: Update N1SDP to v2.8.0

  Denys Dmytriyenko (4):
        optee-os-tadevkit: remove old unused patches
        optee-client: add 3.20.0 version
        optee-test: add 3.20.0 version
        optee-examples: add 3.20.0 version

  Emekcan Aras (4):
        arm-bsp/trusted-firmware-m: apply patches correctly from external repos
        arm-bsp/trusted-firmware-m: Switch to TF-M BL1 in Corstone1000
        arm-bsp/corstone1000: add OTP config for fvp
        arm-bsp/trusted-firmware-m: Increase assets number for corstone1000

  Jon Mason (8):
        CI: dev kernel allow failure
        arm/linux-yocto: remove IP_VS config fragment
        CI: update to the latest kas version
        CI: track mickledore branch
        arm-bsp/tc1: Fix signed u-boot
        arm-bsp/tc1: Add FVP support
        arm/trusted-firmware-m-scripts: relocate to tfm directory
        arm-bsp/tc1: disable signed kernel image

  Peter Hoyes (1):
        arm/scp-firmware: Add support for components other than SCP, MCP

  Ross Burton (8):
        arm/scp-firmware: add recipe for 2.11
        arm-bsp/scp-firmware: move all machines to SCP 2.11
        arm/scp-firmware: remove 2.10 recipe
        arm/trusted-firmware-m: add the tf-m-extras repository that some machines need
        arm/trusted-firmware-m: clean up environment flags
        arm/trusted-firmware-m: package .elf files in PN-dbg
        arm-bsp/trusted-firmware-m: enable for Total Compute on RSS
        CI: add TF-M to TC build

  Rui Miguel Silva (1):
        arm-bsp/corstone1000: tf-m set/get fwu, private metadata using gpt

  Xueliang Zhong (3):
        arm-bsp/n1sdp-board-firmware: update to newer SHA
        arm-bsp/optee-os: N1SDP support for optee-os 3.20
        arm-bsp/n1sdp: use edk2-firmware 202211 version

meta-raspberrypi: 3afdbbf782..bf948e0aa8:
  Jesse Visser (2):
        recipe-bsp: Add support for Raspberry Pi Camera Module v3
        docs: Update extra build config Raspberry Pi Camera Module section

  Rodrigo M. Duarte (1):
        python3-adafruit-blinka: Fix the correct python recipes path in dynamic-layer sub-dir

poky: 0907793d5e..878271e1a1:
  Alex Kiernan (1):
        cargo_common.bbclass: Support local github repos

  Alexander Kanavin (3):
        rust: do not run separate build/install steps
        rust: install llvm item only once
        rust: update 1.67.1 -> 1.68.1

  Bruce Ashfield (6):
        linux-yocto/6.1: update to v6.1.23
        linux-yocto/5.15: update to v5.15.106
        linux-yocto/6.1: update to v6.1.24
        linux-yocto/5.15: update to v5.15.107
        linux-yocto/6.1: update to v6.1.25
        linux-yocto/5.15: update to v5.15.108

  Chen Qi (1):
        bitbake: runqueue: fix PSI check calculation

  Chris Elledge (1):
        busybox: move hwclock init earlier in startup

  Denys Dmytriyenko (2):
        xz: upgrade 5.4.1 -> 5.4.2
        grep: upgrade 3.9 -> 3.10

  Enrico Jörns (10):
        oeqa/selftest/cases/runqemu: update imports
        oeqa/targetcontrol: fix misspelled RuntimeError
        oeqa/targetcontrol: do not set dump_host_cmds redundantly
        oeqa/targetcontrol: remove unused imports
        oeqa/utils/commands: fix usage of undefined EPIPE
        oeqa/utils/commands: remove unused imports
        oeqa/utils/qemurunner: replace hard-coded user 'root' in debug output
        oeqa/utils/qemurunner: limit precision of timing debugging output
        oeqa/utils/qemurunner: fix undefined TimeoutExpired
        oeqa: whitespace and indentation cleanups

  Enrico Scholz (2):
        bitbake: fetch2/crate: create versioned 'name' entries
        bitbake: cooker: do not abort on single ctrl-c

  Frederic Martinsons (6):
        cargo_common.bbclass: add support of user in url for patch
        devtool: add support for multiple git url inside a cargo based recipe
        patch: support of git patches when the source uri contained subpath parameter
        meta-selftest: provide a recipe for zvariant
        cargo-update-recipe-crates: force name overrides
        bitbake: fetch2: Display all missing checksum at once

  Geoffrey GIRY (1):
        cve-extra-exclusions: ignore inapplicable linux-yocto CVEs

  Kai Kang (1):
        bitbake: bitbake: ConfHandler: Allow variable flag name with a single character

  Lee Chee Yang (2):
        migration-guides: add release-notes for 4.0.9
        release-notes-4.2: update RC3 changes

  Luca Ceresoli (1):
        devicetree.bbclass: fix typo

  Marek Vasut (1):
        cpio: Fix wrong CRC with ASCII CRC for large files

  Mark Asselstine (1):
        oeqa/selftest/bblogging: uncomment python stdout checks

  Mark Hatle (1):
        sanity.bbclass: Update minimum gcc version to 8.0

  Marta Rybczynska (1):
        cve-update-nvd2-native: new CVE database fetcher

  Martin Jansa (7):
        selftest: imagefeatures.py: don't mix tabs and spaces for indentation
        selftest: runqemu: better check for ROOTFS: in the log
        selftest: runqemu: use better error message when asserts fail
        runqemu: respect IMAGE_LINK_NAME
        python3-cryptography-crates.inc: regenerate with updated bbclass
        python3-bcrypt-crates.inc: regenerate with updated bbclass
        selftest: efibootpartition.py: fix QEMU_USE_KVM usage

  Michael Opdenacker (8):
        manuals: update disk space requirements
        manuals: add rm_work disk space data
        manuals: add minimum RAM requirements
        ref-manual: release-process.rst: update testing section
        ref-manual: release-process.rst: major updates
        manuals: add "LTS" term
        manuals: improve and fix target for supported distros
        migration-guides: update 4.2 migration and release notes

  Mikko Rapeli (2):
        oeqa ping.py: avoid busylooping failing ping command
        oeqa ping.py: fail test if target IP address has not been set

  Mingli Yu (2):
        report-error: catch Nothing PROVIDES error
        bitbake: event: add bb.event.ParseError

  Paul Eggleton (20):
        bitbake: bitbake-user-manual: document BB_CACHEDIR
        bitbake: bitbake-user-manual: add addpylib and BB_GLOBAL_PYMODULES
        bitbake: bitbake-user-manual: add BB_HASH_CODEPARSER_VALS
        ref-manual: add new SDK_ZIP_OPTIONS variable
        ref-manual: Add new RUST_CHANNEL variable
        ref-manual: update for IMAGE_MACHINE_SUFFIX addition
        dev/ref-manual: Remove references to INC_PR
        ref-manual: add BB_CACHEDIR
        migration-guides: Add coverage of addpylib directive
        ref-manual: Remove references to package_tar class
        ref-manual: add missing QA checks from previous releases
        ref-manual: document new patch-status-* QA checks
        ref-manual: add FIT_CONF_DEFAULT_DTB
        ref-manual: add section link also to buildtools-extended entry
        ref-manual: add SDK_ARCHIVE_TYPE
        ref-manual: move Initramfs entry from variables to terms
        dev/ref-manual: Document INIT_MANAGER
        migration-guides: extend migration guide for 4.2
        release-notes-4.1: fix some CVE links
        release-notes-4.2: add release notes

  Peter Kjellerstedt (1):
        cargo-update-recipe-crates.bbclass: Do not add name= to crate:// URIs

  Petr Kubizňák (11):
        harfbuzz: depend on glib-2.0-native
        json-glib: depend on glib-2.0-native
        libgudev: depend on glib-2.0-native
        at-spi2-core: depend on glib-2.0-native
        avahi: add missing dependencies
        graphene: add gobject-types PACKAGECONFIG
        python3-pygobject: depend on gobject-introspection
        gconf: add missing dependencies
        webkitgtk: add missing dependencies
        libnotify: depend on glib-2.0-native
        vte: depend on glib-2.0-native

  Richard Purdie (14):
        oeqa/loader: Ensure module names don't contain uppercase characters
        zvariant: Exclude from world for now to avoid reproducibility issues
        xdg-utils: Add a patch for CVE-2020-27748
        cve-extra-exclusions.inc: Exclude some issues not present in linux-yocto
        xdg-utils: Fix CVE number
        bitbake: bitbake: Bump to version 2.4.0
        build-appliance-image: Update to master head revision
        poky.conf: Bump version for 4.2 mickledore release
        build-appliance-image: Update to master head revision
        build-appliance-image: Update to master head revision
        cve-exclusions: Document some further linux-yocto CVE statuses
        build-appliance-image: Update to mickledore head revision
        build-appliance-image: Update to mickledore head revision
        build-appliance-image: Update to mickledore head revision

  Ross Burton (11):
        llvm: remove redundant CMake variables
        libgit2: clean up CMake variables
        webkitgtk: clean up Python variables
        oeqa/runtime: clean up deprecated backslash expansion
        classes-recipe/setuptools3-base: clean up FILES assignments
        bind: don't package non-existant .la files into -staticdev
        gstreamer1.0-plugins: package the internal libraries explicitly
        Increase minimum GCC version to 8.0
        xserver-xorg: backport fix for CVE-2023-1393
        screen: backport fix for CVE-2023-24626
        go: backport fix for CVE-2023-24537

  Soumya (1):
        shadow: Fix can not print full login timeout message

  Svend Meyland Nicolaisen (1):
        bitbake: npmsw fetcher: Avoid instantiating Fetch class if url list is empty

  Thomas De Schampheleire (3):
        qemu: make tracetool-generated output reproducible
        qemu: retain default trace backend if 'ust' is not enabled
        qemu: rename deprecated --enable-trace-backend configure option

  Tobias Hagelborn (1):
        lib/oe/gpg_sign.py: Avoid race when creating .sig files in detach_sign

  Ulrich Ölmann (2):
        kernel-dev: fix typos
        ref-manual: classes.rst: fix typo

  Wentao Zhang (1):
        python3: Fix failing sysconfig.py test on x86(64 bit) using lib64 as baselib by updating test_sysconfig for posix_user purelib

  Xiangyu Chen (1):
        shadow: backport patch to fix CVE-2023-29383

  Yoann Congal (3):
        cve-extra-exclusions: ignore inapplicable linux-yocto CVEs
        cve-exclusions_6.1: ignore patched CVE-2022-38457 & CVE-2022-40133
        cve-extra-exclusion: ignore disputed CVE-2023-23005

meta-openembedded: 17243e70c8..2d89a469e5:
  Armin Kuster (1):
        meta-openemnedded: Add myself as mickledore maintainer

  Bartosz Golaszewski (1):
        reboot-mode: put the build artifacts in ${B}

  Chen Qi (1):
        android-tools: fix systemd service setting

  Enrico Scholz (1):
        sox: remove ffmpeg dependency

  Etienne Cordonnier (4):
        uutils-coreutils: Add crates checksum
        uutils-coreutils: remove obsolete comment
        uutils-coreutils: upgrade 0.0.17 -> 0.0.18
        uutils-coreutils: disable musl support

  Ever ATILANO (4):
        meta-python: python3-path: Add ptest
        meta-python: python3-lorem: Add ptest
        meta-oe: recipes-support: dc: Add ptest
        meta-oe: recipes-extended: bitwise: Add ptest

  Johannes Kirchmair (1):
        redirect unwanted error message in nginx install

  Kai Kang (5):
        xfce4-taskmanager: 1.5.2 -> 1.5.5
        xfce4-terminal: 1.0.0 -> 1.0.4
        syslog-ng: not deliver syslog-ng-update-virtualenv
        xfce4-notifyd: 0.6.3 -> 0.8.2
        xfce4-screenshooter: 1.9.10 -> 1.10.3

  Khem Raj (28):
        krb5: Fix build with autoconf 2.72
        cyrus-sasl: Fix autoconf patch to work with new autoconf 2.72
        gmime: Update to 3.2.13
        imagemagick: Update to 7.1.1
        mpv: Upgrade to 0.35.1
        fwknop: Use pkg-config instead of gpgme-config
        fwknop: Fix AS_IF configure syntax
        libstemmer: Update to 2.2.0
        libidn: Update largefile m4 macros
        emacs: Fix build with autconf 2.72+
        ptest-packagelists-meta-oe: Remove minicoredumper from PTESTS_FAST_META_OE on musl
        poco: Remove pushd/popd from run-ptest
        surf: Fix build with gtkwebkit 2.40
        libio-pty-perl: Fix build with musl/clang
        meta-gnome: Update patch status for several recipes
        libnet-ssleay-perl: Fix patch upstream status
        meta-xfce: Fix missing upstream status in patches
        meta-multimedia: Fix missing upstream status in several patches
        meta-webserver: Fix missing upstream status on patches
        babl: Drop clang10 workaround for mips/rv64
        babl: Package /usr/lib/babl-0.1/ directory
        libtinyxml2: Add ptest support
        ptest-packagelists-meta-oe: Add libtinyxml2
        minifi-cpp: Always use stat on 64bit linux
        libdnet: Upgrade to 1.16.3
        python3-pyruvate: regenerate with updated bbclass
        monkey,webmin: Fix upstream patch status
        python3-pyruvate: Upgrade to 1.2.1

  Leon Anavi (2):
        libpcsc-perl: Add recipe
        pcsc-tools: Add runtime dependencies

  Markus Volk (29):
        nv-codec-headers: add clean target to Makefile
        flatpak: update 1.15.3 -> 1.15.4
        libcamera: re-introduce fix for gcc-13
        polkit-gnome: add recipe
        eog: update 43.2 -> 44.0
        evince: update 43.1 -> 44.0
        gdm: update 43.0 -> 44.0
        gnome-calculator: update 43.0.1 -> 44.0
        gnome-calendar: update 43.1 -> 44.0
        gnome-desktop: update 43 -> 44.0
        gnome-disk-utility: update 43.0 -> 44.0
        gnome-font-viewer: update 43.0 -> 44.0
        gnome-online-accounts: update 3.46.0 -> 3.48.0
        gnome-photos: update 43.0 -> 44.0
        gnome-session: update 43.0 -> 44.0
        gnome-settings-daemon: update 43.0 -> 44.0
        gnome-shell-extensions: update 43.1 -> 44.0
        gnome-software: update 43.4 -> 44.0
        gnome-terminal: update 3.46.7 -> 3.48.0
        gnome-text-editor: update 43.1 -> 44.0
        tracker-miners: update 3.4.2 -> 3.5.0
        zenity: update 3.43.0 -> 3.44.0
        xdg-desktop-portal-gnome: update 43.1 -> 44.0
        gedit: update 43.2 -> 44.2
        evolution-data-server: build oauth with gtk+3
        file-roller: set cpio path manually
        libdecor: update 1.1.0 -> 1.1.99
        freerdp: set PROXY_PLUGINDIR
        libnfs: add recipe

  Martin Jansa (5):
        zsh: fix installed-vs-shipped with multilib
        restinio: fix S variable in multilib builds
        mongodb: fix chown user for multilib builds
        pahole: respect libdir
        lvgl,lv-lib-png,lv-drivers: fix installed-vs-shipped QA issue with multilib

  Mingli Yu (1):
        mcelog: improve the ptest output

  Peter Johennecken (1):
        nginx: added packagegroup for webdav module

  Peter Kjellerstedt (5):
        python3-crc32c: Correct the license information
        paho-mqtt-cpp: Improve the license information
        autossh: Correct the license information
        paho-mqtt-c: Improve the license information
        recipes: Remove double protocol= from SRC_URIs

  Tim Orling (11):
        cli11: do not inherit ptest
        span-lite: do not inherit ptest
        ptest-packagelists-meta-oe.inc: add ptest recipes
        meta-oe-ptest*-image: enable BBCLASSEXTEND parallel execution
        ptest-packagelists-meta-python.inc: add ptest recipes
        meta-python-ptest*-image: enable BBCLASSEXTEND parallel execution
        python3-aspectlib: fix ptest
        ptest-packagelists-meta-perl.inc: add ptest recipes
        recipes-perl/packagegroups: move to recipes-core/
        recipes-perl/images: move to recipes-core
        meta-perl-ptest*-image: enable BBCLASSEXTEND parallel execution

  Ulrich Ölmann (1):
        jwt-cpp: enable usage in an SDK

  Wang Mingyu (40):
        abseil-cpp: upgrade 20230125.1 -> 20230125.2
        libbytesize: upgrade 2.7 -> 2.8
        gegl: upgrade 0.4.42 -> 0.4.44
        ctags: upgrade 6.0.20230319.0 -> 6.0.20230402.0
        libdeflate: upgrade 1.17 -> 1.18
        libldb: upgrade 2.7.1 -> 2.7.2
        ndisc6: upgrade 1.0.6 -> 1.0.7
        libpfm4: upgrade 4.12.0 -> 4.13.0
        libtraceevent: upgrade 1.7.1 -> 1.7.2
        nginx: upgrade 1.23.3 -> 1.23.4
        links: upgrade 2.28 -> 2.29
        python3-pyproj: upgrade 3.4.1 -> 3.5.0
        ostree: upgrade 2023.1 -> 2023.2
        openvpn: upgrade 2.6.1 -> 2.6.2
        python3-aenum: upgrade 3.1.11 -> 3.1.12
        python3-argcomplete: upgrade 3.0.0 -> 3.0.5
        python3-cassandra-driver: upgrade 3.25.0 -> 3.26.0
        python3-astroid: upgrade 2.15.0 -> 2.15.1
        python3-cmake: upgrade 3.26.0 -> 3.26.1
        python3-dateparser: upgrade 1.1.7 -> 1.1.8
        python3-google-api-python-client: upgrade 2.81.0 -> 2.83.0
        python3-elementpath: upgrade 4.0.1 -> 4.1.0
        python3-googleapis-common-protos: upgrade 1.58.0 -> 1.59.0
        python3-httplib2: upgrade 0.21.0 -> 0.22.0
        python3-google-auth: upgrade 2.16.2 -> 2.17.1
        python3-ipython: upgrade 8.11.0 -> 8.12.0
        python3-imageio: upgrade 2.26.0 -> 2.27.0
        python3-pychromecast: upgrade 13.0.4 -> 13.0.6
        python3-jdatetime: upgrade 4.1.0 -> 4.1.1
        python3-luma-oled: upgrade 3.11.0 -> 3.12.0
        python3-pydantic: upgrade 1.10.6 -> 1.10.7
        python3-pymodbus: upgrade 3.2.1 -> 3.2.2
        python3-pymisp: upgrade 2.4.169.2 -> 2.4.169.3
        python3-pywbemtools: upgrade 1.1.1 -> 1.2.0
        python3-redis: upgrade 4.5.1 -> 4.5.4
        python3-regex: upgrade 2022.10.31 -> 2023.3.23
        python3-typeguard: upgrade 3.0.1 -> 3.0.2
        python3-sentry-sdk: upgrade 1.17.0 -> 1.18.0
        python3-rich: upgrade 13.3.2 -> 13.3.3
        python3-watchdog: upgrade 2.3.1 -> 3.0.0

  Wentao Zhang (1):
        jemalloc: include the missing shell scripts and source the corresponds shell scripts for some test cases.

  Yi Zhao (1):
        samba: upgrade 4.18.0 -> 4.18.1

  Zoltán Böszörményi (2):
        hplip: Fix installation and QA
        libgusb: Allow building in native mode

meta-security: a397a38ed9..53c5cc794f:
  Anton Antonov (2):
        Fix PACKAGECONFIG check in Parsec OEQA tests
        Flush caches after OEQA tests

  Armin Kuster (6):
        checksecurity: update to 2.0.16
        krill: forced to inclued fetch hashes.
        suricata: Fixup to work within the recent crate changes.
        suricata: Missed on crate depends
        parsec-tool: update SRC_URI hash
        parsec-service: fix SRC_URI hash

  Gowtham Suresh Kumar (2):
        meta-parsec: Disable RSA-OAEP OEQA tests for Parsec PKCS11 backend
        parsec-service: Update parsec recipes to 1.2.0 and parsec-tool to 0.6.0

  Patrick Williams (1):
        libwhisker2-perl: adjust perl-version variable

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Ifa3e92c95982d5d6c51f02a02237ad5820694569
diff --git a/meta-arm/.gitlab-ci.yml b/meta-arm/.gitlab-ci.yml
index 28d0cc1..df1f0f5 100644
--- a/meta-arm/.gitlab-ci.yml
+++ b/meta-arm/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-image: ghcr.io/siemens/kas/kas:3.2
+image: ghcr.io/siemens/kas/kas:3.2.3
 
 variables:
   CPU_REQUEST: ""
@@ -42,9 +42,21 @@
   extends: .setup
   variables:
     KUBERNETES_CPU_REQUEST: $CPU_REQUEST
-  only:
-    variables:
-      - $BUILD_ENABLE_REGEX == null || $CI_JOB_NAME =~ $BUILD_ENABLE_REGEX
+  rules:
+    # Don't run MR pipelines
+    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
+      when: never
+    # Don't run pipelines for tags
+    - if: $CI_COMMIT_TAG
+      when: never
+    # Don't run if BUILD_ENABLE_REGEX is set, but the job doesn't match the regex
+    - if: '$BUILD_ENABLE_REGEX != null && $CI_JOB_NAME !~ $BUILD_ENABLE_REGEX'
+      when: never
+    # Allow the dev kernels to fail and not fail the overall build
+    - if: '$KERNEL == "linux-yocto-dev"'
+      allow_failure: true
+    # Catch all for everything else
+    - if: '$KERNEL != "linux-yocto-dev"'
   script:
     - KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME")
     - kas dump --update --force-checkout --resolve-refs --resolve-env $KASFILES 
@@ -207,6 +219,9 @@
 
 tc1:
   extends: .build
+  parallel:
+    matrix:
+      - TESTING: testimage
   tags:
     - x86_64
 
diff --git a/meta-arm/ci/base.yml b/meta-arm/ci/base.yml
index 23fb7cc..a724db6 100644
--- a/meta-arm/ci/base.yml
+++ b/meta-arm/ci/base.yml
@@ -5,7 +5,7 @@
 
 defaults:
   repos:
-    refspec: master
+    refspec: mickledore
 
 repos:
   meta-arm:
diff --git a/meta-arm/ci/fvps.yml b/meta-arm/ci/fvps.yml
index e3bc5fe5a..58c29d5 100644
--- a/meta-arm/ci/fvps.yml
+++ b/meta-arm/ci/fvps.yml
@@ -13,7 +13,8 @@
 
 target:
   - nativesdk-fvp-base-a-aem
-  - nativesdk-fvp-n1-edge
-  - nativesdk-fvp-sgi575
   - nativesdk-fvp-corstone500
   - nativesdk-fvp-corstone1000
+  - nativesdk-fvp-n1-edge
+  - nativesdk-fvp-sgi575
+  - nativesdk-fvp-tc1
diff --git a/meta-arm/ci/meta-virtualization.yml b/meta-arm/ci/meta-virtualization.yml
index 1cd0e21..8791fc3 100644
--- a/meta-arm/ci/meta-virtualization.yml
+++ b/meta-arm/ci/meta-virtualization.yml
@@ -6,3 +6,4 @@
 repos:
   meta-virtualization:
     url: git://git.yoctoproject.org/meta-virtualization
+    refspec: master
diff --git a/meta-arm/ci/n1sdp.yml b/meta-arm/ci/n1sdp.yml
index 797a522..f688307 100644
--- a/meta-arm/ci/n1sdp.yml
+++ b/meta-arm/ci/n1sdp.yml
@@ -4,3 +4,7 @@
     - ci/base.yml
 
 machine: n1sdp
+
+local_conf_header:
+  unsupported_trusted_services: |
+    MACHINE_FEATURES:remove = "ts-smm-gateway"
diff --git a/meta-arm/ci/tc1.yml b/meta-arm/ci/tc1.yml
index fd9acbd..f2de9a4 100644
--- a/meta-arm/ci/tc1.yml
+++ b/meta-arm/ci/tc1.yml
@@ -2,8 +2,11 @@
   version: 11
   includes:
     - ci/base.yml
+    - ci/fvp.yml
+    - ci/meta-openembedded.yml
 
 machine: tc1
 
 target:
-  - tc-artifacts-image
+  - core-image-minimal
+  - trusted-firmware-m
diff --git a/meta-arm/meta-arm-bsp/conf/machine/corstone1000-fvp.conf b/meta-arm/meta-arm-bsp/conf/machine/corstone1000-fvp.conf
index ca89c70..03577b8 100644
--- a/meta-arm/meta-arm-bsp/conf/machine/corstone1000-fvp.conf
+++ b/meta-arm/meta-arm-bsp/conf/machine/corstone1000-fvp.conf
@@ -29,6 +29,7 @@
 FVP_CONFIG[diagnostics] ?= "4"
 FVP_CONFIG[disable_visualisation] ?= "true"
 FVP_CONFIG[se.nvm.update_raw_image] ?= "0"
+FVP_CONFIG[se.cryptocell.USER_OTP_FILTERING_DISABLE] ?= "1"
 
 # Boot image
 FVP_DATA ?= "board.flash0=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.wic@0x68000000"
diff --git a/meta-arm/meta-arm-bsp/conf/machine/include/tc.inc b/meta-arm/meta-arm-bsp/conf/machine/include/tc.inc
index f51497d..f7a1cfa 100644
--- a/meta-arm/meta-arm-bsp/conf/machine/include/tc.inc
+++ b/meta-arm/meta-arm-bsp/conf/machine/include/tc.inc
@@ -11,16 +11,6 @@
 UBOOT_RD_ENTRYPOINT = "0x88000000"
 UBOOT_LOADADDRESS = "0x80080000"
 UBOOT_ENTRYPOINT = "0x80080000"
-# Below options will generate a key to sign the kernel Image and INITRAMFS_IMAGE
-# according to the default parameters of kernel-fitimage.bbclass. If the user
-# would prefer to use their own keys, disable the key generation using the
-# FIT_GENERATE_KEYS parameter and specify the location of the keys using the
-# below paramters.
-UBOOT_SIGN_ENABLE = "1"
-UBOOT_MKIMAGE_DTCOPTS = "-I dts -O dtb"
-UBOOT_SIGN_KEYNAME = "dev_key"
-UBOOT_SIGN_KEYDIR = "${DEPLOY_DIR_IMAGE}/keys"
-FIT_GENERATE_KEYS = "1"
 
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-arm64-ack"
 
@@ -38,3 +28,8 @@
 INITRAMFS_IMAGE ?= "core-image-minimal"
 
 SERIAL_CONSOLES = "115200;ttyAMA0"
+
+EXTRA_IMAGEDEPENDS += "trusted-firmware-a optee-os"
+# FIXME - there is signed image dependency/race with testimage.
+# This should be fixed in oe-core
+TESTIMAGEDEPENDS:append = " virtual/kernel:do_deploy"
diff --git a/meta-arm/meta-arm-bsp/conf/machine/n1sdp.conf b/meta-arm/meta-arm-bsp/conf/machine/n1sdp.conf
index 0e047e8..16b4098 100644
--- a/meta-arm/meta-arm-bsp/conf/machine/n1sdp.conf
+++ b/meta-arm/meta-arm-bsp/conf/machine/n1sdp.conf
@@ -29,9 +29,10 @@
 
 #UEFI EDK2 firmware
 EXTRA_IMAGEDEPENDS += "edk2-firmware"
+PREFERRED_VERSION_edk2-firmware ?= "202211"
 
 #optee
-PREFERRED_VERSION_optee-os ?= "3.18.%"
+PREFERRED_VERSION_optee-os ?= "3.20.%"
 
 #grub-efi
 EFI_PROVIDER ?= "grub-efi"
diff --git a/meta-arm/meta-arm-bsp/conf/machine/tc1.conf b/meta-arm/meta-arm-bsp/conf/machine/tc1.conf
index 42c5d8d..f99bfd2 100644
--- a/meta-arm/meta-arm-bsp/conf/machine/tc1.conf
+++ b/meta-arm/meta-arm-bsp/conf/machine/tc1.conf
@@ -5,3 +5,27 @@
 #@DESCRIPTION: Machine configuration for TC1
 
 require conf/machine/include/tc.inc
+
+TEST_TARGET = "OEFVPSerialTarget"
+TEST_SUITES = "linuxboot"
+
+# FVP Config
+FVP_PROVIDER ?= "fvp-tc1-native"
+FVP_EXE ?= "FVP_TC1"
+
+# FVP Parameters
+FVP_CONFIG[css.scp.ROMloader.fname] ?= "${DEPLOY_DIR_IMAGE}/scp_romfw.bin"
+FVP_CONFIG[css.trustedBootROMloader.fname] ?= "${DEPLOY_DIR_IMAGE}/bl1-tc.bin"
+FVP_CONFIG[board.flashloader0.fname] ?= "${DEPLOY_DIR_IMAGE}/fip_gpt-tc.bin"
+
+#FVP_CONFIG[board.hostbridge.userNetworking] ?= "true"
+#FVP_CONFIG[board.hostbridge.userNetPorts] ?= "8022=22"
+#smsc ethernet takes a very long time to come up.  disable now to prevent testimage timeout
+#FVP_CONFIG[board.smsc_91c111.enabled] ?= "1"
+
+FVP_CONSOLE = "terminal_s1"
+FVP_TERMINALS[soc.terminal_s0] ?= "Secure Console"
+FVP_TERMINALS[soc.terminal_s1] ?= "Console"
+
+# Boot image
+FVP_DATA ?= "board.dram=${DEPLOY_DIR_IMAGE}/fitImage-core-image-minimal-tc1-tc1@0x20000000"
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/images/n1sdp-board-firmware_2022.06.22.bb b/meta-arm/meta-arm-bsp/recipes-bsp/images/n1sdp-board-firmware_2022.06.22.bb
index ef7a4fc..6a27f02 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/images/n1sdp-board-firmware_2022.06.22.bb
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/images/n1sdp-board-firmware_2022.06.22.bb
@@ -13,7 +13,8 @@
 
 SRC_URI = "git://git.gitlab.arm.com/arm-reference-solutions/board-firmware.git;protocol=https;branch=n1sdp"
 
-SRCREV = "6d5253584a9c2fdc2edbdc39bf6f2436215d1382"
+SRCREV = "70ba494265eee76747faff38264860c19e214540"
+PV .= "+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-juno.inc b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-juno.inc
index ea2face..f78c94b 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-juno.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-juno.inc
@@ -10,7 +10,7 @@
     for TYPE in ${FW_INSTALL}; do
         if [ "$TYPE" = "romfw_bypass" ]; then
             install -D "${B}/${TYPE}/${FW_TARGETS}/bin/${SCP_PLATFORM}-bl1-bypass.bin" "${D}/firmware/${FW}_${TYPE}.bin"
-            install -D "${B}/${TYPE}/${FW_TARGETS}/bin/${SCP_PLATFORM}-bl1-bypass" "${D}/firmware/${FW}_${TYPE}.elf"
+            install -D "${B}/${TYPE}/${FW_TARGETS}/bin/${SCP_PLATFORM}-bl1-bypass.elf" "${D}/firmware/${FW}_${TYPE}.elf"
         fi
     done
 }
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-n1sdp.inc b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-n1sdp.inc
index 85f89a0..811537a 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-n1sdp.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-n1sdp.inc
@@ -3,9 +3,6 @@
 SCP_PLATFORM  = "n1sdp"
 SCP_LOG_LEVEL = "INFO"
 
-SRCREV  = "de7e464ecd77130147103cf48328099c2d0e6289"
-PV .= "+git${SRCPV}"
-
 COMPATIBLE_MACHINE:n1sdp = "n1sdp"
 
 DEPENDS += "fiptool-native"
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware_2.10.%.bbappend b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware_2.11.%.bbappend
similarity index 100%
rename from meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware_2.10.%.bbappend
rename to meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware_2.11.%.bbappend
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-n1sdp.inc b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-n1sdp.inc
index 9fb567f..f4ebcc1 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-n1sdp.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-n1sdp.inc
@@ -1,9 +1,5 @@
 # N1SDP specific TFA support
 
-# Align with post-N1SDP-2022.06.22 refresh
-SRCREV_tfa  = "1309c6c805190bd376c0561597653f3f8ecd0f58"
-PV .= "+git${SRCPV}"
-
 COMPATIBLE_MACHINE = "n1sdp"
 TFA_PLATFORM       = "n1sdp"
 TFA_BUILD_TARGET   = "all fip"
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-Platform-corstone1000-Introduce-IO-framework.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-Platform-corstone1000-Introduce-IO-framework.patch
deleted file mode 100644
index 900fd54..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-Platform-corstone1000-Introduce-IO-framework.patch
+++ /dev/null
@@ -1,1354 +0,0 @@
-From 1db9afdbf70eb9708640debe5d7d24558fe0f63a Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Mon, 7 Nov 2022 12:49:11 +0000
-Subject: [PATCH 01/10] Platform: corstone1000: Introduce IO framework
-
-- Introduce IO storage framework
-- Add IO flash to abstract flash implementation details from upper layer
-
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Upstream-Status: Accepted [TF-Mv1.8.0]
----
- .../target/arm/corstone1000/CMakeLists.txt    |   4 +
- .../ext/target/arm/corstone1000/io/io_block.c | 527 ++++++++++++++++++
- .../ext/target/arm/corstone1000/io/io_block.h |  40 ++
- .../ext/target/arm/corstone1000/io/io_defs.h  |  27 +
- .../target/arm/corstone1000/io/io_driver.h    |  54 ++
- .../ext/target/arm/corstone1000/io/io_flash.c | 183 ++++++
- .../ext/target/arm/corstone1000/io/io_flash.h |  37 ++
- .../target/arm/corstone1000/io/io_storage.c   | 289 ++++++++++
- .../target/arm/corstone1000/io/io_storage.h   |  92 +++
- 9 files changed, 1253 insertions(+)
- create mode 100644 platform/ext/target/arm/corstone1000/io/io_block.c
- create mode 100644 platform/ext/target/arm/corstone1000/io/io_block.h
- create mode 100644 platform/ext/target/arm/corstone1000/io/io_defs.h
- create mode 100644 platform/ext/target/arm/corstone1000/io/io_driver.h
- create mode 100644 platform/ext/target/arm/corstone1000/io/io_flash.c
- create mode 100644 platform/ext/target/arm/corstone1000/io/io_flash.h
- create mode 100644 platform/ext/target/arm/corstone1000/io/io_storage.c
- create mode 100644 platform/ext/target/arm/corstone1000/io/io_storage.h
-
-diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
-index cfbaffc995..7808efae68 100644
---- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
-+++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
-@@ -125,6 +125,9 @@ target_sources(platform_bl2
-         fw_update_agent/fwu_agent.c
-         bl2_security_cnt.c
-         $<$<NOT:$<BOOL:${PLATFORM_DEFAULT_OTP}>>:${PLATFORM_DIR}/ext/accelerator/cc312/otp_cc312.c>
-+        io/io_block.c
-+        io/io_flash.c
-+        io/io_storage.c
- )
- 
- if (PLATFORM_IS_FVP)
-@@ -182,6 +185,7 @@ target_include_directories(platform_bl2
-         fip_parser
-         Native_Driver
-         fw_update_agent
-+        io
-         .
-     INTERFACE
-         cc312
-diff --git a/platform/ext/target/arm/corstone1000/io/io_block.c b/platform/ext/target/arm/corstone1000/io/io_block.c
-new file mode 100644
-index 0000000000..f7eaf7444c
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/io/io_block.c
-@@ -0,0 +1,527 @@
-+/*
-+ * Copyright (c) 2022 Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: Apache-2.0
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the License); you may
-+ * not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
-+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+#include "io_block.h"
-+
-+#include <assert.h>
-+#include <errno.h>
-+
-+#include "io_defs.h"
-+#include "io_driver.h"
-+#include "io_storage.h"
-+
-+typedef struct {
-+    io_block_dev_spec_t *dev_spec;
-+    uintptr_t base;
-+    uint32_t file_pos;
-+    uint32_t size;
-+} block_dev_state_t;
-+
-+#define is_power_of_2(x) (((x) != 0U) && (((x) & ((x)-1U)) == 0U))
-+
-+io_type_t device_type_block(void);
-+
-+static int block_open(io_dev_info_t *dev_info, const uintptr_t spec,
-+                      io_entity_t *entity);
-+static int block_seek(io_entity_t *entity, int mode, size_t offset);
-+static int block_read(io_entity_t *entity, uintptr_t buffer, size_t length,
-+                      size_t *length_read);
-+static int block_write(io_entity_t *entity, const uintptr_t buffer,
-+                       size_t length, size_t *length_written);
-+static int block_close(io_entity_t *entity);
-+static int block_dev_open(const uintptr_t dev_spec, io_dev_info_t **dev_info);
-+static int block_dev_close(io_dev_info_t *dev_info);
-+
-+static const io_dev_connector_t block_dev_connector = {.dev_open =
-+                                                           block_dev_open};
-+
-+static const io_dev_funcs_t block_dev_funcs = {
-+    .type = device_type_block,
-+    .open = block_open,
-+    .seek = block_seek,
-+    .size = NULL,
-+    .read = block_read,
-+    .write = block_write,
-+    .close = block_close,
-+    .dev_init = NULL,
-+    .dev_close = block_dev_close,
-+};
-+
-+static block_dev_state_t state_pool[MAX_IO_BLOCK_DEVICES];
-+static io_dev_info_t dev_info_pool[MAX_IO_BLOCK_DEVICES];
-+
-+/* Track number of allocated block state */
-+static unsigned int block_dev_count;
-+
-+io_type_t device_type_block(void) { return IO_TYPE_BLOCK; }
-+
-+/* Locate a block state in the pool, specified by address */
-+static int find_first_block_state(const io_block_dev_spec_t *dev_spec,
-+                                  unsigned int *index_out) {
-+    unsigned int index;
-+    int result = -ENOENT;
-+
-+    for (index = 0U; index < MAX_IO_BLOCK_DEVICES; ++index) {
-+        /* dev_spec is used as identifier since it's unique */
-+        if (state_pool[index].dev_spec == dev_spec) {
-+            result = 0;
-+            *index_out = index;
-+            break;
-+        }
-+    }
-+    return result;
-+}
-+
-+/* Allocate a device info from the pool and return a pointer to it */
-+static int allocate_dev_info(io_dev_info_t **dev_info) {
-+    int result = -ENOMEM;
-+    assert(dev_info != NULL);
-+
-+    if (block_dev_count < MAX_IO_BLOCK_DEVICES) {
-+        unsigned int index = 0;
-+        result = find_first_block_state(NULL, &index);
-+        assert(result == 0);
-+        /* initialize dev_info */
-+        dev_info_pool[index].funcs = &block_dev_funcs;
-+        dev_info_pool[index].info = (uintptr_t)&state_pool[index];
-+        *dev_info = &dev_info_pool[index];
-+        ++block_dev_count;
-+    }
-+
-+    return result;
-+}
-+
-+/* Release a device info to the pool */
-+static int free_dev_info(io_dev_info_t *dev_info) {
-+    int result;
-+    unsigned int index = 0;
-+    block_dev_state_t *state;
-+    assert(dev_info != NULL);
-+
-+    state = (block_dev_state_t *)dev_info->info;
-+    result = find_first_block_state(state->dev_spec, &index);
-+    if (result == 0) {
-+        /* free if device info is valid */
-+        memset(state, 0, sizeof(block_dev_state_t));
-+        memset(dev_info, 0, sizeof(io_dev_info_t));
-+        --block_dev_count;
-+    }
-+
-+    return result;
-+}
-+
-+static int block_open(io_dev_info_t *dev_info, const uintptr_t spec,
-+                      io_entity_t *entity) {
-+    block_dev_state_t *cur;
-+    io_block_spec_t *region;
-+
-+    assert((dev_info->info != (uintptr_t)NULL) && (spec != (uintptr_t)NULL) &&
-+           (entity->info == (uintptr_t)NULL));
-+
-+    region = (io_block_spec_t *)spec;
-+    cur = (block_dev_state_t *)dev_info->info;
-+    assert(((region->offset % cur->dev_spec->block_size) == 0) &&
-+           ((region->length % cur->dev_spec->block_size) == 0));
-+
-+    cur->base = region->offset;
-+    cur->size = region->length;
-+    cur->file_pos = 0;
-+
-+    entity->info = (uintptr_t)cur;
-+    return 0;
-+}
-+
-+/* parameter offset is relative address at here */
-+static int block_seek(io_entity_t *entity, int mode, size_t offset) {
-+    block_dev_state_t *cur;
-+
-+    assert(entity->info != (uintptr_t)NULL);
-+
-+    cur = (block_dev_state_t *)entity->info;
-+
-+    assert((offset >= 0) && ((uint32_t)offset < cur->size));
-+    switch (mode) {
-+        case IO_SEEK_SET:
-+            cur->file_pos = (uint32_t)offset;
-+            break;
-+        case IO_SEEK_CUR:
-+            cur->file_pos += (uint32_t)offset;
-+            break;
-+        default:
-+            return -EINVAL;
-+    }
-+    assert(cur->file_pos < cur->size);
-+    return 0;
-+}
-+
-+/*
-+ * This function allows the caller to read any number of bytes
-+ * from any position. It hides from the caller that the low level
-+ * driver only can read aligned blocks of data. For this reason
-+ * we need to handle the use case where the first byte to be read is not
-+ * aligned to start of the block, the last byte to be read is also not
-+ * aligned to the end of a block, and there are zero or more blocks-worth
-+ * of data in between.
-+ *
-+ * In such a case we need to read more bytes than requested (i.e. full
-+ * blocks) and strip-out the leading bytes (aka skip) and the trailing
-+ * bytes (aka padding). See diagram below
-+ *
-+ * cur->file_pos ------------
-+ *                          |
-+ * cur->base                |
-+ *  |                       |
-+ *  v                       v<----  length   ---->
-+ *  --------------------------------------------------------------
-+ * |           |         block#1    |        |   block#n          |
-+ * |  block#0  |            +       |   ...  |     +              |
-+ * |           | <- skip -> +       |        |     + <- padding ->|
-+ *  ------------------------+----------------------+--------------
-+ *             ^                                                  ^
-+ *             |                                                  |
-+ *             v    iteration#1                iteration#n        v
-+ *              --------------------------------------------------
-+ *             |                    |        |                    |
-+ *             |<----  request ---->|  ...   |<----- request ---->|
-+ *             |                    |        |                    |
-+ *              --------------------------------------------------
-+ *            /                   /          |                    |
-+ *           /                   /           |                    |
-+ *          /                   /            |                    |
-+ *         /                   /             |                    |
-+ *        /                   /              |                    |
-+ *       /                   /               |                    |
-+ *      /                   /                |                    |
-+ *     /                   /                 |                    |
-+ *    /                   /                  |                    |
-+ *   /                   /                   |                    |
-+ *  <---- request ------>                    <------ request  ----->
-+ *  ---------------------                    -----------------------
-+ *  |        |          |                    |          |           |
-+ *  |<-skip->|<-nbytes->|           -------->|<-nbytes->|<-padding->|
-+ *  |        |          |           |        |          |           |
-+ *  ---------------------           |        -----------------------
-+ *  ^        \           \          |        |          |
-+ *  |         \           \         |        |          |
-+ *  |          \           \        |        |          |
-+ *  buf->offset \           \   buf->offset  |          |
-+ *               \           \               |          |
-+ *                \           \              |          |
-+ *                 \           \             |          |
-+ *                  \           \            |          |
-+ *                   \           \           |          |
-+ *                    \           \          |          |
-+ *                     \           \         |          |
-+ *                      --------------------------------
-+ *                      |           |        |         |
-+ * buffer-------------->|           | ...    |         |
-+ *                      |           |        |         |
-+ *                      --------------------------------
-+ *                      <-count#1->|                   |
-+ *                      <----------  count#n   -------->
-+ *                      <----------  length  ---------->
-+ *
-+ * Additionally, the IO driver has an underlying buffer that is at least
-+ * one block-size and may be big enough to allow.
-+ */
-+static int block_read(io_entity_t *entity, uintptr_t buffer, size_t length,
-+                      size_t *length_read) {
-+    block_dev_state_t *cur;
-+    io_block_spec_t *buf;
-+    io_block_ops_t *ops;
-+    int lba;
-+    size_t block_size, left;
-+    size_t nbytes;  /* number of bytes read in one iteration */
-+    size_t request; /* number of requested bytes in one iteration */
-+    size_t count;   /* number of bytes already read */
-+    /*
-+     * number of leading bytes from start of the block
-+     * to the first byte to be read
-+     */
-+    size_t skip;
-+
-+    /*
-+     * number of trailing bytes between the last byte
-+     * to be read and the end of the block
-+     */
-+    size_t padding;
-+
-+    assert(entity->info != (uintptr_t)NULL);
-+    cur = (block_dev_state_t *)entity->info;
-+    ops = &(cur->dev_spec->ops);
-+    buf = &(cur->dev_spec->buffer);
-+    block_size = cur->dev_spec->block_size;
-+    assert((length <= cur->size) && (length > 0U) && (ops->read != 0));
-+
-+    /*
-+     * We don't know the number of bytes that we are going
-+     * to read in every iteration, because it will depend
-+     * on the low level driver.
-+     */
-+    count = 0;
-+    for (left = length; left > 0U; left -= nbytes) {
-+        /*
-+         * We must only request operations aligned to the block
-+         * size. Therefore if file_pos is not block-aligned,
-+         * we have to request the operation to start at the
-+         * previous block boundary and skip the leading bytes. And
-+         * similarly, the number of bytes requested must be a
-+         * block size multiple
-+         */
-+        skip = cur->file_pos & (block_size - 1U);
-+
-+        /*
-+         * Calculate the block number containing file_pos
-+         * - e.g. block 3.
-+         */
-+        lba = (cur->file_pos + cur->base) / block_size;
-+
-+        if ((skip + left) > buf->length) {
-+            /*
-+             * The underlying read buffer is too small to
-+             * read all the required data - limit to just
-+             * fill the buffer, and then read again.
-+             */
-+            request = buf->length;
-+        } else {
-+            /*
-+             * The underlying read buffer is big enough to
-+             * read all the required data. Calculate the
-+             * number of bytes to read to align with the
-+             * block size.
-+             */
-+            request = skip + left;
-+            request = (request + (block_size - 1U)) & ~(block_size - 1U);
-+        }
-+        request = ops->read(lba, buf->offset, request);
-+
-+        if (request <= skip) {
-+            /*
-+             * We couldn't read enough bytes to jump over
-+             * the skip bytes, so we should have to read
-+             * again the same block, thus generating
-+             * the same error.
-+             */
-+            return -EIO;
-+        }
-+
-+        /*
-+         * Need to remove skip and padding bytes,if any, from
-+         * the read data when copying to the user buffer.
-+         */
-+        nbytes = request - skip;
-+        padding = (nbytes > left) ? nbytes - left : 0U;
-+        nbytes -= padding;
-+
-+        memcpy((void *)(buffer + count), (void *)(buf->offset + skip), nbytes);
-+
-+        cur->file_pos += nbytes;
-+        count += nbytes;
-+    }
-+    assert(count == length);
-+    *length_read = count;
-+
-+    return 0;
-+}
-+
-+/*
-+ * This function allows the caller to write any number of bytes
-+ * from any position. It hides from the caller that the low level
-+ * driver only can write aligned blocks of data.
-+ * See comments for block_read for more details.
-+ */
-+static int block_write(io_entity_t *entity, const uintptr_t buffer,
-+                       size_t length, size_t *length_written) {
-+    block_dev_state_t *cur;
-+    io_block_spec_t *buf;
-+    io_block_ops_t *ops;
-+    int lba;
-+    size_t block_size, left;
-+    size_t nbytes;  /* number of bytes read in one iteration */
-+    size_t request; /* number of requested bytes in one iteration */
-+    size_t count;   /* number of bytes already read */
-+    /*
-+     * number of leading bytes from start of the block
-+     * to the first byte to be read
-+     */
-+    size_t skip;
-+
-+    /*
-+     * number of trailing bytes between the last byte
-+     * to be read and the end of the block
-+     */
-+    size_t padding;
-+    assert(entity->info != (uintptr_t)NULL);
-+    cur = (block_dev_state_t *)entity->info;
-+    ops = &(cur->dev_spec->ops);
-+    buf = &(cur->dev_spec->buffer);
-+    block_size = cur->dev_spec->block_size;
-+    assert((length <= cur->size) && (length > 0U) && (ops->read != 0) &&
-+           (ops->write != 0));
-+
-+    /*
-+     * We don't know the number of bytes that we are going
-+     * to write in every iteration, because it will depend
-+     * on the low level driver.
-+     */
-+    count = 0;
-+    for (left = length; left > 0U; left -= nbytes) {
-+        /*
-+         * We must only request operations aligned to the block
-+         * size. Therefore if file_pos is not block-aligned,
-+         * we have to request the operation to start at the
-+         * previous block boundary and skip the leading bytes. And
-+         * similarly, the number of bytes requested must be a
-+         * block size multiple
-+         */
-+        skip = cur->file_pos & (block_size - 1U);
-+
-+        /*
-+         * Calculate the block number containing file_pos
-+         * - e.g. block 3.
-+         */
-+        lba = (cur->file_pos + cur->base) / block_size;
-+
-+        if ((skip + left) > buf->length) {
-+            /*
-+             * The underlying read buffer is too small to
-+             * read all the required data - limit to just
-+             * fill the buffer, and then read again.
-+             */
-+            request = buf->length;
-+        } else {
-+            /*
-+             * The underlying read buffer is big enough to
-+             * read all the required data. Calculate the
-+             * number of bytes to read to align with the
-+             * block size.
-+             */
-+            request = skip + left;
-+            request = (request + (block_size - 1U)) & ~(block_size - 1U);
-+        }
-+
-+        /*
-+         * The number of bytes that we are going to write
-+         * from the user buffer will depend of the size
-+         * of the current request.
-+         */
-+        nbytes = request - skip;
-+        padding = (nbytes > left) ? nbytes - left : 0U;
-+        nbytes -= padding;
-+
-+        /*
-+         * If we have skip or padding bytes then we have to preserve
-+         * some content and it means that we have to read before
-+         * writing
-+         */
-+        if ((skip > 0U) || (padding > 0U)) {
-+            request = ops->read(lba, buf->offset, request);
-+            /*
-+             * The read may return size less than
-+             * requested. Round down to the nearest block
-+             * boundary
-+             */
-+            request &= ~(block_size - 1U);
-+            if (request <= skip) {
-+                /*
-+                 * We couldn't read enough bytes to jump over
-+                 * the skip bytes, so we should have to read
-+                 * again the same block, thus generating
-+                 * the same error.
-+                 */
-+                return -EIO;
-+            }
-+            nbytes = request - skip;
-+            padding = (nbytes > left) ? nbytes - left : 0U;
-+            nbytes -= padding;
-+        }
-+
-+        memcpy((void *)(buf->offset + skip), (void *)(buffer + count), nbytes);
-+
-+        request = ops->write(lba, buf->offset, request);
-+        if (request <= skip) return -EIO;
-+
-+        /*
-+         * And the previous write operation may modify the size
-+         * of the request, so again, we have to calculate the
-+         * number of bytes that we consumed from the user
-+         * buffer
-+         */
-+        nbytes = request - skip;
-+        padding = (nbytes > left) ? nbytes - left : 0U;
-+        nbytes -= padding;
-+
-+        cur->file_pos += nbytes;
-+        count += nbytes;
-+    }
-+    assert(count == length);
-+    *length_written = count;
-+
-+    return 0;
-+}
-+
-+static int block_close(io_entity_t *entity) {
-+    entity->info = (uintptr_t)NULL;
-+    return 0;
-+}
-+
-+static int block_dev_open(const uintptr_t dev_spec, io_dev_info_t **dev_info) {
-+    block_dev_state_t *cur;
-+    io_block_spec_t *buffer;
-+    io_dev_info_t *info;
-+    size_t block_size;
-+    int result;
-+    assert(dev_info != NULL);
-+    result = allocate_dev_info(&info);
-+    if (result != 0) return -ENOENT;
-+
-+    cur = (block_dev_state_t *)info->info;
-+    /* dev_spec is type of io_block_dev_spec_t. */
-+    cur->dev_spec = (io_block_dev_spec_t *)dev_spec;
-+    buffer = &(cur->dev_spec->buffer);
-+    block_size = cur->dev_spec->block_size;
-+
-+    assert((block_size > 0U) && (is_power_of_2(block_size) != 0U) &&
-+           ((buffer->length % block_size) == 0U));
-+
-+    *dev_info = info; /* cast away const */
-+    (void)block_size;
-+    (void)buffer;
-+    return 0;
-+}
-+
-+static int block_dev_close(io_dev_info_t *dev_info) {
-+    return free_dev_info(dev_info);
-+}
-+
-+/* Exported functions */
-+
-+/* Register the Block driver with the IO abstraction */
-+int register_io_dev_block(const io_dev_connector_t **dev_con) {
-+    int result;
-+
-+    assert(dev_con != NULL);
-+
-+    /*
-+     * Since dev_info isn't really used in io_register_device, always
-+     * use the same device info at here instead.
-+     */
-+    result = io_register_device(&dev_info_pool[0]);
-+    if (result == 0) *dev_con = &block_dev_connector;
-+    return result;
-+}
-diff --git a/platform/ext/target/arm/corstone1000/io/io_block.h b/platform/ext/target/arm/corstone1000/io/io_block.h
-new file mode 100644
-index 0000000000..1603aa74c5
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/io/io_block.h
-@@ -0,0 +1,40 @@
-+/*
-+ * Copyright (c) 2022 Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: Apache-2.0
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the License); you may
-+ * not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
-+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+#ifndef __IO_BLOCK_H__
-+#define __IO_BLOCK_H__
-+
-+#include "io_storage.h"
-+
-+/* block devices ops */
-+typedef struct io_block_ops {
-+    size_t (*read)(int lba, uintptr_t buf, size_t size);
-+    size_t (*write)(int lba, const uintptr_t buf, size_t size);
-+} io_block_ops_t;
-+
-+typedef struct io_block_dev_spec {
-+    io_block_spec_t buffer;
-+    io_block_ops_t ops;
-+    size_t block_size;
-+} io_block_dev_spec_t;
-+
-+struct io_dev_connector;
-+
-+int register_io_dev_block(const struct io_dev_connector **dev_con);
-+
-+#endif /* __IO_BLOCK_H__ */
-\ No newline at end of file
-diff --git a/platform/ext/target/arm/corstone1000/io/io_defs.h b/platform/ext/target/arm/corstone1000/io/io_defs.h
-new file mode 100644
-index 0000000000..acba969ed6
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/io/io_defs.h
-@@ -0,0 +1,27 @@
-+/*
-+ * Copyright (c) 2022 Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: Apache-2.0
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the License); you may
-+ * not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
-+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+#ifndef __IO_DEFS_H__
-+#define __IO_DEFS_H__
-+
-+#define MAX_IO_DEVICES          (2)
-+#define MAX_IO_HANDLES          (2)
-+#define MAX_IO_BLOCK_DEVICES    (2)
-+#define MAX_IO_FLASH_DEVICES    (2)
-+
-+#endif /* __IO_DEFS_H__ */
-\ No newline at end of file
-diff --git a/platform/ext/target/arm/corstone1000/io/io_driver.h b/platform/ext/target/arm/corstone1000/io/io_driver.h
-new file mode 100644
-index 0000000000..cf9e21a6d4
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/io/io_driver.h
-@@ -0,0 +1,54 @@
-+/*
-+ * Copyright (c) 2014-2022, ARM Limited and Contributors. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ */
-+
-+#ifndef __IO_DRIVER_H__
-+#define __IO_DRIVER_H__
-+
-+#include <io_storage.h>
-+#include <stdint.h>
-+
-+/* Generic IO entity structure,representing an accessible IO construct on the
-+ * device, such as a file */
-+typedef struct io_entity {
-+    struct io_dev_info *dev_handle;
-+    uintptr_t info;
-+} io_entity_t;
-+
-+/* Device info structure, providing device-specific functions and a means of
-+ * adding driver-specific state */
-+typedef struct io_dev_info {
-+    const struct io_dev_funcs *funcs;
-+    uintptr_t info;
-+} io_dev_info_t;
-+
-+/* Structure used to create a connection to a type of device */
-+typedef struct io_dev_connector {
-+    /* dev_open opens a connection to a particular device driver */
-+    int (*dev_open)(const uintptr_t dev_spec, io_dev_info_t **dev_info);
-+} io_dev_connector_t;
-+
-+/* Structure to hold device driver function pointers */
-+typedef struct io_dev_funcs {
-+    io_type_t (*type)(void);
-+    int (*open)(io_dev_info_t *dev_info, const uintptr_t spec,
-+                io_entity_t *entity);
-+    int (*seek)(io_entity_t *entity, int mode, size_t offset);
-+    int (*size)(io_entity_t *entity, size_t *length);
-+    int (*read)(io_entity_t *entity, uintptr_t buffer, size_t length,
-+                size_t *length_read);
-+    int (*write)(io_entity_t *entity, const uintptr_t buffer, size_t length,
-+                 size_t *length_written);
-+    int (*close)(io_entity_t *entity);
-+    int (*dev_init)(io_dev_info_t *dev_info, const uintptr_t init_params);
-+    int (*dev_close)(io_dev_info_t *dev_info);
-+} io_dev_funcs_t;
-+
-+/* Operations intended to be performed during platform initialisation */
-+
-+/* Register an IO device */
-+int io_register_device(const io_dev_info_t *dev_info);
-+
-+#endif /* __IO_DRIVER_H__ */
-diff --git a/platform/ext/target/arm/corstone1000/io/io_flash.c b/platform/ext/target/arm/corstone1000/io/io_flash.c
-new file mode 100644
-index 0000000000..ff4524e9c5
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/io/io_flash.c
-@@ -0,0 +1,183 @@
-+/*
-+ * Copyright (c) 2022 Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: Apache-2.0
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the License); you may
-+ * not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
-+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+#include "io_flash.h"
-+
-+#include <assert.h>
-+#include <errno.h>
-+
-+#include "Driver_Flash.h"
-+#include "io_block.h"
-+#include "io_defs.h"
-+#include "io_driver.h"
-+#include "io_storage.h"
-+
-+#if MAX_IO_FLASH_DEVICES > MAX_IO_BLOCK_DEVICES
-+#error \
-+    "FLASH devices are BLOCK devices .. MAX_IO_FLASH_DEVICES should be less or equal to MAX_IO_BLOCK_DEVICES"
-+#endif
-+
-+/* Private Prototypes */
-+
-+static int flash_dev_open(const uintptr_t dev_spec, io_dev_info_t **dev_info);
-+static size_t flash_read(int lba, uintptr_t buf, size_t size, size_t flash_id);
-+static size_t flash_write(int lba, const uintptr_t buf, size_t size,
-+                          size_t flash_id);
-+static size_t flash0_read(int lba, uintptr_t buf, size_t size);
-+static size_t flash0_write(int lba, uintptr_t buf, size_t size);
-+static size_t flash1_read(int lba, uintptr_t buf, size_t size);
-+static size_t flash1_write(int lba, uintptr_t buf, size_t size);
-+
-+/** Private Data **/
-+
-+/* Flash device data */
-+static const io_dev_connector_t flash_dev_connector = {.dev_open =
-+                                                           flash_dev_open};
-+static size_t flash_dev_count = 0;
-+static io_flash_dev_spec_t *flash_dev_specs[MAX_IO_FLASH_DEVICES];
-+
-+/* Block device data */
-+static io_dev_connector_t block_dev_connectors[MAX_IO_FLASH_DEVICES];
-+static io_block_dev_spec_t block_dev_spec[MAX_IO_FLASH_DEVICES];
-+
-+/* Flash devices read/write function pointers */
-+static io_block_ops_t flashs_ops[MAX_IO_FLASH_DEVICES] = {
-+    [0] = {.read = flash0_read, .write = flash0_write},
-+    [1] = {.read = flash1_read, .write = flash1_write},
-+};
-+
-+/* Flash ops functions */
-+static size_t flash_read(int lba, uintptr_t buf, size_t size, size_t flash_id) {
-+    ARM_DRIVER_FLASH *flash_driver =
-+        ((ARM_DRIVER_FLASH *)flash_dev_specs[flash_id]->flash_driver);
-+    ARM_FLASH_INFO *info = flash_driver->GetInfo();
-+    uint32_t addr = info->sector_size * lba;
-+    uint32_t offset = addr - flash_dev_specs[flash_id]->base_addr;
-+    size_t rem = info->sector_count * info->sector_size - offset;
-+    size_t cnt = size < rem ? size : rem;
-+
-+    return flash_driver->ReadData(offset, buf, cnt);
-+}
-+
-+static size_t flash_write(int lba, const uintptr_t buf, size_t size,
-+                          size_t flash_id) {
-+    ARM_DRIVER_FLASH *flash_driver =
-+        ((ARM_DRIVER_FLASH *)flash_dev_specs[flash_id]->flash_driver);
-+    ARM_FLASH_INFO *info = flash_driver->GetInfo();
-+    int32_t rc = 0;
-+    uint32_t addr = info->sector_size * lba;
-+    uint32_t offset = addr - flash_dev_specs[flash_id]->base_addr;
-+    size_t rem = info->sector_count * info->sector_size - offset;
-+    size_t cnt = size < rem ? size : rem;
-+
-+    flash_driver->EraseSector(offset);
-+    rc = flash_driver->ProgramData(offset, buf, cnt);
-+    return rc;
-+}
-+
-+/* Flash ops functions wrapper for each device */
-+
-+static size_t flash0_read(int lba, uintptr_t buf, size_t size) {
-+    return flash_read(lba, buf, size, 0);
-+}
-+
-+static size_t flash0_write(int lba, uintptr_t buf, size_t size) {
-+    return flash_write(lba, buf, size, 0);
-+}
-+
-+static size_t flash1_read(int lba, uintptr_t buf, size_t size) {
-+    return flash_read(lba, buf, size, 1);
-+}
-+
-+static size_t flash1_write(int lba, uintptr_t buf, size_t size) {
-+    return flash_write(lba, buf, size, 1);
-+}
-+
-+/**
-+ *  Helper function to find the index of stored flash_dev_specs or
-+ *  return a free slot in case of a new dev_spec
-+ */
-+static int find_flash_dev_specs(const uintptr_t dev_spec) {
-+    /* Search in the saved ones */
-+    for (int i = 0; i < flash_dev_count; ++i) {
-+        if (flash_dev_specs[i] != NULL &&
-+            flash_dev_specs[i]->flash_driver ==
-+                ((io_flash_dev_spec_t *)dev_spec)->flash_driver) {
-+            return i;
-+        }
-+    }
-+    /* Find the first empty flash_dev_specs to be used */
-+    for (int i = 0; i < flash_dev_count; ++i) {
-+        if (flash_dev_specs[i] == NULL) {
-+            return i;
-+        }
-+    }
-+    return -1;
-+}
-+
-+/**
-+ * This function should be called
-+ */
-+static int flash_dev_open(const uintptr_t dev_spec, io_dev_info_t **dev_info) {
-+    ARM_DRIVER_FLASH *flash_driver;
-+    assert(dev_info != NULL);
-+    assert(dev_spec != NULL);
-+
-+    size_t index = find_flash_dev_specs(dev_spec);
-+
-+    /* Check if Flash ops functions are defined for this flash */
-+    assert(flashs_ops[index].read && flashs_ops[index].write);
-+
-+    flash_dev_specs[index] = dev_spec;
-+    flash_driver = flash_dev_specs[index]->flash_driver;
-+
-+    block_dev_spec[index].block_size = flash_driver->GetInfo()->sector_size;
-+    block_dev_spec[index].buffer.offset = flash_dev_specs[index]->buffer;
-+    block_dev_spec[index].buffer.length = flash_dev_specs[index]->bufferlen;
-+    block_dev_spec[index].ops = flashs_ops[index];
-+
-+    flash_driver->Initialize(NULL);
-+
-+    block_dev_connectors[index].dev_open(&block_dev_spec[index], dev_info);
-+
-+    return 0;
-+}
-+
-+/* Exported functions */
-+
-+/**
-+ * Register the flash device.
-+ * Internally it register a block device.
-+ */
-+int register_io_dev_flash(const io_dev_connector_t **dev_con) {
-+    int result;
-+
-+    if (flash_dev_count >= MAX_IO_FLASH_DEVICES) {
-+        return -ENOENT;
-+    }
-+    assert(dev_con != NULL);
-+
-+    result = register_io_dev_block(dev_con);
-+    if (result == 0) {
-+        /* Store the block dev connector */
-+        block_dev_connectors[flash_dev_count++] = **dev_con;
-+        /* Override dev_con with the flash dev connector */
-+        *dev_con = &flash_dev_connector;
-+    }
-+    return result;
-+}
-diff --git a/platform/ext/target/arm/corstone1000/io/io_flash.h b/platform/ext/target/arm/corstone1000/io/io_flash.h
-new file mode 100644
-index 0000000000..8bc38b5824
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/io/io_flash.h
-@@ -0,0 +1,37 @@
-+/*
-+ * Copyright (c) 2022 Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: Apache-2.0
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the License); you may
-+ * not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
-+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+#ifndef __IO_FLASH_H__
-+#define __IO_FLASH_H__
-+
-+#include "io_storage.h"
-+
-+typedef struct io_flash_dev_spec {
-+    uintptr_t buffer;
-+    size_t bufferlen;
-+    uint32_t base_addr;
-+    uintptr_t flash_driver;
-+} io_flash_dev_spec_t;
-+
-+struct io_dev_connector;
-+
-+/* Register the flash driver with the IO abstraction internally it register a
-+ * block device*/
-+int register_io_dev_flash(const struct io_dev_connector **dev_con);
-+
-+#endif /* __IO_FLASH_H__ */
-diff --git a/platform/ext/target/arm/corstone1000/io/io_storage.c b/platform/ext/target/arm/corstone1000/io/io_storage.c
-new file mode 100644
-index 0000000000..f26f4980f0
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/io/io_storage.c
-@@ -0,0 +1,289 @@
-+/*
-+ * Copyright (c) 2022 Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: Apache-2.0
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the License); you may
-+ * not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
-+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+#include <assert.h>
-+#include <errno.h>
-+#include <stdbool.h>
-+
-+#include "io_defs.h"
-+#include "io_driver.h"
-+
-+/* Storage for a fixed maximum number of IO entities, definable by platform */
-+static io_entity_t entity_pool[MAX_IO_HANDLES];
-+
-+/* Simple way of tracking used storage - each entry is NULL or a pointer to an
-+ * entity */
-+static io_entity_t *entity_map[MAX_IO_HANDLES];
-+
-+/* Track number of allocated entities */
-+static unsigned int entity_count;
-+
-+/* Array of fixed maximum of registered devices, definable by platform */
-+static const io_dev_info_t *devices[MAX_IO_DEVICES];
-+
-+/* Number of currently registered devices */
-+static unsigned int dev_count;
-+
-+/* Return a boolean value indicating whether a device connector is valid */
-+static bool is_valid_dev_connector(const io_dev_connector_t *dev_con) {
-+    return (dev_con != NULL) && (dev_con->dev_open != NULL);
-+}
-+
-+/* Return a boolean value indicating whether a device handle is valid */
-+static bool is_valid_dev(const uintptr_t dev_handle) {
-+    const io_dev_info_t *dev = (io_dev_info_t *)dev_handle;
-+
-+    return (dev != NULL) && (dev->funcs != NULL) &&
-+           (dev->funcs->type != NULL) && (dev->funcs->type() < IO_TYPE_MAX);
-+}
-+
-+/* Return a boolean value indicating whether an IO entity is valid */
-+static bool is_valid_entity(const uintptr_t handle) {
-+    const io_entity_t *entity = (io_entity_t *)handle;
-+
-+    return (entity != NULL) && (is_valid_dev((uintptr_t)entity->dev_handle));
-+}
-+
-+/* Return a boolean value indicating whether a seek mode is valid */
-+static bool is_valid_seek_mode(io_seek_mode_t mode) {
-+    return ((mode != IO_SEEK_INVALID) && (mode < IO_SEEK_MAX));
-+}
-+
-+/* Open a connection to a specific device */
-+static int io_storage_dev_open(const io_dev_connector_t *dev_con,
-+                               const uintptr_t dev_spec,
-+                               io_dev_info_t **dev_info) {
-+    assert(dev_info != NULL);
-+    assert(is_valid_dev_connector(dev_con));
-+
-+    return dev_con->dev_open(dev_spec, dev_info);
-+}
-+
-+/* Set a handle to track an entity */
-+static void set_handle(uintptr_t *handle, io_entity_t *entity) {
-+    assert(handle != NULL);
-+    *handle = (uintptr_t)entity;
-+}
-+
-+/* Locate an entity in the pool, specified by address */
-+static int find_first_entity(const io_entity_t *entity,
-+                             unsigned int *index_out) {
-+    int result = -ENOENT;
-+    for (unsigned int index = 0; index < MAX_IO_HANDLES; ++index) {
-+        if (entity_map[index] == entity) {
-+            result = 0;
-+            *index_out = index;
-+            break;
-+        }
-+    }
-+    return result;
-+}
-+
-+/* Allocate an entity from the pool and return a pointer to it */
-+static int allocate_entity(io_entity_t **entity) {
-+    int result = -ENOMEM;
-+    assert(entity != NULL);
-+
-+    if (entity_count < MAX_IO_HANDLES) {
-+        unsigned int index = 0;
-+        result = find_first_entity(NULL, &index);
-+        assert(result == 0);
-+        *entity = &entity_pool[index];
-+        entity_map[index] = &entity_pool[index];
-+        ++entity_count;
-+    }
-+
-+    return result;
-+}
-+
-+/* Release an entity back to the pool */
-+static int free_entity(const io_entity_t *entity) {
-+    int result;
-+    unsigned int index = 0;
-+    assert(entity != NULL);
-+
-+    result = find_first_entity(entity, &index);
-+    if (result == 0) {
-+        entity_map[index] = NULL;
-+        --entity_count;
-+    }
-+
-+    return result;
-+}
-+
-+/* Exported API */
-+
-+/* Register an io device */
-+int io_register_device(const io_dev_info_t *dev_info) {
-+    int result = -ENOMEM;
-+    assert(dev_info != NULL);
-+
-+    if (dev_count < MAX_IO_DEVICES) {
-+        devices[dev_count] = dev_info;
-+        dev_count++;
-+        result = 0;
-+    }
-+
-+    return result;
-+}
-+
-+/* Open a connection to an IO device */
-+int io_dev_open(const io_dev_connector_t *dev_con, const uintptr_t dev_spec,
-+                uintptr_t *handle) {
-+    assert(handle != NULL);
-+    return io_storage_dev_open(dev_con, dev_spec, (io_dev_info_t **)handle);
-+}
-+
-+/* Initialise an IO device explicitly - to permit lazy initialisation or
-+ * re-initialisation */
-+int io_dev_init(uintptr_t dev_handle, const uintptr_t init_params) {
-+    int result = 0;
-+    assert(dev_handle != (uintptr_t)NULL);
-+    assert(is_valid_dev(dev_handle));
-+
-+    io_dev_info_t *dev = (io_dev_info_t *)dev_handle;
-+
-+    /* Absence of registered function implies NOP here */
-+    if (dev->funcs->dev_init != NULL) {
-+        result = dev->funcs->dev_init(dev, init_params);
-+    }
-+
-+    return result;
-+}
-+
-+/* Close a connection to a device */
-+int io_dev_close(uintptr_t dev_handle) {
-+    int result = 0;
-+    assert(dev_handle != (uintptr_t)NULL);
-+    assert(is_valid_dev(dev_handle));
-+
-+    io_dev_info_t *dev = (io_dev_info_t *)dev_handle;
-+
-+    /* Absence of registered function implies NOP here */
-+    if (dev->funcs->dev_close != NULL) {
-+        result = dev->funcs->dev_close(dev);
-+    }
-+
-+    return result;
-+}
-+
-+/* Synchronous operations */
-+
-+/* Open an IO entity */
-+int io_open(uintptr_t dev_handle, const uintptr_t spec, uintptr_t *handle) {
-+    int result;
-+    assert((spec != (uintptr_t)NULL) && (handle != NULL));
-+    assert(is_valid_dev(dev_handle));
-+
-+    io_dev_info_t *dev = (io_dev_info_t *)dev_handle;
-+    io_entity_t *entity;
-+
-+    result = allocate_entity(&entity);
-+
-+    if (result == 0) {
-+        assert(dev->funcs->open != NULL);
-+        result = dev->funcs->open(dev, spec, entity);
-+
-+        if (result == 0) {
-+            entity->dev_handle = dev;
-+            set_handle(handle, entity);
-+        } else
-+            free_entity(entity);
-+    }
-+    return result;
-+}
-+
-+/* Seek to a specific position in an IO entity */
-+int io_seek(uintptr_t handle, io_seek_mode_t mode, int32_t offset) {
-+    int result = -ENODEV;
-+    assert(is_valid_entity(handle) && is_valid_seek_mode(mode));
-+
-+    io_entity_t *entity = (io_entity_t *)handle;
-+
-+    io_dev_info_t *dev = entity->dev_handle;
-+
-+    if (dev->funcs->seek != NULL)
-+        result = dev->funcs->seek(entity, mode, offset);
-+
-+    return result;
-+}
-+
-+/* Determine the length of an IO entity */
-+int io_size(uintptr_t handle, size_t *length) {
-+    int result = -ENODEV;
-+    assert(is_valid_entity(handle) && (length != NULL));
-+
-+    io_entity_t *entity = (io_entity_t *)handle;
-+
-+    io_dev_info_t *dev = entity->dev_handle;
-+
-+    if (dev->funcs->size != NULL) result = dev->funcs->size(entity, length);
-+
-+    return result;
-+}
-+
-+/* Read data from an IO entity */
-+int io_read(uintptr_t handle, uintptr_t buffer, size_t length,
-+            size_t *length_read) {
-+    int result = -ENODEV;
-+    assert(is_valid_entity(handle));
-+
-+    io_entity_t *entity = (io_entity_t *)handle;
-+
-+    io_dev_info_t *dev = entity->dev_handle;
-+
-+    if (dev->funcs->read != NULL)
-+        result = dev->funcs->read(entity, buffer, length, length_read);
-+
-+    return result;
-+}
-+
-+/* Write data to an IO entity */
-+int io_write(uintptr_t handle, const uintptr_t buffer, size_t length,
-+             size_t *length_written) {
-+    int result = -ENODEV;
-+    assert(is_valid_entity(handle));
-+
-+    io_entity_t *entity = (io_entity_t *)handle;
-+
-+    io_dev_info_t *dev = entity->dev_handle;
-+
-+    if (dev->funcs->write != NULL) {
-+        result = dev->funcs->write(entity, buffer, length, length_written);
-+    }
-+
-+    return result;
-+}
-+
-+/* Close an IO entity */
-+int io_close(uintptr_t handle) {
-+    int result = 0;
-+    assert(is_valid_entity(handle));
-+
-+    io_entity_t *entity = (io_entity_t *)handle;
-+
-+    io_dev_info_t *dev = entity->dev_handle;
-+
-+    /* Absence of registered function implies NOP here */
-+    if (dev->funcs->close != NULL) result = dev->funcs->close(entity);
-+
-+    /* Ignore improbable free_entity failure */
-+    (void)free_entity(entity);
-+
-+    return result;
-+}
-diff --git a/platform/ext/target/arm/corstone1000/io/io_storage.h b/platform/ext/target/arm/corstone1000/io/io_storage.h
-new file mode 100644
-index 0000000000..0cdca5b269
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/io/io_storage.h
-@@ -0,0 +1,92 @@
-+/*
-+ * Copyright (c) 2022 Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: Apache-2.0
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the License); you may
-+ * not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
-+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+#ifndef __IO_STORAGE_H__
-+#define __IO_STORAGE_H__
-+
-+#include <stddef.h>
-+#include <stdint.h>
-+
-+/* Access modes used when accessing data on a device */
-+#define IO_MODE_INVALID (0)
-+#define IO_MODE_RO (1 << 0)
-+#define IO_MODE_RW (1 << 1)
-+
-+/* Device type which can be used to enable policy decisions about which device
-+ * to access */
-+typedef enum {
-+    IO_TYPE_INVALID,
-+    IO_TYPE_SEMIHOSTING,
-+    IO_TYPE_MEMMAP,
-+    IO_TYPE_DUMMY,
-+    IO_TYPE_FIRMWARE_IMAGE_PACKAGE,
-+    IO_TYPE_BLOCK,
-+    IO_TYPE_MTD,
-+    IO_TYPE_MMC,
-+    IO_TYPE_STM32IMAGE,
-+    IO_TYPE_ENCRYPTED,
-+    IO_TYPE_MAX
-+} io_type_t;
-+
-+/* Modes used when seeking data on a supported device */
-+typedef enum {
-+    IO_SEEK_INVALID,
-+    IO_SEEK_SET,
-+    IO_SEEK_END,
-+    IO_SEEK_CUR,
-+    IO_SEEK_MAX
-+} io_seek_mode_t;
-+
-+/* Connector type, providing a means of identifying a device to open */
-+struct io_dev_connector;
-+
-+/* Block specification - used to refer to data on a device supporting
-+ * block-like entities */
-+typedef struct io_block_spec {
-+    size_t offset;
-+    size_t length;
-+} io_block_spec_t;
-+
-+
-+/* Open a connection to a device */
-+int io_dev_open(const struct io_dev_connector *dev_con,
-+                const uintptr_t dev_spec, uintptr_t *handle);
-+
-+/* Initialise a device explicitly - to permit lazy initialisation or
-+ * re-initialisation */
-+int io_dev_init(uintptr_t dev_handle, const uintptr_t init_params);
-+
-+/* Close a connection to a device */
-+int io_dev_close(uintptr_t dev_handle);
-+
-+/* Synchronous operations */
-+int io_open(uintptr_t dev_handle, const uintptr_t spec, uintptr_t *handle);
-+
-+int io_seek(uintptr_t handle, io_seek_mode_t mode, int32_t offset);
-+
-+int io_size(uintptr_t handle, size_t *length);
-+
-+int io_read(uintptr_t handle, uintptr_t buffer, size_t length,
-+            size_t *length_read);
-+
-+int io_write(uintptr_t handle, const uintptr_t buffer, size_t length,
-+             size_t *length_written);
-+
-+int io_close(uintptr_t handle);
-+
-+#endif /* __IO_STORAGE_H__ */
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0011-corstone1000-make-sure-to-write-fwu-metadata-to-repl.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-Platform-corstone1000-make-sure-to-write-fwu-metadata-to-repl.patch
similarity index 94%
rename from meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0011-corstone1000-make-sure-to-write-fwu-metadata-to-repl.patch
rename to meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-Platform-corstone1000-make-sure-to-write-fwu-metadata-to-repl.patch
index 24150b6..eeaf6d1 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0011-corstone1000-make-sure-to-write-fwu-metadata-to-repl.patch
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-Platform-corstone1000-make-sure-to-write-fwu-metadata-to-repl.patch
@@ -7,7 +7,7 @@
 the copies in both replicas are good. so, make sure
 we write fwu metadata in both replicas.
 
-Upstream-Status: Pending [Not submitted to upstream yet]
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20550]
 Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
 ---
  .../arm/corstone1000/fw_update_agent/fwu_agent.c   | 14 ++++++++++++++
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-Platform-corstone1000-Add-IO-test-in-ci_regressions.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-Platform-corstone1000-Add-IO-test-in-ci_regressions.patch
deleted file mode 100644
index a4da13e..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-Platform-corstone1000-Add-IO-test-in-ci_regressions.patch
+++ /dev/null
@@ -1,646 +0,0 @@
-From 3bca7e6bae9a5017fff83b0a7d2d0d78b422a741 Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Mon, 7 Nov 2022 12:51:58 +0000
-Subject: [PATCH 02/10] Platform: corstone1000: Add IO test in ci_regressions
-
-The test is simply writing data on the edge of a block
-then reading back again.
-this test is preformed on two flash devices:
-- Nor Flash
-- Flash emu in the SRAM for testing
-
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Change-Id: I4950086e9e3dcbde29ab5b4ed5fe61fec7ebec86
-Upstream-Status: Accepted [TF-Mv1.8.0]
----
- .../ci_regression_tests/CMakeLists.txt        |  10 +
- .../Driver_Flash_SRAM_Emu.c                   | 327 ++++++++++++++++++
- .../ci_regression_tests/s_io_storage_test.c   | 147 ++++++++
- .../ci_regression_tests/s_io_storage_test.h   |  15 +
- .../corstone1000/ci_regression_tests/s_test.c |   5 +
- .../ci_regression_tests/s_test_config.cmake   |   5 +
- .../ci_regression_tests/test_flash.h          |  25 ++
- 7 files changed, 534 insertions(+)
- create mode 100644 platform/ext/target/arm/corstone1000/ci_regression_tests/Driver_Flash_SRAM_Emu.c
- create mode 100644 platform/ext/target/arm/corstone1000/ci_regression_tests/s_io_storage_test.c
- create mode 100644 platform/ext/target/arm/corstone1000/ci_regression_tests/s_io_storage_test.h
- create mode 100644 platform/ext/target/arm/corstone1000/ci_regression_tests/test_flash.h
-
-diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/CMakeLists.txt b/platform/ext/target/arm/corstone1000/ci_regression_tests/CMakeLists.txt
-index 9543e29e55..405b2b3702 100644
---- a/platform/ext/target/arm/corstone1000/ci_regression_tests/CMakeLists.txt
-+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/CMakeLists.txt
-@@ -17,12 +17,18 @@ target_sources(tfm_test_suite_extra_s
-     PRIVATE
-         ${CMAKE_CURRENT_SOURCE_DIR}/s_test.c
-         ../Native_Driver/firewall.c
-+        ../io/io_storage.c
-+        ../io/io_block.c
-+        ../io/io_flash.c
-+        Driver_Flash_SRAM_Emu.c
-+        s_io_storage_test.c
- )
- 
- target_include_directories(tfm_test_suite_extra_s
-     PRIVATE
-         ../Device/Include
-         ../Native_Driver
-+        ../io
- )
- 
- target_link_libraries(tfm_test_suite_extra_s
-@@ -33,4 +39,8 @@ target_link_libraries(tfm_test_suite_extra_s
- target_compile_definitions(tfm_test_suite_extra_s
-     PRIVATE
-         $<$<BOOL:${PLATFORM_IS_FVP}>:PLATFORM_IS_FVP>
-+        TEST_FLASH_SIZE_IN_BYTES=${TEST_FLASH_SIZE_IN_BYTES}
-+        TEST_FLASH_SECTOR_SIZE_IN_BYTES=${TEST_FLASH_SECTOR_SIZE_IN_BYTES}
-+        TEST_FLASH_PAGE_SIZE=${TEST_FLASH_PAGE_SIZE}
-+        TEST_FLASH_PROGRAM_UNIT=${TEST_FLASH_PROGRAM_UNIT}
- )
-diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/Driver_Flash_SRAM_Emu.c b/platform/ext/target/arm/corstone1000/ci_regression_tests/Driver_Flash_SRAM_Emu.c
-new file mode 100644
-index 0000000000..06b6b51c09
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/Driver_Flash_SRAM_Emu.c
-@@ -0,0 +1,327 @@
-+/*
-+ * Copyright (c) 2013-2022 ARM Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: Apache-2.0
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the License); you may
-+ * not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
-+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+#include <string.h>
-+#include <stdint.h>
-+#include "Driver_Flash.h"
-+#include "test_flash.h"
-+#include "tfm_sp_log.h"
-+
-+#ifndef ARG_UNUSED
-+#define ARG_UNUSED(arg)  ((void)arg)
-+#endif
-+
-+/* Driver version */
-+#define ARM_FLASH_DRV_VERSION      ARM_DRIVER_VERSION_MAJOR_MINOR(1, 1)
-+#define ARM_FLASH_DRV_ERASE_VALUE  0xFF
-+
-+
-+/**
-+ * There is no real flash memory. This driver just emulates a flash
-+ * interface and behaviour on top of the SRAM memory.
-+ */
-+
-+/**
-+ * Data width values for ARM_FLASH_CAPABILITIES::data_width
-+ * \ref ARM_FLASH_CAPABILITIES
-+ */
-+ enum {
-+    DATA_WIDTH_8BIT   = 0u,
-+    DATA_WIDTH_16BIT,
-+    DATA_WIDTH_32BIT,
-+    DATA_WIDTH_ENUM_SIZE
-+};
-+
-+static const uint32_t data_width_byte[DATA_WIDTH_ENUM_SIZE] = {
-+    sizeof(uint8_t),
-+    sizeof(uint16_t),
-+    sizeof(uint32_t),
-+};
-+
-+
-+/*
-+ * ARM FLASH device structure
-+ *
-+ */
-+struct arm_flash_dev_t {
-+    const uint8_t* memory_base;   /*!< FLASH memory base address */
-+    ARM_FLASH_INFO *data;         /*!< FLASH data */
-+};
-+
-+/* Flash emulated memory */
-+static uint8_t flash_memory[TEST_FLASH_SIZE_IN_BYTES]
-+    __attribute__((aligned(TEST_FLASH_SECTOR_SIZE_IN_BYTES)));
-+
-+/* Flash Status */
-+static ARM_FLASH_STATUS FlashStatus = {0, 0, 0};
-+
-+/* Driver Version */
-+static const ARM_DRIVER_VERSION DriverVersion = {
-+    ARM_FLASH_API_VERSION,
-+    ARM_FLASH_DRV_VERSION
-+};
-+
-+/* Driver Capabilities */
-+static const ARM_FLASH_CAPABILITIES DriverCapabilities = {
-+    0, /* event_ready */
-+    0, /* data_width = 0:8-bit, 1:16-bit, 2:32-bit */
-+    1  /* erase_chip */
-+};
-+
-+static int32_t is_range_valid(struct arm_flash_dev_t *flash_dev,
-+                              uint32_t offset)
-+{
-+    uint32_t flash_limit = 0;
-+    int32_t rc = 0;
-+
-+    flash_limit = (flash_dev->data->sector_count * flash_dev->data->sector_size);
-+    if (offset > flash_limit) {
-+        rc = -1;
-+    }
-+    return rc;
-+}
-+
-+static int32_t is_write_aligned(struct arm_flash_dev_t *flash_dev,
-+                                uint32_t param)
-+{
-+    int32_t rc = 0;
-+
-+    if ((param % flash_dev->data->program_unit) != 0) {
-+        rc = -1;
-+    }
-+    return rc;
-+}
-+
-+static int32_t is_sector_aligned(struct arm_flash_dev_t *flash_dev,
-+                                 uint32_t offset)
-+{
-+    int32_t rc = 0;
-+
-+    if ((offset % flash_dev->data->sector_size) != 0) {
-+        rc = -1;
-+    }
-+    return rc;
-+}
-+
-+static int32_t is_flash_ready_to_write(const uint8_t *start_addr, uint32_t cnt)
-+{
-+    int32_t rc = 0;
-+    uint32_t i;
-+
-+    for (i = 0; i < cnt; i++) {
-+        if(start_addr[i] != ARM_FLASH_DRV_ERASE_VALUE) {
-+            rc = -1;
-+            break;
-+        }
-+    }
-+
-+    return rc;
-+}
-+
-+static ARM_FLASH_INFO ARM_TEST_FLASH_DEV_DATA = {
-+    .sector_info  = NULL,/* Uniform sector layout */
-+    .sector_count = TEST_FLASH_SIZE_IN_BYTES / TEST_FLASH_SECTOR_SIZE_IN_BYTES,
-+    .sector_size  = TEST_FLASH_SECTOR_SIZE_IN_BYTES,
-+    .page_size    = TEST_FLASH_PAGE_SIZE,
-+    .program_unit = TEST_FLASH_PROGRAM_UNIT,
-+    .erased_value = ARM_FLASH_DRV_ERASE_VALUE};
-+
-+static struct arm_flash_dev_t ARM_TEST_FLASH_DEV = {
-+    .memory_base = flash_memory,
-+    .data        = &(ARM_TEST_FLASH_DEV_DATA)};
-+
-+static struct arm_flash_dev_t *TEST_FLASH_DEV = &ARM_TEST_FLASH_DEV;
-+
-+/*
-+ * Functions
-+ */
-+
-+static ARM_DRIVER_VERSION ARM_Flash_GetVersion(void)
-+{
-+    return DriverVersion;
-+}
-+
-+static ARM_FLASH_CAPABILITIES ARM_Flash_GetCapabilities(void)
-+{
-+    return DriverCapabilities;
-+}
-+
-+static int32_t ARM_Flash_Initialize(ARM_Flash_SignalEvent_t cb_event)
-+{
-+    ARG_UNUSED(cb_event);
-+
-+    if (DriverCapabilities.data_width >= DATA_WIDTH_ENUM_SIZE) {
-+        return ARM_DRIVER_ERROR;
-+    }
-+
-+    /* Nothing to be done */
-+    return ARM_DRIVER_OK;
-+}
-+
-+static int32_t ARM_Flash_Uninitialize(void)
-+{
-+    /* Nothing to be done */
-+    return ARM_DRIVER_OK;
-+}
-+
-+static int32_t ARM_Flash_PowerControl(ARM_POWER_STATE state)
-+{
-+    switch (state) {
-+    case ARM_POWER_FULL:
-+        /* Nothing to be done */
-+        return ARM_DRIVER_OK;
-+        break;
-+
-+    case ARM_POWER_OFF:
-+    case ARM_POWER_LOW:
-+    default:
-+        return ARM_DRIVER_ERROR_UNSUPPORTED;
-+    }
-+}
-+
-+static int32_t ARM_Flash_ReadData(uint32_t addr, void *data, uint32_t cnt)
-+{
-+    int32_t rc = 0;
-+
-+    /* The addr given is a relative address*/
-+    uint32_t offset = addr;
-+    addr += (uint32_t)(TEST_FLASH_DEV->memory_base);
-+
-+    /* Conversion between data items and bytes */
-+    cnt *= data_width_byte[DriverCapabilities.data_width];
-+
-+    /* Check flash memory boundaries */
-+    rc = is_range_valid(TEST_FLASH_DEV, offset + cnt);
-+    if (rc != 0) {
-+        return ARM_DRIVER_ERROR_PARAMETER;
-+    }
-+
-+    /* Flash interface just emulated over SRAM, use memcpy */
-+    memcpy(data, (void *)addr, cnt);
-+
-+    /* Conversion between bytes and data items */
-+    cnt /= data_width_byte[DriverCapabilities.data_width];
-+
-+    return cnt;
-+}
-+
-+static int32_t ARM_Flash_ProgramData(uint32_t addr, const void *data,
-+                                     uint32_t cnt)
-+{
-+    int32_t rc = 0;
-+
-+    /* The addr given is a relative address*/
-+    uint32_t offset = addr;
-+    addr += (uint32_t)(TEST_FLASH_DEV->memory_base);
-+
-+    /* Conversion between data items and bytes */
-+    cnt *= data_width_byte[DriverCapabilities.data_width];
-+
-+    /* Check flash memory boundaries and alignment with minimal write size */
-+    rc  = is_range_valid(TEST_FLASH_DEV, offset + cnt);
-+    rc |= is_write_aligned(TEST_FLASH_DEV, offset);
-+    rc |= is_write_aligned(TEST_FLASH_DEV, cnt);
-+    if (rc != 0) {
-+        return ARM_DRIVER_ERROR_PARAMETER;
-+    }
-+
-+    /* Check if the flash area to write the data was erased previously */
-+    rc = is_flash_ready_to_write((const uint8_t*)addr, cnt);
-+    if (rc != 0) {
-+        return ARM_DRIVER_ERROR;
-+    }
-+
-+    /* Flash interface just emulated over SRAM, use memcpy */
-+    memcpy((void *)addr, data, cnt);
-+
-+    /* Conversion between bytes and data items */
-+    cnt /= data_width_byte[DriverCapabilities.data_width];
-+
-+    return cnt;
-+}
-+
-+static int32_t ARM_Flash_EraseSector(uint32_t addr)
-+{
-+    uint32_t rc = 0;
-+
-+    /* The addr given is a relative address*/
-+    uint32_t offset = addr;
-+    addr += (uint32_t)(TEST_FLASH_DEV->memory_base);
-+
-+    rc  = is_range_valid(TEST_FLASH_DEV, offset);
-+    rc |= is_sector_aligned(TEST_FLASH_DEV, offset);
-+    if (rc != 0) {
-+        return ARM_DRIVER_ERROR_PARAMETER;
-+    }
-+
-+    /* Flash interface just emulated over SRAM, use memset */
-+    memset((void *)addr,
-+           TEST_FLASH_DEV->data->erased_value,
-+           TEST_FLASH_DEV->data->sector_size);
-+    return ARM_DRIVER_OK;
-+}
-+
-+static int32_t ARM_Flash_EraseChip(void)
-+{
-+    uint32_t i;
-+    uint32_t addr = TEST_FLASH_DEV->memory_base;
-+    int32_t rc = ARM_DRIVER_ERROR_UNSUPPORTED;
-+
-+    /* Check driver capability erase_chip bit */
-+    if (DriverCapabilities.erase_chip == 1) {
-+        for (i = 0; i < TEST_FLASH_DEV->data->sector_count; i++) {
-+            /* Flash interface just emulated over SRAM, use memset */
-+            memset((void *)addr,
-+                   TEST_FLASH_DEV->data->erased_value,
-+                   TEST_FLASH_DEV->data->sector_size);
-+
-+            addr += TEST_FLASH_DEV->data->sector_size;
-+            rc = ARM_DRIVER_OK;
-+        }
-+    }
-+    return rc;
-+}
-+
-+static ARM_FLASH_STATUS ARM_Flash_GetStatus(void)
-+{
-+    return FlashStatus;
-+}
-+
-+static ARM_FLASH_INFO * ARM_Flash_GetInfo(void)
-+{
-+    return TEST_FLASH_DEV->data;
-+}
-+
-+
-+/* Global Variables */
-+
-+ARM_DRIVER_FLASH Driver_TEST_FLASH = {
-+    ARM_Flash_GetVersion,
-+    ARM_Flash_GetCapabilities,
-+    ARM_Flash_Initialize,
-+    ARM_Flash_Uninitialize,
-+    ARM_Flash_PowerControl,
-+    ARM_Flash_ReadData,
-+    ARM_Flash_ProgramData,
-+    ARM_Flash_EraseSector,
-+    ARM_Flash_EraseChip,
-+    ARM_Flash_GetStatus,
-+    ARM_Flash_GetInfo
-+};
-+
-+uintptr_t flash_base_address = flash_memory;
-diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/s_io_storage_test.c b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_io_storage_test.c
-new file mode 100644
-index 0000000000..f8be384a74
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_io_storage_test.c
-@@ -0,0 +1,147 @@
-+/*
-+ * Copyright (c) 2022, Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ *
-+ */
-+
-+#include "s_io_storage_test.h"
-+
-+#include "Driver_Flash.h"
-+#include "flash_layout.h"
-+#include "io_block.h"
-+#include "io_driver.h"
-+#include "io_flash.h"
-+#include "tfm_sp_log.h"
-+
-+#define ARRAY_LENGTH(array) (sizeof(array) / sizeof(*(array)))
-+
-+extern ARM_DRIVER_FLASH Driver_FLASH0;
-+extern ARM_DRIVER_FLASH Driver_TEST_FLASH;
-+extern uintptr_t flash_base_address;
-+
-+void s_test_io_storage_multiple_flash_simultaneous(struct test_result_t *ret) {
-+    /* FLASH0 */
-+    static io_dev_connector_t* flash0_dev_con;
-+    static uint8_t local_block_flash0[FLASH_SECTOR_SIZE];
-+    ARM_FLASH_INFO* flash0_info = Driver_FLASH0.GetInfo();
-+    size_t flash0_block_size = flash0_info->sector_size;
-+    io_flash_dev_spec_t flash0_dev_spec = {
-+        .buffer = local_block_flash0,
-+        .bufferlen = flash0_block_size,
-+        .base_addr = FLASH_BASE_ADDRESS,
-+        .flash_driver = &Driver_FLASH0,
-+    };
-+    io_block_spec_t flash0_spec = {
-+        .offset = FLASH_BASE_ADDRESS,
-+        .length = flash0_info->sector_count * flash0_info->sector_size};
-+    uintptr_t flash0_dev_handle = NULL;
-+    uintptr_t flash0_handle = NULL;
-+
-+    /* EMU TEST FLASH */
-+    static io_dev_connector_t* flash_emu_dev_con;
-+    static uint8_t local_block_flash_emu[TEST_FLASH_SECTOR_SIZE_IN_BYTES]
-+        __attribute__((aligned(TEST_FLASH_SECTOR_SIZE_IN_BYTES)));
-+    ARM_FLASH_INFO* flash_emu_info = Driver_TEST_FLASH.GetInfo();
-+    size_t flash_emu_block_size = flash_emu_info->sector_size;
-+    io_flash_dev_spec_t flash_emu_dev_spec = {
-+        .buffer = local_block_flash_emu,
-+        .bufferlen = flash_emu_block_size,
-+        .base_addr = flash_base_address,
-+        .flash_driver = &Driver_TEST_FLASH,
-+    };
-+    io_block_spec_t flash_emu_spec = {
-+        .offset = flash_base_address,
-+        .length = flash_emu_info->sector_count * flash_emu_info->sector_size};
-+    uintptr_t flash_emu_dev_handle = NULL;
-+    uintptr_t flash_emu_handle = NULL;
-+
-+    /* Common */
-+    int rc = -1;
-+    static uint8_t test_data[] = {0xEE, 0xDD, 0xCC, 0xBB, 0xAA,
-+                                  0x10, 0x50, 0xA0, 0xD0, 0x51,
-+                                  0x55, 0x44, 0x33, 0x22, 0x11};
-+    static uint8_t actual_data[15];
-+    size_t bytes_written_count = 0;
-+    size_t bytes_read_count = 0;
-+
-+    memset(local_block_flash0, -1, sizeof(local_block_flash0));
-+    memset(local_block_flash_emu, -1, sizeof(local_block_flash_emu));
-+
-+    /* Register */
-+    register_io_dev_flash(&flash0_dev_con);
-+    register_io_dev_flash(&flash_emu_dev_con);
-+
-+    io_dev_open(flash0_dev_con, &flash0_dev_spec, &flash0_dev_handle);
-+    io_dev_open(flash_emu_dev_con, &flash_emu_dev_spec, &flash_emu_dev_handle);
-+
-+    /* Write Data */
-+    io_open(flash0_dev_handle, &flash0_spec, &flash0_handle);
-+    io_open(flash_emu_dev_handle, &flash_emu_spec, &flash_emu_handle);
-+
-+    io_seek(flash0_handle, IO_SEEK_SET,
-+            BANK_1_PARTITION_OFFSET + flash0_info->sector_size - 7);
-+    io_seek(flash_emu_handle, IO_SEEK_SET, flash_emu_info->sector_size - 7);
-+
-+    io_write(flash0_handle, test_data, ARRAY_LENGTH(test_data),
-+             &bytes_written_count);
-+    if (bytes_written_count != ARRAY_LENGTH(test_data)) {
-+        LOG_ERRFMT("io_write failed to write %d bytes for flash0",
-+                   ARRAY_LENGTH(test_data));
-+        LOG_ERRFMT("bytes_written_count %d for flash0", bytes_written_count);
-+        ret->val = TEST_FAILED;
-+    }
-+    io_write(flash_emu_handle, test_data, ARRAY_LENGTH(test_data),
-+             &bytes_written_count);
-+    if (bytes_written_count != ARRAY_LENGTH(test_data)) {
-+        LOG_ERRFMT("io_write failed to write %d bytes for flash emu",
-+                   ARRAY_LENGTH(test_data));
-+        LOG_ERRFMT("bytes_written_count %d for flash emu", bytes_written_count);
-+        ret->val = TEST_FAILED;
-+    }
-+    io_close(flash0_handle);
-+    io_close(flash_emu_handle);
-+
-+    /* Read Data */
-+    io_open(flash0_dev_handle, &flash0_spec, &flash0_handle);
-+    io_open(flash_emu_dev_handle, &flash_emu_spec, &flash_emu_handle);
-+
-+    io_seek(flash0_handle, IO_SEEK_SET,
-+            BANK_1_PARTITION_OFFSET + flash0_info->sector_size - 7);
-+    io_seek(flash_emu_handle, IO_SEEK_SET, flash_emu_info->sector_size - 7);
-+
-+    /* Flash0 */
-+    io_read(flash0_handle, actual_data, ARRAY_LENGTH(actual_data),
-+            &bytes_read_count);
-+    if (bytes_read_count != ARRAY_LENGTH(test_data)) {
-+        LOG_ERRFMT("io_read failed to read %d bytes for flash0",
-+                   ARRAY_LENGTH(test_data));
-+        LOG_ERRFMT("bytes_read_count %d for flash0", bytes_read_count);
-+        ret->val = TEST_FAILED;
-+    }
-+    if (memcmp((uint8_t*)test_data, actual_data, ARRAY_LENGTH(actual_data)) !=
-+        0) {
-+        LOG_ERRFMT("Data written != Data read\r\n");
-+        ret->val = TEST_FAILED;
-+    }
-+
-+    memset(actual_data, -1, sizeof(actual_data));
-+
-+    /* Flash Emu */
-+    io_read(flash_emu_handle, actual_data, ARRAY_LENGTH(actual_data),
-+            &bytes_read_count);
-+    if (bytes_read_count != ARRAY_LENGTH(test_data)) {
-+        LOG_ERRFMT("io_read failed to read %d bytes for flash emu",
-+                   ARRAY_LENGTH(test_data));
-+        LOG_ERRFMT("bytes_read_count %d for flash emu", bytes_read_count);
-+        ret->val = TEST_FAILED;
-+    }
-+    if (memcmp((uint8_t*)test_data, actual_data, ARRAY_LENGTH(actual_data)) !=
-+        0) {
-+        LOG_ERRFMT("Data written != Data read\r\n");
-+        ret->val = TEST_FAILED;
-+    }
-+
-+    LOG_INFFMT("PASS: %s\n\r", __func__);
-+    ret->val = TEST_PASSED;
-+}
-\ No newline at end of file
-diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/s_io_storage_test.h b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_io_storage_test.h
-new file mode 100644
-index 0000000000..fa9012776f
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_io_storage_test.h
-@@ -0,0 +1,15 @@
-+/*
-+ * Copyright (c) 2022, Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ *
-+ */
-+
-+#ifndef __S_IO_STORAGE_TEST_H__
-+#define __S_IO_STORAGE_TEST_H__
-+
-+#include "extra_s_tests.h"
-+
-+void s_test_io_storage_multiple_flash_simultaneous(struct test_result_t *ret);
-+
-+#endif /* __S_IO_STORAGE_TEST_H__ */
-\ No newline at end of file
-diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.c b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.c
-index a0bf47a04b..9a8453ff57 100644
---- a/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.c
-+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test.c
-@@ -11,6 +11,7 @@
- #include "platform_base_address.h"
- #include "firewall.h"
- #include "tfm_sp_log.h"
-+#include "s_io_storage_test.h"
- 
- /* TODO: if needed each test function can be made as a separate test case, in
-  * such case EXTRA_TEST_XX definitions can be removed */
-@@ -19,6 +20,8 @@
- 
- #define DISABLED_TEST 0
- 
-+int test_io_storage_multiple_flash_simultaneous(void);
-+
- enum host_firewall_host_comp_id_t {
-   HOST_FCTRL = (0x00u),
-   COMP_SYSPERIPH,
-@@ -184,6 +187,8 @@ void s_test(struct test_result_t *ret)
- static struct test_t plat_s_t[] = {
-     {&s_test, "TFM_S_EXTRA_TEST_1001",
-      "Extra Secure test"},
-+    {&s_test_io_storage_multiple_flash_simultaneous, "TFM_S_EXTRA_TEST_1002",
-+     "Extra Secure test: io storage access multiple flash simultaneous"},
- };
- 
- void register_testsuite_extra_s_interface(struct test_suite_t *p_test_suite)
-diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test_config.cmake b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test_config.cmake
-index bb8d26bf1c..05b7cd7852 100644
---- a/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test_config.cmake
-+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/s_test_config.cmake
-@@ -6,3 +6,8 @@
- #-------------------------------------------------------------------------------
- 
- ############ Define secure test specific cmake configurations here #############
-+
-+set (TEST_FLASH_SIZE_IN_BYTES         48U  CACHE STRING   "The size of the emulated flash used in io tests")
-+set (TEST_FLASH_SECTOR_SIZE_IN_BYTES  16U  CACHE STRING   "The sector size of the emulated flash used in io tests")
-+set (TEST_FLASH_PAGE_SIZE              8U  CACHE STRING   "The page size of the emulated flash used in io tests")
-+set (TEST_FLASH_PROGRAM_UNIT           1U  CACHE STRING   "The program unit of the emulated flash used in io tests")
-diff --git a/platform/ext/target/arm/corstone1000/ci_regression_tests/test_flash.h b/platform/ext/target/arm/corstone1000/ci_regression_tests/test_flash.h
-new file mode 100644
-index 0000000000..4d073a1d71
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/ci_regression_tests/test_flash.h
-@@ -0,0 +1,25 @@
-+/*
-+ * Copyright (c) 2017-2022 Arm Limited. All rights reserved.
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the "License");
-+ * you may not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ *     http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+
-+#ifndef __TEST_FLASH_H__
-+#define __TEST_FLASH_H__
-+
-+#define TEST_FLASH_SIZE_IN_BYTES             (48)    // 48 bytes
-+#define TEST_FLASH_SECTOR_SIZE_IN_BYTES      (16)    // 16 bytes
-+#define TEST_FLASH_PAGE_SIZE                 (8U)    // 8 bytes
-+#define TEST_FLASH_PROGRAM_UNIT              (1U)    /* 1 B */
-+
-+#endif /* __TEST_FLASH_H__ */
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-Platform-corstone1000-get-fwu-and-private-metadata-f.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-Platform-corstone1000-get-fwu-and-private-metadata-f.patch
new file mode 100644
index 0000000..3d7fc4b
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-Platform-corstone1000-get-fwu-and-private-metadata-f.patch
@@ -0,0 +1,307 @@
+From 4a4d1b0a5a2455ad799a45f7f87c0c9fd0173034 Mon Sep 17 00:00:00 2001
+From: Rui Miguel Silva <rui.silva@linaro.org>
+Date: Wed, 29 Mar 2023 10:58:32 +0100
+Subject: [PATCH] Platform: Corstone1000: get fwu and private metadata from gpt
+
+Read and Write the FWU metadata and private metadata using instead
+static flash offsets get the partitions and start address from gpt
+partition table.
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20551]
+Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
+---
+ .../target/arm/corstone1000/CMakeLists.txt    |  7 ++
+ .../corstone1000/fw_update_agent/fwu_agent.c  | 90 +++++++++++++++----
+ .../target/arm/corstone1000/partition/efi.h   |  1 +
+ .../arm/corstone1000/partition/partition.c    | 14 +++
+ .../arm/corstone1000/partition/partition.h    |  1 +
+ .../ext/target/arm/corstone1000/platform.h    |  5 ++
+ 6 files changed, 99 insertions(+), 19 deletions(-)
+
+diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
+index 19863bcdb6d2..f232c7639bd5 100644
+--- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
++++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
+@@ -64,6 +64,8 @@ target_include_directories(platform_s
+         cc312
+         fw_update_agent
+         soft_crc
++        io
++        partition
+ )
+ 
+ target_sources(platform_s
+@@ -81,6 +83,11 @@ target_sources(platform_s
+         fw_update_agent/fwu_agent.c
+         fw_update_agent/uefi_fmp.c
+         soft_crc/soft_crc.c
++        io/io_block.c
++        io/io_flash.c
++        io/io_storage.c
++        partition/partition.c
++        partition/gpt.c
+         $<$<NOT:$<BOOL:${PLATFORM_DEFAULT_OTP}>>:${PLATFORM_DIR}/ext/accelerator/cc312/otp_cc312.c>
+ )
+ 
+diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
+index b6ed656de833..9c76b25a3a38 100644
+--- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
++++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
+@@ -14,6 +14,8 @@
+ #include "region_defs.h"
+ #include "uefi_capsule_parser.h"
+ #include "flash_common.h"
++#include "partition.h"
++#include "platform.h"
+ #include "platform_base_address.h"
+ #include "platform_description.h"
+ #include "tfm_plat_nv_counters.h"
+@@ -146,6 +148,8 @@ extern ARM_DRIVER_FLASH FWU_METADATA_FLASH_DEV;
+ static enum fwu_agent_error_t private_metadata_read(
+         struct fwu_private_metadata* p_metadata)
+ {
++    partition_entry_t *part;
++    uuid_t private_uuid = PRIVATE_METADATA_TYPE_UUID;
+     int ret;
+ 
+     FWU_LOG_MSG("%s: enter\n\r", __func__);
+@@ -154,7 +158,13 @@ static enum fwu_agent_error_t private_metadata_read(
+         return FWU_AGENT_ERROR;
+     }
+ 
+-    ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET, p_metadata,
++    part = get_partition_entry_by_type(&private_uuid);
++    if (!part) {
++        FWU_LOG_MSG("Private metadata partition not found\n\r");
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.ReadData(part->start, p_metadata,
+                                           sizeof(struct fwu_private_metadata));
+     if (ret < 0 || ret != sizeof(struct fwu_private_metadata)) {
+         return FWU_AGENT_ERROR;
+@@ -169,6 +179,8 @@ static enum fwu_agent_error_t private_metadata_read(
+ static enum fwu_agent_error_t private_metadata_write(
+         struct fwu_private_metadata* p_metadata)
+ {
++    uuid_t private_uuid = PRIVATE_METADATA_TYPE_UUID;
++    partition_entry_t *part;
+     int ret;
+ 
+     FWU_LOG_MSG("%s: enter: boot_index = %u\n\r", __func__,
+@@ -178,12 +190,18 @@ static enum fwu_agent_error_t private_metadata_write(
+         return FWU_AGENT_ERROR;
+     }
+ 
+-    ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET);
++    part = get_partition_entry_by_type(&private_uuid);
++    if (!part) {
++        FWU_LOG_MSG("Private metadata partition not found\n\r");
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.EraseSector(part->start);
+     if (ret != ARM_DRIVER_OK) {
+         return FWU_AGENT_ERROR;
+     }
+ 
+-    ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET,
++    ret = FWU_METADATA_FLASH_DEV.ProgramData(part->start,
+                                 p_metadata, sizeof(struct fwu_private_metadata));
+     if (ret < 0 || ret != sizeof(struct fwu_private_metadata)) {
+         return FWU_AGENT_ERROR;
+@@ -219,16 +237,25 @@ static enum fwu_agent_error_t metadata_validate(struct fwu_metadata *p_metadata)
+ 
+ static enum fwu_agent_error_t metadata_read_without_validation(struct fwu_metadata *p_metadata)
+ {
++    uuid_t metadata_uuid = FWU_METADATA_TYPE_UUID;
++    partition_entry_t *part;
+     int ret;
+ 
+-    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
+-                  FWU_METADATA_REPLICA_1_OFFSET, sizeof(struct fwu_metadata));
+-
+     if (!p_metadata) {
+         return FWU_AGENT_ERROR;
+     }
+ 
+-    ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_METADATA_REPLICA_1_OFFSET,
++    part = get_partition_entry_by_type(&metadata_uuid);
++    if (!part) {
++        FWU_LOG_MSG("%s: FWU metadata partition not found\n\r", __func__);
++        return FWU_AGENT_ERROR;
++    }
++
++    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
++                  part->start, sizeof(struct fwu_metadata));
++
++
++    ret = FWU_METADATA_FLASH_DEV.ReadData(part->start,
+                                 p_metadata, sizeof(struct fwu_metadata));
+     if (ret < 0 || ret != sizeof(struct fwu_metadata)) {
+         return FWU_AGENT_ERROR;
+@@ -242,16 +269,24 @@ static enum fwu_agent_error_t metadata_read_without_validation(struct fwu_metada
+ 
+ static enum fwu_agent_error_t metadata_read(struct fwu_metadata *p_metadata)
+ {
++    uuid_t metadata_uuid = FWU_METADATA_TYPE_UUID;
++    partition_entry_t *part;
+     int ret;
+ 
+-    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
+-                  FWU_METADATA_REPLICA_1_OFFSET, sizeof(struct fwu_metadata));
+-
+     if (!p_metadata) {
+         return FWU_AGENT_ERROR;
+     }
+ 
+-    ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_METADATA_REPLICA_1_OFFSET,
++    part = get_partition_entry_by_type(&metadata_uuid);
++    if (!part) {
++        FWU_LOG_MSG("%s: FWU metadata partition not found\n\r", __func__);
++        return FWU_AGENT_ERROR;
++    }
++
++    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
++                  part->start, sizeof(struct fwu_metadata));
++
++    ret = FWU_METADATA_FLASH_DEV.ReadData(part->start,
+                                 p_metadata, sizeof(struct fwu_metadata));
+     if (ret < 0 || ret != sizeof(struct fwu_metadata)) {
+         return FWU_AGENT_ERROR;
+@@ -270,35 +305,49 @@ static enum fwu_agent_error_t metadata_read(struct fwu_metadata *p_metadata)
+ static enum fwu_agent_error_t metadata_write(
+                         struct fwu_metadata *p_metadata)
+ {
++    uuid_t metadata_uuid = FWU_METADATA_TYPE_UUID;
++    partition_entry_t *part;
+     int ret;
+ 
+-    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
+-                  FWU_METADATA_REPLICA_1_OFFSET, sizeof(struct fwu_metadata));
+-
+     if (!p_metadata) {
+         return FWU_AGENT_ERROR;
+     }
+ 
+-    ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_METADATA_REPLICA_1_OFFSET);
++    part = get_partition_entry_by_type(&metadata_uuid);
++    if (!part) {
++        FWU_LOG_MSG("%s: FWU metadata partition not found\n\r", __func__);
++        return FWU_AGENT_ERROR;
++    }
++
++    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
++                  part->start, sizeof(struct fwu_metadata));
++
++    ret = FWU_METADATA_FLASH_DEV.EraseSector(part->start);
+     if (ret != ARM_DRIVER_OK) {
+         return FWU_AGENT_ERROR;
+     }
+ 
+-    ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_METADATA_REPLICA_1_OFFSET,
++    ret = FWU_METADATA_FLASH_DEV.ProgramData(part->start,
+                                 p_metadata, sizeof(struct fwu_metadata));
+     if (ret < 0 || ret != sizeof(struct fwu_metadata)) {
+         return FWU_AGENT_ERROR;
+     }
+ 
++    part = get_partition_replica_by_type(&metadata_uuid);
++    if (!part) {
++        FWU_LOG_MSG("%s: FWU metadata replica partition not found\n\r", __func__);
++        return FWU_AGENT_ERROR;
++    }
++
+     FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
+-                  FWU_METADATA_REPLICA_2_OFFSET, sizeof(struct fwu_metadata));
++                  part->start, sizeof(struct fwu_metadata));
+ 
+-    ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_METADATA_REPLICA_2_OFFSET);
++    ret = FWU_METADATA_FLASH_DEV.EraseSector(part->start);
+     if (ret != ARM_DRIVER_OK) {
+         return FWU_AGENT_ERROR;
+     }
+ 
+-    ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_METADATA_REPLICA_2_OFFSET,
++    ret = FWU_METADATA_FLASH_DEV.ProgramData(part->start,
+                                 p_metadata, sizeof(struct fwu_metadata));
+     if (ret < 0 || ret != sizeof(struct fwu_metadata)) {
+         return FWU_AGENT_ERROR;
+@@ -355,6 +404,9 @@ enum fwu_agent_error_t fwu_metadata_provision(void)
+ 
+     FWU_LOG_MSG("%s: enter\n\r", __func__);
+ 
++    plat_io_storage_init();
++    partition_init(PLATFORM_GPT_IMAGE);
++
+     ret = fwu_metadata_init();
+     if (ret) {
+         return ret;
+diff --git a/platform/ext/target/arm/corstone1000/partition/efi.h b/platform/ext/target/arm/corstone1000/partition/efi.h
+index f66daffb32d6..7e6a4bc883e6 100644
+--- a/platform/ext/target/arm/corstone1000/partition/efi.h
++++ b/platform/ext/target/arm/corstone1000/partition/efi.h
+@@ -8,6 +8,7 @@
+ #ifndef DRIVERS_PARTITION_EFI_H
+ #define DRIVERS_PARTITION_EFI_H
+ 
++#include <stdint.h>
+ #include <string.h>
+ 
+ #include "uuid.h"
+diff --git a/platform/ext/target/arm/corstone1000/partition/partition.c b/platform/ext/target/arm/corstone1000/partition/partition.c
+index afc6aa1c5cb8..d76e123d728f 100644
+--- a/platform/ext/target/arm/corstone1000/partition/partition.c
++++ b/platform/ext/target/arm/corstone1000/partition/partition.c
+@@ -293,6 +293,20 @@ const partition_entry_t *get_partition_entry_by_type(const uuid_t *type_uuid) {
+     return NULL;
+ }
+ 
++const partition_entry_t *get_partition_replica_by_type(const uuid_t *type_uuid) {
++    int count = 0;
++    int i;
++
++    for (i = 0; i < list.entry_count; i++) {
++        if (guidcmp(type_uuid, &list.list[i].type_guid) == 0) {
++            if (++count == 2)
++                 return &list.list[i];
++        }
++    }
++
++    return NULL;
++}
++
+ const partition_entry_t *get_partition_entry_by_uuid(const uuid_t *part_uuid) {
+     int i;
+ 
+diff --git a/platform/ext/target/arm/corstone1000/partition/partition.h b/platform/ext/target/arm/corstone1000/partition/partition.h
+index 54af47aca415..450cf20a073c 100644
+--- a/platform/ext/target/arm/corstone1000/partition/partition.h
++++ b/platform/ext/target/arm/corstone1000/partition/partition.h
+@@ -40,6 +40,7 @@ typedef struct partition_entry_list {
+ int load_partition_table(unsigned int image_id);
+ const partition_entry_t *get_partition_entry(const char *name);
+ const partition_entry_t *get_partition_entry_by_type(const uuid_t *type_guid);
++const partition_entry_t *get_partition_replica_by_type(const uuid_t *type_uuid);
+ const partition_entry_t *get_partition_entry_by_uuid(const uuid_t *part_uuid);
+ const partition_entry_list_t *get_partition_entry_list(void);
+ void partition_init(unsigned int image_id);
+diff --git a/platform/ext/target/arm/corstone1000/platform.h b/platform/ext/target/arm/corstone1000/platform.h
+index 894f5e309029..a88093ed4f9d 100644
+--- a/platform/ext/target/arm/corstone1000/platform.h
++++ b/platform/ext/target/arm/corstone1000/platform.h
+@@ -13,6 +13,11 @@ typedef enum {
+     PLATFORM_IMAGE_COUNT,
+ }platform_image_id_t;
+ 
++#define FWU_METADATA_TYPE_UUID \
++     ((uuid_t){{0xa0, 0x84, 0x7a, 0x8a}, {0x87, 0x83}, {0xf6, 0x40}, 0xab,  0x41, {0xa8, 0xb9, 0xa5, 0xa6, 0x0d, 0x23}})
++#define PRIVATE_METADATA_TYPE_UUID \
++     ((uuid_t){{0xc3, 0x5d, 0xb5, 0xec}, {0xb7, 0x8a}, {0x84, 0x4a}, 0xab,  0x56, {0xeb, 0x0a, 0x99, 0x74, 0xdb, 0x42}})
++
+ /* Initialize io storage of the platform */
+ int32_t plat_io_storage_init(void);
+ 
+-- 
+2.40.0
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-corstone1000-Add-soft-crc32-calculation.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-corstone1000-Add-soft-crc32-calculation.patch
deleted file mode 100644
index 5983a49..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-corstone1000-Add-soft-crc32-calculation.patch
+++ /dev/null
@@ -1,171 +0,0 @@
-From 2de11bf9de6d0471772c100c72712d2a09c7cefc Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Wed, 21 Dec 2022 14:44:31 +0000
-Subject: [PATCH 3/10] Platform: corstone1000: Add soft crc32 calculation
-
-crc32 is required by different components.
-for example: during bl1 provisioning crc32 calculation is required
-
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- .../arm/corstone1000/soft_crc/soft_crc.c      | 121 ++++++++++++++++++
- .../arm/corstone1000/soft_crc/soft_crc.h      |  18 +++
- 2 files changed, 139 insertions(+)
- create mode 100644 platform/ext/target/arm/corstone1000/soft_crc/soft_crc.c
- create mode 100644 platform/ext/target/arm/corstone1000/soft_crc/soft_crc.h
-
-diff --git a/platform/ext/target/arm/corstone1000/soft_crc/soft_crc.c b/platform/ext/target/arm/corstone1000/soft_crc/soft_crc.c
-new file mode 100644
-index 0000000000..85f1e30d9f
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/soft_crc/soft_crc.c
-@@ -0,0 +1,121 @@
-+/* Copyright (C) 1986 Gary S. Brown.  You may use this program, or
-+   code or tables extracted from it, as desired without restriction.*/
-+
-+/* First, the polynomial itself and its table of feedback terms.  The  */
-+/* polynomial is                                                       */
-+/* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 */
-+/* Note that we take it "backwards" and put the highest-order term in  */
-+/* the lowest-order bit.  The X^32 term is "implied"; the LSB is the   */
-+/* X^31 term, etc.  The X^0 term (usually shown as "+1") results in    */
-+/* the MSB being 1.                                                    */
-+
-+/* Note that the usual hardware shift register implementation, which   */
-+/* is what we're using (we're merely optimizing it by doing eight-bit  */
-+/* chunks at a time) shifts bits into the lowest-order term.  In our   */
-+/* implementation, that means shifting towards the right.  Why do we   */
-+/* do it this way?  Because the calculated CRC must be transmitted in  */
-+/* order from highest-order term to lowest-order term.  UARTs transmit */
-+/* characters in order from LSB to MSB.  By storing the CRC this way,  */
-+/* we hand it to the UART in the order low-byte to high-byte; the UART */
-+/* sends each low-bit to hight-bit; and the result is transmission bit */
-+/* by bit from highest- to lowest-order term without requiring any bit */
-+/* shuffling on our part.  Reception works similarly.                  */
-+
-+/* The feedback terms table consists of 256, 32-bit entries.  Notes:   */
-+/*                                                                     */
-+/*  1. The table can be generated at runtime if desired; code to do so */
-+/*     is shown later.  It might not be obvious, but the feedback      */
-+/*     terms simply represent the results of eight shift/xor opera-    */
-+/*     tions for all combinations of data and CRC register values.     */
-+/*                                                                     */
-+/*  2. The CRC accumulation logic is the same for all CRC polynomials, */
-+/*     be they sixteen or thirty-two bits wide.  You simply choose the */
-+/*     appropriate table.  Alternatively, because the table can be     */
-+/*     generated at runtime, you can start by generating the table for */
-+/*     the polynomial in question and use exactly the same "updcrc",   */
-+/*     if your application needn't simultaneously handle two CRC       */
-+/*     polynomials.  (Note, however, that XMODEM is strange.)          */
-+/*                                                                     */
-+/*  3. For 16-bit CRCs, the table entries need be only 16 bits wide;   */
-+/*     of course, 32-bit entries work OK if the high 16 bits are zero. */
-+/*                                                                     */
-+/*  4. The values must be right-shifted by eight bits by the "updcrc"  */
-+/*     logic; the shift must be unsigned (bring in zeroes).  On some   */
-+/*     hardware you could probably optimize the shift in assembler by  */
-+/*     using byte-swap instructions.                                   */
-+
-+/**
-+ * The code derived from work by Gary S. Brown.
-+*/
-+
-+#include "soft_crc.h"
-+
-+
-+const static uint32_t crc_32_tab[] = { /* CRC polynomial 0xedb88320 */
-+0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
-+0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
-+0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
-+0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
-+0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
-+0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
-+0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
-+0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
-+0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
-+0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
-+0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
-+0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
-+0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
-+0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
-+0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
-+0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
-+0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
-+0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
-+0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
-+0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
-+0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
-+0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
-+0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
-+0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
-+0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
-+0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
-+0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
-+0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
-+0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
-+0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
-+0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
-+0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
-+0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
-+0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
-+0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
-+0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
-+0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
-+0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
-+0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
-+0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
-+0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
-+0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
-+0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
-+};
-+
-+#define UPDC32(octet,crc) (crc_32_tab[((crc)\
-+     ^ ((uint8_t)octet)) & 0xff] ^ ((crc) >> 8))
-+
-+static inline uint32_t crc32buf(char *buf, size_t len)
-+{
-+      register uint32_t oldcrc32;
-+
-+      oldcrc32 = 0xFFFFFFFF;
-+
-+      for ( ; len; --len, ++buf)
-+      {
-+            oldcrc32 = UPDC32(*buf, oldcrc32);
-+      }
-+
-+      return ~oldcrc32;
-+}
-+
-+/* Calculate crc32 */
-+uint32_t crc32(const void *buf, size_t len) {
-+    return crc32buf(buf, len);
-+}
-+
-diff --git a/platform/ext/target/arm/corstone1000/soft_crc/soft_crc.h b/platform/ext/target/arm/corstone1000/soft_crc/soft_crc.h
-new file mode 100644
-index 0000000000..e5b06075c9
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/soft_crc/soft_crc.h
-@@ -0,0 +1,18 @@
-+/*
-+ * Copyright (c) 2023, Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ *
-+ */
-+
-+#ifndef __SOFT_CRC_H__
-+#define __SOFT_CRC_H__
-+
-+#include <stddef.h>
-+#include <stdint.h>
-+
-+/* Calculate crc32 */
-+uint32_t crc32(const void *buf, size_t len);
-+
-+#endif /* __SOFT_CRC_H__ */
-+
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-corstone1000-Add-watchdog_reset_timer.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-corstone1000-Add-watchdog_reset_timer.patch
new file mode 100644
index 0000000..3ffd83e
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-corstone1000-Add-watchdog_reset_timer.patch
@@ -0,0 +1,47 @@
+From 33d8f45c8f14e9e0d7add7d2804ed76c7d7fd0c2 Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <emekcan.aras@arm.com>
+Date: Sat, 25 Feb 2023 09:04:38 +0000
+Subject: [PATCH 1/7] Platform: corstone1000: Add watchdog_reset_timer
+
+From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+
+Implement watchdog_reset_timer
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20552]
+Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+Change-Id: I2684ca54f9a456b22efcbcd364abef3537d4c91f
+---
+ .../arm/corstone1000/Native_Driver/watchdog.c   | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/platform/ext/target/arm/corstone1000/Native_Driver/watchdog.c b/platform/ext/target/arm/corstone1000/Native_Driver/watchdog.c
+index 4e024a3b1..f6e182194 100644
+--- a/platform/ext/target/arm/corstone1000/Native_Driver/watchdog.c
++++ b/platform/ext/target/arm/corstone1000/Native_Driver/watchdog.c
+@@ -80,6 +80,23 @@ int corstone1000_watchdog_init()
+     return ARM_DRIVER_OK;
+ }
+ 
++/**
++ *  \brief Reset the Secure Enclave & SoC Watchdog's.
++ *
++ *  \returns ARM Driver return code.
++ */
++int corstone1000_watchdog_reset_timer() {
++    /* Unlock, clear and lock the watchdog timer */
++    arm_watchdog_unlock(&SE_WD_DEV);
++    arm_watchdog_clear_interrupt_and_refresh_counter(&SE_WD_DEV);
++    arm_watchdog_lock(&SE_WD_DEV);
++    /* Unlock, clear and lock the watchdog timer */
++    arm_watchdog_unlock(&SOC_WD_DEV);
++    arm_watchdog_clear_interrupt_and_refresh_counter(&SOC_WD_DEV);
++    arm_watchdog_lock(&SOC_WD_DEV);
++    return ARM_DRIVER_OK;
++}
++
+ /*
+  * Secure Host Watchdog WS1 Handler
+  * efi_reset_system from the host triggers "Secure
+-- 
+2.17.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-Platform-corstone1000-Replace-MCUBOOT-BL1-by-TFM-s.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-Platform-corstone1000-Replace-MCUBOOT-BL1-by-TFM-s.patch
new file mode 100644
index 0000000..0ad4494
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-Platform-corstone1000-Replace-MCUBOOT-BL1-by-TFM-s.patch
@@ -0,0 +1,1034 @@
+From e46fd33355b54c08d1764c2a8e7b553960d61157 Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <emekcan.aras@arm.com>
+Date: Sat, 25 Feb 2023 10:29:55 +0000
+Subject: [PATCH 1/6] Platform: corstone1000: Replace MCUBOOT BL1 by TFM's
+
+From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+
+Replace The current BL1 (MCUBOOT) with the TFM BL1
+by enabling
+- PLATFORM_DEFAULT_BL1
+- Update linkerscripts
+- Update CMakeFile
+- Adapt boot_hal
+- Adapt provisioning (to use the provision bundle)
+- Adapt flash_layout and region_defs
+- Update documentation of corstone1000 build and run sections
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20553]
+Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+Change-Id: I224b24d0f4423e62468e609c11a239a4575cdae4
+---
+ .../target/arm/corstone1000/CMakeLists.txt    |  70 +++++-
+ .../Device/Include/boot_measurement.h         |  24 +++
+ .../Device/Include/platform_base_address.h    |   3 +
+ .../Device/Source/gcc/corstone1000_bl1_1.ld   | 203 ++++++++++++++++++
+ ...stone1000_bl1.ld => corstone1000_bl1_2.ld} |   8 +-
+ .../target/arm/corstone1000/bl1/bl1_rotpk.c   |  48 -----
+ .../bl1/{bl1_boot_hal.c => boot_hal_bl1.c}    | 102 ++++-----
+ .../arm/corstone1000/bl1/flash_map_extended.c | 103 ---------
+ .../arm/corstone1000/bl1/provisioning.c       | 109 +++++-----
+ .../ext/target/arm/corstone1000/config.cmake  |  18 +-
+ .../arm/corstone1000/partition/flash_layout.h |  10 -
+ .../arm/corstone1000/partition/region_defs.h  |  37 +++-
+ 12 files changed, 434 insertions(+), 301 deletions(-)
+ create mode 100644 platform/ext/target/arm/corstone1000/Device/Include/boot_measurement.h
+ create mode 100644 platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld
+ rename platform/ext/target/arm/corstone1000/Device/Source/gcc/{corstone1000_bl1.ld => corstone1000_bl1_2.ld} (95%)
+ delete mode 100644 platform/ext/target/arm/corstone1000/bl1/bl1_rotpk.c
+ rename platform/ext/target/arm/corstone1000/bl1/{bl1_boot_hal.c => boot_hal_bl1.c} (90%)
+ delete mode 100644 platform/ext/target/arm/corstone1000/bl1/flash_map_extended.c
+
+diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
+index 19863bcdb..a4fe28c08 100644
+--- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
++++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
+@@ -41,6 +41,23 @@ target_add_scatter_file(bl2
+         $<$<C_COMPILER_ID:GNU>:${PLATFORM_DIR}/ext/common/gcc/tfm_common_bl2.ld>
+ )
+ 
++target_sources(bl1_1
++PRIVATE
++    $<$<C_COMPILER_ID:GNU>:${CMAKE_CURRENT_SOURCE_DIR}/Device/Source/startup_corstone1000.c>
++)
++
++target_add_scatter_file(bl1_1
++    $<$<C_COMPILER_ID:GNU>:${CMAKE_CURRENT_SOURCE_DIR}/Device/Source/gcc/corstone1000_bl1_1.ld>
++)
++
++target_sources(bl1_2
++PRIVATE
++    $<$<C_COMPILER_ID:GNU>:${CMAKE_CURRENT_SOURCE_DIR}/Device/Source/startup_corstone1000.c>
++)
++target_add_scatter_file(bl1_2
++    $<$<C_COMPILER_ID:GNU>:${CMAKE_CURRENT_SOURCE_DIR}/Device/Source/gcc/corstone1000_bl1_2.ld>
++)
++
+ #========================= Platform Secure ====================================#
+ 
+ add_subdirectory(openamp)
+@@ -115,6 +132,55 @@ if (TFM_PARTITION_CRYPTO)
+     )
+ endif()
+ 
++#========================= Platform BL1 =======================================#
++
++target_sources(platform_bl1
++    PRIVATE
++        ./Device/Source/system_core_init.c
++        ./Device/Source/device_definition.c
++        ./bl1/boot_hal_bl1.c
++        ./Native_Driver/firewall.c
++        ./CMSIS_Driver/Driver_Flash.c
++        ./CMSIS_Driver/Driver_USART.c
++        ./Native_Driver/uart_pl011_drv.c
++        $<$<BOOL:${PLATFORM_IS_FVP}>:${CMAKE_CURRENT_SOURCE_DIR}/Native_Driver/cfi_drv.c>
++        $<$<BOOL:${PLATFORM_IS_FVP}>:${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata/spi_strataflashj3_flash_lib.c>
++        $<$<NOT:$<BOOL:${PLATFORM_IS_FVP}>>:${PLATFORM_DIR}/ext/target/arm/drivers/qspi/xilinx_pg153_axi/xilinx_pg153_axi_qspi_controller_drv.c>
++        $<$<NOT:$<BOOL:${PLATFORM_IS_FVP}>>:${PLATFORM_DIR}/ext/target/arm/drivers/flash/n25q256a/spi_n25q256a_flash_lib.c>
++        $<$<NOT:$<BOOL:${PLATFORM_IS_FVP}>>:${PLATFORM_DIR}/ext/target/arm/drivers/flash/sst26vf064b/spi_sst26vf064b_flash_lib.c>
++        ./fw_update_agent/uefi_capsule_parser.c
++        ./fw_update_agent/fwu_agent.c
++        ./fw_update_agent/uefi_fmp.c
++        ./soft_crc/soft_crc.c
++        ./Native_Driver/arm_watchdog_drv.c
++        ./Native_Driver/watchdog.c
++        ./bl1/provisioning.c
++        $<$<NOT:$<BOOL:${PLATFORM_DEFAULT_OTP}>>:${PLATFORM_DIR}/ext/accelerator/cc312/otp_cc312.c>
++)
++
++target_compile_definitions(platform_bl1
++    PUBLIC
++        $<$<BOOL:${PLATFORM_IS_FVP}>:PLATFORM_IS_FVP>
++        $<$<AND:$<BOOL:${CONFIG_TFM_BOOT_STORE_MEASUREMENTS}>,$<BOOL:${TFM_PARTITION_MEASURED_BOOT}>>:MEASURED_BOOT_API>
++        $<$<BOOL:${PLATFORM_DEFAULT_OTP_WRITEABLE}>:OTP_WRITEABLE>
++)
++
++target_include_directories(platform_bl1_interface
++    INTERFACE
++        .
++        ./Device/Include
++        ./Device/Config
++        ./Native_Driver
++        ./CMSIS_Driver/Config
++        ./fw_update_agent
++        ./soft_crc
++        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/common
++        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/strata
++        ${PLATFORM_DIR}/ext/target/arm/drivers/qspi/xilinx_pg153_axi/
++        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/n25q256a/
++        ${PLATFORM_DIR}/ext/target/arm/drivers/flash/sst26vf064b/
++)
++
+ #========================= Platform BL2 =======================================#
+ 
+ set(BL2_SOURCE ${CMAKE_SOURCE_DIR}/bl2)
+@@ -214,10 +280,6 @@ target_include_directories(platform_bl2
+         $<BUILD_INTERFACE:${BL2_SOURCE}/ext/mcuboot/include>
+ )
+ 
+-#========================= BL1 component =======================================#
+-
+-add_subdirectory(bl1)
+-
+ #========================= ns_agent_mailbox ===================================#
+ 
+ target_sources(tfm_psa_rot_partition_ns_agent_mailbox
+diff --git a/platform/ext/target/arm/corstone1000/Device/Include/boot_measurement.h b/platform/ext/target/arm/corstone1000/Device/Include/boot_measurement.h
+new file mode 100644
+index 000000000..a47bdb148
+--- /dev/null
++++ b/platform/ext/target/arm/corstone1000/Device/Include/boot_measurement.h
+@@ -0,0 +1,24 @@
++/*
++ * Copyright (c) 2023, Arm Limited. All rights reserved.
++ *
++ * SPDX-License-Identifier: BSD-3-Clause
++ *
++ */
++
++#ifndef __BOOT_MEASUREMENT_H__
++#define __BOOT_MEASUREMENT_H__
++
++enum boot_measurement_slot_t {
++    BOOT_MEASUREMENT_SLOT_BL1_2 = 0,
++    BOOT_MEASUREMENT_SLOT_BL2,
++    BOOT_MEASUREMENT_SLOT_RT_0,
++    BOOT_MEASUREMENT_SLOT_RT_1,
++    BOOT_MEASUREMENT_SLOT_RT_2,
++    BOOT_MEASUREMENT_SLOT_MAX = 32,
++    BOOT_MEASUREMENT_SLOT_MAX_THEORETICAL = 63  /* Slot index is stored in
++                                                 * 6 bits in the shared
++                                                 * memory area.
++                                                 */
++};
++
++#endif /* __BOOT_MEASUREMENT_H__ */
+diff --git a/platform/ext/target/arm/corstone1000/Device/Include/platform_base_address.h b/platform/ext/target/arm/corstone1000/Device/Include/platform_base_address.h
+index 5cca4c4a1..416f0ebcd 100644
+--- a/platform/ext/target/arm/corstone1000/Device/Include/platform_base_address.h
++++ b/platform/ext/target/arm/corstone1000/Device/Include/platform_base_address.h
+@@ -79,4 +79,7 @@
+ #define CORSTONE1000_HOST_AXI_QSPI_CTRL_REG_BASE_SE_SECURE_FLASH (0x90010000U) /* AXI QSPI Controller for SE FLash  */
+ #define CORSTONE1000_HOST_DRAM_UEFI_CAPSULE        (0xA0000000U) /* 1.5 GB DDR                        */
+ 
++/* Map Component definitions to Corstone definitions */
++#define CC3XX_BASE_S        CORSTONE1000_CRYPTO_ACCELERATOR_BASE
++
+ #endif  /* __PLATFORM_BASE_ADDRESS_H__ */
+diff --git a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld
+new file mode 100644
+index 000000000..d4eca2841
+--- /dev/null
++++ b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld
+@@ -0,0 +1,203 @@
++;/*
++; * Copyright (c) 2009-2022, Arm Limited. All rights reserved.
++; *
++; * Licensed under the Apache License, Version 2.0 (the "License");
++; * you may not use this file except in compliance with the License.
++; * You may obtain a copy of the License at
++; *
++; *     http://www.apache.org/licenses/LICENSE-2.0
++; *
++; * Unless required by applicable law or agreed to in writing, software
++; * distributed under the License is distributed on an "AS IS" BASIS,
++; * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++; * See the License for the specific language governing permissions and
++; * limitations under the License.
++; *
++; *
++; * This file is derivative of CMSIS V5.00 gcc_arm.ld
++; */
++
++/* Linker script to configure memory regions. */
++/* This file will be run trough the pre-processor. */
++
++#include "region_defs.h"
++
++MEMORY
++{
++    FLASH (rx)  : ORIGIN = BL1_1_CODE_START, LENGTH = BL1_1_CODE_SIZE
++    RAM   (rwx) : ORIGIN = BL1_1_DATA_START, LENGTH = BL1_1_DATA_SIZE
++}
++
++__heap_size__  = BL1_1_HEAP_SIZE;
++__msp_stack_size__ = BL1_1_MSP_STACK_SIZE;
++
++/* Library configurations */
++GROUP(libgcc.a libc.a libm.a libnosys.a)
++
++ENTRY(Reset_Handler)
++
++SECTIONS
++{
++    .text :
++    {
++        KEEP(*(.vectors))
++        __Vectors_End = .;
++        __Vectors_Size = __Vectors_End - __Vectors;
++        __end__ = .;
++
++        *(.text*)
++
++        KEEP(*shared_lib*:*(.text*))
++        KEEP(*bl1_tests_shared*:*(.text*))
++        KEEP(*bl1_crypto_hw*:*(.text*))
++        KEEP(*boot_hal_bl1*(.text*))
++
++        KEEP(*(.init))
++        KEEP(*(.fini))
++
++
++        /* .ctors */
++        *crtbegin.o(.ctors)
++        *crtbegin?.o(.ctors)
++        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
++        *(SORT(.ctors.*))
++        *(.ctors)
++
++        /* .dtors */
++         *crtbegin.o(.dtors)
++         *crtbegin?.o(.dtors)
++         *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
++         *(SORT(.dtors.*))
++         *(.dtors)
++
++        *(.rodata*)
++
++        KEEP(*(.eh_frame*))
++    } > FLASH
++
++    .ARM.extab :
++    {
++        *(.ARM.extab* .gnu.linkonce.armextab.*)
++    } > FLASH
++
++    __exidx_start = .;
++    .ARM.exidx :
++    {
++        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
++    } > FLASH
++    __exidx_end = .;
++
++    /* To copy multiple ROM to RAM sections,
++     * define etext2/data2_start/data2_end and
++     * define __STARTUP_COPY_MULTIPLE in startup_corstone700_bl2.S */
++    .copy.table :
++    {
++        . = ALIGN(4);
++        __copy_table_start__ = .;
++        LONG (__etext)
++        LONG (__data_start__)
++        LONG ((__data_end__ - __data_start__) / 4)
++        LONG (DEFINED(__etext2) ? __etext2 : 0)
++        LONG (DEFINED(__data2_start__) ? __data2_start__ : 0)
++        LONG (DEFINED(__data2_start__) ? ((__data2_end__ - __data2_start__) / 4) : 0)
++        __copy_table_end__ = .;
++    } > FLASH
++
++    /* To clear multiple BSS sections,
++     * uncomment .zero.table section and,
++     * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_cmsdk_musca_bl2.S */
++    .zero.table :
++    {
++        . = ALIGN(4);
++        __zero_table_start__ = .;
++        LONG (__bss_start__)
++        LONG ((__bss_end__ - __bss_start__) / 4)
++        LONG (DEFINED(__bss2_start__) ? __bss2_start__ : 0)
++        LONG (DEFINED(__bss2_start__) ? ((__bss2_end__ - __bss2_start__) / 4) : 0)
++        __zero_table_end__ = .;
++    } > FLASH
++
++    __etext = ALIGN (4);
++
++    .tfm_bl2_shared_data : ALIGN(32)
++    {
++        . += BOOT_TFM_SHARED_DATA_SIZE;
++    } > RAM
++    Image$$SHARED_DATA$$RW$$Base = ADDR(.tfm_bl2_shared_data);
++    Image$$SHARED_DATA$$RW$$Limit = ADDR(.tfm_bl2_shared_data) + SIZEOF(.tfm_bl2_shared_data);
++
++    . = BL1_1_DATA_START;
++    Image$$BL1_1_ER_DATA_START$$Base = .;
++    .data : AT (__etext)
++    {
++        __data_start__ = .;
++        *(vtable)
++        *(.data*)
++
++        . = ALIGN(4);
++        /* preinit data */
++        PROVIDE_HIDDEN (__preinit_array_start = .);
++        KEEP(*(.preinit_array))
++        PROVIDE_HIDDEN (__preinit_array_end = .);
++
++        . = ALIGN(4);
++        /* init data */
++        PROVIDE_HIDDEN (__init_array_start = .);
++        KEEP(*(SORT(.init_array.*)))
++        KEEP(*(.init_array))
++        PROVIDE_HIDDEN (__init_array_end = .);
++
++
++        . = ALIGN(4);
++        /* finit data */
++        PROVIDE_HIDDEN (__fini_array_start = .);
++        KEEP(*(SORT(.fini_array.*)))
++        KEEP(*(.fini_array))
++        PROVIDE_HIDDEN (__fini_array_end = .);
++
++        KEEP(*(.jcr*))
++        . = ALIGN(4);
++        /* All data end */
++        __data_end__ = .;
++
++    } > RAM
++    Image$$ER_DATA$$Base = ADDR(.data);
++
++    .bss :
++    {
++        . = ALIGN(4);
++        __bss_start__ = .;
++        *(.bss*)
++        *(COMMON)
++        . = ALIGN(4);
++        __bss_end__ = .;
++    } > RAM
++
++    bss_size = __bss_end__ - __bss_start__;
++
++    .msp_stack (NOLOAD) : ALIGN(32)
++    {
++        . += __msp_stack_size__;
++    } > RAM
++    Image$$ARM_LIB_STACK$$ZI$$Base = ADDR(.msp_stack);
++    Image$$ARM_LIB_STACK$$ZI$$Limit = ADDR(.msp_stack) + SIZEOF(.msp_stack);
++
++    .heap (NOLOAD): ALIGN(8)
++    {
++        . = ALIGN(8);
++        __end__ = .;
++        PROVIDE(end = .);
++        __HeapBase = .;
++        . += __heap_size__;
++        __HeapLimit = .;
++        __heap_limit = .; /* Add for _sbrk */
++    } > RAM
++    Image$$ARM_LIB_HEAP$$ZI$$Limit = ADDR(.heap) + SIZEOF(.heap);
++
++    PROVIDE(__stack = Image$$ARM_LIB_STACK$$ZI$$Limit);
++
++    Image$$BL1_1_ER_DATA_LIMIT$$Base = .;
++
++    Image$$BL1_2_ER_DATA_START$$Base = BL1_2_DATA_START;
++    Image$$BL1_2_ER_DATA_LIMIT$$Base = BL1_2_DATA_START + BL1_2_DATA_SIZE;
++}
+diff --git a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1.ld b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld
+similarity index 95%
+rename from platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1.ld
+rename to platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld
+index 73be37d7c..6cd806378 100644
+--- a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1.ld
++++ b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld
+@@ -24,12 +24,12 @@
+ 
+ MEMORY
+ {
+-    FLASH (rx)  : ORIGIN = BL1_CODE_START, LENGTH = BL1_CODE_SIZE
+-    RAM   (rwx) : ORIGIN = BL1_DATA_START, LENGTH = BL1_DATA_SIZE
++    FLASH (rx)  : ORIGIN = BL1_2_CODE_START, LENGTH = BL1_2_CODE_SIZE
++    RAM   (rwx) : ORIGIN = BL1_2_DATA_START, LENGTH = BL1_2_DATA_SIZE
+ }
+ 
+-__heap_size__  = BL1_HEAP_SIZE;
+-__msp_stack_size__ = BL1_MSP_STACK_SIZE;
++__heap_size__  = BL1_2_HEAP_SIZE;
++__msp_stack_size__ = BL1_2_MSP_STACK_SIZE;
+ 
+ /* Library configurations */
+ GROUP(libgcc.a libc.a libm.a libnosys.a)
+diff --git a/platform/ext/target/arm/corstone1000/bl1/bl1_rotpk.c b/platform/ext/target/arm/corstone1000/bl1/bl1_rotpk.c
+deleted file mode 100644
+index d8cfe3759..000000000
+--- a/platform/ext/target/arm/corstone1000/bl1/bl1_rotpk.c
++++ /dev/null
+@@ -1,48 +0,0 @@
+-/*
+- * Copyright (c) 2019-2021, Arm Limited. All rights reserved.
+- *
+- * SPDX-License-Identifier: BSD-3-Clause
+- *
+- */
+-
+-#include <stdint.h>
+-#include "tfm_plat_otp.h"
+-
+-static enum tfm_plat_err_t get_rotpk_hash(enum tfm_otp_element_id_t id,
+-                                          uint8_t* rotpk_hash,
+-                                          uint32_t* rotpk_hash_size)
+-{
+-    enum tfm_plat_err_t err;
+-    size_t otp_size;
+-
+-    err = tfm_plat_otp_read(id, *rotpk_hash_size, rotpk_hash);
+-    if (err != TFM_PLAT_ERR_SUCCESS) {
+-        return err;
+-    }
+-
+-    err = tfm_plat_otp_get_size(id, &otp_size);
+-    if (err != TFM_PLAT_ERR_SUCCESS) {
+-        return err;
+-    }
+-
+-    *rotpk_hash_size = otp_size;
+-
+-    return TFM_PLAT_ERR_SUCCESS;
+-}
+-
+-enum tfm_plat_err_t
+-tfm_plat_get_rotpk_hash(uint8_t image_id,
+-                        uint8_t *rotpk_hash,
+-                        uint32_t *rotpk_hash_size)
+-{
+-    switch(image_id) {
+-        case 0:
+-            return get_rotpk_hash(PLAT_OTP_ID_BL1_ROTPK_0, rotpk_hash,
+-                                  rotpk_hash_size);
+-
+-        default:
+-            return TFM_PLAT_ERR_INVALID_INPUT;
+-    }
+-
+-    return TFM_PLAT_ERR_SYSTEM_ERR;
+-}
+diff --git a/platform/ext/target/arm/corstone1000/bl1/bl1_boot_hal.c b/platform/ext/target/arm/corstone1000/bl1/boot_hal_bl1.c
+similarity index 90%
+rename from platform/ext/target/arm/corstone1000/bl1/bl1_boot_hal.c
+rename to platform/ext/target/arm/corstone1000/bl1/boot_hal_bl1.c
+index a5fe0f7da..678342443 100644
+--- a/platform/ext/target/arm/corstone1000/bl1/bl1_boot_hal.c
++++ b/platform/ext/target/arm/corstone1000/bl1/boot_hal_bl1.c
+@@ -12,13 +12,16 @@
+ #include "Driver_Flash.h"
+ #include "flash_layout.h"
+ #include "fih.h"
+-#include "bootutil/bootutil_log.h"
+ #include "firewall.h"
+ #include "watchdog.h"
+ #include "mpu_config.h"
+ #include "tfm_plat_otp.h"
+ #include "tfm_plat_provisioning.h"
+ #include "fwu_agent.h"
++#include "uart_stdout.h"
++#include "region_defs.h"
++#include "log.h"
++
+ 
+ #if defined(CRYPTO_HW_ACCELERATOR) || \
+     defined(CRYPTO_HW_ACCELERATOR_OTP_PROVISIONING)
+@@ -81,6 +84,9 @@ enum host_firewall_host_comp_id_t {
+   COMP_DEBUG,
+ };
+ 
++extern uint32_t platform_code_is_bl1_2;
++
++
+ static void setup_mpu(void)
+ {
+     uint32_t size; /* region size */
+@@ -581,56 +587,44 @@ static void setup_host_firewall(void)
+        fw_lockdown(FW_FULL_LOCKDOWN);
+ }
+ 
+-
+-__attribute__((naked)) void boot_clear_bl2_ram_area(void)
++uint32_t bl1_image_get_flash_offset(uint32_t image_id)
+ {
+-    __ASM volatile(
+-        ".syntax unified                             \n"
+-        "movs    r0, #0                              \n"
+-        "ldr     r1, =Image$$ER_DATA$$Base           \n"
+-        "ldr     r2, =Image$$ARM_LIB_HEAP$$ZI$$Limit \n"
+-        "subs    r2, r2, r1                          \n"
+-        "Loop:                                       \n"
+-        "subs    r2, #4                              \n"
+-        "blt     Clear_done                          \n"
+-        "str     r0, [r1, r2]                        \n"
+-        "b       Loop                                \n"
+-        "Clear_done:                                 \n"
+-        "bx      lr                                  \n"
+-         : : : "r0" , "r1" , "r2" , "memory"
+-    );
++    /* SE BL2 Offset is equal to bank offset as it is the first think in the Bank */
++    uint32_t se_bl2_offset = 0;
++    bl1_get_active_bl2_image(&se_bl2_offset);
++    switch (image_id) {
++        case 0:
++            return se_bl2_offset;
++        case 1:
++            return se_bl2_offset + SE_BL2_PARTITION_SIZE;
++        default:
++            FIH_PANIC;
++    }
+ }
+ 
+-extern void set_flash_area_image_offset(uint32_t offset);
+-
+ int32_t boot_platform_init(void)
+ {
+     int32_t result;
+     uint32_t image_offset;
+ 
+-    result = corstone1000_watchdog_init();
+-    if (result != ARM_DRIVER_OK) {
+-        return 1;
+-    }
+-
++    if (!platform_code_is_bl1_2) {
++        result = corstone1000_watchdog_init();
++        if (result != ARM_DRIVER_OK) {
++            return 1;
++        }
+ #if !(PLATFORM_IS_FVP)
+-    setup_mpu();
++        setup_mpu();
+ #endif
+-    setup_se_firewall();
++        setup_se_firewall();
+ #if !(PLATFORM_IS_FVP)
+-    setup_host_firewall();
++        setup_host_firewall();
+ #endif
+-
+-    result = FLASH_DEV_NAME.Initialize(NULL);
+-    if (result != ARM_DRIVER_OK) {
+-        return 1;
+     }
+-#if PLATFORM_DEFAULT_OTP
+-   result = FLASH_DEV_NAME_SE_SECURE_FLASH.Initialize(NULL);
+-   if (result != ARM_DRIVER_OK) {
+-       return 1;
+-   }
+-#endif
++
++#if defined(TFM_BL1_LOGGING) || defined(TEST_BL1_1) || defined(TEST_BL1_2)
++    stdio_init();
++#endif /* defined(TFM_BL1_LOGGING) || defined(TEST_BL1_1) || defined(TEST_BL1_2) */
++
+ 
+ #ifdef CRYPTO_HW_ACCELERATOR
+     result = crypto_hw_accelerator_init();
+@@ -639,23 +633,11 @@ int32_t boot_platform_init(void)
+     }
+ #endif /* CRYPTO_HW_ACCELERATOR */
+ 
+-    result = tfm_plat_otp_init();
+-    if (result != TFM_PLAT_ERR_SUCCESS) {
+-        BOOT_LOG_ERR("OTP system initialization failed");
+-        FIH_PANIC;
+-    }
+-
+-    if (tfm_plat_provisioning_is_required()) {
+-        result = fwu_metadata_provision();
+-        if (result != FWU_AGENT_SUCCESS) {
+-            BOOT_LOG_ERR("Provisioning FWU Metadata failed");
+-            FIH_PANIC;
+-        }
+-    }
+-
+-    bl1_get_active_bl2_image(&image_offset);
+-    set_flash_area_image_offset(image_offset);
++    return 0;
++}
+ 
++int32_t boot_platform_post_init(void)
++{
+     return 0;
+ }
+ 
+@@ -678,17 +660,15 @@ void boot_platform_quit(struct boot_arm_vector_table *vt)
+     (void)fih_delay_init();
+ #endif /* CRYPTO_HW_ACCELERATOR */
+ 
+-    result = FLASH_DEV_NAME.Uninitialize();
+-    if (result != ARM_DRIVER_OK) {
+-        while (1);
+-    }
+ 
+-#if PLATFORM_DEFAULT_OTP
+-    result = FLASH_DEV_NAME_SE_SECURE_FLASH.Uninitialize();
++#if defined(TFM_BL1_LOGGING) || defined(TEST_BL1_1) || defined(TEST_BL1_2)
++    stdio_uninit();
++#endif /* defined(TFM_BL1_LOGGING) || defined(TEST_BL1_1) || defined(TEST_BL1_2) */
++
++    result = corstone1000_watchdog_reset_timer();
+     if (result != ARM_DRIVER_OK) {
+         while (1);
+     }
+-#endif
+ 
+     vt_cpy = vt;
+ 
+diff --git a/platform/ext/target/arm/corstone1000/bl1/flash_map_extended.c b/platform/ext/target/arm/corstone1000/bl1/flash_map_extended.c
+deleted file mode 100644
+index b6632b6c2..000000000
+--- a/platform/ext/target/arm/corstone1000/bl1/flash_map_extended.c
++++ /dev/null
+@@ -1,103 +0,0 @@
+-/*
+- * Copyright (c) 2018 Nordic Semiconductor ASA
+- * Copyright (c) 2015 Runtime Inc
+- * Copyright (c) 2019-2021 Arm Limited.
+- *
+- * SPDX-License-Identifier: Apache-2.0
+- */
+-
+-/*
+- * Original code taken from mcuboot project at:
+- * https://github.com/mcu-tools/mcuboot
+- * Git SHA of the original version: ac55554059147fff718015be9f4bd3108123f50a
+- */
+-
+-#include <errno.h>
+-#include "target.h"
+-#include "cmsis.h"
+-#include "Driver_Flash.h"
+-#include "sysflash/sysflash.h"
+-#include "flash_map/flash_map.h"
+-#include "flash_map_backend/flash_map_backend.h"
+-#include "bootutil/bootutil_log.h"
+-
+-__WEAK int flash_device_base(uint8_t fd_id, uintptr_t *ret)
+-{
+-    if (fd_id != FLASH_DEVICE_ID) {
+-        BOOT_LOG_ERR("invalid flash ID %d; expected %d",
+-                     fd_id, FLASH_DEVICE_ID);
+-        return -1;
+-    }
+-    *ret = FLASH_DEVICE_BASE;
+-    return 0;
+-}
+-
+-/*
+- * This depends on the mappings defined in flash_map.h.
+- * MCUBoot uses continuous numbering for the primary slot, the secondary slot,
+- * and the scratch while TF-M might number it differently.
+- */
+-int flash_area_id_from_multi_image_slot(int image_index, int slot)
+-{
+-    switch (slot) {
+-    case 0: return BL1_FLASH_AREA_IMAGE_PRIMARY(image_index);
+-    case 1: return BL1_FLASH_AREA_IMAGE_SECONDARY(image_index);
+-    case 2: return BL1_FLASH_AREA_IMAGE_SCRATCH;
+-    }
+-
+-    return -1; /* flash_area_open will fail on that */
+-}
+-
+-int flash_area_id_from_image_slot(int slot)
+-{
+-    return flash_area_id_from_multi_image_slot(0, slot);
+-}
+-
+-int flash_area_id_to_multi_image_slot(int image_index, int area_id)
+-{
+-    if (area_id == BL1_FLASH_AREA_IMAGE_PRIMARY(image_index)) {
+-        return 0;
+-    }
+-    if (area_id == BL1_FLASH_AREA_IMAGE_SECONDARY(image_index)) {
+-        return 1;
+-    }
+-
+-    BOOT_LOG_ERR("invalid flash area ID");
+-    return -1;
+-}
+-
+-int flash_area_id_to_image_slot(int area_id)
+-{
+-    return flash_area_id_to_multi_image_slot(0, area_id);
+-}
+-
+-uint8_t flash_area_erased_val(const struct flash_area *fap)
+-{
+-    return DRV_FLASH_AREA(fap)->GetInfo()->erased_value;
+-}
+-
+-int flash_area_read_is_empty(const struct flash_area *fa, uint32_t off,
+-        void *dst, uint32_t len)
+-{
+-    uint32_t i;
+-    uint8_t *u8dst;
+-    int rc;
+-
+-    BOOT_LOG_DBG("read_is_empty area=%d, off=%#x, len=%#x",
+-                 fa->fa_id, off, len);
+-
+-    rc = DRV_FLASH_AREA(fa)->ReadData(fa->fa_off + off, dst, len);
+-    if (rc) {
+-        return -1;
+-    }
+-
+-    u8dst = (uint8_t*)dst;
+-
+-    for (i = 0; i < len; i++) {
+-        if (u8dst[i] != flash_area_erased_val(fa)) {
+-            return 0;
+-        }
+-    }
+-
+-    return 1;
+-}
+diff --git a/platform/ext/target/arm/corstone1000/bl1/provisioning.c b/platform/ext/target/arm/corstone1000/bl1/provisioning.c
+index 832fcea89..683bc45ea 100644
+--- a/platform/ext/target/arm/corstone1000/bl1/provisioning.c
++++ b/platform/ext/target/arm/corstone1000/bl1/provisioning.c
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2021-2022, Arm Limited. All rights reserved.
++ * Copyright (c) 2021-2023, Arm Limited. All rights reserved.
+  *
+  * SPDX-License-Identifier: BSD-3-Clause
+  *
+@@ -11,7 +11,9 @@
+ #include "tfm_plat_otp.h"
+ #include "tfm_attest_hal.h"
+ #include "psa/crypto.h"
+-#include "bootutil/bootutil_log.h"
++#include "region_defs.h"
++#include "log.h"
++#include "fwu_agent.h"
+ 
+ #include <string.h>
+ 
+@@ -19,51 +21,20 @@
+ 
+ __PACKED_STRUCT bl1_assembly_and_test_provisioning_data_t {
+     uint32_t magic;
+-    uint8_t bl1_rotpk_0[32];
++    uint8_t bl2_encryption_key[32];
++    uint8_t guk[32];
++    uint8_t bl1_2_image_hash[32];
++    uint8_t bl2_image_hash[32];
++    uint8_t bl1_2_image[BL1_2_CODE_SIZE];
++    uint8_t bl1_rotpk_0[56];
+ };
+ 
+-#ifdef TFM_DUMMY_PROVISIONING
+-static const struct bl1_assembly_and_test_provisioning_data_t bl1_assembly_and_test_prov_data = {
+-    ASSEMBLY_AND_TEST_PROV_DATA_MAGIC,
+-#if (MCUBOOT_SIGN_RSA_LEN == 2048)
+-    /* bl1 rotpk 0 */
+-    {
+-        0xfc, 0x57, 0x01, 0xdc, 0x61, 0x35, 0xe1, 0x32,
+-        0x38, 0x47, 0xbd, 0xc4, 0x0f, 0x04, 0xd2, 0xe5,
+-        0xbe, 0xe5, 0x83, 0x3b, 0x23, 0xc2, 0x9f, 0x93,
+-        0x59, 0x3d, 0x00, 0x01, 0x8c, 0xfa, 0x99, 0x94,
+-    },
+-#elif (MCUBOOT_SIGN_RSA_LEN == 3072)
+-    /* bl1 rotpk 0 */
+-    {
+-        0xbf, 0xe6, 0xd8, 0x6f, 0x88, 0x26, 0xf4, 0xff,
+-        0x97, 0xfb, 0x96, 0xc4, 0xe6, 0xfb, 0xc4, 0x99,
+-        0x3e, 0x46, 0x19, 0xfc, 0x56, 0x5d, 0xa2, 0x6a,
+-        0xdf, 0x34, 0xc3, 0x29, 0x48, 0x9a, 0xdc, 0x38,
+-    },
+-#else
+-#error "No public key available for given signing algorithm."
+-#endif /* MCUBOOT_SIGN_RSA_LEN */
+-};
+-#else
+-static const struct bl1_assembly_and_test_provisioning_data_t bl1_assembly_and_test_prov_data;
+-#endif /* TFM_DUMMY_PROVISIONING */
++static const struct bl1_assembly_and_test_provisioning_data_t *bl1_assembly_and_test_prov_data =
++                    (struct bl1_assembly_and_test_provisioning_data_t *)PROVISIONING_DATA_START;
++
+ 
+ void tfm_plat_provisioning_check_for_dummy_keys(void)
+ {
+-    uint64_t iak_start;
+-
+-    tfm_plat_otp_read(PLAT_OTP_ID_IAK, sizeof(iak_start), (uint8_t*)&iak_start);
+-
+-    if(iak_start == 0xA4906F6DB254B4A9) {
+-        BOOT_LOG_WRN("%s%s%s%s",
+-                     "\033[1;31m",
+-                     "This device was provisioned with dummy keys. ",
+-                     "This device is \033[1;1mNOT SECURE",
+-                     "\033[0m");
+-    }
+-
+-    memset(&iak_start, 0, sizeof(iak_start));
+ }
+ 
+ int tfm_plat_provisioning_is_required(void)
+@@ -85,12 +56,47 @@ enum tfm_plat_err_t provision_assembly_and_test(void)
+     enum tfm_plat_err_t err;
+ 
+     err = tfm_plat_otp_write(PLAT_OTP_ID_BL1_ROTPK_0,
+-                             sizeof(bl1_assembly_and_test_prov_data.bl1_rotpk_0),
+-                             bl1_assembly_and_test_prov_data.bl1_rotpk_0);
++                             sizeof(bl1_assembly_and_test_prov_data->bl1_rotpk_0),
++                             bl1_assembly_and_test_prov_data->bl1_rotpk_0);
++    if (err != TFM_PLAT_ERR_SUCCESS && err != TFM_PLAT_ERR_UNSUPPORTED) {
++        return err;
++    }
++
++
++    err = tfm_plat_otp_write(PLAT_OTP_ID_BL1_2_IMAGE_HASH,
++                             sizeof(bl1_assembly_and_test_prov_data->bl1_2_image_hash),
++                             bl1_assembly_and_test_prov_data->bl1_2_image_hash);
++    if (err != TFM_PLAT_ERR_SUCCESS && err != TFM_PLAT_ERR_UNSUPPORTED) {
++        return err;
++    }
++
++
++    err = tfm_plat_otp_write(PLAT_OTP_ID_BL1_2_IMAGE,
++                             sizeof(bl1_assembly_and_test_prov_data->bl1_2_image),
++                             bl1_assembly_and_test_prov_data->bl1_2_image);
++    if (err != TFM_PLAT_ERR_SUCCESS && err != TFM_PLAT_ERR_UNSUPPORTED) {
++        return err;
++    }
++
++    err = tfm_plat_otp_write(PLAT_OTP_ID_KEY_BL2_ENCRYPTION,
++                             sizeof(bl1_assembly_and_test_prov_data->bl2_encryption_key),
++                             bl1_assembly_and_test_prov_data->bl2_encryption_key);
+     if (err != TFM_PLAT_ERR_SUCCESS && err != TFM_PLAT_ERR_UNSUPPORTED) {
+         return err;
+     }
+ 
++    err = tfm_plat_otp_write(PLAT_OTP_ID_BL2_IMAGE_HASH,
++                             sizeof(bl1_assembly_and_test_prov_data->bl2_image_hash),
++                             bl1_assembly_and_test_prov_data->bl2_image_hash);
++    if (err != TFM_PLAT_ERR_SUCCESS && err != TFM_PLAT_ERR_UNSUPPORTED) {
++        return err;
++    }
++
++    err = fwu_metadata_provision();
++    if (err != FWU_AGENT_SUCCESS) {
++        return 1;
++    }
++
+     return err;
+ }
+ 
+@@ -104,19 +110,18 @@ enum tfm_plat_err_t tfm_plat_provisioning_perform(void)
+         return err;
+     }
+ 
+-    BOOT_LOG_INF("Beginning BL1 provisioning");
++    BL1_LOG("[INF] Beginning BL1 provisioning\r\n");
+ 
+ #ifdef TFM_DUMMY_PROVISIONING
+-    BOOT_LOG_WRN("%s%s%s%s",
+-                 "\033[1;31m",
+-                 "TFM_DUMMY_PROVISIONING is not suitable for production! ",
+-                 "This device is \033[1;1mNOT SECURE",
+-                 "\033[0m");
++    BL1_LOG("\033[1;31m[WRN]");
++    BL1_LOG("TFM_DUMMY_PROVISIONING is not suitable for production! ");
++    BL1_LOG("This device is \033[1;1mNOT SECURE");
++    BL1_LOG("\033[0m\r\n");
+ #endif /* TFM_DUMMY_PROVISIONING */
+ 
+     if (lcs == PLAT_OTP_LCS_ASSEMBLY_AND_TEST) {
+-        if (bl1_assembly_and_test_prov_data.magic != ASSEMBLY_AND_TEST_PROV_DATA_MAGIC) {
+-            BOOT_LOG_ERR("No valid ASSEMBLY_AND_TEST provisioning data found");
++        if (bl1_assembly_and_test_prov_data->magic != ASSEMBLY_AND_TEST_PROV_DATA_MAGIC) {
++            BL1_LOG("[ERR] No valid ASSEMBLY_AND_TEST provisioning data found\r\n");
+             return TFM_PLAT_ERR_INVALID_INPUT;
+         }
+ 
+diff --git a/platform/ext/target/arm/corstone1000/config.cmake b/platform/ext/target/arm/corstone1000/config.cmake
+index aca75394d..1b0675404 100644
+--- a/platform/ext/target/arm/corstone1000/config.cmake
++++ b/platform/ext/target/arm/corstone1000/config.cmake
+@@ -8,7 +8,14 @@
+ #-------------------------------------------------------------------------------
+ 
+ set(BL1                                 ON         CACHE BOOL     "Whether to build BL1")
+-set(PLATFORM_DEFAULT_BL1                OFF        CACHE STRING   "Whether to use default BL1 or platform-specific one")
++set(PLATFORM_DEFAULT_BL1                ON         CACHE STRING   "Whether to use default BL1 or platform-specific one")
++set(PLATFORM_DEFAULT_OTP                OFF        CACHE BOOL     "Use trusted on-chip flash to implement OTP memory")
++
++set(TFM_BL1_DEFAULT_PROVISIONING        OFF        CACHE BOOL     "Whether BL1_1 will use default provisioning")
++set(TFM_BL1_SOFTWARE_CRYPTO             OFF        CACHE BOOL     "Whether BL1_1 will use software crypto")
++set(TFM_BL1_MEMORY_MAPPED_FLASH         OFF        CACHE BOOL     "Whether BL1 can directly access flash content")
++set(TFM_BL1_PQ_CRYPTO                   OFF        CACHE BOOL     "Enable LMS PQ crypto for BL2 verification. This is experimental and should not yet be used in production")
++
+ set(BL2                                 ON         CACHE BOOL     "Whether to build BL2")
+ set(BL2_TRAILER_SIZE                    0x800      CACHE STRING   "Trailer size")
+ set(DEFAULT_MCUBOOT_FLASH_MAP           OFF        CACHE BOOL     "Whether to use the default flash map defined by TF-M project")
+@@ -26,13 +33,6 @@ set(TFM_CRYPTO_TEST_ALG_CFB             OFF        CACHE BOOL     "Test CFB cryp
+ set(NS                                  FALSE      CACHE BOOL     "Whether to build NS app")
+ set(EXTERNAL_SYSTEM_SUPPORT             OFF        CACHE BOOL     "Whether to include external system support.")
+ 
+-# FVP is not integrated/tested with CC312.
+-if (${PLATFORM_IS_FVP})
+-  set(PLATFORM_DEFAULT_OTP              TRUE      CACHE BOOL      "Use trusted on-chip flash to implement OTP memory")
+-else()
+-  set(PLATFORM_DEFAULT_OTP              FALSE      CACHE BOOL      "Use trusted on-chip flash to implement OTP memory")
+-endif()
+-
+ # External dependency on OpenAMP and Libmetal
+ set(LIBMETAL_SRC_PATH                   "DOWNLOAD"  CACHE PATH      "Path to Libmetal (or DOWNLOAD to fetch automatically")
+ set(LIBMETAL_VERSION                    "f252f0e007fbfb8b3a52b1d5901250ddac96baad"  CACHE STRING    "The version of libmetal to use")
+@@ -59,6 +59,8 @@ set(TFM_PARTITION_PROTECTED_STORAGE     ON          CACHE BOOL      "Enable Prot
+ set(TFM_PARTITION_CRYPTO                ON          CACHE BOOL      "Enable Crypto partition")
+ set(TFM_PARTITION_INITIAL_ATTESTATION   ON          CACHE BOOL      "Enable Initial Attestation partition")
+ set(TFM_PARTITION_INTERNAL_TRUSTED_STORAGE ON       CACHE BOOL      "Enable Internal Trusted Storage partition")
++set(TFM_PARTITION_MEASURED_BOOT         ON          CACHE BOOL      "Enable Measured boot partition")
++
+ 
+ if (${CMAKE_BUILD_TYPE} STREQUAL Debug OR ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo)
+   set(ENABLE_FWU_AGENT_DEBUG_LOGS     TRUE          CACHE BOOL      "Enable Firmware update agent debug logs.")
+diff --git a/platform/ext/target/arm/corstone1000/partition/flash_layout.h b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
+index b01a3621b..a95ff63ef 100644
+--- a/platform/ext/target/arm/corstone1000/partition/flash_layout.h
++++ b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
+@@ -34,16 +34,6 @@
+ 
+ #define BL2_DATA_GAP_SIZE               (0x09800)  /* 38 KB */
+ 
+-#define BL1_DATA_START                  (SRAM_BASE)
+-#define BL1_DATA_SIZE                   (0x10000)     /* 64 KiB*/
+-#define BL1_DATA_LIMIT                  (BL1_DATA_START + BL1_DATA_SIZE - 1)
+-
+-#ifdef BL1
+-
+-#define IMAGE_EXECUTABLE_RAM_START      (SRAM_BASE + BL1_DATA_SIZE)
+-#define IMAGE_EXECUTABLE_RAM_SIZE       (SRAM_SIZE - BL1_DATA_SIZE)
+-
+-#endif /* BL1 */
+ 
+ /*****************/
+ /***** Flash *****/
+diff --git a/platform/ext/target/arm/corstone1000/partition/region_defs.h b/platform/ext/target/arm/corstone1000/partition/region_defs.h
+index 35055fe9c..8157c36bf 100644
+--- a/platform/ext/target/arm/corstone1000/partition/region_defs.h
++++ b/platform/ext/target/arm/corstone1000/partition/region_defs.h
+@@ -20,12 +20,17 @@
+ 
+ #include "flash_layout.h"
+ 
++/* BL1_1 */
++#define BL1_1_HEAP_SIZE         (0x0001000) /* 4KiB */
++#define BL1_1_MSP_STACK_SIZE    (0x0001800) /* 6KiB */
++
++/* BL1_2 */
++#define BL1_2_HEAP_SIZE         (0x0001000) /* 4KiB */
++#define BL1_2_MSP_STACK_SIZE    (0x0001800) /* 6KiB */
++
+ #define BL2_HEAP_SIZE           (0x0001000)
+ #define BL2_MSP_STACK_SIZE      (0x0001E00)
+ 
+-#define BL1_HEAP_SIZE           (0x0001000)
+-#define BL1_MSP_STACK_SIZE      (0x0001800)
+-
+ #ifdef ENABLE_HEAP
+     #define S_HEAP_SIZE             (0x0000200)
+ #endif
+@@ -80,8 +85,8 @@
+ 
+ 
+ /* SE BL2 regions */
+-#define BL2_CODE_START    (SRAM_BASE + TFM_PARTITION_SIZE + \
+-                           BL2_DATA_GAP_SIZE + BL2_HEADER_SIZE)
++#define BL2_IMAGE_START   (SRAM_BASE + SRAM_SIZE - SE_BL2_PARTITION_SIZE)
++#define BL2_CODE_START    (BL2_IMAGE_START + BL2_HEADER_SIZE)
+ #define BL2_CODE_SIZE     (IMAGE_BL2_CODE_SIZE)
+ #define BL2_CODE_LIMIT    (BL2_CODE_START + BL2_CODE_SIZE - 1)
+ 
+@@ -91,9 +96,25 @@
+ #define BL2_DATA_LIMIT    (BL2_DATA_START + BL2_DATA_SIZE - 1)
+ 
+ /* SE BL1 regions */
+-#define BL1_CODE_START    (0)
+-#define BL1_CODE_SIZE     (0x00020000)     /* Whole SE ROM, 128 KiB */
+-#define BL1_CODE_LIMIT    (BL2_CODE_START + BL2_CODE_SIZE - 1)
++#define BL1_1_CODE_START    (0)
++#define BL1_1_CODE_SIZE     (0x0000A000)     /* 40 KiB */
++#define BL1_1_CODE_LIMIT    (BL1_1_CODE_START + BL1_1_CODE_SIZE - 1)
++
++#define PROVISIONING_DATA_START (BL1_1_CODE_START + BL1_1_CODE_SIZE)
++#define PROVISIONING_DATA_SIZE  (0x00002000)     /* 8 KiB */
++#define PROVISIONING_DATA_LIMIT (PROVISIONING_DATA_START + PROVISIONING_DATA_SIZE - 1)
++
++#define BL1_1_DATA_START    (SRAM_BASE)
++#define BL1_1_DATA_SIZE     (0x8000)     /* 32 KiB*/
++#define BL1_1_DATA_LIMIT    (BL1_1_DATA_START + BL1_1_DATA_SIZE - 1)
++
++#define BL1_2_CODE_START    (BL1_1_DATA_START + BL1_1_DATA_SIZE)
++#define BL1_2_CODE_SIZE     (0x00001000)     /* 4 KiB */
++#define BL1_2_CODE_LIMIT    (BL1_2_CODE_START + BL1_2_CODE_SIZE - 1)
++
++#define BL1_2_DATA_START    (BL1_2_CODE_START+BL1_2_CODE_SIZE)
++#define BL1_2_DATA_SIZE     (0x8000)     /* 32 KiB*/
++#define BL1_2_DATA_LIMIT    (BL1_2_DATA_START + BL1_2_DATA_SIZE - 1)
+ 
+ #define BOOT_TFM_SHARED_DATA_BASE (S_DATA_PRIV_START)
+ 
+-- 
+2.17.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-Platform-corstone1000-calculate-metadata-crc32.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-Platform-corstone1000-calculate-metadata-crc32.patch
deleted file mode 100644
index 4921e3a..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-Platform-corstone1000-calculate-metadata-crc32.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 6f8ce3c0f70fecb1e7b990b8b47af16972b90671 Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Wed, 21 Dec 2022 15:13:27 +0000
-Subject: [PATCH 4/10] Platform: corstone1000: calculate metadata crc32
-
-Calculate metadata crc32 during provisioning.
-It is requried to enable TF-A, U-Boot to verify fwu_metadata.
-
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- platform/ext/target/arm/corstone1000/CMakeLists.txt        | 2 ++
- platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt    | 2 ++
- .../target/arm/corstone1000/fw_update_agent/fwu_agent.c    | 7 ++++++-
- 3 files changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
-index 7808efae68..554fc51b21 100644
---- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
-+++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
-@@ -58,6 +58,7 @@ target_include_directories(platform_s
-     INTERFACE
-         cc312
-         fw_update_agent
-+        soft_crc
- )
- 
- target_sources(platform_s
-@@ -185,6 +186,7 @@ target_include_directories(platform_bl2
-         fip_parser
-         Native_Driver
-         fw_update_agent
-+        soft_crc
-         io
-         .
-     INTERFACE
-diff --git a/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt b/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
-index 62fd0f6ddf..426a8df698 100644
---- a/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
-+++ b/platform/ext/target/arm/corstone1000/bl1/CMakeLists.txt
-@@ -229,6 +229,7 @@ target_include_directories(bl1_main
-         $<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:${CMAKE_SOURCE_DIR}/platform/ext/accelerator/cc312>
-         $<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:${CMAKE_SOURCE_DIR}/lib/ext/cryptocell-312-runtime/shared/include/mbedtls>
-         $<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:${CMAKE_SOURCE_DIR}/lib/ext/cryptocell-312-runtime/shared/include/crypto_api/cc3x>
-+        ../soft_crc
- )
- 
- # Configurations based on platform level cmake files
-@@ -241,6 +242,7 @@ target_sources(bl1_main
-         ../Native_Driver/firewall.c
-         ../Native_Driver/uart_pl011_drv.c
-         ../fw_update_agent/fwu_agent.c
-+        ../soft_crc/soft_crc.c
-         ../Native_Driver/arm_watchdog_drv.c
-         ../Native_Driver/watchdog.c
-         bl1_boot_hal.c
-diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-index d5491e08db..1a42c72bd5 100644
---- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2021, Arm Limited. All rights reserved.
-+ * Copyright (c) 2021-2023, Arm Limited. All rights reserved.
-  *
-  * SPDX-License-Identifier: BSD-3-Clause
-  *
-@@ -20,6 +20,7 @@
- #include "tfm_plat_defs.h"
- #include "uefi_fmp.h"
- #include "uart_stdout.h"
-+#include "soft_crc.h"
- 
- /* Properties of image in a bank */
- struct fwu_image_properties {
-@@ -324,6 +325,10 @@ enum fwu_agent_error_t fwu_metadata_provision(void)
-         _metadata.img_entry[i].img_props[BANK_1].version = INVALID_VERSION;
-     }
- 
-+    /* Calculate CRC32 for fwu metadata */
-+    _metadata.crc_32 = crc32((uint8_t *)&_metadata.version,
-+                             sizeof(struct fwu_metadata) - sizeof(uint32_t));
-+
-     ret = metadata_write(&_metadata);
-     if (ret) {
-         return ret;
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-Platform-corstone1000-Replace-MCUBOOT-BL1-by-TFM-s-B.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-Platform-corstone1000-Replace-MCUBOOT-BL1-by-TFM-s-B.patch
new file mode 100644
index 0000000..697061e
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-Platform-corstone1000-Replace-MCUBOOT-BL1-by-TFM-s-B.patch
@@ -0,0 +1,202 @@
+From d5a7cde4648d2247f83a0f259aa088152199dfbd Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <emekcan.aras@arm.com>
+Date: Mon, 27 Feb 2023 20:58:30 +0000
+Subject: [PATCH 2/6] Platform: corstone1000: Replace MCUBOOT BL1 by TFM's
+ (BL2)
+
+From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+
+Set region_defs of BL2 correctly
+Set FLASH Areas 0 and 1 to have BL2
+Set FLASH Areas 2 and 3 to have TFM
+Set FLASH Areas 4 and 5 to have FIP
+Initialize FLASH in BL1_2 boot platform code
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20554]
+Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+Change-Id: I987d29cb6318b8b30cafab67d24f446aaadfe500
+---
+ .../arm/corstone1000/bl1/boot_hal_bl1.c       | 14 +++++++
+ .../target/arm/corstone1000/bl2_flash_map.c   |  8 ++--
+ .../ext/target/arm/corstone1000/config.cmake  |  3 ++
+ .../arm/corstone1000/partition/flash_layout.h | 41 +++++++++++++------
+ .../arm/corstone1000/partition/region_defs.h  |  4 +-
+ 5 files changed, 51 insertions(+), 19 deletions(-)
+
+diff --git a/platform/ext/target/arm/corstone1000/bl1/boot_hal_bl1.c b/platform/ext/target/arm/corstone1000/bl1/boot_hal_bl1.c
+index 678342443..2124720b2 100644
+--- a/platform/ext/target/arm/corstone1000/bl1/boot_hal_bl1.c
++++ b/platform/ext/target/arm/corstone1000/bl1/boot_hal_bl1.c
+@@ -638,6 +638,13 @@ int32_t boot_platform_init(void)
+ 
+ int32_t boot_platform_post_init(void)
+ {
++    int32_t result;
++    if (platform_code_is_bl1_2) {
++        result = FLASH_DEV_NAME.Initialize(NULL);
++        if (result != ARM_DRIVER_OK) {
++            return 1;
++        }
++    }
+     return 0;
+ }
+ 
+@@ -665,6 +672,13 @@ void boot_platform_quit(struct boot_arm_vector_table *vt)
+     stdio_uninit();
+ #endif /* defined(TFM_BL1_LOGGING) || defined(TEST_BL1_1) || defined(TEST_BL1_2) */
+ 
++    if (platform_code_is_bl1_2) {
++        result = FLASH_DEV_NAME.Uninitialize();
++        if (result != ARM_DRIVER_OK) {
++            return 1;
++        }
++    }
++
+     result = corstone1000_watchdog_reset_timer();
+     if (result != ARM_DRIVER_OK) {
+         while (1);
+diff --git a/platform/ext/target/arm/corstone1000/bl2_flash_map.c b/platform/ext/target/arm/corstone1000/bl2_flash_map.c
+index 599f80b41..2b1cdfa19 100644
+--- a/platform/ext/target/arm/corstone1000/bl2_flash_map.c
++++ b/platform/ext/target/arm/corstone1000/bl2_flash_map.c
+@@ -25,14 +25,14 @@ extern ARM_DRIVER_FLASH FLASH_DEV_NAME;
+  */
+ struct flash_area flash_map[] = {
+     {
+-        .fa_id = FLASH_AREA_0_ID,
++        .fa_id = FLASH_AREA_2_ID,
+         .fa_device_id = FLASH_DEVICE_ID,
+         .fa_driver = &FLASH_DEV_NAME,
+         .fa_off = FLASH_INVALID_OFFSET,
+         .fa_size = FLASH_INVALID_SIZE,
+     },
+     {
+-        .fa_id = FLASH_AREA_1_ID,
++        .fa_id = FLASH_AREA_3_ID,
+         .fa_device_id = FLASH_DEVICE_ID,
+         .fa_driver = &FLASH_DEV_NAME,
+         .fa_off = FLASH_INVALID_OFFSET,
+@@ -40,14 +40,14 @@ struct flash_area flash_map[] = {
+     },
+ #ifndef TFM_S_REG_TEST
+     {
+-        .fa_id = FLASH_AREA_2_ID,
++        .fa_id = FLASH_AREA_4_ID,
+         .fa_device_id = FLASH_DEVICE_ID,
+         .fa_driver = &FLASH_DEV_NAME,
+         .fa_off = FLASH_INVALID_OFFSET,
+         .fa_size = FLASH_INVALID_SIZE,
+     },
+     {
+-        .fa_id = FLASH_AREA_3_ID,
++        .fa_id = FLASH_AREA_5_ID,
+         .fa_device_id = FLASH_DEVICE_ID,
+         .fa_driver = &FLASH_DEV_NAME,
+         .fa_off = FLASH_INVALID_OFFSET,
+diff --git a/platform/ext/target/arm/corstone1000/config.cmake b/platform/ext/target/arm/corstone1000/config.cmake
+index 1b0675404..bec6b84f0 100644
+--- a/platform/ext/target/arm/corstone1000/config.cmake
++++ b/platform/ext/target/arm/corstone1000/config.cmake
+@@ -16,6 +16,9 @@ set(TFM_BL1_SOFTWARE_CRYPTO             OFF        CACHE BOOL     "Whether BL1_1
+ set(TFM_BL1_MEMORY_MAPPED_FLASH         OFF        CACHE BOOL     "Whether BL1 can directly access flash content")
+ set(TFM_BL1_PQ_CRYPTO                   OFF        CACHE BOOL     "Enable LMS PQ crypto for BL2 verification. This is experimental and should not yet be used in production")
+ 
++set(TFM_BL2_IMAGE_FLASH_AREA_NUM        0          CACHE STRING   "Which flash area BL2 is stored in")
++set(MCUBOOT_S_IMAGE_FLASH_AREA_NUM      2          CACHE STRING   "ID of the flash area containing the primary Secure image")
++
+ set(BL2                                 ON         CACHE BOOL     "Whether to build BL2")
+ set(BL2_TRAILER_SIZE                    0x800      CACHE STRING   "Trailer size")
+ set(DEFAULT_MCUBOOT_FLASH_MAP           OFF        CACHE BOOL     "Whether to use the default flash map defined by TF-M project")
+diff --git a/platform/ext/target/arm/corstone1000/partition/flash_layout.h b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
+index a95ff63ef..41b4c6323 100644
+--- a/platform/ext/target/arm/corstone1000/partition/flash_layout.h
++++ b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
+@@ -136,23 +136,38 @@
+ #define BANK_PARTITION_SIZE             (0xFE0000)   /* 15.875 MB */
+ #define TFM_PARTITION_SIZE              (0x5E000)    /* 376 KB */
+ 
+-/* Macros needed to imgtool.py, used when creating BL2 signed image */
+-#define BL2_IMAGE_LOAD_ADDRESS          (SRAM_BASE + TFM_PARTITION_SIZE + BL2_DATA_GAP_SIZE)
+-#define BL2_IMAGE_OFFSET                (0x0)
+-#define BL2_IMAGE_MAX_SIZE              (SE_BL2_PARTITION_SIZE)
++/************************************************************/
++/* Bank : Images flash offsets are with respect to the bank */
++/************************************************************/
+ 
+-/* Image 1: TF-M primary and secondary images */
++/* Image 0: BL2 primary and secondary images */
+ #define FLASH_AREA_0_ID                 (1)
+-#define FLASH_AREA_0_SIZE               (TFM_PARTITION_SIZE)
++#define FLASH_AREA_0_OFFSET             (0) /* starting from 0th offset of the bank */
++#define FLASH_AREA_0_SIZE               (SE_BL2_PARTITION_SIZE)
++
+ #define FLASH_AREA_1_ID                 (FLASH_AREA_0_ID + 1)
+-#define FLASH_AREA_1_SIZE               (TFM_PARTITION_SIZE)
++#define FLASH_AREA_1_OFFSET             (FLASH_AREA_0_OFFSET + FLASH_AREA_0_SIZE)
++#define FLASH_AREA_1_SIZE               (SE_BL2_PARTITION_SIZE)
++
++/* Image 1: TF-M primary and secondary images */
++#define FLASH_AREA_2_ID                 (1)
++#define FLASH_AREA_2_SIZE               (TFM_PARTITION_SIZE)
++#define FLASH_AREA_3_ID                 (FLASH_AREA_2_ID + 1)
++#define FLASH_AREA_3_SIZE               (TFM_PARTITION_SIZE)
+ 
+ /* Image 2: Host FIP */
+ #define FIP_SIGNATURE_AREA_SIZE         (0x1000)      /* 4 KB */
+ 
+ /* Host BL2 (TF-A) primary and secondary image. */
+-#define FLASH_AREA_2_ID                 (FLASH_AREA_1_ID + 1)
+-#define FLASH_AREA_3_ID                 (FLASH_AREA_2_ID + 1)
++#define FLASH_AREA_4_ID                 (FLASH_AREA_3_ID + 1)
++#define FLASH_AREA_5_ID                 (FLASH_AREA_4_ID + 1)
++
++#define BL1_FLASH_AREA_IMAGE_PRIMARY(x)     (((x) == 0) ? FLASH_AREA_0_ID : \
++                                                          255 )
++#define BL1_FLASH_AREA_IMAGE_SECONDARY(x)   (((x) == 0) ? FLASH_AREA_1_ID : \
++                                                          255 )
++
++#define BL1_FLASH_AREA_IMAGE_SCRATCH        255
+ 
+ /* Macros needed to imgtool.py, used when creating TF-M signed image */
+ #define S_IMAGE_LOAD_ADDRESS            (SRAM_BASE)
+@@ -161,11 +176,11 @@
+ #define NON_SECURE_IMAGE_OFFSET         (TFM_PARTITION_SIZE)
+ #define NON_SECURE_IMAGE_MAX_SIZE       (0x0)
+ 
+-#define FLASH_AREA_IMAGE_PRIMARY(x)     (((x) == 0) ? FLASH_AREA_0_ID : \
+-                                         ((x) == 1) ? FLASH_AREA_2_ID : \
++#define FLASH_AREA_IMAGE_PRIMARY(x)     (((x) == 0) ? FLASH_AREA_2_ID : \
++                                         ((x) == 1) ? FLASH_AREA_4_ID : \
+                                                       255 )
+-#define FLASH_AREA_IMAGE_SECONDARY(x)   (((x) == 0) ? FLASH_AREA_1_ID : \
+-                                         ((x) == 1) ? FLASH_AREA_3_ID : \
++#define FLASH_AREA_IMAGE_SECONDARY(x)   (((x) == 0) ? FLASH_AREA_3_ID : \
++                                         ((x) == 1) ? FLASH_AREA_5_ID : \
+                                                       255 )
+ 
+ #define FLASH_AREA_IMAGE_SCRATCH        255
+diff --git a/platform/ext/target/arm/corstone1000/partition/region_defs.h b/platform/ext/target/arm/corstone1000/partition/region_defs.h
+index 8157c36bf..fc9f734f6 100644
+--- a/platform/ext/target/arm/corstone1000/partition/region_defs.h
++++ b/platform/ext/target/arm/corstone1000/partition/region_defs.h
+@@ -48,7 +48,7 @@
+             (TFM_PARTITION_SIZE - BL2_HEADER_SIZE - BL2_TRAILER_SIZE)
+ 
+ #define IMAGE_BL2_CODE_SIZE \
+-            (SE_BL2_PARTITION_SIZE - BL2_HEADER_SIZE - BL2_TRAILER_SIZE)
++            (SE_BL2_PARTITION_SIZE - BL1_HEADER_SIZE - BL1_TRAILER_SIZE)
+ 
+ /* Secure regions */
+ #define S_CODE_START            (SRAM_BASE + BL2_HEADER_SIZE)
+@@ -86,7 +86,7 @@
+ 
+ /* SE BL2 regions */
+ #define BL2_IMAGE_START   (SRAM_BASE + SRAM_SIZE - SE_BL2_PARTITION_SIZE)
+-#define BL2_CODE_START    (BL2_IMAGE_START + BL2_HEADER_SIZE)
++#define BL2_CODE_START    (BL2_IMAGE_START + BL1_HEADER_SIZE)
+ #define BL2_CODE_SIZE     (IMAGE_BL2_CODE_SIZE)
+ #define BL2_CODE_LIMIT    (BL2_CODE_START + BL2_CODE_SIZE - 1)
+ 
+-- 
+2.17.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-Platform-corstone1000-fwu-metadata_read-validate-crc.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-Platform-corstone1000-fwu-metadata_read-validate-crc.patch
deleted file mode 100644
index 49452b8..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-Platform-corstone1000-fwu-metadata_read-validate-crc.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 25924b6c0504faae0b0ed680c09fb8996b6aaba6 Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Wed, 21 Dec 2022 15:42:21 +0000
-Subject: [PATCH 5/10] Platform:corstone1000:fwu: metadata_read validate crc
-
-Add validation logic to metadata_read function.
-Also, add metadata_read_without_validation
-
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- .../target/arm/corstone1000/CMakeLists.txt    |  1 +
- .../corstone1000/fw_update_agent/fwu_agent.c  | 51 +++++++++++++++++++
- 2 files changed, 52 insertions(+)
-
-diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
-index 554fc51b21..9db2864033 100644
---- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
-+++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
-@@ -75,6 +75,7 @@ target_sources(platform_s
-         fw_update_agent/uefi_capsule_parser.c
-         fw_update_agent/fwu_agent.c
-         fw_update_agent/uefi_fmp.c
-+        soft_crc/soft_crc.c
-         $<$<NOT:$<BOOL:${PLATFORM_DEFAULT_OTP}>>:${PLATFORM_DIR}/ext/accelerator/cc312/otp_cc312.c>
- )
- 
-diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-index 1a42c72bd5..eb17c3a377 100644
---- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-@@ -193,6 +193,53 @@ static enum fwu_agent_error_t private_metadata_write(
-     return FWU_AGENT_SUCCESS;
- }
- 
-+static enum fwu_agent_error_t metadata_validate(struct fwu_metadata *p_metadata)
-+{
-+    int ret;
-+
-+    FWU_LOG_MSG("%s: enter:\n\r", __func__);
-+
-+    if (!p_metadata) {
-+        return FWU_AGENT_ERROR;
-+    }
-+
-+    uint32_t calculated_crc32 = crc32((uint8_t *)&(p_metadata->version),
-+                                      sizeof(struct fwu_metadata) - sizeof(uint32_t));
-+
-+    if (p_metadata->crc_32 != calculated_crc32) {
-+        FWU_LOG_MSG("%s: failed: crc32 calculated: 0x%x, given: 0x%x\n\r", __func__,
-+                    calculated_crc32, p_metadata->crc_32);
-+        return FWU_AGENT_ERROR;
-+    }
-+
-+    FWU_LOG_MSG("%s: success\n\r", __func__);
-+
-+    return FWU_AGENT_SUCCESS;
-+}
-+
-+static enum fwu_agent_error_t metadata_read_without_validation(struct fwu_metadata *p_metadata)
-+{
-+    int ret;
-+
-+    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
-+                  FWU_METADATA_REPLICA_1_OFFSET, sizeof(struct fwu_metadata));
-+
-+    if (!p_metadata) {
-+        return FWU_AGENT_ERROR;
-+    }
-+
-+    ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_METADATA_REPLICA_1_OFFSET,
-+                                p_metadata, sizeof(struct fwu_metadata));
-+    if (ret < 0 || ret != sizeof(struct fwu_metadata)) {
-+        return FWU_AGENT_ERROR;
-+    }
-+
-+    FWU_LOG_MSG("%s: success: active = %u, previous = %d\n\r", __func__,
-+                  p_metadata->active_index, p_metadata->previous_active_index);
-+
-+    return FWU_AGENT_SUCCESS;
-+}
-+
- static enum fwu_agent_error_t metadata_read(struct fwu_metadata *p_metadata)
- {
-     int ret;
-@@ -210,6 +257,10 @@ static enum fwu_agent_error_t metadata_read(struct fwu_metadata *p_metadata)
-         return FWU_AGENT_ERROR;
-     }
- 
-+    if (metadata_validate(p_metadata) != FWU_AGENT_SUCCESS) {
-+        return FWU_AGENT_ERROR;
-+    }
-+
-     FWU_LOG_MSG("%s: success: active = %u, previous = %d\n\r", __func__,
-                   p_metadata->active_index, p_metadata->previous_active_index);
- 
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-corstone1000-Add-common-platform-logger.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-corstone1000-Add-common-platform-logger.patch
deleted file mode 100644
index a7c17ab..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-corstone1000-Add-common-platform-logger.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From 9545d9bb44f8fb5af438fb40cab7fefc95d5a9a4 Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Thu, 22 Dec 2022 09:24:50 +0000
-Subject: [PATCH 6/10] Platform:corstone1000: Add common platform logger
-
-platform_log defines log messages macros to be used by the platform code
-It allows defining the module name to be added at the beginning of the log
-message.
-Based on build type PLAT_LOG_LEVEL is defined.
-In case of Debug/RelWithDebInfo PLAT_LOG_LEVEL is defined to Debug level
-else it is defined to OFF.
-
-usage in source file:
-...
-INFO("msg");
-ERROR("msg");
-WARN("msg");
-VERBOSE("msg");
-DBG("msg");
-...
-
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- .../target/arm/corstone1000/CMakeLists.txt    |  1 +
- .../ext/target/arm/corstone1000/config.cmake  |  4 +-
- .../target/arm/corstone1000/platform_log.h    | 60 +++++++++++++++++++
- 3 files changed, 64 insertions(+), 1 deletion(-)
- create mode 100644 platform/ext/target/arm/corstone1000/platform_log.h
-
-diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
-index 9db2864033..a120f39ea4 100644
---- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
-+++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
-@@ -152,6 +152,7 @@ target_compile_definitions(platform_bl2
-         $<$<BOOL:${PLATFORM_IS_FVP}>:PLATFORM_IS_FVP>
-         $<$<BOOL:${TFM_S_REG_TEST}>:TFM_S_REG_TEST>
-         $<$<BOOL:${ENABLE_FWU_AGENT_DEBUG_LOGS}>:ENABLE_FWU_AGENT_DEBUG_LOGS>
-+        PLAT_LOG_LEVEL=${PLAT_LOG_LEVEL}
- )
- 
- # boot_hal_bl2.c is compiled as part of 'bl2' target and not inside
-diff --git a/platform/ext/target/arm/corstone1000/config.cmake b/platform/ext/target/arm/corstone1000/config.cmake
-index b71ca672f3..de0b4b64c1 100644
---- a/platform/ext/target/arm/corstone1000/config.cmake
-+++ b/platform/ext/target/arm/corstone1000/config.cmake
-@@ -63,6 +63,8 @@ set(TFM_PARTITION_INTERNAL_TRUSTED_STORAGE ON       CACHE BOOL      "Enable Inte
- 
- if (${CMAKE_BUILD_TYPE} STREQUAL Debug OR ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo)
-   set(ENABLE_FWU_AGENT_DEBUG_LOGS     TRUE        CACHE BOOL      "Enable Firmware update agent debug logs.")
--else()
-+  set(PLAT_LOG_LEVEL                    4        CACHE STRING     "Set platform log level.")
-+  else()
-   set(ENABLE_FWU_AGENT_DEBUG_LOGS     FALSE        CACHE BOOL     "Enable Firmware update agent debug logs.")
-+  set(PLAT_LOG_LEVEL                    0        CACHE STRING     "Set platform log level.")
- endif()
-diff --git a/platform/ext/target/arm/corstone1000/platform_log.h b/platform/ext/target/arm/corstone1000/platform_log.h
-new file mode 100644
-index 0000000000..b3a6e98026
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/platform_log.h
-@@ -0,0 +1,60 @@
-+/*
-+ * Copyright (c) 2023, Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ *
-+ */
-+
-+#ifndef __PLATFORM_LOG_H__
-+#define __PLATFORM_LOG_H__
-+
-+#define PLAT_LOG_LEVEL_OFF       (0)
-+#define PLAT_LOG_LEVEL_ERROR     (1)
-+#define PLAT_LOG_LEVEL_WARN      (2)
-+#define PLAT_LOG_LEVEL_INFO      (3)
-+#define PLAT_LOG_LEVEL_DEBUG     (4)
-+
-+#ifndef PLAT_LOG_MODULE_NAME
-+#define MODULE_NAME_STR " "
-+#else
-+#define MODULE_NAME_STR "["PLAT_LOG_MODULE_NAME"]: "
-+#endif
-+
-+#ifndef PLAT_LOG_LEVEL
-+#warning "Logging level is not defined, default is PLAT_LOG_LEVEL_ERROR."
-+#define PLAT_LOG_LEVEL   PLAT_LOG_LEVEL_ERROR
-+#endif
-+
-+
-+/* System can override PRINTF with other rich format function*/
-+#ifndef PRINTF
-+#if PLAT_LOG_LEVEL > PLAT_LOG_LEVEL_OFF
-+#include <stdio.h>
-+#define PRINTF printf
-+#endif
-+#endif
-+
-+#if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_ERROR
-+    #define ERROR(f_, ...) do { PRINTF("\033[31;4m[ERR]:\033[m%s"f_"\r\n", MODULE_NAME_STR, ##__VA_ARGS__);  } while (0)
-+#else
-+    #define ERROR(f_, ...) do {  } while(0)
-+#endif
-+#if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_WARN
-+    #define WARN(f_, ...) do { PRINTF("\033[33;4m[WRN]:\033[m%s"f_"\r\n", MODULE_NAME_STR, ##__VA_ARGS__);  } while (0)
-+#else
-+    #define WARN(f_, ...) do {  } while(0)
-+#endif
-+#if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_INFO
-+    #define INFO(f_, ...) do { PRINTF("[INF]:%s"f_"\r\n", MODULE_NAME_STR, ##__VA_ARGS__);  } while (0)
-+#else
-+    #define INFO(f_, ...) do {  } while(0)
-+#endif
-+#if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_DEBUG
-+    #define VERBOSE(f_, ...) do { PRINTF("[DBG]:%s" f_"\r\n",MODULE_NAME_STR, ##__VA_ARGS__);  } while (0)
-+    #define DEBUG(f_, ...) do { PRINTF("[DBG]:%s" f_"\r\n",MODULE_NAME_STR, ##__VA_ARGS__);  } while (0)
-+#else
-+    #define VERBOSE(f_, ...) do {  } while(0)
-+    #define DEBUG(f_, ...) do {  } while(0)
-+#endif
-+
-+#endif /* __PLATFORM_LOG_H__ */
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-corstone1000-Reorganize-bl2-files.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-corstone1000-Reorganize-bl2-files.patch
new file mode 100644
index 0000000..1e56e36
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-corstone1000-Reorganize-bl2-files.patch
@@ -0,0 +1,61 @@
+From 535d366137d2dd0804d3e67ada78151e0e318eeb Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <emekcan.aras@arm.com>
+Date: Fri, 3 Mar 2023 12:25:04 +0000
+Subject: [PATCH 3/6] Platform: corstone1000: Reorganize bl2 files
+
+From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+
+To be consistnant, organize bl2 files same as bl1 files
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20555]
+Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+Change-Id: I3332f4dbbde1c5f2cde5a187b038dc3430b9503f
+---
+ platform/ext/target/arm/corstone1000/CMakeLists.txt         | 6 +++---
+ .../ext/target/arm/corstone1000/{ => bl2}/boot_hal_bl2.c    | 0
+ .../corstone1000/{bl2_flash_map.c => bl2/flash_map_bl2.c}   | 0
+ .../{bl2_security_cnt.c => bl2/security_cnt_bl2.c}          | 0
+ 4 files changed, 3 insertions(+), 3 deletions(-)
+ rename platform/ext/target/arm/corstone1000/{ => bl2}/boot_hal_bl2.c (100%)
+ rename platform/ext/target/arm/corstone1000/{bl2_flash_map.c => bl2/flash_map_bl2.c} (100%)
+ rename platform/ext/target/arm/corstone1000/{bl2_security_cnt.c => bl2/security_cnt_bl2.c} (100%)
+
+diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
+index a4fe28c08..3d4c787a6 100644
+--- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
++++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
+@@ -196,7 +196,7 @@ target_sources(platform_bl2
+         Native_Driver/arm_watchdog_drv.c
+         fip_parser/fip_parser.c
+         fw_update_agent/fwu_agent.c
+-        bl2_security_cnt.c
++        bl2/security_cnt_bl2.c
+         $<$<NOT:$<BOOL:${PLATFORM_DEFAULT_OTP}>>:${PLATFORM_DIR}/ext/accelerator/cc312/otp_cc312.c>
+         io/io_block.c
+         io/io_flash.c
+@@ -235,8 +235,8 @@ target_compile_definitions(platform_bl2
+ # platform_init/quit* apis symbol collision in bl1.
+ target_sources(bl2
+     PRIVATE
+-        bl2_flash_map.c
+-        boot_hal_bl2.c
++        bl2/flash_map_bl2.c
++        bl2/boot_hal_bl2.c
+ )
+ 
+ target_link_libraries(bl2
+diff --git a/platform/ext/target/arm/corstone1000/boot_hal_bl2.c b/platform/ext/target/arm/corstone1000/bl2/boot_hal_bl2.c
+similarity index 100%
+rename from platform/ext/target/arm/corstone1000/boot_hal_bl2.c
+rename to platform/ext/target/arm/corstone1000/bl2/boot_hal_bl2.c
+diff --git a/platform/ext/target/arm/corstone1000/bl2_flash_map.c b/platform/ext/target/arm/corstone1000/bl2/flash_map_bl2.c
+similarity index 100%
+rename from platform/ext/target/arm/corstone1000/bl2_flash_map.c
+rename to platform/ext/target/arm/corstone1000/bl2/flash_map_bl2.c
+diff --git a/platform/ext/target/arm/corstone1000/bl2_security_cnt.c b/platform/ext/target/arm/corstone1000/bl2/security_cnt_bl2.c
+similarity index 100%
+rename from platform/ext/target/arm/corstone1000/bl2_security_cnt.c
+rename to platform/ext/target/arm/corstone1000/bl2/security_cnt_bl2.c
+-- 
+2.17.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0007-Platform-corstone1000-Fix-linker-script-comment.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0007-Platform-corstone1000-Fix-linker-script-comment.patch
new file mode 100644
index 0000000..62a9d85
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0007-Platform-corstone1000-Fix-linker-script-comment.patch
@@ -0,0 +1,47 @@
+From 25b131f0d082b32b262c4e788f3bc95b7761bef7 Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <emekcan.aras@arm.com>
+Date: Mon, 13 Mar 2023 00:16:49 +0000
+Subject: [PATCH 4/6] Platform: corstone1000: Fix linker script comment
+
+From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+
+Comment explaining the necessary defines to copy multiple ROM to RAM
+sections, was refering to the wrong file.
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20556]
+Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+Change-Id: I3e5f806330481daa24c5456d9c956e0cf589afee
+---
+ .../arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld    | 2 +-
+ .../arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld    | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld
+index d4eca2841..8ee334c6b 100644
+--- a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld
++++ b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld
+@@ -89,7 +89,7 @@ SECTIONS
+ 
+     /* To copy multiple ROM to RAM sections,
+      * define etext2/data2_start/data2_end and
+-     * define __STARTUP_COPY_MULTIPLE in startup_corstone700_bl2.S */
++     * define __STARTUP_COPY_MULTIPLE in startup_corstone1000.c */
+     .copy.table :
+     {
+         . = ALIGN(4);
+diff --git a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld
+index 6cd806378..e1e4f2966 100644
+--- a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld
++++ b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld
+@@ -84,7 +84,7 @@ SECTIONS
+ 
+     /* To copy multiple ROM to RAM sections,
+      * define etext2/data2_start/data2_end and
+-     * define __STARTUP_COPY_MULTIPLE in startup_corstone700_bl2.S */
++     * define __STARTUP_COPY_MULTIPLE in startup_corstone1000.c */
+     .copy.table :
+     {
+         . = ALIGN(4);
+-- 
+2.17.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0007-Platform-corstone1000-Introduce-GPT-parser.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0007-Platform-corstone1000-Introduce-GPT-parser.patch
deleted file mode 100644
index 418c533..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0007-Platform-corstone1000-Introduce-GPT-parser.patch
+++ /dev/null
@@ -1,735 +0,0 @@
-From 1fdc3000f1ab6f9c1bb792cb8baff16a7517c03a Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Thu, 22 Dec 2022 14:27:41 +0000
-Subject: [PATCH 7/10] Platform:corstone1000: Introduce GPT parser
-
-Adding GPT parser
-Side changes required:
-Includes the implementation of the `plat_get_image_source` function
-in the platform.c file.
-
-The GPT parser requires the function. Given the image id, it should
-return handle to the IO device contains the image and image
-specification that allows IO storage access to the image.
-
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- .../target/arm/corstone1000/partition/efi.h   |  36 ++
- .../target/arm/corstone1000/partition/gpt.c   |  58 ++++
- .../target/arm/corstone1000/partition/gpt.h   |  51 +++
- .../target/arm/corstone1000/partition/mbr.h   |  29 ++
- .../arm/corstone1000/partition/partition.c    | 310 ++++++++++++++++++
- .../arm/corstone1000/partition/partition.h    |  47 +++
- .../target/arm/corstone1000/partition/uuid.h  |  76 +++++
- .../ext/target/arm/corstone1000/platform.c    |  20 ++
- .../ext/target/arm/corstone1000/platform.h    |  14 +
- 9 files changed, 641 insertions(+)
- create mode 100644 platform/ext/target/arm/corstone1000/partition/efi.h
- create mode 100644 platform/ext/target/arm/corstone1000/partition/gpt.c
- create mode 100644 platform/ext/target/arm/corstone1000/partition/gpt.h
- create mode 100644 platform/ext/target/arm/corstone1000/partition/mbr.h
- create mode 100644 platform/ext/target/arm/corstone1000/partition/partition.c
- create mode 100644 platform/ext/target/arm/corstone1000/partition/partition.h
- create mode 100644 platform/ext/target/arm/corstone1000/partition/uuid.h
- create mode 100644 platform/ext/target/arm/corstone1000/platform.c
- create mode 100644 platform/ext/target/arm/corstone1000/platform.h
-
-diff --git a/platform/ext/target/arm/corstone1000/partition/efi.h b/platform/ext/target/arm/corstone1000/partition/efi.h
-new file mode 100644
-index 0000000000..f66daffb32
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/partition/efi.h
-@@ -0,0 +1,36 @@
-+/*
-+ * Copyright (c) 2021, Linaro Limited
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ *
-+ */
-+
-+#ifndef DRIVERS_PARTITION_EFI_H
-+#define DRIVERS_PARTITION_EFI_H
-+
-+#include <string.h>
-+
-+#include "uuid.h"
-+
-+#define EFI_NAMELEN 36
-+
-+static inline int guidcmp(const void *g1, const void *g2) {
-+    return memcmp(g1, g2, sizeof(struct efi_guid));
-+}
-+
-+static inline void *guidcpy(void *dst, const void *src) {
-+    return memcpy(dst, src, sizeof(struct efi_guid));
-+}
-+
-+#define EFI_GUID(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7)  \
-+    {                                                      \
-+        (a) & 0xffffffff, (b)&0xffff, (c)&0xffff, {        \
-+            (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) \
-+        }                                                  \
-+    }
-+
-+#define NULL_GUID                                                            \
-+    EFI_GUID(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
-+             0x00, 0x00)
-+
-+#endif /* DRIVERS_PARTITION_EFI_H */
-diff --git a/platform/ext/target/arm/corstone1000/partition/gpt.c b/platform/ext/target/arm/corstone1000/partition/gpt.c
-new file mode 100644
-index 0000000000..8549785e3b
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/partition/gpt.c
-@@ -0,0 +1,58 @@
-+/*
-+ * Copyright (c) 2016-2022, ARM Limited and Contributors. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ */
-+
-+#include "gpt.h"
-+
-+#include <assert.h>
-+#include <errno.h>
-+#include <string.h>
-+
-+#include "efi.h"
-+
-+static int unicode_to_ascii(unsigned short *str_in, unsigned char *str_out) {
-+    uint8_t *name;
-+    int i;
-+
-+    assert((str_in != NULL) && (str_out != NULL));
-+
-+    name = (uint8_t *)str_in;
-+
-+    assert(name[0] != '\0');
-+
-+    /* check whether the unicode string is valid */
-+    for (i = 1; i < (EFI_NAMELEN << 1); i += 2) {
-+        if (name[i] != '\0') return -EINVAL;
-+    }
-+    /* convert the unicode string to ascii string */
-+    for (i = 0; i < (EFI_NAMELEN << 1); i += 2) {
-+        str_out[i >> 1] = name[i];
-+        if (name[i] == '\0') break;
-+    }
-+    return 0;
-+}
-+
-+int parse_gpt_entry(gpt_entry_t *gpt_entry, partition_entry_t *entry) {
-+    int result;
-+
-+    assert((gpt_entry != NULL) && (entry != NULL));
-+
-+    if ((gpt_entry->first_lba == 0) && (gpt_entry->last_lba == 0)) {
-+        return -EINVAL;
-+    }
-+
-+    memset(entry, 0, sizeof(partition_entry_t));
-+    result = unicode_to_ascii(gpt_entry->name, (uint8_t *)entry->name);
-+    if (result != 0) {
-+        return result;
-+    }
-+    entry->start = (uint64_t)gpt_entry->first_lba * PLAT_PARTITION_BLOCK_SIZE;
-+    entry->length = (uint64_t)(gpt_entry->last_lba - gpt_entry->first_lba + 1) *
-+                    PLAT_PARTITION_BLOCK_SIZE;
-+    guidcpy(&entry->part_guid, &gpt_entry->unique_uuid);
-+    guidcpy(&entry->type_guid, &gpt_entry->type_uuid);
-+
-+    return 0;
-+}
-diff --git a/platform/ext/target/arm/corstone1000/partition/gpt.h b/platform/ext/target/arm/corstone1000/partition/gpt.h
-new file mode 100644
-index 0000000000..b528fc05c0
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/partition/gpt.h
-@@ -0,0 +1,51 @@
-+/*
-+ * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ */
-+
-+#ifndef GPT_H
-+#define GPT_H
-+
-+#include "efi.h"
-+#include "partition.h"
-+#include "uuid.h"
-+
-+#define PARTITION_TYPE_GPT 0xee
-+#define GPT_HEADER_OFFSET PLAT_PARTITION_BLOCK_SIZE
-+#define GPT_ENTRY_OFFSET (GPT_HEADER_OFFSET + PLAT_PARTITION_BLOCK_SIZE)
-+
-+#define GPT_SIGNATURE "EFI PART"
-+
-+typedef struct gpt_entry {
-+    struct efi_guid type_uuid;
-+    struct efi_guid unique_uuid;
-+    unsigned long long first_lba;
-+    unsigned long long last_lba;
-+    unsigned long long attr;
-+    unsigned short name[EFI_NAMELEN];
-+} gpt_entry_t;
-+
-+typedef struct gpt_header {
-+    unsigned char signature[8];
-+    unsigned int revision;
-+    unsigned int size;
-+    unsigned int header_crc;
-+    unsigned int reserved;
-+    unsigned long long current_lba;
-+    unsigned long long backup_lba;
-+    unsigned long long first_lba;
-+    unsigned long long last_lba;
-+    struct efi_guid disk_uuid;
-+    /* starting LBA of array of partition entries */
-+    unsigned long long part_lba;
-+    /* number of partition entries in array */
-+    unsigned int list_num;
-+    /* size of a single partition entry (usually 128) */
-+    unsigned int part_size;
-+    unsigned int part_crc;
-+} gpt_header_t;
-+
-+int parse_gpt_entry(gpt_entry_t *gpt_entry, partition_entry_t *entry);
-+
-+#endif /* GPT_H */
-diff --git a/platform/ext/target/arm/corstone1000/partition/mbr.h b/platform/ext/target/arm/corstone1000/partition/mbr.h
-new file mode 100644
-index 0000000000..e77f367016
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/partition/mbr.h
-@@ -0,0 +1,29 @@
-+/*
-+ * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ */
-+
-+#ifndef MBR_H
-+#define MBR_H
-+
-+#define MBR_OFFSET 0
-+
-+#define MBR_PRIMARY_ENTRY_OFFSET 0x1be
-+#define MBR_PRIMARY_ENTRY_SIZE 0x10
-+#define MBR_PRIMARY_ENTRY_NUMBER 4
-+#define MBR_CHS_ADDRESS_LEN 3
-+
-+#define MBR_SIGNATURE_FIRST 0x55
-+#define MBR_SIGNATURE_SECOND 0xAA
-+
-+typedef struct mbr_entry {
-+    unsigned char status;
-+    unsigned char first_sector[MBR_CHS_ADDRESS_LEN];
-+    unsigned char type;
-+    unsigned char last_sector[MBR_CHS_ADDRESS_LEN];
-+    unsigned int first_lba;
-+    unsigned int sector_nums;
-+} mbr_entry_t;
-+
-+#endif /* MBR_H */
-diff --git a/platform/ext/target/arm/corstone1000/partition/partition.c b/platform/ext/target/arm/corstone1000/partition/partition.c
-new file mode 100644
-index 0000000000..afc6aa1c5c
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/partition/partition.c
-@@ -0,0 +1,310 @@
-+/*
-+ * Copyright (c) 2016-2022, ARM Limited and Contributors. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ */
-+
-+#include "partition.h"
-+
-+#include <assert.h>
-+#include <errno.h>
-+#include <inttypes.h>
-+#include <stdio.h>
-+#include <string.h>
-+
-+#include "efi.h"
-+#include "gpt.h"
-+#include "mbr.h"
-+
-+#include "io_storage.h"
-+#include "platform.h"
-+#include "soft_crc.h"
-+
-+#define PLAT_LOG_MODULE_NAME "partition"
-+#include "platform_log.h"
-+
-+static uint8_t mbr_sector[PLAT_PARTITION_BLOCK_SIZE];
-+static partition_entry_list_t list;
-+
-+#if LOG_LEVEL >= LOG_LEVEL_DEBUG
-+static void dump_entries(int num) {
-+    char name[EFI_NAMELEN];
-+    int i, j, len;
-+
-+    VERBOSE("Partition table with %d entries:", num);
-+    for (i = 0; i < num; i++) {
-+        len = snprintf(name, EFI_NAMELEN, "%s", list.list[i].name);
-+        for (j = 0; j < EFI_NAMELEN - len - 1; j++) {
-+            name[len + j] = ' ';
-+        }
-+        name[EFI_NAMELEN - 1] = '\0';
-+        VERBOSE("%d: %s %x%x %d", i + 1, name,
-+                (uint32_t)(list.list[i].start >> 32),
-+                (uint32_t)list.list[i].start,
-+                (uint32_t)(list.list[i].start + list.list[i].length - 4));
-+    }
-+}
-+#else
-+#define dump_entries(num) ((void)num)
-+#endif
-+
-+/*
-+ * Load the first sector that carries MBR header.
-+ * The MBR boot signature should be always valid whether it's MBR or GPT.
-+ */
-+static int load_mbr_header(uintptr_t image_handle, mbr_entry_t *mbr_entry) {
-+    size_t bytes_read;
-+    uintptr_t offset;
-+    int result;
-+
-+    assert(mbr_entry != NULL);
-+    /* MBR partition table is in LBA0. */
-+    result = io_seek(image_handle, IO_SEEK_SET, MBR_OFFSET);
-+    if (result != 0) {
-+        WARN("Failed to seek (%i)\n", result);
-+        return result;
-+    }
-+    result = io_read(image_handle, (uintptr_t)&mbr_sector,
-+                     PLAT_PARTITION_BLOCK_SIZE, &bytes_read);
-+    if (result != 0) {
-+        WARN("Failed to read data (%i)\n", result);
-+        return result;
-+    }
-+
-+    /* Check MBR boot signature. */
-+    if ((mbr_sector[LEGACY_PARTITION_BLOCK_SIZE - 2] != MBR_SIGNATURE_FIRST) ||
-+        (mbr_sector[LEGACY_PARTITION_BLOCK_SIZE - 1] != MBR_SIGNATURE_SECOND)) {
-+        ERROR("MBR signature isn't correct");
-+        return -ENOENT;
-+    }
-+    offset = (uintptr_t)&mbr_sector + MBR_PRIMARY_ENTRY_OFFSET;
-+    memcpy(mbr_entry, (void *)offset, sizeof(mbr_entry_t));
-+    return 0;
-+}
-+
-+/*
-+ * Load GPT header and check the GPT signature and header CRC.
-+ * If partition numbers could be found, check & update it.
-+ */
-+static int load_gpt_header(uintptr_t image_handle) {
-+    gpt_header_t header;
-+    size_t bytes_read;
-+    int result;
-+    uint32_t header_crc, calc_crc;
-+
-+    result = io_seek(image_handle, IO_SEEK_SET, GPT_HEADER_OFFSET);
-+    if (result != 0) {
-+        return result;
-+    }
-+    result = io_read(image_handle, (uintptr_t)&header, sizeof(gpt_header_t),
-+                     &bytes_read);
-+    if ((result != 0) || (sizeof(gpt_header_t) != bytes_read)) {
-+        return result;
-+    }
-+    if (memcmp(header.signature, GPT_SIGNATURE, sizeof(header.signature)) !=
-+        0) {
-+        return -EINVAL;
-+    }
-+
-+    /*
-+     * UEFI Spec 2.8 March 2019 Page 119: HeaderCRC32 value is
-+     * computed by setting this field to 0, and computing the
-+     * 32-bit CRC for HeaderSize bytes.
-+     */
-+    header_crc = header.header_crc;
-+    header.header_crc = 0U;
-+
-+    calc_crc = crc32((uint8_t *)&header, DEFAULT_GPT_HEADER_SIZE);
-+    if (header_crc != calc_crc) {
-+        ERROR("Invalid GPT Header CRC: Expected 0x%x but got 0x%x.\n",
-+              header_crc, calc_crc);
-+        return -EINVAL;
-+    }
-+
-+    header.header_crc = header_crc;
-+
-+    /* partition numbers can't exceed PLAT_PARTITION_MAX_ENTRIES */
-+    list.entry_count = header.list_num;
-+    if (list.entry_count > PLAT_PARTITION_MAX_ENTRIES) {
-+        list.entry_count = PLAT_PARTITION_MAX_ENTRIES;
-+    }
-+    return 0;
-+}
-+
-+static int load_mbr_entry(uintptr_t image_handle, mbr_entry_t *mbr_entry,
-+                          int part_number) {
-+    size_t bytes_read;
-+    uintptr_t offset;
-+    int result;
-+
-+    assert(mbr_entry != NULL);
-+    /* MBR partition table is in LBA0. */
-+    result = io_seek(image_handle, IO_SEEK_SET, MBR_OFFSET);
-+    if (result != 0) {
-+        WARN("Failed to seek (%i)\n", result);
-+        return result;
-+    }
-+    result = io_read(image_handle, (uintptr_t)&mbr_sector,
-+                     PLAT_PARTITION_BLOCK_SIZE, &bytes_read);
-+    if (result != 0) {
-+        WARN("Failed to read data (%i)\n", result);
-+        return result;
-+    }
-+
-+    /* Check MBR boot signature. */
-+    if ((mbr_sector[LEGACY_PARTITION_BLOCK_SIZE - 2] != MBR_SIGNATURE_FIRST) ||
-+        (mbr_sector[LEGACY_PARTITION_BLOCK_SIZE - 1] != MBR_SIGNATURE_SECOND)) {
-+        return -ENOENT;
-+    }
-+    offset = (uintptr_t)&mbr_sector + MBR_PRIMARY_ENTRY_OFFSET +
-+             MBR_PRIMARY_ENTRY_SIZE * part_number;
-+    memcpy(mbr_entry, (void *)offset, sizeof(mbr_entry_t));
-+
-+    return 0;
-+}
-+
-+static int load_mbr_entries(uintptr_t image_handle) {
-+    mbr_entry_t mbr_entry;
-+    int i;
-+
-+    list.entry_count = MBR_PRIMARY_ENTRY_NUMBER;
-+
-+    for (i = 0; i < list.entry_count; i++) {
-+        load_mbr_entry(image_handle, &mbr_entry, i);
-+        list.list[i].start = mbr_entry.first_lba * 512;
-+        list.list[i].length = mbr_entry.sector_nums * 512;
-+        list.list[i].name[0] = mbr_entry.type;
-+    }
-+
-+    return 0;
-+}
-+
-+static int load_gpt_entry(uintptr_t image_handle, gpt_entry_t *entry) {
-+    size_t bytes_read;
-+    int result;
-+
-+    assert(entry != NULL);
-+    result = io_read(image_handle, (uintptr_t)entry, sizeof(gpt_entry_t),
-+                     &bytes_read);
-+    if (sizeof(gpt_entry_t) != bytes_read) return -EINVAL;
-+    return result;
-+}
-+
-+static int verify_partition_gpt(uintptr_t image_handle) {
-+    gpt_entry_t entry;
-+    int result, i;
-+
-+    for (i = 0; i < list.entry_count; i++) {
-+        result = load_gpt_entry(image_handle, &entry);
-+        assert(result == 0);
-+        if (result != 0) {
-+            break;
-+        }
-+        result = parse_gpt_entry(&entry, &list.list[i]);
-+        if (result != 0) {
-+            break;
-+        }
-+    }
-+    if (i == 0) {
-+        return -EINVAL;
-+    }
-+    /*
-+     * Only records the valid partition number that is loaded from
-+     * partition table.
-+     */
-+    list.entry_count = i;
-+    dump_entries(list.entry_count);
-+
-+    return 0;
-+}
-+
-+int load_partition_table(unsigned int image_id) {
-+    uintptr_t dev_handle, image_handle, image_spec = 0;
-+    mbr_entry_t mbr_entry;
-+    int result;
-+
-+    result = plat_get_image_source(image_id, &dev_handle, &image_spec);
-+    if (result != 0) {
-+        WARN("Failed to obtain reference to image id=%u (%i)\n", image_id,
-+             result);
-+        return result;
-+    }
-+
-+    result = io_open(dev_handle, image_spec, &image_handle);
-+    if (result != 0) {
-+        WARN("Failed to open image id=%u (%i)\n", image_id, result);
-+        return result;
-+    }
-+
-+    result = load_mbr_header(image_handle, &mbr_entry);
-+    if (result != 0) {
-+        ERROR("Loading mbr header failed with image id=%u (%i)\n", image_id,
-+              result);
-+        return result;
-+    }
-+    if (mbr_entry.type == PARTITION_TYPE_GPT) {
-+        INFO("Loading gpt header");
-+        result = load_gpt_header(image_handle);
-+        assert(result == 0);
-+        if (result != 0) {
-+            ERROR("Failed load gpt header! %i", result);
-+            goto load_partition_table_exit;
-+        }
-+        result = io_seek(image_handle, IO_SEEK_SET, GPT_ENTRY_OFFSET);
-+        assert(result == 0);
-+        if (result != 0) {
-+            ERROR("Failed seek gpt header! %i", result);
-+            goto load_partition_table_exit;
-+        }
-+        result = verify_partition_gpt(image_handle);
-+        if (result != 0) {
-+            ERROR("Failed verify gpt partition %i", result);
-+            goto load_partition_table_exit;
-+        }
-+    } else {
-+        result = load_mbr_entries(image_handle);
-+    }
-+
-+load_partition_table_exit:
-+    io_close(image_handle);
-+    return result;
-+}
-+
-+const partition_entry_t *get_partition_entry(const char *name) {
-+    int i;
-+
-+    for (i = 0; i < list.entry_count; i++) {
-+        if (strcmp(name, list.list[i].name) == 0) {
-+            return &list.list[i];
-+        }
-+    }
-+    return NULL;
-+}
-+
-+const partition_entry_t *get_partition_entry_by_type(const uuid_t *type_uuid) {
-+    int i;
-+
-+    for (i = 0; i < list.entry_count; i++) {
-+        if (guidcmp(type_uuid, &list.list[i].type_guid) == 0) {
-+            return &list.list[i];
-+        }
-+    }
-+
-+    return NULL;
-+}
-+
-+const partition_entry_t *get_partition_entry_by_uuid(const uuid_t *part_uuid) {
-+    int i;
-+
-+    for (i = 0; i < list.entry_count; i++) {
-+        if (guidcmp(part_uuid, &list.list[i].part_guid) == 0) {
-+            return &list.list[i];
-+        }
-+    }
-+
-+    return NULL;
-+}
-+
-+const partition_entry_list_t *get_partition_entry_list(void) { return &list; }
-+
-+void partition_init(unsigned int image_id) { load_partition_table(image_id); }
-diff --git a/platform/ext/target/arm/corstone1000/partition/partition.h b/platform/ext/target/arm/corstone1000/partition/partition.h
-new file mode 100644
-index 0000000000..54af47aca4
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/partition/partition.h
-@@ -0,0 +1,47 @@
-+/*
-+ * Copyright (c) 2016-2022, ARM Limited and Contributors. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ */
-+
-+#ifndef PARTITION_H
-+#define PARTITION_H
-+
-+#include <stdint.h>
-+
-+#include "efi.h"
-+#include "uuid.h"
-+
-+#if !PLAT_PARTITION_MAX_ENTRIES
-+#define PLAT_PARTITION_MAX_ENTRIES 16
-+#endif /* PLAT_PARTITION_MAX_ENTRIES */
-+
-+#if !PLAT_PARTITION_BLOCK_SIZE
-+#define PLAT_PARTITION_BLOCK_SIZE 512
-+#endif /* PLAT_PARTITION_BLOCK_SIZE */
-+
-+#define LEGACY_PARTITION_BLOCK_SIZE 512
-+
-+#define DEFAULT_GPT_HEADER_SIZE 92
-+
-+typedef struct partition_entry {
-+    uint64_t start;
-+    uint64_t length;
-+    char name[EFI_NAMELEN];
-+    struct efi_guid part_guid;
-+    struct efi_guid type_guid;
-+} partition_entry_t;
-+
-+typedef struct partition_entry_list {
-+    partition_entry_t list[PLAT_PARTITION_MAX_ENTRIES];
-+    int entry_count;
-+} partition_entry_list_t;
-+
-+int load_partition_table(unsigned int image_id);
-+const partition_entry_t *get_partition_entry(const char *name);
-+const partition_entry_t *get_partition_entry_by_type(const uuid_t *type_guid);
-+const partition_entry_t *get_partition_entry_by_uuid(const uuid_t *part_uuid);
-+const partition_entry_list_t *get_partition_entry_list(void);
-+void partition_init(unsigned int image_id);
-+
-+#endif /* PARTITION_H */
-diff --git a/platform/ext/target/arm/corstone1000/partition/uuid.h b/platform/ext/target/arm/corstone1000/partition/uuid.h
-new file mode 100644
-index 0000000000..06fec5a3c0
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/partition/uuid.h
-@@ -0,0 +1,76 @@
-+/*-
-+ * Copyright (c) 2002 Marcel Moolenaar
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in the
-+ *    documentation and/or other materials provided with the distribution.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ * $FreeBSD$
-+ */
-+
-+/*
-+ * Portions copyright (c) 2014-2020, ARM Limited and Contributors.
-+ * All rights reserved.
-+ */
-+
-+#ifndef UUID_H
-+#define UUID_H
-+
-+#include <stdint.h>
-+
-+/* Length of a node address (an IEEE 802 address). */
-+#define _UUID_NODE_LEN 6
-+
-+/* Length of UUID string including dashes. */
-+#define _UUID_STR_LEN 36
-+
-+/*
-+ * See also:
-+ *      http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt
-+ *      http://www.opengroup.org/onlinepubs/009629399/apdxa.htm
-+ *
-+ * A DCE 1.1 compatible source representation of UUIDs.
-+ */
-+struct uuid {
-+    uint8_t time_low[4];
-+    uint8_t time_mid[2];
-+    uint8_t time_hi_and_version[2];
-+    uint8_t clock_seq_hi_and_reserved;
-+    uint8_t clock_seq_low;
-+    uint8_t node[_UUID_NODE_LEN];
-+};
-+
-+struct efi_guid {
-+    uint32_t time_low;
-+    uint16_t time_mid;
-+    uint16_t time_hi_and_version;
-+    uint8_t clock_seq_and_node[8];
-+};
-+
-+union uuid_helper_t {
-+    struct uuid uuid_struct;
-+    struct efi_guid efi_guid;
-+};
-+
-+/* XXX namespace pollution? */
-+typedef struct uuid uuid_t;
-+
-+#endif /* UUID_H */
-diff --git a/platform/ext/target/arm/corstone1000/platform.c b/platform/ext/target/arm/corstone1000/platform.c
-new file mode 100644
-index 0000000000..908b66b7ac
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/platform.c
-@@ -0,0 +1,20 @@
-+/*
-+ * Copyright (c) 2023, Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ *
-+ */
-+
-+#include "platform.h"
-+
-+#include <stdint.h>
-+
-+/* Return an IO device handle and specification which can be used to access
-+ * an image. This has to be implemented for the GPT parser. */
-+int32_t plat_get_image_source(unsigned int image_id, uintptr_t *dev_handle,
-+                              uintptr_t *image_spec) {
-+    (void)image_id;
-+    *dev_handle = NULL;
-+    *image_spec = NULL;
-+    return 0;
-+}
-diff --git a/platform/ext/target/arm/corstone1000/platform.h b/platform/ext/target/arm/corstone1000/platform.h
-new file mode 100644
-index 0000000000..250f9cd9f5
---- /dev/null
-+++ b/platform/ext/target/arm/corstone1000/platform.h
-@@ -0,0 +1,14 @@
-+/*
-+ * Copyright (c) 2023, Arm Limited. All rights reserved.
-+ *
-+ * SPDX-License-Identifier: BSD-3-Clause
-+ *
-+ */
-+
-+#ifndef __PLATFORM_H__
-+#define __PLATFORM_H__
-+
-+int32_t plat_get_image_source(unsigned int image_id, uintptr_t *dev_handle,
-+                              uintptr_t *image_spec);
-+
-+#endif /*__PLATFORM_H__*/
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0008-Platform-corstone1000-BL1-changes-to-adapt-to-new-fl.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0008-Platform-corstone1000-BL1-changes-to-adapt-to-new-fl.patch
deleted file mode 100644
index d9143a0..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0008-Platform-corstone1000-BL1-changes-to-adapt-to-new-fl.patch
+++ /dev/null
@@ -1,337 +0,0 @@
-From f70bbd0d8efefcc69916fc0393bc413fb39924af Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Tue, 10 Jan 2023 22:33:26 +0000
-Subject: [PATCH 8/10] Platform: corstone1000: BL1 changes to adapt to new flash
- layout
-
-The commit prepares BL1 to adapt to new GPT-based flash layout.
-
-BL1 does not incorporate a GPT parser and still uses a static
-configuration to understand the flash.
-
-The flash_layout.h is also modified/marked in a way to start
-the process of its simplification.
-
-Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- .../arm/corstone1000/bl1/bl1_boot_hal.c       | 10 +--
- .../arm/corstone1000/bl1/bl1_flash_map.c      | 17 ++--
- .../target/arm/corstone1000/bl2_flash_map.c   |  8 +-
- .../corstone1000/fw_update_agent/fwu_agent.c  | 16 ++--
- .../corstone1000/fw_update_agent/fwu_agent.h  |  4 +-
- .../arm/corstone1000/partition/flash_layout.h | 84 +++++++++----------
- 6 files changed, 66 insertions(+), 73 deletions(-)
-
-diff --git a/platform/ext/target/arm/corstone1000/bl1/bl1_boot_hal.c b/platform/ext/target/arm/corstone1000/bl1/bl1_boot_hal.c
-index 9caa26b26c..a5fe0f7da1 100644
---- a/platform/ext/target/arm/corstone1000/bl1/bl1_boot_hal.c
-+++ b/platform/ext/target/arm/corstone1000/bl1/bl1_boot_hal.c
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2019-2022, Arm Limited. All rights reserved.
-+ * Copyright (c) 2019-2023, Arm Limited. All rights reserved.
-  *
-  * SPDX-License-Identifier: BSD-3-Clause
-  *
-@@ -601,12 +601,12 @@ __attribute__((naked)) void boot_clear_bl2_ram_area(void)
-     );
- }
- 
--extern void add_bank_offset_to_image_offset(uint32_t bank_offset);
-+extern void set_flash_area_image_offset(uint32_t offset);
- 
- int32_t boot_platform_init(void)
- {
-     int32_t result;
--    uint32_t bank_offset;
-+    uint32_t image_offset;
- 
-     result = corstone1000_watchdog_init();
-     if (result != ARM_DRIVER_OK) {
-@@ -653,8 +653,8 @@ int32_t boot_platform_init(void)
-         }
-     }
- 
--    bl1_get_boot_bank(&bank_offset);
--    add_bank_offset_to_image_offset(bank_offset);
-+    bl1_get_active_bl2_image(&image_offset);
-+    set_flash_area_image_offset(image_offset);
- 
-     return 0;
- }
-diff --git a/platform/ext/target/arm/corstone1000/bl1/bl1_flash_map.c b/platform/ext/target/arm/corstone1000/bl1/bl1_flash_map.c
-index c8a1f13319..0e615da254 100644
---- a/platform/ext/target/arm/corstone1000/bl1/bl1_flash_map.c
-+++ b/platform/ext/target/arm/corstone1000/bl1/bl1_flash_map.c
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2019-2021, Arm Limited. All rights reserved.
-+ * Copyright (c) 2019-2021, 2023 Arm Limited. All rights reserved.
-  *
-  * SPDX-License-Identifier: BSD-3-Clause
-  *
-@@ -22,23 +22,22 @@ struct flash_area flash_map[] = {
-         .fa_id = FLASH_AREA_8_ID,
-         .fa_device_id = FLASH_DEVICE_ID,
-         .fa_driver = &FLASH_DEV_NAME,
--        .fa_off = FLASH_AREA_8_OFFSET,
-+        .fa_off = FLASH_INVALID_OFFSET,
-         .fa_size = FLASH_AREA_8_SIZE,
-     },
-+    /* Secondary slot is not supported */
-     {
--        .fa_id = FLASH_AREA_9_ID,
-+        .fa_id = FLASH_INVALID_ID,
-         .fa_device_id = FLASH_DEVICE_ID,
-         .fa_driver = &FLASH_DEV_NAME,
--        .fa_off = FLASH_AREA_9_OFFSET,
--        .fa_size = FLASH_AREA_9_SIZE,
-+        .fa_off = FLASH_INVALID_OFFSET,
-+        .fa_size = FLASH_INVALID_SIZE,
-     },
- };
- 
- const int flash_map_entry_num = ARRAY_SIZE(flash_map);
- 
--void add_bank_offset_to_image_offset(uint32_t bank_offset)
-+void set_flash_area_image_offset(uint32_t offset)
- {
--    for (int i = 0; i < flash_map_entry_num; i++) {
--        flash_map[i].fa_off += bank_offset;
--    }
-+    flash_map[0].fa_off = offset;
- }
-diff --git a/platform/ext/target/arm/corstone1000/bl2_flash_map.c b/platform/ext/target/arm/corstone1000/bl2_flash_map.c
-index 0a6a592d94..f512045a44 100644
---- a/platform/ext/target/arm/corstone1000/bl2_flash_map.c
-+++ b/platform/ext/target/arm/corstone1000/bl2_flash_map.c
-@@ -28,15 +28,15 @@ struct flash_area flash_map[] = {
-         .fa_id = FLASH_AREA_0_ID,
-         .fa_device_id = FLASH_DEVICE_ID,
-         .fa_driver = &FLASH_DEV_NAME,
--        .fa_off = FLASH_AREA_0_OFFSET,
--        .fa_size = FLASH_AREA_0_SIZE,
-+        .fa_off = FLASH_INVALID_OFFSET,
-+        .fa_size = FLASH_INVALID_SIZE,
-     },
-     {
-         .fa_id = FLASH_AREA_1_ID,
-         .fa_device_id = FLASH_DEVICE_ID,
-         .fa_driver = &FLASH_DEV_NAME,
--        .fa_off = FLASH_AREA_1_OFFSET,
--        .fa_size = FLASH_AREA_1_SIZE,
-+        .fa_off = FLASH_INVALID_OFFSET,
-+        .fa_size = FLASH_INVALID_SIZE,
-     },
- #ifndef TFM_S_REG_TEST
-     {
-diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-index eb17c3a377..e4f9da1ec3 100644
---- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-@@ -154,7 +154,7 @@ static enum fwu_agent_error_t private_metadata_read(
-         return FWU_AGENT_ERROR;
-     }
- 
--    ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_PRIVATE_AREA_OFFSET, p_metadata,
-+    ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET, p_metadata,
-                                           sizeof(struct fwu_private_metadata));
-     if (ret < 0 || ret != sizeof(struct fwu_private_metadata)) {
-         return FWU_AGENT_ERROR;
-@@ -178,12 +178,12 @@ static enum fwu_agent_error_t private_metadata_write(
-         return FWU_AGENT_ERROR;
-     }
- 
--    ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_PRIVATE_AREA_OFFSET);
-+    ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET);
-     if (ret != ARM_DRIVER_OK) {
-         return FWU_AGENT_ERROR;
-     }
- 
--    ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_PRIVATE_AREA_OFFSET,
-+    ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET,
-                                 p_metadata, sizeof(struct fwu_private_metadata));
-     if (ret < 0 || ret != sizeof(struct fwu_private_metadata)) {
-         return FWU_AGENT_ERROR;
-@@ -769,7 +769,7 @@ static enum fwu_agent_error_t fwu_select_previous(
- 
- }
- 
--void bl1_get_boot_bank(uint32_t *bank_offset)
-+void bl1_get_active_bl2_image(uint32_t *offset)
- {
-     struct fwu_private_metadata priv_metadata;
-     enum fwu_agent_state_t current_state;
-@@ -823,15 +823,15 @@ void bl1_get_boot_bank(uint32_t *bank_offset)
-     }
- 
-     if (boot_index == BANK_0) {
--        *bank_offset = BANK_0_PARTITION_OFFSET;
-+        *offset = SE_BL2_BANK_0_OFFSET;
-     } else if (boot_index == BANK_1) {
--        *bank_offset = BANK_1_PARTITION_OFFSET;
-+        *offset = SE_BL2_BANK_1_OFFSET;
-     } else {
-         FWU_ASSERT(0);
-     }
- 
--    FWU_LOG_MSG("%s: exit: booting from bank = %u, offset = %x\n\r", __func__,
--                        boot_index, *bank_offset);
-+    FWU_LOG_MSG("%s: exit: booting from bank = %u, offset = 0x%x\n\r", __func__,
-+                        boot_index, *offset);
- 
-     return;
- }
-diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h
-index 00a08354be..eb8320ed8a 100644
---- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h
-+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2021, Arm Limited. All rights reserved.
-+ * Copyright (c) 2021-2023, Arm Limited. All rights reserved.
-  *
-  * SPDX-License-Identifier: BSD-3-Clause
-  *
-@@ -44,7 +44,7 @@ enum fwu_agent_error_t corstone1000_fwu_flash_image(void);
-  */
- enum fwu_agent_error_t corstone1000_fwu_host_ack(void);
- 
--void bl1_get_boot_bank(uint32_t *bank_offset);
-+void bl1_get_active_bl2_image(uint32_t *bank_offset);
- void bl2_get_boot_bank(uint32_t *bank_offset);
- 
- /* When in trial state, start the timer for host to respond.
-diff --git a/platform/ext/target/arm/corstone1000/partition/flash_layout.h b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-index 5970a13c12..347c91acbb 100644
---- a/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-+++ b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2017-2022 Arm Limited. All rights reserved.
-+ * Copyright (c) 2017-2023 Arm Limited. All rights reserved.
-  *
-  * Licensed under the Apache License, Version 2.0 (the "License");
-  * you may not use this file except in compliance with the License.
-@@ -98,56 +98,56 @@
- 
- #endif
- 
--/* Flash layout (32MB) :-
-- *
-- * 1 MB     : FWU_METADATA_PARTITION_SIZE
-- * 15.5 MB  : BANK 1 PARTITION SIZE
-- * 15.5 MB  : BANK 2 PARTITION SIZE
-- *
-- */
--#define FWU_METADATA_PARTITION_SIZE     (0x100000)   /* 1MB */
--#define BANK_PARTITION_SIZE             (0xF80000)   /* 15.5 MB */
-+/* Static Configurations of the Flash */
-+#define SE_BL2_PARTITION_SIZE           (0x18800)    /* 98 KB */
-+#define SE_BL2_BANK_0_OFFSET            (0x9000)  /* 72nd LBA */
-+#define SE_BL2_BANK_1_OFFSET            (0x1002000)  /* 32784th LBA */
- 
--#define FLASH_BASE_OFFSET               (0x0)
-+/* Space in flash to store metadata and uefi variables */
-+#define FWU_METADATA_FLASH_DEV          (FLASH_DEV_NAME)
-+#define FWU_METADATA_FLASH_SECTOR_SIZE  (FLASH_SECTOR_SIZE)
- 
--/* BANK layout (15MB: BANK_PARTITION_SIZE) :-
-- *
-- * 200 KB    : SE_BL2_PARTITION_SIZE + SE_BL2_PARTITION_SIZE
-- * 752 KB    : TFM_PARTITION_SIZE + TFM_PARTITION_SIZE
-- * 2 MB      : FIP_PARTITION_SIZE
-- * 12+ MB    : KERNEL_PARTITION_SIZE
-- *
-- */
--#define SE_BL2_PARTITION_SIZE           (0x19000)    /* 100 KB */
--#define TFM_PARTITION_SIZE              (0x5E000)    /* 376 KB */
--#define FIP_PARTITION_SIZE              (0x200000)   /* 2 MB */
--#define KERNEL_PARTITION_SIZE           (0xC00000)   /* 12 MB */
-+#define FWU_METADATA_REPLICA_1_OFFSET   (0x5000)  /* 40th LBA */
-+#define FWU_METADATA_REPLICA_2_OFFSET   (FWU_METADATA_REPLICA_1_OFFSET + \
-+                                         FWU_METADATA_FLASH_SECTOR_SIZE)
- 
-+#define FWU_PRIVATE_METADATA_REPLICA_1_OFFSET   (FWU_METADATA_REPLICA_2_OFFSET + \
-+                                                 FWU_METADATA_FLASH_SECTOR_SIZE)
-+#define FWU_PRIVATE_METADATA_REPLICA_2_OFFSET   (FWU_PRIVATE_METADATA_REPLICA_1_OFFSET + \
-+                                                 FWU_METADATA_FLASH_SECTOR_SIZE)
- 
-+#define BANK_0_PARTITION_OFFSET         (SE_BL2_BANK_0_OFFSET + \
-+                                         SE_BL2_PARTITION_SIZE)
-+#define BANK_1_PARTITION_OFFSET         (SE_BL2_BANK_1_OFFSET + \
-+                                         SE_BL2_PARTITION_SIZE)
- 
-+/* BL1: mcuboot flashmap configurations */
-+#define FLASH_AREA_8_ID                 (1)
-+#define FLASH_AREA_8_SIZE               (SE_BL2_PARTITION_SIZE)
- 
--/* 1MB: space in flash to store metadata and uefi variables */
--#define FWU_METADATA_FLASH_DEV          (FLASH_DEV_NAME)
--#define FWU_METADATA_FLASH_SECTOR_SIZE  (FLASH_SECTOR_SIZE)
-+#define FLASH_INVALID_ID                (0xFF)
-+#define FLASH_INVALID_OFFSET            (0xFFFFFFFF)
-+#define FLASH_INVALID_SIZE              (0xFFFFFFFF)
- 
--#define FWU_METADATA_PARTITION_OFFSET   (FLASH_BASE_OFFSET)
--#define FWU_METADATA_AREA_SIZE          (FWU_METADATA_FLASH_SECTOR_SIZE)
--#define FWU_METADATA_REPLICA_1_OFFSET   (FLASH_BASE_OFFSET)
--#define FWU_METADATA_REPLICA_2_OFFSET   (FWU_METADATA_REPLICA_1_OFFSET + \
--                                         FWU_METADATA_AREA_SIZE)
--#define FWU_PRIVATE_AREA_SIZE           (FLASH_SECTOR_SIZE)
--#define FWU_PRIVATE_AREA_OFFSET         (FWU_METADATA_REPLICA_2_OFFSET + \
--                                         FWU_METADATA_AREA_SIZE)
-+#define BL1_FLASH_AREA_IMAGE_PRIMARY(x)     (((x) == 0) ? FLASH_AREA_8_ID : \
-+                                                          255 )
-+#define BL1_FLASH_AREA_IMAGE_SECONDARY(x)   (((x) == 0) ? FLASH_INVALID_ID : \
-+                                                          255 )
-+
-+#define BL1_FLASH_AREA_IMAGE_SCRATCH        255
- 
-+/* FWU Configurations */
- #define NR_OF_FW_BANKS                  (2)
- #define NR_OF_IMAGES_IN_FW_BANK         (4) /* Secure Enclave: BL2 and TF-M \
-                                              * Host: FIP and Kernel image
-                                              */
- 
--#define BANK_0_PARTITION_OFFSET         (FWU_METADATA_PARTITION_OFFSET + \
--                                         FWU_METADATA_PARTITION_SIZE)
--#define BANK_1_PARTITION_OFFSET         (BANK_0_PARTITION_OFFSET + \
--                                         BANK_PARTITION_SIZE)
-+/****** TODO: START : NEED SIMPLIFICATION BASED ON GPT *******************/
-+/* Bank configurations */
-+#define BANK_PARTITION_SIZE             (0xFE0000)   /* 15.875 MB */
-+#define TFM_PARTITION_SIZE              (0x5E000)    /* 376 KB */
-+#define FIP_PARTITION_SIZE              (0x200000)   /* 2 MB */
-+#define KERNEL_PARTITION_SIZE           (0xC00000)   /* 12 MB */
- 
- /************************************************************/
- /* Bank : Images flash offsets are with respect to the bank */
-@@ -170,13 +170,6 @@
- #define BL2_IMAGE_OFFSET                (0x0)
- #define BL2_IMAGE_MAX_SIZE              (SE_BL2_PARTITION_SIZE)
- 
--#define BL1_FLASH_AREA_IMAGE_PRIMARY(x)     (((x) == 0) ? FLASH_AREA_8_ID : \
--                                                          255 )
--#define BL1_FLASH_AREA_IMAGE_SECONDARY(x)   (((x) == 0) ? FLASH_AREA_9_ID : \
--                                                          255 )
--
--#define BL1_FLASH_AREA_IMAGE_SCRATCH        255
--
- /* Image 1: TF-M primary and secondary images */
- #define FLASH_AREA_0_ID                 (1)
- #define FLASH_AREA_0_OFFSET             (FLASH_AREA_9_OFFSET + \
-@@ -229,6 +222,7 @@
- #define FWU_METADATA_IMAGE_3_OFFSET     (KERNEL_PARTITION_OFFSET)
- #define FWU_METADATA_IMAGE_3_SIZE_LIMIT (KERNEL_PARTITION_SIZE)
- 
-+/****** TODO: END : NEED SIMPLIFICATION BASED ON GPT *******************/
- 
- /*******************************/
- /*** ITS, PS and NV Counters ***/
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0008-Platform-corstone1000-Fix-linkerscripts-copyright-ye.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0008-Platform-corstone1000-Fix-linkerscripts-copyright-ye.patch
new file mode 100644
index 0000000..7f7f6ed
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0008-Platform-corstone1000-Fix-linkerscripts-copyright-ye.patch
@@ -0,0 +1,39 @@
+From 7db7b197ec3f01163422450947540060d3cb0c17 Mon Sep 17 00:00:00 2001
+From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+Date: Mon, 13 Mar 2023 00:21:44 +0000
+Subject: [PATCH 6/6] Platform: corstone1000: Fix linkerscripts copyright year
+
+set the copyright year to 2023 as these files are introduced in
+2023.
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20557]
+Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+Change-Id: I293a4a380d5d1d59aba1e2ab17e0e5924664dbb4
+---
+ .../arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld    | 2 +-
+ .../arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld    | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld
+index 8ee334c6b..cb6797f27 100644
+--- a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld
++++ b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld
+@@ -1,5 +1,5 @@
+ ;/*
+-; * Copyright (c) 2009-2022, Arm Limited. All rights reserved.
++; * Copyright (c) 2023, Arm Limited. All rights reserved.
+ ; *
+ ; * Licensed under the Apache License, Version 2.0 (the "License");
+ ; * you may not use this file except in compliance with the License.
+diff --git a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld
+index e1e4f2966..e66e54aa6 100644
+--- a/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld
++++ b/platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld
+@@ -1,5 +1,5 @@
+ ;/*
+-; * Copyright (c) 2009-2022, Arm Limited. All rights reserved.
++; * Copyright (c) 2023, Arm Limited. All rights reserved.
+ ; *
+ ; * Licensed under the Apache License, Version 2.0 (the "License");
+ ; * you may not use this file except in compliance with the License.
+-- 
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0009-Platform-corstone1000-BL2-uses-GPT-layout.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0009-Platform-corstone1000-BL2-uses-GPT-layout.patch
deleted file mode 100644
index 9df98cd..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0009-Platform-corstone1000-BL2-uses-GPT-layout.patch
+++ /dev/null
@@ -1,411 +0,0 @@
-From 6f95d99329e178b7dea5cf7affac2c55135bbb85 Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Wed, 11 Jan 2023 10:27:04 +0000
-Subject: [PATCH 9/10] Platform:corstone1000: BL2 uses GPT layout
-
-Adabt BL2 to use GPT parser find tfm and fip partitions, and then
-extract info to populate MCUBOOT flashmap.
-
-Side changes required:
-Borrow 2k of BL2 code memory to Data memory (during linking)
-i.e. Increase BL2_DATA_GAP_SIZE and decrease SE_BL2_PARTITION_SIZE
-
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- .../target/arm/corstone1000/CMakeLists.txt    |  5 +-
- .../target/arm/corstone1000/bl2_flash_map.c   |  7 --
- .../target/arm/corstone1000/boot_hal_bl2.c    | 86 +++++++++++++-----
- .../corstone1000/fw_update_agent/fwu_agent.c  | 24 ++---
- .../corstone1000/fw_update_agent/fwu_agent.h  |  2 +-
- .../arm/corstone1000/partition/flash_layout.h |  2 +-
- .../ext/target/arm/corstone1000/platform.c    | 87 ++++++++++++++++++-
- .../ext/target/arm/corstone1000/platform.h    | 10 +++
- 8 files changed, 168 insertions(+), 55 deletions(-)
-
-diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
-index a120f39ea4..f16c1c40b0 100644
---- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
-+++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
-@@ -130,6 +130,10 @@ target_sources(platform_bl2
-         io/io_block.c
-         io/io_flash.c
-         io/io_storage.c
-+        soft_crc/soft_crc.c
-+        partition/partition.c
-+        partition/gpt.c
-+        platform.c
- )
- 
- if (PLATFORM_IS_FVP)
-@@ -174,7 +178,6 @@ target_compile_definitions(bl2
-         $<$<BOOL:${CRYPTO_HW_ACCELERATOR}>:CRYPTO_HW_ACCELERATOR>
-         $<$<BOOL:${CRYPTO_HW_ACCELERATOR_OTP_PROVISIONING}>:CRYPTO_HW_ACCELERATOR_OTP_PROVISIONING>
-         $<$<BOOL:${PLATFORM_PSA_ADAC_SECURE_DEBUG}>:PLATFORM_PSA_ADAC_SECURE_DEBUG>
--
- )
- target_compile_definitions(bootutil
-     PRIVATE
-diff --git a/platform/ext/target/arm/corstone1000/bl2_flash_map.c b/platform/ext/target/arm/corstone1000/bl2_flash_map.c
-index f512045a44..599f80b411 100644
---- a/platform/ext/target/arm/corstone1000/bl2_flash_map.c
-+++ b/platform/ext/target/arm/corstone1000/bl2_flash_map.c
-@@ -58,13 +58,6 @@ struct flash_area flash_map[] = {
- 
- const int flash_map_entry_num = ARRAY_SIZE(flash_map);
- 
--void add_bank_offset_to_image_offset(uint32_t bank_offset)
--{
--    for (int i = 0; i < flash_map_entry_num; i++) {
--        flash_map[i].fa_off += bank_offset;
--    }
--}
--
- int boot_get_image_exec_ram_info(uint32_t image_id,
-                                  uint32_t *exec_ram_start,
-                                  uint32_t *exec_ram_size)
-diff --git a/platform/ext/target/arm/corstone1000/boot_hal_bl2.c b/platform/ext/target/arm/corstone1000/boot_hal_bl2.c
-index 323d9707fe..52db26beea 100644
---- a/platform/ext/target/arm/corstone1000/boot_hal_bl2.c
-+++ b/platform/ext/target/arm/corstone1000/boot_hal_bl2.c
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2019-2022, Arm Limited. All rights reserved.
-+ * Copyright (c) 2019-2023, Arm Limited. All rights reserved.
-  *
-  * SPDX-License-Identifier: BSD-3-Clause
-  *
-@@ -30,6 +30,14 @@
- #include "crypto_hw.h"
- #endif
- 
-+#include "efi.h"
-+#include "partition.h"
-+#include "platform.h"
-+
-+static const uint8_t * const tfm_part_names[] = {"tfm_primary", "tfm_secondary"};
-+static const uint8_t * const fip_part_names[] = {"FIP_A", "FIP_B"};
-+
-+
- /* Flash device name must be specified by target */
- extern ARM_DRIVER_FLASH FLASH_DEV_NAME;
- 
-@@ -39,28 +47,62 @@ REGION_DECLARE(Image$$, ARM_LIB_HEAP, $$ZI$$Limit)[];
- #define ARRAY_SIZE(arr) (sizeof(arr)/sizeof((arr)[0]))
- extern struct flash_area flash_map[];
- 
--int32_t fill_bl2_flash_map_by_parsing_fips(uint32_t bank_offset)
--{
--    int result;
-+static bool fill_flash_map_with_tfm_data(uint8_t boot_index) {
-+
-+    if (boot_index >= ARRAY_SIZE(tfm_part_names)) {
-+        BOOT_LOG_ERR("%d is an invalid boot_index, 0 <= boot_index < %d",
-+                     boot_index, ARRAY_SIZE(tfm_part_names));
-+        return false;
-+    }
-+    partition_entry_t *tfm_entry =
-+        get_partition_entry(tfm_part_names[boot_index]);
-+    if (tfm_entry == NULL) {
-+        BOOT_LOG_ERR("Could not find partition %s", tfm_part_names[boot_index]);
-+        return false;
-+    }
-+    flash_map[0].fa_off = tfm_entry->start;
-+    flash_map[0].fa_size = tfm_entry->length;
-+    return true;
-+}
-+
-+static bool fill_flash_map_with_fip_data(uint8_t boot_index) {
-     uint32_t tfa_offset = 0;
--    uint32_t tfa_size = 0;
-+    size_t tfa_size = 0;
-+    uint32_t fip_offset = 0;
-+    size_t fip_size = 0;
-+    int result;
-+
-+    if (boot_index >= ARRAY_SIZE(fip_part_names)) {
-+        BOOT_LOG_ERR("%d is an invalid boot_index, 0 <= boot_index < %d",
-+                     boot_index, ARRAY_SIZE(fip_part_names));
-+        return false;
-+    }
-+    partition_entry_t *fip_entry =
-+        get_partition_entry(fip_part_names[boot_index]);
-+    if (fip_entry == NULL) {
-+        BOOT_LOG_ERR("Could not find partition %s", fip_part_names[boot_index]);
-+        return false;
-+    }
-+
-+    fip_offset = fip_entry->start;
-+    fip_size = fip_entry->length;
- 
-     /* parse directly from flash using XIP mode */
-     /* FIP is large so its not a good idea to load it in memory */
--    result = parse_fip_and_extract_tfa_info(bank_offset + FLASH_FIP_ADDRESS,
--                  FLASH_FIP_SIZE,
--                  &tfa_offset, &tfa_size);
-+    result = parse_fip_and_extract_tfa_info(
-+        FLASH_BASE_ADDRESS + fip_offset + FIP_SIGNATURE_AREA_SIZE, fip_size,
-+        &tfa_offset, &tfa_size);
-     if (result != FIP_PARSER_SUCCESS) {
-         BOOT_LOG_ERR("parse_fip_and_extract_tfa_info failed");
--        return 1;
-+        return false;
-     }
- 
--    flash_map[2].fa_off = FLASH_FIP_OFFSET + tfa_offset;
-+    flash_map[2].fa_off = fip_offset + FIP_SIGNATURE_AREA_SIZE + tfa_offset;
-     flash_map[2].fa_size = tfa_size;
-     flash_map[3].fa_off = flash_map[2].fa_off + flash_map[2].fa_size;
-     flash_map[3].fa_size = tfa_size;
- 
--    return 0;
-+    return true;
- }
- 
- #ifdef PLATFORM_PSA_ADAC_SECURE_DEBUG
-@@ -89,26 +131,29 @@ uint8_t secure_debug_rotpk[32];
- 
- #endif
- 
--extern void add_bank_offset_to_image_offset(uint32_t bank_offset);
--
- int32_t boot_platform_init(void)
- {
-     int32_t result;
-+    uint8_t boot_index;
- 
-     result = corstone1000_watchdog_init();
-     if (result != ARM_DRIVER_OK) {
-         return 1;
-     }
- 
--#ifndef TFM_S_REG_TEST
--    result = fill_bl2_flash_map_by_parsing_fips(BANK_0_PARTITION_OFFSET);
--    if (result) {
-+    result = FLASH_DEV_NAME.Initialize(NULL);
-+    if (result != ARM_DRIVER_OK) {
-         return 1;
-     }
--#endif
- 
--    result = FLASH_DEV_NAME.Initialize(NULL);
--    if (result != ARM_DRIVER_OK) {
-+    plat_io_storage_init();
-+    partition_init(PLATFORM_GPT_IMAGE);
-+
-+    boot_index = bl2_get_boot_bank();
-+
-+    if (!fill_flash_map_with_tfm_data(boot_index)
-+    || !fill_flash_map_with_fip_data(boot_index)) {
-+        BOOT_LOG_ERR("Filling flash map has failed!");
-         return 1;
-     }
- 
-@@ -149,9 +194,6 @@ int32_t boot_platform_post_init(void)
-     }
- #endif
- 
--    bl2_get_boot_bank(&bank_offset);
--    add_bank_offset_to_image_offset(bank_offset);
--
-     return 0;
- }
- 
-diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-index e4f9da1ec3..1052bf9f00 100644
---- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-@@ -836,34 +836,20 @@ void bl1_get_active_bl2_image(uint32_t *offset)
-     return;
- }
- 
--void bl2_get_boot_bank(uint32_t *bank_offset)
-+uint8_t bl2_get_boot_bank(void)
- {
--    uint32_t boot_index;
-+    uint8_t boot_index;
-     struct fwu_private_metadata priv_metadata;
--    FWU_LOG_MSG("%s: enter\n\r", __func__);
--
-+    FWU_LOG_MSG("%s: enter", __func__);
-     if (fwu_metadata_init()) {
-         FWU_ASSERT(0);
-     }
--
-     if (private_metadata_read(&priv_metadata)) {
-         FWU_ASSERT(0);
-     }
--
-     boot_index = priv_metadata.boot_index;
--
--    if (boot_index == BANK_0) {
--        *bank_offset = BANK_0_PARTITION_OFFSET;
--    } else if (boot_index == BANK_1) {
--        *bank_offset = BANK_1_PARTITION_OFFSET;
--    } else {
--        FWU_ASSERT(0);
--    }
--
--    FWU_LOG_MSG("%s: exit: booting from bank = %u, offset = %x\n\r", __func__,
--                        boot_index, *bank_offset);
--
--    return;
-+    FWU_LOG_MSG("%s: exit: booting from bank = %u", __func__, boot_index);
-+    return boot_index;
- }
- 
- static void disable_host_ack_timer(void)
-diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h
-index eb8320ed8a..701f205583 100644
---- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h
-+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.h
-@@ -45,7 +45,7 @@ enum fwu_agent_error_t corstone1000_fwu_flash_image(void);
- enum fwu_agent_error_t corstone1000_fwu_host_ack(void);
- 
- void bl1_get_active_bl2_image(uint32_t *bank_offset);
--void bl2_get_boot_bank(uint32_t *bank_offset);
-+uint8_t bl2_get_boot_bank(void);
- 
- /* When in trial state, start the timer for host to respond.
-  * Diable timer when host responds back either by calling
-diff --git a/platform/ext/target/arm/corstone1000/partition/flash_layout.h b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-index 347c91acbb..c5cf94a52c 100644
---- a/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-+++ b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-@@ -32,7 +32,7 @@
- #define SRAM_BASE                       (0x30000000)
- #define SRAM_SIZE                       (0x80000)     /* 512 KB */
- 
--#define BL2_DATA_GAP_SIZE               (0x09000)     /* 36 KB */
-+#define BL2_DATA_GAP_SIZE               (0x09800)  /* 38 KB */
- 
- #define BL1_DATA_START                  (SRAM_BASE)
- #define BL1_DATA_SIZE                   (0x10000)     /* 64 KiB*/
-diff --git a/platform/ext/target/arm/corstone1000/platform.c b/platform/ext/target/arm/corstone1000/platform.c
-index 908b66b7ac..6add0d7e1b 100644
---- a/platform/ext/target/arm/corstone1000/platform.c
-+++ b/platform/ext/target/arm/corstone1000/platform.c
-@@ -5,16 +5,95 @@
-  *
-  */
- 
-+#include "stdint.h"
-+
-+#include "Driver_Flash.h"
-+#include "flash_layout.h"
-+
-+#include "io_driver.h"
-+#include "io_flash.h"
-+#include "io_storage.h"
-+
- #include "platform.h"
- 
--#include <stdint.h>
-+#define PLAT_LOG_MODULE_NAME    "platform"
-+#include "platform_log.h"
-+
-+typedef struct {
-+    uintptr_t dev_handle;
-+    uintptr_t image_spec;
-+} platform_image_source_t;
-+
-+extern ARM_DRIVER_FLASH FLASH_DEV_NAME;
-+
-+static io_dev_connector_t *flash_dev_con;
-+static uint8_t local_block_flash[FLASH_SECTOR_SIZE];
-+static io_flash_dev_spec_t flash_dev_spec = {
-+    .buffer = local_block_flash,
-+    .bufferlen = FLASH_SECTOR_SIZE,
-+    .base_addr = FLASH_BASE_ADDRESS,
-+    .flash_driver = &FLASH_DEV_NAME,
-+};
-+static io_block_spec_t flash_spec = {
-+    .offset = FLASH_BASE_ADDRESS,
-+    .length = FLASH_TOTAL_SIZE
-+};
-+
-+static platform_image_source_t platform_image_source[] = {
-+    [PLATFORM_GPT_IMAGE] = {
-+        .dev_handle = NULL,
-+        .image_spec = &flash_spec,
-+    }
-+};
-+
-+/* Initialize io storage of the platform */
-+int32_t plat_io_storage_init(void)
-+{
-+    int rc = -1;
-+    uintptr_t flash_dev_handle = NULL;
-+    uintptr_t flash_handle = NULL;
-+
-+    rc = register_io_dev_flash((const io_dev_connector_t **) &flash_dev_con);
-+    if (rc != 0) {
-+        ERROR("Failed to register io flash rc: %d", rc);
-+        return rc;
-+    }
-+
-+    rc = io_dev_open(flash_dev_con, (const uintptr_t)&flash_dev_spec, &flash_dev_handle);
-+    if (rc != 0) {
-+        ERROR("Failed to open io flash dev rc: %d", rc);
-+        return rc;
-+    }
-+
-+    VERBOSE("Flash_dev_handle = %p",flash_dev_handle);
-+
-+    rc = io_open(flash_dev_handle, (const uintptr_t)&flash_spec, &flash_handle);
-+    if (rc != 0) {
-+        ERROR("Failed to open io flash rc: %d", rc);
-+        return rc;
-+    }
-+
-+    VERBOSE("Flash_handle = %p",flash_handle);
-+
-+    rc = io_close(flash_handle);
-+    if (rc != 0) {
-+        ERROR("Failed to close io flash rc: %d", rc);
-+        return rc;
-+    }
-+    /* Update the platform image source that uses the flash with dev handles */
-+    platform_image_source[PLATFORM_GPT_IMAGE].dev_handle = flash_dev_handle;
-+
-+    return rc;
-+}
- 
- /* Return an IO device handle and specification which can be used to access
-  * an image. This has to be implemented for the GPT parser. */
- int32_t plat_get_image_source(unsigned int image_id, uintptr_t *dev_handle,
-                               uintptr_t *image_spec) {
--    (void)image_id;
--    *dev_handle = NULL;
--    *image_spec = NULL;
-+    if (image_id >= PLATFORM_IMAGE_COUNT) {
-+        return -1;
-+    }
-+    *dev_handle = platform_image_source[image_id].dev_handle;
-+    *image_spec = platform_image_source[image_id].image_spec;
-     return 0;
- }
-diff --git a/platform/ext/target/arm/corstone1000/platform.h b/platform/ext/target/arm/corstone1000/platform.h
-index 250f9cd9f5..894f5e3090 100644
---- a/platform/ext/target/arm/corstone1000/platform.h
-+++ b/platform/ext/target/arm/corstone1000/platform.h
-@@ -8,6 +8,16 @@
- #ifndef __PLATFORM_H__
- #define __PLATFORM_H__
- 
-+typedef enum {
-+    PLATFORM_GPT_IMAGE = 0,
-+    PLATFORM_IMAGE_COUNT,
-+}platform_image_id_t;
-+
-+/* Initialize io storage of the platform */
-+int32_t plat_io_storage_init(void);
-+
-+/* Return an IO device handle and specification which can be used to access
-+ * an image. This has to be implemented for the GPT parser. */
- int32_t plat_get_image_source(unsigned int image_id, uintptr_t *dev_handle,
-                               uintptr_t *image_spec);
- 
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0009-Platform-corstone1000-fix-flash-reading-issue-for-fi.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0009-Platform-corstone1000-fix-flash-reading-issue-for-fi.patch
new file mode 100644
index 0000000..5c0024b
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0009-Platform-corstone1000-fix-flash-reading-issue-for-fi.patch
@@ -0,0 +1,38 @@
+From 7914ec3f96dbb8228e791d9492cfc3651cf9deca Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <emekcan.aras@arm.com>
+Date: Wed, 5 Apr 2023 10:28:57 +0100
+Subject: [PATCH] Platform: corstone1000: Fix Flash reading issue for FIP data
+
+Fixes the flash reading issue since bl2 needs to read the data from
+flash in XIP mode on FPGA (mps3).
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20558]
+Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
+---
+ platform/ext/target/arm/corstone1000/bl2/boot_hal_bl2.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/platform/ext/target/arm/corstone1000/bl2/boot_hal_bl2.c b/platform/ext/target/arm/corstone1000/bl2/boot_hal_bl2.c
+index cf6340c5a9..e4183c7a57 100644
+--- a/platform/ext/target/arm/corstone1000/bl2/boot_hal_bl2.c
++++ b/platform/ext/target/arm/corstone1000/bl2/boot_hal_bl2.c
+@@ -89,6 +89,7 @@ static bool fill_flash_map_with_fip_data(uint8_t boot_index) {
+ 
+     /* parse directly from flash using XIP mode */
+     /* FIP is large so its not a good idea to load it in memory */
++    Select_XIP_Mode_For_Shared_Flash();
+     result = parse_fip_and_extract_tfa_info(
+         FLASH_BASE_ADDRESS + fip_offset + FIP_SIGNATURE_AREA_SIZE, fip_size,
+         &tfa_offset, &tfa_size);
+@@ -96,7 +97,7 @@ static bool fill_flash_map_with_fip_data(uint8_t boot_index) {
+         BOOT_LOG_ERR("parse_fip_and_extract_tfa_info failed");
+         return false;
+     }
+-
++    Select_Write_Mode_For_Shared_Flash();
+     flash_map[2].fa_off = fip_offset + FIP_SIGNATURE_AREA_SIZE + tfa_offset;
+     flash_map[2].fa_size = tfa_size;
+     flash_map[3].fa_off = flash_map[2].fa_off + flash_map[2].fa_size;
+-- 
+2.17.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-Adds-compiler-flags-to-FWU-age.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-Adds-compiler-flags-to-FWU-age.patch
new file mode 100644
index 0000000..29fce5e
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-Adds-compiler-flags-to-FWU-age.patch
@@ -0,0 +1,273 @@
+From 11f6af40dc322630031511146763cc9059bdb805 Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <emekcan.aras@arm.com>
+Date: Fri, 14 Apr 2023 16:35:55 +0100
+Subject: [PATCH] Platform: corstone1000: Adds compiler flags to FWU agent for
+ BL1
+
+Adds compiler flags for BL1 to fwu_agent.c functions to not use GPT parser and
+IO libraries in BL1 rom code.
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20559]
+Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
+---
+ .../corstone1000/fw_update_agent/fwu_agent.c  | 176 +++++++++++++++++-
+ 1 file changed, 174 insertions(+), 2 deletions(-)
+
+diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
+index 8ecb03d157..afd8d66e42 100644
+--- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
++++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
+@@ -14,8 +14,6 @@
+ #include "region_defs.h"
+ #include "uefi_capsule_parser.h"
+ #include "flash_common.h"
+-#include "partition.h"
+-#include "platform.h"
+ #include "platform_base_address.h"
+ #include "platform_description.h"
+ #include "tfm_plat_nv_counters.h"
+@@ -23,6 +21,10 @@
+ #include "uefi_fmp.h"
+ #include "uart_stdout.h"
+ #include "soft_crc.h"
++#if !BL1
++#include "partition.h"
++#include "platform.h"
++#endif
+ 
+ /* Properties of image in a bank */
+ struct fwu_image_properties {
+@@ -145,6 +147,30 @@ extern ARM_DRIVER_FLASH FWU_METADATA_FLASH_DEV;
+ 
+ #define HOST_ACK_TIMEOUT_SEC    (6 * 60) /* ~seconds, not exact */
+ 
++#if BL1
++static enum fwu_agent_error_t private_metadata_read(
++        struct fwu_private_metadata* p_metadata)
++{
++    int ret;
++
++    FWU_LOG_MSG("%s: enter\n\r", __func__);
++
++    if (!p_metadata) {
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET, p_metadata,
++                                          sizeof(struct fwu_private_metadata));
++    if (ret < 0 || ret != sizeof(struct fwu_private_metadata)) {
++        return FWU_AGENT_ERROR;
++    }
++
++    FWU_LOG_MSG("%s: success: boot_index = %u\n\r", __func__,
++                        p_metadata->boot_index);
++
++    return FWU_AGENT_SUCCESS;
++}
++#elif
+ static enum fwu_agent_error_t private_metadata_read(
+         struct fwu_private_metadata* p_metadata)
+ {
+@@ -175,7 +201,36 @@ static enum fwu_agent_error_t private_metadata_read(
+ 
+     return FWU_AGENT_SUCCESS;
+ }
++#endif
+ 
++#if BL1
++static enum fwu_agent_error_t private_metadata_write(
++        struct fwu_private_metadata* p_metadata)
++{
++    int ret;
++
++    FWU_LOG_MSG("%s: enter: boot_index = %u\n\r", __func__,
++                        p_metadata->boot_index);
++
++    if (!p_metadata) {
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET);
++    if (ret != ARM_DRIVER_OK) {
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET,
++                                p_metadata, sizeof(struct fwu_private_metadata));
++    if (ret < 0 || ret != sizeof(struct fwu_private_metadata)) {
++        return FWU_AGENT_ERROR;
++    }
++
++    FWU_LOG_MSG("%s: success\n\r", __func__);
++    return FWU_AGENT_SUCCESS;
++}
++#elif
+ static enum fwu_agent_error_t private_metadata_write(
+         struct fwu_private_metadata* p_metadata)
+ {
+@@ -210,6 +265,7 @@ static enum fwu_agent_error_t private_metadata_write(
+     FWU_LOG_MSG("%s: success\n\r", __func__);
+     return FWU_AGENT_SUCCESS;
+ }
++#endif
+ 
+ static enum fwu_agent_error_t metadata_validate(struct fwu_metadata *p_metadata)
+ {
+@@ -235,6 +291,30 @@ static enum fwu_agent_error_t metadata_validate(struct fwu_metadata *p_metadata)
+     return FWU_AGENT_SUCCESS;
+ }
+ 
++#if BL1
++static enum fwu_agent_error_t metadata_read_without_validation(struct fwu_metadata *p_metadata)
++{
++    int ret;
++
++    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
++                  FWU_METADATA_REPLICA_1_OFFSET, sizeof(struct fwu_metadata));
++
++    if (!p_metadata) {
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_METADATA_REPLICA_1_OFFSET,
++                                p_metadata, sizeof(struct fwu_metadata));
++    if (ret < 0 || ret != sizeof(struct fwu_metadata)) {
++        return FWU_AGENT_ERROR;
++    }
++
++    FWU_LOG_MSG("%s: success: active = %u, previous = %d\n\r", __func__,
++                  p_metadata->active_index, p_metadata->previous_active_index);
++
++    return FWU_AGENT_SUCCESS;
++}
++#elif
+ static enum fwu_agent_error_t metadata_read_without_validation(struct fwu_metadata *p_metadata)
+ {
+     uuid_t metadata_uuid = FWU_METADATA_TYPE_UUID;
+@@ -266,7 +346,36 @@ static enum fwu_agent_error_t metadata_read_without_validation(struct fwu_metada
+ 
+     return FWU_AGENT_SUCCESS;
+ }
++#endif
++
++#if BL1
++static enum fwu_agent_error_t metadata_read(struct fwu_metadata *p_metadata)
++{
++    int ret;
+ 
++    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
++                  FWU_METADATA_REPLICA_1_OFFSET, sizeof(struct fwu_metadata));
++
++    if (!p_metadata) {
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_METADATA_REPLICA_1_OFFSET,
++                                p_metadata, sizeof(struct fwu_metadata));
++    if (ret < 0 || ret != sizeof(struct fwu_metadata)) {
++        return FWU_AGENT_ERROR;
++    }
++
++    if (metadata_validate(p_metadata) != FWU_AGENT_SUCCESS) {
++        return FWU_AGENT_ERROR;
++    }
++
++    FWU_LOG_MSG("%s: success: active = %u, previous = %d\n\r", __func__,
++                  p_metadata->active_index, p_metadata->previous_active_index);
++
++    return FWU_AGENT_SUCCESS;
++}
++#elif
+ static enum fwu_agent_error_t metadata_read(struct fwu_metadata *p_metadata)
+ {
+     uuid_t metadata_uuid = FWU_METADATA_TYPE_UUID;
+@@ -301,7 +410,66 @@ static enum fwu_agent_error_t metadata_read(struct fwu_metadata *p_metadata)
+ 
+     return FWU_AGENT_SUCCESS;
+ }
++#endif
++
+ 
++#if BL1
++static enum fwu_agent_error_t metadata_write(
++                        struct fwu_metadata *p_metadata)
++{
++    int ret;
++
++    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
++                  FWU_METADATA_REPLICA_1_OFFSET, sizeof(struct fwu_metadata));
++
++    if (!p_metadata) {
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_METADATA_REPLICA_1_OFFSET);
++    if (ret != ARM_DRIVER_OK) {
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_METADATA_REPLICA_1_OFFSET,
++                                p_metadata, sizeof(struct fwu_metadata));
++    if (ret < 0 || ret != sizeof(struct fwu_metadata)) {
++        return FWU_AGENT_ERROR;
++    }
++
++    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
++                  FWU_METADATA_REPLICA_2_OFFSET, sizeof(struct fwu_metadata));
++
++    ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_METADATA_REPLICA_2_OFFSET);
++    if (ret != ARM_DRIVER_OK) {
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_METADATA_REPLICA_2_OFFSET,
++                                p_metadata, sizeof(struct fwu_metadata));
++    if (ret < 0 || ret != sizeof(struct fwu_metadata)) {
++        return FWU_AGENT_ERROR;
++    }
++
++    FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__,
++                  FWU_METADATA_REPLICA_2_OFFSET, sizeof(struct fwu_metadata));
++
++    ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_METADATA_REPLICA_2_OFFSET);
++    if (ret != ARM_DRIVER_OK) {
++        return FWU_AGENT_ERROR;
++    }
++
++    ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_METADATA_REPLICA_2_OFFSET,
++                                p_metadata, sizeof(struct fwu_metadata));
++    if (ret < 0 || ret != sizeof(struct fwu_metadata)) {
++        return FWU_AGENT_ERROR;
++    }
++
++    FWU_LOG_MSG("%s: success: active = %u, previous = %d\n\r", __func__,
++                  p_metadata->active_index, p_metadata->previous_active_index);
++    return FWU_AGENT_SUCCESS;
++}
++#elif
+ static enum fwu_agent_error_t metadata_write(
+                         struct fwu_metadata *p_metadata)
+ {
+@@ -371,6 +539,8 @@ static enum fwu_agent_error_t metadata_write(
+                   p_metadata->active_index, p_metadata->previous_active_index);
+     return FWU_AGENT_SUCCESS;
+ }
++#endif
++
+ 
+ enum fwu_agent_error_t fwu_metadata_init(void)
+ {
+@@ -418,8 +588,10 @@ enum fwu_agent_error_t fwu_metadata_provision(void)
+ 
+     FWU_LOG_MSG("%s: enter\n\r", __func__);
+ 
++#if !BL1
+     plat_io_storage_init();
+     partition_init(PLATFORM_GPT_IMAGE);
++#endif
+ 
+     ret = fwu_metadata_init();
+     if (ret) {
+-- 
+2.17.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-flash_layout-simplification.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-flash_layout-simplification.patch
deleted file mode 100644
index c3376e1..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-flash_layout-simplification.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From c385b628aa3588aeb6f86f8b98fd3bdb304a296c Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Wed, 11 Jan 2023 12:47:45 +0000
-Subject: [PATCH 10/10] Platform: corstone1000:flash_layout simplification
-
-Complete the simplification of the flash layout.
-The flash layout contains only the static definitions
-that describe the static layout and the boundries of the dynamic
-regions.
-
-The dynamic regions addresses are known by the GPT parser.
-
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- .../arm/corstone1000/partition/flash_layout.h | 44 -------------------
- 1 file changed, 44 deletions(-)
-
-diff --git a/platform/ext/target/arm/corstone1000/partition/flash_layout.h b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-index c5cf94a52c..b01a3621b3 100644
---- a/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-+++ b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-@@ -142,28 +142,9 @@
-                                              * Host: FIP and Kernel image
-                                              */
- 
--/****** TODO: START : NEED SIMPLIFICATION BASED ON GPT *******************/
- /* Bank configurations */
- #define BANK_PARTITION_SIZE             (0xFE0000)   /* 15.875 MB */
- #define TFM_PARTITION_SIZE              (0x5E000)    /* 376 KB */
--#define FIP_PARTITION_SIZE              (0x200000)   /* 2 MB */
--#define KERNEL_PARTITION_SIZE           (0xC00000)   /* 12 MB */
--
--/************************************************************/
--/* Bank : Images flash offsets are with respect to the bank */
--/************************************************************/
--
--/* Image 0: BL2 primary and secondary images */
--#define FLASH_AREA_8_ID                 (1)
--#define FLASH_AREA_8_OFFSET             (0) /* starting from 0th offset of the bank */
--#define FLASH_AREA_8_SIZE               (SE_BL2_PARTITION_SIZE)
--
--#define FLASH_AREA_9_ID                 (FLASH_AREA_8_ID + 1)
--#define FLASH_AREA_9_OFFSET             (FLASH_AREA_8_OFFSET + FLASH_AREA_8_SIZE)
--#define FLASH_AREA_9_SIZE               (SE_BL2_PARTITION_SIZE)
--
--#define FWU_METADATA_IMAGE_0_OFFSET     (FLASH_AREA_8_OFFSET)
--#define FWU_METADATA_IMAGE_0_SIZE_LIMIT (FLASH_AREA_8_SIZE + FLASH_AREA_9_SIZE)
- 
- /* Macros needed to imgtool.py, used when creating BL2 signed image */
- #define BL2_IMAGE_LOAD_ADDRESS          (SRAM_BASE + TFM_PARTITION_SIZE + BL2_DATA_GAP_SIZE)
-@@ -172,33 +153,16 @@
- 
- /* Image 1: TF-M primary and secondary images */
- #define FLASH_AREA_0_ID                 (1)
--#define FLASH_AREA_0_OFFSET             (FLASH_AREA_9_OFFSET + \
--                                         FLASH_AREA_9_SIZE)
- #define FLASH_AREA_0_SIZE               (TFM_PARTITION_SIZE)
--
- #define FLASH_AREA_1_ID                 (FLASH_AREA_0_ID + 1)
--#define FLASH_AREA_1_OFFSET             (FLASH_AREA_0_OFFSET + FLASH_AREA_0_SIZE)
- #define FLASH_AREA_1_SIZE               (TFM_PARTITION_SIZE)
- 
--#define FWU_METADATA_IMAGE_1_OFFSET     (FLASH_AREA_0_OFFSET)
--#define FWU_METADATA_IMAGE_1_SIZE_LIMIT (FLASH_AREA_0_SIZE + FLASH_AREA_1_SIZE)
--
- /* Image 2: Host FIP */
- #define FIP_SIGNATURE_AREA_SIZE         (0x1000)      /* 4 KB */
- 
--#define FLASH_FIP_OFFSET                (FLASH_AREA_1_OFFSET + \
--                                         FLASH_AREA_1_SIZE + FIP_SIGNATURE_AREA_SIZE)
--#define FLASH_FIP_ADDRESS               (FLASH_BASE_ADDRESS + FLASH_FIP_OFFSET)
--#define FLASH_FIP_SIZE                  (FIP_PARTITION_SIZE)
--
- /* Host BL2 (TF-A) primary and secondary image. */
- #define FLASH_AREA_2_ID                 (FLASH_AREA_1_ID + 1)
- #define FLASH_AREA_3_ID                 (FLASH_AREA_2_ID + 1)
--#define FLASH_INVALID_OFFSET            (0xFFFFFFFF)
--#define FLASH_INVALID_SIZE              (0xFFFFFFFF)
--
--#define FWU_METADATA_IMAGE_2_OFFSET     (FLASH_FIP_OFFSET)
--#define FWU_METADATA_IMAGE_2_SIZE_LIMIT (FLASH_FIP_SIZE)
- 
- /* Macros needed to imgtool.py, used when creating TF-M signed image */
- #define S_IMAGE_LOAD_ADDRESS            (SRAM_BASE)
-@@ -216,14 +180,6 @@
- 
- #define FLASH_AREA_IMAGE_SCRATCH        255
- 
--/* Image 3: Kernel image */
--#define KERNEL_PARTITION_OFFSET         (FLASH_FIP_OFFSET + FLASH_FIP_SIZE)
--
--#define FWU_METADATA_IMAGE_3_OFFSET     (KERNEL_PARTITION_OFFSET)
--#define FWU_METADATA_IMAGE_3_SIZE_LIMIT (KERNEL_PARTITION_SIZE)
--
--/****** TODO: END : NEED SIMPLIFICATION BASED ON GPT *******************/
--
- /*******************************/
- /*** ITS, PS and NV Counters ***/
- /*******************************/
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0011-Platform-corstone1000-adjust-PS-asset-configuration.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0011-Platform-corstone1000-adjust-PS-asset-configuration.patch
new file mode 100644
index 0000000..19a3773
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0011-Platform-corstone1000-adjust-PS-asset-configuration.patch
@@ -0,0 +1,29 @@
+From 148d82d0984273b30d8b148f0c4e0ad0d3f23062 Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <emekcan.aras@arm.com>
+Date: Mon, 17 Apr 2023 12:07:55 +0100
+Subject: [PATCH 1/3] Platform: corstone1000: adjust PS asset configuration
+
+Adjust protected storage asset configuration to be more inline
+with the one in trusted service side, that would make thinks
+work when testing and using more than the default variables.
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20560]
+Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
+Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
+Change-Id: I181f9c72a816c727c2170c609100aec1d233fea7
+---
+ platform/ext/target/arm/corstone1000/config.cmake | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/platform/ext/target/arm/corstone1000/config.cmake b/platform/ext/target/arm/corstone1000/config.cmake
+index bec6b84f0..0c91fa59f 100644
+--- a/platform/ext/target/arm/corstone1000/config.cmake
++++ b/platform/ext/target/arm/corstone1000/config.cmake
+@@ -76,3 +76,4 @@ endif()
+ # Platform-specific configurations
+ set(CONFIG_TFM_USE_TRUSTZONE            OFF)
+ set(TFM_MULTI_CORE_TOPOLOGY             ON)
++set(PS_NUM_ASSETS                       "40"        CACHE STRING    "The maximum number of assets to be stored in the Protected Storage area")
+-- 
+2.17.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0012-Platform-corstone1000-Increase-number-of-assets.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0012-Platform-corstone1000-Increase-number-of-assets.patch
new file mode 100644
index 0000000..d2fc332
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0012-Platform-corstone1000-Increase-number-of-assets.patch
@@ -0,0 +1,36 @@
+From 34263d1ea99da7b8a680a80601a73149bc9530e5 Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <emekcan.aras@arm.com>
+Date: Fri, 21 Apr 2023 15:17:21 +0100
+Subject: [PATCH] Platform: corstone1000: Increase number of assets
+
+As Corstone1000 stores at boot time few efi variables.
+Therefore, number of assets is increased to compansate this early usage.
+
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20656]
+Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
+Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
+Change-Id: Id8555a09335ce13b80c07a33c4d913f5cb0f9084
+---
+ platform/ext/target/arm/corstone1000/config_tfm_target.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/platform/ext/target/arm/corstone1000/config_tfm_target.h b/platform/ext/target/arm/corstone1000/config_tfm_target.h
+index bf8d2f95f..e96836663 100644
+--- a/platform/ext/target/arm/corstone1000/config_tfm_target.h
++++ b/platform/ext/target/arm/corstone1000/config_tfm_target.h
+@@ -16,4 +16,12 @@
+ #undef PLATFORM_SERVICE_OUTPUT_BUFFER_SIZE
+ #define PLATFORM_SERVICE_OUTPUT_BUFFER_SIZE    256
+
++/* The maximum number of assets to be stored in the Internal Trusted Storage. */
++#undef ITS_NUM_ASSETS
++#define ITS_NUM_ASSETS       20
++
++/* The maximum number of assets to be stored in the Protected Storage area. */
++#undef PS_NUM_ASSETS
++#define PS_NUM_ASSETS        20
++
+ #endif /* __CONFIG_TFM_TARGET_H__ */
+--
+2.17.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/rwx.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/rwx.patch
new file mode 100644
index 0000000..1efd661
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/rwx.patch
@@ -0,0 +1,25 @@
+From 1d548c77d07fc9a83e3e9aa28a23aa19a0177e3b Mon Sep 17 00:00:00 2001
+From: Jon Mason <jon.mason@arm.com>
+Date: Wed, 18 Jan 2023 15:13:37 -0500
+Subject: [PATCH] arm/trusted-firmware-m: disable fatal warnings
+
+Signed-off-by: Jon Mason <jon.mason@arm.com>
+Upstream-Status: Inappropriate
+
+---
+ toolchain_GNUARM.cmake | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/toolchain_GNUARM.cmake b/toolchain_GNUARM.cmake
+index 7978eaca68..88395f922a 100644
+--- a/toolchain_GNUARM.cmake
++++ b/toolchain_GNUARM.cmake
+@@ -71,7 +71,6 @@ macro(tfm_toolchain_reset_linker_flags)
+         --entry=Reset_Handler
+         -specs=nano.specs
+         LINKER:-check-sections
+-        LINKER:-fatal-warnings
+         LINKER:--gc-sections
+         LINKER:--no-wchar-size-warning
+         ${MEMORY_USAGE_FLAG}
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.7.0-corstone1000.inc b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.7.0-corstone1000.inc
index a8e76d0..68845cf 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.7.0-corstone1000.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.7.0-corstone1000.inc
@@ -9,7 +9,11 @@
 ## Default is the MPS3 board
 TFM_PLATFORM_IS_FVP ?= "FALSE"
 EXTRA_OECMAKE += "-DPLATFORM_IS_FVP=${TFM_PLATFORM_IS_FVP}"
-EXTRA_OECMAKE += "-DCC312_LEGACY_DRIVER_API_ENABLED=OFF"
+EXTRA_OECMAKE += "-DCC312_LEGACY_DRIVER_API_ENABLED=ON"
+
+SRCREV_tfm = "94c55967cbd1832681f07074a0945605b02ec8d0"
+SRCREV_mcuboot = "9e8eddcecba931f99297765779f8b130d808a9a3"
+SRCREV_mbedtls = "8c89224991adff88d53cd380f42a2baa36f91454"
 
 # libmetal
 LICENSE += "& BSD-3-Clause"
@@ -26,23 +30,46 @@
 EXTRA_OECMAKE += "-DLIBOPENAMP_SRC_PATH=${S}/../openamp -DLIBOPENAMP_BIN_PATH=${B}/libopenamp-build"
 
 
+SRC_URI:remove:corstone1000 =" \
+    file://rwx.patch    \
+"
+
 FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
 SRC_URI:append:corstone1000 = " \
-    file://0001-Platform-corstone1000-Introduce-IO-framework.patch              \
-    file://0002-Platform-corstone1000-Add-IO-test-in-ci_regressions.patch       \
-    file://0003-Platform-corstone1000-Add-soft-crc32-calculation.patch          \
-    file://0004-Platform-corstone1000-calculate-metadata-crc32.patch            \
-    file://0005-Platform-corstone1000-fwu-metadata_read-validate-crc.patch      \
-    file://0006-Platform-corstone1000-Add-common-platform-logger.patch          \
-    file://0007-Platform-corstone1000-Introduce-GPT-parser.patch                \
-    file://0008-Platform-corstone1000-BL1-changes-to-adapt-to-new-fl.patch      \
-    file://0009-Platform-corstone1000-BL2-uses-GPT-layout.patch                 \
-    file://0010-Platform-corstone1000-flash_layout-simplification.patch         \
-    file://0011-corstone1000-make-sure-to-write-fwu-metadata-to-repl.patch      \
-           "
+    file://0001-Platform-corstone1000-make-sure-to-write-fwu-metadata-to-repl.patch      \
+    file://0002-Platform-corstone1000-get-fwu-and-private-metadata-f.patch      \
+    file://0003-Platform-corstone1000-Add-watchdog_reset_timer.patch            \
+    file://0004-Platform-corstone1000-Replace-MCUBOOT-BL1-by-TFM-s.patch        \
+    file://0005-Platform-corstone1000-Replace-MCUBOOT-BL1-by-TFM-s-B.patch      \
+    file://0006-Platform-corstone1000-Reorganize-bl2-files.patch                \
+    file://0007-Platform-corstone1000-Fix-linker-script-comment.patch           \
+    file://0008-Platform-corstone1000-Fix-linkerscripts-copyright-ye.patch      \
+    file://0009-Platform-corstone1000-fix-flash-reading-issue-for-fi.patch      \
+    file://0010-Platform-corstone1000-Adds-compiler-flags-to-FWU-age.patch      \
+    file://0011-Platform-corstone1000-adjust-PS-asset-configuration.patch       \
+    file://0012-Platform-corstone1000-Increase-number-of-assets.patch           \
+    file://corstone1000/rwx.patch                                               \
+    "
+
+# TF-M ships patches for external dependencies that needs to be applied
+apply_tfm_patches() {
+    find ${S}/lib/ext/qcbor -type f -name '*.patch' -print0 | sort -z | xargs -r -t -0 -n 1 patch -p1 -d ${S}/../qcbor/ -i
+    find ${S}/lib/ext/mbedcrypto -type f -name '*.patch' -print0 | sort -z | xargs -r -t -0 -n 1 patch -p1 -d ${S}/../mbedtls/ -i
+    find ${S}/lib/ext/mcuboot -type f -name '*.patch' -print0 | sort -z | xargs -r -t -0 -n 1 patch -p1 -d ${S}/../mcuboot/ -i
+    find ${S}/lib/ext/tf-m-tests -type f -name '*.patch' -print0 | sort -z | xargs -r -t -0 -n 1 patch -p1 -d ${S}/../tf-m-tests/ -i
+}
+
+do_patch[postfuncs] += "apply_tfm_patches"
 
 do_install() {
   install -D -p -m 0644 ${B}/install/outputs/tfm_s_signed.bin ${D}/firmware/tfm_s_signed.bin
   install -D -p -m 0644 ${B}/install/outputs/bl2_signed.bin ${D}/firmware/bl2_signed.bin
-  install -D -p -m 0644 ${B}/install/outputs/bl1.bin ${D}/firmware/bl1.bin
+  install -D -p -m 0644 ${B}/install/outputs/bl1_1.bin ${D}/firmware/bl1_1.bin
+  install -D -p -m 0644 ${B}/install/outputs/bl1_provisioning_bundle.bin ${D}/firmware/bl1_provisioning_bundle.bin
 }
+
+create_bl1_image(){
+    dd conv=notrunc bs=1 if=${D}/firmware/bl1_1.bin of=${D}/firmware/bl1.bin seek=0
+    dd conv=notrunc bs=1 if=${D}/firmware/bl1_provisioning_bundle.bin of=${D}/firmware/bl1.bin seek=40960
+}
+do_install[postfuncs] += "create_bl1_image"
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.7.%.bbappend b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.7.%.bbappend
index ec0e483..a558cfe 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.7.%.bbappend
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.7.%.bbappend
@@ -4,3 +4,6 @@
 MACHINE_TFM_REQUIRE:corstone1000 = "trusted-firmware-m-1.7.0-corstone1000.inc"
 
 require ${MACHINE_TFM_REQUIRE}
+
+COMPATIBLE_MACHINE:tc = "(tc1)"
+TFM_PLATFORM:tc = "arm/rss/tc"
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/tc/bootargs.cfg b/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/tc/bootargs.cfg
index 8c31602..a06c44f 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/tc/bootargs.cfg
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/tc/bootargs.cfg
@@ -1,2 +1,3 @@
 CONFIG_USE_BOOTARGS=y
-CONFIG_BOOTARGS="console=ttyAMA0 debug user_debug=31 earlycon=pl011,0x7ff80000 loglevel=9 androidboot.hardware=total_compute androidboot.boot_devices=1c050000.mmci ip=dhcp androidboot.selinux=permissive allow_mismatched_32bit_el0"
+CONFIG_BOOTARGS="console=ttyAMA0 debug user_debug=31 earlycon=pl011,0x7ff80000 loglevel=9 androidboot.hardware=total_compute androidboot.boot_devices=1c050000.mmci androidboot.selinux=permissive allow_mismatched_32bit_el0"
+CONFIG_BOOTDELAY=0
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-n1sdp.inc b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-n1sdp.inc
index 629ea04..0d557f3 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-n1sdp.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware-n1sdp.inc
@@ -1,8 +1,3 @@
-# Align with N1SDP-2022.06.22 release
-SRCREV_edk2           = "b24306f15daa2ff8510b06702114724b33895d3c"
-SRCREV_edk2-platforms = "fdaf4eb69a8b6839aecf6d3bdd938aa5c34a8a17"
-PV .= "+git${SRCPV}"
-
 # N1SDP specific EDK2 configurations
 EDK2_BUILD_RELEASE = "0"
 EDK2_PLATFORM      = "n1sdp"
@@ -20,8 +15,14 @@
 
 SRC_URI:append = "\
     file://0001-Platform-ARM-N1sdp-Add-support-to-parse-NT_FW_CONFIG.patch;patchdir=edk2-platforms \
-    file://0002-Platform-ARM-N1Sdp-Fix-RemoteDdrSize-cast.patch;patchdir=edk2-platforms            \
+    file://0002-Platform-ARM-N1Sdp-Fix-RemoteDdrSize-cast.patch;patchdir=edk2-platforms \
     file://0003-Platform-ARM-N1Sdp-Modify-the-IRQ-ID-of-Debug-UART-a.patch;patchdir=edk2-platforms \
+    file://0004-Silicon-ARM-NeoverseN1Soc-Enable-SCP-QSPI-flash-regi.patch;patchdir=edk2-platforms \
+    file://0005-Platform-ARM-N1Sdp-NOR-flash-library-for-N1Sdp.patch;patchdir=edk2-platforms \
+    file://0006-Platform-ARM-N1Sdp-NOR-flash-Dxe-Driver-for-N1Sdp.patch;patchdir=edk2-platforms \
+    file://0007-Platform-ARM-N1Sdp-Persistent-storage-for-N1Sdp.patch;patchdir=edk2-platforms \
+    file://0008-Platform-ARM-N1Sdp-Enable-FaultTolerantWrite-Dxe-dri.patch;patchdir=edk2-platforms \
+    file://0009-Platform-ARM-N1Sdp-manually-poll-QSPI-status-bit-aft.patch;patchdir=edk2-platforms \
 "
 
 do_deploy:append() {
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0001-Platform-ARM-N1sdp-Add-support-to-parse-NT_FW_CONFIG.patch b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0001-Platform-ARM-N1sdp-Add-support-to-parse-NT_FW_CONFIG.patch
index e5526dd..c7f163b 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0001-Platform-ARM-N1sdp-Add-support-to-parse-NT_FW_CONFIG.patch
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0001-Platform-ARM-N1sdp-Add-support-to-parse-NT_FW_CONFIG.patch
@@ -1,7 +1,7 @@
-From fa3fd24ffbc987e952a2e5610a7b02556afd2087 Mon Sep 17 00:00:00 2001
+From 928cb457b9ab2abefbacad655eefdde943b4ee9a Mon Sep 17 00:00:00 2001
 From: sahil <sahil@arm.com>
 Date: Thu, 17 Mar 2022 16:28:05 +0530
-Subject: [PATCH 1/3] Platform/ARM/N1sdp: Add support to parse NT_FW_CONFIG
+Subject: [PATCH] Platform/ARM/N1sdp: Add support to parse NT_FW_CONFIG
 
 NT_FW_CONFIG DTB contains platform information passed by
 Tf-A boot stage.
@@ -13,8 +13,7 @@
 Signed-off-by: Adam Johnston <adam.johnston@arm.com>
 Signed-off-by: Xueliang Zhong <xueliang.zhong@arm.com>
 Signed-off-by: sahil <sahil@arm.com>
-Change-Id: Ib82571280bf1ca5febe5766e618de09e7b70bb02
-
+Change-Id: I54a86277719607eb00d4a472fae8f13c180eafca
 ---
  .../ConfigurationManager.c                    |  24 ++--
  .../ConfigurationManagerDxe.inf               |   3 +-
@@ -27,7 +26,7 @@
  8 files changed, 152 insertions(+), 25 deletions(-)
 
 diff --git a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
-index f50623ae..e023d47c 100644
+index a6b4cb0e..c15020f5 100644
 --- a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
 +++ b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
 @@ -1,7 +1,7 @@
@@ -35,7 +34,7 @@
    Configuration Manager Dxe

  

 -  Copyright (c) 2021, ARM Limited. All rights reserved.<BR>

-+  Copyright (c) 2021 - 2022, ARM Limited. All rights reserved.<BR>

++  Copyright (c) 2021 - 2023, ARM Limited. All rights reserved.<BR>

  

    SPDX-License-Identifier: BSD-2-Clause-Patent

  

@@ -139,7 +138,7 @@
    // Configuration Manager Protocol

    Status = InitializePlatformRepository (

 diff --git a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf
-index 4f8e7f13..fb59c295 100644
+index 4f8e7f13..a4e8b783 100644
 --- a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf
 +++ b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf
 @@ -1,7 +1,7 @@
@@ -147,7 +146,7 @@
  #  Configuration Manager Dxe

  #

 -#  Copyright (c) 2021, ARM Limited. All rights reserved.<BR>

-+#  Copyright (c) 2021 - 2022, ARM Limited. All rights reserved.<BR>

++#  Copyright (c) 2021 - 2023, ARM Limited. All rights reserved.<BR>

  #

  #  SPDX-License-Identifier: BSD-2-Clause-Patent

  #

@@ -160,14 +159,14 @@
    UefiBootServicesTableLib

    UefiDriverEntryPoint

 diff --git a/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h b/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h
-index 097160c7..63cebaf0 100644
+index 097160c7..4966011e 100644
 --- a/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h
 +++ b/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h
 @@ -1,6 +1,6 @@
  /** @file

  *

 -* Copyright (c) 2018 - 2020, ARM Limited. All rights reserved.

-+* Copyright (c) 2018 - 2022, ARM Limited. All rights reserved.

++* Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.

  *

  * SPDX-License-Identifier: BSD-2-Clause-Patent

  *

@@ -204,14 +203,14 @@
 +

  #endif

 diff --git a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/AArch64/Helper.S b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/AArch64/Helper.S
-index 8d2069de..88ed640d 100644
+index 8d2069de..a0b89a7b 100644
 --- a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/AArch64/Helper.S
 +++ b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/AArch64/Helper.S
 @@ -1,6 +1,6 @@
  /** @file

  *

 -*  Copyright (c) 2019 - 2020, ARM Limited. All rights reserved.

-+*  Copyright (c) 2019 - 2022, ARM Limited. All rights reserved.

++*  Copyright (c) 2019 - 2023, ARM Limited. All rights reserved.

  *

  *  SPDX-License-Identifier: BSD-2-Clause-Patent

  *

@@ -225,14 +224,14 @@
  

  //

 diff --git a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.c b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.c
-index c0effd37..fabe902c 100644
+index c0effd37..2f753be7 100644
 --- a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.c
 +++ b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.c
 @@ -1,6 +1,6 @@
  /** @file

  

 -  Copyright (c) 2018-2021, ARM Limited. All rights reserved.<BR>

-+  Copyright (c) 2018 - 2022, ARM Limited. All rights reserved.<BR>

++  Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.<BR>

  

    SPDX-License-Identifier: BSD-2-Clause-Patent

  

@@ -270,7 +269,7 @@
  };

  

 diff --git a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.inf b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.inf
-index 96e590cd..6f9c9d5a 100644
+index 96e590cd..78f309c3 100644
 --- a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.inf
 +++ b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLib.inf
 @@ -1,7 +1,7 @@
@@ -278,7 +277,7 @@
  #  Platform Library for N1Sdp.

  #

 -#  Copyright (c) 2018-2021, ARM Limited. All rights reserved.<BR>

-+#  Copyright (c) 2018 - 2022, ARM Limited. All rights reserved.<BR>

++#  Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.<BR>

  #

  #  SPDX-License-Identifier: BSD-2-Clause-Patent

  #

@@ -308,14 +307,14 @@
    gArmMpCoreInfoPpiGuid

 +  gNtFwConfigDtInfoPpiGuid

 diff --git a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c
-index 339fa07b..b58bda4b 100644
+index 339fa07b..1d53ec75 100644
 --- a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c
 +++ b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c
 @@ -1,6 +1,6 @@
  /** @file

  

 -  Copyright (c) 2018 - 2021, ARM Limited. All rights reserved.<BR>

-+  Copyright (c) 2018 - 2022, ARM Limited. All rights reserved.<BR>

++  Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.<BR>

  

    SPDX-License-Identifier: BSD-2-Clause-Patent

  

@@ -442,7 +441,7 @@
                               NEOVERSEN1SOC_DRAM_BLOCK1_SIZE / SIZE_1GB) *

                              (UINT64)SIZE_1GB);

 diff --git a/Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec b/Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec
-index d59f25a5..4dea8fe1 100644
+index d59f25a5..9e257ebd 100644
 --- a/Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec
 +++ b/Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec
 @@ -1,7 +1,7 @@
@@ -450,7 +449,7 @@
  #  Describes the entire platform configuration.

  #

 -#  Copyright (c) 2018 - 2021, ARM Limited. All rights reserved.<BR>

-+#  Copyright (c) 2018 - 2022, ARM Limited. All rights reserved.<BR>

++#  Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.<BR>

  #

  #  SPDX-License-Identifier: BSD-2-Clause-Patent

  #

@@ -470,6 +469,3 @@
 +

 +[Ppis]

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

--- 
-2.37.2
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0002-Platform-ARM-N1Sdp-Fix-RemoteDdrSize-cast.patch b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0002-Platform-ARM-N1Sdp-Fix-RemoteDdrSize-cast.patch
index 1c097fc..5e63417 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0002-Platform-ARM-N1Sdp-Fix-RemoteDdrSize-cast.patch
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0002-Platform-ARM-N1Sdp-Fix-RemoteDdrSize-cast.patch
@@ -1,7 +1,7 @@
-From 73aab76042ae34fa4b07414c1830129e572dcd65 Mon Sep 17 00:00:00 2001
+From ba3ed154863d1acd0996178beaf3a2bc693b938c Mon Sep 17 00:00:00 2001
 From: sahil <sahil@arm.com>
 Date: Wed, 20 Apr 2022 12:24:41 +0530
-Subject: [PATCH 2/3] Platform/ARM/N1Sdp: Fix RemoteDdrSize cast
+Subject: [PATCH] Platform/ARM/N1Sdp: Fix RemoteDdrSize cast
 
 RemoteDdrSize calculation wraps around when booting N1Sdp in
 multichip mode. Casting it to UINT64 to fix the issue.
@@ -10,15 +10,14 @@
 Signed-off-by: Adam Johnston <adam.johnston@arm.com>
 Signed-off-by: Xueliang Zhong <xueliang.zhong@arm.com>
 Signed-off-by: sahil <sahil@arm.com>
-Change-Id: I2c2a70c2ab046337236fba92d25dec5905ccd117
-
+Change-Id: Ic51269a8d67669684a5f056701cfbef6beb23da2
 ---
  .../ConfigurationManagerDxe/ConfigurationManager.c              | 2 +-
  Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c  | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
-index e023d47c..36b5fc9e 100644
+index c15020f5..b11c0425 100644
 --- a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
 +++ b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
 @@ -1254,7 +1254,7 @@ InitializePlatformRepository (
@@ -31,7 +30,7 @@
      // Update Remote DDR Region1

      PlatRepoInfo->MemAffInfo[REMOTE_DDR_REGION1].ProximityDomain = 1;

 diff --git a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c
-index b58bda4b..fbc9b05e 100644
+index 1d53ec75..5cacd437 100644
 --- a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c
 +++ b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c
 @@ -157,7 +157,7 @@ ArmPlatformGetVirtualMemoryMap (
@@ -43,6 +42,3 @@
  

      BuildResourceDescriptorHob (

        EFI_RESOURCE_SYSTEM_MEMORY,

--- 
-2.37.2
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0003-Platform-ARM-N1Sdp-Modify-the-IRQ-ID-of-Debug-UART-a.patch b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0003-Platform-ARM-N1Sdp-Modify-the-IRQ-ID-of-Debug-UART-a.patch
index f0de02e..cafc299 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0003-Platform-ARM-N1Sdp-Modify-the-IRQ-ID-of-Debug-UART-a.patch
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0003-Platform-ARM-N1Sdp-Modify-the-IRQ-ID-of-Debug-UART-a.patch
@@ -1,7 +1,7 @@
-From adc66d99663f71ec97313c40b0d00a908f292c30 Mon Sep 17 00:00:00 2001
+From 2ccb463274d0c04f1e3253194ea6eee80c31cb49 Mon Sep 17 00:00:00 2001
 From: Himanshu Sharma <Himanshu.Sharma@arm.com>
 Date: Mon, 30 May 2022 10:53:30 +0000
-Subject: [PATCH 3/3] Platform/ARM/N1Sdp: Modify the IRQ ID of Debug UART and
+Subject: [PATCH] Platform/ARM/N1Sdp: Modify the IRQ ID of Debug UART and
  routing it to IOFPGA UART1
 
 In DBG2 table, IRQ ID was set as 0 for the UART. This overwrote the
@@ -16,15 +16,14 @@
 Signed-off-by: Adam Johnston <adam.johnston@arm.com>
 Signed-off-by: Xueliang Zhong <xueliang.zhong@arm.com>
 Signed-off-by: Himanshu Sharma <Himanshu.Sharma@arm.com>
-Change-Id: I6640c3c8f77afd233304ce9cb06dcf80a8659c16
-
+Change-Id: Ib35fecc57f1d8c496135c18dbebd0be0a4b76041
 ---
  .../ConfigurationManagerDxe/ConfigurationManager.c        | 2 +-
  Platform/ARM/N1Sdp/N1SdpPlatform.dsc                      | 8 ++++----
  2 files changed, 5 insertions(+), 5 deletions(-)
 
 diff --git a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
-index 36b5fc9e..e8873200 100644
+index b11c0425..44046a00 100644
 --- a/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
 +++ b/Platform/ARM/N1Sdp/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
 @@ -320,7 +320,7 @@ EDKII_PLATFORM_REPOSITORY_INFO N1sdpRepositoryInfo = {
@@ -37,7 +36,7 @@
      FixedPcdGet32 (PcdSerialDbgUartClkInHz),                // Clock

      EFI_ACPI_DBG2_PORT_SUBTYPE_SERIAL_ARM_PL011_UART        // Port subtype

 diff --git a/Platform/ARM/N1Sdp/N1SdpPlatform.dsc b/Platform/ARM/N1Sdp/N1SdpPlatform.dsc
-index 865dd04d..878c8f2f 100644
+index d04b22d3..676ab677 100644
 --- a/Platform/ARM/N1Sdp/N1SdpPlatform.dsc
 +++ b/Platform/ARM/N1Sdp/N1SdpPlatform.dsc
 @@ -4,7 +4,7 @@
@@ -45,7 +44,7 @@
  # conform to EFI/Framework standards.

  #

 -# Copyright (c) 2018 - 2021, ARM Limited. All rights reserved.<BR>

-+# Copyright (c) 2018 - 2022, ARM Limited. All rights reserved.<BR>

++# Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.<BR>

  #

  # SPDX-License-Identifier: BSD-2-Clause-Patent

  #

@@ -62,6 +61,3 @@
  

    # SBSA Watchdog

    gArmTokenSpaceGuid.PcdGenericWatchdogEl2IntrNum|93

--- 
-2.37.2
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0004-Silicon-ARM-NeoverseN1Soc-Enable-SCP-QSPI-flash-regi.patch b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0004-Silicon-ARM-NeoverseN1Soc-Enable-SCP-QSPI-flash-regi.patch
new file mode 100644
index 0000000..264d262
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0004-Silicon-ARM-NeoverseN1Soc-Enable-SCP-QSPI-flash-regi.patch
@@ -0,0 +1,57 @@
+From e4b0fced6f3fd3c8ce5ab4d3aae97b880e7e07b0 Mon Sep 17 00:00:00 2001
+From: sahil <sahil@arm.com>
+Date: Mon, 2 May 2022 17:43:17 +0530
+Subject: [PATCH] Silicon/ARM/NeoverseN1Soc: Enable SCP QSPI flash region
+
+Enable SCP QSPI flash region access by adding it in the PlatformLibMem
+
+Upstream-Status: Pending
+Signed-off-by: Xueliang Zhong <xueliang.zhong@arm.com>
+Signed-off-by: sahil <sahil@arm.com>
+Change-Id: I3ff832746ca94974ed72309eebe00e0024c47005
+---
+ Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h         | 4 ++++
+ .../NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c    | 8 +++++++-
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h b/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h
+index 4966011e..c7219136 100644
+--- a/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h
++++ b/Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h
+@@ -41,6 +41,10 @@
+ #define NEOVERSEN1SOC_EXP_PERIPH_BASE0               0x1C000000

+ #define NEOVERSEN1SOC_EXP_PERIPH_BASE0_SZ            0x1300000

+ 

++// SCP QSPI flash device

++#define NEOVERSEN1SOC_SCP_QSPI_AHB_BASE              0x18000000

++#define NEOVERSEN1SOC_SCP_QSPI_AHB_SZ                0x2000000

++

+ /*

+  * Platform information structure stored in Non-secure SRAM. Platform

+  * information are passed from the trusted firmware with the below structure

+diff --git a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c
+index 5cacd437..8bb94074 100644
+--- a/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c
++++ b/Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c
+@@ -15,7 +15,7 @@
+ #include <NeoverseN1Soc.h>

+ 

+ // The total number of descriptors, including the final "end-of-table" descriptor.

+-#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS 19

++#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS 20

+ 

+ /** A helper function to locate the NtFwConfig PPI and get the base address of

+   NT_FW_CONFIG DT from which values are obtained using FDT helper functions.

+@@ -283,6 +283,12 @@ ArmPlatformGetVirtualMemoryMap (
+   VirtualMemoryTable[Index].Length          = NEOVERSEN1SOC_EXP_PERIPH_BASE0_SZ;

+   VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE;

+ 

++  // SCP QSPI flash device

++  VirtualMemoryTable[++Index].PhysicalBase  = NEOVERSEN1SOC_SCP_QSPI_AHB_BASE;

++  VirtualMemoryTable[Index].VirtualBase     = NEOVERSEN1SOC_SCP_QSPI_AHB_BASE;

++  VirtualMemoryTable[Index].Length          = NEOVERSEN1SOC_SCP_QSPI_AHB_SZ;

++  VirtualMemoryTable[Index].Attributes      = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE;

++

+   if (PlatInfo->MultichipMode == 1) {

+     //Remote DDR (2GB)

+     VirtualMemoryTable[++Index].PhysicalBase  = PcdGet64 (PcdExtMemorySpace) +

diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0005-Platform-ARM-N1Sdp-NOR-flash-library-for-N1Sdp.patch b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0005-Platform-ARM-N1Sdp-NOR-flash-library-for-N1Sdp.patch
new file mode 100644
index 0000000..eabbaf9
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0005-Platform-ARM-N1Sdp-NOR-flash-library-for-N1Sdp.patch
@@ -0,0 +1,119 @@
+From 70e79ba5300f01a13422452c29e26c69042a0c8c Mon Sep 17 00:00:00 2001
+From: sahil <sahil@arm.com>
+Date: Mon, 2 May 2022 18:50:08 +0530
+Subject: [PATCH] Platform/ARM/N1Sdp: NOR flash library for N1Sdp
+
+Add NOR flash library, this library provides APIs for getting the list
+of NOR flash devices on the platform.
+
+Upstream-Status: Pending
+Signed-off-by: Xueliang Zhong <xueliang.zhong@arm.com>
+Signed-off-by: sahil <sahil@arm.com>
+Change-Id: I39ad4143b7fad7e33b3b151a019a74f23e0ed441
+---
+ .../Library/NorFlashLib/NorFlashLib.c         | 52 +++++++++++++++++++
+ .../Library/NorFlashLib/NorFlashLib.inf       | 36 +++++++++++++
+ 2 files changed, 88 insertions(+)
+ create mode 100644 Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.c
+ create mode 100644 Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf
+
+diff --git a/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.c b/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.c
+new file mode 100644
+index 00000000..eee3d1c6
+--- /dev/null
++++ b/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.c
+@@ -0,0 +1,52 @@
++/** @file
++  NOR flash lib for N1Sdp
++
++  Copyright (c) 2023, ARM Limited. All rights reserved.<BR>
++
++  SPDX-License-Identifier: BSD-2-Clause-Patent
++
++**/
++
++#include <Library/DebugLib.h>
++#include <Library/IoLib.h>
++#include <Library/NorFlashPlatformLib.h>
++#include <NeoverseN1Soc.h>
++#include <PiDxe.h>
++
++#define FW_ENV_REGION_BASE            FixedPcdGet32 (PcdFlashNvStorageVariableBase)
++#define FW_ENV_REGION_SIZE            (FixedPcdGet32 (PcdFlashNvStorageVariableSize) + \
++                                      FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) + \
++                                      FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize))
++
++STATIC NOR_FLASH_DESCRIPTION mNorFlashDevices[] = {
++  {
++    /// Environment variable region
++    NEOVERSEN1SOC_SCP_QSPI_AHB_BASE,                    ///< device base
++    FW_ENV_REGION_BASE,                                 ///< region base
++    FW_ENV_REGION_SIZE,                                 ///< region size
++    SIZE_4KB,                                           ///< block size
++  },
++};
++
++/**
++  Get NOR flash region info
++
++  @param[out]    NorFlashDevices    NOR flash regions info.
++  @param[out]    Count              number of flash instance.
++
++  @retval        EFI_SUCCESS        Success.
++**/
++EFI_STATUS
++NorFlashPlatformGetDevices (
++  OUT NOR_FLASH_DESCRIPTION   **NorFlashDevices,
++  OUT UINT32                  *Count
++  )
++{
++  if ((NorFlashDevices == NULL) || (Count == NULL)) {
++    return EFI_INVALID_PARAMETER;
++  }
++
++  *NorFlashDevices = mNorFlashDevices;
++  *Count = ARRAY_SIZE (mNorFlashDevices);
++  return EFI_SUCCESS;
++}
+diff --git a/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf b/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf
+new file mode 100644
+index 00000000..784856c8
+--- /dev/null
++++ b/Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf
+@@ -0,0 +1,36 @@
++## @file
++#  NOR flash lib for N1Sdp
++#
++#  Copyright (c) 2023, ARM Limited. All rights reserved.<BR>
++#
++#  SPDX-License-Identifier: BSD-2-Clause-Patent
++#
++##
++
++[Defines]
++  INF_VERSION                    = 0x0001001B
++  BASE_NAME                      = NorFlashN1SdpLib
++  FILE_GUID                      = 7006fcf1-a585-4272-92e3-b286b1dff5bb
++  MODULE_TYPE                    = DXE_DRIVER
++  VERSION_STRING                 = 1.0
++  LIBRARY_CLASS                  = NorFlashPlatformLib
++
++[Sources.common]
++  NorFlashLib.c
++
++[Packages]
++  MdeModulePkg/MdeModulePkg.dec
++  MdePkg/MdePkg.dec
++  Platform/ARM/ARM.dec
++  Silicon/ARM/NeoverseN1Soc/NeoverseN1Soc.dec
++
++[LibraryClasses]
++  BaseLib
++  DebugLib
++  IoLib
++
++[FixedPcd]
++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0006-Platform-ARM-N1Sdp-NOR-flash-Dxe-Driver-for-N1Sdp.patch b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0006-Platform-ARM-N1Sdp-NOR-flash-Dxe-Driver-for-N1Sdp.patch
new file mode 100644
index 0000000..1db94e4
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0006-Platform-ARM-N1Sdp-NOR-flash-Dxe-Driver-for-N1Sdp.patch
@@ -0,0 +1,2538 @@
+From 726f4505970c82db1822b127059519044dc496c8 Mon Sep 17 00:00:00 2001
+From: sahil <sahil@arm.com>
+Date: Mon, 2 May 2022 19:00:40 +0530
+Subject: [PATCH] Platform/ARM/N1Sdp: NOR flash Dxe Driver for N1Sdp
+
+Add NOR flash DXE driver, this brings up NV storage on
+QSPI's flash device using FVB protocol.
+
+Upstream-Status: Pending
+Signed-off-by: Xueliang Zhong <xueliang.zhong@arm.com>
+Signed-off-by: sahil <sahil@arm.com>
+Change-Id: Ica383c2be6d1805daa19afd98d28b943816218dd
+---
+ .../Drivers/CadenceQspiDxe/CadenceQspiDxe.c   | 366 +++++++
+ .../Drivers/CadenceQspiDxe/CadenceQspiDxe.inf |  70 ++
+ .../Drivers/CadenceQspiDxe/CadenceQspiReg.h   |  31 +
+ .../N1Sdp/Drivers/CadenceQspiDxe/NorFlash.c   | 930 ++++++++++++++++++
+ .../N1Sdp/Drivers/CadenceQspiDxe/NorFlash.h   | 484 +++++++++
+ .../Drivers/CadenceQspiDxe/NorFlashFvb.c      | 573 +++++++++++
+ Platform/ARM/N1Sdp/N1SdpPlatform.dec          |   5 +-
+ 7 files changed, 2458 insertions(+), 1 deletion(-)
+ create mode 100644 Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.c
+ create mode 100644 Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.inf
+ create mode 100644 Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiReg.h
+ create mode 100644 Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.c
+ create mode 100644 Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.h
+ create mode 100644 Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlashFvb.c
+
+diff --git a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.c b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.c
+new file mode 100644
+index 00000000..fb1dff3e
+--- /dev/null
++++ b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.c
+@@ -0,0 +1,366 @@
++/** @file
++  NOR flash DXE
++
++  Copyright (c) 2023, ARM Limited. All rights reserved.<BR>
++
++  SPDX-License-Identifier: BSD-2-Clause-Patent
++
++**/
++
++#include <Library/BaseMemoryLib.h>
++#include <Library/DxeServicesTableLib.h>
++#include <Library/HobLib.h>
++#include <Library/MemoryAllocationLib.h>
++#include <Library/NorFlashInfoLib.h>
++#include <Library/PcdLib.h>
++#include <Library/UefiBootServicesTableLib.h>
++#include <Library/UefiLib.h>
++#include <Library/UefiRuntimeLib.h>
++#include <Library/UefiRuntimeServicesTableLib.h>
++
++#include "NorFlash.h"
++
++STATIC NOR_FLASH_INSTANCE   **mNorFlashInstances;
++STATIC UINT32               mNorFlashDeviceCount;
++
++STATIC EFI_EVENT mNorFlashVirtualAddrChangeEvent;
++
++/**
++  Install Fv block onto variable store region
++
++  @param[in]   Instance         Instance of Nor flash variable region.
++
++  @retval      EFI_SUCCESS      The entry point is executed successfully.
++**/
++EFI_STATUS
++EFIAPI
++NorFlashFvbInitialize (
++  IN NOR_FLASH_INSTANCE* Instance
++  )
++{
++  EFI_STATUS      Status;
++  UINT32          FvbNumLba;
++  EFI_BOOT_MODE   BootMode;
++  UINTN           RuntimeMmioRegionSize;
++  UINTN           RuntimeMmioDeviceSize;
++  UINTN           BlockSize;
++
++  DEBUG ((DEBUG_INFO,"NorFlashFvbInitialize\n"));
++
++  BlockSize = Instance->BlockSize;
++
++  // FirmwareVolumeHeader->FvLength is declared to have the Variable area
++  // AND the FTW working area AND the FTW Spare contiguous.
++  ASSERT (PcdGet32 (PcdFlashNvStorageVariableBase) +
++         PcdGet32 (PcdFlashNvStorageVariableSize) ==
++         PcdGet32 (PcdFlashNvStorageFtwWorkingBase));
++  ASSERT (PcdGet32 (PcdFlashNvStorageFtwWorkingBase) +
++         PcdGet32 (PcdFlashNvStorageFtwWorkingSize) ==
++         PcdGet32 (PcdFlashNvStorageFtwSpareBase));
++
++  // Check if the size of the area is at least one block size.
++  ASSERT ((PcdGet32 (PcdFlashNvStorageVariableSize) > 0) &&
++         (PcdGet32 (PcdFlashNvStorageVariableSize) / BlockSize > 0));
++  ASSERT ((PcdGet32 (PcdFlashNvStorageFtwWorkingSize) > 0) &&
++         (PcdGet32 (PcdFlashNvStorageFtwWorkingSize) / BlockSize > 0));
++  ASSERT ((PcdGet32 (PcdFlashNvStorageFtwSpareSize) > 0) &&
++         (PcdGet32 (PcdFlashNvStorageFtwSpareSize) / BlockSize > 0));
++
++  // Ensure the Variable areas are aligned on block size boundaries.
++  ASSERT ((PcdGet32 (PcdFlashNvStorageVariableBase) % BlockSize) == 0);
++  ASSERT ((PcdGet32 (PcdFlashNvStorageFtwWorkingBase) % BlockSize) == 0);
++  ASSERT ((PcdGet32 (PcdFlashNvStorageFtwSpareBase) % BlockSize) == 0);
++
++  Instance->Initialized = TRUE;
++  mFlashNvStorageVariableBase = FixedPcdGet32 (PcdFlashNvStorageVariableBase);
++
++  // Set the index of the first LBA for the FVB.
++  Instance->StartLba = (PcdGet32 (PcdFlashNvStorageVariableBase) -
++                        Instance->RegionBaseAddress) / BlockSize;
++
++  BootMode = GetBootModeHob ();
++  if (BootMode == BOOT_WITH_DEFAULT_SETTINGS) {
++    Status = EFI_INVALID_PARAMETER;
++  } else {
++    // Determine if there is a valid header at the beginning of the NorFlash.
++    Status = ValidateFvHeader (Instance);
++  }
++
++  // Install the Default FVB header if required.
++  if (EFI_ERROR(Status)) {
++    // There is no valid header, so time to install one.
++    DEBUG ((DEBUG_INFO, "%a: The FVB Header is not valid.\n", __FUNCTION__));
++    DEBUG ((DEBUG_INFO, "%a: Installing a correct one for this volume.\n",
++      __FUNCTION__));
++
++    // Erase all the NorFlash that is reserved for variable storage.
++    FvbNumLba = (PcdGet32 (PcdFlashNvStorageVariableSize) +
++                 PcdGet32 (PcdFlashNvStorageFtwWorkingSize) +
++                 PcdGet32 (PcdFlashNvStorageFtwSpareSize)) /
++                 Instance->BlockSize;
++
++    Status = FvbEraseBlocks (
++               &Instance->FvbProtocol,
++               (EFI_LBA)0,
++               FvbNumLba,
++               EFI_LBA_LIST_TERMINATOR
++               );
++    if (EFI_ERROR(Status)) {
++      return Status;
++    }
++
++    // Install all appropriate headers.
++    Status = InitializeFvAndVariableStoreHeaders (Instance);
++    if (EFI_ERROR(Status)) {
++      return Status;
++    }
++
++    // validate FV header again if FV was created successfully.
++    Status = ValidateFvHeader (Instance);
++    if (EFI_ERROR(Status)) {
++      DEBUG ((DEBUG_ERROR, "ValidateFvHeader is failed \n"));
++      return Status;
++    }
++  }
++
++  // The driver implementing the variable read service can now be dispatched;
++  // the varstore headers are in place.
++  Status = gBS->InstallProtocolInterface (
++                  &gImageHandle,
++                  &gEdkiiNvVarStoreFormattedGuid,
++                  EFI_NATIVE_INTERFACE,
++                  NULL
++                  );
++  if (EFI_ERROR (Status)) {
++    DEBUG ((DEBUG_ERROR,
++      "%a: Failed to install gEdkiiNvVarStoreFormattedGuid\n",
++      __FUNCTION__));
++    return Status;
++  }
++
++  // Declare the Non-Volatile storage as EFI_MEMORY_RUNTIME.
++  RuntimeMmioRegionSize = Instance->Size;
++  RuntimeMmioDeviceSize = Instance->RegionBaseAddress - Instance->DeviceBaseAddress;
++
++  Status = gDS->AddMemorySpace (
++                  EfiGcdMemoryTypeMemoryMappedIo,
++                  Instance->RegionBaseAddress,
++                  RuntimeMmioRegionSize,
++                  EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
++                  );
++  ASSERT_EFI_ERROR (Status);
++
++  Status = gDS->AddMemorySpace (
++                  EfiGcdMemoryTypeMemoryMappedIo,
++                  Instance->DeviceBaseAddress,
++                  RuntimeMmioDeviceSize,
++                  EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
++                  );
++  ASSERT_EFI_ERROR (Status);
++
++  Status = gDS->SetMemorySpaceAttributes (
++                  Instance->RegionBaseAddress,
++                  RuntimeMmioRegionSize,
++                  EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
++                  );
++  ASSERT_EFI_ERROR (Status);
++
++  Status = gDS->SetMemorySpaceAttributes (
++                  Instance->DeviceBaseAddress,
++                  RuntimeMmioDeviceSize,
++                  EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
++                  );
++  ASSERT_EFI_ERROR (Status);
++
++  return Status;
++}
++
++/**
++  Fixup internal data so that EFI can be called in virtual mode.
++  convert any pointers in lib to virtual mode.
++
++  @param[in]    Event   The Event that is being processed
++  @param[in]    Context Event Context
++**/
++STATIC
++VOID
++EFIAPI
++NorFlashVirtualNotifyEvent (
++  IN EFI_EVENT        Event,
++  IN VOID             *Context
++  )
++{
++  UINTN Index;
++
++  EfiConvertPointer (0x0, (VOID**)&mFlashNvStorageVariableBase);
++
++  for (Index = 0; Index < mNorFlashDeviceCount; Index++) {
++    EfiConvertPointer (0x0,
++      (VOID**)&mNorFlashInstances[Index]->HostRegisterBaseAddress);
++    EfiConvertPointer (0x0,
++      (VOID**)&mNorFlashInstances[Index]->DeviceBaseAddress);
++    EfiConvertPointer (0x0,
++      (VOID**)&mNorFlashInstances[Index]->RegionBaseAddress);
++
++    // Convert Fvb.
++    EfiConvertPointer (0x0,
++      (VOID**)&mNorFlashInstances[Index]->FvbProtocol.EraseBlocks);
++    EfiConvertPointer (0x0,
++      (VOID**)&mNorFlashInstances[Index]->FvbProtocol.GetAttributes);
++    EfiConvertPointer (0x0,
++      (VOID**)&mNorFlashInstances[Index]->FvbProtocol.GetBlockSize);
++    EfiConvertPointer (0x0,
++      (VOID**)&mNorFlashInstances[Index]->FvbProtocol.GetPhysicalAddress);
++    EfiConvertPointer (0x0,
++      (VOID**)&mNorFlashInstances[Index]->FvbProtocol.Read);
++    EfiConvertPointer (0x0,
++      (VOID**)&mNorFlashInstances[Index]->FvbProtocol.SetAttributes);
++    EfiConvertPointer (0x0,
++      (VOID**)&mNorFlashInstances[Index]->FvbProtocol.Write);
++
++    if (mNorFlashInstances[Index]->ShadowBuffer != NULL) {
++      EfiConvertPointer (0x0, (VOID**)&mNorFlashInstances[Index]->ShadowBuffer);
++    }
++  }
++}
++
++/**
++  Entrypoint of Platform Nor flash DXE driver
++
++  @param[in]  ImageHandle       The firmware allocated handle for the EFI image.
++  @param[in]  SystemTable       A pointer to the EFI System Table.
++
++  @retval     EFI_SUCCESS       The entry point is executed successfully.
++**/
++EFI_STATUS
++EFIAPI
++NorFlashInitialise (
++  IN EFI_HANDLE           ImageHandle,
++  IN EFI_SYSTEM_TABLE     *SystemTable
++  )
++{
++  EFI_STATUS              Status;
++  EFI_PHYSICAL_ADDRESS    HostRegisterBaseAddress;
++  UINT32                  Index;
++  NOR_FLASH_DESCRIPTION*  NorFlashDevices;
++  BOOLEAN                 ContainVariableStorage;
++
++  HostRegisterBaseAddress = PcdGet32 (PcdCadenceQspiDxeRegBaseAddress);
++
++  Status = gDS->AddMemorySpace (
++                  EfiGcdMemoryTypeMemoryMappedIo,
++                  HostRegisterBaseAddress,
++                  SIZE_64KB,
++                  EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
++                  );
++  ASSERT_EFI_ERROR (Status);
++
++  Status = gDS->SetMemorySpaceAttributes (
++                  HostRegisterBaseAddress,
++                  SIZE_64KB,
++                  EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
++                  );
++  ASSERT_EFI_ERROR (Status);
++
++  // Initialize NOR flash instances.
++  Status = NorFlashPlatformGetDevices (&NorFlashDevices, &mNorFlashDeviceCount);
++  if (EFI_ERROR (Status)) {
++    DEBUG ((DEBUG_ERROR,"NorFlashInitialise: Fail to get Nor Flash devices\n"));
++    return Status;
++  }
++
++  mNorFlashInstances = AllocateRuntimePool (sizeof (NOR_FLASH_INSTANCE*) *
++                                            mNorFlashDeviceCount);
++
++  if(mNorFlashInstances == NULL) {
++    DEBUG ((DEBUG_ERROR,
++      "NorFlashInitialise: Failed to allocate mem for NorFlashInstance\n"));
++    return EFI_OUT_OF_RESOURCES;
++  }
++
++  for (Index = 0; Index < mNorFlashDeviceCount; Index++) {
++    // Check if this NOR Flash device contain the variable storage region.
++    ContainVariableStorage =
++        (NorFlashDevices[Index].RegionBaseAddress <=
++         PcdGet32 (PcdFlashNvStorageVariableBase)) &&
++        (PcdGet32 (PcdFlashNvStorageVariableBase) +
++         PcdGet32 (PcdFlashNvStorageVariableSize) <=
++        NorFlashDevices[Index].RegionBaseAddress + NorFlashDevices[Index].Size);
++
++    Status = NorFlashCreateInstance (
++               HostRegisterBaseAddress,
++               NorFlashDevices[Index].DeviceBaseAddress,
++               NorFlashDevices[Index].RegionBaseAddress,
++               NorFlashDevices[Index].Size,
++               Index,
++               NorFlashDevices[Index].BlockSize,
++               ContainVariableStorage,
++               &mNorFlashInstances[Index]
++               );
++    if (EFI_ERROR (Status)) {
++      DEBUG ((DEBUG_ERROR,
++        "NorFlashInitialise: Fail to create instance for NorFlash[%d]\n",
++        Index));
++      continue;
++    }
++    Status = gBS->InstallMultipleProtocolInterfaces (
++                    &mNorFlashInstances[Index]->Handle,
++                    &gEfiDevicePathProtocolGuid,
++                    &mNorFlashInstances[Index]->DevicePath,
++                    &gEfiFirmwareVolumeBlockProtocolGuid,
++                    &mNorFlashInstances[Index]->FvbProtocol,
++                    NULL
++                    );
++    ASSERT_EFI_ERROR (Status);
++  }
++  // Register for the virtual address change event.
++  Status = gBS->CreateEventEx (
++                  EVT_NOTIFY_SIGNAL,
++                  TPL_NOTIFY,
++                  NorFlashVirtualNotifyEvent,
++                  NULL,
++                  &gEfiEventVirtualAddressChangeGuid,
++                  &mNorFlashVirtualAddrChangeEvent
++                  );
++  ASSERT_EFI_ERROR (Status);
++
++  return Status;
++}
++
++/**
++  Lock all pending read/write to Nor flash device
++
++  @param[in]     Context     Nor flash device context structure.
++**/
++VOID
++EFIAPI
++NorFlashLock (
++  IN NOR_FLASH_LOCK_CONTEXT    *Context
++  )
++{
++  if (!EfiAtRuntime ()) {
++    // Raise TPL to TPL_HIGH to stop anyone from interrupting us.
++    Context->OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL);
++  } else {
++    Context->InterruptsEnabled = SaveAndDisableInterrupts ();
++  }
++}
++
++/**
++  Unlock all pending read/write to Nor flash device
++
++  @param[in]     Context     Nor flash device context structure.
++**/
++VOID
++EFIAPI
++NorFlashUnlock (
++  IN NOR_FLASH_LOCK_CONTEXT    *Context
++  )
++{
++  if (!EfiAtRuntime ()) {
++    // Interruptions can resume.
++    gBS->RestoreTPL (Context->OriginalTPL);
++  } else if (Context->InterruptsEnabled) {
++    SetInterruptState (TRUE);
++  }
++}
+diff --git a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.inf b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.inf
+new file mode 100644
+index 00000000..4f20c3ba
+--- /dev/null
++++ b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.inf
+@@ -0,0 +1,70 @@
++## @file
++#  NOR flash DXE
++#
++#  Copyright (c) 2023, ARM Limited. All rights reserved.<BR>
++#
++#  SPDX-License-Identifier: BSD-2-Clause-Patent
++#
++##
++
++[Defines]
++  INF_VERSION                    = 0x0001001B
++  BASE_NAME                      = CadenceQspiDxe
++  FILE_GUID                      = CC8A9713-4442-4A6C-B389-8B46490A0641
++  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
++  VERSION_STRING                 = 0.1
++  ENTRY_POINT                    = NorFlashInitialise
++
++[Sources]
++  CadenceQspiDxe.c
++  NorFlash.c
++  NorFlash.h
++  NorFlashFvb.c
++
++[Packages]
++  EmbeddedPkg/EmbeddedPkg.dec
++  MdeModulePkg/MdeModulePkg.dec
++  MdePkg/MdePkg.dec
++  Platform/ARM/ARM.dec
++  Platform/ARM/N1Sdp/N1SdpPlatform.dec
++
++[LibraryClasses]
++  BaseLib
++  BaseMemoryLib
++  DebugLib
++  DevicePathLib
++  DxeServicesTableLib
++  HobLib
++  IoLib
++  MemoryAllocationLib
++  NorFlashInfoLib
++  NorFlashPlatformLib
++  UefiBootServicesTableLib
++  UefiDriverEntryPoint
++  UefiLib
++  UefiRuntimeLib
++  UefiRuntimeServicesTableLib
++
++[Guids]
++  gEdkiiNvVarStoreFormattedGuid
++  gEfiAuthenticatedVariableGuid
++  gEfiEventVirtualAddressChangeGuid
++  gEfiSystemNvDataFvGuid
++  gEfiVariableGuid
++  gEfiGlobalVariableGuid
++
++[Protocols]
++  gEfiDevicePathProtocolGuid
++  gEfiFirmwareVolumeBlockProtocolGuid
++
++[FixedPcd]
++  gArmN1SdpTokenSpaceGuid.PcdCadenceQspiDxeRegBaseAddress
++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase
++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase
++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
++
++[Depex]
++  gEfiCpuArchProtocolGuid
+diff --git a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiReg.h b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiReg.h
+new file mode 100644
+index 00000000..fe3b327c
+--- /dev/null
++++ b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiReg.h
+@@ -0,0 +1,31 @@
++/** @file
++
++  Copyright (c) 2023, ARM Limited. All rights reserved.<BR>
++
++  SPDX-License-Identifier: BSD-2-Clause-Patent
++
++**/
++
++#ifndef CADENCE_QSPI_REG_H_
++#define CADENCE_QSPI_REG_H_
++
++// QSPI Controller defines
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_OFFSET               0x90
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_EXECUTE              0x01
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_ENABLE          0x01
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BIT_POS         19
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_BIT_POS    16
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_STATUS_BIT           0x02
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_4B         0x03
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_3B         0x02
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_OPCODE_BIT_POS       24
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_READ_ENABLE          0x01
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_READ_BYTE_3B         0x02
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_READEN_BIT_POS       23
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_READBYTE_BIT_POS     20
++
++#define CDNS_QSPI_FLASH_CMD_READ_DATA_REG_OFFSET          0xA0
++
++#define CDNS_QSPI_FLASH_CMD_ADDR_REG_OFFSET               0x94
++
++#endif /* CADENCE_QSPI_REG_H_ */
+diff --git a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.c b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.c
+new file mode 100644
+index 00000000..188c75e2
+--- /dev/null
++++ b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.c
+@@ -0,0 +1,930 @@
++/** @file
++
++  Copyright (c) 2023 ARM Limited. All rights reserved.<BR>
++
++  SPDX-License-Identifier: BSD-2-Clause-Patent
++
++**/
++
++#include <Library/BaseMemoryLib.h>
++#include <Library/MemoryAllocationLib.h>
++#include <Library/NorFlashInfoLib.h>
++#include <Library/PcdLib.h>
++#include <Library/UefiBootServicesTableLib.h>
++#include <Library/UefiLib.h>
++
++#include "NorFlash.h"
++
++STATIC CONST NOR_FLASH_INSTANCE mNorFlashInstanceTemplate = {
++  NOR_FLASH_SIGNATURE, // Signature
++  NULL, // Handle
++
++  FALSE, // Initialized
++  NULL, // Initialize
++
++  0, // HostRegisterBaseAddress
++  0, // DeviceBaseAddress
++  0, // RegionBaseAddress
++  0, // Size
++  0, // BlockSize
++  0, // LastBlock
++  0, // StartLba
++  0, // OffsetLba
++
++  {
++    FvbGetAttributes, // GetAttributes
++    FvbSetAttributes, // SetAttributes
++    FvbGetPhysicalAddress,  // GetPhysicalAddress
++    FvbGetBlockSize,  // GetBlockSize
++    FvbRead,  // Read
++    FvbWrite, // Write
++    FvbEraseBlocks, // EraseBlocks
++    NULL, //ParentHandle
++  }, //  FvbProtoccol;
++  NULL, // ShadowBuffer
++
++  {
++    {
++      {
++        HARDWARE_DEVICE_PATH,
++        HW_VENDOR_DP,
++        {
++          (UINT8)(OFFSET_OF (NOR_FLASH_DEVICE_PATH, End)),
++          (UINT8)(OFFSET_OF (NOR_FLASH_DEVICE_PATH, End) >> 8)
++        }
++      },
++    { 0x0, 0x0, 0x0, { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } },
++  },
++  0,  // Index
++
++  {
++    END_DEVICE_PATH_TYPE,
++    END_ENTIRE_DEVICE_PATH_SUBTYPE,
++    { sizeof (EFI_DEVICE_PATH_PROTOCOL), 0 }
++  }
++
++  }, // DevicePath
++  0 // Flags
++};
++
++/**
++  Execute Flash cmd ctrl and Read Status.
++
++  @param[in]      Instance         NOR flash Instance.
++  @param[in]      Val              Value to be written to Flash cmd ctrl Register.
++
++  @retval         EFI_SUCCESS      Request is executed successfully.
++
++**/
++STATIC
++EFI_STATUS
++CdnsQspiExecuteCommand (
++  IN  NOR_FLASH_INSTANCE    *Instance,
++  IN  UINT32                Val
++  )
++{
++  // Set the command
++  MmioWrite32 (Instance->HostRegisterBaseAddress + CDNS_QSPI_FLASH_CMD_CTRL_REG_OFFSET,
++                Val);
++  // Execute the command
++  MmioWrite32 (Instance->HostRegisterBaseAddress + CDNS_QSPI_FLASH_CMD_CTRL_REG_OFFSET,
++                Val | CDNS_QSPI_FLASH_CMD_CTRL_REG_EXECUTE);
++
++  // Wait until command has been executed
++  while ((MmioRead32 (Instance->HostRegisterBaseAddress + CDNS_QSPI_FLASH_CMD_CTRL_REG_OFFSET)
++          & CDNS_QSPI_FLASH_CMD_CTRL_REG_STATUS_BIT) == CDNS_QSPI_FLASH_CMD_CTRL_REG_STATUS_BIT)
++    continue;
++
++  return EFI_SUCCESS;
++}
++
++/**
++  Create Nor flash Instance for given region.
++
++  @param[in]    HostRegisterBase      Base address of Nor flash controller.
++  @param[in]    NorFlashDeviceBase    Base address of flash device.
++  @param[in]    NorFlashRegionBase    Base address of flash region on device.
++  @param[in]    NorFlashSize          Size of flash region.
++  @param[in]    Index                 Index of given flash region.
++  @param[in]    BlockSize             Block size of NOR flash device.
++  @param[in]    HasVarStore           Boolean set for VarStore on given region.
++  @param[out]   NorFlashInstance      Instance of given flash region.
++
++  @retval       EFI_SUCCESS           On successful creation of NOR flash instance.
++**/
++EFI_STATUS
++NorFlashCreateInstance (
++  IN UINTN                  HostRegisterBase,
++  IN UINTN                  NorFlashDeviceBase,
++  IN UINTN                  NorFlashRegionBase,
++  IN UINTN                  NorFlashSize,
++  IN UINT32                 Index,
++  IN UINT32                 BlockSize,
++  IN BOOLEAN                HasVarStore,
++  OUT NOR_FLASH_INSTANCE**  NorFlashInstance
++  )
++{
++  EFI_STATUS Status;
++  NOR_FLASH_INSTANCE* Instance;
++  NOR_FLASH_INFO *FlashInfo;
++  UINT8 JedecId[3];
++
++  ASSERT(NorFlashInstance != NULL);
++  Instance = AllocateRuntimeCopyPool (sizeof (mNorFlashInstanceTemplate),
++                                      &mNorFlashInstanceTemplate);
++  if (Instance == NULL) {
++    return EFI_OUT_OF_RESOURCES;
++  }
++
++  Instance->HostRegisterBaseAddress = HostRegisterBase;
++  Instance->DeviceBaseAddress       = NorFlashDeviceBase;
++  Instance->RegionBaseAddress       = NorFlashRegionBase;
++  Instance->Size                    = NorFlashSize;
++  Instance->BlockSize               = BlockSize;
++  Instance->LastBlock               = (NorFlashSize / BlockSize) - 1;
++
++  Instance->OffsetLba = (NorFlashRegionBase - NorFlashDeviceBase) / BlockSize;
++
++  CopyGuid (&Instance->DevicePath.Vendor.Guid, &gEfiCallerIdGuid);
++  Instance->DevicePath.Index = (UINT8)Index;
++
++  Status = NorFlashReadID (Instance, JedecId);
++  if (EFI_ERROR (Status)) {
++    goto FreeInstance;
++  }
++
++  Status = NorFlashGetInfo (JedecId, &FlashInfo, TRUE);
++  if (EFI_ERROR (Status)) {
++    goto FreeInstance;
++  }
++
++  NorFlashPrintInfo (FlashInfo);
++
++  Instance->Flags = 0;
++  if (FlashInfo->Flags & NOR_FLASH_WRITE_FSR) {
++    Instance->Flags = NOR_FLASH_POLL_FSR;
++  }
++
++  Instance->ShadowBuffer = AllocateRuntimePool (BlockSize);
++  if (Instance->ShadowBuffer == NULL) {
++    Status = EFI_OUT_OF_RESOURCES;
++    goto FreeInstance;
++  }
++
++  if (HasVarStore) {
++    Instance->Initialize = NorFlashFvbInitialize;
++  }
++
++  *NorFlashInstance = Instance;
++  FreePool (FlashInfo);
++  return EFI_SUCCESS;
++
++FreeInstance:
++  FreePool (Instance);
++  return Status;
++}
++
++/**
++  Check whether NOR flash opertions are Locked.
++
++  @param[in]     Instance         NOR flash Instance.
++  @param[in]     BlockAddress     BlockAddress in NOR flash device.
++
++  @retval        FALSE            If NOR flash is not locked.
++**/
++STATIC
++BOOLEAN
++NorFlashBlockIsLocked (
++  IN NOR_FLASH_INSTANCE     *Instance,
++  IN UINTN                  BlockAddress
++  )
++{
++  return FALSE;
++}
++
++/**
++  Unlock NOR flash operations on given block.
++
++  @param[in]      Instance         NOR flash instance.
++  @param[in]      BlockAddress     BlockAddress in NOR flash device.
++
++  @retval         EFI_SUCCESS      NOR flash operations is unlocked.
++**/
++STATIC
++EFI_STATUS
++NorFlashUnlockSingleBlock (
++  IN NOR_FLASH_INSTANCE     *Instance,
++  IN UINTN                  BlockAddress
++  )
++{
++  return EFI_SUCCESS;
++}
++
++/**
++  Unlock NOR flash operations if it is necessary.
++
++  @param[in]      Instance         NOR flash instance.
++  @param[in]      BlockAddress     BlockAddress in NOR flash device.
++
++  @retval         EFI_SUCCESS      Request is executed successfully.
++**/
++STATIC
++EFI_STATUS
++NorFlashUnlockSingleBlockIfNecessary (
++  IN NOR_FLASH_INSTANCE     *Instance,
++  IN UINTN                  BlockAddress
++  )
++{
++  EFI_STATUS Status;
++
++  Status = EFI_SUCCESS;
++
++  if (!NorFlashBlockIsLocked (Instance, BlockAddress)) {
++    Status = NorFlashUnlockSingleBlock (Instance, BlockAddress);
++  }
++
++  return Status;
++}
++
++/**
++  Enable write to NOR flash device.
++
++  @param[in]      Instance         NOR flash instance.
++
++  @retval         EFI_SUCCESS      Request is executed successfully.
++**/
++STATIC
++EFI_STATUS
++NorFlashEnableWrite (
++  IN  NOR_FLASH_INSTANCE    *Instance
++  )
++{
++
++  UINT32          val;
++
++  DEBUG ((DEBUG_INFO, "NorFlashEnableWrite()\n"));
++  val = (SPINOR_OP_WREN << CDNS_QSPI_FLASH_CMD_CTRL_REG_OPCODE_BIT_POS);
++  if (EFI_ERROR (CdnsQspiExecuteCommand (Instance, val))) {
++    return EFI_DEVICE_ERROR;
++  }
++
++  return EFI_SUCCESS;
++}
++
++/**
++  The following function presumes that the block has already been unlocked.
++
++  @param[in]      Instance         NOR flash instance.
++  @param[in]      BlockAddress     Block address within the variable region.
++
++  @retval         EFI_SUCCESS      Request is executed successfully.
++ **/
++EFI_STATUS
++NorFlashEraseSingleBlock (
++  IN NOR_FLASH_INSTANCE     *Instance,
++  IN UINTN                  BlockAddress
++  )
++{
++
++  UINT32 DevConfigVal;
++  UINT32 EraseOffset;
++
++  EraseOffset = 0x0;
++
++  DEBUG ((DEBUG_INFO, "NorFlashEraseSingleBlock(BlockAddress=0x%08x)\n",
++    BlockAddress));
++
++  if (EFI_ERROR (NorFlashEnableWrite (Instance))) {
++    return EFI_DEVICE_ERROR;
++  }
++
++  EraseOffset = BlockAddress - Instance->DeviceBaseAddress;
++
++  MmioWrite32 (Instance->HostRegisterBaseAddress + CDNS_QSPI_FLASH_CMD_ADDR_REG_OFFSET,
++                EraseOffset);
++
++  DevConfigVal = SPINOR_OP_BE_4K << CDNS_QSPI_FLASH_CMD_CTRL_REG_OPCODE_BIT_POS |
++                 CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_ENABLE << CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BIT_POS |
++                 CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_3B << CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_BIT_POS;
++
++  if (EFI_ERROR (CdnsQspiExecuteCommand (Instance, DevConfigVal))) {
++    return EFI_DEVICE_ERROR;
++  }
++
++  return EFI_SUCCESS;
++}
++
++/**
++  This function unlock and erase an entire NOR Flash block.
++
++  @param[in]     Instance       NOR flash Instance of variable store region.
++  @param[in]     BlockAddress   Block address within the variable store region.
++
++  @retval        EFI_SUCCESS    The erase and unlock successfully completed.
++**/
++EFI_STATUS
++NorFlashUnlockAndEraseSingleBlock (
++  IN NOR_FLASH_INSTANCE     *Instance,
++  IN UINTN                  BlockAddress
++  )
++{
++  EFI_STATUS              Status;
++  UINTN                   Index;
++  NOR_FLASH_LOCK_CONTEXT  Lock;
++  NorFlashLock (&Lock);
++
++  Index = 0;
++  do {
++    // Unlock the block if we have to
++    Status = NorFlashUnlockSingleBlockIfNecessary (Instance, BlockAddress);
++    if (EFI_ERROR (Status)) {
++      break;
++    }
++    Status = NorFlashEraseSingleBlock (Instance, BlockAddress);
++    if (EFI_ERROR (Status)) {
++      break;
++    }
++    Index++;
++  } while ((Index < NOR_FLASH_ERASE_RETRY) && (Status == EFI_WRITE_PROTECTED));
++
++  if (Index == NOR_FLASH_ERASE_RETRY) {
++    DEBUG ((DEBUG_ERROR,
++      "EraseSingleBlock(BlockAddress=0x%08x: Block Locked Error (try to erase %d times)\n",
++      BlockAddress,Index));
++  }
++
++  NorFlashUnlock (&Lock);
++
++  return Status;
++}
++
++/**
++  Write a single word to given location.
++
++  @param[in]    Instance     NOR flash Instance of variable store region.
++  @param[in]    WordAddress  The address in NOR flash to write given word.
++  @param[in]    WriteData    The data to write into NOR flash location.
++
++  @retval       EFI_SUCCESS  The write is completed.
++**/
++STATIC
++EFI_STATUS
++NorFlashWriteSingleWord (
++  IN NOR_FLASH_INSTANCE     *Instance,
++  IN UINTN                  WordAddress,
++  IN UINT32                 WriteData
++  )
++{
++  DEBUG ((DEBUG_INFO,
++    "NorFlashWriteSingleWord(WordAddress=0x%08x, WriteData=0x%08x)\n",
++    WordAddress, WriteData));
++
++  if (EFI_ERROR (NorFlashEnableWrite (Instance))) {
++    return EFI_DEVICE_ERROR;
++  }
++  MmioWrite32 (WordAddress, WriteData);
++  return EFI_SUCCESS;
++}
++
++/**
++  Write a full block to given location.
++
++  @param[in]    Instance           NOR flash Instance of variable store region.
++  @param[in]    Lba                The logical block address in NOR flash.
++  @param[in]    DataBuffer         The data to write into NOR flash location.
++  @param[in]    BlockSizeInWords   The number of bytes to write.
++
++  @retval       EFI_SUCCESS        The write is completed.
++**/
++STATIC
++EFI_STATUS
++NorFlashWriteFullBlock (
++  IN NOR_FLASH_INSTANCE     *Instance,
++  IN EFI_LBA                Lba,
++  IN UINT32                 *DataBuffer,
++  IN UINT32                 BlockSizeInWords
++  )
++{
++  EFI_STATUS              Status;
++  UINTN                   WordAddress;
++  UINT32                  WordIndex;
++  UINTN                   BlockAddress;
++  NOR_FLASH_LOCK_CONTEXT  Lock;
++
++  Status = EFI_SUCCESS;
++
++  // Get the physical address of the block
++  BlockAddress = GET_NOR_BLOCK_ADDRESS (Instance->RegionBaseAddress, Lba,
++                   BlockSizeInWords * 4);
++
++  // Start writing from the first address at the start of the block
++  WordAddress = BlockAddress;
++
++  NorFlashLock (&Lock);
++
++  Status = NorFlashUnlockAndEraseSingleBlock (Instance, BlockAddress);
++  if (EFI_ERROR (Status)) {
++    DEBUG ((DEBUG_ERROR,
++      "WriteSingleBlock: ERROR - Failed to Unlock and Erase the single block at 0x%X\n",
++      BlockAddress));
++    goto EXIT;
++  }
++
++  for (WordIndex=0;
++       WordIndex < BlockSizeInWords;
++       WordIndex++, DataBuffer++, WordAddress += 4) {
++    Status = NorFlashWriteSingleWord (Instance, WordAddress, *DataBuffer);
++    if (EFI_ERROR (Status)) {
++      goto EXIT;
++    }
++  }
++
++EXIT:
++  NorFlashUnlock (&Lock);
++
++  if (EFI_ERROR (Status)) {
++    DEBUG ((DEBUG_ERROR,
++      "NOR FLASH Programming [WriteSingleBlock] failed at address 0x%08x. Exit Status = %r.\n",
++      WordAddress, Status));
++  }
++  return Status;
++}
++
++/**
++  Write a full  block.
++
++  @param[in]    Instance           NOR flash Instance of variable store region.
++  @param[in]    Lba                The starting logical block index.
++  @param[in]    BufferSizeInBytes  The number of bytes to read.
++  @param[in]    Buffer             The pointer to a caller-allocated buffer that
++                                   contains the source for the write.
++
++  @retval       EFI_SUCCESS        The write is completed.
++**/
++EFI_STATUS
++NorFlashWriteBlocks (
++  IN NOR_FLASH_INSTANCE     *Instance,
++  IN EFI_LBA                Lba,
++  IN UINTN                  BufferSizeInBytes,
++  IN VOID                   *Buffer
++  )
++{
++  UINT32          *pWriteBuffer;
++  EFI_STATUS      Status;
++  EFI_LBA         CurrentBlock;
++  UINT32          BlockSizeInWords;
++  UINT32          NumBlocks;
++  UINT32          BlockCount;
++
++  Status = EFI_SUCCESS;
++  // The buffer must be valid
++  if (Buffer == NULL) {
++    return EFI_INVALID_PARAMETER;
++  }
++
++  // We must have some bytes to read
++  DEBUG ((DEBUG_INFO, "NorFlashWriteBlocks: BufferSizeInBytes=0x%x\n",
++    BufferSizeInBytes));
++  if (BufferSizeInBytes == 0) {
++    return EFI_BAD_BUFFER_SIZE;
++  }
++
++  // The size of the buffer must be a multiple of the block size
++  DEBUG ((DEBUG_INFO, "NorFlashWriteBlocks: BlockSize in bytes =0x%x\n",
++    Instance->BlockSize));
++  if ((BufferSizeInBytes % Instance->BlockSize) != 0) {
++    return EFI_BAD_BUFFER_SIZE;
++  }
++
++  // All blocks must be within the device
++  NumBlocks = ((UINT32)BufferSizeInBytes) / Instance->BlockSize;
++
++  DEBUG ((DEBUG_INFO,
++    "NorFlashWriteBlocks: NumBlocks=%d, LastBlock=%ld, Lba=%ld.\n", NumBlocks,
++    Instance->LastBlock, Lba));
++
++  if ((Lba + NumBlocks) > (Instance->LastBlock + 1)) {
++    DEBUG ((DEBUG_ERROR,
++      "NorFlashWriteBlocks: ERROR - Write will exceed last block.\n"));
++    return EFI_INVALID_PARAMETER;
++  }
++
++  ASSERT (((UINTN)Buffer % sizeof (UINT32)) == 0);
++
++  BlockSizeInWords = Instance->BlockSize / 4;
++
++  // Because the target *Buffer is a pointer to VOID, we must put
++  // all the data into a pointer to a proper data type, so use *ReadBuffer
++  pWriteBuffer = (UINT32 *)Buffer;
++
++  CurrentBlock = Lba;
++  for (BlockCount = 0;
++       BlockCount < NumBlocks;
++       BlockCount++, CurrentBlock++, pWriteBuffer += BlockSizeInWords) {
++
++    DEBUG ((DEBUG_INFO, "NorFlashWriteBlocks: Writing block #%d\n",
++      (UINTN)CurrentBlock));
++
++    Status = NorFlashWriteFullBlock (
++               Instance,
++               CurrentBlock,
++               pWriteBuffer,
++               BlockSizeInWords
++               );
++
++    if (EFI_ERROR (Status)) {
++      break;
++    }
++  }
++
++  DEBUG ((DEBUG_INFO, "NorFlashWriteBlocks: Exit Status = %r.\n", Status));
++  return Status;
++}
++
++/**
++  Read a full  block.
++
++  @param[in]     Instance           NOR flash Instance of variable store region.
++  @param[in]     Lba                The starting logical block index to read from.
++  @param[in]     BufferSizeInBytes  The number of bytes to read.
++  @param[out]    Buffer             The pointer to a caller-allocated buffer that
++                                    should be copied with read data.
++
++  @retval        EFI_SUCCESS        The read is completed.
++**/
++EFI_STATUS
++NorFlashReadBlocks (
++  IN NOR_FLASH_INSTANCE   *Instance,
++  IN EFI_LBA              Lba,
++  IN UINTN                BufferSizeInBytes,
++  OUT VOID                *Buffer
++  )
++{
++  UINT32              NumBlocks;
++  UINTN               StartAddress;
++  DEBUG ((DEBUG_INFO,
++    "NorFlashReadBlocks: BufferSize=0x%xB BlockSize=0x%xB LastBlock=%ld, Lba=%ld.\n",
++    BufferSizeInBytes, Instance->BlockSize, Instance->LastBlock,
++    Lba));
++
++  // The buffer must be valid
++  if (Buffer == NULL) {
++    return EFI_INVALID_PARAMETER;
++  }
++
++  // Return if we do not have any byte to read
++  if (BufferSizeInBytes == 0) {
++    return EFI_SUCCESS;
++  }
++
++  // The size of the buffer must be a multiple of the block size
++  if ((BufferSizeInBytes % Instance->BlockSize) != 0) {
++    return EFI_BAD_BUFFER_SIZE;
++  }
++
++  NumBlocks = ((UINT32)BufferSizeInBytes) / Instance->BlockSize;
++
++  if ((Lba + NumBlocks) > (Instance->LastBlock + 1)) {
++    DEBUG ((DEBUG_ERROR,
++      "NorFlashReadBlocks: ERROR - Read will exceed last block\n"));
++    return EFI_INVALID_PARAMETER;
++  }
++
++  // Get the address to start reading from
++  StartAddress = GET_NOR_BLOCK_ADDRESS (Instance->RegionBaseAddress, Lba,
++                                        Instance->BlockSize);
++
++  // Readout the data
++  CopyMem(Buffer, (UINTN *)StartAddress, BufferSizeInBytes);
++
++  return EFI_SUCCESS;
++}
++
++/**
++  Read from nor flash.
++
++  @param[in]     Instance           NOR flash Instance of variable store region.
++  @param[in]     Lba                The starting logical block index to read from.
++  @param[in]     Offset             Offset into the block at which to begin reading.
++  @param[in]     BufferSizeInBytes  The number of bytes to read.
++  @param[out]    Buffer             The pointer to a caller-allocated buffer that
++                                    should copied with read data.
++
++  @retval        EFI_SUCCESS        The read is completed.
++**/
++EFI_STATUS
++NorFlashRead (
++  IN NOR_FLASH_INSTANCE   *Instance,
++  IN EFI_LBA              Lba,
++  IN UINTN                Offset,
++  IN UINTN                BufferSizeInBytes,
++  OUT VOID                *Buffer
++  )
++{
++  UINTN  StartAddress;
++  // The buffer must be valid
++  if (Buffer == NULL) {
++    return EFI_INVALID_PARAMETER;
++  }
++
++  // Return if we do not have any byte to read
++  if (BufferSizeInBytes == 0) {
++    return EFI_SUCCESS;
++  }
++
++  if (((Lba * Instance->BlockSize) + Offset + BufferSizeInBytes) >
++      Instance->Size) {
++    DEBUG ((DEBUG_ERROR,
++      "NorFlashRead: ERROR - Read will exceed device size.\n"));
++    return EFI_INVALID_PARAMETER;
++  }
++
++  // Get the address to start reading from
++  StartAddress = GET_NOR_BLOCK_ADDRESS (Instance->RegionBaseAddress, Lba,
++                                        Instance->BlockSize);
++
++  // Readout the data
++  CopyMem (Buffer, (UINTN *)(StartAddress + Offset), BufferSizeInBytes);
++
++  return EFI_SUCCESS;
++}
++
++/**
++  Write a full or portion of a block.
++
++  @param[in]         Instance     NOR flash Instance of variable store region.
++  @param[in]         Lba          The starting logical block index to write to.
++  @param[in]         Offset       Offset into the block at which to begin writing.
++  @param[in, out]    NumBytes     The total size of the buffer.
++  @param[in]         Buffer       The pointer to a caller-allocated buffer that
++                                  contains the source for the write.
++
++  @retval            EFI_SUCCESS  The write is completed.
++**/
++EFI_STATUS
++NorFlashWriteSingleBlock (
++  IN        NOR_FLASH_INSTANCE   *Instance,
++  IN        EFI_LBA               Lba,
++  IN        UINTN                 Offset,
++  IN OUT    UINTN                *NumBytes,
++  IN        UINT8                *Buffer
++  )
++{
++  EFI_STATUS  Status;
++  UINT32      Tmp;
++  UINT32      TmpBuf;
++  UINT32      WordToWrite;
++  UINT32      Mask;
++  BOOLEAN     DoErase;
++  UINTN       BytesToWrite;
++  UINTN       CurOffset;
++  UINTN       WordAddr;
++  UINTN       BlockSize;
++  UINTN       BlockAddress;
++  UINTN       PrevBlockAddress;
++
++  if (Buffer == NULL) {
++    DEBUG ((DEBUG_ERROR,
++      "NorFlashWriteSingleBlock: ERROR - Buffer is invalid\n" ));
++    return EFI_OUT_OF_RESOURCES;
++  }
++
++  PrevBlockAddress = 0;
++  if (!Instance->Initialized && Instance->Initialize) {
++    Instance->Initialize(Instance);
++  }
++
++  DEBUG ((DEBUG_INFO,
++    "NorFlashWriteSingleBlock(Parameters: Lba=%ld, Offset=0x%x, *NumBytes=0x%x, Buffer @ 0x%08x)\n",
++    Lba, Offset, *NumBytes, Buffer));
++
++  // Localise the block size to avoid de-referencing pointers all the time
++  BlockSize = Instance->BlockSize;
++
++  // The write must not span block boundaries.
++  // We need to check each variable individually because adding two large
++  // values together overflows.
++  if (Offset               >= BlockSize ||
++      *NumBytes            >  BlockSize ||
++      (Offset + *NumBytes) >  BlockSize) {
++    DEBUG ((DEBUG_ERROR,
++      "NorFlashWriteSingleBlock: ERROR - EFI_BAD_BUFFER_SIZE: (Offset=0x%x + NumBytes=0x%x) > BlockSize=0x%x\n",
++      Offset, *NumBytes, BlockSize ));
++    return EFI_BAD_BUFFER_SIZE;
++  }
++
++  // We must have some bytes to write
++  if (*NumBytes == 0) {
++    DEBUG ((DEBUG_ERROR,
++      "NorFlashWriteSingleBlock: ERROR - EFI_BAD_BUFFER_SIZE: (Offset=0x%x + NumBytes=0x%x) > BlockSize=0x%x\n",
++      Offset, *NumBytes, BlockSize ));
++    return EFI_BAD_BUFFER_SIZE;
++  }
++
++  // Pick 128bytes as a good start for word operations as opposed to erasing the
++  // block and writing the data regardless if an erase is really needed.
++  // It looks like most individual NV variable writes are smaller than 128bytes.
++  if (*NumBytes <= 128) {
++    // Check to see if we need to erase before programming the data into NOR.
++    // If the destination bits are only changing from 1s to 0s we can just write.
++    // After a block is erased all bits in the block is set to 1.
++    // If any byte requires us to erase we just give up and rewrite all of it.
++    DoErase      = FALSE;
++    BytesToWrite = *NumBytes;
++    CurOffset    = Offset;
++
++    while (BytesToWrite > 0) {
++      // Read full word from NOR, splice as required. A word is the smallest
++      // unit we can write.
++      Status = NorFlashRead (
++                 Instance,
++                 Lba,
++                 CurOffset & ~(0x3),
++                 sizeof(Tmp),
++                 &Tmp
++                 );
++      if (EFI_ERROR (Status)) {
++        return EFI_DEVICE_ERROR;
++      }
++
++      // Physical address of word in NOR to write.
++      WordAddr = (CurOffset & ~(0x3)) +
++                 GET_NOR_BLOCK_ADDRESS (Instance->RegionBaseAddress, Lba,
++                   BlockSize);
++
++      // The word of data that is to be written.
++      TmpBuf = ReadUnaligned32 ((UINT32 *)(Buffer + (*NumBytes - BytesToWrite)));
++
++      // First do word aligned chunks.
++      if ((CurOffset & 0x3) == 0) {
++        if (BytesToWrite >= 4) {
++          // Is the destination still in 'erased' state?
++          if (~Tmp != 0) {
++            // Check to see if we are only changing bits to zero.
++            if ((Tmp ^ TmpBuf) & TmpBuf) {
++              DoErase = TRUE;
++              break;
++            }
++          }
++          // Write this word to NOR
++          WordToWrite = TmpBuf;
++          CurOffset += sizeof(TmpBuf);
++          BytesToWrite -= sizeof(TmpBuf);
++        } else {
++          // BytesToWrite < 4. Do small writes and left-overs
++          Mask = ~((~0) << (BytesToWrite * 8));
++          // Mask out the bytes we want.
++          TmpBuf &= Mask;
++          // Is the destination still in 'erased' state?
++          if ((Tmp & Mask) != Mask) {
++            // Check to see if we are only changing bits to zero.
++            if ((Tmp ^ TmpBuf) & TmpBuf) {
++              DoErase = TRUE;
++              break;
++            }
++          }
++          // Merge old and new data. Write merged word to NOR
++          WordToWrite = (Tmp & ~Mask) | TmpBuf;
++          CurOffset += BytesToWrite;
++          BytesToWrite = 0;
++        }
++      } else {
++        // Do multiple words, but starting unaligned.
++        if (BytesToWrite > (4 - (CurOffset & 0x3))) {
++          Mask = ((~0) << ((CurOffset & 0x3) * 8));
++          // Mask out the bytes we want.
++          TmpBuf &= Mask;
++          // Is the destination still in 'erased' state?
++          if ((Tmp & Mask) != Mask) {
++            // Check to see if we are only changing bits to zero.
++            if ((Tmp ^ TmpBuf) & TmpBuf) {
++              DoErase = TRUE;
++              break;
++            }
++          }
++          // Merge old and new data. Write merged word to NOR
++          WordToWrite = (Tmp & ~Mask) | TmpBuf;
++          BytesToWrite -= (4 - (CurOffset & 0x3));
++          CurOffset += (4 - (CurOffset & 0x3));
++        } else {
++          // Unaligned and fits in one word.
++          Mask = (~((~0) << (BytesToWrite * 8))) << ((CurOffset & 0x3) * 8);
++          // Mask out the bytes we want.
++          TmpBuf = (TmpBuf << ((CurOffset & 0x3) * 8)) & Mask;
++          // Is the destination still in 'erased' state?
++          if ((Tmp & Mask) != Mask) {
++            // Check to see if we are only changing bits to zero.
++            if ((Tmp ^ TmpBuf) & TmpBuf) {
++              DoErase = TRUE;
++              break;
++            }
++          }
++          // Merge old and new data. Write merged word to NOR
++          WordToWrite = (Tmp & ~Mask) | TmpBuf;
++          CurOffset += BytesToWrite;
++          BytesToWrite = 0;
++        }
++      }
++
++      BlockAddress = GET_NOR_BLOCK_ADDRESS (
++                       Instance->RegionBaseAddress,
++                       Lba,
++                       BlockSize
++                       );
++      if (BlockAddress != PrevBlockAddress) {
++        Status = NorFlashUnlockSingleBlockIfNecessary (Instance, BlockAddress);
++        if (EFI_ERROR (Status)) {
++          return EFI_DEVICE_ERROR;
++        }
++        PrevBlockAddress = BlockAddress;
++      }
++      Status = NorFlashWriteSingleWord (Instance, WordAddr, WordToWrite);
++      if (EFI_ERROR (Status)) {
++        return EFI_DEVICE_ERROR;
++      }
++    }
++    // Exit if we got here and could write all the data. Otherwise do the
++    // Erase-Write cycle.
++    if (!DoErase) {
++      return EFI_SUCCESS;
++    }
++  }
++
++  // Check we did get some memory. Buffer is BlockSize.
++  if (Instance->ShadowBuffer == NULL) {
++    DEBUG ((DEBUG_ERROR, "FvbWrite: ERROR - Buffer not ready\n"));
++    return EFI_DEVICE_ERROR;
++  }
++
++  // Read NOR Flash data into shadow buffer
++  Status = NorFlashReadBlocks (
++             Instance,
++             Lba,
++             BlockSize,
++             Instance->ShadowBuffer
++             );
++  if (EFI_ERROR (Status)) {
++    // Return one of the pre-approved error statuses
++    return EFI_DEVICE_ERROR;
++  }
++
++  // Put the data at the appropriate location inside the buffer area
++  CopyMem ((VOID*)((UINTN)Instance->ShadowBuffer + Offset), Buffer, *NumBytes);
++
++  // Write the modified buffer back to the NorFlash
++  Status = NorFlashWriteBlocks (
++             Instance,
++             Lba,
++             BlockSize,
++             Instance->ShadowBuffer
++             );
++  if (EFI_ERROR (Status)) {
++    // Return one of the pre-approved error statuses
++    return EFI_DEVICE_ERROR;
++  }
++
++  return EFI_SUCCESS;
++}
++
++/**
++  Read JEDEC ID of NOR flash device.
++
++  @param[in]     Instance     NOR flash Instance of variable store region.
++  @param[out]    JedecId      JEDEC ID of NOR flash device.
++
++  @retval        EFI_SUCCESS  The write is completed.
++**/
++EFI_STATUS
++NorFlashReadID (
++  IN  NOR_FLASH_INSTANCE  *Instance,
++  OUT UINT8               JedecId[3]
++  )
++{
++  UINT32 val;
++  if (Instance == NULL || JedecId == NULL) {
++    return EFI_INVALID_PARAMETER;
++  }
++
++  val = SPINOR_OP_RDID << CDNS_QSPI_FLASH_CMD_CTRL_REG_OPCODE_BIT_POS |
++        CDNS_QSPI_FLASH_CMD_CTRL_REG_READ_ENABLE << CDNS_QSPI_FLASH_CMD_CTRL_REG_READEN_BIT_POS |
++        CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_3B << CDNS_QSPI_FLASH_CMD_CTRL_REG_READBYTE_BIT_POS;
++
++  if (EFI_ERROR (CdnsQspiExecuteCommand (Instance, val))) {
++    return EFI_DEVICE_ERROR;
++  }
++
++  val = MmioRead32 (Instance->HostRegisterBaseAddress + CDNS_QSPI_FLASH_CMD_READ_DATA_REG_OFFSET);
++
++  // Manu.ID field
++  JedecId[0] = (UINT8) val;
++  // Type field
++  JedecId[1] = (UINT8) (val >> 8);
++  // Capacity field
++  JedecId[2] = (UINT8) (val >> 16);
++
++  DEBUG ((DEBUG_INFO,
++    "Nor flash detected, Jedec ID, Manu.Id=%x Type=%x Capacity=%x \n",
++    JedecId[0],JedecId[1],JedecId[2]));
++
++  return EFI_SUCCESS;
++}
+diff --git a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.h b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.h
+new file mode 100644
+index 00000000..e720937e
+--- /dev/null
++++ b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.h
+@@ -0,0 +1,484 @@
++/** @file
++
++  Copyright (c) 2023, ARM Limited. All rights reserved.<BR>
++
++  SPDX-License-Identifier: BSD-2-Clause-Patent
++
++**/
++
++#ifndef NOR_FLASH_DXE_H_
++#define NOR_FLASH_DXE_H_
++
++#include <Guid/EventGroup.h>
++#include <Library/DebugLib.h>
++#include <Library/IoLib.h>
++#include <Library/NorFlashPlatformLib.h>
++#include <PiDxe.h>
++#include <Protocol/BlockIo.h>
++#include <Protocol/DiskIo.h>
++#include <Protocol/FirmwareVolumeBlock.h>
++
++#include "CadenceQspiReg.h"
++
++#define NOR_FLASH_ERASE_RETRY                     10
++
++#define GET_NOR_BLOCK_ADDRESS(BaseAddr, Lba, LbaSize) \
++                                      ((BaseAddr) + (UINTN)((Lba) * (LbaSize)))
++
++#define NOR_FLASH_SIGNATURE          SIGNATURE_32('S', 'n', 'o', 'r')
++#define INSTANCE_FROM_FVB_THIS(a)    CR(a, NOR_FLASH_INSTANCE, FvbProtocol, \
++                                        NOR_FLASH_SIGNATURE)
++
++#define NOR_FLASH_POLL_FSR      BIT0
++
++typedef struct _NOR_FLASH_INSTANCE                NOR_FLASH_INSTANCE;
++
++typedef EFI_STATUS (*NOR_FLASH_INITIALIZE)        (NOR_FLASH_INSTANCE* Instance);
++
++#pragma pack(1)
++typedef struct {
++  VENDOR_DEVICE_PATH                  Vendor;
++  UINT8                               Index;
++  EFI_DEVICE_PATH_PROTOCOL            End;
++} NOR_FLASH_DEVICE_PATH;
++#pragma pack()
++
++struct _NOR_FLASH_INSTANCE {
++  UINT32                              Signature;
++  EFI_HANDLE                          Handle;
++
++  BOOLEAN                             Initialized;
++  NOR_FLASH_INITIALIZE                Initialize;
++
++  UINTN                               HostRegisterBaseAddress;
++  UINTN                               DeviceBaseAddress;
++  UINTN                               RegionBaseAddress;
++  UINTN                               Size;
++  UINTN                               BlockSize;
++  UINTN                               LastBlock;
++  EFI_LBA                             StartLba;
++  EFI_LBA                             OffsetLba;
++
++  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL FvbProtocol;
++  VOID*                               ShadowBuffer;
++
++  NOR_FLASH_DEVICE_PATH               DevicePath;
++
++  UINT32                              Flags;
++};
++
++typedef struct {
++  EFI_TPL         OriginalTPL;
++  BOOLEAN         InterruptsEnabled;
++} NOR_FLASH_LOCK_CONTEXT;
++
++/**
++  Lock all pending read/write to Nor flash device
++
++  @param[in]     Context     Nor flash device context structure.
++**/
++VOID
++EFIAPI
++NorFlashLock (
++  IN NOR_FLASH_LOCK_CONTEXT    *Context
++  );
++
++/**
++  Unlock all pending read/write to Nor flash device
++
++  @param[in]     Context     Nor flash device context structure.
++**/
++VOID
++EFIAPI
++NorFlashUnlock (
++  IN NOR_FLASH_LOCK_CONTEXT    *Context
++  );
++
++extern UINTN     mFlashNvStorageVariableBase;
++
++/**
++  Create Nor flash Instance for given region.
++
++  @param[in]    HostRegisterBase      Base address of Nor flash controller.
++  @param[in]    NorFlashDeviceBase    Base address of flash device.
++  @param[in]    NorFlashRegionBase    Base address of flash region on device.
++  @param[in]    NorFlashSize          Size of flash region.
++  @param[in]    Index                 Index of given flash region.
++  @param[in]    BlockSize             Block size of NOR flash device.
++  @param[in]    HasVarStore           Boolean set for VarStore on given region.
++  @param[out]   NorFlashInstance      Instance of given flash region.
++
++  @retval       EFI_SUCCESS           On successful creation of NOR flash instance.
++**/
++EFI_STATUS
++NorFlashCreateInstance (
++  IN UINTN                  HostRegisterBase,
++  IN UINTN                  NorFlashDeviceBase,
++  IN UINTN                  NorFlashRegionBase,
++  IN UINTN                  NorFlashSize,
++  IN UINT32                 Index,
++  IN UINT32                 BlockSize,
++  IN BOOLEAN                HasVarStore,
++  OUT NOR_FLASH_INSTANCE**  NorFlashInstance
++  );
++
++/**
++  Install Fv block on to variable store region
++
++  @param[in]   Instance         Instance of Nor flash variable region.
++
++  @retval      EFI_SUCCESS      The entry point is executed successfully.
++**/
++EFI_STATUS
++EFIAPI
++NorFlashFvbInitialize (
++  IN NOR_FLASH_INSTANCE* Instance
++  );
++
++/**
++  Check the integrity of firmware volume header.
++
++  @param[in]  Instance        Instance of Nor flash variable region.
++
++  @retval     EFI_SUCCESS     The firmware volume is consistent.
++  @retval     EFI_NOT_FOUND   The firmware volume has been corrupted.
++
++**/
++EFI_STATUS
++ValidateFvHeader (
++  IN  NOR_FLASH_INSTANCE *Instance
++  );
++
++/**
++  Initialize the FV Header and Variable Store Header
++  to support variable operations.
++
++  @param[in]  Instance      Location to Initialize the headers
++
++  @retval     EFI_SUCCESS   Fv init is done
++
++**/
++EFI_STATUS
++InitializeFvAndVariableStoreHeaders (
++  IN NOR_FLASH_INSTANCE *Instance
++  );
++
++/**
++ Retrieves the attributes and current settings of the block.
++
++ @param[in]   This         Indicates the EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[out]  Attributes   Pointer to EFI_FVB_ATTRIBUTES_2 in which the attributes and
++                           current settings are returned.
++                           Type EFI_FVB_ATTRIBUTES_2 is defined in
++                           EFI_FIRMWARE_VOLUME_HEADER.
++
++ @retval      EFI_SUCCESS  The firmware volume attributes were returned.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbGetAttributes(
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL     *This,
++  OUT       EFI_FVB_ATTRIBUTES_2                    *Attributes
++  );
++
++/**
++ Sets configurable firmware volume attributes and returns the
++ new settings of the firmware volume.
++
++
++ @param[in]         This                     EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[in, out]    Attributes               On input, Attributes is a pointer to
++                                             EFI_FVB_ATTRIBUTES_2 that contains the desired
++                                             firmware volume settings.
++                                             On successful return, it contains the new
++                                             settings of the firmware volume.
++
++ @retval            EFI_UNSUPPORTED          The firmware volume attributes are not supported.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbSetAttributes(
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL     *This,
++  IN OUT    EFI_FVB_ATTRIBUTES_2                    *Attributes
++  );
++
++/**
++ Retrieves the base address of a memory-mapped firmware volume.
++ This function should be called only for memory-mapped firmware volumes.
++
++ @param[in]     This               EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[out]    Address            Pointer to a caller-allocated
++                                   EFI_PHYSICAL_ADDRESS that, on successful
++                                   return from GetPhysicalAddress(), contains the
++                                   base address of the firmware volume.
++
++ @retval        EFI_SUCCESS        The firmware volume base address was returned.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbGetPhysicalAddress(
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL     *This,
++  OUT       EFI_PHYSICAL_ADDRESS                    *Address
++  );
++
++/**
++ Retrieves the size of the requested block.
++ It also returns the number of additional blocks with the identical size.
++ The GetBlockSize() function is used to retrieve the block map
++ (see EFI_FIRMWARE_VOLUME_HEADER).
++
++
++ @param[in]     This                     EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[in]     Lba                      Indicates the block whose size to return
++
++ @param[out]    BlockSize                Pointer to a caller-allocated UINTN in which
++                                         the size of the block is returned.
++
++ @param[out]    NumberOfBlocks           Pointer to a caller-allocated UINTN in
++                                         which the number of consecutive blocks,
++                                         starting with Lba, is returned. All
++                                         blocks in this range have a size of
++                                         BlockSize.
++
++ @retval        EFI_SUCCESS              The firmware volume base address was returned.
++
++ @retval        EFI_INVALID_PARAMETER    The requested LBA is out of range.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbGetBlockSize(
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL     *This,
++  IN        EFI_LBA                                 Lba,
++  OUT       UINTN                                   *BlockSize,
++  OUT       UINTN                                   *NumberOfBlocks
++  );
++
++/**
++ Reads the specified number of bytes into a buffer from the specified block.
++
++ The Read() function reads the requested number of bytes from the
++ requested block and stores them in the provided buffer.
++
++ @param[in]       This                 EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[in]       Lba                  The starting logical block index from which to read
++
++ @param[in]       Offset               Offset into the block at which to begin reading.
++
++ @param[in, out]  NumBytes             Pointer to a UINTN.
++                                       At entry, *NumBytes contains the total size of the
++                                       buffer. *NumBytes should have a non zero value.
++                                       At exit, *NumBytes contains the total number of
++                                       bytes read.
++
++ @param[in out]   Buffer               Pointer to a caller-allocated buffer that will be
++                                       used to hold the data that is read.
++
++ @retval          EFI_SUCCESS          The firmware volume was read successfully, and
++                                       contents are in Buffer.
++
++ @retval          EFI_BAD_BUFFER_SIZE  Read attempted across an LBA boundary.
++
++ @retval          EFI_DEVICE_ERROR     The block device is not functioning correctly and
++                                       could not be read.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbRead(
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL     *This,
++  IN        EFI_LBA                                 Lba,
++  IN        UINTN                                   Offset,
++  IN OUT    UINTN                                   *NumBytes,
++  IN OUT    UINT8                                   *Buffer
++  );
++
++/**
++ Writes the specified number of bytes from the input buffer to the block.
++
++ @param[in]        This                 EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[in]        Lba                  The starting logical block index to write to.
++
++ @param[in]        Offset               Offset into the block at which to begin writing.
++
++ @param[in, out]   NumBytes             The pointer to a UINTN.
++                                        At entry, *NumBytes contains the total size of the
++                                        buffer.
++                                        At exit, *NumBytes contains the total number of
++                                        bytes actually written.
++
++ @param[in]        Buffer               The pointer to a caller-allocated buffer that
++                                        contains the source for the write.
++
++ @retval           EFI_SUCCESS          The firmware volume was written successfully.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbWrite(
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL     *This,
++  IN        EFI_LBA                                 Lba,
++  IN        UINTN                                   Offset,
++  IN OUT    UINTN                                   *NumBytes,
++  IN        UINT8                                   *Buffer
++  );
++
++/**
++ Erases and initialises a firmware volume block.
++
++ @param[in]   This                     EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL
++
++ @param[in]   ...                      The variable argument list is a list of tuples.
++                                       Each tuple describes a range of LBAs to erase
++                                       and consists of the following:
++                                       - An EFI_LBA that indicates the starting LBA
++                                       - A UINTN that indicates the number of blocks
++                                       to erase.
++
++                                       The list is terminated with an
++                                       EFI_LBA_LIST_TERMINATOR.
++
++ @retval      EFI_SUCCESS              The erase request successfully completed.
++
++ @retval      EFI_ACCESS_DENIED        The firmware volume is in the WriteDisabled
++                                       state.
++
++ @retval      EFI_DEVICE_ERROR         The block device is not functioning correctly
++                                       and could not be written.
++                                       The firmware device may have been partially
++                                       erased.
++
++ @retval      EFI_INVALID_PARAMETER    One or more of the LBAs listed in the variable
++                                       argument list do not exist in the firmware
++                                       volume.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbEraseBlocks(
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL     *This,
++  ...
++  );
++
++/**
++  This function unlock and erase an entire NOR Flash block.
++
++  @param[in]     Instance       NOR flash Instance of variable store region.
++  @param[in]     BlockAddress   Block address within the variable store region.
++
++  @retval        EFI_SUCCESS    The erase and unlock successfully completed.
++**/
++EFI_STATUS
++NorFlashUnlockAndEraseSingleBlock (
++  IN NOR_FLASH_INSTANCE     *Instance,
++  IN UINTN                  BlockAddress
++  );
++
++/**
++  Write a full or portion of a block.
++
++  @param[in]        Instance     NOR flash Instance of variable store region.
++  @param[in]        Lba          The starting logical block index to write to.
++  @param[in]        Offset       Offset into the block at which to begin writing.
++  @param[in,out]    NumBytes     The total size of the buffer.
++  @param[in]        Buffer       The pointer to a caller-allocated buffer that
++                                 contains the source for the write.
++
++  @retval           EFI_SUCCESS  The write is completed.
++**/
++EFI_STATUS
++NorFlashWriteSingleBlock (
++  IN        NOR_FLASH_INSTANCE   *Instance,
++  IN        EFI_LBA               Lba,
++  IN        UINTN                 Offset,
++  IN OUT    UINTN                *NumBytes,
++  IN        UINT8                *Buffer
++  );
++
++/**
++  Write a full  block.
++
++  @param[in]    Instance             NOR flash Instance of variable store region.
++  @param[in]    Lba                  The starting logical block index to write to.
++  @param[in]    BufferSizeInBytes    The number of bytes to write.
++  @param[in]    Buffer               The pointer to a caller-allocated buffer that
++                                     contains the source for the write.
++
++  @retval       EFI_SUCCESS          The write is completed.
++**/
++EFI_STATUS
++NorFlashWriteBlocks (
++  IN  NOR_FLASH_INSTANCE *Instance,
++  IN  EFI_LBA            Lba,
++  IN  UINTN              BufferSizeInBytes,
++  IN  VOID               *Buffer
++  );
++
++/**
++  Read a full  block.
++
++  @param[in]     Instance           NOR flash Instance of variable store region.
++  @param[in]     Lba                The starting logical block index to read from.
++  @param[in]     BufferSizeInBytes  The number of bytes to read.
++  @param[out]    Buffer             The pointer to a caller-allocated buffer that
++                                    should be copied with read data.
++
++  @retval        EFI_SUCCESS        The read is completed.
++**/
++EFI_STATUS
++NorFlashReadBlocks (
++  IN NOR_FLASH_INSTANCE   *Instance,
++  IN EFI_LBA              Lba,
++  IN UINTN                BufferSizeInBytes,
++  OUT VOID                *Buffer
++  );
++
++/**
++  Read from nor flash.
++
++  @param[in]     Instance           NOR flash Instance of variable store region.
++  @param[in]     Lba                The starting logical block index to read from.
++  @param[in]     Offset             Offset into the block at which to begin reading.
++  @param[in]     BufferSizeInBytes  The number of bytes to read.
++  @param[out]    Buffer             The pointer to a caller-allocated buffer that
++                                    should copied with read data.
++
++  @retval        EFI_SUCCESS        The read is completed.
++**/
++EFI_STATUS
++NorFlashRead (
++  IN NOR_FLASH_INSTANCE   *Instance,
++  IN EFI_LBA              Lba,
++  IN UINTN                Offset,
++  IN UINTN                BufferSizeInBytes,
++  OUT VOID                *Buffer
++  );
++
++/**
++  Read JEDEC ID of NOR flash device.
++
++  @param[in]     Instance     NOR flash Instance of variable store region.
++  @param[out]    JedecId      JEDEC ID of NOR flash device.
++
++  @retval        EFI_SUCCESS  The write is completed.
++**/
++EFI_STATUS
++NorFlashReadID (
++  IN  NOR_FLASH_INSTANCE  *Instance,
++  OUT UINT8               JedecId[3]
++  );
++
++#define SPINOR_OP_WREN                0x06  // Write enable
++#define SPINOR_OP_BE_4K               0x20  // Erase 4KiB block
++#define SPINOR_OP_RDID                0x9f  // Read JEDEC ID
++
++#endif /* NOR_FLASH_DXE_H_ */
+diff --git a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlashFvb.c b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlashFvb.c
+new file mode 100644
+index 00000000..edd84c07
+--- /dev/null
++++ b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlashFvb.c
+@@ -0,0 +1,573 @@
++/** @file
++
++  Copyright (c) 2023, ARM Limited. All rights reserved.<BR>
++
++  SPDX-License-Identifier: BSD-2-Clause-Patent
++
++**/
++
++#include <Guid/VariableFormat.h>
++#include <Guid/SystemNvDataGuid.h>
++
++#include <Library/BaseLib.h>
++#include <Library/BaseMemoryLib.h>
++#include <Library/MemoryAllocationLib.h>
++#include <Library/PcdLib.h>
++#include <Library/UefiBootServicesTableLib.h>
++#include <Library/UefiLib.h>
++
++#include <PiDxe.h>
++
++#include "NorFlash.h"
++
++UINTN     mFlashNvStorageVariableBase;
++
++/**
++  Initialize the FV Header and Variable Store Header
++  to support variable operations.
++
++  @param[in]  Instance      Location to initialise the headers.
++
++  @retval     EFI_SUCCESS   Fv init is done.
++
++**/
++EFI_STATUS
++InitializeFvAndVariableStoreHeaders (
++  IN NOR_FLASH_INSTANCE *Instance
++  )
++{
++  EFI_STATUS                          Status;
++  VOID*                               Headers;
++  UINTN                               HeadersLength;
++  EFI_FIRMWARE_VOLUME_HEADER          *FirmwareVolumeHeader;
++  VARIABLE_STORE_HEADER               *VariableStoreHeader;
++
++  if (!Instance->Initialized && Instance->Initialize) {
++    Instance->Initialize (Instance);
++  }
++
++  HeadersLength = sizeof (EFI_FIRMWARE_VOLUME_HEADER) +
++                  sizeof (EFI_FV_BLOCK_MAP_ENTRY) +
++                  sizeof (VARIABLE_STORE_HEADER);
++  Headers = AllocateZeroPool (HeadersLength);
++
++  FirmwareVolumeHeader = (EFI_FIRMWARE_VOLUME_HEADER*)Headers;
++  CopyGuid (&FirmwareVolumeHeader->FileSystemGuid, &gEfiSystemNvDataFvGuid);
++  FirmwareVolumeHeader->FvLength =
++      PcdGet32 (PcdFlashNvStorageVariableSize) +
++      PcdGet32 (PcdFlashNvStorageFtwWorkingSize) +
++      PcdGet32 (PcdFlashNvStorageFtwSpareSize);
++  FirmwareVolumeHeader->Signature = EFI_FVH_SIGNATURE;
++  FirmwareVolumeHeader->Attributes = EFI_FVB2_READ_ENABLED_CAP |
++                                     EFI_FVB2_READ_STATUS |
++                                     EFI_FVB2_STICKY_WRITE |
++                                     EFI_FVB2_MEMORY_MAPPED |
++                                     EFI_FVB2_ERASE_POLARITY |
++                                     EFI_FVB2_WRITE_STATUS |
++                                     EFI_FVB2_WRITE_ENABLED_CAP;
++
++  FirmwareVolumeHeader->HeaderLength = sizeof (EFI_FIRMWARE_VOLUME_HEADER) +
++                                       sizeof (EFI_FV_BLOCK_MAP_ENTRY);
++  FirmwareVolumeHeader->Revision = EFI_FVH_REVISION;
++  FirmwareVolumeHeader->BlockMap[0].NumBlocks = Instance->LastBlock + 1;
++  FirmwareVolumeHeader->BlockMap[0].Length    = Instance->BlockSize;
++  FirmwareVolumeHeader->BlockMap[1].NumBlocks = 0;
++  FirmwareVolumeHeader->BlockMap[1].Length    = 0;
++  FirmwareVolumeHeader->Checksum = CalculateCheckSum16 (
++                                     (UINT16*)FirmwareVolumeHeader,
++                                     FirmwareVolumeHeader->HeaderLength);
++
++  VariableStoreHeader = (VOID *)((UINTN)Headers +
++                                 FirmwareVolumeHeader->HeaderLength);
++  CopyGuid (&VariableStoreHeader->Signature, &gEfiAuthenticatedVariableGuid);
++  VariableStoreHeader->Size = PcdGet32 (PcdFlashNvStorageVariableSize) -
++                              FirmwareVolumeHeader->HeaderLength;
++  VariableStoreHeader->Format = VARIABLE_STORE_FORMATTED;
++  VariableStoreHeader->State = VARIABLE_STORE_HEALTHY;
++
++  // Install the combined super-header in the NorFlash
++  Status = FvbWrite (&Instance->FvbProtocol, 0, 0, &HeadersLength, Headers);
++
++  FreePool (Headers);
++  return Status;
++}
++
++/**
++  Check the integrity of firmware volume header.
++
++  @param[in]  Instance        Instance of Nor flash variable region.
++
++  @retval     EFI_SUCCESS     The firmware volume is consistent.
++  @retval     EFI_NOT_FOUND   The firmware volume has been corrupted.
++
++**/
++EFI_STATUS
++ValidateFvHeader (
++  IN  NOR_FLASH_INSTANCE *Instance
++  )
++{
++  EFI_FIRMWARE_VOLUME_HEADER  *FwVolHeader;
++  VARIABLE_STORE_HEADER       *VariableStoreHeader;
++  UINTN                       VariableStoreLength;
++  UINTN                       FvLength;
++
++  FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER*)Instance->RegionBaseAddress;
++
++  FvLength = PcdGet32 (PcdFlashNvStorageVariableSize) +
++             PcdGet32 (PcdFlashNvStorageFtwWorkingSize) +
++             PcdGet32 (PcdFlashNvStorageFtwSpareSize);
++
++  if ((FwVolHeader->Revision  != EFI_FVH_REVISION)
++      || (FwVolHeader->Signature != EFI_FVH_SIGNATURE)
++      || (FwVolHeader->FvLength  != FvLength)
++      )
++  {
++    DEBUG ((DEBUG_ERROR, "%a: No Firmware Volume header present\n",
++      __FUNCTION__));
++    return EFI_NOT_FOUND;
++  }
++
++  // Check the Firmware Volume Guid
++  if (!CompareGuid (&FwVolHeader->FileSystemGuid, &gEfiSystemNvDataFvGuid)) {
++    DEBUG ((DEBUG_ERROR, "%a: Firmware Volume Guid non-compatible\n",
++      __FUNCTION__));
++    return EFI_NOT_FOUND;
++  }
++
++  VariableStoreHeader = (VOID *)((UINTN)FwVolHeader +
++                                 FwVolHeader->HeaderLength);
++
++  // Check the Variable Store Guid
++  if (!CompareGuid (&VariableStoreHeader->Signature, &gEfiVariableGuid) &&
++      !CompareGuid (&VariableStoreHeader->Signature,
++        &gEfiAuthenticatedVariableGuid)) {
++    DEBUG ((DEBUG_ERROR, "%a: Variable Store Guid non-compatible\n",
++      __FUNCTION__));
++    return EFI_NOT_FOUND;
++  }
++
++  VariableStoreLength = PcdGet32 (PcdFlashNvStorageVariableSize) -
++                        FwVolHeader->HeaderLength;
++  if (VariableStoreHeader->Size != VariableStoreLength) {
++    DEBUG ((DEBUG_ERROR, "%a: Variable Store Length does not match\n",
++      __FUNCTION__));
++    return EFI_NOT_FOUND;
++  }
++  return EFI_SUCCESS;
++}
++
++/**
++ Retrieves the attributes and current settings of the block.
++
++ @param[in]   This         Indicates the EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[out]  Attributes   Pointer to EFI_FVB_ATTRIBUTES_2 in which the attributes and
++                           current settings are returned.
++                           Type EFI_FVB_ATTRIBUTES_2 is defined in
++                           EFI_FIRMWARE_VOLUME_HEADER.
++
++ @retval      EFI_SUCCESS  The firmware volume attributes were returned.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbGetAttributes(
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL    *This,
++  OUT       EFI_FVB_ATTRIBUTES_2                   *Attributes
++  )
++{
++  EFI_FVB_ATTRIBUTES_2  FlashFvbAttributes;
++
++  FlashFvbAttributes = EFI_FVB2_READ_ENABLED_CAP | EFI_FVB2_READ_STATUS |
++                       EFI_FVB2_WRITE_ENABLED_CAP | EFI_FVB2_WRITE_STATUS |
++                       EFI_FVB2_STICKY_WRITE | EFI_FVB2_MEMORY_MAPPED |
++                       EFI_FVB2_ERASE_POLARITY;
++
++  *Attributes = FlashFvbAttributes;
++
++  DEBUG ((DEBUG_INFO, "FvbGetAttributes(0x%X)\n", *Attributes));
++
++  return EFI_SUCCESS;
++}
++
++/**
++ Sets configurable firmware volume attributes and returns the
++ new settings of the firmware volume.
++
++
++ @param[in]         This                     EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[in, out]    Attributes               On input, Attributes is a pointer to
++                                             EFI_FVB_ATTRIBUTES_2 that contains the desired
++                                             firmware volume settings.
++                                             On successful return, it contains the new
++                                             settings of the firmware volume.
++
++ @retval            EFI_UNSUPPORTED          The firmware volume attributes are not supported.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbSetAttributes(
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL  *This,
++  IN OUT    EFI_FVB_ATTRIBUTES_2                 *Attributes
++  )
++{
++  DEBUG ((DEBUG_INFO, "FvbSetAttributes(0x%X) is not supported\n",
++    *Attributes));
++  return EFI_UNSUPPORTED;
++}
++
++/**
++ Retrieves the base address of a memory-mapped firmware volume.
++ This function should be called only for memory-mapped firmware volumes.
++
++ @param[in]     This               EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[out]    Address            Pointer to a caller-allocated
++                                   EFI_PHYSICAL_ADDRESS that, on successful
++                                   return from GetPhysicalAddress(), contains the
++                                   base address of the firmware volume.
++
++ @retval        EFI_SUCCESS        The firmware volume base address was returned.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbGetPhysicalAddress (
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL  *This,
++  OUT       EFI_PHYSICAL_ADDRESS                 *Address
++  )
++{
++  NOR_FLASH_INSTANCE *Instance;
++
++  Instance = INSTANCE_FROM_FVB_THIS (This);
++
++  DEBUG ((DEBUG_INFO, "FvbGetPhysicalAddress(BaseAddress=0x%08x)\n",
++    Instance->RegionBaseAddress));
++
++  ASSERT(Address != NULL);
++
++  *Address = Instance->RegionBaseAddress;
++  return EFI_SUCCESS;
++}
++
++/**
++ Retrieves the size of the requested block.
++ It also returns the number of additional blocks with the identical size.
++ The GetBlockSize() function is used to retrieve the block map
++ (see EFI_FIRMWARE_VOLUME_HEADER).
++
++
++ @param[in]     This                     EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[in]     Lba                      Indicates the block whose size to return
++
++ @param[out]    BlockSize                Pointer to a caller-allocated UINTN in which
++                                         the size of the block is returned.
++
++ @param[out]    NumberOfBlocks           Pointer to a caller-allocated UINTN in
++                                         which the number of consecutive blocks,
++                                         starting with Lba, is returned. All
++                                         blocks in this range have a size of
++                                         BlockSize.
++
++ @retval        EFI_SUCCESS              The firmware volume base address was returned.
++
++ @retval        EFI_INVALID_PARAMETER    The requested LBA is out of range.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbGetBlockSize (
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL  *This,
++  IN        EFI_LBA                              Lba,
++  OUT       UINTN                                *BlockSize,
++  OUT       UINTN                                *NumberOfBlocks
++  )
++{
++  EFI_STATUS Status;
++  NOR_FLASH_INSTANCE *Instance;
++
++  Instance = INSTANCE_FROM_FVB_THIS (This);
++
++  DEBUG ((DEBUG_INFO,
++    "FvbGetBlockSize(Lba=%ld, BlockSize=0x%x, LastBlock=%ld)\n", Lba,
++    Instance->BlockSize, Instance->LastBlock));
++
++  if (Lba > Instance->LastBlock) {
++    DEBUG ((DEBUG_ERROR,
++      "FvbGetBlockSize: ERROR - Parameter LBA %ld is beyond the last Lba (%ld).\n",
++      Lba, Instance->LastBlock));
++    Status = EFI_INVALID_PARAMETER;
++  } else {
++    // This is easy because in this platform each NorFlash device has equal sized blocks.
++    *BlockSize = (UINTN) Instance->BlockSize;
++    *NumberOfBlocks = (UINTN) (Instance->LastBlock - Lba + 1);
++
++    DEBUG ((DEBUG_INFO,
++      "FvbGetBlockSize: *BlockSize=0x%x, *NumberOfBlocks=0x%x.\n", *BlockSize,
++      *NumberOfBlocks));
++
++    Status = EFI_SUCCESS;
++  }
++
++  return Status;
++}
++
++/**
++ Reads the specified number of bytes into a buffer from the specified block.
++
++ The Read() function reads the requested number of bytes from the
++ requested block and stores them in the provided buffer.
++
++ @param[in]       This                 EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[in]       Lba                  The starting logical block index from which to read
++
++ @param[in]       Offset               Offset into the block at which to begin reading.
++
++ @param[in, out]  NumBytes             Pointer to a UINTN.
++                                       At entry, *NumBytes contains the total size of the
++                                       buffer. *NumBytes should have a non zero value.
++                                       At exit, *NumBytes contains the total number of
++                                       bytes read.
++
++ @param[in, out]  Buffer               Pointer to a caller-allocated buffer that will be
++                                       used to hold the data that is read.
++
++ @retval          EFI_SUCCESS          The firmware volume was read successfully, and
++                                       contents are in Buffer.
++
++ @retval          EFI_BAD_BUFFER_SIZE  Read attempted across an LBA boundary.
++
++ @retval          EFI_DEVICE_ERROR     The block device is not functioning correctly and
++                                       could not be read.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbRead (
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL   *This,
++  IN        EFI_LBA                               Lba,
++  IN        UINTN                                 Offset,
++  IN OUT    UINTN                                 *NumBytes,
++  IN OUT    UINT8                                 *Buffer
++  )
++{
++  EFI_STATUS    Status;
++  UINTN         BlockSize;
++  NOR_FLASH_INSTANCE *Instance;
++
++  Instance = INSTANCE_FROM_FVB_THIS (This);
++
++  DEBUG ((DEBUG_INFO,
++    "FvbRead(Parameters: Lba=%ld, Offset=0x%x, *NumBytes=0x%x, Buffer @ 0x%08x)\n",
++    Instance->StartLba + Lba, Offset, *NumBytes, Buffer));
++
++  if (!Instance->Initialized && Instance->Initialize) {
++    Instance->Initialize(Instance);
++  }
++
++  BlockSize = Instance->BlockSize;
++
++  DEBUG ((DEBUG_INFO,
++    "FvbRead: Check if (Offset=0x%x + NumBytes=0x%x) <= BlockSize=0x%x\n",
++    Offset, *NumBytes, BlockSize ));
++
++  // The read must not span block boundaries.
++  // We need to check each variable individually because adding two large
++  // values together overflows.
++  if (Offset               >= BlockSize ||
++      *NumBytes            >  BlockSize ||
++      (Offset + *NumBytes) >  BlockSize) {
++    DEBUG ((DEBUG_ERROR,
++      "FvbRead: ERROR - EFI_BAD_BUFFER_SIZE: (Offset=0x%x + NumBytes=0x%x) > BlockSize=0x%x\n",
++      Offset, *NumBytes, BlockSize ));
++    return EFI_BAD_BUFFER_SIZE;
++  }
++
++  // We must have some bytes to read
++  if (*NumBytes == 0) {
++    return EFI_BAD_BUFFER_SIZE;
++  }
++
++  // Decide if we are doing full block reads or not.
++  if (*NumBytes % BlockSize != 0) {
++    Status = NorFlashRead (Instance, Instance->StartLba + Lba, Offset,
++                   *NumBytes, Buffer);
++  } else {
++    // Read NOR Flash data into shadow buffer
++    Status = NorFlashReadBlocks (Instance, Instance->StartLba + Lba,
++                   BlockSize, Buffer);
++  }
++  if (EFI_ERROR (Status)) {
++    // Return one of the pre-approved error statuses
++    return EFI_DEVICE_ERROR;
++  }
++  return EFI_SUCCESS;
++}
++
++/**
++ Writes the specified number of bytes from the input buffer to the block.
++
++ @param[in]        This                 EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance.
++
++ @param[in]        Lba                  The starting logical block index to write to.
++
++ @param[in]        Offset               Offset into the block at which to begin writing.
++
++ @param[in, out]   NumBytes             The pointer to a UINTN.
++                                        At entry, *NumBytes contains the total size of the
++                                        buffer.
++                                        At exit, *NumBytes contains the total number of
++                                        bytes actually written.
++
++ @param[in]        Buffer               The pointer to a caller-allocated buffer that
++                                        contains the source for the write.
++
++ @retval           EFI_SUCCESS          The firmware volume was written successfully.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbWrite (
++  IN CONST  EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL   *This,
++  IN        EFI_LBA                               Lba,
++  IN        UINTN                                 Offset,
++  IN OUT    UINTN                                 *NumBytes,
++  IN        UINT8                                 *Buffer
++  )
++{
++  NOR_FLASH_INSTANCE *Instance;
++
++  Instance = INSTANCE_FROM_FVB_THIS (This);
++
++  return NorFlashWriteSingleBlock (Instance, Instance->StartLba + Lba, Offset,
++           NumBytes, Buffer);
++}
++
++/**
++ Erases and initialises a firmware volume block.
++
++ @param[in]   This                     EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL
++
++ @param[in]   ...                      The variable argument list is a list of tuples.
++                                       Each tuple describes a range of LBAs to erase
++                                       and consists of the following:
++                                       - An EFI_LBA that indicates the starting LBA
++                                       - A UINTN that indicates the number of blocks
++                                       to erase.
++
++                                       The list is terminated with an
++                                       EFI_LBA_LIST_TERMINATOR.
++
++ @retval      EFI_SUCCESS              The erase request successfully completed.
++
++ @retval      EFI_ACCESS_DENIED        The firmware volume is in the WriteDisabled
++                                       state.
++
++ @retval      EFI_DEVICE_ERROR         The block device is not functioning correctly
++                                       and could not be written.
++                                       The firmware device may have been partially
++                                       erased.
++
++ @retval      EFI_INVALID_PARAMETER   One or more of the LBAs listed in the variable
++                                      argument list do not exist in the firmware
++                                      volume.
++
++**/
++EFI_STATUS
++EFIAPI
++FvbEraseBlocks (
++  IN CONST EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL *This,
++  ...
++  )
++{
++  EFI_STATUS  Status;
++  VA_LIST     Args;
++  UINTN       BlockAddress; // Physical address of Lba to erase
++  EFI_LBA     StartingLba;  // Lba from which we start erasing
++  UINTN       NumOfLba;     // Number of Lba blocks to erase
++  NOR_FLASH_INSTANCE *Instance;
++
++  Instance = INSTANCE_FROM_FVB_THIS (This);
++
++  DEBUG ((DEBUG_INFO, "FvbEraseBlocks()\n"));
++
++  Status = EFI_SUCCESS;
++
++  // Before erasing, check the entire list of parameters to ensure
++  // all specified blocks are valid
++
++  VA_START (Args, This);
++  do {
++    // Get the Lba from which we start erasing
++    StartingLba = VA_ARG (Args, EFI_LBA);
++
++    // Have we reached the end of the list?
++    if (StartingLba == EFI_LBA_LIST_TERMINATOR) {
++      break;
++    }
++
++    // How many Lba blocks are we requested to erase?
++    NumOfLba = VA_ARG (Args, UINT32);
++
++    // All blocks must be within range
++    DEBUG ((DEBUG_INFO,
++      "FvbEraseBlocks: Check if: ( StartingLba=%ld + NumOfLba=%d - 1 ) > LastBlock=%ld.\n",
++      Instance->StartLba + StartingLba, NumOfLba, Instance->LastBlock));
++    if (NumOfLba == 0 ||
++        (Instance->StartLba + StartingLba + NumOfLba - 1) >
++        Instance->LastBlock) {
++      VA_END (Args);
++      DEBUG ((DEBUG_ERROR,
++        "FvbEraseBlocks: ERROR - Lba range goes past the last Lba.\n"));
++      return EFI_INVALID_PARAMETER;
++    }
++  } while (TRUE);
++  VA_END (Args);
++
++  VA_START (Args, This);
++  do {
++    // Get the Lba from which we start erasing
++    StartingLba = VA_ARG (Args, EFI_LBA);
++
++    // Have we reached the end of the list?
++    if (StartingLba == EFI_LBA_LIST_TERMINATOR) {
++      // Exit the while loop
++      break;
++    }
++
++    // How many Lba blocks are we requested to erase?
++    NumOfLba = VA_ARG (Args, UINT32);
++
++    // Go through each one and erase it
++    while (NumOfLba > 0) {
++
++      // Get the physical address of Lba to erase
++      BlockAddress = GET_NOR_BLOCK_ADDRESS (
++                       Instance->RegionBaseAddress,
++                       Instance->StartLba + StartingLba,
++                       Instance->BlockSize
++                       );
++
++      // Erase it
++      DEBUG ((DEBUG_INFO, "FvbEraseBlocks: Erasing Lba=%ld @ 0x%08x.\n",
++        Instance->StartLba + StartingLba, BlockAddress));
++      Status = NorFlashUnlockAndEraseSingleBlock (Instance, BlockAddress);
++      if (EFI_ERROR(Status)) {
++        VA_END (Args);
++        return EFI_DEVICE_ERROR;
++      }
++
++      // Move to the next Lba
++      StartingLba++;
++      NumOfLba--;
++    }
++  } while (TRUE);
++  VA_END (Args);
++
++  return Status;
++
++}
+diff --git a/Platform/ARM/N1Sdp/N1SdpPlatform.dec b/Platform/ARM/N1Sdp/N1SdpPlatform.dec
+index 16937197..986a078f 100644
+--- a/Platform/ARM/N1Sdp/N1SdpPlatform.dec
++++ b/Platform/ARM/N1Sdp/N1SdpPlatform.dec
+@@ -1,7 +1,7 @@
+ ## @file

+ #  Describes the N1Sdp configuration.

+ #

+-#  Copyright (c) 2021, ARM Limited. All rights reserved.<BR>

++#  Copyright (c) 2021-2022, ARM Limited. All rights reserved.<BR>

+ #

+ #  SPDX-License-Identifier: BSD-2-Clause-Patent

+ ##

+@@ -89,3 +89,6 @@
+   # unmapped reserved region results in a DECERR response.

+   #

+   gArmN1SdpTokenSpaceGuid.PcdCsComponentSize|0x1000|UINT32|0x00000049

++

++  # Base address of Cadence QSPI controller configuration registers

++  gArmN1SdpTokenSpaceGuid.PcdCadenceQspiDxeRegBaseAddress|0x1C0C0000|UINT32|0x0000004A

diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0007-Platform-ARM-N1Sdp-Persistent-storage-for-N1Sdp.patch b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0007-Platform-ARM-N1Sdp-Persistent-storage-for-N1Sdp.patch
new file mode 100644
index 0000000..197a6ec
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0007-Platform-ARM-N1Sdp-Persistent-storage-for-N1Sdp.patch
@@ -0,0 +1,88 @@
+From e79fd5cfa3190eb27a9637facc9891cab55b5e09 Mon Sep 17 00:00:00 2001
+From: sahil <sahil@arm.com>
+Date: Mon, 2 May 2022 19:24:47 +0530
+Subject: [PATCH] Platform/ARM/N1Sdp: Persistent storage for N1Sdp
+
+Enable persistent storage on QSPI flash device.
+
+Upstream-Status: Pending
+Signed-off-by: Xueliang Zhong <xueliang.zhong@arm.com>
+Signed-off-by: sahil <sahil@arm.com>
+Change-Id: I403113bb885d1d411d433a7f266715d007509a5e
+---
+ Platform/ARM/N1Sdp/N1SdpPlatform.dsc | 18 +++++++++++++-----
+ Platform/ARM/N1Sdp/N1SdpPlatform.fdf |  4 +++-
+ 2 files changed, 16 insertions(+), 6 deletions(-)
+
+diff --git a/Platform/ARM/N1Sdp/N1SdpPlatform.dsc b/Platform/ARM/N1Sdp/N1SdpPlatform.dsc
+index 676ab677..80bc875a 100644
+--- a/Platform/ARM/N1Sdp/N1SdpPlatform.dsc
++++ b/Platform/ARM/N1Sdp/N1SdpPlatform.dsc
+@@ -44,6 +44,9 @@
+   # file explorer library support

+   FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf

+ 

++  # NOR flash support

++  NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.inf

++

+ [LibraryClasses.common.SEC]

+   HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf

+   MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf

+@@ -161,11 +164,9 @@
+   # ACPI Table Version

+   gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20

+ 

+-  # Runtime Variable storage

+-  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0

+-  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable|TRUE

+-  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000

+-  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x2800

++  # NOR flash support

++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x18F00000

++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00020000

+ 

+ ################################################################################

+ #

+@@ -197,6 +198,12 @@
+       gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000000F

+   }

+ 

++  # NOR flash support

++  Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.inf {

++      <LibraryClasses>

++      NorFlashPlatformLib|Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf

++  }

++

+   # Architectural Protocols

+   ArmPkg/Drivers/CpuDxe/CpuDxe.inf

+   ArmPkg/Drivers/ArmGic/ArmGicDxe.inf

+@@ -217,6 +224,7 @@
+   MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {

+     <LibraryClasses>

+       NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf

++      NULL|EmbeddedPkg/Library/NvVarStoreFormattedLib/NvVarStoreFormattedLib.inf

+       BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf

+   }

+ 

+diff --git a/Platform/ARM/N1Sdp/N1SdpPlatform.fdf b/Platform/ARM/N1Sdp/N1SdpPlatform.fdf
+index e5e24ea5..4329f892 100644
+--- a/Platform/ARM/N1Sdp/N1SdpPlatform.fdf
++++ b/Platform/ARM/N1Sdp/N1SdpPlatform.fdf
+@@ -1,7 +1,7 @@
+ ## @file

+ #  FDF file of N1Sdp

+ #

+-#  Copyright (c) 2018 - 2021, ARM Limited. All rights reserved.<BR>

++#  Copyright (c) 2018 - 2023, ARM Limited. All rights reserved.<BR>

+ #

+ #  SPDX-License-Identifier: BSD-2-Clause-Patent

+ ##

+@@ -140,6 +140,8 @@ READ_LOCK_STATUS   = TRUE
+   INF ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe.inf

+   INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf

+ 

++  INF Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.inf

++

+   INF Platform/ARM/Drivers/BootMonFs/BootMonFs.inf

+   INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf

+ 

diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0008-Platform-ARM-N1Sdp-Enable-FaultTolerantWrite-Dxe-dri.patch b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0008-Platform-ARM-N1Sdp-Enable-FaultTolerantWrite-Dxe-dri.patch
new file mode 100644
index 0000000..3951b48
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0008-Platform-ARM-N1Sdp-Enable-FaultTolerantWrite-Dxe-dri.patch
@@ -0,0 +1,50 @@
+From 5e8fbb3ba0f634f7fc873c6577269845f9e243db Mon Sep 17 00:00:00 2001
+From: sahil <sahil@arm.com>
+Date: Mon, 2 May 2022 19:28:19 +0530
+Subject: [PATCH] Platform/ARM/N1Sdp: Enable FaultTolerantWrite Dxe driver for
+ N1Sdp
+
+Upstream-Status: Pending
+Signed-off-by: Xueliang Zhong <xueliang.zhong@arm.com>
+Signed-off-by: sahil <sahil@arm.com>
+Change-Id: If448ad95b2e72cef31ce1e1e5ab2504d607f0545
+---
+ Platform/ARM/N1Sdp/N1SdpPlatform.dsc | 5 +++++
+ Platform/ARM/N1Sdp/N1SdpPlatform.fdf | 1 +
+ 2 files changed, 6 insertions(+)
+
+diff --git a/Platform/ARM/N1Sdp/N1SdpPlatform.dsc b/Platform/ARM/N1Sdp/N1SdpPlatform.dsc
+index 80bc875a..90a0d5b6 100644
+--- a/Platform/ARM/N1Sdp/N1SdpPlatform.dsc
++++ b/Platform/ARM/N1Sdp/N1SdpPlatform.dsc
+@@ -165,6 +165,10 @@
+   gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20

+ 

+   # NOR flash support

++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0x18F40000

++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00020000

++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0x18F20000

++  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00020000

+   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x18F00000

+   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00020000

+ 

+@@ -227,6 +231,7 @@
+       NULL|EmbeddedPkg/Library/NvVarStoreFormattedLib/NvVarStoreFormattedLib.inf

+       BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf

+   }

++  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf

+ 

+   # ACPI Support

+   MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf

+diff --git a/Platform/ARM/N1Sdp/N1SdpPlatform.fdf b/Platform/ARM/N1Sdp/N1SdpPlatform.fdf
+index 4329f892..17d370a3 100644
+--- a/Platform/ARM/N1Sdp/N1SdpPlatform.fdf
++++ b/Platform/ARM/N1Sdp/N1SdpPlatform.fdf
+@@ -90,6 +90,7 @@ READ_LOCK_STATUS   = TRUE
+   INF MdeModulePkg/Universal/Metronome/Metronome.inf

+   INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf

+   INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf

++  INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf

+   INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf

+   INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf

+   INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf

diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0009-Platform-ARM-N1Sdp-manually-poll-QSPI-status-bit-aft.patch b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0009-Platform-ARM-N1Sdp-manually-poll-QSPI-status-bit-aft.patch
new file mode 100644
index 0000000..8e14699
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/edk2-platforms/0009-Platform-ARM-N1Sdp-manually-poll-QSPI-status-bit-aft.patch
@@ -0,0 +1,197 @@
+From 6d274379f584a638c1f2b4b8a19014d4baef1d9f Mon Sep 17 00:00:00 2001
+From: sahil <sahil@arm.com>
+Date: Thu, 11 Aug 2022 11:26:29 +0530
+Subject: [PATCH] Platform/ARM/N1Sdp: manually poll QSPI status bit after
+ erase/write
+
+This patch adds a function to poll Nor flash memory's status register
+bit (WIP bit) to wait for an erase/write operation to complete.
+The polling timeout is set to 1 second.
+
+Upstream-Status: Pending
+Signed-off-by: Xueliang Zhong <xueliang.zhong@arm.com>
+Signed-off-by: sahil <sahil@arm.com>
+Change-Id: Ie678b7586671964ae0f8506a0542d73cbddddfe4
+---
+ .../Drivers/CadenceQspiDxe/CadenceQspiDxe.inf |  1 +
+ .../Drivers/CadenceQspiDxe/CadenceQspiReg.h   |  6 +-
+ .../N1Sdp/Drivers/CadenceQspiDxe/NorFlash.c   | 80 ++++++++++++++++++-
+ .../N1Sdp/Drivers/CadenceQspiDxe/NorFlash.h   |  5 ++
+ 4 files changed, 88 insertions(+), 4 deletions(-)
+
+diff --git a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.inf b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.inf
+index 4f20c3ba..7a39eb2d 100644
+--- a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.inf
++++ b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiDxe.inf
+@@ -39,6 +39,7 @@
+   MemoryAllocationLib
+   NorFlashInfoLib
+   NorFlashPlatformLib
++  TimerLib
+   UefiBootServicesTableLib
+   UefiDriverEntryPoint
+   UefiLib
+diff --git a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiReg.h b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiReg.h
+index fe3b327c..1971631d 100644
+--- a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiReg.h
++++ b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/CadenceQspiReg.h
+@@ -16,13 +16,15 @@
+ #define CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BIT_POS         19
+ #define CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_BIT_POS    16
+ #define CDNS_QSPI_FLASH_CMD_CTRL_REG_STATUS_BIT           0x02
+-#define CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_4B         0x03
+-#define CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_3B         0x02
+ #define CDNS_QSPI_FLASH_CMD_CTRL_REG_OPCODE_BIT_POS       24
+ #define CDNS_QSPI_FLASH_CMD_CTRL_REG_READ_ENABLE          0x01
+ #define CDNS_QSPI_FLASH_CMD_CTRL_REG_READ_BYTE_3B         0x02
+ #define CDNS_QSPI_FLASH_CMD_CTRL_REG_READEN_BIT_POS       23
+ #define CDNS_QSPI_FLASH_CMD_CTRL_REG_READBYTE_BIT_POS     20
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_DUMMY_8C             0x8
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_DUMMY_BIT_POS        7
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_NUM_DATA_BYTES(x) ((x - 1) << CDNS_QSPI_FLASH_CMD_CTRL_REG_READBYTE_BIT_POS)
++#define CDNS_QSPI_FLASH_CMD_CTRL_REG_NUM_ADDR_BYTES(x) ((x - 1) << CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_BIT_POS)
+ 
+ #define CDNS_QSPI_FLASH_CMD_READ_DATA_REG_OFFSET          0xA0
+ 
+diff --git a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.c b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.c
+index 188c75e2..6832351a 100644
+--- a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.c
++++ b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.c
+@@ -10,6 +10,7 @@
+ #include <Library/MemoryAllocationLib.h>
+ #include <Library/NorFlashInfoLib.h>
+ #include <Library/PcdLib.h>
++#include <Library/TimerLib.h>
+ #include <Library/UefiBootServicesTableLib.h>
+ #include <Library/UefiLib.h>
+ 
+@@ -184,6 +185,74 @@ FreeInstance:
+   return Status;
+ }
+ 
++/**
++  Converts milliseconds into number of ticks of the performance counter.
++
++  @param[in] Milliseconds  Milliseconds to convert into ticks.
++
++  @retval Milliseconds expressed as number of ticks.
++
++**/
++STATIC
++UINT64
++MilliSecondsToTicks (
++  IN UINTN Milliseconds
++  )
++{
++  CONST UINT64  NanoSecondsPerTick = GetTimeInNanoSecond (1);
++
++  return (Milliseconds * 1000000) / NanoSecondsPerTick;
++}
++
++/**
++  Poll Status register for NOR flash erase/write completion.
++
++  @param[in]      Instance           NOR flash Instance.
++
++  @retval         EFI_SUCCESS        Request is executed successfully.
++  @retval         EFI_TIMEOUT        Operation timed out.
++  @retval         EFI_DEVICE_ERROR   Controller operartion failed.
++
++**/
++STATIC
++EFI_STATUS
++NorFlashPollStatusRegister (
++  IN NOR_FLASH_INSTANCE     *Instance
++  )
++{
++  BOOLEAN     SRegDone;
++  UINT32      val;
++
++  val = SPINOR_OP_RDSR << CDNS_QSPI_FLASH_CMD_CTRL_REG_OPCODE_BIT_POS |
++      CDNS_QSPI_FLASH_CMD_CTRL_REG_READ_ENABLE << CDNS_QSPI_FLASH_CMD_CTRL_REG_READEN_BIT_POS |
++      CDNS_QSPI_FLASH_CMD_CTRL_REG_NUM_DATA_BYTES(1) |
++      CDNS_QSPI_FLASH_CMD_CTRL_REG_DUMMY_8C << CDNS_QSPI_FLASH_CMD_CTRL_REG_DUMMY_BIT_POS;
++
++  CONST UINT64  TickOut =
++    GetPerformanceCounter () + MilliSecondsToTicks (SPINOR_SR_WIP_POLL_TIMEOUT_MS);
++
++  do {
++    if (GetPerformanceCounter () > TickOut) {
++      DEBUG ((
++        DEBUG_ERROR,
++        "NorFlashPollStatusRegister: Timeout waiting for erase/write.\n"
++        ));
++      return EFI_TIMEOUT;
++    }
++
++    if (EFI_ERROR (CdnsQspiExecuteCommand (Instance, val))) {
++      return EFI_DEVICE_ERROR;
++    }
++
++    SRegDone =
++      (MmioRead8 (Instance->HostRegisterBaseAddress + CDNS_QSPI_FLASH_CMD_READ_DATA_REG_OFFSET)
++      & SPINOR_SR_WIP) == 0;
++
++  } while (!SRegDone);
++
++  return EFI_SUCCESS;
++}
++
+ /**
+   Check whether NOR flash opertions are Locked.
+ 
+@@ -305,12 +374,16 @@ NorFlashEraseSingleBlock (
+ 
+   DevConfigVal = SPINOR_OP_BE_4K << CDNS_QSPI_FLASH_CMD_CTRL_REG_OPCODE_BIT_POS |
+                  CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_ENABLE << CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BIT_POS |
+-                 CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_3B << CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_BIT_POS;
++                 CDNS_QSPI_FLASH_CMD_CTRL_REG_NUM_ADDR_BYTES(3);
+ 
+   if (EFI_ERROR (CdnsQspiExecuteCommand (Instance, DevConfigVal))) {
+     return EFI_DEVICE_ERROR;
+   }
+ 
++  if (EFI_ERROR (NorFlashPollStatusRegister (Instance))) {
++      return EFI_DEVICE_ERROR;
++  }
++
+   return EFI_SUCCESS;
+ }
+ 
+@@ -383,6 +456,9 @@ NorFlashWriteSingleWord (
+     return EFI_DEVICE_ERROR;
+   }
+   MmioWrite32 (WordAddress, WriteData);
++  if (EFI_ERROR (NorFlashPollStatusRegister (Instance))) {
++    return EFI_DEVICE_ERROR;
++  }
+   return EFI_SUCCESS;
+ }
+ 
+@@ -907,7 +983,7 @@ NorFlashReadID (
+ 
+   val = SPINOR_OP_RDID << CDNS_QSPI_FLASH_CMD_CTRL_REG_OPCODE_BIT_POS |
+         CDNS_QSPI_FLASH_CMD_CTRL_REG_READ_ENABLE << CDNS_QSPI_FLASH_CMD_CTRL_REG_READEN_BIT_POS |
+-        CDNS_QSPI_FLASH_CMD_CTRL_REG_ADDR_BYTE_3B << CDNS_QSPI_FLASH_CMD_CTRL_REG_READBYTE_BIT_POS;
++        CDNS_QSPI_FLASH_CMD_CTRL_REG_NUM_DATA_BYTES(3);
+ 
+   if (EFI_ERROR (CdnsQspiExecuteCommand (Instance, val))) {
+     return EFI_DEVICE_ERROR;
+diff --git a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.h b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.h
+index e720937e..eb0afc60 100644
+--- a/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.h
++++ b/Platform/ARM/N1Sdp/Drivers/CadenceQspiDxe/NorFlash.h
+@@ -477,8 +477,13 @@ NorFlashReadID (
+   OUT UINT8               JedecId[3]
+   );
+ 
++#define SPINOR_SR_WIP                 BIT0  // Write in progress
++
+ #define SPINOR_OP_WREN                0x06  // Write enable
+ #define SPINOR_OP_BE_4K               0x20  // Erase 4KiB block
+ #define SPINOR_OP_RDID                0x9f  // Read JEDEC ID
++#define SPINOR_OP_RDSR                0x05  // Read status register
++
++#define SPINOR_SR_WIP_POLL_TIMEOUT_MS  1000u // Status Register read timeout
+ 
+ #endif /* NOR_FLASH_DXE_H_ */
diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-os/n1sdp/0004-Handle-logging-syscall.patch b/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-os/n1sdp/0004-Handle-logging-syscall.patch
index 356be9e..67d9872 100644
--- a/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-os/n1sdp/0004-Handle-logging-syscall.patch
+++ b/meta-arm/meta-arm-bsp/recipes-security/optee/files/optee-os/n1sdp/0004-Handle-logging-syscall.patch
@@ -15,8 +15,8 @@
 index e0fa0aa6..c7a45387 100644
 --- a/core/arch/arm/kernel/spmc_sp_handler.c
 +++ b/core/arch/arm/kernel/spmc_sp_handler.c
-@@ -1004,6 +1004,12 @@ void spmc_sp_msg_handler(struct thread_smc_args *args,
- 			ffa_mem_reclaim(args, caller_sp);
+@@ -1132,6 +1132,12 @@ void spmc_sp_msg_handler(struct thread_smc_args *args,
+ 			handle_mem_perm_set(args, caller_sp);
  			sp_enter(args, caller_sp);
  			break;
 +		case 0xdeadbeef:
diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_3.18.0.bbappend b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_3.18.0.bbappend
index 9a21083..6a22d47 100644
--- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_3.18.0.bbappend
+++ b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_3.18.0.bbappend
@@ -2,6 +2,5 @@
 
 MACHINE_OPTEE_OS_TADEVKIT_REQUIRE ?= ""
 MACHINE_OPTEE_OS_TADEVKIT_REQUIRE:tc = "optee-os-generic-tc.inc"
-MACHINE_OPTEE_OS_TADEVKIT_REQUIRE:n1sdp = "optee-os-n1sdp.inc"
 
 require ${MACHINE_OPTEE_OS_TADEVKIT_REQUIRE}
diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_3.20.0.bbappend b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_3.20.0.bbappend
new file mode 100644
index 0000000..e09c4a5
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os-tadevkit_3.20.0.bbappend
@@ -0,0 +1,6 @@
+# Machine specific configurations
+
+MACHINE_OPTEE_OS_TADEVKIT_REQUIRE ?= ""
+MACHINE_OPTEE_OS_TADEVKIT_REQUIRE:n1sdp = "optee-os-n1sdp.inc"
+
+require ${MACHINE_OPTEE_OS_TADEVKIT_REQUIRE}
diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.18.0.bbappend b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.18.0.bbappend
index bc933dd..e276fb8 100644
--- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.18.0.bbappend
+++ b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.18.0.bbappend
@@ -1,7 +1,6 @@
 # Machine specific configurations
 
 MACHINE_OPTEE_OS_REQUIRE ?= ""
-MACHINE_OPTEE_OS_REQUIRE:n1sdp = "optee-os-n1sdp.inc"
 MACHINE_OPTEE_OS_REQUIRE:tc = "optee-os-tc.inc"
 
 require ${MACHINE_OPTEE_OS_REQUIRE}
diff --git a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bbappend b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bbappend
index e732c80..b5493e5 100644
--- a/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bbappend
+++ b/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bbappend
@@ -2,5 +2,6 @@
 
 MACHINE_OPTEE_OS_REQUIRE ?= ""
 MACHINE_OPTEE_OS_REQUIRE:corstone1000 = "optee-os-corstone1000-common.inc"
+MACHINE_OPTEE_OS_REQUIRE:n1sdp = "optee-os-n1sdp.inc"
 
 require ${MACHINE_OPTEE_OS_REQUIRE}
diff --git a/meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.10.0.bb b/meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.11.0.bb
similarity index 88%
rename from meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.10.0.bb
rename to meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.11.0.bb
index b9d0953..30705f6 100644
--- a/meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.10.0.bb
+++ b/meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.11.0.bb
@@ -10,7 +10,7 @@
 SRC_URI = "${SRC_URI_SCP_FIRMWARE};branch=${SRCBRANCH}"
 SRCBRANCH = "master"
 
-SRCREV  = "673d014f3861ad81cc5ab06d2884a314a610799b"
+SRCREV  = "635697544170b78167ed698393a72d6e522032e1"
 
 PROVIDES += "virtual/control-processor-firmware"
 
@@ -77,18 +77,18 @@
            if [ "$TYPE" = "romfw" ]; then
                if [ "$FW" = "scp" ]; then
                    install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin"
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1" "${D}/firmware/${FW}_${TYPE}.elf"
-               elif [ "$FW" = "mcp" ]; then
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-mcp-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin"
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-mcp-bl1" "${D}/firmware/${FW}_${TYPE}.elf"
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1.elf" "${D}/firmware/${FW}_${TYPE}.elf"
+               else
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin"
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl1.elf" "${D}/firmware/${FW}_${TYPE}.elf"
                fi
            elif [ "$TYPE" = "ramfw" ]; then
                if [ "$FW" = "scp" ]; then
                    install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin"
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2" "${D}/firmware/${FW}_${TYPE}.elf"
-               elif [ "$FW" = "mcp" ]; then
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-mcp-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin"
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-mcp-bl2" "${D}/firmware/${FW}_${TYPE}.elf"
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2.elf" "${D}/firmware/${FW}_${TYPE}.elf"
+               else
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin"
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl2.elf" "${D}/firmware/${FW}_${TYPE}.elf"
                fi
            fi
        done
diff --git a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.7.0-src.inc b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.7.0-src.inc
index 7d5b4b5..6a209c3 100644
--- a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.7.0-src.inc
+++ b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.7.0-src.inc
@@ -12,11 +12,13 @@
 SRC_URI_TRUSTED_FIRMWARE_M_MBEDTLS ?= "git://github.com/ARMmbed/mbedtls.git;protocol=https"
 SRC_URI_TRUSTED_FIRMWARE_M_MCUBOOT ?= "git://github.com/mcu-tools/mcuboot.git;protocol=https"
 SRC_URI_TRUSTED_FIRMWARE_M_QCBOR ?= "git://github.com/laurencelundblade/QCBOR.git;protocol=https"
+SRC_URI_TRUSTED_FIRMWARE_M_EXTRAS ?= "git://git.trustedfirmware.org/TF-M/tf-m-extras.git;protocol=https"
 SRC_URI  = "${SRC_URI_TRUSTED_FIRMWARE_M};branch=${SRCBRANCH_tfm};name=tfm;destsuffix=git/tfm \
             ${SRC_URI_TRUSTED_FIRMWARE_M_TESTS};branch=${SRCBRANCH_tfm-tests};name=tfm-tests;destsuffix=git/tf-m-tests \
             ${SRC_URI_TRUSTED_FIRMWARE_M_MBEDTLS};branch=${SRCBRANCH_mbedtls};name=mbedtls;destsuffix=git/mbedtls \
             ${SRC_URI_TRUSTED_FIRMWARE_M_MCUBOOT};branch=${SRCBRANCH_mcuboot};name=mcuboot;destsuffix=git/mcuboot \
             ${SRC_URI_TRUSTED_FIRMWARE_M_QCBOR};branch=${SRCBRANCH_qcbor};name=qcbor;destsuffix=git/qcbor \
+            ${SRC_URI_TRUSTED_FIRMWARE_M_EXTRAS};branch=${SRCBRANCH_tfm-extras};name=tfm-extras;destsuffix=git/tfm-extras \
             "
 
 # The required dependencies are documented in tf-m/config/config_default.cmake
@@ -35,6 +37,9 @@
 # qcbor
 SRCBRANCH_qcbor ?= "master"
 SRCREV_qcbor = "b0e7033268e88c9f27146fa9a1415ef4c19ebaff"
+# TF-Mv1.7.0
+SRCBRANCH_tfm-extras ?= "master"
+SRCREV_tfm-extras = "daacaa6df3881e205bc03d75fc8fb688afe9f0f1"
 
 SRCREV_FORMAT = "tfm"
 
diff --git a/meta-arm/meta-arm/recipes-devtools/trusted-firmware-m-scripts/trusted-firmware-m-scripts-native.inc b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m-scripts-native.inc
similarity index 100%
rename from meta-arm/meta-arm/recipes-devtools/trusted-firmware-m-scripts/trusted-firmware-m-scripts-native.inc
rename to meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m-scripts-native.inc
diff --git a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m-scripts-native_1.7.0.bb b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m-scripts-native_1.7.0.bb
new file mode 100644
index 0000000..504846e
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m-scripts-native_1.7.0.bb
@@ -0,0 +1,2 @@
+require recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.7.0-src.inc
+require recipes-bsp/trusted-firmware-m/trusted-firmware-m-scripts-native.inc
diff --git a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m.inc b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m.inc
index 9062df8..d074442 100644
--- a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m.inc
+++ b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m.inc
@@ -72,14 +72,12 @@
 # Verbose builds
 EXTRA_OECMAKE += "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON"
 
-EXTRA_OECMAKE += "-DMBEDCRYPTO_PATH=${S}/../mbedtls -DTFM_TEST_REPO_PATH=${S}/../tf-m-tests -DMCUBOOT_PATH=${S}/../mcuboot -DQCBOR_PATH=${S}/../qcbor"
+EXTRA_OECMAKE += "-DMBEDCRYPTO_PATH=${S}/../mbedtls -DTFM_TEST_REPO_PATH=${S}/../tf-m-tests -DTFM_EXTRAS_REPO_PATH=${S}/../tfm-extras -DMCUBOOT_PATH=${S}/../mcuboot -DQCBOR_PATH=${S}/../qcbor"
 
 export CMAKE_BUILD_PARALLEL_LEVEL = "${@oe.utils.parallel_make(d, False)}"
 
-# Let the Makefile handle setting up the CFLAGS and LDFLAGS as it is a standalone application
-CFLAGS[unexport] = "1"
-LDFLAGS[unexport] = "1"
 AS[unexport] = "1"
+CC[unexport] = "1"
 LD[unexport] = "1"
 
 # python3-cryptography needs the legacy provider, so set OPENSSL_MODULES to the
@@ -108,11 +106,16 @@
 
 FILES:${PN} = "/firmware"
 SYSROOT_DIRS += "/firmware"
+FILES:${PN}-dbg = "/firmware/*.elf"
 
 addtask deploy after do_install
 do_deploy() {
     cp -rf ${D}/firmware/* ${DEPLOYDIR}/
 }
 
-# Build paths are currently embedded
+# Build paths are currently embedded because it's impossible to pass -fdebug-prefix-map
 INSANE_SKIP:${PN} += "buildpaths"
+INSANE_SKIP:${PN}-dbg += "buildpaths"
+# Target binaries will be 32-bit Arm
+INSANE_SKIP:${PN} += "arch"
+INSANE_SKIP:${PN}-dbg += "arch"
diff --git a/meta-arm/meta-arm/recipes-bsp/uefi/edk2-firmware_202211.bb b/meta-arm/meta-arm/recipes-bsp/uefi/edk2-firmware_202211.bb
new file mode 100644
index 0000000..386bed4
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-bsp/uefi/edk2-firmware_202211.bb
@@ -0,0 +1,4 @@
+SRCREV_edk2           ?= "fff6d81270b57ee786ea18ad74f43149b9f03494"
+SRCREV_edk2-platforms ?= "982212662c71b6c734b7578526071d6b78da3bcc"
+
+require edk2-firmware.inc
diff --git a/meta-arm/meta-arm/recipes-devtools/fvp/fvp-tc1.bb b/meta-arm/meta-arm/recipes-devtools/fvp/fvp-tc1.bb
new file mode 100644
index 0000000..4a1295c
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-devtools/fvp/fvp-tc1.bb
@@ -0,0 +1,11 @@
+require fvp-ecosystem.inc
+
+MODEL = "TC1"
+MODEL_CODE = "FVP_TC1"
+PV = "11.18.28_Linux64"
+
+SRC_URI = "https://developer.arm.com/-/media/Arm%20Developer%20Community/Downloads/OSS/FVP/TotalCompute/Total%20Compute%20Update%202022/${MODEL_CODE}_${PV_URL}.tgz;subdir=${BP}"
+SRC_URI[sha256sum] = "3a2b32ecf34dc9581482d6fc682a9378ba6ed151ea9b68914b4ebad39fb5cacf"
+
+LIC_FILES_CHKSUM = "file://license_terms/license_agreement.txt;md5=a50d186fffa51ed55599183aad911298 \
+                    file://license_terms/third_party_licenses/third_party_licenses.txt;md5=34a1ba318d745f05e6197def68ea5411"
diff --git a/meta-arm/meta-arm/recipes-devtools/trusted-firmware-m-scripts/trusted-firmware-m-scripts-native_1.7.0.bb b/meta-arm/meta-arm/recipes-devtools/trusted-firmware-m-scripts/trusted-firmware-m-scripts-native_1.7.0.bb
deleted file mode 100644
index 2e9e524..0000000
--- a/meta-arm/meta-arm/recipes-devtools/trusted-firmware-m-scripts/trusted-firmware-m-scripts-native_1.7.0.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.7.0-src.inc
-require recipes-devtools/trusted-firmware-m-scripts/trusted-firmware-m-scripts-native.inc
diff --git a/meta-arm/meta-arm/recipes-kernel/linux/files/no-ipvs.cfg b/meta-arm/meta-arm/recipes-kernel/linux/files/no-ipvs.cfg
deleted file mode 100644
index fcfd2b2..0000000
--- a/meta-arm/meta-arm/recipes-kernel/linux/files/no-ipvs.cfg
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_IP_VS=n
diff --git a/meta-arm/meta-arm/recipes-kernel/linux/linux-yocto%.bbappend b/meta-arm/meta-arm/recipes-kernel/linux/linux-yocto%.bbappend
index cab7f47..883ed2c 100644
--- a/meta-arm/meta-arm/recipes-kernel/linux/linux-yocto%.bbappend
+++ b/meta-arm/meta-arm/recipes-kernel/linux/linux-yocto%.bbappend
@@ -10,7 +10,6 @@
 FILESEXTRAPATHS:prepend:generic-arm64 = "${ARMFILESPATHS}"
 SRC_URI:append:generic-arm64 = " \
     file://generic-arm64-kmeta;type=kmeta;destsuffix=generic-arm64-kmeta \
-    file://no-ipvs.cfg \
     "
 
 FILESEXTRAPATHS:prepend:qemuarm64-secureboot = "${ARMFILESPATHS}"
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-client_3.20.0.bb b/meta-arm/meta-arm/recipes-security/optee/optee-client_3.20.0.bb
new file mode 100644
index 0000000..1e69136
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-security/optee/optee-client_3.20.0.bb
@@ -0,0 +1,7 @@
+require optee-client.inc
+
+SRCREV = "dd2d39b49975d2ada7870fe2b7f5a84d0d3860dc"
+
+inherit pkgconfig
+DEPENDS += "util-linux"
+EXTRA_OEMAKE += "PKG_CONFIG=pkg-config"
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-examples_3.20.0.bb b/meta-arm/meta-arm/recipes-security/optee/optee-examples_3.20.0.bb
new file mode 100644
index 0000000..e424d70
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-security/optee/optee-examples_3.20.0.bb
@@ -0,0 +1,3 @@
+require optee-examples.inc
+
+SRCREV = "a98d01e1b9168eaed96bcd0bac0df67c44a81081"
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0001-core-Define-section-attributes-for-clang.patch b/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0001-core-Define-section-attributes-for-clang.patch
deleted file mode 100644
index a69d777..0000000
--- a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0001-core-Define-section-attributes-for-clang.patch
+++ /dev/null
@@ -1,230 +0,0 @@
-From f189457b79989543f65b8a4e8729eff2cdf9a758 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 13 Aug 2022 19:24:55 -0700
-Subject: [PATCH] core: Define section attributes for clang
-
-Clang's attribute section is not same as gcc, here we need to add flags
-to sections so they can be eventually collected by linker into final
-output segments. Only way to do so with clang is to use
-
-pragma clang section ...
-
-The behavious is described here [1], this allows us to define names bss
-sections. This was not an issue until clang-15 where LLD linker starts
-to detect the section flags before merging them and throws the following
-errors
-
-| ld.lld: error: section type mismatch for .nozi.kdata_page
-| >>> /mnt/b/yoe/master/build/tmp/work/qemuarm64-yoe-linux/optee-os-tadevkit/3.17.0-r0/build/core/arch/arm/kernel/thread.o:(.nozi.kdata_page): SHT_PROGBITS
-| >>> output section .nozi: SHT_NOBITS
-|
-| ld.lld: error: section type mismatch for .nozi.mmu.l2
-| >>> /mnt/b/yoe/master/build/tmp/work/qemuarm64-yoe-linux/optee-os-tadevkit/3.17.0-r0/build/core/arch/arm/mm/core_mmu_lpae.o:(.nozi.mmu.l2): SHT_PROGBITS
-| >>> output section .nozi: SHT_NOBITS
-
-These sections should be carrying SHT_NOBITS but so far it was not
-possible to do so, this patch tries to use clangs pragma to get this
-going and match the functionality with gcc.
-
-[1] https://intel.github.io/llvm-docs/clang/LanguageExtensions.html#specifying-section-names-for-global-objects-pragma-clang-section
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- core/arch/arm/kernel/thread.c    | 19 +++++++++++++++--
- core/arch/arm/mm/core_mmu_lpae.c | 35 ++++++++++++++++++++++++++++----
- core/arch/arm/mm/pgt_cache.c     | 12 ++++++++++-
- core/kernel/thread.c             | 13 +++++++++++-
- 4 files changed, 71 insertions(+), 8 deletions(-)
-
---- a/core/arch/arm/kernel/thread.c
-+++ b/core/arch/arm/kernel/thread.c
-@@ -44,16 +44,31 @@ static size_t thread_user_kcode_size __n
- #if defined(CFG_CORE_UNMAP_CORE_AT_EL0) && \
- 	defined(CFG_CORE_WORKAROUND_SPECTRE_BP_SEC) && defined(ARM64)
- long thread_user_kdata_sp_offset __nex_bss;
-+#ifdef __clang__
-+#ifndef CFG_VIRTUALIZATION
-+#pragma clang section bss=".nozi.kdata_page"
-+#else
-+#pragma clang section bss=".nex_nozi.kdata_page"
-+#endif
-+#endif
- static uint8_t thread_user_kdata_page[
- 	ROUNDUP(sizeof(struct thread_core_local) * CFG_TEE_CORE_NB_CORE,
- 		SMALL_PAGE_SIZE)]
- 	__aligned(SMALL_PAGE_SIZE)
-+#ifndef __clang__
- #ifndef CFG_VIRTUALIZATION
--	__section(".nozi.kdata_page");
-+	__section(".nozi.kdata_page")
- #else
--	__section(".nex_nozi.kdata_page");
-+	__section(".nex_nozi.kdata_page")
- #endif
- #endif
-+    ;
-+#endif
-+
-+/* reset BSS section to default ( .bss ) */
-+#ifdef __clang__
-+#pragma clang section bss=""
-+#endif
- 
- #ifdef ARM32
- uint32_t __nostackcheck thread_get_exceptions(void)
---- a/core/arch/arm/mm/core_mmu_lpae.c
-+++ b/core/arch/arm/mm/core_mmu_lpae.c
-@@ -233,19 +233,46 @@ typedef uint16_t l1_idx_t;
- typedef uint64_t base_xlat_tbls_t[CFG_TEE_CORE_NB_CORE][NUM_BASE_LEVEL_ENTRIES];
- typedef uint64_t xlat_tbl_t[XLAT_TABLE_ENTRIES];
- 
-+#ifdef __clang__
-+#pragma clang section bss=".nozi.mmu.base_table"
-+#endif
- static base_xlat_tbls_t base_xlation_table[NUM_BASE_TABLES]
- 	__aligned(NUM_BASE_LEVEL_ENTRIES * XLAT_ENTRY_SIZE)
--	__section(".nozi.mmu.base_table");
-+#ifndef __clang__
-+	__section(".nozi.mmu.base_table")
-+#endif
-+;
-+#ifdef __clang__
-+#pragma clang section bss=""
-+#endif
- 
-+#ifdef __clang__
-+#pragma clang section bss=".nozi.mmu.l2"
-+#endif
- static xlat_tbl_t xlat_tables[MAX_XLAT_TABLES]
--	__aligned(XLAT_TABLE_SIZE) __section(".nozi.mmu.l2");
-+	__aligned(XLAT_TABLE_SIZE)
-+#ifndef __clang__
-+	__section(".nozi.mmu.l2")
-+#endif
-+;
-+#ifdef __clang__
-+#pragma clang section bss=""
-+#endif
- 
- #define XLAT_TABLES_SIZE	(sizeof(xlat_tbl_t) * MAX_XLAT_TABLES)
- 
-+#ifdef __clang__
-+#pragma clang section bss=".nozi.mmu.l2"
-+#endif
- /* MMU L2 table for TAs, one for each thread */
- static xlat_tbl_t xlat_tables_ul1[CFG_NUM_THREADS]
--	__aligned(XLAT_TABLE_SIZE) __section(".nozi.mmu.l2");
--
-+#ifndef __clang__
-+	__aligned(XLAT_TABLE_SIZE) __section(".nozi.mmu.l2")
-+#endif
-+;
-+#ifdef __clang__
-+#pragma clang section bss=""
-+#endif
- /*
-  * TAs page table entry inside a level 1 page table.
-  *
---- a/core/arch/arm/mm/pgt_cache.c
-+++ b/core/arch/arm/mm/pgt_cache.c
-@@ -104,8 +104,18 @@ void pgt_init(void)
- 	 * has a large alignment, while .bss has a small alignment. The current
- 	 * link script is optimized for small alignment in .bss
- 	 */
-+#ifdef __clang__
-+#pragma clang section bss=".nozi.mmu.l2"
-+#endif
- 	static uint8_t pgt_tables[PGT_CACHE_SIZE][PGT_SIZE]
--			__aligned(PGT_SIZE) __section(".nozi.pgt_cache");
-+			__aligned(PGT_SIZE)
-+#ifndef __clang__
-+			__section(".nozi.pgt_cache")
-+#endif
-+			;
-+#ifdef __clang__
-+#pragma clang section bss=""
-+#endif
- 	size_t n;
- 
- 	for (n = 0; n < ARRAY_SIZE(pgt_tables); n++) {
---- a/core/kernel/thread.c
-+++ b/core/kernel/thread.c
-@@ -37,13 +37,24 @@ struct thread_core_local thread_core_loc
- 	name[stack_num][sizeof(name[stack_num]) / sizeof(uint32_t) - 1]
- #endif
- 
-+#define DO_PRAGMA(x) _Pragma (#x)
-+
-+#ifdef __clang__
-+#define DECLARE_STACK(name, num_stacks, stack_size, linkage) \
-+DO_PRAGMA (clang section bss=".nozi_stack." #name) \
-+linkage uint32_t name[num_stacks] \
-+		[ROUNDUP(stack_size + STACK_CANARY_SIZE + STACK_CHECK_EXTRA, \
-+			 STACK_ALIGNMENT) / sizeof(uint32_t)] \
-+		__attribute__((aligned(STACK_ALIGNMENT))); \
-+DO_PRAGMA(clang section bss="")
-+#else
- #define DECLARE_STACK(name, num_stacks, stack_size, linkage) \
- linkage uint32_t name[num_stacks] \
- 		[ROUNDUP(stack_size + STACK_CANARY_SIZE + STACK_CHECK_EXTRA, \
- 			 STACK_ALIGNMENT) / sizeof(uint32_t)] \
- 		__attribute__((section(".nozi_stack." # name), \
- 			       aligned(STACK_ALIGNMENT)))
--
-+#endif
- #define GET_STACK(stack) ((vaddr_t)(stack) + STACK_SIZE(stack))
- 
- DECLARE_STACK(stack_tmp, CFG_TEE_CORE_NB_CORE,
---- a/core/arch/arm/mm/core_mmu_v7.c
-+++ b/core/arch/arm/mm/core_mmu_v7.c
-@@ -204,16 +204,46 @@ typedef uint32_t l1_xlat_tbl_t[NUM_L1_EN
- typedef uint32_t l2_xlat_tbl_t[NUM_L2_ENTRIES];
- typedef uint32_t ul1_xlat_tbl_t[NUM_UL1_ENTRIES];
- 
-+#ifdef __clang__
-+#pragma clang section bss=".nozi.mmu.l1"
-+#endif
- static l1_xlat_tbl_t main_mmu_l1_ttb
--		__aligned(L1_ALIGNMENT) __section(".nozi.mmu.l1");
-+		__aligned(L1_ALIGNMENT)
-+#ifndef __clang__
-+       __section(".nozi.mmu.l1")
-+#endif
-+;
-+#ifdef __clang__
-+#pragma clang section bss=""
-+#endif
- 
- /* L2 MMU tables */
-+#ifdef __clang__
-+#pragma clang section bss=".nozi.mmu.l2"
-+#endif
- static l2_xlat_tbl_t main_mmu_l2_ttb[MAX_XLAT_TABLES]
--		__aligned(L2_ALIGNMENT) __section(".nozi.mmu.l2");
-+		__aligned(L2_ALIGNMENT)
-+#ifndef __clang__
-+       __section(".nozi.mmu.l2")
-+#endif
-+;
-+#ifdef __clang__
-+#pragma clang section bss=""
-+#endif
- 
- /* MMU L1 table for TAs, one for each thread */
-+#ifdef __clang__
-+#pragma clang section bss=".nozi.mmu.ul1"
-+#endif
- static ul1_xlat_tbl_t main_mmu_ul1_ttb[CFG_NUM_THREADS]
--		__aligned(UL1_ALIGNMENT) __section(".nozi.mmu.ul1");
-+		__aligned(UL1_ALIGNMENT)
-+#ifndef __clang__
-+       __section(".nozi.mmu.ul1")
-+#endif
-+;
-+#ifdef __clang__
-+#pragma clang section bss=""
-+#endif
- 
- struct mmu_partition {
- 	l1_xlat_tbl_t *l1_table;
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0006-allow-setting-sysroot-for-libgcc-lookup.patch b/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0006-allow-setting-sysroot-for-libgcc-lookup.patch
deleted file mode 100644
index ab4a6db..0000000
--- a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0006-allow-setting-sysroot-for-libgcc-lookup.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 528aeb42652a3159c1bfd51d6c1442c3ff27b84c Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@arm.com>
-Date: Tue, 26 May 2020 14:38:02 -0500
-Subject: [PATCH] allow setting sysroot for libgcc lookup
-
-Explicitly pass the new variable LIBGCC_LOCATE_CFLAGS variable when searching
-for the compiler libraries as there's no easy way to reliably pass --sysroot
-otherwise.
-
-Upstream-Status: Pending [https://github.com/OP-TEE/optee_os/issues/4188]
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
----
- mk/gcc.mk | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/mk/gcc.mk b/mk/gcc.mk
-index adc77a24..81bfa78a 100644
---- a/mk/gcc.mk
-+++ b/mk/gcc.mk
-@@ -13,11 +13,11 @@ nostdinc$(sm)	:= -nostdinc -isystem $(shell $(CC$(sm)) \
- 			-print-file-name=include 2> /dev/null)
- 
- # Get location of libgcc from gcc
--libgcc$(sm)  	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
-+libgcc$(sm)  	:= $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) \
- 			-print-libgcc-file-name 2> /dev/null)
--libstdc++$(sm)	:= $(shell $(CXX$(sm)) $(CXXFLAGS$(arch-bits-$(sm))) $(comp-cxxflags$(sm)) \
-+libstdc++$(sm)	:= $(shell $(CXX$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CXXFLAGS$(arch-bits-$(sm))) $(comp-cxxflags$(sm)) \
- 			-print-file-name=libstdc++.a 2> /dev/null)
--libgcc_eh$(sm)	:= $(shell $(CXX$(sm)) $(CXXFLAGS$(arch-bits-$(sm))) $(comp-cxxflags$(sm)) \
-+libgcc_eh$(sm)	:= $(shell $(CXX$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CXXFLAGS$(arch-bits-$(sm))) $(comp-cxxflags$(sm)) \
- 			-print-file-name=libgcc_eh.a 2> /dev/null)
- 
- # Define these to something to discover accidental use
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0007-allow-setting-sysroot-for-clang.patch b/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0007-allow-setting-sysroot-for-clang.patch
deleted file mode 100644
index 067ba6e..0000000
--- a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0007-allow-setting-sysroot-for-clang.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From db9e44af75c7cfd3316cab15aaa387383df3e57e Mon Sep 17 00:00:00 2001
-From: Brett Warren <brett.warren@arm.com>
-Date: Wed, 23 Sep 2020 09:27:34 +0100
-Subject: [PATCH] optee: enable clang support
-
-When compiling with clang, the LIBGCC_LOCATE_CFLAG variable used
-to provide a sysroot wasn't included, which results in not locating
-compiler-rt. This is mitigated by including the variable as ammended.
-
-Upstream-Status: Pending
-ChangeId: 8ba69a4b2eb8ebaa047cb266c9aa6c2c3da45701
-Signed-off-by: Brett Warren <brett.warren@arm.com>
-
----
- mk/clang.mk | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mk/clang.mk b/mk/clang.mk
-index c141a3f2..7d067cc0 100644
---- a/mk/clang.mk
-+++ b/mk/clang.mk
-@@ -27,7 +27,7 @@ comp-cflags-warns-clang := -Wno-language-extension-token \
- 
- # Note, use the compiler runtime library (libclang_rt.builtins.*.a) instead of
- # libgcc for clang
--libgcc$(sm)	:= $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
-+libgcc$(sm)	:= $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) \
- 			-rtlib=compiler-rt -print-libgcc-file-name 2> /dev/null)
- 
- # Core ASLR relies on the executable being ready to run from its preferred load
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0008-no-warn-rwx-segments.patch b/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0008-no-warn-rwx-segments.patch
deleted file mode 100644
index 6d48a76..0000000
--- a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0008-no-warn-rwx-segments.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From cf2a2451f4e9300532d677bb3a8315494a3b3a82 Mon Sep 17 00:00:00 2001
-From: Jerome Forissier <jerome.forissier@linaro.org>
-Date: Fri, 5 Aug 2022 09:48:03 +0200
-Subject: [PATCH] core: link: add --no-warn-rwx-segments
-
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-Upstream-Status: Backport [https://github.com/OP-TEE/optee_os/pull/5474]
-
-binutils ld.bfd generates one RWX LOAD segment by merging several sections
-with mixed R/W/X attributes (.text, .rodata, .data). After version 2.38 it
-also warns by default when that happens [1], which breaks the build due to
---fatal-warnings. The RWX segment is not a problem for the TEE core, since
-that information is not used to set memory permissions. Therefore, silence
-the warning.
-
-Link: [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a6e8434126b8fac7aa75107
-Link: https://sourceware.org/bugzilla/show_bug.cgi?id=29448
-Reported-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
-Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
-Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
-
----
- core/arch/arm/kernel/link.mk | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/core/arch/arm/kernel/link.mk b/core/arch/arm/kernel/link.mk
-index 7eed333a..c39d43cb 100644
---- a/core/arch/arm/kernel/link.mk
-+++ b/core/arch/arm/kernel/link.mk
-@@ -31,6 +31,7 @@ link-ldflags += -T $(link-script-pp) -Map=$(link-out-dir)/tee.map
- link-ldflags += --sort-section=alignment
- link-ldflags += --fatal-warnings
- link-ldflags += --gc-sections
-+link-ldflags += $(call ld-option,--no-warn-rwx-segments)
- 
- link-ldadd  = $(LDADD)
- link-ldadd += $(ldflags-external)
-@@ -55,6 +56,7 @@ link-script-cppflags := \
- 		$(cppflagscore))
- 
- ldargs-all_objs := -T $(link-script-dummy) --no-check-sections \
-+		   $(call ld-option,--no-warn-rwx-segments) \
- 		   $(link-objs) $(link-ldadd) $(libgcccore)
- cleanfiles += $(link-out-dir)/all_objs.o
- $(link-out-dir)/all_objs.o: $(objs) $(libdeps) $(MAKEFILE_LIST)
-@@ -67,7 +69,8 @@ $(link-out-dir)/unpaged_entries.txt: $(link-out-dir)/all_objs.o
- 	$(q)$(NMcore) $< | \
- 		$(AWK) '/ ____keep_pager/ { printf "-u%s ", $$3 }' > $@
- 
--unpaged-ldargs = -T $(link-script-dummy) --no-check-sections --gc-sections
-+unpaged-ldargs := -T $(link-script-dummy) --no-check-sections --gc-sections \
-+		 $(call ld-option,--no-warn-rwx-segments)
- unpaged-ldadd := $(objs) $(link-ldadd) $(libgcccore)
- cleanfiles += $(link-out-dir)/unpaged.o
- $(link-out-dir)/unpaged.o: $(link-out-dir)/unpaged_entries.txt
-@@ -95,7 +98,8 @@ $(link-out-dir)/init_entries.txt: $(link-out-dir)/all_objs.o
- 	$(q)$(NMcore) $< | \
- 		$(AWK) '/ ____keep_init/ { printf "-u%s ", $$3 }' > $@
- 
--init-ldargs := -T $(link-script-dummy) --no-check-sections --gc-sections
-+init-ldargs := -T $(link-script-dummy) --no-check-sections --gc-sections \
-+	       $(call ld-option,--no-warn-rwx-segments)
- init-ldadd := $(link-objs-init) $(link-out-dir)/version.o  $(link-ldadd) \
- 	      $(libgcccore)
- cleanfiles += $(link-out-dir)/init.o
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0009-add-z-execstack.patch b/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0009-add-z-execstack.patch
deleted file mode 100644
index 3ba6c4e..0000000
--- a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0009-add-z-execstack.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From ea932656461865ab9ac4036245c756c082aeb3e1 Mon Sep 17 00:00:00 2001
-From: Jerome Forissier <jerome.forissier@linaro.org>
-Date: Tue, 23 Aug 2022 11:41:00 +0000
-Subject: [PATCH] core, ldelf: link: add -z execstack
-
-When building for arm32 with GNU binutils 2.39, the linker outputs
-warnings when generating some TEE core binaries (all_obj.o, init.o,
-unpaged.o and tee.elf) as well as ldelf.elf:
-
- arm-poky-linux-gnueabi-ld.bfd: warning: atomic_a32.o: missing .note.GNU-stack section implies executable stack
- arm-poky-linux-gnueabi-ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
-
-The permissions used when mapping the TEE core stacks do not depend on
-any metadata found in the ELF file. Similarly when the TEE core loads
-ldelf it already creates a non-executable stack regardless of ELF
-information. Therefore we can safely ignore the warnings. This is done
-by adding the '-z execstack' option.
-
-Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
-
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-Upstream-Status: Backport [https://github.com/OP-TEE/optee_os/pull/5499]
-
----
- core/arch/arm/kernel/link.mk | 13 +++++++++----
- ldelf/link.mk                |  3 +++
- 2 files changed, 12 insertions(+), 4 deletions(-)
-
-diff --git a/core/arch/arm/kernel/link.mk b/core/arch/arm/kernel/link.mk
-index c39d43cb..0e96e606 100644
---- a/core/arch/arm/kernel/link.mk
-+++ b/core/arch/arm/kernel/link.mk
-@@ -9,6 +9,11 @@ link-script-dep = $(link-out-dir)/.kern.ld.d
- 
- AWK	 = awk
- 
-+link-ldflags-common += $(call ld-option,--no-warn-rwx-segments)
-+ifeq ($(CFG_ARM32_core),y)
-+link-ldflags-common += $(call ld-option,--no-warn-execstack)
-+endif
-+
- link-ldflags  = $(LDFLAGS)
- ifeq ($(CFG_CORE_ASLR),y)
- link-ldflags += -pie -Bsymbolic -z norelro $(ldflag-apply-dynamic-relocs)
-@@ -31,7 +36,7 @@ link-ldflags += -T $(link-script-pp) -Map=$(link-out-dir)/tee.map
- link-ldflags += --sort-section=alignment
- link-ldflags += --fatal-warnings
- link-ldflags += --gc-sections
--link-ldflags += $(call ld-option,--no-warn-rwx-segments)
-+link-ldflags += $(link-ldflags-common)
- 
- link-ldadd  = $(LDADD)
- link-ldadd += $(ldflags-external)
-@@ -56,7 +61,7 @@ link-script-cppflags := \
- 		$(cppflagscore))
- 
- ldargs-all_objs := -T $(link-script-dummy) --no-check-sections \
--		   $(call ld-option,--no-warn-rwx-segments) \
-+		   $(link-ldflags-common) \
- 		   $(link-objs) $(link-ldadd) $(libgcccore)
- cleanfiles += $(link-out-dir)/all_objs.o
- $(link-out-dir)/all_objs.o: $(objs) $(libdeps) $(MAKEFILE_LIST)
-@@ -70,7 +75,7 @@ $(link-out-dir)/unpaged_entries.txt: $(link-out-dir)/all_objs.o
- 		$(AWK) '/ ____keep_pager/ { printf "-u%s ", $$3 }' > $@
- 
- unpaged-ldargs := -T $(link-script-dummy) --no-check-sections --gc-sections \
--		 $(call ld-option,--no-warn-rwx-segments)
-+		 $(link-ldflags-common)
- unpaged-ldadd := $(objs) $(link-ldadd) $(libgcccore)
- cleanfiles += $(link-out-dir)/unpaged.o
- $(link-out-dir)/unpaged.o: $(link-out-dir)/unpaged_entries.txt
-@@ -99,7 +104,7 @@ $(link-out-dir)/init_entries.txt: $(link-out-dir)/all_objs.o
- 		$(AWK) '/ ____keep_init/ { printf "-u%s ", $$3 }' > $@
- 
- init-ldargs := -T $(link-script-dummy) --no-check-sections --gc-sections \
--	       $(call ld-option,--no-warn-rwx-segments)
-+	       $(link-ldflags-common)
- init-ldadd := $(link-objs-init) $(link-out-dir)/version.o  $(link-ldadd) \
- 	      $(libgcccore)
- cleanfiles += $(link-out-dir)/init.o
-diff --git a/ldelf/link.mk b/ldelf/link.mk
-index 64c8212a..bd49551e 100644
---- a/ldelf/link.mk
-+++ b/ldelf/link.mk
-@@ -20,6 +20,9 @@ link-ldflags += -z max-page-size=4096 # OP-TEE always uses 4K alignment
- ifeq ($(CFG_CORE_BTI),y)
- link-ldflags += $(call ld-option,-z force-bti) --fatal-warnings
- endif
-+ifeq ($(CFG_ARM32_$(sm)), y)
-+link-ldflags += $(call ld-option,--no-warn-execstack)
-+endif
- link-ldflags += $(link-ldflags$(sm))
- 
- link-ldadd  = $(addprefix -L,$(libdirs))
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0010-add-note-GNU-stack-section.patch b/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0010-add-note-GNU-stack-section.patch
deleted file mode 100644
index 4ea65d8..0000000
--- a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit-3.18.0/0010-add-note-GNU-stack-section.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From ec30e84671aac9a2e9549754eb7bc6201728db4c Mon Sep 17 00:00:00 2001
-From: Jerome Forissier <jerome.forissier@linaro.org>
-Date: Tue, 23 Aug 2022 12:31:46 +0000
-Subject: [PATCH] arm32: libutils, libutee, ta: add .note.GNU-stack section to
-
- .S files
-
-When building for arm32 with GNU binutils 2.39, the linker outputs
-warnings when linking Trusted Applications:
-
- arm-unknown-linux-uclibcgnueabihf-ld.bfd: warning: utee_syscalls_a32.o: missing .note.GNU-stack section implies executable stack
- arm-unknown-linux-uclibcgnueabihf-ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
-
-We could silence the warning by adding the '-z execstack' option to the
-TA link flags, like we did in the parent commit for the TEE core and
-ldelf. Indeed, ldelf always allocates a non-executable piece of memory
-for the TA to use as a stack.
-
-However it seems preferable to comply with the common ELF practices in
-this case. A better fix is therefore to add the missing .note.GNU-stack
-sections in the assembler files.
-
-Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
-
-Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
-Upstream-Status: Backport [https://github.com/OP-TEE/optee_os/pull/5499]
-
----
- lib/libutee/arch/arm/utee_syscalls_a32.S             | 2 ++
- lib/libutils/ext/arch/arm/atomic_a32.S               | 2 ++
- lib/libutils/ext/arch/arm/mcount_a32.S               | 2 ++
- lib/libutils/isoc/arch/arm/arm32_aeabi_divmod_a32.S  | 2 ++
- lib/libutils/isoc/arch/arm/arm32_aeabi_ldivmod_a32.S | 2 ++
- lib/libutils/isoc/arch/arm/setjmp_a32.S              | 2 ++
- ta/arch/arm/ta_entry_a32.S                           | 2 ++
- 7 files changed, 14 insertions(+)
-
-diff --git a/lib/libutee/arch/arm/utee_syscalls_a32.S b/lib/libutee/arch/arm/utee_syscalls_a32.S
-index 6e621ca6..af405f62 100644
---- a/lib/libutee/arch/arm/utee_syscalls_a32.S
-+++ b/lib/libutee/arch/arm/utee_syscalls_a32.S
-@@ -7,6 +7,8 @@
- #include <tee_syscall_numbers.h>
- #include <asm.S>
- 
-+	.section .note.GNU-stack,"",%progbits
-+
-         .section .text
-         .balign 4
-         .code 32
-diff --git a/lib/libutils/ext/arch/arm/atomic_a32.S b/lib/libutils/ext/arch/arm/atomic_a32.S
-index eaef6914..2be73ffa 100644
---- a/lib/libutils/ext/arch/arm/atomic_a32.S
-+++ b/lib/libutils/ext/arch/arm/atomic_a32.S
-@@ -5,6 +5,8 @@
- 
- #include <asm.S>
- 
-+	.section .note.GNU-stack,"",%progbits
-+
- /* uint32_t atomic_inc32(uint32_t *v); */
- FUNC atomic_inc32 , :
- 	ldrex	r1, [r0]
-diff --git a/lib/libutils/ext/arch/arm/mcount_a32.S b/lib/libutils/ext/arch/arm/mcount_a32.S
-index 51439a23..54dc3c02 100644
---- a/lib/libutils/ext/arch/arm/mcount_a32.S
-+++ b/lib/libutils/ext/arch/arm/mcount_a32.S
-@@ -7,6 +7,8 @@
- 
- #if defined(CFG_TA_GPROF_SUPPORT) || defined(CFG_FTRACE_SUPPORT)
- 
-+	.section .note.GNU-stack,"",%progbits
-+
- /*
-  * Convert return address to call site address by subtracting the size of the
-  * mcount call instruction (blx __gnu_mcount_nc).
-diff --git a/lib/libutils/isoc/arch/arm/arm32_aeabi_divmod_a32.S b/lib/libutils/isoc/arch/arm/arm32_aeabi_divmod_a32.S
-index a600c879..37ae9ec6 100644
---- a/lib/libutils/isoc/arch/arm/arm32_aeabi_divmod_a32.S
-+++ b/lib/libutils/isoc/arch/arm/arm32_aeabi_divmod_a32.S
-@@ -5,6 +5,8 @@
- 
- #include <asm.S>
- 
-+	.section .note.GNU-stack,"",%progbits
-+
- /*
-  * signed ret_idivmod_values(signed quot, signed rem);
-  * return quotient and remaining the EABI way (regs r0,r1)
-diff --git a/lib/libutils/isoc/arch/arm/arm32_aeabi_ldivmod_a32.S b/lib/libutils/isoc/arch/arm/arm32_aeabi_ldivmod_a32.S
-index 2dc50bc9..5c3353e2 100644
---- a/lib/libutils/isoc/arch/arm/arm32_aeabi_ldivmod_a32.S
-+++ b/lib/libutils/isoc/arch/arm/arm32_aeabi_ldivmod_a32.S
-@@ -5,6 +5,8 @@
- 
- #include <asm.S>
- 
-+	.section .note.GNU-stack,"",%progbits
-+
- /*
-  * __value_in_regs lldiv_t __aeabi_ldivmod( long long n, long long d)
-  */
-diff --git a/lib/libutils/isoc/arch/arm/setjmp_a32.S b/lib/libutils/isoc/arch/arm/setjmp_a32.S
-index 43ea5937..f8a0b70d 100644
---- a/lib/libutils/isoc/arch/arm/setjmp_a32.S
-+++ b/lib/libutils/isoc/arch/arm/setjmp_a32.S
-@@ -51,6 +51,8 @@
- #define SIZE(x)
- #endif
- 
-+	.section .note.GNU-stack,"",%progbits
-+
- /* Arm/Thumb interworking support:
- 
-    The interworking scheme expects functions to use a BX instruction
-diff --git a/ta/arch/arm/ta_entry_a32.S b/ta/arch/arm/ta_entry_a32.S
-index d2f8a69d..cd9a12f9 100644
---- a/ta/arch/arm/ta_entry_a32.S
-+++ b/ta/arch/arm/ta_entry_a32.S
-@@ -5,6 +5,8 @@
- 
- #include <asm.S>
- 
-+	.section .note.GNU-stack,"",%progbits
-+
- /*
-  * This function is the bottom of the user call stack. Mark it as such so that
-  * the unwinding code won't try to go further down.
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit_3.20.0.bb b/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit_3.20.0.bb
new file mode 100644
index 0000000..202caa5
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-security/optee/optee-os-tadevkit_3.20.0.bb
@@ -0,0 +1,24 @@
+require optee-os_3.20.0.bb
+
+SUMMARY = "OP-TEE Trusted OS TA devkit"
+DESCRIPTION = "OP-TEE TA devkit for build TAs"
+HOMEPAGE = "https://www.op-tee.org/"
+
+DEPENDS += "python3-pycryptodome-native"
+
+do_install() {
+    #install TA devkit
+    install -d ${D}${includedir}/optee/export-user_ta/
+    for f in ${B}/export-ta_${OPTEE_ARCH}/* ; do
+        cp -aR $f ${D}${includedir}/optee/export-user_ta/
+    done
+}
+
+do_deploy() {
+	echo "Do not inherit do_deploy from optee-os."
+}
+
+FILES:${PN} = "${includedir}/optee/"
+
+# Build paths are currently embedded
+INSANE_SKIP:${PN}-dev += "buildpaths"
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-test_3.20.0.bb b/meta-arm/meta-arm/recipes-security/optee/optee-test_3.20.0.bb
new file mode 100644
index 0000000..95452b6
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-security/optee/optee-test_3.20.0.bb
@@ -0,0 +1,10 @@
+require optee-test.inc
+
+SRC_URI:append = " \
+    file://musl-workaround.patch \
+   "
+SRCREV = "5db8ab4c733d5b2f4afac3e9aef0a26634c4b444"
+
+EXTRA_OEMAKE:append:libc-musl = " OPTEE_OPENSSL_EXPORT=${STAGING_INCDIR}"
+DEPENDS:append:libc-musl = " openssl"
+CFLAGS:append:libc-musl = " -Wno-error=deprecated-declarations"
diff --git a/meta-openembedded/README b/meta-openembedded/README
index 7318f09..82f2e96 100644
--- a/meta-openembedded/README
+++ b/meta-openembedded/README
@@ -1,6 +1,6 @@
 Collection of layers for the OE-core universe
 
-Main layer maintainer: Khem Raj <raj.khem@gmail.com>
+Main layer maintainer: Armin Kuster <akuster808@gmail.com>
 
 This repository is a collection of layers to suppliment OE-Core
 with additional packages, Each layer have designated maintainer
diff --git a/meta-openembedded/meta-filesystems/README b/meta-openembedded/meta-filesystems/README
index 78a4429..4cee9df 100644
--- a/meta-openembedded/meta-filesystems/README
+++ b/meta-openembedded/meta-filesystems/README
@@ -11,26 +11,26 @@
 
   URI: git://git.openembedded.org/openembedded-core
   layers: meta
-  branch: master
+  branch: mickledore
 
   URI: git://git.openembedded.org/meta-openembedded
   layers: meta-oe
-  branch: master
+  branch: mickledore
 
 Patches
 =======
 
 Please submit any patches against the filesystems layer to the
 OpenEmbedded development mailing list (openembedded-devel@lists.openembedded.org)
-with '[meta-filesystems]' in the subject.
+with '[meta-filesystems][mickledore]' in the subject.
 
-Layer maintainer: Khem Raj <raj.khem@gmail.com>
+Layer maintainer: Armin Kuster <akuster808@gmail.com>
 
 When sending single patches, please use something like:
 
    git send-email -1 -M \
         --to openembedded-devel@lists.openembedded.org \
-        --subject-prefix='meta-filesystems][PATCH'
+        --subject-prefix='meta-filesystems][mickledore][PATCH'
 
 
 Table of Contents
diff --git a/meta-openembedded/meta-gnome/README b/meta-openembedded/meta-gnome/README
index fbb0d72..418f9ec 100644
--- a/meta-openembedded/meta-gnome/README
+++ b/meta-openembedded/meta-gnome/README
@@ -3,14 +3,14 @@
 This layer depends on:
 
 URI: git://git.openembedded.org/openembedded-core
-branch: master
+branch: mickledore
 
 URI: git://git.openembedded.org/meta-openembedded
-branch: master
+branch: mickledore
 
-Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-gnome]' in the subject'
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-gnome][mickledore]' in the subject'
 
 When sending single patches, please using something like:
-git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-gnome][PATCH'
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-gnome][mickledore][PATCH'
 
-Layer maintainer: Andreas Müller <schnitzeltony@gmail.com>
+Layer maintainer: Armin Kuster <akuster808@gmail.com>
diff --git a/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0001-Select-the-current-user-to-authenticate-with-by-defa.patch b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0001-Select-the-current-user-to-authenticate-with-by-defa.patch
new file mode 100644
index 0000000..f8f7ec3
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0001-Select-the-current-user-to-authenticate-with-by-defa.patch
@@ -0,0 +1,80 @@
+From: Utopia Maintenance Team
+ <pkg-utopia-maintainers@lists.alioth.debian.org>
+Date: Mon, 30 Apr 2018 17:56:52 +0000
+Subject: Select the current user to authenticate with by default
+
+Bug: http://bugzilla.gnome.org/show_bug.cgi?id=596188
+Bug-Ubuntu: https://launchpad.net/bugs/435227
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/polkitgnomeauthenticationdialog.c | 23 ++++++++++++++---------
+ 1 file changed, 14 insertions(+), 9 deletions(-)
+
+diff --git a/src/polkitgnomeauthenticationdialog.c b/src/polkitgnomeauthenticationdialog.c
+index 743cc96..d307516 100644
+--- a/src/polkitgnomeauthenticationdialog.c
++++ b/src/polkitgnomeauthenticationdialog.c
+@@ -138,7 +138,7 @@ user_combobox_changed (GtkComboBox *widget,
+ static void
+ create_user_combobox (PolkitGnomeAuthenticationDialog *dialog)
+ {
+-  int n;
++  int n, i, selected_index = 0;
+   GtkComboBox *combo;
+   GtkTreeIter iter;
+   GtkCellRenderer *renderer;
+@@ -162,7 +162,7 @@ create_user_combobox (PolkitGnomeAuthenticationDialog *dialog)
+ 
+ 
+   /* For each user */
+-  for (n = 0; dialog->priv->users[n] != NULL; n++)
++  for (i = 0, n = 0; dialog->priv->users[n] != NULL; n++)
+     {
+       gchar *gecos;
+       gchar *real_name;
+@@ -224,6 +224,14 @@ create_user_combobox (PolkitGnomeAuthenticationDialog *dialog)
+                           USERNAME_COL, dialog->priv->users[n],
+                           -1);
+ 
++      i++;
++      if (passwd->pw_uid == getuid ())
++        {
++          selected_index = i;
++          g_free (dialog->priv->selected_user);
++          dialog->priv->selected_user = g_strdup (dialog->priv->users[n]);
++        }
++
+       g_free (real_name);
+       g_object_unref (pixbuf);
+     }
+@@ -252,8 +260,8 @@ create_user_combobox (PolkitGnomeAuthenticationDialog *dialog)
+                                       user_combobox_set_sensitive,
+                                       NULL, NULL);
+ 
+-  /* Initially select the "Select user..." ... */
+-  gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
++  /* Select the default user */
++  gtk_combo_box_set_active (GTK_COMBO_BOX (combo), selected_index);
+ 
+   /* Listen when a new user is selected */
+   g_signal_connect (GTK_WIDGET (combo),
+@@ -719,16 +727,13 @@ polkit_gnome_authentication_dialog_constructed (GObject *object)
+   gtk_widget_set_tooltip_markup (label, s);
+   g_free (s);
+ 
+-  if (have_user_combobox)
++  /* Disable password entry and authenticate until have a user selected */
++  if (have_user_combobox && gtk_combo_box_get_active (GTK_COMBO_BOX (dialog->priv->user_combobox)) == 0)
+     {
+-      /* ... and make the password entry and "Authenticate" button insensitive */
+       gtk_widget_set_sensitive (dialog->priv->prompt_label, FALSE);
+       gtk_widget_set_sensitive (dialog->priv->password_entry, FALSE);
+       gtk_widget_set_sensitive (dialog->priv->auth_button, FALSE);
+     }
+-  else
+-    {
+-    }
+ 
+   gtk_widget_realize (GTK_WIDGET (dialog));
+ 
diff --git a/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0002-Auth-dialog-Make-the-label-wrap-at-70-chars.patch b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0002-Auth-dialog-Make-the-label-wrap-at-70-chars.patch
new file mode 100644
index 0000000..011fe6e
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0002-Auth-dialog-Make-the-label-wrap-at-70-chars.patch
@@ -0,0 +1,34 @@
+From: Lars Uebernickel <lars@uebernic.de>
+Date: Fri, 17 Oct 2014 15:35:25 +0200
+Subject: Auth dialog: Make the label wrap at 70 chars
+
+Because GtkWindow doesn't have a default width anymore.
+
+Bug: https://bugzilla.gnome.org/show_bug.cgi?id=738688
+Bug-Ubuntu: https://launchpad.net/bugs/1382566
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/polkitgnomeauthenticationdialog.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/polkitgnomeauthenticationdialog.c b/src/polkitgnomeauthenticationdialog.c
+index d307516..efd4185 100644
+--- a/src/polkitgnomeauthenticationdialog.c
++++ b/src/polkitgnomeauthenticationdialog.c
+@@ -574,6 +574,7 @@ polkit_gnome_authentication_dialog_constructed (GObject *object)
+   g_free (s);
+   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+   gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
++  gtk_label_set_max_width_chars (GTK_LABEL (label), 70);
+   gtk_box_pack_start (GTK_BOX (main_vbox), label, FALSE, FALSE, 0);
+ 
+   /* secondary message */
+@@ -601,6 +602,7 @@ polkit_gnome_authentication_dialog_constructed (GObject *object)
+     }
+   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+   gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
++  gtk_label_set_max_width_chars (GTK_LABEL (label), 70);
+   gtk_box_pack_start (GTK_BOX (main_vbox), label, FALSE, FALSE, 0);
+ 
+   /* user combobox */
diff --git a/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0003-Get-user-icon-from-accountsservice-instead-of-lookin.patch b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0003-Get-user-icon-from-accountsservice-instead-of-lookin.patch
new file mode 100644
index 0000000..a3759c4
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0003-Get-user-icon-from-accountsservice-instead-of-lookin.patch
@@ -0,0 +1,138 @@
+From: Marc Deslauriers <marc.deslauriers@canonical.com>
+Date: Mon, 30 Apr 2018 18:03:22 +0000
+Subject: Get user icon from accountsservice instead of looking in ~/.face
+
+Bug: https://bugzilla.gnome.org/show_bug.cgi?id=669857
+Bug-Ubuntu: https://launchpad.net/bugs/928249
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/polkitgnomeauthenticationdialog.c | 107 ++++++++++++++++++++++++++++++----
+ 1 file changed, 97 insertions(+), 10 deletions(-)
+
+diff --git a/src/polkitgnomeauthenticationdialog.c b/src/polkitgnomeauthenticationdialog.c
+index efd4185..565da87 100644
+--- a/src/polkitgnomeauthenticationdialog.c
++++ b/src/polkitgnomeauthenticationdialog.c
+@@ -135,6 +135,102 @@ user_combobox_changed (GtkComboBox *widget,
+     }
+ }
+ 
++static GdkPixbuf *
++get_user_icon (char *username)
++{
++  GError *error;
++  GDBusConnection *connection;
++  GVariant *find_user_result;
++  GVariant *get_icon_result;
++  GVariant *icon_result_variant;
++  const gchar *user_path;
++  const gchar *icon_filename;
++  GdkPixbuf *pixbuf;
++
++  error = NULL;
++  connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
++
++  if (connection == NULL)
++    {
++      g_warning ("Unable to connect to system bus: %s", error->message);
++      g_error_free (error);
++      return NULL;
++    }
++
++  find_user_result = g_dbus_connection_call_sync (connection,
++                                          "org.freedesktop.Accounts",
++                                          "/org/freedesktop/Accounts",
++                                          "org.freedesktop.Accounts",
++                                          "FindUserByName",
++                                          g_variant_new ("(s)",
++                                          username),
++                                          G_VARIANT_TYPE ("(o)"),
++                                          G_DBUS_CALL_FLAGS_NONE,
++                                          -1,
++                                          NULL,
++                                          &error);
++
++  if (find_user_result == NULL)
++    {
++      g_warning ("Accounts couldn't find user: %s", error->message);
++      g_error_free (error);
++      return NULL;
++    }
++
++  user_path = g_variant_get_string (g_variant_get_child_value (find_user_result, 0),
++                                    NULL);
++
++  get_icon_result = g_dbus_connection_call_sync (connection,
++                                                 "org.freedesktop.Accounts",
++                                                 user_path,
++                                                 "org.freedesktop.DBus.Properties",
++                                                 "Get",
++                                                 g_variant_new ("(ss)",
++                                                                "org.freedesktop.Accounts.User",
++                                                                "IconFile"),
++                                                 G_VARIANT_TYPE ("(v)"),
++                                                 G_DBUS_CALL_FLAGS_NONE,
++                                                 -1,
++                                                 NULL,
++                                                 &error);
++
++  g_variant_unref (find_user_result);
++
++  if (get_icon_result == NULL)
++    {
++      g_warning ("Accounts couldn't find user icon: %s", error->message);
++      g_error_free (error);
++      return NULL;
++    }
++
++  g_variant_get_child (get_icon_result, 0, "v", &icon_result_variant);
++  icon_filename = g_variant_get_string (icon_result_variant, NULL);
++
++  if (icon_filename == NULL)
++    {
++      g_warning ("Accounts didn't return a valid filename for user icon");
++      pixbuf = NULL;
++    }
++  else
++    {
++      /* TODO: we probably shouldn't hard-code the size to 16x16 */
++      pixbuf = gdk_pixbuf_new_from_file_at_size (icon_filename,
++                                                 16,
++                                                 16,
++                                                 &error);
++      if (pixbuf == NULL)
++        {
++          g_warning ("Couldn't open user icon: %s", error->message);
++          g_error_free (error);
++        }
++    }
++
++  g_variant_unref (icon_result_variant);
++  g_variant_unref (get_icon_result);
++
++  return pixbuf;
++}
++
+ static void
+ create_user_combobox (PolkitGnomeAuthenticationDialog *dialog)
+ {
+@@ -197,16 +293,7 @@ create_user_combobox (PolkitGnomeAuthenticationDialog *dialog)
+       g_free (gecos);
+ 
+       /* Load users face */
+-      pixbuf = NULL;
+-      if (passwd->pw_dir != NULL)
+-        {
+-          gchar *path;
+-          path = g_strdup_printf ("%s/.face", passwd->pw_dir);
+-          /* TODO: we probably shouldn't hard-code the size to 16x16 */
+-          pixbuf = gdk_pixbuf_new_from_file_at_scale (path, 16, 16, TRUE, NULL);
+-          g_free (path);
+-        }
+-
++      pixbuf = get_user_icon (dialog->priv->users[n]);
+       /* fall back to avatar-default icon */
+       if (pixbuf == NULL)
+         {
diff --git a/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0004-Use-fresh-X11-timestamps-when-displaying-authenticat.patch b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0004-Use-fresh-X11-timestamps-when-displaying-authenticat.patch
new file mode 100644
index 0000000..2c9c5bb
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0004-Use-fresh-X11-timestamps-when-displaying-authenticat.patch
@@ -0,0 +1,48 @@
+From: Jeffrey Knockel <jeff250@gmail.com>
+Date: Mon, 30 Apr 2018 18:05:20 +0000
+Subject: Use fresh X11 timestamps when displaying authentication dialog
+
+This circumvents focus-stealing prevention.
+
+Bug: https://bugzilla.gnome.org/show_bug.cgi?id=676076
+Bug-Debian: https://bugs.debian.org/684300
+Bug-Ubuntu: https://launchpad.net/bugs/946171
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/polkitgnomeauthenticator.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/polkitgnomeauthenticator.c b/src/polkitgnomeauthenticator.c
+index 23163b4..e57d76e 100644
+--- a/src/polkitgnomeauthenticator.c
++++ b/src/polkitgnomeauthenticator.c
+@@ -26,6 +26,7 @@
+ #include <sys/types.h>
+ #include <pwd.h>
+ #include <glib/gi18n.h>
++#include <gdk/gdkx.h>
+ 
+ #include <polkit/polkit.h>
+ #include <polkitagent/polkitagent.h>
+@@ -306,7 +307,17 @@ session_request (PolkitAgentSession *session,
+     }
+ 
+   gtk_widget_show_all (GTK_WIDGET (authenticator->dialog));
+-  gtk_window_present (GTK_WINDOW (authenticator->dialog));
++  GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (authenticator->dialog));
++
++  if (GDK_IS_X11_WINDOW (window))
++    {
++    gtk_window_present_with_time (GTK_WINDOW (authenticator->dialog), gdk_x11_get_server_time (window));
++    }
++  else
++    {
++    gtk_window_present (GTK_WINDOW (authenticator->dialog));
++    }
++
+   password = polkit_gnome_authentication_dialog_run_until_response_for_prompt (POLKIT_GNOME_AUTHENTICATION_DIALOG (authenticator->dialog),
+                                                                                modified_request,
+                                                                                echo_on,
+
diff --git a/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0005-configure.ac-disable-gnome-tools-that-are-not-provid.patch b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0005-configure.ac-disable-gnome-tools-that-are-not-provid.patch
new file mode 100644
index 0000000..7eee12a
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/0005-configure.ac-disable-gnome-tools-that-are-not-provid.patch
@@ -0,0 +1,29 @@
+From 334abb04ff953dabec63a91094de43e3cf064d7d Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@t-online.de>
+Date: Fri, 24 Feb 2023 17:29:24 +0100
+Subject: [PATCH] configure.ac: disable gnome-tools that are not provided
+
+Upstream-Status: Inappropriate [OE-specific]
+Signed-off-by: Markus Volk <f_l_k@t-online.de>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 24eb724..02fccbd 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -33,8 +33,8 @@ LT_INIT
+ # GNOME
+ # *****
+ 
+-GNOME_DEBUG_CHECK
+-GNOME_COMPILE_WARNINGS([maximum])
++#GNOME_DEBUG_CHECK
++#GNOME_COMPILE_WARNINGS([maximum])
+ 
+ #### gcc warning flags
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/polkit-gnome-authentication-agent-1.desktop b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/polkit-gnome-authentication-agent-1.desktop
new file mode 100644
index 0000000..c45acfa
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome/polkit-gnome-authentication-agent-1.desktop
@@ -0,0 +1,87 @@
+[Desktop Entry]
+Name=PolicyKit Authentication Agent
+Name[ar]=مدير الاستيثاق PolicyKit
+Name[be]=PolicyKit - аґент аўтэнтыфікацыі
+Name[bn_IN]=PolicyKit অনুমোদনের এজেন্ট
+Name[ca]=Agent d'autenticació del PolicyKit
+Name[cs]=Ověřovací agent PolicyKit
+Name[da]=Godkendelsesprogrammet PolicyKit
+Name[de]=Legitimationsdienst von PolicyKit
+Name[el]=Πράκτορας πιστοποίησης PolicyKit
+Name[en_GB]=PolicyKit Authentication Agent
+Name[es]=Agente de autenticación de PolicyKit
+Name[eu]=PolicyKit autentifikatzeko agentea
+Name[fi]=PolicytKit-tunnistautumisohjelma
+Name[fr]=Agent d'authentification de PolicyKit
+Name[gl]=Axente de autenticación PolicyKit
+Name[gu]=PolicyKit સત્તાધિકરણ એજન્ટ
+Name[hi]=PolicyKit प्रमाणीकरण प्रतिनिधि
+Name[hu]=PolicyKit hitelesítési ügynök
+Name[it]=Agente di autenticazione per PolicyKit
+Name[ja]=PolicyKit 認証エージェント
+Name[kn]=PolicyKit ದೃಢೀಕರಣ ಮಧ್ಯವರ್ತಿ
+Name[lt]=PolicyKit tapatybės nustatymo agentas
+Name[ml]=പോളിസിക്കിറ്റ് ഓഥന്റിക്കേഷന്‍ ഏജന്റ്
+Name[mr]=PolicyKit ऑथेंटीकेशन एजेंट
+Name[or]=PolicyKit ବୈଧିକରଣ ସଦସ୍ୟ
+Name[pa]=ਪਾਲਸੀਕਿੱਟ ਪਰਮਾਣਕਿਤਾ ਏਜੰਟ
+Name[pl]=Agent uwierzytelniania PolicyKit
+Name[pt]=Agente de Autenticação PolicyKit
+Name[pt_BR]=Agente de autenticação PolicyKit
+Name[ro]=Agent de autentificare PolicyKit
+Name[sk]=Agent PolicyKit na overovanie totožnosti
+Name[sl]=PolicyKit program overjanja
+Name[sv]=Autentiseringsagent för PolicyKit
+Name[ta]=PolicyKit அங்கீகார முகவர்
+Name[te]=పాలసీకిట్ ధృవీకరణ ప్రతినిధి
+Name[th]=ตัวกลางสำหรับยืนยันตัวบุคคล PolicyKit
+Name[uk]=Агент автентифікації PolicyKit
+Name[zh_CN]=PolicyKit 认证代理
+Name[zh_HK]=PolicyKit 驗證代理程式
+Name[zh_TW]=PolicyKit 驗證代理程式
+Comment=PolicyKit Authentication Agent
+Comment[ar]=مدير الاستيثاق PolicyKit
+Comment[be]=PolicyKit - аґент аўтэнтыфікацыі
+Comment[bn_IN]=PolicyKit অনুমোদনের এজেন্ট
+Comment[ca]=Agent d'autenticació del PolicyKit
+Comment[cs]=Ověřovací agent PolicyKit
+Comment[da]=Godkendelsesprogrammet PolicyKit
+Comment[de]=Legitimationsdienst von PolicyKit
+Comment[el]=Πράκτορας πιστοποίησης PolicyKit
+Comment[en_GB]=PolicyKit Authentication Agent
+Comment[es]=Agente de autenticación de PolicyKit
+Comment[eu]=PolicyKit autentifikatzeko agentea
+Comment[fi]=PolicytKit-tunnistautumisohjelma
+Comment[fr]=Agent d'authentification de PolicyKit
+Comment[gl]=Axente de autenticación PolicyKit
+Comment[gu]=PolicyKit સત્તાધિકરણ એજન્ટ
+Comment[hi]=PolicyKit प्रमाणीकरण प्रतिनिधि
+Comment[hu]=PolicyKit hitelesítési ügynök
+Comment[it]=Agente di autenticazione per PolicyKit
+Comment[ja]=PolicyKit 認証エージェント
+Comment[kn]=PolicyKit ದೃಢೀಕರಣ ಮಧ್ಯವರ್ತಿ
+Comment[lt]=PolicyKit tapatybės nustatymo agentas
+Comment[ml]=പോളിസിക്കിറ്റ് ഓഥന്റിക്കേഷന്‍ ഏജന്റ്
+Comment[mr]=PolicyKit ऑथेंटीकेशन एजेंट
+Comment[or]=PolicyKit ବୈଧିକରଣ ସଦସ୍ୟ
+Comment[pa]=ਪਾਲਸੀਕਿੱਟ ਪਰਮਾਣਕਿਤਾ ਏਜੰਟ
+Comment[pl]=Agent uwierzytelniania PolicyKit
+Comment[pt]=Agente de Autenticação PolicyKit
+Comment[pt_BR]=Agente de autenticação PolicyKit
+Comment[ro]=Agent de autentificare PolicyKit
+Comment[sk]=Agent PolicyKit na overovanie totožnosti
+Comment[sl]=PolicyKit program overjanja
+Comment[sv]=Autentiseringsagent för PolicyKit
+Comment[ta]=PolicyKit அங்கீகார முகவர்
+Comment[te]=పాలసీకిట్ ధృవీకరణ ప్రతినిధి
+Comment[th]=ตัวกลางสำหรับยืนยันตัวบุคคล PolicyKit
+Comment[uk]=Агент автентифікації PolicyKit
+Comment[zh_CN]=PolicyKit 认证代理
+Comment[zh_HK]=PolicyKit 驗證代理程式
+Comment[zh_TW]=PolicyKit 驗證代理程式
+Exec=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
+Terminal=false
+Type=Application
+Categories=
+NoDisplay=true
+OnlyShowIn=GNOME;
diff --git a/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome_0.105.bb b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome_0.105.bb
new file mode 100644
index 0000000..e0e4a59
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-extended/polkit-gnome/polkit-gnome_0.105.bb
@@ -0,0 +1,29 @@
+SUMMARY = "PolicyKit-gnome provides an Authentication Agent for PolicyKit"
+HOMEPAGE = "https://gitlab.gnome.org/Archive/policykit-gnome"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=74579fab173e4c5e12aac0cd83ee98ec"
+
+DEPENDS = "glib-2.0-native glib-2.0 gtk+3 polkit intltool-native"
+
+inherit autotools pkgconfig features_check
+
+REQUIRED_DISTRO_FEATURES = "polkit"
+
+SRC_URI = " \
+    git://gitlab.gnome.org/Archive/policykit-gnome.git;protocol=https;branch=master \
+    file://0001-Select-the-current-user-to-authenticate-with-by-defa.patch \
+    file://0002-Auth-dialog-Make-the-label-wrap-at-70-chars.patch \
+    file://0003-Get-user-icon-from-accountsservice-instead-of-lookin.patch \
+    file://0004-Use-fresh-X11-timestamps-when-displaying-authenticat.patch \
+    file://0005-configure.ac-disable-gnome-tools-that-are-not-provid.patch \
+    file://polkit-gnome-authentication-agent-1.desktop \
+"
+SRCREV = "a0763a246a81188f60b0f9810143e49224dc752f"
+S = "${WORKDIR}/git"
+
+
+do_install:append() {
+  install -d ${D}${datadir}/applications
+  install -m644 ${WORKDIR}/polkit-gnome-authentication-agent-1.desktop \
+      ${D}${datadir}/applications
+}
diff --git a/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.102.bb b/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.102.bb
index b12dc16..68b3f93 100644
--- a/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.102.bb
+++ b/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.102.bb
@@ -10,11 +10,9 @@
 
 DEPENDS += "lcms"
 
-# https://bugs.llvm.org/show_bug.cgi?id=45555
-CFLAGS:append:toolchain-clang:mipsarch = " -ffp-exception-behavior=ignore "
-CFLAGS:append:toolchain-clang:riscv64 = " -ffp-exception-behavior=ignore "
-
 SRC_URI = "https://download.gimp.org/pub/${BPN}/0.1/${BP}.tar.xz"
 SRC_URI[sha256sum] = "a88bb28506575f95158c8c89df6e23686e50c8b9fea412bf49fe8b80002d84f0"
 
+FILES:${PN} += "${libdir}/${BPN}-${@gnome_verdir("${PV}")}"
+
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.42.bb b/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.44.bb
similarity index 96%
rename from meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.42.bb
rename to meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.44.bb
index fd75a38..3c1a024 100644
--- a/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.42.bb
+++ b/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.44.bb
@@ -26,7 +26,7 @@
 SHPV = "${@gnome_verdir("${PV}")}"
 
 SRC_URI = "https://download.gimp.org/pub/${BPN}/${SHPV}/${BP}.tar.xz"
-SRC_URI[sha256sum] = "aba83a0cbaa6c56edc29ea22f2e8172950a53b96daa51592083d59222bdde02d"
+SRC_URI[sha256sum] = "0a4cdb41635e406a0849cd0d3f03caf7d97cab8aa13d28707d532d0089d56126"
 
 PACKAGECONFIG ??= "gexiv2 jpeg libpng libraw librsvg pango poppler sdl2"
 PACKAGECONFIG:class-native = "libpng librsvg"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eog/eog_43.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/eog/eog_44.0.bb
similarity index 86%
rename from meta-openembedded/meta-gnome/recipes-gnome/eog/eog_43.2.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/eog/eog_44.0.bb
index 7dbc0ec..c95d0e6 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/eog/eog_43.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/eog/eog_44.0.bb
@@ -21,7 +21,7 @@
 
 REQUIRED_DISTRO_FEATURES = "opengl"
 
-SRC_URI[archive.sha256sum] = "9dcfdce5585a90e2bb1cf57e377cb1eb12d41bd9bcb9bbacdf506bc1b1354ef9"
+SRC_URI[archive.sha256sum] = "41d85fab05c430898dbfd847e48e1f5b4935dc3cbcee546e759a907eda671054"
 
 GTKDOC_MESON_OPTION = "gtk_doc"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_43.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_44.0.bb
similarity index 91%
rename from meta-openembedded/meta-gnome/recipes-gnome/evince/evince_43.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/evince/evince_44.0.bb
index b83c411..1c7103c 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_43.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_44.0.bb
@@ -6,6 +6,7 @@
     adwaita-icon-theme \
     appstream-glib \
     cairo \
+    desktop-file-utils-native \
     dbus \
     gdk-pixbuf \
     glib-2.0 \
@@ -33,7 +34,7 @@
 def gnome_verdir(v):
     return oe.utils.trim_version(v, 1)
 
-SRC_URI[archive.sha256sum] = "6d75ca62b73bfbb600f718a098103dc6b813f9050b9594be929e29b4589d2335"
+SRC_URI[archive.sha256sum] = "339ee9e005dd7823a13fe21c71c2ec6d2c4cb74548026e4741eee7b2703e09da"
 
 GTKDOC_MESON_OPTION = "gtk_doc"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
index e1360af..43717a8 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
@@ -37,7 +37,7 @@
 PACKAGECONFIG ?= "oauth"
 
 PACKAGECONFIG[canberra] = "-DENABLE_CANBERRA=ON,-DENABLE_CANBERRA=OFF,libcanberra"
-PACKAGECONFIG[oauth]    = "-DENABLE_OAUTH2_WEBKITGTK4=ON -DENABLE_OAUTH2_WEBKITGTK=OFF,-DENABLE_OAUTH2_WEBKITGTK4=OFF -DENABLE_OAUTH2_WEBKITGTK=OFF,webkitgtk json-glib"
+PACKAGECONFIG[oauth]    = "-DENABLE_OAUTH2_WEBKITGTK=ON -DENABLE_OAUTH2_WEBKITGTK4=OFF,-DENABLE_OAUTH2_WEBKITGTK4=OFF -DENABLE_OAUTH2_WEBKITGTK=OFF,webkitgtk json-glib"
 PACKAGECONFIG[goa]    = "-DENABLE_GOA=ON,-DENABLE_GOA=OFF,gnome-online-accounts"
 PACKAGECONFIG[kerberos]    = "-DWITH_KRB5=ON,-DWITH_KRB5=OFF,krb5"
 # BROKEN: due missing pkg-config in openldap eds' cmake finds host-libs when
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0001-cmake-Do-not-export-CC-into-gir-compiler.patch b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0001-cmake-Do-not-export-CC-into-gir-compiler.patch
index fda84ac..118d93a 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0001-cmake-Do-not-export-CC-into-gir-compiler.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0001-cmake-Do-not-export-CC-into-gir-compiler.patch
@@ -1,3 +1,7 @@
+Use G_IR_SCANNER without passing additional environment
+
+Upstream-Status: Inappropriate [OE-specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 --- a/cmake/modules/GObjectIntrospection.cmake
 +++ b/cmake/modules/GObjectIntrospection.cmake
 @@ -122,9 +122,7 @@ macro(gir_add_introspection gir)
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch
index 23c3a96..51eaf7c 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch
@@ -9,6 +9,7 @@
 * TRY_RUN: does not work for OE
 * HAVE_LKSTRFTIME is set by recipe as configure option
 
+Upstream-Status: Inappropriate [Cross-compile specific]
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
 ---
  CMakeLists.txt | 23 -----------------------
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_43.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_43.0.bb
index 6d0f1f7..f9b6841 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_43.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_43.0.bb
@@ -33,3 +33,12 @@
     ${datadir}/metainfo \
     ${libdir}/nautilus \
 "
+
+EXTRA_OEMESON += "--cross-file=${WORKDIR}/meson-${PN}.cross"
+
+do_write_config:append() {
+    cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+cpio = '${bindir}/cpio'
+EOF
+}
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_43.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_44.0.bb
similarity index 93%
rename from meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_43.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_44.0.bb
index 1b09c20..09e8acc 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_43.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_44.0.bb
@@ -21,7 +21,7 @@
 
 inherit gnomebase gsettings pkgconfig gobject-introspection gettext systemd useradd itstool gnome-help features_check
 
-SRC_URI[archive.sha256sum] = "94d70d6ed7df59fa7fde4fd02fed1168593a8adce10fcee113c148d52b392294"
+SRC_URI[archive.sha256sum] = "ce20b0a221dbf8cde0064b501fd8f38f73839152857c4535337eb09cc52f7f6c"
 
 EXTRA_OEMESON = " \
     -Dplymouth=disabled \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_43.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_44.2.bb
similarity index 91%
rename from meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_43.2.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_44.2.bb
index 1c1803d..34c7822 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_43.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_44.2.bb
@@ -21,7 +21,7 @@
 def gnome_verdir(v):
     return oe.utils.trim_version(v, 1)
 
-SRC_URI[archive.sha256sum] = "f950d2d35c594bb6c8dbc9f5440cad7788ca0a8688e2b07846f83de9a4e3fc25"
+SRC_URI[archive.sha256sum] = "3bbb1b3775d4c277daf54aaab44b0eb83a4eb1f09f0391800041c9e56893ec11"
 
 # gobject-introspection is mandatory and cannot be configured
 REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_43.0.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_44.0.bb
similarity index 88%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_43.0.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_44.0.bb
index 3459b6d..53dafba 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_43.0.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_44.0.bb
@@ -29,7 +29,7 @@
 
 REQUIRED_DISTRO_FEATURES = "x11 opengl"
 
-SRC_URI[archive.sha256sum] = "02c12ded3cf5053d17537d95ec69587f4b919899d7726eceecdb4b47ffb1c90f"
+SRC_URI[archive.sha256sum] = "14e763329f88309a7e152780d57361b543100e323906b34e0655fdc315b71043"
 
 FILES:${PN} += " \
     ${datadir}/dbus-1 \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_43.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_44.0.bb
similarity index 86%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_43.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_44.0.bb
index 06e06e9..dcf5ba7 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_43.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_44.0.bb
@@ -23,7 +23,7 @@
 
 REQUIRED_DISTRO_FEATURES = "x11 opengl"
 
-SRC_URI[archive.sha256sum] = "afa5fc66e2f691553cc7d517db2363cff2d62cd1b5df455e5f4f7133139d21f2"
+SRC_URI[archive.sha256sum] = "96acd74cbf45652934515cc3447a3b895e933f86324ca92436f67ddd63c3a802"
 
 FILES:${PN} += " \
     ${datadir}/gnome-shell \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_43.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_44.0.bb
similarity index 92%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_43.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_44.0.bb
index 2545518..eae9d9d 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_43.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_44.0.bb
@@ -18,7 +18,7 @@
 
 SRC_URI += "file://gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch \
             file://0001-meson-Add-riscv32-to-seccomp-unsupported-list.patch"
-SRC_URI[archive.sha256sum] = "3d6e153317486157596aa3802f87676414c570738f450a94a041fe8835420a69"
+SRC_URI[archive.sha256sum] = "42c773745d84ba14bc1cf1c4c6f4606148803a5cd337941c63964795f3c59d42"
 
 DEPENDS += " \
     fontconfig \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_43.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_44.0.bb
similarity index 91%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_43.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_44.0.bb
index 247bf14..d8674fc 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_43.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_44.0.bb
@@ -30,7 +30,7 @@
 PACKAGECONFIG[x11] = ",,libcanberra"
 
 SRC_URI:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'file://0001-gnome-disk-utility-remove-libcanberra-dependency.patch', '', d)}"
-SRC_URI[archive.sha256sum] = "7afca9805a6b92db6933dd7efcec4af8386c01bbc1f871e2dae4def7e192a2c5"
+SRC_URI[archive.sha256sum] = "02031097896cdb37d8717a5823f93e3723d4dfce7fdc4002c9dfcb16b7e7a3ef"
 
 EXTRA_OEMESON = "-Dman=false"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_43.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_44.0.bb
similarity index 82%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_43.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_44.0.bb
index 130c269..ff5e1e2 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_43.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_44.0.bb
@@ -16,7 +16,7 @@
 
 REQUIRED_DISTRO_FEATURES = "x11 opengl"
 
-SRC_URI[archive.sha256sum] = "81c6bffb06d5332346e00eaecaec1bdcfd617c51dfd95bcd058d6c76c76dd2b9"
+SRC_URI[archive.sha256sum] = "a1511df30b228cc2ef1175dd9d2b93438ea912e25913404b263cf3d457bb9f97"
 
 FILES:${PN} += " \
     ${datadir}/dbus-1 \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts/0001-build-Use-the-appropriate-dependency-object.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts/0001-build-Use-the-appropriate-dependency-object.patch
deleted file mode 100644
index 838ca1a..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts/0001-build-Use-the-appropriate-dependency-object.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 06240574626eb21af37cf7dde5bf81e892dff467 Mon Sep 17 00:00:00 2001
-From: Emmanuele Bassi <ebassi@gnome.org>
-Date: Wed, 5 Oct 2022 22:15:37 +0100
-Subject: [PATCH] build: Use the appropriate dependency object
-
-Just using `link_with` will not ensure that the GOA web extension shared
-module is properly built against libgoa-backend and libgoa; the
-generated headers must be transitively available by the time we build
-the shared module.
-
-Fixes: #226
-Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gnome-online-accounts/-/commit/fe86bfb0271735c8130367c46536b08dad5c20d8]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/goabackend/meson.build | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/src/goabackend/meson.build b/src/goabackend/meson.build
-index f5382b3..865b2d2 100644
---- a/src/goabackend/meson.build
-+++ b/src/goabackend/meson.build
-@@ -157,9 +157,8 @@ libgoa_web_extension = shared_module(
-   'goawebextension',
-   libgoawebextension_sources,
-   include_directories: common_incs + [goa_inc],
--  dependencies: deps,
-+  dependencies: [deps, libgoa_backend_dep],
-   c_args: cflags,
--  link_with: libgoa_backend,
-   install: true,
-   install_dir: join_paths(goa_pkglibdir, 'web-extensions')
- )
--- 
-2.39.0
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb
similarity index 64%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.46.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb
index ce02a50..948a738 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.46.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb
@@ -6,22 +6,20 @@
 
 inherit gnomebase gsettings gobject-introspection gtk-icon-cache vala features_check
 
-DEPENDS = "gtk+3 gtk+3-native gdk-pixbuf dbus json-glib libxml2 webkitgtk glib-2.0 rest libsecret"
+DEPENDS = "gdk-pixbuf dbus glib-2.0"
 
-SRC_URI += "file://0001-build-Use-the-appropriate-dependency-object.patch"
-SRC_URI[archive.sha256sum] = "5e7859ce4858a6b99d3995ed70527d66e297bb90bbf75ec8780fe9da22c1fcaa"
+SRC_URI[archive.sha256sum] = "418bb9fcffdbd72a98205ad365137617fc1e3551a54de74f6a98d45d266175bf"
 
-PACKAGECONFIG_SOUP ?= "soup3"
-PACKAGECONFIG ?= "kerberos owncloud lastfm google windows_live ${PACKAGECONFIG_SOUP}"
+PACKAGECONFIG ?= "goabackend kerberos owncloud lastfm google windows_live"
 
+# goabackend requires webkitgtk to be built with gtk+3 and gcr3
+PACKAGECONFIG[goabackend] = "-Dgoabackend=true,-Dgoabackend=false,gtk+3 gtk+3-native json-glib libxml2 libsoup rest libsecret webkitgtk"
 PACKAGECONFIG[kerberos] = "-Dkerberos=true, -Dkerberos=false,krb5 gcr3"
 PACKAGECONFIG[exchange] = "-Dexchange=true, -Dexchange=false"
 PACKAGECONFIG[google] = "-Dgoogle=true, -Dgoogle=false"
 PACKAGECONFIG[owncloud] = "-Downcloud=true, -Downcloud=false"
 PACKAGECONFIG[windows_live] = "-Dwindows_live=true, -Dwindows_live=false"
 PACKAGECONFIG[lastfm] = "-Dlastfm=true, -Dlastfm=false"
-PACKAGECONFIG[soup2] = ",,libsoup-2.4,,,soup3"
-PACKAGECONFIG[soup3] = ",,libsoup-3.0,,,soup2"
 
 FILES:${PN} += " \
     ${datadir}/dbus-1 \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_43.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_44.0.bb
similarity index 93%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_43.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_44.0.bb
index 72ab2ea..cdf9780 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_43.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_44.0.bb
@@ -36,7 +36,7 @@
 PACKAGECONFIG ?= ""
 PACKAGECONFIG[doc] = "-Dmanuals=true,-Dmanuals=false,libxslt-native docbook-xsl-stylesheets-native"
 
-SRC_URI[archive.sha256sum] = "c7ac7458d533f29d955011c74b76224d79ea31bcc12e9d6d0ce7b6c3704d08e1"
+SRC_URI[archive.sha256sum] = "e78e210397d3c62809c6cd5521da6eccb4a11ddea5bf2af8632a47f4da5c829e"
 
 do_install:append() {
     # make gnome-photos available on all desktops
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_43.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_44.0.bb
similarity index 91%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_43.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_44.0.bb
index 12f48bc..3f642f4 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_43.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_44.0.bb
@@ -22,7 +22,7 @@
 
 REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam gobject-introspection-data"
 
-SRC_URI[archive.sha256sum] = "3fb9949501385c8c14618e78f178d952df98ad8c91080f4c5e1568c7393ae1f2"
+SRC_URI[archive.sha256sum] = "ccf829a96526135e9e9f917526515d36a5092bdfa316f3737dd8c5a524dbf2c6"
 
 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', 'consolekit',d)}"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_43.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_44.0.bb
similarity index 88%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_43.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_44.0.bb
index fe24695..e8f2014 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_43.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_44.0.bb
@@ -25,7 +25,7 @@
 REQUIRED_DISTRO_FEATURES = "x11 polkit pulseaudio systemd gobject-introspection-data"
 GIR_MESON_OPTION = ""
 
-SRC_URI[archive.sha256sum] = "3513bb24fc6f8181667223a64a067534fdccf3bf66326a9403d38b0f0d6013d0"
+SRC_URI[archive.sha256sum] = "b417ada1c1342a8cf29837ecf2dec9bdcdb754235b1a161b6435c3d11f210999"
 
 PACKAGECONFIG ??= " \
     cups nm \
@@ -42,5 +42,5 @@
 
 FILES:${PN} += " \
     ${systemd_user_unitdir} \
-    /usr/lib/gnome-settings-daemon-43/libgsd.so \
+    /usr/lib/gnome-settings-daemon-44/libgsd.so \
 "
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_43.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_44.0.bb
similarity index 84%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_43.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_44.0.bb
index 93d791a..126e5ef 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_43.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_44.0.bb
@@ -8,7 +8,7 @@
 
 REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam gobject-introspection-data"
 
-SRC_URI[archive.sha256sum] = "adde04bd946a13113557e4c34c890bbe9077505a6a3f0755f17bea1c6e4a2d17"
+SRC_URI[archive.sha256sum] = "8c345e72f31a1e37f55063e0b15997301b01194ed698772fd87aeb50cbb101ab"
 
 EXTRA_OEMESON += " \
     -Dextension_set=all \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_43.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_44.0.bb
similarity index 93%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_43.4.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_44.0.bb
index f941c41..f497f5b 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_43.4.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_44.0.bb
@@ -29,7 +29,7 @@
 
 EXTRA_OEMESON += "-Dtests=false -Dsoup2=false"
 
-SRC_URI[archive.sha256sum] = "e9df060ebab59f49697d5ef2630ec36de60454169dc191af60d3483720aadb3e"
+SRC_URI[archive.sha256sum] = "619719f9529e0bb1dad30fadbb780d7b1d99940a6db1f71df51bc737341830af"
 
 PACKAGECONFIG ?= "flatpak"
 PACKAGECONFIG[flatpak] = "-Dflatpak=true,-Dflatpak=false,flatpak ostree"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.46.7.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.48.0.bb
similarity index 95%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.46.7.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.48.0.bb
index d9afeec..75e609d 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.46.7.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.48.0.bb
@@ -22,7 +22,7 @@
 
 SRC_URI = "git://gitlab.gnome.org/GNOME/gnome-terminal.git;protocol=https;nobranch=1"
 SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch"
-SRCREV = "816edf80cd7bf7f253366099ea9fcaf361676139"
+SRCREV = "a85ecc959344ee2e0d345f7dd081dc781d95d364"
 S = "${WORKDIR}/git"
 
 PACKAGECONFIG ?= ""
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_43.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_44.0.bb
similarity index 83%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_43.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_44.0.bb
index a2ac710..40bcd27 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_43.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_44.0.bb
@@ -19,7 +19,7 @@
 
 REQUIRED_DISTRO_FEATURES = "opengl"
 
-SRC_URI[archive.sha256sum] = "973a4b0deb68f9f91a54a4dd415b6afde9b5ae3ee684bc761471f94290f9f6cb"
+SRC_URI[archive.sha256sum] = "f67bc3780734ffa815fcc4c5daa7b555d24e459f81ea2b548e6a85c1612a31ca"
 
 FILES:${PN} += " \
     ${datadir}/metainfo \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier/fix-do_installe-failure.patch b/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier/fix-do_installe-failure.patch
index 29eeef3..6c32bfa 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier/fix-do_installe-failure.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier/fix-do_installe-failure.patch
@@ -12,7 +12,7 @@
 | 21 make[3]: *** [install-vapiDATA] Error 1
 | 22 make[3]: *** Waiting for unfinished jobs....
 
-Upstream-Stauts: Pending
+Upstream-Status: Pending
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
 ---
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-Set-header-file-to-a-fixed-path-instead-of-a-host-pa.patch b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-Set-header-file-to-a-fixed-path-instead-of-a-host-pa.patch
index 1332a958..7a40ae3 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-Set-header-file-to-a-fixed-path-instead-of-a-host-pa.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-Set-header-file-to-a-fixed-path-instead-of-a-host-pa.patch
@@ -7,22 +7,8 @@
 
 Signed-off-by: Lei Maohui <leimaohui@fujitsu.com>
 ---
- src/libtracker-miner/tracker-miner-enum-types.c.template        | 2 +-
- .../tracker-miners-enum-types.c.template                        | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/libtracker-miner/tracker-miner-enum-types.c.template b/src/libtracker-miner/tracker-miner-enum-types.c.template
-index 7be7a01..46a4dc9 100644
---- a/src/libtracker-miner/tracker-miner-enum-types.c.template
-+++ b/src/libtracker-miner/tracker-miner-enum-types.c.template
-@@ -7,7 +7,7 @@
-
- /*** BEGIN file-production ***/
- /* enumerations from "@basename@" */
--#include "@filename@"
-+#include "tracker-miner-enums.h"
- /*** END file-production ***/
-
+ src/libtracker-miners-common/tracker-miner-enum-types.c.template        | 1 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/src/libtracker-miners-common/tracker-miners-enum-types.c.template b/src/libtracker-miners-common/tracker-miners-enum-types.c.template
 index c712dda..cb449e2 100644
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.4.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.5.0.bb
similarity index 75%
rename from meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.4.2.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.5.0.bb
index cbd1d0d..d093697 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.4.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.5.0.bb
@@ -16,10 +16,9 @@
 inherit gnomebase gsettings gobject-introspection vala bash-completion features_check
 
 SRC_URI += "file://0001-meson.build-Just-warn-if-we-build-without-libseccomp.patch \
-            file://0001-Set-header-file-to-a-fixed-path-instead-of-a-host-pa.patch \
+	    file://0001-Set-header-file-to-a-fixed-path-instead-of-a-host-pa.patch \
            "
-
-SRC_URI[archive.sha256sum] = "101e3608f1c28bfed8ae25522f7a720b559f889a76e280afbe50a4d8b064f92c"
+SRC_URI[archive.sha256sum] = "17966603dc432a98526b490586a48acd7f9f59935f7895dfc51729a46a6901a3"
 
 # gobject-introspection is mandatory and cannot be configured
 REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
@@ -36,25 +35,31 @@
     pdf \
     png \
     tiff \
+    raw \
     xml \
     ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} \
+    battery \
+    networkmanager \
 "
 
 PACKAGECONFIG[battery]     = "-Dbattery_detection=upower,-Dbattery_detection=none,upower"
-PACKAGECONFIG[ffmpeg]     = ",,ffmpeg"
+PACKAGECONFIG[cue]     = "-Dcue=enabled,-Dcue=disabled,libcue"
+PACKAGECONFIG[ffmpeg]     = "-Dgeneric_media_extractor=libav,,ffmpeg"
 PACKAGECONFIG[gexiv2]     = ",,gexiv2"
-PACKAGECONFIG[gstreamer]  = ",,gstreamer1.0 gstreamer1.0-plugins-base"
-PACKAGECONFIG[gupnp]      = ",,gupnp-dlna"
+PACKAGECONFIG[gstreamer]  = "-Dgeneric_media_extractor=gstreamer,,gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG[gupnp]      = "-Dgstreamer_backend=gupnp,,gupnp-dlna"
 PACKAGECONFIG[gif]        = "-Dgif=enabled,-Dgif=disabled,giflib"
-PACKAGECONFIG[icu]        = ",,icu"
+PACKAGECONFIG[icu]        = "-Dcharset_detection=icu,,icu"
+PACKAGECONFIG[iso]        = "-Diso=enabled,-Diso=disabled,libosinfo"
 PACKAGECONFIG[jpeg]       = "-Djpeg=enabled,-Djpeg=disabled,jpeg"
 PACKAGECONFIG[libexif]    = "-Dexif=enabled,-Dexif=disabled,libexif"
 PACKAGECONFIG[libgsf]     = "-Dgsf=enabled,-Dgsf=disabled,libgsf"
 PACKAGECONFIG[pdf]        = "-Dpdf=enabled,-Dpdf=disabled,poppler"
 PACKAGECONFIG[png]        = "-Dpng=enabled,-Dpng=disabled,libpng"
 PACKAGECONFIG[tiff]       = "-Dtiff=enabled,-Dtiff=disabled,tiff"
+PACKAGECONFIG[raw]       = "-Draw=enabled,-Draw=disabled,libraw"
 PACKAGECONFIG[xml]        = "-Dxml=enabled,-Dxml=disabled,libxml2"
-PACKAGECONFIG[networkmanager] = "-Dnetwork_manager=enabled,-Dnetwork_manager=disabled,networkmanger"
+PACKAGECONFIG[networkmanager] = "-Dnetwork_manager=enabled,-Dnetwork_manager=disabled,networkmanager"
 
 # For security reasons it is strongly recommended to set add meta-security in
 # your layers and 'libseccomp' to PACKAGECONFIG".
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_3.43.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_3.44.0.bb
similarity index 63%
rename from meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_3.43.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_3.44.0.bb
index 195e139..8ea24ca 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_3.43.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_3.44.0.bb
@@ -5,21 +5,24 @@
 
 GNOMEBASEBUILDCLASS = "meson"
 
-inherit gnomebase pkgconfig itstool gnome-help features_check gettext
+inherit gnomebase pkgconfig itstool gtk-icon-cache features_check gettext
 
 DEPENDS = " \
-    yelp-tools-native \
+    desktop-file-utils-native \
+    hicolor-icon-theme \
     gtk+3 \
+    gtk+3-native \
 "
 
 ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
 
-SRC_URI[archive.sha256sum] = "b0d7ca1e0c1868fa18f05c210260d8a7be1f08ee13b7f5cfdbab9b61fa16f833"
+SRC_URI[archive.sha256sum] = "c15582301ed90b9d42ce521dbccf99a989f22f12041bdd5279c6636da99ebf65"
 SRC_URI += "file://0001-Harcode-shebang-to-avoid-pointing-to-build-system-s-.patch"
 
-PACKAGECONFIG[libnotify] = "-Dlibnotify=true,-Dlibnotify=false,libnotify"
+PACKAGECONFIG ?= "webkitgtk"
 PACKAGECONFIG[webkitgtk] = "-Dwebkitgtk=true,-Dwebkitgtk=false,webkitgtk"
 
 PACKAGES =+ "${PN}-gdialog"
 FILES:${PN}-gdialog = "${bindir}/gdialog"
+FILES:${PN}-doc = "${datadir}/man ${datadir}/help"
 RDEPENDS:${PN}-gdialog += "perl"
diff --git a/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice/0001-musl-Hack-to-fix-build.patch b/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice/0001-musl-Hack-to-fix-build.patch
index 99bd09a..944d2f9 100644
--- a/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice/0001-musl-Hack-to-fix-build.patch
+++ b/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice/0001-musl-Hack-to-fix-build.patch
@@ -3,6 +3,8 @@
 Date: Sun, 8 Dec 2019 23:42:00 +0100
 Subject: [PATCH] musl: Hack to fix configure
 
+Upstream-Status: Inappropriate [Musl Specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  meson.build | 11 ++++++++---
  1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/meta-openembedded/meta-gnome/recipes-support/usermode/usermode/0001-Makefile.am-Link-with-libm-for-powl-API.patch b/meta-openembedded/meta-gnome/recipes-support/usermode/usermode/0001-Makefile.am-Link-with-libm-for-powl-API.patch
index 8ea34cf..7a052b2 100644
--- a/meta-openembedded/meta-gnome/recipes-support/usermode/usermode/0001-Makefile.am-Link-with-libm-for-powl-API.patch
+++ b/meta-openembedded/meta-gnome/recipes-support/usermode/usermode/0001-Makefile.am-Link-with-libm-for-powl-API.patch
@@ -3,6 +3,7 @@
 Date: Tue, 25 Jul 2017 18:28:15 -0700
 Subject: [PATCH] Makefile.am: Link with libm for powl() API
 
+Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  Makefile.am | 2 +-
diff --git a/meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_43.1.bb b/meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_44.0.bb
similarity index 81%
rename from meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_43.1.bb
rename to meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_44.0.bb
index 050ce1a..c92037d 100644
--- a/meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_43.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_44.0.bb
@@ -24,10 +24,11 @@
 SRC_URI = "git://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome.git;protocol=https;nobranch=1"
 
 S = "${WORKDIR}/git"
-SRCREV = "4fd5a8bf16b01c78ed19764415cb26d29aaf7eab"
+SRCREV = "8e1c4fd928be500208ca1df62441a56e2569bfb8"
 
-PACKAGECONFIG ?= ""
+PACKAGECONFIG ?= "screenshot screencast ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)}"
 
+PACKAGECONFIG[wayland] = ",,wayland-native"
 PACKAGECONFIG[screenshot] = ",,,gnome-shell"
 PACKAGECONFIG[screencast] = ",,,mutter"
 
diff --git a/meta-openembedded/meta-initramfs/README b/meta-openembedded/meta-initramfs/README
index 119293a..a227986 100644
--- a/meta-openembedded/meta-initramfs/README
+++ b/meta-openembedded/meta-initramfs/README
@@ -12,19 +12,19 @@
 This layer depends on:
 
 URI: git://git.openembedded.org/meta-openembedded
-branch: master
+branch: mickledore
 
 
 Maintenance
 -----------
 
 Send patches / pull requests to openembedded-devel@lists.openembedded.org
-with '[meta-initramfs]' in the subject.
+with '[meta-initramfs][mickledore]' in the subject.
 
 When sending single patches, please using something like:
-git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-initramfs][PATCH'
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-initramfs][mickledore][PATCH'
 
-Interm layer maintainer: Khem Raj <raj.khem@gmail.com>
+Interm layer maintainer: Armin Kuster <akuster808@gmail.com>
 
 
 License
diff --git a/meta-openembedded/meta-multimedia/README b/meta-openembedded/meta-multimedia/README
index 235c343..28dbaf2 100644
--- a/meta-openembedded/meta-multimedia/README
+++ b/meta-openembedded/meta-multimedia/README
@@ -1,17 +1,17 @@
 This layer depends on:
 
 URI: git://git.openembedded.org/openembedded-core
-branch: master
+branch: mickledore
 
 URI: git://git.openembedded.org/meta-openembedded
 layers: meta-oe
-branch: master
+branch: mickledore
 
-Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-multimedia]' in the subject
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-multimedia][mickledore]' in the subject
 
 When sending single patches, please use something like:
-git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-multimedia][PATCH'
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-multimedia][mickledore][PATCH'
 
 You are encouraged to fork the mirror on github https://github.com/openembedded/meta-openembedded to share your patches, this is preferred for patch sets consisting of more than one patch. Other services like GitLab, repo.or.cz or self hosted setups are of course accepted as well, 'git fetch <remote>' works the same on all of them. We recommend github because it is free, easy to use, has been proven to be reliable and has a really good web GUI.
 
-Layer maintainer: Andreas Müller <schnitzeltony@gmail.com>
+Layer maintainer: Armin Kuster <akuster808@gmail.com>
diff --git a/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska/0001-Makefile-Use-LINKFLAGS-during-link-step.patch b/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska/0001-Makefile-Use-LINKFLAGS-during-link-step.patch
index 90e9975..f765691 100644
--- a/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska/0001-Makefile-Use-LINKFLAGS-during-link-step.patch
+++ b/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska/0001-Makefile-Use-LINKFLAGS-during-link-step.patch
@@ -5,6 +5,7 @@
 
 Adds much needed GNU_HASH section into the .so
 
+Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  make/linux/Makefile | 2 +-
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps/0001-basic.h-Use-c99-supported-stdint-types.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps/0001-basic.h-Use-c99-supported-stdint-types.patch
index 1087b0e..528bd15 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps/0001-basic.h-Use-c99-supported-stdint-types.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps/0001-basic.h-Use-c99-supported-stdint-types.patch
@@ -5,6 +5,7 @@
 
 include stdint.h for getting the definitions for int types
 
+Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  basics.h | 17 +++++++++--------
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps/append_ldflags.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps/append_ldflags.patch
index 3abd381..6e34a8a 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps/append_ldflags.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps/append_ldflags.patch
@@ -1,7 +1,8 @@
 Change the order of linker flags such that -shared is appearig after -pie/-fpie
 this helps in building the package when secuiry flags are enabled
 
--Khem
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 
 Index: caps-0.9.24/Makefile
 ===================================================================
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-check-for-null-buffer-before-trying-a-byteswap.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-check-for-null-buffer-before-trying-a-byteswap.patch
index 682cf6e..0451a45 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-check-for-null-buffer-before-trying-a-byteswap.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-check-for-null-buffer-before-trying-a-byteswap.patch
@@ -8,6 +8,7 @@
 Patch from debian
 http://sources.debian.net/src/cdparanoia/3.10.2%2Bdebian-11/debian/patches/04-endian.patch
 
+Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  interface/interface.c | 2 +-
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-utils-Use-c99-compiler-independent-types.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-utils-Use-c99-compiler-independent-types.patch
index 7699017..b364a3b 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-utils-Use-c99-compiler-independent-types.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0001-utils-Use-c99-compiler-independent-types.patch
@@ -5,6 +5,7 @@
 
 Make it portable across different platforms
 
+Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  utils.h | 13 +++++++------
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0002-Fix-printf-format-errors.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0002-Fix-printf-format-errors.patch
index 024479c..ea30559 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0002-Fix-printf-format-errors.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/0002-Fix-printf-format-errors.patch
@@ -5,6 +5,7 @@
 
 error: format not a string literal and no format arguments
 
+Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  main.c | 4 ++--
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/dont-use-internal-configs.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/dont-use-internal-configs.patch
index 9b268b7..2738ba7 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/dont-use-internal-configs.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/dont-use-internal-configs.patch
@@ -1,3 +1,8 @@
+Fix build on aarch64
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 Index: cdparanoia-III-10.2/configure.in
 ===================================================================
 --- cdparanoia-III-10.2.orig/configure.in
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/out-of-tree-build.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/out-of-tree-build.patch
index 06ee820..96c5dda 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/out-of-tree-build.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/files/out-of-tree-build.patch
@@ -1,3 +1,8 @@
+Fix build out of tree builds
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 Index: cdparanoia-III-10.2/Makefile.in
 ===================================================================
 --- cdparanoia-III-10.2.orig/Makefile.in
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-Fix-generate-keynames.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-Fix-generate-keynames.patch
index 498607d..f3d1435 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-Fix-generate-keynames.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-Fix-generate-keynames.patch
@@ -5,6 +5,7 @@
 somewhere else. Allow the user to pass CROSS_ROOT to point to the
 root of the cross-compilation environment.
 
+Upstream-Status: Inappropriate [Cross-compile specific]
 Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
 ---
 diff -rup dvb-apps-83c746462ccb.orig/util/av7110_loadkeys/generate-keynames.sh dvb-apps-83c746462ccb/util/av7110_loadkeys/generate-keynames.sh
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-dvbdate-Remove-Obsoleted-stime-API-calls.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-dvbdate-Remove-Obsoleted-stime-API-calls.patch
index e89f9a3..8ff1e02 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-dvbdate-Remove-Obsoleted-stime-API-calls.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0001-dvbdate-Remove-Obsoleted-stime-API-calls.patch
@@ -6,6 +6,7 @@
 stime() has been deprecated in glibc 2.31+ its recommended to
 replaced with clock_settime()
 
+Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  util/dvbdate/dvbdate.c | 5 ++++-
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0003-handle-static-shared-only-build.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0003-handle-static-shared-only-build.patch
index 4dc7c68..ce51084 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0003-handle-static-shared-only-build.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0003-handle-static-shared-only-build.patch
@@ -6,6 +6,7 @@
 Do not build .a library when enable_static is set to "no"
 Do not build .so library when enable_shared is set to "no"
 
+Upstream-Status: Pending
 Signed-off-by: Romain Naour <romain.naour@openwide.fr>
 ---
  Make.rules | 10 ++++++++--
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0004-Makefile-remove-test.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0004-Makefile-remove-test.patch
index 45bfad9..6ec5b08 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0004-Makefile-remove-test.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0004-Makefile-remove-test.patch
@@ -5,6 +5,7 @@
 
 Tests needs static libraries, remove them for shared only build.
 
+Upstream-Status: Inappropriate [Cross-compile specific]
 Signed-off-by: Romain Naour <romain.naour@openwide.fr>
 ---
  Makefile | 1 -
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0005-libucsi-optimization-removal.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0005-libucsi-optimization-removal.patch
index f12d35b..dbb848c 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0005-libucsi-optimization-removal.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0005-libucsi-optimization-removal.patch
@@ -1,3 +1,8 @@
+Use -O1 with gcc > 6
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 diff -r 3d43b280298c lib/libucsi/endianops.h
 --- a/lib/libucsi/endianops.h	Fri Mar 21 20:26:36 2014 +0100
 +++ b/lib/libucsi/endianops.h	Fri Jan 19 06:56:15 2018 +0000
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0006-CA_SET_PID.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0006-CA_SET_PID.patch
index e100c65..59abd32 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0006-CA_SET_PID.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/files/0006-CA_SET_PID.patch
@@ -1,3 +1,7 @@
+Fix build with newer than 4.14 kernels
+
+Upstream-Status: Inappropriate [OE-specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 Index: dvb-apps/util/dst-utils/dst_test.c
 ===================================================================
 --- dvb-apps.orig/util/dst-utils/dst_test.c
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-Fix-build-with-fmt-9.0.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-Fix-build-with-fmt-9.0.patch
index 9de0e4f..bb8e438 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-Fix-build-with-fmt-9.0.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-Fix-build-with-fmt-9.0.patch
@@ -4,6 +4,8 @@
 Subject: [PATCH] Fix build with fmt 9.0
 
 Fixes #2681
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  src/database/sql_format.h | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-gstd-yocto-compatibility.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-gstd-yocto-compatibility.patch
index c1c8899..64fd578 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-gstd-yocto-compatibility.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd/0001-gstd-yocto-compatibility.patch
@@ -3,6 +3,8 @@
 Date: Fri, 15 Dec 2017 10:14:05 -0600
 Subject: [PATCH] gstd:yocto compatibility
 
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  gstd/Makefile.am                | 2 +-
  3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-file_sink.cpp-Avoid-dangling-reference.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-file_sink.cpp-Avoid-dangling-reference.patch
new file mode 100644
index 0000000..55a5977
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-file_sink.cpp-Avoid-dangling-reference.patch
@@ -0,0 +1,44 @@
+From 2eaffc9ac8b47c354404075761fe8f76fad0ced4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 24 Jan 2023 01:18:25 -0800
+Subject: [PATCH] file_sink.cpp: Avoid dangling-reference
+
+Fixes following errors with gcc-13
+
+../git/src/cam/file_sink.cpp:92:45: error: possibly dangling reference to a temporary [-Werror=dangling-reference]
+   92 |                 const FrameMetadata::Plane &meta = buffer->metadata().planes()[i];
+      |                                             ^~~~
+../git/src/cam/file_sink.cpp:92:81: note: the temporary was destroyed at the end of the full expression '(& buffer->libcamera::FrameBuffer::metadata())->libcamera::FrameMetadata::planes().libcamera::Span<const libcamera::FrameMetadata::Plane>::operator[](i)'
+   92 |                 const FrameMetadata::Plane &meta = buffer->metadata().planes()[i];
+      |                                                                                 ^
+cc1plus: all warnings being treated as errors
+
+Upstream-Status: Submitted [https://lists.libcamera.org/pipermail/libcamera-devel/2023-January/036575.html]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ src/apps/cam/file_sink.cpp | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/apps/cam/file_sink.cpp b/src/apps/cam/file_sink.cpp
+index b32aad24..9f4c5648 100644
+--- a/src/apps/cam/file_sink.cpp
++++ b/src/apps/cam/file_sink.cpp
+@@ -114,13 +114,13 @@ void FileSink::writeBuffer(const Stream *stream, FrameBuffer *buffer,
+ 	}
+ 
+ 	for (unsigned int i = 0; i < buffer->planes().size(); ++i) {
+-		const FrameMetadata::Plane &meta = buffer->metadata().planes()[i];
++		unsigned int bytesused = buffer->metadata().planes()[i].bytesused;
+ 
+ 		Span<uint8_t> data = image->data(i);
+-		unsigned int length = std::min<unsigned int>(meta.bytesused, data.size());
++		unsigned int length = std::min<unsigned int>(bytesused, data.size());
+ 
+-		if (meta.bytesused > data.size())
+-			std::cerr << "payload size " << meta.bytesused
++		if (bytesused > data.size())
++			std::cerr << "payload size " << bytesused
+ 				  << " larger than plane size " << data.size()
+ 				  << std::endl;
+ 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera_0.0.4.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera_0.0.4.bb
index cbcc33a..12d4299 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera_0.0.4.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera_0.0.4.bb
@@ -8,7 +8,10 @@
     file://LICENSES/LGPL-2.1-or-later.txt;md5=2a4f4fd2128ea2f65047ee63fbca9f68 \
 "
 
-SRC_URI = "git://git.libcamera.org/libcamera/libcamera.git;protocol=https;branch=master"
+SRC_URI = " \
+        git://git.libcamera.org/libcamera/libcamera.git;protocol=https;branch=master \
+        file://0001-file_sink.cpp-Avoid-dangling-reference.patch \
+"
 
 SRCREV = "6cf637eb253a68edebe59505bea55435fafb00cd"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/files/install_examples.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/files/install_examples.patch
index df0c235..51761eb 100755
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/files/install_examples.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/files/install_examples.patch
@@ -1,3 +1,8 @@
+Install all examples
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 Index: libdc1394/examples/Makefile.am
 ===================================================================
 --- libdc1394.orig/examples/Makefile.am
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/nv-codec-headers/nv-codec-headers/0001-Makefile-add-clean-target.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/nv-codec-headers/nv-codec-headers/0001-Makefile-add-clean-target.patch
new file mode 100644
index 0000000..ac9e70a
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/nv-codec-headers/nv-codec-headers/0001-Makefile-add-clean-target.patch
@@ -0,0 +1,27 @@
+From 3b74181d626f7dedb47377450ca7c43457a66cda Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_L_K@t-online.de>
+Date: Sat, 1 Apr 2023 04:42:32 +0200
+Subject: [PATCH] Makefile: add clean target
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index a51c2c9..fbe2aec 100644
+--- a/Makefile
++++ b/Makefile
+@@ -19,5 +19,7 @@ install: all
+ uninstall:
+ 	rm -rf '$(DESTDIR)$(PREFIX)/include/ffnvcodec' '$(DESTDIR)$(PREFIX)/$(LIBDIR)/pkgconfig/ffnvcodec.pc'
+ 
+-.PHONY: all install uninstall
++clean: uninstall
++
++.PHONY: all clean install uninstall
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/nv-codec-headers/nv-codec-headers_12.0.16.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/nv-codec-headers/nv-codec-headers_12.0.16.0.bb
index 411c406..5ef7ead 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/nv-codec-headers/nv-codec-headers_12.0.16.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/nv-codec-headers/nv-codec-headers_12.0.16.0.bb
@@ -3,7 +3,10 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${S}/include/ffnvcodec/dynlink_cuda.h;beginline=1;endline=26;md5=bb54a418154445b0aa99e15f640eacf4"
 
-SRC_URI = "git://git.videolan.org/git/ffmpeg/nv-codec-headers.git;branch=master;protocol=https"
+SRC_URI = " \
+    git://git.videolan.org/git/ffmpeg/nv-codec-headers.git;branch=master;protocol=https \
+    file://0001-Makefile-add-clean-target.patch \
+"
 SRCREV = "c5e4af74850a616c42d39ed45b9b8568b71bf8bf"
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox/0001-remove-the-error-line-and-live-without-file-type-det.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox/0001-remove-the-error-line-and-live-without-file-type-det.patch
index 4f02a66..3085bd4 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox/0001-remove-the-error-line-and-live-without-file-type-det.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox/0001-remove-the-error-line-and-live-without-file-type-det.patch
@@ -1,11 +1,11 @@
 From d0313be5fb947df399a4db24a5f9244510d2ce87 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 12 Jul 2017 16:36:06 -0700
-Subject: [PATCH] remove the #error line and live without file-type detection
- with pipes
+Subject: [PATCH] remove the #error line and live without file-type detection with pipes
 
 this fallback is executed with musl
 
+Upstream-Status: Inappropriate [musl specific]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  src/formats.c | 1 -
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.2.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.2.bb
index ace8743..011cbc2 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.2.bb
@@ -4,7 +4,7 @@
 HOMEPAGE = "http://sox.sourceforge.net"
 SECTION = "audio"
 
-DEPENDS = "libpng ffmpeg libsndfile1 libtool"
+DEPENDS = "libpng libsndfile1 libtool"
 
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'alsa pulseaudio', d)} \
                    magic \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch
index 078ac41..b9f5ad5 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch
@@ -8,6 +8,7 @@
 the libs and header locations instead of assuming /opt/vc which might
 work on some distros ( like raspbian ) but not everywhere
 
+Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  configure.ac | 31 +++++++++++--------------------
diff --git a/meta-openembedded/meta-networking/MAINTAINERS b/meta-openembedded/meta-networking/MAINTAINERS
index ce53ec4..4fd0cc3 100644
--- a/meta-openembedded/meta-networking/MAINTAINERS
+++ b/meta-openembedded/meta-networking/MAINTAINERS
@@ -2,13 +2,13 @@
 
 Please submit any patches against meta-networking to the OpenEmbedded
 development mailing list (openembedded-devel@lists.openembedded.org) with
-'[meta-networking]' in the subject.
+'[meta-networking][mickledore]' in the subject.
 
 When sending single patches, please use something like:
 
    git send-email -1 -M \
         --to openembedded-devel@lists.openembedded.org \
-        --subject-prefix='meta-networking][PATCH'
+        --subject-prefix='meta-networking][mickledore][PATCH'
 
 You may also contact the maintainers directly.
 
@@ -26,18 +26,9 @@
 Maintainers List (try to look for most precise areas first)
 
 COMMON
-M:      Khem Raj <raj.khem@gmail.com>
-M:      "Joe MacDonald (backup)" <joe@deserted.net>
+M:      Armin Kuster <akuster808@gmail.com>
 L:      openembedded-devel@lists.openembedded.org
 Q:      https://patchwork.openembedded.org/project/oe/
 S:      Maintained
 F:      conf
 F:      recipes-*
-
-NETKIT
-M:      Armin Kuster <akuster808@gmail.com>
-F:      recipes-netkit
-
-OPENTHREAD
-M:      Stefan Schmidt <stefan@datenfreihafen.org>
-F:      recipes-connectivity/openthread/
diff --git a/meta-openembedded/meta-networking/README b/meta-openembedded/meta-networking/README
index 34e11a9..1088474 100644
--- a/meta-openembedded/meta-networking/README
+++ b/meta-openembedded/meta-networking/README
@@ -18,22 +18,21 @@
 This layer depends on:
 
 URI: git://git.openembedded.org/openembedded-core
-branch: master
+branch: mickledore
 
 For some recipes, the meta-oe layer is required:
 
 URI: git://git.openembedded.org/meta-openembedded
 subdirectory: meta-oe
-branch: master
+branch: mickledore
 
 URI: git://git.openembedded.org/meta-openembedded
 subdirectory: meta-python
-branch: master
+branch: mickledore
 
 Maintenance
 -----------
-Layer maintainers: Khem Raj <raj.khem@gmail.com>
-                   Armin Kuster <akuster808@gmail.com> (recipes-netkit)
+Layer maintainers: Armin Kuster <akuster808@gmail.com>
 
 
 Please see the MAINTAINERS file for information on contacting the
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/autossh/autossh_1.4g.bb b/meta-openembedded/meta-networking/recipes-connectivity/autossh/autossh_1.4g.bb
index 3dc304b..de7e2d3 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/autossh/autossh_1.4g.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/autossh/autossh_1.4g.bb
@@ -2,9 +2,8 @@
 HOMEPAGE = "https://www.harding.motd.ca/autossh/"
 
 LICENSE = "BSD-1-Clause & BSD-4-Clause"
-LIC_FILES_CHKSUM = "file://autossh.spec;md5=80a6701134723fd3420e733b46a0eb97 \
-                    file://autossh.c;md5=76c37acd40ac45050a4ced145b1e2707;startline=7;endline=23 \
-                    file://daemon.h;md5=6bbeaac616b9bc8de7b40049004f4289;startline=7;endline=39"
+LIC_FILES_CHKSUM = "file://autossh.c;beginline=7;endline=22;md5=9ae0c9b04856148d77984ef58536732b \
+                    file://daemon.h;beginline=7;endline=36;md5=839bb7bf781ff48da4a3fec2a62a1a47"
 
 SRC_URI = "https://www.harding.motd.ca/autossh/${BP}.tgz"
 SRC_URI[md5sum] = "2b804bc1bf6d2f2afaa526d02df7c0a2"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet/0001-configure-Replace-use-of-AC_EGREP_CPP.patch b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet/0001-configure-Replace-use-of-AC_EGREP_CPP.patch
new file mode 100644
index 0000000..133ccc4
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet/0001-configure-Replace-use-of-AC_EGREP_CPP.patch
@@ -0,0 +1,39 @@
+From b0c98f93a7f427d18206c79bf2a0350dc81172f6 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 6 Apr 2023 10:44:08 -0700
+Subject: [PATCH] configure: Replace use of AC_EGREP_CPP
+
+Use AC_COMPILE_IFELSE instead to compute platform support for arp ioctls
+AC_EGREP_CPP does not work as used with upcoming autoconf 2.72
+
+Upstream-Status: Submitted [https://github.com/ofalk/libdnet/pull/85]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ m4/acinclude.m4 | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/m4/acinclude.m4 b/m4/acinclude.m4
+index d6350a2..3699bf1 100644
+--- a/m4/acinclude.m4
++++ b/m4/acinclude.m4
+@@ -196,12 +196,11 @@ dnl
+ AC_DEFUN([AC_DNET_IOCTL_ARP],
+     [AC_MSG_CHECKING(for arp(7) ioctls)
+     AC_CACHE_VAL(ac_cv_dnet_ioctl_arp,
+-    AC_EGREP_CPP(werd,[#include <sys/types.h>
+-                       #define BSD_COMP
+-                       #include <sys/ioctl.h>
+-                       #ifdef SIOCGARP
+-                 werd
+-                       #endif],
++    AC_COMPILE_IFELSE(
++        [AC_LANG_PROGRAM([[#include <sys/types.h>
++                           #define BSD_COMP
++                           #include <sys/ioctl.h>]],
++                          [[int foo = SIOCGARP;]])],
+     ac_cv_dnet_ioctl_arp=yes,
+     ac_cv_dnet_ioctl_arp=no))
+     case "$host_os" in
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet/0001-configure-Use-pkg-config-variable-to-find-check-incl.patch b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet/0001-configure-Use-pkg-config-variable-to-find-check-incl.patch
new file mode 100644
index 0000000..8a78e7a
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet/0001-configure-Use-pkg-config-variable-to-find-check-incl.patch
@@ -0,0 +1,27 @@
+From 85d8338a3ebc01a3ea7600aa602139c4eac3be07 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 6 Apr 2023 12:13:09 -0700
+Subject: [PATCH] configure: Use pkg-config variable to find check include paths
+
+Upstream-Status: Submitted [https://github.com/ofalk/libdnet/pull/85]
+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 3f0c404..553b487 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -153,7 +153,7 @@ AC_ARG_WITH(check,
+   esac ],
+ [ PKG_CHECK_MODULES([CHECK], [check])
+   if test -n "${CHECK_LIBS}"; then
+-     CHECKINC="-I${prefix}/include"
++     CHECKINC="${CHECK_CFLAGS}"
+      CHECKLIB="${CHECK_LIBS}"
+      AC_MSG_RESULT(yes)
+   else
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.14.bb b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.14.bb
deleted file mode 100644
index 9f2ff51..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.14.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "dumb networking library"
-HOMEPAGE = "http://code.google.com/p/libdnet/"
-SECTION = "libs"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=0036c1b155f4e999f3e0a373490b5db9"
-
-SRC_URI = "git://github.com/dugsong/libdnet.git;nobranch=1;protocol=https"
-SRCREV = "3e782472d2a58d5e1b94d04eda4a364c2d257600"
-
-UPSTREAM_CHECK_GITTAGREGEX = "libdnet-(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit autotools multilib_script
-
-acpaths = "-I ./config/"
-
-BBCLASSEXTEND = "native"
-
-MULTILIB_SCRIPTS = "${PN}:${bindir}/dnet-config"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.16.3.bb b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.16.3.bb
new file mode 100644
index 0000000..05c8fb3
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.16.3.bb
@@ -0,0 +1,23 @@
+SUMMARY = "dumb networking library"
+HOMEPAGE = "https://github.com/ofalk/libdnet"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0036c1b155f4e999f3e0a373490b5db9"
+
+SRC_URI = "git://github.com/ofalk/libdnet.git;nobranch=1;protocol=https \
+           file://0001-configure-Replace-use-of-AC_EGREP_CPP.patch \
+           file://0001-configure-Use-pkg-config-variable-to-find-check-incl.patch"
+SRCREV = "a03043bec8e66b240a45555e37147b22db182c21"
+
+UPSTREAM_CHECK_GITTAGREGEX = "libdnet-(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+inherit autotools multilib_script pkgconfig
+
+DEPENDS += "libcheck"
+
+EXTRA_AUTORECONF += "-I ./config"
+BBCLASSEXTEND = "native"
+
+MULTILIB_SCRIPTS = "${PN}:${bindir}/dnet-config"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/restinio/restinio_0.6.13.bb b/meta-openembedded/meta-networking/recipes-connectivity/restinio/restinio_0.6.13.bb
index e715135..03eff43 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/restinio/restinio_0.6.13.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/restinio/restinio_0.6.13.bb
@@ -9,11 +9,11 @@
 LIC_FILES_CHKSUM = "file://../LICENSE;md5=f399b62ce0a152525d1589a5a40c0ff6"
 DEPENDS = "asio fmt http-parser"
 
-SRC_URI = "https://github.com/Stiffstream/restinio/releases/download/v.${PV}/restinio-${PV}.tar.bz2"
+SRC_URI = "https://github.com/Stiffstream/restinio/releases/download/v.${PV}/${BP}.tar.bz2"
 SRC_URI[md5sum] = "37a4310e98912030a74bdd4ed789f33c"
 SRC_URI[sha256sum] = "b35d696e6fafd4563ca708fcecf9d0cf6705c846d417b5000f5252e0188848e7"
 
-S = "${WORKDIR}/${PN}-${PV}/dev"
+S = "${WORKDIR}/${BP}/dev"
 
 inherit cmake
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.18.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.18.1.bb
similarity index 99%
rename from meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.18.0.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.18.1.bb
index d29c195..7992fa9 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.18.0.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.18.1.bb
@@ -32,7 +32,7 @@
            file://cmocka-uintptr_t.patch \
            "
 
-SRC_URI[sha256sum] = "70348656ef807be9c8be4465ca157cef4d99818e234253d2c684cc18b8408149"
+SRC_URI[sha256sum] = "cedeaa2f244a0862c4f73b7b9f2ff92d181fd3ba7df80284a2f25f7713b9cc0e"
 
 UPSTREAM_CHECK_REGEX = "samba\-(?P<pver>4\.18(\.\d+)+).tar.gz"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop/0001-Use-pkg-config-to-find-gpgme.patch b/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop/0001-Use-pkg-config-to-find-gpgme.patch
new file mode 100644
index 0000000..146501c
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop/0001-Use-pkg-config-to-find-gpgme.patch
@@ -0,0 +1,27 @@
+From f8f4e1a617c4610ea7dc40a60f1c696ebc37850c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 2 Apr 2023 09:27:42 -0700
+Subject: [PATCH] Use pkg-config to find gpgme
+
+Upstream-Status: Inappropriate [OE specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ m4/gpgme.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/m4/gpgme.m4 b/m4/gpgme.m4
+index 44bf43c..c9a8ae6 100644
+--- a/m4/gpgme.m4
++++ b/m4/gpgme.m4
+@@ -18,7 +18,7 @@ AC_DEFUN([_AM_PATH_GPGME_CONFIG],
+   if test "x$gpgme_config_prefix" != x ; then
+       GPGME_CONFIG="$gpgme_config_prefix/bin/gpgme-config"
+   fi
+-  AC_PATH_PROG(GPGME_CONFIG, gpgme-config, no)
++  GPGME_CONFIG="pkg-config gpgme"
+ 
+   if test "$GPGME_CONFIG" != "no" ; then
+     gpgme_version=`$GPGME_CONFIG --version`
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop/0001-configure.ac-Fix-missing-comma-in-AS_IF.patch b/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop/0001-configure.ac-Fix-missing-comma-in-AS_IF.patch
new file mode 100644
index 0000000..f3e1707
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop/0001-configure.ac-Fix-missing-comma-in-AS_IF.patch
@@ -0,0 +1,29 @@
+From fee4cb0ae2d1fcd012cb7f501c3db0d8ec910798 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 2 Apr 2023 10:01:51 -0700
+Subject: [PATCH] configure.ac: Fix missing  comma in AS_IF
+
+this is flagged with autconf 2.72
+
+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 47a069e..9cdfd3f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -744,7 +744,7 @@ dnl
+             IPFW_EXE=""
+             IPTABLES_EXE=""
+             FIREWALLD_EXE=""
+-          ]
++          ],
+         ]
+       ]
+     ]
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop_2.6.10.bb b/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop_2.6.10.bb
index a35ec06..a1f56cd 100644
--- a/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop_2.6.10.bb
+++ b/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop_2.6.10.bb
@@ -3,29 +3,22 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
 		    "
-inherit autotools-brokensep
+inherit autotools-brokensep pkgconfig
 
 SRC_URI = "http://www.cipherdyne.org/${BPN}/download/${BPN}-${PV}.tar.bz2 \
            file://0001-Fix-compilation-with-GCC-s-fno-common-flag-fixes-305.patch \
+           file://0001-Use-pkg-config-to-find-gpgme.patch \
+	   file://0001-configure.ac-Fix-missing-comma-in-AS_IF.patch \
           "
-SRC_URI[md5sum] = "47a9c7c214c40dceb5dc2aa8832e4f32"
 SRC_URI[sha256sum] = "f6c09bec97ed8e474a98ae14f9f53e1bcdda33393f20667b6af3fb6bb894ca77"
 
 DEPENDS = "libpcap gpgme"
 
-EXTRA_OECONF = " --with-iptables=/usr/sbin/iptables \
-               "
+EXTRA_OECONF = " --with-iptables=${sbindir}/iptables"
 
-do_configure () {
+do_configure:prepend () {
 	install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/config
 	install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/config
-
-	aclocal
-	libtoolize --automake --copy --force
-	autoconf
-	autoheader
-	automake -a
-	oe_runconf
 }
 
 PACKAGES =+ "${PN}-client ${PN}-daemon"
diff --git a/meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.7.1.bb b/meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.7.2.bb
similarity index 95%
rename from meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.7.1.bb
rename to meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.7.2.bb
index d13bd37..daf0f73 100644
--- a/meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.7.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.7.2.bb
@@ -35,8 +35,7 @@
                     file://man/ldb.3.xml;beginline=261;endline=262;md5=137f9fd61040c1505d1aa1019663fd08 \
                     file://tools/ldbdump.c;endline=19;md5=a7d4fc5d1f75676b49df491575a86a42"
 
-SRC_URI[md5sum] = "e443a8da17758479c3b5c542e8e3ff1a"
-SRC_URI[sha256sum] = "c4632c9a7f81f8a45ed46fc14d18eb507edf4e79f6e88d16977478ef95ed5b7f"
+SRC_URI[sha256sum] = "26ee72d647854e662d99643eb2b2d341655abf31f4990838d6650fb5cf9209c8"
 
 inherit pkgconfig waf-samba
 
diff --git a/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_1.0.6.bb b/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_1.0.7.bb
similarity index 97%
rename from meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_1.0.6.bb
rename to meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_1.0.7.bb
index 6861314..a5b9bd0 100644
--- a/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_1.0.6.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_1.0.7.bb
@@ -5,7 +5,7 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
-SRCREV = "7e314b23329f9c24c4c097b8513673fed7e7158a"
+SRCREV = "c308ba5370d66acc44d411f12d59af61d522b91a"
 SRC_URI = "git://git.remlab.net/git/ndisc6.git;protocol=http;branch=master \
            file://0001-autogen-Do-not-symlink-gettext.h-from-build-host.patch \
            "
diff --git a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.1.bb b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.2.bb
similarity index 96%
rename from meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.1.bb
rename to meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.2.bb
index 20dac79..36ae8c9 100644
--- a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.2.bb
@@ -14,7 +14,7 @@
 
 UPSTREAM_CHECK_URI = "https://openvpn.net/community-downloads"
 
-SRC_URI[sha256sum] = "8cbc4fd8ce27b85107b449833c3b30fb05f1ca3c81b46a0ba8658036944266bc"
+SRC_URI[sha256sum] = "42d561a9af150b21bc914e3b7aa09f88013d2ffa6d5ce75a025a3b34caa948d4"
 
 # CVE-2020-7224 and CVE-2020-27569 are for Aviatrix OpenVPN client, not for openvpn.
 CVE_CHECK_IGNORE += "CVE-2020-7224 CVE-2020-27569"
diff --git a/meta-openembedded/meta-networking/recipes-support/unbound/unbound_1.17.1.bb b/meta-openembedded/meta-networking/recipes-support/unbound/unbound_1.17.1.bb
index caa1bb3..24ac601 100644
--- a/meta-openembedded/meta-networking/recipes-support/unbound/unbound_1.17.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/unbound/unbound_1.17.1.bb
@@ -9,7 +9,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=5308494bc0590c0cb036afd781d78f06"
 
-SRC_URI = "git://github.com/NLnetLabs/unbound.git;protocol=http;branch=master;protocol=https \
+SRC_URI = "git://github.com/NLnetLabs/unbound.git;protocol=https;branch=master \
 	file://0001-contrib-add-yocto-compatible-init-script.patch \
 "
 SRCREV = "90831af981221bbce1cd7b15055562336760e484"
diff --git a/meta-openembedded/meta-oe/README b/meta-openembedded/meta-oe/README
index 676a2c8..4826efe 100644
--- a/meta-openembedded/meta-oe/README
+++ b/meta-openembedded/meta-oe/README
@@ -4,7 +4,7 @@
 This layer depends on:
 
 URI: git://github.com/openembedded/openembedded-core.git
-branch: master
+branch: mickledore 
 
 luajit recipe requires host compiler to be able to generate 32bit code when target is 32bit
 e.g. arm, so ensure that $CC -m32 is functional on build host, if building this recipe, needed
@@ -16,10 +16,10 @@
 Ubuntu
 sudo apt-get install gcc-multilib linux-libc-dev:i386
 
-Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-oe]' in the subject'
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-oe][mickledore]' in the subject'
 
 When sending single patches, please use something like:
-'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix="meta-oe][PATCH"'
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix="meta-oe][mickledore][PATCH"'
 
 You are encouraged to fork the mirror on GitHub https://github.com/openembedded/meta-openembedded
 to share your patches, this is preferred for patch sets consisting of more than one patch.
@@ -28,4 +28,4 @@
 'git fetch <remote>' works the same on all of them. We recommend GitHub because it is free, easy
 to use, has been proven to be reliable and has a really good web GUI.
 
-layer maintainer: Khem Raj <raj.khem@gmail.com>
+layer maintainer: Armin Kuster <akuster808@gmail.com>
diff --git a/meta-openembedded/meta-oe/conf/include/ptest-packagelists-meta-oe.inc b/meta-openembedded/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
new file mode 100644
index 0000000..81e0779
--- /dev/null
+++ b/meta-openembedded/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
@@ -0,0 +1,62 @@
+#
+# Lists of the ptest in meta-oe, sorted into two sets by the time they take
+# Please keep these sorted in alphabetical order
+#
+# A first pass at getting all meta-oe recipes which inherit ptest
+# meta_oe_ptest_recipes=$(bitbake-layers show-recipes --recipes-only --layer meta-oe --inherits ptest --bare | tr '\n' ' ' | pcregrep -o1 '^NOTE:.+===(.+)$')
+#
+# ptests which take less than ~30s each
+PTESTS_FAST_META_OE = "\
+    cmocka \
+    cunit \
+    duktape \
+    fmt \
+    function2 \
+    fwupd \
+    gcab \
+    jq \
+    leveldb \
+    libcereal \
+    libee \
+    libio-pty-perl \
+    libmanette \
+    libssh \
+    libtinyxml2 \
+    libxml++-5.0 \
+    libxmlb \
+    libyang \
+    lmdb \
+    minicoredumper \
+    neon \
+    nodejs \
+    onig \
+    poco \
+    protobuf \
+    sdbus-c++ \
+    uthash \
+    xmlsec1 \
+    zeromq \
+"
+PTESTS_FAST_META_OE:remove:libc-musl = "minicoredumper"
+
+PTESTS_SLOW_META_OE = "\
+    fftw \
+    libusb-compat \
+    rsyslog \
+"
+
+PTESTS_PROBLEMS_META_OE ="\
+    jemalloc \
+    kernel-selftest \
+    keyutils \
+    libdbi-perl \
+    libgpiod \
+    libjcat \
+    libteam \
+    libxml++ \
+    mcelog \
+    oprofile \
+    ostree \
+    psqlodbc \
+    pv \
+"
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb
index 7b85bdd..550fbc3 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb
@@ -127,7 +127,7 @@
 
     # install mongo data folder
     install -m 755 -d ${D}${localstatedir}/lib/${BPN}
-    chown ${PN}:${PN} ${D}${localstatedir}/lib/${BPN}
+    chown ${BPN}:${BPN} ${D}${localstatedir}/lib/${BPN}
 
     # Create /var/log/mongodb in runtime.
     if [ "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" ]; then
diff --git a/meta-openembedded/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools_29.0.6.r14.bb b/meta-openembedded/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools_29.0.6.r14.bb
index 75e837f..caf55ed 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools_29.0.6.r14.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools_29.0.6.r14.bb
@@ -67,7 +67,7 @@
 
 inherit systemd
 
-SYSTEMD_SERVICE:${PN} = "android-tools-adbd.service"
+SYSTEMD_SERVICE:${PN}-adbd = "android-tools-adbd.service"
 
 # Find libbsd headers during native builds
 CC:append:class-native = " -I${STAGING_INCDIR}"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/0001-Fix-aclocal.m4-syntax-error-for-autoconf-2.72.patch b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/0001-Fix-aclocal.m4-syntax-error-for-autoconf-2.72.patch
new file mode 100644
index 0000000..9d0b066
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/0001-Fix-aclocal.m4-syntax-error-for-autoconf-2.72.patch
@@ -0,0 +1,40 @@
+From 0aa127afa52fd265a4f1bbded1623201390ae96a Mon Sep 17 00:00:00 2001
+From: Julien Rische <jrische@redhat.com>
+Date: Thu, 17 Nov 2022 15:01:24 +0100
+Subject: [PATCH] Fix aclocal.m4 syntax error for autoconf 2.72
+
+An incorrect closure inside KRB5_AC_INET6 is innocuous with autoconf
+versions up to 2.71, but will cause an error at configure time with
+the forthcoming autoconf 2.72.
+
+[ghudson@mit.edu: added more context to commit message]
+
+ticket: 9077 (new)
+tags: pullup
+target_version: 1.20-next
+target_version: 1.19-next
+
+Upstream-Status: Backport [https://github.com/krb5/krb5/commit/d864d740d019fdf2c640460f2aa2760c7fa4d5e9]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/aclocal.m4 | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/aclocal.m4 b/src/aclocal.m4
+index 9920476..3d66a87 100644
+--- a/src/aclocal.m4
++++ b/src/aclocal.m4
+@@ -409,8 +409,8 @@ else
+       [[struct sockaddr_in6 in;
+         AF_INET6;
+         IN6_IS_ADDR_LINKLOCAL(&in.sin6_addr);]])],
+-    [krb5_cv_inet6=yes], [krb5_cv_inet6=no])])
+-fi
++    [krb5_cv_inet6=yes], [krb5_cv_inet6=no])
++fi])
+ AC_MSG_RESULT($krb5_cv_inet6)
+ if test "$krb5_cv_inet6" = no && test "$ac_cv_func_inet_ntop" = yes; then
+ AC_MSG_CHECKING(for IPv6 compile-time support with -DINET6)
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.20.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.20.1.bb
index 6fc630d..10fff11 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.20.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.20.1.bb
@@ -22,6 +22,7 @@
 SRC_URI = "http://web.mit.edu/kerberos/dist/${BPN}/${SHRT_VER}/${BP}.tar.gz \
            file://debian-suppress-usr-lib-in-krb5-config.patch;striplevel=2 \
            file://crosscompile_nm.patch \
+           file://0001-Fix-aclocal.m4-syntax-error-for-autoconf-2.72.patch;striplevel=2 \
            file://etc/init.d/krb5-kdc \
            file://etc/init.d/krb5-admin-server \
            file://etc/default/krb5-kdc \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libnfs/libnfs_5.0.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/libnfs/libnfs_5.0.2.bb
new file mode 100644
index 0000000..7a40f4e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libnfs/libnfs_5.0.2.bb
@@ -0,0 +1,10 @@
+SUMMARY = "NFS client library"
+HOMEPAGE = "https://github.com/sahlberg/libnfs"
+LICENSE = "LGPL-2.1-only & BSD-2-Clause & GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=825301ba17efc9d188ee0abd4b924ada"
+
+SRC_URI = "git://github.com/sahlberg/libnfs.git;protocol=https;branch=master"
+SRCREV = "40348f45d6beb8a8f50b6b63414a98fc1a061b7d"
+S = "${WORKDIR}/git"
+
+inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.12.bb b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.12.bb
index d006ae7..6578bcf 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.12.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.12.bb
@@ -5,13 +5,12 @@
 LICENSE = "EPL-2.0 | EDL-1.0"
 
 LIC_FILES_CHKSUM = " \
+    file://LICENSE;md5=fd3b896dadaeec3410d753ffaeadcfac \
     file://edl-v10;md5=3adfcc70f5aeb7a44f3f9b495aa1fbf3 \
     file://epl-v20;md5=d9fc0efef5228704e7f5b37f27192723 \
-    file://notice.html;md5=943f861069889acecebf51dfa24478e2 \
-    file://about.html;md5=e5662cbb5f8fd5c9faac526e4077898e \
 "
 
-SRC_URI = "git://github.com/eclipse/paho.mqtt.c;protocol=http;branch=master;protocol=https"
+SRC_URI = "git://github.com/eclipse/paho.mqtt.c;protocol=https;branch=master"
 
 SRCREV = "4157a27d39f1dd5b95750ecb6acd1481432785d8"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.2.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.2.0.bb
index a9e16fa..bb5aa69 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.2.0.bb
@@ -5,13 +5,12 @@
 LICENSE = "EPL-1.0 | EDL-1.0"
 
 LIC_FILES_CHKSUM = " \
+    file://src/mqtt/message.h;beginline=9;endline=18;md5=5eec304e6066523386c222963ceeb6ff \
     file://edl-v10;md5=3adfcc70f5aeb7a44f3f9b495aa1fbf3 \
     file://epl-v10;md5=659c8e92a40b6df1d9e3dccf5ae45a08 \
-    file://notice.html;md5=a00d6f9ab542be7babc2d8b80d5d2a4c \
-    file://about.html;md5=dcde438d73cf42393da9d40fabc0c9bc \
 "
 
-SRC_URI = "git://github.com/eclipse/paho.mqtt.cpp;protocol=http;branch=master;protocol=https \
+SRC_URI = "git://github.com/eclipse/paho.mqtt.cpp;protocol=https;branch=master \
            file://0001-cmake-Use-CMAKE_INSTALL_LIBDIR-and-CMAKE_INSTALL_BIN.patch \
 "
 SRCREV = "33921c8b68b351828650c36816e7ecf936764379"
diff --git a/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc b/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc
index 8247870..208b39a 100644
--- a/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc
+++ b/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc
@@ -3,7 +3,7 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
-SRC_URI = "git://github.com/nicupavel/emlog.git;protocol=http;branch=master;protocol=https"
+SRC_URI = "git://github.com/nicupavel/emlog.git;protocol=https;branch=master"
 SRCREV = "aee53e8dee862f35291242ba41b0ca88010f6c71"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-all-image.bb b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-all-image.bb
new file mode 100644
index 0000000..0ea03dd
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-all-image.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Recipe to trigger execution of all meta-oe ptest images."
+HOMEPAGE = "https://www.openembedded.org/"
+
+LICENSE = "MIT"
+
+inherit features_check nopackages
+REQUIRED_DISTRO_FEATURES = "ptest"
+
+require conf/include/ptest-packagelists-meta-oe.inc
+
+# Include the full set of ptests
+PTESTS_META_OE = "${PTESTS_FAST_META_OE} ${PTESTS_SLOW_META_OE}"
+
+do_testimage[noexec] = "1"
+do_testimage[depends] = "${@' '.join(['meta-oe-ptest-image-'+x+':do_testimage' for x in d.getVar('PTESTS_META_OE').split()])}"
+
+do_build[depends] = "${@' '.join(['meta-oe-ptest-image-'+x+':do_build' for x in d.getVar('PTESTS_META_OE').split()])}"
+
+# normally image.bbclass would do this
+EXCLUDE_FROM_WORLD = "1"
+
+python () {
+    if bb.utils.contains('IMAGE_CLASSES', 'testimage', True, False, d):
+        bb.build.addtask("do_testimage", "", "", d)
+}
diff --git a/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-fast-image.bb b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-fast-image.bb
new file mode 100644
index 0000000..f56e841
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-fast-image.bb
@@ -0,0 +1,6 @@
+require meta-oe-ptest-all-image.bb
+
+DESCRIPTION = "Recipe to trigger execution of all fast meta-oe ptest images."
+
+PTESTS_META_OE = "${PTESTS_FAST_META_OE}"
+
diff --git a/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-image.bb b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-image.bb
index 0166b9c..951d91f 100644
--- a/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-image.bb
+++ b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-image.bb
@@ -1,5 +1,41 @@
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "ptest"
+
+require conf/include/ptest-packagelists-meta-oe.inc
+
 require  meta-oe-image-base.bb
 
 SUMMARY = "meta-oe ptest test image"
 
-IMAGE_INSTALL += "packagegroup-meta-oe"
+DESCRIPTION += "Also including the ${MCNAME} ptest package."
+HOMEPAGE = "https://www.openembedded.org/"
+
+PTESTS_META_OE = "${PTESTS_SLOW_META_OE} ${PTESTS_FAST_META_OE}"
+
+IMAGE_INSTALL:append = " ${MCNAME}-ptest openssh"
+
+BBCLASSEXTEND = "${@' '.join(['mcextend:'+x for x in d.getVar('PTESTS_META_OE').split()])}"
+
+# The image can be sufficiently large (~1.8GB) that we need to be careful that it fits in a live
+# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
+# box) and explicitly add up to 1500MB.
+IMAGE_OVERHEAD_FACTOR = "1.0"
+IMAGE_ROOTFS_EXTRA_SPACE = "324288"
+# If a particular ptest needs more space, it can be customized:
+#IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-<pn> = "1024288"
+
+# ptests need more memory than standard to avoid the OOM killer
+QB_MEM = "-m 1024"
+# If a particular ptest needs more memroy, it can be customized:
+#QB_MEM:virtclass-mcextend-<pn> = "-m 4096"
+
+TEST_SUITES = "ping ssh parselogs ptest"
+
+# Sadly at the moment the full set of ptests is not robust enough and sporadically fails in random places
+PTEST_EXPECT_FAILURE = "1"
+
+python () {
+    if not d.getVar("MCNAME"):
+        raise bb.parse.SkipRecipe("No class extension set")
+}
+
diff --git a/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb b/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb
index 07c5cc9..c6db78b 100644
--- a/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb
@@ -6,7 +6,7 @@
 
 PV = "2.3.3+git${SRCPV}"
 
-SRC_URI = "git://github.com/freesmartphone/mdbus.git;protocol=http;branch=master;protocol=https \
+SRC_URI = "git://github.com/freesmartphone/mdbus.git;protocol=https;branch=master \
            file://0001-Fix-arguments-in-GLib.DBusSignalCallback-for-Vala-0..patch \
            "
 SRCREV = "28202692d0b441000f4ddb8f347f72d1355021aa"
diff --git a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc
index 4bdb7b2..da579d7 100644
--- a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc
+++ b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc
@@ -1,269 +1,554 @@
+# Autogenerated with 'bitbake -c update_crates uutils-coreutils'
+
+# from Cargo.lock
 SRC_URI += " \
-    crate://crates.io/Inflector/0.11.4 \
-    crate://crates.io/adler/1.0.2 \
-    crate://crates.io/ahash/0.7.6 \
-    crate://crates.io/aho-corasick/0.7.19 \
-    crate://crates.io/aliasable/0.1.3 \
-    crate://crates.io/android_system_properties/0.1.5 \
-    crate://crates.io/arrayref/0.3.6 \
-    crate://crates.io/arrayvec/0.7.2 \
-    crate://crates.io/atty/0.2.14 \
-    crate://crates.io/autocfg/1.1.0 \
-    crate://crates.io/bigdecimal/0.3.0 \
-    crate://crates.io/binary-heap-plus/0.5.0 \
-    crate://crates.io/bindgen/0.62.0 \
-    crate://crates.io/bitflags/1.3.2 \
-    crate://crates.io/blake2b_simd/1.0.0 \
-    crate://crates.io/blake3/1.3.2 \
-    crate://crates.io/block-buffer/0.10.3 \
-    crate://crates.io/bstr/1.0.1 \
-    crate://crates.io/bumpalo/3.11.1 \
-    crate://crates.io/bytecount/0.6.3 \
-    crate://crates.io/byteorder/1.4.3 \
-    crate://crates.io/cc/1.0.77 \
-    crate://crates.io/cexpr/0.6.0 \
-    crate://crates.io/cfg-if/1.0.0 \
-    crate://crates.io/chrono/0.4.23 \
-    crate://crates.io/clang-sys/1.4.0 \
-    crate://crates.io/clap/4.0.26 \
-    crate://crates.io/clap_complete/4.0.6 \
-    crate://crates.io/clap_lex/0.3.0 \
-    crate://crates.io/codespan-reporting/0.11.1 \
-    crate://crates.io/compare/0.1.0 \
-    crate://crates.io/console/0.15.2 \
-    crate://crates.io/constant_time_eq/0.1.5 \
-    crate://crates.io/constant_time_eq/0.2.4 \
-    crate://crates.io/conv/0.3.3 \
-    crate://crates.io/core-foundation-sys/0.8.3 \
-    crate://crates.io/coz/0.1.3 \
-    crate://crates.io/cpp/0.5.7 \
-    crate://crates.io/cpp_build/0.5.7 \
-    crate://crates.io/cpp_common/0.5.7 \
-    crate://crates.io/cpp_macros/0.5.7 \
-    crate://crates.io/cpufeatures/0.2.5 \
-    crate://crates.io/crc32fast/1.3.2 \
-    crate://crates.io/crossbeam-channel/0.5.6 \
-    crate://crates.io/crossbeam-deque/0.8.2 \
-    crate://crates.io/crossbeam-epoch/0.9.12 \
-    crate://crates.io/crossbeam-utils/0.8.13 \
-    crate://crates.io/crossterm/0.25.0 \
-    crate://crates.io/crossterm_winapi/0.9.0 \
-    crate://crates.io/crunchy/0.2.2 \
-    crate://crates.io/crypto-common/0.1.6 \
-    crate://crates.io/ctor/0.1.26 \
-    crate://crates.io/ctrlc/3.2.3 \
-    crate://crates.io/custom_derive/0.1.7 \
-    crate://crates.io/cxx-build/1.0.82 \
-    crate://crates.io/cxx/1.0.82 \
-    crate://crates.io/cxxbridge-flags/1.0.82 \
-    crate://crates.io/cxxbridge-macro/1.0.82 \
-    crate://crates.io/data-encoding-macro-internal/0.1.10 \
-    crate://crates.io/data-encoding-macro/0.1.12 \
-    crate://crates.io/data-encoding/2.3.2 \
-    crate://crates.io/diff/0.1.13 \
-    crate://crates.io/digest/0.10.6 \
-    crate://crates.io/dlv-list/0.3.0 \
-    crate://crates.io/dns-lookup/1.0.8 \
-    crate://crates.io/dunce/1.0.3 \
-    crate://crates.io/either/1.8.0 \
-    crate://crates.io/encode_unicode/0.3.6 \
-    crate://crates.io/env_logger/0.8.4 \
-    crate://crates.io/errno-dragonfly/0.1.2 \
-    crate://crates.io/errno/0.2.8 \
-    crate://crates.io/exacl/0.9.0 \
-    crate://crates.io/fastrand/1.8.0 \
-    crate://crates.io/file_diff/1.0.0 \
-    crate://crates.io/filetime/0.2.18 \
-    crate://crates.io/flate2/1.0.24 \
-    crate://crates.io/fnv/1.0.7 \
-    crate://crates.io/fs_extra/1.2.0 \
-    crate://crates.io/fsevent-sys/4.1.0 \
-    crate://crates.io/fts-sys/0.2.3 \
-    crate://crates.io/futures-channel/0.3.25 \
-    crate://crates.io/futures-core/0.3.25 \
-    crate://crates.io/futures-executor/0.3.25 \
-    crate://crates.io/futures-io/0.3.25 \
-    crate://crates.io/futures-macro/0.3.25 \
-    crate://crates.io/futures-sink/0.3.25 \
-    crate://crates.io/futures-task/0.3.25 \
-    crate://crates.io/futures-timer/3.0.2 \
-    crate://crates.io/futures-util/0.3.25 \
-    crate://crates.io/futures/0.3.25 \
-    crate://crates.io/gcd/2.1.0 \
-    crate://crates.io/generic-array/0.14.6 \
-    crate://crates.io/getrandom/0.2.8 \
-    crate://crates.io/glob/0.3.0 \
-    crate://crates.io/half/2.1.0 \
-    crate://crates.io/hashbrown/0.12.3 \
-    crate://crates.io/heck/0.4.0 \
-    crate://crates.io/hermit-abi/0.1.19 \
-    crate://crates.io/hex-literal/0.3.4 \
-    crate://crates.io/hex/0.4.3 \
-    crate://crates.io/hostname/0.3.1 \
-    crate://crates.io/iana-time-zone-haiku/0.1.1 \
-    crate://crates.io/iana-time-zone/0.1.53 \
-    crate://crates.io/indicatif/0.17.2 \
-    crate://crates.io/inotify-sys/0.1.5 \
-    crate://crates.io/inotify/0.9.6 \
-    crate://crates.io/instant/0.1.12 \
-    crate://crates.io/io-lifetimes/0.7.5 \
-    crate://crates.io/itertools/0.10.5 \
-    crate://crates.io/itoa/1.0.4 \
-    crate://crates.io/js-sys/0.3.60 \
-    crate://crates.io/keccak/0.1.3 \
-    crate://crates.io/kqueue-sys/1.0.3 \
-    crate://crates.io/kqueue/1.0.7 \
-    crate://crates.io/lazy_static/1.4.0 \
-    crate://crates.io/lazycell/1.3.0 \
-    crate://crates.io/libc/0.2.137 \
-    crate://crates.io/libloading/0.7.4 \
-    crate://crates.io/link-cplusplus/1.0.7 \
-    crate://crates.io/linux-raw-sys/0.0.46 \
-    crate://crates.io/lock_api/0.4.9 \
-    crate://crates.io/log/0.4.17 \
-    crate://crates.io/lscolors/0.13.0 \
-    crate://crates.io/match_cfg/0.1.0 \
-    crate://crates.io/md-5/0.10.5 \
-    crate://crates.io/memchr/2.5.0 \
-    crate://crates.io/memmap2/0.5.8 \
-    crate://crates.io/memoffset/0.6.5 \
-    crate://crates.io/memoffset/0.7.1 \
-    crate://crates.io/minimal-lexical/0.2.1 \
-    crate://crates.io/miniz_oxide/0.5.4 \
-    crate://crates.io/mio/0.8.5 \
-    crate://crates.io/nix/0.25.0 \
-    crate://crates.io/nom/7.1.1 \
-    crate://crates.io/notify/5.0.0 \
-    crate://crates.io/nu-ansi-term/0.46.0 \
-    crate://crates.io/num-bigint/0.4.3 \
-    crate://crates.io/num-integer/0.1.45 \
-    crate://crates.io/num-traits/0.2.15 \
-    crate://crates.io/num_cpus/1.14.0 \
-    crate://crates.io/num_threads/0.1.6 \
-    crate://crates.io/number_prefix/0.4.0 \
-    crate://crates.io/once_cell/1.16.0 \
-    crate://crates.io/onig/6.4.0 \
-    crate://crates.io/onig_sys/69.8.1 \
-    crate://crates.io/ordered-multimap/0.4.3 \
-    crate://crates.io/os_display/0.1.3 \
-    crate://crates.io/os_str_bytes/6.4.1 \
-    crate://crates.io/ouroboros/0.15.5 \
-    crate://crates.io/ouroboros_macro/0.15.5 \
-    crate://crates.io/output_vt100/0.1.3 \
-    crate://crates.io/overload/0.1.1 \
-    crate://crates.io/parking_lot/0.12.1 \
-    crate://crates.io/parking_lot_core/0.9.4 \
-    crate://crates.io/paste/1.0.9 \
-    crate://crates.io/peeking_take_while/0.1.2 \
-    crate://crates.io/phf/0.11.1 \
-    crate://crates.io/phf_codegen/0.11.1 \
-    crate://crates.io/phf_generator/0.11.1 \
-    crate://crates.io/phf_shared/0.11.1 \
-    crate://crates.io/pin-project-lite/0.2.9 \
-    crate://crates.io/pin-utils/0.1.0 \
-    crate://crates.io/pkg-config/0.3.26 \
-    crate://crates.io/platform-info/1.0.2 \
-    crate://crates.io/portable-atomic/0.3.15 \
-    crate://crates.io/ppv-lite86/0.2.17 \
-    crate://crates.io/pretty_assertions/1.3.0 \
-    crate://crates.io/proc-macro-error-attr/1.0.4 \
-    crate://crates.io/proc-macro-error/1.0.4 \
-    crate://crates.io/proc-macro2/1.0.47 \
-    crate://crates.io/procfs/0.14.1 \
-    crate://crates.io/quick-error/2.0.1 \
-    crate://crates.io/quickcheck/1.0.3 \
-    crate://crates.io/quote/1.0.21 \
-    crate://crates.io/rand/0.8.5 \
-    crate://crates.io/rand_chacha/0.3.1 \
-    crate://crates.io/rand_core/0.6.4 \
-    crate://crates.io/rand_pcg/0.3.1 \
-    crate://crates.io/rayon-core/1.10.1 \
-    crate://crates.io/rayon/1.6.0 \
-    crate://crates.io/redox_syscall/0.2.16 \
-    crate://crates.io/reference-counted-singleton/0.1.2 \
-    crate://crates.io/regex-automata/0.1.10 \
-    crate://crates.io/regex-syntax/0.6.28 \
-    crate://crates.io/regex/1.7.0 \
-    crate://crates.io/remove_dir_all/0.5.3 \
-    crate://crates.io/remove_dir_all/0.7.0 \
-    crate://crates.io/retain_mut/0.1.7 \
-    crate://crates.io/rlimit/0.8.3 \
-    crate://crates.io/rstest/0.16.0 \
-    crate://crates.io/rstest_macros/0.16.0 \
-    crate://crates.io/rust-ini/0.18.0 \
-    crate://crates.io/rustc-hash/1.1.0 \
-    crate://crates.io/rustc_version/0.4.0 \
-    crate://crates.io/rustix/0.35.13 \
-    crate://crates.io/rustversion/1.0.9 \
-    crate://crates.io/same-file/1.0.6 \
-    crate://crates.io/scopeguard/1.1.0 \
-    crate://crates.io/scratch/1.0.2 \
-    crate://crates.io/selinux-sys/0.6.1 \
-    crate://crates.io/selinux/0.3.1 \
-    crate://crates.io/semver/1.0.14 \
-    crate://crates.io/serde/1.0.147 \
-    crate://crates.io/sha1/0.10.5 \
-    crate://crates.io/sha2/0.10.6 \
-    crate://crates.io/sha3/0.10.6 \
-    crate://crates.io/shlex/1.1.0 \
-    crate://crates.io/signal-hook-mio/0.2.3 \
-    crate://crates.io/signal-hook-registry/1.4.0 \
-    crate://crates.io/signal-hook/0.3.14 \
-    crate://crates.io/siphasher/0.3.10 \
-    crate://crates.io/slab/0.4.7 \
-    crate://crates.io/smallvec/1.10.0 \
-    crate://crates.io/smawk/0.3.1 \
-    crate://crates.io/socket2/0.4.7 \
-    crate://crates.io/strsim/0.10.0 \
-    crate://crates.io/strum/0.24.1 \
-    crate://crates.io/strum_macros/0.24.3 \
-    crate://crates.io/subtle/2.4.1 \
-    crate://crates.io/syn/1.0.103 \
-    crate://crates.io/tempfile/3.3.0 \
-    crate://crates.io/term_grid/0.1.7 \
-    crate://crates.io/termcolor/1.1.3 \
-    crate://crates.io/terminal_size/0.1.17 \
-    crate://crates.io/terminal_size/0.2.2 \
-    crate://crates.io/textwrap/0.16.0 \
-    crate://crates.io/thiserror-impl/1.0.37 \
-    crate://crates.io/thiserror/1.0.37 \
-    crate://crates.io/time-core/0.1.0 \
-    crate://crates.io/time-macros/0.2.6 \
-    crate://crates.io/time/0.3.17 \
-    crate://crates.io/typenum/1.15.0 \
-    crate://crates.io/unicode-ident/1.0.5 \
-    crate://crates.io/unicode-linebreak/0.1.4 \
-    crate://crates.io/unicode-segmentation/1.10.0 \
-    crate://crates.io/unicode-width/0.1.10 \
-    crate://crates.io/unicode-xid/0.2.4 \
-    crate://crates.io/unindent/0.1.10 \
-    crate://crates.io/users/0.11.0 \
-    crate://crates.io/utf-8/0.7.6 \
-    crate://crates.io/uuid/1.2.2 \
-    crate://crates.io/version_check/0.9.4 \
-    crate://crates.io/walkdir/2.3.2 \
-    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
-    crate://crates.io/wasm-bindgen-backend/0.2.83 \
-    crate://crates.io/wasm-bindgen-macro-support/0.2.83 \
-    crate://crates.io/wasm-bindgen-macro/0.2.83 \
-    crate://crates.io/wasm-bindgen-shared/0.2.83 \
-    crate://crates.io/wasm-bindgen/0.2.83 \
-    crate://crates.io/which/4.3.0 \
-    crate://crates.io/wild/2.1.0 \
-    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi-util/0.1.5 \
-    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi/0.3.9 \
-    crate://crates.io/windows-sys/0.42.0 \
-    crate://crates.io/windows_aarch64_gnullvm/0.42.0 \
-    crate://crates.io/windows_aarch64_msvc/0.42.0 \
-    crate://crates.io/windows_i686_gnu/0.42.0 \
-    crate://crates.io/windows_i686_msvc/0.42.0 \
-    crate://crates.io/windows_x86_64_gnu/0.42.0 \
-    crate://crates.io/windows_x86_64_gnullvm/0.42.0 \
-    crate://crates.io/windows_x86_64_msvc/0.42.0 \
-    crate://crates.io/xattr/0.2.3 \
-    crate://crates.io/yansi/0.5.1 \
-    crate://crates.io/z85/3.0.5 \
-    crate://crates.io/zip/0.6.3 \
+    crate://crates.io/Inflector/0.11.4;name=Inflector-0.11.4 \
+    crate://crates.io/adler/1.0.2;name=adler-1.0.2 \
+    crate://crates.io/ahash/0.7.6;name=ahash-0.7.6 \
+    crate://crates.io/aho-corasick/0.7.19;name=aho-corasick-0.7.19 \
+    crate://crates.io/aliasable/0.1.3;name=aliasable-0.1.3 \
+    crate://crates.io/android_system_properties/0.1.5;name=android_system_properties-0.1.5 \
+    crate://crates.io/anstream/0.2.6;name=anstream-0.2.6 \
+    crate://crates.io/anstyle/0.3.5;name=anstyle-0.3.5 \
+    crate://crates.io/anstyle-parse/0.1.1;name=anstyle-parse-0.1.1 \
+    crate://crates.io/anstyle-wincon/0.2.0;name=anstyle-wincon-0.2.0 \
+    crate://crates.io/arrayref/0.3.6;name=arrayref-0.3.6 \
+    crate://crates.io/arrayvec/0.7.2;name=arrayvec-0.7.2 \
+    crate://crates.io/autocfg/1.1.0;name=autocfg-1.1.0 \
+    crate://crates.io/bigdecimal/0.3.0;name=bigdecimal-0.3.0 \
+    crate://crates.io/binary-heap-plus/0.5.0;name=binary-heap-plus-0.5.0 \
+    crate://crates.io/bindgen/0.63.0;name=bindgen-0.63.0 \
+    crate://crates.io/bitflags/1.3.2;name=bitflags-1.3.2 \
+    crate://crates.io/blake2b_simd/1.0.1;name=blake2b_simd-1.0.1 \
+    crate://crates.io/blake3/1.3.3;name=blake3-1.3.3 \
+    crate://crates.io/block-buffer/0.10.3;name=block-buffer-0.10.3 \
+    crate://crates.io/bstr/1.4.0;name=bstr-1.4.0 \
+    crate://crates.io/bumpalo/3.11.1;name=bumpalo-3.11.1 \
+    crate://crates.io/bytecount/0.6.3;name=bytecount-0.6.3 \
+    crate://crates.io/byteorder/1.4.3;name=byteorder-1.4.3 \
+    crate://crates.io/cc/1.0.77;name=cc-1.0.77 \
+    crate://crates.io/cexpr/0.6.0;name=cexpr-0.6.0 \
+    crate://crates.io/cfg-if/1.0.0;name=cfg-if-1.0.0 \
+    crate://crates.io/chrono/0.4.24;name=chrono-0.4.24 \
+    crate://crates.io/clang-sys/1.4.0;name=clang-sys-1.4.0 \
+    crate://crates.io/clap/4.2.0;name=clap-4.2.0 \
+    crate://crates.io/clap_builder/4.2.0;name=clap_builder-4.2.0 \
+    crate://crates.io/clap_complete/4.2.0;name=clap_complete-4.2.0 \
+    crate://crates.io/clap_lex/0.4.1;name=clap_lex-0.4.1 \
+    crate://crates.io/clap_mangen/0.2.9;name=clap_mangen-0.2.9 \
+    crate://crates.io/codespan-reporting/0.11.1;name=codespan-reporting-0.11.1 \
+    crate://crates.io/compare/0.1.0;name=compare-0.1.0 \
+    crate://crates.io/concolor-override/1.0.0;name=concolor-override-1.0.0 \
+    crate://crates.io/concolor-query/0.3.3;name=concolor-query-0.3.3 \
+    crate://crates.io/console/0.15.5;name=console-0.15.5 \
+    crate://crates.io/constant_time_eq/0.2.4;name=constant_time_eq-0.2.4 \
+    crate://crates.io/conv/0.3.3;name=conv-0.3.3 \
+    crate://crates.io/core-foundation-sys/0.8.3;name=core-foundation-sys-0.8.3 \
+    crate://crates.io/coz/0.1.3;name=coz-0.1.3 \
+    crate://crates.io/cpp/0.5.7;name=cpp-0.5.7 \
+    crate://crates.io/cpp_build/0.5.7;name=cpp_build-0.5.7 \
+    crate://crates.io/cpp_common/0.5.7;name=cpp_common-0.5.7 \
+    crate://crates.io/cpp_macros/0.5.7;name=cpp_macros-0.5.7 \
+    crate://crates.io/cpufeatures/0.2.5;name=cpufeatures-0.2.5 \
+    crate://crates.io/crc32fast/1.3.2;name=crc32fast-1.3.2 \
+    crate://crates.io/crossbeam-channel/0.5.6;name=crossbeam-channel-0.5.6 \
+    crate://crates.io/crossbeam-deque/0.8.2;name=crossbeam-deque-0.8.2 \
+    crate://crates.io/crossbeam-epoch/0.9.12;name=crossbeam-epoch-0.9.12 \
+    crate://crates.io/crossbeam-utils/0.8.13;name=crossbeam-utils-0.8.13 \
+    crate://crates.io/crossterm/0.26.1;name=crossterm-0.26.1 \
+    crate://crates.io/crossterm_winapi/0.9.0;name=crossterm_winapi-0.9.0 \
+    crate://crates.io/crunchy/0.2.2;name=crunchy-0.2.2 \
+    crate://crates.io/crypto-common/0.1.6;name=crypto-common-0.1.6 \
+    crate://crates.io/ctor/0.1.26;name=ctor-0.1.26 \
+    crate://crates.io/ctrlc/3.2.4;name=ctrlc-3.2.4 \
+    crate://crates.io/custom_derive/0.1.7;name=custom_derive-0.1.7 \
+    crate://crates.io/cxx/1.0.82;name=cxx-1.0.82 \
+    crate://crates.io/cxx-build/1.0.82;name=cxx-build-1.0.82 \
+    crate://crates.io/cxxbridge-flags/1.0.82;name=cxxbridge-flags-1.0.82 \
+    crate://crates.io/cxxbridge-macro/1.0.82;name=cxxbridge-macro-1.0.82 \
+    crate://crates.io/data-encoding/2.3.2;name=data-encoding-2.3.2 \
+    crate://crates.io/data-encoding-macro/0.1.12;name=data-encoding-macro-0.1.12 \
+    crate://crates.io/data-encoding-macro-internal/0.1.10;name=data-encoding-macro-internal-0.1.10 \
+    crate://crates.io/diff/0.1.13;name=diff-0.1.13 \
+    crate://crates.io/digest/0.10.6;name=digest-0.10.6 \
+    crate://crates.io/dlv-list/0.3.0;name=dlv-list-0.3.0 \
+    crate://crates.io/dns-lookup/1.0.8;name=dns-lookup-1.0.8 \
+    crate://crates.io/dunce/1.0.3;name=dunce-1.0.3 \
+    crate://crates.io/either/1.8.0;name=either-1.8.0 \
+    crate://crates.io/encode_unicode/0.3.6;name=encode_unicode-0.3.6 \
+    crate://crates.io/env_logger/0.8.4;name=env_logger-0.8.4 \
+    crate://crates.io/errno/0.2.8;name=errno-0.2.8 \
+    crate://crates.io/errno/0.3.0;name=errno-0.3.0 \
+    crate://crates.io/errno-dragonfly/0.1.2;name=errno-dragonfly-0.1.2 \
+    crate://crates.io/exacl/0.10.0;name=exacl-0.10.0 \
+    crate://crates.io/fastrand/1.8.0;name=fastrand-1.8.0 \
+    crate://crates.io/file_diff/1.0.0;name=file_diff-1.0.0 \
+    crate://crates.io/filetime/0.2.18;name=filetime-0.2.18 \
+    crate://crates.io/flate2/1.0.24;name=flate2-1.0.24 \
+    crate://crates.io/fnv/1.0.7;name=fnv-1.0.7 \
+    crate://crates.io/fs_extra/1.3.0;name=fs_extra-1.3.0 \
+    crate://crates.io/fsevent-sys/4.1.0;name=fsevent-sys-4.1.0 \
+    crate://crates.io/fts-sys/0.2.4;name=fts-sys-0.2.4 \
+    crate://crates.io/fundu/0.5.0;name=fundu-0.5.0 \
+    crate://crates.io/futures/0.3.25;name=futures-0.3.25 \
+    crate://crates.io/futures-channel/0.3.25;name=futures-channel-0.3.25 \
+    crate://crates.io/futures-core/0.3.25;name=futures-core-0.3.25 \
+    crate://crates.io/futures-executor/0.3.25;name=futures-executor-0.3.25 \
+    crate://crates.io/futures-io/0.3.25;name=futures-io-0.3.25 \
+    crate://crates.io/futures-macro/0.3.25;name=futures-macro-0.3.25 \
+    crate://crates.io/futures-sink/0.3.25;name=futures-sink-0.3.25 \
+    crate://crates.io/futures-task/0.3.25;name=futures-task-0.3.25 \
+    crate://crates.io/futures-timer/3.0.2;name=futures-timer-3.0.2 \
+    crate://crates.io/futures-util/0.3.25;name=futures-util-0.3.25 \
+    crate://crates.io/gcd/2.3.0;name=gcd-2.3.0 \
+    crate://crates.io/generic-array/0.14.6;name=generic-array-0.14.6 \
+    crate://crates.io/getrandom/0.2.8;name=getrandom-0.2.8 \
+    crate://crates.io/glob/0.3.1;name=glob-0.3.1 \
+    crate://crates.io/half/2.2.1;name=half-2.2.1 \
+    crate://crates.io/hashbrown/0.12.3;name=hashbrown-0.12.3 \
+    crate://crates.io/hermit-abi/0.1.19;name=hermit-abi-0.1.19 \
+    crate://crates.io/hermit-abi/0.3.1;name=hermit-abi-0.3.1 \
+    crate://crates.io/hex/0.4.3;name=hex-0.4.3 \
+    crate://crates.io/hex-literal/0.4.0;name=hex-literal-0.4.0 \
+    crate://crates.io/hostname/0.3.1;name=hostname-0.3.1 \
+    crate://crates.io/iana-time-zone/0.1.53;name=iana-time-zone-0.1.53 \
+    crate://crates.io/iana-time-zone-haiku/0.1.1;name=iana-time-zone-haiku-0.1.1 \
+    crate://crates.io/indicatif/0.17.3;name=indicatif-0.17.3 \
+    crate://crates.io/inotify/0.9.6;name=inotify-0.9.6 \
+    crate://crates.io/inotify-sys/0.1.5;name=inotify-sys-0.1.5 \
+    crate://crates.io/instant/0.1.12;name=instant-0.1.12 \
+    crate://crates.io/io-lifetimes/1.0.5;name=io-lifetimes-1.0.5 \
+    crate://crates.io/is-terminal/0.4.6;name=is-terminal-0.4.6 \
+    crate://crates.io/itertools/0.10.5;name=itertools-0.10.5 \
+    crate://crates.io/itoa/1.0.4;name=itoa-1.0.4 \
+    crate://crates.io/js-sys/0.3.60;name=js-sys-0.3.60 \
+    crate://crates.io/keccak/0.1.3;name=keccak-0.1.3 \
+    crate://crates.io/kqueue/1.0.7;name=kqueue-1.0.7 \
+    crate://crates.io/kqueue-sys/1.0.3;name=kqueue-sys-1.0.3 \
+    crate://crates.io/lazy_static/1.4.0;name=lazy_static-1.4.0 \
+    crate://crates.io/lazycell/1.3.0;name=lazycell-1.3.0 \
+    crate://crates.io/libc/0.2.140;name=libc-0.2.140 \
+    crate://crates.io/libloading/0.7.4;name=libloading-0.7.4 \
+    crate://crates.io/link-cplusplus/1.0.7;name=link-cplusplus-1.0.7 \
+    crate://crates.io/linux-raw-sys/0.1.4;name=linux-raw-sys-0.1.4 \
+    crate://crates.io/linux-raw-sys/0.3.0;name=linux-raw-sys-0.3.0 \
+    crate://crates.io/lock_api/0.4.9;name=lock_api-0.4.9 \
+    crate://crates.io/log/0.4.17;name=log-0.4.17 \
+    crate://crates.io/lscolors/0.13.0;name=lscolors-0.13.0 \
+    crate://crates.io/match_cfg/0.1.0;name=match_cfg-0.1.0 \
+    crate://crates.io/md-5/0.10.5;name=md-5-0.10.5 \
+    crate://crates.io/memchr/2.5.0;name=memchr-2.5.0 \
+    crate://crates.io/memmap2/0.5.8;name=memmap2-0.5.8 \
+    crate://crates.io/memoffset/0.7.1;name=memoffset-0.7.1 \
+    crate://crates.io/minimal-lexical/0.2.1;name=minimal-lexical-0.2.1 \
+    crate://crates.io/miniz_oxide/0.5.4;name=miniz_oxide-0.5.4 \
+    crate://crates.io/mio/0.8.5;name=mio-0.8.5 \
+    crate://crates.io/nix/0.26.2;name=nix-0.26.2 \
+    crate://crates.io/nom/7.1.3;name=nom-7.1.3 \
+    crate://crates.io/notify/5.1.0;name=notify-5.1.0 \
+    crate://crates.io/nu-ansi-term/0.46.0;name=nu-ansi-term-0.46.0 \
+    crate://crates.io/num-bigint/0.4.3;name=num-bigint-0.4.3 \
+    crate://crates.io/num-integer/0.1.45;name=num-integer-0.1.45 \
+    crate://crates.io/num-traits/0.2.15;name=num-traits-0.2.15 \
+    crate://crates.io/num_cpus/1.14.0;name=num_cpus-1.14.0 \
+    crate://crates.io/num_threads/0.1.6;name=num_threads-0.1.6 \
+    crate://crates.io/number_prefix/0.4.0;name=number_prefix-0.4.0 \
+    crate://crates.io/once_cell/1.17.1;name=once_cell-1.17.1 \
+    crate://crates.io/onig/6.4.0;name=onig-6.4.0 \
+    crate://crates.io/onig_sys/69.8.1;name=onig_sys-69.8.1 \
+    crate://crates.io/ordered-multimap/0.4.3;name=ordered-multimap-0.4.3 \
+    crate://crates.io/os_display/0.1.3;name=os_display-0.1.3 \
+    crate://crates.io/ouroboros/0.15.6;name=ouroboros-0.15.6 \
+    crate://crates.io/ouroboros_macro/0.15.6;name=ouroboros_macro-0.15.6 \
+    crate://crates.io/output_vt100/0.1.3;name=output_vt100-0.1.3 \
+    crate://crates.io/overload/0.1.1;name=overload-0.1.1 \
+    crate://crates.io/parking_lot/0.12.1;name=parking_lot-0.12.1 \
+    crate://crates.io/parking_lot_core/0.9.4;name=parking_lot_core-0.9.4 \
+    crate://crates.io/peeking_take_while/0.1.2;name=peeking_take_while-0.1.2 \
+    crate://crates.io/phf/0.11.1;name=phf-0.11.1 \
+    crate://crates.io/phf_codegen/0.11.1;name=phf_codegen-0.11.1 \
+    crate://crates.io/phf_generator/0.11.1;name=phf_generator-0.11.1 \
+    crate://crates.io/phf_shared/0.11.1;name=phf_shared-0.11.1 \
+    crate://crates.io/pin-project-lite/0.2.9;name=pin-project-lite-0.2.9 \
+    crate://crates.io/pin-utils/0.1.0;name=pin-utils-0.1.0 \
+    crate://crates.io/pkg-config/0.3.26;name=pkg-config-0.3.26 \
+    crate://crates.io/platform-info/1.0.2;name=platform-info-1.0.2 \
+    crate://crates.io/portable-atomic/0.3.15;name=portable-atomic-0.3.15 \
+    crate://crates.io/ppv-lite86/0.2.17;name=ppv-lite86-0.2.17 \
+    crate://crates.io/pretty_assertions/1.3.0;name=pretty_assertions-1.3.0 \
+    crate://crates.io/proc-macro-error/1.0.4;name=proc-macro-error-1.0.4 \
+    crate://crates.io/proc-macro-error-attr/1.0.4;name=proc-macro-error-attr-1.0.4 \
+    crate://crates.io/proc-macro2/1.0.47;name=proc-macro2-1.0.47 \
+    crate://crates.io/procfs/0.15.1;name=procfs-0.15.1 \
+    crate://crates.io/quick-error/2.0.1;name=quick-error-2.0.1 \
+    crate://crates.io/quickcheck/1.0.3;name=quickcheck-1.0.3 \
+    crate://crates.io/quote/1.0.21;name=quote-1.0.21 \
+    crate://crates.io/rand/0.8.5;name=rand-0.8.5 \
+    crate://crates.io/rand_chacha/0.3.1;name=rand_chacha-0.3.1 \
+    crate://crates.io/rand_core/0.6.4;name=rand_core-0.6.4 \
+    crate://crates.io/rand_pcg/0.3.1;name=rand_pcg-0.3.1 \
+    crate://crates.io/rayon/1.7.0;name=rayon-1.7.0 \
+    crate://crates.io/rayon-core/1.11.0;name=rayon-core-1.11.0 \
+    crate://crates.io/redox_syscall/0.2.16;name=redox_syscall-0.2.16 \
+    crate://crates.io/reference-counted-singleton/0.1.2;name=reference-counted-singleton-0.1.2 \
+    crate://crates.io/regex/1.7.3;name=regex-1.7.3 \
+    crate://crates.io/regex-automata/0.1.10;name=regex-automata-0.1.10 \
+    crate://crates.io/regex-syntax/0.6.29;name=regex-syntax-0.6.29 \
+    crate://crates.io/rlimit/0.9.1;name=rlimit-0.9.1 \
+    crate://crates.io/roff/0.2.1;name=roff-0.2.1 \
+    crate://crates.io/rstest/0.17.0;name=rstest-0.17.0 \
+    crate://crates.io/rstest_macros/0.17.0;name=rstest_macros-0.17.0 \
+    crate://crates.io/rust-ini/0.18.0;name=rust-ini-0.18.0 \
+    crate://crates.io/rustc-hash/1.1.0;name=rustc-hash-1.1.0 \
+    crate://crates.io/rustc_version/0.4.0;name=rustc_version-0.4.0 \
+    crate://crates.io/rustix/0.36.8;name=rustix-0.36.8 \
+    crate://crates.io/rustix/0.37.3;name=rustix-0.37.3 \
+    crate://crates.io/same-file/1.0.6;name=same-file-1.0.6 \
+    crate://crates.io/scopeguard/1.1.0;name=scopeguard-1.1.0 \
+    crate://crates.io/scratch/1.0.2;name=scratch-1.0.2 \
+    crate://crates.io/selinux/0.4.0;name=selinux-0.4.0 \
+    crate://crates.io/selinux-sys/0.6.2;name=selinux-sys-0.6.2 \
+    crate://crates.io/semver/1.0.14;name=semver-1.0.14 \
+    crate://crates.io/serde/1.0.147;name=serde-1.0.147 \
+    crate://crates.io/sha1/0.10.5;name=sha1-0.10.5 \
+    crate://crates.io/sha2/0.10.6;name=sha2-0.10.6 \
+    crate://crates.io/sha3/0.10.6;name=sha3-0.10.6 \
+    crate://crates.io/shlex/1.1.0;name=shlex-1.1.0 \
+    crate://crates.io/signal-hook/0.3.15;name=signal-hook-0.3.15 \
+    crate://crates.io/signal-hook-mio/0.2.3;name=signal-hook-mio-0.2.3 \
+    crate://crates.io/signal-hook-registry/1.4.0;name=signal-hook-registry-1.4.0 \
+    crate://crates.io/siphasher/0.3.10;name=siphasher-0.3.10 \
+    crate://crates.io/slab/0.4.7;name=slab-0.4.7 \
+    crate://crates.io/sm3/0.4.1;name=sm3-0.4.1 \
+    crate://crates.io/smallvec/1.10.0;name=smallvec-1.10.0 \
+    crate://crates.io/smawk/0.3.1;name=smawk-0.3.1 \
+    crate://crates.io/socket2/0.4.7;name=socket2-0.4.7 \
+    crate://crates.io/static_assertions/1.1.0;name=static_assertions-1.1.0 \
+    crate://crates.io/strsim/0.10.0;name=strsim-0.10.0 \
+    crate://crates.io/subtle/2.4.1;name=subtle-2.4.1 \
+    crate://crates.io/syn/1.0.103;name=syn-1.0.103 \
+    crate://crates.io/tempfile/3.4.0;name=tempfile-3.4.0 \
+    crate://crates.io/term_grid/0.1.7;name=term_grid-0.1.7 \
+    crate://crates.io/termcolor/1.1.3;name=termcolor-1.1.3 \
+    crate://crates.io/terminal_size/0.2.5;name=terminal_size-0.2.5 \
+    crate://crates.io/textwrap/0.16.0;name=textwrap-0.16.0 \
+    crate://crates.io/thiserror/1.0.37;name=thiserror-1.0.37 \
+    crate://crates.io/thiserror-impl/1.0.37;name=thiserror-impl-1.0.37 \
+    crate://crates.io/time/0.3.20;name=time-0.3.20 \
+    crate://crates.io/time-core/0.1.0;name=time-core-0.1.0 \
+    crate://crates.io/time-macros/0.2.8;name=time-macros-0.2.8 \
+    crate://crates.io/typenum/1.15.0;name=typenum-1.15.0 \
+    crate://crates.io/unicode-ident/1.0.5;name=unicode-ident-1.0.5 \
+    crate://crates.io/unicode-linebreak/0.1.4;name=unicode-linebreak-0.1.4 \
+    crate://crates.io/unicode-segmentation/1.10.1;name=unicode-segmentation-1.10.1 \
+    crate://crates.io/unicode-width/0.1.10;name=unicode-width-0.1.10 \
+    crate://crates.io/unicode-xid/0.2.4;name=unicode-xid-0.2.4 \
+    crate://crates.io/unindent/0.2.1;name=unindent-0.2.1 \
+    crate://crates.io/users/0.11.0;name=users-0.11.0 \
+    crate://crates.io/utf-8/0.7.6;name=utf-8-0.7.6 \
+    crate://crates.io/utf8parse/0.2.1;name=utf8parse-0.2.1 \
+    crate://crates.io/uuid/1.2.2;name=uuid-1.2.2 \
+    crate://crates.io/version_check/0.9.4;name=version_check-0.9.4 \
+    crate://crates.io/walkdir/2.3.2;name=walkdir-2.3.2 \
+    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1;name=wasi-0.11.0+wasi-snapshot-preview1 \
+    crate://crates.io/wasm-bindgen/0.2.83;name=wasm-bindgen-0.2.83 \
+    crate://crates.io/wasm-bindgen-backend/0.2.83;name=wasm-bindgen-backend-0.2.83 \
+    crate://crates.io/wasm-bindgen-macro/0.2.83;name=wasm-bindgen-macro-0.2.83 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.83;name=wasm-bindgen-macro-support-0.2.83 \
+    crate://crates.io/wasm-bindgen-shared/0.2.83;name=wasm-bindgen-shared-0.2.83 \
+    crate://crates.io/which/4.3.0;name=which-4.3.0 \
+    crate://crates.io/wild/2.1.0;name=wild-2.1.0 \
+    crate://crates.io/winapi/0.3.9;name=winapi-0.3.9 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0;name=winapi-i686-pc-windows-gnu-0.4.0 \
+    crate://crates.io/winapi-util/0.1.5;name=winapi-util-0.1.5 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0;name=winapi-x86_64-pc-windows-gnu-0.4.0 \
+    crate://crates.io/windows-sys/0.42.0;name=windows-sys-0.42.0 \
+    crate://crates.io/windows-sys/0.45.0;name=windows-sys-0.45.0 \
+    crate://crates.io/windows-targets/0.42.1;name=windows-targets-0.42.1 \
+    crate://crates.io/windows_aarch64_gnullvm/0.42.1;name=windows_aarch64_gnullvm-0.42.1 \
+    crate://crates.io/windows_aarch64_msvc/0.42.1;name=windows_aarch64_msvc-0.42.1 \
+    crate://crates.io/windows_i686_gnu/0.42.1;name=windows_i686_gnu-0.42.1 \
+    crate://crates.io/windows_i686_msvc/0.42.1;name=windows_i686_msvc-0.42.1 \
+    crate://crates.io/windows_x86_64_gnu/0.42.1;name=windows_x86_64_gnu-0.42.1 \
+    crate://crates.io/windows_x86_64_gnullvm/0.42.1;name=windows_x86_64_gnullvm-0.42.1 \
+    crate://crates.io/windows_x86_64_msvc/0.42.1;name=windows_x86_64_msvc-0.42.1 \
+    crate://crates.io/xattr/1.0.0;name=xattr-1.0.0 \
+    crate://crates.io/yansi/0.5.1;name=yansi-0.5.1 \
+    crate://crates.io/z85/3.0.5;name=z85-3.0.5 \
+    crate://crates.io/zip/0.6.4;name=zip-0.6.4 \
 "
+
+SRC_URI[Inflector-0.11.4.sha256sum] = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
+SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+SRC_URI[ahash-0.7.6.sha256sum] = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
+SRC_URI[aho-corasick-0.7.19.sha256sum] = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
+SRC_URI[aliasable-0.1.3.sha256sum] = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
+SRC_URI[android_system_properties-0.1.5.sha256sum] = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+SRC_URI[anstream-0.2.6.sha256sum] = "342258dd14006105c2b75ab1bd7543a03bdf0cfc94383303ac212a04939dff6f"
+SRC_URI[anstyle-0.3.5.sha256sum] = "23ea9e81bd02e310c216d080f6223c179012256e5151c41db88d12c88a1684d2"
+SRC_URI[anstyle-parse-0.1.1.sha256sum] = "a7d1bb534e9efed14f3e5f44e7dd1a4f709384023a4165199a4241e18dff0116"
+SRC_URI[anstyle-wincon-0.2.0.sha256sum] = "c3127af6145b149f3287bb9a0d10ad9c5692dba8c53ad48285e5bec4063834fa"
+SRC_URI[arrayref-0.3.6.sha256sum] = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
+SRC_URI[arrayvec-0.7.2.sha256sum] = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[bigdecimal-0.3.0.sha256sum] = "6aaf33151a6429fe9211d1b276eafdf70cdff28b071e76c0b0e1503221ea3744"
+SRC_URI[binary-heap-plus-0.5.0.sha256sum] = "e4551d8382e911ecc0d0f0ffb602777988669be09447d536ff4388d1def11296"
+SRC_URI[bindgen-0.63.0.sha256sum] = "36d860121800b2a9a94f9b5604b332d5cffb234ce17609ea479d723dbc9d3885"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[blake2b_simd-1.0.1.sha256sum] = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc"
+SRC_URI[blake3-1.3.3.sha256sum] = "42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccef"
+SRC_URI[block-buffer-0.10.3.sha256sum] = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
+SRC_URI[bstr-1.4.0.sha256sum] = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09"
+SRC_URI[bumpalo-3.11.1.sha256sum] = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
+SRC_URI[bytecount-0.6.3.sha256sum] = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c"
+SRC_URI[byteorder-1.4.3.sha256sum] = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+SRC_URI[cc-1.0.77.sha256sum] = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"
+SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[chrono-0.4.24.sha256sum] = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
+SRC_URI[clang-sys-1.4.0.sha256sum] = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3"
+SRC_URI[clap-4.2.0.sha256sum] = "6efb5f0a41b5ef5b50c5da28c07609c20091df0c1fc33d418fa2a7e693c2b624"
+SRC_URI[clap_builder-4.2.0.sha256sum] = "671fcaa5debda4b9a84aa7fde49c907c8986c0e6ab927e04217c9cb74e7c8bc9"
+SRC_URI[clap_complete-4.2.0.sha256sum] = "01c22dcfb410883764b29953103d9ef7bb8fe21b3fa1158bc99986c2067294bd"
+SRC_URI[clap_lex-0.4.1.sha256sum] = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1"
+SRC_URI[clap_mangen-0.2.9.sha256sum] = "bb0f09a0ca8f0dd8ac92c546b426f466ef19828185c6d504c80c48c9c2768ed9"
+SRC_URI[codespan-reporting-0.11.1.sha256sum] = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
+SRC_URI[compare-0.1.0.sha256sum] = "120133d4db2ec47efe2e26502ee984747630c67f51974fca0b6c1340cf2368d3"
+SRC_URI[concolor-override-1.0.0.sha256sum] = "a855d4a1978dc52fb0536a04d384c2c0c1aa273597f08b77c8c4d3b2eec6037f"
+SRC_URI[concolor-query-0.3.3.sha256sum] = "88d11d52c3d7ca2e6d0040212be9e4dbbcd78b6447f535b6b561f449427944cf"
+SRC_URI[console-0.15.5.sha256sum] = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60"
+SRC_URI[constant_time_eq-0.2.4.sha256sum] = "f3ad85c1f65dc7b37604eb0e89748faf0b9653065f2a8ef69f96a687ec1e9279"
+SRC_URI[conv-0.3.3.sha256sum] = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
+SRC_URI[core-foundation-sys-0.8.3.sha256sum] = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
+SRC_URI[coz-0.1.3.sha256sum] = "cef55b3fe2f5477d59e12bc792e8b3c95a25bd099eadcfae006ecea136de76e2"
+SRC_URI[cpp-0.5.7.sha256sum] = "dec5e86d4f6547f0218ad923d9508244a71ef83b763196e6698b4f70f3595185"
+SRC_URI[cpp_build-0.5.7.sha256sum] = "16f4d303b8ec35fb3afd7e963e2c898117f1e49930becb703e4a7ac528ad2dd0"
+SRC_URI[cpp_common-0.5.7.sha256sum] = "76071bb9c8c4dd2b5eb209907deab7b031323cf1be3dfdc6ec5d37f4f187d8a1"
+SRC_URI[cpp_macros-0.5.7.sha256sum] = "7fdaa01904c12a8989dbfa110b41ef27efc432ac9934f691b9732f01cb64dc01"
+SRC_URI[cpufeatures-0.2.5.sha256sum] = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
+SRC_URI[crc32fast-1.3.2.sha256sum] = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+SRC_URI[crossbeam-channel-0.5.6.sha256sum] = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
+SRC_URI[crossbeam-deque-0.8.2.sha256sum] = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+SRC_URI[crossbeam-epoch-0.9.12.sha256sum] = "96bf8df95e795db1a4aca2957ad884a2df35413b24bbeb3114422f3cc21498e8"
+SRC_URI[crossbeam-utils-0.8.13.sha256sum] = "422f23e724af1240ec469ea1e834d87a4b59ce2efe2c6a96256b0c47e2fd86aa"
+SRC_URI[crossterm-0.26.1.sha256sum] = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13"
+SRC_URI[crossterm_winapi-0.9.0.sha256sum] = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c"
+SRC_URI[crunchy-0.2.2.sha256sum] = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+SRC_URI[ctor-0.1.26.sha256sum] = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
+SRC_URI[ctrlc-3.2.4.sha256sum] = "1631ca6e3c59112501a9d87fd86f21591ff77acd31331e8a73f8d80a65bbdd71"
+SRC_URI[custom_derive-0.1.7.sha256sum] = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
+SRC_URI[cxx-1.0.82.sha256sum] = "d4a41a86530d0fe7f5d9ea779916b7cadd2d4f9add748b99c2c029cbbdfaf453"
+SRC_URI[cxx-build-1.0.82.sha256sum] = "06416d667ff3e3ad2df1cd8cd8afae5da26cf9cec4d0825040f88b5ca659a2f0"
+SRC_URI[cxxbridge-flags-1.0.82.sha256sum] = "820a9a2af1669deeef27cb271f476ffd196a2c4b6731336011e0ba63e2c7cf71"
+SRC_URI[cxxbridge-macro-1.0.82.sha256sum] = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470"
+SRC_URI[data-encoding-2.3.2.sha256sum] = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57"
+SRC_URI[data-encoding-macro-0.1.12.sha256sum] = "86927b7cd2fe88fa698b87404b287ab98d1a0063a34071d92e575b72d3029aca"
+SRC_URI[data-encoding-macro-internal-0.1.10.sha256sum] = "a5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038db"
+SRC_URI[diff-0.1.13.sha256sum] = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
+SRC_URI[digest-0.10.6.sha256sum] = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
+SRC_URI[dlv-list-0.3.0.sha256sum] = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257"
+SRC_URI[dns-lookup-1.0.8.sha256sum] = "53ecafc952c4528d9b51a458d1a8904b81783feff9fde08ab6ed2545ff396872"
+SRC_URI[dunce-1.0.3.sha256sum] = "0bd4b30a6560bbd9b4620f4de34c3f14f60848e58a9b7216801afcb4c7b31c3c"
+SRC_URI[either-1.8.0.sha256sum] = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
+SRC_URI[encode_unicode-0.3.6.sha256sum] = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+SRC_URI[env_logger-0.8.4.sha256sum] = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
+SRC_URI[errno-0.2.8.sha256sum] = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+SRC_URI[errno-0.3.0.sha256sum] = "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[exacl-0.10.0.sha256sum] = "1cfeb22a59deb24c3262c43ffcafd1eb807180f371f9fcc99098d181b5d639be"
+SRC_URI[fastrand-1.8.0.sha256sum] = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
+SRC_URI[file_diff-1.0.0.sha256sum] = "31a7a908b8f32538a2143e59a6e4e2508988832d5d4d6f7c156b3cbc762643a5"
+SRC_URI[filetime-0.2.18.sha256sum] = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3"
+SRC_URI[flate2-1.0.24.sha256sum] = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
+SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+SRC_URI[fs_extra-1.3.0.sha256sum] = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
+SRC_URI[fsevent-sys-4.1.0.sha256sum] = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2"
+SRC_URI[fts-sys-0.2.4.sha256sum] = "9a66c0a21e344f20c87b4ca12643cf4f40a7018f132c98d344e989b959f49dd1"
+SRC_URI[fundu-0.5.0.sha256sum] = "bd020eeb034c9fc682e8fe6b9a28e1c0eda92eeb347c38776c09a0b227cdf9e5"
+SRC_URI[futures-0.3.25.sha256sum] = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0"
+SRC_URI[futures-channel-0.3.25.sha256sum] = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed"
+SRC_URI[futures-core-0.3.25.sha256sum] = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac"
+SRC_URI[futures-executor-0.3.25.sha256sum] = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2"
+SRC_URI[futures-io-0.3.25.sha256sum] = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb"
+SRC_URI[futures-macro-0.3.25.sha256sum] = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d"
+SRC_URI[futures-sink-0.3.25.sha256sum] = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9"
+SRC_URI[futures-task-0.3.25.sha256sum] = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea"
+SRC_URI[futures-timer-3.0.2.sha256sum] = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
+SRC_URI[futures-util-0.3.25.sha256sum] = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6"
+SRC_URI[gcd-2.3.0.sha256sum] = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a"
+SRC_URI[generic-array-0.14.6.sha256sum] = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+SRC_URI[getrandom-0.2.8.sha256sum] = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+SRC_URI[half-2.2.1.sha256sum] = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0"
+SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+SRC_URI[hermit-abi-0.3.1.sha256sum] = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+SRC_URI[hex-literal-0.4.0.sha256sum] = "4bcb5b3e439c92a7191df2f9bbe733de8de55c3f86368cdb1c63f8be7e9e328e"
+SRC_URI[hostname-0.3.1.sha256sum] = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+SRC_URI[iana-time-zone-0.1.53.sha256sum] = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765"
+SRC_URI[iana-time-zone-haiku-0.1.1.sha256sum] = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca"
+SRC_URI[indicatif-0.17.3.sha256sum] = "cef509aa9bc73864d6756f0d34d35504af3cf0844373afe9b8669a5b8005a729"
+SRC_URI[inotify-0.9.6.sha256sum] = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
+SRC_URI[inotify-sys-0.1.5.sha256sum] = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[io-lifetimes-1.0.5.sha256sum] = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3"
+SRC_URI[is-terminal-0.4.6.sha256sum] = "256017f749ab3117e93acb91063009e1f1bb56d03965b14c2c8df4eb02c524d8"
+SRC_URI[itertools-0.10.5.sha256sum] = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+SRC_URI[itoa-1.0.4.sha256sum] = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
+SRC_URI[js-sys-0.3.60.sha256sum] = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
+SRC_URI[keccak-0.1.3.sha256sum] = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768"
+SRC_URI[kqueue-1.0.7.sha256sum] = "2c8fc60ba15bf51257aa9807a48a61013db043fcf3a78cb0d916e8e396dcad98"
+SRC_URI[kqueue-sys-1.0.3.sha256sum] = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[lazycell-1.3.0.sha256sum] = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+SRC_URI[libc-0.2.140.sha256sum] = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+SRC_URI[libloading-0.7.4.sha256sum] = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+SRC_URI[link-cplusplus-1.0.7.sha256sum] = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369"
+SRC_URI[linux-raw-sys-0.1.4.sha256sum] = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
+SRC_URI[linux-raw-sys-0.3.0.sha256sum] = "cd550e73688e6d578f0ac2119e32b797a327631a42f9433e59d02e139c8df60d"
+SRC_URI[lock_api-0.4.9.sha256sum] = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+SRC_URI[log-0.4.17.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+SRC_URI[lscolors-0.13.0.sha256sum] = "c2dedc85d67baf5327114fad78ab9418f8893b1121c17d5538dd11005ad1ddf2"
+SRC_URI[match_cfg-0.1.0.sha256sum] = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+SRC_URI[md-5-0.10.5.sha256sum] = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[memmap2-0.5.8.sha256sum] = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc"
+SRC_URI[memoffset-0.7.1.sha256sum] = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[miniz_oxide-0.5.4.sha256sum] = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"
+SRC_URI[mio-0.8.5.sha256sum] = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
+SRC_URI[nix-0.26.2.sha256sum] = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[notify-5.1.0.sha256sum] = "58ea850aa68a06e48fdb069c0ec44d0d64c8dbffa49bf3b6f7f0a901fdea1ba9"
+SRC_URI[nu-ansi-term-0.46.0.sha256sum] = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+SRC_URI[num-bigint-0.4.3.sha256sum] = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+SRC_URI[num-integer-0.1.45.sha256sum] = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+SRC_URI[num-traits-0.2.15.sha256sum] = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+SRC_URI[num_cpus-1.14.0.sha256sum] = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5"
+SRC_URI[num_threads-0.1.6.sha256sum] = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+SRC_URI[number_prefix-0.4.0.sha256sum] = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+SRC_URI[once_cell-1.17.1.sha256sum] = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+SRC_URI[onig-6.4.0.sha256sum] = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f"
+SRC_URI[onig_sys-69.8.1.sha256sum] = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7"
+SRC_URI[ordered-multimap-0.4.3.sha256sum] = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a"
+SRC_URI[os_display-0.1.3.sha256sum] = "7a6229bad892b46b0dcfaaeb18ad0d2e56400f5aaea05b768bde96e73676cf75"
+SRC_URI[ouroboros-0.15.6.sha256sum] = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db"
+SRC_URI[ouroboros_macro-0.15.6.sha256sum] = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7"
+SRC_URI[output_vt100-0.1.3.sha256sum] = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66"
+SRC_URI[overload-0.1.1.sha256sum] = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+SRC_URI[parking_lot_core-0.9.4.sha256sum] = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"
+SRC_URI[peeking_take_while-0.1.2.sha256sum] = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+SRC_URI[phf-0.11.1.sha256sum] = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c"
+SRC_URI[phf_codegen-0.11.1.sha256sum] = "a56ac890c5e3ca598bbdeaa99964edb5b0258a583a9eb6ef4e89fc85d9224770"
+SRC_URI[phf_generator-0.11.1.sha256sum] = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf"
+SRC_URI[phf_shared-0.11.1.sha256sum] = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676"
+SRC_URI[pin-project-lite-0.2.9.sha256sum] = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[pkg-config-0.3.26.sha256sum] = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+SRC_URI[platform-info-1.0.2.sha256sum] = "4e7c23cfae725ae06d9e43010153fa77bdfa8c827bf08fe4beeb2a3514e6be12"
+SRC_URI[portable-atomic-0.3.15.sha256sum] = "15eb2c6e362923af47e13c23ca5afb859e83d54452c55b0b9ac763b8f7c1ac16"
+SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+SRC_URI[pretty_assertions-1.3.0.sha256sum] = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755"
+SRC_URI[proc-macro-error-1.0.4.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+SRC_URI[proc-macro-error-attr-1.0.4.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+SRC_URI[proc-macro2-1.0.47.sha256sum] = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
+SRC_URI[procfs-0.15.1.sha256sum] = "943ca7f9f29bab5844ecd8fdb3992c5969b6622bb9609b9502fef9b4310e3f1f"
+SRC_URI[quick-error-2.0.1.sha256sum] = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
+SRC_URI[quickcheck-1.0.3.sha256sum] = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6"
+SRC_URI[quote-1.0.21.sha256sum] = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[rand_pcg-0.3.1.sha256sum] = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e"
+SRC_URI[rayon-1.7.0.sha256sum] = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+SRC_URI[rayon-core-1.11.0.sha256sum] = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+SRC_URI[redox_syscall-0.2.16.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+SRC_URI[reference-counted-singleton-0.1.2.sha256sum] = "f1bfbf25d7eb88ddcbb1ec3d755d0634da8f7657b2cb8b74089121409ab8228f"
+SRC_URI[regex-1.7.3.sha256sum] = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d"
+SRC_URI[regex-automata-0.1.10.sha256sum] = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+SRC_URI[regex-syntax-0.6.29.sha256sum] = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+SRC_URI[rlimit-0.9.1.sha256sum] = "f8a29d87a652dc4d43c586328706bb5cdff211f3f39a530f240b53f7221dab8e"
+SRC_URI[roff-0.2.1.sha256sum] = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316"
+SRC_URI[rstest-0.17.0.sha256sum] = "de1bb486a691878cd320c2f0d319ba91eeaa2e894066d8b5f8f117c000e9d962"
+SRC_URI[rstest_macros-0.17.0.sha256sum] = "290ca1a1c8ca7edb7c3283bd44dc35dd54fdec6253a3912e201ba1072018fca8"
+SRC_URI[rust-ini-0.18.0.sha256sum] = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df"
+SRC_URI[rustc-hash-1.1.0.sha256sum] = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+SRC_URI[rustc_version-0.4.0.sha256sum] = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+SRC_URI[rustix-0.36.8.sha256sum] = "f43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644"
+SRC_URI[rustix-0.37.3.sha256sum] = "62b24138615de35e32031d041a09032ef3487a616d901ca4db224e7d557efae2"
+SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[scratch-1.0.2.sha256sum] = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898"
+SRC_URI[selinux-0.4.0.sha256sum] = "a00576725d21b588213fbd4af84cd7e4cc4304e8e9bd6c0f5a1498a3e2ca6a51"
+SRC_URI[selinux-sys-0.6.2.sha256sum] = "806d381649bb85347189d2350728817418138d11d738e2482cb644ec7f3c755d"
+SRC_URI[semver-1.0.14.sha256sum] = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4"
+SRC_URI[serde-1.0.147.sha256sum] = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
+SRC_URI[sha1-0.10.5.sha256sum] = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
+SRC_URI[sha2-0.10.6.sha256sum] = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
+SRC_URI[sha3-0.10.6.sha256sum] = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9"
+SRC_URI[shlex-1.1.0.sha256sum] = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+SRC_URI[signal-hook-0.3.15.sha256sum] = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9"
+SRC_URI[signal-hook-mio-0.2.3.sha256sum] = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
+SRC_URI[signal-hook-registry-1.4.0.sha256sum] = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
+SRC_URI[siphasher-0.3.10.sha256sum] = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
+SRC_URI[slab-0.4.7.sha256sum] = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
+SRC_URI[sm3-0.4.1.sha256sum] = "f943a7c5e3089f2bd046221d1e9f4fa59396bf0fe966360983649683086215da"
+SRC_URI[smallvec-1.10.0.sha256sum] = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+SRC_URI[smawk-0.3.1.sha256sum] = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043"
+SRC_URI[socket2-0.4.7.sha256sum] = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd"
+SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[subtle-2.4.1.sha256sum] = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
+SRC_URI[syn-1.0.103.sha256sum] = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
+SRC_URI[tempfile-3.4.0.sha256sum] = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95"
+SRC_URI[term_grid-0.1.7.sha256sum] = "230d3e804faaed5a39b08319efb797783df2fd9671b39b7596490cb486d702cf"
+SRC_URI[termcolor-1.1.3.sha256sum] = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+SRC_URI[terminal_size-0.2.5.sha256sum] = "4c9afddd2cec1c0909f06b00ef33f94ab2cc0578c4a610aa208ddfec8aa2b43a"
+SRC_URI[textwrap-0.16.0.sha256sum] = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+SRC_URI[thiserror-1.0.37.sha256sum] = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
+SRC_URI[thiserror-impl-1.0.37.sha256sum] = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
+SRC_URI[time-0.3.20.sha256sum] = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
+SRC_URI[time-core-0.1.0.sha256sum] = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
+SRC_URI[time-macros-0.2.8.sha256sum] = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
+SRC_URI[typenum-1.15.0.sha256sum] = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
+SRC_URI[unicode-ident-1.0.5.sha256sum] = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
+SRC_URI[unicode-linebreak-0.1.4.sha256sum] = "c5faade31a542b8b35855fff6e8def199853b2da8da256da52f52f1316ee3137"
+SRC_URI[unicode-segmentation-1.10.1.sha256sum] = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+SRC_URI[unicode-width-0.1.10.sha256sum] = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+SRC_URI[unicode-xid-0.2.4.sha256sum] = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+SRC_URI[unindent-0.2.1.sha256sum] = "5aa30f5ea51ff7edfc797c6d3f9ec8cbd8cfedef5371766b7181d33977f4814f"
+SRC_URI[users-0.11.0.sha256sum] = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032"
+SRC_URI[utf-8-0.7.6.sha256sum] = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+SRC_URI[uuid-1.2.2.sha256sum] = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[walkdir-2.3.2.sha256sum] = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[wasm-bindgen-0.2.83.sha256sum] = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
+SRC_URI[wasm-bindgen-backend-0.2.83.sha256sum] = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
+SRC_URI[wasm-bindgen-macro-0.2.83.sha256sum] = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
+SRC_URI[wasm-bindgen-macro-support-0.2.83.sha256sum] = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+SRC_URI[wasm-bindgen-shared-0.2.83.sha256sum] = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+SRC_URI[which-4.3.0.sha256sum] = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b"
+SRC_URI[wild-2.1.0.sha256sum] = "05b116685a6be0c52f5a103334cbff26db643826c7b3735fc0a3ba9871310a74"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.42.0.sha256sum] = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+SRC_URI[windows-sys-0.45.0.sha256sum] = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+SRC_URI[windows-targets-0.42.1.sha256sum] = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
+SRC_URI[windows_aarch64_gnullvm-0.42.1.sha256sum] = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
+SRC_URI[windows_aarch64_msvc-0.42.1.sha256sum] = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
+SRC_URI[windows_i686_gnu-0.42.1.sha256sum] = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
+SRC_URI[windows_i686_msvc-0.42.1.sha256sum] = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
+SRC_URI[windows_x86_64_gnu-0.42.1.sha256sum] = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
+SRC_URI[windows_x86_64_gnullvm-0.42.1.sha256sum] = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
+SRC_URI[windows_x86_64_msvc-0.42.1.sha256sum] = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
+SRC_URI[xattr-1.0.0.sha256sum] = "ea263437ca03c1522846a4ddafbca2542d0ad5ed9b784909d4b27b76f62bc34a"
+SRC_URI[yansi-0.5.1.sha256sum] = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+SRC_URI[z85-3.0.5.sha256sum] = "2a599daf1b507819c1121f0bf87fa37eb19daac6aff3aefefd4e6e2e0f2020fc"
+SRC_URI[zip-0.6.4.sha256sum] = "0445d0fbc924bb93539b4316c11afb121ea39296f99a3c4c9edad09e3658cdef"
diff --git a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils.inc b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils.inc
index 68cfa81..973b722 100644
--- a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils.inc
+++ b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils.inc
@@ -1,4 +1,3 @@
-# This file contains content which was not automatically generated using cargo-bitbake on the cargo.toml file of uutils-coreutils
 # Copyright (c) 2022, Snap Inc.
 # Released under the MIT license (see COPYING.MIT for the terms)
 
diff --git a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.17.bb b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.18.bb
similarity index 62%
rename from meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.17.bb
rename to meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.18.bb
index 4d3c2f7..a2e541c 100644
--- a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.17.bb
+++ b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.18.bb
@@ -6,7 +6,12 @@
 inherit cargo cargo-update-recipe-crates
 
 SRC_URI += "git://github.com/uutils/coreutils.git;protocol=https;nobranch=1"
-SRCREV = "7e127005afbd6c3632d74ad8082340ccb8329d67"
+
+# musl not supported because the libc crate does not support functions like "endutxent" at the moment,
+# so src/uucore/src/lib/features.rs disables utmpx when targetting musl.
+COMPATIBLE_HOST:libc-musl = "null"
+
+SRCREV = "eb11c4006f3286efee5226e546f119a20998266b"
 S = "${WORKDIR}/git"
 
 require ${BPN}-crates.inc
diff --git a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
index 08f2e26..8617ba5 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
@@ -7,8 +7,8 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
 
-PV = "20230125.1"
-SRCREV = "c8a2f92586fe9b4e1aff049108f5db8064924d8e"
+PV = "20230125.2"
+SRCREV = "b971ac5250ea8de900eae9f95e06548d14cd95fe"
 BRANCH = "lts_2023_01_25"
 SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH};protocol=https \
            file://0001-absl-always-use-asm-sgidefs.h.patch             \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.0.20230319.0.bb b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.0.20230402.0.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.0.20230319.0.bb
rename to meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.0.20230402.0.bb
index feee721..b7cf459 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.0.20230319.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.0.20230402.0.bb
@@ -14,7 +14,7 @@
 
 inherit autotools-brokensep pkgconfig manpages
 
-SRCREV = "6e720ab5591d24cd401b720a63110bc224780f6f"
+SRCREV = "1231ebe5b4ac1cc095b4480a0bb2b016c135d6fb"
 SRC_URI = "git://github.com/universal-ctags/ctags;branch=master;protocol=https"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/jemalloc/files/run-ptest b/meta-openembedded/meta-oe/recipes-devtools/jemalloc/files/run-ptest
index b351f94..5c826a1 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/jemalloc/files/run-ptest
+++ b/meta-openembedded/meta-oe/recipes-devtools/jemalloc/files/run-ptest
@@ -1,9 +1,37 @@
 #!/bin/sh
 
+export MALLOC_CONF_ALL=${MALLOC_CONF}
+# Concatenate the individual test's MALLOC_CONF and MALLOC_CONF_ALL.
+export_malloc_conf() {
+  if [ "x${MALLOC_CONF}" != "x" -a "x${MALLOC_CONF_ALL}" != "x" ] ; then
+    export MALLOC_CONF="${MALLOC_CONF},${MALLOC_CONF_ALL}"
+  else
+    export MALLOC_CONF="${MALLOC_CONF}${MALLOC_CONF_ALL}"
+  fi
+}
+
+
+
 saved_dir=$PWD
 for dir in tests/* ; do
 	cd $dir
 	for atest in * ; do
+		if [[ "${atest##*.}" == "sh" ]]; then
+			continue
+		fi
+		if [ -e "${atest}.sh" ] ; then
+		  	# Source the shell script corresponding to the test in a subshell and
+		  	# execute the test.  This allows the shell script to set MALLOC_CONF, which
+		  	# is then used to set MALLOC_CONF (thus allowing the
+		  	# per test shell script to ignore the  detail).
+		  	enable_fill=1 \
+		  	enable_prof=1 \
+		  	. $(pwd)/${atest}.sh && \
+		  	export_malloc_conf
+		else
+		  	export MALLOC_CONF= && \
+		  	export_malloc_conf
+		fi
 		if [ \( -x $atest \) -a \( -f $atest \) ] ; then
 			rm -rf tests.log
 			./$atest > tests.log 2>&1
@@ -18,4 +46,3 @@
 	done
 	cd $saved_dir
 done
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/jemalloc/jemalloc_5.3.0.bb b/meta-openembedded/meta-oe/recipes-devtools/jemalloc/jemalloc_5.3.0.bb
index 950b64e..9ad8326 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/jemalloc/jemalloc_5.3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/jemalloc/jemalloc_5.3.0.bb
@@ -42,10 +42,13 @@
 
 do_install_ptest() {
 	install -d ${D}${PTEST_PATH}/tests
-	subdirs="test/unit test/integration test/stress "
+	subdirs="unit integration stress "
 	for tooltest in ${subdirs}
 	do
-		cp -r ${B}/${tooltest} ${D}${PTEST_PATH}/tests
+		cp -r ${B}/test/${tooltest} ${D}${PTEST_PATH}/tests
+        if find ${S}/test/${tooltest}/ -name '*.sh' -print -quit | grep -q .; then
+		    cp ${S}/test/${tooltest}/*.sh ${D}${PTEST_PATH}/tests/${tooltest}
+        fi
 	done
 	find ${D}${PTEST_PATH}/tests \( -name "*.d" -o -name "*.o" \) -exec rm -f {} \;
 }
diff --git a/meta-openembedded/meta-oe/recipes-devtools/jwt-cpp/jwt-cpp_0.6.0.bb b/meta-openembedded/meta-oe/recipes-devtools/jwt-cpp/jwt-cpp_0.6.0.bb
index 8929115..2e06b70 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/jwt-cpp/jwt-cpp_0.6.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/jwt-cpp/jwt-cpp_0.6.0.bb
@@ -16,3 +16,5 @@
 inherit cmake
 
 EXTRA_OECMAKE += "-DJWT_BUILD_EXAMPLES=OFF -DJWT_CMAKE_FILES_INSTALL_DIR=${libdir}/cmake"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
index 976bb48..d690dd4 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
@@ -14,7 +14,7 @@
 SRCREV = "c22d359433b333937ee3d803450dc41998115685"
 
 DEPENDS = "elfutils"
-SRC_URI = "git://github.com/sparkleholic/ltrace.git;branch=master;protocol=http;protocol=https \
+SRC_URI = "git://github.com/sparkleholic/ltrace.git;protocol=https;branch=master \
            file://configure-allow-to-disable-selinux-support.patch \
            file://0001-replace-readdir_r-with-readdir.patch \
            file://0001-Use-correct-enum-type.patch \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.24.bb b/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.24.bb
index b7f1f8b..2bb73c3 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.24.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.24.bb
@@ -20,7 +20,7 @@
 
 PACKAGECONFIG[python3] = ",,python3-core,python3-core"
 
-EXTRA_OECMAKE = "-D__LIB=lib -DCMAKE_BUILD_TYPE=Release -DLIBBPF_EMBEDDED=OFF"
+EXTRA_OECMAKE = "-D__LIB=${@os.path.relpath(d.getVar('libdir'), d.getVar('prefix') + '/')} -DCMAKE_BUILD_TYPE=Release -DLIBBPF_EMBEDDED=OFF"
 
 FILES:${PN} =  "${bindir}/pahole \
 		${libdir}/libdwarves.so* \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl/0001-Make-function-checks-more-robust-within-shared-libs.patch b/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl/0001-Make-function-checks-more-robust-within-shared-libs.patch
new file mode 100644
index 0000000..13a9e3b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl/0001-Make-function-checks-more-robust-within-shared-libs.patch
@@ -0,0 +1,54 @@
+From 1735a78561dbe139fd138caef2d44d81f5494fe7 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 4 Apr 2023 12:28:11 -0700
+Subject: [PATCH] Make function checks more robust within shared libs
+
+Previous attempt to error at link like was with
+
+https://github.com/toddr/IO-Tty/commit/1747cdf9f98cfd3aada9bf6c09f9d46297e18a5e
+
+this however causes issues with newer clang where it detects
+the assignment as -Wint-conversion warning which is treated at error
+and builds with clang fail. So this is an attempt to instruct
+linker explicitly to error out if the symbol is not found during link
+time when building a shared library, this fixes both the problems
+as reported in
+
+https://github.com/toddr/IO-Tty/issues/23
+
+as well as
+
+https://github.com/toddr/IO-Tty/pull/33#issuecomment-1260147256
+
+Upstream-Status: Submitted [https://github.com/toddr/IO-Tty/pull/33]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile.PL | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.PL b/Makefile.PL
+index eaf47e0..2e8338d 100644
+--- a/Makefile.PL
++++ b/Makefile.PL
+@@ -163,7 +163,8 @@ main ()
+ #if defined (__stub_$f) || defined (__stub___$f)
+ choke me
+ #else
+-f = $f ();
++f = $f;
++f();
+ #endif
+ 
+   ;
+@@ -173,7 +174,7 @@ ESQ
+ 
+   close(TST);
+   print "Looking for $f()" . "." x (13-length($f)) . " ";
+-  if (system("$cfg{'cc'} $flags $funcs{$f} functest_$f.c > functest_$f.log 2>&1")) {
++  if (system("$cfg{'cc'} $flags -Wl,--no-undefined $funcs{$f} functest_$f.c > functest_$f.log 2>&1")) {
+     print "not found.\n";
+   } else {
+     $define{"-DHAVE_\U$f"} = undef;
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl/0001-Tty.xs-Do-not-mark-strlcpy-as-static.patch b/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl/0001-Tty.xs-Do-not-mark-strlcpy-as-static.patch
deleted file mode 100644
index 07c7690..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl/0001-Tty.xs-Do-not-mark-strlcpy-as-static.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From fae771aefc593a0ef798bc0c1e21b0524eb85e2d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 31 Aug 2022 20:32:35 -0700
-Subject: [PATCH] Tty.xs: Do not mark strlcpy as static
-
-Some libcs e.g. musl do not provide implementation of strlcpy but they
-do provide the signature in string.h, if we mark it static here then it
-conflicts with the libc define and compiler may warn/error
-
-Fixes
-Tty.xs:190:1: error: static declaration of 'strlcpy' follows non-static declaration
-strlcpy(                                                                                                                 ^
-/mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/libio-pty-perl/1.16-r0/recipe-sysroot/usr/include/string.h:86:8: note: previous declaration is here
-size_t strlcpy (char *, const char *, size_t);                                                                                  ^
-
-Upstream-Status: Submitted [https://github.com/toddr/IO-Tty/pull/33]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Tty.xs | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/Tty.xs b/Tty.xs
-index aa638f4..4bab39d 100644
---- a/Tty.xs
-+++ b/Tty.xs
-@@ -186,11 +186,11 @@ mysignal(int sig, mysig_t act)
-  * will be copied.  Always NUL terminates (unless siz == 0).
-  * Returns strlen(src); if retval >= siz, truncation occurred.
-  */
--static size_t
--strlcpy(dst, src, siz)
--        char *dst;
--        const char *src;
--        size_t siz;
-+size_t
-+strlcpy(
-+        char *dst,
-+        const char *src,
-+        size_t siz)
- {
-         register char *d = dst;
-         register const char *s = src;
--- 
-2.37.3
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.17.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.17.bb
index 684788f..e5c1ec1 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.17.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.17.bb
@@ -4,9 +4,8 @@
 LIC_FILES_CHKSUM = "file://META.yml;beginline=11;endline=12;md5=b2562f94907eeb42e8ce9d45f628e587"
 
 SRC_URI = "http://www.cpan.org/modules/by-module/IO/IO-Tty-${PV}.tar.gz \
-           file://0001-Tty.xs-Do-not-mark-strlcpy-as-static.patch \
+           file://0001-Make-function-checks-more-robust-within-shared-libs.patch \
            "
-
 SRC_URI[sha256sum] = "a5f1a83020bc5b5dd6c1b570f48c7546e0a8f7fac10a068740b03925ad9e14e8"
 
 S = "${WORKDIR}/IO-Tty-${PV}"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libpcsc-perl_1.4.14.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/libpcsc-perl_1.4.14.bb
new file mode 100644
index 0000000..ff4e1f0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/libpcsc-perl_1.4.14.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Perl interface to the PC/SC smart card library"
+DESCRIPTION = "Perl wrapper to the PC/SC smartcard library (pcsc-lite) \
+together with some small examples. \
+The provided modules are Chipcard::PCSC and Chipcard::PCSC::Card."
+HOMEPAGE = "https://metacpan.org/dist/pcsc-perl"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "https://cpan.metacpan.org/authors/id/W/WH/WHOM/pcsc-perl-${PV}.tar.bz2"
+SRC_URI[md5sum] = "45601505dbb7b27329811ac9bad35fab"
+SRC_URI[sha256sum] = "2722b7e5543e4faf3ba1ec6b29a7dfec6d92be1edec09d0a3191992d4d88c69d"
+
+S = "${WORKDIR}/pcsc-perl-${PV}"
+
+inherit cpan pkgconfig
+
+DEPENDS += "pcsc-lite"
+
+RDEPENDS:${PN} += "perl-module-carp"
+
+BBCLASSEXTEND="native"
diff --git a/meta-openembedded/meta-oe/recipes-extended/bitwise/bitwise_0.43.bb b/meta-openembedded/meta-oe/recipes-extended/bitwise/bitwise_0.43.bb
index 713492b..3a99439 100644
--- a/meta-openembedded/meta-oe/recipes-extended/bitwise/bitwise_0.43.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/bitwise/bitwise_0.43.bb
@@ -12,6 +12,8 @@
 
 SRC_URI = "https://github.com/mellowcandle/bitwise/releases/download/v${PV}/bitwise-v${PV}.tar.gz \
            file://0001-makefile.am-Fix-build-when-build-dir-is-not-same-as-.patch \
+           file://run-ptest \
+           file://ptest.out.expected \
            "
 SRC_URI[sha256sum] = "f524f794188a10defc4df673d8cf0b3739f93e58e93aff0cdb8a99fbdcca2ffb"
 
@@ -21,4 +23,10 @@
 
 DEPENDS = "ncurses readline"
 
-inherit autotools
+inherit autotools ptest
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}
+    install -m 0644 ${WORKDIR}/ptest.out.expected ${D}${PTEST_PATH}/ptest.out.expected
+}
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/bitwise/files/ptest.out.expected b/meta-openembedded/meta-oe/recipes-extended/bitwise/files/ptest.out.expected
new file mode 100644
index 0000000..c5ca3e5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/bitwise/files/ptest.out.expected
@@ -0,0 +1,13 @@
+Unsigned decimal: 66
+Signed decimal: 66
+Hexadecimal: 0x42
+Octal: 0102
+Human: 66
+Radix64: 0/
+IPv4 (Network byte order - Big):  66.0.0.0
+IPv4 (Reverwsed byte order - Little):  0.0.0.66
+ASCII: .......B
+Binary:
+0 1 0 0 0 0 1 0
+     7 -  0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/bitwise/files/run-ptest b/meta-openembedded/meta-oe/recipes-extended/bitwise/files/run-ptest
new file mode 100755
index 0000000..c29e1ea
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/bitwise/files/run-ptest
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Test 1: Basic bitwise operation
+bitwise --no-color -w b 0x42 > test.out
+
+# Compare expected output with actual output
+
+if ! cmp test.out ptest.out.expected; then
+    echo "[FAIL] Test 1: Basic bitwise operation"
+    exit 1
+fi
diff --git a/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb b/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
index 464d25a..3b74535 100644
--- a/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
@@ -6,7 +6,7 @@
 SECTION = "Development/Libraries"
 DEPENDS = "swig-native python3 sblim-cmpi-devel"
 
-SRC_URI = "git://github.com/kkaempf/cmpi-bindings.git;protocol=http;branch=master;protocol=https \
+SRC_URI = "git://github.com/kkaempf/cmpi-bindings.git;protocol=https;branch=master \
            file://cmpi-bindings-0.4.17-no-ruby-perl.patch \
            file://cmpi-bindings-0.4.17-sblim-sigsegv.patch \
            file://cmpi-bindings-0.9.5-python-lib-dir.patch \
diff --git a/meta-openembedded/meta-oe/recipes-extended/flatpak/flatpak_1.15.3.bb b/meta-openembedded/meta-oe/recipes-extended/flatpak/flatpak_1.15.4.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-extended/flatpak/flatpak_1.15.3.bb
rename to meta-openembedded/meta-oe/recipes-extended/flatpak/flatpak_1.15.4.bb
index 3aafa3f..fcf80fc 100644
--- a/meta-openembedded/meta-oe/recipes-extended/flatpak/flatpak_1.15.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/flatpak/flatpak_1.15.4.bb
@@ -8,7 +8,7 @@
     file://0001-flatpak-pc-add-pc_sysrootdir.patch \
 "
 
-SRCREV = "756994b5c433dad9786f9fad736667c4f524aeac"
+SRCREV = "e936e3100d406c50ba49f3ad6a0ecae455345ec0"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/0001-Fix-installing-ipp-usb-quirk.patch b/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/0001-Fix-installing-ipp-usb-quirk.patch
new file mode 100644
index 0000000..71ed697
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/0001-Fix-installing-ipp-usb-quirk.patch
@@ -0,0 +1,38 @@
+From 5cfe30829174a18ec64e53c84292a0229ffa5602 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
+ <zboszor@gmail.com>
+Date: Thu, 30 Mar 2023 11:31:27 +0200
+Subject: [PATCH] Fix installing ipp-usb quirk
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Use $(DESTDIR) as installation prefix for
+/usr/share/usb-ipp/quirk/HPLIP.conf.
+
+Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
+---
+ Makefile.am | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index e10364d..f520225 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -703,10 +703,9 @@ if !DISBALE_IMAGEPROCESSOR_BUILD
+ 		ln -sf $(libdir)/libImageProcessor-x86_32.so $(libdir)/libImageProcessor.so ; \
+ 	fi
+ endif #DISABLE_IMAGEPROCESSOR
+-	if [ -d "/usr/share/ipp-usb/quirks/" ]; then \
+-		echo "ipp-usb directory exists"; \
+-		cp prnt/ipp-usb/HPLIP.conf /usr/share/ipp-usb/quirks/ ; \
+-	fi
++	install -d -m0755 $(DESTDIR)/usr/share/ipp-usb/quirks ; \
++	echo "ipp-usb directory exists"; \
++	cp prnt/ipp-usb/HPLIP.conf $(DESTDIR)/usr/share/ipp-usb/quirks/
+ if !HPLIP_CLASS_DRIVER
+ #	   If scanner build, add hpaio entry to sane dll.conf.
+ 	if [ "$(scan_build)" = "yes" ]; then \
+-- 
+2.39.2
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/0002-Add-ImageProcessor-only-when-DISBALE_IMAGEPROCESSOR_.patch b/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/0002-Add-ImageProcessor-only-when-DISBALE_IMAGEPROCESSOR_.patch
index 2cfe125..fa973a8 100644
--- a/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/0002-Add-ImageProcessor-only-when-DISBALE_IMAGEPROCESSOR_.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/0002-Add-ImageProcessor-only-when-DISBALE_IMAGEPROCESSOR_.patch
@@ -7,8 +7,8 @@
 Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
- Makefile.am | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
+ Makefile.am | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
 
 diff --git a/Makefile.am b/Makefile.am
 index 5f75759..73421b1 100644
@@ -27,6 +27,22 @@
  #else
  #hpcupsdir = $(cupsfilterdir)
  #hpcups_PROGRAMS = hpcups
+@@ -687,6 +692,7 @@
+ 
+ install-data-hook:
+ if HPLIP_BUILD
++if !DISBALE_IMAGEPROCESSOR_BUILD
+ 	if [ \( "$(UNAME)" = "x86_64" -a  -d "$(libdir)/" \) ]; then \
+ 		cp prnt/hpcups/libImageProcessor-x86_64.so $(libdir)/ ; \
+ 		chmod 775 $(libdir)/libImageProcessor-x86_64.so ; \
+@@ -697,6 +703,7 @@
+ 		chmod 775 $(libdir)/libImageProcessor-x86_32.so ; \
+ 		ln -sf $(libdir)/libImageProcessor-x86_32.so $(libdir)/libImageProcessor.so ; \
+ 	fi
++endif #DISABLE_IMAGEPROCESSOR
+ 	if [ -d "/usr/share/ipp-usb/quirks/" ]; then \
+ 		echo "ipp-usb directory exists"; \
+ 		cp prnt/ipp-usb/HPLIP.conf /usr/share/ipp-usb/quirks/ ; \
 -- 
 2.37.3
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.22.10.bb b/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.22.10.bb
index 23cc519..ca68348 100644
--- a/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.22.10.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.22.10.bb
@@ -15,6 +15,7 @@
            file://0004-Define-missing-prototype-for-functions.patch \
            file://0005-hp_ipp.c-Add-printf-format-to-snprintf-calls.patch \
            file://0006-Workaround-patch-for-missing-Python3-transition-of-t.patch \
+           file://0001-Fix-installing-ipp-usb-quirk.patch \
            file://0001-Drop-using-register-storage-classifier.patch"
 SRC_URI[sha256sum] = "533c3f2f6b53e4163ded4fd81d1f11ae6162a0f6451bd5e62a8382d0c1366624"
 
@@ -80,6 +81,7 @@
         ${PYTHON_SITEPACKAGES_DIR}/.debug \
         ${libexecdir}/cups/filter/.debug "
 
+FILES:${PN} += "${datadir}/ipp-usb/quirks/HPLIP.conf"
 FILES:${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
 FILES:${PN}-ppd = "${datadir}/ppd"
 FILES:${PN}-cups = "${datadir}/cups"
diff --git a/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb b/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb
index d003279..39d6459 100644
--- a/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb
@@ -4,7 +4,7 @@
 
 PV = "2.3.6+git${SRCPV}"
 
-SRC_URI = "git://github.com/snarlistic/jpnevulator.git;protocol=http;branch=master;protocol=https"
+SRC_URI = "git://github.com/snarlistic/jpnevulator.git;protocol=https;branch=master"
 SRCREV = "bc1d4f6587a4a4829b5d55e3ca7ad584da6de545"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.17.bb b/meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.18.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.17.bb
rename to meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.18.bb
index 9cd6baa..b1c3371 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.17.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.18.bb
@@ -9,7 +9,7 @@
 SRC_URI = "git://github.com/ebiggers/libdeflate.git;protocol=https;branch=master"
 
 S = "${WORKDIR}/git"
-SRCREV = "bd925ae68e99f65d69f20181cb845aaba5c8f098"
+SRCREV = "495fee110ebb48a5eb63b75fd67e42b2955871e2"
 
 inherit cmake pkgconfig
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-largefile.m4-Sync-with-latest-gnulib.patch b/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-largefile.m4-Sync-with-latest-gnulib.patch
new file mode 100644
index 0000000..1dbf295
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-largefile.m4-Sync-with-latest-gnulib.patch
@@ -0,0 +1,390 @@
+From 66c1646a3f12836846a054ebd2c427e30c93d3a5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 2 Apr 2023 10:37:15 -0700
+Subject: [PATCH] largefile.m4: Sync with latest gnulib
+
+This ensures it can work with latest autoconf 2.72 release ( upcoming )
+
+Upstream-Status: Backport [it will be not needed with 1.42 release]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gl/m4/largefile.m4 | 330 ++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 263 insertions(+), 67 deletions(-)
+
+diff --git a/gl/m4/largefile.m4 b/gl/m4/largefile.m4
+index 3e8b5e3..7fb81b8 100644
+--- a/gl/m4/largefile.m4
++++ b/gl/m4/largefile.m4
+@@ -1,7 +1,7 @@
+ # Enable large files on systems where this is not the default.
+ # Enable support for files on Linux file systems with 64-bit inode numbers.
+ 
+-# Copyright 1992-1996, 1998-2022 Free Software Foundation, Inc.
++# Copyright 1992-1996, 1998-2023 Free Software Foundation, Inc.
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -10,8 +10,9 @@
+ # It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this
+ # setting of _LARGEFILE_SOURCE is needed so that <stdio.h> declares fseeko
+ # and ftello in C++ mode as well.
++# Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038.
+ AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
+-[
++ m4_ifndef([AC_SYS_YEAR2038], [[
+   AC_REQUIRE([AC_CANONICAL_HOST])
+   AC_FUNC_FSEEKO
+   case "$host_os" in
+@@ -20,10 +21,10 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
+         [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).])
+       ;;
+   esac
+-])
++ ]])
++)
+ 
+-# Work around a problem in Autoconf through at least 2.71 on glibc 2.34+
+-# with _TIME_BITS.  Also, work around a problem in autoconf <= 2.69:
++# Work around a problem in autoconf <= 2.69:
+ # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5,
+ # or configures them incorrectly in some cases.
+ m4_version_prereq([2.70], [], [
+@@ -43,33 +44,258 @@ m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES],
+ ])
+ ])# m4_version_prereq 2.70
+ 
++# Support AC_SYS_YEAR2038, even if Autoconf 2.71 or earlier.
++# This code is taken from Autoconf master.
++m4_ifndef([AC_SYS_YEAR2038], [
++
++# _AC_SYS_YEAR2038_TEST_CODE
++# --------------------------
++# C code used to probe for time_t that can represent time points more
++# than 2**31 - 1 seconds after the epoch.  With the usual Unix epoch,
++# these correspond to dates after 2038-01-18 22:14:07 +0000 (Gregorian),
++# hence the name.
++AC_DEFUN([_AC_SYS_YEAR2038_TEST_CODE],
++[[
++  #include <time.h>
++  /* Check that time_t can represent 2**32 - 1 correctly.  */
++  #define LARGE_TIME_T \\
++    ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30)))
++  int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535
++                           && LARGE_TIME_T % 65537 == 0)
++                          ? 1 : -1];
++]])
++
++# _AC_SYS_YEAR2038_OPTIONS
++# ------------------------
++# List of known ways to enable support for large time_t.  If you change
++# this list you probably also need to change the AS_CASE at the end of
++# _AC_SYS_YEAR2038_PROBE.
++m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize(
++    ["none needed"]                   dnl 64-bit and newer 32-bit Unix
++    ["-D_TIME_BITS=64"]               dnl glibc 2.34 with some 32-bit ABIs
++    ["-D__MINGW_USE_VC2005_COMPAT"]   dnl 32-bit MinGW
++    ["-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"]
++                                      dnl 32-bit MinGW (misconfiguration)
++))
++
++# _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED])
++# -----------------------------------------
++# Subroutine of AC_SYS_YEAR2038.  Probe for time_t that can represent
++# time points more than 2**31 - 1 seconds after the epoch (dates after
++# 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts
++# to one of the values in the _AC_SYS_YEAR2038_OPTIONS list, or to
++# "support not detected" if none of them worked.  Then, set compilation
++# options and #defines as necessary to enable large time_t support.
++#
++# Note that we do not test whether mktime, localtime, etc. handle
++# large values of time_t correctly, as that would require use of
++# AC_TRY_RUN.  Note also that some systems only support large time_t
++# together with large off_t.
++#
++# If support is not detected, the behavior depends on which of the
++# top-level AC_SYS_YEAR2038 macros was used (see below).
++#
++# If you change this macro you may also need to change
++# _AC_SYS_YEAR2038_OPTIONS.
++AC_DEFUN([_AC_SYS_YEAR2038_PROBE],
++[AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038],
++  [ac_cv_sys_year2038_opts],
++  [ac_save_CPPFLAGS="$CPPFLAGS"
++  ac_opt_found=no
++  for ac_opt in _AC_SYS_YEAR2038_OPTIONS; do
++    AS_IF([test x"$ac_opt" != x"none needed"],
++      [CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"])
++    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_YEAR2038_TEST_CODE])],
++      [ac_cv_sys_year2038_opts="$ac_opt"
++      ac_opt_found=yes])
++    test $ac_opt_found = no || break
++  done
++  CPPFLAGS="$ac_save_CPPFLAGS"
++  test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected"])
++
++ac_have_year2038=yes
++AS_CASE([$ac_cv_sys_year2038_opts],
++  ["none needed"], [],
++  ["support not detected"],
++    [ac_have_year2038=no
++     AS_CASE([$enable_year2038],
++      [yes],
++        [# If we're not cross compiling and 'touch' works with a large
++        # timestamp, then we can presume the system supports wider time_t
++        # *somehow* and we just weren't able to detect it.  One common
++        # case that we deliberately *don't* probe for is a system that
++        # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers
++        # wide time_t.  (It would be inappropriate for us to override an
++        # intentional use of -m32.)  Error out, demanding use of
++        # --disable-year2038 if this is intentional.
++        AS_IF([test $cross_compiling = no],
++          [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null],
++            [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`],
++              [*'Feb  7  2106'* | *'Feb  7 17:10'*],
++              [AC_MSG_FAILURE(m4_text_wrap(
++      [this system appears to support timestamps after January 2038,
++       but no mechanism for enabling wide 'time_t' was detected.
++       Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.)
++       To proceed with 32-bit time_t, configure with '--disable-year2038'.],
++      [], [], [55]))])])])])],
++
++  ["-D_TIME_BITS=64"],
++    [AC_DEFINE([_TIME_BITS], [64],
++      [Number of bits in time_t, on hosts where this is settable.])],
++
++  ["-D__MINGW_USE_VC2005_COMPAT=1"],
++    [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1],
++      [Define to 1 on platforms where this makes time_t a 64-bit type.])],
+ 
+-# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE,
+-#                               CACHE-VAR,
+-#                               DESCRIPTION,
+-#                               PROLOGUE, [FUNCTION-BODY])
+-# --------------------------------------------------------
+-m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE],
+-[AC_CACHE_CHECK([for $1 value needed for large files], [$3],
+-[while :; do
+-  m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])(
+-    [AC_LANG_PROGRAM([$5], [$6])],
+-    [$3=no; break])
+-  m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])(
+-    [AC_LANG_PROGRAM([#undef $1
+-#define $1 $2
+-$5], [$6])],
+-    [$3=$2; break])
+-  $3=unknown
+-  break
+-done])
+-case $$3 in #(
+-  no | unknown) ;;
+-  *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);;
+-esac
+-rm -rf conftest*[]dnl
+-])# _AC_SYS_LARGEFILE_MACRO_VALUE
++  ["-U_USE_32_BIT_TIME_T"*],
++    [AC_MSG_FAILURE(m4_text_wrap(
++      [the 'time_t' type is currently forced to be 32-bit.
++       It will stop working after January 2038.
++       Remove _USE_32BIT_TIME_T from the compiler flags.],
++      [], [], [55]))],
++
++  [AC_MSG_ERROR(
++    [internal error: bad value for \$ac_cv_sys_year2038_opts])])
++])
++
++# _AC_SYS_YEAR2038_ENABLE
++# -----------------------
++# Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN.
++# Depending on which of the YEAR2038 macros was used, add either an
++# --enable-year2038, or a --disable-year2038, or no option at all to
++# the configure script.  Note that this is expanded very late and
++# therefore there cannot be any code in the AC_ARG_ENABLE.  The
++# default value for enable_year2038 is emitted unconditionally
++# because the generated code always looks at this variable.
++m4_define([_AC_SYS_YEAR2038_ENABLE],
++[m4_divert_text([DEFAULTS],
++  m4_provide_if([AC_SYS_YEAR2038],
++    [enable_year2038=yes],
++    [enable_year2038=no]))]dnl
++[AC_ARG_ENABLE([year2038],
++  m4_provide_if([AC_SYS_YEAR2038],
++    [AS_HELP_STRING([--disable-year2038],
++      [do not support timestamps after 2038])],
++    [AS_HELP_STRING([--enable-year2038],
++      [support timestamps after 2038])]))])
++
++# _AC_SYS_YEAR2038_OPT_IN
++# -----------------------
++# If the --enable-year2038 option is given to configure, attempt to
++# detect and activate support for large time_t on 32-bit systems.
++# This macro is automatically invoked by AC_SYS_LARGEFILE when large
++# *file* support is detected.  It does not AC_REQUIRE AC_SYS_LARGEFILE
++# to avoid a dependency loop, and is therefore unsafe to expose as a
++# documented macro.
++AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
++[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
++  AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
++  AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
++])])
++
++# AC_SYS_YEAR2038
++# ---------------
++# Attempt to detect and activate support for large time_t.
++# On systems where time_t is not always 64 bits, this probe can be
++# skipped by passing the --disable-year2038 option to configure.
++AC_DEFUN([AC_SYS_YEAR2038],
++[AC_REQUIRE([AC_SYS_LARGEFILE])]dnl
++[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
++  AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
++  AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
++])])
++
++# _AC_SYS_LARGEFILE_TEST_CODE
++# ---------------------------
++# C code used to probe for large file support.
++m4_define([_AC_SYS_LARGEFILE_TEST_CODE],
++[@%:@include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++    We can't simply define LARGE_OFF_T to be 9223372036854775807,
++    since some C++ compilers masquerading as C compilers
++    incorrectly reject 9223372036854775807.  */
++@%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
++  int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721
++		       && LARGE_OFF_T % 2147483647 == 1)
++		      ? 1 : -1]];[]dnl
++])
++
++# _AC_SYS_LARGEFILE_OPTIONS
++# -------------------------
++# List of known ways to enable support for large files.  If you change
++# this list you probably also need to change the AS_CASE at the end of
++# _AC_SYS_LARGEFILE_PROBE.
++m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize(
++    ["none needed"]                   dnl Most current systems
++    ["-D_FILE_OFFSET_BITS=64"]        dnl X/Open LFS spec
++    ["-D_LARGE_FILES=1"]              dnl AIX (which versions?)
++    ["-n32"]                          dnl Irix 6.2 w/ SGI compiler
++))
++
++# _AC_SYS_LARGEFILE_PROBE
++# -----------------------
++# Subroutine of AC_SYS_LARGEFILE. Probe for large file support and set
++# the cache variable ac_cv_sys_largefile_opts to one of the values in
++# the _AC_SYS_LARGEFILE_OPTIONS list, or to "support not detected" if
++# none of the options in that list worked.  Then, set compilation
++# options and #defines as necessary to enable large file support.
++#
++# If large file support is not detected, the behavior depends on which of
++# the top-level AC_SYS_LARGEFILE macros was used (see below).
++#
++# If you change this macro you may also need to change
++# _AC_SYS_LARGEFILE_OPTIONS.
++AC_DEFUN([_AC_SYS_LARGEFILE_PROBE],
++[AC_CACHE_CHECK([for $CC option to enable large file support],
++  [ac_cv_sys_largefile_opts],
++  [ac_save_CC="$CC"
++  ac_opt_found=no
++  for ac_opt in _AC_SYS_LARGEFILE_OPTIONS; do
++    AS_IF([test x"$ac_opt" != x"none needed"],
++      [CC="$ac_save_CC $ac_opt"])
++    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])],
++      [ac_cv_sys_largefile_opts="$ac_opt"
++      ac_opt_found=yes])
++    test $ac_opt_found = no || break
++  done
++  CC="$ac_save_CC"
++  test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"])
++
++ac_have_largefile=yes
++AS_CASE([$ac_cv_sys_largefile_opts],
++  ["none needed"], [],
++  ["support not detected"],
++    [ac_have_largefile=no],
++
++  ["-D_FILE_OFFSET_BITS=64"],
++    [AC_DEFINE([_FILE_OFFSET_BITS], [64],
++      [Number of bits in a file offset, on hosts where this is settable.])],
++
++  ["-D_LARGE_FILES=1"],
++    [AC_DEFINE([_LARGE_FILES], [1],
++      [Define to 1 on platforms where this makes off_t a 64-bit type.])],
++
++  ["-n32"],
++    [CC="$CC -n32"],
++
++  [AC_MSG_ERROR(
++    [internal error: bad value for \$ac_cv_sys_largefile_opts])])
++
++_AC_SYS_YEAR2038_OPT_IN
++])
+ 
++# _AC_SYS_LARGEFILE_ENABLE
++# ------------------------
++# Subroutine of AC_SYS_LARGEFILE.  Note that this
++# is expanded very late and therefore there cannot be any code in the
++# AC_ARG_ENABLE.  The default value for enable_largefile is emitted
++# unconditionally because the generated shell code always looks at
++# this variable.
++m4_define([_AC_SYS_LARGEFILE_ENABLE],
++[m4_divert_text([DEFAULTS],
++  enable_largefile=yes)]dnl
++[AC_ARG_ENABLE([largefile],
++  [AS_HELP_STRING([--disable-largefile], [omit support for large files])])])
+ 
+ # AC_SYS_LARGEFILE
+ # ----------------
+@@ -80,44 +306,14 @@ rm -rf conftest*[]dnl
+ # Additionally, on Linux file systems with 64-bit inodes a file that happens
+ # to have a 64-bit inode number cannot be accessed by 32-bit applications on
+ # Linux x86/x86_64.  This can occur with file systems such as XFS and NFS.
++# This macro allows configuration to continue if the system doesn't support
++# large files.
+ AC_DEFUN([AC_SYS_LARGEFILE],
+-[AC_ARG_ENABLE(largefile,
+-               [  --disable-largefile     omit support for large files])
+-AS_IF([test "$enable_largefile" != no],
+- [AC_CACHE_CHECK([for special C compiler options needed for large files],
+-    ac_cv_sys_largefile_CC,
+-    [ac_cv_sys_largefile_CC=no
+-     if test "$GCC" != yes; then
+-       ac_save_CC=$CC
+-       while :; do
+-         # IRIX 6.2 and later do not support large files by default,
+-         # so use the C compiler's -n32 option if that helps.
+-         AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])])
+-         AC_COMPILE_IFELSE([], [break])
+-         CC="$CC -n32"
+-         AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break])
+-         break
+-       done
+-       CC=$ac_save_CC
+-       rm -f conftest.$ac_ext
+-    fi])
+-  if test "$ac_cv_sys_largefile_CC" != no; then
+-    CC=$CC$ac_cv_sys_largefile_CC
+-  fi
+-
+-  _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
+-    ac_cv_sys_file_offset_bits,
+-    [Number of bits in a file offset, on hosts where this is settable.],
+-    [_AC_SYS_LARGEFILE_TEST_INCLUDES])
+-  AS_CASE([$ac_cv_sys_file_offset_bits],
+-    [unknown],
+-      [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1],
+-         [ac_cv_sys_large_files],
+-         [Define for large files, on AIX-style hosts.],
+-         [_AC_SYS_LARGEFILE_TEST_INCLUDES])],
+-    [64],
+-      [gl_YEAR2038_BODY([])])])
+-])# AC_SYS_LARGEFILE
++[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
++  AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE])
++  AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
++])])
++])# m4_ifndef AC_SYS_YEAR2038
+ 
+ # Enable large files on systems where this is implemented by Gnulib, not by the
+ # system headers.
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.41.bb b/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.41.bb
index b4303a1..17ffc6c 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.41.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.41.bb
@@ -18,6 +18,7 @@
 
 SRC_URI = "${GNU_MIRROR}/libidn/${BPN}-${PV}.tar.gz \
            file://dont-depend-on-help2man.patch \
+           file://0001-largefile.m4-Sync-with-latest-gnulib.patch \
            "
 
 #SRC_URI[md5sum] = "813c7b268d1051ca02c3610986126f38"
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Do-not-use-LFS64-functions-on-linux-musl.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Do-not-use-LFS64-functions-on-linux-musl.patch
new file mode 100644
index 0000000..29f5b94
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Do-not-use-LFS64-functions-on-linux-musl.patch
@@ -0,0 +1,35 @@
+From 6690e7fe566445e20fec178e9e209e5f9f2fdde3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 5 Apr 2023 23:33:46 -0700
+Subject: [PATCH] Do not use LFS64 functions on linux/musl
+
+On musl, off_t is 64bit always ( even on 32bit platforms ), therefore using
+LFS64 funcitons is not needed on such platforms. Moreover, musl has stopped
+providing aliases for these functions [1] which means it wont compile on
+newer musl systems. Therefore only use it on 32bit glibc/linux platforms
+and exclude musl like cygwin or OSX
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=246f1c811448f37a44b41cd8df8d0ef9736d95f4
+
+Upstream-Status: Submitted [https://github.com/gabime/spdlog/pull/2589]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ thirdparty/spdlog-20170710/include/spdlog/details/os.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/thirdparty/spdlog-20170710/include/spdlog/details/os.h b/thirdparty/spdlog-20170710/include/spdlog/details/os.h
+index 735f60147..639b07a79 100644
+--- a/thirdparty/spdlog-20170710/include/spdlog/details/os.h
++++ b/thirdparty/spdlog-20170710/include/spdlog/details/os.h
+@@ -237,7 +237,7 @@ inline size_t filesize(FILE *f)
+ #else // unix
+     int fd = fileno(f);
+     //64 bits(but not in osx, where fstat64 is deprecated)
+-#if !defined(__FreeBSD__) && !defined(__APPLE__) && (defined(__x86_64__) || defined(__ppc64__))
++#if !defined(__FreeBSD__) && !defined(__APPLE__) && ((defined(__x86_64__) || defined(__ppc64__)) && (!defined(__linux__)))
+     struct stat64 st;
+     if (fstat64(fd, &st) == 0)
+         return static_cast<size_t>(st.st_size);
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb
index 1bf99d4..b76f120 100644
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb
@@ -32,6 +32,7 @@
             file://0001-Fix-build-with-libc.patch \
             file://0001-civetweb-Disable-lto.patch \
             file://0001-Add-missing-includes-cstdint-and-cstdio.patch \
+            file://0001-Do-not-use-LFS64-functions-on-linux-musl.patch \
             file://minifi.service \
             file://systemd-volatile.conf \
             file://sysvinit-volatile.conf \
diff --git a/meta-openembedded/meta-oe/recipes-extended/mraa/mraa_git.bb b/meta-openembedded/meta-oe/recipes-extended/mraa/mraa_git.bb
index 2a50550..f1cdf66 100644
--- a/meta-openembedded/meta-oe/recipes-extended/mraa/mraa_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/mraa/mraa_git.bb
@@ -8,7 +8,7 @@
 SRCREV = "7786c7ded5c9ce7773890d0e3dc27632898fc6b1"
 PV = "2.2.0+git${SRCPV}"
 
-SRC_URI = "git://github.com/eclipse/${BPN}.git;protocol=http;branch=master;protocol=https \
+SRC_URI = "git://github.com/eclipse/${BPN}.git;protocol=https;branch=master \
            file://0001-cmake-Use-a-regular-expression-to-match-x86-architec.patch \
            file://0001-include-Declare-gVERSION-global-as-extern.patch \
            "
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2023.1.bb b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2023.2.bb
similarity index 98%
rename from meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2023.1.bb
rename to meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2023.2.bb
index bd566e1..2990122 100644
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2023.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2023.2.bb
@@ -22,7 +22,7 @@
     ${GITHUB_BASE_URI}/download/v${PV}/libostree-${PV}.tar.xz \
     file://run-ptest \
 "
-SRC_URI[sha256sum] = "dd792b167693a1971c9f6e3168013d906ac035100ff6c719a3b322eb44b96f55"
+SRC_URI[sha256sum] = "ceb0788755a0bff5738d44543552fbf883cf71df481baa3ca7288da7a402bb85"
 
 S = "${WORKDIR}/libostree-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.8.0.bb b/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.8.0.bb
index 961fe7c..f0c083c 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.8.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.8.0.bb
@@ -10,7 +10,7 @@
 PV = "1.8.0"
 
 SRC_URI = "\
-    git://github.com/oetiker/rrdtool-1.x.git;branch=master;protocol=http;;protocol=https \
+    git://github.com/oetiker/rrdtool-1.x.git;protocol=https;branch=master \
 "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb b/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
index 0ae7760..0695f99 100644
--- a/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
@@ -10,7 +10,7 @@
 SRCREV = "5cf20df96c6b35c19d5b871ba4e319e96b4df72d"
 PV = "2.0.0+git${SRCPV}"
 
-SRC_URI = "git://github.com/eclipse/${BPN}.git;protocol=http;branch=master;protocol=https \
+SRC_URI = "git://github.com/eclipse/${BPN}.git;protocol=https;branch=master \
            file://0001-CMakeLists.txt-Use-SWIG_SUPPORT_FILES-to-find-the-li.patch \
            file://0001-Use-stdint-types.patch \
            file://0001-initialize-local-variables-before-use.patch \
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/nodolt.patch b/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/nodolt.patch
deleted file mode 100644
index 1f9bdd3..0000000
--- a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/nodolt.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/configure.ac
-+++ b/configure.ac
-@@ -150,7 +150,6 @@ AC_EXEEXT
- AC_PROG_LIBTOOL
- dnl when using libtool 2.x create libtool early, because it's used in configure
- m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
--DOLT
- 
- dnl Checks for header files.
- AC_CHECK_HEADERS(sys/mman.h)
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.13.bb b/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.13.bb
new file mode 100644
index 0000000..c4738b2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.13.bb
@@ -0,0 +1,22 @@
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+DESCRIPTION = "Runtime libraries for parsing and creating MIME mail"
+SECTION = "libs"
+
+DEPENDS = "glib-2.0 zlib"
+
+inherit gnomebase gobject-introspection vala
+
+SRC_URI = "https://github.com/jstedfast/${BPN}/releases/download/${PV}/${BP}.tar.xz \
+    file://iconv-detect.h \
+"
+SRC_URI[sha256sum] = "2e10a54d4821daf8b16c019ad5d567e0fb8e766f8ffe5fec3d4c6a37373d6406"
+
+EXTRA_OECONF += "--enable-largefile"
+
+export ac_cv_have_iconv_detect_h="yes"
+export ac_cv_sys_file_offset_bits="64"
+
+do_configure:append () {
+    cp ${WORKDIR}/iconv-detect.h ${S}
+}
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.7.bb b/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.7.bb
deleted file mode 100644
index 2677f5c..0000000
--- a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.7.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
-DESCRIPTION = "Runtime libraries for parsing and creating MIME mail"
-SECTION = "libs"
-
-DEPENDS = "glib-2.0 zlib"
-
-inherit gnomebase gobject-introspection vala
-
-SRC_URI += "file://iconv-detect.h \
-            file://nodolt.patch"
-SRC_URI[archive.sha256sum] = "2aea96647a468ba2160a64e17c6dc6afe674ed9ac86070624a3f584c10737d44"
-
-export ac_cv_have_iconv_detect_h="yes"
-
-do_configure:append () {
-    cp ${WORKDIR}/iconv-detect.h ${S}
-}
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libdecor/libdecor/0001-libdecor-gtk.c-dont-skip-for-conflicting-symbols.patch b/meta-openembedded/meta-oe/recipes-graphics/libdecor/libdecor/0001-libdecor-gtk.c-dont-skip-for-conflicting-symbols.patch
new file mode 100644
index 0000000..c9d63c9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libdecor/libdecor/0001-libdecor-gtk.c-dont-skip-for-conflicting-symbols.patch
@@ -0,0 +1,31 @@
+From fb6eb15b34b5b07a431bb4c3585341411a3e088f Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@t-online.de>
+Date: Tue, 28 Feb 2023 13:42:18 +0100
+Subject: [PATCH] libdecor-gtk.c: dont skip for conflicting_symbols
+
+This is a hack that should be removed, once the underlying bug in glibc was fixed and
+libdecor was updated to use dlmopen() instead of dlopen()
+
+https://gitlab.freedesktop.org/libdecor/libdecor/-/issues/47
+https://gitlab.freedesktop.org/libdecor/libdecor/-/issues/44
+
+---
+ src/plugins/gtk/libdecor-gtk.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/plugins/gtk/libdecor-gtk.c b/src/plugins/gtk/libdecor-gtk.c
+index 228161e..fd91afb 100644
+--- a/src/plugins/gtk/libdecor-gtk.c
++++ b/src/plugins/gtk/libdecor-gtk.c
+@@ -2606,7 +2606,7 @@ libdecor_plugin_description = {
+ 	.priorities = priorities,
+ 	.constructor = libdecor_plugin_new,
+ 	.conflicting_symbols = {
+-		"png_free",
++		//"png_free",
+ 		NULL,
+ 	},
+ };
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libdecor/libdecor_0.1.1.bb b/meta-openembedded/meta-oe/recipes-graphics/libdecor/libdecor_0.1.1.bb
deleted file mode 100644
index 4e396d8..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/libdecor/libdecor_0.1.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "libdecor - A client-side decorations library for Wayland clients"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=7ae2be7fb1637141840314b51970a9f7"
-
-SRC_URI = "git://gitlab.gnome.org/jadahl/libdecor.git;protocol=https;branch=master"
-
-DEPENDS = " \
-	cairo \
-	pango \
-	wayland \
-	wayland-native \
-	wayland-protocols \
-"
-
-S = "${WORKDIR}/git"
-SRCREV = "e87dcfdaf83f332fa83b43c804fcf93c151ff0f5"
-
-PACKAGECONFIG ?= "dbus ${@bb.utils.filter('DISTRO_FEATURES', 'gtk3 opengl', d)}"
-
-PACKAGECONFIG[dbus] = "-Ddbus=enabled,-Ddbus=disabled,dbus"
-PACKAGECONFIG[demo] = "-Ddemo=true,-Ddemo=false,virtual/libegl libxkbcommon"
-PACKAGECONFIG[gtk3] = "-Dgtk=enabled,-Dgtk=disabled,gtk+3"
-PACKAGECONFIG[opengl] = ",,virtual/libgl"
-
-inherit meson pkgconfig
-
-EXTRA_OEMESON += "--buildtype release"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libdecor/libdecor_0.1.99.bb b/meta-openembedded/meta-oe/recipes-graphics/libdecor/libdecor_0.1.99.bb
new file mode 100644
index 0000000..ed0b05f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libdecor/libdecor_0.1.99.bb
@@ -0,0 +1,32 @@
+SUMMARY = "libdecor - A client-side decorations library for Wayland clients"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7ae2be7fb1637141840314b51970a9f7"
+
+SRC_URI = " \
+    git://gitlab.freedesktop.org/libdecor/libdecor.git;protocol=https;branch=master \
+    file://0001-libdecor-gtk.c-dont-skip-for-conflicting-symbols.patch \
+"
+
+DEPENDS = " \
+    cairo \
+    pango \
+    wayland \
+    wayland-native \
+    wayland-protocols \
+"
+
+S = "${WORKDIR}/git"
+SRCREV = "a254d0c2ff0cbfcf0bbf14cc67cc403640880c01"
+
+PACKAGECONFIG ?= "dbus ${@bb.utils.filter('DISTRO_FEATURES', 'gtk+3', d)}"
+
+PACKAGECONFIG[dbus] = "-Ddbus=enabled,-Ddbus=disabled,dbus"
+PACKAGECONFIG[demo] = "-Ddemo=true,-Ddemo=false,virtual/libegl libxkbcommon"
+PACKAGECONFIG[install_demo] = "-Dinstall_demo=true,-Dinstall_demo=false"
+PACKAGECONFIG[gtk+3] = "-Dgtk=enabled,-Dgtk=disabled,gtk+3"
+
+inherit meson pkgconfig
+
+EXTRA_OEMESON += "--buildtype release"
+
+BBCLASSEXTEND = "native nativesdk"
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
index 1a94215..cf33c69 100644
--- 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
@@ -9,7 +9,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d6fc0df890c5270ef045981b516bb8f2"
 
 # TODO: Pin upstream release (current v7.11.0-80-g419a757)
-SRC_URI = "git://github.com/lvgl/lv_drivers;destsuffix=${S};protocol=https;nobranch=1"
+SRC_URI = "git://github.com/lvgl/lv_drivers;protocol=https;nobranch=1"
 SRCREV = "419a757c23aaa67c676fe3a2196d64808fcf2254"
 
 DEPENDS = "libxkbcommon lvgl wayland"
@@ -19,15 +19,15 @@
 inherit cmake
 inherit features_check
 
-S = "${WORKDIR}/${PN}-${PV}"
+S = "${WORKDIR}/git"
 
 LVGL_CONFIG_WAYLAND_HOR_RES ?= "480"
 LVGL_CONFIG_WAYLAND_VER_RES ?= "320"
 
-EXTRA_OECMAKE += "-Dinstall:BOOL=ON -DLIB_INSTALL_DIR=${BASELIB}"
+EXTRA_OECMAKE += "-Dinstall:BOOL=ON -DLIB_INSTALL_DIR=${baselib}"
 
 TARGET_CFLAGS += "-DLV_CONF_INCLUDE_SIMPLE=1"
-TARGET_CFLAGS += "-I${RECIPE_SYSROOT}/${includedir}/lvgl"
+TARGET_CFLAGS += "-I${STAGING_INCDIR}/lvgl"
 
 # Upstream does not support a default configuration
 # but propose a default "disabled" template, which is used as reference
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
index 032e85f..22b4826 100644
--- 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
@@ -8,21 +8,23 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d6fc0df890c5270ef045981b516bb8f2"
 
-SRC_URI = "git://github.com/lvgl/lv_lib_png;destsuffix=${S};protocol=https;nobranch=1"
+SRC_URI = "git://github.com/lvgl/lv_lib_png;;protocol=https;nobranch=1"
 SRCREV = "bf1531afe07c9f861107559e29ab8a2d83e4715a"
 
+S = "${WORKDIR}/git"
+
 # because of lvgl dependency
 REQUIRED_DISTRO_FEATURES = "wayland"
 
 DEPENDS += "lvgl"
 
-EXTRA_OECMAKE += "-DLIB_INSTALL_DIR=${BASELIB}"
+EXTRA_OECMAKE += "-DLIB_INSTALL_DIR=${baselib}"
 
 inherit cmake
 inherit features_check
 
 TARGET_CFLAGS += "-DLV_CONF_INCLUDE_SIMPLE=1"
-TARGET_CFLAGS += "-I${RECIPE_SYSROOT}/${includedir}/lvgl"
+TARGET_CFLAGS += "-I${STAGING_INCDIR}/lvgl"
 
 FILES:${PN}-dev = "\
     ${includedir}/lvgl/lv_lib_png/ \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.1.0.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.1.0.bb
index 2005afa..ea74c59 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.1.0.bb
@@ -8,7 +8,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a"
 
-SRC_URI = "gitsm://github.com/lvgl/lvgl;destsuffix=${S};protocol=https;nobranch=1"
+SRC_URI = "gitsm://github.com/lvgl/lvgl;protocol=https;nobranch=1"
 SRCREV = "d38eb1e689fa5a64c25e677275172d9c8a4ab2f0"
 
 REQUIRED_DISTRO_FEATURES = "wayland"
@@ -16,8 +16,8 @@
 inherit cmake
 inherit features_check
 
-EXTRA_OECMAKE = "-DLIB_INSTALL_DIR=${BASELIB}"
-S = "${WORKDIR}/${PN}-${PV}"
+EXTRA_OECMAKE = "-DLIB_INSTALL_DIR=${baselib}"
+S = "${WORKDIR}/git"
 
 LVGL_CONFIG_LV_MEM_CUSTOM ?= "0"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.13.bb b/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.13.bb
index 0bc0394..ceff54f 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.13.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.13.bb
@@ -6,7 +6,7 @@
 
 SRCREV = "cc05b288b6d1660ab04c6cf01173f1bb62e6f5dd"
 SRC_URI = " \
-    git://github.com/baldurk/${BPN}.git;protocol=http;branch=v1.x;protocol=https \
+    git://github.com/baldurk/${BPN}.git;protocol=https;branch=v1.x \
     file://0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch \
 "
 S = "${WORKDIR}/git"
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
index 2fb44eb..f31018c 100644
--- 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
@@ -8,25 +8,33 @@
  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`
+@@ -2,6 +2,7 @@
+ VERSION = 2.1
+ 
+ # Customize below to fit your system
++PKG_CONFIG ?= pkg-config
+ 
+ # paths
+ PREFIX = /usr/local
+@@ -9,13 +10,13 @@ MANPREFIX = $(PREFIX)/share/man
+ LIBPREFIX = $(PREFIX)/lib
+ LIBDIR = $(LIBPREFIX)/surf
+ 
+-X11INC = `pkg-config --cflags x11`
+-X11LIB = `pkg-config --libs x11`
++X11INC = $(shell $(PKG_CONFIG) --cflags x11)
++X11LIB = $(shell $(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`
++GTKINC = $(shell $(PKG_CONFIG) --cflags gtk+-3.0 gcr-3 webkit2gtk-4.1)
++GTKLIB = $(shell $(PKG_CONFIG) --libs gtk+-3.0 gcr-3 webkit2gtk-4.1)
++WEBEXTINC = $(shell $(PKG_CONFIG) --cflags webkit2gtk-4.1 webkit2gtk-web-extension-4.1 gio-2.0)
++WEBEXTLIBS = $(shell $(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 7523ed5..7140a72 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
@@ -9,7 +9,7 @@
 
 REQUIRED_DISTRO_FEATURES = "x11 opengl"
 
-SRCREV = "bcd7d74e613fb8af11b40c351f0a6c1a771b2d2b"
+SRCREV = "665a709b522a6fa18c671f1fc41297603292d0e8"
 SRC_URI = "git://git.suckless.org/surf;branch=surf-webkit2 \
            "
 SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'soup3', 'file://0001-config.mk-Fix-compiler-and-linker.patch file://0001-config.ml-make-compatible-with-webkitgtk-2.34.0.patch', '', d)}"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.12.0.bb b/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.13.0.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.12.0.bb
rename to meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.13.0.bb
index 4baed62..be0659a 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.12.0.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.13.0.bb
@@ -16,7 +16,7 @@
            file://0001-Include-poll.h-instead-of-sys-poll.h.patch \
            file://0002-perf_examples-Remove-unused-sum-variable.patch \
            "
-SRC_URI[sha256sum] = "4b0c1f53f39a61525b69bebf532c68040c1b984d7544a8ae0844b13cd91e1ee4"
+SRC_URI[sha256sum] = "d18b97764c755528c1051d376e33545d0eb60c6ebf85680436813fa5b04cc3d1"
 
 UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/perfmon2/files/libpfm4/"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/libtraceevent/libtraceevent_1.7.1.bb b/meta-openembedded/meta-oe/recipes-kernel/libtraceevent/libtraceevent_1.7.2.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-kernel/libtraceevent/libtraceevent_1.7.1.bb
rename to meta-openembedded/meta-oe/recipes-kernel/libtraceevent/libtraceevent_1.7.2.bb
index f876f75..089b681 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/libtraceevent/libtraceevent_1.7.1.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/libtraceevent/libtraceevent_1.7.2.bb
@@ -8,7 +8,7 @@
                     file://LICENSES/LGPL-2.1;md5=b370887980db5dd40659b50909238dbd"
 SECTION = "libs"
 
-SRCREV = "4e51588b1f4d6617df7e39a38acc0d0daa3d8a3f"
+SRCREV = "1c6f0f3b2bb47571fc455dc565dc343152517d98"
 SRC_URI = "git://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git;branch=${BPN};protocol=https \
            file://0001-makefile-Do-not-preserve-ownership-in-cp-command.patch"
 
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.34.1.bb b/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.35.1.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.34.1.bb
rename to meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.35.1.bb
index c600e88..cfb461a 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.34.1.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.35.1.bb
@@ -11,18 +11,14 @@
     libass \
 "
 
-DEPENDS += " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', ' virtual/libx11 xsp libxv libxscrnsaver libxinerama', '', d)} \
-"
-
 LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRCREV_mpv = "349e437466163cb52f7d0aa227d4606edd9db501"
-SRC_URI = "git://github.com/mpv-player/mpv;name=mpv;branch=release/0.34;protocol=https \
-           https://waf.io/waf-2.0.20;name=waf;subdir=git \
+SRCREV_mpv = "140ec21c89d671d392877a7f3b91d67e7d7b9239"
+SRC_URI = "git://github.com/mpv-player/mpv;name=mpv;branch=release/0.35;protocol=https \
+           https://waf.io/waf-2.0.25;name=waf;subdir=git \
            "
-SRC_URI[waf.sha256sum] = "bf971e98edc2414968a262c6aa6b88541a26c3cd248689c89f4c57370955ee7f"
+SRC_URI[waf.sha256sum] = "21199cd220ccf60434133e1fd2ab8c8e5217c3799199c82722543970dc8e38d5"
 
 S = "${WORKDIR}/git"
 
@@ -46,7 +42,7 @@
     ${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)} \
 "
 
-PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11"
+PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 xsp libxv libxscrnsaver libxinerama libxpresent libxext"
 PACKAGECONFIG[xv] = "--enable-xv,--disable-xv,libxv"
 PACKAGECONFIG[opengl] = "--enable-gl,--disable-gl,virtual/libgl"
 PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl"
@@ -103,7 +99,7 @@
 "
 
 link_waf() {
-    ln -s waf-2.0.20 ${S}/waf
+    ln -s waf-2.0.25 ${S}/waf
 }
 do_unpack[postfuncs] += "link_waf"
 
@@ -111,5 +107,6 @@
     ${datadir}/icons \
     ${datadir}/zsh \
     ${datadir}/bash-completion \
+    ${datadir}/metainfo \
     "
 EXCLUDE_FROM_WORLD = "${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "commercial", "0", "1", d)}"
diff --git a/meta-openembedded/meta-oe/recipes-networking/cyrus-sasl/cyrus-sasl/0001-Fix-time.h-check.patch b/meta-openembedded/meta-oe/recipes-networking/cyrus-sasl/cyrus-sasl/0001-Fix-time.h-check.patch
index a6df213..3b7054a 100644
--- a/meta-openembedded/meta-oe/recipes-networking/cyrus-sasl/cyrus-sasl/0001-Fix-time.h-check.patch
+++ b/meta-openembedded/meta-oe/recipes-networking/cyrus-sasl/cyrus-sasl/0001-Fix-time.h-check.patch
@@ -28,11 +28,9 @@
  plugins/cram.c | 4 ++++
  2 files changed, 5 insertions(+), 1 deletion(-)
 
-diff --git a/configure.ac b/configure.ac
-index e1bf53b6..ad781830 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1290,7 +1290,7 @@ AC_CHECK_HEADERS_ONCE([sys/time.h])
+@@ -1231,7 +1231,7 @@ AC_CHECK_HEADERS_ONCE([sys/time.h])
  
  AC_HEADER_DIRENT
  AC_HEADER_SYS_WAIT
@@ -41,8 +39,6 @@
  
  IPv6_CHECK_SS_FAMILY()
  IPv6_CHECK_SA_LEN()
-diff --git a/plugins/cram.c b/plugins/cram.c
-index d02e9baa..695aaa91 100644
 --- a/plugins/cram.c
 +++ b/plugins/cram.c
 @@ -53,6 +53,10 @@
@@ -56,6 +52,3 @@
  #include <sasl.h>
  #include <saslplug.h>
  #include <saslutil.h>
--- 
-2.37.3
-
diff --git a/meta-openembedded/meta-oe/recipes-networking/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch b/meta-openembedded/meta-oe/recipes-networking/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch
index 1e6f996..308d882 100644
--- a/meta-openembedded/meta-oe/recipes-networking/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch
+++ b/meta-openembedded/meta-oe/recipes-networking/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch
@@ -1,50 +1,39 @@
-From 288430d3c2d3f36a4c9d40c4fffa85288f44549a Mon Sep 17 00:00:00 2001
-From: "Roy.Li" <rongqing.li@windriver.com>
-Date: Tue, 25 Jun 2013 09:22:59 +0800
-Subject: [PATCH] Avoid to call AC_TRY_RUN
+Remove AC_TRY_RUN
 
-Upstream-Status: Inappropriate [configuration]
+It can not be run during cross compile
 
-Avoid to call AC_TRY_RUN to check if GSSAPI libraries support SPNEGO
-on cross-compile environment by definition AC_ARG_ENABLE enable-spnego
-
-Signed-off-by: Roy.Li <rongqing.li@windriver.com>
----
- m4/sasl2.m4 | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/m4/sasl2.m4 b/m4/sasl2.m4
-index 80371ef..ff70083 100644
+Upstream-Status: Inappropriate [Cross-compile specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 --- a/m4/sasl2.m4
 +++ b/m4/sasl2.m4
-@@ -316,6 +316,18 @@ if test "$gssapi" != no; then
+@@ -316,28 +316,8 @@ if test "$gssapi" != no; then
    AC_CACHE_CHECK([for SPNEGO support in GSSAPI libraries],[ac_cv_gssapi_supports_spnego],[
      cmu_save_LIBS="$LIBS"
      LIBS="$LIBS $GSSAPIBASE_LIBS"
-+    AC_ARG_ENABLE([spnego],
-+                [AC_HELP_STRING([--enable-spnego=<DIR>],
-+                                [enable SPNEGO support in GSSAPI libraries [no]])],
-+                [spnego=$enableval],
-+                [spnego=no])
-+  
-+    if test "$spnego" = no; then
-+         echo "no"
-+    elif test "$spnego" = yes; then
-+         AC_DEFINE(HAVE_GSS_SPNEGO,,[Define if your GSSAPI implementation supports SPNEGO])
-+    else
-+         AC_MSG_CHECKING([for SPNEGO support in GSSAPI libraries])
-     AC_TRY_RUN([
- #ifdef HAVE_GSSAPI_H
- #include <gssapi.h>
-@@ -343,7 +355,7 @@ int main(void)
-   AS_IF([test "$ac_cv_gssapi_supports_spnego" = yes],[
-     AC_DEFINE(HAVE_GSS_SPNEGO,,[Define if your GSSAPI implementation supports SPNEGO])
-   ])
+-    AC_TRY_RUN([
+-#ifdef HAVE_GSSAPI_H
+-#include <gssapi.h>
+-#else
+-#include <gssapi/gssapi.h>
+-#endif
 -
-+   fi
- else
-   AC_MSG_RESULT([disabled])
- fi
--- 
-2.25.1
-
+-int main(void)
+-{
+-    gss_OID_desc spnego_oid = { 6, (void *) "\x2b\x06\x01\x05\x05\x02" };
+-    gss_OID_set mech_set;
+-    OM_uint32 min_stat;
+-    int have_spnego = 0;
+-                                                                               
+-    if (gss_indicate_mechs(&min_stat, &mech_set) == GSS_S_COMPLETE) {
+-	gss_test_oid_set_member(&min_stat, &spnego_oid, mech_set, &have_spnego);
+-	gss_release_oid_set(&min_stat, &mech_set);
+-    }
+-
+-    return (!have_spnego);  // 0 = success, 1 = failure
+-}
+-],[ac_cv_gssapi_supports_spnego=yes],[ac_cv_gssapi_supports_spnego=no])
++    AC_DEFINE(HAVE_GSS_SPNEGO,,[Define if your GSSAPI implementation supports SPNEGO])
++    AC_MSG_RESULT(yes)
+     LIBS="$cmu_save_LIBS"
+   ])
+   AS_IF([test "$ac_cv_gssapi_supports_spnego" = yes],[
diff --git a/meta-openembedded/meta-oe/recipes-shells/zsh/zsh_5.8.bb b/meta-openembedded/meta-oe/recipes-shells/zsh/zsh_5.8.bb
index b023e8d..7602ff9 100644
--- a/meta-openembedded/meta-oe/recipes-shells/zsh/zsh_5.8.bb
+++ b/meta-openembedded/meta-oe/recipes-shells/zsh/zsh_5.8.bb
@@ -22,8 +22,8 @@
 EXTRA_OECONF = " \
     --bindir=${base_bindir} \
     --enable-etcdir=${sysconfdir} \
-    --enable-fndir=${datadir}/${PN}/${PV}/functions \
-    --enable-site-fndir=${datadir}/${PN}/site-functions \
+    --enable-fndir=${datadir}/${BPN}/${PV}/functions \
+    --enable-site-fndir=${datadir}/${BPN}/site-functions \
     --with-term-lib='ncursesw ncurses' \
     --with-tcsetpgrp \
     --enable-cap \
diff --git a/meta-openembedded/meta-oe/recipes-support/cli11/cli11_2.3.2.bb b/meta-openembedded/meta-oe/recipes-support/cli11/cli11_2.3.2.bb
index b9ff914..7c6b254 100644
--- a/meta-openembedded/meta-oe/recipes-support/cli11/cli11_2.3.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/cli11/cli11_2.3.2.bb
@@ -15,11 +15,10 @@
 
 do_configure:prepend() {
     mkdir -p ${S}/tests/catch2
-    cp ${DL_DIR}/catch.hpp ${S}/tests/catch2/catch.hpp 
+    cp ${DL_DIR}/catch.hpp ${S}/tests/catch2/catch.hpp
 }
 
 inherit cmake
-inherit ptest
 
 # cli11 is a header only C++ library, so the main package will be empty.
 RDEPENDS:${PN}-dev = ""
diff --git a/meta-openembedded/meta-oe/recipes-support/dc/double-conversion_3.2.1.bb b/meta-openembedded/meta-oe/recipes-support/dc/double-conversion_3.2.1.bb
index cc54dc6..92466f6 100644
--- a/meta-openembedded/meta-oe/recipes-support/dc/double-conversion_3.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/dc/double-conversion_3.2.1.bb
@@ -10,9 +10,32 @@
 
 SRC_URI = " \
         git://github.com/google/double-conversion.git;protocol=https;branch=master \
+        file://run-ptest \
 "
 SRCREV = "af09fd65fcf24eee95dc62813ba9123414635428"
 
-inherit cmake
+inherit cmake ptest
 
 EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON"
+
+# These ptest use ctest (provided by cmake)
+RDEPENDS:${PN}-ptest += "cmake"
+# Build tests only if ptest is enabled
+EXTRA_OECMAKE += "${@bb.utils.contains('PTEST_ENABLED', '1', '-DBUILD_TESTING=ON', '', d)}"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/test
+    cp -rf ${B}/test ${D}${PTEST_PATH}
+    install -m 0644 ${B}/CTestTestfile.cmake ${D}${PTEST_PATH}/
+    files="
+        CTestTestfile.cmake
+        test/CTestTestfile.cmake
+        test/cmake_install.cmake
+        test/cctest/CTestTestfile.cmake
+        test/cctest/cmake_install.cmake
+    "
+    for file in $files; do
+        sed -i -e "s|${B}|${PTEST_PATH}|g" -e "s|${S}|${PTEST_PATH}|g" -e "s|${WORKDIR}/recipe-sysroot-native||g" "${D}${PTEST_PATH}/${file}"
+    done
+
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/dc/files/run-ptest b/meta-openembedded/meta-oe/recipes-support/dc/files/run-ptest
new file mode 100644
index 0000000..9240a3f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/dc/files/run-ptest
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# This script runs tests taken from the github CI for the Double-Conversion library.
+# For more information, please see: https://github.com/google/double-conversion/blob/master/.github/workflows/ci.yml#L60
+
+# Count the number of failed tests
+NUM_FAILS=0
+
+# Run all tests using ctest
+ctest -V
+
+# VCount the number of failed tests by checking the LastTest.log file generated by ctest
+NUM_FAILS=$(grep -c "Failed" Testing/Temporary/LastTest.log)
+
+# Run the tests directly as well, just in case we forgot to add it to ctest
+test/cctest/cctest
+if [ $? -ne 0 ]; then
+    # If the test failed, increment the number of failed tests
+    NUM_FAILS=$(expr $NUM_FAILS + 1)
+fi
+
+# Return the number of failed tests
+exit $NUM_FAILS
diff --git a/meta-openembedded/meta-oe/recipes-support/emacs/emacs_28.2.bb b/meta-openembedded/meta-oe/recipes-support/emacs/emacs_28.2.bb
index 7b0a422..df210ef 100644
--- a/meta-openembedded/meta-oe/recipes-support/emacs/emacs_28.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/emacs/emacs_28.2.bb
@@ -5,6 +5,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 SRC_URI = "https://ftp.gnu.org/pub/gnu/emacs/emacs-${PV}.tar.xz \
+           file://0001-largefile.m4-Update-from-latest-gnulib.patch \
           "
 SRC_URI:append:class-target = " file://usemake-docfile-native.patch"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/emacs/files/0001-largefile.m4-Update-from-latest-gnulib.patch b/meta-openembedded/meta-oe/recipes-support/emacs/files/0001-largefile.m4-Update-from-latest-gnulib.patch
new file mode 100644
index 0000000..72c0c0e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/emacs/files/0001-largefile.m4-Update-from-latest-gnulib.patch
@@ -0,0 +1,390 @@
+From c2bea3d033b5abd44698722d8eedc2b87373b33b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 2 Apr 2023 10:42:43 -0700
+Subject: [PATCH] largefile.m4: Update from latest gnulib
+
+brings in latest largefile specific changes which autoconf 2.72+ requires
+
+Upstream-Status: Inappropriate [Drop it with new emacs release which has it]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ m4/largefile.m4 | 330 ++++++++++++++++++++++++++++++++++++++----------
+ 1 file changed, 263 insertions(+), 67 deletions(-)
+
+diff --git a/m4/largefile.m4 b/m4/largefile.m4
+index 3e8b5e3..7fb81b8 100644
+--- a/m4/largefile.m4
++++ b/m4/largefile.m4
+@@ -1,7 +1,7 @@
+ # Enable large files on systems where this is not the default.
+ # Enable support for files on Linux file systems with 64-bit inode numbers.
+ 
+-# Copyright 1992-1996, 1998-2022 Free Software Foundation, Inc.
++# Copyright 1992-1996, 1998-2023 Free Software Foundation, Inc.
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -10,8 +10,9 @@
+ # It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this
+ # setting of _LARGEFILE_SOURCE is needed so that <stdio.h> declares fseeko
+ # and ftello in C++ mode as well.
++# Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038.
+ AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
+-[
++ m4_ifndef([AC_SYS_YEAR2038], [[
+   AC_REQUIRE([AC_CANONICAL_HOST])
+   AC_FUNC_FSEEKO
+   case "$host_os" in
+@@ -20,10 +21,10 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
+         [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).])
+       ;;
+   esac
+-])
++ ]])
++)
+ 
+-# Work around a problem in Autoconf through at least 2.71 on glibc 2.34+
+-# with _TIME_BITS.  Also, work around a problem in autoconf <= 2.69:
++# Work around a problem in autoconf <= 2.69:
+ # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5,
+ # or configures them incorrectly in some cases.
+ m4_version_prereq([2.70], [], [
+@@ -43,33 +44,258 @@ m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES],
+ ])
+ ])# m4_version_prereq 2.70
+ 
++# Support AC_SYS_YEAR2038, even if Autoconf 2.71 or earlier.
++# This code is taken from Autoconf master.
++m4_ifndef([AC_SYS_YEAR2038], [
++
++# _AC_SYS_YEAR2038_TEST_CODE
++# --------------------------
++# C code used to probe for time_t that can represent time points more
++# than 2**31 - 1 seconds after the epoch.  With the usual Unix epoch,
++# these correspond to dates after 2038-01-18 22:14:07 +0000 (Gregorian),
++# hence the name.
++AC_DEFUN([_AC_SYS_YEAR2038_TEST_CODE],
++[[
++  #include <time.h>
++  /* Check that time_t can represent 2**32 - 1 correctly.  */
++  #define LARGE_TIME_T \\
++    ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30)))
++  int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535
++                           && LARGE_TIME_T % 65537 == 0)
++                          ? 1 : -1];
++]])
++
++# _AC_SYS_YEAR2038_OPTIONS
++# ------------------------
++# List of known ways to enable support for large time_t.  If you change
++# this list you probably also need to change the AS_CASE at the end of
++# _AC_SYS_YEAR2038_PROBE.
++m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize(
++    ["none needed"]                   dnl 64-bit and newer 32-bit Unix
++    ["-D_TIME_BITS=64"]               dnl glibc 2.34 with some 32-bit ABIs
++    ["-D__MINGW_USE_VC2005_COMPAT"]   dnl 32-bit MinGW
++    ["-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"]
++                                      dnl 32-bit MinGW (misconfiguration)
++))
++
++# _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED])
++# -----------------------------------------
++# Subroutine of AC_SYS_YEAR2038.  Probe for time_t that can represent
++# time points more than 2**31 - 1 seconds after the epoch (dates after
++# 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts
++# to one of the values in the _AC_SYS_YEAR2038_OPTIONS list, or to
++# "support not detected" if none of them worked.  Then, set compilation
++# options and #defines as necessary to enable large time_t support.
++#
++# Note that we do not test whether mktime, localtime, etc. handle
++# large values of time_t correctly, as that would require use of
++# AC_TRY_RUN.  Note also that some systems only support large time_t
++# together with large off_t.
++#
++# If support is not detected, the behavior depends on which of the
++# top-level AC_SYS_YEAR2038 macros was used (see below).
++#
++# If you change this macro you may also need to change
++# _AC_SYS_YEAR2038_OPTIONS.
++AC_DEFUN([_AC_SYS_YEAR2038_PROBE],
++[AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038],
++  [ac_cv_sys_year2038_opts],
++  [ac_save_CPPFLAGS="$CPPFLAGS"
++  ac_opt_found=no
++  for ac_opt in _AC_SYS_YEAR2038_OPTIONS; do
++    AS_IF([test x"$ac_opt" != x"none needed"],
++      [CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"])
++    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_YEAR2038_TEST_CODE])],
++      [ac_cv_sys_year2038_opts="$ac_opt"
++      ac_opt_found=yes])
++    test $ac_opt_found = no || break
++  done
++  CPPFLAGS="$ac_save_CPPFLAGS"
++  test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected"])
++
++ac_have_year2038=yes
++AS_CASE([$ac_cv_sys_year2038_opts],
++  ["none needed"], [],
++  ["support not detected"],
++    [ac_have_year2038=no
++     AS_CASE([$enable_year2038],
++      [yes],
++        [# If we're not cross compiling and 'touch' works with a large
++        # timestamp, then we can presume the system supports wider time_t
++        # *somehow* and we just weren't able to detect it.  One common
++        # case that we deliberately *don't* probe for is a system that
++        # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers
++        # wide time_t.  (It would be inappropriate for us to override an
++        # intentional use of -m32.)  Error out, demanding use of
++        # --disable-year2038 if this is intentional.
++        AS_IF([test $cross_compiling = no],
++          [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null],
++            [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`],
++              [*'Feb  7  2106'* | *'Feb  7 17:10'*],
++              [AC_MSG_FAILURE(m4_text_wrap(
++      [this system appears to support timestamps after January 2038,
++       but no mechanism for enabling wide 'time_t' was detected.
++       Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.)
++       To proceed with 32-bit time_t, configure with '--disable-year2038'.],
++      [], [], [55]))])])])])],
++
++  ["-D_TIME_BITS=64"],
++    [AC_DEFINE([_TIME_BITS], [64],
++      [Number of bits in time_t, on hosts where this is settable.])],
++
++  ["-D__MINGW_USE_VC2005_COMPAT=1"],
++    [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1],
++      [Define to 1 on platforms where this makes time_t a 64-bit type.])],
+ 
+-# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE,
+-#                               CACHE-VAR,
+-#                               DESCRIPTION,
+-#                               PROLOGUE, [FUNCTION-BODY])
+-# --------------------------------------------------------
+-m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE],
+-[AC_CACHE_CHECK([for $1 value needed for large files], [$3],
+-[while :; do
+-  m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])(
+-    [AC_LANG_PROGRAM([$5], [$6])],
+-    [$3=no; break])
+-  m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])(
+-    [AC_LANG_PROGRAM([#undef $1
+-#define $1 $2
+-$5], [$6])],
+-    [$3=$2; break])
+-  $3=unknown
+-  break
+-done])
+-case $$3 in #(
+-  no | unknown) ;;
+-  *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);;
+-esac
+-rm -rf conftest*[]dnl
+-])# _AC_SYS_LARGEFILE_MACRO_VALUE
++  ["-U_USE_32_BIT_TIME_T"*],
++    [AC_MSG_FAILURE(m4_text_wrap(
++      [the 'time_t' type is currently forced to be 32-bit.
++       It will stop working after January 2038.
++       Remove _USE_32BIT_TIME_T from the compiler flags.],
++      [], [], [55]))],
++
++  [AC_MSG_ERROR(
++    [internal error: bad value for \$ac_cv_sys_year2038_opts])])
++])
++
++# _AC_SYS_YEAR2038_ENABLE
++# -----------------------
++# Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN.
++# Depending on which of the YEAR2038 macros was used, add either an
++# --enable-year2038, or a --disable-year2038, or no option at all to
++# the configure script.  Note that this is expanded very late and
++# therefore there cannot be any code in the AC_ARG_ENABLE.  The
++# default value for enable_year2038 is emitted unconditionally
++# because the generated code always looks at this variable.
++m4_define([_AC_SYS_YEAR2038_ENABLE],
++[m4_divert_text([DEFAULTS],
++  m4_provide_if([AC_SYS_YEAR2038],
++    [enable_year2038=yes],
++    [enable_year2038=no]))]dnl
++[AC_ARG_ENABLE([year2038],
++  m4_provide_if([AC_SYS_YEAR2038],
++    [AS_HELP_STRING([--disable-year2038],
++      [do not support timestamps after 2038])],
++    [AS_HELP_STRING([--enable-year2038],
++      [support timestamps after 2038])]))])
++
++# _AC_SYS_YEAR2038_OPT_IN
++# -----------------------
++# If the --enable-year2038 option is given to configure, attempt to
++# detect and activate support for large time_t on 32-bit systems.
++# This macro is automatically invoked by AC_SYS_LARGEFILE when large
++# *file* support is detected.  It does not AC_REQUIRE AC_SYS_LARGEFILE
++# to avoid a dependency loop, and is therefore unsafe to expose as a
++# documented macro.
++AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
++[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
++  AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
++  AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
++])])
++
++# AC_SYS_YEAR2038
++# ---------------
++# Attempt to detect and activate support for large time_t.
++# On systems where time_t is not always 64 bits, this probe can be
++# skipped by passing the --disable-year2038 option to configure.
++AC_DEFUN([AC_SYS_YEAR2038],
++[AC_REQUIRE([AC_SYS_LARGEFILE])]dnl
++[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
++  AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
++  AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
++])])
++
++# _AC_SYS_LARGEFILE_TEST_CODE
++# ---------------------------
++# C code used to probe for large file support.
++m4_define([_AC_SYS_LARGEFILE_TEST_CODE],
++[@%:@include <sys/types.h>
++ /* Check that off_t can represent 2**63 - 1 correctly.
++    We can't simply define LARGE_OFF_T to be 9223372036854775807,
++    since some C++ compilers masquerading as C compilers
++    incorrectly reject 9223372036854775807.  */
++@%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
++  int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721
++		       && LARGE_OFF_T % 2147483647 == 1)
++		      ? 1 : -1]];[]dnl
++])
++
++# _AC_SYS_LARGEFILE_OPTIONS
++# -------------------------
++# List of known ways to enable support for large files.  If you change
++# this list you probably also need to change the AS_CASE at the end of
++# _AC_SYS_LARGEFILE_PROBE.
++m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize(
++    ["none needed"]                   dnl Most current systems
++    ["-D_FILE_OFFSET_BITS=64"]        dnl X/Open LFS spec
++    ["-D_LARGE_FILES=1"]              dnl AIX (which versions?)
++    ["-n32"]                          dnl Irix 6.2 w/ SGI compiler
++))
++
++# _AC_SYS_LARGEFILE_PROBE
++# -----------------------
++# Subroutine of AC_SYS_LARGEFILE. Probe for large file support and set
++# the cache variable ac_cv_sys_largefile_opts to one of the values in
++# the _AC_SYS_LARGEFILE_OPTIONS list, or to "support not detected" if
++# none of the options in that list worked.  Then, set compilation
++# options and #defines as necessary to enable large file support.
++#
++# If large file support is not detected, the behavior depends on which of
++# the top-level AC_SYS_LARGEFILE macros was used (see below).
++#
++# If you change this macro you may also need to change
++# _AC_SYS_LARGEFILE_OPTIONS.
++AC_DEFUN([_AC_SYS_LARGEFILE_PROBE],
++[AC_CACHE_CHECK([for $CC option to enable large file support],
++  [ac_cv_sys_largefile_opts],
++  [ac_save_CC="$CC"
++  ac_opt_found=no
++  for ac_opt in _AC_SYS_LARGEFILE_OPTIONS; do
++    AS_IF([test x"$ac_opt" != x"none needed"],
++      [CC="$ac_save_CC $ac_opt"])
++    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])],
++      [ac_cv_sys_largefile_opts="$ac_opt"
++      ac_opt_found=yes])
++    test $ac_opt_found = no || break
++  done
++  CC="$ac_save_CC"
++  test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"])
++
++ac_have_largefile=yes
++AS_CASE([$ac_cv_sys_largefile_opts],
++  ["none needed"], [],
++  ["support not detected"],
++    [ac_have_largefile=no],
++
++  ["-D_FILE_OFFSET_BITS=64"],
++    [AC_DEFINE([_FILE_OFFSET_BITS], [64],
++      [Number of bits in a file offset, on hosts where this is settable.])],
++
++  ["-D_LARGE_FILES=1"],
++    [AC_DEFINE([_LARGE_FILES], [1],
++      [Define to 1 on platforms where this makes off_t a 64-bit type.])],
++
++  ["-n32"],
++    [CC="$CC -n32"],
++
++  [AC_MSG_ERROR(
++    [internal error: bad value for \$ac_cv_sys_largefile_opts])])
++
++_AC_SYS_YEAR2038_OPT_IN
++])
+ 
++# _AC_SYS_LARGEFILE_ENABLE
++# ------------------------
++# Subroutine of AC_SYS_LARGEFILE.  Note that this
++# is expanded very late and therefore there cannot be any code in the
++# AC_ARG_ENABLE.  The default value for enable_largefile is emitted
++# unconditionally because the generated shell code always looks at
++# this variable.
++m4_define([_AC_SYS_LARGEFILE_ENABLE],
++[m4_divert_text([DEFAULTS],
++  enable_largefile=yes)]dnl
++[AC_ARG_ENABLE([largefile],
++  [AS_HELP_STRING([--disable-largefile], [omit support for large files])])])
+ 
+ # AC_SYS_LARGEFILE
+ # ----------------
+@@ -80,44 +306,14 @@ rm -rf conftest*[]dnl
+ # Additionally, on Linux file systems with 64-bit inodes a file that happens
+ # to have a 64-bit inode number cannot be accessed by 32-bit applications on
+ # Linux x86/x86_64.  This can occur with file systems such as XFS and NFS.
++# This macro allows configuration to continue if the system doesn't support
++# large files.
+ AC_DEFUN([AC_SYS_LARGEFILE],
+-[AC_ARG_ENABLE(largefile,
+-               [  --disable-largefile     omit support for large files])
+-AS_IF([test "$enable_largefile" != no],
+- [AC_CACHE_CHECK([for special C compiler options needed for large files],
+-    ac_cv_sys_largefile_CC,
+-    [ac_cv_sys_largefile_CC=no
+-     if test "$GCC" != yes; then
+-       ac_save_CC=$CC
+-       while :; do
+-         # IRIX 6.2 and later do not support large files by default,
+-         # so use the C compiler's -n32 option if that helps.
+-         AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])])
+-         AC_COMPILE_IFELSE([], [break])
+-         CC="$CC -n32"
+-         AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break])
+-         break
+-       done
+-       CC=$ac_save_CC
+-       rm -f conftest.$ac_ext
+-    fi])
+-  if test "$ac_cv_sys_largefile_CC" != no; then
+-    CC=$CC$ac_cv_sys_largefile_CC
+-  fi
+-
+-  _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
+-    ac_cv_sys_file_offset_bits,
+-    [Number of bits in a file offset, on hosts where this is settable.],
+-    [_AC_SYS_LARGEFILE_TEST_INCLUDES])
+-  AS_CASE([$ac_cv_sys_file_offset_bits],
+-    [unknown],
+-      [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1],
+-         [ac_cv_sys_large_files],
+-         [Define for large files, on AIX-style hosts.],
+-         [_AC_SYS_LARGEFILE_TEST_INCLUDES])],
+-    [64],
+-      [gl_YEAR2038_BODY([])])])
+-])# AC_SYS_LARGEFILE
++[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
++  AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE])
++  AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
++])])
++])# m4_ifndef AC_SYS_YEAR2038
+ 
+ # Enable large files on systems where this is implemented by Gnulib, not by the
+ # system headers.
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.10.0.bb b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.10.0.bb
index a1bf67c..0fc779a 100644
--- a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.10.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.10.0.bb
@@ -28,6 +28,7 @@
     -DBUILD_STATIC_LIBS=OFF \
     -DCMAKE_POSITION_INDEPENDANT_CODE=ON \
     -DWITH_MANPAGES=OFF \
+    -DPROXY_PLUGINDIR=${libdir}/freerdp/proxy/plugins \
 "
 
 PACKAGECONFIG ??= " \
diff --git a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick/0001-m4-Use-autconf-provided-AC_FUNC_FSEEKO.patch b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick/0001-m4-Use-autconf-provided-AC_FUNC_FSEEKO.patch
new file mode 100644
index 0000000..6b225a1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick/0001-m4-Use-autconf-provided-AC_FUNC_FSEEKO.patch
@@ -0,0 +1,42 @@
+From 0912e49d58c2a5f455fabf76ab7dc61cfc44cfb9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 30 Mar 2023 20:50:26 -0700
+Subject: [PATCH] m4: Use autconf provided AC_FUNC_FSEEKO
+
+This helps in building with autoconf 2.72
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ m4/ac_func_fseeko.m4 | 18 +-----------------
+ 1 file changed, 1 insertion(+), 17 deletions(-)
+
+diff --git a/m4/ac_func_fseeko.m4 b/m4/ac_func_fseeko.m4
+index eaeabb978..f9b8859cf 100644
+--- a/m4/ac_func_fseeko.m4
++++ b/m4/ac_func_fseeko.m4
+@@ -53,20 +53,4 @@
+ # --------------
+ AN_FUNCTION([ftello], [AC_FUNC_FSEEKO])
+ AN_FUNCTION([fseeko], [AC_FUNC_FSEEKO])
+-AC_DEFUN([AC_FUNC_FSEEKO],
+-[_AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
+-   [ac_cv_sys_largefile_source],
+-   [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).],
+-   [[#include <sys/types.h> /* for off_t */
+-     #include <stdio.h>]],
+-   [[int (*fp) (FILE *, off_t, int) = fseeko;
+-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);]])
+-
+-# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+-# in glibc 2.1.3, but that breaks too many other things.
+-# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+-if test $ac_cv_sys_largefile_source != unknown; then
+-  AC_DEFINE(HAVE_FSEEKO, 1,
+-    [Define to 1 if fseeko (and presumably ftello) exists and is declared.])
+-fi
+-])# AC_FUNC_FSEEKO
++AC_FUNC_FSEEKO
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.10.bb b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.10.bb
rename to meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb
index b6344a3..07434c0 100644
--- a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb
@@ -4,23 +4,27 @@
 DESCRIPTION = "ImageMagick is a collection of tools for displaying, converting, and \
 editing raster and vector image files. It can read and write over 200 image file formats."
 LICENSE = "ImageMagick"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b97c12a9213df1499565d69b92c73dd7 \
-                    file://NOTICE;md5=d8b9d2ccf273687ad12ebd06e5d8478f"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ac58ac14f9d9d02cafd2d81ef38fb2cc \
+                    file://NOTICE;md5=bcbf1f1897b40ec8df39700cb560e9ed"
 # FIXME: There are many more checked libraries. All should be added or explicitly disabled to get consistent results.
 DEPENDS = "lcms bzip2 jpeg libpng tiff zlib fftw freetype libtool"
 
 BASE_PV := "${PV}"
-PV .= "-62"
-SRC_URI = "git://github.com/ImageMagick/ImageMagick.git;branch=main;protocol=https"
-SRCREV = "35b4991eb0939a327f3489988c366e21068b0178"
+PV .= "-5"
+SRC_URI = "git://github.com/ImageMagick/ImageMagick.git;branch=main;protocol=https \
+           file://0001-m4-Use-autconf-provided-AC_FUNC_FSEEKO.patch"
+SRCREV = "2d24be538f286962c355cf422bb525375ac77998"
 
 S = "${WORKDIR}/git"
 
 inherit autotools pkgconfig update-alternatives
+export ac_cv_sys_file_offset_bits="64"
 
 # xml disabled because it's using xml2-config --prefix to determine prefix which returns just /usr with our libxml2
 # if someone needs xml support then fix it first
-EXTRA_OECONF = "--program-prefix= --program-suffix=.im7 --without-perl --disable-openmp --without-xml --disable-opencl"
+EXTRA_OECONF = "--program-prefix= --program-suffix=.im7 --without-perl \
+                --disable-openmp --without-xml --disable-opencl \
+                --enable-largefile"
 
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
 PACKAGECONFIG[cxx] = "--with-magick-plus-plus,--without-magick-plus-plus"
diff --git a/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.7.bb b/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.8.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.7.bb
rename to meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.8.bb
index c83ee92..0afe8a6 100644
--- a/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.7.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.8.bb
@@ -9,7 +9,7 @@
 S = "${WORKDIR}/git"
 B = "${S}"
 
-SRCREV = "0f47dde41f92f00b12160387659501edefd05b38"
+SRCREV = "12b8e6bff611eecb0343ee8a765151e7d9d3547b"
 SRC_URI = "git://github.com/rhinstaller/libbytesize;branch=master;protocol=https"
 
 inherit gettext autotools pkgconfig python3native
diff --git a/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.10.bb b/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.10.bb
index c208a20..491b6a7 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.10.bb
@@ -6,9 +6,13 @@
 
 inherit meson gobject-introspection gtk-doc gettext vala
 
-PACKAGECONFIG ??= "${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'vapi', '', d)}"
+PACKAGECONFIG:class-target ??= "${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'vapi', '', d)}"
 PACKAGECONFIG[vapi] = "-Dvapi=true,-Dvapi=false"
 
+EXTRA_OEMESON:append:class-native = " -Dtests=false -Dintrospection=false"
+
 SRC_URI = "git://github.com/hughsie/libgusb.git;branch=main;protocol=https"
 SRCREV = "332d5b987ffecb824426e88518e05547faf2b520"
 S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
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
index 2db16e1..53882b2 100644
--- 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
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e16cf0e247d84f8999bf55865a9c98cf"
 
-SRC_URI = "git://github.com/js-cookie/js-cookie.git;protocol=http;branch=master;protocol=https"
+SRC_URI = "git://github.com/js-cookie/js-cookie.git;protocol=https;branch=master"
 
 SRCREV = "0ba77141dd215782cc7770347a457906908c66ff"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libstemmer/libstemmer/0001-Build-so-lib.patch b/meta-openembedded/meta-oe/recipes-support/libstemmer/libstemmer/0001-Build-so-lib.patch
index 37c5c3d..2529d5d 100644
--- a/meta-openembedded/meta-oe/recipes-support/libstemmer/libstemmer/0001-Build-so-lib.patch
+++ b/meta-openembedded/meta-oe/recipes-support/libstemmer/libstemmer/0001-Build-so-lib.patch
@@ -8,7 +8,7 @@
 
 Stolen from [1]
 
-[1] https://aur.archlinux.org/cgit/aur.git/commit/dynamiclib.patch?h=snowball-git&id=a9cbf4f42f3661e4b8f791cd4374233821716ea1
+[1] https://raw.githubusercontent.com/archlinux/svntogit-packages/packages/snowball/trunk/dynamiclib.diff
 
 Upstream-Status: Pending
 
@@ -19,36 +19,33 @@
  2 files changed, 11 insertions(+), 2 deletions(-)
  create mode 100644 libstemmer/symbol.map
 
-diff --git a/GNUmakefile b/GNUmakefile
-index cbd6ff7..a85230b 100644
 --- a/GNUmakefile
 +++ b/GNUmakefile
-@@ -162,10 +162,10 @@ C_OTHER_OBJECTS = $(C_OTHER_SOURCES:.c=.o)
+@@ -170,12 +170,12 @@ C_OTHER_OBJECTS = $(C_OTHER_SOURCES:.c=.
  JAVA_CLASSES = $(JAVA_SOURCES:.java=.class)
  JAVA_RUNTIME_CLASSES=$(JAVARUNTIME_SOURCES:.java=.class)
  
 -CFLAGS=-O2 -W -Wall -Wmissing-prototypes -Wmissing-declarations
 +CFLAGS=-O2 -fPIC -W -Wall -Wmissing-prototypes -Wmissing-declarations
- CPPFLAGS=-Iinclude
+ CPPFLAGS=
  
--all: snowball libstemmer.o stemwords $(C_OTHER_SOURCES) $(C_OTHER_HEADERS) $(C_OTHER_OBJECTS)
-+all: snowball libstemmer.o libstemmer.so stemwords $(C_OTHER_SOURCES) $(C_OTHER_HEADERS) $(C_OTHER_OBJECTS)
+ INCLUDES=-Iinclude
  
- clean:
- 	rm -f $(COMPILER_OBJECTS) $(RUNTIME_OBJECTS) \
-@@ -212,6 +212,9 @@ libstemmer/libstemmer.o: libstemmer/modules.h $(C_LIB_HEADERS)
- libstemmer.o: libstemmer/libstemmer.o $(RUNTIME_OBJECTS) $(C_LIB_OBJECTS)
+-all: snowball$(EXEEXT) libstemmer.a stemwords$(EXEEXT) $(C_OTHER_SOURCES) $(C_OTHER_HEADERS) $(C_OTHER_OBJECTS)
++all: snowball$(EXEEXT) libstemmer.a libstemmer.so stemwords$(EXEEXT) $(C_OTHER_SOURCES) $(C_OTHER_HEADERS) $(C_OTHER_OBJECTS)
+ 
+ algorithms.mk: libstemmer/mkalgorithms.pl libstemmer/modules.txt
+ 	libstemmer/mkalgorithms.pl algorithms.mk libstemmer/modules.txt
+@@ -225,6 +225,9 @@ libstemmer/libstemmer.o: libstemmer/modu
+ libstemmer.a: libstemmer/libstemmer.o $(RUNTIME_OBJECTS) $(C_LIB_OBJECTS)
  	$(AR) -cru $@ $^
  
 +libstemmer.so: libstemmer/libstemmer.o $(RUNTIME_OBJECTS) $(C_LIB_OBJECTS)
 +	$(CC) $(CFLAGS) -shared $(LDFLAGS) -Wl,-soname,libstemmer.so.0,-version-script,libstemmer/symbol.map -o $@.0.0.0 $^
 +
- stemwords: $(STEMWORDS_OBJECTS) libstemmer.o
- 	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
+ examples/%.o: examples/%.c
+ 	$(CC) $(CFLAGS) $(INCLUDES) $(CPPFLAGS) -c -o $@ $<
  
-diff --git a/libstemmer/symbol.map b/libstemmer/symbol.map
-new file mode 100644
-index 0000000..7a3d423
 --- /dev/null
 +++ b/libstemmer/symbol.map
 @@ -0,0 +1,6 @@
@@ -58,6 +55,3 @@
 +    local:
 +        *;
 +};
--- 
-2.20.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/libstemmer/libstemmer_git.bb b/meta-openembedded/meta-oe/recipes-support/libstemmer/libstemmer_2.2.0.bb
similarity index 72%
rename from meta-openembedded/meta-oe/recipes-support/libstemmer/libstemmer_git.bb
rename to meta-openembedded/meta-oe/recipes-support/libstemmer/libstemmer_2.2.0.bb
index 7f0706e..be2935a 100644
--- a/meta-openembedded/meta-oe/recipes-support/libstemmer/libstemmer_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libstemmer/libstemmer_2.2.0.bb
@@ -3,21 +3,18 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://COPYING;md5=19139aaf3c8c8fa1ca6edd59c072fb9f"
 
-DEPENDS:class-target = "${BPN}-native"
+DEPENDS:append:class-target = " ${BPN}-native"
 
-SRC_URI = "\
-    git://github.com/snowballstem/snowball.git;branch=master;protocol=https \
-    file://0001-Build-so-lib.patch \
-"
-SRCREV = "4764395431c8f2a0b4fe18b816ab1fc966a45837"
+SRC_URI = "git://github.com/snowballstem/snowball.git;branch=master;protocol=https \
+           file://0001-Build-so-lib.patch \
+           "
+SRCREV = "48a67a2831005f49c48ec29a5837640e23e54e6b"
 S = "${WORKDIR}/git"
-PV = "2.1.0"
+
 LIBVER = "0.0.0"
 
 inherit lib_package
 
-BBCLASSEXTEND = "native"
-
 do_compile:prepend:class-target() {
     # use native tools
     sed -i 's:./snowball :snowball :g' ${S}/GNUmakefile
@@ -34,5 +31,7 @@
     ln -s libstemmer.so.${LIBVER} ${D}${libdir}/libstemmer.so
 
     install -d ${D}${includedir}
-	install -m 644 ${S}/include/*.h ${D}${includedir}
+    install -m 644 ${S}/include/*.h ${D}${includedir}
 }
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/libtinyxml2/files/run-ptest b/meta-openembedded/meta-oe/recipes-support/libtinyxml2/files/run-ptest
new file mode 100644
index 0000000..8709126
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libtinyxml2/files/run-ptest
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+for i in `ls xmltest`; do
+    ./$i
+    if [ $? -eq 0 ]; then
+        echo "PASS: $i"
+    else
+        echo "FAIL: $i"
+    fi
+done
diff --git a/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_9.0.0.bb b/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_9.0.0.bb
index 7f20598..7ef4d89 100644
--- a/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_9.0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_9.0.0.bb
@@ -4,14 +4,22 @@
 LICENSE = "Zlib"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=135624eef03e1f1101b9ba9ac9b5fffd"
 
-SRC_URI = "git://github.com/leethomason/tinyxml2.git;branch=master;protocol=https"
-
 SRCREV = "1dee28e51f9175a31955b9791c74c430fe13dc82"
+SRC_URI = "git://github.com/leethomason/tinyxml2.git;branch=master;protocol=https \
+           file://run-ptest"
 
 S = "${WORKDIR}/git"
 
-inherit cmake
+inherit meson ptest
+
+EXTRA_OEMESON += "${@bb.utils.contains('PTEST_ENABLED', '1', '-Dtests=true', '', d)}"
+
+CXXFLAGS:append:libc-musl = " -D_LARGEFILE64_SOURCE"
+
+do_install_ptest() {
+    install -Dm 0755 ${B}/xmltest ${D}${PTEST_PATH}/xmltest
+    install -d ${D}${PTEST_PATH}/resources/out
+    install -Dm 0644 ${B}/resources/*.xml ${D}${PTEST_PATH}/resources/
+}
 
 BBCLASSEXTEND = "native"
-
-EXTRA_OECMAKE += "-Dtinyxml2_SHARED_LIBS=YES"
diff --git a/meta-openembedded/meta-oe/recipes-support/links/links_2.28.bb b/meta-openembedded/meta-oe/recipes-support/links/links_2.29.bb
similarity index 78%
rename from meta-openembedded/meta-oe/recipes-support/links/links_2.28.bb
rename to meta-openembedded/meta-oe/recipes-support/links/links_2.29.bb
index a36393f..e3a15d1 100644
--- a/meta-openembedded/meta-oe/recipes-support/links/links_2.28.bb
+++ b/meta-openembedded/meta-oe/recipes-support/links/links_2.29.bb
@@ -8,4 +8,4 @@
                 --without-libtiff --without-svgalib --with-fb \
                 --without-directfb --without-pmshell --without-atheos \
                 --without-x"
-SRC_URI[sha256sum] = "2fd5499b13dee59457c132c167b8495c40deda75389489c6cccb683193f454b4"
+SRC_URI[sha256sum] = "22aa96c0b38e1a6f8f7ed9d7a4167a47fc37246097759ef6059ecf8f9ead7998"
diff --git a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/run-ptest b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/run-ptest
index ba7a2c7..320240f 100644
--- a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/run-ptest
+++ b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/run-ptest
@@ -1,3 +1,9 @@
 #!/bin/sh
 
-make -C tests test
+make -C tests test | sed -e '/\[PASS\]/ s/^/PASS: /g' \
+                         -e '/\[FAIL\]/ s/^/FAIL: /g' \
+                         -e '/\[IGNORE\]/ s/^/SKIP: /g' \
+                         -e 's/IGNORE:/SKIP:/' \
+                         -e 's/: \[PASS\]//' \
+                         -e 's/: \[FAIL\]//' \
+                         -e 's/: \[IGNORE\]//'
diff --git a/meta-openembedded/meta-oe/recipes-support/pcsc-tools/pcsc-tools_1.6.2.bb b/meta-openembedded/meta-oe/recipes-support/pcsc-tools/pcsc-tools_1.6.2.bb
index 26faade..b71fb04 100644
--- a/meta-openembedded/meta-oe/recipes-support/pcsc-tools/pcsc-tools_1.6.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pcsc-tools/pcsc-tools_1.6.2.bb
@@ -13,4 +13,12 @@
 
 DEPENDS = "pcsc-lite"
 
+RDEPENDS:${PN} += " \
+	${@bb.utils.contains('DISTRO_FEATURES','systemd','pcsc-lite-systemd', 'pcsc-lite', d)} \
+	perl \
+	perl-module-getopt-std \
+	perl-module-file-stat \
+	libpcsc-perl \
+"
+
 FILES:${PN} += "${datadir}/pcsc/smartcard_list.txt"
diff --git a/meta-openembedded/meta-oe/recipes-support/poco/poco/run-ptest b/meta-openembedded/meta-oe/recipes-support/poco/poco/run-ptest
index c479f7a..c9896ea 100644
--- a/meta-openembedded/meta-oe/recipes-support/poco/poco/run-ptest
+++ b/meta-openembedded/meta-oe/recipes-support/poco/poco/run-ptest
@@ -1,9 +1,8 @@
 #!/bin/sh
 while read runner; do
-  pushd . >/dev/null
+  oldpath=`pwd` >/dev/null
   cd bin
   echo Testing $runner
   ./$runner-testrunner -all
-  popd >/dev/null
+  cd $oldpath >/dev/null
 done < testrunners
-
diff --git a/meta-openembedded/meta-oe/recipes-support/reboot-mode/reboot-mode_git.bb b/meta-openembedded/meta-oe/recipes-support/reboot-mode/reboot-mode_git.bb
index 20e77c6..4c34368 100644
--- a/meta-openembedded/meta-oe/recipes-support/reboot-mode/reboot-mode_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/reboot-mode/reboot-mode_git.bb
@@ -10,9 +10,9 @@
 S = "${WORKDIR}/git"
 
 do_compile() {
-    ${CC} ${CFLAGS} ${LDFLAGS} reboot-mode.c -o reboot-mode
+    ${CC} ${CFLAGS} ${LDFLAGS} ${S}/reboot-mode.c -o ${B}/reboot-mode
 }
 
 do_install() {
-    install -D -m 0755 ${S}/reboot-mode ${D}${bindir}/reboot-mode
+    install -D -m 0755 ${B}/reboot-mode ${D}${bindir}/reboot-mode
 }
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
index 0d9a8c9..15380f5 100644
--- 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
@@ -9,4 +9,3 @@
 S = "${WORKDIR}/git"
 
 inherit cmake
-inherit ptest
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_4.0.1.bb b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_4.0.1.bb
index 4521593..650c7bd 100644
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_4.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_4.0.1.bb
@@ -85,6 +85,10 @@
     # Remove /var/run as it is created on startup
     rm -rf ${D}${localstatedir}/run
 
+    # it causes install conflict when multilib enabled
+    # since python support is disabled, not deliver it
+    rm -f ${D}${bindir}/syslog-ng-update-virtualenv
+
     # support for systemd
     if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
         install -m 644 ${WORKDIR}/syslog-ng.conf.systemd ${D}${sysconfdir}/${BPN}/${BPN}.conf
diff --git a/meta-openembedded/meta-perl/README b/meta-openembedded/meta-perl/README
index 13014b0..1663150 100644
--- a/meta-openembedded/meta-perl/README
+++ b/meta-openembedded/meta-perl/README
@@ -52,7 +52,7 @@
 This layer depends on:
 
   URI: git://git.openembedded.org/openembedded-core
-  branch: master
+  branch: mickledore 
 
 Adding the meta-perl layer to your build
 ---------------------------------------
@@ -73,14 +73,13 @@
 -----------
 
 Send patches / pull requests to openembedded-devel@lists.openembedded.org with
-'[meta-perl]' in the subject.
+'[meta-perl][mickledore]' in the subject.
 
 When sending single patches, please using something like:
-git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-perl][PATCH'
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-perl][mickledore][PATCH'
 
-Layer maintainers:
-    Hongxu Jia <hongxu.jia@windriver.com>
-    Tim "moto-timo" Orling <ticotimo@gmail.com>
+Layer maintainers: Armin Kuster <akuster808@gmail.com>
+    
 
 License
 -------
diff --git a/meta-openembedded/meta-perl/conf/include/ptest-packagelists-meta-perl.inc b/meta-openembedded/meta-perl/conf/include/ptest-packagelists-meta-perl.inc
new file mode 100644
index 0000000..1a8c759
--- /dev/null
+++ b/meta-openembedded/meta-perl/conf/include/ptest-packagelists-meta-perl.inc
@@ -0,0 +1,50 @@
+#
+# Lists of the ptest in meta-perl, sorted into two sets by the time they take
+# Please keep these sorted in alphabetical order
+#
+# A first pass at getting all meta-perl recipes which inherit ptest
+# meta_perl_ptest_recipes=$(bitbake-layers show-recipes --recipes-only --layer meta-perl --inherits ptest --bare | tr '\n' ' ' | pcregrep -o1 '^NOTE:.+===(.+)$')
+#
+# ptests which take less than ~30s each
+PTESTS_FAST_META_PERL = "\
+    libcapture-tiny-perl \
+    libcgi-perl \
+    libcrypt-openssl-random-perl \
+    libextutils-config-perl \
+    libhtml-tagset-perl \
+    libmozilla-ca-perl \
+    libstrictures-perl \
+    libterm-readkey-perl \
+    libtest-nowarnings-perl \
+"
+
+PTESTS_SLOW_META_PERL = "\
+    libio-socket-ssl-perl \
+"
+
+PTESTS_PROBLEMS_META_PERL ="\
+    libauthen-sasl-perl \
+    libconfig-autoconf-perl \
+    libcrypt-openssl-guess-perl \
+    libcrypt-openssl-rsa-perl \
+    libdata-hexdump-perl \
+    libdbd-sqlite-perl \
+    libdigest-hmac-perl \
+    libdigest-sha1-perl \
+    libnet-dns-perl \
+    libnet-dns-sec-perl \
+    libnet-ldap-perl \
+    libencode-perl \
+    libextutils-installpaths-perl \
+    libfile-slurper-perl \
+    libhtml-parser-perl \
+    libmime-types-perl \
+    libnet-ssleay-perl \
+    libsub-uplevel-perl \
+    libtest-deep-perl \
+    libtest-harness-perl \
+    libtest-warn-perl \
+    libunicode-linebreak-perl \
+    libunix-statgrab \
+    libxml-libxml-perl \
+"
diff --git a/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-base.bb b/meta-openembedded/meta-perl/recipes-core/images/meta-perl-base.bb
similarity index 100%
rename from meta-openembedded/meta-perl/recipes-perl/images/meta-perl-base.bb
rename to meta-openembedded/meta-perl/recipes-core/images/meta-perl-base.bb
diff --git a/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-image.bb b/meta-openembedded/meta-perl/recipes-core/images/meta-perl-image.bb
similarity index 100%
rename from meta-openembedded/meta-perl/recipes-perl/images/meta-perl-image.bb
rename to meta-openembedded/meta-perl/recipes-core/images/meta-perl-image.bb
diff --git a/meta-openembedded/meta-perl/recipes-core/images/meta-perl-ptest-all-image.bb b/meta-openembedded/meta-perl/recipes-core/images/meta-perl-ptest-all-image.bb
new file mode 100644
index 0000000..236043c
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-core/images/meta-perl-ptest-all-image.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Recipe to trigger execution of all meta-perl ptest images."
+HOMEPAGE = "https://www.openembedded.org/"
+
+LICENSE = "MIT"
+
+inherit features_check nopackages
+REQUIRED_DISTRO_FEATURES = "ptest"
+
+require conf/include/ptest-packagelists-meta-perl.inc
+
+# Include the full set of ptests
+PTESTS_META_PERL = "${PTESTS_FAST_META_PERL} ${PTESTS_SLOW_META_PERL}"
+
+do_testimage[noexec] = "1"
+do_testimage[depends] = "${@' '.join(['meta-perl-ptest-image-'+x+':do_testimage' for x in d.getVar('PTESTS_META_PERL').split()])}"
+
+do_build[depends] = "${@' '.join(['meta-perl-ptest-image-'+x+':do_build' for x in d.getVar('PTESTS_META_PERL').split()])}"
+
+# normally image.bbclass would do this
+EXCLUDE_FROM_WORLD = "1"
+
+python () {
+    if bb.utils.contains('IMAGE_CLASSES', 'testimage', True, False, d):
+        bb.build.addtask("do_testimage", "", "", d)
+}
diff --git a/meta-openembedded/meta-perl/recipes-core/images/meta-perl-ptest-fast-image.bb b/meta-openembedded/meta-perl/recipes-core/images/meta-perl-ptest-fast-image.bb
new file mode 100644
index 0000000..5d8afa0
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-core/images/meta-perl-ptest-fast-image.bb
@@ -0,0 +1,6 @@
+require meta-perl-ptest-all-image.bb
+
+DESCRIPTION = "Recipe to trigger execution of all fast meta-perl ptest images."
+
+PTESTS_META_PERL = "${PTESTS_FAST_META_PERL}"
+
diff --git a/meta-openembedded/meta-perl/recipes-core/images/meta-perl-ptest-image.bb b/meta-openembedded/meta-perl/recipes-core/images/meta-perl-ptest-image.bb
new file mode 100644
index 0000000..7cca640
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-core/images/meta-perl-ptest-image.bb
@@ -0,0 +1,41 @@
+inherit features_check
+REQUIRED_DISTRO_FEATURES += "ptest"
+
+require  meta-perl-base.bb
+
+SUMMARY = "meta-perl build ptest image"
+
+require conf/include/ptest-packagelists-meta-perl.inc
+
+DESCRIPTION += "Also including the ${MCNAME} ptest package."
+HOMEPAGE = "https://www.openembedded.org/"
+
+PTESTS_META_PERL = "${PTESTS_SLOW_META_PERL} ${PTESTS_FAST_META_PERL}"
+
+IMAGE_INSTALL:append = " ${MCNAME}-ptest openssh"
+
+BBCLASSEXTEND = "${@' '.join(['mcextend:'+x for x in d.getVar('PTESTS_META_PERL').split()])}"
+
+# The image can be sufficiently large (~1.8GB) that we need to be careful that it fits in a live
+# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
+# box) and explicitly add up to 1500MB.
+IMAGE_OVERHEAD_FACTOR = "1.0"
+IMAGE_ROOTFS_EXTRA_SPACE = "324288"
+# If a particular ptest needs more space, it can be customized:
+#IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-<pn> = "1024288"
+
+# ptests need more memory than standard to avoid the OOM killer
+QB_MEM = "-m 1024"
+# If a particular ptest needs more memory, it can be customized:
+#QB_MEM:virtclass-mcextend-<pn> = "-m 4096"
+
+TEST_SUITES = "ping ssh parselogs ptest"
+
+# Sadly at the moment the full set of ptests is not robust enough and sporadically fails in random places
+PTEST_EXPECT_FAILURE = "1"
+
+python () {
+    if not d.getVar("MCNAME"):
+        raise bb.parse.SkipRecipe("No class extension set")
+}
+
diff --git a/meta-openembedded/meta-perl/recipes-perl/packagegroups/packagegroup-meta-perl.bb b/meta-openembedded/meta-perl/recipes-core/packagegroups/packagegroup-meta-perl.bb
similarity index 100%
rename from meta-openembedded/meta-perl/recipes-perl/packagegroups/packagegroup-meta-perl.bb
rename to meta-openembedded/meta-perl/recipes-core/packagegroups/packagegroup-meta-perl.bb
diff --git a/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-ptest-image.bb b/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-ptest-image.bb
deleted file mode 100644
index a9b4cc3..0000000
--- a/meta-openembedded/meta-perl/recipes-perl/images/meta-perl-ptest-image.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require  meta-perl-base.bb
-
-SUMMARY = "meta-perl build ptest image"
-
-inherit features_check
-
-REQUIRED_DISTRO_FEATURES += "ptest"
-
-IMAGE_INSTALL += "packagegroup-meta-perl-ptest"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl/no-exec-on-configure.patch b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl/no-exec-on-configure.patch
index 6efa7d8..9620df5 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl/no-exec-on-configure.patch
+++ b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl/no-exec-on-configure.patch
@@ -1,3 +1,7 @@
+Avoid running target binaries during in cross build
+
+Upstream-Status: Inappropriate [Cross-compile specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 --- a/inc/Module/Install/PRIVATE/Net/SSLeay.pm	2018-08-27 14:56:24.788544991 +0200
 +++ b/inc/Module/Install/PRIVATE/Net/SSLeay.pm	2018-08-27 15:00:12.847266331 +0200
 @@ -24,20 +24,7 @@
diff --git a/meta-openembedded/meta-python/README b/meta-openembedded/meta-python/README
index 36c1939..768c94a 100644
--- a/meta-openembedded/meta-python/README
+++ b/meta-openembedded/meta-python/README
@@ -13,11 +13,11 @@
 
 	URI: git://git.openembedded.org/openembedded-core
 	layers: meta
-	branch: master
+	branch: mickledore
 
 	URI: git://git.openembedded.org/meta-openembedded
 	layers: meta-oe
-	branch: master
+	branch: mickledore
 
 Contributing
 -------------------------
@@ -28,14 +28,12 @@
 before posting.
 
 Send pull requests to openembedded-devel@lists.openembedded.org with
-'[meta-python]' in the subject.
+'[meta-python][mickledore]' in the subject.
 
 When sending single patches, please use something like:
-git send-email -M -1 --to=openembedded-devel@lists.openembedded.org --subject-prefix='meta-python][PATCH'
+git send-email -M -1 --to=openembedded-devel@lists.openembedded.org --subject-prefix='meta-python][mickledore][PATCH'
 
 Maintenance
 -------------------------
 
-Layer maintainers:
-        Tim "moto-timo" Orling <TicoTimo@gmail.com>
-        Derek Straka <derek@asterius.io>
+Layer maintainers: Armin Kuster <akuster808@gmail.com>
diff --git a/meta-openembedded/meta-python/conf/include/ptest-packagelists-meta-python.inc b/meta-openembedded/meta-python/conf/include/ptest-packagelists-meta-python.inc
new file mode 100644
index 0000000..ef5d20b
--- /dev/null
+++ b/meta-openembedded/meta-python/conf/include/ptest-packagelists-meta-python.inc
@@ -0,0 +1,82 @@
+#
+# Lists of the ptest in meta-python, sorted into two sets by the time they take
+# Please keep these sorted in alphabetical order
+#
+# A first pass at getting all meta-python recipes which inherit ptest
+# meta_python_ptest_recipes=$(bitbake-layers show-recipes --recipes-only --layer meta-python --inherits ptest --bare | tr '\n' ' ' | pcregrep -o1 '^NOTE:.+===(.+)$')
+#
+# ptests which take less than ~30s each
+PTESTS_FAST_META_PYTHON = "\
+    python3-ansicolors \
+    python3-asgiref \
+    python3-aspectlib \
+    python3-blinker \
+    python3-cachetools \
+    python3-cbor2 \
+    python3-click \
+    python3-dominate \
+    python3-execnet \
+    python3-geojson \
+    python3-html2text \
+    python3-inflection \
+    python3-intervals \
+    python3-ipy \
+    python3-iso3166 \
+    python3-parse-type \
+    python3-polyline \
+    python3-precise-runner \
+    python3-prettytable \
+    python3-ptyprocess \
+    python3-pyasn1-modules \
+    python3-pyroute2 \
+    python3-pyserial \
+    python3-pytoml \
+    python3-requests-file \
+    python3-requests-toolbelt \
+    python3-semver \
+    python3-serpent \
+    python3-simpleeval \
+    python3-smpplib \
+    python3-soupsieve \
+    python3-sqlparse \
+    python3-u-msgpack-python \
+    python3-unidiff \
+    python3-uritemplate \
+    python3-xmltodict \
+    python3-xxhash \
+"
+
+PTESTS_SLOW_META_PYTHON = "\
+    python3-lz4 \
+"
+
+PTESTS_PROBLEMS_META_PYTHON ="\
+    python3-appdirs \
+    python3-betamax \
+    python3-dnspython \
+    python3-fastjsonschema \
+    python3-gpiod \
+    python3-gunicorn \
+    python3-inotify \
+    python3-jdcal \
+    python3-jsmin \
+    python3-license-expression \
+    python3-msgpack \
+    python3-multidict \
+    python3-ordered-set \
+    python3-parse \
+    python3-pillow \
+    python3-pint \
+    python3-py-cpuinfo \
+    python3-pytest-lazy-fixture \
+    python3-pyzmq \
+    python3-scrypt \
+    python3-service-identity \
+    python3-trustme \
+    python3-typeguard \
+    python3-whoosh \
+    python3-ujson \
+    python3-xlrd \
+    python3-yappi \
+    python3-yarl \
+"
diff --git a/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-all-image.bb b/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-all-image.bb
new file mode 100644
index 0000000..fd4dc42
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-all-image.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Recipe to trigger execution of all meta-python ptest images."
+HOMEPAGE = "https://www.openembedded.org/"
+
+LICENSE = "MIT"
+
+inherit features_check nopackages
+REQUIRED_DISTRO_FEATURES = "ptest"
+
+require conf/include/ptest-packagelists-meta-python.inc
+
+# Include the full set of ptests
+PTESTS_META_PYTHON = "${PTESTS_FAST_META_PYTHON} ${PTESTS_SLOW_META_PYTHON}"
+
+do_testimage[noexec] = "1"
+do_testimage[depends] = "${@' '.join(['meta-python-ptest-image-'+x+':do_testimage' for x in d.getVar('PTESTS_META_PYTHON').split()])}"
+
+do_build[depends] = "${@' '.join(['meta-python-ptest-image-'+x+':do_build' for x in d.getVar('PTESTS_META_PYTHON').split()])}"
+
+# normally image.bbclass would do this
+EXCLUDE_FROM_WORLD = "1"
+
+python () {
+    if bb.utils.contains('IMAGE_CLASSES', 'testimage', True, False, d):
+        bb.build.addtask("do_testimage", "", "", d)
+}
diff --git a/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-fast-image.bb b/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-fast-image.bb
new file mode 100644
index 0000000..4f93a15
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-fast-image.bb
@@ -0,0 +1,6 @@
+require meta-python-ptest-all-image.bb
+
+DESCRIPTION = "Recipe to trigger execution of all fast meta-python ptest images."
+
+PTESTS_META_PYTHON = "${PTESTS_FAST_META_PYTHON}"
+
diff --git a/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-image.bb b/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-image.bb
index d497016..a649cbb 100644
--- a/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-image.bb
+++ b/meta-openembedded/meta-python/recipes-core/images/meta-python-ptest-image.bb
@@ -1,5 +1,41 @@
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "ptest"
+
+require conf/include/ptest-packagelists-meta-python.inc
+
 require  meta-python-image-base.bb
 
 SUMMARY = "meta-python ptest test image"
 
-IMAGE_INSTALL += "packagegroup-meta-python3-ptest"
+DESCRIPTION += "Also including the ${MCNAME} ptest package."
+HOMEPAGE = "https://www.openembedded.org/"
+
+PTESTS_META_PYTHON = "${PTESTS_SLOW_META_PYTHON} ${PTESTS_FAST_META_PYTHON}"
+
+IMAGE_INSTALL:append = " ${MCNAME}-ptest openssh"
+
+BBCLASSEXTEND = "${@' '.join(['mcextend:'+x for x in d.getVar('PTESTS_META_PYTHON').split()])}"
+
+# The image can be sufficiently large (~1.8GB) that we need to be careful that it fits in a live
+# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
+# box) and explicitly add up to 1500MB.
+IMAGE_OVERHEAD_FACTOR = "1.0"
+IMAGE_ROOTFS_EXTRA_SPACE = "324288"
+# If a particular ptest needs more space, it can be customized:
+#IMAGE_ROOTFS_EXTRA_SPACE:virtclass-mcextend-<pn> = "1024288"
+
+# ptests need more memory than standard to avoid the OOM killer
+QB_MEM = "-m 1024"
+# If a particular ptest needs more memory, it can be customized:
+#QB_MEM:virtclass-mcextend-<pn> = "-m 4096"
+
+TEST_SUITES = "ping ssh parselogs ptest"
+
+# Sadly at the moment the full set of ptests is not robust enough and sporadically fails in random places
+PTEST_EXPECT_FAILURE = "1"
+
+python () {
+    if not d.getVar("MCNAME"):
+        raise bb.parse.SkipRecipe("No class extension set")
+}
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aenum_3.1.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aenum_3.1.12.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-aenum_3.1.11.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-aenum_3.1.12.bb
index b2fba6f..e3c4382 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aenum_3.1.11.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aenum_3.1.12.bb
@@ -3,7 +3,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://aenum/LICENSE;md5=c6a85477543f8b8591b9c1f82abebbe9"
 
-SRC_URI[sha256sum] = "aed2c273547ae72a0d5ee869719c02a643da16bf507c80958faadc7e038e3f73"
+SRC_URI[sha256sum] = "3e531c91860a81f885f7e6e97d219ae9772cb899580084788935dad7d9742ef0"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.0.5.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.0.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.0.5.bb
index 3ec271b..1e884f4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.0.5.bb
@@ -3,7 +3,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=2ee41112a44fe7014dce33e26468ba93"
 
-SRC_URI[sha256sum] = "69db74ba0c72897452f2666267bd76c9cd10829686e99889e6758fac99b23286"
+SRC_URI[sha256sum] = "fe3ce77125f434a0dd1bffe5f4643e64126d5731ce8d173d36f62fa43d6eb6f7"
 
 PYPI_PACKAGE = "argcomplete"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib/run-ptest
index b63c4de..8d2017d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib/run-ptest
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib/run-ptest
@@ -1,3 +1,3 @@
 #!/bin/sh
 
-pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib_2.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib_2.0.0.bb
index 416b031..d2b0864 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib_2.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib_2.0.0.bb
@@ -21,8 +21,10 @@
 }
 
 RDEPENDS:${PN}-ptest += "\
-    python3-tornado \
     python3-process-tests \
+    python3-pytest \
+    python3-tornado \
+    python3-unittest-automake-output \
 "
 
 RDEPENDS:${PN} += "python3-core python3-fields"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.15.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.15.1.bb
similarity index 90%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.15.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.15.1.bb
index a5f30b7..cde2d03 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.15.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.15.1.bb
@@ -4,7 +4,7 @@
 LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a70cf540abf41acb644ac3b621b2fad1"
 
-SRC_URI[sha256sum] = "525f126d5dc1b8b0b6ee398b33159105615d92dc4a17f2cd064125d57f6186fa"
+SRC_URI[sha256sum] = "af4e0aff46e2868218502789898269ed95b663fba49e65d91c1e09c966266c34"
 
 inherit pypi python_setuptools_build_meta
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.25.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.26.0.bb
similarity index 89%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.25.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.26.0.bb
index cf27f7f..4c5c781 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.25.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.26.0.bb
@@ -8,7 +8,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
 SRCNAME = "cassandra-driver"
 
-SRC_URI[sha256sum] = "8ad7d7c090eb1cac6110b3bfc1fd2d334ac62f415aac09350ebb8d241b7aa7ee"
+SRC_URI[sha256sum] = "425338478c14324704f6973451f3c54f7ffa65b49be045ad1de19628ab6e9492"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.26.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.26.1.bb
similarity index 90%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.26.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.26.1.bb
index e4644d9..f95e2ea 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.26.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cmake_3.26.1.bb
@@ -11,7 +11,7 @@
 PYPI_ARCHIVE_NAME_PREFIX = "pypi-"
 
 inherit pypi python_setuptools_build_meta
-SRC_URI[sha256sum] = "c18185c9cc147d0fa1e9228962aa37901b37866bd5d617e9efa23dfe706f7321"
+SRC_URI[sha256sum] = "4e0eb3c03dcf2d459f78d96cc85f7482476aeb1ae5ada65150b1db35c0f70cc7"
 
 SRC_URI += " \
 	file://CMakeLists.txt \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-crc32c_2.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-crc32c_2.3.bb
index 2032568..da756ea 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-crc32c_2.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-crc32c_2.3.bb
@@ -6,7 +6,7 @@
     file://LICENSE;md5=4fbd65380cdd255951079008b364516c \
     file://LICENSE.google-crc32c;md5=e9ed01b5e5ac9eae23fc2bb33701220c \
     file://LICENSE.slice-by-8;md5=6b3bc7709d6b2db6646ec2467310ff6b \
-    file://crc32c_adler.c;startline=9;endline=24;md5=c60e6e55d0e5d95effa6fad27db0711a \
+    file://crc32c_adler.c;beginline=9;endline=24;md5=9c8bd2afd2d340fd37c038759cd4eff8 \
 "
 
 SRC_URI[sha256sum] = "17ce6c596ad0d53df52dcd72defb66984aeabd98fbefea7ba848a6b6bdece36a"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.1.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.1.8.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.1.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.1.8.bb
index 4d59230..67b8294 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.1.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateparser_1.1.8.bb
@@ -3,7 +3,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3d3ed25571191e7aa3f55d0a6efe0051"
 
-SRC_URI[sha256sum] = "ff047d9cffad4d3113ead8ec0faf8a7fc43bab7d853ac8715e071312b53c465a"
+SRC_URI[sha256sum] = "86b8b7517efcc558f085a142cdb7620f0921543fcabdb538c8a4c4001d8178e3"
 
 PYPI_PACKAGE = "dateparser"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.1.0.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.0.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.1.0.bb
index 22de9d4..5b85607 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.1.0.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=5dbb7fb7d72da3921202dd7b995d3ecf"
 
-SRC_URI[sha256sum] = "1162e4c8e5501bd36291b668f4449b8125fea5ef64a26da8d71da31126725aa5"
+SRC_URI[sha256sum] = "dbd7eba3cf0b3b4934f627ba24851a3e0798ef2bc9104555a4cd831f2e6e8e14"
 
 PYPI_PACKAGE = "elementpath"
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.81.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.83.0.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.81.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.83.0.bb
index d471d9a..3dc6940 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.81.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.83.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
 
-SRC_URI[sha256sum] = "8faab0b9b19d3797b455d33320c643253b6761fd0d3f3adb54792ab155d0795a"
+SRC_URI[sha256sum] = "d07509f1b2d2b2427363b454db996f7a15e1751a48cfcaf28427050560dd51cf"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.16.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.17.1.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.16.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.17.1.bb
index b5f2b7e..9f324c7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.16.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.17.1.bb
@@ -6,7 +6,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "07e14f34ec288e3f33e00e2e3cc40c8942aa5d4ceac06256a28cd8e786591420"
+SRC_URI[sha256sum] = "8f379b46bad381ad2a0b989dfb0c13ad28d3c2a79f27348213f8946a1d15d55a"
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-asyncio \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.58.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.59.0.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.58.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.59.0.bb
index 27c3b9b..49725ed 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.58.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.59.0.bb
@@ -6,7 +6,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "c727251ec025947d545184ba17e3578840fc3a24a0516a020479edab660457df"
+SRC_URI[sha256sum] = "4168fcb568a826a52f23510412da405abd93f4d23ba544bb68d943b14ba3cb44"
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-grpcio \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.21.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.22.0.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.21.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.22.0.bb
index 3e285d9..9614de9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.21.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.22.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=56e5e931172b6164b62dc7c4aba6c8cf"
 
-SRC_URI[sha256sum] = "fc144f091c7286b82bec71bdbd9b27323ba709cc612568d3000893bfd9cb4b34"
+SRC_URI[sha256sum] = "d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81"
 
 inherit pypi python_setuptools_build_meta
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.26.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.27.0.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.26.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.27.0.bb
index 79e6dd7..be0de47 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.26.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.27.0.bb
@@ -5,7 +5,7 @@
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=24cb9a367a9e641b459a01c4d15256ba"
 
-SRC_URI[sha256sum] = "169f1642cdb723133fe8fe901887f4f1b39bc036458c4664f1f9d256226ced35"
+SRC_URI[sha256sum] = "ee269c957785ef0373cc7a7323185956d83ec05e6cdf20b42a03ba7b74ac58c6"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.11.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.12.0.bb
similarity index 89%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.11.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.12.0.bb
index 875e89a..0cfc80e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.11.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.12.0.bb
@@ -6,7 +6,7 @@
 
 PYPI_PACKAGE = "ipython"
 
-SRC_URI[sha256sum] = "735cede4099dbc903ee540307b9171fbfef4aa75cfcacc5a273b2cda2f02be04"
+SRC_URI[sha256sum] = "a950236df04ad75b5bc7f816f9af3d74dc118fd42f2ff7e80e8e60ca1f182e2d"
 
 RDEPENDS:${PN} = "\
     ${PYTHON_PN}-setuptools \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_4.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_4.1.1.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_4.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_4.1.1.bb
index c96e5c3..1b65f3b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_4.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_4.1.1.bb
@@ -3,7 +3,7 @@
 LICENSE = "Python-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c80be45b33471b4a23cf53d06a8172be"
 
-SRC_URI[sha256sum] = "4a67a82ee57e35b5f6f9f7fbe6a0eda63f56ce1dd8af409b4c2a26a3340457db"
+SRC_URI[sha256sum] = "1dd0ee210160c7bd30002803c443e6260ac602ea65b065652a1d567d3bfdca7a"
 
 PYPI_PACKAGE = "jdatetime"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lorem/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-lorem/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lorem/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lorem_0.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lorem_0.1.1.bb
index 9ce7a62..a855c39 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-lorem_0.1.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lorem_0.1.1.bb
@@ -5,12 +5,25 @@
 SRC_URI[md5sum] = "e3f0064a94c13e19780eb724affdb426"
 SRC_URI[sha256sum] = "785f4109a241fc2891e59705e85d065f6e6d3ed6ad91750a8cb54d4f3e59d934"
 
+SRC_URI += "\
+        file://run-ptest \
+"
+
 PYPI_PACKAGE = "lorem"
 
-inherit pypi setuptools3
+inherit pypi setuptools3 ptest
 
 CLEANBROKEN = "1"
 
 RDEPENDS:${PN} += " \
         python3 \
 "
+RDEPENDS:${PN}-ptest += " \
+        ${PYTHON_PN}-pytest \
+        ${PYTHON_PN}-unittest-automake-output \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-oled_3.11.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-oled_3.12.0.bb
similarity index 84%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-luma-oled_3.11.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-luma-oled_3.12.0.bb
index 7ce3570..87f7ad6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-oled_3.11.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-oled_3.12.0.bb
@@ -8,7 +8,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "81583e77ecb1d3ae04a641b3311082719b7a3149c15a5f2577d9b93b243e9331"
+SRC_URI[sha256sum] = "af97d79fa3481d2c48b7bccfb6de349219f6d814fdc9a3dd075c7b2c71206450"
 
 CLEANBROKEN = "1"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-path/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-path/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-path/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.6.0.bb
index 41fe374..479177e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.6.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.6.0.bb
@@ -4,8 +4,27 @@
 
 SRC_URI[sha256sum] = "bea3816e1d54f4e33aac78d2031a0b0ed2f95e69db85b45d51f17df97071da69"
 
-inherit pypi python_setuptools_build_meta
+SRC_URI += "\
+        file://run-ptest \
+"
+
+inherit pypi python_setuptools_build_meta ptest
 
 DEPENDS += "python3-setuptools-scm-native"
 
+RDEPENDS:${PN} += " \
+        ${PYTHON_PN}-appdirs \
+"
+RDEPENDS:${PN}-ptest += " \
+        ${PYTHON_PN}-pytest \
+        ${PYTHON_PN}-unittest-automake-output \
+"
+
 BBCLASSEXTEND = "nativesdk native"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/test
+    cp -rf ${S}/test_* ${D}${PTEST_PATH}/test/
+    install -d ${D}${PTEST_PATH}/path
+    cp -rf ${S}/path/* ${D}${PTEST_PATH}/path/
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_13.0.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_13.0.6.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_13.0.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_13.0.6.bb
index 49680c3..2d9efa3 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_13.0.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_13.0.6.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b1dbd4e85f47b389bdadee9c694669f5"
 
-SRC_URI[sha256sum] = "792fba3f31e4968a5e99c19c771774083a2aa7e897ebf6f5e218e308e33a461f"
+SRC_URI[sha256sum] = "149dad28cbed2296b5074c326662d9cb0093b834b417cb9ee05828e97b282e73"
 
 PYPI_PACKAGE = "PyChromecast"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_1.10.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_1.10.7.bb
similarity index 85%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_1.10.6.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_1.10.7.bb
index c888f4a..70f6834 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_1.10.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_1.10.7.bb
@@ -5,7 +5,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "cf95adb0d1671fc38d8c43dd921ad5814a735e7d9b4d9e437c088002863854fd"
+SRC_URI[sha256sum] = "cfc83c0678b6ba51b0532bea66860617c4cd4251ecf76e9846fa5a9f3454e97e"
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-typing-extensions \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.169.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.169.3.bb
similarity index 92%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.169.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.169.3.bb
index fd78306..4f8a130 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.169.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.169.3.bb
@@ -4,7 +4,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20"
 
 SRC_URI = "git://github.com/MISP/PyMISP.git;protocol=https;branch=main"
-SRCREV = "9e2712bb1da00c7bd3559f978c6316ca0287d453"
+SRCREV = "39f5acf1f618cde6cb14dd815cbff5297a8af25a"
 S = "${WORKDIR}/git"
 
 inherit python_poetry_core
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.2.2.bb
similarity index 90%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.2.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.2.2.bb
index 5b3ea1b..783bed8 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.2.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.2.2.bb
@@ -4,7 +4,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=430604f78bee72425da231d42eac9cee"
 DEPENDS += "python3-six-native"
 
-SRC_URI[sha256sum] = "2a0c82651a7eb96c784493b5fc26ccca26ba8e9530258d811dab50b87ce132de"
+SRC_URI[sha256sum] = "6f46f55b41875e5ac41ba660f514f4bb7a732811e303f671b76f310906355089"
 S = "${WORKDIR}/pymodbus-${PV}"
 
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyproj_3.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyproj_3.5.0.bb
similarity index 73%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyproj_3.4.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyproj_3.5.0.bb
index 49e5555..f67090d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyproj_3.4.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyproj_3.5.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Python interface to PROJ (cartographic projections and coordinate transformations library)"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=dc4bb2668871655e24030dfe8d2a7ce7"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=873757af01d2d221eedb422c4c1dd163"
 DEPENDS = "python3-cython proj"
 DEPENDS:append:class-target = " python3-cython-native proj-native"
 
@@ -8,7 +8,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "261eb29b1d55b1eb7f336127344d9b31284d950a9446d1e0d1c2411f7dd8e3ac"
+SRC_URI[sha256sum] = "9859d1591c1863414d875ae0759e72c2cffc01ab989dc64137fbac572cc81bf6"
 
 RDEPENDS:${PN} = "${PYTHON_PN}-certifi proj"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate-crates.inc b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate-crates.inc
index 52fb9d4..b8a74e6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate-crates.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate-crates.inc
@@ -2,25 +2,22 @@
 
 # from Cargo.lock
 SRC_URI += " \
-    crate://crates.io/aho-corasick/0.7.18 \
-    crate://crates.io/atty/0.2.14 \
-    crate://crates.io/autocfg/1.0.1 \
+    crate://crates.io/aho-corasick/0.7.20 \
+    crate://crates.io/autocfg/1.1.0 \
     crate://crates.io/bitflags/1.3.2 \
-    crate://crates.io/block-buffer/0.9.0 \
-    crate://crates.io/cc/1.0.72 \
+    crate://crates.io/block-buffer/0.10.3 \
+    crate://crates.io/cc/1.0.78 \
     crate://crates.io/cfg-if/1.0.0 \
-    crate://crates.io/chrono/0.4.19 \
-    crate://crates.io/cpufeatures/0.2.1 \
-    crate://crates.io/cpython/0.7.0 \
-    crate://crates.io/crossbeam/0.8.1 \
-    crate://crates.io/crossbeam-channel/0.5.2 \
-    crate://crates.io/crossbeam-deque/0.8.1 \
-    crate://crates.io/crossbeam-epoch/0.9.6 \
-    crate://crates.io/crossbeam-queue/0.3.3 \
-    crate://crates.io/crossbeam-utils/0.8.6 \
-    crate://crates.io/crypto-mac/0.11.1 \
-    crate://crates.io/ctrlc/3.2.1 \
-    crate://crates.io/digest/0.9.0 \
+    crate://crates.io/cpufeatures/0.2.5 \
+    crate://crates.io/cpython/0.7.1 \
+    crate://crates.io/crossbeam/0.8.2 \
+    crate://crates.io/crossbeam-channel/0.5.6 \
+    crate://crates.io/crossbeam-deque/0.8.2 \
+    crate://crates.io/crossbeam-epoch/0.9.13 \
+    crate://crates.io/crossbeam-queue/0.3.8 \
+    crate://crates.io/crossbeam-utils/0.8.14 \
+    crate://crates.io/crypto-common/0.1.6 \
+    crate://crates.io/digest/0.10.6 \
     crate://crates.io/encoding/0.2.33 \
     crate://crates.io/encoding-index-japanese/1.20141219.5 \
     crate://crates.io/encoding-index-korean/1.20141219.5 \
@@ -28,157 +25,192 @@
     crate://crates.io/encoding-index-singlebyte/1.20141219.5 \
     crate://crates.io/encoding-index-tradchinese/1.20141219.5 \
     crate://crates.io/encoding_index_tests/0.1.4 \
-    crate://crates.io/env_logger/0.9.0 \
+    crate://crates.io/env_logger/0.10.0 \
     crate://crates.io/errno/0.2.8 \
     crate://crates.io/errno-dragonfly/0.1.2 \
-    crate://crates.io/fastrand/1.6.0 \
-    crate://crates.io/generic-array/0.14.5 \
-    crate://crates.io/getrandom/0.2.3 \
+    crate://crates.io/fastrand/1.8.0 \
+    crate://crates.io/generic-array/0.14.6 \
+    crate://crates.io/getrandom/0.2.8 \
     crate://crates.io/hermit-abi/0.1.19 \
-    crate://crates.io/hmac/0.11.0 \
-    crate://crates.io/httparse/1.5.1 \
+    crate://crates.io/hermit-abi/0.2.6 \
+    crate://crates.io/hmac/0.12.1 \
+    crate://crates.io/httparse/1.8.0 \
     crate://crates.io/humantime/2.1.0 \
     crate://crates.io/instant/0.1.12 \
-    crate://crates.io/lazy_static/1.4.0 \
-    crate://crates.io/libc/0.2.112 \
-    crate://crates.io/libsystemd/0.4.1 \
-    crate://crates.io/log/0.4.14 \
-    crate://crates.io/memchr/2.4.1 \
+    crate://crates.io/io-lifetimes/1.0.3 \
+    crate://crates.io/is-terminal/0.4.1 \
+    crate://crates.io/itoa/1.0.5 \
+    crate://crates.io/libc/0.2.138 \
+    crate://crates.io/libsystemd/0.5.0 \
+    crate://crates.io/linux-raw-sys/0.1.4 \
+    crate://crates.io/log/0.4.17 \
+    crate://crates.io/memchr/2.5.0 \
     crate://crates.io/memoffset/0.6.5 \
-    crate://crates.io/mio/0.8.0 \
-    crate://crates.io/miow/0.3.7 \
-    crate://crates.io/nix/0.23.1 \
-    crate://crates.io/ntapi/0.3.6 \
-    crate://crates.io/num-integer/0.1.44 \
-    crate://crates.io/num-traits/0.2.14 \
-    crate://crates.io/num_cpus/1.13.1 \
-    crate://crates.io/once_cell/1.9.0 \
-    crate://crates.io/opaque-debug/0.3.0 \
-    crate://crates.io/paste/1.0.6 \
-    crate://crates.io/ppv-lite86/0.2.16 \
-    crate://crates.io/proc-macro2/1.0.36 \
-    crate://crates.io/python3-sys/0.7.0 \
-    crate://crates.io/quote/1.0.14 \
-    crate://crates.io/rand/0.8.4 \
+    crate://crates.io/memoffset/0.7.1 \
+    crate://crates.io/minimal-lexical/0.2.1 \
+    crate://crates.io/mio/0.8.5 \
+    crate://crates.io/nix/0.23.2 \
+    crate://crates.io/nix/0.26.1 \
+    crate://crates.io/nom/7.1.1 \
+    crate://crates.io/num-traits/0.2.15 \
+    crate://crates.io/num_cpus/1.14.0 \
+    crate://crates.io/num_threads/0.1.6 \
+    crate://crates.io/once_cell/1.16.0 \
+    crate://crates.io/paste/1.0.11 \
+    crate://crates.io/pin-utils/0.1.0 \
+    crate://crates.io/ppv-lite86/0.2.17 \
+    crate://crates.io/proc-macro2/1.0.49 \
+    crate://crates.io/python3-sys/0.7.1 \
+    crate://crates.io/quote/1.0.23 \
+    crate://crates.io/rand/0.8.5 \
     crate://crates.io/rand_chacha/0.3.1 \
-    crate://crates.io/rand_core/0.6.3 \
-    crate://crates.io/rand_hc/0.3.1 \
-    crate://crates.io/redox_syscall/0.2.10 \
-    crate://crates.io/regex/1.5.4 \
-    crate://crates.io/regex-syntax/0.6.25 \
+    crate://crates.io/rand_core/0.6.4 \
+    crate://crates.io/redox_syscall/0.2.16 \
+    crate://crates.io/regex/1.7.0 \
+    crate://crates.io/regex-syntax/0.6.28 \
     crate://crates.io/remove_dir_all/0.5.3 \
+    crate://crates.io/rustix/0.36.5 \
     crate://crates.io/scopeguard/1.1.0 \
-    crate://crates.io/serde/1.0.133 \
-    crate://crates.io/serde_derive/1.0.133 \
-    crate://crates.io/sha2/0.9.9 \
-    crate://crates.io/simplelog/0.11.1 \
+    crate://crates.io/serde/1.0.151 \
+    crate://crates.io/serde_derive/1.0.151 \
+    crate://crates.io/sha2/0.10.6 \
+    crate://crates.io/signal-hook/0.3.14 \
+    crate://crates.io/signal-hook-registry/1.4.0 \
+    crate://crates.io/simplelog/0.12.0 \
     crate://crates.io/spmc/0.3.0 \
+    crate://crates.io/static_assertions/1.1.0 \
     crate://crates.io/subtle/2.4.1 \
-    crate://crates.io/syn/1.0.85 \
+    crate://crates.io/syn/1.0.107 \
     crate://crates.io/tempfile/3.3.0 \
-    crate://crates.io/termcolor/1.1.2 \
-    crate://crates.io/thiserror/1.0.30 \
-    crate://crates.io/thiserror-impl/1.0.30 \
+    crate://crates.io/termcolor/1.1.3 \
+    crate://crates.io/thiserror/1.0.38 \
+    crate://crates.io/thiserror-impl/1.0.38 \
     crate://crates.io/threadpool/1.8.1 \
-    crate://crates.io/time/0.1.44 \
-    crate://crates.io/typenum/1.15.0 \
-    crate://crates.io/unicode-xid/0.2.2 \
-    crate://crates.io/urlencoding/2.1.0 \
+    crate://crates.io/time/0.3.17 \
+    crate://crates.io/time-core/0.1.0 \
+    crate://crates.io/time-macros/0.2.6 \
+    crate://crates.io/typenum/1.16.0 \
+    crate://crates.io/unicode-ident/1.0.6 \
+    crate://crates.io/urlencoding/2.1.2 \
     crate://crates.io/uuid/0.8.2 \
     crate://crates.io/version_check/0.9.4 \
-    crate://crates.io/wasi/0.10.0+wasi-snapshot-preview1 \
+    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
     crate://crates.io/winapi/0.3.9 \
     crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
     crate://crates.io/winapi-util/0.1.5 \
     crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+    crate://crates.io/windows-sys/0.42.0 \
+    crate://crates.io/windows_aarch64_gnullvm/0.42.0 \
+    crate://crates.io/windows_aarch64_msvc/0.42.0 \
+    crate://crates.io/windows_i686_gnu/0.42.0 \
+    crate://crates.io/windows_i686_msvc/0.42.0 \
+    crate://crates.io/windows_x86_64_gnu/0.42.0 \
+    crate://crates.io/windows_x86_64_gnullvm/0.42.0 \
+    crate://crates.io/windows_x86_64_msvc/0.42.0 \
 "
 
-SRC_URI[aho-corasick.sha256sum] = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
-SRC_URI[atty.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-SRC_URI[autocfg.sha256sum] = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
-SRC_URI[bitflags.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-SRC_URI[block-buffer.sha256sum] = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
-SRC_URI[cc.sha256sum] = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee"
-SRC_URI[cfg-if.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-SRC_URI[chrono.sha256sum] = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
-SRC_URI[cpufeatures.sha256sum] = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469"
-SRC_URI[cpython.sha256sum] = "b7d46ba8ace7f3a1d204ac5060a706d0a68de6b42eafb6a586cc08bebcffe664"
-SRC_URI[crossbeam.sha256sum] = "4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845"
-SRC_URI[crossbeam-channel.sha256sum] = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa"
-SRC_URI[crossbeam-deque.sha256sum] = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
-SRC_URI[crossbeam-epoch.sha256sum] = "97242a70df9b89a65d0b6df3c4bf5b9ce03c5b7309019777fbde37e7537f8762"
-SRC_URI[crossbeam-queue.sha256sum] = "b979d76c9fcb84dffc80a73f7290da0f83e4c95773494674cb44b76d13a7a110"
-SRC_URI[crossbeam-utils.sha256sum] = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120"
-SRC_URI[crypto-mac.sha256sum] = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714"
-SRC_URI[ctrlc.sha256sum] = "a19c6cedffdc8c03a3346d723eb20bd85a13362bb96dc2ac000842c6381ec7bf"
-SRC_URI[digest.sha256sum] = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
-SRC_URI[encoding.sha256sum] = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec"
-SRC_URI[encoding-index-japanese.sha256sum] = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91"
-SRC_URI[encoding-index-korean.sha256sum] = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81"
-SRC_URI[encoding-index-simpchinese.sha256sum] = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7"
-SRC_URI[encoding-index-singlebyte.sha256sum] = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a"
-SRC_URI[encoding-index-tradchinese.sha256sum] = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18"
-SRC_URI[encoding_index_tests.sha256sum] = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569"
-SRC_URI[env_logger.sha256sum] = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
-SRC_URI[errno.sha256sum] = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
-SRC_URI[errno-dragonfly.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
-SRC_URI[fastrand.sha256sum] = "779d043b6a0b90cc4c0ed7ee380a6504394cee7efd7db050e3774eee387324b2"
-SRC_URI[generic-array.sha256sum] = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"
-SRC_URI[getrandom.sha256sum] = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
-SRC_URI[hermit-abi.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
-SRC_URI[hmac.sha256sum] = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
-SRC_URI[httparse.sha256sum] = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503"
-SRC_URI[humantime.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
-SRC_URI[instant.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
-SRC_URI[lazy_static.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-SRC_URI[libc.sha256sum] = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125"
-SRC_URI[libsystemd.sha256sum] = "6f4f0b5b062ba67aa075e331de778082c09e66b5ef32970ea5a1e9c37c9555d1"
-SRC_URI[log.sha256sum] = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
-SRC_URI[memchr.sha256sum] = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
-SRC_URI[memoffset.sha256sum] = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
-SRC_URI[mio.sha256sum] = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2"
-SRC_URI[miow.sha256sum] = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
-SRC_URI[nix.sha256sum] = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6"
-SRC_URI[ntapi.sha256sum] = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44"
-SRC_URI[num-integer.sha256sum] = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
-SRC_URI[num-traits.sha256sum] = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
-SRC_URI[num_cpus.sha256sum] = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
-SRC_URI[once_cell.sha256sum] = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5"
-SRC_URI[opaque-debug.sha256sum] = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
-SRC_URI[paste.sha256sum] = "0744126afe1a6dd7f394cb50a716dbe086cb06e255e53d8d0185d82828358fb5"
-SRC_URI[ppv-lite86.sha256sum] = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
-SRC_URI[proc-macro2.sha256sum] = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
-SRC_URI[python3-sys.sha256sum] = "b18b32e64c103d5045f44644d7ddddd65336f7a0521f6fde673240a9ecceb77e"
-SRC_URI[quote.sha256sum] = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d"
-SRC_URI[rand.sha256sum] = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
-SRC_URI[rand_chacha.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-SRC_URI[rand_core.sha256sum] = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
-SRC_URI[rand_hc.sha256sum] = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
-SRC_URI[redox_syscall.sha256sum] = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff"
-SRC_URI[regex.sha256sum] = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
-SRC_URI[regex-syntax.sha256sum] = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
-SRC_URI[remove_dir_all.sha256sum] = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
-SRC_URI[scopeguard.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-SRC_URI[serde.sha256sum] = "97565067517b60e2d1ea8b268e59ce036de907ac523ad83a0475da04e818989a"
-SRC_URI[serde_derive.sha256sum] = "ed201699328568d8d08208fdd080e3ff594e6c422e438b6705905da01005d537"
-SRC_URI[sha2.sha256sum] = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
-SRC_URI[simplelog.sha256sum] = "ecabc0118918611790b8615670ab79296272cbe09496b6884b02b1e929c20886"
-SRC_URI[spmc.sha256sum] = "02a8428da277a8e3a15271d79943e80ccc2ef254e78813a166a08d65e4c3ece5"
-SRC_URI[subtle.sha256sum] = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
-SRC_URI[syn.sha256sum] = "a684ac3dcd8913827e18cd09a68384ee66c1de24157e3c556c9ab16d85695fb7"
-SRC_URI[tempfile.sha256sum] = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
-SRC_URI[termcolor.sha256sum] = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
-SRC_URI[thiserror.sha256sum] = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417"
-SRC_URI[thiserror-impl.sha256sum] = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b"
-SRC_URI[threadpool.sha256sum] = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
-SRC_URI[time.sha256sum] = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
-SRC_URI[typenum.sha256sum] = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
-SRC_URI[unicode-xid.sha256sum] = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
-SRC_URI[urlencoding.sha256sum] = "68b90931029ab9b034b300b797048cf23723400aa757e8a2bfb9d748102f9821"
-SRC_URI[uuid.sha256sum] = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
-SRC_URI[version_check.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
-SRC_URI[wasi.sha256sum] = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
-SRC_URI[winapi.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-SRC_URI[winapi-i686-pc-windows-gnu.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-SRC_URI[winapi-util.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
-SRC_URI[winapi-x86_64-pc-windows-gnu.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[aho-corasick-0.7.20.sha256sum] = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[block-buffer-0.10.3.sha256sum] = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
+SRC_URI[cc-1.0.78.sha256sum] = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[cpufeatures-0.2.5.sha256sum] = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
+SRC_URI[cpython-0.7.1.sha256sum] = "3052106c29da7390237bc2310c1928335733b286287754ea85e6093d2495280e"
+SRC_URI[crossbeam-0.8.2.sha256sum] = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c"
+SRC_URI[crossbeam-channel-0.5.6.sha256sum] = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
+SRC_URI[crossbeam-deque-0.8.2.sha256sum] = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+SRC_URI[crossbeam-epoch-0.9.13.sha256sum] = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"
+SRC_URI[crossbeam-queue-0.3.8.sha256sum] = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add"
+SRC_URI[crossbeam-utils-0.8.14.sha256sum] = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
+SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+SRC_URI[digest-0.10.6.sha256sum] = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
+SRC_URI[encoding-0.2.33.sha256sum] = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec"
+SRC_URI[encoding-index-japanese-1.20141219.5.sha256sum] = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91"
+SRC_URI[encoding-index-korean-1.20141219.5.sha256sum] = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81"
+SRC_URI[encoding-index-simpchinese-1.20141219.5.sha256sum] = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7"
+SRC_URI[encoding-index-singlebyte-1.20141219.5.sha256sum] = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a"
+SRC_URI[encoding-index-tradchinese-1.20141219.5.sha256sum] = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18"
+SRC_URI[encoding_index_tests-0.1.4.sha256sum] = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569"
+SRC_URI[env_logger-0.10.0.sha256sum] = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+SRC_URI[errno-0.2.8.sha256sum] = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[fastrand-1.8.0.sha256sum] = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
+SRC_URI[generic-array-0.14.6.sha256sum] = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+SRC_URI[getrandom-0.2.8.sha256sum] = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+SRC_URI[hermit-abi-0.2.6.sha256sum] = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
+SRC_URI[hmac-0.12.1.sha256sum] = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+SRC_URI[httparse-1.8.0.sha256sum] = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[io-lifetimes-1.0.3.sha256sum] = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"
+SRC_URI[is-terminal-0.4.1.sha256sum] = "927609f78c2913a6f6ac3c27a4fe87f43e2a35367c0c4b0f8265e8f49a104330"
+SRC_URI[itoa-1.0.5.sha256sum] = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
+SRC_URI[libc-0.2.138.sha256sum] = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
+SRC_URI[libsystemd-0.5.0.sha256sum] = "8144587c71c16756b1055d3dcb0c75cb605a10ecd6523cc33702d5f90902bf6d"
+SRC_URI[linux-raw-sys-0.1.4.sha256sum] = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
+SRC_URI[log-0.4.17.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[memoffset-0.6.5.sha256sum] = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+SRC_URI[memoffset-0.7.1.sha256sum] = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[mio-0.8.5.sha256sum] = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
+SRC_URI[nix-0.23.2.sha256sum] = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c"
+SRC_URI[nix-0.26.1.sha256sum] = "46a58d1d356c6597d08cde02c2f09d785b09e28711837b1ed667dc652c08a694"
+SRC_URI[nom-7.1.1.sha256sum] = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36"
+SRC_URI[num-traits-0.2.15.sha256sum] = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+SRC_URI[num_cpus-1.14.0.sha256sum] = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5"
+SRC_URI[num_threads-0.1.6.sha256sum] = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+SRC_URI[once_cell-1.16.0.sha256sum] = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
+SRC_URI[paste-1.0.11.sha256sum] = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+SRC_URI[proc-macro2-1.0.49.sha256sum] = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5"
+SRC_URI[python3-sys-0.7.1.sha256sum] = "49f8b50d72fb3015735aa403eebf19bbd72c093bfeeae24ee798be5f2f1aab52"
+SRC_URI[quote-1.0.23.sha256sum] = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[redox_syscall-0.2.16.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+SRC_URI[regex-1.7.0.sha256sum] = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
+SRC_URI[regex-syntax-0.6.28.sha256sum] = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
+SRC_URI[remove_dir_all-0.5.3.sha256sum] = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+SRC_URI[rustix-0.36.5.sha256sum] = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588"
+SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[serde-1.0.151.sha256sum] = "97fed41fc1a24994d044e6db6935e69511a1153b52c15eb42493b26fa87feba0"
+SRC_URI[serde_derive-1.0.151.sha256sum] = "255abe9a125a985c05190d687b320c12f9b1f0b99445e608c21ba0782c719ad8"
+SRC_URI[sha2-0.10.6.sha256sum] = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
+SRC_URI[signal-hook-0.3.14.sha256sum] = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d"
+SRC_URI[signal-hook-registry-1.4.0.sha256sum] = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
+SRC_URI[simplelog-0.12.0.sha256sum] = "48dfff04aade74dd495b007c831cd6f4e0cee19c344dd9dc0884c0289b70a786"
+SRC_URI[spmc-0.3.0.sha256sum] = "02a8428da277a8e3a15271d79943e80ccc2ef254e78813a166a08d65e4c3ece5"
+SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+SRC_URI[subtle-2.4.1.sha256sum] = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
+SRC_URI[syn-1.0.107.sha256sum] = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
+SRC_URI[tempfile-3.3.0.sha256sum] = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
+SRC_URI[termcolor-1.1.3.sha256sum] = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+SRC_URI[thiserror-1.0.38.sha256sum] = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0"
+SRC_URI[thiserror-impl-1.0.38.sha256sum] = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
+SRC_URI[threadpool-1.8.1.sha256sum] = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
+SRC_URI[time-0.3.17.sha256sum] = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376"
+SRC_URI[time-core-0.1.0.sha256sum] = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
+SRC_URI[time-macros-0.2.6.sha256sum] = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2"
+SRC_URI[typenum-1.16.0.sha256sum] = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+SRC_URI[unicode-ident-1.0.6.sha256sum] = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+SRC_URI[urlencoding-2.1.2.sha256sum] = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9"
+SRC_URI[uuid-0.8.2.sha256sum] = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.42.0.sha256sum] = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+SRC_URI[windows_aarch64_gnullvm-0.42.0.sha256sum] = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
+SRC_URI[windows_aarch64_msvc-0.42.0.sha256sum] = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
+SRC_URI[windows_i686_gnu-0.42.0.sha256sum] = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
+SRC_URI[windows_i686_msvc-0.42.0.sha256sum] = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
+SRC_URI[windows_x86_64_gnu-0.42.0.sha256sum] = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
+SRC_URI[windows_x86_64_gnullvm-0.42.0.sha256sum] = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
+SRC_URI[windows_x86_64_msvc-0.42.0.sha256sum] = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-check-for-mips-targets-for-stat.st_dev-definitions.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-check-for-mips-targets-for-stat.st_dev-definitions.patch
index f41e6cf..3f8256b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-check-for-mips-targets-for-stat.st_dev-definitions.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-check-for-mips-targets-for-stat.st_dev-definitions.patch
@@ -19,7 +19,9 @@
       296 |                 device: stat.st_dev,
           |                         ^^^^^^^^^^^ expected `u64`, found `u32`
 
-Upstream-Status: Submitted [https://github.com/lucab/libsystemd-rs/pull/103]
+Drop this patch when libsystemd-rs crate bumps to 0.6.0+
+
+Upstream-Status: Backport [https://github.com/lucab/libsystemd-rs/pull/104]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  src/logging.rs | 3 +++
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Define-O_LARGEFILE-for-riscv32.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Define-O_LARGEFILE-for-riscv32.patch
new file mode 100644
index 0000000..621249c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Define-O_LARGEFILE-for-riscv32.patch
@@ -0,0 +1,21 @@
+From fdf98602ad20d06ebf65574541caac68ca421ac4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 8 Apr 2023 09:19:53 -0700
+Subject: [PATCH] musl: Define O_LARGEFILE for riscv32
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/3191]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/unix/linux_like/linux/musl/b32/riscv32/mod.rs | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
+@@ -370,6 +370,7 @@ pub const __SIZEOF_PTHREAD_CONDATTR_T: u
+ 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_LARGEFILE: ::c_int = 0o0100000;
+ pub const O_NOFOLLOW: ::c_int = 131072;
+ pub const MAP_HUGETLB: ::c_int = 262144;
+ pub const MAP_LOCKED: ::c_int = 8192;
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Define-SOCK_NONBLOCK-with-O_NONBLOCK.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Define-SOCK_NONBLOCK-with-O_NONBLOCK.patch
new file mode 100644
index 0000000..e19b50d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Define-SOCK_NONBLOCK-with-O_NONBLOCK.patch
@@ -0,0 +1,99 @@
+From f2b06fa4ea6ec9a33f8b269f0a1730a26276c5b0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 8 Apr 2023 08:25:46 -0700
+Subject: [PATCH] musl: Define SOCK_NONBLOCK with O_NONBLOCK
+
+Much like glibc, these defines are same on musl [1] [2]
+therefore consolidate the definition in one place
+for SOCK_NONBLOCK
+
+[1] https://github.com/search?q=repo%3Abminor%2Fmusl++%22%23define+SOCK_NONBLOCK%22&type=code
+[2] https://github.com/search?q=repo%3Abminor%2Fmusl++%22%23define+O_NONBLOCK%22&type=code
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/3191]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/unix/linux_like/linux/musl/b32/arm/mod.rs  | 2 --
+ src/unix/linux_like/linux/musl/b32/hexagon.rs  | 1 -
+ src/unix/linux_like/linux/musl/b32/mips/mod.rs | 2 --
+ src/unix/linux_like/linux/musl/b32/powerpc.rs  | 2 --
+ src/unix/linux_like/linux/musl/b32/x86/mod.rs  | 2 --
+ src/unix/linux_like/linux/musl/b64/mod.rs      | 2 --
+ src/unix/linux_like/linux/musl/mod.rs          | 1 +
+ 7 files changed, 1 insertion(+), 11 deletions(-)
+
+--- a/src/unix/linux_like/linux/musl/b32/arm/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/arm/mod.rs
+@@ -311,8 +311,6 @@ pub const O_SYNC: ::c_int = 1052672;
+ pub const O_RSYNC: ::c_int = 1052672;
+ pub const O_DSYNC: ::c_int = 4096;
+ 
+-pub const SOCK_NONBLOCK: ::c_int = 2048;
+-
+ pub const MAP_ANON: ::c_int = 0x0020;
+ pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+ pub const MAP_DENYWRITE: ::c_int = 0x0800;
+--- a/src/unix/linux_like/linux/musl/b32/hexagon.rs
++++ b/src/unix/linux_like/linux/musl/b32/hexagon.rs
+@@ -295,7 +295,6 @@ pub const SIG_SETMASK: ::c_int = 2; // F
+ pub const SIG_BLOCK: ::c_int = 0x000000;
+ pub const SIG_UNBLOCK: ::c_int = 0x01;
+ pub const SOCK_DGRAM: ::c_int = 2;
+-pub const SOCK_NONBLOCK: ::c_int = 2048;
+ pub const SOCK_SEQPACKET: ::c_int = 5;
+ pub const SOCK_STREAM: ::c_int = 1;
+ pub const SOL_CAIF: ::c_int = 278;
+--- a/src/unix/linux_like/linux/musl/b32/mips/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/mips/mod.rs
+@@ -250,8 +250,6 @@ pub const O_SYNC: ::c_int = 0o40020;
+ pub const O_RSYNC: ::c_int = 0o40020;
+ pub const O_DSYNC: ::c_int = 0o020;
+ 
+-pub const SOCK_NONBLOCK: ::c_int = 0o200;
+-
+ pub const MAP_ANON: ::c_int = 0x800;
+ pub const MAP_GROWSDOWN: ::c_int = 0x1000;
+ pub const MAP_DENYWRITE: ::c_int = 0x2000;
+--- a/src/unix/linux_like/linux/musl/b32/powerpc.rs
++++ b/src/unix/linux_like/linux/musl/b32/powerpc.rs
+@@ -243,8 +243,6 @@ pub const O_SYNC: ::c_int = 1052672;
+ pub const O_RSYNC: ::c_int = 1052672;
+ pub const O_DSYNC: ::c_int = 4096;
+ 
+-pub const SOCK_NONBLOCK: ::c_int = 2048;
+-
+ pub const MAP_ANON: ::c_int = 0x0020;
+ pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+ pub const MAP_DENYWRITE: ::c_int = 0x0800;
+--- a/src/unix/linux_like/linux/musl/b32/x86/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/x86/mod.rs
+@@ -300,8 +300,6 @@ pub const O_SYNC: ::c_int = 1052672;
+ pub const O_RSYNC: ::c_int = 1052672;
+ pub const O_DSYNC: ::c_int = 4096;
+ 
+-pub const SOCK_NONBLOCK: ::c_int = 2048;
+-
+ pub const MAP_ANON: ::c_int = 0x0020;
+ pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+ pub const MAP_DENYWRITE: ::c_int = 0x0800;
+--- a/src/unix/linux_like/linux/musl/b64/mod.rs
++++ b/src/unix/linux_like/linux/musl/b64/mod.rs
+@@ -133,8 +133,6 @@ s! {
+ pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+ pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+ 
+-pub const SOCK_NONBLOCK: ::c_int = 2048;
+-
+ pub const SOCK_SEQPACKET: ::c_int = 5;
+ 
+ extern "C" {
+--- a/src/unix/linux_like/linux/musl/mod.rs
++++ b/src/unix/linux_like/linux/musl/mod.rs
+@@ -527,6 +527,7 @@ pub const POSIX_MADV_DONTNEED: ::c_int =
+ pub const MAP_ANONYMOUS: ::c_int = MAP_ANON;
+ 
+ pub const SOCK_DCCP: ::c_int = 6;
++pub const SOCK_NONBLOCK: ::c_int = O_NONBLOCK;
+ pub const SOCK_PACKET: ::c_int = 10;
+ 
+ pub const SOMAXCONN: ::c_int = 128;
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Define-SOCK_SEQPACKET-in-common-place.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Define-SOCK_SEQPACKET-in-common-place.patch
new file mode 100644
index 0000000..2da3a43
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Define-SOCK_SEQPACKET-in-common-place.patch
@@ -0,0 +1,92 @@
+From e00da82cd46221bfb650895c9cea65082da66b4e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 8 Apr 2023 09:25:31 -0700
+Subject: [PATCH] musl: Define SOCK_SEQPACKET in common place
+
+This define is not architecture specific in musl [1]
+
+[1] https://git.musl-libc.org/cgit/musl/tree/include/sys/socket.h#n90
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/3191]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/unix/linux_like/linux/musl/b32/arm/mod.rs  | 1 -
+ src/unix/linux_like/linux/musl/b32/hexagon.rs  | 1 -
+ src/unix/linux_like/linux/musl/b32/mips/mod.rs | 1 -
+ src/unix/linux_like/linux/musl/b32/powerpc.rs  | 1 -
+ src/unix/linux_like/linux/musl/b32/x86/mod.rs  | 1 -
+ src/unix/linux_like/linux/musl/b64/mod.rs      | 2 --
+ src/unix/linux_like/linux/musl/mod.rs          | 1 +
+ 7 files changed, 1 insertion(+), 7 deletions(-)
+
+--- a/src/unix/linux_like/linux/musl/b32/arm/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/arm/mod.rs
+@@ -324,7 +324,6 @@ pub const MAP_SYNC: ::c_int = 0x080000;
+ 
+ pub const SOCK_STREAM: ::c_int = 1;
+ pub const SOCK_DGRAM: ::c_int = 2;
+-pub const SOCK_SEQPACKET: ::c_int = 5;
+ 
+ pub const EDEADLK: ::c_int = 35;
+ pub const ENAMETOOLONG: ::c_int = 36;
+--- a/src/unix/linux_like/linux/musl/b32/hexagon.rs
++++ b/src/unix/linux_like/linux/musl/b32/hexagon.rs
+@@ -292,7 +292,6 @@ pub const SIG_SETMASK: ::c_int = 2; // F
+ pub const SIG_BLOCK: ::c_int = 0x000000;
+ pub const SIG_UNBLOCK: ::c_int = 0x01;
+ pub const SOCK_DGRAM: ::c_int = 2;
+-pub const SOCK_SEQPACKET: ::c_int = 5;
+ pub const SOCK_STREAM: ::c_int = 1;
+ pub const SOL_CAIF: ::c_int = 278;
+ pub const SOL_IUCV: ::c_int = 277;
+--- a/src/unix/linux_like/linux/musl/b32/mips/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/mips/mod.rs
+@@ -348,7 +348,6 @@ pub const ERFKILL: ::c_int = 167;
+ 
+ pub const SOCK_STREAM: ::c_int = 2;
+ pub const SOCK_DGRAM: ::c_int = 1;
+-pub const SOCK_SEQPACKET: ::c_int = 5;
+ 
+ pub const SA_ONSTACK: ::c_int = 0x08000000;
+ pub const SA_SIGINFO: ::c_int = 8;
+--- a/src/unix/linux_like/linux/musl/b32/powerpc.rs
++++ b/src/unix/linux_like/linux/musl/b32/powerpc.rs
+@@ -255,7 +255,6 @@ pub const MAP_STACK: ::c_int = 0x020000;
+ 
+ pub const SOCK_STREAM: ::c_int = 1;
+ pub const SOCK_DGRAM: ::c_int = 2;
+-pub const SOCK_SEQPACKET: ::c_int = 5;
+ 
+ pub const EDEADLK: ::c_int = 35;
+ pub const ENAMETOOLONG: ::c_int = 36;
+--- a/src/unix/linux_like/linux/musl/b32/x86/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/x86/mod.rs
+@@ -313,7 +313,6 @@ pub const MAP_SYNC: ::c_int = 0x080000;
+ 
+ pub const SOCK_STREAM: ::c_int = 1;
+ pub const SOCK_DGRAM: ::c_int = 2;
+-pub const SOCK_SEQPACKET: ::c_int = 5;
+ 
+ pub const EDEADLK: ::c_int = 35;
+ pub const ENAMETOOLONG: ::c_int = 36;
+--- a/src/unix/linux_like/linux/musl/b64/mod.rs
++++ b/src/unix/linux_like/linux/musl/b64/mod.rs
+@@ -133,8 +133,6 @@ s! {
+ pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+ pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+ 
+-pub const SOCK_SEQPACKET: ::c_int = 5;
+-
+ extern "C" {
+     pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;
+ }
+--- a/src/unix/linux_like/linux/musl/mod.rs
++++ b/src/unix/linux_like/linux/musl/mod.rs
+@@ -530,6 +530,7 @@ pub const POSIX_MADV_DONTNEED: ::c_int =
+ 
+ pub const MAP_ANONYMOUS: ::c_int = MAP_ANON;
+ 
++pub const SOCK_SEQPACKET: ::c_int = 5;
+ pub const SOCK_DCCP: ::c_int = 6;
+ pub const SOCK_NONBLOCK: ::c_int = O_NONBLOCK;
+ pub const SOCK_PACKET: ::c_int = 10;
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Move-F_OFD_GETLK-F_OFD_SETLK-and-F_OFD_SETLKW-t.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Move-F_OFD_GETLK-F_OFD_SETLK-and-F_OFD_SETLKW-t.patch
new file mode 100644
index 0000000..9c93434
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-Move-F_OFD_GETLK-F_OFD_SETLK-and-F_OFD_SETLKW-t.patch
@@ -0,0 +1,140 @@
+From e4f6d7b6d57e83633814c54d93dff292ed0e4609 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 8 Apr 2023 09:01:54 -0700
+Subject: [PATCH] musl: Move F_OFD_GETLK, F_OFD_SETLK and F_OFD_SETLKW to
+ common location
+
+These defines are not architecture specific in musl [1] therefore move them
+to be common
+
+[1] https://git.musl-libc.org/cgit/musl/tree/include/fcntl.h#n48
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/3191]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/unix/linux_like/linux/musl/b32/arm/mod.rs     | 3 ---
+ src/unix/linux_like/linux/musl/b32/hexagon.rs     | 3 ---
+ src/unix/linux_like/linux/musl/b32/mips/mod.rs    | 3 ---
+ src/unix/linux_like/linux/musl/b32/powerpc.rs     | 3 ---
+ src/unix/linux_like/linux/musl/b32/x86/mod.rs     | 3 ---
+ src/unix/linux_like/linux/musl/b64/aarch64/mod.rs | 3 ---
+ src/unix/linux_like/linux/musl/b64/mips64.rs      | 3 ---
+ src/unix/linux_like/linux/musl/mod.rs             | 4 ++++
+ 8 files changed, 4 insertions(+), 21 deletions(-)
+
+diff --git a/src/unix/linux_like/linux/musl/b32/arm/mod.rs b/src/unix/linux_like/linux/musl/b32/arm/mod.rs
+index c47fa2c4c..3c8978e4f 100644
+--- a/src/unix/linux_like/linux/musl/b32/arm/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/arm/mod.rs
+@@ -451,9 +451,6 @@ pub const F_GETOWN: ::c_int = 9;
+ pub const F_SETLK: ::c_int = 13;
+ pub const F_SETLKW: ::c_int = 14;
+ 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 VEOL: usize = 11;
+diff --git a/src/unix/linux_like/linux/musl/b32/hexagon.rs b/src/unix/linux_like/linux/musl/b32/hexagon.rs
+index f83d208d5..720c603da 100644
+--- a/src/unix/linux_like/linux/musl/b32/hexagon.rs
++++ b/src/unix/linux_like/linux/musl/b32/hexagon.rs
+@@ -225,9 +225,6 @@ pub const F_GETOWN_EX: ::c_int = 16;
+ pub const F_GETSIG: ::c_int = 11;
+ pub const F_LINUX_SPECIFIC_BASE: ::c_int = 1024;
+ pub const FLUSHO: ::c_int = 4096;
+-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 F_OWNER_PGRP: ::c_int = 2;
+ pub const F_OWNER_PID: ::c_int = 1;
+ pub const F_OWNER_TID: ::c_int = 0;
+diff --git a/src/unix/linux_like/linux/musl/b32/mips/mod.rs b/src/unix/linux_like/linux/musl/b32/mips/mod.rs
+index d09b8278e..69e20ce32 100644
+--- a/src/unix/linux_like/linux/musl/b32/mips/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/mips/mod.rs
+@@ -388,9 +388,6 @@ pub const F_GETOWN: ::c_int = 23;
+ pub const F_SETLK: ::c_int = 34;
+ pub const F_SETLKW: ::c_int = 35;
+ pub const F_SETOWN: ::c_int = 24;
+-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 = 16;
+ pub const VEOL: usize = 17;
+diff --git a/src/unix/linux_like/linux/musl/b32/powerpc.rs b/src/unix/linux_like/linux/musl/b32/powerpc.rs
+index 3b998329b..63bc9163d 100644
+--- a/src/unix/linux_like/linux/musl/b32/powerpc.rs
++++ b/src/unix/linux_like/linux/musl/b32/powerpc.rs
+@@ -384,9 +384,6 @@ pub const F_GETOWN: ::c_int = 9;
+ pub const F_SETLK: ::c_int = 13;
+ pub const F_SETLKW: ::c_int = 14;
+ 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 VEOL: usize = 6;
+diff --git a/src/unix/linux_like/linux/musl/b32/x86/mod.rs b/src/unix/linux_like/linux/musl/b32/x86/mod.rs
+index c319b91b6..52ecf3c7e 100644
+--- a/src/unix/linux_like/linux/musl/b32/x86/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/x86/mod.rs
+@@ -441,9 +441,6 @@ pub const F_GETOWN: ::c_int = 9;
+ pub const F_SETLK: ::c_int = 13;
+ pub const F_SETLKW: ::c_int = 14;
+ 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 VEOL: usize = 11;
+diff --git a/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs b/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
+index 14b4bc6d6..522493ff3 100644
+--- a/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
++++ b/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
+@@ -250,9 +250,6 @@ 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;
+ 
+diff --git a/src/unix/linux_like/linux/musl/b64/mips64.rs b/src/unix/linux_like/linux/musl/b64/mips64.rs
+index 22ac91690..c7f041260 100644
+--- a/src/unix/linux_like/linux/musl/b64/mips64.rs
++++ b/src/unix/linux_like/linux/musl/b64/mips64.rs
+@@ -612,9 +612,6 @@ pub const F_GETOWN: ::c_int = 23;
+ pub const F_SETOWN: ::c_int = 24;
+ pub const F_SETLK: ::c_int = 6;
+ pub const F_SETLKW: ::c_int = 7;
+-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 MCL_CURRENT: ::c_int = 0x0001;
+ pub const MCL_FUTURE: ::c_int = 0x0002;
+diff --git a/src/unix/linux_like/linux/musl/mod.rs b/src/unix/linux_like/linux/musl/mod.rs
+index 37a8ca2af..9a4fa7ca7 100644
+--- a/src/unix/linux_like/linux/musl/mod.rs
++++ b/src/unix/linux_like/linux/musl/mod.rs
+@@ -506,6 +506,10 @@ pub const ECOMM: ::c_int = 70;
+ pub const EPROTO: ::c_int = 71;
+ pub const EDOTDOT: ::c_int = 73;
+ 
++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 F_RDLCK: ::c_int = 0;
+ pub const F_WRLCK: ::c_int = 1;
+ pub const F_UNLCK: ::c_int = 2;
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-riscv32-Define-F_SETLK-F_SETLKW-and-fix-F_GETLK.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-riscv32-Define-F_SETLK-F_SETLKW-and-fix-F_GETLK.patch
new file mode 100644
index 0000000..4796954
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-musl-riscv32-Define-F_SETLK-F_SETLKW-and-fix-F_GETLK.patch
@@ -0,0 +1,35 @@
+From b87552c504b53a5e5df2438adfe24e35b0168aba Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 8 Apr 2023 08:51:02 -0700
+Subject: [PATCH] musl/riscv32: Define F_SETLK, F_SETLKW and fix F_GETLK
+
+F_SETLK and F_SETLKW were not defined therefore define them
+and F_GETLK value was not matching the musl port hence fixed
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/3191]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/unix/linux_like/linux/musl/b32/riscv32/mod.rs | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs b/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
+index 9ce6a9fd3..e56ff4853 100644
+--- a/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
++++ b/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
+@@ -339,9 +339,11 @@ pub const POLLWRBAND: ::c_short = 512;
+ pub const O_ASYNC: ::c_int = 8192;
+ pub const O_NDELAY: ::c_int = 2048;
+ 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_GETOWN: ::c_int = 9;
++pub const F_GETLK: ::c_int = 12;
++pub const F_SETLK: ::c_int = 13;
++pub const F_SETLKW: ::c_int = 14;
+ pub const SFD_NONBLOCK: ::c_int = 2048;
+ pub const TCSANOW: ::c_int = 0;
+ pub const TCSADRAIN: ::c_int = 1;
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.2.1.bb
similarity index 68%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.1.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.2.1.bb
index db9a4cd..7a96635 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.1.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.2.1.bb
@@ -5,17 +5,20 @@
 BUGTRACKER = "https://gitlab.com/tschorr/pyruvate/-/issues"
 
 LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=051b48e640a6e2d795eac75542d9417c \
-                    file://LICENSE.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI += "\
     git://gitlab.com/tschorr/pyruvate.git;protocol=https;branch=main \
-    file://0001-linux.rs-Define-consts-for-rv32-architecture.patch;patchdir=../cargo_home/bitbake/nix-0.23.1/ \
+    file://0001-linux.rs-Define-consts-for-rv32-architecture.patch;patchdir=../cargo_home/bitbake/nix-0.23.2/ \
+    file://0001-musl-Define-SOCK_NONBLOCK-with-O_NONBLOCK.patch;patchdir=../cargo_home/bitbake/libc-0.2.138/ \
+    file://0001-musl-riscv32-Define-F_SETLK-F_SETLKW-and-fix-F_GETLK.patch;patchdir=../cargo_home/bitbake/libc-0.2.138/ \
+    file://0001-musl-Move-F_OFD_GETLK-F_OFD_SETLK-and-F_OFD_SETLKW-t.patch;patchdir=../cargo_home/bitbake/libc-0.2.138/ \
+    file://0001-musl-Define-O_LARGEFILE-for-riscv32.patch;patchdir=../cargo_home/bitbake/libc-0.2.138/ \
+    file://0001-musl-Define-SOCK_SEQPACKET-in-common-place.patch;patchdir=../cargo_home/bitbake/libc-0.2.138/ \
 "
-SRC_URI[sha256sum] = "10befedd97e73fc18b902d02aa3b24e8978aa162242c1b664849c886c0675899"
-SRCREV = "fcbe49cc1a06290e28a211022df759605bce980d"
+SRCREV = "57db64c9f65ced05c71b8d786c1cedfaa2991597"
 
-SRC_URI:append:mips = " file://0001-check-for-mips-targets-for-stat.st_dev-definitions.patch;patchdir=../cargo_home/bitbake/libsystemd-0.4.1/"
+SRC_URI:append:mips = " file://0001-check-for-mips-targets-for-stat.st_dev-definitions.patch;patchdir=../cargo_home/bitbake/libsystemd-0.5.0/"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.5.4.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.5.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.5.4.bb
index 9b26985..1a439cd 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.5.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.5.4.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1db1f331d351900707368237cc4880cf"
 
-SRC_URI[sha256sum] = "1eec3741cda408d3a5f84b78d089c8b8d895f21b3b050988351e925faf202864"
+SRC_URI[sha256sum] = "73ec35da4da267d6847e47f68730fdd5f62e2ca69e3ef5885c6a78a9374c3893"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2022.10.31.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2023.3.23.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2022.10.31.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2023.3.23.bb
index 19fc153..176f79e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2022.10.31.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2023.3.23.bb
@@ -5,7 +5,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83"
+SRC_URI[sha256sum] = "dc80df325b43ffea5cdea2e3eaa97a44f3dd298262b1c7fe9dbb2a9522b956a7"
 
 RDEPENDS:${PN} += " \
 	python3-stringold \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.17.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.18.0.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.17.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.18.0.bb
index c0a180a..add255d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.17.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.18.0.bb
@@ -15,7 +15,7 @@
 	${PYTHON_PN}-datetime \
 "
 
-SRC_URI[sha256sum] = "ad40860325c94d1a656da70fba5a7c4dbb2f6809d3cc2d00f74ca0b608330f14"
+SRC_URI[sha256sum] = "d07b9569a151033b462f7a7113ada94cc41ecf49daa83d35f5f852a0b9cf3b44"
 
 PYPI_PACKAGE = "sentry-sdk"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_3.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_3.0.2.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_3.0.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_3.0.2.bb
index 932b6f0..1661e71 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_3.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_3.0.2.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f0e423eea5c91e7aa21bdb70184b3e53"
 
-SRC_URI[sha256sum] = "beb0e67c5dc76eea4a6d00a6606d444d899589908362960769d0c4a1d32bca70"
+SRC_URI[sha256sum] = "fee5297fdb28f8e9efcb8142b5ee219e02375509cd77ea9d270b5af826358d5a"
 
 inherit pypi python_setuptools_build_meta ptest
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_3.0.0.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.3.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_3.0.0.bb
index b927de4..bcd6489 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.3.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_3.0.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-SRC_URI[sha256sum] = "d9f9ed26ed22a9d331820a8432c3680707ea8b54121ddcc9dc7d9f2ceeb36906"
+SRC_URI[sha256sum] = "4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-extended/python-rich/python3-rich_13.3.2.bb b/meta-openembedded/meta-python/recipes-extended/python-rich/python3-rich_13.3.3.bb
similarity index 85%
rename from meta-openembedded/meta-python/recipes-extended/python-rich/python3-rich_13.3.2.bb
rename to meta-openembedded/meta-python/recipes-extended/python-rich/python3-rich_13.3.3.bb
index 1cb90c5..5621214 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-rich/python3-rich_13.3.2.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python-rich/python3-rich_13.3.3.bb
@@ -8,7 +8,7 @@
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b5f0b94fbc94f5ad9ae4efcf8a778303"
 
-SRC_URI[sha256sum] = "91954fe80cfb7985727a467ca98a7618e5dd15178cc2da10f553b36a93859001"
+SRC_URI[sha256sum] = "dc84400a9d842b3a9c5ff74addd8eb798d155f36c1c91303888e0a66850d2a15"
 
 inherit pypi python_poetry_core
 
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.1.1.bb b/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.2.0.bb
similarity index 91%
rename from meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.1.1.bb
rename to meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.2.0.bb
index 1d449cb..5a56d00 100644
--- a/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.1.1.bb
+++ b/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.2.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa"
 
-SRC_URI[sha256sum] = "aacf4bfffa872bb0e3d0c19ee0630e3c0997d4f13553189b63b297787341735f"
+SRC_URI[sha256sum] = "921fb57ea2ae3ae2806e18895bb0457697f27221b345c8b05afa4cb304a7f939"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-webserver/README b/meta-openembedded/meta-webserver/README
index d23f6cc..27329fd 100644
--- a/meta-openembedded/meta-webserver/README
+++ b/meta-openembedded/meta-webserver/README
@@ -13,13 +13,13 @@
 
 URI: git://git.openembedded.org/openembedded-core
 subdirectory: meta
-branch: master
+branch: mickledore
 
 For some recipes, the meta-oe layer is required:
 
 URI: git://git.openembedded.org/meta-openembedded
 subdirectory: meta-oe
-branch: master
+branch: mickledore
 
 
 
@@ -50,9 +50,12 @@
 -----------
 
 Send patches / pull requests to openembedded-devel@lists.openembedded.org
-with '[meta-webserver]' in the subject.
+with '[meta-webserver][mickledore]' in the subject.
 
-Layer maintainer: Derek Straka <derek@asterius.io>
+When sending single patches, please using something like:
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-webserver][mickledore][PATCH'
+
+Layer maintainer: Armin Kuster <akuster808@gmail.com>
 
 
 License
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/0001-configure.ac-Add-foreign-to-AM_INIT_AUTOMAKE.patch b/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/0001-configure.ac-Add-foreign-to-AM_INIT_AUTOMAKE.patch
index f3be7c6..b16060f 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/0001-configure.ac-Add-foreign-to-AM_INIT_AUTOMAKE.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/0001-configure.ac-Add-foreign-to-AM_INIT_AUTOMAKE.patch
@@ -7,6 +7,7 @@
 | Makefile.am: error: required file './README' not found
 | Makefile.am: error: required file './ChangeLog' not found
 
+Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  configure.ac | 2 +-
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/0001-make-Do-not-build-po-files.patch b/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/0001-make-Do-not-build-po-files.patch
index d4c0b6e..1d6a218 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/0001-make-Do-not-build-po-files.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee/0001-make-Do-not-build-po-files.patch
@@ -5,6 +5,7 @@
 
 Target fails to build
 
+Upstream-Status: Inappropriate [Cross-compile specific]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  Makefile.am | 2 +-
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/0001-configure-Respect-LIBS-variable-from-env.patch b/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/0001-configure-Respect-LIBS-variable-from-env.patch
index 7a22951..3eb3067 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/0001-configure-Respect-LIBS-variable-from-env.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/monkey/files/0001-configure-Respect-LIBS-variable-from-env.patch
@@ -6,6 +6,7 @@
 For musl we need to pass -lexecinfo from env
 this change accomodates that
 
+Upstream-Status: Inappropriate [OE-specific]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  configure | 2 +-
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc b/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc
index 260f5f3..6992a84 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc
+++ b/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc
@@ -44,6 +44,7 @@
 PACKAGECONFIG[ssl] = "--with-http_ssl_module,,openssl"
 PACKAGECONFIG[http-auth-request] = "--with-http_auth_request_module,,"
 PACKAGECONFIG[ipv6] = "--with-ipv6,,"
+PACKAGECONFIG[webdav] = "--with-http_dav_module,,"
 
 do_configure () {
     if [ "${SITEINFO_BITS}" = "64" ]; then
@@ -147,7 +148,7 @@
 
 pkg_postinst:${PN} () {
     if [ -z "$D" ]; then
-        if type systemd-tmpfiles >/dev/null; then
+        if type systemd-tmpfiles >/dev/null 2>&1; then
             systemd-tmpfiles --create
         elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
             ${sysconfdir}/init.d/populate-volatile.sh update
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.23.3.bb b/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.23.3.bb
deleted file mode 100644
index a8ffd9b..0000000
--- a/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.23.3.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require nginx.inc
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=175abb631c799f54573dc481454c8632"
-
-SRC_URI[sha256sum] = "75cb5787dbb9fae18b14810f91cc4343f64ce4c24e27302136fb52498042ba54"
-
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.23.4.bb b/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.23.4.bb
new file mode 100644
index 0000000..422b6f3
--- /dev/null
+++ b/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx_1.23.4.bb
@@ -0,0 +1,6 @@
+require nginx.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=175abb631c799f54573dc481454c8632"
+
+SRC_URI[sha256sum] = "d43300e36bb249a7e6edc60bca1b0fc372a0bafce2f346d76acfb677a8790fc0"
+
diff --git a/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/files/0001-remove-tests-dep-on-gobject-intro.patch b/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/files/0001-remove-tests-dep-on-gobject-intro.patch
index 8f70fe9..b633cb0 100644
--- a/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/files/0001-remove-tests-dep-on-gobject-intro.patch
+++ b/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/files/0001-remove-tests-dep-on-gobject-intro.patch
@@ -3,6 +3,8 @@
 Date: Wed, 4 Dec 2019 17:23:46 +0100
 Subject: [PATCH] remove tests dep on gobject-intro
 
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  src/ws/Makefile-ws.am | 54 ---------------------------------------------------
  1 file changed, 54 deletions(-)
diff --git a/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/files/0002-fix-makefile-use-copy-rule-for-unmodified-files.patch b/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/files/0002-fix-makefile-use-copy-rule-for-unmodified-files.patch
index 48702c3..1e5cf09 100644
--- a/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/files/0002-fix-makefile-use-copy-rule-for-unmodified-files.patch
+++ b/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/files/0002-fix-makefile-use-copy-rule-for-unmodified-files.patch
@@ -3,6 +3,8 @@
 Date: Wed, 25 Mar 2020 08:32:07 +0100
 Subject: [PATCH] fix(makefile): use copy rule for unmodified files
 
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  pkg/Makefile.am | 27 +++++++++++++++++++++++++++
  1 file changed, 27 insertions(+)
diff --git a/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/init-exclude.patch b/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/init-exclude.patch
index 4212917..489318b 100644
--- a/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/init-exclude.patch
+++ b/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/init-exclude.patch
@@ -1,11 +1,11 @@
-# Hack in support for an "exclude" config option for the init module, so
-# we can hide certain system services that shouldn't really be configurable
-# via the web interface
-#
-# Upstream-status: Pending
-#
-# Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-# Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+Hack in support for an "exclude" config option for the init module, so
+we can hide certain system services that shouldn't really be configurable
+via the web interface
+
+Upstream-Status: Pending
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
 ---
  init/index.cgi   | 27 ++++++++++++++-------------
  init/init-lib.pl |  5 +++--
diff --git a/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/media-tomb.patch b/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/media-tomb.patch
index 46f3109..dfc962b 100644
--- a/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/media-tomb.patch
+++ b/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/media-tomb.patch
@@ -1,3 +1,7 @@
+add mediatomb support
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 diff -Nru webmin-1.570.bak/mediatomb/index.cgi webmin-1.570/mediatomb/index.cgi
 --- webmin-1.570.bak/mediatomb/index.cgi	1969-12-31 16:00:00.000000000 -0800
 +++ webmin-1.570/mediatomb/index.cgi	2011-10-26 10:00:05.992522036 -0700
diff --git a/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/net-generic.patch b/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/net-generic.patch
index 5549392..6ae3dce 100644
--- a/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/net-generic.patch
+++ b/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/net-generic.patch
@@ -1,8 +1,8 @@
-# Add support for configuring network interfaces on a generic linux system
-#
-# Upstream-status: Not appropriate [config]
-#
-# Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+Add support for configuring network interfaces on a generic linux system
+
+Upstream-Status: Inappropriate [config]
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
 Index: webmin-1.850/net/module.info
 ===================================================================
 --- webmin-1.850.orig/net/module.info
diff --git a/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/remove-startup-option.patch b/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/remove-startup-option.patch
index d957f4a..358e53a 100644
--- a/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/remove-startup-option.patch
+++ b/meta-openembedded/meta-webserver/recipes-webadmin/webmin/files/remove-startup-option.patch
@@ -1,9 +1,9 @@
-# Remove "start on boot" option from webmin configuration, as
-# end-users should not need to configure this from the web interface
-#
-# Upstream-status: Inappropriate
-#
-# Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+Remove "start on boot" option from webmin configuration, as
+end-users should not need to configure this from the web interface
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
 --- webmin-1.570.orig/webmin/index.cgi
 +++ webmin-1.570/webmin/index.cgi
 @@ -79,20 +79,6 @@ print &ui_buttons_start();
diff --git a/meta-openembedded/meta-xfce/README b/meta-openembedded/meta-xfce/README
index 3d61586..e4fc10b 100644
--- a/meta-openembedded/meta-xfce/README
+++ b/meta-openembedded/meta-xfce/README
@@ -1,10 +1,10 @@
 This layer depends on:
 
 URI: git://git.openembedded.org/openembedded-core
-branch: master
+branch: mickledore
 
 URI: git://git.openembedded.org/meta-openembedded
-branch: master
+branch: mickledore
 
 meta-xfce depends on meta-oe, meta-gnome and meta-multimedia in this repository.
 
@@ -13,10 +13,9 @@
 
 BBMASK = "meta-xfce/recipes-multimedia"
 
-Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-xfce]' in the subject'
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-xfce][mickledore]' in the subject'
 
 When sending single patches, please using something like:
-git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-xfce][PATCH'
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-xfce][mickledore][PATCH'
 
-Layer maintainer: Kai Kang <kai.kang@windriver.com>
-Layer maintainer: Andreas Müller <schnitzeltony@gmail.com>
+Layer maintainer: Armin Kuster <akuster808@gmail.com>
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/files/xfce4-notifyd-get-var-abs-path.patch b/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/files/xfce4-notifyd-get-var-abs-path.patch
new file mode 100644
index 0000000..719267f
--- /dev/null
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/files/xfce4-notifyd-get-var-abs-path.patch
@@ -0,0 +1,41 @@
+Native pkg_config only return basename of the variable queried. Invoke `which`
+to get the absolute path.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0f49e2b..a589147 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -116,7 +116,7 @@ AC_MSG_CHECKING([for gdbus-codegen])
+ if test x"$GDBUS_CODEGEN" = x""; then
+     GDBUS_CODEGEN=`$PKG_CONFIG --variable=gdbus_codegen gio-2.0`
+ fi
+-if test -x "$GDBUS_CODEGEN"; then
++if test -x "$(which $GDBUS_CODEGEN)"; then
+     AC_MSG_RESULT([$GDBUS_CODEGEN])
+ else
+     AC_MSG_ERROR([could not find gdbus-codegen in \$PATH. You can run
+@@ -129,7 +129,7 @@ AC_MSG_CHECKING([for glib-compile-resources])
+ if test x"$GLIB_COMPILE_RESOURCES" = x""; then
+     GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0`
+ fi
+-if test -x "$GLIB_COMPILE_RESOURCES"; then
++if test -x "$(which $GLIB_COMPILE_RESOURCES)"; then
+     AC_MSG_RESULT([$GLIB_COMPILE_RESOURCES])
+ else
+     AC_MSG_ERROR([could not find glib-compile-resources in \$PATH. You can run
+@@ -142,7 +142,7 @@ AC_MSG_CHECKING([for glib-genmarshal])
+ if test x"$GLIB_GENMARSHAL" = x""; then
+     GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+ fi
+-if test -x "$GLIB_GENMARSHAL"; then
++if test -x "$(which $GLIB_GENMARSHAL)"; then
+     AC_MSG_RESULT([$GLIB_GENMARSHAL])
+ else
+     AC_MSG_ERROR([could not find glib-genmarshal in \$PATH. You can run
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.6.3.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.8.2.bb
similarity index 66%
rename from meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.6.3.bb
rename to meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.8.2.bb
index 6086608..7dbd90c 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.6.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.8.2.bb
@@ -1,10 +1,10 @@
 SUMMARY = "Easily themable notification daemon with transparency effects"
-HOMEPAGE = "http://goodies.xfce.org/projects/applications/xfce4-notifyd"
+HOMEPAGE = "https://docs.xfce.org/apps/notifyd/start"
 LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
 DEPENDS = " \
-    dbus \
-    dbus-glib \
+    glib-2.0-native \
     libnotify \
     libxfce4util \
     libxfce4ui \
@@ -14,7 +14,9 @@
 
 inherit xfce-app
 
-SRC_URI[sha256sum] = "56a9f895aed460042f2abe09bb1a899e29b7c7d5a76ecac63dead3ced990859f"
+SRC_URI:append = " file://xfce4-notifyd-get-var-abs-path.patch"
+
+SRC_URI[sha256sum] = "e3a28adb08daa1411135142a0d421e4d6050c4035a4e513a673a59460ff2ae84"
 
 # Avoid trouble with other desktops e.g KDE which also ships dbus service named
 # org.freedesktop.Notifications
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.10.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.10.3.bb
similarity index 65%
rename from meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.10.bb
rename to meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.10.3.bb
index bb44ec7..10427da 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.10.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.10.3.bb
@@ -1,13 +1,13 @@
 SUMMARY = "Application to take screenshots"
-HOMEPAGE = "http://goodies.xfce.org/projects/applications/xfce4-screenshooter"
+HOMEPAGE = "https://docs.xfce.org/apps/xfce4-screenshooter/start"
 SECTION = "x11/application"
 LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d791728a073bc009b4ffaf00b7599855"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 DEPENDS = "xfce4-panel libxfce4util libxfce4ui gdk-pixbuf gtk+3 glib-2.0 libsoup-2.4 exo libxfixes xext virtual/libx11 libxml-parser-perl-native"
 
 inherit xfce-app perlnative
 
-SRC_URI[sha256sum] = "04b4178527f5b98cfe76ae427e95581067edf262a530639d332f6db9a68292d7"
+SRC_URI[sha256sum] = "a454159847becfeca274a5b58c0e5817d4a260a29345a37bbc3b4ff46f8f3818"
 
 do_compile:prepend() {
     mkdir -p lib
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.5.2.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.5.2.bb
deleted file mode 100644
index a3d10cd..0000000
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.5.2.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "Easy to use task manager"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-inherit xfce-app
-
-DEPENDS += "gtk+3 cairo libwnck libxfce4ui libxmu xfce4-dev-tools-native"
-
-SRC_URI[sha256sum] = "bd25143f47a29000b4148874863dffa521b1a37cb01dbc026f423ea3160f9a35"
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.5.5.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.5.5.bb
new file mode 100644
index 0000000..802d6af
--- /dev/null
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.5.5.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Easy to use task manager"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+inherit xfce-app
+
+DEPENDS += "gtk+3 cairo libwnck libxfce4ui libxmu xfce4-dev-tools-native"
+
+SRC_URI[sha256sum] = "f64f01ba241a0b8bbf2ed3274e5decc2313c9f8b0e4d160db3ba69b331558ae5"
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_1.0.0.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_1.0.4.bb
similarity index 79%
rename from meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_1.0.0.bb
rename to meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_1.0.4.bb
index 85b0812..edb0c61 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_1.0.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_1.0.4.bb
@@ -10,6 +10,6 @@
     ${datadir}/gnome-control-center \
 "
 
-SRC_URI[sha256sum] = "593b6a7bd9b18851e51854e075990109b7896a22713b5dd8b913b23f21db6576"
+SRC_URI[sha256sum] = "78e55957af7c6fc1f283e90be33988661593a4da98383da1b0b54fdf6554baf4"
 
 RRECOMMENDS:${PN} += "vte-prompt"
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin/0001-check-for-fstab.h-during-configure.patch b/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin/0001-check-for-fstab.h-during-configure.patch
index d81f702..64f06ce 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin/0001-check-for-fstab.h-during-configure.patch
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin/0001-check-for-fstab.h-during-configure.patch
@@ -9,6 +9,7 @@
 
 Makes it compile/build with musl
 
+Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 
 Patch Reworked for xfce4-mount-plugin 0.6.4->1.1.2
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/files/0001-xsettings.xml-Set-default-themes.patch b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/files/0001-xsettings.xml-Set-default-themes.patch
index 0463d2e..274454c 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/files/0001-xsettings.xml-Set-default-themes.patch
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/files/0001-xsettings.xml-Set-default-themes.patch
@@ -6,7 +6,7 @@
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
-Upstram status:  Inappropriate [configuration]
+Upstream-Status: Inappropriate [configuration]
 
 Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
 
diff --git a/meta-raspberrypi/conf/machine/include/rpi-base.inc b/meta-raspberrypi/conf/machine/include/rpi-base.inc
index ba3029f..b486633 100644
--- a/meta-raspberrypi/conf/machine/include/rpi-base.inc
+++ b/meta-raspberrypi/conf/machine/include/rpi-base.inc
@@ -35,6 +35,7 @@
     overlays/i2c-rtc.dtbo \
     overlays/imx219.dtbo \
     overlays/imx477.dtbo \
+    overlays/imx708.dtbo \
     overlays/iqaudio-dac.dtbo \
     overlays/iqaudio-dacplus.dtbo \
     overlays/mcp2515-can0.dtbo \
diff --git a/meta-raspberrypi/docs/extra-build-config.md b/meta-raspberrypi/docs/extra-build-config.md
index 11f7bde..128753d 100644
--- a/meta-raspberrypi/docs/extra-build-config.md
+++ b/meta-raspberrypi/docs/extra-build-config.md
@@ -379,19 +379,27 @@
         # Raspberry Pi 7\" display/touch screen \n \
         lcd_rotate=2 \n \
         '
-## Enable Raspberrypi Camera V2
+## Enable Raspberry Pi Camera Module
 
-RaspberryPi does not have the unicam device ( RaspberryPi Camera ) enabled by default.
+Raspberry Pi does not have the unicam device ( Raspberry Pi Camera ) enabled by default.
 Because this unicam device ( bcm2835-unicam ) as of now is used by libcamera opensource.
-So we have to explicitly set in local.conf.
+So we have to explicitly enable it in local.conf.
 
     RASPBERRYPI_CAMERA_V2 = "1"
 
-This will add the device tree overlays imx219 ( RaspberryPi Camera sensor V2 driver ) to config.txt.
-Also, this will enable adding Contiguous Memory Allocation value in the cmdline.txt.
+This will add the device tree overlay imx219 ( Raspberry Pi Camera Module V2 sensor driver 
+) to config.txt. Also, this will enable adding Contiguous Memory Allocation value in the 
+cmdline.txt.
 
-Ref.:
-* <https://github.com/raspberrypi/documentation/blob/master/linux/software/libcamera/README.md>
+Similarly, the Raspberry Pi Camera Module v3 also has to be explicitly enabled in local.conf.
+
+    RASPBERRYPI_CAMERA_V3 = "1"
+
+This will add the device tree overlay imx708 ( Raspberry Pi Camera Module V3 sensor driver ) 
+to config.txt.
+
+See:
+* <https://www.raspberrypi.com/documentation/computers/camera_software.html>
 * <https://www.raspberrypi.org/blog/an-open-source-camera-stack-for-raspberry-pi-using-libcamera/>
 
 ## WM8960 soundcard support
diff --git a/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-blinka_6.2.2.bb b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python/python3-adafruit-blinka_6.2.2.bb
similarity index 100%
rename from meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-blinka_6.2.2.bb
rename to meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python/python3-adafruit-blinka_6.2.2.bb
diff --git a/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-busdevice_5.0.5.bb b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python/python3-adafruit-circuitpython-busdevice_5.0.5.bb
similarity index 100%
rename from meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-busdevice_5.0.5.bb
rename to meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python/python3-adafruit-circuitpython-busdevice_5.0.5.bb
diff --git a/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-motor_3.2.6.bb b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python/python3-adafruit-circuitpython-motor_3.2.6.bb
similarity index 100%
rename from meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-motor_3.2.6.bb
rename to meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python/python3-adafruit-circuitpython-motor_3.2.6.bb
diff --git a/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-motorkit_1.6.1.bb b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python/python3-adafruit-circuitpython-motorkit_1.6.1.bb
similarity index 100%
rename from meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-motorkit_1.6.1.bb
rename to meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python/python3-adafruit-circuitpython-motorkit_1.6.1.bb
diff --git a/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-pca9685_3.3.4.bb b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python/python3-adafruit-circuitpython-pca9685_3.3.4.bb
similarity index 100%
rename from meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-pca9685_3.3.4.bb
rename to meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python/python3-adafruit-circuitpython-pca9685_3.3.4.bb
diff --git a/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb b/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
index 9d007e0..22fce77 100644
--- a/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
+++ b/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
@@ -210,6 +210,12 @@
     #    echo "dtoverlay=imx477" >> $CONFIG
     #fi
 
+    # Choose Camera Sensor to be used, default imx708 sensor
+    if [ "${RASPBERRYPI_CAMERA_V3}" = "1" ]; then
+        echo "# Enable Sony RaspberryPi Camera(imx708)" >> $CONFIG
+        echo "dtoverlay=imx708" >> $CONFIG
+    fi
+
     # Waveshare "C" 1024x600 7" Rev2.1 IPS capacitive touch (http://www.waveshare.com/7inch-HDMI-LCD-C.htm)
     if [ "${WAVESHARE_1024X600_C_2_1}" = "1" ]; then
         echo "# Waveshare \"C\" 1024x600 7\" Rev2.1 IPS capacitive touch screen" >> $CONFIG
diff --git a/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/checksecurity_2.0.15.bb b/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/checksecurity_2.0.15.bb
deleted file mode 100644
index e053a15..0000000
--- a/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/checksecurity_2.0.15.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "basic system security checks"
-DESCRIPTION = "checksecurity is a simple package which will scan your system for several simple security holes."
-SECTION = "security"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
-
-SRC_URI = "http://ftp.de.debian.org/debian/pool/main/c/checksecurity/checksecurity_${PV}.tar.gz \
-           file://setuid-log-folder.patch \
-           file://check-setuid-use-more-portable-find-args.patch"
-
-SRC_URI[md5sum] = "a30161c3e24d3be710b2fd13fcd1f32f"
-SRC_URI[sha256sum] = "67abe3d6391c96146e96f376d3fd6eb7a9418b0f7fe205b465219889791dba32"
-
-do_compile() {
-}
-
-do_install() {
-    oe_runmake PREFIX=${D}
-}
-
-RDEPENDS:${PN} = "perl libenv-perl perl-module-tie-array perl-module-getopt-long perl-module-file-glob perl-module-carp perl-module-env perl-module-tap-parser-iterator-array util-linux findutils coreutils"
diff --git a/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/checksecurity_2.0.16.bb b/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/checksecurity_2.0.16.bb
new file mode 100644
index 0000000..8006c9f
--- /dev/null
+++ b/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/checksecurity_2.0.16.bb
@@ -0,0 +1,29 @@
+SUMMARY = "basic system security checks"
+DESCRIPTION = "checksecurity is a simple package which will scan your system for several simple security holes."
+SECTION = "security"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
+
+SRC_URI = "http://ftp.de.debian.org/debian/pool/main/c/checksecurity/checksecurity_${PV}+nmu1.tar.gz \
+           file://check-setuid-use-more-portable-find-args.patch \
+          "
+
+SRC_URI[sha256sum] = "9803b3760e9ec48e06ebaf48cec081db48c6fe72254a476224e4c5c55ed97fb0"
+
+S = "${WORKDIR}/checksecurity-${PV}+nmu1"
+
+
+# allow for anylocal, no need to patch
+LOGDIR="/etc/checksecurity"
+
+do_compile() {
+    sed -i -e "s;LOGDIR=/var/log/setuid;LOGDIR=${LOGDIR};g" ${B}/etc/check-setuid.conf
+    sed -i -e "s;LOGDIR=/var/log/setuid;LOGDIR=${LOGDIR};g" ${B}/plugins/check-setuid
+    sed -i -e "s;LOGDIR:=/var/log/setuid;LOGDIR:=${LOGDIR};g" ${B}/plugins/check-setuid
+}
+
+do_install() {
+    oe_runmake PREFIX=${D}
+}
+
+RDEPENDS:${PN} = "perl libenv-perl perl-module-tie-array perl-module-getopt-long perl-module-file-glob perl-module-carp perl-module-env perl-module-tap-parser-iterator-array util-linux findutils coreutils"
diff --git a/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/files/check-setuid-use-more-portable-find-args.patch b/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/files/check-setuid-use-more-portable-find-args.patch
index f1fe8ed..1a2f364 100644
--- a/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/files/check-setuid-use-more-portable-find-args.patch
+++ b/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/files/check-setuid-use-more-portable-find-args.patch
@@ -8,16 +8,16 @@
  plugins/check-setuid | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
-Index: checksecurity-2.0.15/plugins/check-setuid
+Index: checksecurity-2.0.16+nmu1/plugins/check-setuid
 ===================================================================
---- checksecurity-2.0.15.orig/plugins/check-setuid	2018-09-06 00:49:23.930934294 +0500
-+++ checksecurity-2.0.15/plugins/check-setuid	2018-09-06 00:49:49.694934757 +0500
-@@ -99,7 +99,7 @@
- ionice -t -c3 \
+--- checksecurity-2.0.16+nmu1.orig/plugins/check-setuid
++++ checksecurity-2.0.16+nmu1/plugins/check-setuid
+@@ -100,7 +100,7 @@ ionice -t -c3 \
  find `mount | grep -vE "$CHECKSECURITY_FILTER" | cut -d ' ' -f 3` \
- 	-xdev $PATHCHK \
--	\( -type f -perm +06000 -o \( \( -type b -o -type c \) \
-+	\( -type f \( -perm -4000 -o -perm -2000 \) -o \( \( -type b -o -type c \) \
- 	$DEVCHK \) \) \
          -ignore_readdir_race  \
+ 	-xdev $PATHCHK \
+-	\( -type f -perm /06000 -o \( \( -type b -o -type c \) \
++    \( -type f \( -perm -4000 -o -perm -2000 \) -o \( \( -type b -o -type c \) \	
+ 	$DEVCHK \) \) \
  	-printf "%8i %5m %3n %-10u %-10g %9s %t %h/%f\n" |
+ 	sort -k 12 >$TMPSETUID
diff --git a/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/files/setuid-log-folder.patch b/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/files/setuid-log-folder.patch
deleted file mode 100644
index 540ea9c..0000000
--- a/meta-security/dynamic-layers/meta-perl/recipes-scanners/checksecurity/files/setuid-log-folder.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 24dbeec135ff83f2fd35ef12fe9842f02d6fd337 Mon Sep 17 00:00:00 2001
-From: Andrei Dinu <andrei.adrianx.dinu@intel.com>
-Date: Thu, 20 Jun 2013 15:14:55 +0300
-Subject: [PATCH] changed log folder for check-setuid
-
-check-setuid was creating logs in /var/log directory,
-which cannot be created persistently. To avoid errors
-the log folder was changed to /etc/checksecurity/.
-
-Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
----
- etc/check-setuid.conf |    2 +-
- plugins/check-setuid  |    6 +++---
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/etc/check-setuid.conf b/etc/check-setuid.conf
-index 621336f..e1532c0 100644
---- a/etc/check-setuid.conf
-+++ b/etc/check-setuid.conf
-@@ -116,4 +116,4 @@ CHECKSECURITY_PATHFILTER="-false"
- #
- # Location of setuid file databases. 
- #
--LOGDIR=/var/log/setuid
-+LOGDIR=/etc/checksecurity/
-diff --git a/plugins/check-setuid b/plugins/check-setuid
-index 8d6f90b..bdb21c1 100755
---- a/plugins/check-setuid
-+++ b/plugins/check-setuid
-@@ -44,8 +44,8 @@ if [ `/usr/bin/id -u` != 0 ] ; then
-    exit 1
- fi
- 
--TMPSETUID=${LOGDIR:=/var/log/setuid}/setuid.new.tmp
--TMPDIFF=${LOGDIR:=/var/log/setuid}/setuid.diff.tmp
-+TMPSETUID=${LOGDIR:=/etc/checksecurity/}/setuid.new.tmp
-+TMPDIFF=${LOGDIR:=/etc/checksecurity/}/setuid.diff.tmp
- 
- #
- # Check for NFS/AFS mounts that are not nosuid/nodev
-@@ -75,7 +75,7 @@ if [ "$CHECKSECURITY_NOFINDERRORS" = "TRUE" ] ; then
- fi
- 
- # Guard against undefined vars
--[ -z "$LOGDIR" ] && LOGDIR=/var/log/setuid
-+[ -z "$LOGDIR" ] && LOGDIR=/etc/checksecurity/
- if [ ! -e "$LOGDIR" ] ; then
-     echo "ERROR: Log directory $LOGDIR does not exist"
-     exit 1
--- 
-1.7.9.5
-
diff --git a/meta-security/meta-parsec/lib/oeqa/runtime/cases/parsec.py b/meta-security/meta-parsec/lib/oeqa/runtime/cases/parsec.py
index 6be84ba..004717d 100644
--- a/meta-security/meta-parsec/lib/oeqa/runtime/cases/parsec.py
+++ b/meta-security/meta-parsec/lib/oeqa/runtime/cases/parsec.py
@@ -24,6 +24,10 @@
             self.parsec_status='pgrep -l parsec'
             self.parsec_reload='/etc/init.d/parsec reload'
 
+    def tearDown(self):
+        self.target.run('sync')
+        super(ParsecTest, self).tearDown()
+
     def copy_subconfig(self, cfg, provider):
         """ Copy a provider configuration to target and append it to Parsec config """
 
@@ -53,17 +57,26 @@
             self.assertIn("ID: 0x0%d (%s provider)" % (prov_id, provider),
                           output, msg='%s provider is not configured.' % provider)
 
-    def run_cli_tests(self, prov_id=None):
+    def run_cli_tests(self, prov_id=None, extra_params=""):
         """ Run Parsec CLI end-to-end tests against one or all providers """
 
-        status, output = self.target.run('parsec-cli-tests.sh %s' % ("-%d" % prov_id if prov_id else ""))
+        status, output = self.target.run('parsec-cli-tests.sh %s %s' % ("-%d" % prov_id if prov_id else "", extra_params))
         self.assertEqual(status, 0, msg='Parsec CLI tests failed.\n %s' % output)
 
     def check_packageconfig(self, prov):
         """ Check that the require provider is included in Parsec """
-        if prov not in self.tc.td['PACKAGECONFIG:pn-parsec-service']:
+
+        if 'PACKAGECONFIG:pn-parsec-service' in self.tc.td.keys():
+            providers = self.tc.td['PACKAGECONFIG:pn-parsec-service']
+        else:
+            # PACKAGECONFIG is not defined in local.conf
+            # Let's use the default value
+            providers = "PKCS11 MBED-CRYPTO"
+            if 'tpm2' in self.tc.td['DISTRO_FEATURES']:
+                providers += " TPM"
+        if prov not in providers:
             self.skipTest('%s provider is not included in Parsec. Parsec PACKAGECONFIG: "%s"' % \
-                          (prov, self.tc.td['PACKAGECONFIG:pn-parsec-service']))
+                          (prov, providers))
 
     def check_packages(self, prov, packages):
         """ Check for the required packages for Parsec providers software backends """
@@ -181,7 +194,9 @@
             self.configure_pkcs11_provider()
             self.check_parsec_providers("PKCS #11", prov_id)
 
-        self.run_cli_tests(prov_id)
+        # Software PKCS11 we use for OE QA testing
+        # doesn't support RSA-OAEP(SHA256) encryption/decryption operations
+        self.run_cli_tests(prov_id, "--no-oaep")
         self.restore_parsec_config()
 
     def configure_TS_provider(self):
diff --git a/meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service-crates.inc b/meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service-crates.inc
new file mode 100644
index 0000000..604e1ea
--- /dev/null
+++ b/meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service-crates.inc
@@ -0,0 +1,460 @@
+# Autogenerated with 'bitbake -c update_crates parsec-service'
+
+# from Cargo.lock
+SRC_URI += " \
+    crate://crates.io/ahash/0.7.6;name=ahash-0.7.6 \
+    crate://crates.io/aho-corasick/0.7.20;name=aho-corasick-0.7.20 \
+    crate://crates.io/ansi_term/0.12.1;name=ansi_term-0.12.1 \
+    crate://crates.io/anyhow/1.0.69;name=anyhow-1.0.69 \
+    crate://crates.io/asn1-rs/0.3.1;name=asn1-rs-0.3.1 \
+    crate://crates.io/asn1-rs-derive/0.1.0;name=asn1-rs-derive-0.1.0 \
+    crate://crates.io/asn1-rs-impl/0.1.0;name=asn1-rs-impl-0.1.0 \
+    crate://crates.io/atty/0.2.14;name=atty-0.2.14 \
+    crate://crates.io/autocfg/1.1.0;name=autocfg-1.1.0 \
+    crate://crates.io/base64/0.13.1;name=base64-0.13.1 \
+    crate://crates.io/bincode/1.3.3;name=bincode-1.3.3 \
+    crate://crates.io/bindgen/0.57.0;name=bindgen-0.57.0 \
+    crate://crates.io/bindgen/0.63.0;name=bindgen-0.63.0 \
+    crate://crates.io/bitfield/0.13.2;name=bitfield-0.13.2 \
+    crate://crates.io/bitflags/1.3.2;name=bitflags-1.3.2 \
+    crate://crates.io/bumpalo/3.12.0;name=bumpalo-3.12.0 \
+    crate://crates.io/bytes/1.4.0;name=bytes-1.4.0 \
+    crate://crates.io/cc/1.0.79;name=cc-1.0.79 \
+    crate://crates.io/cexpr/0.4.0;name=cexpr-0.4.0 \
+    crate://crates.io/cexpr/0.6.0;name=cexpr-0.6.0 \
+    crate://crates.io/cfg-if/1.0.0;name=cfg-if-1.0.0 \
+    crate://crates.io/clang-sys/1.6.0;name=clang-sys-1.6.0 \
+    crate://crates.io/clap/2.34.0;name=clap-2.34.0 \
+    crate://crates.io/cmake/0.1.45;name=cmake-0.1.45 \
+    crate://crates.io/const-oid/0.7.1;name=const-oid-0.7.1 \
+    crate://crates.io/cryptoauthlib-sys/0.2.2;name=cryptoauthlib-sys-0.2.2 \
+    crate://crates.io/cryptoki/0.3.1;name=cryptoki-0.3.1 \
+    crate://crates.io/cryptoki-sys/0.1.5;name=cryptoki-sys-0.1.5 \
+    crate://crates.io/data-encoding/2.3.3;name=data-encoding-2.3.3 \
+    crate://crates.io/der/0.5.1;name=der-0.5.1 \
+    crate://crates.io/der-parser/7.0.0;name=der-parser-7.0.0 \
+    crate://crates.io/derivative/2.2.0;name=derivative-2.2.0 \
+    crate://crates.io/displaydoc/0.2.3;name=displaydoc-0.2.3 \
+    crate://crates.io/either/1.8.1;name=either-1.8.1 \
+    crate://crates.io/enumflags2/0.7.5;name=enumflags2-0.7.5 \
+    crate://crates.io/enumflags2_derive/0.7.4;name=enumflags2_derive-0.7.4 \
+    crate://crates.io/env_logger/0.8.4;name=env_logger-0.8.4 \
+    crate://crates.io/errno/0.2.8;name=errno-0.2.8 \
+    crate://crates.io/errno-dragonfly/0.1.2;name=errno-dragonfly-0.1.2 \
+    crate://crates.io/fallible-iterator/0.2.0;name=fallible-iterator-0.2.0 \
+    crate://crates.io/fallible-streaming-iterator/0.1.9;name=fallible-streaming-iterator-0.1.9 \
+    crate://crates.io/fastrand/1.9.0;name=fastrand-1.9.0 \
+    crate://crates.io/fixedbitset/0.2.0;name=fixedbitset-0.2.0 \
+    crate://crates.io/form_urlencoded/1.1.0;name=form_urlencoded-1.1.0 \
+    crate://crates.io/futures/0.3.27;name=futures-0.3.27 \
+    crate://crates.io/futures-channel/0.3.27;name=futures-channel-0.3.27 \
+    crate://crates.io/futures-core/0.3.27;name=futures-core-0.3.27 \
+    crate://crates.io/futures-executor/0.3.27;name=futures-executor-0.3.27 \
+    crate://crates.io/futures-io/0.3.27;name=futures-io-0.3.27 \
+    crate://crates.io/futures-macro/0.3.27;name=futures-macro-0.3.27 \
+    crate://crates.io/futures-sink/0.3.27;name=futures-sink-0.3.27 \
+    crate://crates.io/futures-task/0.3.27;name=futures-task-0.3.27 \
+    crate://crates.io/futures-util/0.3.27;name=futures-util-0.3.27 \
+    crate://crates.io/generic-array/0.14.6;name=generic-array-0.14.6 \
+    crate://crates.io/getrandom/0.2.8;name=getrandom-0.2.8 \
+    crate://crates.io/glob/0.3.1;name=glob-0.3.1 \
+    crate://crates.io/grpcio/0.9.1;name=grpcio-0.9.1 \
+    crate://crates.io/grpcio-sys/0.9.1+1.38.0;name=grpcio-sys-0.9.1+1.38.0 \
+    crate://crates.io/hashbrown/0.12.3;name=hashbrown-0.12.3 \
+    crate://crates.io/hashlink/0.8.1;name=hashlink-0.8.1 \
+    crate://crates.io/heck/0.3.3;name=heck-0.3.3 \
+    crate://crates.io/hermit-abi/0.1.19;name=hermit-abi-0.1.19 \
+    crate://crates.io/hermit-abi/0.2.6;name=hermit-abi-0.2.6 \
+    crate://crates.io/hex/0.4.3;name=hex-0.4.3 \
+    crate://crates.io/hostname-validator/1.1.1;name=hostname-validator-1.1.1 \
+    crate://crates.io/humantime/2.1.0;name=humantime-2.1.0 \
+    crate://crates.io/idna/0.3.0;name=idna-0.3.0 \
+    crate://crates.io/indexmap/1.9.2;name=indexmap-1.9.2 \
+    crate://crates.io/instant/0.1.12;name=instant-0.1.12 \
+    crate://crates.io/io-lifetimes/1.0.6;name=io-lifetimes-1.0.6 \
+    crate://crates.io/itertools/0.10.5;name=itertools-0.10.5 \
+    crate://crates.io/itoa/1.0.6;name=itoa-1.0.6 \
+    crate://crates.io/js-sys/0.3.61;name=js-sys-0.3.61 \
+    crate://crates.io/jsonwebkey/0.3.5;name=jsonwebkey-0.3.5 \
+    crate://crates.io/jsonwebtoken/8.2.0;name=jsonwebtoken-8.2.0 \
+    crate://crates.io/lazy_static/1.4.0;name=lazy_static-1.4.0 \
+    crate://crates.io/lazycell/1.3.0;name=lazycell-1.3.0 \
+    crate://crates.io/libc/0.2.140;name=libc-0.2.140 \
+    crate://crates.io/libloading/0.7.4;name=libloading-0.7.4 \
+    crate://crates.io/libsqlite3-sys/0.25.2;name=libsqlite3-sys-0.25.2 \
+    crate://crates.io/libz-sys/1.1.8;name=libz-sys-1.1.8 \
+    crate://crates.io/linux-raw-sys/0.1.4;name=linux-raw-sys-0.1.4 \
+    crate://crates.io/lock_api/0.4.9;name=lock_api-0.4.9 \
+    crate://crates.io/log/0.4.17;name=log-0.4.17 \
+    crate://crates.io/mbox/0.6.0;name=mbox-0.6.0 \
+    crate://crates.io/memchr/2.5.0;name=memchr-2.5.0 \
+    crate://crates.io/minimal-lexical/0.2.1;name=minimal-lexical-0.2.1 \
+    crate://crates.io/multimap/0.8.3;name=multimap-0.8.3 \
+    crate://crates.io/nom/5.1.2;name=nom-5.1.2 \
+    crate://crates.io/nom/7.1.3;name=nom-7.1.3 \
+    crate://crates.io/num/0.4.0;name=num-0.4.0 \
+    crate://crates.io/num-bigint/0.4.3;name=num-bigint-0.4.3 \
+    crate://crates.io/num-complex/0.4.3;name=num-complex-0.4.3 \
+    crate://crates.io/num-derive/0.3.3;name=num-derive-0.3.3 \
+    crate://crates.io/num-integer/0.1.45;name=num-integer-0.1.45 \
+    crate://crates.io/num-iter/0.1.43;name=num-iter-0.1.43 \
+    crate://crates.io/num-rational/0.4.1;name=num-rational-0.4.1 \
+    crate://crates.io/num-traits/0.2.15;name=num-traits-0.2.15 \
+    crate://crates.io/num_cpus/1.15.0;name=num_cpus-1.15.0 \
+    crate://crates.io/num_threads/0.1.6;name=num_threads-0.1.6 \
+    crate://crates.io/oid/0.2.1;name=oid-0.2.1 \
+    crate://crates.io/oid-registry/0.4.0;name=oid-registry-0.4.0 \
+    crate://crates.io/once_cell/1.17.1;name=once_cell-1.17.1 \
+    crate://crates.io/parking_lot/0.11.2;name=parking_lot-0.11.2 \
+    crate://crates.io/parking_lot_core/0.8.6;name=parking_lot_core-0.8.6 \
+    crate://crates.io/parsec-interface/0.28.0;name=parsec-interface-0.28.0 \
+    crate://crates.io/peeking_take_while/0.1.2;name=peeking_take_while-0.1.2 \
+    crate://crates.io/pem/1.1.1;name=pem-1.1.1 \
+    crate://crates.io/percent-encoding/2.2.0;name=percent-encoding-2.2.0 \
+    crate://crates.io/pest/2.5.6;name=pest-2.5.6 \
+    crate://crates.io/petgraph/0.5.1;name=petgraph-0.5.1 \
+    crate://crates.io/picky-asn1/0.3.3;name=picky-asn1-0.3.3 \
+    crate://crates.io/picky-asn1-der/0.2.5;name=picky-asn1-der-0.2.5 \
+    crate://crates.io/picky-asn1-x509/0.6.1;name=picky-asn1-x509-0.6.1 \
+    crate://crates.io/pin-project-lite/0.2.9;name=pin-project-lite-0.2.9 \
+    crate://crates.io/pin-utils/0.1.0;name=pin-utils-0.1.0 \
+    crate://crates.io/pkcs8/0.8.0;name=pkcs8-0.8.0 \
+    crate://crates.io/pkg-config/0.3.26;name=pkg-config-0.3.26 \
+    crate://crates.io/ppv-lite86/0.2.17;name=ppv-lite86-0.2.17 \
+    crate://crates.io/proc-macro-error/1.0.4;name=proc-macro-error-1.0.4 \
+    crate://crates.io/proc-macro-error-attr/1.0.4;name=proc-macro-error-attr-1.0.4 \
+    crate://crates.io/proc-macro2/1.0.52;name=proc-macro2-1.0.52 \
+    crate://crates.io/prost/0.8.0;name=prost-0.8.0 \
+    crate://crates.io/prost-build/0.8.0;name=prost-build-0.8.0 \
+    crate://crates.io/prost-derive/0.8.0;name=prost-derive-0.8.0 \
+    crate://crates.io/prost-types/0.8.0;name=prost-types-0.8.0 \
+    crate://crates.io/protobuf/2.28.0;name=protobuf-2.28.0 \
+    crate://crates.io/psa-crypto/0.10.0;name=psa-crypto-0.10.0 \
+    crate://crates.io/psa-crypto-sys/0.10.0;name=psa-crypto-sys-0.10.0 \
+    crate://crates.io/quote/1.0.26;name=quote-1.0.26 \
+    crate://crates.io/rand/0.8.5;name=rand-0.8.5 \
+    crate://crates.io/rand_chacha/0.3.1;name=rand_chacha-0.3.1 \
+    crate://crates.io/rand_core/0.6.4;name=rand_core-0.6.4 \
+    crate://crates.io/redox_syscall/0.2.16;name=redox_syscall-0.2.16 \
+    crate://crates.io/regex/1.7.1;name=regex-1.7.1 \
+    crate://crates.io/regex-syntax/0.6.28;name=regex-syntax-0.6.28 \
+    crate://crates.io/ring/0.16.20;name=ring-0.16.20 \
+    crate://crates.io/rusqlite/0.28.0;name=rusqlite-0.28.0 \
+    crate://crates.io/rust-cryptoauthlib/0.4.5;name=rust-cryptoauthlib-0.4.5 \
+    crate://crates.io/rustc-hash/1.1.0;name=rustc-hash-1.1.0 \
+    crate://crates.io/rustc_version/0.3.3;name=rustc_version-0.3.3 \
+    crate://crates.io/rusticata-macros/4.1.0;name=rusticata-macros-4.1.0 \
+    crate://crates.io/rustix/0.36.9;name=rustix-0.36.9 \
+    crate://crates.io/ryu/1.0.13;name=ryu-1.0.13 \
+    crate://crates.io/same-file/1.0.6;name=same-file-1.0.6 \
+    crate://crates.io/scopeguard/1.1.0;name=scopeguard-1.1.0 \
+    crate://crates.io/sd-notify/0.3.0;name=sd-notify-0.3.0 \
+    crate://crates.io/secrecy/0.7.0;name=secrecy-0.7.0 \
+    crate://crates.io/semver/0.11.0;name=semver-0.11.0 \
+    crate://crates.io/semver-parser/0.10.2;name=semver-parser-0.10.2 \
+    crate://crates.io/serde/1.0.156;name=serde-1.0.156 \
+    crate://crates.io/serde_bytes/0.11.9;name=serde_bytes-0.11.9 \
+    crate://crates.io/serde_derive/1.0.156;name=serde_derive-1.0.156 \
+    crate://crates.io/serde_json/1.0.94;name=serde_json-1.0.94 \
+    crate://crates.io/shlex/0.1.1;name=shlex-0.1.1 \
+    crate://crates.io/shlex/1.1.0;name=shlex-1.1.0 \
+    crate://crates.io/signal-hook/0.3.15;name=signal-hook-0.3.15 \
+    crate://crates.io/signal-hook-registry/1.4.1;name=signal-hook-registry-1.4.1 \
+    crate://crates.io/simple_asn1/0.6.2;name=simple_asn1-0.6.2 \
+    crate://crates.io/slab/0.4.8;name=slab-0.4.8 \
+    crate://crates.io/smallvec/1.10.0;name=smallvec-1.10.0 \
+    crate://crates.io/spiffe/0.2.1;name=spiffe-0.2.1 \
+    crate://crates.io/spin/0.5.2;name=spin-0.5.2 \
+    crate://crates.io/spki/0.5.4;name=spki-0.5.4 \
+    crate://crates.io/stable_deref_trait/1.2.0;name=stable_deref_trait-1.2.0 \
+    crate://crates.io/strsim/0.8.0;name=strsim-0.8.0 \
+    crate://crates.io/structopt/0.3.26;name=structopt-0.3.26 \
+    crate://crates.io/structopt-derive/0.4.18;name=structopt-derive-0.4.18 \
+    crate://crates.io/strum_macros/0.21.1;name=strum_macros-0.21.1 \
+    crate://crates.io/syn/1.0.109;name=syn-1.0.109 \
+    crate://crates.io/synstructure/0.12.6;name=synstructure-0.12.6 \
+    crate://crates.io/target-lexicon/0.12.6;name=target-lexicon-0.12.6 \
+    crate://crates.io/tempfile/3.4.0;name=tempfile-3.4.0 \
+    crate://crates.io/termcolor/1.2.0;name=termcolor-1.2.0 \
+    crate://crates.io/textwrap/0.11.0;name=textwrap-0.11.0 \
+    crate://crates.io/thiserror/1.0.39;name=thiserror-1.0.39 \
+    crate://crates.io/thiserror-impl/1.0.39;name=thiserror-impl-1.0.39 \
+    crate://crates.io/threadpool/1.8.1;name=threadpool-1.8.1 \
+    crate://crates.io/time/0.3.15;name=time-0.3.15 \
+    crate://crates.io/time-macros/0.2.4;name=time-macros-0.2.4 \
+    crate://crates.io/tinyvec/1.6.0;name=tinyvec-1.6.0 \
+    crate://crates.io/tinyvec_macros/0.1.1;name=tinyvec_macros-0.1.1 \
+    crate://crates.io/toml/0.5.11;name=toml-0.5.11 \
+    crate://crates.io/tss-esapi/7.2.0;name=tss-esapi-7.2.0 \
+    crate://crates.io/tss-esapi-sys/0.4.0;name=tss-esapi-sys-0.4.0 \
+    crate://crates.io/typenum/1.16.0;name=typenum-1.16.0 \
+    crate://crates.io/ucd-trie/0.1.5;name=ucd-trie-0.1.5 \
+    crate://crates.io/unicode-bidi/0.3.11;name=unicode-bidi-0.3.11 \
+    crate://crates.io/unicode-ident/1.0.8;name=unicode-ident-1.0.8 \
+    crate://crates.io/unicode-normalization/0.1.22;name=unicode-normalization-0.1.22 \
+    crate://crates.io/unicode-segmentation/1.10.1;name=unicode-segmentation-1.10.1 \
+    crate://crates.io/unicode-width/0.1.10;name=unicode-width-0.1.10 \
+    crate://crates.io/unicode-xid/0.2.4;name=unicode-xid-0.2.4 \
+    crate://crates.io/untrusted/0.7.1;name=untrusted-0.7.1 \
+    crate://crates.io/url/2.3.1;name=url-2.3.1 \
+    crate://crates.io/users/0.11.0;name=users-0.11.0 \
+    crate://crates.io/uuid/0.8.2;name=uuid-0.8.2 \
+    crate://crates.io/vcpkg/0.2.15;name=vcpkg-0.2.15 \
+    crate://crates.io/vec_map/0.8.2;name=vec_map-0.8.2 \
+    crate://crates.io/version_check/0.9.4;name=version_check-0.9.4 \
+    crate://crates.io/walkdir/2.3.2;name=walkdir-2.3.2 \
+    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1;name=wasi-0.11.0+wasi-snapshot-preview1 \
+    crate://crates.io/wasm-bindgen/0.2.84;name=wasm-bindgen-0.2.84 \
+    crate://crates.io/wasm-bindgen-backend/0.2.84;name=wasm-bindgen-backend-0.2.84 \
+    crate://crates.io/wasm-bindgen-macro/0.2.84;name=wasm-bindgen-macro-0.2.84 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.84;name=wasm-bindgen-macro-support-0.2.84 \
+    crate://crates.io/wasm-bindgen-shared/0.2.84;name=wasm-bindgen-shared-0.2.84 \
+    crate://crates.io/web-sys/0.3.61;name=web-sys-0.3.61 \
+    crate://crates.io/which/4.4.0;name=which-4.4.0 \
+    crate://crates.io/winapi/0.3.9;name=winapi-0.3.9 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0;name=winapi-i686-pc-windows-gnu-0.4.0 \
+    crate://crates.io/winapi-util/0.1.5;name=winapi-util-0.1.5 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0;name=winapi-x86_64-pc-windows-gnu-0.4.0 \
+    crate://crates.io/windows-sys/0.42.0;name=windows-sys-0.42.0 \
+    crate://crates.io/windows-sys/0.45.0;name=windows-sys-0.45.0 \
+    crate://crates.io/windows-targets/0.42.2;name=windows-targets-0.42.2 \
+    crate://crates.io/windows_aarch64_gnullvm/0.42.2;name=windows_aarch64_gnullvm-0.42.2 \
+    crate://crates.io/windows_aarch64_msvc/0.42.2;name=windows_aarch64_msvc-0.42.2 \
+    crate://crates.io/windows_i686_gnu/0.42.2;name=windows_i686_gnu-0.42.2 \
+    crate://crates.io/windows_i686_msvc/0.42.2;name=windows_i686_msvc-0.42.2 \
+    crate://crates.io/windows_x86_64_gnu/0.42.2;name=windows_x86_64_gnu-0.42.2 \
+    crate://crates.io/windows_x86_64_gnullvm/0.42.2;name=windows_x86_64_gnullvm-0.42.2 \
+    crate://crates.io/windows_x86_64_msvc/0.42.2;name=windows_x86_64_msvc-0.42.2 \
+    crate://crates.io/x509-parser/0.13.2;name=x509-parser-0.13.2 \
+    crate://crates.io/yasna/0.4.0;name=yasna-0.4.0 \
+    crate://crates.io/zeroize/1.5.7;name=zeroize-1.5.7 \
+    crate://crates.io/zeroize_derive/1.3.3;name=zeroize_derive-1.3.3 \
+"
+
+SRC_URI[ahash-0.7.6.sha256sum] = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
+SRC_URI[aho-corasick-0.7.20.sha256sum] = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
+SRC_URI[ansi_term-0.12.1.sha256sum] = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+SRC_URI[anyhow-1.0.69.sha256sum] = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800"
+SRC_URI[asn1-rs-0.3.1.sha256sum] = "30ff05a702273012438132f449575dbc804e27b2f3cbe3069aa237d26c98fa33"
+SRC_URI[asn1-rs-derive-0.1.0.sha256sum] = "db8b7511298d5b7784b40b092d9e9dcd3a627a5707e4b5e507931ab0d44eeebf"
+SRC_URI[asn1-rs-impl-0.1.0.sha256sum] = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
+SRC_URI[atty-0.2.14.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+SRC_URI[bincode-1.3.3.sha256sum] = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+SRC_URI[bindgen-0.57.0.sha256sum] = "fd4865004a46a0aafb2a0a5eb19d3c9fc46ee5f063a6cfc605c69ac9ecf5263d"
+SRC_URI[bindgen-0.63.0.sha256sum] = "36d860121800b2a9a94f9b5604b332d5cffb234ce17609ea479d723dbc9d3885"
+SRC_URI[bitfield-0.13.2.sha256sum] = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bumpalo-3.12.0.sha256sum] = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+SRC_URI[bytes-1.4.0.sha256sum] = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+SRC_URI[cexpr-0.4.0.sha256sum] = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
+SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[clang-sys-1.6.0.sha256sum] = "77ed9a53e5d4d9c573ae844bfac6872b159cb1d1585a83b29e7a64b7eef7332a"
+SRC_URI[clap-2.34.0.sha256sum] = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+SRC_URI[cmake-0.1.45.sha256sum] = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855"
+SRC_URI[const-oid-0.7.1.sha256sum] = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3"
+SRC_URI[cryptoauthlib-sys-0.2.2.sha256sum] = "da232dd4f06ee4600b33a455bb17fcc6c2c3a54ee7fd60496d3a73668a6cb6e4"
+SRC_URI[cryptoki-0.3.1.sha256sum] = "570006e51d08ec89ce5bbfdcf428ad96111636d524bf2447bee6377fd0e1d889"
+SRC_URI[cryptoki-sys-0.1.5.sha256sum] = "1d12231889cbf7e11d2965a063d9518bc7aac60c5b125dc61c8ff2111a160eae"
+SRC_URI[data-encoding-2.3.3.sha256sum] = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb"
+SRC_URI[der-0.5.1.sha256sum] = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c"
+SRC_URI[der-parser-7.0.0.sha256sum] = "fe398ac75057914d7d07307bf67dc7f3f574a26783b4fc7805a20ffa9f506e82"
+SRC_URI[derivative-2.2.0.sha256sum] = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
+SRC_URI[displaydoc-0.2.3.sha256sum] = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886"
+SRC_URI[either-1.8.1.sha256sum] = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+SRC_URI[enumflags2-0.7.5.sha256sum] = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
+SRC_URI[enumflags2_derive-0.7.4.sha256sum] = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
+SRC_URI[env_logger-0.8.4.sha256sum] = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
+SRC_URI[errno-0.2.8.sha256sum] = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[fallible-iterator-0.2.0.sha256sum] = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
+SRC_URI[fallible-streaming-iterator-0.1.9.sha256sum] = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
+SRC_URI[fastrand-1.9.0.sha256sum] = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+SRC_URI[fixedbitset-0.2.0.sha256sum] = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d"
+SRC_URI[form_urlencoded-1.1.0.sha256sum] = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+SRC_URI[futures-0.3.27.sha256sum] = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549"
+SRC_URI[futures-channel-0.3.27.sha256sum] = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
+SRC_URI[futures-core-0.3.27.sha256sum] = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
+SRC_URI[futures-executor-0.3.27.sha256sum] = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
+SRC_URI[futures-io-0.3.27.sha256sum] = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91"
+SRC_URI[futures-macro-0.3.27.sha256sum] = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
+SRC_URI[futures-sink-0.3.27.sha256sum] = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2"
+SRC_URI[futures-task-0.3.27.sha256sum] = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
+SRC_URI[futures-util-0.3.27.sha256sum] = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
+SRC_URI[generic-array-0.14.6.sha256sum] = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+SRC_URI[getrandom-0.2.8.sha256sum] = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+SRC_URI[grpcio-0.9.1.sha256sum] = "24d99e00eed7e0a04ee2705112e7cfdbe1a3cc771147f22f016a8cd2d002187b"
+SRC_URI[grpcio-sys-0.9.1+1.38.0.sha256sum] = "9447d1a926beeef466606cc45717f80897998b548e7dc622873d453e1ecb4be4"
+SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+SRC_URI[hashlink-0.8.1.sha256sum] = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa"
+SRC_URI[heck-0.3.3.sha256sum] = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+SRC_URI[hermit-abi-0.2.6.sha256sum] = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
+SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+SRC_URI[hostname-validator-1.1.1.sha256sum] = "f558a64ac9af88b5ba400d99b579451af0d39c6d360980045b91aac966d705e2"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[idna-0.3.0.sha256sum] = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+SRC_URI[indexmap-1.9.2.sha256sum] = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[io-lifetimes-1.0.6.sha256sum] = "cfa919a82ea574332e2de6e74b4c36e74d41982b335080fa59d4ef31be20fdf3"
+SRC_URI[itertools-0.10.5.sha256sum] = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+SRC_URI[itoa-1.0.6.sha256sum] = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+SRC_URI[js-sys-0.3.61.sha256sum] = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+SRC_URI[jsonwebkey-0.3.5.sha256sum] = "c57c852b14147e2bd58c14fde40398864453403ef632b1101db130282ee6e2cc"
+SRC_URI[jsonwebtoken-8.2.0.sha256sum] = "09f4f04699947111ec1733e71778d763555737579e44b85844cae8e1940a1828"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[lazycell-1.3.0.sha256sum] = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+SRC_URI[libc-0.2.140.sha256sum] = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+SRC_URI[libloading-0.7.4.sha256sum] = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+SRC_URI[libsqlite3-sys-0.25.2.sha256sum] = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa"
+SRC_URI[libz-sys-1.1.8.sha256sum] = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf"
+SRC_URI[linux-raw-sys-0.1.4.sha256sum] = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
+SRC_URI[lock_api-0.4.9.sha256sum] = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+SRC_URI[log-0.4.17.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+SRC_URI[mbox-0.6.0.sha256sum] = "0f88d5c34d63aad11aa4321ef55ccb064af58b3ad8091079ae22bf83e5eb75d6"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[multimap-0.8.3.sha256sum] = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
+SRC_URI[nom-5.1.2.sha256sum] = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[num-0.4.0.sha256sum] = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
+SRC_URI[num-bigint-0.4.3.sha256sum] = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+SRC_URI[num-complex-0.4.3.sha256sum] = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d"
+SRC_URI[num-derive-0.3.3.sha256sum] = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
+SRC_URI[num-integer-0.1.45.sha256sum] = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+SRC_URI[num-iter-0.1.43.sha256sum] = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
+SRC_URI[num-rational-0.4.1.sha256sum] = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+SRC_URI[num-traits-0.2.15.sha256sum] = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+SRC_URI[num_cpus-1.15.0.sha256sum] = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+SRC_URI[num_threads-0.1.6.sha256sum] = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+SRC_URI[oid-0.2.1.sha256sum] = "9c19903c598813dba001b53beeae59bb77ad4892c5c1b9b3500ce4293a0d06c2"
+SRC_URI[oid-registry-0.4.0.sha256sum] = "38e20717fa0541f39bd146692035c37bedfa532b3e5071b35761082407546b2a"
+SRC_URI[once_cell-1.17.1.sha256sum] = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+SRC_URI[parking_lot-0.11.2.sha256sum] = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+SRC_URI[parking_lot_core-0.8.6.sha256sum] = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
+SRC_URI[parsec-interface-0.28.0.sha256sum] = "f6f1b90789d4cabb8d7100a2ce632baad9683c2598f302d2387d9a45f967de56"
+SRC_URI[peeking_take_while-0.1.2.sha256sum] = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+SRC_URI[pem-1.1.1.sha256sum] = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8"
+SRC_URI[percent-encoding-2.2.0.sha256sum] = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+SRC_URI[pest-2.5.6.sha256sum] = "8cbd939b234e95d72bc393d51788aec68aeeb5d51e748ca08ff3aad58cb722f7"
+SRC_URI[petgraph-0.5.1.sha256sum] = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7"
+SRC_URI[picky-asn1-0.3.3.sha256sum] = "889bbb26c80acf919e89980dfc8e04eb19df272d8a9893ec9b748d3a1675abde"
+SRC_URI[picky-asn1-der-0.2.5.sha256sum] = "acbbd5390ab967396cc7473e6e0848684aec7166e657c6088604e07b54a73dbe"
+SRC_URI[picky-asn1-x509-0.6.1.sha256sum] = "f3033675030de806aba1d5470949701b7c9f1dbf77e3bb17bd12e5f945e560ba"
+SRC_URI[pin-project-lite-0.2.9.sha256sum] = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[pkcs8-0.8.0.sha256sum] = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0"
+SRC_URI[pkg-config-0.3.26.sha256sum] = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+SRC_URI[proc-macro-error-1.0.4.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+SRC_URI[proc-macro-error-attr-1.0.4.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+SRC_URI[proc-macro2-1.0.52.sha256sum] = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224"
+SRC_URI[prost-0.8.0.sha256sum] = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020"
+SRC_URI[prost-build-0.8.0.sha256sum] = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603"
+SRC_URI[prost-derive-0.8.0.sha256sum] = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba"
+SRC_URI[prost-types-0.8.0.sha256sum] = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b"
+SRC_URI[protobuf-2.28.0.sha256sum] = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94"
+SRC_URI[psa-crypto-0.10.0.sha256sum] = "31a7f20ebf21c7a53dd8aa24a11bd4cc9f3f838f0de1b32e17cb6cd4f88fdf7f"
+SRC_URI[psa-crypto-sys-0.10.0.sha256sum] = "0d3f19716e0584f8d5627712617b1cc5b9b642943fd9a61b883b8d533f5d400c"
+SRC_URI[quote-1.0.26.sha256sum] = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[redox_syscall-0.2.16.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+SRC_URI[regex-1.7.1.sha256sum] = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
+SRC_URI[regex-syntax-0.6.28.sha256sum] = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
+SRC_URI[ring-0.16.20.sha256sum] = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+SRC_URI[rusqlite-0.28.0.sha256sum] = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a"
+SRC_URI[rust-cryptoauthlib-0.4.5.sha256sum] = "adab07508c090715a5cd3d072f2b8ab60d7e9e04c5af19e1d3d819651b5b25a2"
+SRC_URI[rustc-hash-1.1.0.sha256sum] = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+SRC_URI[rustc_version-0.3.3.sha256sum] = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
+SRC_URI[rusticata-macros-4.1.0.sha256sum] = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632"
+SRC_URI[rustix-0.36.9.sha256sum] = "fd5c6ff11fecd55b40746d1995a02f2eb375bf8c00d192d521ee09f42bef37bc"
+SRC_URI[ryu-1.0.13.sha256sum] = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[sd-notify-0.3.0.sha256sum] = "0cd08a21f852bd2fe42e3b2a6c76a0db6a95a5b5bd29c0521dd0b30fa1712ec8"
+SRC_URI[secrecy-0.7.0.sha256sum] = "0673d6a6449f5e7d12a1caf424fd9363e2af3a4953023ed455e3c4beef4597c0"
+SRC_URI[semver-0.11.0.sha256sum] = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
+SRC_URI[semver-parser-0.10.2.sha256sum] = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
+SRC_URI[serde-1.0.156.sha256sum] = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4"
+SRC_URI[serde_bytes-0.11.9.sha256sum] = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
+SRC_URI[serde_derive-1.0.156.sha256sum] = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d"
+SRC_URI[serde_json-1.0.94.sha256sum] = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
+SRC_URI[shlex-0.1.1.sha256sum] = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
+SRC_URI[shlex-1.1.0.sha256sum] = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+SRC_URI[signal-hook-0.3.15.sha256sum] = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9"
+SRC_URI[signal-hook-registry-1.4.1.sha256sum] = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+SRC_URI[simple_asn1-0.6.2.sha256sum] = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085"
+SRC_URI[slab-0.4.8.sha256sum] = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+SRC_URI[smallvec-1.10.0.sha256sum] = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+SRC_URI[spiffe-0.2.1.sha256sum] = "f30161ecb25b9acc06eb61d750aaf1c4b3a536e22ff19fc2d250976537e93a11"
+SRC_URI[spin-0.5.2.sha256sum] = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+SRC_URI[spki-0.5.4.sha256sum] = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27"
+SRC_URI[stable_deref_trait-1.2.0.sha256sum] = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+SRC_URI[strsim-0.8.0.sha256sum] = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+SRC_URI[structopt-0.3.26.sha256sum] = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10"
+SRC_URI[structopt-derive-0.4.18.sha256sum] = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0"
+SRC_URI[strum_macros-0.21.1.sha256sum] = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec"
+SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[synstructure-0.12.6.sha256sum] = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+SRC_URI[target-lexicon-0.12.6.sha256sum] = "8ae9980cab1db3fceee2f6c6f643d5d8de2997c58ee8d25fb0cc8a9e9e7348e5"
+SRC_URI[tempfile-3.4.0.sha256sum] = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95"
+SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+SRC_URI[textwrap-0.11.0.sha256sum] = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+SRC_URI[thiserror-1.0.39.sha256sum] = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c"
+SRC_URI[thiserror-impl-1.0.39.sha256sum] = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e"
+SRC_URI[threadpool-1.8.1.sha256sum] = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
+SRC_URI[time-0.3.15.sha256sum] = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c"
+SRC_URI[time-macros-0.2.4.sha256sum] = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792"
+SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+SRC_URI[toml-0.5.11.sha256sum] = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+SRC_URI[tss-esapi-7.2.0.sha256sum] = "891582e26e83f2cbd608b18cbd7ffb921482740524187a2bca20cf44a286547b"
+SRC_URI[tss-esapi-sys-0.4.0.sha256sum] = "e7b8be553262e0924410fe96404830252477f175f228081f21cb0bd87f2ccebe"
+SRC_URI[typenum-1.16.0.sha256sum] = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+SRC_URI[ucd-trie-0.1.5.sha256sum] = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81"
+SRC_URI[unicode-bidi-0.3.11.sha256sum] = "524b68aca1d05e03fdf03fcdce2c6c94b6daf6d16861ddaa7e4f2b6638a9052c"
+SRC_URI[unicode-ident-1.0.8.sha256sum] = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+SRC_URI[unicode-segmentation-1.10.1.sha256sum] = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+SRC_URI[unicode-width-0.1.10.sha256sum] = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+SRC_URI[unicode-xid-0.2.4.sha256sum] = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+SRC_URI[untrusted-0.7.1.sha256sum] = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+SRC_URI[url-2.3.1.sha256sum] = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+SRC_URI[users-0.11.0.sha256sum] = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032"
+SRC_URI[uuid-0.8.2.sha256sum] = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
+SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+SRC_URI[vec_map-0.8.2.sha256sum] = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[walkdir-2.3.2.sha256sum] = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[wasm-bindgen-0.2.84.sha256sum] = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
+SRC_URI[wasm-bindgen-backend-0.2.84.sha256sum] = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
+SRC_URI[wasm-bindgen-macro-0.2.84.sha256sum] = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
+SRC_URI[wasm-bindgen-macro-support-0.2.84.sha256sum] = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
+SRC_URI[wasm-bindgen-shared-0.2.84.sha256sum] = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
+SRC_URI[web-sys-0.3.61.sha256sum] = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+SRC_URI[which-4.4.0.sha256sum] = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.42.0.sha256sum] = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+SRC_URI[windows-sys-0.45.0.sha256sum] = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+SRC_URI[windows-targets-0.42.2.sha256sum] = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+SRC_URI[windows_aarch64_gnullvm-0.42.2.sha256sum] = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+SRC_URI[windows_aarch64_msvc-0.42.2.sha256sum] = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+SRC_URI[windows_i686_gnu-0.42.2.sha256sum] = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+SRC_URI[windows_i686_msvc-0.42.2.sha256sum] = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+SRC_URI[windows_x86_64_gnu-0.42.2.sha256sum] = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+SRC_URI[windows_x86_64_gnullvm-0.42.2.sha256sum] = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+SRC_URI[windows_x86_64_msvc-0.42.2.sha256sum] = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+SRC_URI[x509-parser-0.13.2.sha256sum] = "9fb9bace5b5589ffead1afb76e43e34cff39cd0f3ce7e170ae0c29e53b88eb1c"
+SRC_URI[yasna-0.4.0.sha256sum] = "e262a29d0e61ccf2b6190d7050d4b237535fc76ce4c1210d9caa316f71dffa75"
+SRC_URI[zeroize-1.5.7.sha256sum] = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f"
+SRC_URI[zeroize_derive-1.3.3.sha256sum] = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c"
diff --git a/meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service_1.1.0.inc b/meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service_1.1.0.inc
deleted file mode 100644
index c04bcbd..0000000
--- a/meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service_1.1.0.inc
+++ /dev/null
@@ -1,223 +0,0 @@
-# This file is created from parsec repository Cargo.lock using cargo-bitbake tool
-
-SRC_URI += " \
-    crate://crates.io/ahash/0.7.6 \
-    crate://crates.io/aho-corasick/0.7.19 \
-    crate://crates.io/ansi_term/0.12.1 \
-    crate://crates.io/anyhow/1.0.64 \
-    crate://crates.io/asn1-rs-derive/0.1.0 \
-    crate://crates.io/asn1-rs-impl/0.1.0 \
-    crate://crates.io/asn1-rs/0.3.1 \
-    crate://crates.io/atty/0.2.14 \
-    crate://crates.io/autocfg/1.1.0 \
-    crate://crates.io/base64/0.13.0 \
-    crate://crates.io/bincode/1.3.3 \
-    crate://crates.io/bindgen/0.57.0 \
-    crate://crates.io/bindgen/0.59.2 \
-    crate://crates.io/bitfield/0.13.2 \
-    crate://crates.io/bitflags/1.3.2 \
-    crate://crates.io/bumpalo/3.11.0 \
-    crate://crates.io/bytes/1.2.1 \
-    crate://crates.io/cc/1.0.73 \
-    crate://crates.io/cexpr/0.4.0 \
-    crate://crates.io/cexpr/0.6.0 \
-    crate://crates.io/cfg-if/1.0.0 \
-    crate://crates.io/clang-sys/1.3.3 \
-    crate://crates.io/clap/2.34.0 \
-    crate://crates.io/cmake/0.1.45 \
-    crate://crates.io/const-oid/0.7.1 \
-    crate://crates.io/cryptoauthlib-sys/0.2.2 \
-    crate://crates.io/cryptoki-sys/0.1.4 \
-    crate://crates.io/cryptoki/0.3.0 \
-    crate://crates.io/data-encoding/2.3.2 \
-    crate://crates.io/der-parser/7.0.0 \
-    crate://crates.io/der/0.5.1 \
-    crate://crates.io/derivative/2.2.0 \
-    crate://crates.io/displaydoc/0.2.3 \
-    crate://crates.io/either/1.8.0 \
-    crate://crates.io/enumflags2/0.7.5 \
-    crate://crates.io/enumflags2_derive/0.7.4 \
-    crate://crates.io/env_logger/0.8.4 \
-    crate://crates.io/env_logger/0.9.0 \
-    crate://crates.io/fallible-iterator/0.2.0 \
-    crate://crates.io/fallible-streaming-iterator/0.1.9 \
-    crate://crates.io/fastrand/1.8.0 \
-    crate://crates.io/fixedbitset/0.2.0 \
-    crate://crates.io/form_urlencoded/1.0.1 \
-    crate://crates.io/futures-channel/0.3.24 \
-    crate://crates.io/futures-core/0.3.24 \
-    crate://crates.io/futures-executor/0.3.24 \
-    crate://crates.io/futures-io/0.3.24 \
-    crate://crates.io/futures-macro/0.3.24 \
-    crate://crates.io/futures-sink/0.3.24 \
-    crate://crates.io/futures-task/0.3.24 \
-    crate://crates.io/futures-util/0.3.24 \
-    crate://crates.io/futures/0.3.24 \
-    crate://crates.io/generic-array/0.14.6 \
-    crate://crates.io/getrandom/0.2.7 \
-    crate://crates.io/glob/0.3.0 \
-    crate://crates.io/grpcio-sys/0.9.1+1.38.0 \
-    crate://crates.io/grpcio/0.9.1 \
-    crate://crates.io/hashbrown/0.11.2 \
-    crate://crates.io/hashlink/0.7.0 \
-    crate://crates.io/heck/0.3.3 \
-    crate://crates.io/hermit-abi/0.1.19 \
-    crate://crates.io/hex/0.4.3 \
-    crate://crates.io/hostname-validator/1.1.1 \
-    crate://crates.io/humantime/2.1.0 \
-    crate://crates.io/idna/0.2.3 \
-    crate://crates.io/indexmap/1.8.2 \
-    crate://crates.io/instant/0.1.12 \
-    crate://crates.io/itertools/0.10.3 \
-    crate://crates.io/itoa/1.0.3 \
-    crate://crates.io/js-sys/0.3.59 \
-    crate://crates.io/jsonwebkey/0.3.5 \
-    crate://crates.io/jsonwebtoken/8.1.1 \
-    crate://crates.io/lazy_static/1.4.0 \
-    crate://crates.io/lazycell/1.3.0 \
-    crate://crates.io/libc/0.2.132 \
-    crate://crates.io/libloading/0.7.3 \
-    crate://crates.io/libsqlite3-sys/0.23.2 \
-    crate://crates.io/libz-sys/1.1.8 \
-    crate://crates.io/lock_api/0.4.8 \
-    crate://crates.io/log/0.4.17 \
-    crate://crates.io/matches/0.1.9 \
-    crate://crates.io/mbox/0.6.0 \
-    crate://crates.io/memchr/2.5.0 \
-    crate://crates.io/minimal-lexical/0.2.1 \
-    crate://crates.io/multimap/0.8.3 \
-    crate://crates.io/nom/5.1.2 \
-    crate://crates.io/nom/7.1.1 \
-    crate://crates.io/num-bigint/0.4.3 \
-    crate://crates.io/num-complex/0.4.2 \
-    crate://crates.io/num-derive/0.3.3 \
-    crate://crates.io/num-integer/0.1.45 \
-    crate://crates.io/num-iter/0.1.43 \
-    crate://crates.io/num-rational/0.4.1 \
-    crate://crates.io/num-traits/0.2.15 \
-    crate://crates.io/num/0.4.0 \
-    crate://crates.io/num_cpus/1.13.1 \
-    crate://crates.io/num_threads/0.1.6 \
-    crate://crates.io/oid-registry/0.4.0 \
-    crate://crates.io/oid/0.2.1 \
-    crate://crates.io/once_cell/1.14.0 \
-    crate://crates.io/parking_lot/0.11.2 \
-    crate://crates.io/parking_lot_core/0.8.5 \
-    crate://crates.io/parsec-interface/0.27.0 \
-    crate://crates.io/peeking_take_while/0.1.2 \
-    crate://crates.io/pem/1.1.0 \
-    crate://crates.io/percent-encoding/2.1.0 \
-    crate://crates.io/pest/2.3.0 \
-    crate://crates.io/petgraph/0.5.1 \
-    crate://crates.io/picky-asn1-der/0.2.5 \
-    crate://crates.io/picky-asn1-x509/0.6.1 \
-    crate://crates.io/picky-asn1/0.3.3 \
-    crate://crates.io/pin-project-lite/0.2.9 \
-    crate://crates.io/pin-utils/0.1.0 \
-    crate://crates.io/pkcs8/0.8.0 \
-    crate://crates.io/pkg-config/0.3.25 \
-    crate://crates.io/ppv-lite86/0.2.16 \
-    crate://crates.io/proc-macro-error-attr/1.0.4 \
-    crate://crates.io/proc-macro-error/1.0.4 \
-    crate://crates.io/proc-macro2/1.0.43 \
-    crate://crates.io/prost-build/0.8.0 \
-    crate://crates.io/prost-derive/0.8.0 \
-    crate://crates.io/prost-types/0.8.0 \
-    crate://crates.io/prost/0.8.0 \
-    crate://crates.io/protobuf/2.27.1 \
-    crate://crates.io/psa-crypto-sys/0.9.3 \
-    crate://crates.io/psa-crypto/0.9.2 \
-    crate://crates.io/quote/1.0.21 \
-    crate://crates.io/rand/0.8.5 \
-    crate://crates.io/rand_chacha/0.3.1 \
-    crate://crates.io/rand_core/0.6.3 \
-    crate://crates.io/redox_syscall/0.2.16 \
-    crate://crates.io/regex-syntax/0.6.27 \
-    crate://crates.io/regex/1.6.0 \
-    crate://crates.io/remove_dir_all/0.5.3 \
-    crate://crates.io/ring/0.16.20 \
-    crate://crates.io/rusqlite/0.26.3 \
-    crate://crates.io/rust-cryptoauthlib/0.4.5 \
-    crate://crates.io/rustc-hash/1.1.0 \
-    crate://crates.io/rustc_version/0.3.3 \
-    crate://crates.io/rusticata-macros/4.1.0 \
-    crate://crates.io/ryu/1.0.11 \
-    crate://crates.io/same-file/1.0.6 \
-    crate://crates.io/scopeguard/1.1.0 \
-    crate://crates.io/sd-notify/0.2.0 \
-    crate://crates.io/secrecy/0.7.0 \
-    crate://crates.io/semver-parser/0.10.2 \
-    crate://crates.io/semver/0.11.0 \
-    crate://crates.io/serde/1.0.144 \
-    crate://crates.io/serde_bytes/0.11.7 \
-    crate://crates.io/serde_derive/1.0.144 \
-    crate://crates.io/serde_json/1.0.85 \
-    crate://crates.io/shlex/0.1.1 \
-    crate://crates.io/shlex/1.1.0 \
-    crate://crates.io/signal-hook-registry/1.4.0 \
-    crate://crates.io/signal-hook/0.3.14 \
-    crate://crates.io/simple_asn1/0.6.2 \
-    crate://crates.io/slab/0.4.7 \
-    crate://crates.io/smallvec/1.9.0 \
-    crate://crates.io/spiffe/0.2.1 \
-    crate://crates.io/spin/0.5.2 \
-    crate://crates.io/spki/0.5.4 \
-    crate://crates.io/stable_deref_trait/1.2.0 \
-    crate://crates.io/strsim/0.8.0 \
-    crate://crates.io/structopt-derive/0.4.18 \
-    crate://crates.io/structopt/0.3.26 \
-    crate://crates.io/strum_macros/0.21.1 \
-    crate://crates.io/syn/1.0.99 \
-    crate://crates.io/synstructure/0.12.6 \
-    crate://crates.io/target-lexicon/0.12.4 \
-    crate://crates.io/tempfile/3.3.0 \
-    crate://crates.io/termcolor/1.1.3 \
-    crate://crates.io/textwrap/0.11.0 \
-    crate://crates.io/thiserror-impl/1.0.33 \
-    crate://crates.io/thiserror/1.0.33 \
-    crate://crates.io/threadpool/1.8.1 \
-    crate://crates.io/time-macros/0.2.4 \
-    crate://crates.io/time/0.3.14 \
-    crate://crates.io/tinyvec/1.6.0 \
-    crate://crates.io/tinyvec_macros/0.1.0 \
-    crate://crates.io/toml/0.5.9 \
-    crate://crates.io/tss-esapi-sys/0.3.0 \
-    crate://crates.io/tss-esapi/7.1.0 \
-    crate://crates.io/typenum/1.15.0 \
-    crate://crates.io/ucd-trie/0.1.4 \
-    crate://crates.io/unicode-bidi/0.3.8 \
-    crate://crates.io/unicode-ident/1.0.3 \
-    crate://crates.io/unicode-normalization/0.1.21 \
-    crate://crates.io/unicode-segmentation/1.9.0 \
-    crate://crates.io/unicode-width/0.1.9 \
-    crate://crates.io/unicode-xid/0.2.3 \
-    crate://crates.io/untrusted/0.7.1 \
-    crate://crates.io/url/2.2.2 \
-    crate://crates.io/users/0.11.0 \
-    crate://crates.io/uuid/0.8.2 \
-    crate://crates.io/vcpkg/0.2.15 \
-    crate://crates.io/vec_map/0.8.2 \
-    crate://crates.io/version/3.0.0 \
-    crate://crates.io/version_check/0.9.4 \
-    crate://crates.io/walkdir/2.3.2 \
-    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
-    crate://crates.io/wasm-bindgen-backend/0.2.82 \
-    crate://crates.io/wasm-bindgen-macro-support/0.2.82 \
-    crate://crates.io/wasm-bindgen-macro/0.2.82 \
-    crate://crates.io/wasm-bindgen-shared/0.2.82 \
-    crate://crates.io/wasm-bindgen/0.2.82 \
-    crate://crates.io/web-sys/0.3.59 \
-    crate://crates.io/which/4.3.0 \
-    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi-util/0.1.5 \
-    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi/0.3.9 \
-    crate://crates.io/x509-parser/0.13.2 \
-    crate://crates.io/yasna/0.4.0 \
-    crate://crates.io/zeroize/1.5.7 \
-    crate://crates.io/zeroize_derive/1.3.2 \
-"
-
-LIC_FILES_CHKSUM = " \
-    file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
-"
diff --git a/meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service_1.1.0.bb b/meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service_1.2.0.bb
similarity index 90%
rename from meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service_1.1.0.bb
rename to meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service_1.2.0.bb
index 218b776..1d38dc5 100644
--- a/meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service_1.1.0.bb
+++ b/meta-security/meta-parsec/recipes-parsec/parsec-service/parsec-service_1.2.0.bb
@@ -1,15 +1,20 @@
 SUMMARY = "Platform AbstRaction for SECurity Daemon"
 HOMEPAGE = "https://github.com/parallaxsecond/parsec"
 LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-inherit cargo pkgconfig
-DEPENDS = "clang-native"
+inherit cargo pkgconfig cargo-update-recipe-crates
+
+DEPENDS += "clang-native"
 
 SRC_URI += "crate://crates.io/parsec-service/${PV} \
             file://parsec_init \
             file://systemd.patch \
             file://parsec-tmpfiles.conf \
 "
+SRC_URI[parsec-service-1.2.0.sha256sum] = "f58e7ba859c22cc1904dc8298b1a7d94ee1ba3b4d4808f28e4cc0c96ddb149c9"
+
+S = "${CARGO_VENDORING_DIRECTORY}/${BP}"
 
 PACKAGECONFIG ??= "PKCS11 MBED-CRYPTO"
 have_TPM = "${@bb.utils.contains('DISTRO_FEATURES', 'tpm2', 'TPM', '', d)}"
@@ -82,9 +87,10 @@
     ${sysconfdir}/init.d/parsec \
 "
 
-require parsec-service_${PV}.inc
+require parsec-service-crates.inc
 
-# The QA check has been temporarily disabled. An issue has been created 
-# upstream to fix this. 
+# The QA check has been temporarily disabled. An issue has been created
+# upstream to fix this.
 # https://github.com/parallaxsecond/parsec/issues/645
 INSANE_SKIP:${PN}-dbg += "buildpaths"
+
diff --git a/meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool-crates.inc b/meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool-crates.inc
new file mode 100644
index 0000000..01b3288
--- /dev/null
+++ b/meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool-crates.inc
@@ -0,0 +1,346 @@
+# Autogenerated with 'bitbake -c update_crates parsec-tool'
+
+# from Cargo.lock
+SRC_URI += " \
+    crate://crates.io/aho-corasick/0.7.20;name=aho-corasick-0.7.20 \
+    crate://crates.io/ansi_term/0.12.1;name=ansi_term-0.12.1 \
+    crate://crates.io/anyhow/1.0.69;name=anyhow-1.0.69 \
+    crate://crates.io/asn1-rs/0.3.1;name=asn1-rs-0.3.1 \
+    crate://crates.io/asn1-rs-derive/0.1.0;name=asn1-rs-derive-0.1.0 \
+    crate://crates.io/asn1-rs-impl/0.1.0;name=asn1-rs-impl-0.1.0 \
+    crate://crates.io/atty/0.2.14;name=atty-0.2.14 \
+    crate://crates.io/autocfg/1.1.0;name=autocfg-1.1.0 \
+    crate://crates.io/base64/0.13.1;name=base64-0.13.1 \
+    crate://crates.io/base64/0.21.0;name=base64-0.21.0 \
+    crate://crates.io/bincode/1.3.3;name=bincode-1.3.3 \
+    crate://crates.io/bindgen/0.57.0;name=bindgen-0.57.0 \
+    crate://crates.io/bitflags/1.3.2;name=bitflags-1.3.2 \
+    crate://crates.io/block-buffer/0.9.0;name=block-buffer-0.9.0 \
+    crate://crates.io/bumpalo/3.12.0;name=bumpalo-3.12.0 \
+    crate://crates.io/bytes/1.4.0;name=bytes-1.4.0 \
+    crate://crates.io/cc/1.0.79;name=cc-1.0.79 \
+    crate://crates.io/cexpr/0.4.0;name=cexpr-0.4.0 \
+    crate://crates.io/cfg-if/1.0.0;name=cfg-if-1.0.0 \
+    crate://crates.io/clang-sys/1.6.0;name=clang-sys-1.6.0 \
+    crate://crates.io/clap/2.34.0;name=clap-2.34.0 \
+    crate://crates.io/cmake/0.1.45;name=cmake-0.1.45 \
+    crate://crates.io/const-oid/0.7.1;name=const-oid-0.7.1 \
+    crate://crates.io/cpufeatures/0.2.6;name=cpufeatures-0.2.6 \
+    crate://crates.io/data-encoding/2.3.3;name=data-encoding-2.3.3 \
+    crate://crates.io/der/0.5.1;name=der-0.5.1 \
+    crate://crates.io/der-parser/7.0.0;name=der-parser-7.0.0 \
+    crate://crates.io/derivative/2.2.0;name=derivative-2.2.0 \
+    crate://crates.io/digest/0.9.0;name=digest-0.9.0 \
+    crate://crates.io/displaydoc/0.2.3;name=displaydoc-0.2.3 \
+    crate://crates.io/either/1.8.1;name=either-1.8.1 \
+    crate://crates.io/env_logger/0.8.4;name=env_logger-0.8.4 \
+    crate://crates.io/form_urlencoded/1.1.0;name=form_urlencoded-1.1.0 \
+    crate://crates.io/futures/0.3.27;name=futures-0.3.27 \
+    crate://crates.io/futures-channel/0.3.27;name=futures-channel-0.3.27 \
+    crate://crates.io/futures-core/0.3.27;name=futures-core-0.3.27 \
+    crate://crates.io/futures-executor/0.3.27;name=futures-executor-0.3.27 \
+    crate://crates.io/futures-io/0.3.27;name=futures-io-0.3.27 \
+    crate://crates.io/futures-macro/0.3.27;name=futures-macro-0.3.27 \
+    crate://crates.io/futures-sink/0.3.27;name=futures-sink-0.3.27 \
+    crate://crates.io/futures-task/0.3.27;name=futures-task-0.3.27 \
+    crate://crates.io/futures-util/0.3.27;name=futures-util-0.3.27 \
+    crate://crates.io/generic-array/0.14.6;name=generic-array-0.14.6 \
+    crate://crates.io/glob/0.3.1;name=glob-0.3.1 \
+    crate://crates.io/grpcio/0.9.1;name=grpcio-0.9.1 \
+    crate://crates.io/grpcio-sys/0.9.1+1.38.0;name=grpcio-sys-0.9.1+1.38.0 \
+    crate://crates.io/heck/0.3.3;name=heck-0.3.3 \
+    crate://crates.io/hermit-abi/0.1.19;name=hermit-abi-0.1.19 \
+    crate://crates.io/humantime/2.1.0;name=humantime-2.1.0 \
+    crate://crates.io/idna/0.3.0;name=idna-0.3.0 \
+    crate://crates.io/instant/0.1.12;name=instant-0.1.12 \
+    crate://crates.io/itertools/0.10.5;name=itertools-0.10.5 \
+    crate://crates.io/itoa/1.0.6;name=itoa-1.0.6 \
+    crate://crates.io/js-sys/0.3.61;name=js-sys-0.3.61 \
+    crate://crates.io/jsonwebkey/0.3.5;name=jsonwebkey-0.3.5 \
+    crate://crates.io/jsonwebtoken/8.3.0;name=jsonwebtoken-8.3.0 \
+    crate://crates.io/lazy_static/1.4.0;name=lazy_static-1.4.0 \
+    crate://crates.io/lazycell/1.3.0;name=lazycell-1.3.0 \
+    crate://crates.io/libc/0.2.140;name=libc-0.2.140 \
+    crate://crates.io/libloading/0.7.4;name=libloading-0.7.4 \
+    crate://crates.io/libz-sys/1.1.8;name=libz-sys-1.1.8 \
+    crate://crates.io/lock_api/0.4.9;name=lock_api-0.4.9 \
+    crate://crates.io/log/0.4.17;name=log-0.4.17 \
+    crate://crates.io/memchr/2.5.0;name=memchr-2.5.0 \
+    crate://crates.io/minimal-lexical/0.2.1;name=minimal-lexical-0.2.1 \
+    crate://crates.io/nom/5.1.2;name=nom-5.1.2 \
+    crate://crates.io/nom/7.1.3;name=nom-7.1.3 \
+    crate://crates.io/num/0.4.0;name=num-0.4.0 \
+    crate://crates.io/num-bigint/0.4.3;name=num-bigint-0.4.3 \
+    crate://crates.io/num-complex/0.4.3;name=num-complex-0.4.3 \
+    crate://crates.io/num-derive/0.3.3;name=num-derive-0.3.3 \
+    crate://crates.io/num-integer/0.1.45;name=num-integer-0.1.45 \
+    crate://crates.io/num-iter/0.1.43;name=num-iter-0.1.43 \
+    crate://crates.io/num-rational/0.4.1;name=num-rational-0.4.1 \
+    crate://crates.io/num-traits/0.2.15;name=num-traits-0.2.15 \
+    crate://crates.io/oid/0.2.1;name=oid-0.2.1 \
+    crate://crates.io/oid-registry/0.4.0;name=oid-registry-0.4.0 \
+    crate://crates.io/once_cell/1.17.1;name=once_cell-1.17.1 \
+    crate://crates.io/opaque-debug/0.3.0;name=opaque-debug-0.3.0 \
+    crate://crates.io/parking_lot/0.11.2;name=parking_lot-0.11.2 \
+    crate://crates.io/parking_lot_core/0.8.6;name=parking_lot_core-0.8.6 \
+    crate://crates.io/parsec-client/0.15.0;name=parsec-client-0.15.0 \
+    crate://crates.io/parsec-interface/0.28.0;name=parsec-interface-0.28.0 \
+    crate://crates.io/peeking_take_while/0.1.2;name=peeking_take_while-0.1.2 \
+    crate://crates.io/pem/1.1.1;name=pem-1.1.1 \
+    crate://crates.io/percent-encoding/2.2.0;name=percent-encoding-2.2.0 \
+    crate://crates.io/picky-asn1/0.3.3;name=picky-asn1-0.3.3 \
+    crate://crates.io/picky-asn1-der/0.2.5;name=picky-asn1-der-0.2.5 \
+    crate://crates.io/picky-asn1-x509/0.6.1;name=picky-asn1-x509-0.6.1 \
+    crate://crates.io/pin-project-lite/0.2.9;name=pin-project-lite-0.2.9 \
+    crate://crates.io/pin-utils/0.1.0;name=pin-utils-0.1.0 \
+    crate://crates.io/pkcs8/0.8.0;name=pkcs8-0.8.0 \
+    crate://crates.io/pkg-config/0.3.26;name=pkg-config-0.3.26 \
+    crate://crates.io/proc-macro-error/1.0.4;name=proc-macro-error-1.0.4 \
+    crate://crates.io/proc-macro-error-attr/1.0.4;name=proc-macro-error-attr-1.0.4 \
+    crate://crates.io/proc-macro2/1.0.52;name=proc-macro2-1.0.52 \
+    crate://crates.io/prost/0.8.0;name=prost-0.8.0 \
+    crate://crates.io/prost-derive/0.8.0;name=prost-derive-0.8.0 \
+    crate://crates.io/protobuf/2.28.0;name=protobuf-2.28.0 \
+    crate://crates.io/psa-crypto/0.10.0;name=psa-crypto-0.10.0 \
+    crate://crates.io/psa-crypto-sys/0.10.0;name=psa-crypto-sys-0.10.0 \
+    crate://crates.io/quote/1.0.26;name=quote-1.0.26 \
+    crate://crates.io/rcgen/0.9.3;name=rcgen-0.9.3 \
+    crate://crates.io/redox_syscall/0.2.16;name=redox_syscall-0.2.16 \
+    crate://crates.io/regex/1.7.1;name=regex-1.7.1 \
+    crate://crates.io/regex-syntax/0.6.28;name=regex-syntax-0.6.28 \
+    crate://crates.io/ring/0.16.20;name=ring-0.16.20 \
+    crate://crates.io/rustc-hash/1.1.0;name=rustc-hash-1.1.0 \
+    crate://crates.io/rusticata-macros/4.1.0;name=rusticata-macros-4.1.0 \
+    crate://crates.io/ryu/1.0.13;name=ryu-1.0.13 \
+    crate://crates.io/same-file/1.0.6;name=same-file-1.0.6 \
+    crate://crates.io/scopeguard/1.1.0;name=scopeguard-1.1.0 \
+    crate://crates.io/secrecy/0.7.0;name=secrecy-0.7.0 \
+    crate://crates.io/serde/1.0.158;name=serde-1.0.158 \
+    crate://crates.io/serde_bytes/0.11.9;name=serde_bytes-0.11.9 \
+    crate://crates.io/serde_derive/1.0.158;name=serde_derive-1.0.158 \
+    crate://crates.io/serde_json/1.0.94;name=serde_json-1.0.94 \
+    crate://crates.io/sha2/0.9.9;name=sha2-0.9.9 \
+    crate://crates.io/shlex/0.1.1;name=shlex-0.1.1 \
+    crate://crates.io/simple_asn1/0.6.2;name=simple_asn1-0.6.2 \
+    crate://crates.io/slab/0.4.8;name=slab-0.4.8 \
+    crate://crates.io/smallvec/1.10.0;name=smallvec-1.10.0 \
+    crate://crates.io/spiffe/0.2.1;name=spiffe-0.2.1 \
+    crate://crates.io/spin/0.5.2;name=spin-0.5.2 \
+    crate://crates.io/spki/0.5.4;name=spki-0.5.4 \
+    crate://crates.io/strsim/0.8.0;name=strsim-0.8.0 \
+    crate://crates.io/structopt/0.3.26;name=structopt-0.3.26 \
+    crate://crates.io/structopt-derive/0.4.18;name=structopt-derive-0.4.18 \
+    crate://crates.io/syn/1.0.109;name=syn-1.0.109 \
+    crate://crates.io/syn/2.0.10;name=syn-2.0.10 \
+    crate://crates.io/synstructure/0.12.6;name=synstructure-0.12.6 \
+    crate://crates.io/termcolor/1.2.0;name=termcolor-1.2.0 \
+    crate://crates.io/textwrap/0.11.0;name=textwrap-0.11.0 \
+    crate://crates.io/thiserror/1.0.40;name=thiserror-1.0.40 \
+    crate://crates.io/thiserror-impl/1.0.40;name=thiserror-impl-1.0.40 \
+    crate://crates.io/time/0.3.20;name=time-0.3.20 \
+    crate://crates.io/time-core/0.1.0;name=time-core-0.1.0 \
+    crate://crates.io/time-macros/0.2.8;name=time-macros-0.2.8 \
+    crate://crates.io/tinyvec/1.6.0;name=tinyvec-1.6.0 \
+    crate://crates.io/tinyvec_macros/0.1.1;name=tinyvec_macros-0.1.1 \
+    crate://crates.io/typenum/1.16.0;name=typenum-1.16.0 \
+    crate://crates.io/unicode-bidi/0.3.13;name=unicode-bidi-0.3.13 \
+    crate://crates.io/unicode-ident/1.0.8;name=unicode-ident-1.0.8 \
+    crate://crates.io/unicode-normalization/0.1.22;name=unicode-normalization-0.1.22 \
+    crate://crates.io/unicode-segmentation/1.10.1;name=unicode-segmentation-1.10.1 \
+    crate://crates.io/unicode-width/0.1.10;name=unicode-width-0.1.10 \
+    crate://crates.io/unicode-xid/0.2.4;name=unicode-xid-0.2.4 \
+    crate://crates.io/untrusted/0.7.1;name=untrusted-0.7.1 \
+    crate://crates.io/url/2.3.1;name=url-2.3.1 \
+    crate://crates.io/users/0.11.0;name=users-0.11.0 \
+    crate://crates.io/uuid/0.8.2;name=uuid-0.8.2 \
+    crate://crates.io/vcpkg/0.2.15;name=vcpkg-0.2.15 \
+    crate://crates.io/vec_map/0.8.2;name=vec_map-0.8.2 \
+    crate://crates.io/version_check/0.9.4;name=version_check-0.9.4 \
+    crate://crates.io/walkdir/2.3.2;name=walkdir-2.3.2 \
+    crate://crates.io/wasm-bindgen/0.2.84;name=wasm-bindgen-0.2.84 \
+    crate://crates.io/wasm-bindgen-backend/0.2.84;name=wasm-bindgen-backend-0.2.84 \
+    crate://crates.io/wasm-bindgen-macro/0.2.84;name=wasm-bindgen-macro-0.2.84 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.84;name=wasm-bindgen-macro-support-0.2.84 \
+    crate://crates.io/wasm-bindgen-shared/0.2.84;name=wasm-bindgen-shared-0.2.84 \
+    crate://crates.io/web-sys/0.3.61;name=web-sys-0.3.61 \
+    crate://crates.io/winapi/0.3.9;name=winapi-0.3.9 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0;name=winapi-i686-pc-windows-gnu-0.4.0 \
+    crate://crates.io/winapi-util/0.1.5;name=winapi-util-0.1.5 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0;name=winapi-x86_64-pc-windows-gnu-0.4.0 \
+    crate://crates.io/x509-parser/0.13.2;name=x509-parser-0.13.2 \
+    crate://crates.io/yasna/0.4.0;name=yasna-0.4.0 \
+    crate://crates.io/yasna/0.5.1;name=yasna-0.5.1 \
+    crate://crates.io/zeroize/1.5.7;name=zeroize-1.5.7 \
+    crate://crates.io/zeroize_derive/1.3.3;name=zeroize_derive-1.3.3 \
+"
+
+SRC_URI[aho-corasick-0.7.20.sha256sum] = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
+SRC_URI[ansi_term-0.12.1.sha256sum] = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+SRC_URI[anyhow-1.0.69.sha256sum] = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800"
+SRC_URI[asn1-rs-0.3.1.sha256sum] = "30ff05a702273012438132f449575dbc804e27b2f3cbe3069aa237d26c98fa33"
+SRC_URI[asn1-rs-derive-0.1.0.sha256sum] = "db8b7511298d5b7784b40b092d9e9dcd3a627a5707e4b5e507931ab0d44eeebf"
+SRC_URI[asn1-rs-impl-0.1.0.sha256sum] = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
+SRC_URI[atty-0.2.14.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+SRC_URI[base64-0.21.0.sha256sum] = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"
+SRC_URI[bincode-1.3.3.sha256sum] = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+SRC_URI[bindgen-0.57.0.sha256sum] = "fd4865004a46a0aafb2a0a5eb19d3c9fc46ee5f063a6cfc605c69ac9ecf5263d"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[block-buffer-0.9.0.sha256sum] = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
+SRC_URI[bumpalo-3.12.0.sha256sum] = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+SRC_URI[bytes-1.4.0.sha256sum] = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+SRC_URI[cexpr-0.4.0.sha256sum] = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[clang-sys-1.6.0.sha256sum] = "77ed9a53e5d4d9c573ae844bfac6872b159cb1d1585a83b29e7a64b7eef7332a"
+SRC_URI[clap-2.34.0.sha256sum] = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+SRC_URI[cmake-0.1.45.sha256sum] = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855"
+SRC_URI[const-oid-0.7.1.sha256sum] = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3"
+SRC_URI[cpufeatures-0.2.6.sha256sum] = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181"
+SRC_URI[data-encoding-2.3.3.sha256sum] = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb"
+SRC_URI[der-0.5.1.sha256sum] = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c"
+SRC_URI[der-parser-7.0.0.sha256sum] = "fe398ac75057914d7d07307bf67dc7f3f574a26783b4fc7805a20ffa9f506e82"
+SRC_URI[derivative-2.2.0.sha256sum] = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
+SRC_URI[digest-0.9.0.sha256sum] = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+SRC_URI[displaydoc-0.2.3.sha256sum] = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886"
+SRC_URI[either-1.8.1.sha256sum] = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+SRC_URI[env_logger-0.8.4.sha256sum] = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
+SRC_URI[form_urlencoded-1.1.0.sha256sum] = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+SRC_URI[futures-0.3.27.sha256sum] = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549"
+SRC_URI[futures-channel-0.3.27.sha256sum] = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
+SRC_URI[futures-core-0.3.27.sha256sum] = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
+SRC_URI[futures-executor-0.3.27.sha256sum] = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
+SRC_URI[futures-io-0.3.27.sha256sum] = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91"
+SRC_URI[futures-macro-0.3.27.sha256sum] = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
+SRC_URI[futures-sink-0.3.27.sha256sum] = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2"
+SRC_URI[futures-task-0.3.27.sha256sum] = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
+SRC_URI[futures-util-0.3.27.sha256sum] = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
+SRC_URI[generic-array-0.14.6.sha256sum] = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+SRC_URI[grpcio-0.9.1.sha256sum] = "24d99e00eed7e0a04ee2705112e7cfdbe1a3cc771147f22f016a8cd2d002187b"
+SRC_URI[grpcio-sys-0.9.1+1.38.0.sha256sum] = "9447d1a926beeef466606cc45717f80897998b548e7dc622873d453e1ecb4be4"
+SRC_URI[heck-0.3.3.sha256sum] = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[idna-0.3.0.sha256sum] = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[itertools-0.10.5.sha256sum] = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+SRC_URI[itoa-1.0.6.sha256sum] = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+SRC_URI[js-sys-0.3.61.sha256sum] = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+SRC_URI[jsonwebkey-0.3.5.sha256sum] = "c57c852b14147e2bd58c14fde40398864453403ef632b1101db130282ee6e2cc"
+SRC_URI[jsonwebtoken-8.3.0.sha256sum] = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[lazycell-1.3.0.sha256sum] = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+SRC_URI[libc-0.2.140.sha256sum] = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+SRC_URI[libloading-0.7.4.sha256sum] = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+SRC_URI[libz-sys-1.1.8.sha256sum] = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf"
+SRC_URI[lock_api-0.4.9.sha256sum] = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+SRC_URI[log-0.4.17.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[nom-5.1.2.sha256sum] = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[num-0.4.0.sha256sum] = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
+SRC_URI[num-bigint-0.4.3.sha256sum] = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+SRC_URI[num-complex-0.4.3.sha256sum] = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d"
+SRC_URI[num-derive-0.3.3.sha256sum] = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
+SRC_URI[num-integer-0.1.45.sha256sum] = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+SRC_URI[num-iter-0.1.43.sha256sum] = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
+SRC_URI[num-rational-0.4.1.sha256sum] = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+SRC_URI[num-traits-0.2.15.sha256sum] = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+SRC_URI[oid-0.2.1.sha256sum] = "9c19903c598813dba001b53beeae59bb77ad4892c5c1b9b3500ce4293a0d06c2"
+SRC_URI[oid-registry-0.4.0.sha256sum] = "38e20717fa0541f39bd146692035c37bedfa532b3e5071b35761082407546b2a"
+SRC_URI[once_cell-1.17.1.sha256sum] = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+SRC_URI[opaque-debug-0.3.0.sha256sum] = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+SRC_URI[parking_lot-0.11.2.sha256sum] = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+SRC_URI[parking_lot_core-0.8.6.sha256sum] = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
+SRC_URI[parsec-client-0.15.0.sha256sum] = "5798ac04b102b074ad2a26976e53e4c918d2342ccb8ce6f31c2e71ab338b1156"
+SRC_URI[parsec-interface-0.28.0.sha256sum] = "f6f1b90789d4cabb8d7100a2ce632baad9683c2598f302d2387d9a45f967de56"
+SRC_URI[peeking_take_while-0.1.2.sha256sum] = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+SRC_URI[pem-1.1.1.sha256sum] = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8"
+SRC_URI[percent-encoding-2.2.0.sha256sum] = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+SRC_URI[picky-asn1-0.3.3.sha256sum] = "889bbb26c80acf919e89980dfc8e04eb19df272d8a9893ec9b748d3a1675abde"
+SRC_URI[picky-asn1-der-0.2.5.sha256sum] = "acbbd5390ab967396cc7473e6e0848684aec7166e657c6088604e07b54a73dbe"
+SRC_URI[picky-asn1-x509-0.6.1.sha256sum] = "f3033675030de806aba1d5470949701b7c9f1dbf77e3bb17bd12e5f945e560ba"
+SRC_URI[pin-project-lite-0.2.9.sha256sum] = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[pkcs8-0.8.0.sha256sum] = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0"
+SRC_URI[pkg-config-0.3.26.sha256sum] = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+SRC_URI[proc-macro-error-1.0.4.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+SRC_URI[proc-macro-error-attr-1.0.4.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+SRC_URI[proc-macro2-1.0.52.sha256sum] = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224"
+SRC_URI[prost-0.8.0.sha256sum] = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020"
+SRC_URI[prost-derive-0.8.0.sha256sum] = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba"
+SRC_URI[protobuf-2.28.0.sha256sum] = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94"
+SRC_URI[psa-crypto-0.10.0.sha256sum] = "31a7f20ebf21c7a53dd8aa24a11bd4cc9f3f838f0de1b32e17cb6cd4f88fdf7f"
+SRC_URI[psa-crypto-sys-0.10.0.sha256sum] = "0d3f19716e0584f8d5627712617b1cc5b9b642943fd9a61b883b8d533f5d400c"
+SRC_URI[quote-1.0.26.sha256sum] = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+SRC_URI[rcgen-0.9.3.sha256sum] = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd"
+SRC_URI[redox_syscall-0.2.16.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+SRC_URI[regex-1.7.1.sha256sum] = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
+SRC_URI[regex-syntax-0.6.28.sha256sum] = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
+SRC_URI[ring-0.16.20.sha256sum] = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+SRC_URI[rustc-hash-1.1.0.sha256sum] = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+SRC_URI[rusticata-macros-4.1.0.sha256sum] = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632"
+SRC_URI[ryu-1.0.13.sha256sum] = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[secrecy-0.7.0.sha256sum] = "0673d6a6449f5e7d12a1caf424fd9363e2af3a4953023ed455e3c4beef4597c0"
+SRC_URI[serde-1.0.158.sha256sum] = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
+SRC_URI[serde_bytes-0.11.9.sha256sum] = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
+SRC_URI[serde_derive-1.0.158.sha256sum] = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
+SRC_URI[serde_json-1.0.94.sha256sum] = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
+SRC_URI[sha2-0.9.9.sha256sum] = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
+SRC_URI[shlex-0.1.1.sha256sum] = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
+SRC_URI[simple_asn1-0.6.2.sha256sum] = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085"
+SRC_URI[slab-0.4.8.sha256sum] = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+SRC_URI[smallvec-1.10.0.sha256sum] = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+SRC_URI[spiffe-0.2.1.sha256sum] = "f30161ecb25b9acc06eb61d750aaf1c4b3a536e22ff19fc2d250976537e93a11"
+SRC_URI[spin-0.5.2.sha256sum] = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+SRC_URI[spki-0.5.4.sha256sum] = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27"
+SRC_URI[strsim-0.8.0.sha256sum] = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+SRC_URI[structopt-0.3.26.sha256sum] = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10"
+SRC_URI[structopt-derive-0.4.18.sha256sum] = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0"
+SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[syn-2.0.10.sha256sum] = "5aad1363ed6d37b84299588d62d3a7d95b5a5c2d9aad5c85609fda12afaa1f40"
+SRC_URI[synstructure-0.12.6.sha256sum] = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+SRC_URI[textwrap-0.11.0.sha256sum] = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+SRC_URI[thiserror-1.0.40.sha256sum] = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
+SRC_URI[thiserror-impl-1.0.40.sha256sum] = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
+SRC_URI[time-0.3.20.sha256sum] = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
+SRC_URI[time-core-0.1.0.sha256sum] = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
+SRC_URI[time-macros-0.2.8.sha256sum] = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
+SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+SRC_URI[typenum-1.16.0.sha256sum] = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+SRC_URI[unicode-bidi-0.3.13.sha256sum] = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+SRC_URI[unicode-ident-1.0.8.sha256sum] = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+SRC_URI[unicode-segmentation-1.10.1.sha256sum] = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+SRC_URI[unicode-width-0.1.10.sha256sum] = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+SRC_URI[unicode-xid-0.2.4.sha256sum] = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+SRC_URI[untrusted-0.7.1.sha256sum] = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+SRC_URI[url-2.3.1.sha256sum] = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+SRC_URI[users-0.11.0.sha256sum] = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032"
+SRC_URI[uuid-0.8.2.sha256sum] = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
+SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+SRC_URI[vec_map-0.8.2.sha256sum] = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[walkdir-2.3.2.sha256sum] = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+SRC_URI[wasm-bindgen-0.2.84.sha256sum] = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
+SRC_URI[wasm-bindgen-backend-0.2.84.sha256sum] = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
+SRC_URI[wasm-bindgen-macro-0.2.84.sha256sum] = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
+SRC_URI[wasm-bindgen-macro-support-0.2.84.sha256sum] = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
+SRC_URI[wasm-bindgen-shared-0.2.84.sha256sum] = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
+SRC_URI[web-sys-0.3.61.sha256sum] = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[x509-parser-0.13.2.sha256sum] = "9fb9bace5b5589ffead1afb76e43e34cff39cd0f3ce7e170ae0c29e53b88eb1c"
+SRC_URI[yasna-0.4.0.sha256sum] = "e262a29d0e61ccf2b6190d7050d4b237535fc76ce4c1210d9caa316f71dffa75"
+SRC_URI[yasna-0.5.1.sha256sum] = "aed2e7a52e3744ab4d0c05c20aa065258e84c49fd4226f5191b2ed29712710b4"
+SRC_URI[zeroize-1.5.7.sha256sum] = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f"
+SRC_URI[zeroize_derive-1.3.3.sha256sum] = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c"
diff --git a/meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool_0.5.4.inc b/meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool_0.5.4.inc
deleted file mode 100644
index 36d98d3..0000000
--- a/meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool_0.5.4.inc
+++ /dev/null
@@ -1,176 +0,0 @@
-# This file is created from parsec-tool repository Cargo.lock using cargo-bitbake tool
-
-SRC_URI += " \
-    crate://crates.io/aho-corasick/0.7.19 \
-    crate://crates.io/ansi_term/0.12.1 \
-    crate://crates.io/anyhow/1.0.64 \
-    crate://crates.io/asn1-rs-derive/0.1.0 \
-    crate://crates.io/asn1-rs-impl/0.1.0 \
-    crate://crates.io/asn1-rs/0.3.1 \
-    crate://crates.io/atty/0.2.14 \
-    crate://crates.io/autocfg/1.1.0 \
-    crate://crates.io/base64/0.13.0 \
-    crate://crates.io/bincode/1.3.3 \
-    crate://crates.io/bindgen/0.57.0 \
-    crate://crates.io/bitflags/1.3.2 \
-    crate://crates.io/block-buffer/0.9.0 \
-    crate://crates.io/bumpalo/3.11.0 \
-    crate://crates.io/bytes/1.2.1 \
-    crate://crates.io/cc/1.0.73 \
-    crate://crates.io/cexpr/0.4.0 \
-    crate://crates.io/cfg-if/1.0.0 \
-    crate://crates.io/clang-sys/1.3.3 \
-    crate://crates.io/clap/2.34.0 \
-    crate://crates.io/cmake/0.1.45 \
-    crate://crates.io/const-oid/0.7.1 \
-    crate://crates.io/cpufeatures/0.2.5 \
-    crate://crates.io/data-encoding/2.3.2 \
-    crate://crates.io/der-parser/7.0.0 \
-    crate://crates.io/der/0.5.1 \
-    crate://crates.io/derivative/2.2.0 \
-    crate://crates.io/digest/0.9.0 \
-    crate://crates.io/displaydoc/0.2.3 \
-    crate://crates.io/either/1.8.0 \
-    crate://crates.io/env_logger/0.8.4 \
-    crate://crates.io/form_urlencoded/1.1.0 \
-    crate://crates.io/futures-channel/0.3.24 \
-    crate://crates.io/futures-core/0.3.24 \
-    crate://crates.io/futures-executor/0.3.24 \
-    crate://crates.io/futures-io/0.3.24 \
-    crate://crates.io/futures-macro/0.3.24 \
-    crate://crates.io/futures-sink/0.3.24 \
-    crate://crates.io/futures-task/0.3.24 \
-    crate://crates.io/futures-util/0.3.24 \
-    crate://crates.io/futures/0.3.24 \
-    crate://crates.io/generic-array/0.14.6 \
-    crate://crates.io/glob/0.3.0 \
-    crate://crates.io/grpcio-sys/0.9.1+1.38.0 \
-    crate://crates.io/grpcio/0.9.1 \
-    crate://crates.io/heck/0.3.3 \
-    crate://crates.io/hermit-abi/0.1.19 \
-    crate://crates.io/humantime/2.1.0 \
-    crate://crates.io/idna/0.3.0 \
-    crate://crates.io/instant/0.1.12 \
-    crate://crates.io/itertools/0.10.3 \
-    crate://crates.io/itoa/1.0.3 \
-    crate://crates.io/js-sys/0.3.59 \
-    crate://crates.io/jsonwebkey/0.3.5 \
-    crate://crates.io/jsonwebtoken/8.1.1 \
-    crate://crates.io/lazy_static/1.4.0 \
-    crate://crates.io/lazycell/1.3.0 \
-    crate://crates.io/libc/0.2.132 \
-    crate://crates.io/libloading/0.7.3 \
-    crate://crates.io/libz-sys/1.1.8 \
-    crate://crates.io/lock_api/0.4.8 \
-    crate://crates.io/log/0.4.17 \
-    crate://crates.io/memchr/2.5.0 \
-    crate://crates.io/minimal-lexical/0.2.1 \
-    crate://crates.io/nom/5.1.2 \
-    crate://crates.io/nom/7.1.1 \
-    crate://crates.io/num-bigint/0.4.3 \
-    crate://crates.io/num-complex/0.4.2 \
-    crate://crates.io/num-derive/0.3.3 \
-    crate://crates.io/num-integer/0.1.45 \
-    crate://crates.io/num-iter/0.1.43 \
-    crate://crates.io/num-rational/0.4.1 \
-    crate://crates.io/num-traits/0.2.15 \
-    crate://crates.io/num/0.4.0 \
-    crate://crates.io/num_threads/0.1.6 \
-    crate://crates.io/oid-registry/0.4.0 \
-    crate://crates.io/oid/0.2.1 \
-    crate://crates.io/once_cell/1.14.0 \
-    crate://crates.io/opaque-debug/0.3.0 \
-    crate://crates.io/parking_lot/0.11.2 \
-    crate://crates.io/parking_lot_core/0.8.5 \
-    crate://crates.io/parsec-client/0.14.1 \
-    crate://crates.io/parsec-interface/0.27.0 \
-    crate://crates.io/peeking_take_while/0.1.2 \
-    crate://crates.io/pem/1.1.0 \
-    crate://crates.io/percent-encoding/2.2.0 \
-    crate://crates.io/picky-asn1-der/0.2.5 \
-    crate://crates.io/picky-asn1-x509/0.6.1 \
-    crate://crates.io/picky-asn1/0.3.3 \
-    crate://crates.io/pin-project-lite/0.2.9 \
-    crate://crates.io/pin-utils/0.1.0 \
-    crate://crates.io/pkcs8/0.8.0 \
-    crate://crates.io/pkg-config/0.3.25 \
-    crate://crates.io/proc-macro-error-attr/1.0.4 \
-    crate://crates.io/proc-macro-error/1.0.4 \
-    crate://crates.io/proc-macro2/1.0.43 \
-    crate://crates.io/prost-derive/0.8.0 \
-    crate://crates.io/prost/0.8.0 \
-    crate://crates.io/protobuf/2.27.1 \
-    crate://crates.io/psa-crypto-sys/0.9.3 \
-    crate://crates.io/psa-crypto/0.9.2 \
-    crate://crates.io/quote/1.0.21 \
-    crate://crates.io/rcgen/0.9.3 \
-    crate://crates.io/redox_syscall/0.2.16 \
-    crate://crates.io/regex-syntax/0.6.27 \
-    crate://crates.io/regex/1.6.0 \
-    crate://crates.io/ring/0.16.20 \
-    crate://crates.io/rustc-hash/1.1.0 \
-    crate://crates.io/rusticata-macros/4.1.0 \
-    crate://crates.io/ryu/1.0.11 \
-    crate://crates.io/same-file/1.0.6 \
-    crate://crates.io/scopeguard/1.1.0 \
-    crate://crates.io/secrecy/0.7.0 \
-    crate://crates.io/serde/1.0.144 \
-    crate://crates.io/serde_bytes/0.11.7 \
-    crate://crates.io/serde_derive/1.0.144 \
-    crate://crates.io/serde_json/1.0.85 \
-    crate://crates.io/sha2/0.9.9 \
-    crate://crates.io/shlex/0.1.1 \
-    crate://crates.io/simple_asn1/0.6.2 \
-    crate://crates.io/slab/0.4.7 \
-    crate://crates.io/smallvec/1.9.0 \
-    crate://crates.io/spiffe/0.2.1 \
-    crate://crates.io/spin/0.5.2 \
-    crate://crates.io/spki/0.5.4 \
-    crate://crates.io/strsim/0.8.0 \
-    crate://crates.io/structopt-derive/0.4.18 \
-    crate://crates.io/structopt/0.3.26 \
-    crate://crates.io/syn/1.0.99 \
-    crate://crates.io/synstructure/0.12.6 \
-    crate://crates.io/termcolor/1.1.3 \
-    crate://crates.io/textwrap/0.11.0 \
-    crate://crates.io/thiserror-impl/1.0.34 \
-    crate://crates.io/thiserror/1.0.34 \
-    crate://crates.io/time-macros/0.2.3 \
-    crate://crates.io/time/0.3.7 \
-    crate://crates.io/tinyvec/1.6.0 \
-    crate://crates.io/tinyvec_macros/0.1.0 \
-    crate://crates.io/typenum/1.15.0 \
-    crate://crates.io/unicode-bidi/0.3.8 \
-    crate://crates.io/unicode-ident/1.0.3 \
-    crate://crates.io/unicode-normalization/0.1.21 \
-    crate://crates.io/unicode-segmentation/1.9.0 \
-    crate://crates.io/unicode-width/0.1.9 \
-    crate://crates.io/unicode-xid/0.2.3 \
-    crate://crates.io/untrusted/0.7.1 \
-    crate://crates.io/url/2.3.1 \
-    crate://crates.io/users/0.11.0 \
-    crate://crates.io/uuid/0.8.2 \
-    crate://crates.io/vcpkg/0.2.15 \
-    crate://crates.io/vec_map/0.8.2 \
-    crate://crates.io/version_check/0.9.4 \
-    crate://crates.io/walkdir/2.3.2 \
-    crate://crates.io/wasm-bindgen-backend/0.2.82 \
-    crate://crates.io/wasm-bindgen-macro-support/0.2.82 \
-    crate://crates.io/wasm-bindgen-macro/0.2.82 \
-    crate://crates.io/wasm-bindgen-shared/0.2.82 \
-    crate://crates.io/wasm-bindgen/0.2.82 \
-    crate://crates.io/web-sys/0.3.59 \
-    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi-util/0.1.5 \
-    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi/0.3.9 \
-    crate://crates.io/x509-parser/0.13.2 \
-    crate://crates.io/yasna/0.4.0 \
-    crate://crates.io/yasna/0.5.0 \
-    crate://crates.io/zeroize/1.5.7 \
-    crate://crates.io/zeroize_derive/1.3.2 \
-"
-
-LIC_FILES_CHKSUM = " \
-    file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
-"
diff --git a/meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool_0.5.4.bb b/meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool_0.6.0.bb
similarity index 64%
rename from meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool_0.5.4.bb
rename to meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool_0.6.0.bb
index 0f62009..6095ae1 100644
--- a/meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool_0.5.4.bb
+++ b/meta-security/meta-parsec/recipes-parsec/parsec-tool/parsec-tool_0.6.0.bb
@@ -1,13 +1,15 @@
 SUMMARY = "Parsec Command Line Interface"
 HOMEPAGE = "https://github.com/parallaxsecond/parsec-tool"
 LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-inherit cargo
+inherit cargo cargo-update-recipe-crates
 
 SRC_URI += "crate://crates.io/parsec-tool/${PV} \
 "
+SRC_URI[parsec-tool-0.6.0.sha256sum] = "f51d5d7f0caca1c335324b52482fa5edbf6c9cfd2e6865e5cb22716d52dcb367"
 
-RDEPENDS:${PN} = "openssl-bin"
+S = "${CARGO_VENDORING_DIRECTORY}/${BP}"
 
 do_install() {
   install -d ${D}/${bindir}
@@ -15,9 +17,11 @@
   install -m 755 "${S}/tests/parsec-cli-tests.sh" "${D}${bindir}/parsec-cli-tests.sh"
 }
 
-require parsec-tool_${PV}.inc
+require parsec-tool-crates.inc
 
-# The QA check has been temporarily disabled. An issue has been created 
-# upstream to fix this. 
+RDEPENDS:${PN} = "openssl-bin"
+
+# The QA check has been temporarily disabled. An issue has been created
+# upstream to fix this.
 # https://github.com/parallaxsecond/parsec-tool/issues/94
 INSANE_SKIP:${PN}-dbg += "buildpaths"
diff --git a/meta-security/recipes-ids/suricata/suricata-crates.inc b/meta-security/recipes-ids/suricata/suricata-crates.inc
new file mode 100644
index 0000000..535f53c
--- /dev/null
+++ b/meta-security/recipes-ids/suricata/suricata-crates.inc
@@ -0,0 +1,724 @@
+# ak did manually
+SRC_URI += " \
+    crate://crates.io/autocfg/1.0.1;name=autocfg-1.0.1 \
+    crate://crates.io/brotli/3.3.0;name=brotli-3.0.3 \
+    crate://crates.io/crc/1.8.1;name=crc-1.8.1 \
+    crate://crates.io/der-parser/0.5.0;name=der-parser-0.5.0 \
+    crate://crates.io/der-parser/4.1.0;name=der-parser-4.1.0 \
+    crate://crates.io/der-parser/3.0.4;name=der-parser-3.0.4 \
+    crate://crates.io/flate2/1.0.20;name=flate2-1.0.20 \
+    crate://crates.io/ipsec-parser/0.5.0;name=ipsec-parser-0.5.0 \
+    crate://crates.io/kerberos-parser/0.5.0;name=kerberos-parser-0.5.0 \
+    crate://crates.io/md5/0.7.0;name=md5-0.7.0 \
+    crate://crates.io/memchr/2.3.4;name=memchr-2.3.4 \
+    crate://crates.io/nom/5.1.1;name=nom-5.1.1 \
+    crate://crates.io/ntp-parser/0.4.0;name=ntp-parser-0.5.0 \
+    crate://crates.io/num/0.2.1;name=num-0.2.1 \
+    crate://crates.io/num-derive/0.2.5;name=num-derive-0.2.5 \
+    crate://crates.io/snmp-parser/0.6.0;name=snmp-parser-0.6.0 \
+    crate://crates.io/tls-parser/0.9.4;name=tls-parser-0.9.4 \
+    crate://crates.io/uuid/0.8.2;name=uuid-0.8.2 \
+    crate://crates.io/widestring/0.4.3;name=widestring-0.4.3 \
+    crate://crates.io/x509-parser/0.6.5;name=x509-parser-0.6.5 \
+    crate://crates.io/build_const/0.2.1;name=build_const-0.2.1 \
+    crate://crates.io/der-oid-macro/0.2.0;name=der-oid-macro-0.2.0 \
+    crate://crates.io/proc-macro-hack/0.5.19;name=proc-macro-hack-0.5.19 \
+    crate://crates.io/rusticata-macros/2.1.0;name=rusticata-macros-2.1.0 \
+    crate://crates.io/miniz_oxide/0.4.4;name=miniz_oxide-0.4.4 \
+    crate://crates.io/num-bigint/0.2.6;name=num-bigint-0.2.6 \
+    crate://crates.io/num-bigint/0.3.1;name=num-bigint-0.3.1 \
+    crate://crates.io/num-complex/0.2.4;name=num-complex-0.2.4 \
+    crate://crates.io/num-integer/0.1.44;name=num-integer-0.1.44 \
+    crate://crates.io/num-iter/0.1.42;name=num-iter-0.1.42 \
+    crate://crates.io/num-rational/0.2.4;name=num-rational-0.2.4 \
+    crate://crates.io/num-traits/0.2.14;name=num-traits-0.2.14 \
+    crate://crates.io/num-traits/0.1.43;name=num-traits-0.1.43 \
+    crate://crates.io/enum_primitive/0.1.1;name=enum_primitive-0.1.1 \
+    crate://crates.io/phf/0.8.0;name=phf-0.8.0 \
+    crate://crates.io/phf_codegen/0.8.0;name=phf_codegen-0.8.0 \
+    crate://crates.io/phf_generator/0.8.0;name=phf_generator-0.8.0 \
+    crate://crates.io/base64/0.11.0;name=base64-0.11.0 \
+    crate://crates.io/time/0.1.44;name=time-0.1.44 \
+    crate://crates.io/wasi/0.10.0+wasi-snapshot-preview1;name=wasi-0.10.0+wasi-snapshot-preview1 \
+    crate://crates.io/lexical-core/0.6.8;name=lexical-core-0.6.8 \
+"
+
+# test case support
+SRC_URI += " \
+    crate://crates.io/test-case/1.0.1;name=test-case-1.0.1 \
+"
+
+# Autogenerated with 'bitbake -c update_crates suricata'
+# from vendor/base64/Cargo.lock
+SRC_URI += " \
+    crate://crates.io/arrayvec/0.4.11;name=arrayvec-0.4.11 \
+    crate://crates.io/atty/0.2.12;name=atty-0.2.12 \
+    crate://crates.io/autocfg/0.1.4;name=autocfg-0.1.4 \
+    crate://crates.io/bitflags/1.1.0;name=bitflags-1.1.0 \
+    crate://crates.io/bstr/0.2.1;name=bstr-0.2.1 \
+    crate://crates.io/byteorder/1.3.2;name=byteorder-1.3.2 \
+    crate://crates.io/cast/0.2.2;name=cast-0.2.2 \
+    crate://crates.io/cfg-if/0.1.9;name=cfg-if-0.1.9 \
+    crate://crates.io/clap/2.33.0;name=clap-2.33.0 \
+    crate://crates.io/cloudabi/0.0.3;name=cloudabi-0.0.3 \
+    crate://crates.io/criterion/0.3.0;name=criterion-0.3.0 \
+    crate://crates.io/criterion-plot/0.4.0;name=criterion-plot-0.4.0 \
+    crate://crates.io/crossbeam-deque/0.6.3;name=crossbeam-deque-0.6.3 \
+    crate://crates.io/crossbeam-epoch/0.7.1;name=crossbeam-epoch-0.7.1 \
+    crate://crates.io/crossbeam-queue/0.1.2;name=crossbeam-queue-0.1.2 \
+    crate://crates.io/crossbeam-utils/0.6.5;name=crossbeam-utils-0.6.5 \
+    crate://crates.io/csv/1.1.1;name=csv-1.1.1 \
+    crate://crates.io/csv-core/0.1.6;name=csv-core-0.1.6 \
+    crate://crates.io/doc-comment/0.3.1;name=doc-comment-0.3.1 \
+    crate://crates.io/either/1.5.2;name=either-1.5.2 \
+    crate://crates.io/fuchsia-cprng/0.1.1;name=fuchsia-cprng-0.1.1 \
+    crate://crates.io/getrandom/0.1.13;name=getrandom-0.1.13 \
+    crate://crates.io/itertools/0.8.0;name=itertools-0.8.0 \
+    crate://crates.io/itoa/0.4.4;name=itoa-0.4.4 \
+    crate://crates.io/lazy_static/1.3.0;name=lazy_static-1.3.0 \
+    crate://crates.io/libc/0.2.65;name=libc-0.2.65 \
+    crate://crates.io/memchr/2.2.1;name=memchr-2.2.1 \
+    crate://crates.io/memoffset/0.2.1;name=memoffset-0.2.1 \
+    crate://crates.io/nodrop/0.1.13;name=nodrop-0.1.13 \
+    crate://crates.io/num-traits/0.2.8;name=num-traits-0.2.8 \
+    crate://crates.io/num_cpus/1.10.1;name=num_cpus-1.10.1 \
+    crate://crates.io/proc-macro2/0.4.30;name=proc-macro2-0.4.30 \
+    crate://crates.io/quote/0.6.13;name=quote-0.6.13 \
+    crate://crates.io/rand/0.6.5;name=rand-0.6.5 \
+    crate://crates.io/rand_chacha/0.1.1;name=rand_chacha-0.1.1 \
+    crate://crates.io/rand_core/0.3.1;name=rand_core-0.3.1 \
+    crate://crates.io/rand_core/0.4.0;name=rand_core-0.4.0 \
+    crate://crates.io/rand_core/0.5.1;name=rand_core-0.5.1 \
+    crate://crates.io/rand_hc/0.1.0;name=rand_hc-0.1.0 \
+    crate://crates.io/rand_isaac/0.1.1;name=rand_isaac-0.1.1 \
+    crate://crates.io/rand_jitter/0.1.4;name=rand_jitter-0.1.4 \
+    crate://crates.io/rand_os/0.1.3;name=rand_os-0.1.3 \
+    crate://crates.io/rand_os/0.2.2;name=rand_os-0.2.2 \
+    crate://crates.io/rand_pcg/0.1.2;name=rand_pcg-0.1.2 \
+    crate://crates.io/rand_xorshift/0.1.1;name=rand_xorshift-0.1.1 \
+    crate://crates.io/rand_xoshiro/0.3.1;name=rand_xoshiro-0.3.1 \
+    crate://crates.io/rayon/1.1.0;name=rayon-1.1.0 \
+    crate://crates.io/rayon-core/1.5.0;name=rayon-core-1.5.0 \
+    crate://crates.io/rdrand/0.4.0;name=rdrand-0.4.0 \
+    crate://crates.io/regex-automata/0.1.7;name=regex-automata-0.1.7 \
+    crate://crates.io/ryu/1.0.0;name=ryu-1.0.0 \
+    crate://crates.io/same-file/1.0.4;name=same-file-1.0.4 \
+    crate://crates.io/scopeguard/0.3.3;name=scopeguard-0.3.3 \
+    crate://crates.io/serde/1.0.94;name=serde-1.0.94 \
+    crate://crates.io/serde_derive/1.0.94;name=serde_derive-1.0.94 \
+    crate://crates.io/serde_json/1.0.40;name=serde_json-1.0.40 \
+    crate://crates.io/syn/0.15.39;name=syn-0.15.39 \
+    crate://crates.io/textwrap/0.11.0;name=textwrap-0.11.0 \
+    crate://crates.io/tinytemplate/1.0.2;name=tinytemplate-1.0.2 \
+    crate://crates.io/unicode-width/0.1.5;name=unicode-width-0.1.5 \
+    crate://crates.io/unicode-xid/0.1.0;name=unicode-xid-0.1.0 \
+    crate://crates.io/walkdir/2.2.8;name=walkdir-2.2.8 \
+    crate://crates.io/wasi/0.7.0;name=wasi-0.7.0 \
+    crate://crates.io/winapi/0.3.7;name=winapi-0.3.7 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0;name=winapi-i686-pc-windows-gnu-0.4.0 \
+    crate://crates.io/winapi-util/0.1.2;name=winapi-util-0.1.2 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0;name=winapi-x86_64-pc-windows-gnu-0.4.0 \
+"
+
+# from vendor/ryu/Cargo.lock
+SRC_URI += " \
+    crate://crates.io/cfg-if/1.0.0;name=cfg-if-1.0.0 \
+    crate://crates.io/getrandom/0.2.7;name=getrandom-0.2.7 \
+    crate://crates.io/hermit-abi/0.1.19;name=hermit-abi-0.1.19 \
+    crate://crates.io/libc/0.2.134;name=libc-0.2.134 \
+    crate://crates.io/no-panic/0.1.16;name=no-panic-0.1.16 \
+    crate://crates.io/num_cpus/1.13.1;name=num_cpus-1.13.1 \
+    crate://crates.io/ppv-lite86/0.2.16;name=ppv-lite86-0.2.16 \
+    crate://crates.io/proc-macro2/1.0.46;name=proc-macro2-1.0.46 \
+    crate://crates.io/quote/1.0.21;name=quote-1.0.21 \
+    crate://crates.io/rand/0.8.5;name=rand-0.8.5 \
+    crate://crates.io/rand_chacha/0.3.1;name=rand_chacha-0.3.1 \
+    crate://crates.io/rand_core/0.6.4;name=rand_core-0.6.4 \
+    crate://crates.io/rand_xorshift/0.3.0;name=rand_xorshift-0.3.0 \
+    crate://crates.io/syn/1.0.102;name=syn-1.0.102 \
+    crate://crates.io/unicode-ident/1.0.4;name=unicode-ident-1.0.4 \
+    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1;name=wasi-0.11.0+wasi-snapshot-preview1 \
+"
+
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[getrandom-0.2.7.sha256sum] = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
+SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+SRC_URI[libc-0.2.134.sha256sum] = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb"
+SRC_URI[no-panic-0.1.16.sha256sum] = "12f10d4b6dcf2138f0fc171f4cc8f49517cc71ac57e29aa061c61aa57ec2dffc"
+SRC_URI[num_cpus-1.13.1.sha256sum] = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+SRC_URI[ppv-lite86-0.2.16.sha256sum] = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+SRC_URI[proc-macro2-1.0.46.sha256sum] = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
+SRC_URI[quote-1.0.21.sha256sum] = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[rand_xorshift-0.3.0.sha256sum] = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f"
+SRC_URI[syn-1.0.102.sha256sum] = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
+SRC_URI[unicode-ident-1.0.4.sha256sum] = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+# from vendor/flate2/Cargo.lock
+SRC_URI += " \
+    crate://crates.io/adler/1.0.2;name=adler-1.0.2 \
+    crate://crates.io/cc/1.0.77;name=cc-1.0.77 \
+    crate://crates.io/cfg-if/1.0.0;name=cfg-if-1.0.0 \
+    crate://crates.io/cloudflare-zlib-sys/0.3.0;name=cloudflare-zlib-sys-0.3.0 \
+    crate://crates.io/cmake/0.1.49;name=cmake-0.1.49 \
+    crate://crates.io/crc32fast/1.3.2;name=crc32fast-1.3.2 \
+    crate://crates.io/getrandom/0.2.8;name=getrandom-0.2.8 \
+    crate://crates.io/libc/0.2.137;name=libc-0.2.137 \
+    crate://crates.io/libz-ng-sys/1.1.8;name=libz-ng-sys-1.1.8 \
+    crate://crates.io/libz-sys/1.1.8;name=libz-sys-1.1.8 \
+    crate://crates.io/miniz_oxide/0.6.2;name=miniz_oxide-0.6.2 \
+    crate://crates.io/pkg-config/0.3.26;name=pkg-config-0.3.26 \
+    crate://crates.io/ppv-lite86/0.2.17;name=ppv-lite86-0.2.17 \
+    crate://crates.io/quickcheck/1.0.3;name=quickcheck-1.0.3 \
+    crate://crates.io/rand/0.8.5;name=rand-0.8.5 \
+    crate://crates.io/rand_chacha/0.3.1;name=rand_chacha-0.3.1 \
+    crate://crates.io/rand_core/0.6.4;name=rand_core-0.6.4 \
+    crate://crates.io/vcpkg/0.2.15;name=vcpkg-0.2.15 \
+    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1;name=wasi-0.11.0+wasi-snapshot-preview1 \
+"
+
+SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+SRC_URI[cc-1.0.77.sha256sum] = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[cloudflare-zlib-sys-0.3.0.sha256sum] = "2040b6d1edfee6d75f172d81e2d2a7807534f3f294ce18184c70e7bb0105cd6f"
+SRC_URI[cmake-0.1.49.sha256sum] = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c"
+SRC_URI[crc32fast-1.3.2.sha256sum] = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+SRC_URI[getrandom-0.2.8.sha256sum] = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+SRC_URI[libc-0.2.137.sha256sum] = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
+SRC_URI[libz-ng-sys-1.1.8.sha256sum] = "4399ae96a9966bf581e726de86969f803a81b7ce795fcd5480e640589457e0f2"
+SRC_URI[libz-sys-1.1.8.sha256sum] = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf"
+SRC_URI[miniz_oxide-0.6.2.sha256sum] = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+SRC_URI[pkg-config-0.3.26.sha256sum] = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+SRC_URI[quickcheck-1.0.3.sha256sum] = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+# from vendor/nom/Cargo.lock
+SRC_URI += " \
+    crate://crates.io/aho-corasick/0.7.6;name=aho-corasick-0.7.6 \
+    crate://crates.io/arrayvec/0.4.11;name=arrayvec-0.4.11 \
+    crate://crates.io/atty/0.2.13;name=atty-0.2.13 \
+    crate://crates.io/autocfg/0.1.6;name=autocfg-0.1.6 \
+    crate://crates.io/bitflags/1.2.1;name=bitflags-1.2.1 \
+    crate://crates.io/bstr/0.2.7;name=bstr-0.2.7 \
+    crate://crates.io/byteorder/1.3.2;name=byteorder-1.3.2 \
+    crate://crates.io/cast/0.2.2;name=cast-0.2.2 \
+    crate://crates.io/cc/1.0.40;name=cc-1.0.40 \
+    crate://crates.io/cfg-if/0.1.9;name=cfg-if-0.1.9 \
+    crate://crates.io/clap/2.33.0;name=clap-2.33.0 \
+    crate://crates.io/cloudabi/0.0.3;name=cloudabi-0.0.3 \
+    crate://crates.io/criterion/0.2.11;name=criterion-0.2.11 \
+    crate://crates.io/criterion-plot/0.3.1;name=criterion-plot-0.3.1 \
+    crate://crates.io/crossbeam-deque/0.6.3;name=crossbeam-deque-0.6.3 \
+    crate://crates.io/crossbeam-epoch/0.7.2;name=crossbeam-epoch-0.7.2 \
+    crate://crates.io/crossbeam-queue/0.1.2;name=crossbeam-queue-0.1.2 \
+    crate://crates.io/crossbeam-utils/0.6.6;name=crossbeam-utils-0.6.6 \
+    crate://crates.io/csv/1.1.1;name=csv-1.1.1 \
+    crate://crates.io/csv-core/0.1.6;name=csv-core-0.1.6 \
+    crate://crates.io/doc-comment/0.3.1;name=doc-comment-0.3.1 \
+    crate://crates.io/either/1.5.2;name=either-1.5.2 \
+    crate://crates.io/fs_extra/1.1.0;name=fs_extra-1.1.0 \
+    crate://crates.io/fuchsia-cprng/0.1.1;name=fuchsia-cprng-0.1.1 \
+    crate://crates.io/itertools/0.8.0;name=itertools-0.8.0 \
+    crate://crates.io/itoa/0.4.4;name=itoa-0.4.4 \
+    crate://crates.io/jemalloc-sys/0.1.8;name=jemalloc-sys-0.1.8 \
+    crate://crates.io/jemallocator/0.1.9;name=jemallocator-0.1.9 \
+    crate://crates.io/lazy_static/1.3.0;name=lazy_static-1.3.0 \
+    crate://crates.io/lexical-core/0.6.7;name=lexical-core-0.6.7 \
+    crate://crates.io/libc/0.2.62;name=libc-0.2.62 \
+    crate://crates.io/memchr/2.2.1;name=memchr-2.2.1 \
+    crate://crates.io/memoffset/0.5.1;name=memoffset-0.5.1 \
+    crate://crates.io/nodrop/0.1.13;name=nodrop-0.1.13 \
+    crate://crates.io/num-traits/0.2.8;name=num-traits-0.2.8 \
+    crate://crates.io/num_cpus/1.10.1;name=num_cpus-1.10.1 \
+    crate://crates.io/proc-macro2/1.0.1;name=proc-macro2-1.0.1 \
+    crate://crates.io/quote/1.0.2;name=quote-1.0.2 \
+    crate://crates.io/rand_core/0.3.1;name=rand_core-0.3.1 \
+    crate://crates.io/rand_core/0.4.2;name=rand_core-0.4.2 \
+    crate://crates.io/rand_os/0.1.3;name=rand_os-0.1.3 \
+    crate://crates.io/rand_xoshiro/0.1.0;name=rand_xoshiro-0.1.0 \
+    crate://crates.io/rayon/1.1.0;name=rayon-1.1.0 \
+    crate://crates.io/rayon-core/1.5.0;name=rayon-core-1.5.0 \
+    crate://crates.io/rdrand/0.4.0;name=rdrand-0.4.0 \
+    crate://crates.io/regex/1.2.1;name=regex-1.2.1 \
+    crate://crates.io/regex-automata/0.1.8;name=regex-automata-0.1.8 \
+    crate://crates.io/regex-syntax/0.6.11;name=regex-syntax-0.6.11 \
+    crate://crates.io/rustc_version/0.2.3;name=rustc_version-0.2.3 \
+    crate://crates.io/ryu/1.0.0;name=ryu-1.0.0 \
+    crate://crates.io/same-file/1.0.5;name=same-file-1.0.5 \
+    crate://crates.io/scopeguard/1.0.0;name=scopeguard-1.0.0 \
+    crate://crates.io/semver/0.9.0;name=semver-0.9.0 \
+    crate://crates.io/semver-parser/0.7.0;name=semver-parser-0.7.0 \
+    crate://crates.io/serde/1.0.99;name=serde-1.0.99 \
+    crate://crates.io/serde_derive/1.0.99;name=serde_derive-1.0.99 \
+    crate://crates.io/serde_json/1.0.40;name=serde_json-1.0.40 \
+    crate://crates.io/static_assertions/0.3.4;name=static_assertions-0.3.4 \
+    crate://crates.io/syn/1.0.3;name=syn-1.0.3 \
+    crate://crates.io/textwrap/0.11.0;name=textwrap-0.11.0 \
+    crate://crates.io/thread_local/0.3.6;name=thread_local-0.3.6 \
+    crate://crates.io/tinytemplate/1.0.2;name=tinytemplate-1.0.2 \
+    crate://crates.io/unicode-width/0.1.6;name=unicode-width-0.1.6 \
+    crate://crates.io/unicode-xid/0.2.0;name=unicode-xid-0.2.0 \
+    crate://crates.io/version_check/0.9.1;name=version_check-0.9.1 \
+    crate://crates.io/walkdir/2.2.9;name=walkdir-2.2.9 \
+    crate://crates.io/winapi/0.3.7;name=winapi-0.3.7 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0;name=winapi-i686-pc-windows-gnu-0.4.0 \
+    crate://crates.io/winapi-util/0.1.2;name=winapi-util-0.1.2 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0;name=winapi-x86_64-pc-windows-gnu-0.4.0 \
+"
+
+# from vendor/brotli/Cargo.lock
+SRC_URI += " \
+    crate://crates.io/alloc-no-stdlib/2.0.3;name=alloc-no-stdlib-2.0.3 \
+    crate://crates.io/alloc-stdlib/0.2.1;name=alloc-stdlib-0.2.1 \
+    crate://crates.io/block-buffer/0.7.3;name=block-buffer-0.7.3 \
+    crate://crates.io/block-padding/0.1.5;name=block-padding-0.1.5 \
+    crate://crates.io/brotli-decompressor/2.3.2;name=brotli-decompressor-2.3.2 \
+    crate://crates.io/byte-tools/0.3.1;name=byte-tools-0.3.1 \
+    crate://crates.io/byteorder/1.4.3;name=byteorder-1.4.3 \
+    crate://crates.io/cfg-if/1.0.0;name=cfg-if-1.0.0 \
+    crate://crates.io/digest/0.8.1;name=digest-0.8.1 \
+    crate://crates.io/fake-simd/0.1.2;name=fake-simd-0.1.2 \
+    crate://crates.io/generic-array/0.12.4;name=generic-array-0.12.4 \
+    crate://crates.io/libm/0.1.4;name=libm-0.1.4 \
+    crate://crates.io/opaque-debug/0.2.3;name=opaque-debug-0.2.3 \
+    crate://crates.io/packed_simd_2/0.3.7;name=packed_simd_2-0.3.7 \
+    crate://crates.io/sha2/0.8.2;name=sha2-0.8.2 \
+    crate://crates.io/typenum/1.15.0;name=typenum-1.15.0 \
+"
+
+SRC_URI[alloc-no-stdlib-2.0.3.sha256sum] = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3"
+SRC_URI[alloc-stdlib-0.2.1.sha256sum] = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2"
+SRC_URI[block-buffer-0.7.3.sha256sum] = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
+SRC_URI[block-padding-0.1.5.sha256sum] = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
+SRC_URI[brotli-decompressor-2.3.2.sha256sum] = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80"
+SRC_URI[byte-tools-0.3.1.sha256sum] = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
+SRC_URI[byteorder-1.4.3.sha256sum] = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[digest-0.8.1.sha256sum] = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
+SRC_URI[fake-simd-0.1.2.sha256sum] = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
+SRC_URI[generic-array-0.12.4.sha256sum] = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd"
+SRC_URI[libm-0.1.4.sha256sum] = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a"
+SRC_URI[opaque-debug-0.2.3.sha256sum] = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
+SRC_URI[packed_simd_2-0.3.7.sha256sum] = "defdcfef86dcc44ad208f71d9ff4ce28df6537a4e0d6b0e8e845cb8ca10059a6"
+SRC_URI[sha2-0.8.2.sha256sum] = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69"
+SRC_URI[typenum-1.15.0.sha256sum] = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
+# from vendor/alloc-stdlib/Cargo.lock
+SRC_URI += " \
+    crate://crates.io/alloc-no-stdlib/2.0.4;name=alloc-no-stdlib-2.0.4 \
+"
+
+SRC_URI[alloc-no-stdlib-2.0.4.sha256sum] = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+# from vendor/brotli-decompressor/Cargo.lock
+SRC_URI += " \
+    crate://crates.io/alloc-no-stdlib/2.0.4;name=alloc-no-stdlib-2.0.4 \
+    crate://crates.io/alloc-stdlib/0.2.2;name=alloc-stdlib-0.2.2 \
+"
+
+SRC_URI[alloc-no-stdlib-2.0.4.sha256sum] = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+SRC_URI[alloc-stdlib-0.2.2.sha256sum] = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
+# from vendor/phf_generator/Cargo.lock
+SRC_URI += " \
+    crate://crates.io/arrayvec/0.4.12;name=arrayvec-0.4.12 \
+    crate://crates.io/atty/0.2.13;name=atty-0.2.13 \
+    crate://crates.io/autocfg/0.1.6;name=autocfg-0.1.6 \
+    crate://crates.io/bitflags/1.2.1;name=bitflags-1.2.1 \
+    crate://crates.io/bstr/0.2.8;name=bstr-0.2.8 \
+    crate://crates.io/byteorder/1.3.2;name=byteorder-1.3.2 \
+    crate://crates.io/c2-chacha/0.2.2;name=c2-chacha-0.2.2 \
+    crate://crates.io/cast/0.2.2;name=cast-0.2.2 \
+    crate://crates.io/cfg-if/0.1.10;name=cfg-if-0.1.10 \
+    crate://crates.io/clap/2.33.0;name=clap-2.33.0 \
+    crate://crates.io/criterion/0.3.0;name=criterion-0.3.0 \
+    crate://crates.io/criterion-plot/0.4.0;name=criterion-plot-0.4.0 \
+    crate://crates.io/crossbeam-deque/0.7.1;name=crossbeam-deque-0.7.1 \
+    crate://crates.io/crossbeam-epoch/0.7.2;name=crossbeam-epoch-0.7.2 \
+    crate://crates.io/crossbeam-queue/0.1.2;name=crossbeam-queue-0.1.2 \
+    crate://crates.io/crossbeam-utils/0.6.6;name=crossbeam-utils-0.6.6 \
+    crate://crates.io/csv/1.1.1;name=csv-1.1.1 \
+    crate://crates.io/csv-core/0.1.6;name=csv-core-0.1.6 \
+    crate://crates.io/either/1.5.3;name=either-1.5.3 \
+    crate://crates.io/getrandom/0.1.12;name=getrandom-0.1.12 \
+    crate://crates.io/itertools/0.8.0;name=itertools-0.8.0 \
+    crate://crates.io/itoa/0.4.4;name=itoa-0.4.4 \
+    crate://crates.io/lazy_static/1.4.0;name=lazy_static-1.4.0 \
+    crate://crates.io/libc/0.2.64;name=libc-0.2.64 \
+    crate://crates.io/memchr/2.2.1;name=memchr-2.2.1 \
+    crate://crates.io/memoffset/0.5.1;name=memoffset-0.5.1 \
+    crate://crates.io/nodrop/0.1.14;name=nodrop-0.1.14 \
+    crate://crates.io/num-traits/0.2.8;name=num-traits-0.2.8 \
+    crate://crates.io/num_cpus/1.10.1;name=num_cpus-1.10.1 \
+    crate://crates.io/phf_shared/0.8.0;name=phf_shared-0.8.0 \
+    crate://crates.io/ppv-lite86/0.2.5;name=ppv-lite86-0.2.5 \
+    crate://crates.io/proc-macro2/1.0.5;name=proc-macro2-1.0.5 \
+    crate://crates.io/quote/1.0.2;name=quote-1.0.2 \
+    crate://crates.io/rand/0.7.2;name=rand-0.7.2 \
+    crate://crates.io/rand_chacha/0.2.1;name=rand_chacha-0.2.1 \
+    crate://crates.io/rand_core/0.5.1;name=rand_core-0.5.1 \
+    crate://crates.io/rand_hc/0.2.0;name=rand_hc-0.2.0 \
+    crate://crates.io/rand_os/0.2.2;name=rand_os-0.2.2 \
+    crate://crates.io/rand_pcg/0.2.0;name=rand_pcg-0.2.0 \
+    crate://crates.io/rand_xoshiro/0.3.1;name=rand_xoshiro-0.3.1 \
+    crate://crates.io/rayon/1.2.0;name=rayon-1.2.0 \
+    crate://crates.io/rayon-core/1.6.0;name=rayon-core-1.6.0 \
+    crate://crates.io/regex-automata/0.1.8;name=regex-automata-0.1.8 \
+    crate://crates.io/rustc_version/0.2.3;name=rustc_version-0.2.3 \
+    crate://crates.io/ryu/1.0.2;name=ryu-1.0.2 \
+    crate://crates.io/same-file/1.0.5;name=same-file-1.0.5 \
+    crate://crates.io/scopeguard/1.0.0;name=scopeguard-1.0.0 \
+    crate://crates.io/semver/0.9.0;name=semver-0.9.0 \
+    crate://crates.io/semver-parser/0.7.0;name=semver-parser-0.7.0 \
+    crate://crates.io/serde/1.0.101;name=serde-1.0.101 \
+    crate://crates.io/serde_derive/1.0.101;name=serde_derive-1.0.101 \
+    crate://crates.io/serde_json/1.0.41;name=serde_json-1.0.41 \
+    crate://crates.io/siphasher/0.3.1;name=siphasher-0.3.1 \
+    crate://crates.io/syn/1.0.5;name=syn-1.0.5 \
+    crate://crates.io/textwrap/0.11.0;name=textwrap-0.11.0 \
+    crate://crates.io/tinytemplate/1.0.2;name=tinytemplate-1.0.2 \
+    crate://crates.io/unicode-width/0.1.6;name=unicode-width-0.1.6 \
+    crate://crates.io/unicode-xid/0.2.0;name=unicode-xid-0.2.0 \
+    crate://crates.io/walkdir/2.2.9;name=walkdir-2.2.9 \
+    crate://crates.io/wasi/0.7.0;name=wasi-0.7.0 \
+    crate://crates.io/winapi/0.3.8;name=winapi-0.3.8 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0;name=winapi-i686-pc-windows-gnu-0.4.0 \
+    crate://crates.io/winapi-util/0.1.2;name=winapi-util-0.1.2 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0;name=winapi-x86_64-pc-windows-gnu-0.4.0 \
+"
+
+# from vendor/rand/Cargo.lock
+SRC_URI += " \
+    crate://crates.io/base-x/0.2.5;name=base-x-0.2.5 \
+    crate://crates.io/bumpalo/2.6.0;name=bumpalo-2.6.0 \
+    crate://crates.io/c2-chacha/0.2.2;name=c2-chacha-0.2.2 \
+    crate://crates.io/cfg-if/0.1.9;name=cfg-if-0.1.9 \
+    crate://crates.io/discard/1.0.4;name=discard-1.0.4 \
+    crate://crates.io/getrandom/0.1.12;name=getrandom-0.1.12 \
+    crate://crates.io/itoa/0.4.4;name=itoa-0.4.4 \
+    crate://crates.io/lazy_static/1.4.0;name=lazy_static-1.4.0 \
+    crate://crates.io/libc/0.2.62;name=libc-0.2.62 \
+    crate://crates.io/log/0.4.8;name=log-0.4.8 \
+    crate://crates.io/packed_simd/0.3.3;name=packed_simd-0.3.3 \
+    crate://crates.io/ppv-lite86/0.2.5;name=ppv-lite86-0.2.5 \
+    crate://crates.io/proc-macro2/0.4.30;name=proc-macro2-0.4.30 \
+    crate://crates.io/proc-macro2/1.0.3;name=proc-macro2-1.0.3 \
+    crate://crates.io/quote/0.6.13;name=quote-0.6.13 \
+    crate://crates.io/quote/1.0.2;name=quote-1.0.2 \
+    crate://crates.io/rand_chacha/0.2.1;name=rand_chacha-0.2.1 \
+    crate://crates.io/rand_core/0.5.1;name=rand_core-0.5.1 \
+    crate://crates.io/rand_hc/0.2.0;name=rand_hc-0.2.0 \
+    crate://crates.io/rand_pcg/0.2.1;name=rand_pcg-0.2.1 \
+    crate://crates.io/rustc_version/0.2.3;name=rustc_version-0.2.3 \
+    crate://crates.io/ryu/1.0.0;name=ryu-1.0.0 \
+    crate://crates.io/semver/0.9.0;name=semver-0.9.0 \
+    crate://crates.io/semver-parser/0.7.0;name=semver-parser-0.7.0 \
+    crate://crates.io/serde/1.0.100;name=serde-1.0.100 \
+    crate://crates.io/serde_derive/1.0.100;name=serde_derive-1.0.100 \
+    crate://crates.io/serde_json/1.0.40;name=serde_json-1.0.40 \
+    crate://crates.io/sha1/0.6.0;name=sha1-0.6.0 \
+    crate://crates.io/stdweb/0.4.18;name=stdweb-0.4.18 \
+    crate://crates.io/stdweb-derive/0.5.1;name=stdweb-derive-0.5.1 \
+    crate://crates.io/stdweb-internal-macros/0.2.7;name=stdweb-internal-macros-0.2.7 \
+    crate://crates.io/stdweb-internal-runtime/0.1.4;name=stdweb-internal-runtime-0.1.4 \
+    crate://crates.io/syn/0.15.44;name=syn-0.15.44 \
+    crate://crates.io/syn/1.0.5;name=syn-1.0.5 \
+    crate://crates.io/unicode-xid/0.1.0;name=unicode-xid-0.1.0 \
+    crate://crates.io/unicode-xid/0.2.0;name=unicode-xid-0.2.0 \
+    crate://crates.io/wasi/0.7.0;name=wasi-0.7.0 \
+    crate://crates.io/wasm-bindgen/0.2.50;name=wasm-bindgen-0.2.50 \
+    crate://crates.io/wasm-bindgen-backend/0.2.50;name=wasm-bindgen-backend-0.2.50 \
+    crate://crates.io/wasm-bindgen-macro/0.2.50;name=wasm-bindgen-macro-0.2.50 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.50;name=wasm-bindgen-macro-support-0.2.50 \
+    crate://crates.io/wasm-bindgen-shared/0.2.50;name=wasm-bindgen-shared-0.2.50 \
+"
+
+SRC_URI[arrayvec-0.4.11.sha256sum] = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba"
+SRC_URI[atty-0.2.12.sha256sum] = "ecaaea69f52b3b18633611ec0007d188517d0366f47ff703d400fa6879d6f8d5"
+SRC_URI[autocfg-0.1.4.sha256sum] = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf"
+SRC_URI[bitflags-1.1.0.sha256sum] = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd"
+SRC_URI[bstr-0.2.1.sha256sum] = "6cc0572e02f76cb335f309b19e0a0d585b4f62788f7d26de2a13a836a637385f"
+SRC_URI[byteorder-1.3.2.sha256sum] = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
+SRC_URI[cast-0.2.2.sha256sum] = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427"
+SRC_URI[cfg-if-0.1.9.sha256sum] = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
+SRC_URI[clap-2.33.0.sha256sum] = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
+SRC_URI[cloudabi-0.0.3.sha256sum] = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
+SRC_URI[criterion-0.3.0.sha256sum] = "938703e165481c8d612ea3479ac8342e5615185db37765162e762ec3523e2fc6"
+SRC_URI[criterion-plot-0.4.0.sha256sum] = "eccdc6ce8bbe352ca89025bee672aa6d24f4eb8c53e3a8b5d1bc58011da072a2"
+SRC_URI[crossbeam-deque-0.6.3.sha256sum] = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13"
+SRC_URI[crossbeam-epoch-0.7.1.sha256sum] = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4"
+SRC_URI[crossbeam-queue-0.1.2.sha256sum] = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
+SRC_URI[crossbeam-utils-0.6.5.sha256sum] = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c"
+SRC_URI[csv-1.1.1.sha256sum] = "37519ccdfd73a75821cac9319d4fce15a81b9fcf75f951df5b9988aa3a0af87d"
+SRC_URI[csv-core-0.1.6.sha256sum] = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c"
+SRC_URI[doc-comment-0.3.1.sha256sum] = "923dea538cea0aa3025e8685b20d6ee21ef99c4f77e954a30febbaac5ec73a97"
+SRC_URI[either-1.5.2.sha256sum] = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b"
+SRC_URI[fuchsia-cprng-0.1.1.sha256sum] = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
+SRC_URI[getrandom-0.1.13.sha256sum] = "e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407"
+SRC_URI[itertools-0.8.0.sha256sum] = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358"
+SRC_URI[itoa-0.4.4.sha256sum] = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
+SRC_URI[lazy_static-1.3.0.sha256sum] = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14"
+SRC_URI[libc-0.2.65.sha256sum] = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8"
+SRC_URI[memchr-2.2.1.sha256sum] = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
+SRC_URI[memoffset-0.2.1.sha256sum] = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3"
+SRC_URI[nodrop-0.1.13.sha256sum] = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"
+SRC_URI[num-traits-0.2.8.sha256sum] = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32"
+SRC_URI[num_cpus-1.10.1.sha256sum] = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273"
+SRC_URI[proc-macro2-0.4.30.sha256sum] = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
+SRC_URI[quote-0.6.13.sha256sum] = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
+SRC_URI[rand-0.6.5.sha256sum] = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
+SRC_URI[rand_chacha-0.1.1.sha256sum] = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
+SRC_URI[rand_core-0.3.1.sha256sum] = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
+SRC_URI[rand_core-0.4.0.sha256sum] = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0"
+SRC_URI[rand_core-0.5.1.sha256sum] = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+SRC_URI[rand_hc-0.1.0.sha256sum] = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
+SRC_URI[rand_isaac-0.1.1.sha256sum] = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
+SRC_URI[rand_jitter-0.1.4.sha256sum] = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
+SRC_URI[rand_os-0.1.3.sha256sum] = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
+SRC_URI[rand_os-0.2.2.sha256sum] = "a788ae3edb696cfcba1c19bfd388cc4b8c21f8a408432b199c072825084da58a"
+SRC_URI[rand_pcg-0.1.2.sha256sum] = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
+SRC_URI[rand_xorshift-0.1.1.sha256sum] = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
+SRC_URI[rand_xoshiro-0.3.1.sha256sum] = "0e18c91676f670f6f0312764c759405f13afb98d5d73819840cf72a518487bff"
+SRC_URI[rayon-1.1.0.sha256sum] = "a4b0186e22767d5b9738a05eab7c6ac90b15db17e5b5f9bd87976dd7d89a10a4"
+SRC_URI[rayon-core-1.5.0.sha256sum] = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2"
+SRC_URI[rdrand-0.4.0.sha256sum] = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
+SRC_URI[regex-automata-0.1.7.sha256sum] = "3ed09217220c272b29ef237a974ad58515bde75f194e3ffa7e6d0bf0f3b01f86"
+SRC_URI[ryu-1.0.0.sha256sum] = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
+SRC_URI[same-file-1.0.4.sha256sum] = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267"
+SRC_URI[scopeguard-0.3.3.sha256sum] = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
+SRC_URI[serde-1.0.94.sha256sum] = "076a696fdea89c19d3baed462576b8f6d663064414b5c793642da8dfeb99475b"
+SRC_URI[serde_derive-1.0.94.sha256sum] = "ef45eb79d6463b22f5f9e16d283798b7c0175ba6050bc25c1a946c122727fe7b"
+SRC_URI[serde_json-1.0.40.sha256sum] = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704"
+SRC_URI[syn-0.15.39.sha256sum] = "b4d960b829a55e56db167e861ddb43602c003c7be0bee1d345021703fac2fb7c"
+SRC_URI[textwrap-0.11.0.sha256sum] = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+SRC_URI[tinytemplate-1.0.2.sha256sum] = "4574b75faccaacddb9b284faecdf0b544b80b6b294f3d062d325c5726a209c20"
+SRC_URI[unicode-width-0.1.5.sha256sum] = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
+SRC_URI[unicode-xid-0.1.0.sha256sum] = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
+SRC_URI[walkdir-2.2.8.sha256sum] = "c7904a7e2bb3cdf0cf5e783f44204a85a37a93151738fa349f06680f59a98b45"
+SRC_URI[wasi-0.7.0.sha256sum] = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d"
+SRC_URI[winapi-0.3.7.sha256sum] = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.2.sha256sum] = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[aho-corasick-0.7.6.sha256sum] = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
+SRC_URI[arrayvec-0.4.11.sha256sum] = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba"
+SRC_URI[atty-0.2.13.sha256sum] = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90"
+SRC_URI[autocfg-0.1.6.sha256sum] = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875"
+SRC_URI[bitflags-1.2.1.sha256sum] = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+SRC_URI[bstr-0.2.7.sha256sum] = "94cdf78eb7e94c566c1f5dbe2abf8fc70a548fc902942a48c4b3a98b48ca9ade"
+SRC_URI[byteorder-1.3.2.sha256sum] = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
+SRC_URI[cast-0.2.2.sha256sum] = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427"
+SRC_URI[cc-1.0.40.sha256sum] = "b548a4ee81fccb95919d4e22cfea83c7693ebfd78f0495493178db20b3139da7"
+SRC_URI[cfg-if-0.1.9.sha256sum] = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
+SRC_URI[clap-2.33.0.sha256sum] = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
+SRC_URI[cloudabi-0.0.3.sha256sum] = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
+SRC_URI[criterion-0.2.11.sha256sum] = "0363053954f3e679645fc443321ca128b7b950a6fe288cf5f9335cc22ee58394"
+SRC_URI[criterion-plot-0.3.1.sha256sum] = "76f9212ddf2f4a9eb2d401635190600656a1f88a932ef53d06e7fa4c7e02fb8e"
+SRC_URI[crossbeam-deque-0.6.3.sha256sum] = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13"
+SRC_URI[crossbeam-epoch-0.7.2.sha256sum] = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9"
+SRC_URI[crossbeam-queue-0.1.2.sha256sum] = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
+SRC_URI[crossbeam-utils-0.6.6.sha256sum] = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
+SRC_URI[csv-1.1.1.sha256sum] = "37519ccdfd73a75821cac9319d4fce15a81b9fcf75f951df5b9988aa3a0af87d"
+SRC_URI[csv-core-0.1.6.sha256sum] = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c"
+SRC_URI[doc-comment-0.3.1.sha256sum] = "923dea538cea0aa3025e8685b20d6ee21ef99c4f77e954a30febbaac5ec73a97"
+SRC_URI[either-1.5.2.sha256sum] = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b"
+SRC_URI[fs_extra-1.1.0.sha256sum] = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674"
+SRC_URI[fuchsia-cprng-0.1.1.sha256sum] = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
+SRC_URI[itertools-0.8.0.sha256sum] = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358"
+SRC_URI[itoa-0.4.4.sha256sum] = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
+SRC_URI[jemalloc-sys-0.1.8.sha256sum] = "bfc62c8e50e381768ce8ee0428ee53741929f7ebd73e4d83f669bcf7693e00ae"
+SRC_URI[jemallocator-0.1.9.sha256sum] = "9f0cd42ac65f758063fea55126b0148b1ce0a6354ff78e07a4d6806bc65c4ab3"
+SRC_URI[lazy_static-1.3.0.sha256sum] = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14"
+SRC_URI[lexical-core-0.6.7.sha256sum] = "f86d66d380c9c5a685aaac7a11818bdfa1f733198dfd9ec09c70b762cd12ad6f"
+SRC_URI[libc-0.2.62.sha256sum] = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba"
+SRC_URI[memchr-2.2.1.sha256sum] = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
+SRC_URI[memoffset-0.5.1.sha256sum] = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f"
+SRC_URI[nodrop-0.1.13.sha256sum] = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945"
+SRC_URI[num-traits-0.2.8.sha256sum] = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32"
+SRC_URI[num_cpus-1.10.1.sha256sum] = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273"
+SRC_URI[proc-macro2-1.0.1.sha256sum] = "4c5c2380ae88876faae57698be9e9775e3544decad214599c3a6266cca6ac802"
+SRC_URI[quote-1.0.2.sha256sum] = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
+SRC_URI[rand_core-0.3.1.sha256sum] = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
+SRC_URI[rand_core-0.4.2.sha256sum] = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
+SRC_URI[rand_os-0.1.3.sha256sum] = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
+SRC_URI[rand_xoshiro-0.1.0.sha256sum] = "03b418169fb9c46533f326efd6eed2576699c44ca92d3052a066214a8d828929"
+SRC_URI[rayon-1.1.0.sha256sum] = "a4b0186e22767d5b9738a05eab7c6ac90b15db17e5b5f9bd87976dd7d89a10a4"
+SRC_URI[rayon-core-1.5.0.sha256sum] = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2"
+SRC_URI[rdrand-0.4.0.sha256sum] = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
+SRC_URI[regex-1.2.1.sha256sum] = "88c3d9193984285d544df4a30c23a4e62ead42edf70a4452ceb76dac1ce05c26"
+SRC_URI[regex-automata-0.1.8.sha256sum] = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9"
+SRC_URI[regex-syntax-0.6.11.sha256sum] = "b143cceb2ca5e56d5671988ef8b15615733e7ee16cd348e064333b251b89343f"
+SRC_URI[rustc_version-0.2.3.sha256sum] = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
+SRC_URI[ryu-1.0.0.sha256sum] = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
+SRC_URI[same-file-1.0.5.sha256sum] = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421"
+SRC_URI[scopeguard-1.0.0.sha256sum] = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
+SRC_URI[semver-0.9.0.sha256sum] = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+SRC_URI[semver-parser-0.7.0.sha256sum] = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+SRC_URI[serde-1.0.99.sha256sum] = "fec2851eb56d010dc9a21b89ca53ee75e6528bab60c11e89d38390904982da9f"
+SRC_URI[serde_derive-1.0.99.sha256sum] = "cb4dc18c61206b08dc98216c98faa0232f4337e1e1b8574551d5bad29ea1b425"
+SRC_URI[serde_json-1.0.40.sha256sum] = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704"
+SRC_URI[static_assertions-0.3.4.sha256sum] = "7f3eb36b47e512f8f1c9e3d10c2c1965bc992bd9cdb024fa581e2194501c83d3"
+SRC_URI[syn-1.0.3.sha256sum] = "158521e6f544e7e3dcfc370ac180794aa38cb34a1b1e07609376d4adcf429b93"
+SRC_URI[textwrap-0.11.0.sha256sum] = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+SRC_URI[thread_local-0.3.6.sha256sum] = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
+SRC_URI[tinytemplate-1.0.2.sha256sum] = "4574b75faccaacddb9b284faecdf0b544b80b6b294f3d062d325c5726a209c20"
+SRC_URI[unicode-width-0.1.6.sha256sum] = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20"
+SRC_URI[unicode-xid-0.2.0.sha256sum] = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
+SRC_URI[version_check-0.9.1.sha256sum] = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce"
+SRC_URI[walkdir-2.2.9.sha256sum] = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e"
+SRC_URI[winapi-0.3.7.sha256sum] = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.2.sha256sum] = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[arrayvec-0.4.12.sha256sum] = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9"
+SRC_URI[atty-0.2.13.sha256sum] = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90"
+SRC_URI[autocfg-0.1.6.sha256sum] = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875"
+SRC_URI[bitflags-1.2.1.sha256sum] = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+SRC_URI[bstr-0.2.8.sha256sum] = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245"
+SRC_URI[byteorder-1.3.2.sha256sum] = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
+SRC_URI[c2-chacha-0.2.2.sha256sum] = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101"
+SRC_URI[cast-0.2.2.sha256sum] = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427"
+SRC_URI[cfg-if-0.1.10.sha256sum] = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+SRC_URI[clap-2.33.0.sha256sum] = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
+SRC_URI[criterion-0.3.0.sha256sum] = "938703e165481c8d612ea3479ac8342e5615185db37765162e762ec3523e2fc6"
+SRC_URI[criterion-plot-0.4.0.sha256sum] = "eccdc6ce8bbe352ca89025bee672aa6d24f4eb8c53e3a8b5d1bc58011da072a2"
+SRC_URI[crossbeam-deque-0.7.1.sha256sum] = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71"
+SRC_URI[crossbeam-epoch-0.7.2.sha256sum] = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9"
+SRC_URI[crossbeam-queue-0.1.2.sha256sum] = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
+SRC_URI[crossbeam-utils-0.6.6.sha256sum] = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6"
+SRC_URI[csv-1.1.1.sha256sum] = "37519ccdfd73a75821cac9319d4fce15a81b9fcf75f951df5b9988aa3a0af87d"
+SRC_URI[csv-core-0.1.6.sha256sum] = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c"
+SRC_URI[either-1.5.3.sha256sum] = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
+SRC_URI[getrandom-0.1.12.sha256sum] = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571"
+SRC_URI[itertools-0.8.0.sha256sum] = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358"
+SRC_URI[itoa-0.4.4.sha256sum] = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[libc-0.2.64.sha256sum] = "74dfca3d9957906e8d1e6a0b641dc9a59848e793f1da2165889fd4f62d10d79c"
+SRC_URI[memchr-2.2.1.sha256sum] = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
+SRC_URI[memoffset-0.5.1.sha256sum] = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f"
+SRC_URI[nodrop-0.1.14.sha256sum] = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
+SRC_URI[num-traits-0.2.8.sha256sum] = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32"
+SRC_URI[num_cpus-1.10.1.sha256sum] = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273"
+SRC_URI[phf_shared-0.8.0.sha256sum] = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
+SRC_URI[ppv-lite86-0.2.5.sha256sum] = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b"
+SRC_URI[proc-macro2-1.0.5.sha256sum] = "90cf5f418035b98e655e9cdb225047638296b862b42411c4e45bb88d700f7fc0"
+SRC_URI[quote-1.0.2.sha256sum] = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
+SRC_URI[rand-0.7.2.sha256sum] = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412"
+SRC_URI[rand_chacha-0.2.1.sha256sum] = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853"
+SRC_URI[rand_core-0.5.1.sha256sum] = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+SRC_URI[rand_hc-0.2.0.sha256sum] = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+SRC_URI[rand_os-0.2.2.sha256sum] = "a788ae3edb696cfcba1c19bfd388cc4b8c21f8a408432b199c072825084da58a"
+SRC_URI[rand_pcg-0.2.0.sha256sum] = "3e196346cbbc5c70c77e7b4926147ee8e383a38ee4d15d58a08098b169e492b6"
+SRC_URI[rand_xoshiro-0.3.1.sha256sum] = "0e18c91676f670f6f0312764c759405f13afb98d5d73819840cf72a518487bff"
+SRC_URI[rayon-1.2.0.sha256sum] = "83a27732a533a1be0a0035a111fe76db89ad312f6f0347004c220c57f209a123"
+SRC_URI[rayon-core-1.6.0.sha256sum] = "98dcf634205083b17d0861252431eb2acbfb698ab7478a2d20de07954f47ec7b"
+SRC_URI[regex-automata-0.1.8.sha256sum] = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9"
+SRC_URI[rustc_version-0.2.3.sha256sum] = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
+SRC_URI[ryu-1.0.2.sha256sum] = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8"
+SRC_URI[same-file-1.0.5.sha256sum] = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421"
+SRC_URI[scopeguard-1.0.0.sha256sum] = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
+SRC_URI[semver-0.9.0.sha256sum] = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+SRC_URI[semver-parser-0.7.0.sha256sum] = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+SRC_URI[serde-1.0.101.sha256sum] = "9796c9b7ba2ffe7a9ce53c2287dfc48080f4b2b362fcc245a259b3a7201119dd"
+SRC_URI[serde_derive-1.0.101.sha256sum] = "4b133a43a1ecd55d4086bd5b4dc6c1751c68b1bfbeba7a5040442022c7e7c02e"
+SRC_URI[serde_json-1.0.41.sha256sum] = "2f72eb2a68a7dc3f9a691bfda9305a1c017a6215e5a4545c258500d2099a37c2"
+SRC_URI[siphasher-0.3.1.sha256sum] = "83da420ee8d1a89e640d0948c646c1c088758d3a3c538f943bfa97bdac17929d"
+SRC_URI[syn-1.0.5.sha256sum] = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf"
+SRC_URI[textwrap-0.11.0.sha256sum] = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+SRC_URI[tinytemplate-1.0.2.sha256sum] = "4574b75faccaacddb9b284faecdf0b544b80b6b294f3d062d325c5726a209c20"
+SRC_URI[unicode-width-0.1.6.sha256sum] = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20"
+SRC_URI[unicode-xid-0.2.0.sha256sum] = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
+SRC_URI[walkdir-2.2.9.sha256sum] = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e"
+SRC_URI[wasi-0.7.0.sha256sum] = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d"
+SRC_URI[winapi-0.3.8.sha256sum] = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.2.sha256sum] = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[base-x-0.2.5.sha256sum] = "76f4eae81729e69bb1819a26c6caac956cc429238388091f98cb6cd858f16443"
+SRC_URI[bumpalo-2.6.0.sha256sum] = "ad807f2fc2bf185eeb98ff3a901bd46dc5ad58163d0fa4577ba0d25674d71708"
+SRC_URI[c2-chacha-0.2.2.sha256sum] = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101"
+SRC_URI[cfg-if-0.1.9.sha256sum] = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
+SRC_URI[discard-1.0.4.sha256sum] = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0"
+SRC_URI[getrandom-0.1.12.sha256sum] = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571"
+SRC_URI[itoa-0.4.4.sha256sum] = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[libc-0.2.62.sha256sum] = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba"
+SRC_URI[log-0.4.8.sha256sum] = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
+SRC_URI[packed_simd-0.3.3.sha256sum] = "a85ea9fc0d4ac0deb6fe7911d38786b32fc11119afd9e9d38b84ff691ce64220"
+SRC_URI[ppv-lite86-0.2.5.sha256sum] = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b"
+SRC_URI[proc-macro2-0.4.30.sha256sum] = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
+SRC_URI[proc-macro2-1.0.3.sha256sum] = "e98a83a9f9b331f54b924e68a66acb1bb35cb01fb0a23645139967abefb697e8"
+SRC_URI[quote-0.6.13.sha256sum] = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
+SRC_URI[quote-1.0.2.sha256sum] = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
+SRC_URI[rand_chacha-0.2.1.sha256sum] = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853"
+SRC_URI[rand_core-0.5.1.sha256sum] = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+SRC_URI[rand_hc-0.2.0.sha256sum] = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+SRC_URI[rand_pcg-0.2.1.sha256sum] = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
+SRC_URI[rustc_version-0.2.3.sha256sum] = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
+SRC_URI[ryu-1.0.0.sha256sum] = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
+SRC_URI[semver-0.9.0.sha256sum] = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+SRC_URI[semver-parser-0.7.0.sha256sum] = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+SRC_URI[serde-1.0.100.sha256sum] = "f4473e8506b213730ff2061073b48fa51dcc66349219e2e7c5608f0296a1d95a"
+SRC_URI[serde_derive-1.0.100.sha256sum] = "11e410fde43e157d789fc290d26bc940778ad0fdd47836426fbac36573710dbb"
+SRC_URI[serde_json-1.0.40.sha256sum] = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704"
+SRC_URI[sha1-0.6.0.sha256sum] = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d"
+SRC_URI[stdweb-0.4.18.sha256sum] = "a68c0ce28cf7400ed022e18da3c4591e14e1df02c70e93573cc59921b3923aeb"
+SRC_URI[stdweb-derive-0.5.1.sha256sum] = "0e21ebd9179de08f2300a65454268a17ea3de204627458588c84319c4def3930"
+SRC_URI[stdweb-internal-macros-0.2.7.sha256sum] = "e68f7d08b76979a43e93fe043b66d2626e35d41d68b0b85519202c6dd8ac59fa"
+SRC_URI[stdweb-internal-runtime-0.1.4.sha256sum] = "d52317523542cc0af5b7e31017ad0f7d1e78da50455e38d5657cd17754f617da"
+SRC_URI[syn-0.15.44.sha256sum] = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
+SRC_URI[syn-1.0.5.sha256sum] = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf"
+SRC_URI[unicode-xid-0.1.0.sha256sum] = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
+SRC_URI[unicode-xid-0.2.0.sha256sum] = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
+SRC_URI[wasi-0.7.0.sha256sum] = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d"
+SRC_URI[wasm-bindgen-0.2.50.sha256sum] = "dcddca308b16cd93c2b67b126c688e5467e4ef2e28200dc7dfe4ae284f2faefc"
+SRC_URI[wasm-bindgen-backend-0.2.50.sha256sum] = "f805d9328b5fc7e5c6399960fd1889271b9b58ae17bdb2417472156cc9fafdd0"
+SRC_URI[wasm-bindgen-macro-0.2.50.sha256sum] = "3ff88201a482abfc63921621f6cb18eb1efd74f136b05e5841e7f8ca434539e9"
+SRC_URI[wasm-bindgen-macro-support-0.2.50.sha256sum] = "6a433d89ecdb9f77d46fcf00c8cf9f3467b7de9954d8710c175f61e2e245bb0e"
+SRC_URI[wasm-bindgen-shared-0.2.50.sha256sum] = "d41fc1bc3570cdf8d108c15e014045fd45a95bb5eb36605f96a90461fc34027d"
+SRC_URI[autocfg-1.0.1.sha256sum] = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
+SRC_URI[brotli-3.0.3.sha256sum] = "7f29919120f08613aadcd4383764e00526fc9f18b6c0895814faeed0dd78613e"
+SRC_URI[crc-1.8.1.sha256sum] = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb"
+SRC_URI[der-parser-0.5.0.sha256sum] = "0a235b98e742e0687137c26dc4e63fe2a3953a8362dc38527e89e54d1513d548"
+SRC_URI[der-parser-4.1.0.sha256sum] = "caca07c50eaae94d43e21f4d14eca5543b6f5f5ce64715e9b7665ac5f5185b4e"
+SRC_URI[flate2-1.0.20.sha256sum] = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0"
+SRC_URI[ipsec-parser-0.5.0.sha256sum] = "4fa09785b1d327afc9178772b0c8f43b428cbf30d532366fd8e150b98e4fe90a"
+SRC_URI[kerberos-parser-0.5.0.sha256sum] = "58904d6ec6bf7a602f335a9825e96abac9963e27316a6e4681fd10ce15bfcd40"
+SRC_URI[md5-0.7.0.sha256sum] = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
+SRC_URI[memchr-2.3.4.sha256sum] = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
+SRC_URI[nom-5.1.1.sha256sum] = "0b471253da97532da4b61552249c521e01e736071f71c1a4f7ebbfbf0a06aad6"
+SRC_URI[ntp-parser-0.5.0.sha256sum] = "b4dcbdbccb49a50f69ea3c98155e6e7678b600a3c097f6aac1e7b32d0ba8ffd6"
+SRC_URI[num-0.2.1.sha256sum] = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36"
+SRC_URI[num-derive-0.2.5.sha256sum] = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2"
+SRC_URI[snmp-parser-0.6.0.sha256sum] = "ce1062255da4ec2ea2f0d985aecf85864a989d6de97883ec4ccca915d8c86a05"
+SRC_URI[tls-parser-0.9.4.sha256sum] = "579c8a8cdde06a13c7209eb7d5c752d1913489ecdb162264503a39ad9053587f"
+SRC_URI[uuid-0.8.2.sha256sum] = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
+SRC_URI[widestring-0.4.3.sha256sum] = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c"
+SRC_URI[x509-parser-0.6.5.sha256sum] = "99bbe736dd2b422d66e4830f4a06f34387c9814c027efcbda5c2f86463e8e5b0"
+SRC_URI[test-case-1.0.1.sha256sum] = "e8b114c45b5a342ec701e8775ec130bfee537c9d0fedc747594f51d85e7b6988"
+SRC_URI[build_const-0.2.1.sha256sum] = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39"
+SRC_URI[der-oid-macro-0.2.0.sha256sum] = "e66558629d772c3be040566b7be07be8c8f5aecee95e4a092dfe2efc313277ad"
+SRC_URI[proc-macro-hack-0.5.19.sha256sum] = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
+SRC_URI[rusticata-macros-2.1.0.sha256sum] = "f8a9050636e8a1b487ba1fbe99114021cd7594dde3ce6ed95bfc1691e5b5367b"
+SRC_URI[miniz_oxide-0.4.4.sha256sum] = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b"
+SRC_URI[num-bigint-0.2.6.sha256sum] = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
+SRC_URI[num-complex-0.2.4.sha256sum] = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95"
+SRC_URI[num-integer-0.1.44.sha256sum] = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
+SRC_URI[num-iter-0.1.42.sha256sum] = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59"
+SRC_URI[num-rational-0.2.4.sha256sum] = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"
+SRC_URI[num-traits-0.2.14.sha256sum] = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
+SRC_URI[enum_primitive-0.1.1.sha256sum] = "be4551092f4d519593039259a9ed8daedf0da12e5109c5280338073eaeb81180"
+SRC_URI[phf-0.8.0.sha256sum] = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
+SRC_URI[phf_codegen-0.8.0.sha256sum] = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815"
+SRC_URI[phf_generator-0.8.0.sha256sum] = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526"
+SRC_URI[base64-0.11.0.sha256sum] = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7"
+SRC_URI[der-parser-3.0.4.sha256sum] = "f51f64dcdf1cdc550d21d73dc959726c7dbeeab4a01481d08084a7736956464e"
+SRC_URI[time-0.1.44.sha256sum] = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
+SRC_URI[num-traits-0.1.43.sha256sum] = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
+SRC_URI[wasi-0.10.0+wasi-snapshot-preview1.sha256sum] = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
+SRC_URI[lexical-core-0.6.8.sha256sum] = "233853dfa6b87c7c00eb46a205802069263ab27e16b6bdd1b08ddf91a855e30c"
+SRC_URI[num-bigint-0.3.1.sha256sum] = "5e9a41747ae4633fce5adffb4d2e81ffc5e89593cb19917f8fb2cc5ff76507bf"
+
diff --git a/meta-security/recipes-ids/suricata/suricata_6.0.10.bb b/meta-security/recipes-ids/suricata/suricata_6.0.10.bb
index 0422ead..9d53356 100644
--- a/meta-security/recipes-ids/suricata/suricata_6.0.10.bb
+++ b/meta-security/recipes-ids/suricata/suricata_6.0.10.bb
@@ -18,97 +18,9 @@
     file://fixup.patch \
     "
 
-SRC_URI += " \
-    crate://crates.io/autocfg/1.0.1 \
-    crate://crates.io/semver-parser/0.7.0 \
-    crate://crates.io/arrayvec/0.4.12 \
-    crate://crates.io/ryu/1.0.5 \
-    crate://crates.io/libc/0.2.86 \
-    crate://crates.io/bitflags/1.2.1 \
-    crate://crates.io/version_check/0.9.2 \
-    crate://crates.io/memchr/2.3.4 \
-    crate://crates.io/nodrop/0.1.14 \
-    crate://crates.io/cfg-if/0.1.9 \
-    crate://crates.io/static_assertions/0.3.4 \
-    crate://crates.io/getrandom/0.1.16 \
-    crate://crates.io/cfg-if/1.0.0 \
-    crate://crates.io/siphasher/0.3.3 \
-    crate://crates.io/ppv-lite86/0.2.10 \
-    crate://crates.io/proc-macro-hack/0.5.19 \
-    crate://crates.io/proc-macro2/0.4.30 \
-    crate://crates.io/unicode-xid/0.1.0 \
-    crate://crates.io/syn/0.15.44 \
-    crate://crates.io/build_const/0.2.1 \
-    crate://crates.io/num-derive/0.2.5 \
-    crate://crates.io/base64/0.11.0 \
-    crate://crates.io/widestring/0.4.3 \
-    crate://crates.io/md5/0.7.0 \
-    crate://crates.io/uuid/0.8.2 \
-    crate://crates.io/byteorder/1.4.2 \
-    crate://crates.io/semver/0.9.0 \
-    crate://crates.io/nom/5.1.1 \
-    crate://crates.io/num-traits/0.2.14 \
-    crate://crates.io/num-integer/0.1.44 \
-    crate://crates.io/num-bigint/0.2.6 \
-    crate://crates.io/num-bigint/0.3.1 \
-    crate://crates.io/num-rational/0.2.4 \
-    crate://crates.io/num-complex/0.2.4 \
-    crate://crates.io/num-iter/0.1.42 \
-    crate://crates.io/phf_shared/0.8.0 \
-    crate://crates.io/crc/1.8.1 \
-    crate://crates.io/rustc_version/0.2.3 \
-    crate://crates.io/phf/0.8.0 \
-    crate://crates.io/lexical-core/0.6.8 \
-    crate://crates.io/time/0.1.44 \
-    crate://crates.io/quote/0.6.13 \
-    crate://crates.io/rand_core/0.5.1 \
-    crate://crates.io/rand_chacha/0.2.2 \
-    crate://crates.io/rand_pcg/0.2.1 \
-    crate://crates.io/num-traits/0.1.43 \
-    crate://crates.io/rand/0.7.3 \
-    crate://crates.io/enum_primitive/0.1.1 \
-    crate://crates.io/phf_generator/0.8.0 \
-    crate://crates.io/phf_codegen/0.8.0 \
-    crate://crates.io/tls-parser/0.9.4 \
-    crate://crates.io/num/0.2.1 \
-    crate://crates.io/rusticata-macros/2.1.0 \
-    crate://crates.io/ntp-parser/0.4.0 \
-    crate://crates.io/der-oid-macro/0.2.0 \
-    crate://crates.io/der-parser/3.0.4 \
-    crate://crates.io/ipsec-parser/0.5.0 \
-    crate://crates.io/x509-parser/0.6.5 \
-    crate://crates.io/der-parser/4.1.0 \
-    crate://crates.io/snmp-parser/0.6.0 \
-    crate://crates.io/kerberos-parser/0.5.0 \
-    crate://crates.io/wasi/0.10.0+wasi-snapshot-preview1 \
-    crate://crates.io/winapi/0.3.9 \
-    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
-    crate://crates.io/log/0.4.0 \
-    crate://crates.io/rand_hc/0.2.0 \
-    crate://crates.io/wasi/0.9.0+wasi-snapshot-preview1 \
-    crate://crates.io/sawp/0.5.0 \
-    crate://crates.io/sawp-modbus/0.5.0 \
-    crate://crates.io/brotli/3.3.0 \
-    crate://crates.io/flate2/1.0.20 \
-    crate://crates.io/alloc-no-stdlib/2.0.1 \
-    crate://crates.io/alloc-stdlib/0.2.1 \
-    crate://crates.io/brotli-decompressor/2.3.1 \
-    crate://crates.io/crc32fast/1.2.1 \
-    crate://crates.io/miniz_oxide/0.4.4 \
-    crate://crates.io/adler/1.0.2 \
-    "
+inherit autotools pkgconfig python3native systemd ptest cargo cargo-update-recipe-crates
 
-# test case support
-SRC_URI += " \
-    crate://crates.io/test-case/1.0.1 \
-    crate://crates.io/proc-macro2/1.0.1 \
-    crate://crates.io/quote/1.0.1 \
-    crate://crates.io/syn/1.0.1 \
-    crate://crates.io/unicode-xid/0.2.0 \
-    "
-
-inherit autotools pkgconfig python3native systemd ptest cargo
+require  ${BPN}-crates.inc
 
 EXTRA_OECONF += " --disable-debug \
     --disable-gccmarch-native \
@@ -118,6 +30,7 @@
     "
 
 CARGO_SRC_DIR = "rust"
+#CARGO_LOCK_SRC_DIR = "${S}/rust"
 
 B = "${S}"
 
diff --git a/meta-security/recipes-perl/perl/libwhisker2-perl_2.5.bb b/meta-security/recipes-perl/perl/libwhisker2-perl_2.5.bb
index 42c0b42..c58d883 100644
--- a/meta-security/recipes-perl/perl/libwhisker2-perl_2.5.bb
+++ b/meta-security/recipes-perl/perl/libwhisker2-perl_2.5.bb
@@ -19,9 +19,10 @@
 PACKAGEGROUP[ssl] = ", , libnet-ssleay-perl, libnet-ssleay-perl"
 
 do_install() {
-    install -d 755 ${D}${PERLLIBDIRS}/vendor_perl/${PERLVERSION}
-    install -d 755 ${D}${datadir}/perl/${PERLVERSION}
-    oe_runmake install DESTDIR=${D} INSTALLDIR=${PERLLIBDIRS}/vendor_perl/${PERLVERSION} MANDIR=${datadir}/perl/${PERLVERSION}
+    perl_version="${@get_perl_version(d)}"
+    install -d 755 ${D}${PERLLIBDIRS}/vendor_perl/${perl_version}
+    install -d 755 ${D}${datadir}/perl/${perl_version}
+    oe_runmake install DESTDIR=${D} INSTALLDIR=${PERLLIBDIRS}/vendor_perl/${perl_version} MANDIR=${datadir}/perl/${perl_version}
 }
 
 FILES:${PN} += "${datadir}/perl"
diff --git a/meta-security/recipes-security/krill/krill-crates.inc b/meta-security/recipes-security/krill/krill-crates.inc
new file mode 100644
index 0000000..85830ec
--- /dev/null
+++ b/meta-security/recipes-security/krill/krill-crates.inc
@@ -0,0 +1,550 @@
+# Autogenerated with 'bitbake -c update_crates krill'
+
+# from Cargo.lock
+SRC_URI += " \
+    crate://crates.io/addr2line/0.17.0;name=addr2line-0.17.0 \
+    crate://crates.io/adler/1.0.2;name=adler-1.0.2 \
+    crate://crates.io/adler32/1.2.0;name=adler32-1.2.0 \
+    crate://crates.io/aho-corasick/0.7.18;name=aho-corasick-0.7.18 \
+    crate://crates.io/android_system_properties/0.1.5;name=android_system_properties-0.1.5 \
+    crate://crates.io/ansi_term/0.12.1;name=ansi_term-0.12.1 \
+    crate://crates.io/ascii/1.0.0;name=ascii-1.0.0 \
+    crate://crates.io/ascii-canvas/3.0.0;name=ascii-canvas-3.0.0 \
+    crate://crates.io/atty/0.2.14;name=atty-0.2.14 \
+    crate://crates.io/autocfg/1.1.0;name=autocfg-1.1.0 \
+    crate://crates.io/backoff/0.3.0;name=backoff-0.3.0 \
+    crate://crates.io/backtrace/0.3.66;name=backtrace-0.3.66 \
+    crate://crates.io/base64/0.13.0;name=base64-0.13.0 \
+    crate://crates.io/basic-cookies/0.1.4;name=basic-cookies-0.1.4 \
+    crate://crates.io/bcder/0.7.0;name=bcder-0.7.0 \
+    crate://crates.io/bit-set/0.5.2;name=bit-set-0.5.2 \
+    crate://crates.io/bit-vec/0.6.3;name=bit-vec-0.6.3 \
+    crate://crates.io/bitflags/1.3.2;name=bitflags-1.3.2 \
+    crate://crates.io/block-buffer/0.9.0;name=block-buffer-0.9.0 \
+    crate://crates.io/block-buffer/0.10.2;name=block-buffer-0.10.2 \
+    crate://crates.io/bumpalo/3.10.0;name=bumpalo-3.10.0 \
+    crate://crates.io/bytes/1.1.0;name=bytes-1.1.0 \
+    crate://crates.io/cc/1.0.73;name=cc-1.0.73 \
+    crate://crates.io/cfg-if/1.0.0;name=cfg-if-1.0.0 \
+    crate://crates.io/chrono/0.4.22;name=chrono-0.4.22 \
+    crate://crates.io/chunked_transfer/1.4.0;name=chunked_transfer-1.4.0 \
+    crate://crates.io/cipher/0.2.5;name=cipher-0.2.5 \
+    crate://crates.io/clap/2.34.0;name=clap-2.34.0 \
+    crate://crates.io/codespan-reporting/0.11.1;name=codespan-reporting-0.11.1 \
+    crate://crates.io/core-foundation/0.9.3;name=core-foundation-0.9.3 \
+    crate://crates.io/core-foundation-sys/0.8.3;name=core-foundation-sys-0.8.3 \
+    crate://crates.io/cpufeatures/0.2.2;name=cpufeatures-0.2.2 \
+    crate://crates.io/crc32fast/1.3.2;name=crc32fast-1.3.2 \
+    crate://crates.io/crunchy/0.2.2;name=crunchy-0.2.2 \
+    crate://crates.io/crypto-common/0.1.6;name=crypto-common-0.1.6 \
+    crate://crates.io/crypto-mac/0.10.1;name=crypto-mac-0.10.1 \
+    crate://crates.io/cryptoki/0.3.0;name=cryptoki-0.3.0 \
+    crate://crates.io/cryptoki-sys/0.1.4;name=cryptoki-sys-0.1.4 \
+    crate://crates.io/ctrlc/3.2.2;name=ctrlc-3.2.2 \
+    crate://crates.io/cxx/1.0.79;name=cxx-1.0.79 \
+    crate://crates.io/cxx-build/1.0.79;name=cxx-build-1.0.79 \
+    crate://crates.io/cxxbridge-flags/1.0.79;name=cxxbridge-flags-1.0.79 \
+    crate://crates.io/cxxbridge-macro/1.0.79;name=cxxbridge-macro-1.0.79 \
+    crate://crates.io/derivative/2.2.0;name=derivative-2.2.0 \
+    crate://crates.io/deunicode/0.4.3;name=deunicode-0.4.3 \
+    crate://crates.io/diff/0.1.13;name=diff-0.1.13 \
+    crate://crates.io/digest/0.9.0;name=digest-0.9.0 \
+    crate://crates.io/digest/0.10.3;name=digest-0.10.3 \
+    crate://crates.io/dirs-next/2.0.0;name=dirs-next-2.0.0 \
+    crate://crates.io/dirs-sys-next/0.1.2;name=dirs-sys-next-0.1.2 \
+    crate://crates.io/either/1.7.0;name=either-1.7.0 \
+    crate://crates.io/ena/0.14.0;name=ena-0.14.0 \
+    crate://crates.io/encoding_rs/0.8.31;name=encoding_rs-0.8.31 \
+    crate://crates.io/enum-display-derive/0.1.1;name=enum-display-derive-0.1.1 \
+    crate://crates.io/enum-flags/0.1.8;name=enum-flags-0.1.8 \
+    crate://crates.io/error-chain/0.11.0;name=error-chain-0.11.0 \
+    crate://crates.io/fastrand/1.7.0;name=fastrand-1.7.0 \
+    crate://crates.io/fern/0.5.9;name=fern-0.5.9 \
+    crate://crates.io/fixedbitset/0.4.2;name=fixedbitset-0.4.2 \
+    crate://crates.io/fnv/1.0.7;name=fnv-1.0.7 \
+    crate://crates.io/foreign-types/0.3.2;name=foreign-types-0.3.2 \
+    crate://crates.io/foreign-types-shared/0.1.1;name=foreign-types-shared-0.1.1 \
+    crate://crates.io/form_urlencoded/1.0.1;name=form_urlencoded-1.0.1 \
+    crate://crates.io/fslock/0.2.1;name=fslock-0.2.1 \
+    crate://crates.io/futures/0.3.21;name=futures-0.3.21 \
+    crate://crates.io/futures-channel/0.3.21;name=futures-channel-0.3.21 \
+    crate://crates.io/futures-core/0.3.21;name=futures-core-0.3.21 \
+    crate://crates.io/futures-executor/0.3.21;name=futures-executor-0.3.21 \
+    crate://crates.io/futures-io/0.3.21;name=futures-io-0.3.21 \
+    crate://crates.io/futures-macro/0.3.21;name=futures-macro-0.3.21 \
+    crate://crates.io/futures-sink/0.3.21;name=futures-sink-0.3.21 \
+    crate://crates.io/futures-task/0.3.21;name=futures-task-0.3.21 \
+    crate://crates.io/futures-util/0.3.21;name=futures-util-0.3.21 \
+    crate://crates.io/generic-array/0.14.5;name=generic-array-0.14.5 \
+    crate://crates.io/getrandom/0.2.7;name=getrandom-0.2.7 \
+    crate://crates.io/gimli/0.26.2;name=gimli-0.26.2 \
+    crate://crates.io/h2/0.3.13;name=h2-0.3.13 \
+    crate://crates.io/hashbrown/0.12.3;name=hashbrown-0.12.3 \
+    crate://crates.io/hermit-abi/0.1.19;name=hermit-abi-0.1.19 \
+    crate://crates.io/hex/0.4.3;name=hex-0.4.3 \
+    crate://crates.io/hmac/0.10.1;name=hmac-0.10.1 \
+    crate://crates.io/http/0.2.8;name=http-0.2.8 \
+    crate://crates.io/http-body/0.4.5;name=http-body-0.4.5 \
+    crate://crates.io/httparse/1.7.1;name=httparse-1.7.1 \
+    crate://crates.io/httpdate/1.0.2;name=httpdate-1.0.2 \
+    crate://crates.io/hyper/0.14.20;name=hyper-0.14.20 \
+    crate://crates.io/hyper-tls/0.5.0;name=hyper-tls-0.5.0 \
+    crate://crates.io/iana-time-zone/0.1.51;name=iana-time-zone-0.1.51 \
+    crate://crates.io/iana-time-zone-haiku/0.1.1;name=iana-time-zone-haiku-0.1.1 \
+    crate://crates.io/idna/0.2.3;name=idna-0.2.3 \
+    crate://crates.io/impl-trait-for-tuples/0.2.2;name=impl-trait-for-tuples-0.2.2 \
+    crate://crates.io/indexmap/1.9.1;name=indexmap-1.9.1 \
+    crate://crates.io/instant/0.1.12;name=instant-0.1.12 \
+    crate://crates.io/intervaltree/0.2.7;name=intervaltree-0.2.7 \
+    crate://crates.io/ipnet/2.5.0;name=ipnet-2.5.0 \
+    crate://crates.io/itertools/0.10.3;name=itertools-0.10.3 \
+    crate://crates.io/itoa/1.0.2;name=itoa-1.0.2 \
+    crate://crates.io/jmespatch/0.3.0;name=jmespatch-0.3.0 \
+    crate://crates.io/js-sys/0.3.58;name=js-sys-0.3.58 \
+    crate://crates.io/kmip-protocol/0.4.2;name=kmip-protocol-0.4.2 \
+    crate://crates.io/kmip-ttlv/0.3.3;name=kmip-ttlv-0.3.3 \
+    crate://crates.io/lalrpop/0.19.8;name=lalrpop-0.19.8 \
+    crate://crates.io/lalrpop-util/0.19.8;name=lalrpop-util-0.19.8 \
+    crate://crates.io/lazy_static/1.4.0;name=lazy_static-1.4.0 \
+    crate://crates.io/libc/0.2.126;name=libc-0.2.126 \
+    crate://crates.io/libflate/1.2.0;name=libflate-1.2.0 \
+    crate://crates.io/libflate_lz77/1.1.0;name=libflate_lz77-1.1.0 \
+    crate://crates.io/libloading/0.7.3;name=libloading-0.7.3 \
+    crate://crates.io/link-cplusplus/1.0.7;name=link-cplusplus-1.0.7 \
+    crate://crates.io/lock_api/0.4.7;name=lock_api-0.4.7 \
+    crate://crates.io/log/0.4.17;name=log-0.4.17 \
+    crate://crates.io/maplit/1.0.2;name=maplit-1.0.2 \
+    crate://crates.io/matchers/0.0.1;name=matchers-0.0.1 \
+    crate://crates.io/matches/0.1.9;name=matches-0.1.9 \
+    crate://crates.io/maybe-async/0.2.6;name=maybe-async-0.2.6 \
+    crate://crates.io/memchr/2.5.0;name=memchr-2.5.0 \
+    crate://crates.io/mime/0.3.16;name=mime-0.3.16 \
+    crate://crates.io/miniz_oxide/0.5.3;name=miniz_oxide-0.5.3 \
+    crate://crates.io/mio/0.8.4;name=mio-0.8.4 \
+    crate://crates.io/native-tls/0.2.10;name=native-tls-0.2.10 \
+    crate://crates.io/new_debug_unreachable/1.0.4;name=new_debug_unreachable-1.0.4 \
+    crate://crates.io/nix/0.24.2;name=nix-0.24.2 \
+    crate://crates.io/num-bigint/0.4.3;name=num-bigint-0.4.3 \
+    crate://crates.io/num-integer/0.1.45;name=num-integer-0.1.45 \
+    crate://crates.io/num-traits/0.2.15;name=num-traits-0.2.15 \
+    crate://crates.io/num_cpus/1.13.1;name=num_cpus-1.13.1 \
+    crate://crates.io/oauth2/4.2.3;name=oauth2-4.2.3 \
+    crate://crates.io/object/0.29.0;name=object-0.29.0 \
+    crate://crates.io/once_cell/1.13.0;name=once_cell-1.13.0 \
+    crate://crates.io/opaque-debug/0.3.0;name=opaque-debug-0.3.0 \
+    crate://crates.io/openidconnect/2.3.2;name=openidconnect-2.3.2 \
+    crate://crates.io/openssl/0.10.41;name=openssl-0.10.41 \
+    crate://crates.io/openssl-macros/0.1.0;name=openssl-macros-0.1.0 \
+    crate://crates.io/openssl-probe/0.1.5;name=openssl-probe-0.1.5 \
+    crate://crates.io/openssl-src/111.25.0+1.1.1t;name=openssl-src-111.25.0+1.1.1t \
+    crate://crates.io/openssl-sys/0.9.75;name=openssl-sys-0.9.75 \
+    crate://crates.io/ordered-float/2.10.0;name=ordered-float-2.10.0 \
+    crate://crates.io/oso/0.12.4;name=oso-0.12.4 \
+    crate://crates.io/parking_lot/0.12.1;name=parking_lot-0.12.1 \
+    crate://crates.io/parking_lot_core/0.9.3;name=parking_lot_core-0.9.3 \
+    crate://crates.io/pbkdf2/0.7.5;name=pbkdf2-0.7.5 \
+    crate://crates.io/percent-encoding/2.1.0;name=percent-encoding-2.1.0 \
+    crate://crates.io/petgraph/0.6.2;name=petgraph-0.6.2 \
+    crate://crates.io/phf_shared/0.10.0;name=phf_shared-0.10.0 \
+    crate://crates.io/pico-args/0.4.2;name=pico-args-0.4.2 \
+    crate://crates.io/pin-project-lite/0.2.9;name=pin-project-lite-0.2.9 \
+    crate://crates.io/pin-utils/0.1.0;name=pin-utils-0.1.0 \
+    crate://crates.io/pkg-config/0.3.25;name=pkg-config-0.3.25 \
+    crate://crates.io/polar-core/0.12.4;name=polar-core-0.12.4 \
+    crate://crates.io/ppv-lite86/0.2.16;name=ppv-lite86-0.2.16 \
+    crate://crates.io/precomputed-hash/0.1.1;name=precomputed-hash-0.1.1 \
+    crate://crates.io/priority-queue/1.2.2;name=priority-queue-1.2.2 \
+    crate://crates.io/proc-macro2/1.0.40;name=proc-macro2-1.0.40 \
+    crate://crates.io/quick-xml/0.23.0;name=quick-xml-0.23.0 \
+    crate://crates.io/quote/1.0.20;name=quote-1.0.20 \
+    crate://crates.io/r2d2/0.8.10;name=r2d2-0.8.10 \
+    crate://crates.io/rand/0.8.5;name=rand-0.8.5 \
+    crate://crates.io/rand_chacha/0.3.1;name=rand_chacha-0.3.1 \
+    crate://crates.io/rand_core/0.6.3;name=rand_core-0.6.3 \
+    crate://crates.io/redox_syscall/0.2.13;name=redox_syscall-0.2.13 \
+    crate://crates.io/redox_users/0.4.3;name=redox_users-0.4.3 \
+    crate://crates.io/regex/1.6.0;name=regex-1.6.0 \
+    crate://crates.io/regex-automata/0.1.10;name=regex-automata-0.1.10 \
+    crate://crates.io/regex-syntax/0.6.27;name=regex-syntax-0.6.27 \
+    crate://crates.io/remove_dir_all/0.5.3;name=remove_dir_all-0.5.3 \
+    crate://crates.io/reqwest/0.11.11;name=reqwest-0.11.11 \
+    crate://crates.io/ring/0.16.20;name=ring-0.16.20 \
+    crate://crates.io/rle-decode-fast/1.0.3;name=rle-decode-fast-1.0.3 \
+    crate://crates.io/routecore/0.2.0;name=routecore-0.2.0 \
+    crate://crates.io/rpassword/5.0.1;name=rpassword-5.0.1 \
+    crate://crates.io/rpki/0.15.8;name=rpki-0.15.8 \
+    crate://crates.io/rustc-demangle/0.1.21;name=rustc-demangle-0.1.21 \
+    crate://crates.io/rustc_version/0.4.0;name=rustc_version-0.4.0 \
+    crate://crates.io/rustls/0.19.1;name=rustls-0.19.1 \
+    crate://crates.io/rustversion/1.0.8;name=rustversion-1.0.8 \
+    crate://crates.io/ryu/1.0.10;name=ryu-1.0.10 \
+    crate://crates.io/salsa20/0.7.2;name=salsa20-0.7.2 \
+    crate://crates.io/schannel/0.1.20;name=schannel-0.1.20 \
+    crate://crates.io/scheduled-thread-pool/0.2.6;name=scheduled-thread-pool-0.2.6 \
+    crate://crates.io/scopeguard/1.1.0;name=scopeguard-1.1.0 \
+    crate://crates.io/scratch/1.0.2;name=scratch-1.0.2 \
+    crate://crates.io/scrypt/0.6.5;name=scrypt-0.6.5 \
+    crate://crates.io/sct/0.6.1;name=sct-0.6.1 \
+    crate://crates.io/security-framework/2.6.1;name=security-framework-2.6.1 \
+    crate://crates.io/security-framework-sys/2.6.1;name=security-framework-sys-2.6.1 \
+    crate://crates.io/semver/1.0.12;name=semver-1.0.12 \
+    crate://crates.io/serde/1.0.139;name=serde-1.0.139 \
+    crate://crates.io/serde-value/0.7.0;name=serde-value-0.7.0 \
+    crate://crates.io/serde_bytes/0.11.6;name=serde_bytes-0.11.6 \
+    crate://crates.io/serde_derive/1.0.139;name=serde_derive-1.0.139 \
+    crate://crates.io/serde_json/1.0.82;name=serde_json-1.0.82 \
+    crate://crates.io/serde_path_to_error/0.1.7;name=serde_path_to_error-0.1.7 \
+    crate://crates.io/serde_urlencoded/0.7.1;name=serde_urlencoded-0.7.1 \
+    crate://crates.io/sha2/0.9.9;name=sha2-0.9.9 \
+    crate://crates.io/sha2/0.10.2;name=sha2-0.10.2 \
+    crate://crates.io/sharded-slab/0.1.4;name=sharded-slab-0.1.4 \
+    crate://crates.io/signal-hook-registry/1.4.0;name=signal-hook-registry-1.4.0 \
+    crate://crates.io/siphasher/0.3.10;name=siphasher-0.3.10 \
+    crate://crates.io/slab/0.4.6;name=slab-0.4.6 \
+    crate://crates.io/slug/0.1.4;name=slug-0.1.4 \
+    crate://crates.io/smallvec/1.9.0;name=smallvec-1.9.0 \
+    crate://crates.io/socket2/0.4.4;name=socket2-0.4.4 \
+    crate://crates.io/spin/0.5.2;name=spin-0.5.2 \
+    crate://crates.io/string_cache/0.8.4;name=string_cache-0.8.4 \
+    crate://crates.io/strsim/0.8.0;name=strsim-0.8.0 \
+    crate://crates.io/subtle/2.4.1;name=subtle-2.4.1 \
+    crate://crates.io/syn/1.0.98;name=syn-1.0.98 \
+    crate://crates.io/syslog/4.0.1;name=syslog-4.0.1 \
+    crate://crates.io/target-lexicon/0.12.4;name=target-lexicon-0.12.4 \
+    crate://crates.io/tempfile/3.3.0;name=tempfile-3.3.0 \
+    crate://crates.io/term/0.7.0;name=term-0.7.0 \
+    crate://crates.io/termcolor/1.1.3;name=termcolor-1.1.3 \
+    crate://crates.io/textwrap/0.11.0;name=textwrap-0.11.0 \
+    crate://crates.io/thiserror/1.0.31;name=thiserror-1.0.31 \
+    crate://crates.io/thiserror-impl/1.0.31;name=thiserror-impl-1.0.31 \
+    crate://crates.io/thread_local/1.1.4;name=thread_local-1.1.4 \
+    crate://crates.io/time/0.1.44;name=time-0.1.44 \
+    crate://crates.io/tiny-keccak/2.0.2;name=tiny-keccak-2.0.2 \
+    crate://crates.io/tiny_http/0.8.2;name=tiny_http-0.8.2 \
+    crate://crates.io/tinyvec/1.6.0;name=tinyvec-1.6.0 \
+    crate://crates.io/tinyvec_macros/0.1.0;name=tinyvec_macros-0.1.0 \
+    crate://crates.io/tokio/1.20.4;name=tokio-1.20.4 \
+    crate://crates.io/tokio-macros/1.8.0;name=tokio-macros-1.8.0 \
+    crate://crates.io/tokio-native-tls/0.3.0;name=tokio-native-tls-0.3.0 \
+    crate://crates.io/tokio-rustls/0.22.0;name=tokio-rustls-0.22.0 \
+    crate://crates.io/tokio-util/0.7.3;name=tokio-util-0.7.3 \
+    crate://crates.io/toml/0.5.9;name=toml-0.5.9 \
+    crate://crates.io/tower-service/0.3.2;name=tower-service-0.3.2 \
+    crate://crates.io/tracing/0.1.35;name=tracing-0.1.35 \
+    crate://crates.io/tracing-attributes/0.1.22;name=tracing-attributes-0.1.22 \
+    crate://crates.io/tracing-core/0.1.28;name=tracing-core-0.1.28 \
+    crate://crates.io/tracing-log/0.1.3;name=tracing-log-0.1.3 \
+    crate://crates.io/tracing-serde/0.1.3;name=tracing-serde-0.1.3 \
+    crate://crates.io/tracing-subscriber/0.2.25;name=tracing-subscriber-0.2.25 \
+    crate://crates.io/trait-set/0.2.0;name=trait-set-0.2.0 \
+    crate://crates.io/try-lock/0.2.3;name=try-lock-0.2.3 \
+    crate://crates.io/typenum/1.15.0;name=typenum-1.15.0 \
+    crate://crates.io/unicode-bidi/0.3.8;name=unicode-bidi-0.3.8 \
+    crate://crates.io/unicode-ident/1.0.2;name=unicode-ident-1.0.2 \
+    crate://crates.io/unicode-normalization/0.1.21;name=unicode-normalization-0.1.21 \
+    crate://crates.io/unicode-width/0.1.9;name=unicode-width-0.1.9 \
+    crate://crates.io/unicode-xid/0.2.3;name=unicode-xid-0.2.3 \
+    crate://crates.io/untrusted/0.7.1;name=untrusted-0.7.1 \
+    crate://crates.io/url/2.2.2;name=url-2.2.2 \
+    crate://crates.io/urlparse/0.7.3;name=urlparse-0.7.3 \
+    crate://crates.io/uuid/1.1.2;name=uuid-1.1.2 \
+    crate://crates.io/valuable/0.1.0;name=valuable-0.1.0 \
+    crate://crates.io/vcpkg/0.2.15;name=vcpkg-0.2.15 \
+    crate://crates.io/vec_map/0.8.2;name=vec_map-0.8.2 \
+    crate://crates.io/version_check/0.9.4;name=version_check-0.9.4 \
+    crate://crates.io/want/0.3.0;name=want-0.3.0 \
+    crate://crates.io/wasi/0.10.0+wasi-snapshot-preview1;name=wasi-0.10.0+wasi-snapshot-preview1 \
+    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1;name=wasi-0.11.0+wasi-snapshot-preview1 \
+    crate://crates.io/wasm-bindgen/0.2.81;name=wasm-bindgen-0.2.81 \
+    crate://crates.io/wasm-bindgen-backend/0.2.81;name=wasm-bindgen-backend-0.2.81 \
+    crate://crates.io/wasm-bindgen-futures/0.4.31;name=wasm-bindgen-futures-0.4.31 \
+    crate://crates.io/wasm-bindgen-macro/0.2.81;name=wasm-bindgen-macro-0.2.81 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.81;name=wasm-bindgen-macro-support-0.2.81 \
+    crate://crates.io/wasm-bindgen-shared/0.2.81;name=wasm-bindgen-shared-0.2.81 \
+    crate://crates.io/web-sys/0.3.58;name=web-sys-0.3.58 \
+    crate://crates.io/webpki/0.21.4;name=webpki-0.21.4 \
+    crate://crates.io/winapi/0.3.9;name=winapi-0.3.9 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0;name=winapi-i686-pc-windows-gnu-0.4.0 \
+    crate://crates.io/winapi-util/0.1.5;name=winapi-util-0.1.5 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0;name=winapi-x86_64-pc-windows-gnu-0.4.0 \
+    crate://crates.io/windows-sys/0.36.1;name=windows-sys-0.36.1 \
+    crate://crates.io/windows_aarch64_msvc/0.36.1;name=windows_aarch64_msvc-0.36.1 \
+    crate://crates.io/windows_i686_gnu/0.36.1;name=windows_i686_gnu-0.36.1 \
+    crate://crates.io/windows_i686_msvc/0.36.1;name=windows_i686_msvc-0.36.1 \
+    crate://crates.io/windows_x86_64_gnu/0.36.1;name=windows_x86_64_gnu-0.36.1 \
+    crate://crates.io/windows_x86_64_msvc/0.36.1;name=windows_x86_64_msvc-0.36.1 \
+    crate://crates.io/winreg/0.10.1;name=winreg-0.10.1 \
+"
+
+SRC_URI[addr2line-0.17.0.sha256sum] = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b"
+SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+SRC_URI[adler32-1.2.0.sha256sum] = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
+SRC_URI[aho-corasick-0.7.18.sha256sum] = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
+SRC_URI[android_system_properties-0.1.5.sha256sum] = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+SRC_URI[ansi_term-0.12.1.sha256sum] = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+SRC_URI[ascii-1.0.0.sha256sum] = "bbf56136a5198c7b01a49e3afcbef6cf84597273d298f54432926024107b0109"
+SRC_URI[ascii-canvas-3.0.0.sha256sum] = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6"
+SRC_URI[atty-0.2.14.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[backoff-0.3.0.sha256sum] = "9fe17f59a06fe8b87a6fc8bf53bb70b3aba76d7685f432487a68cd5552853625"
+SRC_URI[backtrace-0.3.66.sha256sum] = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7"
+SRC_URI[base64-0.13.0.sha256sum] = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
+SRC_URI[basic-cookies-0.1.4.sha256sum] = "cb53b6b315f924c7f113b162e53b3901c05fc9966baf84d201dfcc7432a4bb38"
+SRC_URI[bcder-0.7.0.sha256sum] = "f007d8acfb8ef7d219911c7164c025a6d3504735120fc5df59c3c479ab84ea51"
+SRC_URI[bit-set-0.5.2.sha256sum] = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de"
+SRC_URI[bit-vec-0.6.3.sha256sum] = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[block-buffer-0.9.0.sha256sum] = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
+SRC_URI[block-buffer-0.10.2.sha256sum] = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
+SRC_URI[bumpalo-3.10.0.sha256sum] = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3"
+SRC_URI[bytes-1.1.0.sha256sum] = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
+SRC_URI[cc-1.0.73.sha256sum] = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[chrono-0.4.22.sha256sum] = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1"
+SRC_URI[chunked_transfer-1.4.0.sha256sum] = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e"
+SRC_URI[cipher-0.2.5.sha256sum] = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801"
+SRC_URI[clap-2.34.0.sha256sum] = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+SRC_URI[codespan-reporting-0.11.1.sha256sum] = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
+SRC_URI[core-foundation-0.9.3.sha256sum] = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+SRC_URI[core-foundation-sys-0.8.3.sha256sum] = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
+SRC_URI[cpufeatures-0.2.2.sha256sum] = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b"
+SRC_URI[crc32fast-1.3.2.sha256sum] = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+SRC_URI[crunchy-0.2.2.sha256sum] = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+SRC_URI[crypto-mac-0.10.1.sha256sum] = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a"
+SRC_URI[cryptoki-0.3.0.sha256sum] = "503aa2bd88796da9bc6baf2c47696da40f135721b3d6680c7c6cee0b7d1f7a59"
+SRC_URI[cryptoki-sys-0.1.4.sha256sum] = "1e4895bb04269df9a14f2692c6499dc2769e9a93caa33ef37c4df134f76956d2"
+SRC_URI[ctrlc-3.2.2.sha256sum] = "b37feaa84e6861e00a1f5e5aa8da3ee56d605c9992d33e082786754828e20865"
+SRC_URI[cxx-1.0.79.sha256sum] = "3f83d0ebf42c6eafb8d7c52f7e5f2d3003b89c7aa4fd2b79229209459a849af8"
+SRC_URI[cxx-build-1.0.79.sha256sum] = "07d050484b55975889284352b0ffc2ecbda25c0c55978017c132b29ba0818a86"
+SRC_URI[cxxbridge-flags-1.0.79.sha256sum] = "99d2199b00553eda8012dfec8d3b1c75fce747cf27c169a270b3b99e3448ab78"
+SRC_URI[cxxbridge-macro-1.0.79.sha256sum] = "dcb67a6de1f602736dd7eaead0080cf3435df806c61b24b13328db128c58868f"
+SRC_URI[derivative-2.2.0.sha256sum] = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
+SRC_URI[deunicode-0.4.3.sha256sum] = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690"
+SRC_URI[diff-0.1.13.sha256sum] = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
+SRC_URI[digest-0.9.0.sha256sum] = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+SRC_URI[digest-0.10.3.sha256sum] = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
+SRC_URI[dirs-next-2.0.0.sha256sum] = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
+SRC_URI[dirs-sys-next-0.1.2.sha256sum] = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+SRC_URI[either-1.7.0.sha256sum] = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be"
+SRC_URI[ena-0.14.0.sha256sum] = "d7402b94a93c24e742487327a7cd839dc9d36fec9de9fb25b09f2dae459f36c3"
+SRC_URI[encoding_rs-0.8.31.sha256sum] = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"
+SRC_URI[enum-display-derive-0.1.1.sha256sum] = "f16ef37b2a9b242295d61a154ee91ae884afff6b8b933b486b12481cc58310ca"
+SRC_URI[enum-flags-0.1.8.sha256sum] = "3682d2328e61f5529088a02cd20bb0a9aeaeeeb2f26597436dd7d75d1340f8f5"
+SRC_URI[error-chain-0.11.0.sha256sum] = "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3"
+SRC_URI[fastrand-1.7.0.sha256sum] = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"
+SRC_URI[fern-0.5.9.sha256sum] = "e69ab0d5aca163e388c3a49d284fed6c3d0810700e77c5ae2756a50ec1a4daaa"
+SRC_URI[fixedbitset-0.4.2.sha256sum] = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
+SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+SRC_URI[form_urlencoded-1.0.1.sha256sum] = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
+SRC_URI[fslock-0.2.1.sha256sum] = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb"
+SRC_URI[futures-0.3.21.sha256sum] = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e"
+SRC_URI[futures-channel-0.3.21.sha256sum] = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
+SRC_URI[futures-core-0.3.21.sha256sum] = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
+SRC_URI[futures-executor-0.3.21.sha256sum] = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
+SRC_URI[futures-io-0.3.21.sha256sum] = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
+SRC_URI[futures-macro-0.3.21.sha256sum] = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
+SRC_URI[futures-sink-0.3.21.sha256sum] = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
+SRC_URI[futures-task-0.3.21.sha256sum] = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
+SRC_URI[futures-util-0.3.21.sha256sum] = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
+SRC_URI[generic-array-0.14.5.sha256sum] = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"
+SRC_URI[getrandom-0.2.7.sha256sum] = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
+SRC_URI[gimli-0.26.2.sha256sum] = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d"
+SRC_URI[h2-0.3.13.sha256sum] = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57"
+SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+SRC_URI[hmac-0.10.1.sha256sum] = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15"
+SRC_URI[http-0.2.8.sha256sum] = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
+SRC_URI[http-body-0.4.5.sha256sum] = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+SRC_URI[httparse-1.7.1.sha256sum] = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c"
+SRC_URI[httpdate-1.0.2.sha256sum] = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
+SRC_URI[hyper-0.14.20.sha256sum] = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac"
+SRC_URI[hyper-tls-0.5.0.sha256sum] = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+SRC_URI[iana-time-zone-0.1.51.sha256sum] = "f5a6ef98976b22b3b7f2f3a806f858cb862044cfa66805aa3ad84cb3d3b785ed"
+SRC_URI[iana-time-zone-haiku-0.1.1.sha256sum] = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca"
+SRC_URI[idna-0.2.3.sha256sum] = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
+SRC_URI[impl-trait-for-tuples-0.2.2.sha256sum] = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb"
+SRC_URI[indexmap-1.9.1.sha256sum] = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[intervaltree-0.2.7.sha256sum] = "270bc34e57047cab801a8c871c124d9dc7132f6473c6401f645524f4e6edd111"
+SRC_URI[ipnet-2.5.0.sha256sum] = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b"
+SRC_URI[itertools-0.10.3.sha256sum] = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
+SRC_URI[itoa-1.0.2.sha256sum] = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
+SRC_URI[jmespatch-0.3.0.sha256sum] = "7acf91a732ade34d8eda2dee9500a051833f14f0d3d10d77c149845d6ac6a5f0"
+SRC_URI[js-sys-0.3.58.sha256sum] = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27"
+SRC_URI[kmip-protocol-0.4.2.sha256sum] = "396744d490b405f4ff293057bae5625e03dcf8be70fd4ba8c6346a54e78fd837"
+SRC_URI[kmip-ttlv-0.3.3.sha256sum] = "1aa943fd7166db2cc2deaea17bd5c2862ccf68eef9ce15576bcee9e4b494685c"
+SRC_URI[lalrpop-0.19.8.sha256sum] = "b30455341b0e18f276fa64540aff54deafb54c589de6aca68659c63dd2d5d823"
+SRC_URI[lalrpop-util-0.19.8.sha256sum] = "bcf796c978e9b4d983414f4caedc9273aa33ee214c5b887bd55fde84c85d2dc4"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[libc-0.2.126.sha256sum] = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
+SRC_URI[libflate-1.2.0.sha256sum] = "05605ab2bce11bcfc0e9c635ff29ef8b2ea83f29be257ee7d730cac3ee373093"
+SRC_URI[libflate_lz77-1.1.0.sha256sum] = "39a734c0493409afcd49deee13c006a04e3586b9761a03543c6272c9c51f2f5a"
+SRC_URI[libloading-0.7.3.sha256sum] = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd"
+SRC_URI[link-cplusplus-1.0.7.sha256sum] = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369"
+SRC_URI[lock_api-0.4.7.sha256sum] = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"
+SRC_URI[log-0.4.17.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+SRC_URI[maplit-1.0.2.sha256sum] = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
+SRC_URI[matchers-0.0.1.sha256sum] = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1"
+SRC_URI[matches-0.1.9.sha256sum] = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
+SRC_URI[maybe-async-0.2.6.sha256sum] = "6007f9dad048e0a224f27ca599d669fca8cfa0dac804725aab542b2eb032bce6"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[mime-0.3.16.sha256sum] = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
+SRC_URI[miniz_oxide-0.5.3.sha256sum] = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
+SRC_URI[mio-0.8.4.sha256sum] = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf"
+SRC_URI[native-tls-0.2.10.sha256sum] = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9"
+SRC_URI[new_debug_unreachable-1.0.4.sha256sum] = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
+SRC_URI[nix-0.24.2.sha256sum] = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc"
+SRC_URI[num-bigint-0.4.3.sha256sum] = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+SRC_URI[num-integer-0.1.45.sha256sum] = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+SRC_URI[num-traits-0.2.15.sha256sum] = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+SRC_URI[num_cpus-1.13.1.sha256sum] = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+SRC_URI[oauth2-4.2.3.sha256sum] = "6d62c436394991641b970a92e23e8eeb4eb9bca74af4f5badc53bcd568daadbd"
+SRC_URI[object-0.29.0.sha256sum] = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53"
+SRC_URI[once_cell-1.13.0.sha256sum] = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
+SRC_URI[opaque-debug-0.3.0.sha256sum] = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+SRC_URI[openidconnect-2.3.2.sha256sum] = "e26afc60b2bf11b9a039db1f3a3c0d5fe201eebdbe646a8ecb8342c8240e3271"
+SRC_URI[openssl-0.10.41.sha256sum] = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0"
+SRC_URI[openssl-macros-0.1.0.sha256sum] = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
+SRC_URI[openssl-probe-0.1.5.sha256sum] = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+SRC_URI[openssl-src-111.25.0+1.1.1t.sha256sum] = "3173cd3626c43e3854b1b727422a276e568d9ec5fe8cec197822cf52cfb743d6"
+SRC_URI[openssl-sys-0.9.75.sha256sum] = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f"
+SRC_URI[ordered-float-2.10.0.sha256sum] = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87"
+SRC_URI[oso-0.12.4.sha256sum] = "aec41e2da1ce3a82eb807396f802c172f08aa03e1be31e5df49592a04e12c8c7"
+SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+SRC_URI[parking_lot_core-0.9.3.sha256sum] = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929"
+SRC_URI[pbkdf2-0.7.5.sha256sum] = "bf916dd32dd26297907890d99dc2740e33f6bd9073965af4ccff2967962f5508"
+SRC_URI[percent-encoding-2.1.0.sha256sum] = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
+SRC_URI[petgraph-0.6.2.sha256sum] = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143"
+SRC_URI[phf_shared-0.10.0.sha256sum] = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
+SRC_URI[pico-args-0.4.2.sha256sum] = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468"
+SRC_URI[pin-project-lite-0.2.9.sha256sum] = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[pkg-config-0.3.25.sha256sum] = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
+SRC_URI[polar-core-0.12.4.sha256sum] = "53d2b6ee5b5ff6312ca55e2ba75fbd438c72bc041c799055388d815726eca69b"
+SRC_URI[ppv-lite86-0.2.16.sha256sum] = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+SRC_URI[precomputed-hash-0.1.1.sha256sum] = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
+SRC_URI[priority-queue-1.2.2.sha256sum] = "de9cde7493f5f5d2d163b174be9f9a72d756b79b0f6ed85654128d238c347c1e"
+SRC_URI[proc-macro2-1.0.40.sha256sum] = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
+SRC_URI[quick-xml-0.23.0.sha256sum] = "9279fbdacaad3baf559d8cabe0acc3d06e30ea14931af31af79578ac0946decc"
+SRC_URI[quote-1.0.20.sha256sum] = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
+SRC_URI[r2d2-0.8.10.sha256sum] = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.3.sha256sum] = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
+SRC_URI[redox_syscall-0.2.13.sha256sum] = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42"
+SRC_URI[redox_users-0.4.3.sha256sum] = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+SRC_URI[regex-1.6.0.sha256sum] = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+SRC_URI[regex-automata-0.1.10.sha256sum] = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+SRC_URI[regex-syntax-0.6.27.sha256sum] = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+SRC_URI[remove_dir_all-0.5.3.sha256sum] = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+SRC_URI[reqwest-0.11.11.sha256sum] = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92"
+SRC_URI[ring-0.16.20.sha256sum] = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+SRC_URI[rle-decode-fast-1.0.3.sha256sum] = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
+SRC_URI[routecore-0.2.0.sha256sum] = "9afd872857e85411c0ba7d18dfe650fc4864b292c02cde997e86c511314fdfc3"
+SRC_URI[rpassword-5.0.1.sha256sum] = "ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb"
+SRC_URI[rpki-0.15.8.sha256sum] = "46970b82ec6bfec47c88addaaef3d345cec2a5cf9cb89039ef904123e65ba41a"
+SRC_URI[rustc-demangle-0.1.21.sha256sum] = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
+SRC_URI[rustc_version-0.4.0.sha256sum] = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+SRC_URI[rustls-0.19.1.sha256sum] = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7"
+SRC_URI[rustversion-1.0.8.sha256sum] = "24c8ad4f0c00e1eb5bc7614d236a7f1300e3dbd76b68cac8e06fb00b015ad8d8"
+SRC_URI[ryu-1.0.10.sha256sum] = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"
+SRC_URI[salsa20-0.7.2.sha256sum] = "399f290ffc409596022fce5ea5d4138184be4784f2b28c62c59f0d8389059a15"
+SRC_URI[schannel-0.1.20.sha256sum] = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"
+SRC_URI[scheduled-thread-pool-0.2.6.sha256sum] = "977a7519bff143a44f842fd07e80ad1329295bd71686457f18e496736f4bf9bf"
+SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[scratch-1.0.2.sha256sum] = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898"
+SRC_URI[scrypt-0.6.5.sha256sum] = "19230d10daad7f163d8c1fc8edf84fbe52ac71c2ebe5adf3f763aa1557b843e3"
+SRC_URI[sct-0.6.1.sha256sum] = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce"
+SRC_URI[security-framework-2.6.1.sha256sum] = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc"
+SRC_URI[security-framework-sys-2.6.1.sha256sum] = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556"
+SRC_URI[semver-1.0.12.sha256sum] = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1"
+SRC_URI[serde-1.0.139.sha256sum] = "0171ebb889e45aa68b44aee0859b3eede84c6f5f5c228e6f140c0b2a0a46cad6"
+SRC_URI[serde-value-0.7.0.sha256sum] = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
+SRC_URI[serde_bytes-0.11.6.sha256sum] = "212e73464ebcde48d723aa02eb270ba62eff38a9b732df31f33f1b4e145f3a54"
+SRC_URI[serde_derive-1.0.139.sha256sum] = "dc1d3230c1de7932af58ad8ffbe1d784bd55efd5a9d84ac24f69c72d83543dfb"
+SRC_URI[serde_json-1.0.82.sha256sum] = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7"
+SRC_URI[serde_path_to_error-0.1.7.sha256sum] = "d7868ad3b8196a8a0aea99a8220b124278ee5320a55e4fde97794b6f85b1a377"
+SRC_URI[serde_urlencoded-0.7.1.sha256sum] = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+SRC_URI[sha2-0.9.9.sha256sum] = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
+SRC_URI[sha2-0.10.2.sha256sum] = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676"
+SRC_URI[sharded-slab-0.1.4.sha256sum] = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
+SRC_URI[signal-hook-registry-1.4.0.sha256sum] = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
+SRC_URI[siphasher-0.3.10.sha256sum] = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
+SRC_URI[slab-0.4.6.sha256sum] = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32"
+SRC_URI[slug-0.1.4.sha256sum] = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373"
+SRC_URI[smallvec-1.9.0.sha256sum] = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"
+SRC_URI[socket2-0.4.4.sha256sum] = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0"
+SRC_URI[spin-0.5.2.sha256sum] = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+SRC_URI[string_cache-0.8.4.sha256sum] = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08"
+SRC_URI[strsim-0.8.0.sha256sum] = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+SRC_URI[subtle-2.4.1.sha256sum] = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
+SRC_URI[syn-1.0.98.sha256sum] = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
+SRC_URI[syslog-4.0.1.sha256sum] = "a0641142b4081d3d44beffa4eefd7346a228cdf91ed70186db2ca2cef762d327"
+SRC_URI[target-lexicon-0.12.4.sha256sum] = "c02424087780c9b71cc96799eaeddff35af2bc513278cda5c99fc1f5d026d3c1"
+SRC_URI[tempfile-3.3.0.sha256sum] = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
+SRC_URI[term-0.7.0.sha256sum] = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f"
+SRC_URI[termcolor-1.1.3.sha256sum] = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+SRC_URI[textwrap-0.11.0.sha256sum] = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+SRC_URI[thiserror-1.0.31.sha256sum] = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
+SRC_URI[thiserror-impl-1.0.31.sha256sum] = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
+SRC_URI[thread_local-1.1.4.sha256sum] = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"
+SRC_URI[time-0.1.44.sha256sum] = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
+SRC_URI[tiny-keccak-2.0.2.sha256sum] = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
+SRC_URI[tiny_http-0.8.2.sha256sum] = "9ce51b50006056f590c9b7c3808c3bd70f0d1101666629713866c227d6e58d39"
+SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+SRC_URI[tinyvec_macros-0.1.0.sha256sum] = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
+SRC_URI[tokio-1.20.4.sha256sum] = "eb78f30e4b41e98ca4cce5acb51168a033839a7af9e42b380355808e14e98ee0"
+SRC_URI[tokio-macros-1.8.0.sha256sum] = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484"
+SRC_URI[tokio-native-tls-0.3.0.sha256sum] = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b"
+SRC_URI[tokio-rustls-0.22.0.sha256sum] = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6"
+SRC_URI[tokio-util-0.7.3.sha256sum] = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45"
+SRC_URI[toml-0.5.9.sha256sum] = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
+SRC_URI[tower-service-0.3.2.sha256sum] = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+SRC_URI[tracing-0.1.35.sha256sum] = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160"
+SRC_URI[tracing-attributes-0.1.22.sha256sum] = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2"
+SRC_URI[tracing-core-0.1.28.sha256sum] = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7"
+SRC_URI[tracing-log-0.1.3.sha256sum] = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
+SRC_URI[tracing-serde-0.1.3.sha256sum] = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1"
+SRC_URI[tracing-subscriber-0.2.25.sha256sum] = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71"
+SRC_URI[trait-set-0.2.0.sha256sum] = "875c4c873cc824e362fa9a9419ffa59807244824275a44ad06fec9684fff08f2"
+SRC_URI[try-lock-0.2.3.sha256sum] = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
+SRC_URI[typenum-1.15.0.sha256sum] = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
+SRC_URI[unicode-bidi-0.3.8.sha256sum] = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
+SRC_URI[unicode-ident-1.0.2.sha256sum] = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7"
+SRC_URI[unicode-normalization-0.1.21.sha256sum] = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6"
+SRC_URI[unicode-width-0.1.9.sha256sum] = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
+SRC_URI[unicode-xid-0.2.3.sha256sum] = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
+SRC_URI[untrusted-0.7.1.sha256sum] = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+SRC_URI[url-2.2.2.sha256sum] = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
+SRC_URI[urlparse-0.7.3.sha256sum] = "110352d4e9076c67839003c7788d8604e24dcded13e0b375af3efaa8cf468517"
+SRC_URI[uuid-1.1.2.sha256sum] = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f"
+SRC_URI[valuable-0.1.0.sha256sum] = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+SRC_URI[vec_map-0.8.2.sha256sum] = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[want-0.3.0.sha256sum] = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
+SRC_URI[wasi-0.10.0+wasi-snapshot-preview1.sha256sum] = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[wasm-bindgen-0.2.81.sha256sum] = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994"
+SRC_URI[wasm-bindgen-backend-0.2.81.sha256sum] = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a"
+SRC_URI[wasm-bindgen-futures-0.4.31.sha256sum] = "de9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31f"
+SRC_URI[wasm-bindgen-macro-0.2.81.sha256sum] = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa"
+SRC_URI[wasm-bindgen-macro-support-0.2.81.sha256sum] = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048"
+SRC_URI[wasm-bindgen-shared-0.2.81.sha256sum] = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be"
+SRC_URI[web-sys-0.3.58.sha256sum] = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90"
+SRC_URI[webpki-0.21.4.sha256sum] = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.36.1.sha256sum] = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
+SRC_URI[windows_aarch64_msvc-0.36.1.sha256sum] = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
+SRC_URI[windows_i686_gnu-0.36.1.sha256sum] = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
+SRC_URI[windows_i686_msvc-0.36.1.sha256sum] = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
+SRC_URI[windows_x86_64_gnu-0.36.1.sha256sum] = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
+SRC_URI[windows_x86_64_msvc-0.36.1.sha256sum] = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
+SRC_URI[winreg-0.10.1.sha256sum] = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
diff --git a/meta-security/recipes-security/krill/krill.inc b/meta-security/recipes-security/krill/krill.inc
deleted file mode 100644
index 22fe269..0000000
--- a/meta-security/recipes-security/krill/krill.inc
+++ /dev/null
@@ -1,279 +0,0 @@
-# Auto-Generated by cargo-bitbake 0.3.16
-#
-
-# please note if you have entries that do not begin with crate://
-# you must change them to how that package can be fetched
-SRC_URI += " \
-    crate://crates.io/addr2line/0.17.0 \
-    crate://crates.io/adler/1.0.2 \
-    crate://crates.io/adler32/1.2.0 \
-    crate://crates.io/aho-corasick/0.7.18 \
-    crate://crates.io/android_system_properties/0.1.5 \
-    crate://crates.io/ansi_term/0.12.1 \
-    crate://crates.io/ascii-canvas/3.0.0 \
-    crate://crates.io/ascii/1.0.0 \
-    crate://crates.io/atty/0.2.14 \
-    crate://crates.io/autocfg/1.1.0 \
-    crate://crates.io/backoff/0.3.0 \
-    crate://crates.io/backtrace/0.3.66 \
-    crate://crates.io/base64/0.13.0 \
-    crate://crates.io/basic-cookies/0.1.4 \
-    crate://crates.io/bcder/0.7.0 \
-    crate://crates.io/bit-set/0.5.2 \
-    crate://crates.io/bit-vec/0.6.3 \
-    crate://crates.io/bitflags/1.3.2 \
-    crate://crates.io/block-buffer/0.10.2 \
-    crate://crates.io/block-buffer/0.9.0 \
-    crate://crates.io/bumpalo/3.10.0 \
-    crate://crates.io/bytes/1.1.0 \
-    crate://crates.io/cc/1.0.73 \
-    crate://crates.io/cfg-if/1.0.0 \
-    crate://crates.io/chrono/0.4.22 \
-    crate://crates.io/chunked_transfer/1.4.0 \
-    crate://crates.io/cipher/0.2.5 \
-    crate://crates.io/clap/2.34.0 \
-    crate://crates.io/codespan-reporting/0.11.1 \
-    crate://crates.io/core-foundation-sys/0.8.3 \
-    crate://crates.io/core-foundation/0.9.3 \
-    crate://crates.io/cpufeatures/0.2.2 \
-    crate://crates.io/crc32fast/1.3.2 \
-    crate://crates.io/crunchy/0.2.2 \
-    crate://crates.io/crypto-common/0.1.6 \
-    crate://crates.io/crypto-mac/0.10.1 \
-    crate://crates.io/cryptoki-sys/0.1.4 \
-    crate://crates.io/cryptoki/0.3.0 \
-    crate://crates.io/ctrlc/3.2.2 \
-    crate://crates.io/cxx-build/1.0.79 \
-    crate://crates.io/cxx/1.0.79 \
-    crate://crates.io/cxxbridge-flags/1.0.79 \
-    crate://crates.io/cxxbridge-macro/1.0.79 \
-    crate://crates.io/derivative/2.2.0 \
-    crate://crates.io/deunicode/0.4.3 \
-    crate://crates.io/diff/0.1.13 \
-    crate://crates.io/digest/0.10.3 \
-    crate://crates.io/digest/0.9.0 \
-    crate://crates.io/dirs-next/2.0.0 \
-    crate://crates.io/dirs-sys-next/0.1.2 \
-    crate://crates.io/either/1.7.0 \
-    crate://crates.io/ena/0.14.0 \
-    crate://crates.io/encoding_rs/0.8.31 \
-    crate://crates.io/enum-display-derive/0.1.1 \
-    crate://crates.io/enum-flags/0.1.8 \
-    crate://crates.io/error-chain/0.11.0 \
-    crate://crates.io/fastrand/1.7.0 \
-    crate://crates.io/fern/0.5.9 \
-    crate://crates.io/fixedbitset/0.4.2 \
-    crate://crates.io/fnv/1.0.7 \
-    crate://crates.io/foreign-types-shared/0.1.1 \
-    crate://crates.io/foreign-types/0.3.2 \
-    crate://crates.io/form_urlencoded/1.0.1 \
-    crate://crates.io/fslock/0.2.1 \
-    crate://crates.io/futures-channel/0.3.21 \
-    crate://crates.io/futures-core/0.3.21 \
-    crate://crates.io/futures-executor/0.3.21 \
-    crate://crates.io/futures-io/0.3.21 \
-    crate://crates.io/futures-macro/0.3.21 \
-    crate://crates.io/futures-sink/0.3.21 \
-    crate://crates.io/futures-task/0.3.21 \
-    crate://crates.io/futures-util/0.3.21 \
-    crate://crates.io/futures/0.3.21 \
-    crate://crates.io/generic-array/0.14.5 \
-    crate://crates.io/getrandom/0.2.7 \
-    crate://crates.io/gimli/0.26.2 \
-    crate://crates.io/h2/0.3.13 \
-    crate://crates.io/hashbrown/0.12.3 \
-    crate://crates.io/hermit-abi/0.1.19 \
-    crate://crates.io/hex/0.4.3 \
-    crate://crates.io/hmac/0.10.1 \
-    crate://crates.io/http-body/0.4.5 \
-    crate://crates.io/http/0.2.8 \
-    crate://crates.io/httparse/1.7.1 \
-    crate://crates.io/httpdate/1.0.2 \
-    crate://crates.io/hyper-tls/0.5.0 \
-    crate://crates.io/hyper/0.14.20 \
-    crate://crates.io/iana-time-zone-haiku/0.1.1 \
-    crate://crates.io/iana-time-zone/0.1.51 \
-    crate://crates.io/idna/0.2.3 \
-    crate://crates.io/impl-trait-for-tuples/0.2.2 \
-    crate://crates.io/indexmap/1.9.1 \
-    crate://crates.io/instant/0.1.12 \
-    crate://crates.io/intervaltree/0.2.7 \
-    crate://crates.io/ipnet/2.5.0 \
-    crate://crates.io/itertools/0.10.3 \
-    crate://crates.io/itoa/1.0.2 \
-    crate://crates.io/jmespatch/0.3.0 \
-    crate://crates.io/js-sys/0.3.58 \
-    crate://crates.io/kmip-protocol/0.4.2 \
-    crate://crates.io/kmip-ttlv/0.3.3 \
-    crate://crates.io/lalrpop-util/0.19.8 \
-    crate://crates.io/lalrpop/0.19.8 \
-    crate://crates.io/lazy_static/1.4.0 \
-    crate://crates.io/libc/0.2.126 \
-    crate://crates.io/libflate/1.2.0 \
-    crate://crates.io/libflate_lz77/1.1.0 \
-    crate://crates.io/libloading/0.7.3 \
-    crate://crates.io/link-cplusplus/1.0.7 \
-    crate://crates.io/lock_api/0.4.7 \
-    crate://crates.io/log/0.4.17 \
-    crate://crates.io/maplit/1.0.2 \
-    crate://crates.io/matchers/0.0.1 \
-    crate://crates.io/matches/0.1.9 \
-    crate://crates.io/maybe-async/0.2.6 \
-    crate://crates.io/memchr/2.5.0 \
-    crate://crates.io/mime/0.3.16 \
-    crate://crates.io/miniz_oxide/0.5.3 \
-    crate://crates.io/mio/0.8.4 \
-    crate://crates.io/native-tls/0.2.10 \
-    crate://crates.io/new_debug_unreachable/1.0.4 \
-    crate://crates.io/nix/0.24.2 \
-    crate://crates.io/num-bigint/0.4.3 \
-    crate://crates.io/num-integer/0.1.45 \
-    crate://crates.io/num-traits/0.2.15 \
-    crate://crates.io/num_cpus/1.13.1 \
-    crate://crates.io/oauth2/4.2.3 \
-    crate://crates.io/object/0.29.0 \
-    crate://crates.io/once_cell/1.13.0 \
-    crate://crates.io/opaque-debug/0.3.0 \
-    crate://crates.io/openidconnect/2.3.2 \
-    crate://crates.io/openssl-macros/0.1.0 \
-    crate://crates.io/openssl-probe/0.1.5 \
-    crate://crates.io/openssl-src/111.25.0+1.1.1t \
-    crate://crates.io/openssl-sys/0.9.75 \
-    crate://crates.io/openssl/0.10.41 \
-    crate://crates.io/ordered-float/2.10.0 \
-    crate://crates.io/oso/0.12.4 \
-    crate://crates.io/parking_lot/0.12.1 \
-    crate://crates.io/parking_lot_core/0.9.3 \
-    crate://crates.io/pbkdf2/0.7.5 \
-    crate://crates.io/percent-encoding/2.1.0 \
-    crate://crates.io/petgraph/0.6.2 \
-    crate://crates.io/phf_shared/0.10.0 \
-    crate://crates.io/pico-args/0.4.2 \
-    crate://crates.io/pin-project-lite/0.2.9 \
-    crate://crates.io/pin-utils/0.1.0 \
-    crate://crates.io/pkg-config/0.3.25 \
-    crate://crates.io/polar-core/0.12.4 \
-    crate://crates.io/ppv-lite86/0.2.16 \
-    crate://crates.io/precomputed-hash/0.1.1 \
-    crate://crates.io/priority-queue/1.2.2 \
-    crate://crates.io/proc-macro2/1.0.40 \
-    crate://crates.io/quick-xml/0.23.0 \
-    crate://crates.io/quote/1.0.20 \
-    crate://crates.io/r2d2/0.8.10 \
-    crate://crates.io/rand/0.8.5 \
-    crate://crates.io/rand_chacha/0.3.1 \
-    crate://crates.io/rand_core/0.6.3 \
-    crate://crates.io/redox_syscall/0.2.13 \
-    crate://crates.io/redox_users/0.4.3 \
-    crate://crates.io/regex-automata/0.1.10 \
-    crate://crates.io/regex-syntax/0.6.27 \
-    crate://crates.io/regex/1.6.0 \
-    crate://crates.io/remove_dir_all/0.5.3 \
-    crate://crates.io/reqwest/0.11.11 \
-    crate://crates.io/ring/0.16.20 \
-    crate://crates.io/rle-decode-fast/1.0.3 \
-    crate://crates.io/routecore/0.2.0 \
-    crate://crates.io/rpassword/5.0.1 \
-    crate://crates.io/rpki/0.15.8 \
-    crate://crates.io/rustc-demangle/0.1.21 \
-    crate://crates.io/rustc_version/0.4.0 \
-    crate://crates.io/rustls/0.19.1 \
-    crate://crates.io/rustversion/1.0.8 \
-    crate://crates.io/ryu/1.0.10 \
-    crate://crates.io/salsa20/0.7.2 \
-    crate://crates.io/schannel/0.1.20 \
-    crate://crates.io/scheduled-thread-pool/0.2.6 \
-    crate://crates.io/scopeguard/1.1.0 \
-    crate://crates.io/scratch/1.0.2 \
-    crate://crates.io/scrypt/0.6.5 \
-    crate://crates.io/sct/0.6.1 \
-    crate://crates.io/security-framework-sys/2.6.1 \
-    crate://crates.io/security-framework/2.6.1 \
-    crate://crates.io/semver/1.0.12 \
-    crate://crates.io/serde-value/0.7.0 \
-    crate://crates.io/serde/1.0.139 \
-    crate://crates.io/serde_bytes/0.11.6 \
-    crate://crates.io/serde_derive/1.0.139 \
-    crate://crates.io/serde_json/1.0.82 \
-    crate://crates.io/serde_path_to_error/0.1.7 \
-    crate://crates.io/serde_urlencoded/0.7.1 \
-    crate://crates.io/sha2/0.10.2 \
-    crate://crates.io/sha2/0.9.9 \
-    crate://crates.io/sharded-slab/0.1.4 \
-    crate://crates.io/signal-hook-registry/1.4.0 \
-    crate://crates.io/siphasher/0.3.10 \
-    crate://crates.io/slab/0.4.6 \
-    crate://crates.io/slug/0.1.4 \
-    crate://crates.io/smallvec/1.9.0 \
-    crate://crates.io/socket2/0.4.4 \
-    crate://crates.io/spin/0.5.2 \
-    crate://crates.io/string_cache/0.8.4 \
-    crate://crates.io/strsim/0.8.0 \
-    crate://crates.io/subtle/2.4.1 \
-    crate://crates.io/syn/1.0.98 \
-    crate://crates.io/syslog/4.0.1 \
-    crate://crates.io/target-lexicon/0.12.4 \
-    crate://crates.io/tempfile/3.3.0 \
-    crate://crates.io/term/0.7.0 \
-    crate://crates.io/termcolor/1.1.3 \
-    crate://crates.io/textwrap/0.11.0 \
-    crate://crates.io/thiserror-impl/1.0.31 \
-    crate://crates.io/thiserror/1.0.31 \
-    crate://crates.io/thread_local/1.1.4 \
-    crate://crates.io/time/0.1.44 \
-    crate://crates.io/tiny-keccak/2.0.2 \
-    crate://crates.io/tiny_http/0.8.2 \
-    crate://crates.io/tinyvec/1.6.0 \
-    crate://crates.io/tinyvec_macros/0.1.0 \
-    crate://crates.io/tokio-macros/1.8.0 \
-    crate://crates.io/tokio-native-tls/0.3.0 \
-    crate://crates.io/tokio-rustls/0.22.0 \
-    crate://crates.io/tokio-util/0.7.3 \
-    crate://crates.io/tokio/1.20.4 \
-    crate://crates.io/toml/0.5.9 \
-    crate://crates.io/tower-service/0.3.2 \
-    crate://crates.io/tracing-attributes/0.1.22 \
-    crate://crates.io/tracing-core/0.1.28 \
-    crate://crates.io/tracing-log/0.1.3 \
-    crate://crates.io/tracing-serde/0.1.3 \
-    crate://crates.io/tracing-subscriber/0.2.25 \
-    crate://crates.io/tracing/0.1.35 \
-    crate://crates.io/trait-set/0.2.0 \
-    crate://crates.io/try-lock/0.2.3 \
-    crate://crates.io/typenum/1.15.0 \
-    crate://crates.io/unicode-bidi/0.3.8 \
-    crate://crates.io/unicode-ident/1.0.2 \
-    crate://crates.io/unicode-normalization/0.1.21 \
-    crate://crates.io/unicode-width/0.1.9 \
-    crate://crates.io/unicode-xid/0.2.3 \
-    crate://crates.io/untrusted/0.7.1 \
-    crate://crates.io/url/2.2.2 \
-    crate://crates.io/urlparse/0.7.3 \
-    crate://crates.io/uuid/1.1.2 \
-    crate://crates.io/valuable/0.1.0 \
-    crate://crates.io/vcpkg/0.2.15 \
-    crate://crates.io/vec_map/0.8.2 \
-    crate://crates.io/version_check/0.9.4 \
-    crate://crates.io/want/0.3.0 \
-    crate://crates.io/wasi/0.10.0+wasi-snapshot-preview1 \
-    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
-    crate://crates.io/wasm-bindgen-backend/0.2.81 \
-    crate://crates.io/wasm-bindgen-futures/0.4.31 \
-    crate://crates.io/wasm-bindgen-macro-support/0.2.81 \
-    crate://crates.io/wasm-bindgen-macro/0.2.81 \
-    crate://crates.io/wasm-bindgen-shared/0.2.81 \
-    crate://crates.io/wasm-bindgen/0.2.81 \
-    crate://crates.io/web-sys/0.3.58 \
-    crate://crates.io/webpki/0.21.4 \
-    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi-util/0.1.5 \
-    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi/0.3.9 \
-    crate://crates.io/windows-sys/0.36.1 \
-    crate://crates.io/windows_aarch64_msvc/0.36.1 \
-    crate://crates.io/windows_i686_gnu/0.36.1 \
-    crate://crates.io/windows_i686_msvc/0.36.1 \
-    crate://crates.io/windows_x86_64_gnu/0.36.1 \
-    crate://crates.io/windows_x86_64_msvc/0.36.1 \
-    crate://crates.io/winreg/0.10.1 \
-"
diff --git a/meta-security/recipes-security/krill/krill_0.12.3.bb b/meta-security/recipes-security/krill/krill_0.12.3.bb
index a943c52..ee959c2 100644
--- a/meta-security/recipes-security/krill/krill_0.12.3.bb
+++ b/meta-security/recipes-security/krill/krill_0.12.3.bb
@@ -10,7 +10,7 @@
 SRCREV = "e92098419c7ad82939e0483bc76df21eff705b80"
 SRC_URI += "file://panic_workaround.patch"
 
-include krill.inc
+include krill-crates.inc
 
 UPSTREAM_CHECK_URI = "https://github.com/NLnetLabs/${BPN}/releases"
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
@@ -18,7 +18,7 @@
 S = "${WORKDIR}/git"
 CARGO_SRC_DIR = ""
 
-inherit pkgconfig useradd systemd cargo
+inherit pkgconfig useradd systemd cargo cargo-update-recipe-crates
 
 do_install:append () {
     install -d ${D}${sysconfdir}
diff --git a/poky/bitbake/bin/bitbake b/poky/bitbake/bin/bitbake
index 21fb100..42ab148 100755
--- a/poky/bitbake/bin/bitbake
+++ b/poky/bitbake/bin/bitbake
@@ -27,7 +27,7 @@
 
 bb.utils.check_system_locale()
 
-__version__ = "2.3.1"
+__version__ = "2.4.0"
 
 if __name__ == "__main__":
     if __version__ != bb.__version__:
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst
index ba8129a..b35c332 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst
@@ -1972,6 +1972,24 @@
 the commonly used functions ``bb.utils.contains()`` and
 ``bb.utils.mkdirhier()``, which come with docstrings.
 
+Extending Python Library Code
+-----------------------------
+
+If you wish to add your own Python library code (e.g. to provide
+functions/classes you can use from Python functions in the metadata)
+you can do so from any layer using the ``addpylib`` directive.
+This directive is typically added to your layer configuration (
+``conf/layer.conf``) although it will be handled in any ``.conf`` file.
+
+Usage is of the form::
+
+   addpylib <directory> <namespace>
+
+Where <directory> specifies the directory to add to the library path.
+The specified <namespace> is imported automatically, and if the imported
+module specifies an attribute named ``BBIMPORTS``, that list of
+sub-modules is iterated and imported too.
+
 Testing and Debugging BitBake Python code
 -----------------------------------------
 
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 25620fd..6ccf58b 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
@@ -99,10 +99,26 @@
       the path of the build. BitBake's output should not (and usually does
       not) depend on the directory in which it was built.
 
+   :term:`BB_CACHEDIR`
+      Specifies the code parser cache directory (distinct from :term:`CACHE`
+      and :term:`PERSISTENT_DIR` although they can be set to the same value
+      if desired). The default value is "${TOPDIR}/cache".
+
    :term:`BB_CHECK_SSL_CERTS`
       Specifies if SSL certificates should be checked when fetching. The default
       value is ``1`` and certificates are not checked if the value is set to ``0``.
 
+   :term:`BB_HASH_CODEPARSER_VALS`
+      Specifies values for variables to use when populating the codeparser cache.
+      This can be used selectively to set dummy values for variables to avoid
+      the codeparser cache growing on every parse. Variables that would typically
+      be included are those where the value is not significant for where the
+      codeparser cache is used (i.e. when calculating variable dependencies for
+      code fragments.) The value is space-separated without quoting values, for
+      example::
+
+         BB_HASH_CODEPARSER_VALS = "T=/ WORKDIR=/ DATE=1234 TIME=1234"
+
    :term:`BB_CONSOLELOG`
       Specifies the path to a log file into which BitBake's user interface
       writes output during the build.
@@ -343,6 +359,14 @@
 
       For example usage, see :term:`BB_GIT_SHALLOW`.
 
+   :term:`BB_GLOBAL_PYMODULES`
+      Specifies the list of Python modules to place in the global namespace.
+      It is intended that only the core layer should set this and it is meant
+      to be a very small list, typically just ``os`` and ``sys``.
+      :term:`BB_GLOBAL_PYMODULES` is expected to be set before the first
+      ``addpylib`` directive.
+      See also ":ref:`bitbake-user-manual/bitbake-user-manual-metadata:extending python library code`".
+
    :term:`BB_HASHCHECK_FUNCTION`
       Specifies the name of the function to call during the "setscene" part
       of the task's execution in order to validate the list of task hashes.
diff --git a/poky/bitbake/lib/bb/__init__.py b/poky/bitbake/lib/bb/__init__.py
index 56be5a8..0e2d867 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__ = "2.3.1"
+__version__ = "2.4.0"
 
 import sys
 if sys.version_info < (3, 8, 0):
diff --git a/poky/bitbake/lib/bb/cooker.py b/poky/bitbake/lib/bb/cooker.py
index 1797a1d..f33bca4 100644
--- a/poky/bitbake/lib/bb/cooker.py
+++ b/poky/bitbake/lib/bb/cooker.py
@@ -1764,9 +1764,9 @@
     def shutdown(self, force=False):
         if force:
             self.state = state.forceshutdown
+            bb.event._should_exit.set()
         else:
             self.state = state.shutdown
-        bb.event._should_exit.set()
 
         if self.parser:
             self.parser.shutdown(clean=False)
@@ -2223,7 +2223,7 @@
 
             self.results = itertools.chain(self.results, self.parse_generator())
 
-    def shutdown(self, clean=True):
+    def shutdown(self, clean=True, eventmsg="Parsing halted due to errors"):
         if not self.toparse:
             return
         if self.haveshutdown:
@@ -2238,6 +2238,7 @@
 
             bb.event.fire(event, self.cfgdata)
         else:
+            bb.event.fire(bb.event.ParseError(eventmsg), self.cfgdata)
             bb.error("Parsing halted due to errors, see error messages above")
 
         # Cleanup the queue before call process.join(), otherwise there might be
@@ -2355,7 +2356,7 @@
         except bb.parse.ParseError as exc:
             self.error += 1
             logger.error(str(exc))
-            self.shutdown(clean=False)
+            self.shutdown(clean=False, eventmsg=str(exc))
             return False
         except bb.data_smart.ExpansionError as exc:
             self.error += 1
diff --git a/poky/bitbake/lib/bb/event.py b/poky/bitbake/lib/bb/event.py
index 37cc630..0d0e0a6 100644
--- a/poky/bitbake/lib/bb/event.py
+++ b/poky/bitbake/lib/bb/event.py
@@ -856,3 +856,11 @@
     def __init__(self, result):
         Event.__init__(self)
         self.result = result
+
+class ParseError(Event):
+    """
+    Event to indicate parse failed
+    """
+    def __init__(self, msg):
+        super().__init__()
+        self._msg = msg
diff --git a/poky/bitbake/lib/bb/fetch2/__init__.py b/poky/bitbake/lib/bb/fetch2/__init__.py
index 3172988..1a86d8f 100644
--- a/poky/bitbake/lib/bb/fetch2/__init__.py
+++ b/poky/bitbake/lib/bb/fetch2/__init__.py
@@ -560,7 +560,6 @@
     file against those in the recipe each time, rather than only after
     downloading. See https://bugzilla.yoctoproject.org/show_bug.cgi?id=5571.
     """
-
     if ud.ignore_checksums or not ud.method.supports_checksum(ud):
         return {}
 
@@ -605,11 +604,7 @@
 
         # If strict checking enabled and neither sum defined, raise error
         if strict == "1":
-            messages.append("No checksum specified for '%s', please add at " \
-                            "least one to the recipe:" % ud.localpath)
-            messages.extend(checksum_lines)
-            logger.error("\n".join(messages))
-            raise NoChecksumError("Missing SRC_URI checksum", ud.url)
+            raise NoChecksumError("\n".join(checksum_lines))
 
         bb.event.fire(MissingChecksumEvent(ud.url, **checksum_event), d)
 
@@ -1728,6 +1723,7 @@
         network = self.d.getVar("BB_NO_NETWORK")
         premirroronly = bb.utils.to_boolean(self.d.getVar("BB_FETCH_PREMIRRORONLY"))
 
+        checksum_missing_messages = []
         for u in urls:
             ud = self.ud[u]
             ud.setup_localpath(self.d)
@@ -1739,7 +1735,6 @@
 
             try:
                 self.d.setVar("BB_NO_NETWORK", network)
-
                 if m.verify_donestamp(ud, self.d) and not m.need_update(ud, self.d):
                     done = True
                 elif m.try_premirror(ud, self.d):
@@ -1811,13 +1806,20 @@
                     raise ChecksumError("Stale Error Detected")
 
             except BBFetchException as e:
-                if isinstance(e, ChecksumError):
+                if isinstance(e, NoChecksumError):
+                    (message, _) = e.args
+                    checksum_missing_messages.append(message)
+                    continue
+                elif isinstance(e, ChecksumError):
                     logger.error("Checksum failure fetching %s" % u)
                 raise
 
             finally:
                 if ud.lockfile:
                     bb.utils.unlockfile(lf)
+        if checksum_missing_messages:
+            logger.error("Missing SRC_URI checksum, please add those to the recipe: \n%s", "\n".join(checksum_missing_messages))
+            raise BBFetchException("There was some missing checksums in the recipe")
 
     def checkstatus(self, urls=None):
         """
diff --git a/poky/bitbake/lib/bb/fetch2/crate.py b/poky/bitbake/lib/bb/fetch2/crate.py
index 590dc9c..a7021e5 100644
--- a/poky/bitbake/lib/bb/fetch2/crate.py
+++ b/poky/bitbake/lib/bb/fetch2/crate.py
@@ -72,7 +72,7 @@
         ud.url = "https://%s/%s/%s/download" % (host, name, version)
         ud.parm['downloadfilename'] = "%s-%s.crate" % (name, version)
         if 'name' not in ud.parm:
-            ud.parm['name'] = name
+            ud.parm['name'] = '%s-%s' % (name, version)
 
         logger.debug2("Fetching %s to %s" % (ud.url, ud.parm['downloadfilename']))
 
diff --git a/poky/bitbake/lib/bb/fetch2/npmsw.py b/poky/bitbake/lib/bb/fetch2/npmsw.py
index 36fcbfb..cc81100 100644
--- a/poky/bitbake/lib/bb/fetch2/npmsw.py
+++ b/poky/bitbake/lib/bb/fetch2/npmsw.py
@@ -205,7 +205,9 @@
         # 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 if dep["url"]], data)
+        shrinkwrap_urls = [dep["url"] for dep in ud.deps if dep["url"]]
+        if shrinkwrap_urls:
+            ud.proxy = Fetch(shrinkwrap_urls, data)
         ud.needdonestamp = False
 
     @staticmethod
diff --git a/poky/bitbake/lib/bb/parse/parse_py/ConfHandler.py b/poky/bitbake/lib/bb/parse/parse_py/ConfHandler.py
index 05c627e..7826dee 100644
--- a/poky/bitbake/lib/bb/parse/parse_py/ConfHandler.py
+++ b/poky/bitbake/lib/bb/parse/parse_py/ConfHandler.py
@@ -21,7 +21,7 @@
     ^
     (?P<exp>export\s+)?
     (?P<var>[a-zA-Z0-9\-_+.${}/~:]+?)
-    (\[(?P<flag>[a-zA-Z0-9\-_+.][a-zA-Z0-9\-_+.@]+)\])?
+    (\[(?P<flag>[a-zA-Z0-9\-_+.][a-zA-Z0-9\-_+.@]*)\])?
 
     \s* (
         (?P<colon>:=) |
@@ -103,7 +103,7 @@
 # We have an issue where a UI might want to enforce particular settings such as
 # an empty DISTRO variable. If configuration files do something like assigning
 # a weak default, it turns out to be very difficult to filter out these changes,
-# particularly when the weak default might appear half way though parsing a chain 
+# particularly when the weak default might appear half way though parsing a chain
 # of configuration files. We therefore let the UIs hook into configuration file
 # parsing. This turns out to be a hard problem to solve any other way.
 confFilters = []
diff --git a/poky/bitbake/lib/bb/runqueue.py b/poky/bitbake/lib/bb/runqueue.py
index e629ab7..02f1474 100644
--- a/poky/bitbake/lib/bb/runqueue.py
+++ b/poky/bitbake/lib/bb/runqueue.py
@@ -198,15 +198,20 @@
                 curr_cpu_pressure = cpu_pressure_fds.readline().split()[4].split("=")[1]
                 curr_io_pressure = io_pressure_fds.readline().split()[4].split("=")[1]
                 curr_memory_pressure = memory_pressure_fds.readline().split()[4].split("=")[1]
-                exceeds_cpu_pressure =  self.rq.max_cpu_pressure and (float(curr_cpu_pressure) - float(self.prev_cpu_pressure)) > self.rq.max_cpu_pressure
-                exceeds_io_pressure =  self.rq.max_io_pressure and (float(curr_io_pressure) - float(self.prev_io_pressure)) > self.rq.max_io_pressure
-                exceeds_memory_pressure = self.rq.max_memory_pressure and (float(curr_memory_pressure) - float(self.prev_memory_pressure)) > self.rq.max_memory_pressure
                 now = time.time()
-                if now - self.prev_pressure_time > 1.0:
+                tdiff = now - self.prev_pressure_time
+                if tdiff > 1.0:
+                    exceeds_cpu_pressure =  self.rq.max_cpu_pressure and (float(curr_cpu_pressure) - float(self.prev_cpu_pressure)) / tdiff > self.rq.max_cpu_pressure
+                    exceeds_io_pressure =  self.rq.max_io_pressure and (float(curr_io_pressure) - float(self.prev_io_pressure)) / tdiff > self.rq.max_io_pressure
+                    exceeds_memory_pressure = self.rq.max_memory_pressure and (float(curr_memory_pressure) - float(self.prev_memory_pressure)) / tdiff > self.rq.max_memory_pressure
                     self.prev_cpu_pressure = curr_cpu_pressure
                     self.prev_io_pressure = curr_io_pressure
                     self.prev_memory_pressure = curr_memory_pressure
                     self.prev_pressure_time = now
+                else:
+                    exceeds_cpu_pressure =  self.rq.max_cpu_pressure and (float(curr_cpu_pressure) - float(self.prev_cpu_pressure)) > self.rq.max_cpu_pressure
+                    exceeds_io_pressure =  self.rq.max_io_pressure and (float(curr_io_pressure) - float(self.prev_io_pressure)) > self.rq.max_io_pressure
+                    exceeds_memory_pressure = self.rq.max_memory_pressure and (float(curr_memory_pressure) - float(self.prev_memory_pressure)) > self.rq.max_memory_pressure
             return (exceeds_cpu_pressure or exceeds_io_pressure or exceeds_memory_pressure)
         return False
 
diff --git a/poky/bitbake/lib/bb/tests/fetch.py b/poky/bitbake/lib/bb/tests/fetch.py
index da67168..6ef0836 100644
--- a/poky/bitbake/lib/bb/tests/fetch.py
+++ b/poky/bitbake/lib/bb/tests/fetch.py
@@ -2380,7 +2380,7 @@
         ud = fetcher.ud[fetcher.urls[0]]
 
         self.assertIn("name", ud.parm)
-        self.assertEqual(ud.parm["name"], "glob")
+        self.assertEqual(ud.parm["name"], "glob-0.2.11")
         self.assertIn("downloadfilename", ud.parm)
         self.assertEqual(ud.parm["downloadfilename"], "glob-0.2.11.crate")
 
@@ -2428,13 +2428,13 @@
         ud = fetcher.ud[fetcher.urls[0]]
 
         self.assertIn("name", ud.parm)
-        self.assertEqual(ud.parm["name"], "glob")
+        self.assertEqual(ud.parm["name"], "glob-0.2.11")
         self.assertIn("downloadfilename", ud.parm)
         self.assertEqual(ud.parm["downloadfilename"], "glob-0.2.11.crate")
 
         ud = fetcher.ud[fetcher.urls[1]]
         self.assertIn("name", ud.parm)
-        self.assertEqual(ud.parm["name"], "time")
+        self.assertEqual(ud.parm["name"], "time-0.1.35")
         self.assertIn("downloadfilename", ud.parm)
         self.assertEqual(ud.parm["downloadfilename"], "time-0.1.35.crate")
 
@@ -2451,7 +2451,7 @@
     def test_crate_incorrect_cksum(self):
         uri = "crate://crates.io/aho-corasick/0.7.20"
         self.d.setVar('SRC_URI', uri)
-        self.d.setVarFlag("SRC_URI", "aho-corasick.sha256sum", hashlib.sha256("Invalid".encode("utf-8")).hexdigest())
+        self.d.setVarFlag("SRC_URI", "aho-corasick-0.7.20.sha256sum", hashlib.sha256("Invalid".encode("utf-8")).hexdigest())
 
         uris = self.d.getVar('SRC_URI').split()
 
diff --git a/poky/bitbake/lib/bb/tests/parse.py b/poky/bitbake/lib/bb/tests/parse.py
index d27c7c6..a3165d9 100644
--- a/poky/bitbake/lib/bb/tests/parse.py
+++ b/poky/bitbake/lib/bb/tests/parse.py
@@ -222,6 +222,7 @@
     at_sign_in_var_flag = """
 A[flag@.service] = "nonet"
 B[flag@.target] = "ntb"
+C[f] = "flag"
 
 unset A[flag@.service]
 """
@@ -232,6 +233,7 @@
         self.assertEqual(d.getVar("B"), None)
         self.assertEqual(d.getVarFlag("A","flag@.service"), None)
         self.assertEqual(d.getVarFlag("B","flag@.target"), "ntb")
+        self.assertEqual(d.getVarFlag("C","f"), "flag")
 
     def test_parse_invalid_at_sign_in_var_flag(self):
         invalid_at_sign = self.at_sign_in_var_flag.replace("B[f", "B[@f")
diff --git a/poky/documentation/brief-yoctoprojectqs/index.rst b/poky/documentation/brief-yoctoprojectqs/index.rst
index 7b8baf2..0ccffcc 100644
--- a/poky/documentation/brief-yoctoprojectqs/index.rst
+++ b/poky/documentation/brief-yoctoprojectqs/index.rst
@@ -40,7 +40,13 @@
 Make sure your :term:`Build Host` meets the
 following requirements:
 
--  50 Gbytes of free disk space
+-  At least &MIN_DISK_SPACE; Gbytes of free disk space, though
+   much more will help to run multiple builds and increase
+   performance by reusing build artifacts.
+
+-  At least &MIN_RAM; Gbytes of RAM, though a modern modern build host with as
+   much RAM and as many CPU cores as possible is strongly recommended to
+   maximize build performance.
 
 -  Runs a supported Linux distribution (i.e. recent releases of Fedora,
    openSUSE, CentOS, Debian, or Ubuntu). For a list of Linux
diff --git a/poky/documentation/dev-manual/disk-space.rst b/poky/documentation/dev-manual/disk-space.rst
index 3a5d2b7..c63591c 100644
--- a/poky/documentation/dev-manual/disk-space.rst
+++ b/poky/documentation/dev-manual/disk-space.rst
@@ -17,6 +17,12 @@
 "rm_work", see the :ref:`ref-classes-rm-work` class in the
 Yocto Project Reference Manual.
 
+When you inherit this class and build a ``core-image-sato`` image for a
+``qemux86-64`` machine from an Ubuntu 22.04 x86-64 system, you end up with a
+final disk usage of 22 Gbytes instead of &MIN_DISK_SPACE; Gbytes. However,
+&MIN_DISK_SPACE_RM_WORK; Gbytes of initial free disk space are still needed to
+create temporary files before they can be deleted.
+
 Purging Duplicate Shared State Cache Files
 ==========================================
 
diff --git a/poky/documentation/dev-manual/init-manager.rst b/poky/documentation/dev-manual/init-manager.rst
index 0617fed..10c4754 100644
--- a/poky/documentation/dev-manual/init-manager.rst
+++ b/poky/documentation/dev-manual/init-manager.rst
@@ -38,26 +38,14 @@
 Using systemd Exclusively
 =========================
 
-Set these variables in your distribution configuration file as follows::
+Set the :term:`INIT_MANAGER` variable in your distribution configuration
+file as follows::
 
-   DISTRO_FEATURES:append = " systemd"
-   VIRTUAL-RUNTIME_init_manager = "systemd"
+   INIT_MANAGER = "systemd"
 
-You can also prevent the SysVinit distribution feature from
-being automatically enabled as follows::
-
-   DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
-
-Doing so removes any
-redundant SysVinit scripts.
-
-To remove initscripts from your image altogether, set this variable
-also::
-
-   VIRTUAL-RUNTIME_initscripts = ""
-
-For information on the backfill variable, see
-:term:`DISTRO_FEATURES_BACKFILL_CONSIDERED`.
+This will enable systemd and remove sysvinit components from the image.
+See ``meta/conf/distro/include/init-manager-systemd.inc`` for exact
+details on what this does.
 
 Using systemd for the Main Image and Using SysVinit for the Rescue Image
 ========================================================================
diff --git a/poky/documentation/dev-manual/packages.rst b/poky/documentation/dev-manual/packages.rst
index 90c52be..79f21d9 100644
--- a/poky/documentation/dev-manual/packages.rst
+++ b/poky/documentation/dev-manual/packages.rst
@@ -227,18 +227,6 @@
 it harder to forget to bump the variable when you make changes to the
 recipe in future.
 
-If you are sharing a common ``.inc`` file with multiple recipes, you can
-also use the :term:`INC_PR` variable to ensure that the recipes sharing the
-``.inc`` file are rebuilt when the ``.inc`` file itself is changed. The
-``.inc`` file must set :term:`INC_PR` (initially to "r0"), and all recipes
-referring to it should set :term:`PR` to "${INC_PR}.0" initially,
-incrementing the last number when the recipe is changed. If the ``.inc``
-file is changed then its :term:`INC_PR` should be incremented.
-
-When upgrading the version of a binary package, assuming the :term:`PV`
-changes, the :term:`PR` variable should be reset to "r0" (or "${INC_PR}.0"
-if you are using :term:`INC_PR`).
-
 Usually, version increases occur only to binary packages. However, if
 for some reason :term:`PV` changes but does not increase, you can increase
 the :term:`PE` variable (Package Epoch). The :term:`PE` variable defaults to
diff --git a/poky/documentation/dev-manual/securing-images.rst b/poky/documentation/dev-manual/securing-images.rst
index 6a9223c..e5791d3 100644
--- a/poky/documentation/dev-manual/securing-images.rst
+++ b/poky/documentation/dev-manual/securing-images.rst
@@ -68,7 +68,7 @@
 
 -  Regularly update your version of Poky and OE-Core from their upstream
    developers, e.g. to apply updates and security fixes from stable
-   and LTS branches.
+   and :term:`LTS` branches.
 
 -  Ensure you remove or disable debugging functionality before producing
    the final image. For information on how to do this, see the
diff --git a/poky/documentation/dev-manual/start.rst b/poky/documentation/dev-manual/start.rst
index 498734a..27fc0fc 100644
--- a/poky/documentation/dev-manual/start.rst
+++ b/poky/documentation/dev-manual/start.rst
@@ -302,7 +302,7 @@
    as these releases are frequently tested against the Yocto Project and
    officially supported. For a list of the distributions under
    validation and their status, see the ":ref:`Supported Linux
-   Distributions <detailed-supported-distros>`"
+   Distributions <system-requirements-supported-distros>`"
    section in the Yocto Project Reference Manual and the wiki page at
    :yocto_wiki:`Distribution Support </Distribution_Support>`.
 
diff --git a/poky/documentation/dev-manual/wic.rst b/poky/documentation/dev-manual/wic.rst
index a8d2f46..2a4408c 100644
--- a/poky/documentation/dev-manual/wic.rst
+++ b/poky/documentation/dev-manual/wic.rst
@@ -72,7 +72,7 @@
 system needs to meet the following requirements:
 
 -  The Linux distribution on your development host must support the
-   Yocto Project. See the ":ref:`detailed-supported-distros`"
+   Yocto Project. See the ":ref:`system-requirements-supported-distros`"
    section in the Yocto Project Reference Manual for the list of
    distributions that support the Yocto Project.
 
diff --git a/poky/documentation/kernel-dev/common.rst b/poky/documentation/kernel-dev/common.rst
index e0a8557..1d85202 100644
--- a/poky/documentation/kernel-dev/common.rst
+++ b/poky/documentation/kernel-dev/common.rst
@@ -1083,7 +1083,7 @@
 .. note::
 
    The OpenEmbedded build system recognizes this kernel as ``linux-yocto``
-   through Metadata (e.g. :term:`PREFERRED_VERSION`\ ``_linux-yocto ?= "12.4%"``).
+   through Metadata (e.g. :term:`PREFERRED_VERSION`\ ``_linux-yocto ?= "4.12%"``).
 
 Once ``menuconfig`` launches, use the interface to navigate through the
 selections to find the configuration settings in which you are
@@ -1384,7 +1384,7 @@
 ``.config`` file against the input files. During the check, the task
 produces warning messages for the following issues:
 
--  Requested options that did not make the final ``.config`` file.
+-  Requested options that did not make it into the final ``.config`` file.
 
 -  Configuration items that appear twice in the same configuration
    fragment.
diff --git a/poky/documentation/migration-guides/migration-4.2.rst b/poky/documentation/migration-guides/migration-4.2.rst
index 1339411..1db6fbc 100644
--- a/poky/documentation/migration-guides/migration-4.2.rst
+++ b/poky/documentation/migration-guides/migration-4.2.rst
@@ -9,27 +9,109 @@
 This section provides migration information for moving to the Yocto
 Project 4.2 Release (codename "mickledore") from the prior release.
 
+.. _migration-4.2-supported-distributions:
+
+Supported distributions
+~~~~~~~~~~~~~~~~~~~~~~~
+
+This release supports running BitBake on new GNU/Linux distributions:
+
+-  Fedora 36 and 37
+-  AlmaLinux 8.7 and 9.1
+-  OpenSuse 15.4
+
+On the other hand, some earlier distributions are no longer supported:
+
+-  Debian 10.x
+-  Fedora 34 and 35
+-  AlmaLinux 8.5
+
+See :ref:`all supported distributions <system-requirements-supported-distros>`.
+
 .. _migration-4.2-python-3.8:
 
 Python 3.8 is now the minimum required Python version version
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-BitBake and OpenEmbedded-Core are now relying on Python 3.8,
+BitBake and OpenEmbedded-Core now require Python 3.8 or newer,
 making it a requirement to use a distribution providing at least this
-version, or to use :term:`buildtools`.
+version, or to install a :term:`buildtools` tarball.
 
-.. _migration-4.2-qa-checks:
+.. _migration-4.2-gcc-8.0:
 
-QA check changes
-~~~~~~~~~~~~~~~~
+gcc 8.0 is now the minimum required GNU C compiler version
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. _migration-4.2-misc-changes:
+This version, released in 2018, is a minimum requirement
+to build the ``mesa-native`` recipe and as the latter is in the
+default dependency chain when building QEMU this has now been
+made a requirement for all builds.
 
-Miscellaneous changes
-~~~~~~~~~~~~~~~~~~~~~
+In the event that your host distribution does not provide this
+or a newer version of gcc, you can install a
+:term:`buildtools-extended` tarball.
 
--  The ``OEBasic`` signature handler (see :term:`BB_SIGNATURE_HANDLER`) has been
-   removed.
+.. _migration-4.2-new-nvd-api:
+
+Fetching the NVD vulnerability database through the 2.0 API
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This new version adds a new fetcher for the NVD database using the 2.0 API,
+as the 1.0 API will be retired in 2023.
+
+The implementation changes as little as possible, keeping the current
+database format (but using a different database file for the transition
+period), with a notable exception of not using the META table.
+
+Here are minor changes that you may notice:
+
+-  The database starts in 1999 instead of 2002
+-  The complete fetch is longer (30 minutes typically)
+
+.. _migration-4.2-rust-crate-checksums:
+
+Rust: mandatory checksums for crates
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This release now supports checksums for Rust crates and makes
+them mandatory for each crate in a recipe. See :yocto_git:`python3_bcrypt recipe changes
+</poky/commit/?h=mickledore&id=0dcb5ab3462fdaaf1646b05a00c7150eea711a9a>`
+for example.
+
+The ``cargo-update-recipe-crates`` utility
+:yocto_git:`has been extended </poky/commit/?h=mickledore&id=eef7fbea2c5bf59369390be4d5efa915591b7b22>`
+to include such checksums. So, in case you need to add the list of checksums
+to a recipe just inheriting the :ref:`ref-classes-cargo` class so far, you can
+follow these steps:
+
+#.  Make the recipe inherit :ref:`ref-classes-cargo-update-recipe-crates`
+#.  Remove all ``crate://`` lines from the recipe
+#.  Create an empty ``${BPN}-crates.inc`` file and make your recipe require it
+#.  Execute ``bitbake -c update_crates your_recipe``
+#.  Copy and paste the output of BitBake about the missing checksums into the
+    ``${BPN}-crates.inc`` file.
+
+
+.. _migration-4.2-addpylib:
+
+Python library code extensions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+BitBake in this release now supports a new ``addpylib`` directive to enable
+Python libraries within layers.
+
+This directive should be added to your layer configuration
+as in the below example from ``meta/conf/layer.conf``::
+
+   addpylib ${LAYERDIR}/lib oe
+
+Layers currently adding a lib directory to extend Python library code should now
+use this directive as :term:`BBPATH` is not going to be added automatically by
+OE-Core in future. Note that the directives are immediate operations, so it does
+make modules available for use sooner than the current BBPATH-based approach.
+
+For more information, see :ref:`bitbake-user-manual/bitbake-user-manual-metadata:extending python library code`.
+
 
 .. _migration-4.2-removed-variables:
 
@@ -38,7 +120,11 @@
 
 The following variables have been removed:
 
--  ``SERIAL_CONSOLE``, deprecated since version 2.6, replaced by :term:``SERIAL_CONSOLES``.
+-  ``SERIAL_CONSOLE``, deprecated since version 2.6, replaced by :term:`SERIAL_CONSOLES`.
+-  ``PACKAGEBUILDPKGD``, a mostly internal variable in the ref:`ref-classes-package`
+   class was rarely used to customise packaging. If you were using this in your custom
+   recipes or bbappends, you will need to switch to using :term:`PACKAGE_PREPROCESS_FUNCS`
+   or :term:`PACKAGESPLITFUNCS` instead.
 
 .. _migration-4.2-removed-recipes:
 
@@ -47,3 +133,144 @@
 
 The following recipes have been removed in this release:
 
+-  ``python3-picobuild``: after switching to ``python3-build``
+-  ``python3-strict-rfc3339``: unmaintained and not needed by anything in
+   :oe_git:`openembedded-core </openembedded-core>`
+   or :oe_git:`meta-openembedded </meta-openembedded>`.
+-  ``linux-yocto``: removed version 5.19 recipes (6.1 and 5.15 still provided)
+
+
+.. _migration-4.2-removed-classes:
+
+Removed classes
+~~~~~~~~~~~~~~~
+
+The following classes have been removed in this release:
+
+-  ``rust-bin``: no longer used
+-  ``package_tar``: could not be used for actual packaging, and thus not particularly useful.
+
+
+LAYERSERIES_COMPAT for custom layers and devtool workspace
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Some layer maintainers have been setting :term:`LAYERSERIES_COMPAT` in their
+layer's ``conf/layer.conf`` to the value of ``LAYERSERIES_CORENAMES`` to
+effectively bypass the compatibility check - this is no longer permitted.
+Layer maintainers should set :term:`LAYERSERIES_COMPAT` appropriately to
+help users understand the compatibility status of the layer.
+
+Additionally, the :term:`LAYERSERIES_COMPAT` value for the devtool workspace
+layer is now set at the time of creation, thus if you upgrade with the
+workspace layer enabled and you wish to retain it, you will need to manually
+update the :term:`LAYERSERIES_COMPAT` value in ``workspace/conf/layer.conf``
+(or remove the path from :term:`BBLAYERS` in ``conf/bblayers.conf`` and
+delete/move the ``workspace`` directory out of the way if you no longer
+need it).
+
+
+.. _migration-4.2-runqemu-slirp:
+
+runqemu now limits slirp host port forwarding to localhost
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+With default slirp port forwarding configuration in runqemu, qemu
+previously listened on TCP ports 2222 and 2323 on all IP addresses
+available on the build host. Most use cases with runqemu only need
+it for localhost and it is not safe to run qemu images with root
+login without password enabled and listening on all available,
+possibly Internet reachable network interfaces. Thus, in this
+release we limit qemu port forwarding to localhost (127.0.0.1).
+
+However, if you need the qemu machine to be reachable from the
+network, then it can be enabled via ``conf/local.conf`` or machine
+config variable ``QB_SLIRP_OPT``::
+
+   QB_SLIRP_OPT = "-netdev user,id=net0,hostfwd=tcp::2222-:22"
+
+
+.. _migration-4.2-patch-qa:
+
+Patch QA checks
+~~~~~~~~~~~~~~~
+
+The QA checks for patch fuzz and Upstream-Status have been reworked
+slightly in this release. The Upstream-Status checking is now configurable
+from :term:`WARN_QA` / :term:`ERROR_QA` (``patch-status-core`` for the
+core layer, and ``patch-status-noncore`` for other layers).
+
+The ``patch-fuzz`` and ``patch-status-core`` checks are now in the default
+value of :term:`ERROR_QA` so that they will cause the build to fail
+if triggered. If you prefer to avoid this you will need to adjust the value
+of :term:`ERROR_QA` in your configuration as desired.
+
+
+.. _migration-4.2-mesa:
+
+Native/nativesdk mesa usage and graphics drivers
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This release includes mesa 23.0, and with that mesa release it is not longer
+possible to use drivers from the host system, as mesa upstream has added strict
+checks for matching builds between drivers and libraries that load them.
+
+This is particularly relevant when running QEMU built within the build
+system. A check has been added to runqemu so that there is a helpful error
+when there is no native/nativesdk opengl/virgl support available.
+
+To support this, a number of drivers have been enabled when building ``mesa-native``.
+The one major dependency pulled in by this change is ``llvm-native`` which will
+add a few minutes to the build on a modern machine. If this is undesirable, you
+can set the value of :term:`DISTRO_FEATURES_NATIVE` in your configuration such
+that ``opengl`` is excluded.
+
+
+.. _migration-4.2-misc-changes:
+
+Miscellaneous changes
+~~~~~~~~~~~~~~~~~~~~~
+
+-  The :term:`IMAGE_NAME` variable is now set based on :term:`IMAGE_LINK_NAME`. This
+   means that if you are setting :term:`IMAGE_LINK_NAME` to "" to disable unversioned
+   image symlink creation, you also now need to set :term:`IMAGE_NAME` to still have
+   a reasonable value e.g.::
+
+      IMAGE_LINK_NAME = ""
+      IMAGE_NAME = "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
+
+-  In ``/etc/os-release``, the ``VERSION_CODENAME`` field is now used instead of
+   ``DISTRO_CODENAME`` (though its value is still set from the :term:`DISTRO_CODENAME`
+   variable) for better conformance to standard os-release usage. If you have runtime
+   code reading this from ``/etc/os-release`` it may need to be updated.
+
+-  The kmod recipe now enables OpenSSL support by default in order to support module
+   signing. If you do not need this and wish to reclaim some space/avoid the dependency
+   you should set :term:`PACKAGECONFIG` in a kmod bbappend (or ``PACKAGECONFIG:pn-kmod``
+   at the configuration level) to exclude ``openssl``.
+
+-  The ``OEBasic`` signature handler (see :term:`BB_SIGNATURE_HANDLER`) has been
+   removed. It is unlikely that you would have selected to use this, but if you have
+   you will need to remove this setting.
+
+-  The :ref:`ref-classes-package` class now checks if package names conflict via
+   ``PKG:${PN}`` override during ``do_package``. If you receive the associated error
+   you will need to address the :term:`PKG` usage so that the conflict is resolved.
+
+-  openssh no longer uses :term:`RRECOMMENDS` to pull in ``rng-tools``, since rngd
+   is no longer needed as of Linux kernel 5.6. If you still need ``rng-tools``
+   installed for other reasons, you should add ``rng-tools`` explicitly to your
+   image. If you additionally need rngd to be started as a service you will also
+   need to add the ``rng-tools-service`` package as that has been split out.
+
+-  The cups recipe no longer builds with the web interface enabled, saving ~1.8M of
+   space in the final image. If you wish to enable it, you should set
+   :term:`PACKAGECONFIG` in a cups bbappend (or ``PACKAGECONFIG:pn-cups`` at the
+   configuration level) to include ``webif``.
+
+-  The :ref:`ref-classes-scons` class now passes a ``MAXLINELENGTH`` argument to
+   scons in order to fix an issue with scons and command line lengths when ccache is
+   enabled. However, some recipes may be using older scons versions which don't support
+   this argument. If that is the case you can set the following in the recipe in order
+   to disable this::
+
+      SCONS_MAXLINELENGTH = ""
diff --git a/poky/documentation/migration-guides/release-4.0.rst b/poky/documentation/migration-guides/release-4.0.rst
index 2294265..1fc74a0 100644
--- a/poky/documentation/migration-guides/release-4.0.rst
+++ b/poky/documentation/migration-guides/release-4.0.rst
@@ -15,3 +15,4 @@
    release-notes-4.0.6
    release-notes-4.0.7
    release-notes-4.0.8
+   release-notes-4.0.9
diff --git a/poky/documentation/migration-guides/release-notes-4.0.1.rst b/poky/documentation/migration-guides/release-notes-4.0.1.rst
index c46142a..5529f71 100644
--- a/poky/documentation/migration-guides/release-notes-4.0.1.rst
+++ b/poky/documentation/migration-guides/release-notes-4.0.1.rst
@@ -86,7 +86,7 @@
 -  migration-3.4: add missing entry on :term:`EXTRA_USERS_PARAMS`
 -  migration-guides: add release notes for 4.0
 -  migration-guides: complete migration guide for 4.0
--  migration-guides: release-notes-4.0: mention LTS release
+-  migration-guides: release-notes-4.0: mention :term:`LTS` release
 -  migration-guides: release-notes-4.0: update 'Repositories / Downloads' section
 -  migration-guides: stop including documents with ".. include"
 -  musl: Fix build when usrmerge distro feature is enabled
diff --git a/poky/documentation/migration-guides/release-notes-4.0.9.rst b/poky/documentation/migration-guides/release-notes-4.0.9.rst
new file mode 100644
index 0000000..883514e
--- /dev/null
+++ b/poky/documentation/migration-guides/release-notes-4.0.9.rst
@@ -0,0 +1,247 @@
+Release notes for Yocto-4.0.9 (Kirkstone)
+-----------------------------------------
+
+Security Fixes in Yocto-4.0.9
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+-  binutils: Fix :cve:`2023-22608`
+-  curl: Fix :cve:`2023-23914`, :cve:`2023-23915` and :cve:`2023-23916`
+-  epiphany: Fix :cve:`2023-26081`
+-  git: Ignore :cve:`2023-22743`
+-  glibc: Fix  :cve:`2023-0687`
+-  gnutls: Fix :cve:`2023-0361`
+-  go: Fix :cve:`2022-2879`, :cve:`2022-41720` and :cve:`2022-41723`
+-  harfbuzz: Fix :cve:`2023-25193`
+-  less: Fix :cve:`2022-46663`
+-  libmicrohttpd: Fix :cve:`2023-27371`
+-  libsdl2: Fix :cve:`2022-4743`
+-  openssl: Fix :cve:`2022-3996`, :cve:`2023-0464`, :cve:`2023-0465` and :cve:`2023-0466`
+-  pkgconf: Fix :cve:`2023-24056`
+-  python3: Fix :cve:`2023-24329`
+-  shadow: Ignore :cve:`2016-15024`
+-  systemd: Fix :cve:`2022-4415`
+-  tiff: Fix :cve:`2023-0800`, :cve:`2023-0801`, :cve:`2023-0802`, :cve:`2023-0803` and :cve:`2023-0804`
+-  vim: Fix :cve:`2023-0433`, :cve:`2023-0512`, :cve:`2023-1127`, :cve:`2023-1170`, :cve:`2023-1175`, :cve:`2023-1264` and :cve:`2023-1355`
+-  xserver-xorg: Fix :cve:`2023-0494`
+-  xwayland: Fix :cve:`2023-0494`
+
+
+Fixes in Yocto-4.0.9
+~~~~~~~~~~~~~~~~~~~~
+
+-  base-files: Drop localhost.localdomain from hosts file
+-  binutils: Fix nativesdk ld.so search
+-  bitbake: cookerdata: Drop dubious exception handling code
+-  bitbake: cookerdata: Improve early exception handling
+-  bitbake: cookerdata: Remove incorrect SystemExit usage
+-  bitbake: fetch/git: Fix local clone url to make it work with repo
+-  bitbake: utils: Allow to_boolean to support int values
+-  bmap-tools: switch to main branch
+-  buildtools-tarball: Handle spaces within user $PATH
+-  busybox: Fix depmod patch
+-  cracklib: update github branch to 'main'
+-  cups: add/fix web interface packaging
+-  cups: check PACKAGECONFIG for pam feature
+-  cups: use BUILDROOT instead of DESTDIR
+-  curl: fix dependencies when building with ldap/ldaps
+-  cve-check: Fix false negative version issue
+-  dbus: upgrade to 1.14.6
+-  devtool/upgrade: do not delete the workspace/recipes directory
+-  dhcpcd: Fix install conflict when enable multilib.
+-  dhcpcd: fix dhcpcd start failure on qemuppc64
+-  gcc-shared-source: do not use ${S}/.. in deploy_source_date_epoch
+-  glibc: Add missing binutils dependency
+-  image_types: fix multiubi var init
+-  iso-codes: upgrade to  4.13.0
+-  json-c: Add ptest for json-c
+-  kernel-yocto: fix kernel-meta data detection
+-  lib/buildstats: handle tasks that never finished
+-  lib/resulttool: fix typo breaking resulttool log --ptest
+-  libjpeg-turbo: upgrade to 2.1.5.1
+-  libmicrohttpd: upgrade to 0.9.76
+-  libseccomp: fix for the ptest result format
+-  libssh2: Clean up ptest patch/coverage
+-  linux-firmware: add yamato fw files to qcom-adreno-a2xx package
+-  linux-firmware: properly set license for all Qualcomm firmware
+-  linux-firmware: upgrade to 20230210
+-  linux-yocto-rt/5.15: update to -rt59
+-  linux-yocto/5.10: upgrade to v5.10.175
+-  linux-yocto/5.15: upgrade to v5.15.103
+-  linux: inherit pkgconfig in kernel.bbclass
+-  lttng-modules: fix for kernel 6.2+
+-  lttng-modules: upgrade to v2.13.9
+-  lua: Fix install conflict when enable multilib.
+-  mdadm: Fix raid0, 06wrmostly and 02lineargrow tests
+-  meson: Fix wrapper handling of implicit setup command
+-  migration-guides: add 4.0.8 release notes
+-  nghttp2: never build python bindings
+-  oeqa rtc.py: skip if read-only-rootfs
+-  oeqa ssh.py: fix hangs in run()
+-  oeqa/sdk: Improve Meson test
+-  oeqa/selftest/prservice: Improve debug output for failure
+-  oeqa/selftest/resulttooltests: fix minor typo
+-  openssl: upgrade to 3.0.8
+-  package.bbclase: Add check for /build in copydebugsources()
+-  patchelf: replace a rejected patch with an equivalent uninative.bbclass tweak
+-  poky.conf: bump version for 4.0.9
+-  populate_sdk_ext: Handle spaces within user $PATH
+-  pybootchartui: Fix python syntax issue
+-  python3-git: fix indent error
+-  python3-setuptools-rust-native: Add direct dependency of native python3 modules
+-  qemu: Revert "fix :cve:`2021-3507`" as not applicable for qemu 6.2
+-  rsync: Add missing prototypes to function declarations
+-  rsync: Turn on -pedantic-errors at the end of 'configure'
+-  runqemu: kill qemu if it hangs
+-  scripts/lib/buildstats: handle top-level build_stats not being complete
+-  selftest/recipetool: Stop test corrupting tinfoil class
+-  selftest/runtime_test/virgl: Disable for all Rocky Linux
+-  selftest: devtool: set BB_HASHSERVE_UPSTREAM when setting SSTATE_MIRROR
+-  sstatesig: Improve output hash calculation
+-  staging/multilib: Fix manifest corruption
+-  staging: Separate out different multiconfig manifests
+-  sudo: update 1.9.12p2 -> 1.9.13p3
+-  systemd.bbclass: Add /usr/lib/systemd to searchpaths as well
+-  systemd: add group sgx to udev package
+-  systemd: fix wrong nobody-group assignment
+-  timezone: use 'tz' subdir instead of ${WORKDIR} directly
+-  toolchain-scripts: Handle spaces within user $PATH
+-  tzcode-native: fix build with gcc-13 on host
+-  tzdata: use separate B instead of WORKDIR for zic output
+-  uninative: upgrade to 3.9 to include libgcc and glibc 2.37
+-  vala: Fix install conflict when enable multilib.
+-  vim: add missing pkgconfig inherit
+-  vim: set modified-by to the recipe MAINTAINER
+-  vim: upgrade to 9.0.1429
+-  wic: Fix usage of fstype=none in wic
+-  wireless-regdb: upgrade to 2023.02.13
+-  xserver-xorg: upgrade to 21.1.7
+-  xwayland: upgrade to 22.1.8
+
+
+Known Issues in Yocto-4.0.9
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- N/A
+
+
+Contributors to Yocto-4.0.9
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+-  Alexander Kanavin
+-  Alexis Lothoré
+-  Bruce Ashfield
+-  Changqing Li
+-  Chee Yang Lee
+-  Dmitry Baryshkov
+-  Federico Pellegrin
+-  Geoffrey GIRY
+-  Hitendra Prajapati
+-  Hongxu Jia
+-  Joe Slater
+-  Kai Kang
+-  Kenfe-Mickael Laventure
+-  Khem Raj
+-  Martin Jansa
+-  Mateusz Marciniec
+-  Michael Halstead
+-  Michael Opdenacker
+-  Mikko Rapeli
+-  Ming Liu
+-  Mingli Yu
+-  Narpat Mali
+-  Pavel Zhukov
+-  Pawan Badganchi
+-  Peter Marko
+-  Piotr Łobacz
+-  Poonam Jadhav
+-  Randy MacLeod
+-  Richard Purdie
+-  Robert Yang
+-  Romuald Jeanne
+-  Ross Burton
+-  Sakib Sajal
+-  Saul Wold
+-  Shubham Kulkarni
+-  Siddharth Doshi
+-  Simone Weiss
+-  Steve Sakoman
+-  Tim Orling
+-  Tom Hochstein
+-  Trevor Woerner
+-  Ulrich Ölmann
+-  Vivek Kumbhar
+-  Wang Mingyu
+-  Xiangyu Chen
+-  Yash Shinde
+
+
+Repositories / Downloads for Yocto-4.0.9
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+poky
+
+-  Repository Location: :yocto_git:`/poky`
+-  Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
+-  Tag:  :yocto_git:`yocto-4.0.9 </poky/log/?h=yocto-4.0.9>`
+-  Git Revision: :yocto_git:`09def309f91929f47c6cce386016ccb777bd2cfc </poky/commit/?id=09def309f91929f47c6cce386016ccb777bd2cfc>`
+-  Release Artefact: poky-09def309f91929f47c6cce386016ccb777bd2cfc
+-  sha: 5c7ce209c8a6b37ec2898e5ca21858234d91999c11fa862880ba98e8bde62f63
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.9/poky-09def309f91929f47c6cce386016ccb777bd2cfc.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.9/poky-09def309f91929f47c6cce386016ccb777bd2cfc.tar.bz2
+
+openembedded-core
+
+-  Repository Location: :oe_git:`/openembedded-core`
+-  Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
+-  Tag:  :oe_git:`yocto-4.0.9 </openembedded-core/log/?h=yocto-4.0.9>`
+-  Git Revision: :oe_git:`ff4b57ffff903a93b710284c7c7f916ddd74712f </openembedded-core/commit/?id=ff4b57ffff903a93b710284c7c7f916ddd74712f>`
+-  Release Artefact: oecore-ff4b57ffff903a93b710284c7c7f916ddd74712f
+-  sha: 726778ffc291136db1704316b196de979f68df9f96476b785e1791957fbb66b3
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.9/oecore-ff4b57ffff903a93b710284c7c7f916ddd74712f.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.9/oecore-ff4b57ffff903a93b710284c7c7f916ddd74712f.tar.bz2
+
+meta-mingw
+
+-  Repository Location: :yocto_git:`/meta-mingw`
+-  Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
+-  Tag:  :yocto_git:`yocto-4.0.9 </meta-mingw/log/?h=yocto-4.0.9>`
+-  Git Revision: :yocto_git:`a90614a6498c3345704e9611f2842eb933dc51c1 </meta-mingw/commit/?id=a90614a6498c3345704e9611f2842eb933dc51c1>`
+-  Release Artefact: meta-mingw-a90614a6498c3345704e9611f2842eb933dc51c1
+-  sha: 49f9900bfbbc1c68136f8115b314e95d0b7f6be75edf36a75d9bcd1cca7c6302
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.9/meta-mingw-a90614a6498c3345704e9611f2842eb933dc51c1.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.9/meta-mingw-a90614a6498c3345704e9611f2842eb933dc51c1.tar.bz2
+
+meta-gplv2
+
+-  Repository Location: :yocto_git:`/meta-gplv2`
+-  Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
+-  Tag:  :yocto_git:`yocto-4.0.9 </meta-gplv2/log/?h=yocto-4.0.9>`
+-  Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
+-  Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
+-  sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.9/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.9/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
+
+bitbake
+
+-  Repository Location: :oe_git:`/bitbake`
+-  Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
+-  Tag:  :oe_git:`yocto-4.0.9 </bitbake/log/?h=yocto-4.0.9>`
+-  Git Revision: :oe_git:`2802adb572eb73a3eb2725a74a9bbdaafc543fa7 </bitbake/commit/?id=2802adb572eb73a3eb2725a74a9bbdaafc543fa7>`
+-  Release Artefact: bitbake-2802adb572eb73a3eb2725a74a9bbdaafc543fa7
+-  sha: 5c6e713b5e26b3835c0773095c7a1bc1f8affa28316b33597220ed86f1f1b643
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.9/bitbake-2802adb572eb73a3eb2725a74a9bbdaafc543fa7.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.9/bitbake-2802adb572eb73a3eb2725a74a9bbdaafc543fa7.tar.bz2
+
+yocto-docs
+
+-  Repository Location: :yocto_git:`/yocto-docs`
+-  Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
+-  Tag: :yocto_git:`yocto-4.0.9 </yocto-docs/log/?h=yocto-4.0.9>`
+-  Git Revision: :yocto_git:`86d0b38a97941ad52b1af220c7b801a399d50e93 </yocto-docs/commit/?id=86d0b38a97941ad52b1af220c7b801a399d50e93>`
+
diff --git a/poky/documentation/migration-guides/release-notes-4.1.rst b/poky/documentation/migration-guides/release-notes-4.1.rst
index cd48e20..a0d5196 100644
--- a/poky/documentation/migration-guides/release-notes-4.1.rst
+++ b/poky/documentation/migration-guides/release-notes-4.1.rst
@@ -238,20 +238,20 @@
 - grub2: :cve:`2021-3695`, :cve:`2021-3696`, :cve:`2021-3697`, :cve:`2022-28733`, :cve:`2022-28734`, :cve:`2022-28735`
 - inetutils: :cve:`2022-39028`
 - libtirpc: :cve:`2021-46828`
-- libxml2: :cve:`2016-3709 (ignored)`
-- libxslt: :cve:`2022-29824 (not applicable)`
+- libxml2: :cve:`2016-3709` (ignored)
+- libxslt: :cve:`2022-29824` (not applicable)
 - linux-yocto/5.15: :cve:`2022-28796`
 - logrotate: :cve:`2022-1348`
 - lua: :cve:`2022-33099`
-- nasm: :cve:`2020-18974 (ignored)`
+- nasm: :cve:`2020-18974` (ignored)
 - ncurses: :cve:`2022-29458`
 - openssl: :cve:`2022-1292`, :cve:`2022-1343`, :cve:`2022-1434`, :cve:`2022-1473`, :cve:`2022-2068`, :cve:`2022-2274`, :cve:`2022-2097`
-- python3: :cve:`2015-20107 (ignored)`
-- qemu: :cve:`2021-20255 (ignored)`, :cve:`2019-12067 (ignored)`, :cve:`2021-3507`, :cve:`2022-0216`, :cve:`2022-2962`, :cve:`2022-35414`
+- python3: :cve:`2015-20107` (ignored)
+- qemu: :cve:`2021-20255` (ignored), :cve:`2019-12067` (ignored), :cve:`2021-3507`, :cve:`2022-0216`, :cve:`2022-2962`, :cve:`2022-35414`
 - rpm: :cve:`2021-35937`, :cve:`2021-35938`, :cve:`2021-35939`
 - rsync: :cve:`2022-29154`
 - subversion: :cve:`2021-28544`, :cve:`2022-24070`
-- tiff: :cve:`2022-1210 (not applicable)`, :cve:`2022-1622`, :cve:`2022-1623 (invalid)`, :cve:`2022-2056`, :cve:`2022-2057`, :cve:`2022-2058`, :cve:`2022-2953`, :cve:`2022-34526`
+- tiff: :cve:`2022-1210` (not applicable), :cve:`2022-1622`, :cve:`2022-1623` (invalid), :cve:`2022-2056`, :cve:`2022-2057`, :cve:`2022-2058`, :cve:`2022-2953`, :cve:`2022-34526`
 - unzip: :cve:`2022-0529`, :cve:`2022-0530`
 - vim: :cve:`2022-1381`, :cve:`2022-1420`, :cve:`2022-1621`, :cve:`2022-1629`, :cve:`2022-1674`, :cve:`2022-1733`, :cve:`2022-1735`, :cve:`2022-1769`, :cve:`2022-1771`, :cve:`2022-1785`, :cve:`2022-1796`, :cve:`2022-1927`, :cve:`2022-1942`, :cve:`2022-2257`, :cve:`2022-2264`, :cve:`2022-2284`, :cve:`2022-2285`, :cve:`2022-2286`, :cve:`2022-2287`, :cve:`2022-2816`, :cve:`2022-2817`, :cve:`2022-2819`, :cve:`2022-2845`, :cve:`2022-2849`, :cve:`2022-2862`, :cve:`2022-2874`, :cve:`2022-2889`, :cve:`2022-2980`, :cve:`2022-2946`, :cve:`2022-2982`, :cve:`2022-3099`, :cve:`2022-3134`, :cve:`2022-3234`, :cve:`2022-3278`
 - zlib: :cve:`2022-37434`
diff --git a/poky/documentation/migration-guides/release-notes-4.2.rst b/poky/documentation/migration-guides/release-notes-4.2.rst
index edafe37..0426124 100644
--- a/poky/documentation/migration-guides/release-notes-4.2.rst
+++ b/poky/documentation/migration-guides/release-notes-4.2.rst
@@ -6,23 +6,896 @@
 New Features / Enhancements in 4.2
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-- Python 3.8 is the minimum Python version required on the build host.
-  For host distributions that do not provide it, this is included as part of the
-  :term:`buildtools` tarball.
+-  Linux kernel 6.1, glibc 2.37 and ~350 other recipe upgrades
 
-- This release now supports a new ``addpylib`` directive to enable
-  Python libraries within layers.
+-  Rust improvements:
 
-  This directive should be added to your layer configuration,
-  as in the below example from ``meta/conf/layer.conf``::
+   -  This release adds Cargo support on the target, and includes
+      automated QA tests for this functionality.
 
-     addpylib ${LAYERDIR}/lib oe
+   -  It also supports checksums for Rust crates and makes
+      them mandatory for each crate in a recipe.
+
+   -  New :ref:`ref-classes-cargo-update-recipe-crates` class to
+      enable updating :term:`SRC_URI` crate lists from ``Cargo.lock``
+
+   -  Enabled building Rust for baremetal targets
+
+   -  You can now also easily select to build beta or nightly
+      versions of rust with a new :term:`RUST_CHANNEL` variable
+      (use at own risk)
+
+   -  Support for local github repos in :term:`SRC_URI` as
+      replacements for cargo dependencies
+
+   -  Use built-in rust targets for -native builds to save several
+      minutes building the Rust toolchain
+
+-  Python 3.8+ and GCC 8.0+ are now the minimum required versions on the build host
+
+-  BitBake in this release now supports a new ``addpylib`` directive to enable
+   Python libraries within layers. For more information,
+   see :ref:`bitbake-user-manual/bitbake-user-manual-metadata:extending python library code`.
+
+-  BitBake has seen multiple internal changes that may improve
+   memory and disk usage as well as parsing time, in particular:
+
+   -  BitBake's Cooker server is now multithreaded.
+
+   -  Ctrl+C can now be used to interrupt some long-running operations
+      that previously ignored it.
+
+   -  BitBake's cache has been extended to include more hash
+      debugging data, but has also been optimized to :yocto_git:`compress
+      cache data <https://git.yoctoproject.org/poky/commit/?h=mickledore&id=7d010055e2af3294e17db862f42664ca689a9356>`.
+
+   -  BitBake's UI will now ping the server regularly to ensure
+      it is still alive.
 
 -  Architecture-specific enhancements:
 
+   -  This release adds initial support for the
+      :wikipedia:`LoongArch <Loongson#LoongArch>`
+      (``loongarch64``) architecture, though there is no testing for it yet.
+
+   -  New ``x86-64-v3`` tunes (AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE)
+
+   -  go: add support to build on ppc64le
+   -  rust: rustfmt now working and installed for riscv32
+   -  libpng: enable NEON for aarch64 to enensure consistency with arm32.
+   -  baremetal-helloworld: Enable x86 and x86-64 ports
+
 -  Kernel-related enhancements:
 
+   -  Added some support for building 6.2/6.3-rc kernels
+   -  linux-yocto-dev: mark as compatible with qemuarm64 and qemuarmv5
+   -  Add kernel specific OBJCOPY to help switching toolchains cleanly for kernel build between gcc and clang
+
+-  New core recipes:
+
+   - ``debugedit``
+   - ``gtk4`` (import from meta-gnome)
+   - ``gcr``: add recipe for gcr-4
+   - ``graphene`` (import from meta-oe)
+   - ``libc-test``
+   - ``libportal`` (import from meta-gnome)
+   - ``libslirp``
+   - ``libtest-fatal-perl``
+   - ``libtest-warnings-perl`` (import from meta-perl)
+   - ``libtry-tiny-perl``
+   - ``python3-build``
+   - ``python3-pyproject-hooks``
+   - ``python3-hatch-fancy-pypi-readme``
+   - ``python3-unittest-automake``
+
 -  QEMU/runqemu enhancements:
 
+   -  Set ``QB_SMP`` with ?= to make it easier to modify
+   -  Set ``QB_CPU`` with ?= to make it easier to modify (x86 configuration only)
+   -  New ``QB_NFSROOTFS_EXTRA_OPT`` to allow extra options to be appended to the nfs rootfs options in kernel boot args, e.g. ``"wsize=4096,rsize=4096"``
+   -  New ``QB_SETUP_CMD`` and ``QB_CLEANUP_CMD`` to enable running custom shell setup and cleanup commands before and after QEMU.
+   -  ``QB_DEFAULT_KERNEL`` now defaults to pick the bundled initramfs kernel image if the Linux kernel image is generated with :term:`INITRAMFS_IMAGE_BUNDLE` set to "1"
+   -  Split out the QEMU guest agent to its own ``qemu-guest-agent`` package
+   -  runqemu: new "guestagent" option to enable communication with the guest agent
+   -  runqemu: respect :term:`IMAGE_LINK_NAME` when searching for image
+
 -  Image-related enhancements:
 
+   -  Add 7-Zip support in image conversion types (``7zip``)
+   -  New :term:`IMAGE_MACHINE_SUFFIX` variable to allow easily removing machine name suffix from image file names
+
+-  wic Image Creator enhancements:
+
+   -  bootimg-efi: add support for directly loading Linux kernel UEFI stub
+   -  bootimg-efi: implement --include-path
+   -  Allow usage of fstype=none to specify an unformatted partition
+   -  Implement repeatable disk identifiers based on SOURCE_DATE_EPOCH
+
+-  FIT image related improvements:
+
+   -  FIT image signing support has been reworked to remove interdependencies and make it more easily extensible
+   -  Skip FDT section creation for applicable symlinks to avoid the same dtb being duplicated
+   -  New :term:`FIT_CONF_DEFAULT_DTB` variable to enable selecting default dtb when multiple dtbs exist
+
+-  SDK-related improvements:
+
+   -  Extended the following recipes to nativesdk:
+
+      - ``bc``
+      - ``gi-docgen``
+      - ``gperf``
+      - ``python3-iniconfig``
+      - ``python3-atomicwrites``
+      - ``python3-markdown``
+      - ``python3-smartypants``
+      - ``python3-typogrify``
+      - ``ruby``
+      - ``unifdef``
+
+   -  New :term:`SDK_ZIP_OPTIONS` variable to enable passing additional options to the zip command when preparing the SDK zip archive
+   -  New Rust SDK target packagegroup (packagegroup-rust-sdk-target)
+
+-  Testing:
+
+   -  The ptest images have changed structure in this release. The
+      underlying ``core-image-ptest`` recipe now uses :term:`BBCLASSEXTEND` to
+      create a variant for each ptest enabled recipe in OE-Core.
+
+      For example, this means that ``core-image-ptest-bzip2``,
+      ``core-image-ptest-lttng-tools`` and many more image targets now exist
+      and can be built/tested individually.
+
+      The ``core-image-ptest-all`` and ``core-image-ptest-fast`` targets are now
+      wrappers that target groups of individual images and means that the tests
+      can be executed in parallel during our automated testing. This also means
+      the dependencies are more accurately tested.
+
+   -  It is now possible to track regression changes between releases using
+      :oe_git:`yocto_testresults_query.py </openembedded-core/tree/scripts/yocto_testresults_query.py>`,
+      which is a thin wrapper over :oe_git:`resulttool
+      </openembedded-core/tree/scripts/resulttool>`. Here is an example
+      command, which allowed to spot and fix a regression in the
+      ``quilt`` ptest::
+
+         yocto_testresults_query.py regression-report 4.2_M1 4.2_M2
+
+      See this `blog post about regression detection
+      <https://bootlin.com/blog/continuous-integration-in-yocto-improving-the-regressions-detection/>`__.
+
+   -  This release adds support for parallel ptest execution with a ptest per image.
+      This takes ptest execution time from 3.5 hours to around 45 minutes on the autobuilder.
+
+   -  Basic Rust compile/run and cargo tests
+
+   -  New ``python3-unittest-automake`` recipe which provides modules for pytest
+      and unittest to adjust their output to automake-style for easier integration
+      with the ptest system.
+
+   -  ptest support added to ``bc``, ``cpio`` and ``gnutls``, and fixes made to
+      ptests in numerous other recipes.
+
+   -  ``ptest-runner`` now adds a non-root "ptest" user for tests to run as
+
+   -  resulttool: add a --list-ptest option to the log subcommand to list ptest names
+      in a results file
+
+   -  resulttool: regression: add metadata filtering for oeselftest
+
+
+-  New :term:`PACKAGECONFIG` options in the following recipes:
+
+   - ``at-spi2-core``
+   - ``base-passwd``
+   - ``cronie``
+   - ``cups``
+   - ``cups``
+   - ``curl``
+   - ``file``
+   - ``gstreamer1.0-plugins-good``
+   - ``gtk+3``
+   - ``iproute2``
+   - ``libsdl2``
+   - ``libtiff``
+   - ``llvm``
+   - ``mesa``
+   - ``psmisc``
+   - ``qemu``
+   - ``sudo``
+   - ``systemd``
+   - ``tiff``
+   - ``util-linux``
+
+-  Extended the following recipes to native:
+
+   - ``iso-codes``
+   - ``libxkbcommon``
+   - ``p11-kit``
+   - ``python3-atomicwrites``
+   - ``python3-dbusmock``
+   - ``python3-iniconfig``
+   - ``xkeyboard-config``
+
+-  Utility script changes:
+
+   -  devtool: ignore patch-fuzz errors when extracting source in order to enable fixing fuzz issues
+   -  oe-setup-layers: Make efficiently idempotent
+   -  oe-setup-layers: print a note about submodules if present
+   -  New buildstats-summary script to show a summary of the buildstats data
+   -  report-error: catch Nothing PROVIDES error
+   -  combo-layer: add sync-revs command
+   -  scripts: convert-overrides: Allow command-line customizations
+
+-  bitbake-layers improvements:
+
+   -  layerindex-fetch: checkout layer(s) branch when clone exists
+   -  create: add -a/--add-layer option to add layer to bblayers.conf after creating layer
+   -  show-layers: improve output layout
+
+-  Other BitBake improvements:
+
+   -  Inline python snippets can now include dictionary expressions
+   -  Evaluate the value of export/unexport/network flags so that they can be reset to "0"
+   -  Make :term:`EXCLUDE_FROM_WORLD` boolean so that it can be reset to "0"
+   -  Support int values in bb.utils.to_boolean() in addition to strings
+   -  bitbake-getvar: Add a quiet command line argument
+   -  Allow the '@' character in variable flag names
+   -  Python library code will now be included when calculating task hashes
+   -  fetch2/npmsw: add more short forms for git operations
+   -  Display a warning when ``SRCREV = "${AUTOREV}"`` is set too late to be effective
+   -  Display all missing :term:`SRC_URI` checksums at once
+   -  Improve error message for a missing multiconfig
+   -  Switch to a new :term:`BB_CACHEDIR` variable for codeparser cache location
+   -  Mechanism introduced to reduce the codeparser cache unnecessarily growing in size
+
+-  Packaging changes:
+
+   -  rng-tools is no longer recommended by openssh, and the rng-tools service files have been split out to their own package
+   -  linux-firmware: split rtl8761 and amdgpu firmware
+   -  linux-firmware: add new fw file to ${PN}-qcom-adreno-a530
+   -  iproute2: separate routel and add python dependency
+   -  xinetd: move xconv.pl script to separate package
+   -  perf: Enable debug/source packaging
+
+-  Miscellaneous changes:
+
+   -  Supporting 64 bit dates on 32 bit platforms: several packages have been
+      updated to pass Y2038 tests, and a QA check for 32 bit time and file
+      offset functions has been added (default off)
+
+   -  Patch fuzz/Upstream-Status checking has been reworked:
+      -  Upstream-Status checking is now configurable from :term:`WARN_QA`/:term:`ERROR_QA` (``patch-status-core``)
+      -  Can now be enabled for non-core layers (``patch-status-noncore``)
+      -  ``patch-fuzz`` is now in :term:`ERROR_QA` by default, and actually stops the build
+
+   -  Many packages were updated to add large file support.
+
+   -  New :term:`VOLATILE_TMP_DIR` variable allows to specify whether ``/tmp``
+      should be on persistent storage or in RAM.
+
+   -  vulkan-loader: Allow headless targets to build the loader
+   -  dhcpcd: fix to work with systemd
+   -  u-boot: Add /boot to :term:`SYSROOT_DIRS` to allow boot files to be used by other recipes
+   -  linux-firmware: don't put the firmware into the sysroot
+   -  cups: add :term:`PACKAGECONFIG` to control web interface and default to off
+   -  buildtools-tarball: export certificates to python and curl
+   -  yocto-check-layer: Allow OE-Core to be tested
+   -  yocto-check-layer: check for patch file upstream status
+   -  boost: enable building Boost.URL library
+   -  native: Drop special variable handling
+   -  poky: make it easier to set :term:`INIT_MANAGER` from local.conf
+   -  create-spdx: Add support for custom Annotations
+   -  create-spdx: Report downloads as separate packages
+   -  create-spdx: Removed the top-level image SPDX file and the JSON index file from :term:`DEPLOYDIR` to avoid confusion
+   -  os-release: replace ``DISTRO_CODENAME`` with ``VERSION_CODENAME`` (still set from :term:`DISTRO_CODENAME`)
+   -  weston: Add kiosk shell
+   -  overlayfs: Allow unused mount points
+   -  sstatesig: emit more helpful error message when not finding sstate manifest
+   -  pypi.bbclass: Set :term:`SRC_URI` downloadfilename with an optional prefix
+   -  poky-bleeding: Update and rework
+   -  package.bbclass: check if package names conflict via PKG:${PN} override in do_package
+   -  cve-update-nvd2-native: new NVD CVE database fetcher using the 2.0 API
+   -  mirrors.bbclass: use shallow tarball for binutils-native/nativesdk-binutils
+   -  meta/conf: move default configuration templates into meta/conf/templates/default
+   -  binutils: Enable --enable-new-dtags as per many Linux distributions
+   -  base-files: Drop localhost.localdomain from hosts file as per many Linux distributions
+   -  packagegroup-core-boot: make init-ifupdown package a recommendation
+
+
+Known Issues in 4.2
+~~~~~~~~~~~~~~~~~~~
+
+
+Recipe License changes in 4.2
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following corrections have been made to the :term:`LICENSE` values set by recipes:
+
+- curl: set :term:`LICENSE` appropriately to "curl" as it is a special derivative of the MIT/X license, not exactly that license.
+- libgit2: added Zlib, ISC, LGPL-2.1-or-later and CC0-1.0 to :term:`LICENSE` covering portions of the included code.
+- linux-firmware: set package :term:`LICENSE` appropriately for all qcom packages
+
+
+
+Security Fixes in 4.2
+~~~~~~~~~~~~~~~~~~~~~
+
+- binutils: :cve:`2022-4285`, :cve:`2023-25586`
+- curl: :cve:`2022-32221`, :cve:`2022-35260`, :cve:`2022-42915`, :cve:`2022-42916`
+- epiphany: :cve:`2023-26081`
+- expat: :cve:`2022-43680`
+- ffmpeg: :cve:`2022-3964`, :cve:`2022-3965`
+- git: :cve:`2022-39260`, :cve:`2022-41903`, :cve:`2022-23521`, :cve:`2022-41953` (ignored)
+- glibc: :cve:`2023-25139` (ignored)
+- go: :cve:`2023-24532`, :cve:`2023-24537`
+- grub2: :cve:`2022-2601`, :cve:`2022-3775`, :cve:`2022-28736`
+- inetutils: :cve:`2019-0053`
+- less: :cve:`2022-46663`
+- libarchive: :cve:`2022-36227`
+- libinput: :cve:`2022-1215`
+- libpam: :cve:`2022-28321`
+- libpng: :cve:`2019-6129`
+- libx11: :cve:`2022-3554`
+- openssh: :cve:`2023-28531`
+- openssl: :cve:`2022-3358`, :cve:`2022-3786`, :cve:`2022-3602`, :cve:`2022-3996`, :cve:`2023-0286`, :cve:`2022-4304`, :cve:`2022-4203`, :cve:`2023-0215`, :cve:`2022-4450`, :cve:`2023-0216`, :cve:`2023-0217`, :cve:`2023-0401`, :cve:`2023-0464`
+- ppp: :cve:`2022-4603`
+- python3-cryptography{-vectors}: :cve:`2022-3602`, :cve:`2022-3786`, :cve:`2023-23931`
+- python3: :cve:`2022-37460`
+- qemu: :cve:`2022-3165`
+- rust: :cve:`2022-46176`
+- rxvt-unicode: :cve:`2022-4170`
+- screen: :cve:`2023-24626`
+- shadow: :cve:`2023-29383`, :cve:`2016-15024` (ignored)
+- sudo: :cve:`2022-43995`
+- systemd: :cve:`2022-4415` (ignored)
+- tar: :cve:`2022-48303`
+- tiff: :cve:`2022-3599`, :cve:`2022-3597`, :cve:`2022-3626`, :cve:`2022-3627`, :cve:`2022-3570`, :cve:`2022-3598`, :cve:`2022-3970`, :cve:`2022-48281`
+- vim: :cve:`2022-3352`, :cve:`2022-4141`, :cve:`2023-0049`, :cve:`2023-0051`, :cve:`2023-0054`, :cve:`2023-0288`, :cve:`2023-1127`, :cve:`2023-1170`, :cve:`2023-1175`, :cve:`2023-1127`, :cve:`2023-1170`, :cve:`2023-1175`, :cve:`2023-1264`, :cve:`2023-1355`, :cve:`2023-0433`, :cve:`2022-47024`, :cve:`2022-3705`
+- xdg-utils: :cve:`2022-4055`
+- xserver-xorg: :cve:`2022-3550`, :cve:`2022-3551`, :cve:`2023-1393`, :cve:`2023-0494`, :cve:`2022-3553` (ignored)
+
+
+Recipe Upgrades in 4.2
+~~~~~~~~~~~~~~~~~~~~~~
+
+- acpid: upgrade 2.0.33 -> 2.0.34
+- adwaita-icon-theme: update 42.0 -> 43
+- alsa-lib: upgrade 1.2.7.2 -> 1.2.8
+- alsa-ucm-conf: upgrade 1.2.7.2 -> 1.2.8
+- alsa-utils: upgrade 1.2.7 -> 1.2.8
+- apr: update 1.7.0 -> 1.7.2
+- apr-util: update 1.6.1 -> 1.6.3
+- argp-standalone: replace with a maintained fork
+- at-spi2-core: upgrade 2.44.1 -> 2.46.0
+- autoconf-archive: upgrade 2022.09.03 -> 2023.02.20
+- babeltrace: upgrade 1.5.8 -> 1.5.11
+- base-passwd: Update to 3.6.1
+- bash: update 5.1.16 -> 5.2.15
+- bind: upgrade 9.18.7 -> 9.18.12
+- binutils: Upgrade to 2.40 release
+- bluez: update 5.65 -> 5.66
+- boost-build-native: update 1.80.0 -> 1.81.0
+- boost: upgrade 1.80.0 -> 1.81.0
+- btrfs-tools: upgrade 5.19.1 -> 6.1.3
+- busybox: 1.35.0 -> 1.36.0
+- ccache: upgrade 4.6.3 -> 4.7.4
+- cmake: update 3.24.0 -> 3.25.2
+- cracklib: upgrade to v2.9.10
+- curl: upgrade 7.86.0 -> 8.0.1
+- dbus: upgrade 1.14.0 -> 1.14.6
+- diffoscope: upgrade 221 -> 236
+- diffstat: upgrade 1.64 -> 1.65
+- diffutils: update 3.8 -> 3.9
+- dos2unix: upgrade 7.4.3 -> 7.4.4
+- dpkg: update 1.21.9 -> 1.21.21
+- dropbear: upgrade 2022.82 -> 2022.83
+- dtc: upgrade 1.6.1 -> 1.7.0
+- e2fsprogs: upgrade 1.46.5 -> 1.47.0
+- ed: upgrade 1.18 -> 1.19
+- elfutils: update 0.187 -> 0.188
+- ell: upgrade 0.53 -> 0.56
+- enchant2: upgrade 2.3.3 -> 2.3.4
+- encodings: update 1.0.6 -> 1.0.7
+- epiphany: update 42.4 -> 43.1
+- ethtool: upgrade 5.19 -> 6.2
+- expat: upgrade to 2.5.0
+- ffmpeg: upgrade 5.1.1 -> 5.1.2
+- file: upgrade 5.43 -> 5.44
+- flac: update 1.4.0 -> 1.4.2
+- font-alias: update 1.0.4 -> 1.0.5
+- fontconfig: upgrade 2.14.0 -> 2.14.2
+- font-util: upgrade 1.3.3 -> 1.4.0
+- freetype: update 2.12.1 -> 2.13.0
+- gawk: update 5.1.1 -> 5.2.1
+- gcr3: update 3.40.0 -> 3.41.1
+- gcr: rename gcr -> gcr3
+- gdb: Upgrade to 13.1
+- gdk-pixbuf: upgrade 2.42.9 -> 2.42.10
+- gettext: update 0.21 -> 0.21.1
+- ghostscript: update 9.56.1 -> 10.0.0
+- gi-docgen: upgrade 2022.1 -> 2023.1
+- git: upgrade 2.37.3 -> 2.39.2
+- glib-2.0: update 2.72.3 -> 2.74.6
+- glibc: upgrade to 2.37 release + stable updates
+- glib-networking: update 2.72.2 -> 2.74.0
+- glslang: upgrade 1.3.236.0 -> 1.3.239.0
+- gnu-config: upgrade to latest revision
+- gnupg: upgrade 2.3.7 -> 2.4.0
+- gnutls: upgrade 3.7.7 -> 3.8.0
+- gobject-introspection: upgrade 1.72.0 -> 1.74.0
+- go: update 1.19 -> 1.20.1
+- grep: update 3.7 -> 3.10
+- gsettings-desktop-schemas: upgrade 42.0 -> 43.0
+- gstreamer1.0: upgrade 1.20.3 -> 1.22.0
+- gtk+3: upgrade 3.24.34 -> 3.24.36
+- gtk4: update 4.8.2 -> 4.10.0
+- harfbuzz: upgrade 5.1.0 -> 7.1.0
+- hdparm: update 9.64 -> 9.65
+- help2man: upgrade 1.49.2 -> 1.49.3
+- icu: update 71.1 -> 72-1
+- ifupdown: upgrade 0.8.37 -> 0.8.41
+- igt-gpu-tools: upgrade 1.26 -> 1.27.1
+- inetutils: upgrade 2.3 -> 2.4
+- init-system-helpers: upgrade 1.64 -> 1.65.2
+- iproute2: upgrade 5.19.0 -> 6.2.0
+- iptables: update 1.8.8 -> 1.8.9
+- iputils: update to 20221126
+- iso-codes: upgrade 4.11.0 -> 4.13.0
+- jquery: upgrade 3.6.0 -> 3.6.3
+- kexec-tools: upgrade 2.0.25 -> 2.0.26
+- kmscube: upgrade to latest revision
+- libarchive: upgrade 3.6.1 -> 3.6.2
+- libbsd: upgrade 0.11.6 -> 0.11.7
+- libcap: upgrade 2.65 -> 2.67
+- libdnf: update 0.69.0 -> 0.70.0
+- libdrm: upgrade 2.4.113 -> 2.4.115
+- libedit: upgrade 20210910-3.1 -> 20221030-3.1
+- libepoxy: update 1.5.9 -> 1.5.10
+- libffi: upgrade 3.4.2 -> 3.4.4
+- libfontenc: upgrade 1.1.6 -> 1.1.7
+- libgit2: upgrade 1.5.0 -> 1.6.3
+- libgpg-error: update 1.45 -> 1.46
+- libhandy: update 1.6.3 -> 1.8.1
+- libical: upgrade 3.0.14 -> 3.0.16
+- libice: update 1.0.10 -> 1.1.1
+- libidn2: upgrade 2.3.3 -> 2.3.4
+- libinput: upgrade 1.19.4 -> 1.22.1
+- libjpeg-turbo: upgrade 2.1.4 -> 2.1.5.1
+- libksba: upgrade 1.6.0 -> 1.6.3
+- libmicrohttpd: upgrade 0.9.75 -> 0.9.76
+- libmodule-build-perl: update 0.4231 -> 0.4232
+- libmpc: upgrade 1.2.1 -> 1.3.1
+- libnewt: update 0.52.21 -> 0.52.23
+- libnotify: upgrade 0.8.1 -> 0.8.2
+- libpcap: upgrade 1.10.1 -> 1.10.3
+- libpciaccess: update 0.16 -> 0.17
+- libpcre2: upgrade 10.40 -> 10.42
+- libpipeline: upgrade 1.5.6 -> 1.5.7
+- libpng: upgrade 1.6.38 -> 1.6.39
+- libpsl: upgrade 0.21.1 -> 0.21.2
+- librepo: upgrade 1.14.5 -> 1.15.1
+- libsdl2: upgrade 2.24.1 -> 2.26.3
+- libsm: 1.2.3 > 1.2.4
+- libsndfile1: upgrade 1.1.0 -> 1.2.0
+- libsolv: upgrade 0.7.22 -> 0.7.23
+- libsoup-2.4: upgrade 2.74.2 -> 2.74.3
+- libsoup: upgrade 3.0.7 -> 3.2.2
+- libtest-fatal-perl: upgrade 0.016 -> 0.017
+- libtest-needs-perl: upgrade 0.002009 -> 0.002010
+- libunistring: upgrade 1.0 -> 1.1
+- liburcu: upgrade 0.13.2 -> 0.14.0
+- liburi-perl: upgrade 5.08 -> 5.17
+- libva: upgrade 2.15.0 -> 2.16.0
+- libva-utils: upgrade 2.15.0 -> 2.17.1
+- libwebp: upgrade 1.2.4 -> 1.3.0
+- libwpe: upgrade 1.12.3 -> 1.14.1
+- libx11: 1.8.1 -> 1.8.4
+- libx11-compose-data: 1.6.8 -> 1.8.4
+- libxau: upgrade 1.0.10 -> 1.0.11
+- libxcomposite: update 0.4.5 -> 0.4.6
+- libxcrypt-compat: upgrade 4.4.30 -> 4.4.33
+- libxcrypt: upgrade 4.4.28 -> 4.4.30
+- libxdamage: update 1.1.5 -> 1.1.6
+- libxdmcp: update 1.1.3 -> 1.1.4
+- libxext: update 1.3.4 -> 1.3.5
+- libxft: update 2.3.4 -> 2.3.6
+- libxft: upgrade 2.3.6 -> 2.3.7
+- libxinerama: update 1.1.4 -> 1.1.5
+- libxkbcommon: upgrade 1.4.1 -> 1.5.0
+- libxkbfile: update 1.1.0 -> 1.1.1
+- libxkbfile: upgrade 1.1.1 -> 1.1.2
+- libxml2: upgrade 2.9.14 -> 2.10.3
+- libxmu: update 1.1.3 -> 1.1.4
+- libxpm: update 3.5.13 -> 3.5.15
+- libxrandr: update 1.5.2 -> 1.5.3
+- libxrender: update 0.9.10 -> 0.9.11
+- libxres: update 1.2.1 -> 1.2.2
+- libxscrnsaver: update 1.2.3 -> 1.2.4
+- libxshmfence: update 1.3 -> 1.3.2
+- libxslt: upgrade 1.1.35 -> 1.1.37
+- libxtst: update 1.2.3 -> 1.2.4
+- libxv: update 1.0.11 -> 1.0.12
+- libxxf86vm: update 1.1.4 -> 1.1.5
+- lighttpd: upgrade 1.4.66 -> 1.4.69
+- linux-firmware: upgrade 20220913 -> 20230210
+- linux-libc-headers: bump to 6.1
+- linux-yocto/5.15: update genericx86* machines to v5.15.103
+- linux-yocto/5.15: update to v5.15.108
+- linux-yocto/6.1: update to v6.1.25
+- linux-yocto-dev: bump to v6.3
+- linux-yocto-rt/5.15: update to -rt59
+- linux-yocto-rt/6.1: update to -rt7
+- llvm: update 14.0.6 -> 15.0.7
+- log4cplus: upgrade 2.0.8 -> 2.1.0
+- logrotate: upgrade 3.20.1 -> 3.21.0
+- lsof: upgrade 4.95.0 -> 4.98.0
+- ltp: upgrade 20220527 -> 20230127
+- lttng-modules: upgrade 2.13.4 -> 2.13.9
+- lttng-tools: update 2.13.8 -> 2.13.9
+- lttng-ust: upgrade 2.13.4 -> 2.13.5
+- makedepend: upgrade 1.0.6 -> 1.0.8
+- make: update 4.3 -> 4.4.1
+- man-db: update 2.10.2 -> 2.11.2
+- man-pages: upgrade 5.13 -> 6.03
+- matchbox-config-gtk: Update to latest SRCREV
+- matchbox-desktop-2: Update 2.2 -> 2.3
+- matchbox-panel-2: Update 2.11 -> 2.12
+- matchbox-terminal: Update to latest SRCREV
+- matchbox-wm: Update 1.2.2 -> 1.2.3
+- mc: update 4.8.28 -> 4.8.29
+- mesa: update 22.2.0 -> 23.0.0
+- meson: upgrade 0.63.2 -> 1.0.1
+- mmc-utils: upgrade to latest revision
+- mobile-broadband-provider-info: upgrade 20220725 -> 20221107
+- mpfr: upgrade 4.1.0 -> 4.2.0
+- mpg123: upgrade 1.30.2 -> 1.31.2
+- msmtp: upgrade 1.8.22 -> 1.8.23
+- mtd-utils: upgrade 2.1.4 -> 2.1.5
+- mtools: upgrade 4.0.40 -> 4.0.42
+- musl-obstack: Update to 1.2.3
+- musl: Upgrade to latest master
+- nasm: update 2.15.05 -> 2.16.01
+- ncurses: upgrade 6.3+20220423 -> 6.4
+- netbase: upgrade 6.3 -> 6.4
+- newlib: Upgrade 4.2.0 -> 4.3.0
+- nghttp2: upgrade 1.49.0 -> 1.52.0
+- numactl: upgrade 2.0.15 -> 2.0.16
+- opensbi: Upgrade to 1.2 release
+- openssh: upgrade 9.0p1 -> 9.3p1
+- openssl: Upgrade 3.0.5 -> 3.1.0
+- opkg: upgrade to version 0.6.1
+- orc: upgrade 0.4.32 -> 0.4.33
+- ovmf: upgrade edk2-stable202205 -> edk2-stable202211
+- pango: upgrade 1.50.9 -> 1.50.13
+- patchelf: upgrade 0.15.0 -> 0.17.2
+- pciutils: upgrade 3.8.0 -> 3.9.0
+- piglit: upgrade to latest revision
+- pinentry: update 1.2.0 -> 1.2.1
+- pixman: upgrade 0.40.0 -> 0.42.2
+- pkgconf: upgrade 1.9.3 -> 1.9.4
+- popt: update 1.18 -> 1.19
+- powertop: upgrade 2.14 -> 2.15
+- procps: update 3.3.17 -> 4.0.3
+- psmisc: upgrade 23.5 -> 23.6
+- puzzles: upgrade to latest revision
+- python3-alabaster: upgrade 0.7.12 -> 0.7.13
+- python3-attrs: upgrade 22.1.0 -> 22.2.0
+- python3-babel: upgrade 2.10.3 -> 2.12.1
+- python3-bcrypt: upgrade 3.2.2 -> 4.0.1
+- python3-certifi: upgrade 2022.9.14 -> 2022.12.7
+- python3-chardet: upgrade 5.0.0 -> 5.1.0
+- python3-cryptography: upgrade 38.0.3 -> 39.0.4
+- python3-cryptography-vectors: upgrade 37.0.4 -> 39.0.2
+- python3-cython: upgrade 0.29.32 -> 0.29.33
+- python3-dbusmock: update 0.28.4 -> 0.28.7
+- python3-dbus: upgrade 1.2.18 -> 1.3.2
+- python3-dtschema: upgrade 2022.8.3 -> 2023.1
+- python3-flit-core: upgrade 3.7.1 -> 3.8.0
+- python3-gitdb: upgrade 4.0.9 -> 4.0.10
+- python3-git: upgrade 3.1.27 -> 3.1.31
+- python3-hatch-fancy-pypi-readme: upgrade 22.7.0 -> 22.8.0
+- python3-hatchling: upgrade 1.9.0 -> 1.13.0
+- python3-hatch-vcs: upgrade 0.2.0 -> 0.3.0
+- python3-hypothesis: upgrade 6.54.5 -> 6.68.2
+- python3-importlib-metadata: upgrade 4.12.0 -> 6.0.0
+- python3-iniconfig: upgrade 1.1.1 -> 2.0.0
+- python3-installer: update 0.5.1 -> 0.6.0
+- python3-iso8601: upgrade 1.0.2 -> 1.1.0
+- python3-jsonschema: upgrade 4.9.1 -> 4.17.3
+- python3-lxml: upgrade 4.9.1 -> 4.9.2
+- python3-mako: upgrade 1.2.2 -> 1.2.4
+- python3-markupsafe: upgrade 2.1.1 -> 2.1.2
+- python3-more-itertools: upgrade 8.14.0 -> 9.1.0
+- python3-numpy: upgrade 1.23.3 -> 1.24.2
+- python3-packaging: upgrade to 23.0
+- python3-pathspec: upgrade 0.10.1 -> 0.11.0
+- python3-pbr: upgrade 5.10.0 -> 5.11.1
+- python3-pip: upgrade 22.2.2 -> 23.0.1
+- python3-poetry-core: upgrade 1.0.8 -> 1.5.2
+- python3-psutil: upgrade 5.9.2 -> 5.9.4
+- python3-pycairo: upgrade 1.21.0 -> 1.23.0
+- python3-pycryptodome: upgrade 3.15.0 -> 3.17
+- python3-pycryptodomex: upgrade 3.15.0 -> 3.17
+- python3-pygments: upgrade 2.13.0 -> 2.14.0
+- python3-pyopenssl: upgrade 22.0.0 -> 23.0.0
+- python3-pyrsistent: upgrade 0.18.1 -> 0.19.3
+- python3-pytest-subtests: upgrade 0.8.0 -> 0.10.0
+- python3-pytest: upgrade 7.1.3 -> 7.2.2
+- python3-pytz: upgrade 2022.2.1 -> 2022.7.1
+- python3-requests: upgrade 2.28.1 -> 2.28.2
+- python3-scons: upgrade 4.4.0 -> 4.5.2
+- python3-setuptools-rust: upgrade 1.5.1 -> 1.5.2
+- python3-setuptools-scm: upgrade 7.0.5 -> 7.1.0
+- python3-setuptools: upgrade 65.0.2 -> 67.6.0
+- python3-sphinxcontrib-applehelp: update 1.0.2 -> 1.0.4
+- python3-sphinxcontrib-htmlhelp: 2.0.0 -> 2.0.1
+- python3-sphinx-rtd-theme: upgrade 1.0.0 -> 1.2.0
+- python3-sphinx: upgrade 5.1.1 -> 6.1.3
+- python3-subunit: upgrade 1.4.0 -> 1.4.2
+- python3-testtools: upgrade 2.5.0 -> 2.6.0
+- python3-typing-extensions: upgrade 4.3.0 -> 4.5.0
+- python3: update 3.10.6 -> 3.11.2
+- python3-urllib3: upgrade 1.26.12 -> 1.26.15
+- python3-wcwidth: upgrade 0.2.5 -> 0.2.6
+- python3-wheel: upgrade 0.37.1 -> 0.40.0
+- python3-zipp: upgrade 3.8.1 -> 3.15.0
+- qemu: update 7.1.0 -> 7.2.0
+- quota: update 4.06 -> 4.09
+- readline: update 8.1.2 -> 8.2
+- repo: upgrade 2.29.2 -> 2.32
+- rgb: update 1.0.6 -> 1.1.0
+- rng-tools: upgrade 6.15 -> 6.16
+- rsync: update 3.2.5 -> 3.2.7
+- rt-tests: update 2.4 -> 2.5
+- ruby: update 3.1.2 -> 3.2.1
+- rust: update 1.63.0 -> 1.68.1
+- rxvt-unicode: upgrade 9.30 -> 9.31
+- sed: update 4.8 -> 4.9
+- shaderc: upgrade 2022.2 -> 2023.2
+- shadow: update 4.12.1 -> 4.13
+- socat: upgrade 1.7.4.3 -> 1.7.4.4
+- spirv-headers: upgrade 1.3.236.0 -> 1.3.239.0
+- spirv-tools: upgrade 1.3.236.0 -> 1.3.239.0
+- sqlite3: upgrade 3.39.3 -> 3.41.0
+- strace: upgrade 5.19 -> 6.2
+- stress-ng: update 0.14.03 -> 0.15.06
+- sudo: upgrade 1.9.11p3 -> 1.9.13p3
+- swig: update 4.0.2 -> 4.1.1
+- sysstat: upgrade 12.6.0 -> 12.6.2
+- systemd: update 251.4 -> 253.1
+- systemtap: upgrade 4.7 -> 4.8
+- taglib: upgrade 1.12 -> 1.13
+- tcf-agent: Update to current version
+- tcl: update 8.6.11 -> 8.6.13
+- texinfo: update 6.8 -> 7.0.2
+- tiff: update 4.4.0 -> 4.5.0
+- tzdata: update 2022d -> 2023c
+- u-boot: upgrade 2022.07 -> 2023.01
+- unfs: update 0.9.22 -> 0.10.0
+- usbutils: upgrade 014 -> 015
+- util-macros: upgrade 1.19.3 -> 1.20.0
+- vala: upgrade 0.56.3 -> 0.56.4
+- valgrind: update to 3.20.0
+- vim: Upgrade 9.0.0598 -> 9.0.1429
+- virglrenderer: upgrade 0.10.3 -> 0.10.4
+- vte: update 0.68.0 -> 0.72.0
+- vulkan-headers: upgrade 1.3.236.0 -> 1.3.239.0
+- vulkan-loader: upgrade 1.3.236.0 -> 1.3.239.0
+- vulkan-samples: update to latest revision
+- vulkan-tools: upgrade 1.3.236.0 -> 1.3.239.0
+- vulkan: update 1.3.216.0 -> 1.3.236.0
+- wayland-protocols: upgrade 1.26 -> 1.31
+- wayland-utils: update 1.0.0 -> 1.1.0
+- webkitgtk: update 2.36.7 -> 2.38.5
+- weston: update 10.0.2 -> 11.0.1
+- wireless-regdb: upgrade 2022.08.12 -> 2023.02.13
+- wpebackend-fdo: upgrade 1.12.1 -> 1.14.0
+- xcb-util: update 0.4.0 -> 0.4.1
+- xcb-util-keysyms: 0.4.0 -> 0.4.1
+- xcb-util-renderutil: 0.3.9 -> 0.3.10
+- xcb-util-wm: 0.4.1 -> 0.4.2
+- xcb-util-image: 0.4.0 -> 0.4.1
+- xf86-input-mouse: update 1.9.3 -> 1.9.4
+- xf86-input-vmmouse: update 13.1.0 -> 13.2.0
+- xf86-video-vesa: update 2.5.0 -> 2.6.0
+- xf86-video-vmware: update 13.3.0 -> 13.4.0
+- xhost: update 1.0.8 -> 1.0.9
+- xinit: update 1.4.1 -> 1.4.2
+- xkbcomp: update 1.4.5 -> 1.4.6
+- xkeyboard-config: upgrade 2.36 -> 2.38
+- xprop: update 1.2.5 -> 1.2.6
+- xrandr: upgrade 1.5.1 -> 1.5.2
+- xserver-xorg: upgrade 21.1.4 -> 21.1.7
+- xset: update 1.2.4 -> 1.2.5
+- xvinfo: update 1.1.4 -> 1.1.5
+- xwayland: upgrade 22.1.3 -> 22.1.8
+- xz: upgrade 5.2.6 -> 5.4.2
+- zlib: upgrade 1.2.12 -> 1.2.13
+- zstd: upgrade 1.5.2 -> 1.5.4
+
+
+
+
+Contributors to 4.2
+~~~~~~~~~~~~~~~~~~~
+
+Thanks to the following people who contributed to this release:
+
+- Adrian Freihofer
+- Ahmad Fatoum
+- Alejandro Hernandez Samaniego
+- Alexander Kanavin
+- Alexandre Belloni
+- Alexey Smirnov
+- Alexis Lothoré
+- Alex Kiernan
+- Alex Stewart
+- Andrej Valek
+- Andrew Geissler
+- Anton Antonov
+- Antonin Godard
+- Archana Polampalli
+- Armin Kuster
+- Arnout Vandecappelle
+- Arturo Buzarra
+- Atanas Bunchev
+- Benjamin Szőke
+- Benoît Mauduit
+- Bernhard Rosenkränzer
+- Bruce Ashfield
+- Caner Altinbasak
+- Carlos Alberto Lopez Perez
+- Changhyeok Bae
+- Changqing Li
+- Charlie Johnston
+- Chase Qi
+- Chee Yang Lee
+- Chen Qi
+- Chris Elledge
+- Christian Eggers
+- Christoph Lauer
+- Chuck Wolber
+- Ciaran Courtney
+- Claus Stovgaard
+- Clément Péron
+- Daniel Ammann
+- David Bagonyi
+- Denys Dmytriyenko
+- Denys Zagorui
+- Diego Sueiro
+- Dmitry Baryshkov
+- Ed Tanous
+- Enguerrand de Ribaucourt
+- Enrico Jörns
+- Enrico Scholz
+- Etienne Cordonnier
+- Fabio Estevam
+- Fabre Sébastien
+- Fawzi KHABER
+- Federico Pellegrin
+- Frank de Brabander
+- Frederic Martinsons
+- Geoffrey GIRY
+- George Kelly
+- Harald Seiler
+- He Zhe
+- Hitendra Prajapati
+- Jagadeesh Krishnanjanappa
+- James Raphael Tiovalen
+- Jan Kircher
+- Jan Luebbe
+- Jan-Simon Moeller
+- Javier Tia
+- Jeremy Puhlman
+- Jermain Horsman
+- Jialing Zhang
+- Joel Stanley
+- Joe Slater
+- Johan Korsnes
+- Jon Mason
+- Jordan Crouse
+- Jose Quaresma
+- Joshua Watt
+- Justin Bronder
+- Kai Kang
+- Kasper Revsbech
+- Keiya Nobuta
+- Kenfe-Mickael Laventure
+- Kevin Hao
+- Khem Raj
+- Konrad Weihmann
+- Lei Maohui
+- Leon Anavi
+- Liam Beguin
+- Louis Rannou
+- Luca Boccassi
+- Luca Ceresoli
+- Luis Martins
+- Maanya Goenka
+- Marek Vasut
+- Mark Asselstine
+- Mark Hatle
+- Markus Volk
+- Marta Rybczynska
+- Martin Jansa
+- Martin Larsson
+- Mateusz Marciniec
+- Mathieu Dubois-Briand
+- Mauro Queiros
+- Maxim Uvarov
+- Michael Halstead
+- Michael Opdenacker
+- Mike Crowe
+- Mikko Rapeli
+- Ming Liu
+- Mingli Yu
+- Narpat Mali
+- Nathan Rossi
+- Niko Mauno
+- Ola x Nilsson
+- Oliver Lang
+- Ovidiu Panait
+- Pablo Saavedra
+- Patrick Williams
+- Paul Eggleton
+- Paulo Neves
+- Pavel Zhukov
+- Pawel Zalewski
+- Pedro Baptista
+- Peter Bergin
+- Peter Kjellerstedt
+- Peter Marko
+- Petr Kubizňák
+- Petr Vorel
+- pgowda
+- Piotr Łobacz
+- Quentin Schulz
+- Randy MacLeod
+- Ranjitsinh Rathod
+- Ravineet Singh
+- Ravula Adhitya Siddartha
+- Richard Elberger
+- Richard Leitner
+- Richard Purdie
+- Robert Andersson
+- Robert Joslyn
+- Robert Yang
+- Romuald JEANNE
+- Ross Burton
+- Ryan Eatmon
+- Sakib Sajal
+- Sandeep Gundlupet Raju
+- Saul Wold
+- Sean Anderson
+- Sergei Zhmylev
+- Siddharth Doshi
+- Soumya
+- Sudip Mukherjee
+- Sundeep KOKKONDA
+- Teoh Jay Shen
+- Thomas De Schampheleire
+- Thomas Perrot
+- Thomas Roos
+- Tim Orling
+- Tobias Hagelborn
+- Tom Hochstein
+- Trevor Woerner
+- Ulrich Ölmann
+- Vincent Davis Jr
+- Vivek Kumbhar
+- Vyacheslav Yurkov
+- Wang Mingyu
+- Wentao Zhang
+- Xiangyu Chen
+- Xiaotian Wu
+- Yan Xinkuan
+- Yash Shinde
+- Yi Zhao
+- Yoann Congal
+- Yureka Lilian
+- Zang Ruochen
+- Zheng Qiu
+- Zheng Ruoqin
+- Zoltan Boszormenyi
+- 张忠山
+
+
diff --git a/poky/documentation/overview-manual/concepts.rst b/poky/documentation/overview-manual/concepts.rst
index e755114..6db515e 100644
--- a/poky/documentation/overview-manual/concepts.rst
+++ b/poky/documentation/overview-manual/concepts.rst
@@ -638,9 +638,8 @@
    type sub-folder. Given RPM, IPK, or DEB packaging and tarball
    creation, the
    :term:`DEPLOY_DIR_RPM`,
-   :term:`DEPLOY_DIR_IPK`,
-   :term:`DEPLOY_DIR_DEB`, or
-   :term:`DEPLOY_DIR_TAR`,
+   :term:`DEPLOY_DIR_IPK`, or
+   :term:`DEPLOY_DIR_DEB`
    variables are used, respectively.
 
 -  :term:`PACKAGE_ARCH`: Defines
@@ -653,9 +652,8 @@
 (e.g. ``do_package_write_ipk`` for IPK packages). See the
 ":ref:`ref-tasks-package_write_deb`",
 ":ref:`ref-tasks-package_write_ipk`",
-":ref:`ref-tasks-package_write_rpm`",
 and
-":ref:`ref-tasks-package_write_tar`"
+":ref:`ref-tasks-package_write_rpm`"
 sections in the Yocto Project Reference Manual for additional
 information. As an example, consider a scenario where an IPK packaging
 manager is being used and there is package architecture support for both
diff --git a/poky/documentation/poky.yaml.in b/poky/documentation/poky.yaml.in
index 30e1050..1c072c1 100644
--- a/poky/documentation/poky.yaml.in
+++ b/poky/documentation/poky.yaml.in
@@ -39,5 +39,11 @@
 MIN_PYTHON_VERSION : "3.8.0"
 MIN_TAR_VERSION : "1.28"
 MIN_GIT_VERSION : "1.8.3.1"
-MIN_GCC_VERSION : "7.5"
+MIN_GCC_VERSION : "8.0"
 MIN_MAKE_VERSION : "4.0"
+# Disk space (Gbytes) needed to generate qemux86-64 core-image-sato on Ubuntu 22.04 (x86-64), rounded up from 87
+MIN_DISK_SPACE : "90"
+# Disk space (Gbytes) needed to generate qemux86-64 core-image-sato on Ubuntu 22.04 (x86-64) with "rm_work", rounded up from 38
+MIN_DISK_SPACE_RM_WORK : "40"
+# RAM (Gbytes) needed to generate qemux86-64 core-image-sato on Ubuntu 22.04 (x86-64) on a 4 core system
+MIN_RAM : "8"
diff --git a/poky/documentation/ref-manual/classes.rst b/poky/documentation/ref-manual/classes.rst
index e8dec31..0762d1d 100644
--- a/poky/documentation/ref-manual/classes.rst
+++ b/poky/documentation/ref-manual/classes.rst
@@ -137,7 +137,7 @@
 inherits the class. This class contains definitions for standard basic
 tasks such as fetching, unpacking, configuring (empty by default),
 compiling (runs any ``Makefile`` present), installing (empty by default)
-and packaging (empty by default). These classes are often overridden or
+and packaging (empty by default). These tasks are often overridden or
 extended by other classes such as the :ref:`ref-classes-autotools` class or the
 :ref:`ref-classes-package` class.
 
@@ -1192,6 +1192,11 @@
    ``initscripts`` recipe is actually built and thus the
    ``initscripts-functions`` package is made available.
 
+-  ``configure-gettext:`` Checks that if a recipe is building something
+   that uses automake and the automake files contain an ``AM_GNU_GETTEXT``
+   directive, that the recipe also inherits the :ref:`ref-classes-gettext`
+   class to ensure that gettext is available during the build.
+
 -  ``compile-host-path:`` Checks the
    :ref:`ref-tasks-compile` log for indications that
    paths to locations on the build host were used. Using such paths
@@ -1308,11 +1313,39 @@
    ``/usr/libexec``. This check is not performed if the ``libexecdir``
    variable has been set explicitly to ``/usr/libexec``.
 
+-  ``mime:`` Check that if a package contains mime type files (``.xml``
+   files in ``${datadir}/mime/packages``) that the recipe also inherits
+   the :ref:`ref-classes-mime` class in order to ensure that these get
+   properly installed.
+
+-  ``mime-xdg:`` Checks that if a package contains a .desktop file with a
+   'MimeType' key present, that the recipe inherits the
+   :ref:`ref-classes-mime-xdg` class that is required in order for that
+   to be activated.
+
+-  ``missing-update-alternatives:`` Check that if a recipe sets the
+   :term:`ALTERNATIVE` variable that the recipe also inherits
+   :ref:`ref-classes-update-alternatives` such that the alternative will
+   be correctly set up.
+
 -  ``packages-list:`` Checks for the same package being listed
    multiple times through the :term:`PACKAGES` variable
    value. Installing the package in this manner can cause errors during
    packaging.
 
+-  ``patch-fuzz:`` Checks for fuzz in patch files that may allow
+   them to apply incorrectly if the underlying code changes.
+
+-  ``patch-status-core:`` Checks that the Upstream-Status is specified
+   and valid in the headers of patches for recipes in the OE-Core layer.
+
+-  ``patch-status-noncore:`` Checks that the Upstream-Status is specified
+   and valid in the headers of patches for recipes in layers other than
+   OE-Core.
+
+-  ``perllocalpod:`` Checks for ``perllocal.pod`` being erroneously
+   installed and packaged by a recipe.
+
 -  ``perm-config:`` Reports lines in ``fs-perms.txt`` that have an
    invalid format.
 
@@ -1366,12 +1399,20 @@
    options are being passed to the linker commands and your binaries
    have potential security issues.
 
+-  ``shebang-size:`` Check that the shebang line (``#!`` in the first line)
+   in a packaged script is not longer than 128 characters, which can cause
+   an error at runtime depending on the operating system.
+
 -  ``split-strip:`` Reports that splitting or stripping debug symbols
    from binaries has failed.
 
 -  ``staticdev:`` Checks for static library files (``*.a``) in
    non-``staticdev`` packages.
 
+-  ``src-uri-bad:`` Checks that the :term:`SRC_URI` value set by a recipe
+   does not contain a reference to ``${PN}`` (instead of the correct
+   ``${BPN}``) nor refers to unstable Github archive tarballs.
+
 -  ``symlink-to-sysroot:`` Checks for symlinks in packages that point
    into :term:`TMPDIR` on the host. Such symlinks will
    work on the host, but are clearly invalid when running on the target.
@@ -1382,6 +1423,12 @@
    ":doc:`/ref-manual/qa-checks`" for more information regarding runtime performance
    issues.
 
+-  ``unhandled-features-check:`` check that if one of the variables that
+   the :ref:`ref-classes-features_check` class supports (e.g.
+   :term:`REQUIRED_DISTRO_FEATURES`) is set by a recupe, then the recipe
+   also inherits :ref:`ref-classes-features_check` in order for the
+   requirement to actually work.
+
 -  ``unlisted-pkg-lics:`` Checks that all declared licenses applying
    for a package are also declared on the recipe level (i.e. any license
    in ``LICENSE:*`` should appear in :term:`LICENSE`).
@@ -1391,19 +1438,23 @@
    the linker (e.g. ``/lib`` and ``/usr/lib``). While these paths will
    not cause any breakage, they do waste space and are unnecessary.
 
+-  ``usrmerge:`` If ``usrmerge`` is in :term:`DISTRO_FEATURES`, this
+   check will ensure that no package installs files to root (``/bin``,
+   ``/sbin``, ``/lib``, ``/lib64``) directories.
+
 -  ``var-undefined:`` Reports when variables fundamental to packaging
    (i.e. :term:`WORKDIR`,
    :term:`DEPLOY_DIR`, :term:`D`,
    :term:`PN`, and :term:`PKGD`) are undefined
    during :ref:`ref-tasks-package`.
 
--  ``version-going-backwards:`` If Build History is enabled, reports
-   when a package being written out has a lower version than the
-   previously written package under the same name. If you are placing
-   output packages into a feed and upgrading packages on a target system
-   using that feed, the version of a package going backwards can result
-   in the target system not correctly upgrading to the "new" version of
-   the package.
+-  ``version-going-backwards:`` If the :ref:`ref-classes-buildhistory`
+   class is enabled, reports when a package being written out has a lower
+   version than the previously written package under the same name. If
+   you are placing output packages into a feed and upgrading packages on
+   a target system using that feed, the version of a package going
+   backwards can result in the target system not correctly upgrading to
+   the "new" version of the package.
 
    .. note::
 
@@ -2025,13 +2076,7 @@
 output. The core generic functionality is in ``package.bbclass``. The
 code specific to particular package types resides in these
 package-specific classes: :ref:`ref-classes-package_deb`,
-:ref:`ref-classes-package_rpm`, :ref:`ref-classes-package_ipk`, and
-:ref:`ref-classes-package_tar`.
-
-.. note::
-
-   The :ref:`ref-classes-package_tar` class is broken and
-   not supported. It is recommended that you do not use this class.
+:ref:`ref-classes-package_rpm`, :ref:`ref-classes-package_ipk`.
 
 You can control the list of resulting package formats by using the
 :term:`PACKAGE_CLASSES` variable defined in your ``conf/local.conf``
@@ -2121,25 +2166,6 @@
 is enabled through the :term:`PACKAGE_CLASSES`
 variable in the ``local.conf`` file.
 
-.. _ref-classes-package_tar:
-
-``package_tar``
-===============
-
-The :ref:`ref-classes-package_tar` class provides support for creating tarballs. The
-class ensures the packages are written out in a tarball format to the
-``${``\ :term:`DEPLOY_DIR_TAR`\ ``}`` directory.
-
-This class inherits the :ref:`ref-classes-package` class and
-is enabled through the :term:`PACKAGE_CLASSES`
-variable in the ``local.conf`` file.
-
-.. note::
-
-   You cannot specify the :ref:`ref-classes-package_tar` class first using the
-   :term:`PACKAGE_CLASSES` variable. You must use ``.deb``, ``.ipk``, or ``.rpm``
-   file formats for your image or SDK.
-
 .. _ref-classes-packagedata:
 
 ``packagedata``
diff --git a/poky/documentation/ref-manual/qa-checks.rst b/poky/documentation/ref-manual/qa-checks.rst
index 1309681..6fdb0fb 100644
--- a/poky/documentation/ref-manual/qa-checks.rst
+++ b/poky/documentation/ref-manual/qa-checks.rst
@@ -750,6 +750,29 @@
     other things in the patches, those can be discarded.
 
 
+.. _qa-check-patch-status:
+
+- ``Missing Upstream-Status in patch <patchfile> Please add according to <url> [patch-status-core/patch-status-noncore]``
+
+    The Upstream-Status value is missing in the specified patch file's header.
+    This value is intended to track whether or not the patch has been sent
+    upstream, whether or not it has been merged, etc.
+
+    There are two options for this same check - ``patch-status-core`` (for
+    recipes in OE-Core) and ``patch-status-noncore`` (for recipes in any other
+    layer).
+
+    For more information on setting Upstream-Status see:
+    https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines#Patch_Header_Recommendations:_Upstream-Status
+
+
+- ``Malformed Upstream-Status in patch <patchfile> Please correct according to <url> [patch-status-core/patch-status-noncore]``
+
+    The Upstream-Status value in the specified patch file's header is invalid -
+    it must be a specific format. See the "Missing Upstream-Status" entry above
+    for more information.
+
+
 .. _qa-check-buildpaths:
 
 - ``File <filename> in package <packagename> contains reference to TMPDIR [buildpaths]``
diff --git a/poky/documentation/ref-manual/release-process.rst b/poky/documentation/ref-manual/release-process.rst
index fa057e0..170565f 100644
--- a/poky/documentation/ref-manual/release-process.rst
+++ b/poky/documentation/ref-manual/release-process.rst
@@ -18,9 +18,9 @@
 also shown. See the ":ref:`ref-manual/release-process:major release codenames`"
 section for information on codenames used with major releases.
 
-  - 2.2 (Morty) 
-  - 2.1 (Krogoth)
-  - 2.0 (Jethro) 
+  - 4.1 ("Langdale")
+  - 4.0 ("Kirkstone")
+  - 3.4 ("Honister")
 
 While the cadence is never perfect, this timescale facilitates
 regular releases that have strong QA cycles while not overwhelming users
@@ -32,9 +32,9 @@
 fixes or enhancements to the associated major release. Following are
 some example past point releases:
 
-  - 2.1.1
-  - 2.1.2
-  - 2.2.1 
+  - 4.1.3
+  - 4.0.8
+  - 3.4.4
 
 The point release
 indicates a point in the major release branch where a full QA cycle and
@@ -87,22 +87,41 @@
    exception to this policy occurs when there is a strong reason such as
    the fix happens to also be the preferred upstream approach.
 
-Stable release branches have strong maintenance for about a year after
-their initial release. Should significant issues be found for any
-release regardless of its age, fixes could be backported to older
-releases. For issues that are not backported given an older release,
-Community LTS trees and branches allow community members to share
-patches for older releases. However, these types of patches do not go
-through the same release process as do point releases. You can find more
-information about stable branch maintenance at
-:yocto_wiki:`/Stable_branch_maintenance`.
+Long Term Support Releases
+==========================
+
+While stable releases are supported for a duration of seven months,
+some specific ones are now supported for a longer period by the Yocto
+Project, and are called Long Term Support (:term:`LTS`) releases.
+
+This started with version 3.1 ("Dunfell"), released in April 2020, that
+the project committed to supporting until the next :term:`LTS` release was out.
+This next :term:`LTS` release, version 4.0 ("Kirkstone"), was released in May 2022
+and offered with two years of support too.
+
+However, as an experiment, support for "Dunfell" was extended to four years, until
+April 2024, therefore offering more stability to projects and leaving more time
+to upgrade to the latest :term:`LTS` release. The project hasn't made any commitment to
+extending "Kirkstone" support too, as this will also depend on available funding
+for such an effort.
+
+When significant issues are found, :term:`LTS` releases allow to publish
+fixes not only for the current stable release, but also to the
+:term:`LTS` releases that are still supported. Older stable releases which
+have reached their End of Life (EOL) won't receive such updates.
+
+See :yocto_wiki:`/Stable_Release_and_LTS` for details about the management
+of stable and :term:`LTS` releases.
+
+.. image:: svg/releases.*
+   :width: 100%
 
 .. note::
 
    In some circumstances, a layer can be created by the community in order to
-   add a specific feature or support a new version of some package for an LTS
+   add a specific feature or support a new version of some package for an :term:`LTS`
    release.  This is called a "mixin" layer. These are thin and specific
-   purpose layers which can be stacked with an LTS release to "mix" a specific
+   purpose layers which can be stacked with an :term:`LTS` release to "mix" a specific
    feature into that build. These are created on an as-needed basis and
    maintained by the people who need them.
 
@@ -113,7 +132,6 @@
    testing on them. Other "mixin" layers may be released elsewhere by the wider
    community.
 
-
 Testing and Quality Assurance
 =============================
 
@@ -161,25 +179,17 @@
    ``oe-selftest`` can run all tests by default or can run selected
    tests or test suites.
 
-   .. note::
-
-      Running ``oe-selftest`` requires host packages beyond the "Essential"
-      grouping. See the :ref:`ref-manual/system-requirements:required packages for the build host`
-      section for more information.
-
 Originally, much of this testing was done manually. However, significant
 effort has been made to automate the tests so that more people can use
 them and the Yocto Project development team can run them faster and more
 efficiently.
 
-The Yocto Project's main Autobuilder (&YOCTO_AB_URL;)
-publicly tests each Yocto Project release's code in the
-:term:`OpenEmbedded-Core (OE-Core)`, Poky, and BitBake repositories. The testing
-occurs for both the current state of the "master" branch and also for
+The Yocto Project's main Autobuilder (&YOCTO_AB_URL;) publicly tests each Yocto
+Project release's code in the :oe_git:`openembedded-core </openembedded-core>`,
+:yocto_git:`poky </poky>` and :oe_git:`bitbake </bitbake>` repositories. The
+testing occurs for both the current state of the "master" branch and also for
 submitted patches. Testing for submitted patches usually occurs in the
-"ross/mut" branch in the ``poky-contrib`` repository (i.e. the
-master-under-test branch) or in the "master-next" branch in the ``poky``
-repository.
+in the "master-next" branch in the :yocto_git:`poky </poky>` repository.
 
 .. note::
 
diff --git a/poky/documentation/ref-manual/structure.rst b/poky/documentation/ref-manual/structure.rst
index e895382..f1b11ad 100644
--- a/poky/documentation/ref-manual/structure.rst
+++ b/poky/documentation/ref-manual/structure.rst
@@ -750,7 +750,9 @@
 -------------
 
 This directory contains OpenEmbedded Python library code used during the
-build process.
+build process. It is enabled via the ``addpylib`` directive in
+``meta/conf/local.conf``. For more information, see
+:ref:`bitbake-user-manual/bitbake-user-manual-metadata:extending python library code`.
 
 .. _structure-meta-recipes-bsp:
 
diff --git a/poky/documentation/ref-manual/svg/releases.svg b/poky/documentation/ref-manual/svg/releases.svg
new file mode 100644
index 0000000..f260724
--- /dev/null
+++ b/poky/documentation/ref-manual/svg/releases.svg
@@ -0,0 +1,1230 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   version="1.1"
+   id="svg2"
+   width="1175.0006"
+   height="568.85858"
+   viewBox="0 0 1175.0006 568.85856"
+   sodipodi:docname="releases.svg"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <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" />
+      </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"
+       not_jump="false" />
+    <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="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="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="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="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"
+       inkscape:swatch="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>
+    <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>
+    <marker
+       style="overflow:visible"
+       id="Arrow2Mend-4"
+       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-3" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker5285-1"
+       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-7" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker5161-4"
+       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-3" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker5285-1-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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5283-7-6" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker5161-4-9"
+       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-3-4" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker4174-8"
+       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-8" />
+    </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="1846"
+     inkscape:window-height="1016"
+     id="namedview4"
+     showgrid="true"
+     inkscape:zoom="0.72360224"
+     inkscape:cx="889.30073"
+     inkscape:cy="397.31773"
+     inkscape:window-x="1994"
+     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:pagecheckerboard="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid1257"
+       originx="-289.99935"
+       originy="269.99997" />
+  </sodipodi:namedview>
+  <g
+     inkscape:groupmode="layer"
+     inkscape:label="Image"
+     id="g10"
+     transform="translate(-289.99935,270)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 1080,220.00002 V -240 v 0 0"
+       id="path207708" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 1200,220.00002 V -240 v 0 0"
+       id="path207708-4" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 1320,220.00002 V -240 v 0 0"
+       id="path207708-4-3" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 960,220.00002 V -240 v 0 0"
+       id="path207708-9" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 840,220.00001 v -375 0 0"
+       id="path207708-9-6" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 840,220.00002 V -240 v 0 0"
+       id="path207708-9-6-2" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 720,220.00002 V -240 v 0 0"
+       id="path207708-9-6-2-5" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 600,220.00002 V -240 v 0 0"
+       id="path207708-9-6-2-5-9" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 480,220.00002 V -240 v 0 0"
+       id="path207708-9-6-2-5-9-0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 360,220.00002 V -240 v 0 0"
+       id="path207708-9-6-2-5-9-0-5" />
+    <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>
+    <rect
+       style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
+       id="rect917-0-0"
+       width="960.00006"
+       height="45.000004"
+       x="360"
+       y="154.99997"
+       ry="2.2558987" />
+    <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:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="420.52835"
+       y="174.12433"
+       id="text1185-3-55-4"><tspan
+         sodipodi:role="line"
+         x="420.52835"
+         y="174.12433"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan957-2-8">Dunfell (LTS)</tspan><tspan
+         sodipodi:role="line"
+         x="420.52835"
+         y="192.121"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan10317">3.1</tspan></text>
+    <rect
+       style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
+       id="rect917-0-0-4"
+       width="140.00002"
+       height="45.000004"
+       x="480"
+       y="99.999969"
+       ry="2.2558987" />
+    <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:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="534.10651"
+       y="118.94971"
+       id="text1185-3-55-4-0"><tspan
+         sodipodi:role="line"
+         x="534.10651"
+         y="118.94971"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan957-2-8-6">Gatesgarth</tspan><tspan
+         sodipodi:role="line"
+         x="534.10651"
+         y="136.9464"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan10317-2">3.2</tspan></text>
+    <rect
+       style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
+       id="rect917-0-0-4-4"
+       width="140.00002"
+       height="45.000004"
+       x="599.99994"
+       y="45.000011"
+       ry="2.2558987" />
+    <rect
+       style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
+       id="rect917-0-0-4-4-9"
+       width="160.00002"
+       height="45.000004"
+       x="720"
+       y="-9.9999905"
+       ry="2.2558987" />
+    <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:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="766.10297"
+       y="9.57586"
+       id="text1185-3-55-4-0-0"><tspan
+         sodipodi:role="line"
+         x="766.10297"
+         y="9.57586"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan957-2-8-6-3">Honister</tspan><tspan
+         sodipodi:role="line"
+         x="766.10297"
+         y="27.57254"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan10317-2-9">3.4</tspan></text>
+    <rect
+       style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
+       id="rect917-0-0-4-4-9-4"
+       width="140.00002"
+       height="45.000004"
+       x="960"
+       y="-120"
+       ry="2.2558987" />
+    <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:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="1008.4941"
+       y="-100.605"
+       id="text1185-3-55-4-0-0-0"><tspan
+         sodipodi:role="line"
+         x="1008.4941"
+         y="-100.605"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan957-2-8-6-3-9">Langdale</tspan><tspan
+         sodipodi:role="line"
+         x="1008.4941"
+         y="-82.608322"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan10317-2-9-1">4.1</tspan></text>
+    <rect
+       style="opacity:0.75;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
+       id="rect917-0-0-4-4-9-4-5"
+       width="140.00002"
+       height="45.000004"
+       x="1080"
+       y="-174.99998"
+       ry="2.2558987" />
+    <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:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="1134.2344"
+       y="-155.49881"
+       id="text1185-3-55-4-0-0-0-1"><tspan
+         sodipodi:role="line"
+         x="1134.2344"
+         y="-155.49881"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan957-2-8-6-3-9-7">Mickledore</tspan><tspan
+         sodipodi:role="line"
+         x="1134.2344"
+         y="-137.50214"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan10317-2-9-1-4">4.2</tspan></text>
+    <rect
+       style="opacity:0.75;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
+       id="rect917-0-0-4-4-9-4-5-3"
+       width="140.00014"
+       height="45.000004"
+       x="1199.9999"
+       y="-229.99998"
+       ry="2.2558987" />
+    <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:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="1247.2329"
+       y="-210.32925"
+       id="text1185-3-55-4-0-0-0-1-1"><tspan
+         sodipodi:role="line"
+         x="1247.2329"
+         y="-210.32925"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan957-2-8-6-3-9-7-4">Nanbield</tspan><tspan
+         sodipodi:role="line"
+         x="1247.2329"
+         y="-192.33258"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan10317-2-9-1-4-6">4.3</tspan></text>
+    <rect
+       style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
+       id="rect917-0-0-4-4-9-9"
+       width="480.00006"
+       height="45.000004"
+       x="860"
+       y="-64.999992"
+       ry="2.2558987" />
+    <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:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="928.49872"
+       y="-45.648258"
+       id="text1185-3-55-4-0-0-9"><tspan
+         sodipodi:role="line"
+         x="928.49872"
+         y="-45.648258"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan957-2-8-6-3-6">Kirkstone (LTS)</tspan><tspan
+         sodipodi:role="line"
+         x="928.49872"
+         y="-27.651579"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan10317-2-9-0">4.0</tspan></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:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="650.42737"
+       y="64.633629"
+       id="text1185-3-55-4-0-0-7"><tspan
+         sodipodi:role="line"
+         x="650.42737"
+         y="64.633629"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan957-2-8-6-3-2">Hardknott</tspan><tspan
+         sodipodi:role="line"
+         x="650.42737"
+         y="82.63031"
+         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;fill:#fffefe;fill-opacity:1;stroke:none"
+         id="tspan10317-2-9-8">3.3</tspan></text>
+    <g
+       id="g1125-0"
+       transform="matrix(0.42240595,0,0,0.41654472,354.16682,-355.15199)"
+       style="stroke:none;stroke-width:2.38399">
+      <rect
+         style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.76797;stroke-opacity:1"
+         id="rect1061-9"
+         width="452.00439"
+         height="192.0562"
+         x="11.609296"
+         y="276.44562"
+         ry="4.0176301" />
+      <g
+         id="g1109-1"
+         transform="translate(-2.7615661,-1.7576335)"
+         style="stroke:none;stroke-width:2.38399">
+        <path
+           id="path14-9"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path16-6"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path18-2"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path20-5"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path22-4"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path24-4"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path26-9"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path28-9"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path30-3"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path32-6"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path34-0"
+           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.238399;stroke-opacity:1" />
+        <path
+           id="path36-5"
+           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.238399;stroke-opacity:1" />
+      </g>
+    </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="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="1199.6055"
+       y="250.21216"
+       id="text1185-9-7-1-1"><tspan
+         sodipodi:role="line"
+         x="1199.6055"
+         y="250.21216"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan31345">Oct.</tspan><tspan
+         sodipodi:role="line"
+         x="1199.6055"
+         y="268.20883"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan49906">2023</tspan></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="962.71832"
+       y="250.21216"
+       id="text1185-9-7-1-1-0"><tspan
+         sodipodi:role="line"
+         x="962.71832"
+         y="250.21216"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan31345-42">Oct.</tspan><tspan
+         sodipodi:role="line"
+         x="962.71832"
+         y="268.20883"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan49906-9">2022</tspan></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="721.13617"
+       y="250.21216"
+       id="text1185-9-7-1-1-2"><tspan
+         sodipodi:role="line"
+         x="721.13617"
+         y="250.21216"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan31345-1">Oct.</tspan><tspan
+         sodipodi:role="line"
+         x="721.13617"
+         y="268.20883"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan49906-5">2021</tspan></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="485.04486"
+       y="250.21216"
+       id="text1185-9-7-1-1-80"><tspan
+         sodipodi:role="line"
+         x="485.04486"
+         y="250.21216"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan31345-5">Oct.</tspan><tspan
+         sodipodi:role="line"
+         x="485.04486"
+         y="268.20883"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan49906-6">2020</tspan></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="360.96921"
+       y="250.07544"
+       id="text1185-9-7-1-1-8"><tspan
+         sodipodi:role="line"
+         x="360.96921"
+         y="250.07544"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan31345-4">Apr.</tspan><tspan
+         sodipodi:role="line"
+         x="360.96921"
+         y="268.07211"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan49906-7">2020</tspan></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="840.9248"
+       y="250.07544"
+       id="text1185-9-7-1-1-8-1"><tspan
+         sodipodi:role="line"
+         x="840.9248"
+         y="250.07544"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan31345-4-0">Apr</tspan><tspan
+         sodipodi:role="line"
+         x="840.9248"
+         y="268.07211"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan49906-7-3">2022</tspan></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="1317.4003"
+       y="250.07544"
+       id="text1185-9-7-1-1-8-1-0"><tspan
+         sodipodi:role="line"
+         x="1317.4003"
+         y="250.07544"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan31345-4-0-4">Apr.</tspan><tspan
+         sodipodi:role="line"
+         x="1317.4003"
+         y="268.07211"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan49906-7-3-8">2024</tspan></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="1081.4458"
+       y="250.07544"
+       id="text1185-9-7-1-1-8-1-0-2"><tspan
+         sodipodi:role="line"
+         x="1081.4458"
+         y="250.07544"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan31345-4-0-4-8">Apr.</tspan><tspan
+         sodipodi:role="line"
+         x="1081.4458"
+         y="268.07211"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan49906-7-3-8-3">2023</tspan></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="604.18005"
+       y="250.07544"
+       id="text1185-9-7-1-1-8-1-7"><tspan
+         sodipodi:role="line"
+         x="604.18005"
+         y="250.07544"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan31345-4-0-5">Apr.</tspan><tspan
+         sodipodi:role="line"
+         x="604.18005"
+         y="268.07211"
+         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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
+         id="tspan49906-7-3-6">2021</tspan></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="-16.290483"
+       y="345.7359"
+       id="text3116"><tspan
+         sodipodi:role="line"
+         id="tspan3114"
+         x="-16.290483"
+         y="345.7359" /></text>
+    <path
+       id="path29430"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 319.99935,219.99912 H 1435 Z" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 360,219.99997 v 10.00004 0"
+       id="path29548" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 480,219.99996 v 10 0"
+       id="path29548-5" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 600,219.99992 v 10.00005 0"
+       id="path29548-5-1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 720,220.00002 v 9.99999 0"
+       id="path29548-5-1-3" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 840,220.00002 v 9.99995 0"
+       id="path29548-5-1-3-6" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 960,220.00002 v 9.99999 0"
+       id="path29548-5-1-3-6-3" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1080,220.00002 v 9.99999 0"
+       id="path29548-5-1-3-6-3-1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 380,219.99997 v 5.00004 0"
+       id="path29548-8"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 400,219.99997 v 5.00004 0"
+       id="path29548-8-5"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 420,219.99997 v 5 0"
+       id="path29548-8-5-0"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282155" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 440,219.99997 v 5 0"
+       id="path29548-8-5-0-6"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282155" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 460,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 500,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 520,219.99997 v 5 0"
+       id="path29548-8-5-0-6-4-6-2-9"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282155" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 540,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 560,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 580,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 620.266,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 640,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 660,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 679.61073,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 700,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 740,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 760,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 780.36587,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 800,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 820,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 860,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 880,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 899.72384,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 920,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 940,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 980,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1000,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1020,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1040,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1059.7216,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9"
+       inkscape:transform-center-x="-14.78205"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1100,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1120,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1140,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1160,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1179.7216,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7"
+       inkscape:transform-center-x="-14.78205"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1200,220.00002 v 9.99999 0"
+       id="path29548-5-1-3-6-3-1-0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1320,219.99996 v 10 0"
+       id="path29548-5-1-3-6-3-1-0-8" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1220,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1240,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1260,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1280,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1299.7216,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0"
+       inkscape:transform-center-x="-14.78205"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1340,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-3"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1360,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-0"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1380,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-3"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1400,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-0"
+       inkscape:transform-center-x="14.782001"
+       inkscape:transform-center-y="-0.085282837" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1419.7216,219.99997 v 5.00004 0"
+       id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-9"
+       inkscape:transform-center-x="-14.78205"
+       inkscape:transform-center-y="-0.085282837" />
+  </g>
+  <style
+     type="text/css"
+     id="style1021"> .st0{fill:#4A97D2;} .st1{fill:#333333;} </style>
+</svg>
diff --git a/poky/documentation/ref-manual/system-requirements.rst b/poky/documentation/ref-manual/system-requirements.rst
index 0fbe3f1..fd4a8af 100644
--- a/poky/documentation/ref-manual/system-requirements.rst
+++ b/poky/documentation/ref-manual/system-requirements.rst
@@ -29,7 +29,26 @@
    For more information about the Yocto Project Documentation set, see
    the :ref:`ref-manual/resources:links and related documentation` section.
 
-.. _detailed-supported-distros:
+Minimum Free Disk Space
+=======================
+
+To build an image such as ``core-image-sato`` for the ``qemux86-64`` machine,
+you need a system with at least &MIN_DISK_SPACE; Gbytes of free disk space.
+However, much more disk space will be necessary to build more complex images,
+to run multiple builds and to cache build artifacts, improving build efficiency.
+
+If you have a shortage of disk space, see the ":doc:`/dev-manual/disk-space`"
+section of the Development Tasks Manual.
+
+Minimum System RAM
+==================
+
+You will manage to build an image such as ``core-image-sato`` for the
+``qemux86-64`` machine with as little as &MIN_RAM; Gbytes of RAM on an old
+system with 4 CPU cores, but your builds will be much faster on a system with
+as much RAM and as many CPU cores as possible.
+
+.. _system-requirements-supported-distros:
 
 Supported Linux Distributions
 =============================
diff --git a/poky/documentation/ref-manual/tasks.rst b/poky/documentation/ref-manual/tasks.rst
index f2b9318..0db960b 100644
--- a/poky/documentation/ref-manual/tasks.rst
+++ b/poky/documentation/ref-manual/tasks.rst
@@ -260,17 +260,6 @@
 ":ref:`overview-manual/concepts:package feeds`" section in
 the Yocto Project Overview and Concepts Manual.
 
-.. _ref-tasks-package_write_tar:
-
-``do_package_write_tar``
-------------------------
-
-Creates tarballs and places them in the
-``${``\ :term:`DEPLOY_DIR_TAR`\ ``}`` directory in
-the package feeds area. For more information, see the
-":ref:`overview-manual/concepts:package feeds`" section in
-the Yocto Project Overview and Concepts Manual.
-
 .. _ref-tasks-packagedata:
 
 ``do_packagedata``
diff --git a/poky/documentation/ref-manual/terms.rst b/poky/documentation/ref-manual/terms.rst
index ec447d3..68313d0 100644
--- a/poky/documentation/ref-manual/terms.rst
+++ b/poky/documentation/ref-manual/terms.rst
@@ -123,6 +123,10 @@
       tools, such as a required version of the GCC compiler to run the
       OpenEmbedded build system.
 
+      See the ":ref:`system-requirements-buildtools`" paragraph in the
+      Reference Manual for details about downloading or building an archive
+      of such tools.
+
    :term:`buildtools-make`
       A variant of :term:`buildtools`, just providing the required
       version of ``make`` to run the OpenEmbedded build system.
@@ -208,6 +212,48 @@
       of the supported image types that the Yocto Project provides, see the
       ":ref:`ref-manual/images:Images`" chapter.
 
+   :term:`Initramfs`
+      An Initial RAM Filesystem (:term:`Initramfs`) is an optionally compressed
+      :wikipedia:`cpio <Cpio>` archive which is extracted
+      by the Linux kernel into RAM in a special :wikipedia:`tmpfs <Tmpfs>`
+      instance, used as the initial root filesystem.
+
+      This is a replacement for the legacy init RAM disk ("initrd")
+      technique, booting on an emulated block device in RAM, but being less
+      efficient because of the overhead of going through a filesystem and
+      having to duplicate accessed file contents in the file cache in RAM,
+      as for any block device.
+
+      .. note:
+
+         As far as bootloaders are concerned, :term:`Initramfs` and "initrd"
+         images are still copied to RAM in the same way. That's why most
+	 most bootloaders refer to :term:`Initramfs` images as "initrd"
+	 or "init RAM disk".
+
+      This kind of mechanism is typically used for two reasons:
+
+      -  For booting the same kernel binary on multiple systems requiring
+         different device drivers. The :term:`Initramfs` image is then customized
+	 for each type of system, to include the specific  kernel modules
+         necessary to access the final root filesystem. This technique
+	 is used on all GNU / Linux distributions for desktops and servers.
+
+      -  For booting faster. As the root filesystem is extracted into RAM,
+         accessing the first user-space applications is very fast, compared
+         to having to initialize a block device, to access multiple blocks
+         from it, and to go through a filesystem having its own overhead.
+         For example, this allows to display a splashscreen very early,
+	 and to later take care of mounting the final root filesystem and
+         loading less time-critical kernel drivers.
+
+      This cpio archive can either be loaded to RAM by the bootloader,
+      or be included in the kernel binary.
+
+      For information on creating and using an :term:`Initramfs`, see the
+      ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`"
+      section in the Yocto Project Development Tasks Manual.
+
    :term:`Layer`
       A collection of related recipes. Layers allow you to consolidate related
       metadata to customize your build. Layers also isolate information used
@@ -227,6 +273,12 @@
       Layers`" section in the Yocto Project Board Support Packages (BSP)
       Developer's Guide.
 
+   :term:`LTS`
+      This term means "Long Term Support", and in the context of the Yocto
+      Project, it corresponds to selected stable releases for which bug and
+      security fixes are provided for at least two years. See
+      ":doc:`/ref-manual/release-process`" for details.
+
    :term:`Metadata`
       A key element of the Yocto Project is the Metadata that
       is used to construct a Linux distribution and is contained in the
diff --git a/poky/documentation/ref-manual/variables.rst b/poky/documentation/ref-manual/variables.rst
index c787a17..fd8579a 100644
--- a/poky/documentation/ref-manual/variables.rst
+++ b/poky/documentation/ref-manual/variables.rst
@@ -354,6 +354,9 @@
    :term:`BB_BASEHASH_IGNORE_VARS`
       See :term:`bitbake:BB_BASEHASH_IGNORE_VARS` in the BitBake manual.
 
+   :term:`BB_CACHEDIR`
+      See :term:`bitbake:BB_CACHEDIR` in the BitBake manual.
+
    :term:`BB_CHECK_SSL_CERTS`
       See :term:`bitbake:BB_CHECK_SSL_CERTS` in the BitBake manual.
 
@@ -1986,25 +1989,6 @@
       ":ref:`overview-manual/concepts:package feeds`" section
       in the Yocto Project Overview and Concepts Manual.
 
-   :term:`DEPLOY_DIR_TAR`
-      Points to the area that the OpenEmbedded build system uses to place
-      tarballs that are ready to be used outside of the build system. This
-      variable applies only when :term:`PACKAGE_CLASSES` contains
-      ":ref:`ref-classes-package_tar`".
-
-      The BitBake configuration file initially defines this variable as a
-      sub-folder of :term:`DEPLOY_DIR`::
-
-         DEPLOY_DIR_TAR = "${DEPLOY_DIR}/tar"
-
-      The :ref:`ref-classes-package_tar` class uses the
-      :term:`DEPLOY_DIR_TAR` variable to make sure the
-      :ref:`ref-tasks-package_write_tar` task
-      writes TAR packages into the appropriate folder. For more information
-      on how packaging works, see the
-      ":ref:`overview-manual/concepts:package feeds`" section
-      in the Yocto Project Overview and Concepts Manual.
-
    :term:`DEPLOYDIR`
       When inheriting the :ref:`ref-classes-deploy` class, the
       :term:`DEPLOYDIR` points to a temporary work area for deployed files that
@@ -2914,6 +2898,10 @@
       For guidance on how to create your own file permissions settings
       table file, examine the existing ``fs-perms.txt``.
 
+   :term:`FIT_CONF_DEFAULT_DTB`
+      Specifies the default device tree binary (dtb) file for a fitImage when
+      multiple are provided.
+
    :term:`FIT_DESC`
       Specifies the description string encoded into a fitImage. The default
       value is set by the :ref:`ref-classes-kernel-fitimage`
@@ -3583,11 +3571,34 @@
    :term:`IMAGE_LINK_NAME`
       The name of the output image symlink (which does not include
       the version part as :term:`IMAGE_NAME` does). The default value
-      is derived using the :term:`IMAGE_BASENAME` and :term:`MACHINE`
-      variables::
+      is derived using the :term:`IMAGE_BASENAME` and
+      :term:`IMAGE_MACHINE_SUFFIX` variables::
 
-         IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}-${MACHINE}"
+         IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}"
 
+      .. note::
+
+         It is possible to set this to "" to disable symlink creation,
+         however, you also need to set :term:`IMAGE_NAME` to still have
+         a reasonable value e.g.::
+
+            IMAGE_LINK_NAME = ""
+            IMAGE_NAME = "${IMAGE_BASENAME}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
+
+   :term:`IMAGE_MACHINE_SUFFIX`
+      Specifies the by default machine-specific suffix for image file names
+      (before the extension). The default value is set as follows::
+
+         IMAGE_MACHINE_SUFFIX ??= "-${MACHINE}"
+
+      The default :term:`DEPLOY_DIR_IMAGE` already has a :term:`MACHINE`
+      subdirectory, so you may find it unnecessary to also include this suffix
+      in the name of every image file. If you prefer to remove the suffix you
+      can set this variable to an empty string::
+
+         IMAGE_MACHINE_SUFFIX = ""
+
+      (Not to be confused with :term:`IMAGE_NAME_SUFFIX`.)
 
    :term:`IMAGE_MANIFEST`
       The manifest file for the image. This file lists all the installed
@@ -3608,12 +3619,11 @@
       section in the Yocto Project Overview and Concepts Manual.
 
    :term:`IMAGE_NAME`
-      The name of the output image files minus the extension. This variable
-      is derived using the :term:`IMAGE_BASENAME`,
-      :term:`MACHINE`, and :term:`IMAGE_VERSION_SUFFIX`
-      variables::
+      The name of the output image files minus the extension. By default
+      this variable is set using the :term:`IMAGE_LINK_NAME`, and
+      :term:`IMAGE_VERSION_SUFFIX` variables::
 
-         IMAGE_NAME ?= "${IMAGE_BASENAME}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+         IMAGE_NAME ?= "${IMAGE_LINK_NAME}${IMAGE_VERSION_SUFFIX}"
 
    :term:`IMAGE_NAME_SUFFIX`
       Suffix used for the image output filename --- defaults to ``".rootfs"``
@@ -3654,12 +3664,7 @@
       Defines the package type (i.e. DEB, RPM, IPK, or TAR) used by the
       OpenEmbedded build system. The variable is defined appropriately by
       the :ref:`ref-classes-package_deb`, :ref:`ref-classes-package_rpm`,
-      :ref:`ref-classes-package_ipk`, or :ref:`ref-classes-package_tar` class.
-
-      .. note::
-
-         The ``package_tar`` class is broken and is not supported. It is
-         recommended that you do not use it.
+      or :ref:`ref-classes-package_ipk` class.
 
       The :ref:`ref-classes-populate-sdk-*` and :ref:`ref-classes-image`
       classes use the :term:`IMAGE_PKGTYPE` for packaging up images and SDKs.
@@ -3837,43 +3842,6 @@
       files to be deployed into :term:`IMGDEPLOYDIR`, and the class will take
       care of copying them into :term:`DEPLOY_DIR_IMAGE` afterwards.
 
-   :term:`INC_PR`
-      Helps define the recipe revision for recipes that share a common
-      ``include`` file. You can think of this variable as part of the
-      recipe revision as set from within an include file.
-
-      Suppose, for example, you have a set of recipes that are used across
-      several projects. And, within each of those recipes the revision (its
-      :term:`PR` value) is set accordingly. In this case, when
-      the revision of those recipes changes, the burden is on you to find
-      all those recipes and be sure that they get changed to reflect the
-      updated version of the recipe. In this scenario, it can get
-      complicated when recipes that are used in many places and provide
-      common functionality are upgraded to a new revision.
-
-      A more efficient way of dealing with this situation is to set the
-      :term:`INC_PR` variable inside the ``include`` files that the recipes
-      share and then expand the :term:`INC_PR` variable within the recipes to
-      help define the recipe revision.
-
-      The following provides an example that shows how to use the
-      :term:`INC_PR` variable given a common ``include`` file that defines the
-      variable. Once the variable is defined in the ``include`` file, you
-      can use the variable to set the :term:`PR` values in each recipe. You
-      will notice that when you set a recipe's :term:`PR` you can provide more
-      granular revisioning by appending values to the :term:`INC_PR` variable::
-
-         recipes-graphics/xorg-font/xorg-font-common.inc:INC_PR = "r2"
-         recipes-graphics/xorg-font/encodings_1.0.4.bb:PR = "${INC_PR}.1"
-         recipes-graphics/xorg-font/font-util_1.3.0.bb:PR = "${INC_PR}.0"
-         recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
-
-      The
-      first line of the example establishes the baseline revision to be
-      used for all recipes that use the ``include`` file. The remaining
-      lines in the example are from individual recipes and show how the
-      :term:`PR` value is set.
-
    :term:`INCOMPATIBLE_LICENSE`
       Specifies a space-separated list of license names (as they would
       appear in :term:`LICENSE`) that should be excluded
@@ -3988,46 +3956,19 @@
          even if the toolchain's binaries are strippable, there are other files
          needed for the build that are not strippable.
 
-   :term:`Initramfs`
-      An Initial RAM Filesystem (:term:`Initramfs`) is an optionally compressed
-      :wikipedia:`cpio <Cpio>` archive which is extracted
-      by the Linux kernel into RAM in a special :wikipedia:`tmpfs <Tmpfs>`
-      instance, used as the initial root filesystem.
+   :term:`INIT_MANAGER`
+      Specifies the system init manager to use. Available options are:
 
-      This is a replacement for the legacy init RAM disk ("initrd")
-      technique, booting on an emulated block device in RAM, but being less
-      efficient because of the overhead of going through a filesystem and
-      having to duplicate accessed file contents in the file cache in RAM,
-      as for any block device.
+      -  ``sysvinit`` - System V init (default for poky)
+      -  ``systemd`` - systemd
+      -  ``mdev-busybox`` - mdev provided by busybox
+      -  ``none`` - no init manager
 
-      .. note:
-
-         As far as bootloaders are concerned, :term:`Initramfs` and "initrd"
-         images are still copied to RAM in the same way. That's why most
-	 most bootloaders refer to :term:`Initramfs` images as "initrd"
-	 or "init RAM disk".
-
-      This kind of mechanism is typically used for two reasons:
-
-      -  For booting the same kernel binary on multiple systems requiring
-         different device drivers. The :term:`Initramfs` image is then customized
-	 for each type of system, to include the specific  kernel modules
-         necessary to access the final root filesystem. This technique
-	 is used on all GNU / Linux distributions for desktops and servers.
-
-      -  For booting faster. As the root filesystem is extracted into RAM,
-         accessing the first user-space applications is very fast, compared
-         to having to initialize a block device, to access multiple blocks
-         from it, and to go through a filesystem having its own overhead.
-         For example, this allows to display a splashscreen very early,
-	 and to later take care of mounting the final root filesystem and
-         loading less time-critical kernel drivers.
-
-      This cpio archive can either be loaded to RAM by the bootloader,
-      or be included in the kernel binary.
-
-      For information on creating and using an :term:`Initramfs`, see the
-      ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`"
+      More concretely, this is used to include
+      ``conf/distro/include/init-manager-${INIT_MANAGER}.inc`` into the global
+      configuration. You can have a look at the ``conf/distro/include/init-manager-*.inc``
+      files for more information, and also the
+      ":ref:`dev-manual/init-manager:selecting an initialization manager`"
       section in the Yocto Project Development Tasks Manual.
 
    :term:`INITRAMFS_DEPLOY_DIR_IMAGE`
@@ -4140,6 +4081,19 @@
       :term:`Initramfs`, see the ":ref:`dev-manual/building:building an initial ram filesystem (Initramfs) image`" section
       in the Yocto Project Development Tasks Manual.
 
+   :term:`INITRAMFS_IMAGE_NAME`
+
+      This value needs to stay in sync with :term:`IMAGE_LINK_NAME`, but with
+      :term:`INITRAMFS_IMAGE` instead of :term:`IMAGE_BASENAME`. The default value
+      is set as follows:
+
+         INITRAMFS_IMAGE_NAME ?= "${@['${INITRAMFS_IMAGE}${IMAGE_MACHINE_SUFFIX}', ''][d.getVar('INITRAMFS_IMAGE') == '']}"
+
+      That is, if :term:`INITRAMFS_IMAGE` is set, the value of
+      :term:`INITRAMFS_IMAGE_NAME` will be set based upon
+      :term:`INITRAMFS_IMAGE` and :term:`IMAGE_MACHINE_SUFFIX`.
+
+
    :term:`INITRAMFS_LINK_NAME`
       The link name of the initial RAM filesystem image. This variable is
       set in the ``meta/classes-recipe/kernel-artifact-names.bbclass`` file as
@@ -4174,10 +4128,7 @@
 
          INITRAMFS_NAME ?= "initramfs-${KERNEL_ARTIFACT_NAME}"
 
-      The value of the :term:`KERNEL_ARTIFACT_NAME`
-      variable, which is set in the same file, has the following value::
-
-         KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
 
    :term:`INITRD`
       Indicates list of filesystem images to concatenate and use as an
@@ -4381,9 +4332,9 @@
       ``meta/classes-recipe/kernel-artifact-names.bbclass`` file, has the
       following default value::
 
-         KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+         KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}${IMAGE_MACHINE_SUFFIX}${IMAGE_VERSION_SUFFIX}"
 
-      See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`MACHINE`
+      See the :term:`PKGE`, :term:`PKGV`, :term:`PKGR`, :term:`IMAGE_MACHINE_SUFFIX`
       and :term:`IMAGE_VERSION_SUFFIX` variables for additional information.
 
    :term:`KERNEL_CLASSES`
@@ -4441,10 +4392,7 @@
 
          KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}"
 
-      The value of the :term:`KERNEL_ARTIFACT_NAME`
-      variable, which is set in the same file, has the following value::
-
-         KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
 
    :term:`KERNEL_DTC_FLAGS`
       Specifies the ``dtc`` flags that are passed to the Linux kernel build
@@ -4507,10 +4455,7 @@
 
          KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}"
 
-      The value of the :term:`KERNEL_ARTIFACT_NAME`
-      variable, which is set in the same file, has the following value::
-
-         KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
 
    :term:`KERNEL_IMAGE_LINK_NAME`
       The link name for the kernel image. This variable is set in the
@@ -4546,11 +4491,7 @@
 
          KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}"
 
-      The value of the
-      :term:`KERNEL_ARTIFACT_NAME` variable,
-      which is set in the same file, has the following value::
-
-         KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
 
    :term:`KERNEL_IMAGETYPE`
       The type of kernel to build for a device, usually set by the machine
@@ -5299,10 +5240,7 @@
 
          MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}"
 
-      The value of the :term:`KERNEL_ARTIFACT_NAME` variable,
-      which is set in the same file, has the following value::
-
-         KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
+      See :term:`KERNEL_ARTIFACT_NAME` for additional information.
 
    :term:`MOUNT_BASE`
       On non-systemd systems (where ``udev-extraconf`` is being used),
@@ -5678,14 +5616,7 @@
       You can provide one or more of the following arguments for the
       variable::
 
-         PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk package_tar"
-
-      .. note::
-
-         While it is a legal option, the :ref:`ref-classes-package_tar`
-         class has limited functionality due to no support for package
-         dependencies by that backend. Therefore, it is recommended that
-         you do not use it.
+         PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
 
       The build system uses only the first argument in the list as the
       package manager when creating your image or SDK. However, packages
@@ -7040,6 +6971,11 @@
 
          RSUGGESTS:${PN} = "useful_package another_package"
 
+   :term:`RUST_CHANNEL`
+      Specifies which version of Rust to build - "stable", "beta" or "nightly".
+      The default value is "stable". Set this at your own risk, as values other
+      than "stable" are not guaranteed to work at a given time.
+
    :term:`S`
       The location in the :term:`Build Directory` where
       unpacked recipe source code resides. By default, this directory is
@@ -7090,6 +7026,14 @@
       The target architecture for the SDK. Typically, you do not directly
       set this variable. Instead, use :term:`SDKMACHINE`.
 
+   :term:`SDK_ARCHIVE_TYPE`
+      Specifies the type of archive to create for the SDK. Valid values:
+
+      - ``tar.xz`` (default)
+      - ``zip``
+
+      Only one archive type can be specified.
+
    :term:`SDK_BUILDINFO_FILE`
       When using the :ref:`ref-classes-image-buildinfo` class,
       specifies the file in the SDK to write the build information into. The
@@ -7318,6 +7262,11 @@
       :term:`DISTRO_VERSION` and
       :term:`METADATA_REVISION` variables.
 
+   :term:`SDK_ZIP_OPTIONS`
+      Specifies extra options to pass to the ``zip`` command when zipping the SDK
+      (i.e. when :term:`SDK_ARCHIVE_TYPE` is set to "zip"). The default value is
+      "-y".
+
    :term:`SDKEXTPATH`
       The default installation directory for the Extensible SDK. By
       default, this directory is based on the :term:`DISTRO`
diff --git a/poky/meta-poky/conf/distro/poky.conf b/poky/meta-poky/conf/distro/poky.conf
index efc795e..c92ef2a 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 = "4.1+snapshot-${METADATA_REVISION}"
+DISTRO_VERSION = "4.2"
 DISTRO_CODENAME = "mickledore"
 SDK_VENDOR = "-pokysdk"
 SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
@@ -33,8 +33,8 @@
 PACKAGE_CLASSES ?= "package_rpm"
 
 SANITY_TESTED_DISTROS ?= " \
-            poky-4.0 \n \
             poky-4.1 \n \
+            poky-4.2 \n \
             ubuntu-18.04 \n \
             ubuntu-20.04 \n \
             ubuntu-22.04 \n \
diff --git a/poky/meta-selftest/recipes-extended/zvariant/zvariant-crates.inc b/poky/meta-selftest/recipes-extended/zvariant/zvariant-crates.inc
new file mode 100644
index 0000000..3a9759c
--- /dev/null
+++ b/poky/meta-selftest/recipes-extended/zvariant/zvariant-crates.inc
@@ -0,0 +1,258 @@
+# Autogenerated with 'bitbake -c update_crates zvariant'
+
+# from Cargo.lock
+SRC_URI += " \
+    crate://crates.io/anes/0.1.6;name=anes-0.1.6 \
+    crate://crates.io/anyhow/1.0.70;name=anyhow-1.0.70 \
+    crate://crates.io/arrayvec/0.7.2;name=arrayvec-0.7.2 \
+    crate://crates.io/atty/0.2.14;name=atty-0.2.14 \
+    crate://crates.io/autocfg/1.1.0;name=autocfg-1.1.0 \
+    crate://crates.io/bitflags/1.3.2;name=bitflags-1.3.2 \
+    crate://crates.io/bumpalo/3.12.0;name=bumpalo-3.12.0 \
+    crate://crates.io/byteorder/1.4.3;name=byteorder-1.4.3 \
+    crate://crates.io/cast/0.3.0;name=cast-0.3.0 \
+    crate://crates.io/cfg-if/1.0.0;name=cfg-if-1.0.0 \
+    crate://crates.io/chrono/0.4.24;name=chrono-0.4.24 \
+    crate://crates.io/ciborium/0.2.0;name=ciborium-0.2.0 \
+    crate://crates.io/ciborium-io/0.2.0;name=ciborium-io-0.2.0 \
+    crate://crates.io/ciborium-ll/0.2.0;name=ciborium-ll-0.2.0 \
+    crate://crates.io/clap/3.2.23;name=clap-3.2.23 \
+    crate://crates.io/clap_lex/0.2.4;name=clap_lex-0.2.4 \
+    crate://crates.io/criterion/0.4.0;name=criterion-0.4.0 \
+    crate://crates.io/criterion-plot/0.5.0;name=criterion-plot-0.5.0 \
+    crate://crates.io/crossbeam-channel/0.5.7;name=crossbeam-channel-0.5.7 \
+    crate://crates.io/crossbeam-deque/0.8.3;name=crossbeam-deque-0.8.3 \
+    crate://crates.io/crossbeam-epoch/0.9.14;name=crossbeam-epoch-0.9.14 \
+    crate://crates.io/crossbeam-utils/0.8.15;name=crossbeam-utils-0.8.15 \
+    crate://crates.io/either/1.8.1;name=either-1.8.1 \
+    crate://crates.io/enumflags2/0.7.5;name=enumflags2-0.7.5 \
+    crate://crates.io/enumflags2_derive/0.7.4;name=enumflags2_derive-0.7.4 \
+    crate://crates.io/form_urlencoded/1.1.0;name=form_urlencoded-1.1.0 \
+    crate://crates.io/futures-channel/0.3.27;name=futures-channel-0.3.27 \
+    crate://crates.io/futures-core/0.3.27;name=futures-core-0.3.27 \
+    crate://crates.io/futures-executor/0.3.27;name=futures-executor-0.3.27 \
+    crate://crates.io/futures-macro/0.3.27;name=futures-macro-0.3.27 \
+    crate://crates.io/futures-task/0.3.27;name=futures-task-0.3.27 \
+    crate://crates.io/futures-util/0.3.27;name=futures-util-0.3.27 \
+    crate://crates.io/getrandom/0.2.8;name=getrandom-0.2.8 \
+    crate://crates.io/half/1.8.2;name=half-1.8.2 \
+    crate://crates.io/hashbrown/0.12.3;name=hashbrown-0.12.3 \
+    crate://crates.io/heck/0.3.3;name=heck-0.3.3 \
+    crate://crates.io/hermit-abi/0.1.19;name=hermit-abi-0.1.19 \
+    crate://crates.io/hermit-abi/0.2.6;name=hermit-abi-0.2.6 \
+    crate://crates.io/idna/0.3.0;name=idna-0.3.0 \
+    crate://crates.io/indexmap/1.9.2;name=indexmap-1.9.2 \
+    crate://crates.io/itertools/0.9.0;name=itertools-0.9.0 \
+    crate://crates.io/itertools/0.10.5;name=itertools-0.10.5 \
+    crate://crates.io/itoa/1.0.6;name=itoa-1.0.6 \
+    crate://crates.io/js-sys/0.3.61;name=js-sys-0.3.61 \
+    crate://crates.io/lazy_static/1.4.0;name=lazy_static-1.4.0 \
+    crate://crates.io/libc/0.2.140;name=libc-0.2.140 \
+    crate://crates.io/log/0.4.17;name=log-0.4.17 \
+    crate://crates.io/memchr/2.5.0;name=memchr-2.5.0 \
+    crate://crates.io/memoffset/0.8.0;name=memoffset-0.8.0 \
+    crate://crates.io/num-integer/0.1.45;name=num-integer-0.1.45 \
+    crate://crates.io/num-traits/0.2.15;name=num-traits-0.2.15 \
+    crate://crates.io/num_cpus/1.15.0;name=num_cpus-1.15.0 \
+    crate://crates.io/once_cell/1.17.1;name=once_cell-1.17.1 \
+    crate://crates.io/oorandom/11.1.3;name=oorandom-11.1.3 \
+    crate://crates.io/os_str_bytes/6.5.0;name=os_str_bytes-6.5.0 \
+    crate://crates.io/percent-encoding/2.2.0;name=percent-encoding-2.2.0 \
+    crate://crates.io/pin-project-lite/0.2.9;name=pin-project-lite-0.2.9 \
+    crate://crates.io/pin-utils/0.1.0;name=pin-utils-0.1.0 \
+    crate://crates.io/pkg-config/0.3.26;name=pkg-config-0.3.26 \
+    crate://crates.io/plotters/0.3.4;name=plotters-0.3.4 \
+    crate://crates.io/plotters-backend/0.3.4;name=plotters-backend-0.3.4 \
+    crate://crates.io/plotters-svg/0.3.3;name=plotters-svg-0.3.3 \
+    crate://crates.io/ppv-lite86/0.2.17;name=ppv-lite86-0.2.17 \
+    crate://crates.io/proc-macro-crate/0.1.5;name=proc-macro-crate-0.1.5 \
+    crate://crates.io/proc-macro-crate/1.3.1;name=proc-macro-crate-1.3.1 \
+    crate://crates.io/proc-macro-error/1.0.4;name=proc-macro-error-1.0.4 \
+    crate://crates.io/proc-macro-error-attr/1.0.4;name=proc-macro-error-attr-1.0.4 \
+    crate://crates.io/proc-macro2/1.0.53;name=proc-macro2-1.0.53 \
+    crate://crates.io/quote/1.0.26;name=quote-1.0.26 \
+    crate://crates.io/rand/0.8.5;name=rand-0.8.5 \
+    crate://crates.io/rand_chacha/0.3.1;name=rand_chacha-0.3.1 \
+    crate://crates.io/rand_core/0.6.4;name=rand_core-0.6.4 \
+    crate://crates.io/rayon/1.7.0;name=rayon-1.7.0 \
+    crate://crates.io/rayon-core/1.11.0;name=rayon-core-1.11.0 \
+    crate://crates.io/regex/1.7.2;name=regex-1.7.2 \
+    crate://crates.io/regex-syntax/0.6.29;name=regex-syntax-0.6.29 \
+    crate://crates.io/ryu/1.0.13;name=ryu-1.0.13 \
+    crate://crates.io/same-file/1.0.6;name=same-file-1.0.6 \
+    crate://crates.io/scopeguard/1.1.0;name=scopeguard-1.1.0 \
+    crate://crates.io/serde/1.0.158;name=serde-1.0.158 \
+    crate://crates.io/serde_bytes/0.11.9;name=serde_bytes-0.11.9 \
+    crate://crates.io/serde_derive/1.0.158;name=serde_derive-1.0.158 \
+    crate://crates.io/serde_json/1.0.94;name=serde_json-1.0.94 \
+    crate://crates.io/serde_repr/0.1.12;name=serde_repr-0.1.12 \
+    crate://crates.io/slab/0.4.8;name=slab-0.4.8 \
+    crate://crates.io/static_assertions/1.1.0;name=static_assertions-1.1.0 \
+    crate://crates.io/strum/0.18.0;name=strum-0.18.0 \
+    crate://crates.io/strum_macros/0.18.0;name=strum_macros-0.18.0 \
+    crate://crates.io/syn/1.0.109;name=syn-1.0.109 \
+    crate://crates.io/syn/2.0.8;name=syn-2.0.8 \
+    crate://crates.io/system-deps/1.3.2;name=system-deps-1.3.2 \
+    crate://crates.io/textwrap/0.16.0;name=textwrap-0.16.0 \
+    crate://crates.io/thiserror/1.0.40;name=thiserror-1.0.40 \
+    crate://crates.io/thiserror-impl/1.0.40;name=thiserror-impl-1.0.40 \
+    crate://crates.io/time/0.3.20;name=time-0.3.20 \
+    crate://crates.io/time-core/0.1.0;name=time-core-0.1.0 \
+    crate://crates.io/time-macros/0.2.8;name=time-macros-0.2.8 \
+    crate://crates.io/tinytemplate/1.2.1;name=tinytemplate-1.2.1 \
+    crate://crates.io/tinyvec/1.6.0;name=tinyvec-1.6.0 \
+    crate://crates.io/tinyvec_macros/0.1.1;name=tinyvec_macros-0.1.1 \
+    crate://crates.io/toml/0.5.11;name=toml-0.5.11 \
+    crate://crates.io/toml_datetime/0.6.1;name=toml_datetime-0.6.1 \
+    crate://crates.io/toml_edit/0.19.8;name=toml_edit-0.19.8 \
+    crate://crates.io/unicode-bidi/0.3.13;name=unicode-bidi-0.3.13 \
+    crate://crates.io/unicode-ident/1.0.8;name=unicode-ident-1.0.8 \
+    crate://crates.io/unicode-normalization/0.1.22;name=unicode-normalization-0.1.22 \
+    crate://crates.io/unicode-segmentation/1.10.1;name=unicode-segmentation-1.10.1 \
+    crate://crates.io/url/2.3.1;name=url-2.3.1 \
+    crate://crates.io/uuid/1.3.0;name=uuid-1.3.0 \
+    crate://crates.io/version-compare/0.0.10;name=version-compare-0.0.10 \
+    crate://crates.io/version_check/0.9.4;name=version_check-0.9.4 \
+    crate://crates.io/walkdir/2.3.3;name=walkdir-2.3.3 \
+    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1;name=wasi-0.11.0+wasi-snapshot-preview1 \
+    crate://crates.io/wasm-bindgen/0.2.84;name=wasm-bindgen-0.2.84 \
+    crate://crates.io/wasm-bindgen-backend/0.2.84;name=wasm-bindgen-backend-0.2.84 \
+    crate://crates.io/wasm-bindgen-macro/0.2.84;name=wasm-bindgen-macro-0.2.84 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.84;name=wasm-bindgen-macro-support-0.2.84 \
+    crate://crates.io/wasm-bindgen-shared/0.2.84;name=wasm-bindgen-shared-0.2.84 \
+    crate://crates.io/web-sys/0.3.61;name=web-sys-0.3.61 \
+    crate://crates.io/winapi/0.3.9;name=winapi-0.3.9 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0;name=winapi-i686-pc-windows-gnu-0.4.0 \
+    crate://crates.io/winapi-util/0.1.5;name=winapi-util-0.1.5 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0;name=winapi-x86_64-pc-windows-gnu-0.4.0 \
+    crate://crates.io/winnow/0.4.0;name=winnow-0.4.0 \
+    crate://crates.io/zvariant_derive/3.12.0;name=zvariant_derive-3.12.0 \
+    crate://crates.io/zvariant_utils/1.0.0;name=zvariant_utils-1.0.0 \
+"
+
+SRC_URI[anes-0.1.6.sha256sum] = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+SRC_URI[anyhow-1.0.70.sha256sum] = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
+SRC_URI[arrayvec-0.7.2.sha256sum] = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
+SRC_URI[atty-0.2.14.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bumpalo-3.12.0.sha256sum] = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+SRC_URI[byteorder-1.4.3.sha256sum] = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+SRC_URI[cast-0.3.0.sha256sum] = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[chrono-0.4.24.sha256sum] = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
+SRC_URI[ciborium-0.2.0.sha256sum] = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
+SRC_URI[ciborium-io-0.2.0.sha256sum] = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
+SRC_URI[ciborium-ll-0.2.0.sha256sum] = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
+SRC_URI[clap-3.2.23.sha256sum] = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
+SRC_URI[clap_lex-0.2.4.sha256sum] = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
+SRC_URI[criterion-0.4.0.sha256sum] = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
+SRC_URI[criterion-plot-0.5.0.sha256sum] = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
+SRC_URI[crossbeam-channel-0.5.7.sha256sum] = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
+SRC_URI[crossbeam-deque-0.8.3.sha256sum] = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+SRC_URI[crossbeam-epoch-0.9.14.sha256sum] = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
+SRC_URI[crossbeam-utils-0.8.15.sha256sum] = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
+SRC_URI[either-1.8.1.sha256sum] = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+SRC_URI[enumflags2-0.7.5.sha256sum] = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
+SRC_URI[enumflags2_derive-0.7.4.sha256sum] = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
+SRC_URI[form_urlencoded-1.1.0.sha256sum] = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+SRC_URI[futures-channel-0.3.27.sha256sum] = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
+SRC_URI[futures-core-0.3.27.sha256sum] = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
+SRC_URI[futures-executor-0.3.27.sha256sum] = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
+SRC_URI[futures-macro-0.3.27.sha256sum] = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
+SRC_URI[futures-task-0.3.27.sha256sum] = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
+SRC_URI[futures-util-0.3.27.sha256sum] = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
+SRC_URI[getrandom-0.2.8.sha256sum] = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+SRC_URI[half-1.8.2.sha256sum] = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
+SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+SRC_URI[heck-0.3.3.sha256sum] = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+SRC_URI[hermit-abi-0.2.6.sha256sum] = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
+SRC_URI[idna-0.3.0.sha256sum] = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+SRC_URI[indexmap-1.9.2.sha256sum] = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
+SRC_URI[itertools-0.9.0.sha256sum] = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
+SRC_URI[itertools-0.10.5.sha256sum] = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+SRC_URI[itoa-1.0.6.sha256sum] = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+SRC_URI[js-sys-0.3.61.sha256sum] = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[libc-0.2.140.sha256sum] = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+SRC_URI[log-0.4.17.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[memoffset-0.8.0.sha256sum] = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
+SRC_URI[num-integer-0.1.45.sha256sum] = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+SRC_URI[num-traits-0.2.15.sha256sum] = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+SRC_URI[num_cpus-1.15.0.sha256sum] = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+SRC_URI[once_cell-1.17.1.sha256sum] = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+SRC_URI[oorandom-11.1.3.sha256sum] = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
+SRC_URI[os_str_bytes-6.5.0.sha256sum] = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
+SRC_URI[percent-encoding-2.2.0.sha256sum] = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+SRC_URI[pin-project-lite-0.2.9.sha256sum] = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[pkg-config-0.3.26.sha256sum] = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+SRC_URI[plotters-0.3.4.sha256sum] = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
+SRC_URI[plotters-backend-0.3.4.sha256sum] = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
+SRC_URI[plotters-svg-0.3.3.sha256sum] = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
+SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+SRC_URI[proc-macro-crate-0.1.5.sha256sum] = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
+SRC_URI[proc-macro-crate-1.3.1.sha256sum] = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+SRC_URI[proc-macro-error-1.0.4.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+SRC_URI[proc-macro-error-attr-1.0.4.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+SRC_URI[proc-macro2-1.0.53.sha256sum] = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
+SRC_URI[quote-1.0.26.sha256sum] = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[rayon-1.7.0.sha256sum] = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+SRC_URI[rayon-core-1.11.0.sha256sum] = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+SRC_URI[regex-1.7.2.sha256sum] = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
+SRC_URI[regex-syntax-0.6.29.sha256sum] = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+SRC_URI[ryu-1.0.13.sha256sum] = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[serde-1.0.158.sha256sum] = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
+SRC_URI[serde_bytes-0.11.9.sha256sum] = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
+SRC_URI[serde_derive-1.0.158.sha256sum] = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
+SRC_URI[serde_json-1.0.94.sha256sum] = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
+SRC_URI[serde_repr-0.1.12.sha256sum] = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
+SRC_URI[slab-0.4.8.sha256sum] = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+SRC_URI[strum-0.18.0.sha256sum] = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
+SRC_URI[strum_macros-0.18.0.sha256sum] = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
+SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[syn-2.0.8.sha256sum] = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
+SRC_URI[system-deps-1.3.2.sha256sum] = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
+SRC_URI[textwrap-0.16.0.sha256sum] = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+SRC_URI[thiserror-1.0.40.sha256sum] = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
+SRC_URI[thiserror-impl-1.0.40.sha256sum] = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
+SRC_URI[time-0.3.20.sha256sum] = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
+SRC_URI[time-core-0.1.0.sha256sum] = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
+SRC_URI[time-macros-0.2.8.sha256sum] = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
+SRC_URI[tinytemplate-1.2.1.sha256sum] = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+SRC_URI[toml-0.5.11.sha256sum] = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+SRC_URI[toml_datetime-0.6.1.sha256sum] = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
+SRC_URI[toml_edit-0.19.8.sha256sum] = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
+SRC_URI[unicode-bidi-0.3.13.sha256sum] = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+SRC_URI[unicode-ident-1.0.8.sha256sum] = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+SRC_URI[unicode-segmentation-1.10.1.sha256sum] = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+SRC_URI[url-2.3.1.sha256sum] = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+SRC_URI[uuid-1.3.0.sha256sum] = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
+SRC_URI[version-compare-0.0.10.sha256sum] = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[walkdir-2.3.3.sha256sum] = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[wasm-bindgen-0.2.84.sha256sum] = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
+SRC_URI[wasm-bindgen-backend-0.2.84.sha256sum] = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
+SRC_URI[wasm-bindgen-macro-0.2.84.sha256sum] = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
+SRC_URI[wasm-bindgen-macro-support-0.2.84.sha256sum] = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
+SRC_URI[wasm-bindgen-shared-0.2.84.sha256sum] = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
+SRC_URI[web-sys-0.3.61.sha256sum] = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[winnow-0.4.0.sha256sum] = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
+SRC_URI[zvariant_derive-3.12.0.sha256sum] = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
+SRC_URI[zvariant_utils-1.0.0.sha256sum] = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
diff --git a/poky/meta-selftest/recipes-extended/zvariant/zvariant-git-crates.inc b/poky/meta-selftest/recipes-extended/zvariant/zvariant-git-crates.inc
new file mode 100644
index 0000000..f24cfe8
--- /dev/null
+++ b/poky/meta-selftest/recipes-extended/zvariant/zvariant-git-crates.inc
@@ -0,0 +1,14 @@
+SRC_URI += "\
+    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib;type=git-dependency \
+    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys;type=git-dependency \
+    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys;type=git-dependency \
+"
+
+SRCREV_FORMAT .= "_glib"
+SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
+
+SRCREV_FORMAT .= "_glib-sys"
+SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
+
+SRCREV_FORMAT .= "_gobject-sys"
+SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
diff --git a/poky/meta-selftest/recipes-extended/zvariant/zvariant/0001-Tweak-zvariant-crate-config.patch b/poky/meta-selftest/recipes-extended/zvariant/zvariant/0001-Tweak-zvariant-crate-config.patch
new file mode 100644
index 0000000..ac6c511
--- /dev/null
+++ b/poky/meta-selftest/recipes-extended/zvariant/zvariant/0001-Tweak-zvariant-crate-config.patch
@@ -0,0 +1,1292 @@
+From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
+From: Frederic Martinsons <frederic.martinsons@gmail.com>
+Date: Thu, 23 Mar 2023 07:12:37 +0100
+Subject: [PATCH] Tweak zvariant crate config
+
+This library crate is a part of zbus project, and is aimed to
+be published amongst the whole project.
+
+Nevertheless, this recipe is for showing example of real
+code which uses a local registry via git url inside yocto
+environment.
+
+I didn't find a real example of binary crate that uses git
+dependency but it seems to me a very common use case
+when we are working on multiple local crates that are not
+aimed to be published on public registry.
+
+Long story short, this patch add a modified Cargo.toml
+to use the zvariant_derive dependency from crates.io instead
+of zbus local one and a pre generated Cargo.lock in order
+to make cargo patch process inside cargo_common.bbclass work
+
+It also copied the LICENCE file from zbus project instead
+of symlink to it.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
+---
+ zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
+ zvariant/Cargo.toml |    2 +-
+ zvariant/LICENSE    |   24 +-
+ 3 files changed, 1222 insertions(+), 2 deletions(-)
+ create mode 100644 zvariant/Cargo.lock
+ mode change 120000 => 100644 zvariant/LICENSE
+
+diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
+new file mode 100644
+index 00000000..02a83d42
+--- /dev/null
++++ b/zvariant/Cargo.lock
+@@ -0,0 +1,1198 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++version = 3
++
++[[package]]
++name = "anes"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
++
++[[package]]
++name = "anyhow"
++version = "1.0.70"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
++
++[[package]]
++name = "arrayvec"
++version = "0.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "atty"
++version = "0.2.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
++dependencies = [
++ "hermit-abi 0.1.19",
++ "libc",
++ "winapi",
++]
++
++[[package]]
++name = "autocfg"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
++
++[[package]]
++name = "bitflags"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
++
++[[package]]
++name = "bumpalo"
++version = "3.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
++
++[[package]]
++name = "byteorder"
++version = "1.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
++
++[[package]]
++name = "cast"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
++
++[[package]]
++name = "cfg-if"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
++
++[[package]]
++name = "chrono"
++version = "0.4.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
++dependencies = [
++ "num-integer",
++ "num-traits",
++ "serde",
++]
++
++[[package]]
++name = "ciborium"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
++dependencies = [
++ "ciborium-io",
++ "ciborium-ll",
++ "serde",
++]
++
++[[package]]
++name = "ciborium-io"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
++
++[[package]]
++name = "ciborium-ll"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
++dependencies = [
++ "ciborium-io",
++ "half",
++]
++
++[[package]]
++name = "clap"
++version = "3.2.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
++dependencies = [
++ "bitflags",
++ "clap_lex",
++ "indexmap",
++ "textwrap",
++]
++
++[[package]]
++name = "clap_lex"
++version = "0.2.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
++dependencies = [
++ "os_str_bytes",
++]
++
++[[package]]
++name = "criterion"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
++dependencies = [
++ "anes",
++ "atty",
++ "cast",
++ "ciborium",
++ "clap",
++ "criterion-plot",
++ "itertools 0.10.5",
++ "lazy_static",
++ "num-traits",
++ "oorandom",
++ "plotters",
++ "rayon",
++ "regex",
++ "serde",
++ "serde_derive",
++ "serde_json",
++ "tinytemplate",
++ "walkdir",
++]
++
++[[package]]
++name = "criterion-plot"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
++dependencies = [
++ "cast",
++ "itertools 0.10.5",
++]
++
++[[package]]
++name = "crossbeam-channel"
++version = "0.5.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
++dependencies = [
++ "cfg-if",
++ "crossbeam-utils",
++]
++
++[[package]]
++name = "crossbeam-deque"
++version = "0.8.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
++dependencies = [
++ "cfg-if",
++ "crossbeam-epoch",
++ "crossbeam-utils",
++]
++
++[[package]]
++name = "crossbeam-epoch"
++version = "0.9.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
++dependencies = [
++ "autocfg",
++ "cfg-if",
++ "crossbeam-utils",
++ "memoffset",
++ "scopeguard",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.8.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
++dependencies = [
++ "cfg-if",
++]
++
++[[package]]
++name = "either"
++version = "1.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
++
++[[package]]
++name = "enumflags2"
++version = "0.7.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
++dependencies = [
++ "enumflags2_derive",
++ "serde",
++]
++
++[[package]]
++name = "enumflags2_derive"
++version = "0.7.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "form_urlencoded"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
++dependencies = [
++ "percent-encoding",
++]
++
++[[package]]
++name = "futures-channel"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
++dependencies = [
++ "futures-core",
++]
++
++[[package]]
++name = "futures-core"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
++
++[[package]]
++name = "futures-executor"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
++dependencies = [
++ "futures-core",
++ "futures-task",
++ "futures-util",
++]
++
++[[package]]
++name = "futures-macro"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "futures-task"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
++
++[[package]]
++name = "futures-util"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
++dependencies = [
++ "futures-core",
++ "futures-macro",
++ "futures-task",
++ "pin-project-lite",
++ "pin-utils",
++ "slab",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
++dependencies = [
++ "cfg-if",
++ "libc",
++ "wasi",
++]
++
++[[package]]
++name = "glib"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
++dependencies = [
++ "bitflags",
++ "futures-channel",
++ "futures-core",
++ "futures-executor",
++ "futures-task",
++ "futures-util",
++ "glib-macros",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "once_cell",
++]
++
++[[package]]
++name = "glib-macros"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
++dependencies = [
++ "anyhow",
++ "heck",
++ "itertools 0.9.0",
++ "proc-macro-crate 0.1.5",
++ "proc-macro-error",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "glib-sys"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
++dependencies = [
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "gobject-sys"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
++dependencies = [
++ "glib-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "half"
++version = "1.8.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
++
++[[package]]
++name = "hashbrown"
++version = "0.12.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
++
++[[package]]
++name = "heck"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
++dependencies = [
++ "unicode-segmentation",
++]
++
++[[package]]
++name = "hermit-abi"
++version = "0.1.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "hermit-abi"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "idna"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
++dependencies = [
++ "unicode-bidi",
++ "unicode-normalization",
++]
++
++[[package]]
++name = "indexmap"
++version = "1.9.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
++dependencies = [
++ "autocfg",
++ "hashbrown",
++]
++
++[[package]]
++name = "itertools"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
++dependencies = [
++ "either",
++]
++
++[[package]]
++name = "itertools"
++version = "0.10.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
++dependencies = [
++ "either",
++]
++
++[[package]]
++name = "itoa"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
++
++[[package]]
++name = "js-sys"
++version = "0.3.61"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
++dependencies = [
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++
++[[package]]
++name = "libc"
++version = "0.2.140"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
++
++[[package]]
++name = "log"
++version = "0.4.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
++dependencies = [
++ "cfg-if",
++]
++
++[[package]]
++name = "memchr"
++version = "2.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
++
++[[package]]
++name = "memoffset"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "num-integer"
++version = "0.1.45"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
++dependencies = [
++ "autocfg",
++ "num-traits",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.2.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "num_cpus"
++version = "1.15.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
++dependencies = [
++ "hermit-abi 0.2.6",
++ "libc",
++]
++
++[[package]]
++name = "once_cell"
++version = "1.17.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
++
++[[package]]
++name = "oorandom"
++version = "11.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
++
++[[package]]
++name = "os_str_bytes"
++version = "6.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
++
++[[package]]
++name = "percent-encoding"
++version = "2.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
++
++[[package]]
++name = "pin-project-lite"
++version = "0.2.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
++
++[[package]]
++name = "pin-utils"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
++
++[[package]]
++name = "pkg-config"
++version = "0.3.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
++
++[[package]]
++name = "plotters"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
++dependencies = [
++ "num-traits",
++ "plotters-backend",
++ "plotters-svg",
++ "wasm-bindgen",
++ "web-sys",
++]
++
++[[package]]
++name = "plotters-backend"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
++
++[[package]]
++name = "plotters-svg"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
++dependencies = [
++ "plotters-backend",
++]
++
++[[package]]
++name = "ppv-lite86"
++version = "0.2.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
++
++[[package]]
++name = "proc-macro-crate"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
++dependencies = [
++ "toml",
++]
++
++[[package]]
++name = "proc-macro-crate"
++version = "1.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
++dependencies = [
++ "once_cell",
++ "toml_edit",
++]
++
++[[package]]
++name = "proc-macro-error"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
++dependencies = [
++ "proc-macro-error-attr",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "version_check",
++]
++
++[[package]]
++name = "proc-macro-error-attr"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "version_check",
++]
++
++[[package]]
++name = "proc-macro2"
++version = "1.0.53"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
++dependencies = [
++ "unicode-ident",
++]
++
++[[package]]
++name = "quote"
++version = "1.0.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
++dependencies = [
++ "proc-macro2",
++]
++
++[[package]]
++name = "rand"
++version = "0.8.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
++dependencies = [
++ "libc",
++ "rand_chacha",
++ "rand_core",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
++dependencies = [
++ "ppv-lite86",
++ "rand_core",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.6.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
++dependencies = [
++ "getrandom",
++]
++
++[[package]]
++name = "rayon"
++version = "1.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
++dependencies = [
++ "either",
++ "rayon-core",
++]
++
++[[package]]
++name = "rayon-core"
++version = "1.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
++dependencies = [
++ "crossbeam-channel",
++ "crossbeam-deque",
++ "crossbeam-utils",
++ "num_cpus",
++]
++
++[[package]]
++name = "regex"
++version = "1.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
++dependencies = [
++ "regex-syntax",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.6.29"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
++
++[[package]]
++name = "ryu"
++version = "1.0.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
++
++[[package]]
++name = "same-file"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
++dependencies = [
++ "winapi-util",
++]
++
++[[package]]
++name = "scopeguard"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
++
++[[package]]
++name = "serde"
++version = "1.0.158"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
++dependencies = [
++ "serde_derive",
++]
++
++[[package]]
++name = "serde_bytes"
++version = "0.11.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "serde_derive"
++version = "1.0.158"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.8",
++]
++
++[[package]]
++name = "serde_json"
++version = "1.0.94"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
++dependencies = [
++ "itoa",
++ "ryu",
++ "serde",
++]
++
++[[package]]
++name = "serde_repr"
++version = "0.1.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.8",
++]
++
++[[package]]
++name = "slab"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "static_assertions"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
++
++[[package]]
++name = "strum"
++version = "0.18.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
++
++[[package]]
++name = "strum_macros"
++version = "0.18.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
++dependencies = [
++ "heck",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "syn"
++version = "1.0.109"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-ident",
++]
++
++[[package]]
++name = "syn"
++version = "2.0.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-ident",
++]
++
++[[package]]
++name = "system-deps"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
++dependencies = [
++ "heck",
++ "pkg-config",
++ "strum",
++ "strum_macros",
++ "thiserror",
++ "toml",
++ "version-compare",
++]
++
++[[package]]
++name = "textwrap"
++version = "0.16.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
++
++[[package]]
++name = "thiserror"
++version = "1.0.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
++dependencies = [
++ "thiserror-impl",
++]
++
++[[package]]
++name = "thiserror-impl"
++version = "1.0.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.8",
++]
++
++[[package]]
++name = "time"
++version = "0.3.20"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
++dependencies = [
++ "serde",
++ "time-core",
++ "time-macros",
++]
++
++[[package]]
++name = "time-core"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
++
++[[package]]
++name = "time-macros"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
++dependencies = [
++ "time-core",
++]
++
++[[package]]
++name = "tinytemplate"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
++dependencies = [
++ "serde",
++ "serde_json",
++]
++
++[[package]]
++name = "tinyvec"
++version = "1.6.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
++dependencies = [
++ "tinyvec_macros",
++]
++
++[[package]]
++name = "tinyvec_macros"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
++
++[[package]]
++name = "toml"
++version = "0.5.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "toml_datetime"
++version = "0.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
++
++[[package]]
++name = "toml_edit"
++version = "0.19.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
++dependencies = [
++ "indexmap",
++ "toml_datetime",
++ "winnow",
++]
++
++[[package]]
++name = "unicode-bidi"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
++
++[[package]]
++name = "unicode-ident"
++version = "1.0.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
++
++[[package]]
++name = "unicode-normalization"
++version = "0.1.22"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
++dependencies = [
++ "tinyvec",
++]
++
++[[package]]
++name = "unicode-segmentation"
++version = "1.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
++
++[[package]]
++name = "url"
++version = "2.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
++dependencies = [
++ "form_urlencoded",
++ "idna",
++ "percent-encoding",
++ "serde",
++]
++
++[[package]]
++name = "uuid"
++version = "1.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "version-compare"
++version = "0.0.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
++
++[[package]]
++name = "version_check"
++version = "0.9.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
++
++[[package]]
++name = "walkdir"
++version = "2.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
++dependencies = [
++ "same-file",
++ "winapi-util",
++]
++
++[[package]]
++name = "wasi"
++version = "0.11.0+wasi-snapshot-preview1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
++
++[[package]]
++name = "wasm-bindgen"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
++dependencies = [
++ "cfg-if",
++ "wasm-bindgen-macro",
++]
++
++[[package]]
++name = "wasm-bindgen-backend"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
++dependencies = [
++ "bumpalo",
++ "log",
++ "once_cell",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-macro"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
++dependencies = [
++ "quote",
++ "wasm-bindgen-macro-support",
++]
++
++[[package]]
++name = "wasm-bindgen-macro-support"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "wasm-bindgen-backend",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-shared"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
++
++[[package]]
++name = "web-sys"
++version = "0.3.61"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
++dependencies = [
++ "js-sys",
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "winapi"
++version = "0.3.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
++dependencies = [
++ "winapi-i686-pc-windows-gnu",
++ "winapi-x86_64-pc-windows-gnu",
++]
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++
++[[package]]
++name = "winapi-util"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
++dependencies = [
++ "winapi",
++]
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
++
++[[package]]
++name = "winnow"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
++dependencies = [
++ "memchr",
++]
++
++[[package]]
++name = "zvariant"
++version = "3.12.0"
++dependencies = [
++ "arrayvec",
++ "byteorder",
++ "chrono",
++ "criterion",
++ "enumflags2",
++ "glib",
++ "libc",
++ "rand",
++ "serde",
++ "serde_bytes",
++ "serde_json",
++ "serde_repr",
++ "static_assertions",
++ "time",
++ "url",
++ "uuid",
++ "zvariant_derive",
++]
++
++[[package]]
++name = "zvariant_derive"
++version = "3.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
++dependencies = [
++ "proc-macro-crate 1.3.1",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "zvariant_utils",
++]
++
++[[package]]
++name = "zvariant_utils"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
+diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
+index 45367729..6981862a 100644
+--- a/zvariant/Cargo.toml
++++ b/zvariant/Cargo.toml
+@@ -27,7 +27,7 @@ byteorder = "1.4.3"
+ serde = { version = "1.0", features = ["derive"] }
+ arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
+ enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
+-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
++zvariant_derive = "3.12.0"
+ serde_bytes = { version = "0.11", optional = true }
+ static_assertions = "1.1.0"
+ libc = "0.2.137"
+diff --git a/zvariant/LICENSE b/zvariant/LICENSE
+deleted file mode 120000
+index ea5b6064..00000000
+--- a/zvariant/LICENSE
++++ /dev/null
+@@ -1 +0,0 @@
+-../LICENSE
+\ No newline at end of file
+diff --git a/zvariant/LICENSE b/zvariant/LICENSE
+new file mode 100644
+index 00000000..31aa7938
+--- /dev/null
++++ b/zvariant/LICENSE
+@@ -0,0 +1,23 @@
++Permission is hereby granted, free of charge, to any
++person obtaining a copy of this software and associated
++documentation files (the "Software"), to deal in the
++Software without restriction, including without
++limitation the rights to use, copy, modify, merge,
++publish, distribute, sublicense, and/or sell copies of
++the Software, and to permit persons to whom the Software
++is furnished to do so, subject to the following
++conditions:
++
++The above copyright notice and this permission notice
++shall be included in all copies or substantial portions
++of the Software.
++
++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
++ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
++TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
++PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
++SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
++CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
++OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
++IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++DEALINGS IN THE SOFTWARE.
+-- 
+2.34.1
+
diff --git a/poky/meta-selftest/recipes-extended/zvariant/zvariant_3.12.0.bb b/poky/meta-selftest/recipes-extended/zvariant/zvariant_3.12.0.bb
new file mode 100644
index 0000000..4285d11
--- /dev/null
+++ b/poky/meta-selftest/recipes-extended/zvariant/zvariant_3.12.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
+DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
+This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
+A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
+data and is also supported by this crate."
+HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
+
+SRC_URI = " \
+    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
+    file://0001-Tweak-zvariant-crate-config.patch;striplevel=2 \
+"
+
+SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
+S = "${WORKDIR}/zvariant"
+
+python do_clean_lic_file_symlink() {
+    bb.utils.remove("LICENCE")
+}
+
+addtask clean_lic_file_symlink after do_unpack before do_patch
+
+inherit cargo cargo-update-recipe-crates
+
+# Remove this when the recipe is reproducible
+EXCLUDE_FROM_WORLD = "1"
+
+require ${BPN}-crates.inc
+require ${BPN}-git-crates.inc
diff --git a/poky/meta/classes-global/sanity.bbclass b/poky/meta/classes-global/sanity.bbclass
index 2d1ff70..abb52fb 100644
--- a/poky/meta/classes-global/sanity.bbclass
+++ b/poky/meta/classes-global/sanity.bbclass
@@ -475,7 +475,7 @@
             bb.warn("You are running bitbake under WSLv2, this works properly but you should optimize your VHDX file eventually to avoid running out of storage space")
     return None
 
-# Require at least gcc version 7.5.
+# Require at least gcc version 8.0
 #
 # This can be fixed on CentOS-7 with devtoolset-6+
 # https://www.softwarecollections.org/en/scls/rhscl/devtoolset-6/
@@ -488,8 +488,8 @@
     
     build_cc, version = oe.utils.get_host_compiler_version(sanity_data)
     if build_cc.strip() == "gcc":
-        if bb.utils.vercmp_string_op(version, "7.5", "<"):
-            return "Your version of gcc is older than 7.5 and will break builds. Please install a newer version of gcc (you could use the project's buildtools-extended-tarball or use scripts/install-buildtools).\n"
+        if bb.utils.vercmp_string_op(version, "8.0", "<"):
+            return "Your version of gcc is older than 8.0 and will break builds. Please install a newer version of gcc (you could use the project's buildtools-extended-tarball or use scripts/install-buildtools).\n"
     return None
 
 # Tar version 1.24 and onwards handle overwriting symlinks correctly
diff --git a/poky/meta/classes-recipe/cargo-update-recipe-crates.bbclass b/poky/meta/classes-recipe/cargo-update-recipe-crates.bbclass
index daa363b..8980137 100644
--- a/poky/meta/classes-recipe/cargo-update-recipe-crates.bbclass
+++ b/poky/meta/classes-recipe/cargo-update-recipe-crates.bbclass
@@ -38,25 +38,12 @@
     if not crates_candidates:
         raise ValueError("Unable to find any candidate crates that use crates.io")
 
-    # Build a list of crates name that have multiple version
-    crates_multiple_vers = []
-    tmp = []
-    for c in crates_candidates:
-        if c['name'] in tmp:
-            crates_multiple_vers.append(c['name'])
-        else:
-            tmp.append(c['name'])
-
     # Update crates uri and their checksum, to avoid name clashing on the checksum
-    # we need to rename crates of the same name but different version
+    # we need to rename crates with name and version to have a unique key
     cksum_list = ''
     for c in crates_candidates:
-        if c['name'] in crates_multiple_vers:
-            rename = "%s-%s" % (c['name'], c['version'])
-            c_list += '\n    crate://crates.io/%s/%s;name=%s \\\' % (c['name'], c['version'], rename)
-        else:
-            rename = c['name']
-            c_list += '\n    crate://crates.io/%s/%s \\\' % (c['name'], c['version'])
+        rename = "%s-%s" % (c['name'], c['version'])
+        c_list += '\n    crate://crates.io/%s/%s \\\' % (c['name'], c['version'])
         if 'checksum' in c:
             cksum_list += '\nSRC_URI[%s.sha256sum] = "%s"' % (rename, c['checksum'])
 
@@ -69,12 +56,22 @@
 crates = "# Autogenerated with 'bitbake -c update_crates ${PN}'\n\n"
 found = False
 for root, dirs, files in os.walk('${CARGO_LOCK_SRC_DIR}'):
+    # ignore git and patches directories
+    if root.startswith(os.path.join('${CARGO_LOCK_SRC_DIR}', '.pc')):
+        continue
+    if root.startswith(os.path.join('${CARGO_LOCK_SRC_DIR}', '.git')):
+        continue
     for file in files:
         if file == 'Cargo.lock':
-            crates += get_crates(os.path.join(root, file))
-            found = True
+            try:
+                cargo_lock_path = os.path.join(root, file)
+                crates += get_crates(os.path.join(root, file))
+            except Exception as e:
+                raise ValueError("Cannot parse '%s'" % cargo_lock_path) from e
+            else:
+                found = True
 if not found:
-    raise ValueError("Unable to find Cargo.lock in ${CARGO_LOCK_SRC_DIR}")
+    raise ValueError("Unable to find any Cargo.lock in ${CARGO_LOCK_SRC_DIR}")
 open("${TARGET_FILE}", 'w').write(crates)
 EOF
 
diff --git a/poky/meta/classes-recipe/cargo_common.bbclass b/poky/meta/classes-recipe/cargo_common.bbclass
index f503a00..82ab25b 100644
--- a/poky/meta/classes-recipe/cargo_common.bbclass
+++ b/poky/meta/classes-recipe/cargo_common.bbclass
@@ -116,6 +116,39 @@
 	EOF
 }
 
+python cargo_common_do_patch_paths() {
+    cargo_config = os.path.join(d.getVar("CARGO_HOME"), "config")
+    if not os.path.exists(cargo_config):
+        return
+
+    src_uri = (d.getVar('SRC_URI') or "").split()
+    if len(src_uri) == 0:
+        return
+
+    patches = dict()
+    workdir = d.getVar('WORKDIR')
+    fetcher = bb.fetch2.Fetch(src_uri, d)
+    for url in fetcher.urls:
+        ud = fetcher.ud[url]
+        if ud.type == 'git':
+            name = ud.parm.get('name')
+            destsuffix = ud.parm.get('destsuffix')
+            if name is not None and destsuffix is not None:
+                if ud.user:
+                    repo = '%s://%s@%s%s' % (ud.proto, ud.user, ud.host, ud.path)
+                else:
+                    repo = '%s://%s%s' % (ud.proto, ud.host, ud.path)
+                path = '%s = { path = "%s" }' % (name, os.path.join(workdir, destsuffix))
+                patches.setdefault(repo, []).append(path)
+
+    with open(cargo_config, "a+") as config:
+        for k, v in patches.items():
+            print('\n[patch."%s"]' % k, file=config)
+            for name in v:
+                print(name, file=config)
+}
+do_configure[postfuncs] += "cargo_common_do_patch_paths"
+
 oe_cargo_fix_env () {
 	export CC="${RUST_TARGET_CC}"
 	export CXX="${RUST_TARGET_CXX}"
diff --git a/poky/meta/classes-recipe/devicetree.bbclass b/poky/meta/classes-recipe/devicetree.bbclass
index ac1d284..ed2a92e 100644
--- a/poky/meta/classes-recipe/devicetree.bbclass
+++ b/poky/meta/classes-recipe/devicetree.bbclass
@@ -4,7 +4,7 @@
 # SPDX-License-Identifier: MIT
 #
 
-# This bbclass implements device tree compliation for user provided device tree
+# This bbclass implements device tree compilation for user provided device tree
 # sources. The compilation of the device tree sources is the same as the kernel
 # device tree compilation process, this includes being able to include sources
 # from the kernel such as soc dtsi files or header files such as gpio.h. In
diff --git a/poky/meta/classes-recipe/setuptools3-base.bbclass b/poky/meta/classes-recipe/setuptools3-base.bbclass
index 21b688c..d1c1fa0 100644
--- a/poky/meta/classes-recipe/setuptools3-base.bbclass
+++ b/poky/meta/classes-recipe/setuptools3-base.bbclass
@@ -23,15 +23,8 @@
 # the python executable
 export LINKFORSHARED = "${SECURITY_CFLAGS} -Xlinker -export-dynamic"
 
-FILES:${PN} += "${libdir}/* ${libdir}/${PYTHON_DIR}/*"
+FILES:${PN} += "${PYTHON_SITEPACKAGES_DIR}"
+FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
+FILES:${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
 
-FILES:${PN}-staticdev += "\
-  ${PYTHON_SITEPACKAGES_DIR}/*.a \
-"
-FILES:${PN}-dev += "\
-  ${datadir}/pkgconfig \
-  ${libdir}/pkgconfig \
-  ${PYTHON_SITEPACKAGES_DIR}/*.la \
-"
 inherit python3native python3targetconfig
-
diff --git a/poky/meta/classes-recipe/testimage.bbclass b/poky/meta/classes-recipe/testimage.bbclass
index df22bb2..b48cd96 100644
--- a/poky/meta/classes-recipe/testimage.bbclass
+++ b/poky/meta/classes-recipe/testimage.bbclass
@@ -98,7 +98,7 @@
 
 TESTIMAGE_DUMP_DIR ?= "${LOG_DIR}/runtime-hostdump/"
 
-TESTIMAGE_UPDATE_VARS ?= "DL_DIR WORKDIR DEPLOY_DIR"
+TESTIMAGE_UPDATE_VARS ?= "DL_DIR WORKDIR DEPLOY_DIR_IMAGE IMAGE_LINK_NAME"
 
 testimage_dump_target () {
     top -bn1
diff --git a/poky/meta/classes/cve-check.bbclass b/poky/meta/classes/cve-check.bbclass
index 5e2da56..bd9e7e7 100644
--- a/poky/meta/classes/cve-check.bbclass
+++ b/poky/meta/classes/cve-check.bbclass
@@ -32,7 +32,7 @@
 CVE_VERSION ??= "${PV}"
 
 CVE_CHECK_DB_DIR ?= "${DL_DIR}/CVE_CHECK"
-CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvdcve_1.1.db"
+CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvdcve_2.db"
 CVE_CHECK_DB_FILE_LOCK ?= "${CVE_CHECK_DB_FILE}.lock"
 
 CVE_CHECK_LOG ?= "${T}/cve.log"
@@ -161,7 +161,7 @@
 }
 
 addtask cve_check before do_build
-do_cve_check[depends] = "cve-update-db-native:do_fetch"
+do_cve_check[depends] = "cve-update-nvd2-native:do_fetch"
 do_cve_check[nostamp] = "1"
 
 python cve_check_cleanup () {
diff --git a/poky/meta/classes/externalsrc.bbclass b/poky/meta/classes/externalsrc.bbclass
index 26c5803..b00fdba 100644
--- a/poky/meta/classes/externalsrc.bbclass
+++ b/poky/meta/classes/externalsrc.bbclass
@@ -68,9 +68,7 @@
         for url in fetch.urls:
             url_data = fetch.ud[url]
             parm = url_data.parm
-            if (url_data.type == 'file' or
-                    url_data.type == 'npmsw' or url_data.type == 'crate' or
-                    'type' in parm and parm['type'] == 'kmeta'):
+            if url_data.type in ['file', 'npmsw', 'crate'] or parm.get('type') in ['kmeta', 'git-dependency']:
                 local_srcuri.append(url)
 
         d.setVar('SRC_URI', ' '.join(local_srcuri))
diff --git a/poky/meta/classes/report-error.bbclass b/poky/meta/classes/report-error.bbclass
index 2f692fb..2b2ad56 100644
--- a/poky/meta/classes/report-error.bbclass
+++ b/poky/meta/classes/report-error.bbclass
@@ -107,6 +107,31 @@
             errorreport_savedata(e, jsondata, "error-report.txt")
             bb.utils.unlockfile(lock)
 
+        elif isinstance(e, bb.event.NoProvider):
+            bb.utils.mkdirhier(logpath)
+            data = {}
+            machine = e.data.getVar("MACHINE")
+            data['machine'] = machine
+            data['build_sys'] = e.data.getVar("BUILD_SYS")
+            data['nativelsb'] = nativelsb()
+            data['distro'] = e.data.getVar("DISTRO")
+            data['target_sys'] = e.data.getVar("TARGET_SYS")
+            data['failures'] = []
+            data['component'] = str(e._item)
+            data['branch_commit'] = str(oe.buildcfg.detect_branch(e.data)) + ": " + str(oe.buildcfg.detect_revision(e.data))
+            data['bitbake_version'] = e.data.getVar("BB_VERSION")
+            data['layer_version'] = get_layers_branch_rev(e.data)
+            data['local_conf'] = get_conf_data(e, 'local.conf')
+            data['auto_conf'] = get_conf_data(e, 'auto.conf')
+            taskdata={}
+            taskdata['log'] = str(e)
+            taskdata['package'] = str(e._item)
+            taskdata['task'] = "Nothing provides " + "'" + str(e._item) + "'"
+            data['failures'].append(taskdata)
+            lock = bb.utils.lockfile(datafile + '.lock')
+            errorreport_savedata(e, data, "error-report.txt")
+            bb.utils.unlockfile(lock)
+
         elif isinstance(e, bb.event.BuildCompleted):
             lock = bb.utils.lockfile(datafile + '.lock')
             jsondata = json.loads(errorreport_getdata(e))
@@ -120,4 +145,4 @@
 }
 
 addhandler errorreport_handler
-errorreport_handler[eventmask] = "bb.event.BuildStarted bb.event.BuildCompleted bb.build.TaskFailed"
+errorreport_handler[eventmask] = "bb.event.BuildStarted bb.event.BuildCompleted bb.build.TaskFailed bb.event.NoProvider"
diff --git a/poky/meta/conf/distro/include/cve-extra-exclusions.inc b/poky/meta/conf/distro/include/cve-extra-exclusions.inc
index a281a8a..8965a15 100644
--- a/poky/meta/conf/distro/include/cve-extra-exclusions.inc
+++ b/poky/meta/conf/distro/include/cve-extra-exclusions.inc
@@ -136,6 +136,16 @@
 # Backported in version v5.15.58 b2d1e4cd558cffec6bfe318f5d74e6cffc374d29
 CVE_CHECK_IGNORE += "CVE-2022-1462"
 
+# https://nvd.nist.gov/vuln/detail/CVE-2022-2196
+# Introduced in version v5.8 5c911beff20aa8639e7a1f28988736c13e03ed54
+# Breaking commit backported in v5.4.47 64b8f33b2e1e687d465b5cb382e7bec495f1e026
+# Patched in kernel since v6.2 2e7eab81425ad6c875f2ed47c0ce01e78afc38a5
+# Backported in version v5.4.233 f93a1a5bdcdd122aae0a3eab7a52c15b71fb725b
+# Backported in version v5.10.170 1b0cafaae8884726c597caded50af185ffc13349
+# Backported in version v5.15.96 6b539a7dbb49250f92515c2ba60aea239efc9e35
+# Backported in version v6.1.14 63fada296062e91ad9f871970d4e7f19e21a6a15
+CVE_CHECK_IGNORE += "CVE-2022-2196"
+
 # https://nvd.nist.gov/vuln/detail/CVE-2022-2308
 # Introduced in version v5.15 c8a6153b6c59d95c0e091f053f6f180952ade91e
 # Patched in kernel since v6.0 46f8a29272e51b6df7393d58fc5cb8967397ef2b
@@ -169,6 +179,15 @@
 # Backported in version v5.15.65 e9d7ca0c4640cbebe6840ee3bac66a25a9bacaf5
 CVE_CHECK_IGNORE += "CVE-2022-3176"
 
+# https://nvd.nist.gov/vuln/detail/CVE-2022-3424
+# Introduced in version v2.6.33 55484c45dbeca2eec7642932ec3f60f8a2d4bdbf
+# Patched in kernel since v6.2 643a16a0eb1d6ac23744bb6e90a00fc21148a9dc
+# Backported in version v5.4.229 0078dd8758561540ed30b2c5daa1cb647e758977
+# Backported in version v5.10.163 0f67ed565f20ea2fdd98e3b0b0169d9e580bb83c
+# Backported in version v5.15.86 d5c8f9003a289ee2a9b564d109e021fc4d05d106
+# Backported in version v6.1.2 4e947fc71bec7c7da791f8562d5da233b235ba5e
+CVE_CHECK_IGNORE += "CVE-2022-3424"
+
 # https://nvd.nist.gov/vuln/detail/CVE-2022-3435
 # Introduced in version v5.18 6bf92d70e690b7ff12b24f4bfff5e5434d019b82
 # Breaking commit backported in v5.4.189 f5064531c23ad646da7be8b938292b00a7e61438
@@ -365,6 +384,14 @@
 
 
 # 2023
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-0179
+# Patched in kernel since v6.2 696e1a48b1a1b01edad542a1ef293665864a4dd0
+# Backported in version v5.10.164 550efeff989b041f3746118c0ddd863c39ddc1aa
+# Backported in version v5.15.89 a8acfe2c6fb99f9375a9325807a179cd8c32e6e3
+# Backported in version v6.1.7 76ef74d4a379faa451003621a84e3498044e7aa3
+CVE_CHECK_IGNORE += "CVE-2023-0179"
+
 # https://nvd.nist.gov/vuln/detail/CVE-2023-0266
 # Introduced in version v2.6.12 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
 # Patched in kernel since v6.2 56b88b50565cd8b946a2d00b0c83927b7ebb055e
@@ -381,6 +408,110 @@
 # Backported in version v6.1.7 0afa5f0736584411771299074bbeca8c1f9706d4
 CVE_CHECK_IGNORE += "CVE-2023-0394"
 
+# https://nvd.nist.gov/vuln/detail/CVE-2023-0461
+# Introduced in version v4.13 734942cc4ea6478eed125af258da1bdbb4afe578
+# Patched in kernel since v6.2 2c02d41d71f90a5168391b6a5f2954112ba2307c
+# Backported in version v5.4.229 c6d29a5ffdbc362314853462a0e24e63330a654d
+# Backported in version v5.10.163 f8ed0a93b5d576bbaf01639ad816473bdfd1dcb0
+# Backported in version v5.15.88 dadd0dcaa67d27f550131de95c8e182643d2c9d6
+# Backported in version v6.1.5 7d242f4a0c8319821548c7176c09a6e0e71f223c
+CVE_CHECK_IGNORE += "CVE-2023-0461"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-0386
+# Introduced in 5.11 459c7c565ac36ba09ffbf24231147f408fde4203
+# Patched in kernel v6.2 4f11ada10d0ad3fd53e2bd67806351de63a4f9c3
+# Backported in version 6.1.9 42fea1c35254c49cce07c600d026cbc00c6d3c81
+# Backported in version 5.15.91 e91308e63710574c4b6a0cadda3e042a3699666e
+CVE_CHECK_IGNORE += "CVE-2023-0386"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-1073
+# Introduced in v3.16 1b15d2e5b8077670b1e6a33250a0d9577efff4a5
+# Patched in kernel v6.2 b12fece4c64857e5fab4290bf01b2e0317a88456
+# Backported in version 5.10.166 5dc3469a1170dd1344d262a332b26994214eeb58
+# Backported in version 5.15.91 2b49568254365c9c247beb0eabbaa15d0e279d64
+# Backported in version 6.1.9 cdcdc0531a51659527fea4b4d064af343452062d
+CVE_CHECK_IGNORE += "CVE-2023-1073"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-1074
+# Patched in kernel v6.2 458e279f861d3f61796894cd158b780765a1569f
+# Backported in version 5.15.91 3391bd42351be0beb14f438c7556912b9f96cb32
+# Backported in version 6.1.9 9f08bb650078dca24a13fea1c375358ed6292df3
+CVE_CHECK_IGNORE += "CVE-2023-1074"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-1076
+# Patched in kernel v6.3 a096ccca6e503a5c575717ff8a36ace27510ab0a
+# Backported in version v5.4.235 d92d87000eda9884d49f1acec1c1fccd63cd9b11
+# Backported in version v5.10.173 9a31af61f397500ccae49d56d809b2217d1e2178
+# Backported in version v5.15.99 67f9f02928a34aad0a2c11dab5eea269f5ecf427
+# Backported in version v6.1.16 b4ada752eaf1341f47bfa3d8ada377eca75a8d44
+# Backported in version v6.2.3 4aa4b4b3b3e9551c4de2bf2987247c28805fb8f6
+CVE_CHECK_IGNORE += "CVE-2023-1076"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-1077
+# Patched in kernel 6.3rc1 7c4a5b89a0b5a57a64b601775b296abf77a9fe97
+# Backported in version 5.15.99 2c36c390a74981d03f04f01fe7ee9c3ac3ea11f7
+# Backported in version 6.1.16 6b4fcc4e8a3016e85766c161daf0732fca16c3a3
+CVE_CHECK_IGNORE += "CVE-2023-1077"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-1078
+# Patched in kernel 6.2 f753a68980cf4b59a80fe677619da2b1804f526d
+# Backported in version 5.15.94 528e3f3a4b53df36dafd10cdf6b8c0fe2aa1c4ba
+# Backported in version 6.1.12 1d52bbfd469af69fbcae88c67f160ce1b968e7f3
+CVE_CHECK_IGNORE += "CVE-2023-1078"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-1079
+# Patched in kernel since v6.3-rc1 4ab3a086d10eeec1424f2e8a968827a6336203df
+# Backported in version v5.4.235 dd08e68d04d08d2f42b09162c939a0b0841216cc
+# Backported in version v5.10.173 21a2eec4a440060a6eb294dc890eaf553101ba09
+# Backported in version v5.15.99 3959316f8ceb17866646abc6be4a332655407138
+# Backported in version v6.1.16 ee907829b36949c452c6f89485cb2a58e97c048e
+# Backported in version v6.2.3 b08bcfb4c97d7bd41b362cff44b2c537ce9e8540
+CVE_CHECK_IGNORE += "CVE-2023-1079"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-1118
+# Introduced in version v2.6.36 9ea53b74df9c4681f5bb2da6b2e10e37d87ea6d6
+# Patched in kernel since v6.3-rc1 29b0589a865b6f66d141d79b2dd1373e4e50fe17
+# Backported in version v5.4.235 d120334278b370b6a1623a75ebe53b0c76cb247c
+# Backported in version v5.10.173 78da5a378bdacd5bf68c3a6389bdc1dd0c0f5b3c
+# Backported in version v5.15.99 29962c478e8b2e6a6154d8d84b8806dbe36f9c28
+# Backported in version v6.1.16 029c1410e345ce579db5c007276340d072aac54a
+# Backported in version v6.2.3 182ea492aae5b64067277e60a4ea5995c4628555
+CVE_CHECK_IGNORE += "CVE-2023-1118"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-1281
+# Introduced in version v4.14 9b0d4446b56904b59ae3809913b0ac760fa941a6
+# Patched in kernel since v6.2 ee059170b1f7e94e55fa6cadee544e176a6e59c2
+# Backported in version v5.10.169 eb8e9d8572d1d9df17272783ad8a84843ce559d4
+# Backported in version v5.15.95 becf55394f6acb60dd60634a1c797e73c747f9da
+# Backported in version v6.1.13 bd662ba56187b5ef8a62a3511371cd38299a507f
+CVE_CHECK_IGNORE += "CVE-2023-1281"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-1513
+# Patched in kernel since v6.2 2c10b61421a28e95a46ab489fd56c0f442ff6952
+# Backported in version v5.4.232 9f95a161a7deef62d6d2f57b1a69f94e0546d8d8
+# Backported in version v5.10.169 6416c2108ba54d569e4c98d3b62ac78cb12e7107
+# Backported in version v5.15.95 35351e3060d67eed8af1575d74b71347a87425d8
+# Backported in version v6.1.13 747ca7c8a0c7bce004709143d1cd6596b79b1deb
+CVE_CHECK_IGNORE += "CVE-2023-1513"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-23005
+# Introduced in version v6.1 7b88bda3761b95856cf97822efe8281c8100067b
+# Patched in kernel since v6.2 4a625ceee8a0ab0273534cb6b432ce6b331db5ee
+# But, the CVE is disputed:
+# > NOTE: this is disputed by third parties because there are no realistic cases
+# > in which a user can cause the alloc_memory_type error case to be reached.
+# See: https://bugzilla.suse.com/show_bug.cgi?id=1208844#c2
+# We can safely ignore it.
+CVE_CHECK_IGNORE += "CVE-2023-23005"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-28466
+# Introduced in version v4.13 3c4d7559159bfe1e3b94df3a657b2cda3a34e218
+# Patched in kernel since v6.3-rc2 49c47cc21b5b7a3d8deb18fc57b0aa2ab1286962
+# Backported in version v5.15.105 0b54d75aa43a1edebc8a3770901f5c3557ee0daa
+# Backported in version v6.1.20 14c17c673e1bba08032d245d5fb025d1cbfee123
+# Backported in version v6.2.7 5231fa057bb0e52095591b303cf95ebd17bc62ce
+CVE_CHECK_IGNORE += "CVE-2023-28466"
+
 # Wrong CPE in NVD database
 # https://nvd.nist.gov/vuln/detail/CVE-2022-3563
 # https://nvd.nist.gov/vuln/detail/CVE-2022-3637
diff --git a/poky/meta/conf/distro/include/tcmode-default.inc b/poky/meta/conf/distro/include/tcmode-default.inc
index ef61377..f9e88ca 100644
--- a/poky/meta/conf/distro/include/tcmode-default.inc
+++ b/poky/meta/conf/distro/include/tcmode-default.inc
@@ -25,7 +25,7 @@
 QEMUVERSION ?= "7.2%"
 GOVERSION ?= "1.20%"
 LLVMVERSION ?= "15.%"
-RUSTVERSION ?= "1.67%"
+RUSTVERSION ?= "1.68%"
 
 PREFERRED_VERSION_gcc ?= "${GCCVERSION}"
 PREFERRED_VERSION_gcc-cross-${TARGET_ARCH} ?= "${GCCVERSION}"
diff --git a/poky/meta/lib/oe/gpg_sign.py b/poky/meta/lib/oe/gpg_sign.py
index 613dab8..ede6186 100644
--- a/poky/meta/lib/oe/gpg_sign.py
+++ b/poky/meta/lib/oe/gpg_sign.py
@@ -5,11 +5,12 @@
 #
 
 """Helper module for GPG signing"""
-import os
 
 import bb
-import subprocess
+import os
 import shlex
+import subprocess
+import tempfile
 
 class LocalSigner(object):
     """Class for handling local (on the build host) signing"""
@@ -73,8 +74,6 @@
             cmd += ['--homedir', self.gpg_path]
         if armor:
             cmd += ['--armor']
-        if output_suffix:
-            cmd += ['-o', input_file + "." + output_suffix]
         if use_sha256:
             cmd += ['--digest-algo', "SHA256"]
 
@@ -83,19 +82,27 @@
         if self.gpg_version > (2,1,):
             cmd += ['--pinentry-mode', 'loopback']
 
-        cmd += [input_file]
-
         try:
             if passphrase_file:
                 with open(passphrase_file) as fobj:
                     passphrase = fobj.readline();
 
-            job = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
-            (_, stderr) = job.communicate(passphrase.encode("utf-8"))
+            if not output_suffix:
+                output_suffix = 'asc' if armor else 'sig'
+            output_file = input_file + "." + output_suffix
+            with tempfile.TemporaryDirectory(dir=os.path.dirname(output_file)) as tmp_dir:
+                tmp_file = os.path.join(tmp_dir, os.path.basename(output_file))
+                cmd += ['-o', tmp_file]
 
-            if job.returncode:
-                bb.fatal("GPG exited with code %d: %s" % (job.returncode, stderr.decode("utf-8")))
+                cmd += [input_file]
 
+                job = subprocess.Popen(cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
+                (_, stderr) = job.communicate(passphrase.encode("utf-8"))
+
+                if job.returncode:
+                    bb.fatal("GPG exited with code %d: %s" % (job.returncode, stderr.decode("utf-8")))
+
+                os.rename(tmp_file, output_file)
         except IOError as e:
             bb.error("IO error (%s): %s" % (e.errno, e.strerror))
             raise Exception("Failed to sign '%s'" % input_file)
diff --git a/poky/meta/lib/oe/patch.py b/poky/meta/lib/oe/patch.py
index b2dc8d0..d047b3b 100644
--- a/poky/meta/lib/oe/patch.py
+++ b/poky/meta/lib/oe/patch.py
@@ -499,6 +499,36 @@
         finally:
             shutil.rmtree(tempdir)
 
+    def _need_dirty_check(self):
+        fetch = bb.fetch2.Fetch([], self.d)
+        check_dirtyness = False
+        for url in fetch.urls:
+            url_data = fetch.ud[url]
+            parm = url_data.parm
+            # a git url with subpath param will surely be dirty
+            # since the git tree from which we clone will be emptied
+            # from all files that are not in the subpath
+            if url_data.type == 'git' and parm.get('subpath'):
+                check_dirtyness = True
+        return check_dirtyness
+
+    def _commitpatch(self, patch, patchfilevar):
+        output = ""
+        # Add all files
+        shellcmd = ["git", "add", "-f", "-A", "."]
+        output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
+        # Exclude the patches directory
+        shellcmd = ["git", "reset", "HEAD", self.patchdir]
+        output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
+        # Commit the result
+        (tmpfile, shellcmd) = self.prepareCommit(patch['file'], self.commituser, self.commitemail)
+        try:
+            shellcmd.insert(0, patchfilevar)
+            output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
+        finally:
+            os.remove(tmpfile)
+        return output
+
     def _applypatch(self, patch, force = False, reverse = False, run = True):
         import shutil
 
@@ -534,6 +564,19 @@
         shutil.copy2(commithook, applyhook)
         try:
             patchfilevar = 'PATCHFILE="%s"' % os.path.basename(patch['file'])
+            if self._need_dirty_check():
+                # Check dirtyness of the tree
+                try:
+                    output = runcmd(["git", "--work-tree=%s" % reporoot, "status", "--short"])
+                except CmdError:
+                    pass
+                else:
+                    if output:
+                        # The tree is dirty, not need to try to apply patches with git anymore
+                        # since they fail, fallback directly to patch
+                        output = PatchTree._applypatch(self, patch, force, reverse, run)
+                        output += self._commitpatch(patch, patchfilevar)
+                        return output
             try:
                 shellcmd = [patchfilevar, "git", "--work-tree=%s" % reporoot]
                 self.gitCommandUserOptions(shellcmd, self.commituser, self.commitemail)
@@ -560,19 +603,7 @@
                 except CmdError:
                     # Fall back to patch
                     output = PatchTree._applypatch(self, patch, force, reverse, run)
-                # Add all files
-                shellcmd = ["git", "add", "-f", "-A", "."]
-                output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
-                # Exclude the patches directory
-                shellcmd = ["git", "reset", "HEAD", self.patchdir]
-                output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
-                # Commit the result
-                (tmpfile, shellcmd) = self.prepareCommit(patch['file'], self.commituser, self.commitemail)
-                try:
-                    shellcmd.insert(0, patchfilevar)
-                    output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir)
-                finally:
-                    os.remove(tmpfile)
+                output += self._commitpatch(patch, patchfilevar)
                 return output
         finally:
             shutil.rmtree(hooks_dir)
diff --git a/poky/meta/lib/oeqa/core/loader.py b/poky/meta/lib/oeqa/core/loader.py
index f25b597..d12d5a0 100644
--- a/poky/meta/lib/oeqa/core/loader.py
+++ b/poky/meta/lib/oeqa/core/loader.py
@@ -316,6 +316,9 @@
                                   module_name_small in self.modules) \
                                else False
 
+        if any(c.isupper() for c in module.__name__):
+            raise SystemExit("Module '%s' contains uppercase characters and this isn't supported. Please fix the module name." % module.__name__)
+
         return (load_module, load_underscore)
 
 
diff --git a/poky/meta/lib/oeqa/runtime/cases/apt.py b/poky/meta/lib/oeqa/runtime/cases/apt.py
index 4e09374..8000645 100644
--- a/poky/meta/lib/oeqa/runtime/cases/apt.py
+++ b/poky/meta/lib/oeqa/runtime/cases/apt.py
@@ -39,9 +39,9 @@
         self.target.run('cd %s; echo deb [ allow-insecure=yes ] %s/all ./ > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
 
     def setup_source_config_for_package_install_signed(self):
-        apt_get_source_server = 'http:\/\/%s:%s' % (self.tc.target.server_ip, self.repo_server.port)
+        apt_get_source_server = 'http://%s:%s' % (self.tc.target.server_ip, self.repo_server.port)
         apt_get_sourceslist_dir = '/etc/apt/'
-        self.target.run("cd %s; cp sources.list sources.list.bak; sed -i 's/\[trusted=yes\] http:\/\/bogus_ip:bogus_port/%s/g' sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
+        self.target.run("cd %s; cp sources.list sources.list.bak; sed -i 's|\[trusted=yes\] http://bogus_ip:bogus_port|%s|g' sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
 
     def cleanup_source_config_for_package_install(self):
         apt_get_sourceslist_dir = '/etc/apt/'
diff --git a/poky/meta/lib/oeqa/runtime/cases/buildcpio.py b/poky/meta/lib/oeqa/runtime/cases/buildcpio.py
index bd3b46d..3728855 100644
--- a/poky/meta/lib/oeqa/runtime/cases/buildcpio.py
+++ b/poky/meta/lib/oeqa/runtime/cases/buildcpio.py
@@ -29,7 +29,10 @@
     @OEHasPackage(['autoconf'])
     def test_cpio(self):
         self.project.download_archive()
-        self.project.run_configure('--disable-maintainer-mode',
-                                   'sed -i -e "/char \*program_name/d" src/global.c;')
+        self.project.run_configure('--disable-maintainer-mode')
+        # This sed is needed until
+        # https://git.savannah.gnu.org/cgit/cpio.git/commit/src/global.c?id=641d3f489cf6238bb916368d4ba0d9325a235afb
+        # is in a release.
+        self.project._run(r'sed -i -e "/char \*program_name/d" %s/src/global.c' % self.project.targetdir)
         self.project.run_make()
         self.project.run_install()
diff --git a/poky/meta/lib/oeqa/runtime/cases/ping.py b/poky/meta/lib/oeqa/runtime/cases/ping.py
index 967b441..f72460e 100644
--- a/poky/meta/lib/oeqa/runtime/cases/ping.py
+++ b/poky/meta/lib/oeqa/runtime/cases/ping.py
@@ -5,6 +5,7 @@
 #
 
 from subprocess import Popen, PIPE
+from time import sleep
 
 from oeqa.runtime.case import OERuntimeTestCase
 from oeqa.core.decorator.oetimeout import OETimeout
@@ -16,6 +17,7 @@
     def test_ping(self):
         output = ''
         count = 0
+        self.assertNotEqual(len(self.target.ip), 0, msg="No target IP address set")
         try:
             while count < 5:
                 cmd = 'ping -c 1 %s' % self.target.ip
@@ -25,6 +27,7 @@
                     count += 1
                 else:
                     count = 0
+                    sleep(1)
         except OEQATimeoutError:
             self.fail("Ping timeout error for address %s, count %s, output: %s" % (self.target.ip, count, output))
         msg = ('Expected 5 consecutive, got %d.\n'
diff --git a/poky/meta/lib/oeqa/runtime/cases/systemd.py b/poky/meta/lib/oeqa/runtime/cases/systemd.py
index 720b4b5..37f2954 100644
--- a/poky/meta/lib/oeqa/runtime/cases/systemd.py
+++ b/poky/meta/lib/oeqa/runtime/cases/systemd.py
@@ -154,7 +154,7 @@
         """
 
         # The expression chain that uniquely identifies the time boot message.
-        expr_items=['Startup finished', 'kernel', 'userspace','\.$']
+        expr_items=['Startup finished', 'kernel', 'userspace', r'\.$']
         try:
             output = self.journalctl(args='-o cat --reverse')
         except AssertionError:
diff --git a/poky/meta/lib/oeqa/selftest/cases/bblogging.py b/poky/meta/lib/oeqa/selftest/cases/bblogging.py
index 1534a36..040c6db 100644
--- a/poky/meta/lib/oeqa/selftest/cases/bblogging.py
+++ b/poky/meta/lib/oeqa/selftest/cases/bblogging.py
@@ -105,16 +105,14 @@
         self.write_config('BBINCLUDELOGS = ""')
         result = bitbake("logging-test -c pythontest_exit -f -v", ignore_status = True)
         self.assertIn("ERROR: Logfile of failure stored in:", result.output)
-        # python tasks don't log output with -v currently
-        #self.assertCount(result.output, "This is python stdout", 1)
+        self.assertCount(result.output, "This is python stdout", 1)
 
     def test_python_exit_loggingD(self):
         # logs, verbose
         self.write_config('BBINCLUDELOGS = "yes"')
         result = bitbake("logging-test -c pythontest_exit -f -v", ignore_status = True)
         self.assertIn("ERROR: Logfile of failure stored in:", result.output)
-        # python tasks don't log output with -v currently
-        #self.assertCount(result.output, "This is python stdout", 1)
+        self.assertCount(result.output, "This is python stdout", 1)
 
     def test_python_exec_func_python_loggingA(self):
         # no logs, no verbose
@@ -139,8 +137,7 @@
         result = bitbake("logging-test -c pythontest_exec_func_python -f -v",
                          ignore_status = True)
         self.assertIn("ERROR: Logfile of failure stored in:", result.output)
-        # python tasks don't log output with -v currently
-        #self.assertCount(result.output, "This is python stdout", 1)
+        self.assertCount(result.output, "This is python stdout", 1)
 
     def test_python_exec_func_python_loggingD(self):
         # logs, verbose
@@ -148,8 +145,7 @@
         result = bitbake("logging-test -c pythontest_exec_func_python -f -v",
                          ignore_status = True)
         self.assertIn("ERROR: Logfile of failure stored in:", result.output)
-        # python tasks don't log output with -v currently
-        #self.assertCount(result.output, "This is python stdout", 1)
+        self.assertCount(result.output, "This is python stdout", 1)
 
     def test_python_fatal_loggingA(self):
         # no logs, no verbose
@@ -173,8 +169,7 @@
         self.write_config('BBINCLUDELOGS = ""')
         result = bitbake("logging-test -c pythontest_fatal -f -v", ignore_status = True)
         self.assertIn("ERROR: Logfile of failure stored in:", result.output)
-        # python tasks don't log output with -v currently
-        #self.assertCount(result.output, "This is python fatal test stdout", 1)
+        self.assertCount(result.output, "This is python fatal test stdout", 1)
         self.assertCount(result.output, "This is a fatal error", 1)
 
     def test_python_fatal_loggingD(self):
@@ -182,7 +177,6 @@
         self.write_config('BBINCLUDELOGS = "yes"')
         result = bitbake("logging-test -c pythontest_fatal -f -v", ignore_status = True)
         self.assertIn("ERROR: Logfile of failure stored in:", result.output)
-        # python tasks don't log output with -v currently
-        #self.assertCount(result.output, "This is python fatal test stdout", 1)
+        self.assertCount(result.output, "This is python fatal test stdout", 1)
         self.assertCount(result.output, "This is a fatal error", 1)
 
diff --git a/poky/meta/lib/oeqa/selftest/cases/devtool.py b/poky/meta/lib/oeqa/selftest/cases/devtool.py
index 81d0201..94873fd 100644
--- a/poky/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/poky/meta/lib/oeqa/selftest/cases/devtool.py
@@ -848,6 +848,99 @@
         # Try building
         bitbake(testrecipe)
 
+    def test_devtool_modify_git_crates_subpath(self):
+        # This tests two things in devtool context:
+        #   - that we support local git dependencies for cargo based recipe
+        #   - that we support patches in SRC_URI when git url contains subpath parameter
+
+        # Check preconditions:
+        #    recipe inherits cargo
+        #    git:// uri with a subpath as the main package
+        #    some crate:// in SRC_URI
+        #    others git:// in SRC_URI
+        #    cointains a patch
+        testrecipe = 'zvariant'
+        bb_vars = get_bb_vars(['SRC_URI', 'FILE', 'WORKDIR', 'CARGO_HOME'], testrecipe)
+        recipefile = bb_vars['FILE']
+        workdir = bb_vars['WORKDIR']
+        cargo_home = bb_vars['CARGO_HOME']
+        src_uri = bb_vars['SRC_URI'].split()
+        self.assertTrue(src_uri[0].startswith('git://'),
+                        'This test expects the %s recipe to have a git repo has its main uri' % testrecipe)
+        self.assertIn(';subpath=', src_uri[0],
+                      'This test expects the %s recipe to have a git uri with subpath' % testrecipe)
+        self.assertTrue(any([uri.startswith('crate://') for uri in src_uri]),
+                        'This test expects the %s recipe to have some crates in its src uris' % testrecipe)
+        self.assertGreater(sum(map(lambda x:x.startswith('git://'), src_uri)), 2,
+                           'This test expects the %s recipe to have several git:// uris' % testrecipe)
+        self.assertTrue(any([uri.startswith('file://') and '.patch' in uri for uri in src_uri]),
+                        'This test expects the %s recipe to have a patch in its src uris' % testrecipe)
+
+        self._test_recipe_contents(recipefile, {}, ['cargo'])
+
+        # Clean up anything in the workdir/sysroot/sstate cache
+        bitbake('%s -c cleansstate' % testrecipe)
+        # Try modifying a recipe
+        tempdir = tempfile.mkdtemp(prefix='devtoolqa')
+        self.track_for_cleanup(tempdir)
+        self.track_for_cleanup(self.workspacedir)
+        self.add_command_to_tearDown('bitbake -c clean %s' % testrecipe)
+        self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+        result = runCmd('devtool modify %s -x %s' % (testrecipe, tempdir))
+        self.assertExists(os.path.join(tempdir, 'Cargo.toml'), 'Extracted source could not be found')
+        self.assertExists(os.path.join(self.workspacedir, 'conf', 'layer.conf'), 'Workspace directory not created. devtool output: %s' % result.output)
+        matches = glob.glob(os.path.join(self.workspacedir, 'appends', 'zvariant_*.bbappend'))
+        self.assertTrue(matches, 'bbappend not created')
+        # Test devtool status
+        result = runCmd('devtool status')
+        self.assertIn(testrecipe, result.output)
+        self.assertIn(tempdir, result.output)
+        # Check git repo
+        self._check_src_repo(tempdir)
+        # Check that the patch is correctly applied
+        # last commit message in the tree must contain
+        # %% original patch: <patchname>
+        # ..
+        patchname = None
+        for uri in src_uri:
+            if uri.startswith('file://') and '.patch' in uri:
+                patchname = uri.replace("file://", "").partition('.patch')[0] + '.patch'
+        self.assertIsNotNone(patchname)
+        result = runCmd('git -C %s log -1' % tempdir)
+        self.assertIn("%%%% original patch: %s" % patchname, result.output)
+
+        # Configure the recipe to check that the git dependencies are correctly patched in cargo config
+        bitbake('-c configure %s' % testrecipe)
+
+        cargo_config_path = os.path.join(cargo_home, 'config')
+        with open(cargo_config_path, "r") as f:
+            cargo_config_contents = [line.strip('\n') for line in f.readlines()]
+
+        # Get back git dependencies of the recipe (ignoring the main one)
+        # and check that they are all correctly patched to be fetched locally
+        git_deps = [uri for uri in src_uri if uri.startswith("git://")][1:]
+        for git_dep in git_deps:
+            raw_url, _, raw_parms = git_dep.partition(";")
+            parms = {}
+            for parm in raw_parms.split(";"):
+                name_parm, _, value_parm = parm.partition('=')
+                parms[name_parm]=value_parm
+            self.assertIn('protocol', parms, 'git dependencies uri should contain the "protocol" parameter')
+            self.assertIn('name', parms, 'git dependencies uri should contain the "name" parameter')
+            self.assertIn('destsuffix', parms, 'git dependencies uri should contain the "destsuffix" parameter')
+            self.assertIn('type', parms, 'git dependencies uri should contain the "type" parameter')
+            self.assertEqual(parms['type'], 'git-dependency', 'git dependencies uri should have "type=git-dependency"')
+            raw_url = raw_url.replace("git://", '%s://' % parms['protocol'])
+            patch_line = '[patch."%s"]' % raw_url
+            path_patched = os.path.join(workdir, parms['destsuffix'])
+            path_override_line = '%s = { path = "%s" }' % (parms['name'], path_patched)
+            # Would have been better to use tomllib to read this file :/
+            self.assertIn(patch_line, cargo_config_contents)
+            self.assertIn(path_override_line, cargo_config_contents)
+
+        # Try to package the recipe
+        bitbake('-c package_qa %s' % testrecipe)
+
     def test_devtool_modify_localfiles(self):
         # Check preconditions
         testrecipe = 'lighttpd'
diff --git a/poky/meta/lib/oeqa/selftest/cases/efibootpartition.py b/poky/meta/lib/oeqa/selftest/cases/efibootpartition.py
index e17da9f..fa74103 100644
--- a/poky/meta/lib/oeqa/selftest/cases/efibootpartition.py
+++ b/poky/meta/lib/oeqa/selftest/cases/efibootpartition.py
@@ -15,7 +15,7 @@
     @skipIfNotMachine("qemux86-64", "test is qemux86-64 specific currently")
     def test_boot_efi(self):
         cmd = "runqemu nographic serial wic ovmf"
-        if oe.types.qemu_use_kvm(self.td['QEMU_USE_KVM'], self.td["TARGET_ARCH"]):
+        if oe.types.qemu_use_kvm(self.td.get('QEMU_USE_KVM', 0), self.td["TARGET_ARCH"]):
             cmd += " kvm"
         image = "core-image-minimal"
 
diff --git a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py
index d31b43d..0292c88 100644
--- a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py
+++ b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py
@@ -229,10 +229,10 @@
                     self.assertTrue(os.path.exists(image_path),
                                     "%s image %s doesn't exist" % (itype, image_path))
             else:
-            	image_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s.%s" % (bb_vars['IMAGE_LINK_NAME'], itype))
-            	# check if result image is in deploy directory
-            	self.assertTrue(os.path.exists(image_path),
-                            "%s image %s doesn't exist" % (itype, image_path))
+                image_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s.%s" % (bb_vars['IMAGE_LINK_NAME'], itype))
+                # check if result image is in deploy directory
+                self.assertTrue(os.path.exists(image_path),
+                                "%s image %s doesn't exist" % (itype, image_path))
 
     def test_useradd_static(self):
         config = """
diff --git a/poky/meta/lib/oeqa/selftest/cases/runqemu.py b/poky/meta/lib/oeqa/selftest/cases/runqemu.py
index e72ff52..f01e1ee 100644
--- a/poky/meta/lib/oeqa/selftest/cases/runqemu.py
+++ b/poky/meta/lib/oeqa/selftest/cases/runqemu.py
@@ -4,14 +4,15 @@
 # SPDX-License-Identifier: MIT
 #
 
+import os
 import re
-import tempfile
 import time
 import oe.types
 from oeqa.core.decorator import OETestTag
 from oeqa.core.decorator.data import skipIfNotArch, skipIfNotMachine
 from oeqa.selftest.case import OESelftestTestCase
-from oeqa.utils.commands import bitbake, runqemu, get_bb_var, runCmd
+from oeqa.utils.commands import bitbake, runqemu, get_bb_var
+
 
 @OETestTag("runqemu")
 class RunqemuTests(OESelftestTestCase):
@@ -23,8 +24,8 @@
     def setUpLocal(self):
         super(RunqemuTests, self).setUpLocal()
         self.recipe = 'core-image-minimal'
-        self.machine =  self.td['MACHINE']
-        self.image_link_name =  get_bb_var('IMAGE_LINK_NAME', self.recipe)
+        self.machine = self.td['MACHINE']
+        self.image_link_name = get_bb_var('IMAGE_LINK_NAME', self.recipe)
 
         self.fstypes = "ext4"
         if self.td["HOST_ARCH"] in ('i586', 'i686', 'x86_64'):
@@ -61,7 +62,8 @@
         cmd = "%s %s ext4" % (self.cmd_common, self.machine)
         with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
             with open(qemu.qemurunnerlog) as f:
-                self.assertIn('rootfs.ext4', f.read(), "Failed: %s" % cmd)
+                regexp = r'\nROOTFS: .*\.ext4]\n'
+                self.assertRegex(f.read(), regexp, "Failed to find '%s' in '%s' after running '%s'" % (regexp, qemu.qemurunnerlog, cmd))
 
     @skipIfNotArch(['i586', 'i686', 'x86_64'])
     def test_boot_machine_iso(self):
@@ -69,7 +71,8 @@
         cmd = "%s %s iso" % (self.cmd_common, self.machine)
         with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
             with open(qemu.qemurunnerlog) as f:
-                self.assertIn('media=cdrom', f.read(), "Failed: %s" % cmd)
+                text_in = 'media=cdrom'
+                self.assertIn(text_in, f.read(), "Failed to find '%s' in '%s' after running '%s'" % (text_in, qemu.qemurunnerlog, cmd))
 
     def test_boot_recipe_image(self):
         """Test runqemu recipe-image"""
@@ -85,7 +88,8 @@
         cmd = "%s %s wic.vmdk" % (self.cmd_common, self.recipe)
         with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
             with open(qemu.qemurunnerlog) as f:
-                self.assertIn('format=vmdk', f.read(), "Failed: %s" % cmd)
+                text_in = 'format=vmdk'
+                self.assertIn(text_in, f.read(), "Failed to find '%s' in '%s' after running '%s'" % (text_in, qemu.qemurunnerlog, cmd))
 
     @skipIfNotMachine("qemux86-64", "tests are qemux86-64 specific currently")
     def test_boot_recipe_image_vdi(self):
@@ -93,7 +97,8 @@
         cmd = "%s %s wic.vdi" % (self.cmd_common, self.recipe)
         with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu:
             with open(qemu.qemurunnerlog) as f:
-                self.assertIn('format=vdi', f.read(), "Failed: %s" % cmd)
+                text_in = 'format=vdi'
+                self.assertIn(text_in, f.read(), "Failed to find '%s' in '%s' after running '%s'" % (text_in, qemu.qemurunnerlog, cmd))
 
     def test_boot_deploy(self):
         """Test runqemu deploy_dir_image"""
@@ -102,7 +107,6 @@
             with open(qemu.qemurunnerlog) as f:
                 self.assertTrue(qemu.runner.logged, "Failed: %s, %s" % (cmd, f.read()))
 
-
     @skipIfNotArch(['i586', 'i686', 'x86_64'])
     def test_boot_deploy_hddimg(self):
         """Test runqemu deploy_dir_image hddimg"""
@@ -166,9 +170,9 @@
     def setUpClass(cls):
         super(QemuTest, cls).setUpClass()
         cls.recipe = 'core-image-minimal'
-        cls.machine =  get_bb_var('MACHINE')
-        cls.deploy_dir_image =  get_bb_var('DEPLOY_DIR_IMAGE')
-        cls.image_link_name =  get_bb_var('IMAGE_LINK_NAME', cls.recipe)
+        cls.machine = get_bb_var('MACHINE')
+        cls.deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+        cls.image_link_name = get_bb_var('IMAGE_LINK_NAME', cls.recipe)
         cls.cmd_common = "runqemu nographic"
         cls.qemuboot_conf = "%s.qemuboot.conf" % (cls.image_link_name)
         cls.qemuboot_conf = os.path.join(cls.deploy_dir_image, cls.qemuboot_conf)
diff --git a/poky/meta/lib/oeqa/targetcontrol.py b/poky/meta/lib/oeqa/targetcontrol.py
index 1fdff82..d686fe0 100644
--- a/poky/meta/lib/oeqa/targetcontrol.py
+++ b/poky/meta/lib/oeqa/targetcontrol.py
@@ -7,18 +7,14 @@
 # This module is used by testimage.bbclass for setting up and controlling a target machine.
 
 import os
-import shutil
 import subprocess
 import bb
-import traceback
-import sys
 import logging
 from oeqa.utils.sshcontrol import SSHControl
 from oeqa.utils.qemurunner import QemuRunner
 from oeqa.utils.qemutinyrunner import QemuTinyRunner
 from oeqa.utils.dump import TargetDumper
 from oeqa.utils.dump import MonitorDumper
-from oeqa.controllers.testtargetloader import TestTargetLoader
 from abc import ABCMeta, abstractmethod
 
 class BaseTarget(object, metaclass=ABCMeta):
@@ -42,7 +38,7 @@
         if os.path.islink(sshloglink):
             os.unlink(sshloglink)
         os.symlink(self.sshlog, sshloglink)
-        self.logger.info("SSH log file: %s" %  self.sshlog)
+        self.logger.info("SSH log file: %s" % self.sshlog)
 
     @abstractmethod
     def start(self, params=None, ssh=True, extra_bootparams=None):
@@ -145,7 +141,7 @@
                             boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT")),
                             use_kvm = use_kvm,
                             dump_dir = dump_dir,
-                            dump_host_cmds = d.getVar("testimage_dump_host"),
+                            dump_host_cmds = dump_host_cmds,
                             logger = logger,
                             tmpfsdir = d.getVar("RUNQEMU_TMPFS_DIR"),
                             serial_ports = len(d.getVar("SERIAL_CONSOLES").split()))
@@ -163,7 +159,7 @@
             os.unlink(qemuloglink)
         os.symlink(self.qemulog, qemuloglink)
 
-        self.logger.info("rootfs file: %s" %  self.rootfs)
+        self.logger.info("rootfs file: %s" % self.rootfs)
         self.logger.info("Qemu log file: %s" % self.qemulog)
         super(QemuTarget, self).deploy()
 
@@ -205,7 +201,7 @@
             self.server_ip = self.runner.server_ip
             self.connection = SSHControl(ip=self.ip, logfile=self.sshlog)
         else:
-            raise RuntimError("%s - FAILED to re-start qemu - check the task log and the boot log" % self.pn)
+            raise RuntimeError("%s - FAILED to re-start qemu - check the task log and the boot log" % self.pn)
 
     def run_serial(self, command, timeout=60):
         return self.runner.run_serial(command, timeout=timeout)
diff --git a/poky/meta/lib/oeqa/utils/commands.py b/poky/meta/lib/oeqa/utils/commands.py
index f4daea2..c1f5338 100644
--- a/poky/meta/lib/oeqa/utils/commands.py
+++ b/poky/meta/lib/oeqa/utils/commands.py
@@ -8,11 +8,8 @@
 # This module is mainly used by scripts/oe-selftest and modules under meta/oeqa/selftest
 # It provides a class and methods for running commands on the host in a convienent way for tests.
 
-
-
 import os
 import sys
-import signal
 import subprocess
 import threading
 import time
@@ -21,6 +18,7 @@
 from oeqa.utils import ftools
 import re
 import contextlib
+import errno
 # Export test doesn't require bb
 try:
     import bb
@@ -85,7 +83,7 @@
             except OSError as ex:
                 # It's not an error when the command does not consume all
                 # of our data. subprocess.communicate() also ignores that.
-                if ex.errno != EPIPE:
+                if ex.errno != errno.EPIPE:
                     raise
 
         # We write in a separate thread because then we can read
@@ -117,7 +115,7 @@
             else:
                 deadline = time.time() + self.timeout
                 for thread in self.threads:
-                    timeout = deadline - time.time() 
+                    timeout = deadline - time.time()
                     if timeout < 0:
                         timeout = 0
                     thread.join(timeout)
diff --git a/poky/meta/lib/oeqa/utils/qemurunner.py b/poky/meta/lib/oeqa/utils/qemurunner.py
index 0538576..6734cee 100644
--- a/poky/meta/lib/oeqa/utils/qemurunner.py
+++ b/poky/meta/lib/oeqa/utils/qemurunner.py
@@ -238,7 +238,7 @@
         self.origchldhandler = signal.getsignal(signal.SIGCHLD)
         signal.signal(signal.SIGCHLD, self.handleSIGCHLD)
 
-        self.logger.debug('launchcmd=%s'%(launch_cmd))
+        self.logger.debug('launchcmd=%s' % (launch_cmd))
 
         # FIXME: We pass in stdin=subprocess.PIPE here to work around stty
         # blocking at the end of the runqemu script when using this within
@@ -275,7 +275,7 @@
             os._exit(0)
 
         self.logger.debug("runqemu started, pid is %s" % self.runqemu.pid)
-        self.logger.debug("waiting at most %s seconds for qemu pid (%s)" %
+        self.logger.debug("waiting at most %d seconds for qemu pid (%s)" %
                           (self.runqemutime, time.strftime("%D %H:%M:%S")))
         endtime = time.time() + self.runqemutime
         while not self.is_alive() and time.time() < endtime:
@@ -299,7 +299,7 @@
             self.logger.warning('runqemu exited with code %d' % self.runqemu.returncode)
 
         if not self.is_alive():
-            self.logger.error("Qemu pid didn't appear in %s seconds (%s)" %
+            self.logger.error("Qemu pid didn't appear in %d seconds (%s)" %
                               (self.runqemutime, time.strftime("%D %H:%M:%S")))
 
             qemu_pid = None
@@ -332,8 +332,8 @@
         try:
             os.chdir(os.path.dirname(qmp_port))
             try:
-               from qmp.legacy import QEMUMonitorProtocol
-               self.qmp = QEMUMonitorProtocol(os.path.basename(qmp_port))
+                from qmp.legacy import QEMUMonitorProtocol
+                self.qmp = QEMUMonitorProtocol(os.path.basename(qmp_port))
             except OSError as msg:
                 self.logger.warning("Failed to initialize qemu monitor socket: %s File: %s" % (msg, msg.filename))
                 return False
@@ -343,8 +343,8 @@
                 self.logger.debug("QMP Port does not exist waiting for it to be created")
                 endtime = time.time() + self.runqemutime
                 while not os.path.exists(qmp_port) and self.is_alive() and time.time() < endtime:
-                   self.logger.info("QMP port does not exist yet!")
-                   time.sleep(0.5)
+                    self.logger.info("QMP port does not exist yet!")
+                    time.sleep(0.5)
                 if not os.path.exists(qmp_port) and self.is_alive():
                     self.logger.warning("QMP Port still does not exist but QEMU is alive")
                     return False
@@ -354,7 +354,7 @@
                 self.qmp.settimeout(self.runqemutime)
                 self.qmp.connect()
                 connect_time = time.time()
-                self.logger.info("QMP connected to QEMU at %s and took %s seconds" %
+                self.logger.info("QMP connected to QEMU at %s and took %.2f seconds" %
                                   (time.strftime("%D %H:%M:%S"),
                                    time.time() - launch_time))
             except OSError as msg:
@@ -388,14 +388,14 @@
 
         # Release the qemu process to continue running
         self.run_monitor('cont')
-        self.logger.info("QMP released QEMU at %s and took %s seconds from connect" %
+        self.logger.info("QMP released QEMU at %s and took %.2f seconds from connect" %
                           (time.strftime("%D %H:%M:%S"),
                            time.time() - connect_time))
 
         # We are alive: qemu is running
         out = self.getOutput(output)
         netconf = False # network configuration is not required by default
-        self.logger.debug("qemu started in %s seconds - qemu procces pid is %s (%s)" %
+        self.logger.debug("qemu started in %.2f seconds - qemu procces pid is %s (%s)" %
                           (time.time() - (endtime - self.runqemutime),
                            self.qemupid, time.strftime("%D %H:%M:%S")))
         cmdline = ''
@@ -419,7 +419,7 @@
             except (IndexError, ValueError):
                 # Try to get network configuration from runqemu output
                 match = re.match(r'.*Network configuration: (?:ip=)*([0-9.]+)::([0-9.]+):([0-9.]+).*',
-                                 out, re.MULTILINE|re.DOTALL)
+                                 out, re.MULTILINE | re.DOTALL)
                 if match:
                     self.ip, self.server_ip, self.netmask = match.groups()
                     # network configuration is required as we couldn't get it
@@ -486,9 +486,9 @@
                             self.server_socket = qemusock
                             stopread = True
                             reachedlogin = True
-                            self.logger.debug("Reached login banner in %s seconds (%s, %s)" %
+                            self.logger.debug("Reached login banner in %.2f seconds (%s)" %
                                               (time.time() - (endtime - self.boottime),
-                                              time.strftime("%D %H:%M:%S"), time.time()))
+                                              time.strftime("%D %H:%M:%S")))
                     else:
                         # no need to check if reachedlogin unless we support multiple connections
                         self.logger.debug("QEMU socket disconnected before login banner reached. (%s)" %
@@ -516,7 +516,7 @@
             (status, output) = self.run_serial(self.boot_patterns['send_login_user'], raw=True, timeout=120)
             if re.search(self.boot_patterns['search_login_succeeded'], output):
                 self.logged = True
-                self.logger.debug("Logged as root in serial console")
+                self.logger.debug("Logged in as %s in serial console" % self.boot_patterns['send_login_user'].replace("\n", ""))
                 if netconf:
                     # configure guest networking
                     cmd = "ifconfig eth0 %s netmask %s up\n" % (self.ip, self.netmask)
@@ -527,7 +527,7 @@
                         self.logger.debug("Couldn't configure guest networking")
             else:
                 self.logger.warning("Couldn't login into serial console"
-                            " as root using blank password")
+                            " as %s using blank password" % self.boot_patterns['send_login_user'].replace("\n", ""))
                 self.logger.warning("The output:\n%s" % output)
         except:
             self.logger.warning("Serial console failed while trying to login")
@@ -548,12 +548,12 @@
                     if e.errno != errno.ESRCH:
                         raise
             try:
-                outs, errs = self.runqemu.communicate(timeout = self.runqemutime)
+                outs, errs = self.runqemu.communicate(timeout=self.runqemutime)
                 if outs:
                     self.logger.info("Output from runqemu:\n%s", outs.decode("utf-8"))
                 if errs:
                     self.logger.info("Stderr from runqemu:\n%s", errs.decode("utf-8"))
-            except TimeoutExpired:
+            except subprocess.TimeoutExpired:
                 self.logger.debug("Sending SIGKILL to runqemu")
                 os.killpg(os.getpgid(self.runqemu.pid), signal.SIGKILL)
             if not self.runqemu.stdout.closed:
diff --git a/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb b/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb
index a830385..bf6835e 100644
--- a/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb
+++ b/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb
@@ -35,7 +35,7 @@
 # Issue only affects Debian/SUSE, not us
 CVE_CHECK_IGNORE += "CVE-2021-26720"
 
-DEPENDS = "expat libcap libdaemon glib-2.0"
+DEPENDS = "expat libcap libdaemon glib-2.0 glib-2.0-native gobject-introspection"
 
 # For gtk related PACKAGECONFIGs: gtk, gtk3
 AVAHI_GTK ?= ""
diff --git a/poky/meta/recipes-connectivity/bind/bind_9.18.12.bb b/poky/meta/recipes-connectivity/bind/bind_9.18.12.bb
index abce1c0..68dad77 100644
--- a/poky/meta/recipes-connectivity/bind/bind_9.18.12.bb
+++ b/poky/meta/recipes-connectivity/bind/bind_9.18.12.bb
@@ -109,6 +109,5 @@
 # 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"
 
 DEV_PKG_DEPENDENCY = ""
diff --git a/poky/meta/recipes-core/busybox/busybox.inc b/poky/meta/recipes-core/busybox/busybox.inc
index 4569acd..582d879 100644
--- a/poky/meta/recipes-core/busybox/busybox.inc
+++ b/poky/meta/recipes-core/busybox/busybox.inc
@@ -34,6 +34,7 @@
 
 INITSCRIPT_NAME:${PN}-httpd = "busybox-httpd"
 INITSCRIPT_NAME:${PN}-hwclock = "hwclock.sh"
+INITSCRIPT_PARAMS:${PN}-hwclock = "start 40 S . stop 20 0 1 6 ."
 INITSCRIPT_NAME:${PN}-mdev = "mdev"
 INITSCRIPT_PARAMS:${PN}-mdev = "start 04 S ."
 INITSCRIPT_NAME:${PN}-syslog = "syslog"
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 de0813f..a5d7617 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
@@ -26,8 +26,8 @@
 
 REQUIRED_DISTRO_FEATURES += "xattr"
 
-SRCREV ?= "c45d58f003e8d8b323169ca9d479dc49c43a9974"
-SRC_URI = "git://git.yoctoproject.org/poky;branch=master \
+SRCREV ?= "b8007d3c22d8062bc257e3b29c4561ef7758aa28"
+SRC_URI = "git://git.yoctoproject.org/poky;branch=mickledore \
            file://Yocto_Build_Appliance.vmx \
            file://Yocto_Build_Appliance.vmxf \
            file://README_VirtualBox_Guest_Additions.txt \
diff --git a/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb b/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb
new file mode 100644
index 0000000..1c14481
--- /dev/null
+++ b/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb
@@ -0,0 +1,333 @@
+SUMMARY = "Updates the NVD CVE database"
+LICENSE = "MIT"
+
+# Important note:
+# This product uses the NVD API but is not endorsed or certified by the NVD.
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+inherit native
+
+deltask do_unpack
+deltask do_patch
+deltask do_configure
+deltask do_compile
+deltask do_install
+deltask do_populate_sysroot
+
+NVDCVE_URL ?= "https://services.nvd.nist.gov/rest/json/cves/2.0"
+
+# CVE database update interval, in seconds. By default: once a day (24*60*60).
+# Use 0 to force the update
+# Use a negative value to skip the update
+CVE_DB_UPDATE_INTERVAL ?= "86400"
+
+# Timeout for blocking socket operations, such as the connection attempt.
+CVE_SOCKET_TIMEOUT ?= "60"
+
+CVE_DB_TEMP_FILE ?= "${CVE_CHECK_DB_DIR}/temp_nvdcve_2.db"
+
+CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvdcve_2.db"
+
+python () {
+    if not bb.data.inherits_class("cve-check", d):
+        raise bb.parse.SkipRecipe("Skip recipe when cve-check class is not loaded.")
+}
+
+python do_fetch() {
+    """
+    Update NVD database with API 2.0
+    """
+    import bb.utils
+    import bb.progress
+    import shutil
+
+    bb.utils.export_proxies(d)
+
+    db_file = d.getVar("CVE_CHECK_DB_FILE")
+    db_dir = os.path.dirname(db_file)
+    db_tmp_file = d.getVar("CVE_DB_TEMP_FILE")
+
+    cleanup_db_download(db_file, db_tmp_file)
+    # By default let's update the whole database (since time 0)
+    database_time = 0
+
+    # The NVD database changes once a day, so no need to update more frequently
+    # Allow the user to force-update
+    try:
+        import time
+        update_interval = int(d.getVar("CVE_DB_UPDATE_INTERVAL"))
+        if update_interval < 0:
+            bb.note("CVE database update skipped")
+            return
+        if time.time() - os.path.getmtime(db_file) < update_interval:
+            bb.note("CVE database recently updated, skipping")
+            return
+        database_time = os.path.getmtime(db_file)
+
+    except OSError:
+        pass
+
+    bb.utils.mkdirhier(db_dir)
+    if os.path.exists(db_file):
+        shutil.copy2(db_file, db_tmp_file)
+
+    if update_db_file(db_tmp_file, d, database_time) == True:
+        # Update downloaded correctly, can swap files
+        shutil.move(db_tmp_file, db_file)
+    else:
+        # Update failed, do not modify the database
+        bb.warn("CVE database update failed")
+        os.remove(db_tmp_file)
+}
+
+do_fetch[lockfiles] += "${CVE_CHECK_DB_FILE_LOCK}"
+do_fetch[file-checksums] = ""
+do_fetch[vardeps] = ""
+
+def cleanup_db_download(db_file, db_tmp_file):
+    """
+    Cleanup the download space from possible failed downloads
+    """
+
+    # Clean up the updates done on the main file
+    # Remove it only if a journal file exists - it means a complete re-download
+    if os.path.exists("{0}-journal".format(db_file)):
+        # If a journal is present the last update might have been interrupted. In that case,
+        # just wipe any leftovers and force the DB to be recreated.
+        os.remove("{0}-journal".format(db_file))
+
+        if os.path.exists(db_file):
+            os.remove(db_file)
+
+    # Clean-up the temporary file downloads, we can remove both journal
+    # and the temporary database
+    if os.path.exists("{0}-journal".format(db_tmp_file)):
+        # If a journal is present the last update might have been interrupted. In that case,
+        # just wipe any leftovers and force the DB to be recreated.
+        os.remove("{0}-journal".format(db_tmp_file))
+
+    if os.path.exists(db_tmp_file):
+        os.remove(db_tmp_file)
+
+def nvd_request_next(url, api_key, args):
+    """
+    Request next part of the NVD dabase
+    """
+
+    import urllib.request
+    import urllib.parse
+    import gzip
+
+    headers = {}
+    if api_key:
+        headers['apiKey'] = api_key
+
+    data = urllib.parse.urlencode(args)
+
+    full_request = url + '?' + data
+
+    for attempt in range(3):
+        try:
+            r = urllib.request.urlopen(full_request)
+
+            if (r.headers['content-encoding'] == 'gzip'):
+                buf = r.read()
+                raw_data = gzip.decompress(buf)
+            else:
+                raw_data = r.read().decode("utf-8")
+
+            r.close()
+
+        except UnicodeDecodeError:
+            # Received garbage, retry
+            bb.debug(2, "CVE database: received malformed data, retrying (request: %s)" %(full_request))
+            pass
+        except http.client.IncompleteRead:
+            # Read incomplete, let's try again
+            bb.debug(2, "CVE database: received incomplete data, retrying (request: %s)" %(full_request))
+            pass
+        else:
+            return raw_data
+    else:
+        # We failed at all attempts
+        return None
+
+def update_db_file(db_tmp_file, d, database_time):
+    """
+    Update the given database file
+    """
+    import bb.utils, bb.progress
+    import datetime
+    import sqlite3
+    import json
+
+    # Connect to database
+    conn = sqlite3.connect(db_tmp_file)
+    initialize_db(conn)
+
+    req_args = {'startIndex' : 0}
+
+    # The maximum range for time is 120 days
+    # Force a complete update if our range is longer
+    if (database_time != 0):
+        database_date = datetime.datetime.combine(datetime.date.fromtimestamp(database_time), datetime.time())
+        today_date = datetime.datetime.combine(datetime.date.today(), datetime.time())
+        delta = today_date - database_date
+        if delta.days < 120:
+            bb.debug(2, "CVE database: performing partial update")
+            req_args['lastModStartDate'] = database_date.isoformat()
+            req_args['lastModEndDate'] = today_date.isoformat()
+        else:
+            bb.note("CVE database: file too old, forcing a full update")
+
+    with bb.progress.ProgressHandler(d) as ph, open(os.path.join(d.getVar("TMPDIR"), 'cve_check'), 'a') as cve_f:
+
+        bb.debug(2, "Updating entries")
+        index = 0
+        url = d.getVar("NVDCVE_URL")
+        while True:
+            req_args['startIndex'] = index
+            raw_data = nvd_request_next(url, None, req_args)
+            if raw_data is None:
+                # We haven't managed to download data
+                return False
+
+            data = json.loads(raw_data)
+
+            index = data["startIndex"]
+            total = data["totalResults"]
+            per_page = data["resultsPerPage"]
+
+            for cve in data["vulnerabilities"]:
+               update_db(conn, cve)
+
+            index += per_page
+            ph.update((float(index) / (total+1)) * 100)
+            if index >= total:
+               break
+
+            # Recommended by NVD
+            time.sleep(6)
+
+        # Update success, set the date to cve_check file.
+        cve_f.write('CVE database update : %s\n\n' % datetime.date.today())
+
+    conn.commit()
+    conn.close()
+    return True
+
+def initialize_db(conn):
+    with conn:
+        c = conn.cursor()
+
+        c.execute("CREATE TABLE IF NOT EXISTS META (YEAR INTEGER UNIQUE, DATE TEXT)")
+
+        c.execute("CREATE TABLE IF NOT EXISTS NVD (ID TEXT UNIQUE, SUMMARY TEXT, \
+            SCOREV2 TEXT, SCOREV3 TEXT, MODIFIED INTEGER, VECTOR TEXT)")
+
+        c.execute("CREATE TABLE IF NOT EXISTS PRODUCTS (ID TEXT, \
+            VENDOR TEXT, PRODUCT TEXT, VERSION_START TEXT, OPERATOR_START TEXT, \
+            VERSION_END TEXT, OPERATOR_END TEXT)")
+        c.execute("CREATE INDEX IF NOT EXISTS PRODUCT_ID_IDX on PRODUCTS(ID);")
+
+        c.close()
+
+def parse_node_and_insert(conn, node, cveId):
+
+    def cpe_generator():
+        for cpe in node.get('cpeMatch', ()):
+            if not cpe['vulnerable']:
+                return
+            cpe23 = cpe.get('criteria')
+            if not cpe23:
+                return
+            cpe23 = cpe23.split(':')
+            if len(cpe23) < 6:
+                return
+            vendor = cpe23[3]
+            product = cpe23[4]
+            version = cpe23[5]
+
+            if cpe23[6] == '*' or cpe23[6] == '-':
+                version_suffix = ""
+            else:
+                version_suffix = "_" + cpe23[6]
+
+            if version != '*' and version != '-':
+                # Version is defined, this is a '=' match
+                yield [cveId, vendor, product, version + version_suffix, '=', '', '']
+            elif version == '-':
+                # no version information is available
+                yield [cveId, vendor, product, version, '', '', '']
+            else:
+                # Parse start version, end version and operators
+                op_start = ''
+                op_end = ''
+                v_start = ''
+                v_end = ''
+
+                if 'versionStartIncluding' in cpe:
+                    op_start = '>='
+                    v_start = cpe['versionStartIncluding']
+
+                if 'versionStartExcluding' in cpe:
+                    op_start = '>'
+                    v_start = cpe['versionStartExcluding']
+
+                if 'versionEndIncluding' in cpe:
+                    op_end = '<='
+                    v_end = cpe['versionEndIncluding']
+
+                if 'versionEndExcluding' in cpe:
+                    op_end = '<'
+                    v_end = cpe['versionEndExcluding']
+
+                if op_start or op_end or v_start or v_end:
+                    yield [cveId, vendor, product, v_start, op_start, v_end, op_end]
+                else:
+                    # This is no version information, expressed differently.
+                    # Save processing by representing as -.
+                    yield [cveId, vendor, product, '-', '', '', '']
+
+    conn.executemany("insert into PRODUCTS values (?, ?, ?, ?, ?, ?, ?)", cpe_generator()).close()
+
+def update_db(conn, elt):
+    """
+    Update a single entry in the on-disk database
+    """
+
+    accessVector = None
+    cveId = elt['cve']['id']
+    if elt['cve']['vulnStatus'] ==  "Rejected":
+        return
+    cveDesc = ""
+    for desc in elt['cve']['descriptions']:
+        if desc['lang'] == 'en':
+            cveDesc = desc['value']
+    date = elt['cve']['lastModified']
+    try:
+        accessVector = elt['cve']['metrics']['cvssMetricV2'][0]['cvssData']['accessVector']
+        cvssv2 = elt['cve']['metrics']['cvssMetricV2'][0]['cvssData']['baseScore']
+    except KeyError:
+        cvssv2 = 0.0
+    try:
+        accessVector = accessVector or elt['impact']['baseMetricV3']['cvssV3']['attackVector']
+        cvssv3 = elt['impact']['baseMetricV3']['cvssV3']['baseScore']
+    except KeyError:
+        accessVector = accessVector or "UNKNOWN"
+        cvssv3 = 0.0
+
+    conn.execute("insert or replace into NVD values (?, ?, ?, ?, ?, ?)",
+                [cveId, cveDesc, cvssv2, cvssv3, date, accessVector]).close()
+
+    try:
+        configurations = elt['cve']['configurations'][0]['nodes']
+        for config in configurations:
+            parse_node_and_insert(conn, config, cveId)
+    except KeyError:
+        bb.debug(2, "Entry without a configuration")
+
+do_fetch[nostamp] = "1"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/poky/meta/recipes-devtools/go/go-1.20.1.inc b/poky/meta/recipes-devtools/go/go-1.20.1.inc
index b1f5692..179f0e2 100644
--- a/poky/meta/recipes-devtools/go/go-1.20.1.inc
+++ b/poky/meta/recipes-devtools/go/go-1.20.1.inc
@@ -16,5 +16,6 @@
     file://0009-go-Filter-build-paths-on-staticly-linked-arches.patch \
     file://0010-cmd-compile-re-compile-instantiated-generic-methods-.patch \
     file://CVE-2023-24532.patch \
+    file://CVE-2023-24537.patch \
 "
 SRC_URI[main.sha256sum] = "b5c1a3af52c385a6d1c76aed5361cf26459023980d0320de7658bae3915831a2"
diff --git a/poky/meta/recipes-devtools/go/go/CVE-2023-24537.patch b/poky/meta/recipes-devtools/go/go/CVE-2023-24537.patch
new file mode 100644
index 0000000..6b5dc2c
--- /dev/null
+++ b/poky/meta/recipes-devtools/go/go/CVE-2023-24537.patch
@@ -0,0 +1,89 @@
+From 110e4fb1c2e3a21631704bbfaf672230b9ba2492 Mon Sep 17 00:00:00 2001
+From: Damien Neil <dneil@google.com>
+Date: Wed, 22 Mar 2023 09:33:22 -0700
+Subject: [PATCH] go/scanner: reject large line and column numbers in //line
+ directives
+
+Setting a large line or column number using a //line directive can cause
+integer overflow even in small source files.
+
+Limit line and column numbers in //line directives to 2^30-1, which
+is small enough to avoid int32 overflow on all reasonbly-sized files.
+
+For #59180
+Fixes CVE-2023-24537
+
+Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/1802456
+Reviewed-by: Julie Qiu <julieqiu@google.com>
+Reviewed-by: Roland Shoemaker <bracewell@google.com>
+Run-TryBot: Damien Neil <dneil@google.com>
+Change-Id: I149bf34deca532af7994203fa1e6aca3c890ea14
+Reviewed-on: https://go-review.googlesource.com/c/go/+/482078
+Reviewed-by: Matthew Dempsky <mdempsky@google.com>
+TryBot-Bypass: Michael Knyszek <mknyszek@google.com>
+Run-TryBot: Michael Knyszek <mknyszek@google.com>
+Auto-Submit: Michael Knyszek <mknyszek@google.com>
+
+CVE: CVE-2023-24537
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+---
+ src/go/parser/parser_test.go | 16 ++++++++++++++++
+ src/go/scanner/scanner.go    |  7 +++++--
+ 2 files changed, 21 insertions(+), 2 deletions(-)
+
+diff --git a/src/go/parser/parser_test.go b/src/go/parser/parser_test.go
+index 153562df75068..22b11a0cc4535 100644
+--- a/src/go/parser/parser_test.go
++++ b/src/go/parser/parser_test.go
+@@ -764,3 +764,19 @@ func TestRangePos(t *testing.T) {
+ 		})
+ 	}
+ }
++
++// TestIssue59180 tests that line number overflow doesn't cause an infinite loop.
++func TestIssue59180(t *testing.T) {
++	testcases := []string{
++		"package p\n//line :9223372036854775806\n\n//",
++		"package p\n//line :1:9223372036854775806\n\n//",
++		"package p\n//line file:9223372036854775806\n\n//",
++	}
++
++	for _, src := range testcases {
++		_, err := ParseFile(token.NewFileSet(), "", src, ParseComments)
++		if err == nil {
++			t.Errorf("ParseFile(%s) succeeded unexpectedly", src)
++		}
++	}
++}
+diff --git a/src/go/scanner/scanner.go b/src/go/scanner/scanner.go
+index 16958d22ce299..0cd9f5901d0bb 100644
+--- a/src/go/scanner/scanner.go
++++ b/src/go/scanner/scanner.go
+@@ -253,13 +253,16 @@ func (s *Scanner) updateLineInfo(next, offs int, text []byte) {
+ 		return
+ 	}
+ 
++	// Put a cap on the maximum size of line and column numbers.
++	// 30 bits allows for some additional space before wrapping an int32.
++	const maxLineCol = 1<<30 - 1
+ 	var line, col int
+ 	i2, n2, ok2 := trailingDigits(text[:i-1])
+ 	if ok2 {
+ 		//line filename:line:col
+ 		i, i2 = i2, i
+ 		line, col = n2, n
+-		if col == 0 {
++		if col == 0 || col > maxLineCol {
+ 			s.error(offs+i2, "invalid column number: "+string(text[i2:]))
+ 			return
+ 		}
+@@ -269,7 +272,7 @@ func (s *Scanner) updateLineInfo(next, offs int, text []byte) {
+ 		line = n
+ 	}
+ 
+-	if line == 0 {
++	if line == 0 || line > maxLineCol {
+ 		s.error(offs+i, "invalid line number: "+string(text[i:]))
+ 		return
+ 	}
diff --git a/poky/meta/recipes-devtools/llvm/llvm_git.bb b/poky/meta/recipes-devtools/llvm/llvm_git.bb
index f133653..f617b17 100644
--- a/poky/meta/recipes-devtools/llvm/llvm_git.bb
+++ b/poky/meta/recipes-devtools/llvm/llvm_git.bb
@@ -82,9 +82,8 @@
                   -DLLVM_OPTIMIZED_TABLEGEN=ON \
                   -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS}' \
                   -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
-                  -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
                   -DCMAKE_BUILD_TYPE=Release \
-                  -G Ninja"
+                 "
 
 EXTRA_OECMAKE:append:class-target = "\
                   -DCMAKE_CROSSCOMPILING:BOOL=ON \
diff --git a/poky/meta/recipes-devtools/python/python3-bcrypt-crates.inc b/poky/meta/recipes-devtools/python/python3-bcrypt-crates.inc
index 1ff6626..16d9e55 100644
--- a/poky/meta/recipes-devtools/python/python3-bcrypt-crates.inc
+++ b/poky/meta/recipes-devtools/python/python3-bcrypt-crates.inc
@@ -53,52 +53,52 @@
     crate://crates.io/zeroize/1.5.7 \
 "
 
-SRC_URI[autocfg.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-SRC_URI[base64.sha256sum] = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
-SRC_URI[bcrypt.sha256sum] = "a7e7c93a3fb23b2fdde989b2c9ec4dd153063ec81f408507f84c090cd91c6641"
-SRC_URI[bcrypt-pbkdf.sha256sum] = "f4ef233ffa9cb9c7820b2b0e9efd0821ed180e866c9120ec9f45518659742074"
-SRC_URI[bitflags.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-SRC_URI[block-buffer.sha256sum] = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
-SRC_URI[blowfish.sha256sum] = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7"
-SRC_URI[byteorder.sha256sum] = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
-SRC_URI[cfg-if.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-SRC_URI[cipher.sha256sum] = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e"
-SRC_URI[cpufeatures.sha256sum] = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
-SRC_URI[crypto-common.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
-SRC_URI[digest.sha256sum] = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c"
-SRC_URI[generic-array.sha256sum] = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
-SRC_URI[getrandom.sha256sum] = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
-SRC_URI[indoc.sha256sum] = "47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8"
-SRC_URI[indoc-impl.sha256sum] = "ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0"
-SRC_URI[inout.sha256sum] = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
-SRC_URI[instant.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
-SRC_URI[libc.sha256sum] = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb"
-SRC_URI[lock_api.sha256sum] = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
-SRC_URI[once_cell.sha256sum] = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
-SRC_URI[parking_lot.sha256sum] = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
-SRC_URI[parking_lot_core.sha256sum] = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
-SRC_URI[paste.sha256sum] = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
-SRC_URI[paste-impl.sha256sum] = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
-SRC_URI[pbkdf2.sha256sum] = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7"
-SRC_URI[proc-macro-hack.sha256sum] = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
-SRC_URI[proc-macro2.sha256sum] = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
-SRC_URI[pyo3.sha256sum] = "d41d50a7271e08c7c8a54cd24af5d62f73ee3a6f6a314215281ebdec421d5752"
-SRC_URI[pyo3-build-config.sha256sum] = "779239fc40b8e18bc8416d3a37d280ca9b9fb04bda54b98037bb6748595c2410"
-SRC_URI[pyo3-macros.sha256sum] = "00b247e8c664be87998d8628e86f282c25066165f1f8dda66100c48202fdb93a"
-SRC_URI[pyo3-macros-backend.sha256sum] = "5a8c2812c412e00e641d99eeb79dd478317d981d938aa60325dfa7157b607095"
-SRC_URI[quote.sha256sum] = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
-SRC_URI[redox_syscall.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
-SRC_URI[scopeguard.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-SRC_URI[sha2.sha256sum] = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
-SRC_URI[smallvec.sha256sum] = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
-SRC_URI[subtle.sha256sum] = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
-SRC_URI[syn.sha256sum] = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
-SRC_URI[typenum.sha256sum] = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
-SRC_URI[unicode-ident.sha256sum] = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
-SRC_URI[unindent.sha256sum] = "58ee9362deb4a96cef4d437d1ad49cffc9b9e92d202b6995674e928ce684f112"
-SRC_URI[version_check.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
-SRC_URI[wasi.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-SRC_URI[winapi.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-SRC_URI[winapi-i686-pc-windows-gnu.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-SRC_URI[winapi-x86_64-pc-windows-gnu.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-SRC_URI[zeroize.sha256sum] = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[base64-0.13.0.sha256sum] = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
+SRC_URI[bcrypt-0.13.0.sha256sum] = "a7e7c93a3fb23b2fdde989b2c9ec4dd153063ec81f408507f84c090cd91c6641"
+SRC_URI[bcrypt-pbkdf-0.8.1.sha256sum] = "f4ef233ffa9cb9c7820b2b0e9efd0821ed180e866c9120ec9f45518659742074"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[block-buffer-0.10.3.sha256sum] = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
+SRC_URI[blowfish-0.9.1.sha256sum] = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7"
+SRC_URI[byteorder-1.4.3.sha256sum] = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[cipher-0.4.3.sha256sum] = "d1873270f8f7942c191139cb8a40fd228da6c3fd2fc376d7e92d47aa14aeb59e"
+SRC_URI[cpufeatures-0.2.5.sha256sum] = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
+SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+SRC_URI[digest-0.10.5.sha256sum] = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c"
+SRC_URI[generic-array-0.14.6.sha256sum] = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+SRC_URI[getrandom-0.2.7.sha256sum] = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
+SRC_URI[indoc-0.3.6.sha256sum] = "47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8"
+SRC_URI[indoc-impl-0.3.6.sha256sum] = "ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0"
+SRC_URI[inout-0.1.3.sha256sum] = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[libc-0.2.134.sha256sum] = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb"
+SRC_URI[lock_api-0.4.9.sha256sum] = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+SRC_URI[once_cell-1.15.0.sha256sum] = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
+SRC_URI[parking_lot-0.11.2.sha256sum] = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+SRC_URI[parking_lot_core-0.8.5.sha256sum] = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216"
+SRC_URI[paste-0.1.18.sha256sum] = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
+SRC_URI[paste-impl-0.1.18.sha256sum] = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
+SRC_URI[pbkdf2-0.10.1.sha256sum] = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7"
+SRC_URI[proc-macro-hack-0.5.19.sha256sum] = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
+SRC_URI[proc-macro2-1.0.46.sha256sum] = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
+SRC_URI[pyo3-0.15.2.sha256sum] = "d41d50a7271e08c7c8a54cd24af5d62f73ee3a6f6a314215281ebdec421d5752"
+SRC_URI[pyo3-build-config-0.15.2.sha256sum] = "779239fc40b8e18bc8416d3a37d280ca9b9fb04bda54b98037bb6748595c2410"
+SRC_URI[pyo3-macros-0.15.2.sha256sum] = "00b247e8c664be87998d8628e86f282c25066165f1f8dda66100c48202fdb93a"
+SRC_URI[pyo3-macros-backend-0.15.2.sha256sum] = "5a8c2812c412e00e641d99eeb79dd478317d981d938aa60325dfa7157b607095"
+SRC_URI[quote-1.0.21.sha256sum] = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+SRC_URI[redox_syscall-0.2.16.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[sha2-0.10.6.sha256sum] = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
+SRC_URI[smallvec-1.10.0.sha256sum] = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+SRC_URI[subtle-2.4.1.sha256sum] = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
+SRC_URI[syn-1.0.102.sha256sum] = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
+SRC_URI[typenum-1.15.0.sha256sum] = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
+SRC_URI[unicode-ident-1.0.4.sha256sum] = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
+SRC_URI[unindent-0.1.10.sha256sum] = "58ee9362deb4a96cef4d437d1ad49cffc9b9e92d202b6995674e928ce684f112"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[zeroize-1.5.7.sha256sum] = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f"
diff --git a/poky/meta/recipes-devtools/python/python3-cryptography-crates.inc b/poky/meta/recipes-devtools/python/python3-cryptography-crates.inc
index 74f4789..410c9f4 100644
--- a/poky/meta/recipes-devtools/python/python3-cryptography-crates.inc
+++ b/poky/meta/recipes-devtools/python/python3-cryptography-crates.inc
@@ -70,69 +70,69 @@
     crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
 "
 
-SRC_URI[Inflector.sha256sum] = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
-SRC_URI[aliasable.sha256sum] = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
-SRC_URI[android_system_properties.sha256sum] = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
-SRC_URI[asn1.sha256sum] = "2affba5e62ee09eeba078f01a00c4aed45ac4287e091298eccbb0d4802efbdc5"
-SRC_URI[asn1_derive.sha256sum] = "bfab79c195875e5aef2bd20b4c8ed8d43ef9610bcffefbbcf66f88f555cc78af"
-SRC_URI[autocfg.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-SRC_URI[base64.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
-SRC_URI[bitflags.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-SRC_URI[bumpalo.sha256sum] = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3"
-SRC_URI[cc.sha256sum] = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d"
-SRC_URI[cfg-if.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-SRC_URI[chrono.sha256sum] = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f"
-SRC_URI[codespan-reporting.sha256sum] = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
-SRC_URI[core-foundation-sys.sha256sum] = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
-SRC_URI[cxx.sha256sum] = "5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fd"
-SRC_URI[cxx-build.sha256sum] = "b4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0"
-SRC_URI[cxxbridge-flags.sha256sum] = "69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59"
-SRC_URI[cxxbridge-macro.sha256sum] = "3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6"
-SRC_URI[iana-time-zone.sha256sum] = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765"
-SRC_URI[iana-time-zone-haiku.sha256sum] = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca"
-SRC_URI[indoc.sha256sum] = "47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8"
-SRC_URI[indoc-impl.sha256sum] = "ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0"
-SRC_URI[instant.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
-SRC_URI[js-sys.sha256sum] = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
-SRC_URI[libc.sha256sum] = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
-SRC_URI[link-cplusplus.sha256sum] = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5"
-SRC_URI[lock_api.sha256sum] = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
-SRC_URI[log.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-SRC_URI[num-integer.sha256sum] = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
-SRC_URI[num-traits.sha256sum] = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
-SRC_URI[once_cell.sha256sum] = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0"
-SRC_URI[ouroboros.sha256sum] = "dfbb50b356159620db6ac971c6d5c9ab788c9cc38a6f49619fca2a27acb062ca"
-SRC_URI[ouroboros_macro.sha256sum] = "4a0d9d1a6191c4f391f87219d1ea42b23f09ee84d64763cd05ee6ea88d9f384d"
-SRC_URI[parking_lot.sha256sum] = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
-SRC_URI[parking_lot_core.sha256sum] = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
-SRC_URI[paste.sha256sum] = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
-SRC_URI[paste-impl.sha256sum] = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
-SRC_URI[pem.sha256sum] = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4"
-SRC_URI[proc-macro-error.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
-SRC_URI[proc-macro-error-attr.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
-SRC_URI[proc-macro-hack.sha256sum] = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
-SRC_URI[proc-macro2.sha256sum] = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5"
-SRC_URI[pyo3.sha256sum] = "d41d50a7271e08c7c8a54cd24af5d62f73ee3a6f6a314215281ebdec421d5752"
-SRC_URI[pyo3-build-config.sha256sum] = "779239fc40b8e18bc8416d3a37d280ca9b9fb04bda54b98037bb6748595c2410"
-SRC_URI[pyo3-macros.sha256sum] = "00b247e8c664be87998d8628e86f282c25066165f1f8dda66100c48202fdb93a"
-SRC_URI[pyo3-macros-backend.sha256sum] = "5a8c2812c412e00e641d99eeb79dd478317d981d938aa60325dfa7157b607095"
-SRC_URI[quote.sha256sum] = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
-SRC_URI[redox_syscall.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
-SRC_URI[scopeguard.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-SRC_URI[scratch.sha256sum] = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2"
-SRC_URI[smallvec.sha256sum] = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
-SRC_URI[syn.sha256sum] = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
-SRC_URI[termcolor.sha256sum] = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
-SRC_URI[unicode-ident.sha256sum] = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
-SRC_URI[unicode-width.sha256sum] = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
-SRC_URI[unindent.sha256sum] = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
-SRC_URI[version_check.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
-SRC_URI[wasm-bindgen.sha256sum] = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
-SRC_URI[wasm-bindgen-backend.sha256sum] = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
-SRC_URI[wasm-bindgen-macro.sha256sum] = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
-SRC_URI[wasm-bindgen-macro-support.sha256sum] = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
-SRC_URI[wasm-bindgen-shared.sha256sum] = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
-SRC_URI[winapi.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-SRC_URI[winapi-i686-pc-windows-gnu.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-SRC_URI[winapi-util.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
-SRC_URI[winapi-x86_64-pc-windows-gnu.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[Inflector-0.11.4.sha256sum] = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
+SRC_URI[aliasable-0.1.3.sha256sum] = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
+SRC_URI[android_system_properties-0.1.5.sha256sum] = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+SRC_URI[asn1-0.13.0.sha256sum] = "2affba5e62ee09eeba078f01a00c4aed45ac4287e091298eccbb0d4802efbdc5"
+SRC_URI[asn1_derive-0.13.0.sha256sum] = "bfab79c195875e5aef2bd20b4c8ed8d43ef9610bcffefbbcf66f88f555cc78af"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bumpalo-3.10.0.sha256sum] = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3"
+SRC_URI[cc-1.0.78.sha256sum] = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[chrono-0.4.23.sha256sum] = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f"
+SRC_URI[codespan-reporting-0.11.1.sha256sum] = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
+SRC_URI[core-foundation-sys-0.8.3.sha256sum] = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
+SRC_URI[cxx-1.0.85.sha256sum] = "5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fd"
+SRC_URI[cxx-build-1.0.85.sha256sum] = "b4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0"
+SRC_URI[cxxbridge-flags-1.0.85.sha256sum] = "69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59"
+SRC_URI[cxxbridge-macro-1.0.85.sha256sum] = "3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6"
+SRC_URI[iana-time-zone-0.1.53.sha256sum] = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765"
+SRC_URI[iana-time-zone-haiku-0.1.1.sha256sum] = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca"
+SRC_URI[indoc-0.3.6.sha256sum] = "47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8"
+SRC_URI[indoc-impl-0.3.6.sha256sum] = "ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[js-sys-0.3.60.sha256sum] = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
+SRC_URI[libc-0.2.139.sha256sum] = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+SRC_URI[link-cplusplus-1.0.8.sha256sum] = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5"
+SRC_URI[lock_api-0.4.9.sha256sum] = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+SRC_URI[log-0.4.17.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+SRC_URI[num-integer-0.1.45.sha256sum] = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+SRC_URI[num-traits-0.2.15.sha256sum] = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+SRC_URI[once_cell-1.14.0.sha256sum] = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0"
+SRC_URI[ouroboros-0.15.5.sha256sum] = "dfbb50b356159620db6ac971c6d5c9ab788c9cc38a6f49619fca2a27acb062ca"
+SRC_URI[ouroboros_macro-0.15.5.sha256sum] = "4a0d9d1a6191c4f391f87219d1ea42b23f09ee84d64763cd05ee6ea88d9f384d"
+SRC_URI[parking_lot-0.11.2.sha256sum] = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+SRC_URI[parking_lot_core-0.8.6.sha256sum] = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
+SRC_URI[paste-0.1.18.sha256sum] = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
+SRC_URI[paste-impl-0.1.18.sha256sum] = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
+SRC_URI[pem-1.1.0.sha256sum] = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4"
+SRC_URI[proc-macro-error-1.0.4.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+SRC_URI[proc-macro-error-attr-1.0.4.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+SRC_URI[proc-macro-hack-0.5.20+deprecated.sha256sum] = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
+SRC_URI[proc-macro2-1.0.49.sha256sum] = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5"
+SRC_URI[pyo3-0.15.2.sha256sum] = "d41d50a7271e08c7c8a54cd24af5d62f73ee3a6f6a314215281ebdec421d5752"
+SRC_URI[pyo3-build-config-0.15.2.sha256sum] = "779239fc40b8e18bc8416d3a37d280ca9b9fb04bda54b98037bb6748595c2410"
+SRC_URI[pyo3-macros-0.15.2.sha256sum] = "00b247e8c664be87998d8628e86f282c25066165f1f8dda66100c48202fdb93a"
+SRC_URI[pyo3-macros-backend-0.15.2.sha256sum] = "5a8c2812c412e00e641d99eeb79dd478317d981d938aa60325dfa7157b607095"
+SRC_URI[quote-1.0.23.sha256sum] = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+SRC_URI[redox_syscall-0.2.16.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[scratch-1.0.3.sha256sum] = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2"
+SRC_URI[smallvec-1.10.0.sha256sum] = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+SRC_URI[syn-1.0.107.sha256sum] = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
+SRC_URI[termcolor-1.1.3.sha256sum] = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+SRC_URI[unicode-ident-1.0.6.sha256sum] = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+SRC_URI[unicode-width-0.1.10.sha256sum] = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+SRC_URI[unindent-0.1.11.sha256sum] = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[wasm-bindgen-0.2.83.sha256sum] = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
+SRC_URI[wasm-bindgen-backend-0.2.83.sha256sum] = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
+SRC_URI[wasm-bindgen-macro-0.2.83.sha256sum] = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
+SRC_URI[wasm-bindgen-macro-support-0.2.83.sha256sum] = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+SRC_URI[wasm-bindgen-shared-0.2.83.sha256sum] = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/poky/meta/recipes-devtools/python/python3-pygobject_3.42.2.bb b/poky/meta/recipes-devtools/python/python3-pygobject_3.42.2.bb
index cc7b07e..f54f4ce 100644
--- a/poky/meta/recipes-devtools/python/python3-pygobject_3.42.2.bb
+++ b/poky/meta/recipes-devtools/python/python3-pygobject_3.42.2.bb
@@ -10,7 +10,7 @@
 
 inherit gnomebase setuptools3-base gobject-introspection upstream-version-is-even
 
-DEPENDS += "python3 glib-2.0"
+DEPENDS += "python3 glib-2.0 gobject-introspection"
 
 SRCNAME="pygobject"
 
diff --git a/poky/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch b/poky/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
new file mode 100644
index 0000000..5e11341
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
@@ -0,0 +1,39 @@
+From b9f825b298b555c4770024d1f68ef1df65aad20a Mon Sep 17 00:00:00 2001
+From: Wentao Zhang <wentao.zhang@windriver.com>
+Date: Mon, 20 Mar 2023 13:39:52 +0800
+Subject: [PATCH] Update test_sysconfig for posix_user purelib
+
+Steps to trigger the failed test:
+Edit local.conf to add something as follows:
+    BASELIB = "lib64"
+    IMAGE_INSTALL:append = " python3-tests".
+bitbake core-image-sato
+runqemu qemux86-64 nographic slirp
+Reproducer:
+    $python3 -m test test_sysconfig
+
+Update test_sysconfig.test_user_similar() for the posix_user scheme:
+"purelib" doesn't use sys.platlibdir.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Wentao Zhang <wentao.zhang@windriver.com>
+---
+ Lib/test/test_sysconfig.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py
+index d96371d..20aea4b 100644
+--- a/Lib/test/test_sysconfig.py
++++ b/Lib/test/test_sysconfig.py
+@@ -373,7 +373,7 @@ class TestSysConfig(unittest.TestCase):
+                 expected = os.path.normpath(global_path.replace(base, user, 1))
+                 # bpo-44860: platlib of posix_user doesn't use sys.platlibdir,
+                 # whereas posix_prefix does.
+-                if name == 'platlib':
++                if name == 'platlib' or name == 'purelib':
+                     # Replace "/lib64/python3.11/site-packages" suffix
+                     # with "/lib/python3.11/site-packages".
+                     py_version_short = sysconfig.get_python_version()
+-- 
+2.25.1
+
diff --git a/poky/meta/recipes-devtools/python/python3_3.11.2.bb b/poky/meta/recipes-devtools/python/python3_3.11.2.bb
index 5060722..5bd8d32 100644
--- a/poky/meta/recipes-devtools/python/python3_3.11.2.bb
+++ b/poky/meta/recipes-devtools/python/python3_3.11.2.bb
@@ -31,6 +31,7 @@
            file://0001-setup.py-Do-not-detect-multiarch-paths-when-cross-co.patch \
            file://deterministic_imports.patch \
            file://0001-Avoid-shebang-overflow-on-python-config.py.patch \
+           file://0001-Update-test_sysconfig-for-posix_user-purelib.patch \
            "
 
 SRC_URI:append:class-native = " \
diff --git a/poky/meta/recipes-devtools/qemu/qemu.inc b/poky/meta/recipes-devtools/qemu/qemu.inc
index b41055f..e2453dd 100644
--- a/poky/meta/recipes-devtools/qemu/qemu.inc
+++ b/poky/meta/recipes-devtools/qemu/qemu.inc
@@ -32,6 +32,7 @@
            file://0001-configure-Fix-check-tcg-not-executing-any-tests.patch \
            file://0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch \
            file://0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch \
+           file://0001-tracetool-use-relative-paths-for-line-preprocessor-d.patch \
            file://qemu-guest-agent.init \
            file://qemu-guest-agent.udev \
            "
@@ -207,7 +208,7 @@
 PACKAGECONFIG[attr] = "--enable-attr,--disable-attr,attr,"
 PACKAGECONFIG[rbd] = "--enable-rbd,--disable-rbd,ceph,ceph"
 PACKAGECONFIG[vhost] = "--enable-vhost-net,--disable-vhost-net,,"
-PACKAGECONFIG[ust] = "--enable-trace-backend=ust,--enable-trace-backend=nop,lttng-ust,"
+PACKAGECONFIG[ust] = "--enable-trace-backends=ust,,lttng-ust,"
 PACKAGECONFIG[pie] = "--enable-pie,--disable-pie,,"
 PACKAGECONFIG[seccomp] = "--enable-seccomp,--disable-seccomp,libseccomp"
 # libnfs is currently provided by meta-kodi
diff --git a/poky/meta/recipes-devtools/qemu/qemu/0001-tracetool-use-relative-paths-for-line-preprocessor-d.patch b/poky/meta/recipes-devtools/qemu/qemu/0001-tracetool-use-relative-paths-for-line-preprocessor-d.patch
new file mode 100644
index 0000000..5ef1184
--- /dev/null
+++ b/poky/meta/recipes-devtools/qemu/qemu/0001-tracetool-use-relative-paths-for-line-preprocessor-d.patch
@@ -0,0 +1,87 @@
+From 348ea441db84a211d4fca7ef5544b5cd06a8a872 Mon Sep 17 00:00:00 2001
+From: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
+Date: Tue, 4 Apr 2023 15:26:07 +0200
+Subject: [PATCH] tracetool: use relative paths for '#line' preprocessor
+ directives
+
+The event filename is an absolute path. Convert it to a relative path when
+writing '#line' directives, to preserve reproducibility of the generated
+output when different base paths are used.
+
+Upstream-Status: Pending
+
+---
+ scripts/tracetool/backend/ftrace.py | 4 +++-
+ scripts/tracetool/backend/log.py    | 4 +++-
+ scripts/tracetool/backend/syslog.py | 4 +++-
+ 3 files changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/scripts/tracetool/backend/ftrace.py b/scripts/tracetool/backend/ftrace.py
+index 5fa30ccc08..baed2ae61c 100644
+--- a/scripts/tracetool/backend/ftrace.py
++++ b/scripts/tracetool/backend/ftrace.py
+@@ -12,6 +12,8 @@
+ __email__      = "stefanha@redhat.com"
+ 
+ 
++import os.path
++
+ from tracetool import out
+ 
+ 
+@@ -45,7 +47,7 @@ def generate_h(event, group):
+         args=event.args,
+         event_id="TRACE_" + event.name.upper(),
+         event_lineno=event.lineno,
+-        event_filename=event.filename,
++        event_filename=os.path.relpath(event.filename),
+         fmt=event.fmt.rstrip("\n"),
+         argnames=argnames)
+ 
+diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py
+index 17ba1cd90e..de27b7e62e 100644
+--- a/scripts/tracetool/backend/log.py
++++ b/scripts/tracetool/backend/log.py
+@@ -12,6 +12,8 @@
+ __email__      = "stefanha@redhat.com"
+ 
+ 
++import os.path
++
+ from tracetool import out
+ 
+ 
+@@ -53,7 +55,7 @@ def generate_h(event, group):
+         '    }',
+         cond=cond,
+         event_lineno=event.lineno,
+-        event_filename=event.filename,
++        event_filename=os.path.relpath(event.filename),
+         name=event.name,
+         fmt=event.fmt.rstrip("\n"),
+         argnames=argnames)
+diff --git a/scripts/tracetool/backend/syslog.py b/scripts/tracetool/backend/syslog.py
+index 5a3a00fe31..012970f6cc 100644
+--- a/scripts/tracetool/backend/syslog.py
++++ b/scripts/tracetool/backend/syslog.py
+@@ -12,6 +12,8 @@
+ __email__      = "stefanha@redhat.com"
+ 
+ 
++import os.path
++
+ from tracetool import out
+ 
+ 
+@@ -41,7 +43,7 @@ def generate_h(event, group):
+         '    }',
+         cond=cond,
+         event_lineno=event.lineno,
+-        event_filename=event.filename,
++        event_filename=os.path.relpath(event.filename),
+         name=event.name,
+         fmt=event.fmt.rstrip("\n"),
+         argnames=argnames)
+-- 
+2.39.2
+
diff --git a/poky/meta/recipes-devtools/rust/cargo_1.67.1.bb b/poky/meta/recipes-devtools/rust/cargo_1.68.1.bb
similarity index 100%
rename from poky/meta/recipes-devtools/rust/cargo_1.67.1.bb
rename to poky/meta/recipes-devtools/rust/cargo_1.68.1.bb
diff --git a/poky/meta/recipes-devtools/rust/files/crossbeam_atomic.patch b/poky/meta/recipes-devtools/rust/files/crossbeam_atomic.patch
index 51dd3c5..0a29103 100644
--- a/poky/meta/recipes-devtools/rust/files/crossbeam_atomic.patch
+++ b/poky/meta/recipes-devtools/rust/files/crossbeam_atomic.patch
@@ -48,34 +48,3 @@
 \ No newline at end of file
 +{"files":{"CHANGELOG.md":"65d3e11edf9498bdbc930c8c3878b7d3a90c1a0b1698597dc4a396a547fa0948","Cargo.toml":"1e4259a5a47271e8ae040b91e17652b5a4e0e7e45c3f22de5008db276f3a50bf","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"2a19af38a52dd965c2d66bb39f90a85b430b51ee9ccb29e9e1978ee7091e5087","benches/atomic_cell.rs":"c927eb3cd1e5ecc4b91adbc3bde98af15ffab4086190792ba64d5cde0e24df3d","build.rs":"108ba75398e3169c35b0e9754782391e4e4a9f9bf0ae2b216b55d836c4ac9ba8","no_atomic.rs":"f58085b9d0666ccf62e0ae17fb5dae937c0a86fcc55dc0ae04ad8659e696a49c","src/atomic/atomic_cell.rs":"0fc99463e633144c5d59d39c35b5477da1f1b90f5448cadc37454b7f4b97707e","src/atomic/consume.rs":"7a7736fcd64f6473dfea7653559ffc5e1a2a234df43835f8aa8734862145ac15","src/atomic/mod.rs":"94193895fa03cece415e8d7be700b73a9a8a7015774ca821253438607f9b0736","src/atomic/seq_lock.rs":"27182e6b87a9db73c5f6831759f8625f9fcdec3c2828204c444aef04f427735a","src/atomic/seq_lock_wide.rs":"9888dd03116bb89ca36d4ab8d5a0b5032107a2983a7eb8024454263b09080088","src/backoff.rs":"8fd5e3dcccc05860680e49c8498de8096bee9140bcfee8723d97117106a020d0","src/cache_padded.rs":"8bb8925e2df44224ffa29f31a2f9c08d88d8bd3df6c1ce47003598225055fdb5","src/lib.rs":"6f1bcf157abe06ad8458a53e865bf8efab9fad4a9424790147cee8fefb3795d8","src/sync/mod.rs":"eca73c04f821859b8434d2b93db87d160dc6a3f65498ca201cd40d732ca4c134","src/sync/once_lock.rs":"c03dc9c05a817e087dccf8b682f7307501542805533551da3c2bab442bc40743","src/sync/parker.rs":"91f3a7d4ee8d9e06b6558d180e8a0df08ff5c6cef612b4ce4790f9f75cb34f84","src/sync/sharded_lock.rs":"6391b3b99b194b8e0888446c2dec340e4fb095753bcf0c1a80bc654f9c8be0e3","src/sync/wait_group.rs":"3e339aab014f50e214fea535c841755113ea058153378ed54e50a4acb403c937","src/thread.rs":"21cf9b3e965529e5c0a6ff8fc1ec846bfe0006c41deb238a149be8d07384e955","tests/atomic_cell.rs":"bf8bc869c922a1cbf929c3b741bae0cae98f2157f572b5a4eb2873d20a407c22","tests/cache_padded.rs":"1bfaff8354c8184e1ee1f902881ca9400b60effb273b0d3f752801a483d2b66d","tests/parker.rs":"6def4721287d9d70b1cfd63ebb34e1c83fbb3376edbad2bc8aac6ef69dd99d20","tests/sharded_lock.rs":"314adeb8a651a28935f7a49c9a261b8fa1fd82bf6a16c865a5aced6216d7e40b","tests/thread.rs":"9a7d7d3028c552fd834c68598b04a1cc252a816bc20ab62cec060d6cd09cab10","tests/wait_group.rs":"02661c2a820a5abe8b0c8fe15a6650aead707b57cdda0610d1b09a2680ed6969"},"package":"edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"}
 \ No newline at end of file
-Index: rustc-1.66.0-src/vendor/crossbeam-utils-0.8.8/.cargo-checksum.json
-===================================================================
---- rustc-1.66.0-src.orig/vendor/crossbeam-utils-0.8.8/.cargo-checksum.json
-+++ rustc-1.66.0-src/vendor/crossbeam-utils-0.8.8/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"CHANGELOG.md":"665a9f2c5fd37c98bef7c1b6eda753b58bb925d87e5b42d7298df973d7590631","Cargo.toml":"fe22292acd6a868e65baf225f90d5678678971642814d2d8e92a03954b8bdb40","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"dfa9fbed47c344c134a63c84b7c0e4651baeac1554b7b3266d0e38643743fc33","benches/atomic_cell.rs":"c927eb3cd1e5ecc4b91adbc3bde98af15ffab4086190792ba64d5cde0e24df3d","build.rs":"7e74dc72343ff57e83d0a84a9fbdd9ff1645894165909999b4c3d2fba94bc96c","no_atomic.rs":"71b5f78fd701ce604aa766dd3d825fa5bed774282aae4d6c31d7acb01b1b242f","src/atomic/atomic_cell.rs":"01185588e0e16ba81425677966d0c11887dedc4ac0d4a65991a34057c418adc4","src/atomic/consume.rs":"7a7736fcd64f6473dfea7653559ffc5e1a2a234df43835f8aa8734862145ac15","src/atomic/mod.rs":"94193895fa03cece415e8d7be700b73a9a8a7015774ca821253438607f9b0736","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":"3f997f5b41fec286ccedcf3d36f801d741387badb574820b8e3456117ecd9154","src/sync/sharded_lock.rs":"14be659744918d0b27db24c56b41c618b0f0484b6761da46561023d96c4c120f","src/sync/wait_group.rs":"32e946a7581c55f8aa9904527b92b177c538fa0cf7cbcfa1d1f25990582cb6ea","src/thread.rs":"6a7676fd4e50af63aec6f655121a10cd6e8c704f4677125388186ba58dc5842d","tests/atomic_cell.rs":"d64faa1ca8896373468308031220940d988aa3a1679ea25d2291a7a7d22bc51a","tests/cache_padded.rs":"1bfaff8354c8184e1ee1f902881ca9400b60effb273b0d3f752801a483d2b66d","tests/parker.rs":"6def4721287d9d70b1cfd63ebb34e1c83fbb3376edbad2bc8aac6ef69dd99d20","tests/sharded_lock.rs":"eb6c5b59f007e0d290dd0f58758e8ccb5cacd38af34e3341368ced815f0c41be","tests/thread.rs":"9a7d7d3028c552fd834c68598b04a1cc252a816bc20ab62cec060d6cd09cab10","tests/wait_group.rs":"ad8f0cdfed31f9594a2e0737234d418f8b924d784a4db8d7e469deab8c95f5f8"},"package":"0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"}
-\ No newline at end of file
-+{"files":{"CHANGELOG.md":"665a9f2c5fd37c98bef7c1b6eda753b58bb925d87e5b42d7298df973d7590631","Cargo.toml":"fe22292acd6a868e65baf225f90d5678678971642814d2d8e92a03954b8bdb40","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"dfa9fbed47c344c134a63c84b7c0e4651baeac1554b7b3266d0e38643743fc33","benches/atomic_cell.rs":"c927eb3cd1e5ecc4b91adbc3bde98af15ffab4086190792ba64d5cde0e24df3d","build.rs":"d983d511c89607ce89473779d1ee195e3eb509cc4d3043b9efe6aa2f94c98158","no_atomic.rs":"71b5f78fd701ce604aa766dd3d825fa5bed774282aae4d6c31d7acb01b1b242f","src/atomic/atomic_cell.rs":"01185588e0e16ba81425677966d0c11887dedc4ac0d4a65991a34057c418adc4","src/atomic/consume.rs":"7a7736fcd64f6473dfea7653559ffc5e1a2a234df43835f8aa8734862145ac15","src/atomic/mod.rs":"94193895fa03cece415e8d7be700b73a9a8a7015774ca821253438607f9b0736","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":"3f997f5b41fec286ccedcf3d36f801d741387badb574820b8e3456117ecd9154","src/sync/sharded_lock.rs":"14be659744918d0b27db24c56b41c618b0f0484b6761da46561023d96c4c120f","src/sync/wait_group.rs":"32e946a7581c55f8aa9904527b92b177c538fa0cf7cbcfa1d1f25990582cb6ea","src/thread.rs":"6a7676fd4e50af63aec6f655121a10cd6e8c704f4677125388186ba58dc5842d","tests/atomic_cell.rs":"d64faa1ca8896373468308031220940d988aa3a1679ea25d2291a7a7d22bc51a","tests/cache_padded.rs":"1bfaff8354c8184e1ee1f902881ca9400b60effb273b0d3f752801a483d2b66d","tests/parker.rs":"6def4721287d9d70b1cfd63ebb34e1c83fbb3376edbad2bc8aac6ef69dd99d20","tests/sharded_lock.rs":"eb6c5b59f007e0d290dd0f58758e8ccb5cacd38af34e3341368ced815f0c41be","tests/thread.rs":"9a7d7d3028c552fd834c68598b04a1cc252a816bc20ab62cec060d6cd09cab10","tests/wait_group.rs":"ad8f0cdfed31f9594a2e0737234d418f8b924d784a4db8d7e469deab8c95f5f8"},"package":"0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"}
-\ No newline at end of file
-Index: rustc-1.66.0-src/vendor/crossbeam-utils-0.8.8/build.rs
-===================================================================
---- rustc-1.66.0-src.orig/vendor/crossbeam-utils-0.8.8/build.rs
-+++ rustc-1.66.0-src/vendor/crossbeam-utils-0.8.8/build.rs
-@@ -29,7 +29,7 @@ use std::env;
- include!("no_atomic.rs");
- 
- fn main() {
--    let target = match env::var("TARGET") {
-+    let mut target = match env::var("TARGET") {
-         Ok(target) => target,
-         Err(e) => {
-             println!(
-@@ -40,6 +40,8 @@ fn main() {
-             return;
-         }
-     };
-+    let vendor = env::var("TARGET_VENDOR").unwrap();
-+    target = target.replace(&vendor, "-unknown");
- 
-     // Note that this is `no_*`, not `has_*`. This allows treating
-     // `cfg(target_has_atomic = "ptr")` as true when the build script doesn't
diff --git a/poky/meta/recipes-devtools/rust/files/getrandom-open64.patch b/poky/meta/recipes-devtools/rust/files/getrandom-open64.patch
index 6fc981e..b35195e 100644
--- a/poky/meta/recipes-devtools/rust/files/getrandom-open64.patch
+++ b/poky/meta/recipes-devtools/rust/files/getrandom-open64.patch
@@ -6,24 +6,41 @@
 using open64, this is more available. Latest Musl has made these
 namespace changes [1]
 
+There is no need for using LFS64 open explicitly as we are only using it
+for opening device files and not real files
+
 [1] https://git.musl-libc.org/cgit/musl/commit/?id=246f1c811448f37a44b41cd8df8d0ef9736d95f4
 
-Upstream-Status: Submitted [https://github.com/rust-random/getrandom/pull/326]
+Upstream-Status: Backport [https://github.com/rust-random/getrandom/commit/7f73e3ccc1f53bfc419e4ddcfd343766aa5837b6]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/vendor/getrandom-0.2.0/.cargo-checksum.json
-+++ b/vendor/getrandom-0.2.0/.cargo-checksum.json
+Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
+--- a/vendor/getrandom/.cargo-checksum.json
++++ b/vendor/getrandom/.cargo-checksum.json
 @@ -1 +1 @@
--{"files":{"CHANGELOG.md":"4a5b61c82668507beffc7ad33f602257013263d7847cf17a246ef1128ba27950","Cargo.toml":"b59322815506cf16acd6e0cbe2634dec1be0886e686b51fa5cdf5a5ac9fdcf32","LICENSE-APACHE":"aaff376532ea30a0cd5330b9502ad4a4c8bf769c539c87ffe78819d188a18ebf","LICENSE-MIT":"209fbbe0ad52d9235e37badf9cadfe4dbdc87203179c0899e738b39ade42177b","README.md":"e0bacefbe4310c23578c65926bda6e4318750f6718bb6b97ff9a4fa9056af6a6","benches/mod.rs":"5495735ff210a50cab23c2cc84191ed910af7c30395a3d9d6095b722765b3864","build.rs":"90355b5e76dedd97d604cd83b4a0a5ab074bbd4dde9632ee2b56c87c175b1e14","src/bsd_arandom.rs":"d2ee195acd80c7d1364a369ad0d2dad46f5f9f973f9d3960367413fd87acfcd6","src/cloudabi.rs":"9201af65a607587aa8615ec92cfab9d176f4199f6799dad9ca743c51d175028b","src/custom.rs":"f75ef80ec024fe3c97c7faff79de9f7d457993ed3c5f69f21593e140c8b62790","src/error.rs":"f40aa6cb36bc024285dc2e40349fdd3754db949a307ec73831ec253549d2b0a3","src/error_impls.rs":"733ed75ab89a9d0d5a7cc7abd85f31a23d772ea9c1e7c10def1477207d19fd8b","src/fuchsia.rs":"470d8509deb5b06fa6417f294c0a49e0e35a580249a5d8944c3be5aa746f64ea","src/ios.rs":"cc46ee9c48ab746d2af342a242e383b8de840045d3f52fd77ee337161367a1a1","src/lib.rs":"6aff4b429e4b1a07aad2ab7148d7cc9d0987b230597649af42041508320592e0","src/linux_android.rs":"39cb80999c8534145240a350976d261b8924436bf9a4563960c7bd8c2c83c773","src/macos.rs":"b692f2fcc2319a5195f47751d5bd7dd87c7c24a61d14fa4e3dbc992ae66212b7","src/openbsd.rs":"066b2dd395c190444a658bb0b52a052eabbd68ea5a534fb729c7e5373abc0a6a","src/rdrand.rs":"79d23183b1905d61bd9df9729dc798505a2ed750d3339e342ab144e1709827e4","src/solaris_illumos.rs":"9c7004446fabe5a7a21c73d5a65d7e2115b5bd1d1dbb735c984cab3dba239785","src/stdweb.rs":"f140081e47cfbb61937212e7840391bce5adf7829039d732d62b82a19e567dfa","src/test_common.rs":"895d71c06722e3a6f365999d29430f37f571aeb1eb4a525777b760005c9818be","src/test_rdrand.rs":"8c8df6de836463a41808396016428bf0a2a69c715ae96e7e0e7598fcea61ace8","src/use_file.rs":"c9fe635a83614be6f303e40f98b8e678c36ac6d9724b024430d3ea1ad1510add","src/util.rs":"da6964dc1523f1cb8d26365fa6a8ece46360587e6974931624b271f0c72cda8b","src/util_libc.rs":"d851394bc9c43dc09afde1e03401aa6c207858ec58fdffbc5131911b116418c7","src/vxworks.rs":"a5aa0e40f890e0f35626458bb656a3340b8af3111e4bacd2e12505a8d50a3505","src/wasi.rs":"3413e5a391b156f5d05600f4651f7f8eb4df2c8984fca7766ca50c0cfe0b2e9c","src/wasm-bindgen.rs":"0648388724c46697a9b3c654b8d931b2bf187a3193ca1888221d4529f764e376","src/windows.rs":"39dfae2814d958993619c3654bb39745de897971aea7a414fa32f90770850ce2","src/windows_uwp.rs":"672f41a0fac79a71bfaaecad59826c948b8538f69a0133ab1c09a1865ecd6114"},"package":"ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4"}
+-{"files":{"CHANGELOG.md":"cb054908f44d0e7f229dcc4580bcc4f2c3e2da198c84292710f730b33cc3d5f6","Cargo.toml":"708a5d9c89443b937aa50260e26a01f9ebfdd50a7ae312956795834e3187baf3","LICENSE-APACHE":"aaff376532ea30a0cd5330b9502ad4a4c8bf769c539c87ffe78819d188a18ebf","LICENSE-MIT":"209fbbe0ad52d9235e37badf9cadfe4dbdc87203179c0899e738b39ade42177b","README.md":"7ae74633326a22fd6298d7f209fb14884277bd98049795f444945acbb2b0dfbd","benches/mod.rs":"c01b05c6d690a4b8937d25252f1385a6bff378517318ce832ea520036aabd571","src/3ds.rs":"0f48fc15f89b518fb92e06aaa4838b62dc073598e8f288df56ad1e5a9251af1e","src/bsd_arandom.rs":"d90c419d4def20f83e7535cd3f5ec07035045011a50c3652951d196a120c5d3e","src/custom.rs":"ce4640776d36872dbbd5e194bf29f6bcda3ef4549ca04fe59f5aeab1dea1d821","src/dragonfly.rs":"47f933eac189f6ea48ecf021efd0747ebce1b43d1bece6bbf72a951bab705987","src/error.rs":"ff09a7e02d7aff3e45eca6bbef6c686cc46f3c2371a0897a856e4dec4b942e46","src/error_impls.rs":"9c34832ebb99cd5e31bc5c8ffc5beb5b3fa6f7ff0226aaa1cdf8e10e6d64b324","src/espidf.rs":"19f101486584fde6dad962f4d9792de168658047312106641a5caf6866a5bbcf","src/fuchsia.rs":"470d8509deb5b06fa6417f294c0a49e0e35a580249a5d8944c3be5aa746f64ea","src/ios.rs":"4bad4f5c096a50338b86aeac91a937c18bc55b9555e6f34806ad13732e64523d","src/js.rs":"370610a19045012c87c986279aad6b150cd728a44015dcc5779256e4a2e6629b","src/lib.rs":"8e5c2c8edcbdbf2cee46b86d96d951cc6d5c00f7c11cfc9c27de27e756b5c4cc","src/linux_android.rs":"ec24575aa4ae71b6991290dadfdea931b05397c3faababf24bd794f1a9624835","src/macos.rs":"6c09827ad5292cd022e063efa79523bfdb50ed08b9867ebaa007cd321b8d218e","src/openbsd.rs":"450a23ead462d4a840fee4aa0bfdab1e3d88c8f48e4bb608d457429ddeca69c0","src/rdrand.rs":"79d23183b1905d61bd9df9729dc798505a2ed750d3339e342ab144e1709827e4","src/solaris_illumos.rs":"d52fee9dd7d661f960c01894edd563c1ff8a512c111f7803092d9aa2ff98718e","src/solid.rs":"997035d54c9762d22a5a14f54e7fbed4dd266cdeacbdf6aab7d8aee05537e8ba","src/use_file.rs":"16e42eb0a56e375c330c1ca8eb58c444e82ef3ad35230b961fdba96a02a68804","src/util.rs":"da6964dc1523f1cb8d26365fa6a8ece46360587e6974931624b271f0c72cda8b","src/util_libc.rs":"2a63ac0e6dab16b85c4728b79a16e0640301e8b876f151b0a1db0b4394fa219f","src/vxworks.rs":"a5aa0e40f890e0f35626458bb656a3340b8af3111e4bacd2e12505a8d50a3505","src/wasi.rs":"dfdd0a870581948bd03abe64d49ca4295d9cfa26e09b97a526fd5e17148ad9ca","src/windows.rs":"d0b4f2afd1959660aa9abcd9477764bd7dc0b7d7048aee748804b37963c77c6f","tests/common/mod.rs":"b6beee8f535d2d094a65711fe0af91a6fc220aa09729ed7269fe33cafdc9177f","tests/custom.rs":"9f2c0193193f6bcf641116ca0b3653b33d2015e0e98ce107ee1d1f60c5eeae3a","tests/normal.rs":"9e1c4b1e468a09ed0225370dfb6608f8b8135e0fabb09bbc1a718105164aade6","tests/rdrand.rs":"4474ccebf9d33c89288862a7e367018405968dddc55c7c6f97e21b5fe2264601"},"package":"c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"}
 \ No newline at end of file
-+{"files":{"CHANGELOG.md":"4a5b61c82668507beffc7ad33f602257013263d7847cf17a246ef1128ba27950","Cargo.toml":"b59322815506cf16acd6e0cbe2634dec1be0886e686b51fa5cdf5a5ac9fdcf32","LICENSE-APACHE":"aaff376532ea30a0cd5330b9502ad4a4c8bf769c539c87ffe78819d188a18ebf","LICENSE-MIT":"209fbbe0ad52d9235e37badf9cadfe4dbdc87203179c0899e738b39ade42177b","README.md":"e0bacefbe4310c23578c65926bda6e4318750f6718bb6b97ff9a4fa9056af6a6","benches/mod.rs":"5495735ff210a50cab23c2cc84191ed910af7c30395a3d9d6095b722765b3864","build.rs":"90355b5e76dedd97d604cd83b4a0a5ab074bbd4dde9632ee2b56c87c175b1e14","src/bsd_arandom.rs":"d2ee195acd80c7d1364a369ad0d2dad46f5f9f973f9d3960367413fd87acfcd6","src/cloudabi.rs":"9201af65a607587aa8615ec92cfab9d176f4199f6799dad9ca743c51d175028b","src/custom.rs":"f75ef80ec024fe3c97c7faff79de9f7d457993ed3c5f69f21593e140c8b62790","src/error.rs":"f40aa6cb36bc024285dc2e40349fdd3754db949a307ec73831ec253549d2b0a3","src/error_impls.rs":"733ed75ab89a9d0d5a7cc7abd85f31a23d772ea9c1e7c10def1477207d19fd8b","src/fuchsia.rs":"470d8509deb5b06fa6417f294c0a49e0e35a580249a5d8944c3be5aa746f64ea","src/ios.rs":"cc46ee9c48ab746d2af342a242e383b8de840045d3f52fd77ee337161367a1a1","src/lib.rs":"6aff4b429e4b1a07aad2ab7148d7cc9d0987b230597649af42041508320592e0","src/linux_android.rs":"39cb80999c8534145240a350976d261b8924436bf9a4563960c7bd8c2c83c773","src/macos.rs":"b692f2fcc2319a5195f47751d5bd7dd87c7c24a61d14fa4e3dbc992ae66212b7","src/openbsd.rs":"066b2dd395c190444a658bb0b52a052eabbd68ea5a534fb729c7e5373abc0a6a","src/rdrand.rs":"79d23183b1905d61bd9df9729dc798505a2ed750d3339e342ab144e1709827e4","src/solaris_illumos.rs":"9c7004446fabe5a7a21c73d5a65d7e2115b5bd1d1dbb735c984cab3dba239785","src/stdweb.rs":"f140081e47cfbb61937212e7840391bce5adf7829039d732d62b82a19e567dfa","src/test_common.rs":"895d71c06722e3a6f365999d29430f37f571aeb1eb4a525777b760005c9818be","src/test_rdrand.rs":"8c8df6de836463a41808396016428bf0a2a69c715ae96e7e0e7598fcea61ace8","src/use_file.rs":"c9fe635a83614be6f303e40f98b8e678c36ac6d9724b024430d3ea1ad1510add","src/util.rs":"da6964dc1523f1cb8d26365fa6a8ece46360587e6974931624b271f0c72cda8b","src/util_libc.rs":"c602b47e2958fa94443b3690faddf52a8c545689d18579c86dd8a07927c145b1","src/vxworks.rs":"a5aa0e40f890e0f35626458bb656a3340b8af3111e4bacd2e12505a8d50a3505","src/wasi.rs":"3413e5a391b156f5d05600f4651f7f8eb4df2c8984fca7766ca50c0cfe0b2e9c","src/wasm-bindgen.rs":"0648388724c46697a9b3c654b8d931b2bf187a3193ca1888221d4529f764e376","src/windows.rs":"39dfae2814d958993619c3654bb39745de897971aea7a414fa32f90770850ce2","src/windows_uwp.rs":"672f41a0fac79a71bfaaecad59826c948b8538f69a0133ab1c09a1865ecd6114"},"package":"ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4"}
---- a/vendor/getrandom-0.2.0/src/util_libc.rs
-+++ b/vendor/getrandom-0.2.0/src/util_libc.rs
-@@ -97,7 +97,7 @@ impl Weak {
++{"files":{"CHANGELOG.md":"cb054908f44d0e7f229dcc4580bcc4f2c3e2da198c84292710f730b33cc3d5f6","Cargo.toml":"708a5d9c89443b937aa50260e26a01f9ebfdd50a7ae312956795834e3187baf3","LICENSE-APACHE":"aaff376532ea30a0cd5330b9502ad4a4c8bf769c539c87ffe78819d188a18ebf","LICENSE-MIT":"209fbbe0ad52d9235e37badf9cadfe4dbdc87203179c0899e738b39ade42177b","README.md":"7ae74633326a22fd6298d7f209fb14884277bd98049795f444945acbb2b0dfbd","benches/mod.rs":"c01b05c6d690a4b8937d25252f1385a6bff378517318ce832ea520036aabd571","src/3ds.rs":"0f48fc15f89b518fb92e06aaa4838b62dc073598e8f288df56ad1e5a9251af1e","src/bsd_arandom.rs":"d90c419d4def20f83e7535cd3f5ec07035045011a50c3652951d196a120c5d3e","src/custom.rs":"ce4640776d36872dbbd5e194bf29f6bcda3ef4549ca04fe59f5aeab1dea1d821","src/dragonfly.rs":"47f933eac189f6ea48ecf021efd0747ebce1b43d1bece6bbf72a951bab705987","src/error.rs":"ff09a7e02d7aff3e45eca6bbef6c686cc46f3c2371a0897a856e4dec4b942e46","src/error_impls.rs":"9c34832ebb99cd5e31bc5c8ffc5beb5b3fa6f7ff0226aaa1cdf8e10e6d64b324","src/espidf.rs":"19f101486584fde6dad962f4d9792de168658047312106641a5caf6866a5bbcf","src/fuchsia.rs":"470d8509deb5b06fa6417f294c0a49e0e35a580249a5d8944c3be5aa746f64ea","src/ios.rs":"4bad4f5c096a50338b86aeac91a937c18bc55b9555e6f34806ad13732e64523d","src/js.rs":"370610a19045012c87c986279aad6b150cd728a44015dcc5779256e4a2e6629b","src/lib.rs":"8e5c2c8edcbdbf2cee46b86d96d951cc6d5c00f7c11cfc9c27de27e756b5c4cc","src/linux_android.rs":"ec24575aa4ae71b6991290dadfdea931b05397c3faababf24bd794f1a9624835","src/macos.rs":"6c09827ad5292cd022e063efa79523bfdb50ed08b9867ebaa007cd321b8d218e","src/openbsd.rs":"450a23ead462d4a840fee4aa0bfdab1e3d88c8f48e4bb608d457429ddeca69c0","src/rdrand.rs":"79d23183b1905d61bd9df9729dc798505a2ed750d3339e342ab144e1709827e4","src/solaris_illumos.rs":"d52fee9dd7d661f960c01894edd563c1ff8a512c111f7803092d9aa2ff98718e","src/solid.rs":"997035d54c9762d22a5a14f54e7fbed4dd266cdeacbdf6aab7d8aee05537e8ba","src/use_file.rs":"16e42eb0a56e375c330c1ca8eb58c444e82ef3ad35230b961fdba96a02a68804","src/util.rs":"da6964dc1523f1cb8d26365fa6a8ece46360587e6974931624b271f0c72cda8b","src/util_libc.rs":"a47b20e73637fed248405650f56358f3339e511b217b7ba80e32011d8ee2ca22","src/vxworks.rs":"a5aa0e40f890e0f35626458bb656a3340b8af3111e4bacd2e12505a8d50a3505","src/wasi.rs":"dfdd0a870581948bd03abe64d49ca4295d9cfa26e09b97a526fd5e17148ad9ca","src/windows.rs":"d0b4f2afd1959660aa9abcd9477764bd7dc0b7d7048aee748804b37963c77c6f","tests/common/mod.rs":"b6beee8f535d2d094a65711fe0af91a6fc220aa09729ed7269fe33cafdc9177f","tests/custom.rs":"9f2c0193193f6bcf641116ca0b3653b33d2015e0e98ce107ee1d1f60c5eeae3a","tests/normal.rs":"9e1c4b1e468a09ed0225370dfb6608f8b8135e0fabb09bbc1a718105164aade6","tests/rdrand.rs":"4474ccebf9d33c89288862a7e367018405968dddc55c7c6f97e21b5fe2264601"},"package":"c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"}
+\ No newline at end of file
+--- a/vendor/getrandom/src/util_libc.rs
++++ b/vendor/getrandom/src/util_libc.rs
+@@ -135,19 +135,11 @@ impl Weak {
+     }
  }
  
- cfg_if! {
+-cfg_if! {
 -    if #[cfg(any(target_os = "linux", target_os = "emscripten"))] {
-+    if #[cfg(any(all(target_os = "linux", not(target_env = "musl")), target_os = "emscripten"))] {
-         use libc::open64 as open;
-     } else {
-         use libc::open;
+-        use libc::open64 as open;
+-    } else {
+-        use libc::open;
+-    }
+-}
+-
+ // SAFETY: path must be null terminated, FD must be manually closed.
+ pub unsafe fn open_readonly(path: &str) -> Result<libc::c_int, Error> {
+     debug_assert_eq!(path.as_bytes().last(), Some(&0));
+     loop {
+-        let fd = open(path.as_ptr() as *const _, libc::O_RDONLY | libc::O_CLOEXEC);
++        let fd = libc::open(path.as_ptr() as *const _, libc::O_RDONLY | libc::O_CLOEXEC);
+         if fd >= 0 {
+             return Ok(fd);
+         }
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs_1.67.1.bb b/poky/meta/recipes-devtools/rust/libstd-rs_1.68.1.bb
similarity index 100%
rename from poky/meta/recipes-devtools/rust/libstd-rs_1.67.1.bb
rename to poky/meta/recipes-devtools/rust/libstd-rs_1.68.1.bb
diff --git a/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.67.1.bb b/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.68.1.bb
similarity index 100%
rename from poky/meta/recipes-devtools/rust/rust-cross-canadian_1.67.1.bb
rename to poky/meta/recipes-devtools/rust/rust-cross-canadian_1.68.1.bb
diff --git a/poky/meta/recipes-devtools/rust/rust-llvm_1.67.1.bb b/poky/meta/recipes-devtools/rust/rust-llvm_1.68.1.bb
similarity index 97%
rename from poky/meta/recipes-devtools/rust/rust-llvm_1.67.1.bb
rename to poky/meta/recipes-devtools/rust/rust-llvm_1.68.1.bb
index 4da11da8..6304070 100644
--- a/poky/meta/recipes-devtools/rust/rust-llvm_1.67.1.bb
+++ b/poky/meta/recipes-devtools/rust/rust-llvm_1.68.1.bb
@@ -49,14 +49,12 @@
     -DCMAKE_INSTALL_PREFIX:PATH=${libdir}/llvm-rust \
 "
 EXTRA_OECMAKE:append:class-target = "\
-    -DCMAKE_CROSSCOMPILING:BOOL=ON \
     -DLLVM_BUILD_TOOLS=OFF \
     -DLLVM_TABLEGEN=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-tblgen \
     -DLLVM_CONFIG_PATH=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config \
 "
 
 EXTRA_OECMAKE:append:class-nativesdk = "\
-    -DCMAKE_CROSSCOMPILING:BOOL=ON \
     -DLLVM_BUILD_TOOLS=OFF \
     -DLLVM_TABLEGEN=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-tblgen \
     -DLLVM_CONFIG_PATH=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config \
diff --git a/poky/meta/recipes-devtools/rust/rust-snapshot.inc b/poky/meta/recipes-devtools/rust/rust-snapshot.inc
index d531727..cb49d8e 100644
--- a/poky/meta/recipes-devtools/rust/rust-snapshot.inc
+++ b/poky/meta/recipes-devtools/rust/rust-snapshot.inc
@@ -4,51 +4,51 @@
 ## The exact (previous) version that has been used is specified in the source tarball.
 ## The version is replicated here.
 
-SNAPSHOT_VERSION = "1.66.1"
+SNAPSHOT_VERSION = "1.67.1"
 
-SRC_URI[cargo-snapshot-aarch64.sha256sum] = "61736a6ec61a4eaa9a7b3f219d9f8166ae97c1acd54b5e904c15fb8caff06250"
-SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "9d96ba6a5a255339cd04af079d906753d56c85503c727279c227d24bd4987e24"
-SRC_URI[rustc-snapshot-aarch64.sha256sum] = "b4d842594ba11a84712c2d1bbf7f7945cfcc2485c72861a23b488fefba5c6a45"
+SRC_URI[cargo-snapshot-aarch64.sha256sum] = "b04e33d9beb3cd97501399c17ca297f0adc12a7c0ea16351b8821fc9228de477"
+SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "35027409400faaaa38ea2855b92dea6b553b2e656dff735da730f67ac02e57e6"
+SRC_URI[rustc-snapshot-aarch64.sha256sum] = "053ccc4ab81ea9c16906205c2b653a93b5b44fe4f67f9e45153a2687b7efb65a"
 
-SRC_URI[cargo-snapshot-i686.sha256sum] = "fb0c1aa922c4e41fead9d35090769309cb45648d6f77ccbe8d2ba125a75cc2af"
-SRC_URI[rust-std-snapshot-i686.sha256sum] = "b32cbbb9002f8a20b302823a2ff122a91f077b5e1a7bc1340de690ded86bf10b"
-SRC_URI[rustc-snapshot-i686.sha256sum] = "e2ab464f43d6319ddb9796cbfacd444dc40f3d0e7503d672c23ecbe0daf11e1c"
+SRC_URI[cargo-snapshot-i686.sha256sum] = "36db46e19e8573ea113c38d88f66def5fad848721b3c6dd69361f197b7a02f80"
+SRC_URI[rust-std-snapshot-i686.sha256sum] = "aab2d7aa76793e78c9c8810e93ed8978f6422843b1277e9c60337b0f943a4409"
+SRC_URI[rustc-snapshot-i686.sha256sum] = "0c77fde6daa80825f8cb81a5525c99db238a3ab4f0b226470964062e74603dd6"
 
-SRC_URI[cargo-snapshot-mips.sha256sum] = "0f03d6d35b6044dc81a4d5eb9bd42c9d1e8c0e85363f960ff921ebe46294ae45"
-SRC_URI[rust-std-snapshot-mips.sha256sum] = "e6029b4cec5d6c06c34a0dbec614fa252fdc8cf31013d6e561112cf90f742568"
-SRC_URI[rustc-snapshot-mips.sha256sum] = "64ad92525ae1f018e08c055d7892e0fc613437bde8cf614b1c2a8986488290e7"
+SRC_URI[cargo-snapshot-mips.sha256sum] = "06778d8aedd8e7850f0175483efa015cc2eeb69e6027e3d94352d89d2a510fc5"
+SRC_URI[rust-std-snapshot-mips.sha256sum] = "048b3da190212b742f7a052618b57683dc96ee2b6c25fc7f5ae751143cb79bad"
+SRC_URI[rustc-snapshot-mips.sha256sum] = "d3b7501acdfda6e4e9d8ee64d9de716579791d567c66f1273e601a55c2e23ca8"
 
-SRC_URI[cargo-snapshot-mipsel.sha256sum] = "74d757a456d2fbb418c253db203c0bb3f71d797e4ab3e2804b6c594a18e0f199"
-SRC_URI[rust-std-snapshot-mipsel.sha256sum] = "8bfa3d6079c6df049978fe61b1ccaf992aecd006e23df2439ecfc883bd8bc31b"
-SRC_URI[rustc-snapshot-mipsel.sha256sum] = "f2674d60ce52c49048e9823af57aae24bb6722e8998783819ec884222caeccf3"
+SRC_URI[cargo-snapshot-mipsel.sha256sum] = "7bf800ddd0ee6b69bb66fb7cdf12ae045db025fdb866e00c62b63a1eb99f7d64"
+SRC_URI[rust-std-snapshot-mipsel.sha256sum] = "94410897626546dde806a114299c3c32abb6b4b294af5daea5c4d136751fe063"
+SRC_URI[rustc-snapshot-mipsel.sha256sum] = "eb34b5d901807e1e47fb6ac686571f21b2a80ad831583485872c9e9c59291776"
 
-SRC_URI[cargo-snapshot-powerpc.sha256sum] = "f771fa4294c8e0d5d0e58129fe9d4e0913566dd43523b6f0af19a08004004df8"
-SRC_URI[rust-std-snapshot-powerpc.sha256sum] = "417b12a9bf090d694514937cd8c321ed625f155248f63c0de8207b17fa4b35b1"
-SRC_URI[rustc-snapshot-powerpc.sha256sum] = "ff16d02c100086175b9fbcfff4d3705fb4f5b58a6506ec7667dc86c56b8bb3c7"
+SRC_URI[cargo-snapshot-powerpc.sha256sum] = "b134c63817805f59821024d377196f2821ae53f88d0a4a2ebdbd8152433984b0"
+SRC_URI[rust-std-snapshot-powerpc.sha256sum] = "26efe78c09ed36da34964c0d023cf9aa404766ab790a94d9becd373b8879cb5a"
+SRC_URI[rustc-snapshot-powerpc.sha256sum] = "8f6212756d152f6876a6456f4d3f93ef8b4b7e5c93b96fe515cb8183c0612d7b"
 
-SRC_URI[cargo-snapshot-powerpc64.sha256sum] = "9a933d39e6b028e73db9cc0959af84128824e0b11554e3a0171cad7635a343c7"
-SRC_URI[rust-std-snapshot-powerpc64.sha256sum] = "7074c4ea9fcc683ceb0adcca6ba07544a1d91f0e5d2a4cf14c81eb14316ebf35"
-SRC_URI[rustc-snapshot-powerpc64.sha256sum] = "f5bff79d517e2f721839462881331bdc1b8323a434f4ebe0529f93213adb2a24"
+SRC_URI[cargo-snapshot-powerpc64.sha256sum] = "2cd84deb15ed16fc4a1d8a9de45577ba4d9f245de4f7efb3dc6611eec437eef3"
+SRC_URI[rust-std-snapshot-powerpc64.sha256sum] = "135f5e6ab6d8f077a14521d387d3f31831abdb840ca4e6a15b6f0d0d5b7dbc81"
+SRC_URI[rustc-snapshot-powerpc64.sha256sum] = "bdb08b549df5d7a421637efb0be00211b5ca9cf1e4214d66eb762b92e0f9b3fe"
 
-SRC_URI[cargo-snapshot-powerpc64le.sha256sum] = "29fa2e003f4bf3e37a3fb506d5b7ab19eb6412b5966d865e082b354637d5d84a"
-SRC_URI[rust-std-snapshot-powerpc64le.sha256sum] = "4c64a09be872b5832b50d681fbe29691b6a5d3e23ee5535020fa22b8b453c770"
-SRC_URI[rustc-snapshot-powerpc64le.sha256sum] = "3b4322b519b0f7fbcf88511b2061be1499921517d810d7696be58a16467d4589"
+SRC_URI[cargo-snapshot-powerpc64le.sha256sum] = "fbad853a30437653f09001d0de797823dfa32d537163841bec1792c3267f5eab"
+SRC_URI[rust-std-snapshot-powerpc64le.sha256sum] = "364c47ed22e4268edf238d221c40007d7d8792a66ca325d3937596a9c911ea48"
+SRC_URI[rustc-snapshot-powerpc64le.sha256sum] = "4a2368996acd1741200d720674101323fa951dfa580b64c8b2e9fdc09bb22534"
 
-SRC_URI[cargo-snapshot-riscv64gc.sha256sum] = "f362cf575fde92f988d5b1fe19fd463a1905d8d2a3844168034df49b1dffb10b"
-SRC_URI[rust-std-snapshot-riscv64gc.sha256sum] = "776eff6f451845e88224714ee6da7819e34f01b7625bf927394c2b91e5c8243c"
-SRC_URI[rustc-snapshot-riscv64gc.sha256sum] = "84bea70d3acb6af04ae4c0f49f904bba4e2644b92c5996aacbafd7610dd0e147"
+SRC_URI[cargo-snapshot-riscv64gc.sha256sum] = "3381af9ba39068b9c5e62536125a3abb582aef15932f63cd4f90df0cccb05ac7"
+SRC_URI[rust-std-snapshot-riscv64gc.sha256sum] = "63a7e6a6c889a3d01bb3c66a3def3e41963511ea52e13906669da5b29b2fd9da"
+SRC_URI[rustc-snapshot-riscv64gc.sha256sum] = "916d204d727f485abbadeef914ee881cf61fa3c167741a9ed29c9f4042c99e25"
 
-SRC_URI[cargo-snapshot-s390x.sha256sum] = "f69ea091fa1ee4871a46cb9fa1da5b81fa2980687f3bedbc4677a4a82f8da0c0"
-SRC_URI[rust-std-snapshot-s390x.sha256sum] = "51d1567e1d28e43c2165886f5a4955dcdaa41aa5ddcec5fb08200491fd1f6062"
-SRC_URI[rustc-snapshot-s390x.sha256sum] = "25a047db8ec0627bb7054eafe6edca6ce4c473b30d6766b30cbff1c536d0673b"
+SRC_URI[cargo-snapshot-s390x.sha256sum] = "78d7c2714015ecb7283b417cb265d4d604379d0720aab5f611ca1c113987c283"
+SRC_URI[rust-std-snapshot-s390x.sha256sum] = "04573298d9e815c1e8c47a2f9548ea55d4a2afc538eceaa6a704d44a5e1f7e3e"
+SRC_URI[rustc-snapshot-s390x.sha256sum] = "e786d34e10069dc00774fe53bca092e537e96db6c9d5258a8b0221e4fa5a2caf"
 
-SRC_URI[cargo-snapshot-x86_64.sha256sum] = "a636f83eb2327a66f484b9592ab305c6642df16fc80d0d1cb727e766a60da904"
-SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "c5e2c9b160bd8d99514f13cfbc0e42a722fd9ca14e6aaca4b9b77731a7a48377"
-SRC_URI[rustc-snapshot-x86_64.sha256sum] = "242855e2626860aede6957dc56481cc02acf8cad12fa5bbbcbd93f9c51f0b3ad"
+SRC_URI[cargo-snapshot-x86_64.sha256sum] = "e744dad75de8419e7fea530c29bd56cf931b4d4de62eb4bd442bfac7b54e61ed"
+SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "f4dc8468dfc1dbd86f865b10f06e0e4b4e76f5a3a1cc27317a520ab1660844e9"
+SRC_URI[rustc-snapshot-x86_64.sha256sum] = "e27ec0c6d1a2b2b38e5258904c3741ddb246bff5715aa95e595f818aa77f7bee"
 
-SRC_URI[rust-std-snapshot-i586.sha256sum] = "90eb8e2490283930e682b79842d664d4867414563353d53dafc47eccf44aea17"
+SRC_URI[rust-std-snapshot-i586.sha256sum] = "22cbbf0b22d9b0894cfbd6e1dd6b95b71c7ad02cee4e477d375dcf81af8d1337"
 
-SRC_URI[rust-std-snapshot-sparc64.sha256sum] = "3aee03fa61c28bb242023efb09a22e38a76b075cc72bcad9894560be8b28a927"
+SRC_URI[rust-std-snapshot-sparc64.sha256sum] = "addf0b0beb1966787e599f32849f18c28d5cb65515272b7d9608d4a1dddee2e7"
 
 SRC_URI += " \
     ${RUST_DIST_SERVER}/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \
diff --git a/poky/meta/recipes-devtools/rust/rust-source.inc b/poky/meta/recipes-devtools/rust/rust-source.inc
index 942978e..c8f5a5a 100644
--- a/poky/meta/recipes-devtools/rust/rust-source.inc
+++ b/poky/meta/recipes-devtools/rust/rust-source.inc
@@ -7,7 +7,7 @@
             file://0001-Do-not-use-LFS64-on-linux-with-musl.patch;patchdir=${RUSTSRC} \
             file://zlib-off64_t.patch;patchdir=${RUSTSRC} \
 "
-SRC_URI[rust.sha256sum] = "77e0615011f887d9533d5374bf9c15c590c3caf32bbb035b392d1c2ae502a682"
+SRC_URI[rust.sha256sum] = "5b8ea94085b65e75c1fa6310e2f90bd706fa80bfcb3544fe26f4037b911d9fb2"
 
 RUSTSRC = "${WORKDIR}/rustc-${RUST_VERSION}-src"
 
diff --git a/poky/meta/recipes-devtools/rust/rust_1.67.1.bb b/poky/meta/recipes-devtools/rust/rust_1.68.1.bb
similarity index 97%
rename from poky/meta/recipes-devtools/rust/rust_1.67.1.bb
rename to poky/meta/recipes-devtools/rust/rust_1.68.1.bb
index f4c6d95..83f9bec 100644
--- a/poky/meta/recipes-devtools/rust/rust_1.67.1.bb
+++ b/poky/meta/recipes-devtools/rust/rust_1.68.1.bb
@@ -200,7 +200,7 @@
 
     # Copy the natively built llvm-config into the target so we can run it. Horrible,
     # but works!
-    if [ ${RUST_ALTERNATE_EXE_PATH_NATIVE} != ${RUST_ALTERNATE_EXE_PATH} ]; then
+    if [ ${RUST_ALTERNATE_EXE_PATH_NATIVE} != ${RUST_ALTERNATE_EXE_PATH} -a ! -f ${RUST_ALTERNATE_EXE_PATH} ]; then
         mkdir -p `dirname ${RUST_ALTERNATE_EXE_PATH}`
         cp ${RUST_ALTERNATE_EXE_PATH_NATIVE} ${RUST_ALTERNATE_EXE_PATH}
         chrpath -d ${RUST_ALTERNATE_EXE_PATH}
@@ -221,17 +221,6 @@
 FILES:${PN}-dev = ""
 
 do_compile () {
-    rust_runx build --stage 2
-}
-
-do_compile:append:class-target () {
-    rust_runx build --stage 2 src/tools/clippy
-    rust_runx build --stage 2 src/tools/rustfmt
-}
-
-do_compile:append:class-nativesdk () {
-    rust_runx build --stage 2 src/tools/clippy
-    rust_runx build --stage 2 src/tools/rustfmt
 }
 
 ALLOW_EMPTY:${PN} = "1"
@@ -256,6 +245,8 @@
 rust_do_install:class-nativesdk() {
     export PSEUDO_UNLOAD=1
     rust_runx install
+    rust_runx install clippy
+    rust_runx install rustfmt
     unset PSEUDO_UNLOAD
 
     install -d ${D}${bindir}
@@ -274,6 +265,8 @@
 rust_do_install:class-target() {
     export PSEUDO_UNLOAD=1
     rust_runx install
+    rust_runx install clippy
+    rust_runx install rustfmt
     unset PSEUDO_UNLOAD
 
     install -d ${D}${bindir}
diff --git a/poky/meta/recipes-extended/cpio/cpio-2.13/0001-Wrong-CRC-with-ASCII-CRC-for-large-files.patch b/poky/meta/recipes-extended/cpio/cpio-2.13/0001-Wrong-CRC-with-ASCII-CRC-for-large-files.patch
new file mode 100644
index 0000000..4b96e43
--- /dev/null
+++ b/poky/meta/recipes-extended/cpio/cpio-2.13/0001-Wrong-CRC-with-ASCII-CRC-for-large-files.patch
@@ -0,0 +1,39 @@
+From 77ff5f1be394eb2c786df561ff37dde7f982ec76 Mon Sep 17 00:00:00 2001
+From: Stefano Babic <sbabic@denx.de>
+Date: Fri, 28 Jul 2017 13:20:52 +0200
+Subject: [PATCH] Wrong CRC with ASCII CRC for large files
+
+Due to signedness, the checksum is not computed when filesize is bigger
+a 2GB.
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/bug-cpio/2017-07/msg00004.html]
+Signed-off-by: Stefano Babic <sbabic@denx.de>
+---
+ src/copyout.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/copyout.c b/src/copyout.c
+index 1f0987a..727aeca 100644
+--- a/src/copyout.c
++++ b/src/copyout.c
+@@ -34,13 +34,13 @@
+    compute and return a checksum for them.  */
+ 
+ static uint32_t
+-read_for_checksum (int in_file_des, int file_size, char *file_name)
++read_for_checksum (int in_file_des, unsigned int file_size, char *file_name)
+ {
+   uint32_t crc;
+   char buf[BUFSIZ];
+-  int bytes_left;
+-  int bytes_read;
+-  int i;
++  unsigned int bytes_left;
++  unsigned int bytes_read;
++  unsigned int i;
+ 
+   crc = 0;
+ 
+-- 
+2.7.4
+
diff --git a/poky/meta/recipes-extended/cpio/cpio_2.13.bb b/poky/meta/recipes-extended/cpio/cpio_2.13.bb
index 3350ba7..df5e09c 100644
--- a/poky/meta/recipes-extended/cpio/cpio_2.13.bb
+++ b/poky/meta/recipes-extended/cpio/cpio_2.13.bb
@@ -12,6 +12,7 @@
            file://0001-obstack-Fix-a-clang-warning.patch \
            file://CVE-2021-38185.patch \
            file://0001-Use-__alignof__-with-clang.patch \
+           file://0001-Wrong-CRC-with-ASCII-CRC-for-large-files.patch \
            file://run-ptest \
            "
 
diff --git a/poky/meta/recipes-extended/grep/grep_3.9.bb b/poky/meta/recipes-extended/grep/grep_3.10.bb
similarity index 93%
rename from poky/meta/recipes-extended/grep/grep_3.9.bb
rename to poky/meta/recipes-extended/grep/grep_3.10.bb
index 3c39a5f..33fd64d 100644
--- a/poky/meta/recipes-extended/grep/grep_3.9.bb
+++ b/poky/meta/recipes-extended/grep/grep_3.10.bb
@@ -8,7 +8,7 @@
 
 SRC_URI = "${GNU_MIRROR}/grep/grep-${PV}.tar.xz"
 
-SRC_URI[sha256sum] = "abcd11409ee23d4caf35feb422e53bbac867014cfeed313bb5f488aca170b599"
+SRC_URI[sha256sum] = "24efa5b595fb5a7100879b51b8868a0bb87a71c183d02c4c602633b88af6855b"
 
 inherit autotools gettext texinfo pkgconfig
 
diff --git a/poky/meta/recipes-extended/screen/screen/signal-permission.patch b/poky/meta/recipes-extended/screen/screen/signal-permission.patch
new file mode 100644
index 0000000..77dc649
--- /dev/null
+++ b/poky/meta/recipes-extended/screen/screen/signal-permission.patch
@@ -0,0 +1,40 @@
+From e9ad41bfedb4537a6f0de20f00b27c7739f168f7 Mon Sep 17 00:00:00 2001
+From: Alexander Naumov <alexander_naumov@opensuse.org>
+Date: Mon, 30 Jan 2023 17:22:25 +0200
+Subject: fix: missing signal sending permission check on failed query messages
+
+Signed-off-by: Alexander Naumov <alexander_naumov@opensuse.org>
+
+CVE: CVE-2023-24626
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+---
+ src/socket.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/src/socket.c b/src/socket.c
+index 147dc54..54d8cb8 100644
+--- a/socket.c
++++ b/socket.c
+@@ -1285,11 +1285,16 @@ ReceiveMsg()
+           else
+             queryflag = -1;
+ 
+-          Kill(m.m.command.apid,
++          if (CheckPid(m.m.command.apid)) {
++            Msg(0, "Query attempt with bad pid(%d)!", m.m.command.apid);
++          }
++          else {
++            Kill(m.m.command.apid,
+                (queryflag >= 0)
+                    ? SIGCONT
+                    : SIG_BYE); /* Send SIG_BYE if an error happened */
+-          queryflag = -1;
++            queryflag = -1;
++          }
+         }
+         break;
+       case MSG_COMMAND:
+-- 
+cgit v1.1
+
diff --git a/poky/meta/recipes-extended/screen/screen_4.9.0.bb b/poky/meta/recipes-extended/screen/screen_4.9.0.bb
index 77e8000..235cd8c 100644
--- a/poky/meta/recipes-extended/screen/screen_4.9.0.bb
+++ b/poky/meta/recipes-extended/screen/screen_4.9.0.bb
@@ -22,6 +22,7 @@
            file://0001-fix-for-multijob-build.patch \
            file://0001-Remove-more-compatibility-stuff.patch \
            file://0001-configure-Add-needed-system-headers-in-checks.patch \
+           file://signal-permission.patch \
            "
 
 SRC_URI[sha256sum] = "f9335281bb4d1538ed078df78a20c2f39d3af9a4e91c57d084271e0289c730f4"
diff --git a/poky/meta/recipes-extended/shadow/files/0001-Fix-can-not-print-full-login.patch b/poky/meta/recipes-extended/shadow/files/0001-Fix-can-not-print-full-login.patch
new file mode 100644
index 0000000..37ba5f3
--- /dev/null
+++ b/poky/meta/recipes-extended/shadow/files/0001-Fix-can-not-print-full-login.patch
@@ -0,0 +1,41 @@
+commit 670cae834827a8f794e6f7464fa57790d911b63c
+Author: SoumyaWind <121475834+SoumyaWind@users.noreply.github.com>
+Date:   Tue Dec 27 17:40:17 2022 +0530
+
+    shadow: Fix can not print full login timeout message
+    
+    Login timed out message prints only first few bytes when write is immediately followed by exit.
+    Calling exit from new handler provides enough time to display full message.
+
+Upstream-Status: Accepted [https://github.com/shadow-maint/shadow/commit/670cae834827a8f794e6f7464fa57790d911b63c]
+
+diff --git a/src/login.c b/src/login.c
+index 116e2cb3..c55f4de0 100644
+--- a/src/login.c
++++ b/src/login.c
+@@ -120,6 +120,7 @@ static void get_pam_user (char **ptr_pam_user);
+ 
+ static void init_env (void);
+ static void alarm_handler (int);
++static void exit_handler (int);
+ 
+ /*
+  * usage - print login command usage and exit
+@@ -391,11 +392,16 @@ static void init_env (void)
+ #endif				/* !USE_PAM */
+ }
+ 
++static void exit_handler (unused int sig)
++{
++	_exit (0);
++}
+ 
+ static void alarm_handler (unused int sig)
+ {
+ 	write (STDERR_FILENO, tmsg, strlen (tmsg));
+-	_exit (0);
++	signal(SIGALRM, exit_handler);
++	alarm(2);
+ }
+ 
+ #ifdef USE_PAM
diff --git a/poky/meta/recipes-extended/shadow/files/0001-Overhaul-valid_field.patch b/poky/meta/recipes-extended/shadow/files/0001-Overhaul-valid_field.patch
new file mode 100644
index 0000000..ac08be5
--- /dev/null
+++ b/poky/meta/recipes-extended/shadow/files/0001-Overhaul-valid_field.patch
@@ -0,0 +1,65 @@
+From 2eaea70111f65b16d55998386e4ceb4273c19eb4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= <cgzones@googlemail.com>
+Date: Fri, 31 Mar 2023 14:46:50 +0200
+Subject: [PATCH] Overhaul valid_field()
+
+e5905c4b ("Added control character check") introduced checking for
+control characters but had the logic inverted, so it rejects all
+characters that are not control ones.
+
+Cast the character to `unsigned char` before passing to the character
+checking functions to avoid UB.
+
+Use strpbrk(3) for the illegal character test and return early.
+
+Upstream-Status: Backport [https://github.com/shadow-maint/shadow/commit/2eaea70111f65b16d55998386e4ceb4273c19eb4]
+
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ lib/fields.c | 24 ++++++++++--------------
+ 1 file changed, 10 insertions(+), 14 deletions(-)
+
+diff --git a/lib/fields.c b/lib/fields.c
+index fb51b582..53929248 100644
+--- a/lib/fields.c
++++ b/lib/fields.c
+@@ -37,26 +37,22 @@ int valid_field (const char *field, const char *illegal)
+ 
+ 	/* For each character of field, search if it appears in the list
+ 	 * of illegal characters. */
++	if (illegal && NULL != strpbrk (field, illegal)) {
++		return -1;
++	}
++
++	/* Search if there are non-printable or control characters */
+ 	for (cp = field; '\0' != *cp; cp++) {
+-		if (strchr (illegal, *cp) != NULL) {
++		unsigned char c = *cp;
++		if (!isprint (c)) {
++			err = 1;
++		}
++		if (iscntrl (c)) {
+ 			err = -1;
+ 			break;
+ 		}
+ 	}
+ 
+-	if (0 == err) {
+-		/* Search if there are non-printable or control characters */
+-		for (cp = field; '\0' != *cp; cp++) {
+-			if (!isprint (*cp)) {
+-				err = 1;
+-			}
+-			if (!iscntrl (*cp)) {
+-				err = -1;
+-				break;
+-			}
+-		}
+-	}
+-
+ 	return err;
+ }
+ 
+-- 
+2.34.1
+
diff --git a/poky/meta/recipes-extended/shadow/files/CVE-2023-29383.patch b/poky/meta/recipes-extended/shadow/files/CVE-2023-29383.patch
new file mode 100644
index 0000000..f53341d
--- /dev/null
+++ b/poky/meta/recipes-extended/shadow/files/CVE-2023-29383.patch
@@ -0,0 +1,53 @@
+From e5905c4b84d4fb90aefcd96ee618411ebfac663d Mon Sep 17 00:00:00 2001
+From: tomspiderlabs <128755403+tomspiderlabs@users.noreply.github.com>
+Date: Thu, 23 Mar 2023 23:39:38 +0000
+Subject: [PATCH] Added control character check
+
+Added control character check, returning -1 (to "err") if control characters are present.
+
+CVE: CVE-2023-29383
+Upstream-Status: Backport
+
+Reference to upstream:
+https://github.com/shadow-maint/shadow/commit/e5905c4b84d4fb90aefcd96ee618411ebfac663d
+
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ lib/fields.c | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/lib/fields.c b/lib/fields.c
+index 640be931..fb51b582 100644
+--- a/lib/fields.c
++++ b/lib/fields.c
+@@ -21,9 +21,9 @@
+  *
+  * The supplied field is scanned for non-printable and other illegal
+  * characters.
+- *  + -1 is returned if an illegal character is present.
+- *  +  1 is returned if no illegal characters are present, but the field
+- *       contains a non-printable character.
++ *  + -1 is returned if an illegal or control character is present.
++ *  +  1 is returned if no illegal or control characters are present,
++ *       but the field contains a non-printable character.
+  *  +  0 is returned otherwise.
+  */
+ int valid_field (const char *field, const char *illegal)
+@@ -45,10 +45,13 @@ int valid_field (const char *field, const char *illegal)
+ 	}
+ 
+ 	if (0 == err) {
+-		/* Search if there are some non-printable characters */
++		/* Search if there are non-printable or control characters */
+ 		for (cp = field; '\0' != *cp; cp++) {
+ 			if (!isprint (*cp)) {
+ 				err = 1;
++			}
++			if (!iscntrl (*cp)) {
++				err = -1;
+ 				break;
+ 			}
+ 		}
+-- 
+2.34.1
+
diff --git a/poky/meta/recipes-extended/shadow/shadow.inc b/poky/meta/recipes-extended/shadow/shadow.inc
index 2c70a2d..cf05a3a 100644
--- a/poky/meta/recipes-extended/shadow/shadow.inc
+++ b/poky/meta/recipes-extended/shadow/shadow.inc
@@ -14,6 +14,9 @@
 SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BP}.tar.gz \
            ${@bb.utils.contains('PACKAGECONFIG', 'pam', '${PAM_SRC_URI}', '', d)} \
            file://useradd \
+	   file://0001-Fix-can-not-print-full-login.patch \
+           file://CVE-2023-29383.patch \
+           file://0001-Overhaul-valid_field.patch \
            "
 
 SRC_URI:append:class-target = " \
diff --git a/poky/meta/recipes-extended/xdg-utils/xdg-utils/CVE-2022-4055.patch b/poky/meta/recipes-extended/xdg-utils/xdg-utils/CVE-2022-4055.patch
new file mode 100644
index 0000000..b236030
--- /dev/null
+++ b/poky/meta/recipes-extended/xdg-utils/xdg-utils/CVE-2022-4055.patch
@@ -0,0 +1,145 @@
+xdg-email does not parse mailto uris properly for thunderbird
+
+When using thunderbird as mailto handler xdg-email translates mailto uris into an 'thunderbird -compose' argument. While to, cc and bcc values are properly enclosed in single quotes this is not the case for subject or body. This breaks functionality and allows to use all thunderbird -compose arguments within a mailto uri, e.g.
+
+xdg-email 'mailto:test@example.com?subject=Test,attachment=~/.thunderbird/profiles.ini,message=/home/test/test.txt'
+
+translates into
+
+thunderbird -compose to='test@example.com,',subject=Test,attachment=~/.thunderbird/profiles.ini,message=/home/test/test.txt
+
+with working attachment and message. (And, yes, ~ expands to the home directory.)
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/205]
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+CVE: CVE-2022-4055
+
+
+Index: xdg-utils-1.1.3/scripts/xdg-email.in
+===================================================================
+--- xdg-utils-1.1.3.orig/scripts/xdg-email.in
++++ xdg-utils-1.1.3/scripts/xdg-email.in
+@@ -30,53 +30,6 @@ _USAGE
+ 
+ #@xdg-utils-common@
+ 
+-run_thunderbird()
+-{
+-    local THUNDERBIRD MAILTO NEWMAILTO TO CC BCC SUBJECT BODY
+-    THUNDERBIRD="$1"
+-    MAILTO=$(echo "$2" | sed 's/^mailto://')
+-    echo "$MAILTO" | grep -qs "^?"
+-    if [ "$?" = "0" ] ; then
+-        MAILTO=$(echo "$MAILTO" | sed 's/^?//')
+-    else
+-        MAILTO=$(echo "$MAILTO" | sed 's/^/to=/' | sed 's/?/\&/')
+-    fi
+-
+-    MAILTO=$(echo "$MAILTO" | sed 's/&/\n/g')
+-    TO=$(/bin/echo -e $(echo "$MAILTO" | grep '^to=' | sed 's/^to=//;s/%\(..\)/\\x\1/g' | awk '{ printf "%s,",$0 }'))
+-    CC=$(/bin/echo -e $(echo "$MAILTO" | grep '^cc=' | sed 's/^cc=//;s/%\(..\)/\\x\1/g' | awk '{ printf "%s,",$0 }'))
+-    BCC=$(/bin/echo -e $(echo "$MAILTO" | grep '^bcc=' | sed 's/^bcc=//;s/%\(..\)/\\x\1/g' | awk '{ printf "%s,",$0 }'))
+-    SUBJECT=$(echo "$MAILTO" | grep '^subject=' | tail -n 1)
+-    BODY=$(echo "$MAILTO" | grep '^body=' | tail -n 1)
+-
+-    if [ -z "$TO" ] ; then
+-        NEWMAILTO=
+-    else
+-        NEWMAILTO="to='$TO'"
+-    fi
+-    if [ -n "$CC" ] ; then
+-        NEWMAILTO="${NEWMAILTO},cc='$CC'"
+-    fi
+-    if [ -n "$BCC" ] ; then
+-        NEWMAILTO="${NEWMAILTO},bcc='$BCC'"
+-    fi
+-    if [ -n "$SUBJECT" ] ; then
+-        NEWMAILTO="${NEWMAILTO},$SUBJECT"
+-    fi
+-    if [ -n "$BODY" ] ; then
+-        NEWMAILTO="${NEWMAILTO},$BODY"
+-    fi
+-
+-    NEWMAILTO=$(echo "$NEWMAILTO" | sed 's/^,//')
+-    DEBUG 1 "Running $THUNDERBIRD -compose \"$NEWMAILTO\""
+-    "$THUNDERBIRD" -compose "$NEWMAILTO"
+-    if [ $? -eq 0 ]; then
+-        exit_success
+-    else
+-        exit_failure_operation_failed
+-    fi
+-}
+-
+ open_kde()
+ {
+     if [ -n "$KDE_SESSION_VERSION" ] && [ "$KDE_SESSION_VERSION" -ge 5 ]; then
+@@ -130,15 +83,6 @@ open_kde()
+ 
+ open_gnome3()
+ {
+-    local client
+-    local desktop
+-    desktop=`xdg-mime query default "x-scheme-handler/mailto"`
+-    client=`desktop_file_to_binary "$desktop"`
+-    echo $client | grep -E 'thunderbird|icedove' > /dev/null 2>&1
+-    if [ $? -eq 0 ] ; then
+-        run_thunderbird "$client" "$1"
+-    fi
+-
+     if gio help open 2>/dev/null 1>&2; then
+         DEBUG 1 "Running gio open \"$1\""
+         gio open "$1"
+@@ -159,13 +103,6 @@ open_gnome3()
+ 
+ open_gnome()
+ {
+-    local client
+-    client=`gconftool-2 --get /desktop/gnome/url-handlers/mailto/command | cut -d ' ' -f 1` || ""
+-    echo $client | grep -E 'thunderbird|icedove' > /dev/null 2>&1
+-    if [ $? -eq 0 ] ; then
+-        run_thunderbird "$client" "$1"
+-    fi
+-
+     if gio help open 2>/dev/null 1>&2; then
+         DEBUG 1 "Running gio open \"$1\""
+         gio open "$1"
+@@ -231,15 +168,6 @@ open_flatpak()
+ 
+ open_generic()
+ {
+-    local client
+-    local desktop
+-    desktop=`xdg-mime query default "x-scheme-handler/mailto"`
+-    client=`desktop_file_to_binary "$desktop"`
+-    echo $client | grep -E 'thunderbird|icedove' > /dev/null 2>&1
+-    if [ $? -eq 0 ] ; then
+-        run_thunderbird "$client" "$1"
+-    fi
+-
+     xdg-open "$1"
+     local ret=$?
+ 
+@@ -364,21 +292,6 @@ while [ $# -gt 0 ] ; do
+         shift
+         ;;
+ 
+-      --attach)
+-        if [ -z "$1" ] ; then
+-            exit_failure_syntax "file argument missing for --attach option"
+-        fi
+-        check_input_file "$1"
+-        file=`readlink -f "$1"` # Normalize path
+-        if [ -z "$file" ] || [ ! -f "$file" ] ; then
+-            exit_failure_file_missing "file '$1' does not exist"
+-        fi
+-
+-        url_encode "$file"
+-        options="${options}attach=${result}&"
+-        shift
+-        ;;
+-
+       -*)
+         exit_failure_syntax "unexpected option '$parm'"
+         ;;
diff --git a/poky/meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb b/poky/meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb
index 73acf6b..4d93180 100644
--- a/poky/meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb
+++ b/poky/meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb
@@ -21,6 +21,7 @@
            file://0001-Reinstate-xdg-terminal.patch \
            file://0001-Don-t-build-the-in-script-manual.patch \
            file://1f199813e0eb0246f63b54e9e154970e609575af.patch \
+           file://CVE-2022-4055.patch \
           "
 
 SRC_URI[md5sum] = "902042508b626027a3709d105f0b63ff"
diff --git a/poky/meta/recipes-extended/xz/xz_5.4.1.bb b/poky/meta/recipes-extended/xz/xz_5.4.2.bb
similarity index 87%
rename from poky/meta/recipes-extended/xz/xz_5.4.1.bb
rename to poky/meta/recipes-extended/xz/xz_5.4.2.bb
index 71bf4b5..87f9602 100644
--- a/poky/meta/recipes-extended/xz/xz_5.4.1.bb
+++ b/poky/meta/recipes-extended/xz/xz_5.4.2.bb
@@ -17,15 +17,15 @@
 LICENSE:${PN}-locale = "GPL-2.0-or-later"
 LICENSE:liblzma = "PD"
 
-LIC_FILES_CHKSUM = "file://COPYING;md5=97d554a32881fee0aa283d96e47cb24a \
+LIC_FILES_CHKSUM = "file://COPYING;md5=c8ea84ebe7b93cce676b54355dc6b2c0 \
                     file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://COPYING.GPLv3;md5=1ebbd3e34237af26da5dc08a4e440464 \
                     file://COPYING.LGPLv2.1;md5=4fbd65380cdd255951079008b364516c \
                     file://lib/getopt.c;endline=23;md5=2069b0ee710572c03bb3114e4532cd84 \
                     "
 
 SRC_URI = "https://tukaani.org/xz/xz-${PV}.tar.gz"
-SRC_URI[sha256sum] = "e4b0f81582efa155ccf27bb88275254a429d44968e488fc94b806f2a61cd3e22"
+SRC_URI[sha256sum] = "87947679abcf77cc509d8d1b474218fd16b72281e2797360e909deaee1ac9d05"
 UPSTREAM_CHECK_REGEX = "xz-(?P<pver>\d+(\.\d+)+)\.tar"
 
 CACHED_CONFIGUREVARS += "gl_cv_posix_shell=/bin/sh"
diff --git a/poky/meta/recipes-gnome/gnome/gconf_3.2.6.bb b/poky/meta/recipes-gnome/gnome/gconf_3.2.6.bb
index 776f609..e712e47 100644
--- a/poky/meta/recipes-gnome/gnome/gconf_3.2.6.bb
+++ b/poky/meta/recipes-gnome/gnome/gconf_3.2.6.bb
@@ -7,7 +7,7 @@
 LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
 
-DEPENDS = "glib-2.0 dbus dbus-glib libxml2 intltool-native"
+DEPENDS = "glib-2.0 glib-2.0-native gobject-introspection dbus dbus-glib libxml2 intltool-native"
 
 inherit gnomebase gtk-doc gettext gobject-introspection gio-module-cache
 
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
index 627f389..9c34fb7 100644
--- 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
@@ -9,7 +9,7 @@
 LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
 
-DEPENDS = "glib-2.0"
+DEPENDS = "glib-2.0 glib-2.0-native"
 
 GNOMEBASEBUILDCLASS = "meson"
 inherit gnomebase lib_package gobject-introspection gi-docgen gettext ptest-gnome manpages upstream-version-is-even
diff --git a/poky/meta/recipes-gnome/libgudev/libgudev_237.bb b/poky/meta/recipes-gnome/libgudev/libgudev_237.bb
index 9ce43ce..5aa94e5 100644
--- a/poky/meta/recipes-gnome/libgudev/libgudev_237.bb
+++ b/poky/meta/recipes-gnome/libgudev/libgudev_237.bb
@@ -7,7 +7,7 @@
 BUGTRACKER = "https://gitlab.gnome.org/GNOME/libgudev/issues"
 SRC_URI[archive.sha256sum] = "0d06b21170d20c93e4f0534dbb9b0a8b4f1119ffb00b4031aaeb5b9148b686aa"
 
-DEPENDS = "glib-2.0 udev"
+DEPENDS = "glib-2.0 glib-2.0-native udev"
 
 RCONFLICTS:${PN} = "systemd (<= 220)"
 
diff --git a/poky/meta/recipes-gnome/libnotify/libnotify_0.8.2.bb b/poky/meta/recipes-gnome/libnotify/libnotify_0.8.2.bb
index bbfc217..b1656fe 100644
--- a/poky/meta/recipes-gnome/libnotify/libnotify_0.8.2.bb
+++ b/poky/meta/recipes-gnome/libnotify/libnotify_0.8.2.bb
@@ -9,7 +9,7 @@
 LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
 
-DEPENDS = "dbus glib-2.0 gdk-pixbuf"
+DEPENDS = "dbus glib-2.0 glib-2.0-native gdk-pixbuf"
 
 PACKAGECONFIG ?= ""
 PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false,gtk+3"
diff --git a/poky/meta/recipes-graphics/graphene/graphene_1.10.8.bb b/poky/meta/recipes-graphics/graphene/graphene_1.10.8.bb
index 120ee80..9f5b4d0 100644
--- a/poky/meta/recipes-graphics/graphene/graphene_1.10.8.bb
+++ b/poky/meta/recipes-graphics/graphene/graphene_1.10.8.bb
@@ -11,8 +11,9 @@
 
 # Disable neon support by default on ARM-32 platforms because of the
 # following upstream bug: https://github.com/ebassi/graphene/issues/215
-PACKAGECONFIG ?= "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', 'neon', '', d)}"
+PACKAGECONFIG ?= "gobject-types ${@bb.utils.contains('TUNE_FEATURES', 'aarch64', 'neon', '', d)}"
 
+PACKAGECONFIG[gobject-types] = "-Dgobject_types=true,-Dgobject_types=false,glib-2.0"
 PACKAGECONFIG[neon] = "-Darm_neon=true,-Darm_neon=false,"
 
 GIR_MESON_ENABLE_FLAG = 'enabled'
diff --git a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_7.1.0.bb b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_7.1.0.bb
index 4406e15..71c92c6 100644
--- a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_7.1.0.bb
+++ b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_7.1.0.bb
@@ -11,6 +11,8 @@
 SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BPN}-${PV}.tar.xz"
 SRC_URI[sha256sum] = "f135a61cd464c9ed6bc9823764c188f276c3850a8dc904628de2a87966b7077b"
 
+DEPENDS += "glib-2.0-native"
+
 inherit meson pkgconfig lib_package gtk-doc gobject-introspection github-releases
 
 GIR_MESON_ENABLE_FLAG = 'enabled'
diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-composite-Fix-use-after-free-of-the-COW.patch b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-composite-Fix-use-after-free-of-the-COW.patch
new file mode 100644
index 0000000..fc426da
--- /dev/null
+++ b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-composite-Fix-use-after-free-of-the-COW.patch
@@ -0,0 +1,46 @@
+From 26ef545b3502f61ca722a7a3373507e88ef64110 Mon Sep 17 00:00:00 2001
+From: Olivier Fourdan <ofourdan@redhat.com>
+Date: Mon, 13 Mar 2023 11:08:47 +0100
+Subject: [PATCH] composite: Fix use-after-free of the COW
+
+ZDI-CAN-19866/CVE-2023-1393
+
+If a client explicitly destroys the compositor overlay window (aka COW),
+we would leave a dangling pointer to that window in the CompScreen
+structure, which will trigger a use-after-free later.
+
+Make sure to clear the CompScreen pointer to the COW when the latter gets
+destroyed explicitly by the client.
+
+This vulnerability was discovered by:
+Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
+
+Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+Reviewed-by: Adam Jackson <ajax@redhat.com>
+
+CVE: CVE-2023-1393
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+---
+ composite/compwindow.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/composite/compwindow.c b/composite/compwindow.c
+index 4e2494b86..b30da589e 100644
+--- a/composite/compwindow.c
++++ b/composite/compwindow.c
+@@ -620,6 +620,11 @@ compDestroyWindow(WindowPtr pWin)
+     ret = (*pScreen->DestroyWindow) (pWin);
+     cs->DestroyWindow = pScreen->DestroyWindow;
+     pScreen->DestroyWindow = compDestroyWindow;
++
++    /* Did we just destroy the overlay window? */
++    if (pWin == cs->pOverlayWin)
++        cs->pOverlayWin = NULL;
++
+ /*    compCheckTree (pWin->drawable.pScreen); can't check -- tree isn't good*/
+     return ret;
+ }
+-- 
+2.34.1
+
diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.7.bb b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.7.bb
index 212c7d3..f0771cc 100644
--- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.7.bb
+++ b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.7.bb
@@ -1,7 +1,8 @@
 require xserver-xorg.inc
 
 SRC_URI += "file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch \
-           file://0001-Avoid-duplicate-definitions-of-IOPortBase.patch \
+            file://0001-Avoid-duplicate-definitions-of-IOPortBase.patch \
+            file://0001-composite-Fix-use-after-free-of-the-COW.patch \
            "
 SRC_URI[sha256sum] = "d9c60b2dd0ec52326ca6ab20db0e490b1ff4f566f59ca742d6532e92795877bb"
 
diff --git a/poky/meta/recipes-kernel/linux/cve-exclusion_6.1.inc b/poky/meta/recipes-kernel/linux/cve-exclusion_6.1.inc
new file mode 100644
index 0000000..4cc1519
--- /dev/null
+++ b/poky/meta/recipes-kernel/linux/cve-exclusion_6.1.inc
@@ -0,0 +1,36 @@
+# https://nvd.nist.gov/vuln/detail/CVE-2022-3523
+# Introduced in version v2.6.12 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
+# Patched in kernel since v6.1 16ce101db85db694a91380aa4c89b25530871d33
+CVE_CHECK_IGNORE += "CVE-2022-3523"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2022-3566
+# Introduced in version v2.6.12 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
+# Patched in kernel since v6.1 f49cd2f4d6170d27a2c61f1fecb03d8a70c91f57
+CVE_CHECK_IGNORE += "CVE-2022-3566"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2022-3567
+# Introduced in version v2.6.12 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
+# Patched in kernel since v6.1 364f997b5cfe1db0d63a390fe7c801fa2b3115f6
+CVE_CHECK_IGNORE += "CVE-2022-3567"
+
+
+# 2023
+
+# https://nvd.nist.gov/vuln/detail/CVE-2022-38457
+# https://nvd.nist.gov/vuln/detail/CVE-2022-40133
+# Both CVE-2022-38457 & CVE-2022-40133 are fixed by the same commit:
+# Introduced in version v4.20 e14c02e6b6990e9f6ee18a214a22ac26bae1b25e
+# Patched in kernel since v6.2 a309c7194e8a2f8bd4539b9449917913f6c2cd50
+# Backported in version v6.1.7 7ac9578e45b20e3f3c0c8eb71f5417a499a7226a
+# See:
+#  * https://www.linuxkernelcves.com/cves/CVE-2022-38457
+#  * https://www.linuxkernelcves.com/cves/CVE-2022-40133
+#  * https://lore.kernel.org/all/CAODzB9q3OBD0k6W2bcWrSZo2jC3EvV0PrLyWmO07rxR4nQgkJA@mail.gmail.com/T/
+CVE_CHECK_IGNORE += "CVE-2022-38457 CVE-2022-40133"
+
+# https://nvd.nist.gov/vuln/detail/CVE-2023-1075
+# Introduced in v4.20 a42055e8d2c30d4decfc13ce943d09c7b9dad221
+# Patched in kernel v6.2 ffe2a22562444720b05bdfeb999c03e810d84cbb
+# Backported in version 6.1.11 37c0cdf7e4919e5f76381ac60817b67bcbdacb50
+# 5.15 still has issue, include/net/tls.h:is_tx_ready() would need patch
+CVE_CHECK_IGNORE += "CVE-2023-1075"
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb
index 38daab6..2937979 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb
@@ -11,13 +11,13 @@
         raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
 }
 
-SRCREV_machine ?= "e1ca9a177aff19013178aa30a8eccb4d7b2b67d7"
-SRCREV_meta ?= "441f5fe00073620cec471166cf6e94c4ef9c69b2"
+SRCREV_machine ?= "8e0611e36c848a07f9cdd778903c9e51bb90b319"
+SRCREV_meta ?= "e4b95ec17228274acb38bf10061448224df3a312"
 
 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.15;destsuffix=${KMETA}"
 
-LINUX_VERSION ?= "5.15.103"
+LINUX_VERSION ?= "5.15.108"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-rt_6.1.bb b/poky/meta/recipes-kernel/linux/linux-yocto-rt_6.1.bb
index 5f79bc6..4aaa371 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-rt_6.1.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-rt_6.1.bb
@@ -2,6 +2,9 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
+# CVE exclusions
+include recipes-kernel/linux/cve-exclusion_6.1.inc
+
 # Skip processing of this recipe if it is not explicitly specified as the
 # PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
 # to build multiple virtual/kernel providers, e.g. as dependency of
@@ -11,13 +14,13 @@
         raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
 }
 
-SRCREV_machine ?= "8d55a90b757757f76ec124508fd2bcace5d276b5"
-SRCREV_meta ?= "1a97a82e62ebf4ef3787768a1f5937e2d2f280ce"
+SRCREV_machine ?= "f974a72071f8b481fc4e38517219bc5c503e14f6"
+SRCREV_meta ?= "36901b5b298e601fe73dd79aaff8b615a7762013"
 
 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-6.1;destsuffix=${KMETA}"
 
-LINUX_VERSION ?= "6.1.20"
+LINUX_VERSION ?= "6.1.25"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb
index eb6af62..c19c289 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb
@@ -5,7 +5,7 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
-LINUX_VERSION ?= "5.15.103"
+LINUX_VERSION ?= "5.15.108"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -14,8 +14,8 @@
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-SRCREV_machine ?= "4ae6c9a73f4e6e356186a541e3fcbea4fa6a09f1"
-SRCREV_meta ?= "441f5fe00073620cec471166cf6e94c4ef9c69b2"
+SRCREV_machine ?= "3d762b85647844790979dd1e17a762003aaa7476"
+SRCREV_meta ?= "e4b95ec17228274acb38bf10061448224df3a312"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_6.1.bb b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_6.1.bb
index 58357d0..5046759 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_6.1.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_6.1.bb
@@ -5,7 +5,10 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
-LINUX_VERSION ?= "6.1.20"
+# CVE exclusions
+include recipes-kernel/linux/cve-exclusion_6.1.inc
+
+LINUX_VERSION ?= "6.1.25"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -14,8 +17,8 @@
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-SRCREV_machine ?= "423e1996694b61fbfc8ec3bf062fc6461d64fde1"
-SRCREV_meta ?= "1a97a82e62ebf4ef3787768a1f5937e2d2f280ce"
+SRCREV_machine ?= "581dc1aa2f340fff2cc010067257185fa2c993f9"
+SRCREV_meta ?= "36901b5b298e601fe73dd79aaff8b615a7762013"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto_5.15.bb b/poky/meta/recipes-kernel/linux/linux-yocto_5.15.bb
index 41f20c9..785944c 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto_5.15.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto_5.15.bb
@@ -13,24 +13,24 @@
 KBRANCH:qemux86-64 ?= "v5.15/standard/base"
 KBRANCH:qemumips64 ?= "v5.15/standard/mti-malta64"
 
-SRCREV_machine:qemuarm ?= "21687086c27bb112f19b0aac455d800961c0b830"
-SRCREV_machine:qemuarm64 ?= "7144f86a73fe2ffe4fe57c9e6cf28d8fc8db4b6a"
-SRCREV_machine:qemumips ?= "557c06060cb218ade536fccc66f8f3e755537f31"
-SRCREV_machine:qemuppc ?= "db19dbdcdf51b9d2a071dcf180ba9e20b8286e9b"
-SRCREV_machine:qemuriscv64 ?= "024d08fb706170a9723e9751e505681f9d4c7ab6"
-SRCREV_machine:qemuriscv32 ?= "024d08fb706170a9723e9751e505681f9d4c7ab6"
-SRCREV_machine:qemux86 ?= "024d08fb706170a9723e9751e505681f9d4c7ab6"
-SRCREV_machine:qemux86-64 ?= "024d08fb706170a9723e9751e505681f9d4c7ab6"
-SRCREV_machine:qemumips64 ?= "6f1dbe8c258d49f4dba59827124dfe9aa2c151db"
-SRCREV_machine ?= "024d08fb706170a9723e9751e505681f9d4c7ab6"
-SRCREV_meta ?= "441f5fe00073620cec471166cf6e94c4ef9c69b2"
+SRCREV_machine:qemuarm ?= "80421c525a12141d31bf1592b0d8c176defe3010"
+SRCREV_machine:qemuarm64 ?= "9d140dbc3171bf272f51b524edeeb2f22783aca5"
+SRCREV_machine:qemumips ?= "b29a8fa62d88db512f1fa5d60e430a851d7e3aaf"
+SRCREV_machine:qemuppc ?= "7ee6b7fc4b57933114376cf012218c2ae3d23558"
+SRCREV_machine:qemuriscv64 ?= "e8c818cce43dd720c366d831aeb102c20c237652"
+SRCREV_machine:qemuriscv32 ?= "e8c818cce43dd720c366d831aeb102c20c237652"
+SRCREV_machine:qemux86 ?= "e8c818cce43dd720c366d831aeb102c20c237652"
+SRCREV_machine:qemux86-64 ?= "e8c818cce43dd720c366d831aeb102c20c237652"
+SRCREV_machine:qemumips64 ?= "5c900befc90365f6daa80989e8de0ccc546ff0f5"
+SRCREV_machine ?= "e8c818cce43dd720c366d831aeb102c20c237652"
+SRCREV_meta ?= "e4b95ec17228274acb38bf10061448224df3a312"
 
 # set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll
 # get the <version>/base branch, which is pure upstream -stable, and the same
 # meta SRCREV as the linux-yocto-standard builds. Select your version using the
 # normal PREFERRED_VERSION settings.
 BBCLASSEXTEND = "devupstream:target"
-SRCREV_machine:class-devupstream ?= "8020ae3c051d1c9ec7b7a872e226f9720547649b"
+SRCREV_machine:class-devupstream ?= "3299fb36854fdc288bddc2c4d265f8a2e5105944"
 PN:class-devupstream = "linux-yocto-upstream"
 KBRANCH:class-devupstream = "v5.15/base"
 
@@ -38,7 +38,7 @@
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-LINUX_VERSION ?= "5.15.103"
+LINUX_VERSION ?= "5.15.108"
 
 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_6.1.bb b/poky/meta/recipes-kernel/linux/linux-yocto_6.1.bb
index 6f33032..c2b0e66 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto_6.1.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto_6.1.bb
@@ -2,6 +2,9 @@
 
 require recipes-kernel/linux/linux-yocto.inc
 
+# CVE exclusions
+include recipes-kernel/linux/cve-exclusion_6.1.inc
+
 # board specific branches
 KBRANCH:qemuarm  ?= "v6.1/standard/arm-versatile-926ejs"
 KBRANCH:qemuarm64 ?= "v6.1/standard/qemuarm64"
@@ -14,25 +17,25 @@
 KBRANCH:qemuloongarch64  ?= "v6.1/standard/base"
 KBRANCH:qemumips64 ?= "v6.1/standard/mti-malta64"
 
-SRCREV_machine:qemuarm ?= "fad8850ff15dfbf8fb2e7d71583fc54b809d10ef"
-SRCREV_machine:qemuarm64 ?= "423e1996694b61fbfc8ec3bf062fc6461d64fde1"
-SRCREV_machine:qemuloongarch64 ?= "423e1996694b61fbfc8ec3bf062fc6461d64fde1"
-SRCREV_machine:qemumips ?= "dd663b72efce61f63f0b38403254eb52e6ad9a59"
-SRCREV_machine:qemuppc ?= "423e1996694b61fbfc8ec3bf062fc6461d64fde1"
-SRCREV_machine:qemuriscv64 ?= "423e1996694b61fbfc8ec3bf062fc6461d64fde1"
-SRCREV_machine:qemuriscv32 ?= "423e1996694b61fbfc8ec3bf062fc6461d64fde1"
-SRCREV_machine:qemux86 ?= "423e1996694b61fbfc8ec3bf062fc6461d64fde1"
-SRCREV_machine:qemux86-64 ?= "423e1996694b61fbfc8ec3bf062fc6461d64fde1"
-SRCREV_machine:qemumips64 ?= "587a945baf13cdca2421e280b7b07dead6ad2a77"
-SRCREV_machine ?= "423e1996694b61fbfc8ec3bf062fc6461d64fde1"
-SRCREV_meta ?= "a8881762b53231bb914329cac3c2cf8db8b6779b"
+SRCREV_machine:qemuarm ?= "0b80e90b38ae1735c7dab701ca3d0b2447376ccc"
+SRCREV_machine:qemuarm64 ?= "581dc1aa2f340fff2cc010067257185fa2c993f9"
+SRCREV_machine:qemuloongarch64 ?= "581dc1aa2f340fff2cc010067257185fa2c993f9"
+SRCREV_machine:qemumips ?= "db61d7fe3540904fbe77b532ce3e37aeb737524a"
+SRCREV_machine:qemuppc ?= "581dc1aa2f340fff2cc010067257185fa2c993f9"
+SRCREV_machine:qemuriscv64 ?= "581dc1aa2f340fff2cc010067257185fa2c993f9"
+SRCREV_machine:qemuriscv32 ?= "581dc1aa2f340fff2cc010067257185fa2c993f9"
+SRCREV_machine:qemux86 ?= "581dc1aa2f340fff2cc010067257185fa2c993f9"
+SRCREV_machine:qemux86-64 ?= "581dc1aa2f340fff2cc010067257185fa2c993f9"
+SRCREV_machine:qemumips64 ?= "aacc52b6216955723cebb5bc493a4210357b23b2"
+SRCREV_machine ?= "581dc1aa2f340fff2cc010067257185fa2c993f9"
+SRCREV_meta ?= "36901b5b298e601fe73dd79aaff8b615a7762013"
 
 # set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll
 # get the <version>/base branch, which is pure upstream -stable, and the same
 # meta SRCREV as the linux-yocto-standard builds. Select your version using the
 # normal PREFERRED_VERSION settings.
 BBCLASSEXTEND = "devupstream:target"
-SRCREV_machine:class-devupstream ?= "7eaef76fbc4621ced374c85dbc000dd80dc681d7"
+SRCREV_machine:class-devupstream ?= "f17b0ab65d17988d5e6d6fe22f708ef3721080bf"
 PN:class-devupstream = "linux-yocto-upstream"
 KBRANCH:class-devupstream = "v6.1/base"
 
@@ -40,7 +43,7 @@
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.1;destsuffix=${KMETA}"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-LINUX_VERSION ?= "6.1.20"
+LINUX_VERSION ?= "6.1.25"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
 DEPENDS += "openssl-native util-linux-native"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.22.0.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.22.0.bb
index 6df84a6..c447f2c 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.22.0.bb
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.22.0.bb
@@ -24,3 +24,5 @@
 "
 
 inherit meson pkgconfig setuptools3-base upstream-version-is-even
+
+FILES:${PN} += "${libdir}/gstreamer-1.0"
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk_2.38.5.bb b/poky/meta/recipes-sato/webkit/webkitgtk_2.38.5.bb
index e529208..36c6233 100644
--- a/poky/meta/recipes-sato/webkit/webkitgtk_2.38.5.bb
+++ b/poky/meta/recipes-sato/webkit/webkitgtk_2.38.5.bb
@@ -38,6 +38,8 @@
           libnotify \
           gstreamer1.0 \
           gstreamer1.0-plugins-base \
+          glib-2.0-native \
+          gettext-native \
           "
 
 PACKAGECONFIG_SOUP ?= "soup3"
@@ -70,20 +72,11 @@
 PACKAGECONFIG[soup3] = ",,libsoup,,,soup2"
 PACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,systemd"
 
-# 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('GIDOCGEN_ENABLED', 'True', '-DENABLE_DOCUMENTATION=ON', '-DENABLE_DOCUMENTATION=OFF', d)} \
 		-DENABLE_MINIBROWSER=ON \
-                -DPYTHON_EXECUTABLE=`which python3` \
                 -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
                 -DENABLE_GAMEPAD=OFF \
 		"
diff --git a/poky/meta/recipes-support/atk/at-spi2-core_2.46.0.bb b/poky/meta/recipes-support/atk/at-spi2-core_2.46.0.bb
index d9161e1..9031346 100644
--- a/poky/meta/recipes-support/atk/at-spi2-core_2.46.0.bb
+++ b/poky/meta/recipes-support/atk/at-spi2-core_2.46.0.bb
@@ -13,7 +13,7 @@
 
 SRC_URI[sha256sum] = "aa0c86c79f7a8d67bae49a5b7a5ab08430c608cffe6e33bf47a72f41ab03c3d0"
 
-DEPENDS = "dbus glib-2.0 libxml2"
+DEPENDS = "dbus glib-2.0 glib-2.0-native libxml2"
 
 # For backwards compatibility
 PROVIDES += "atk at-spi2-atk"
diff --git a/poky/meta/recipes-support/libgit2/libgit2_1.6.3.bb b/poky/meta/recipes-support/libgit2/libgit2_1.6.3.bb
index 554e18e..cab7d7a 100644
--- a/poky/meta/recipes-support/libgit2/libgit2_1.6.3.bb
+++ b/poky/meta/recipes-support/libgit2/libgit2_1.6.3.bb
@@ -13,9 +13,8 @@
 inherit cmake
 
 EXTRA_OECMAKE = "\
-    -DBUILD_CLAR=OFF \
+    -DBUILD_TESTS=OFF \
     -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-    -DLIB_INSTALL_DIR=${libdir} \
     -DREGEX_BACKEND='pcre2' \
 "
 
diff --git a/poky/meta/recipes-support/vte/vte_0.72.0.bb b/poky/meta/recipes-support/vte/vte_0.72.0.bb
index c08ac87..5eaff99 100644
--- a/poky/meta/recipes-support/vte/vte_0.72.0.bb
+++ b/poky/meta/recipes-support/vte/vte_0.72.0.bb
@@ -11,7 +11,7 @@
     file://COPYING.XTERM;md5=d7fc3a23c16c039afafe2e042030f057 \
 "
 
-DEPENDS = "glib-2.0 gtk+3 libpcre2 libxml2-native gperf-native icu"
+DEPENDS = "glib-2.0 glib-2.0-native gtk+3 libpcre2 libxml2-native gperf-native icu"
 
 GNOMEBASEBUILDCLASS = "meson"
 GIR_MESON_OPTION = 'gir'
diff --git a/poky/scripts/runqemu b/poky/scripts/runqemu
index 09b0ad5..4c06cef 100755
--- a/poky/scripts/runqemu
+++ b/poky/scripts/runqemu
@@ -384,13 +384,19 @@
                     fst =  m.group(1)
             if fst:
                 self.check_arg_fstype(fst)
-                qb = re.sub('\.' + fst + "$", '', self.rootfs)
-                qb = '%s%s' % (re.sub('\.rootfs$', '', qb), '.qemuboot.conf')
+                qb = re.sub('\.' + fst + "$", '.qemuboot.conf', self.rootfs)
                 if os.path.exists(qb):
                     self.qemuboot = qb
                     self.qbconfload = True
                 else:
-                    logger.warning("%s doesn't exist" % qb)
+                    logger.warning("%s doesn't exist, will try to remove '.rootfs' from filename" % qb)
+                    # They to remove .rootfs (IMAGE_NAME_SUFFIX) as well
+                    qb = re.sub('\.rootfs.qemuboot.conf$', '.qemuboot.conf', qb)
+                    if os.path.exists(qb):
+                        self.qemuboot = qb
+                        self.qbconfload = True
+                    else:
+                        logger.warning("%s doesn't exist" % qb)
             else:
                 raise RunQemuError("Can't find FSTYPE from: %s" % p)
 
@@ -424,6 +430,7 @@
         # are there other scenarios in which we need to support being
         # invoked by bitbake?
         deploy = self.get('DEPLOY_DIR_IMAGE')
+        image_link_name = self.get('IMAGE_LINK_NAME')
         bbchild = deploy and self.get('OE_TMPDIR')
         if bbchild:
             self.set_machine_deploy_dir(arg, deploy)
@@ -448,6 +455,12 @@
         else:
             logger.error("%s not a directory valid DEPLOY_DIR_IMAGE" % deploy_dir_image)
             self.set("MACHINE", arg)
+        if not image_link_name:
+            s = re.search('^IMAGE_LINK_NAME="(.*)"', self.bitbake_e, re.M)
+            if s:
+                image_link_name = s.group(1)
+                self.set("IMAGE_LINK_NAME", image_link_name)
+                logger.debug('Using IMAGE_LINK_NAME = "%s"' % image_link_name)
 
     def set_dri_path(self):
         drivers_path = os.path.join(self.bindir_native, '../lib/dri')
@@ -550,11 +563,18 @@
             self.check_arg_machine(unknown_arg)
 
         if not (self.get('DEPLOY_DIR_IMAGE') or self.qbconfload):
-            self.load_bitbake_env()
+            self.load_bitbake_env(target=self.rootfs)
             s = re.search('^DEPLOY_DIR_IMAGE="(.*)"', self.bitbake_e, re.M)
             if s:
                 self.set("DEPLOY_DIR_IMAGE", s.group(1))
 
+        if not self.get('IMAGE_LINK_NAME') and self.rootfs:
+            s = re.search('^IMAGE_LINK_NAME="(.*)"', self.bitbake_e, re.M)
+            if s:
+                image_link_name = s.group(1)
+                self.set("IMAGE_LINK_NAME", image_link_name)
+                logger.debug('Using IMAGE_LINK_NAME = "%s"' % image_link_name)
+
     def check_kvm(self):
         """Check kvm and kvm-host"""
         if not (self.kvm_enabled or self.vhost_enabled):
@@ -660,8 +680,8 @@
 
         if self.rootfs and not os.path.exists(self.rootfs):
             # Lazy rootfs
-            self.rootfs = "%s/%s-%s.%s" % (self.get('DEPLOY_DIR_IMAGE'),
-                    self.rootfs, self.get('MACHINE'),
+            self.rootfs = "%s/%s.%s" % (self.get('DEPLOY_DIR_IMAGE'),
+                    self.get('IMAGE_LINK_NAME'),
                     self.fstype)
         elif not self.rootfs:
             glob_name = '%s/%s*.%s' % (self.get('DEPLOY_DIR_IMAGE'), self.get('IMAGE_NAME'), self.fstype)
@@ -865,8 +885,10 @@
                 machine = self.get('MACHINE')
                 if not machine:
                     machine = os.path.basename(deploy_dir_image)
-                self.qemuboot = "%s/%s-%s.qemuboot.conf" % (deploy_dir_image,
-                        self.rootfs, machine)
+                if not self.get('IMAGE_LINK_NAME'):
+                    raise RunQemuError("IMAGE_LINK_NAME wasn't set to find corresponding .qemuboot.conf file")
+                self.qemuboot = "%s/%s.qemuboot.conf" % (deploy_dir_image,
+                        self.get('IMAGE_LINK_NAME'))
             else:
                 cmd = 'ls -t %s/*.qemuboot.conf' %  deploy_dir_image
                 logger.debug('Running %s...' % cmd)
@@ -1600,7 +1622,7 @@
 
         self.cleaned = True
 
-    def run_bitbake_env(self, mach=None):
+    def run_bitbake_env(self, mach=None, target=''):
         bitbake = shutil.which('bitbake')
         if not bitbake:
             return
@@ -1613,22 +1635,33 @@
             multiconfig = "mc:%s" % multiconfig
 
         if mach:
-            cmd = 'MACHINE=%s bitbake -e %s' % (mach, multiconfig)
+            cmd = 'MACHINE=%s bitbake -e %s %s' % (mach, multiconfig, target)
         else:
-            cmd = 'bitbake -e %s' % multiconfig
+            cmd = 'bitbake -e %s %s' % (multiconfig, target)
 
         logger.info('Running %s...' % cmd)
-        return subprocess.check_output(cmd, shell=True).decode('utf-8')
+        try:
+            return subprocess.check_output(cmd, shell=True).decode('utf-8')
+        except subprocess.CalledProcessError as err:
+            logger.warning("Couldn't run '%s' to gather environment information, maybe the target wasn't an image name, will retry with virtual/kernel as a target:\n%s" % (cmd, err.output.decode('utf-8')))
+            # need something with IMAGE_NAME_SUFFIX/IMAGE_LINK_NAME defined (kernel also inherits image-artifact-names.bbclass)
+            target = 'virtual/kernel'
+            if mach:
+                cmd = 'MACHINE=%s bitbake -e %s %s' % (mach, multiconfig, target)
+            else:
+                cmd = 'bitbake -e %s %s' % (multiconfig, target)
+            try:
+                return subprocess.check_output(cmd, shell=True).decode('utf-8')
+            except subprocess.CalledProcessError as err:
+                logger.warning("Couldn't run '%s' to gather environment information, giving up with 'bitbake -e':\n%s" % (cmd, err.output.decode('utf-8')))
+                return ''
 
-    def load_bitbake_env(self, mach=None):
+
+    def load_bitbake_env(self, mach=None, target=None):
         if self.bitbake_e:
             return
 
-        try:
-            self.bitbake_e = self.run_bitbake_env(mach=mach)
-        except subprocess.CalledProcessError as err:
-            self.bitbake_e = ''
-            logger.warning("Couldn't run 'bitbake -e' to gather environment information:\n%s" % err.output.decode('utf-8'))
+        self.bitbake_e = self.run_bitbake_env(mach=mach, target=target)
 
     def validate_combos(self):
         if (self.fstype in self.vmtypes) and self.kernel: