diff --git a/meta-openembedded/meta-oe/recipes-support/c-periphery/c-periphery_2.3.1.bb b/meta-openembedded/meta-oe/recipes-support/c-periphery/c-periphery_2.4.1.bb
similarity index 78%
rename from meta-openembedded/meta-oe/recipes-support/c-periphery/c-periphery_2.3.1.bb
rename to meta-openembedded/meta-oe/recipes-support/c-periphery/c-periphery_2.4.1.bb
index b5bdcd5..3379ba1 100644
--- a/meta-openembedded/meta-oe/recipes-support/c-periphery/c-periphery_2.3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/c-periphery/c-periphery_2.4.1.bb
@@ -6,10 +6,10 @@
 SECTION = "libs"
 
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=4097ec544cf01e9c7cfc4bdf8e4ed887"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=be30d45bdc453f70a494c149c2168289"
 
 SRC_URI = "git://github.com/vsergeev/c-periphery;protocol=https;branch=master"
-SRCREV = "23bfa4ab481edbad82a69ee385fc58ce03b63084"
+SRCREV = "6c5302cf8255c9bb75e535c566a8f1d94cfded5d"
 
 S = "${WORKDIR}/git"
 
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/hdf5/hdf5_1.14.0.bb b/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.14.0.bb
index 4feec61..d0ff2ef 100644
--- a/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.14.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.14.0.bb
@@ -7,7 +7,7 @@
 LICENSE = "HDF5"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ac1039f6bf7c9ab2b3693836f46d0735"
 
-inherit cmake siteinfo qemu
+inherit cmake siteinfo qemu multilib_header
 
 DEPENDS += "qemu-native"
 
@@ -44,6 +44,7 @@
     # Used for generating config files on target
     install -m 755 ${B}/bin/H5detect ${D}${bindir}
     install -m 755 ${B}/bin/H5make_libsettings ${D}${bindir}
+    oe_multilib_header H5pubconf.h
 }
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.368.bb b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.369.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.368.bb
rename to meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.369.bb
index 786cc00..c20e243 100644
--- a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.368.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.369.bb
@@ -5,7 +5,7 @@
 LICENSE = "GPL-2.0-or-later | XFree86-1.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57"
 
-SRCREV = "0e25d93ac6433791edbb9d28b3f8eae0cf5e46ff"
+SRCREV = "ced93f9d1c15e45e35378e82b8da96027e58174a"
 SRC_URI = "git://github.com/vcrhonek/${BPN}.git;branch=master;protocol=https"
 
 S = "${WORKDIR}/git"
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/lcov/files/0001-geninfo-Add-intermediate-text-format-support.patch b/meta-openembedded/meta-oe/recipes-support/lcov/files/0001-geninfo-Add-intermediate-text-format-support.patch
deleted file mode 100644
index 9ac0770..0000000
--- a/meta-openembedded/meta-oe/recipes-support/lcov/files/0001-geninfo-Add-intermediate-text-format-support.patch
+++ /dev/null
@@ -1,898 +0,0 @@
-From ec3e1f411c332cbc2f2bc7ab7e2175ebf918b37a Mon Sep 17 00:00:00 2001
-From: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date: Fri, 24 May 2019 16:56:52 +0200
-Subject: [PATCH 1/2] geninfo: Add intermediate text format support
-
-This change adds support for parsing the output of gcov's intermediate
-text file format as implemented by GCC versions 5 to 8.  The use of the
-gcov intermediate format should increase processing speed. It also
-provides branch coverage data when using the --initial command line
-option.
-
-Users can control whether geninfo uses the intermediate format via the
-geninfo_intermediate configuration file option. Valid values are:
-
-     0: Use normal text format
-     1: Use intermediate format
-  auto: Use intermediate format if available. This is the default.
-
-Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
----
- bin/geninfo  | 567 ++++++++++++++++++++++++++++++++++++++++++++-------
- lcovrc       |   3 +
- man/lcovrc.5 |  24 +++
- 3 files changed, 521 insertions(+), 73 deletions(-)
-
-Upstream-Status: Backport
-Download URL: https://github.com/linux-test-project/lcov/commit/ebfeb3e179e450c69c3532f98cd5ea1fbf6ccba7
-
-diff --git a/bin/geninfo b/bin/geninfo
-index f41eaec..0276666 100755
---- a/bin/geninfo
-+++ b/bin/geninfo
-@@ -54,6 +54,8 @@ use warnings;
- use File::Basename; 
- use File::Spec::Functions qw /abs2rel catdir file_name_is_absolute splitdir
- 			      splitpath catpath/;
-+use File::Temp qw(tempfile tempdir);
-+use File::Copy qw(copy);
- use Getopt::Long;
- use Digest::MD5 qw(md5_base64);
- use Cwd qw/abs_path/;
-@@ -163,13 +165,13 @@ sub solve_relative_path($$);
- sub read_gcov_header($);
- sub read_gcov_file($);
- sub info(@);
-+sub process_intermediate($$$);
- sub map_llvm_version($);
- sub version_to_str($);
- sub get_gcov_version();
- sub system_no_output($@);
- sub read_config($);
- sub apply_config($);
--sub get_exclusion_data($);
- sub apply_exclusion_data($$);
- sub process_graphfile($$);
- sub filter_fn_name($);
-@@ -264,6 +266,8 @@ our $gcno_split_crc;
- our $func_coverage = 1;
- our $br_coverage = 0;
- our $rc_auto_base = 1;
-+our $rc_intermediate = "auto";
-+our $intermediate;
- our $excl_line = "LCOV_EXCL_LINE";
- our $excl_br_line = "LCOV_EXCL_BR_LINE";
- 
-@@ -331,6 +335,7 @@ if ($config || %opt_rc)
- 		"geninfo_compat"		=> \$opt_compat,
- 		"geninfo_adjust_src_path"	=> \$rc_adjust_src_path,
- 		"geninfo_auto_base"		=> \$rc_auto_base,
-+		"geninfo_intermediate"		=> \$rc_intermediate,
- 		"lcov_function_coverage"	=> \$func_coverage,
- 		"lcov_branch_coverage"		=> \$br_coverage,
- 		"lcov_excl_line"		=> \$excl_line,
-@@ -460,15 +465,38 @@ if (system_no_output(3, $gcov_tool, "--help") == -1)
- }
- 
- ($gcov_version, $gcov_version_string) = get_gcov_version();
-+$gcov_caps = get_gcov_capabilities();
-+
-+# Determine intermediate mode
-+if ($rc_intermediate eq "0") {
-+	$intermediate = 0;
-+} elsif ($rc_intermediate eq "1") {
-+	$intermediate = 1;
-+} elsif (lc($rc_intermediate) eq "auto") {
-+	# Use intermediate format if supported by gcov
-+	$intermediate = $gcov_caps->{'intermediate-format'} ? 1 : 0;
-+} else {
-+	die("ERROR: invalid value for geninfo_intermediate: ".
-+	    "'$rc_intermediate'\n");
-+}
-+
-+if ($intermediate) {
-+	info("Using intermediate gcov format\n");
-+	if ($opt_derive_func_data) {
-+		warn("WARNING: --derive-func-data is not compatible with ".
-+		     "intermediate format - ignoring\n");
-+		$opt_derive_func_data = 0;
-+	}
-+}
- 
- # Determine gcov options
--$gcov_caps = get_gcov_capabilities();
- push(@gcov_options, "-b") if ($gcov_caps->{'branch-probabilities'} &&
- 			      ($br_coverage || $func_coverage));
- push(@gcov_options, "-c") if ($gcov_caps->{'branch-counts'} &&
- 			      $br_coverage);
- push(@gcov_options, "-a") if ($gcov_caps->{'all-blocks'} &&
--			      $opt_gcov_all_blocks && $br_coverage);
-+			      $opt_gcov_all_blocks && $br_coverage &&
-+			      !$intermediate);
- if ($gcov_caps->{'hash-filenames'})
- {
- 	push(@gcov_options, "-x");
-@@ -599,7 +627,7 @@ foreach my $entry (@data_directory) {
- 	gen_info($entry);
- }
- 
--if ($initial && $br_coverage) {
-+if ($initial && $br_coverage && !$intermediate) {
- 	warn("Note: --initial does not generate branch coverage ".
- 	     "data\n");
- }
-@@ -768,6 +796,7 @@ sub gen_info($)
- 	my $prefix;
- 	my $type;
- 	my $ext;
-+	my $tempdir;
- 
- 	if ($initial) {
- 		$type = "graph";
-@@ -798,16 +827,22 @@ sub gen_info($)
- 		$prefix = "";
- 	}
- 
-+	$tempdir = tempdir(CLEANUP => 1);
-+
- 	# Process all files in list
- 	foreach $file (@file_list) {
- 		# Process file
--		if ($initial) {
-+		if ($intermediate) {
-+			process_intermediate($file, $prefix, $tempdir);
-+		} elsif ($initial) {
- 			process_graphfile($file, $prefix);
- 		} else {
- 			process_dafile($file, $prefix);
- 		}
- 	}
- 
-+	unlink($tempdir);
-+
- 	# Report whether files were excluded.
- 	if (%excluded_files) {
- 		info("Excluded data for %d files due to include/exclude options\n",
-@@ -1058,10 +1093,12 @@ sub process_dafile($$)
- 
- 	# Try to find base directory automatically if requested by user
- 	if ($rc_auto_base) {
--		$base_dir = find_base_from_graph($base_dir, $instr, $graph);
-+		$base_dir = find_base_from_source($base_dir,
-+			[ keys(%{$instr}), keys(%{$graph}) ]);
- 	}
- 
--	($instr, $graph) = adjust_graph_filenames($base_dir, $instr, $graph);
-+	adjust_source_filenames($instr, $base_dir);
-+	adjust_source_filenames($graph, $base_dir);
- 
- 	# Set $object_dir to real location of object files. This may differ
- 	# from $da_dir if the graph file is just a link to the "real" object
-@@ -2017,6 +2054,299 @@ sub read_gcov_file($)
- }
- 
- 
-+#
-+# read_intermediate_text(gcov_filename, data)
-+#
-+# Read gcov intermediate text format in GCOV_FILENAME and add the resulting
-+# data to DATA in the following format:
-+#
-+# data:      source_filename -> file_data
-+# file_data: concatenated lines of intermediate text data
-+#
-+
-+sub read_intermediate_text($$)
-+{
-+	my ($gcov_filename, $data) = @_;
-+	my $fd;
-+	my $filename;
-+
-+	open($fd, "<", $gcov_filename) or
-+		die("ERROR: Could not read $gcov_filename: $!\n");
-+	while (my $line = <$fd>) {
-+		if ($line =~ /^file:(.*)$/) {
-+			$filename = $1;
-+			chomp($filename);
-+		} elsif (defined($filename)) {
-+			$data->{$filename} .= $line;
-+		}
-+	}
-+	close($fd);
-+}
-+
-+
-+#
-+# intermediate_text_to_info(fd, data, srcdata)
-+#
-+# Write DATA in info format to file descriptor FD.
-+#
-+# data:      filename -> file_data:
-+# file_data: concatenated lines of intermediate text data
-+#
-+# srcdata:   filename -> [ excl, brexcl, checksums ]
-+# excl:      lineno -> 1 for all lines for which to exclude all data
-+# brexcl:    lineno -> 1 for all lines for which to exclude branch data
-+# checksums: lineno -> source code checksum
-+#
-+# Note: To simplify processing, gcov data is not combined here, that is counts
-+#       that appear multiple times for the same lines/branches are not added.
-+#       This is done by lcov/genhtml when reading the data files.
-+#
-+
-+sub intermediate_text_to_info($$$)
-+{
-+	my ($fd, $data, $srcdata) = @_;
-+	my $branch_num = 0;
-+	my $c;
-+
-+	return if (!%{$data});
-+
-+	print($fd "TN:$test_name\n");
-+	for my $filename (keys(%{$data})) {
-+		my ($excl, $brexcl, $checksums);
-+
-+		if (defined($srcdata->{$filename})) {
-+			($excl, $brexcl, $checksums) = @{$srcdata->{$filename}};
-+		}
-+
-+		print($fd "SF:$filename\n");
-+		for my $line (split(/\n/, $data->{$filename})) {
-+			if ($line =~ /^lcount:(\d+),(\d+),?/) {
-+				# lcount:<line>,<count>
-+				# lcount:<line>,<count>,<has_unexecuted_blocks>
-+				if ($checksum && exists($checksums->{$1})) {
-+					$c = ",".$checksums->{$1};
-+				} else {
-+					$c = "";
-+				}
-+				print($fd "DA:$1,$2$c\n") if (!$excl->{$1});
-+
-+				# Intermediate text format does not provide
-+				# branch numbers, and the same branch may appear
-+				# multiple times on the same line (e.g. in
-+				# template instances). Synthesize a branch
-+				# number based on the assumptions:
-+				# a) the order of branches is fixed across
-+				#    instances
-+				# b) an instance starts with an lcount line
-+				$branch_num = 0;
-+			} elsif ($line =~ /^function:(\d+),(\d+),([^,]+)$/) {
-+				next if (!$func_coverage || $excl->{$1});
-+
-+				# function:<line>,<count>,<name>
-+				print($fd "FN:$1,$3\n");
-+				print($fd "FNDA:$2,$3\n");
-+			} elsif ($line =~ /^function:(\d+),\d+,(\d+),([^,]+)$/) {
-+				next if (!$func_coverage || $excl->{$1});
-+
-+				# function:<start_line>,<end_line>,<count>,
-+				#          <name>
-+				print($fd "FN:$1,$3\n");
-+				print($fd "FNDA:$2,$3\n");
-+			} elsif ($line =~ /^branch:(\d+),(taken|nottaken|notexec)/) {
-+				next if (!$br_coverage || $excl->{$1} ||
-+					 $brexcl->{$1});
-+
-+				# branch:<line>,taken|nottaken|notexec
-+				if ($2 eq "taken") {
-+					$c = 1;
-+				} elsif ($2 eq "nottaken") {
-+					$c = 0;
-+				} else {
-+					$c = "-";
-+				}
-+				print($fd "BRDA:$1,0,$branch_num,$c\n");
-+				$branch_num++;
-+			}
-+		}
-+		print($fd "end_of_record\n");
-+	}
-+}
-+
-+
-+sub get_output_fd($$)
-+{
-+	my ($outfile, $file) = @_;
-+	my $fd;
-+
-+	if (!defined($outfile)) {
-+		open($fd, ">", "$file.info") or
-+			die("ERROR: Cannot create file $file.info: $!\n");
-+	} elsif ($outfile eq "-") {
-+		open($fd, ">&STDOUT") or
-+			die("ERROR: Cannot duplicate stdout: $!\n");
-+	} else {
-+		open($fd, ">>", $outfile) or
-+			die("ERROR: Cannot write to file $outfile: $!\n");
-+	}
-+
-+	return $fd;
-+}
-+
-+
-+#
-+# print_gcov_warnings(stderr_file, is_graph, map)
-+#
-+# Print GCOV warnings in file STDERR_FILE to STDERR. If IS_GRAPH is non-zero,
-+# suppress warnings about missing as these are expected. Replace keys found
-+# in MAP with their values.
-+#
-+
-+sub print_gcov_warnings($$$)
-+{
-+	my ($stderr_file, $is_graph, $map) = @_;
-+	my $fd;
-+
-+	if (!open($fd, "<", $stderr_file)) {
-+		warn("WARNING: Could not open GCOV stderr file ".
-+		     "$stderr_file: $!\n");
-+		return;
-+	}
-+	while (my $line = <$fd>) {
-+		next if ($is_graph && $line =~ /cannot open data file/);
-+
-+		for my $key (keys(%{$map})) {
-+			$line =~ s/\Q$key\E/$map->{$key}/g;
-+		}
-+
-+		print(STDERR $line);
-+	}
-+	close($fd);
-+}
-+
-+
-+#
-+# process_intermediate(file, dir, tempdir)
-+#
-+# Create output for a single file (either a data file or a graph file) using
-+# gcov's intermediate option.
-+#
-+
-+sub process_intermediate($$$)
-+{
-+	my ($file, $dir, $tempdir) = @_;
-+	my ($fdir, $fbase, $fext);
-+	my $data_file;
-+	my $errmsg;
-+	my %data;
-+	my $fd;
-+	my $base;
-+	my $srcdata;
-+	my $is_graph = 0;
-+	my ($out, $err, $rc);
-+
-+	info("Processing %s\n", abs2rel($file, $dir));
-+
-+	$file = solve_relative_path($cwd, $file);
-+	($fdir, $fbase, $fext) = split_filename($file);
-+
-+	$is_graph = 1 if (".$fext" eq $graph_file_extension);
-+
-+	if ($is_graph) {
-+		# Process graph file - copy to temp directory to prevent
-+		# accidental processing of associated data file
-+		$data_file = "$tempdir/$fbase$graph_file_extension";
-+		if (!copy($file, $data_file)) {
-+			$errmsg = "ERROR: Could not copy file $file";
-+			goto err;
-+		}
-+	} else {
-+		# Process data file in place
-+		$data_file = $file;
-+	}
-+
-+	# Change directory
-+	if (!chdir($tempdir)) {
-+		$errmsg = "Could not change to directory $tempdir: $!";
-+		goto err;
-+	}
-+
-+	# Run gcov on data file
-+	($out, $err, $rc) = system_no_output(1 + 2 + 4, $gcov_tool,
-+					     $data_file, @gcov_options, "-i");
-+	defined($out) && unlink($out);
-+	if (defined($err)) {
-+		print_gcov_warnings($err, $is_graph, {
-+			$data_file => $file,
-+		});
-+		unlink($err);
-+	}
-+	if ($rc) {
-+		$errmsg = "GCOV failed for $file";
-+		goto err;
-+	}
-+
-+	if ($is_graph) {
-+		# Remove graph file copy
-+		unlink($data_file);
-+	}
-+
-+	# Parse resulting file(s)
-+	for my $gcov_filename (glob("*.gcov")) {
-+		read_intermediate_text($gcov_filename, \%data);
-+		unlink($gcov_filename);
-+	}
-+
-+	if (!%data) {
-+		warn("WARNING: GCOV did not produce any data for $file\n");
-+		return;
-+	}
-+
-+	# Determine base directory
-+	if (defined($base_directory)) {
-+		$base = $base_directory;
-+	} else {
-+		$base = $fdir;
-+
-+		if (is_compat($COMPAT_MODE_LIBTOOL)) {
-+			# Avoid files from .libs dirs
-+			$base =~ s/\.libs$//;
-+		}
-+
-+		# Try to find base directory automatically if requested by user
-+		if ($rc_auto_base) {
-+			$base = find_base_from_source($base, [ keys(%data) ]);
-+		}
-+	}
-+
-+	# Apply base file name to relative source files
-+	adjust_source_filenames(\%data, $base);
-+
-+	# Remove excluded source files
-+	filter_source_files(\%data);
-+
-+	# Get data on exclusion markers and checksums if requested
-+	if (!$no_markers || $checksum) {
-+		$srcdata = get_all_source_data(keys(%data));
-+	}
-+
-+	# Generate output
-+	$fd = get_output_fd($output_filename, $file);
-+	intermediate_text_to_info($fd, \%data, $srcdata);
-+	close($fd);
-+
-+	chdir($cwd);
-+
-+	return;
-+
-+err:
-+	if ($ignore[$ERROR_GCOV]) {
-+		warn("WARNING: $errmsg!\n");
-+	} else {
-+		die("ERROR: $errmsg!\n")
-+	}
-+}
-+
-+
- # Map LLVM versions to the version of GCC gcov which they emulate.
- 
- sub map_llvm_version($)
-@@ -2151,8 +2481,12 @@ sub int_handler()
- #
- #   MODE & 1: suppress STDOUT
- #   MODE & 2: suppress STDERR
-+#   MODE & 4: redirect to temporary files instead of suppressing
- #
--# Return 0 on success, non-zero otherwise.
-+# Return (stdout, stderr, rc):
-+#    stdout: path to tempfile containing stdout or undef
-+#    stderr: path to tempfile containing stderr or undef
-+#    0 on success, non-zero otherwise
- #
- 
- sub system_no_output($@)
-@@ -2161,14 +2495,31 @@ sub system_no_output($@)
- 	my $result;
- 	local *OLD_STDERR;
- 	local *OLD_STDOUT;
-+	my $stdout_file;
-+	my $stderr_file;
-+	my $fd;
- 
- 	# Save old stdout and stderr handles
- 	($mode & 1) && open(OLD_STDOUT, ">>&", "STDOUT");
- 	($mode & 2) && open(OLD_STDERR, ">>&", "STDERR");
- 
--	# Redirect to /dev/null
--	($mode & 1) && open(STDOUT, ">", "/dev/null");
--	($mode & 2) && open(STDERR, ">", "/dev/null");
-+	if ($mode & 4) {
-+		# Redirect to temporary files
-+		if ($mode & 1) {
-+			($fd, $stdout_file) = tempfile(UNLINK => 1);
-+			open(STDOUT, ">", $stdout_file) || warn("$!\n");
-+			close($fd);
-+		}
-+		if ($mode & 2) {
-+			($fd, $stderr_file) = tempfile(UNLINK => 1);
-+			open(STDERR, ">", $stderr_file) || warn("$!\n");
-+			close($fd);
-+		}
-+	} else {
-+		# Redirect to /dev/null
-+		($mode & 1) && open(STDOUT, ">", "/dev/null");
-+		($mode & 2) && open(STDERR, ">", "/dev/null");
-+	}
-  
- 	debug("system(".join(' ', @_).")\n");
- 	system(@_);
-@@ -2181,8 +2532,18 @@ sub system_no_output($@)
- 	# Restore old handles
- 	($mode & 1) && open(STDOUT, ">>&", "OLD_STDOUT");
- 	($mode & 2) && open(STDERR, ">>&", "OLD_STDERR");
-+
-+	# Remove empty output files
-+	if (defined($stdout_file) && -z $stdout_file) {
-+		unlink($stdout_file);
-+		$stdout_file = undef;
-+	}
-+	if (defined($stderr_file) && -z $stderr_file) {
-+		unlink($stderr_file);
-+		$stderr_file = undef;
-+	}
-  
--	return $result;
-+	return ($stdout_file, $stderr_file, $result);
- }
- 
- 
-@@ -2260,23 +2621,28 @@ sub apply_config($)
- 
- 
- #
--# get_exclusion_data(filename)
-+# get_source_data(filename)
- #
--# Scan specified source code file for exclusion markers and return
--#   linenumber -> 1
--# for all lines which should be excluded.
-+# Scan specified source code file for exclusion markers and checksums. Return
-+#   ( excl, brexcl, checksums ) where
-+#   excl:      lineno -> 1 for all lines for which to exclude all data
-+#   brexcl:    lineno -> 1 for all lines for which to exclude branch data
-+#   checksums: lineno -> source code checksum
- #
- 
--sub get_exclusion_data($)
-+sub get_source_data($)
- {
- 	my ($filename) = @_;
- 	my %list;
- 	my $flag = 0;
-+	my %brdata;
-+	my $brflag = 0;
-+	my %checksums;
- 	local *HANDLE;
- 
- 	if (!open(HANDLE, "<", $filename)) {
- 		warn("WARNING: could not open $filename\n");
--		return undef;
-+		return;
- 	}
- 	while (<HANDLE>) {
- 		if (/$EXCL_STOP/) {
-@@ -2287,14 +2653,62 @@ sub get_exclusion_data($)
- 		if (/$excl_line/ || $flag) {
- 			$list{$.} = 1;
- 		}
-+		if (/$EXCL_BR_STOP/) {
-+			$brflag = 0;
-+		} elsif (/$EXCL_BR_START/) {
-+			$brflag = 1;
-+		}
-+		if (/$excl_br_line/ || $brflag) {
-+			$brdata{$.} = 1;
-+		}
-+		if ($checksum) {
-+			chomp();
-+			$checksums{$.} = md5_base64($_);
-+		}
- 	}
- 	close(HANDLE);
- 
--	if ($flag) {
-+	if ($flag || $brflag) {
- 		warn("WARNING: unterminated exclusion section in $filename\n");
- 	}
- 
--	return \%list;
-+	return (\%list, \%brdata, \%checksums);
-+}
-+
-+
-+#
-+# get_all_source_data(filenames)
-+#
-+# Scan specified source code files for exclusion markers and return
-+#   filename -> [ excl, brexcl, checksums ]
-+#   excl:      lineno -> 1 for all lines for which to exclude all data
-+#   brexcl:    lineno -> 1 for all lines for which to exclude branch data
-+#   checksums: lineno -> source code checksum
-+#
-+
-+sub get_all_source_data(@)
-+{
-+	my @filenames = @_;
-+	my %data;
-+	my $failed = 0;
-+
-+	for my $filename (@filenames) {
-+		my @d;
-+		next if (exists($data{$filename}));
-+
-+		@d = get_source_data($filename);
-+		if (@d) {
-+			$data{$filename} = [ @d ];
-+		} else {
-+			$failed = 1;
-+		}
-+	}
-+
-+	if ($failed) {
-+		warn("WARNING: some exclusion markers may be ignored\n");
-+	}
-+
-+	return \%data;
- }
- 
- 
-@@ -2318,35 +2732,17 @@ sub apply_exclusion_data($$)
- {
- 	my ($instr, $graph) = @_;
- 	my $filename;
--	my %excl_data;
--	my $excl_read_failed = 0;
-+	my $excl_data;
- 
--	# Collect exclusion marker data
--	foreach $filename (sort_uniq_lex(keys(%{$graph}), keys(%{$instr}))) {
--		my $excl = get_exclusion_data($filename);
--
--		# Skip and note if file could not be read
--		if (!defined($excl)) {
--			$excl_read_failed = 1;
--			next;
--		}
--
--		# Add to collection if there are markers
--		$excl_data{$filename} = $excl if (keys(%{$excl}) > 0);
--	}
--
--	# Warn if not all source files could be read
--	if ($excl_read_failed) {
--		warn("WARNING: some exclusion markers may be ignored\n");
--	}
-+	($excl_data) = get_all_source_data(keys(%{$graph}), keys(%{$instr}));
- 
- 	# Skip if no markers were found
--	return ($instr, $graph) if (keys(%excl_data) == 0);
-+	return ($instr, $graph) if (!%$excl_data);
- 
- 	# Apply exclusion marker data to graph
--	foreach $filename (keys(%excl_data)) {
-+	foreach $filename (keys(%$excl_data)) {
- 		my $function_data = $graph->{$filename};
--		my $excl = $excl_data{$filename};
-+		my $excl = $excl_data->{$filename}->[0];
- 		my $function;
- 
- 		next if (!defined($function_data));
-@@ -2384,9 +2780,9 @@ sub apply_exclusion_data($$)
- 	}
- 
- 	# Apply exclusion marker data to instr
--	foreach $filename (keys(%excl_data)) {
-+	foreach $filename (keys(%$excl_data)) {
- 		my $line_data = $instr->{$filename};
--		my $excl = $excl_data{$filename};
-+		my $excl = $excl_data->{$filename}->[0];
- 		my $line;
- 		my @new_data;
- 
-@@ -2468,10 +2864,12 @@ sub process_graphfile($$)
- 
- 	# Try to find base directory automatically if requested by user
- 	if ($rc_auto_base) {
--		$base_dir = find_base_from_graph($base_dir, $instr, $graph);
-+		$base_dir = find_base_from_source($base_dir,
-+			[ keys(%{$instr}), keys(%{$graph}) ]);
- 	}
- 
--	($instr, $graph) = adjust_graph_filenames($base_dir, $instr, $graph);
-+	adjust_source_filenames($instr, $base_dir);
-+	adjust_source_filenames($graph, $base_dir);
- 
- 	if (!$no_markers) {
- 		# Apply exclusion marker data to graph file data
-@@ -2767,11 +3165,11 @@ sub parent_dir($)
- }
- 
- #
--# find_base_from_graph(base_dir, instr, graph)
-+# find_base_from_source(base_dir, source_files)
- #
--# Try to determine the base directory of the graph file specified by INSTR
--# and GRAPH. The base directory is the base for all relative filenames in
--# the graph file. It is defined by the current working directory at time
-+# Try to determine the base directory of the object file built from
-+# SOURCE_FILES. The base directory is the base for all relative filenames in
-+# the gcov data. It is defined by the current working directory at time
- # of compiling the source file.
- #
- # This function implements a heuristic which relies on the following
-@@ -2781,16 +3179,16 @@ sub parent_dir($)
- # - files by the same name are not present in multiple parent directories
- #
- 
--sub find_base_from_graph($$$)
-+sub find_base_from_source($$)
- {
--	my ($base_dir, $instr, $graph) = @_;
-+	my ($base_dir, $source_files) = @_;
- 	my $old_base;
- 	my $best_miss;
- 	my $best_base;
- 	my %rel_files;
- 
- 	# Determine list of relative paths
--	foreach my $filename (keys(%{$instr}), keys(%{$graph})) {
-+	foreach my $filename (@$source_files) {
- 		next if (file_name_is_absolute($filename));
- 
- 		$rel_files{$filename} = 1;
-@@ -2829,17 +3227,17 @@ sub find_base_from_graph($$$)
- }
- 
- #
--# adjust_graph_filenames(base_dir, instr, graph)
-+# adjust_source_filenames(hash, base_dir)
- #
--# Make relative paths in INSTR and GRAPH absolute and apply
--# geninfo_adjust_src_path setting to graph file data.
-+# Transform all keys of HASH to absolute form and apply requested
-+# transformations.
- #
- 
--sub adjust_graph_filenames($$$)
-+sub adjust_source_filenames($$$)
- {
--	my ($base_dir, $instr, $graph) = @_;
-+	my ($hash, $base_dir) = @_;
- 
--	foreach my $filename (keys(%{$instr})) {
-+	foreach my $filename (keys(%{$hash})) {
- 		my $old_filename = $filename;
- 
- 		# Convert to absolute canonical form
-@@ -2851,28 +3249,50 @@ sub adjust_graph_filenames($$$)
- 		}
- 
- 		if ($filename ne $old_filename) {
--			$instr->{$filename} = delete($instr->{$old_filename});
-+			$hash->{$filename} = delete($hash->{$old_filename});
- 		}
- 	}
-+}
- 
--	foreach my $filename (keys(%{$graph})) {
--		my $old_filename = $filename;
- 
--		# Make absolute
--		# Convert to absolute canonical form
--		$filename = solve_relative_path($base_dir, $filename);
-+#
-+# filter_source_files(hash)
-+#
-+# Remove unwanted source file data from HASH.
-+#
- 
--		# Apply adjustment
--		if (defined($adjust_src_pattern)) {
--			$filename =~ s/$adjust_src_pattern/$adjust_src_replace/g;
-+sub filter_source_files($)
-+{
-+	my ($hash) = @_;
-+
-+	foreach my $filename (keys(%{$hash})) {
-+		# Skip external files if requested
-+		goto del if (!$opt_external && is_external($filename));
-+
-+		# Apply include patterns
-+		if (@include_patterns) {
-+			my $keep;
-+
-+			foreach my $pattern (@include_patterns) {
-+				if ($filename =~ (/^$pattern$/)) {
-+					$keep = 1;
-+					last;
-+				}
-+			}
-+			goto del if (!$keep);
- 		}
- 
--		if ($filename ne $old_filename) {
--			$graph->{$filename} = delete($graph->{$old_filename});
-+		# Apply exclude patterns
-+		foreach my $pattern (@exclude_patterns) {
-+			goto del if ($filename =~ (/^$pattern$/));
- 		}
--	}
-+		next;
- 
--	return ($instr, $graph);
-+del:
-+		# Remove file data
-+		delete($hash->{$filename});
-+		$excluded_files{$filename} = 1;
-+	}
- }
- 
- #
-@@ -3784,6 +4204,7 @@ sub get_gcov_capabilities()
- 		'c' => 'branch-counts',
- 		'f' => 'function-summaries',
- 		'h' => 'help',
-+		'i' => 'intermediate-format',
- 		'l' => 'long-file-names',
- 		'n' => 'no-output',
- 		'o' => 'object-directory',
-diff --git a/lcovrc b/lcovrc
-index 40f364f..bd4bc3b 100644
---- a/lcovrc
-+++ b/lcovrc
-@@ -134,6 +134,9 @@ genhtml_desc_html=0
- # when collecting coverage data.
- geninfo_auto_base = 1
- 
-+# Use gcov intermediate format? Valid values are 0, 1, auto
-+geninfo_intermediate = auto
-+
- # Directory containing gcov kernel files
- # lcov_gcov_dir = /proc/gcov
- 
-diff --git a/man/lcovrc.5 b/man/lcovrc.5
-index f20d273..bf0ce7a 100644
---- a/man/lcovrc.5
-+++ b/man/lcovrc.5
-@@ -223,6 +223,11 @@ geninfo_compat_libtool = 0
- geninfo_auto_base = 1
- .br
- 
-+# Use gcov intermediate format? Valid values are 0, 1, auto
-+.br
-+geninfo_intermediate = auto
-+.br
-+
- # Directory containing gcov kernel files
- .br
- lcov_gcov_dir = /proc/gcov
-@@ -789,6 +794,25 @@ located, and in addition, is different between files of the same project.
- Default is 1.
- .PP
- 
-+.BR geninfo_intermediate " ="
-+.IR 0 | 1 | auto
-+.IP
-+Specify whether to use gcov intermediate format
-+.br
-+
-+Use this option to control whether geninfo should use the gcov intermediate
-+format while collecting coverage data. The use of the gcov intermediate format
-+should increase processing speed. It also provides branch coverage data when
-+using the \-\-initial command line option.
-+.br
-+
-+Valid values are 0 for off, 1 for on, and "auto" to let geninfo automatically
-+use immediate format when supported by gcov.
-+.br
-+
-+Default is "auto".
-+.PP
-+
- .BR lcov_gcov_dir " ="
- .I path_to_kernel_coverage_data
- .IP
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/lcov/files/0002-geninfo-Add-intermediate-JSON-format-support.patch b/meta-openembedded/meta-oe/recipes-support/lcov/files/0002-geninfo-Add-intermediate-JSON-format-support.patch
deleted file mode 100644
index 7b18063..0000000
--- a/meta-openembedded/meta-oe/recipes-support/lcov/files/0002-geninfo-Add-intermediate-JSON-format-support.patch
+++ /dev/null
@@ -1,247 +0,0 @@
-From e13b2b6f8443da660cafa0679c3b16240843ce9f Mon Sep 17 00:00:00 2001
-From: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date: Fri, 24 May 2019 17:16:56 +0200
-Subject: [PATCH 2/2] geninfo: Add intermediate JSON format support
-
-This change adds support for parsing the output of gcov's intermediate
-JSON file format as implemented by GCC version 9.
-
-Note: The way that the intermediate file format support is implemented
-in geninfo removes the need to parse .gcno files directly. Since geninfo
-does not include support for parsing GCC 9 .gcno files, using the
-intermediate format is the only option for geninfo to collect coverage
-data generated by GCC version 9.
-
-Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
----
- bin/geninfo | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 160 insertions(+), 2 deletions(-)
-
-Upstream-Status: Backport
-Download URL: https://github.com/linux-test-project/lcov/commit/75fbae1cfc5027f818a0bb865bf6f96fab3202da
-
-diff --git a/bin/geninfo b/bin/geninfo
-index 0276666..cceb782 100755
---- a/bin/geninfo
-+++ b/bin/geninfo
-@@ -59,6 +59,9 @@ use File::Copy qw(copy);
- use Getopt::Long;
- use Digest::MD5 qw(md5_base64);
- use Cwd qw/abs_path/;
-+use PerlIO::gzip;
-+use JSON qw(decode_json);
-+
- if( $^O eq "msys" )
- {
- 	require File::Spec::Win32;
-@@ -474,7 +477,8 @@ if ($rc_intermediate eq "0") {
- 	$intermediate = 1;
- } elsif (lc($rc_intermediate) eq "auto") {
- 	# Use intermediate format if supported by gcov
--	$intermediate = $gcov_caps->{'intermediate-format'} ? 1 : 0;
-+	$intermediate = ($gcov_caps->{'intermediate-format'} ||
-+			 $gcov_caps->{'json-format'}) ? 1 : 0;
- } else {
- 	die("ERROR: invalid value for geninfo_intermediate: ".
- 	    "'$rc_intermediate'\n");
-@@ -2084,6 +2088,48 @@ sub read_intermediate_text($$)
- }
- 
- 
-+#
-+# read_intermediate_json(gcov_filename, data, basedir_ref)
-+#
-+# Read gcov intermediate JSON format in GCOV_FILENAME and add the resulting
-+# data to DATA in the following format:
-+#
-+# data:      source_filename -> file_data
-+# file_data: GCOV JSON data for file
-+#
-+# Also store the value for current_working_directory to BASEDIR_REF.
-+#
-+
-+sub read_intermediate_json($$$)
-+{
-+	my ($gcov_filename, $data, $basedir_ref) = @_;
-+	my $fd;
-+	my $text;
-+	my $json;
-+
-+	open($fd, "<:gzip", $gcov_filename) or
-+		die("ERROR: Could not read $gcov_filename: $!\n");
-+	local $/;
-+	$text = <$fd>;
-+	close($fd);
-+
-+	$json = decode_json($text);
-+	if (!defined($json) || !exists($json->{"files"}) ||
-+	    ref($json->{"files"} ne "ARRAY")) {
-+		die("ERROR: Unrecognized JSON output format in ".
-+		    "$gcov_filename\n");
-+	}
-+
-+	$$basedir_ref = $json->{"current_working_directory"};
-+
-+	for my $file (@{$json->{"files"}}) {
-+		my $filename = $file->{"file"};
-+
-+		$data->{$filename} = $file;
-+	}
-+}
-+
-+
- #
- # intermediate_text_to_info(fd, data, srcdata)
- #
-@@ -2173,6 +2219,104 @@ sub intermediate_text_to_info($$$)
- }
- 
- 
-+#
-+# intermediate_json_to_info(fd, data, srcdata)
-+#
-+# Write DATA in info format to file descriptor FD.
-+#
-+# data:      filename -> file_data:
-+# file_data: GCOV JSON data for file
-+#
-+# srcdata:   filename -> [ excl, brexcl, checksums ]
-+# excl:      lineno -> 1 for all lines for which to exclude all data
-+# brexcl:    lineno -> 1 for all lines for which to exclude branch data
-+# checksums: lineno -> source code checksum
-+#
-+# Note: To simplify processing, gcov data is not combined here, that is counts
-+#       that appear multiple times for the same lines/branches are not added.
-+#       This is done by lcov/genhtml when reading the data files.
-+#
-+
-+sub intermediate_json_to_info($$$)
-+{
-+	my ($fd, $data, $srcdata) = @_;
-+	my $branch_num = 0;
-+
-+	return if (!%{$data});
-+
-+	print($fd "TN:$test_name\n");
-+	for my $filename (keys(%{$data})) {
-+		my ($excl, $brexcl, $checksums);
-+		my $file_data = $data->{$filename};
-+
-+		if (defined($srcdata->{$filename})) {
-+			($excl, $brexcl, $checksums) = @{$srcdata->{$filename}};
-+		}
-+
-+		print($fd "SF:$filename\n");
-+
-+		# Function data
-+		if ($func_coverage) {
-+			for my $d (@{$file_data->{"functions"}}) {
-+				my $line = $d->{"start_line"};
-+				my $count = $d->{"execution_count"};
-+				my $name = $d->{"name"};
-+
-+				next if (!defined($line) || !defined($count) ||
-+					 !defined($name) || $excl->{$line});
-+
-+				print($fd "FN:$line,$name\n");
-+				print($fd "FNDA:$count,$name\n");
-+			}
-+		}
-+
-+		# Line data
-+		for my $d (@{$file_data->{"lines"}}) {
-+			my $line = $d->{"line_number"};
-+			my $count = $d->{"count"};
-+			my $c;
-+			my $branches = $d->{"branches"};
-+			my $unexec = $d->{"unexecuted_block"};
-+
-+			next if (!defined($line) || !defined($count) ||
-+				 $excl->{$line});
-+
-+			if (defined($unexec) && $unexec && $count == 0) {
-+				$unexec = 1;
-+			} else {
-+				$unexec = 0;
-+			}
-+
-+			if ($checksum && exists($checksums->{$line})) {
-+				$c = ",".$checksums->{$line};
-+			} else {
-+				$c = "";
-+			}
-+			print($fd "DA:$line,$count$c\n");
-+
-+			$branch_num = 0;
-+			# Branch data
-+			if ($br_coverage && !$brexcl->{$line}) {
-+				for my $b (@$branches) {
-+					my $brcount = $b->{"count"};
-+
-+					if (!defined($brcount) || $unexec) {
-+						$brcount = "-";
-+					}
-+					print($fd "BRDA:$line,0,$branch_num,".
-+					      "$brcount\n");
-+
-+					$branch_num++;
-+				}
-+			}
-+
-+		}
-+
-+		print($fd "end_of_record\n");
-+	}
-+}
-+
-+
- sub get_output_fd($$)
- {
- 	my ($outfile, $file) = @_;
-@@ -2243,6 +2387,8 @@ sub process_intermediate($$$)
- 	my $srcdata;
- 	my $is_graph = 0;
- 	my ($out, $err, $rc);
-+	my $json_basedir;
-+	my $json_format;
- 
- 	info("Processing %s\n", abs2rel($file, $dir));
- 
-@@ -2296,6 +2442,12 @@ sub process_intermediate($$$)
- 		unlink($gcov_filename);
- 	}
- 
-+	for my $gcov_filename (glob("*.gcov.json.gz")) {
-+		read_intermediate_json($gcov_filename, \%data, \$json_basedir);
-+		unlink($gcov_filename);
-+		$json_format = 1;
-+	}
-+
- 	if (!%data) {
- 		warn("WARNING: GCOV did not produce any data for $file\n");
- 		return;
-@@ -2304,6 +2456,8 @@ sub process_intermediate($$$)
- 	# Determine base directory
- 	if (defined($base_directory)) {
- 		$base = $base_directory;
-+	} elsif (defined($json_basedir)) {
-+		$base = $json_basedir;
- 	} else {
- 		$base = $fdir;
- 
-@@ -2331,7 +2485,11 @@ sub process_intermediate($$$)
- 
- 	# Generate output
- 	$fd = get_output_fd($output_filename, $file);
--	intermediate_text_to_info($fd, \%data, $srcdata);
-+	if ($json_format) {
-+		intermediate_json_to_info($fd, \%data, $srcdata);
-+	} else {
-+		intermediate_text_to_info($fd, \%data, $srcdata);
-+	}
- 	close($fd);
- 
- 	chdir($cwd);
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.14.bb b/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.16.bb
similarity index 76%
rename from meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.14.bb
rename to meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.16.bb
index 47062cc..22d6881 100755
--- a/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.14.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.16.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A graphical front-end for gcov"
-HOMEPAGE = "http://ltp.sourceforge.net/coverage/lcov.php"
+HOMEPAGE = "https://github.com/linux-test-project/lcov"
 DESCRIPTION = "LCOV is a graphical front-end for GCC's coverage testing \
 tool gcov. It collects gcov data for multiple source files and creates \
 HTML pages containing the source code annotated with coverage information. \
@@ -9,8 +9,6 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 RDEPENDS:${PN} += " \
-    libjson-perl \
-    libperlio-gzip-perl \
     perl \
     perl-module-filehandle \
     perl-module-getopt-std \
@@ -48,18 +46,12 @@
     gcov \
     gcov-symlinks \
 "
-
-SRC_URI = " \
-           http://downloads.sourceforge.net/ltp/${BP}.tar.gz \
-           file://0001-geninfo-Add-intermediate-text-format-support.patch \
-           file://0002-geninfo-Add-intermediate-JSON-format-support.patch \
-	   "
-
-SRC_URI[md5sum] = "0220d01753469f83921f8f41ae5054c1"
-SRC_URI[sha256sum] = "14995699187440e0ae4da57fe3a64adc0a3c5cf14feab971f8db38fb7d8f071a"
+SRC_URI = "https://github.com/linux-test-project/lcov/releases/download/v${PV}/lcov-${PV}.tar.gz"
+SRC_URI[md5sum] = "bfee0cef50d7b7bd1df03bfadf68dcef"
+SRC_URI[sha256sum] = "987031ad5528c8a746d4b52b380bc1bffe412de1f2b9c2ba5224995668e3240b"
 
 do_install() {
-    oe_runmake install PREFIX=${D}${prefix} CFG_DIR=${D}${sysconfdir}
+    oe_runmake install PREFIX=${D}${prefix} CFG_DIR=${D}${sysconfdir} LCOV_PERL_PATH="/usr/bin/env perl"
 }
 
 BBCLASSEXTEND = "native nativesdk"
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/libcereal/files/0001-doctest-Do-not-use-unnamed-class.patch b/meta-openembedded/meta-oe/recipes-support/libcereal/files/0001-doctest-Do-not-use-unnamed-class.patch
new file mode 100644
index 0000000..9396cc5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libcereal/files/0001-doctest-Do-not-use-unnamed-class.patch
@@ -0,0 +1,38 @@
+From 03bbb1b055c41ec652470f775b55a7cf80d664ef Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 17 Apr 2023 16:46:12 -0700
+Subject: [PATCH] doctest: Do not use unnamed class
+
+When compiling with clang this results in emitting absolute path into
+debug info, especially .debug_str section has
+
+~(unnamed class at /mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/libcereal/1.3.2+gitAUTOINC+ebef1e9298-r0/git/unittests/doctest.h:6428:5)
+(unnamed class at /mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/libcereal/1.3.2+gitAUTOINC+ebef1e9298-r0/git/unittests/doctest.h:6428:5)
+
+Therefore use a name for the class instead and help get rid of this
+absolute path in debug info. This fixes
+
+File /usr/lib/libcereal/ptest/tests/.debug/test_unordered_map in package libcereal-dbg contains reference to TMPDIR
+
+Upstream-Status: Submitted [https://github.com/USCiLab/cereal/pull/788]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ unittests/doctest.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/unittests/doctest.h b/unittests/doctest.h
+index cd5b44d6..e6d8f7f9 100644
+--- a/unittests/doctest.h
++++ b/unittests/doctest.h
+@@ -6424,7 +6424,7 @@ void Context::setCout(std::ostream* out) { p->cout = out; }
+ static class DiscardOStream : public std::ostream
+ {
+ private:
+-    class : public std::streambuf
++    class discardBufStream: public std::streambuf
+     {
+     private:
+         // allowing some buffering decreases the amount of calls to overflow
+-- 
+2.40.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.2.bb b/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.2.bb
index f159275..c5f26ec 100644
--- a/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.2.bb
@@ -21,6 +21,7 @@
 SRC_URI = "git://github.com/USCiLab/cereal.git;branch=master;protocol=https \
            file://0001-sandbox-Do-not-use-int8_t-in-std-uniform_int_distrib.patch \
            file://0001-cmake-Use-idirafter-instead-of-isystem.patch \
+           file://0001-doctest-Do-not-use-unnamed-class.patch \
            file://run-ptest \
 "
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-1.6.4/run-ptest b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-1.x/run-ptest
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-1.6.4/run-ptest
rename to meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-1.x/run-ptest
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-2.0/run-ptest b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-2.x/run-ptest
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-2.0/run-ptest
rename to meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-2.x/run-ptest
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-src.inc b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-src.inc
deleted file mode 100644
index 6bab4c1..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod-src.inc
+++ /dev/null
@@ -1 +0,0 @@
-SRC_URI += "https://www.kernel.org/pub/software/libs/libgpiod/libgpiod-${PV}.tar.xz"
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod.inc b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod.inc
index abb6544..0329caa 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod.inc
+++ b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod.inc
@@ -1,11 +1,12 @@
 SUMMARY = "C library and tools for interacting with the linux GPIO character device"
 AUTHOR = "Bartosz Golaszewski <brgl@bgdev.pl>"
 
-require libgpiod-src.inc
-
 inherit autotools pkgconfig ptest
 
-SRC_URI += "file://run-ptest"
+SRC_URI += " \
+    https://www.kernel.org/pub/software/libs/libgpiod/libgpiod-${PV}.tar.xz \
+    file://run-ptest \
+"
 
 PACKAGECONFIG[cxx] = "--enable-bindings-cxx,--disable-bindings-cxx"
 
@@ -29,17 +30,18 @@
     ${bindir}/gpioset \
     ${bindir}/gpiomon \
 "
-FILES:${PN}-ptest += " \
-    ${bindir}/gpiod-test \
-    ${bindir}/gpio-tools-test \
-    ${bindir}/gpio-tools-test.bats \
-    ${bindir}/gpiod-cxx-test \
-"
 FILES:libgpiodcxx = "${libdir}/libgpiodcxx.so.*"
 
 RRECOMMENDS:${PN}-ptest += "coreutils"
 RDEPENDS:${PN}-ptest += "bats"
 
+do_install:append() {
+    rm -f ${D}${bindir}/gpiod-test
+    rm -f ${D}${bindir}/gpio-tools-test
+    rm -f ${D}${bindir}/gpio-tools-test.bats
+    rm -f ${D}${bindir}/gpiod-cxx-test
+}
+
 do_install_ptest() {
     install -d ${D}${PTEST_PATH}/tests/
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.6.4.bb b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.6.4.bb
index df0e3f1..b28aa8e 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.6.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.6.4.bb
@@ -5,6 +5,8 @@
 
 SRC_URI[sha256sum] = "7b146e12f28fbca3df7557f176eb778c5ccf952ca464698dba8a61b2e1e3f9b5"
 
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}-1.x:"
+
 inherit python3native
 
 PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,kmod udev glib-2.0 catch2"
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.0.1.bb b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.0.1.bb
new file mode 100644
index 0000000..337554c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.0.1.bb
@@ -0,0 +1,27 @@
+require libgpiod.inc
+
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & CC-BY-SA-4.0"
+LIC_FILES_CHKSUM = " \
+    file://LICENSES/GPL-2.0-or-later.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://LICENSES/LGPL-2.1-or-later.txt;md5=4b54a1fd55a448865a0b32d41598759d \
+    file://LICENSES/CC-BY-SA-4.0.txt;md5=fba3b94d88bfb9b81369b869a1e9a20f \
+"
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}-2.x:"
+
+SRC_URI[sha256sum] = "b5367d28d045b36007a4ffd42cceda4c358737ef4f2ce22b0c1d05ec57a38392"
+
+# Enable all project features for ptest
+PACKAGECONFIG[tests] = "--enable-tests --enable-tools --enable-bindings-cxx --enable-gpioset-interactive,--disable-tests,kmod util-linux glib-2.0 catch2 libedit"
+PACKAGECONFIG[gpioset-interactive] = "--enable-gpioset-interactive,--disable-gpioset-interactive,libedit"
+
+PACKAGES =+ "${PN}-ptest-dev"
+FILES:${PN}-tools += "${bindir}/gpionotify"
+FILES:${PN}-ptest += "${libdir}/libgpiosim.so.*"
+FILES:${PN}-ptest-dev += "${includedir}/gpiosim.h"
+
+RRECOMMENDS:${PN}-ptest += "kernel-module-gpio-sim"
+
+do_install_ptest:append() {
+    install -m 0644 ${S}/tests/gpiosim/gpiosim.h ${D}${includedir}/gpiosim.h
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.0.bb b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.0.bb
deleted file mode 100644
index becc9ad..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require libgpiod.inc
-
-LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & CC-BY-SA-4.0"
-LIC_FILES_CHKSUM = " \
-    file://LICENSES/GPL-2.0-or-later.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-    file://LICENSES/LGPL-2.1-or-later.txt;md5=4b54a1fd55a448865a0b32d41598759d \
-    file://LICENSES/CC-BY-SA-4.0.txt;md5=fba3b94d88bfb9b81369b869a1e9a20f \
-"
-
-SRC_URI[sha256sum] = "f74cbf82038b3cb98ebeb25bce55ee2553be28194002d2a9889b9268cce2dd07"
-
-S = "${WORKDIR}/libgpiod-2.0"
-
-# We must enable gpioset-interactive for all gpio-tools tests to pass
-PACKAGECONFIG[tests] = "--enable-tests --enable-gpioset-interactive,--disable-tests,kmod util-linux glib-2.0 catch2 libedit"
-PACKAGECONFIG[gpioset-interactive] = "--enable-gpioset-interactive,--disable-gpioset-interactive,libedit"
-
-FILES:${PN}-tools += "${bindir}/gpionotify"
-FILES:${PN}-ptest += "${libdir}/libgpiosim.so.*"
-
-RRECOMMENDS:${PN}-ptest += "kernel-module-gpio-sim"
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/mg/mg_20221112.bb b/meta-openembedded/meta-oe/recipes-support/mg/mg_20230406.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-support/mg/mg_20221112.bb
rename to meta-openembedded/meta-oe/recipes-support/mg/mg_20230406.bb
index 2d0afe8..8d61b7f 100644
--- a/meta-openembedded/meta-oe/recipes-support/mg/mg_20221112.bb
+++ b/meta-openembedded/meta-oe/recipes-support/mg/mg_20230406.bb
@@ -1,11 +1,11 @@
 SUMMARY = "A portable version of the mg maintained by the OpenBSD team"
 HOMEPAGE = "http://homepage.boetes.org/software/mg/"
 LICENSE = "PD"
-LIC_FILES_CHKSUM = "file://version.c;md5=43616508f42ab3fdb082c5f932bd2eb4"
+LIC_FILES_CHKSUM = "file://version.c;md5=36d8ace99e6cd003132975a9266d3f77"
 DEPENDS = "ncurses libbsd"
 SECTION = "console/editors"
 
-SRCREV = "5dbacce10b4cc5fe0785840c09398fc5b19fb96a"
+SRCREV = "4e6d2de9582cfe7f0977be4ce9532e3d33c5be15"
 SRC_URI = "git://github.com/hboetes/mg;branch=master;protocol=https \
            file://0001-fileio-Include-sys-param.h-for-MAXNAMLEN.patch \
            file://0002-fileio-Define-DEFFILEMODE-if-platform-is-missing.patch \
diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-Bug-1750624-Pin-validation-date-for-PayPalEE-test-ce.patch b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-Bug-1750624-Pin-validation-date-for-PayPalEE-test-ce.patch
new file mode 100644
index 0000000..d905bf1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-Bug-1750624-Pin-validation-date-for-PayPalEE-test-ce.patch
@@ -0,0 +1,64 @@
+From 1109c1b8259ad840ac1688d533f76ca268c67b6b Mon Sep 17 00:00:00 2001
+From: "John M. Schanck" <jschanck@mozilla.com>
+Date: Sat, 5 Feb 2022 11:12:43 +0000
+Subject: [PATCH] Bug 1750624 - Pin validation date for PayPalEE test cert.
+ r=nss-reviewers,bbeurdouche,rrelyea
+
+Differential Revision: https://phabricator.services.mozilla.com/D136289
+
+--HG--
+extra : moz-landing-system : lando
+
+Upstream-Status: Backport
+
+---
+ tests/chains/chains.sh               | 6 +++++-
+ tests/chains/scenarios/realcerts.cfg | 1 +
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/tests/chains/chains.sh b/tests/chains/chains.sh
+index 32c7ef54c..e13ae52f9 100755
+--- a/nss/tests/chains/chains.sh
++++ b/nss/tests/chains/chains.sh
+@@ -917,7 +917,7 @@ verify_cert()
+     done
+ 
+     VFY_OPTS_TNAME="${DB_OPT} ${ENGINE} ${TRUST_AND_DB_OPT} ${REV_OPTS} ${FETCH_OPT} ${USAGE_OPT} ${POLICY_OPT} ${TRUST_OPT}"
+-    VFY_OPTS_ALL="${DB_OPT} ${ENGINE} -vv ${TRUST_AND_DB_OPT} ${REV_OPTS} ${FETCH_OPT} ${USAGE_OPT} ${POLICY_OPT} ${VFY_CERTS} ${TRUST_OPT}"
++    VFY_OPTS_ALL="${DB_OPT} ${ENGINE} -vv ${VFY_TIME_OPT} ${TRUST_AND_DB_OPT} ${REV_OPTS} ${FETCH_OPT} ${USAGE_OPT} ${POLICY_OPT} ${VFY_CERTS} ${TRUST_OPT}"
+ 
+     TESTNAME="Verifying certificate(s) ${VFY_LIST} with flags ${VFY_OPTS_TNAME}"
+     echo "${SCRIPTNAME}: ${TESTNAME}"
+@@ -1118,6 +1118,7 @@ parse_config()
+             ;;
+         "verify")
+             VERIFY="${VALUE}"
++            VFY_TIME_OPT=
+             TRUST=
+             TRUST_AND_DB=
+             POLICY=
+@@ -1126,6 +1127,9 @@ parse_config()
+             REV_OPTS=
+             USAGE_OPT=
+             ;;
++        "at_time")
++            VFY_TIME_OPT="-b ${VALUE}"
++            ;;
+         "cert")
+             VERIFY="${VERIFY} ${VALUE}"
+             ;;
+diff --git a/tests/chains/scenarios/realcerts.cfg b/tests/chains/scenarios/realcerts.cfg
+index 305443fc3..f8b0fc452 100644
+--- a/nss/tests/chains/scenarios/realcerts.cfg
++++ b/nss/tests/chains/scenarios/realcerts.cfg
+@@ -22,6 +22,7 @@ verify TestUser51:x
+ 
+ verify PayPalEE:x
+   policy OID.2.16.840.1.114412.2.1 
++  at_time 2201010000Z
+   result pass
+ 
+ verify BrAirWaysBadSig:x
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb
index 4a9482f..a7048f0 100644
--- a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb
+++ b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb
@@ -32,6 +32,7 @@
            file://system-pkcs11.txt \
            file://nss-fix-nsinstall-build.patch \
            file://0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch \
+           file://0001-Bug-1750624-Pin-validation-date-for-PayPalEE-test-ce.patch \
            "
 SRC_URI[sha256sum] = "88928811f9f40f87d42e2eaccdf6e454562e51486067f2ddbe90aa47ea6cd056"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest b/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest
index 2574d7e..fbce336 100755
--- a/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest
+++ b/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest
@@ -17,7 +17,7 @@
 status="${workdir}/failed"
 touch "${status}"
 
-find tests/ -perm -111 -type f -exec sh -c '
+find tests/ -perm -111 -type f ! -path "tests/.debug/*" -exec sh -c '
     workdir="${1}"
     status="${2}"
     t="${3}"
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/poppler/poppler/0001-cmake-Do-not-use-isystem.patch b/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-cmake-Do-not-use-isystem.patch
index 44a2296..b4e3fb0 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-cmake-Do-not-use-isystem.patch
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-cmake-Do-not-use-isystem.patch
@@ -1,4 +1,4 @@
-From 51a2a1e4d8ca4040a6a7eac398cb704da35f39e5 Mon Sep 17 00:00:00 2001
+From 04686340c4cd375a17d60d31bf6943367cc33214 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 21 Jan 2023 03:09:08 -0800
 Subject: [PATCH] cmake: Do not use -isystem
@@ -28,6 +28,7 @@
 issue is addressed
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  CMakeLists.txt         |  4 ++--
  glib/CMakeLists.txt    |  4 ++--
@@ -38,7 +39,7 @@
  6 files changed, 16 insertions(+), 16 deletions(-)
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 4768ac8..cdc014d 100644
+index c6c757c..5f1c540 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
 @@ -603,10 +603,10 @@ add_library(poppler ${poppler_SRCS})
@@ -53,7 +54,7 @@
 +  target_include_directories(poppler  PRIVATE ${LCMS2_INCLUDE_DIR})
  endif()
  generate_export_header(poppler BASE_NAME poppler-private EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/poppler_private_export.h")
- set_target_properties(poppler PROPERTIES VERSION 126.0.0 SOVERSION 126)
+ set_target_properties(poppler PROPERTIES VERSION 127.0.0 SOVERSION 127)
 diff --git a/glib/CMakeLists.txt b/glib/CMakeLists.txt
 index 52e8687..08ab39a 100644
 --- a/glib/CMakeLists.txt
@@ -187,6 +188,3 @@
  endif()
  install(TARGETS pdftops DESTINATION bin)
  install(FILES pdftops.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
--- 
-2.39.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_23.03.0.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_23.04.0.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-support/poppler/poppler_23.03.0.bb
rename to meta-openembedded/meta-oe/recipes-support/poppler/poppler_23.04.0.bb
index 165e155..19bdce4 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_23.03.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_23.04.0.bb
@@ -8,7 +8,7 @@
            file://basename-include.patch \
            file://0001-cmake-Do-not-use-isystem.patch \
            "
-SRC_URI[sha256sum] = "b04148bf849c1965ada7eff6be4685130e3a18a84e0cce73bf9bc472ec32f2b4"
+SRC_URI[sha256sum] = "b6d893dc7dcd4138b9e9df59a13c59695e50e80dc5c2cacee0674670693951a1"
 
 DEPENDS = "fontconfig zlib cairo lcms glib-2.0"
 
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/remmina/remmina_1.4.29.bb b/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.30.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.29.bb
rename to meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.30.bb
index a92a3b2..c22eaf1 100644
--- a/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.29.bb
+++ b/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.30.bb
@@ -25,7 +25,7 @@
 DEPENDS:append:libc-musl = " libexecinfo"
 LDFLAGS:append:libc-musl = " -lexecinfo"
 
-SRCREV = "fb19eb5f11f206ffb442a9e0c519cb0f2cb3fd8b"
+SRCREV = "61ea9b6681104cadf0a3f8c25bd3e5685ee6691a"
 SRC_URI = "git://gitlab.com/Remmina/Remmina;protocol=https;branch=master"
 S = "${WORKDIR}/git"
 
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-oe/recipes-support/tbb/tbb_2021.8.0.bb b/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.9.0.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.8.0.bb
rename to meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.9.0.bb
index 5606d38..028291c 100644
--- a/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.8.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.9.0.bb
@@ -12,7 +12,7 @@
 PE = "1"
 
 BRANCH = "onetbb_2021"
-SRCREV = "c9497714821c3d443ee44c732609eb6850195ffb"
+SRCREV = "a00cc3b8b5fb4d8115e9de56bf713157073ed68c"
 SRC_URI = "git://github.com/oneapi-src/oneTBB.git;protocol=https;branch=${BRANCH} \
             file://0001-CMakeLists.txt-exclude-riscv64-riscv32.patch \
 "
diff --git a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.9.4.bb b/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.9.4.bb
index 3de5557..2030063 100644
--- a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.9.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.9.4.bb
@@ -35,6 +35,12 @@
     touch ${S}/build-aux/config.rpath
 }
 
+PACKAGECONFIG ?= ""
+
+PACKAGECONFIG[lvm2] = "--enable-lvm2,--disable-lvm2,lvm2"
+PACKAGECONFIG[btrfs] = "--enable-btrfs,--disable-btrfs,,btrfs-tools"
+PACKAGECONFIG[lsm] = "--enable-lsm,--disable-lsm,libstoragemgmt"
+
 FILES:${PN} += " \
     ${datadir}/dbus-1/ \
     ${datadir}/polkit-1 \
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_7.0.4.bb b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_7.0.8.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_7.0.4.bb
rename to meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_7.0.8.bb
index 91f5ae0..ed3e429 100644
--- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_7.0.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_7.0.8.bb
@@ -15,7 +15,7 @@
     file://Makefile.utils \
 "
 
-SRC_URI[sha256sum] = "58951f7d1bcda836c5e50ca0a6b13f0e61a07a904f476526a831df3d9bfe5b17"
+SRC_URI[sha256sum] = "c305fbe480f507eac7c36893ead66dffaacda944f19c3813a4533e9c39bae237"
 
 S ?= "${WORKDIR}/vbox_module"
 S:task-patch = "${WORKDIR}/${VBOX_NAME}"
