meta-openembedded: subtree update:9fdc7960ba..e4a3c66505

Alexander Kanavin (4):
      msgpack-c: update 3.2.1 -> 4.0.0, add msgpack-cpp
      can-utils: rrecommend iproute2 to make it possible to configure can interfaces
      fmt: update 7.1.3 -> 8.0.1
      spdlog: update 1.8.2 -> 1.9.2

Changqing Li (3):
      ndpi: upgrade 3.4 -> 4.0
      ntopng: upgrade 4.2 -> 5.0
      postgresql: upgrade 13.3 -> 13.4

Jan-Simon Moeller (1):
      Remove patch that produces a segfault in the ptest of lua

Joe Slater (1):
      redis: advance to version 6.2.5

Khem Raj (10):
      gjs: Remove valgrind dependency on rv32/rv64
      toybox-inittab: Use 0BSD for LIC_FILES_CHKSUM
      python3-kivy: Remove hardcoded include paths
      python3-kivy: Check for x11 and opengl before enabling the recipe
      packagegroup-meta-python: Add python3-kivy
      packagegroup-meta-python: Add python3-portalocker
      gst-shark: Define SRCREV_FORMAT
      android-tools: Define SRCREV_FORMAT
      packagegroup-meta-oe: Add pahole
      pahole: Add missing rdep for python

Kristian Klausen (1):
      cryptsetup: Add runtime dependency on lvm2-udevrules for udev

Martin Jansa (1):
      python3-regex: upgrade to 2021.8.28

Matteo Croce (2):
      recipes-devtools: add pahole
      libbpf: bump to 0.5.0

Mingli Yu (1):
      polkit: add the CVE tag

Patrick Williams (2):
      gjs: fix typo in RDEPENDS variable name
      ndisc6: fix typo in DESCRIPTION variable name

Peter Morrow (1):
      libbpf: remove kernel configuration dependency

Samuel Dolt (4):
      python3-alembic: add native and nativesdk to BBCLASSEXTEND
      python3-editor: add native and nativesdk to BBCLASSEXTEND
      python3-sqlalchemy: add native and nativesdk to BBCLASSEXTEND
      python3-portalocker: add recipe

Trevor Gamblin (2):
      python3-pytest-subtests: add recipe
      python3-pillow: upgrade 8.3.1 -> 8.3.2

Wang Mingyu (3):
      python3-cryptography-vectors: upgrade 3.4.7 -> 3.4.8
      python3-google-api-python-client: upgrade 2.18.0 -> 2.19.1
      dnf-plugin-tui: upgrade 1.2 -> 1.3

William A. Kennington III (1):
      ndisc6: Upgrade 1.0.4 -> 1.0.5

William Huang (1):
      recipes-devtools: python: add support for Kivy

Yi Zhao (4):
      krb5: fix CVE-2021-36222
      krb5: fix CVE-2021-37750
      net-snmp: drop unused patch
      net-snmp: make sure snmpd always exit after displaying usage

wangmy (10):
      cjson: upgrade 1.7.14 -> 1.7.15
      libwebsockets: upgrade 4.2.1 -> 4.2.2
      monit: upgrade 5.28.1 -> 5.29.0
      nlohmann-json: upgrade 3.9.1 -> 3.10.2
      cppzmq: upgrade 4.7.1 -> 4.8.0
      dfu-util: upgrade 0.10 -> 0.11
      libqmi: upgrade 1.30.0 -> 1.30.2
      lockfile-progs: upgrade 0.1.18 -> 0.1.19
      poppler-data: upgrade 0.4.10 -> 0.4.11
      dnsmasq: upgrade 2.85 -> 2.86

zangrc (11):
      python3-ipython: upgrade 7.26.0 -> 7.27.0
      python3-kiwisolver: upgrade 1.3.1 -> 1.3.2
      python3-ruamel-yaml: upgrade 0.17.13 -> 0.17.16
      python3-traitlets: upgrade 5.0.5 -> 5.1.0
      gsl: upgrade 2.6 -> 2.7
      crash: upgrade 7.2.9 -> 7.3.0
      dash: upgrade 0.5.11.3 -> 0.5.11.5
      python3-bitarray: upgrade 2.3.2 -> 2.3.3
      python3-lrparsing: upgrade 1.0.16 -> 1.0.17
      python3-transitions: upgrade 0.8.8 -> 0.8.9
      libxmlb: upgrade 0.3.1 -> 0.3.2

zhengruoqin (15):
      wireshark: upgrade 3.4.7 -> 3.4.8
      uhubctl: upgrade 2.3.0 -> 2.4.0
      unclutter-xfixes: upgrade 1.5 -> 1.6
      avro-c: upgrade 1.9.2 -> 1.10.2
      ctags: upgrade 5.9.20210815 -> 5.9.20210905
      xf86-video-nouveau: upgrade 1.0.16 -> 1.0.17
      fuse3: upgrade 3.10.4 -> 3.10.5
      mosquitto: upgrade 2.0.11 -> 2.0.12
      poppler: upgrade 21.08.0 -> 21.09.0
      libbytesize: upgrade 2.4 -> 2.6
      libeigen: upgrade 3.3.9 -> 3.4.0
      libjcat: upgrade 0.1.7 -> 0.1.8
      unbound: upgrade 1.12.0 -> 1.13.2
      xterm: upgrade 367 -> 368
      zchunk: upgrade 1.1.9 -> 1.1.16

Change-Id: I5a866e7773b8c906bc2bd8a4ddf99f006534bf53
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.4.bb b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.5.bb
similarity index 94%
rename from meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.4.bb
rename to meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.5.bb
index 21f5c38..6af9fc9 100644
--- a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.4.bb
+++ b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.5.bb
@@ -13,7 +13,7 @@
 
 SRC_URI = "https://github.com/libfuse/libfuse/releases/download/fuse-${PV}/fuse-${PV}.tar.xz \
 "
-SRC_URI[sha256sum] = "9365b74fd8471caecdb3cc5adf25a821f70a931317ee9103d15bd39089e3590d"
+SRC_URI[sha256sum] = "b2e283485d47404ac896dd0bb7f7ba81e1470838e677e45f659804c3a3b69666"
 
 S = "${WORKDIR}/fuse-${PV}"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.8.bb b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.8.bb
index 7513812..ccac08d 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.8.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.58.8.bb
@@ -35,4 +35,8 @@
 
 PACKAGES =+ "${PN}-valgrind"
 FILES:${PN}-valgrind = "${datadir}/gjs-1.0/valgrind"
-RSEPENDS_${PN}-valgrind += "valgrind"
+RDEPENDS:${PN}-valgrind += "valgrind"
+
+# Valgrind not yet available on rv32/rv64
+RDEPENDS:${PN}-valgrind:remove:riscv32 = "valgrind"
+RDEPENDS:${PN}-valgrind:remove:riscv64 = "valgrind"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb
index 9348fc1..fe4bd37 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb
@@ -14,7 +14,7 @@
 
 SRCREV_base = "50e3dbd3b131de2a39d3917576e8f834631ec46b"
 SRCREV_common = "88e512ca7197a45c4114f7fa993108f23245bf50"
-
+SRCREV_FORMAT = "base_common"
 SRC_URI = " \
     git://github.com/RidgeRun/gst-shark.git;protocol=https;branch=${SRCBRANCH};name=base \
     git://gitlab.freedesktop.org/gstreamer/common.git;protocol=https;destsuffix=git/common;name=common; \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.11.bb b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.12.bb
similarity index 95%
rename from meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.11.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.12.bb
index 9a13e2b..2df4008 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.11.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.12.bb
@@ -19,8 +19,7 @@
            file://1571.patch \
 "
 
-SRC_URI[md5sum] = "638d801e6aac611b41de76d030951612"
-SRC_URI[sha256sum] = "7b36a7198bce85cf31b132f5c6ee36dcf5dadf86fb768501eb1e11ce95d4f78a"
+SRC_URI[sha256sum] = "31cf0065cb431d6f4e57a5f4d56663e839c9d177362eff89582d7cfde191c933"
 
 inherit systemd update-rc.d useradd cmake
 
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmpd-always-exit-after-displaying-usage.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmpd-always-exit-after-displaying-usage.patch
new file mode 100644
index 0000000..4fc9e54
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmpd-always-exit-after-displaying-usage.patch
@@ -0,0 +1,55 @@
+From 94ca941e06bef157bf0e13251f8ca1471daa9393 Mon Sep 17 00:00:00 2001
+From: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
+Date: Fri, 27 Aug 2021 14:21:45 +0300
+Subject: [PATCH] snmpd: always exit after displaying usage
+
+Currently, viewing the help text with -h results in snmpd being started
+in the background, whereas this does not happen with --help. Similarly,
+when an error is detected in command line syntax, the help text is
+displayed but sometimes snmpd gets started anyway, depending on the
+execution path.
+
+This patch makes snmpd consistently terminate whenever the usage
+function gets called. It also removes the goto statements no longer
+needed.
+
+Upstream-Status: Backport
+[https://github.com/net-snmp/net-snmp/commit/94ca941e06bef157bf0e13251f8ca1471daa9393]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ agent/snmpd.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/agent/snmpd.c b/agent/snmpd.c
+index f5aab0af8..90de12d99 100644
+--- a/agent/snmpd.c
++++ b/agent/snmpd.c
+@@ -289,6 +289,8 @@ usage(char *prog)
+            "  -S d|i|0-7\t\tuse -Ls <facility> instead\n"
+            "\n"
+            );
++    SOCK_CLEANUP;
++    exit(1);
+ }
+ 
+ static void
+@@ -494,7 +496,6 @@ main(int argc, char *argv[])
+         case '-':
+             if (strcasecmp(optarg, "help") == 0) {
+                 usage(argv[0]);
+-                goto out;
+             }
+             if (strcasecmp(optarg, "version") == 0) {
+                 version();
+@@ -783,7 +784,6 @@ main(int argc, char *argv[])
+             fprintf(stderr, "%s: Illegal argument -X:"
+ 		            "AgentX support not compiled in.\n", argv[0]);
+             usage(argv[0]);
+-            goto out;
+ #endif
+             break;
+ 
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/systemd-support.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/systemd-support.patch
deleted file mode 100644
index c6af8c0..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/systemd-support.patch
+++ /dev/null
@@ -1,1652 +0,0 @@
-From 0cad0c6c36af2a2d589563804c9ed2b37b7085fb Mon Sep 17 00:00:00 2001
-From: Li xin <lixin.fnst@cn.fujitsu.com>
-Date: Fri, 21 Aug 2015 14:37:02 +0900
-Subject: [PATCH] ystemd support backported from the master branch as of
- 23/04/2012 (post 5.7.1, pre 5.8).
-
-The following commits have been cherry-picked:
-
-19499c3c90bf9d7b2b9e5d08baa26cc6bba28a11
-fef6cddfdb94da1a6b1fb768af62918b80f11fd3
-0641e43c694c485cbbffef0556efc4641bd3ff50
-76530a89f1c8bbd0b63acce63e10d5d4812a1a16 (conflict resolved)
-bf108d7f1354f6276fc43c129963f2c49b9fc242
-3692875172352f72cf3afd0d35f355e83d7e421b
-74412748067c685e1d8ab6ed3bcc3ca9c2774844
-86132e3f1e6ef7b4e0b96d8fa24e37c81b71b0e0
-63557cf8986a33dba1d4429b583a901361052c4f
-
-Upstream-Status: Backport
-
-Signed-off-by: Thomas Fitzsimmons <fitzsim@cisco.com>
----
- README.systemd                             |  41 +++
- agent/snmpd.c                              |  33 +-
- apps/snmptrapd.c                           |  32 +-
- configure.d/config_modules_lib             |   8 +
- configure.d/config_project_with_enable     |   9 +
- dist/snmpd.servic                          |  18 +
- dist/snmpd.socket                          |  17 +
- dist/snmptrapd.service                     |  16 +
- dist/snmptrapd.socket                      |  14 +
- include/net-snmp/library/sd-daemon.h       | 290 ++++++++++++++++
- snmplib/sd-daemon.c                        | 532 +++++++++++++++++++++++++++++
- snmplib/transports/snmpTCPDomain.c         |  43 ++-
- snmplib/transports/snmpTCPIPv6Domain.c     |  46 ++-
- snmplib/transports/snmpUDPIPv4BaseDomain.c |  33 +-
- snmplib/transports/snmpUDPIPv6Domain.c     |  34 +-
- snmplib/transports/snmpUnixDomain.c        |  66 ++--
- win32/libsnmp/Makefile.in                  |   6 +
- win32/net-snmp/net-snmp-config.h           |   2 +
- win32/net-snmp/net-snmp-config.h.in        |   2 +
- 19 files changed, 1176 insertions(+), 66 deletions(-)
- create mode 100644 README.systemd
- create mode 100644 dist/snmpd.servic
- create mode 100644 dist/snmpd.socket
- create mode 100644 dist/snmptrapd.service
- create mode 100644 dist/snmptrapd.socket
- create mode 100644 include/net-snmp/library/sd-daemon.h
- create mode 100644 snmplib/sd-daemon.c
-
-diff --git a/README.systemd b/README.systemd
-new file mode 100644
-index 0000000..dba15d1
---- /dev/null
-+++ b/README.systemd
-@@ -0,0 +1,41 @@
-+README.systemd
-+--------------
-+Net-SNMP provides two daemons, which support systemd system manager.
-+See http://www.freedesktop.org/wiki/Software/systemd to learn how
-+systemd works. Both socket activation and notification is supported by these
-+daemons.
-+
-+To enable systemd support, the sources must be compiled with
-+--with-systemd configure option.
-+
-+snmpd - The SNMP agent
-+----------------------
-+Socket activation od snmpd daemon is implemented, but it's discouraged.
-+The reason is simple - snmpd not only listens and processes SNMP requests
-+from network, but also gathers system statistics counters, sends traps and
-+communicates with subagents. It even opens few netlink sockets.
-+
-+In other words, snmpd should run from system start to properly work.
-+This can be done in two ways:
-+1) either as snmpd service unit with 'Type=notification' and without a socket
-+   unit
-+2) or as snmpd service unit with 'Type=simple', appropriate socket socket unit
-+   and the snmpd service enabled. This way systemd creates the snmpd listening
-+   socket early during boot and passes the sockets to snmpd slightly later
-+   (but still during machine boot). This way systemd can paralelize start of
-+   services, which depend on snmpd. Admins must adjust the socket file manually,
-+   depending if the snmpd support AgentX, IPv6, SMUX etc.
-+
-+snmpd should be started with '-f' command line parameter to disable forking -
-+systemd does that for us automatically.
-+
-+
-+snmptrapd - The trap processing daemon
-+--------------------------------------
-+snmptrapd supports full socket activation and also notification (if needed).
-+Both 'Type=simple' (with appropriate socket unit) and 'Type=notify' services
-+will work. Again, '-f' parameter should be provided on snmptrapd command line.
-+
-+If integration with SNMP agent using AgentX protocol is enabled, snmptrapd should
-+start during boot and not after first SNMP trap arrives. Same rules as for snmpd
-+applies then.
-diff --git a/agent/snmpd.c b/agent/snmpd.c
-index cfc7bce..116ee5c 100644
---- a/agent/snmpd.c
-+++ b/agent/snmpd.c
-@@ -164,6 +164,10 @@ typedef long    fd_mask;
- 
- #endif
- 
-+#ifndef NETSNMP_NO_SYSTEMD
-+#include <net-snmp/library/sd-daemon.h>
-+#endif
-+
- netsnmp_feature_want(logging_file)
- netsnmp_feature_want(logging_stdio)
- netsnmp_feature_want(logging_syslog)
-@@ -443,19 +447,29 @@ main(int argc, char *argv[])
-     int             agent_mode = -1;
-     char           *pid_file = NULL;
-     char            option_compatability[] = "-Le";
-+#ifndef WIN32
-+    int             prepared_sockets = 0;
-+#endif
- #if HAVE_GETPID
-     int fd;
-     FILE           *PID;
- #endif
- 
- #ifndef WIN32
-+#ifndef NETSNMP_NO_SYSTEMD
-+    /* check if systemd has sockets for us and don't close them */
-+    prepared_sockets = netsnmp_sd_listen_fds(0);
-+#endif /* NETSNMP_NO_SYSTEMD */
-+
-     /*
-      * close all non-standard file descriptors we may have
-      * inherited from the shell.
-      */
--    for (i = getdtablesize() - 1; i > 2; --i) {
--        (void) close(i);
--    }
-+    if (!prepared_sockets) {
-+        for (i = getdtablesize() - 1; i > 2; --i) {
-+            (void) close(i);
-+        }    
-+}
- #endif /* #WIN32 */
-     
-     /*
-@@ -1107,6 +1121,19 @@ main(int argc, char *argv[])
-     netsnmp_addrcache_initialise();
- 
-     /*
-+     * Let systemd know we're up.
-+     */
-+#ifndef NETSNMP_NO_SYSTEMD
-+    netsnmp_sd_notify(1, "READY=1\n");
-+    if (prepared_sockets)
-+        /*
-+         * Clear the environment variable, we already processed all the sockets
-+         * by now.
-+         */
-+        netsnmp_sd_listen_fds(1);
-+#endif
-+
-+    /*
-      * Forever monitor the dest_port for incoming PDUs.  
-      */
-     DEBUGMSGTL(("snmpd/main", "We're up.  Starting to process data.\n"));
-diff --git a/apps/snmptrapd.c b/apps/snmptrapd.c
-index bce0d47..c6a74ec 100644
---- a/apps/snmptrapd.c
-+++ b/apps/snmptrapd.c
-@@ -125,6 +125,10 @@ SOFTWARE.
- 
- #include <net-snmp/net-snmp-features.h>
- 
-+#ifndef NETSNMP_NO_SYSTEMD
-+#include <net-snmp/library/sd-daemon.h>
-+#endif
-+
- #ifndef BSD4_3
- #define BSD4_2
- #endif
-@@ -657,16 +661,25 @@ main(int argc, char *argv[])
-     int             agentx_subagent = 1;
- #endif
-     netsnmp_trapd_handler *traph;
-+#ifndef WIN32
-+    int             prepared_sockets = 0;
-+#endif
- 
- 
- #ifndef WIN32
-+#ifndef NETSNMP_NO_SYSTEMD
-+    /* check if systemd has sockets for us and don't close them */
-+    prepared_sockets = netsnmp_sd_listen_fds(0);
-+#endif
-     /*
-      * close all non-standard file descriptors we may have
-      * inherited from the shell.
-      */
--    for (i = getdtablesize() - 1; i > 2; --i) {
--        (void) close(i);
--    }
-+    if (!prepared_sockets) {
-+        for (i = getdtablesize() - 1; i > 2; --i) {
-+            (void) close(i);
-+        }    
-+}
- #endif /* #WIN32 */
-     
- #ifdef SIGTERM
-@@ -1318,6 +1331,19 @@ main(int argc, char *argv[])
- #endif
- #endif
- 
-+    /*
-+     * Let systemd know we're up.
-+     */
-+#ifndef NETSNMP_NO_SYSTEMD
-+    netsnmp_sd_notify(1, "READY=1\n");
-+    if (prepared_sockets)
-+        /*
-+         * Clear the environment variable, we already processed all the sockets
-+         * by now.
-+         */
-+        netsnmp_sd_listen_fds(1);
-+#endif
-+
- #ifdef WIN32SERVICE
-     trapd_status = SNMPTRAPD_RUNNING;
- #endif
-diff --git a/configure.d/config_modules_lib b/configure.d/config_modules_lib
-index 362ba0a..bb69daa 100644
---- a/configure.d/config_modules_lib
-+++ b/configure.d/config_modules_lib
-@@ -53,6 +53,14 @@ if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"
-   other_ftobjs_list="$other_ftobjs_list winpipe.ft"
- fi
- 
-+# Linux systemd
-+if test "x$with_systemd" == "xyes"; then
-+  other_src_list="$other_src_list sd-daemon.c"
-+  other_objs_list="$other_objs_list sd-daemon.o"
-+  other_lobjs_list="$other_lobjs_list sd-daemon.lo"
-+  other_ftobjs_list="$other_ftobjs_list sd-daemon.ft"
-+fi
-+
- AC_SUBST(other_src_list)
- AC_SUBST(other_objs_list)
- AC_SUBST(other_lobjs_list)
-diff --git a/configure.d/config_project_with_enable b/configure.d/config_project_with_enable
-index 61ba026..d782d12 100644
---- a/configure.d/config_project_with_enable
-+++ b/configure.d/config_project_with_enable
-@@ -690,6 +690,15 @@ if test "x$with_dummy_values" != "xyes"; then
-      data for])
- fi
- 
-+NETSNMP_ARG_WITH(systemd,
-+[  --with-systemd                 Provide systemd support. See README.systemd
-+                                  for details.])
-+# Define unless specifically suppressed (i.e., option defaults to false).
-+if test "x$with_systemd" != "xyes"; then
-+  AC_DEFINE(NETSNMP_NO_SYSTEMD, 1,
-+    [If you don't want to integrate with systemd.])
-+fi
-+
- NETSNMP_ARG_ENABLE(set-support,
- [  --disable-set-support           Do not allow SNMP set requests.])
- if test "x$enable_set_support" = "xno"; then
-diff --git a/dist/snmpd.servic b/dist/snmpd.servic
-new file mode 100644
-index 0000000..31391e5
---- /dev/null
-+++ b/dist/snmpd.servic
-@@ -0,0 +1,18 @@
-+#
-+# SNMP agent service file for systemd
-+#
-+#
-+# The service should be enabled, i.e. snmpd should start during machine boot.
-+# Socket activation shall not be used. See README.systemd for details.
-+
-+[Unit]
-+Description=Simple Network Management Protocol (SNMP) daemon.
-+After=syslog.target network.target
-+
-+[Service]
-+# Type=notify is also supported. It should be set when snmpd.socket is not used.
-+Type=simple
-+ExecStart=/usr/sbin/snmpd -f
-+
-+[Install]
-+WantedBy=multi-user.target
-diff --git a/dist/snmpd.socket b/dist/snmpd.socket
-new file mode 100644
-index 0000000..7f3a2d9
---- /dev/null
-+++ b/dist/snmpd.socket
-@@ -0,0 +1,17 @@
-+[Unit]
-+Description=Socket listening for SNMP and AgentX messages
-+
-+[Socket]
-+ListenDatagram=0.0.0.0:161
-+# Uncomment other listening addresses as needed - TCP, UDP6, TCP6.
-+# It must match listening addresses/ports defined in snmpd.service
-+# or snmpd.conf.
-+# ListenStream=0.0.0.0:161
-+# ListenDatagram=[::]:161
-+# ListenStream=[::]:161
-+#
-+# Uncomment AgentX socket if snmpd.conf enables AgentX protocol.
-+# ListenStream=/var/agentx/master
-+
-+[Install]
-+WantedBy=sockets.target
-diff --git a/dist/snmptrapd.service b/dist/snmptrapd.service
-new file mode 100644
-index 0000000..e88a5b4
---- /dev/null
-+++ b/dist/snmptrapd.service
-@@ -0,0 +1,16 @@
-+#
-+# SNMP trap-processing service file for systemd
-+#
-+
-+[Unit]
-+Description=Simple Network Management Protocol (SNMP) Trap daemon.
-+After=syslog.target network.target
-+
-+[Service]
-+# Type=notify is also supported. It should be set when snmptrapd.socket is not
-+# used.
-+Type=simple
-+ExecStart=/usr/sbin/snmptrapd -f
-+
-+[Install]
-+WantedBy=multi-user.target
-diff --git a/dist/snmptrapd.socket b/dist/snmptrapd.socket
-new file mode 100644
-index 0000000..2d24fb8
---- /dev/null
-+++ b/dist/snmptrapd.socket
-@@ -0,0 +1,14 @@
-++[Unit]
-++Description=Socket listening for SNMP trap messages
-++
-++[Socket]
-++ListenDatagram=0.0.0.0:162
-++# Uncomment other listening addresses as needed - TCP, UDP6, TCP6.
-++# It must match listening addresses/ports defined in snmptrapd.service
-++# or snmptrapd.conf.
-++# ListenStream=0.0.0.0:162
-++# ListenDatagram=[::]:162
-++# ListenStream=[::]:162
-++
-++[Install]
-++WantedBy=sockets.target
-diff --git a/include/net-snmp/library/sd-daemon.h b/include/net-snmp/library/sd-daemon.h
-new file mode 100644
-index 0000000..85274c9
---- /dev/null
-+++ b/include/net-snmp/library/sd-daemon.h
-@@ -0,0 +1,290 @@
-+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-+
-+#ifndef SNMPD_SD_DAEMON_H
-+#define SNMPD_SD_DAEMON_H
-+
-+/***
-+  Copyright 2010 Lennart Poettering
-+
-+  Permission is hereby granted, free of charge, to any person
-+  obtaining a copy of this software and associated documentation files
-+  (the "Software"), to deal in the Software without restriction,
-+  including without limitation the rights to use, copy, modify, merge,
-+  publish, distribute, sublicense, and/or sell copies of the Software,
-+  and to permit persons to whom the Software is furnished to do so,
-+  subject to the following conditions:
-+
-+  The above copyright notice and this permission notice shall be
-+  included in all copies or substantial portions of the Software.
-+
-+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-+  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-+  SOFTWARE.
-+***/
-+
-+#ifdef HAVE_SYS_TYPES_H
-+#include <sys/types.h>
-+#endif
-+#ifdef HAVE_INTTYPES_H
-+#include <inttypes.h>
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/*
-+  Reference implementation of a few systemd related interfaces for
-+  writing daemons. These interfaces are trivial to implement. To
-+  simplify porting we provide this reference implementation.
-+  Applications are welcome to reimplement the algorithms described
-+  here if they do not want to include these two source files.
-+
-+  The following functionality is provided:
-+
-+  - Support for logging with log levels on stderr
-+  - File descriptor passing for socket-based activation
-+  - Daemon startup and status notification
-+  - Detection of systemd boots
-+
-+  You may compile this with -DDISABLE_SYSTEMD to disable systemd
-+  support. This makes all those calls NOPs that are directly related to
-+  systemd (i.e. only sd_is_xxx() will stay useful).
-+
-+  Since this is drop-in code we don't want any of our symbols to be
-+  exported in any case. Hence we declare hidden visibility for all of
-+  them.
-+
-+  You may find an up-to-date version of these source files online:
-+
-+  http://cgit.freedesktop.org/systemd/plain/src/sd-daemon.h
-+  http://cgit.freedesktop.org/systemd/plain/src/sd-daemon.c
-+
-+  This should compile on non-Linux systems, too, but with the
-+  exception of the sd_is_xxx() calls all functions will become NOPs.
-+
-+  See sd-daemon(7) for more information.
-+*/
-+
-+#ifndef _sd_printf_attr_
-+#if __GNUC__ >= 4
-+#define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b)))
-+#else
-+#define _sd_printf_attr_(a,b)
-+#endif
-+#endif
-+
-+/*
-+  Log levels for usage on stderr:
-+
-+          fprintf(stderr, SD_NOTICE "Hello World!\n");
-+
-+  This is similar to printk() usage in the kernel.
-+*/
-+#define SD_EMERG   "<0>"  /* system is unusable */
-+#define SD_ALERT   "<1>"  /* action must be taken immediately */
-+#define SD_CRIT    "<2>"  /* critical conditions */
-+#define SD_ERR     "<3>"  /* error conditions */
-+#define SD_WARNING "<4>"  /* warning conditions */
-+#define SD_NOTICE  "<5>"  /* normal but significant condition */
-+#define SD_INFO    "<6>"  /* informational */
-+#define SD_DEBUG   "<7>"  /* debug-level messages */
-+
-+/* The first passed file descriptor is fd 3 */
-+#define SD_LISTEN_FDS_START 3
-+
-+/*
-+  Returns how many file descriptors have been passed, or a negative
-+  errno code on failure. Optionally, removes the $LISTEN_FDS and
-+  $LISTEN_PID file descriptors from the environment (recommended, but
-+  problematic in threaded environments). If r is the return value of
-+  this function you'll find the file descriptors passed as fds
-+  SD_LISTEN_FDS_START to SD_LISTEN_FDS_START+r-1. Returns a negative
-+  errno style error code on failure. This function call ensures that
-+  the FD_CLOEXEC flag is set for the passed file descriptors, to make
-+  sure they are not passed on to child processes. If FD_CLOEXEC shall
-+  not be set, the caller needs to unset it after this call for all file
-+  descriptors that are used.
-+
-+  See sd_listen_fds(3) for more information.
-+*/
-+int netsnmp_sd_listen_fds(int unset_environment);
-+
-+/*
-+  Helper call for identifying a passed file descriptor. Returns 1 if
-+  the file descriptor is a FIFO in the file system stored under the
-+  specified path, 0 otherwise. If path is NULL a path name check will
-+  not be done and the call only verifies if the file descriptor
-+  refers to a FIFO. Returns a negative errno style error code on
-+  failure.
-+
-+  See sd_is_fifo(3) for more information.
-+*/
-+int netsnmp_sd_is_fifo(int fd, const char *path);
-+
-+/*
-+  Helper call for identifying a passed file descriptor. Returns 1 if
-+  the file descriptor is a special character device on the file
-+  system stored under the specified path, 0 otherwise.
-+  If path is NULL a path name check will not be done and the call
-+  only verifies if the file descriptor refers to a special character.
-+  Returns a negative errno style error code on failure.
-+
-+  See sd_is_special(3) for more information.
-+*/
-+int netsnmp_sd_is_special(int fd, const char *path);
-+
-+/*
-+  Helper call for identifying a passed file descriptor. Returns 1 if
-+  the file descriptor is a socket of the specified family (AF_INET,
-+  ...) and type (SOCK_DGRAM, SOCK_STREAM, ...), 0 otherwise. If
-+  family is 0 a socket family check will not be done. If type is 0 a
-+  socket type check will not be done and the call only verifies if
-+  the file descriptor refers to a socket. If listening is > 0 it is
-+  verified that the socket is in listening mode. (i.e. listen() has
-+  been called) If listening is == 0 it is verified that the socket is
-+  not in listening mode. If listening is < 0 no listening mode check
-+  is done. Returns a negative errno style error code on failure.
-+
-+  See sd_is_socket(3) for more information.
-+*/
-+int netsnmp_sd_is_socket(int fd, int family, int type, int listening);
-+
-+/*
-+  Helper call for identifying a passed file descriptor. Returns 1 if
-+  the file descriptor is an Internet socket, of the specified family
-+  (either AF_INET or AF_INET6) and the specified type (SOCK_DGRAM,
-+  SOCK_STREAM, ...), 0 otherwise. If version is 0 a protocol version
-+  check is not done. If type is 0 a socket type check will not be
-+  done. If port is 0 a socket port check will not be done. The
-+  listening flag is used the same way as in sd_is_socket(). Returns a
-+  negative errno style error code on failure.
-+
-+  See sd_is_socket_inet(3) for more information.
-+*/
-+int netsnmp_sd_is_socket_inet(int fd, int family, int type, int listening, uint16_t port);
-+
-+/*
-+  Helper call for identifying a passed file descriptor. Returns 1 if
-+  the file descriptor is an AF_UNIX socket of the specified type
-+  (SOCK_DGRAM, SOCK_STREAM, ...) and path, 0 otherwise. If type is 0
-+  a socket type check will not be done. If path is NULL a socket path
-+  check will not be done. For normal AF_UNIX sockets set length to
-+  0. For abstract namespace sockets set length to the length of the
-+  socket name (including the initial 0 byte), and pass the full
-+  socket path in path (including the initial 0 byte). The listening
-+  flag is used the same way as in sd_is_socket(). Returns a negative
-+  errno style error code on failure.
-+
-+  See sd_is_socket_unix(3) for more information.
-+*/
-+int netsnmp_sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t length);
-+
-+/*
-+  Informs systemd about changed daemon state. This takes a number of
-+  newline separated environment-style variable assignments in a
-+  string. The following variables are known:
-+
-+     READY=1      Tells systemd that daemon startup is finished (only
-+                  relevant for services of Type=notify). The passed
-+                  argument is a boolean "1" or "0". Since there is
-+                  little value in signaling non-readiness the only
-+                  value daemons should send is "READY=1".
-+
-+     STATUS=...   Passes a single-line status string back to systemd
-+                  that describes the daemon state. This is free-from
-+                  and can be used for various purposes: general state
-+                  feedback, fsck-like programs could pass completion
-+                  percentages and failing programs could pass a human
-+                  readable error message. Example: "STATUS=Completed
-+                  66% of file system check..."
-+
-+     ERRNO=...    If a daemon fails, the errno-style error code,
-+                  formatted as string. Example: "ERRNO=2" for ENOENT.
-+
-+     BUSERROR=... If a daemon fails, the D-Bus error-style error
-+                  code. Example: "BUSERROR=org.freedesktop.DBus.Error.TimedOut"
-+
-+     MAINPID=...  The main pid of a daemon, in case systemd did not
-+                  fork off the process itself. Example: "MAINPID=4711"
-+
-+  Daemons can choose to send additional variables. However, it is
-+  recommended to prefix variable names not listed above with X_.
-+
-+  Returns a negative errno-style error code on failure. Returns > 0
-+  if systemd could be notified, 0 if it couldn't possibly because
-+  systemd is not running.
-+
-+  Example: When a daemon finished starting up, it could issue this
-+  call to notify systemd about it:
-+
-+     sd_notify(0, "READY=1");
-+
-+  See sd_notifyf() for more complete examples.
-+
-+  See sd_notify(3) for more information.
-+*/
-+int netsnmp_sd_notify(int unset_environment, const char *state);
-+
-+/*
-+  Similar to sd_notify() but takes a format string.
-+
-+  Example 1: A daemon could send the following after initialization:
-+
-+     sd_notifyf(0, "READY=1\n"
-+                   "STATUS=Processing requests...\n"
-+                   "MAINPID=%lu",
-+                   (unsigned long) getpid());
-+
-+  Example 2: A daemon could send the following shortly before
-+  exiting, on failure:
-+
-+     sd_notifyf(0, "STATUS=Failed to start up: %s\n"
-+                   "ERRNO=%i",
-+                   strerror(errno),
-+                   errno);
-+
-+  See sd_notifyf(3) for more information.
-+*/
-+int netsnmp_sd_notifyf(int unset_environment, const char *format, ...) _sd_printf_attr_(2,3);
-+
-+/*
-+  Returns > 0 if the system was booted with systemd. Returns < 0 on
-+  error. Returns 0 if the system was not booted with systemd. Note
-+  that all of the functions above handle non-systemd boots just
-+  fine. You should NOT protect them with a call to this function. Also
-+  note that this function checks whether the system, not the user
-+  session is controlled by systemd. However the functions above work
-+  for both user and system services.
-+
-+  See sd_booted(3) for more information.
-+*/
-+int netsnmp_sd_booted(void);
-+
-+/**
-+ * Find an socket with given parameters. See man sd_is_socket_inet for
-+ * description of the arguments.
-+ *
-+ * Returns the file descriptor if it is found, 0 otherwise.
-+ */
-+int netsnmp_sd_find_inet_socket(int family, int type, int listening, int port);
-+
-+/**
-+ * Find an unix socket with given parameters. See man sd_is_socket_unix for
-+ * description of the arguments.
-+ *
-+ * Returns the file descriptor if it is found, 0 otherwise.
-+ */
-+int
-+netsnmp_sd_find_unix_socket(int type, int listening, const char *path);
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* SNMPD_SD_DAEMON_H */
-diff --git a/snmplib/sd-daemon.c b/snmplib/sd-daemon.c
-new file mode 100644
-index 0000000..42dba29
---- /dev/null
-+++ b/snmplib/sd-daemon.c
-@@ -0,0 +1,532 @@
-+/*
-+ * Systemd integration parts.
-+ *
-+ * Most of this file is directly copied from systemd sources.
-+ * Changes:
-+ * - all functions were renamed to have netsnmp_ prefix
-+ * - includes were  changed to match Net-SNMP style.
-+ * - removed gcc export macros
-+ * - removed POSIX message queues
-+ */
-+
-+#include <net-snmp/net-snmp-config.h>
-+#include <net-snmp/net-snmp-features.h>
-+#include <net-snmp/types.h>
-+#include <net-snmp/library/snmp_debug.h>
-+
-+#ifndef NETSNMP_NO_SYSTEMD
-+
-+/***
-+  Copyright 2010 Lennart Poettering
-+
-+  Permission is hereby granted, free of charge, to any person
-+  obtaining a copy of this software and associated documentation files
-+  (the "Software"), to deal in the Software without restriction,
-+  including without limitation the rights to use, copy, modify, merge,
-+  publish, distribute, sublicense, and/or sell copies of the Software,
-+  and to permit persons to whom the Software is furnished to do so,
-+  subject to the following conditions:
-+
-+  The above copyright notice and this permission notice shall be
-+  included in all copies or substantial portions of the Software.
-+
-+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-+  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-+  SOFTWARE.
-+***/
-+
-+#ifndef _GNU_SOURCE
-+#define _GNU_SOURCE
-+#endif
-+
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <sys/socket.h>
-+#include <sys/un.h>
-+#include <sys/fcntl.h>
-+#include <netinet/in.h>
-+#include <stdlib.h>
-+#include <errno.h>
-+#include <unistd.h>
-+#include <string.h>
-+#include <stdarg.h>
-+#include <stdio.h>
-+#include <stddef.h>
-+#include <limits.h>
-+
-+#include <net-snmp/library/sd-daemon.h>
-+
-+int netsnmp_sd_listen_fds(int unset_environment) {
-+
-+        int r, fd;
-+        const char *e;
-+        char *p = NULL;
-+        unsigned long l;
-+
-+        if (!(e = getenv("LISTEN_PID"))) {
-+                r = 0;
-+                goto finish;
-+        }
-+
-+        errno = 0;
-+        l = strtoul(e, &p, 10);
-+
-+        if (errno != 0) {
-+                r = -errno;
-+                goto finish;
-+        }
-+
-+        if (!p || *p || l <= 0) {
-+                r = -EINVAL;
-+                goto finish;
-+        }
-+
-+        /* Is this for us? */
-+        if (getpid() != (pid_t) l) {
-+                r = 0;
-+                goto finish;
-+        }
-+
-+        if (!(e = getenv("LISTEN_FDS"))) {
-+                r = 0;
-+                goto finish;
-+        }
-+
-+        errno = 0;
-+        l = strtoul(e, &p, 10);
-+
-+        if (errno != 0) {
-+                r = -errno;
-+                goto finish;
-+        }
-+
-+        if (!p || *p) {
-+                r = -EINVAL;
-+                goto finish;
-+        }
-+
-+        for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + (int) l; fd ++) {
-+                int flags;
-+
-+                if ((flags = fcntl(fd, F_GETFD)) < 0) {
-+                        r = -errno;
-+                        goto finish;
-+                }
-+
-+                if (flags & FD_CLOEXEC)
-+                        continue;
-+
-+                if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) < 0) {
-+                        r = -errno;
-+                        goto finish;
-+                }
-+        }
-+
-+        r = (int) l;
-+
-+finish:
-+        if (unset_environment) {
-+                unsetenv("LISTEN_PID");
-+                unsetenv("LISTEN_FDS");
-+        }
-+
-+        return r;
-+}
-+
-+int netsnmp_sd_is_fifo(int fd, const char *path) {
-+        struct stat st_fd;
-+
-+        if (fd < 0)
-+                return -EINVAL;
-+
-+        memset(&st_fd, 0, sizeof(st_fd));
-+        if (fstat(fd, &st_fd) < 0)
-+                return -errno;
-+
-+        if (!S_ISFIFO(st_fd.st_mode))
-+                return 0;
-+
-+        if (path) {
-+                struct stat st_path;
-+
-+                memset(&st_path, 0, sizeof(st_path));
-+                if (stat(path, &st_path) < 0) {
-+
-+                        if (errno == ENOENT || errno == ENOTDIR)
-+                                return 0;
-+
-+                        return -errno;
-+                }
-+
-+                return
-+                        st_path.st_dev == st_fd.st_dev &&
-+                        st_path.st_ino == st_fd.st_ino;
-+        }
-+
-+        return 1;
-+}
-+
-+int netsnmp_sd_is_special(int fd, const char *path) {
-+        struct stat st_fd;
-+
-+        if (fd < 0)
-+                return -EINVAL;
-+
-+        if (fstat(fd, &st_fd) < 0)
-+                return -errno;
-+
-+        if (!S_ISREG(st_fd.st_mode) && !S_ISCHR(st_fd.st_mode))
-+                return 0;
-+
-+        if (path) {
-+                struct stat st_path;
-+
-+                if (stat(path, &st_path) < 0) {
-+
-+                        if (errno == ENOENT || errno == ENOTDIR)
-+                                return 0;
-+
-+                        return -errno;
-+                }
-+
-+                if (S_ISREG(st_fd.st_mode) && S_ISREG(st_path.st_mode))
-+                        return
-+                                st_path.st_dev == st_fd.st_dev &&
-+                                st_path.st_ino == st_fd.st_ino;
-+                else if (S_ISCHR(st_fd.st_mode) && S_ISCHR(st_path.st_mode))
-+                        return st_path.st_rdev == st_fd.st_rdev;
-+                else
-+                        return 0;
-+        }
-+
-+        return 1;
-+}
-+
-+static int sd_is_socket_internal(int fd, int type, int listening) {
-+        struct stat st_fd;
-+
-+        if (fd < 0 || type < 0)
-+                return -EINVAL;
-+
-+        if (fstat(fd, &st_fd) < 0)
-+                return -errno;
-+
-+        if (!S_ISSOCK(st_fd.st_mode))
-+                return 0;
-+
-+        if (type != 0) {
-+                int other_type = 0;
-+                socklen_t l = sizeof(other_type);
-+
-+                if (getsockopt(fd, SOL_SOCKET, SO_TYPE, &other_type, &l) < 0)
-+                        return -errno;
-+
-+                if (l != sizeof(other_type))
-+                        return -EINVAL;
-+
-+                if (other_type != type)
-+                        return 0;
-+        }
-+
-+        if (listening >= 0) {
-+                int accepting = 0;
-+                socklen_t l = sizeof(accepting);
-+
-+                if (getsockopt(fd, SOL_SOCKET, SO_ACCEPTCONN, &accepting, &l) < 0)
-+                        return -errno;
-+
-+                if (l != sizeof(accepting))
-+                        return -EINVAL;
-+
-+                if (!accepting != !listening)
-+                        return 0;
-+        }
-+
-+        return 1;
-+}
-+
-+union sockaddr_union {
-+        struct sockaddr sa;
-+        struct sockaddr_in in4;
-+        struct sockaddr_in6 in6;
-+        struct sockaddr_un un;
-+        struct sockaddr_storage storage;
-+};
-+
-+int netsnmp_sd_is_socket(int fd, int family, int type, int listening) {
-+        int r;
-+
-+        if (family < 0)
-+                return -EINVAL;
-+
-+        if ((r = sd_is_socket_internal(fd, type, listening)) <= 0)
-+                return r;
-+
-+        if (family > 0) {
-+                union sockaddr_union sockaddr;
-+                socklen_t l;
-+
-+                memset(&sockaddr, 0, sizeof(sockaddr));
-+                l = sizeof(sockaddr);
-+
-+                if (getsockname(fd, &sockaddr.sa, &l) < 0)
-+                        return -errno;
-+
-+                if (l < sizeof(sa_family_t))
-+                        return -EINVAL;
-+
-+                return sockaddr.sa.sa_family == family;
-+        }
-+
-+        return 1;
-+}
-+
-+int netsnmp_sd_is_socket_inet(int fd, int family, int type, int listening, uint16_t port) {
-+        union sockaddr_union sockaddr;
-+        socklen_t l;
-+        int r;
-+
-+        if (family != 0 && family != AF_INET && family != AF_INET6)
-+                return -EINVAL;
-+
-+        if ((r = sd_is_socket_internal(fd, type, listening)) <= 0)
-+                return r;
-+
-+        memset(&sockaddr, 0, sizeof(sockaddr));
-+        l = sizeof(sockaddr);
-+
-+        if (getsockname(fd, &sockaddr.sa, &l) < 0)
-+                return -errno;
-+
-+        if (l < sizeof(sa_family_t))
-+                return -EINVAL;
-+
-+        if (sockaddr.sa.sa_family != AF_INET &&
-+            sockaddr.sa.sa_family != AF_INET6)
-+                return 0;
-+
-+        if (family > 0)
-+                if (sockaddr.sa.sa_family != family)
-+                        return 0;
-+
-+        if (port > 0) {
-+                if (sockaddr.sa.sa_family == AF_INET) {
-+                        if (l < sizeof(struct sockaddr_in))
-+                                return -EINVAL;
-+
-+                        return htons(port) == sockaddr.in4.sin_port;
-+                } else {
-+                        if (l < sizeof(struct sockaddr_in6))
-+                                return -EINVAL;
-+
-+                        return htons(port) == sockaddr.in6.sin6_port;
-+                }
-+        }
-+
-+        return 1;
-+}
-+
-+int netsnmp_sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t length) {
-+        union sockaddr_union sockaddr;
-+        socklen_t l;
-+        int r;
-+
-+        if ((r = sd_is_socket_internal(fd, type, listening)) <= 0)
-+                return r;
-+
-+        memset(&sockaddr, 0, sizeof(sockaddr));
-+        l = sizeof(sockaddr);
-+
-+        if (getsockname(fd, &sockaddr.sa, &l) < 0)
-+                return -errno;
-+
-+        if (l < sizeof(sa_family_t))
-+                return -EINVAL;
-+
-+        if (sockaddr.sa.sa_family != AF_UNIX)
-+                return 0;
-+
-+        if (path) {
-+                if (length <= 0)
-+                        length = strlen(path);
-+
-+                if (length <= 0)
-+                        /* Unnamed socket */
-+                        return l == offsetof(struct sockaddr_un, sun_path);
-+
-+                if (path[0])
-+                        /* Normal path socket */
-+                        return
-+                                (l >= offsetof(struct sockaddr_un, sun_path) + length + 1) &&
-+                                memcmp(path, sockaddr.un.sun_path, length+1) == 0;
-+                else
-+                        /* Abstract namespace socket */
-+                        return
-+                                (l == offsetof(struct sockaddr_un, sun_path) + length) &&
-+                                memcmp(path, sockaddr.un.sun_path, length) == 0;
-+        }
-+
-+        return 1;
-+}
-+
-+int netsnmp_sd_notify(int unset_environment, const char *state) {
-+        int fd = -1, r;
-+        struct msghdr msghdr;
-+        struct iovec iovec;
-+        union sockaddr_union sockaddr;
-+        const char *e;
-+
-+        if (!state) {
-+                r = -EINVAL;
-+                goto finish;
-+        }
-+
-+        if (!(e = getenv("NOTIFY_SOCKET")))
-+                return 0;
-+
-+        /* Must be an abstract socket, or an absolute path */
-+        if ((e[0] != '@' && e[0] != '/') || e[1] == 0) {
-+                r = -EINVAL;
-+                goto finish;
-+        }
-+
-+        if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) {
-+                r = -errno;
-+                goto finish;
-+        }
-+
-+        memset(&sockaddr, 0, sizeof(sockaddr));
-+        sockaddr.sa.sa_family = AF_UNIX;
-+        strncpy(sockaddr.un.sun_path, e, sizeof(sockaddr.un.sun_path));
-+
-+        if (sockaddr.un.sun_path[0] == '@')
-+                sockaddr.un.sun_path[0] = 0;
-+
-+        memset(&iovec, 0, sizeof(iovec));
-+        iovec.iov_base = (char *)state;
-+        iovec.iov_len = strlen(state);
-+
-+        memset(&msghdr, 0, sizeof(msghdr));
-+        msghdr.msg_name = &sockaddr;
-+        msghdr.msg_namelen = offsetof(struct sockaddr_un, sun_path) + strlen(e);
-+
-+        if (msghdr.msg_namelen > sizeof(struct sockaddr_un))
-+                msghdr.msg_namelen = sizeof(struct sockaddr_un);
-+
-+        msghdr.msg_iov = &iovec;
-+        msghdr.msg_iovlen = 1;
-+
-+        if (sendmsg(fd, &msghdr, MSG_NOSIGNAL) < 0) {
-+                r = -errno;
-+                goto finish;
-+        }
-+
-+        r = 1;
-+
-+finish:
-+        if (unset_environment)
-+                unsetenv("NOTIFY_SOCKET");
-+
-+        if (fd >= 0)
-+                close(fd);
-+
-+        return r;
-+}
-+
-+int netsnmp_sd_notifyf(int unset_environment, const char *format, ...) {
-+        va_list ap;
-+        char *p = NULL;
-+        int r;
-+
-+        va_start(ap, format);
-+        r = vasprintf(&p, format, ap);
-+        va_end(ap);
-+
-+        if (r < 0 || !p)
-+                return -ENOMEM;
-+
-+        r = netsnmp_sd_notify(unset_environment, p);
-+        free(p);
-+
-+        return r;
-+}
-+
-+int netsnmp_sd_booted(void) {
-+        struct stat a, b;
-+
-+        /* We simply test whether the systemd cgroup hierarchy is
-+         * mounted */
-+
-+        if (lstat("/sys/fs/cgroup", &a) < 0)
-+                return 0;
-+
-+        if (lstat("/sys/fs/cgroup/systemd", &b) < 0)
-+                return 0;
-+
-+        return a.st_dev != b.st_dev;
-+}
-+
-+/* End of original sd-daemon.c from systemd sources */
-+
-+int
-+netsnmp_sd_find_inet_socket(int family, int type, int listening, int port)
-+{
-+    int count, fd;
-+
-+    count = netsnmp_sd_listen_fds(0);
-+    if (count <= 0) {
-+        DEBUGMSGTL(("systemd:find_inet_socket", "No LISTEN_FDS found.\n"));
-+        return 0;
-+    }
-+    DEBUGMSGTL(("systemd:find_inet_socket", "LISTEN_FDS reports %d sockets.\n",
-+            count));
-+
-+    for (fd = 3; fd < 3+count; fd++) {
-+        int rc = netsnmp_sd_is_socket_inet(fd, family, type, listening, port);
-+        if (rc < 0)
-+            DEBUGMSGTL(("systemd:find_inet_socket",
-+                    "sd_is_socket_inet error: %d\n", rc));
-+        if (rc > 0) {
-+            DEBUGMSGTL(("systemd:find_inet_socket",
-+                    "Found the socket in LISTEN_FDS\n"));
-+            return fd;
-+        }
-+    }
-+    DEBUGMSGTL(("systemd:find_inet_socket", "Socket not found in LISTEN_FDS\n"));
-+    return 0;
-+}
-+
-+int
-+netsnmp_sd_find_unix_socket(int type, int listening, const char *path)
-+{
-+    int count, fd;
-+
-+    count = netsnmp_sd_listen_fds(0);
-+    if (count <= 0) {
-+        DEBUGMSGTL(("systemd:find_unix_socket", "No LISTEN_FDS found.\n"));
-+        return 0;
-+    }
-+    DEBUGMSGTL(("systemd:find_unix_socket", "LISTEN_FDS reports %d sockets.\n",
-+            count));
-+
-+    for (fd = 3; fd < 3+count; fd++) {
-+        int rc = netsnmp_sd_is_socket_unix(fd, type, listening, path, 0);
-+        if (rc < 0)
-+            DEBUGMSGTL(("systemd:find_unix_socket",
-+                    "netsnmp_sd_is_socket_unix error: %d\n", rc));
-+        if (rc > 0) {
-+            DEBUGMSGTL(("systemd:find_unix_socket",
-+                    "Found the socket in LISTEN_FDS\n"));
-+            return fd;
-+        }
-+    }
-+    DEBUGMSGTL(("systemd:find_unix_socket", "Socket not found in LISTEN_FDS\n"));
-+    return 0;
-+}
-+
-+#endif /* ! NETSNMP_NO_SYSTEMD */
-diff --git a/snmplib/transports/snmpTCPDomain.c b/snmplib/transports/snmpTCPDomain.c
-index 7feb028..a41b926 100644
---- a/snmplib/transports/snmpTCPDomain.c
-+++ b/snmplib/transports/snmpTCPDomain.c
-@@ -43,6 +43,10 @@
- #include <net-snmp/library/snmpTCPBaseDomain.h>
- #include <net-snmp/library/tools.h>
- 
-+#ifndef NETSNMP_NO_SYSTEMD
-+#include <net-snmp/library/sd-daemon.h>
-+#endif
-+
- /*
-  * needs to be in sync with the definitions in snmplib/snmpUDPDomain.c
-  * and perl/agent/agent.xs
-@@ -149,6 +153,7 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local)
-     netsnmp_transport *t = NULL;
-     netsnmp_udp_addr_pair *addr_pair = NULL;
-     int rc = 0;
-+    int socket_initialized = 0;
- 
- #ifdef NETSNMP_NO_LISTEN_SUPPORT
-     if (local)
-@@ -178,7 +183,19 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local)
-     t->domain_length =
-         sizeof(netsnmp_snmpTCPDomain) / sizeof(netsnmp_snmpTCPDomain[0]);
- 
--    t->sock = socket(PF_INET, SOCK_STREAM, 0);
-+#ifndef NETSNMP_NO_SYSTEMD
-+    /*
-+     * Maybe the socket was already provided by systemd...
-+     */
-+    if (local) {
-+        t->sock = netsnmp_sd_find_inet_socket(PF_INET, SOCK_STREAM, 1,
-+                ntohs(addr->sin_port));
-+        if (t->sock)
-+            socket_initialized = 1;
-+    }
-+#endif
-+    if (!socket_initialized)
-+        t->sock = socket(PF_INET, SOCK_STREAM, 0);
-     if (t->sock < 0) {
-         netsnmp_transport_free(t);
-         return NULL;
-@@ -215,11 +232,13 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local)
-         setsockopt(t->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt,
- 		   sizeof(opt));
- 
--        rc = bind(t->sock, (struct sockaddr *)addr, sizeof(struct sockaddr));
--        if (rc != 0) {
--            netsnmp_socketbase_close(t);
--            netsnmp_transport_free(t);
--            return NULL;
-+        if (!socket_initialized) {
-+            rc = bind(t->sock, (struct sockaddr *)addr, sizeof(struct sockaddr));
-+            if (rc != 0) {
-+                netsnmp_socketbase_close(t);
-+                netsnmp_transport_free(t);
-+                return NULL;
-+            }
-         }
- 
-         /*
-@@ -236,11 +255,13 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local)
-          * Now sit here and wait for connections to arrive.  
-          */
- 
--        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
--        if (rc != 0) {
--            netsnmp_socketbase_close(t);
--            netsnmp_transport_free(t);
--            return NULL;
-+        if (!socket_initialized) {
-+            rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
-+            if (rc != 0) {
-+                netsnmp_socketbase_close(t);
-+                netsnmp_transport_free(t);
-+                return NULL;
-+            }
-         }
-         
-         /*
-diff --git a/snmplib/transports/snmpTCPIPv6Domain.c b/snmplib/transports/snmpTCPIPv6Domain.c
-index d2e0a2d..22de6d4 100644
---- a/snmplib/transports/snmpTCPIPv6Domain.c
-+++ b/snmplib/transports/snmpTCPIPv6Domain.c
-@@ -49,6 +49,10 @@
- #include <net-snmp/library/snmpTCPBaseDomain.h>
- #include <net-snmp/library/tools.h>
- 
-+#ifndef NETSNMP_NO_SYSTEMD
-+#include <net-snmp/library/sd-daemon.h>
-+#endif
-+
- #include "inet_ntop.h"
- 
- oid netsnmp_TCPIPv6Domain[] = { TRANSPORT_DOMAIN_TCP_IPV6 };
-@@ -140,6 +144,8 @@ netsnmp_tcp6_transport(struct sockaddr_in6 *addr, int local)
- {
-     netsnmp_transport *t = NULL;
-     int             rc = 0;
-+    char           *str = NULL;
-+    int             socket_initialized = 0;
- 
- #ifdef NETSNMP_NO_LISTEN_SUPPORT
-     if (local)
-@@ -174,7 +180,19 @@ netsnmp_tcp6_transport(struct sockaddr_in6 *addr, int local)
-     t->domain = netsnmp_TCPIPv6Domain;
-     t->domain_length = sizeof(netsnmp_TCPIPv6Domain) / sizeof(oid);
- 
--    t->sock = socket(PF_INET6, SOCK_STREAM, 0);
-+#ifndef NETSNMP_NO_SYSTEMD
-+    /*
-+     * Maybe the socket was already provided by systemd...
-+     */
-+    if (local) {
-+        t->sock = netsnmp_sd_find_inet_socket(PF_INET6, SOCK_STREAM, 1,
-+                ntohs(addr->sin6_port));
-+        if (t->sock)
-+            socket_initialized = 1;
-+    }
-+#endif
-+    if (!socket_initialized)
-+        t->sock = socket(PF_INET6, SOCK_STREAM, 0);
-     if (t->sock < 0) {
-         netsnmp_transport_free(t);
-         return NULL;
-@@ -220,12 +238,14 @@ netsnmp_tcp6_transport(struct sockaddr_in6 *addr, int local)
- 
-         setsockopt(t->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof(opt));
- 
--        rc = bind(t->sock, (struct sockaddr *) addr,
--		  sizeof(struct sockaddr_in6));
--        if (rc != 0) {
--            netsnmp_socketbase_close(t);
--            netsnmp_transport_free(t);
--            return NULL;
-+        if (!socket_initialized) {
-+            rc = bind(t->sock, (struct sockaddr *) addr,
-+                    sizeof(struct sockaddr_in6));
-+            if (rc != 0) {
-+                netsnmp_socketbase_close(t);
-+                netsnmp_transport_free(t);
-+                return NULL;
-+            }
-         }
- 
-         /*
-@@ -242,11 +262,13 @@ netsnmp_tcp6_transport(struct sockaddr_in6 *addr, int local)
-          * Now sit here and wait for connections to arrive.  
-          */
- 
--        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
--        if (rc != 0) {
--            netsnmp_socketbase_close(t);
--            netsnmp_transport_free(t);
--            return NULL;
-+        if (!socket_initialized) {
-+            rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
-+            if (rc != 0) {
-+                netsnmp_socketbase_close(t);
-+                netsnmp_transport_free(t);
-+                return NULL;
-+            }
-         }
-         
-         /*
-diff --git a/snmplib/transports/snmpUDPIPv4BaseDomain.c b/snmplib/transports/snmpUDPIPv4BaseDomain.c
-index 8c0fb05..00e5bbc 100644
---- a/snmplib/transports/snmpUDPIPv4BaseDomain.c
-+++ b/snmplib/transports/snmpUDPIPv4BaseDomain.c
-@@ -40,6 +40,10 @@
- 
- #include <net-snmp/library/snmpSocketBaseDomain.h>
- 
-+#ifndef NETSNMP_NO_SYSTEMD
-+#include <net-snmp/library/sd-daemon.h>
-+#endif
-+
- #if defined(HAVE_IP_PKTINFO) || defined(HAVE_IP_RECVDSTADDR)
- int netsnmp_udpipv4_recvfrom(int s, void *buf, int len, struct sockaddr *from,
-                              socklen_t *fromlen, struct sockaddr *dstip,
-@@ -64,6 +68,7 @@ netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local)
-     char           *client_socket = NULL;
-     netsnmp_indexed_addr_pair addr_pair;
-     socklen_t       local_addr_len;
-+    int             socket_initialized = 0;
- 
- #ifdef NETSNMP_NO_LISTEN_SUPPORT
-     if (local)
-@@ -88,7 +93,19 @@ netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local)
-         free(str);
-     }
- 
--    t->sock = socket(PF_INET, SOCK_DGRAM, 0);
-+#ifndef NETSNMP_NO_SYSTEMD
-+    /*
-+     * Maybe the socket was already provided by systemd...
-+     */
-+    if (local) {
-+        t->sock = netsnmp_sd_find_inet_socket(PF_INET, SOCK_DGRAM, -1,
-+                ntohs(addr->sin_port));
-+        if (t->sock)
-+            socket_initialized = 1;
-+    }
-+#endif
-+    if (!socket_initialized)
-+        t->sock = socket(PF_INET, SOCK_DGRAM, 0);
-     DEBUGMSGTL(("UDPBase", "openned socket %d as local=%d\n", t->sock, local)); 
-     if (t->sock < 0) {
-         netsnmp_transport_free(t);
-@@ -151,12 +168,14 @@ netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local)
-             }
-         }
- #endif /* !defined(WIN32) */
--        rc = bind(t->sock, (struct sockaddr *) addr,
--                  sizeof(struct sockaddr));
--        if (rc != 0) {
--            netsnmp_socketbase_close(t);
--            netsnmp_transport_free(t);
--            return NULL;
-+        if (!socket_initialized) {
-+            rc = bind(t->sock, (struct sockaddr *) addr,
-+                    sizeof(struct sockaddr));
-+            if (rc != 0) {
-+                netsnmp_socketbase_close(t);
-+                netsnmp_transport_free(t);
-+                return NULL;
-+            }
-         }
-         t->data = NULL;
-         t->data_length = 0;
-diff --git a/snmplib/transports/snmpUDPIPv6Domain.c b/snmplib/transports/snmpUDPIPv6Domain.c
-index 18de876..fd2ced4 100644
---- a/snmplib/transports/snmpUDPIPv6Domain.c
-+++ b/snmplib/transports/snmpUDPIPv6Domain.c
-@@ -67,6 +67,10 @@ static const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
- #include <net-snmp/library/snmpSocketBaseDomain.h>
- #include <net-snmp/library/tools.h>
- 
-+#ifndef NETSNMP_NO_SYSTEMD
-+#include <net-snmp/library/sd-daemon.h>
-+#endif
-+
- #include "inet_ntop.h"
- #include "inet_pton.h"
- 
-@@ -190,6 +194,8 @@ netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local)
- {
-     netsnmp_transport *t = NULL;
-     int             rc = 0;
-+    char           *str = NULL;
-+    int             socket_initialized = 0;
- 
- #ifdef NETSNMP_NO_LISTEN_SUPPORT
-     if (local)
-@@ -217,7 +223,19 @@ netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local)
-     t->domain_length =
-         sizeof(netsnmp_UDPIPv6Domain) / sizeof(netsnmp_UDPIPv6Domain[0]);
- 
--    t->sock = socket(PF_INET6, SOCK_DGRAM, 0);
-+#ifndef NETSNMP_NO_SYSTEMD
-+    /*
-+     * Maybe the socket was already provided by systemd...
-+     */
-+    if (local) {
-+        t->sock = netsnmp_sd_find_inet_socket(PF_INET6, SOCK_DGRAM, -1,
-+                ntohs(addr->sin6_port));
-+        if (t->sock)
-+            socket_initialized = 1;
-+    }
-+#endif
-+    if (!socket_initialized)
-+        t->sock = socket(PF_INET6, SOCK_DGRAM, 0);
-     if (t->sock < 0) {
-         netsnmp_transport_free(t);
-         return NULL;
-@@ -243,12 +261,14 @@ netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local)
-         }
- #endif
- 
--        rc = bind(t->sock, (struct sockaddr *) addr,
--		  sizeof(struct sockaddr_in6));
--        if (rc != 0) {
--            netsnmp_socketbase_close(t);
--            netsnmp_transport_free(t);
--            return NULL;
-+        if (!socket_initialized) {
-+            rc = bind(t->sock, (struct sockaddr *) addr,
-+                    sizeof(struct sockaddr_in6));
-+            if (rc != 0) {
-+                netsnmp_socketbase_close(t);
-+                netsnmp_transport_free(t);
-+                return NULL;
-+            }
-         }
-         t->local = (unsigned char*)malloc(18);
-         if (t->local == NULL) {
-diff --git a/snmplib/transports/snmpUnixDomain.c b/snmplib/transports/snmpUnixDomain.c
-index 47dffc1..8f34c37 100644
---- a/snmplib/transports/snmpUnixDomain.c
-+++ b/snmplib/transports/snmpUnixDomain.c
-@@ -37,6 +37,10 @@
- #include <net-snmp/library/system.h> /* mkdirhier */
- #include <net-snmp/library/tools.h>
- 
-+#ifndef NETSNMP_NO_SYSTEMD
-+#include <net-snmp/library/sd-daemon.h>
-+#endif
-+
- netsnmp_feature_child_of(transport_unix_socket_all, transport_all)
- netsnmp_feature_child_of(unix_socket_paths, transport_unix_socket_all)
- 
-@@ -295,6 +299,8 @@ netsnmp_unix_transport(struct sockaddr_un *addr, int local)
-     netsnmp_transport *t = NULL;
-     sockaddr_un_pair *sup = NULL;
-     int             rc = 0;
-+    char           *string = NULL;
-+    int             socket_initialized = 0;
- 
- #ifdef NETSNMP_NO_LISTEN_SUPPORT
-     /* SPECIAL CIRCUMSTANCE: We still want AgentX to be able to operate,
-@@ -333,7 +339,18 @@ netsnmp_unix_transport(struct sockaddr_un *addr, int local)
-     t->data_length = sizeof(sockaddr_un_pair);
-     sup = (sockaddr_un_pair *) t->data;
- 
--    t->sock = socket(PF_UNIX, SOCK_STREAM, 0);
-+#ifndef NETSNMP_NO_SYSTEMD
-+    /*
-+     * Maybe the socket was already provided by systemd...
-+     */
-+    if (local) {
-+        t->sock = netsnmp_sd_find_unix_socket(SOCK_STREAM, 1, addr->sun_path);
-+        if (t->sock)
-+            socket_initialized = 1;
-+    }
-+#endif
-+    if (!socket_initialized)
-+        t->sock = socket(PF_UNIX, SOCK_STREAM, 0);
-     if (t->sock < 0) {
-         netsnmp_transport_free(t);
-         return NULL;
-@@ -357,25 +374,26 @@ netsnmp_unix_transport(struct sockaddr_un *addr, int local)
- 
-         t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
- 
--        unlink(addr->sun_path);
--        rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
--
--        if (rc != 0 && errno == ENOENT && create_path) {
--            rc = mkdirhier(addr->sun_path, create_mode, 1);
-+        if (!socket_initialized) {
-+            unlink(addr->sun_path);
-+            rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
-+            if (rc != 0 && errno == ENOENT && create_path) {
-+                rc = mkdirhier(addr->sun_path, create_mode, 1);
-+                if (rc != 0) {
-+                    netsnmp_unix_close(t);
-+                    netsnmp_transport_free(t);
-+                    return NULL;
-+                }
-+                rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
-+            }
-             if (rc != 0) {
-+                DEBUGMSGTL(("netsnmp_unix_transport",
-+                        "couldn't bind \"%s\", errno %d (%s)\n",
-+                        addr->sun_path, errno, strerror(errno)));
-                 netsnmp_unix_close(t);
-                 netsnmp_transport_free(t);
-                 return NULL;
-             }
--            rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
--        }
--        if (rc != 0) {
--            DEBUGMSGTL(("netsnmp_unix_transport",
--                        "couldn't bind \"%s\", errno %d (%s)\n",
--                        addr->sun_path, errno, strerror(errno)));
--            netsnmp_unix_close(t);
--            netsnmp_transport_free(t);
--            return NULL;
-         }
- 
-         /*
-@@ -391,14 +409,16 @@ netsnmp_unix_transport(struct sockaddr_un *addr, int local)
-          * Now sit here and listen for connections to arrive.
-          */
- 
--        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
--        if (rc != 0) {
--            DEBUGMSGTL(("netsnmp_unix_transport",
--                        "couldn't listen to \"%s\", errno %d (%s)\n",
--                        addr->sun_path, errno, strerror(errno)));
--            netsnmp_unix_close(t);
--            netsnmp_transport_free(t);
--            return NULL;
-+        if (!socket_initialized) {
-+            rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
-+            if (rc != 0) {
-+                DEBUGMSGTL(("netsnmp_unix_transport",
-+                            "couldn't listen to \"%s\", errno %d (%s)\n",
-+                            addr->sun_path, errno, strerror(errno)));
-+                netsnmp_unix_close(t);
-+                netsnmp_transport_free(t);
-+                return NULL;
-+            }
-         }
- 
-     } else {
-diff --git a/win32/libsnmp/Makefile.in b/win32/libsnmp/Makefile.in
-index 98d83c8..b228d20 100644
---- a/win32/libsnmp/Makefile.in
-+++ b/win32/libsnmp/Makefile.in
-@@ -42,6 +42,7 @@ LIB32_OBJS= \
- 	"$(INTDIR)\read_config.obj" \
- 	"$(INTDIR)\readdir.obj" \
- 	"$(INTDIR)\scapi.obj" \
-+        "$(INTDIR)\sd-daemon.obj" \
- 	"$(INTDIR)\snmp-tc.obj" \
- 	"$(INTDIR)\snmp.obj" \
- 	"$(INTDIR)\snmpCallbackDomain.obj" \
-@@ -138,6 +139,11 @@ SOURCE=..\..\snmplib\asn1.c
- "$(INTDIR)\asn1.obj" : $(SOURCE) "$(INTDIR)"
- 	$(CPP) $(CPP_PROJ) $(SOURCE)
- 
-+SOURCE=..\..\snmplib\sd-daemon.c
-+
-+"$(INTDIR)\sd-daemon.obj" : $(SOURCE) "$(INTDIR)"
-+       $(CPP) $(CPP_PROJ) $(SOURCE)
-+
- 
- SOURCE=..\..\snmplib\callback.c
- 
-diff --git a/win32/net-snmp/net-snmp-config.h b/win32/net-snmp/net-snmp-config.h
-index 1608563..7aec547 100644
---- a/win32/net-snmp/net-snmp-config.h
-+++ b/win32/net-snmp/net-snmp-config.h
-@@ -1717,6 +1717,8 @@ enum {
- #define DMALLOC_FUNC_CHECK
- #endif
- 
-++#define NETSNMP_NO_SYSTEMD
-++
- /* #undef NETSNMP_ENABLE_LOCAL_SMUX */
- 
- /* define if agentx transport is to use domain sockets only */
-diff --git a/win32/net-snmp/net-snmp-config.h.in b/win32/net-snmp/net-snmp-config.h.in
-index 9693730..96ec3d9 100644
---- a/win32/net-snmp/net-snmp-config.h.in
-+++ b/win32/net-snmp/net-snmp-config.h.in
-@@ -1717,6 +1717,8 @@ enum {
- #define DMALLOC_FUNC_CHECK
- #endif
- 
-+#define NETSNMP_NO_SYSTEMD
-+
- /* #undef NETSNMP_ENABLE_LOCAL_SMUX */
- 
- /* define if agentx transport is to use domain sockets only */
--- 
-1.8.4.2
-
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb
index 5fa6170..e6ea2dd 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb
@@ -27,6 +27,7 @@
            file://net-snmp-fix-for-disable-des.patch \
            file://reproducibility-have-printcap.patch \
            file://0001-ac_add_search_path.m4-keep-consistent-between-32bit.patch \
+           file://0001-snmpd-always-exit-after-displaying-usage.patch \
            "
 SRC_URI[sha256sum] = "eb7fd4a44de6cddbffd9a92a85ad1309e5c1054fb9d5a7dd93079c8953f48c3f"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.85.bb b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.85.bb
deleted file mode 100644
index 023dda3..0000000
--- a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.85.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require dnsmasq.inc
-
-SRC_URI[dnsmasq-2.85.md5sum] = "4079e1e6e1065e4bd14ded268cdd7bd7"
-SRC_URI[dnsmasq-2.85.sha256sum] = "f36b93ecac9397c15f461de9b1689ee5a2ed6b5135db0085916233053ff3f886"
-SRC_URI += "\
-    file://lua.patch \
-"
-
diff --git a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.86.bb b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.86.bb
new file mode 100644
index 0000000..31ca51e
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.86.bb
@@ -0,0 +1,7 @@
+require dnsmasq.inc
+
+SRC_URI[dnsmasq-2.86.sha256sum] = "ef15f608a83ee2b1d1d2c1f11d089a7e0ac401ffb0991de73fc01ce5f290e512"
+SRC_URI += "\
+    file://lua.patch \
+"
+
diff --git a/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6/0001-replace-VLAIS-with-malloc-free-pair.patch b/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6/0001-replace-VLAIS-with-malloc-free-pair.patch
deleted file mode 100644
index dc58b5b..0000000
--- a/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6/0001-replace-VLAIS-with-malloc-free-pair.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From 3a7d5396e633e6c02a4583be7faf3d79d0d33748 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 Aug 2017 11:14:41 -0700
-Subject: [PATCH 1/2] replace VLAIS with malloc/free pair
-
-Makes it compatible with non-gnu compilers
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/trace-icmp.c |  7 +++++--
- src/trace-tcp.c  | 14 ++++++++++----
- src/trace-udp.c  |  7 +++++--
- 3 files changed, 20 insertions(+), 8 deletions(-)
-
-diff --git a/src/trace-icmp.c b/src/trace-icmp.c
-index 842938e..c76cb54 100644
---- a/src/trace-icmp.c
-+++ b/src/trace-icmp.c
-@@ -43,16 +43,19 @@ send_echo_probe (int fd, unsigned ttl, unsigned n, size_t plen, uint16_t port)
- 	struct
- 	{
- 		struct icmp6_hdr ih;
--		uint8_t payload[plen - sizeof (struct icmp6_hdr)];
-+		uint8_t *payload;
- 	} packet;
- 	memset (&packet, 0, plen);
-+	packet.payload = malloc(plen - sizeof (struct icmp6_hdr));
- 
- 	packet.ih.icmp6_type = ICMP6_ECHO_REQUEST;
- 	packet.ih.icmp6_id = htons (getpid ());
- 	packet.ih.icmp6_seq = htons ((ttl << 8) | (n & 0xff));
- 	(void)port;
- 
--	return send_payload (fd, &packet.ih, plen, ttl);
-+	ssize_t ret = send_payload (fd, &packet.ih, plen, ttl);
-+	free(packet.payload);
-+	return ret;
- }
- 
- 
-diff --git a/src/trace-tcp.c b/src/trace-tcp.c
-index 940f918..62d22ff 100644
---- a/src/trace-tcp.c
-+++ b/src/trace-tcp.c
-@@ -54,10 +54,11 @@ send_syn_probe (int fd, unsigned ttl, unsigned n, size_t plen, uint16_t port)
- 	struct
- 	{
- 		struct tcphdr th;
--		uint8_t payload[plen - sizeof (struct tcphdr)];
-+		uint8_t *payload;
- 	} packet;
- 
- 	memset (&packet, 0, sizeof (packet));
-+	packet.payload = malloc(plen - sizeof (struct tcphdr));
- 	packet.th.th_sport = sport;
- 	packet.th.th_dport = port;
- 	packet.th.th_seq = htonl ((ttl << 24) | (n << 16) | (uint16_t)getpid ());
-@@ -65,7 +66,9 @@ send_syn_probe (int fd, unsigned ttl, unsigned n, size_t plen, uint16_t port)
- 	packet.th.th_flags = TH_SYN | (ecn ? (TH_ECE | TH_CWR) : 0);
- 	packet.th.th_win = htons (TCP_WINDOW);
- 
--	return send_payload (fd, &packet, plen, ttl);
-+	ssize_t ret = send_payload (fd, &packet, plen, ttl);
-+	free(packet.payload);
-+	return ret;
- }
- 
- 
-@@ -131,10 +134,11 @@ send_ack_probe (int fd, unsigned ttl, unsigned n, size_t plen, uint16_t port)
- 	struct
- 	{
- 		struct tcphdr th;
--		uint8_t payload[plen - sizeof (struct tcphdr)];
-+		uint8_t *payload;
- 	} packet;
- 
- 	memset (&packet, 0, sizeof (packet));
-+	packet.payload = malloc(plen - sizeof (struct tcphdr));
- 	packet.th.th_sport = sport;
- 	packet.th.th_dport = port;
- 	packet.th.th_ack = htonl ((ttl << 24) | (n << 16) | (uint16_t)getpid ());
-@@ -142,7 +146,9 @@ send_ack_probe (int fd, unsigned ttl, unsigned n, size_t plen, uint16_t port)
- 	packet.th.th_flags = TH_ACK;
- 	packet.th.th_win = htons (TCP_WINDOW);
- 
--	return send_payload (fd, &packet, plen, ttl);
-+	ssize_t ret = send_payload (fd, &packet, plen, ttl);
-+	free(packet.payload);
-+	return ret;
- }
- 
- 
-diff --git a/src/trace-udp.c b/src/trace-udp.c
-index 4adde6b..a6cbb07 100644
---- a/src/trace-udp.c
-+++ b/src/trace-udp.c
-@@ -46,9 +46,10 @@ send_udp_probe (int fd, unsigned ttl, unsigned n, size_t plen, uint16_t port)
- 	struct
- 	{
- 		struct udphdr uh;
--		uint8_t payload[plen - sizeof (struct udphdr)];
-+		uint8_t *payload;
- 	} packet;
- 	memset (&packet, 0, plen);
-+	packet.payload = malloc(plen - sizeof (struct udphdr));
- 
- 	(void)n;
- 	packet.uh.uh_sport = sport;
-@@ -61,7 +62,9 @@ send_udp_probe (int fd, unsigned ttl, unsigned n, size_t plen, uint16_t port)
- 	/*if (plen > sizeof (struct udphdr))
- 		packet.payload[0] = (uint8_t)ttl;*/
- 
--	return send_payload (fd, &packet, plen, ttl);
-+	ssize_t ret = send_payload (fd, &packet, plen, ttl);
-+	free(packet.payload);
-+	return ret;
- }
- 
- 
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6/0002-Do-not-undef-_GNU_SOURCE.patch b/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6/0002-Do-not-undef-_GNU_SOURCE.patch
deleted file mode 100644
index 3cc2ba8..0000000
--- a/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6/0002-Do-not-undef-_GNU_SOURCE.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 2a50154fbce38fd36be7e14f5cd4a8b03c65c72f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 Aug 2017 11:15:37 -0700
-Subject: [PATCH 2/2] Do not undef _GNU_SOURCE
-
-There are functions from tcp.h which are under _GNU_SOURCE
-in musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/trace-tcp.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/src/trace-tcp.c b/src/trace-tcp.c
-index 62d22ff..380008e 100644
---- a/src/trace-tcp.c
-+++ b/src/trace-tcp.c
-@@ -21,7 +21,6 @@
- # include <config.h>
- #endif
- 
--#undef _GNU_SOURCE
- #define _DEFAULT_SOURCE 1
- 
- #include <string.h>
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_git.bb b/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_git.bb
index e9af2c4..037d929 100644
--- a/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_git.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_git.bb
@@ -5,11 +5,9 @@
 LICENSE = "GPL-2.0"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
-PV = "1.0.4+git${SRCPV}"
-SRCREV = "4c794b5512d23c649def1f94a684225dcbb6ac3e"
+PV = "1.0.5"
+SRCREV = "b706f5f01aa82aa0db678fffd15a1527f330c507"
 SRC_URI = "git://git.remlab.net/git/ndisc6.git;protocol=http \
-           file://0001-replace-VLAIS-with-malloc-free-pair.patch \
-           file://0002-Do-not-undef-_GNU_SOURCE.patch \
            file://0001-autogen-Do-not-symlink-gettext.h-from-build-host.patch \
            "
 
@@ -60,11 +58,11 @@
 DESCRIPTION:${PN}-rdisc6    = "ICMPv6 Router Discovery tool. \
 Queries IPv6 routers on the network for advertised prefixes. Can be used \
 to detect rogue IPv6 routers, monitor legitimate IPv6 routers."
-DESCRITPION_${PN}-tcpspray6    = "Performs bandwidth measurements of TCP \
+DESCRIPTION:${PN}-tcpspray6    = "Performs bandwidth measurements of TCP \
 sessions between the local system and a remote echo server in either IPv6 \
 or IPv4."
 
-DESCRITPION_${PN}-rdnssd       = "Daemon to autoconfigure the list of DNS \
+DESCRIPTION:${PN}-rdnssd       = "Daemon to autoconfigure the list of DNS \
 servers through slateless IPv6 autoconfiguration."
 
 # The tcptraceroute6 and tracert6 commands depend on rltraceroute6 to
diff --git a/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-Makefile.in-don-t-use-the-internal-lua.patch b/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-Makefile.in-don-t-use-the-internal-lua.patch
index 4672455..0f1ca8d 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-Makefile.in-don-t-use-the-internal-lua.patch
+++ b/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-Makefile.in-don-t-use-the-internal-lua.patch
@@ -1,4 +1,4 @@
-From 65c15247d268566b79e4595b8e734b7e40679d75 Mon Sep 17 00:00:00 2001
+From 52953ab99c727a19e88243dda2702d6814f7974d Mon Sep 17 00:00:00 2001
 From: Mingli Yu <mingli.yu@windriver.com>
 Date: Wed, 4 Nov 2020 08:55:10 +0000
 Subject: [PATCH] Makefile.in: don't use the internal lua
@@ -15,18 +15,18 @@
  1 file changed, 2 deletions(-)
 
 diff --git a/Makefile.in b/Makefile.in
-index 143535746..fc06a5341 100755
+index e67623bec..99cb9f06e 100755
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -40,7 +40,6 @@ endif
- 
+@@ -31,7 +31,6 @@ MONGOOSE_INC=-I$(MONGOOSE_HOME)
+ LUA_PLATFORM=generi
  LUA_HOME=${PWD}/third-party/lua-5.3.5
  LUA_INC=-I$(LUA_HOME)/src
 -LUA_LIB=$(LUA_HOME)/src/liblua.a
  
- ######
- LIBRRDTOOL_HOME=${PWD}/third-party/rrdtool-1.4.8
-@@ -118,7 +117,6 @@ RPM_PKG = $(TARGET)-$(NTOPNG_VERSION)-@REVISION@.$(PLATFORM).rpm
+ ifeq ($(OS),Linux)
+ 	LUA_PLATFORM=linux
+@@ -123,7 +122,6 @@ RPM_PKG = $(TARGET)-$(NTOPNG_VERSION)-@REVISION@.$(PLATFORM).rpm
  RPM_DATA_PKG = $(TARGET)-data-$(NTOPNG_VERSION)-@REVISION@.noarch.rpm
  ######
  
@@ -35,5 +35,5 @@
  ifneq ($(HAS_ZEROMQ), 0)
  LIB_TARGETS += $(ZEROMQ_LIB)
 -- 
-2.26.2
+2.17.1
 
diff --git a/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-autogen.sh-not-generate-configure.patch b/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-autogen.sh-not-generate-configure.patch
index ffc6ec1..1cbf059 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-autogen.sh-not-generate-configure.patch
+++ b/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-autogen.sh-not-generate-configure.patch
@@ -8,15 +8,18 @@
 Upstream-Status: Inappropriate [embedded specific]
 
 Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+
+refresh patch to 4.0
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
 ---
- autogen.sh | 8 --------
- 1 file changed, 8 deletions(-)
+ autogen.sh | 9 ---------
+ 1 file changed, 9 deletions(-)
 
 diff --git a/autogen.sh b/autogen.sh
-index df734ce9..d7bbf8cb 100755
+index cf5d7057..cb73cf9d 100755
 --- a/autogen.sh
 +++ b/autogen.sh
-@@ -52,11 +52,3 @@ cat configure.seed | sed \
+@@ -52,12 +52,3 @@ cat configure.seed | sed \
      -e "s/@NDPI_VERSION_SHORT@/$NDPI_VERSION_SHORT/g" \
      -e "s/@FUZZY@/$FUZZY/g" \
      > configure.ac
@@ -25,6 +28,7 @@
 -cat configure | sed "s/#define PACKAGE/#define NDPI_PACKAGE/g" | sed "s/#define VERSION/#define NDPI_VERSION/g"  > configure.tmp
 -cat configure.tmp > configure
 -
+-echo "./configure $@"
 -chmod +x configure
 -./configure $@
 -
diff --git a/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-configure.seed-fix-host-contamination.patch b/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-configure.seed-fix-host-contamination.patch
index a5ac59f..02cd94a 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-configure.seed-fix-host-contamination.patch
+++ b/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-configure.seed-fix-host-contamination.patch
@@ -1,4 +1,4 @@
-From 81e3512718f80965c26ccb1f9d694c91b121fea0 Mon Sep 17 00:00:00 2001
+From d9458227ddb4bbb8c63c607202a6854886d66090 Mon Sep 17 00:00:00 2001
 From: Mingli Yu <mingli.yu@windriver.com>
 Date: Wed, 4 Nov 2020 06:28:28 +0000
 Subject: [PATCH] configure.seed: fix host contamination
@@ -11,14 +11,14 @@
 
 Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
 ---
- configure.seed | 47 +++++------------------------------------------
- 1 file changed, 5 insertions(+), 42 deletions(-)
+ configure.seed | 43 +++----------------------------------------
+ 1 file changed, 3 insertions(+), 40 deletions(-)
 
 diff --git a/configure.seed b/configure.seed
-index 03f9a31b0..58aebb5b8 100644
+index a148c530a..55bd49678 100644
 --- a/configure.seed
 +++ b/configure.seed
-@@ -79,31 +79,6 @@ fi
+@@ -144,31 +144,6 @@ fi
  #
  REVISION=`git log --pretty=oneline | wc -l`
  
@@ -50,7 +50,7 @@
  SHORT_MACHINE=`uname -m | cut -b1-3`
  
  GIT_RELEASE="@GIT_RELEASE@"
-@@ -214,23 +189,11 @@ dnl> fi
+@@ -293,23 +268,11 @@ fi
  pkg-config --exists libssl
  if test "$?" -ne 1; then
    AC_DEFINE_UNQUOTED(NO_SSL_DL, 1, [has openssl])
@@ -62,7 +62,7 @@
 -  if test -d "/usr/local/opt/openssl/lib"; then
 -    AC_DEFINE_UNQUOTED(NO_SSL_DL, 1, [has openssl])
 -    SSL_INC="-I/usr/local/opt/openssl/include"
--    SSL_LIB="-L/usr/local/opt/openssl/lib -lssl"
+-    SSL_LIB="-L/usr/local/opt/openssl/lib -lssl -lcrypto"
 -  dnl Workaround for FreeBSD
 -  elif test -f "/usr/lib/libssl.so"; then
 -    AC_DEFINE_UNQUOTED(NO_SSL_DL, 1, [has openssl])
@@ -78,5 +78,5 @@
  
  AC_CHECK_LIB([gcrypt], [gcry_cipher_checktag], [LDFLAGS="${LDFLAGS} -lgcrypt"])
 -- 
-2.26.2
+2.17.1
 
diff --git a/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-configure.seed-not-check-clang-on-host.patch b/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-configure.seed-not-check-clang-on-host.patch
index 95d1f99..80761ab 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-configure.seed-not-check-clang-on-host.patch
+++ b/meta-openembedded/meta-networking/recipes-support/ntopng/files/0001-configure.seed-not-check-clang-on-host.patch
@@ -1,4 +1,4 @@
-From eead0c589b71d4256bf9f16492164786b0ee07e4 Mon Sep 17 00:00:00 2001
+From 5867be19e53a3cc09730b83282c83bdd26147cc3 Mon Sep 17 00:00:00 2001
 From: Mingli Yu <mingli.yu@windriver.com>
 Date: Mon, 9 Nov 2020 04:05:25 +0000
 Subject: [PATCH] configure.seed: not check clang on host
@@ -9,14 +9,14 @@
 
 Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
 ---
- configure.seed | 19 -------------------
- 1 file changed, 19 deletions(-)
+ configure.seed | 16 ----------------
+ 1 file changed, 16 deletions(-)
 
 diff --git a/configure.seed b/configure.seed
-index d0335b599..cb97adca2 100644
+index 55bd49678..94bc0bc48 100644
 --- a/configure.seed
 +++ b/configure.seed
-@@ -509,25 +509,6 @@ if test $SYSTEM = "Darwin"; then
+@@ -90,22 +90,6 @@ if test $SYSTEM = "FreeBSD" || test $SYSTEM = "Darwin"; then
              CFLAGS="-fno-color-diagnostics $CFLAGS"
        fi
     fi
@@ -27,21 +27,18 @@
 -      CXX=clang++
 -      AC_MSG_RESULT(Using clang++ compiler)
 -    fi
--    
+-
 -    if [ test -f /etc/redhat-release ]; then
--       if [ test -f /usr/bin/lsb_release ]; then
--       	  dnl> CentOS 7
--	  CENTOS_N2N_DEP=", n2n"
--       fi
+-      OS=`cat /etc/redhat-release`
 -    else
--        if [ test -f /usr/bin/lsb_release ]; then
--         OS=`/usr/bin/lsb_release -d|cut -d ':' -f 2`
--        fi
+-      if [ test -f /usr/bin/lsb_release ]; then
+-        OS=`/usr/bin/lsb_release -d|cut -d ':' -f 2`
+-      fi
 -    fi
 -  fi
  fi
  
  dnl> Remove spaces
 -- 
-2.26.2
+2.17.1
 
diff --git a/meta-openembedded/meta-networking/recipes-support/ntopng/ndpi_3.4.bb b/meta-openembedded/meta-networking/recipes-support/ntopng/ndpi_4.0.bb
similarity index 76%
rename from meta-openembedded/meta-networking/recipes-support/ntopng/ndpi_3.4.bb
rename to meta-openembedded/meta-networking/recipes-support/ntopng/ndpi_4.0.bb
index 89450f5..aee2d8c 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntopng/ndpi_3.4.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ntopng/ndpi_4.0.bb
@@ -3,15 +3,14 @@
 inspection. Based on OpenDPI it includes ntop extensions"
 
 SECTION = "libdevel"
-DEPENDS = "libpcap"
+DEPENDS = "libpcap json-c"
 RDEPENDS:${PN} += " libpcap"
 LICENSE = "GPLv3"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b52f2d57d10c4f7ee67a7eb9615d5d24"
 
-SRCREV = "64929a75e0a7a60d864bd25a9fd97fdf9ac892a2"
-SRC_URI = "git://github.com/ntop/nDPI.git;branch=3.4-stable \
+SRCREV = "dabab0e9515c2e6a71a91bdc807453e416f831ca"
+SRC_URI = "git://github.com/ntop/nDPI.git;branch=4.0-stable \
            file://0001-autogen.sh-not-generate-configure.patch \
-           file://CVE-2021-36082.patch \
 "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-networking/recipes-support/ntopng/ntopng_4.2.bb b/meta-openembedded/meta-networking/recipes-support/ntopng/ntopng_5.0.bb
similarity index 95%
rename from meta-openembedded/meta-networking/recipes-support/ntopng/ntopng_4.2.bb
rename to meta-openembedded/meta-networking/recipes-support/ntopng/ntopng_5.0.bb
index cc23207..8910743 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntopng/ntopng_4.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ntopng/ntopng_5.0.bb
@@ -11,8 +11,8 @@
 LICENSE = "GPLv3"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
-SRCREV = "5e649a2d1130b4a3ab0c5bb673d615172cc0bdbb"
-SRC_URI = "git://github.com/ntop/ntopng.git;protocol=git;branch=4.2-stable \
+SRCREV = "85867090d92df4365c0af8d47f54ab3106117e59"
+SRC_URI = "git://github.com/ntop/ntopng.git;protocol=git;branch=5.0-stable \
            file://0001-configure.seed-fix-configure-error.patch \
            file://0001-configure.seed-fix-host-contamination.patch \
            file://0001-Makefile.in-don-t-use-the-internal-lua.patch \
diff --git a/meta-openembedded/meta-networking/recipes-support/unbound/unbound_1.12.0.bb b/meta-openembedded/meta-networking/recipes-support/unbound/unbound_1.13.2.bb
similarity index 96%
rename from meta-openembedded/meta-networking/recipes-support/unbound/unbound_1.12.0.bb
rename to meta-openembedded/meta-networking/recipes-support/unbound/unbound_1.13.2.bb
index 8ab8b7b..17f750c 100644
--- a/meta-openembedded/meta-networking/recipes-support/unbound/unbound_1.12.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/unbound/unbound_1.13.2.bb
@@ -12,7 +12,7 @@
 SRC_URI = "git://github.com/NLnetLabs/unbound.git;protocol=http;branch=master \
 	file://0001-contrib-add-yocto-compatible-init-script.patch \
 "
-SRCREV="52b04806f4236c37acd10179ab465a54adc7e86a"
+SRCREV = "8e538dcaa8df2d0fab8ff3dcf94ac1f972450b66"
 
 inherit autotools pkgconfig systemd update-rc.d
 
diff --git a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.7.bb b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.8.bb
similarity index 96%
rename from meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.7.bb
rename to meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.8.bb
index fc360f6..faf2a3a 100644
--- a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.7.bb
+++ b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.8.bb
@@ -19,7 +19,7 @@
 
 UPSTREAM_CHECK_URI = "https://1.as.dl.wireshark.org/src"
 
-SRC_URI[sha256sum] = "6c4cee51ef997cb9d9aaee84113525a5629157d3c743d7c4e320000de804a09d"
+SRC_URI[sha256sum] = "58a7fa8dfe2010a8c8b7dcf66438c653e6493d47eb936ba48ef49d4aa4dbd725"
 
 PE = "1"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/CVE-2021-36222.patch b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/CVE-2021-36222.patch
new file mode 100644
index 0000000..fee6e64
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/CVE-2021-36222.patch
@@ -0,0 +1,121 @@
+From fc98f520caefff2e5ee9a0026fdf5109944b3562 Mon Sep 17 00:00:00 2001
+From: Joseph Sutton <josephsutton@catalyst.net.nz>
+Date: Wed, 7 Jul 2021 11:47:44 +1200
+Subject: [PATCH] Fix KDC null deref on bad encrypted challenge
+
+The function ec_verify() in src/kdc/kdc_preauth_ec.c contains a check
+to avoid further processing if the armor key is NULL.  However, this
+check is bypassed by a call to k5memdup0() which overwrites retval
+with 0 if the allocation succeeds.  If the armor key is NULL, a call
+to krb5_c_fx_cf2_simple() will then dereference it, resulting in a
+crash.  Add a check before the k5memdup0() call to avoid overwriting
+retval.
+
+CVE-2021-36222:
+
+In MIT krb5 releases 1.16 and later, an unauthenticated attacker can
+cause a null dereference in the KDC by sending a request containing a
+PA-ENCRYPTED-CHALLENGE padata element without using FAST.
+
+[ghudson@mit.edu: trimmed patch; added test case; edited commit
+message]
+
+ticket: 9007 (new)
+tags: pullup
+target_version: 1.19-next
+target_version: 1.18-next
+
+CVE: CVE-2021-36222
+
+Upstream-Status: Backport
+[https://github.com/krb5/krb5/commit/fc98f520caefff2e5ee9a0026fdf5109944b3562]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ src/kdc/kdc_preauth_ec.c      |  3 ++-
+ src/tests/Makefile.in         |  1 +
+ src/tests/t_cve-2021-36222.py | 46 +++++++++++++++++++++++++++++++++++
+ 3 files changed, 49 insertions(+), 1 deletion(-)
+ create mode 100644 src/tests/t_cve-2021-36222.py
+
+diff --git a/src/kdc/kdc_preauth_ec.c b/src/kdc/kdc_preauth_ec.c
+index 7e636b3f9..43a9902cc 100644
+--- a/src/kdc/kdc_preauth_ec.c
++++ b/src/kdc/kdc_preauth_ec.c
+@@ -87,7 +87,8 @@ ec_verify(krb5_context context, krb5_data *req_pkt, krb5_kdc_req *request,
+     }
+ 
+     /* Check for a configured FAST ec auth indicator. */
+-    realmstr = k5memdup0(realm.data, realm.length, &retval);
++    if (retval == 0)
++        realmstr = k5memdup0(realm.data, realm.length, &retval);
+     if (realmstr != NULL)
+         retval = profile_get_string(context->profile, KRB5_CONF_REALMS,
+                                     realmstr,
+diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in
+index fc6fcc0c3..1a1938306 100644
+--- a/src/tests/Makefile.in
++++ b/src/tests/Makefile.in
+@@ -166,6 +166,7 @@ check-pytests: unlockiter s4u2self
+ 	$(RUNPYTEST) $(srcdir)/t_cve-2012-1015.py $(PYTESTFLAGS)
+ 	$(RUNPYTEST) $(srcdir)/t_cve-2013-1416.py $(PYTESTFLAGS)
+ 	$(RUNPYTEST) $(srcdir)/t_cve-2013-1417.py $(PYTESTFLAGS)
++	$(RUNPYTEST) $(srcdir)/t_cve-2021-36222.py $(PYTESTFLAGS)
+ 	$(RM) au.log
+ 	$(RUNPYTEST) $(srcdir)/t_audit.py $(PYTESTFLAGS)
+ 	$(RUNPYTEST) $(srcdir)/jsonwalker.py -d $(srcdir)/au_dict.json \
+diff --git a/src/tests/t_cve-2021-36222.py b/src/tests/t_cve-2021-36222.py
+new file mode 100644
+index 000000000..57e04993b
+--- /dev/null
++++ b/src/tests/t_cve-2021-36222.py
+@@ -0,0 +1,46 @@
++import socket
++from k5test import *
++
++realm = K5Realm()
++
++# CVE-2021-36222 KDC null dereference on encrypted challenge preauth
++# without FAST
++
++s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
++a = (hostname, realm.portbase)
++
++m = ('6A81A0' '30819D'          # [APPLICATION 10] SEQUENCE
++     'A103' '0201' '05'         #  [1] pvno = 5
++     'A203' '0201' '0A'         #  [2] msg-type = 10
++     'A30E' '300C'              #  [3] padata = SEQUENCE OF
++     '300A'                     #   SEQUENCE
++     'A104' '0202' '008A'       #    [1] padata-type = PA-ENCRYPTED-CHALLENGE
++     'A202' '0400'              #    [2] padata-value = ""
++     'A48180' '307E'            #  [4] req-body = SEQUENCE
++     'A007' '0305' '0000000000' #   [0] kdc-options = 0
++     'A120' '301E'              #   [1] cname = SEQUENCE
++     'A003' '0201' '01'         #    [0] name-type = NT-PRINCIPAL
++     'A117' '3015'              #    [1] name-string = SEQUENCE-OF
++     '1B06' '6B7262746774'      #     krbtgt
++     '1B0B' '4B5242544553542E434F4D'
++                                #     KRBTEST.COM
++     'A20D' '1B0B' '4B5242544553542E434F4D'
++                                #   [2] realm = KRBTEST.COM
++     'A320' '301E'              #   [3] sname = SEQUENCE
++     'A003' '0201' '01'         #    [0] name-type = NT-PRINCIPAL
++     'A117' '3015'              #    [1] name-string = SEQUENCE-OF
++     '1B06' '6B7262746774'      #     krbtgt
++     '1B0B' '4B5242544553542E434F4D'
++                                #     KRBTEST.COM
++     'A511' '180F' '31393934303631303036303331375A'
++                                #   [5] till = 19940610060317Z
++     'A703' '0201' '00'         #   [7] nonce = 0
++     'A808' '3006'              #   [8] etype = SEQUENCE OF
++     '020112' '020111')         #    aes256-cts aes128-cts
++
++s.sendto(bytes.fromhex(m), a)
++
++# Make sure kinit still works.
++realm.kinit(realm.user_princ, password('user'))
++
++success('CVE-2021-36222 regression test')
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/CVE-2021-37750.patch b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/CVE-2021-37750.patch
new file mode 100644
index 0000000..c67bca3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5/CVE-2021-37750.patch
@@ -0,0 +1,53 @@
+From b3999be7ab59a5af4b2f1042ce0d6b03ecb17d4e Mon Sep 17 00:00:00 2001
+From: Greg Hudson <ghudson@mit.edu>
+Date: Tue, 3 Aug 2021 01:15:27 -0400
+Subject: [PATCH] Fix KDC null deref on TGS inner body null server
+
+After the KDC decodes a FAST inner body, it does not check for a null
+server.  Prior to commit 39548a5b17bbda9eeb63625a201cfd19b9de1c5b this
+would typically result in an error from krb5_unparse_name(), but with
+the addition of get_local_tgt() it results in a null dereference.  Add
+a null check.
+
+Reported by Joseph Sutton of Catalyst.
+
+CVE-2021-37750:
+
+In MIT krb5 releases 1.14 and later, an authenticated attacker can
+cause a null dereference in the KDC by sending a FAST TGS request with
+no server field.
+
+ticket: 9008 (new)
+tags: pullup
+target_version: 1.19-next
+target_version: 1.18-next
+
+CVE: CVE-2021-37750
+
+Upstream-Status: Backport
+[https://github.com/krb5/krb5/commit/d775c95af7606a51bf79547a94fa52ddd1cb7f49]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ src/kdc/do_tgs_req.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/kdc/do_tgs_req.c b/src/kdc/do_tgs_req.c
+index 587342a..622b48f 100644
+--- a/src/kdc/do_tgs_req.c
++++ b/src/kdc/do_tgs_req.c
+@@ -201,6 +201,11 @@ process_tgs_req(krb5_kdc_req *request, krb5_data *pkt,
+         status = "FIND_FAST";
+         goto cleanup;
+     }
++    if (sprinc == NULL) {
++        status = "NULL_SERVER";
++        errcode = KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN;
++        goto cleanup;
++    }
+ 
+     errcode = get_local_tgt(kdc_context, &sprinc->realm, header_server,
+                             &local_tgt, &local_tgt_storage);
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.2.bb
index 6c4b457..6e0b2fd 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.2.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.2.bb
@@ -30,6 +30,8 @@
            file://etc/default/krb5-admin-server \
            file://krb5-kdc.service \
            file://krb5-admin-server.service \
+           file://CVE-2021-36222.patch;striplevel=2 \
+           file://CVE-2021-37750.patch;striplevel=2 \
 "
 SRC_URI[md5sum] = "aa4337fffa3b61f22dbd0167f708818f"
 SRC_URI[sha256sum] = "1a4bba94df92f6d39a197a10687653e8bfbc9a2076e129f6eb92766974f86134"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.30.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.30.2.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.30.0.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.30.2.bb
index 61fe0ee..c337abd 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.30.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.30.2.bb
@@ -14,7 +14,7 @@
 
 SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz"
 
-SRC_URI[sha256sum] = "c039cdb5d3522b45a50d2287ab6311cdc9f99d46a719a1ea4beb7591787b8a1b"
+SRC_URI[sha256sum] = "be01ece0ea2c2194cbea5744bf5aaf06c04ba5fb7ec7887a13116c76d114fedd"
 
 PACKAGECONFIG ??= "udev mbim"
 PACKAGECONFIG[udev] = ",--without-udev,libgudev"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.2.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.1.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.2.bb
index 8601a2c..a5fcb8d 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.2.bb
@@ -6,7 +6,7 @@
 DEPENDS = "zlib"
 
 S = "${WORKDIR}/git"
-SRCREV = "8a580b59b23d204ca72028370e97a8f6aa0c9202"
+SRCREV = "8d605f0649ed1ab6d27a443c7688598ea21fdb75"
 SRC_URI = "git://github.com/warmcat/libwebsockets.git;protocol=https;branch=v4.2-stable"
 
 UPSTREAM_CHECK_URI = "https://github.com/warmcat/${BPN}/releases"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
index 61ea68a..270df6f 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
@@ -4,10 +4,10 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=db174eaf7b55a34a7c89551197f66e94"
 DEPENDS = "zeromq"
 
-SRCREV = "76bf169fd67b8e99c1b0e6490029d9cd5ef97666"
-PV = "4.7.1"
+SRCREV = "267d300d1c99381a0fbc7e060ae2899e51f5e425"
+PV = "4.8.0"
 
-SRC_URI = "git://github.com/zeromq/cppzmq.git;branch=bugfix-4-7-1"
+SRC_URI = "git://github.com/zeromq/cppzmq.git;branch=master"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
index c36feb3..efa7b7a 100644
--- a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
+++ b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
@@ -278,6 +278,7 @@
     capnproto-compiler \
     mpich \
     msgpack-c \
+    msgpack-cpp \
     mercurial \
     nodejs \
     openocd \
@@ -305,10 +306,10 @@
     json-schema-validator \
     poke \
 "
-RDEPENDS:packagegroup-meta-oe-devtools:append:x86 = " cpuid msr-tools pmtools"
-RDEPENDS:packagegroup-meta-oe-devtools:append:x86-64 = " cpuid msr-tools pcimem pmtools"
+RDEPENDS:packagegroup-meta-oe-devtools:append:x86 = " cpuid msr-tools pahole pmtools"
+RDEPENDS:packagegroup-meta-oe-devtools:append:x86-64 = " cpuid msr-tools pahole pcimem pmtools"
 RDEPENDS:packagegroup-meta-oe-devtools:append:arm = " pcimem"
-RDEPENDS:packagegroup-meta-oe-devtools:append:aarch64 = " pcimem"
+RDEPENDS:packagegroup-meta-oe-devtools:append:aarch64 = " pahole pcimem"
 RDEPENDS:packagegroup-meta-oe-devtools:append:libc-musl = " musl-nscd"
 
 RDEPENDS:packagegroup-meta-oe-devtools:remove:arm = "concurrencykit"
diff --git a/meta-openembedded/meta-oe/recipes-core/toybox/toybox-inittab_0.8.2.bb b/meta-openembedded/meta-oe/recipes-core/toybox/toybox-inittab_0.8.2.bb
index b91a1d8..603f365 100644
--- a/meta-openembedded/meta-oe/recipes-core/toybox/toybox-inittab_0.8.2.bb
+++ b/meta-openembedded/meta-oe/recipes-core/toybox/toybox-inittab_0.8.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Toybox Inittab Configuration"
-LICENSE = "BSD-0-Clause"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD-0-Clause;md5=81eeb0083e31f11ab1e33ded846d521c"
+LICENSE = "0BSD"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/0BSD;md5=f667a3c3830a55a17ec3067709f4526c"
 
 # Unpack to ${S}/orig
 #
diff --git a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.6.bb b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.6.bb
index 50ffce2..806a05e 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.6.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.6.bb
@@ -50,7 +50,7 @@
 PACKAGECONFIG[cryptsetup-reencrypt] = "--enable-cryptsetup-reencrypt,--disable-cryptsetup-reencrypt"
 PACKAGECONFIG[integritysetup] = "--enable-integritysetup,--disable-integritysetup"
 PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux"
-PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,,udev"
+PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,,udev lvm2-udevrules"
 PACKAGECONFIG[kernel_crypto] = "--enable-kernel_crypto,--disable-kernel_crypto"
 # gcrypt-pkbdf2 requries --with-crypto_backend=gcrypt or the flag isn't
 # recognized.
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-configure.in-bypass-autoconf-2.69-version-check.patch b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-configure.in-bypass-autoconf-2.69-version-check.patch
index 45f283a..db9769f 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-configure.in-bypass-autoconf-2.69-version-check.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-configure.in-bypass-autoconf-2.69-version-check.patch
@@ -1,4 +1,4 @@
-From 7177d8334a3c28ab0ec5c90e0656f43414929659 Mon Sep 17 00:00:00 2001
+From eba2c940afcd83521f591ccf6b49eca06908ea8e Mon Sep 17 00:00:00 2001
 From: Yi Fan Yu <yifan.yu@windriver.com>
 Date: Fri, 5 Feb 2021 17:15:42 -0500
 Subject: [PATCH] configure.in: bypass autoconf 2.69 version check
@@ -12,11 +12,13 @@
  configure.in | 4 ----
  1 file changed, 4 deletions(-)
 
+diff --git a/configure.in b/configure.in
+index fb14dcc..a2b4a4f 100644
 --- a/configure.in
 +++ b/configure.in
-@@ -19,10 +19,6 @@ m4_pattern_forbid(^PGAC_)dnl to catch un
+@@ -19,10 +19,6 @@ m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
  
- AC_INIT([PostgreSQL], [13.3], [pgsql-bugs@lists.postgresql.org], [], [https://www.postgresql.org/])
+ AC_INIT([PostgreSQL], [13.4], [pgsql-bugs@lists.postgresql.org], [], [https://www.postgresql.org/])
  
 -m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required.
 -Untested combinations of 'autoconf' and PostgreSQL versions are not
@@ -25,3 +27,6 @@
  AC_COPYRIGHT([Copyright (c) 1996-2020, PostgreSQL Global Development Group])
  AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c])
  AC_CONFIG_AUX_DIR(config)
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_13.3.bb b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_13.4.bb
similarity index 78%
rename from meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_13.3.bb
rename to meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_13.4.bb
index 862dd61..f63d23d 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_13.3.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_13.4.bb
@@ -9,4 +9,4 @@
    file://0001-configure.in-bypass-autoconf-2.69-version-check.patch \
 "
 
-SRC_URI[sha256sum] = "3cd9454fa8c7a6255b6743b767700925ead1b9ab0d7a0f9dcb1151010f8eb4a1"
+SRC_URI[sha256sum] = "ea93e10390245f1ce461a54eb5f99a48d8cabd3a08ce4d652ec2169a357bc0cd"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
index cabaf0e..1195b7d 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
@@ -19,6 +19,7 @@
 SRCREV_libselinux = "07e9e1339ad1ba608acfba9dce2d0f474b252feb"
 SRCREV_build = "16e987def3d7d8f7d30805eb95cef69e52a87dbc"
 
+SRCREV_FORMAT = "core_extras_libhardware_libselinux_build"
 SRC_URI = " \
     git://${ANDROID_MIRROR}/platform/system/core;name=core;protocol=https;nobranch=1;destsuffix=git/system/core \
     git://${ANDROID_MIRROR}/platform/system/extras;name=extras;protocol=https;nobranch=1;destsuffix=git/system/extras \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/cjson/cjson_1.7.14.bb b/meta-openembedded/meta-oe/recipes-devtools/cjson/cjson_1.7.15.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-devtools/cjson/cjson_1.7.14.bb
rename to meta-openembedded/meta-oe/recipes-devtools/cjson/cjson_1.7.15.bb
index 0e33275..1a4e53d 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/cjson/cjson_1.7.14.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/cjson/cjson_1.7.15.bb
@@ -6,7 +6,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=218947f77e8cb8e2fa02918dc41c50d0"
 
 SRC_URI = "git://github.com/DaveGamble/cJSON.git"
-SRCREV = "d2735278ed1c2e4556f53a7a782063b31331dbf7"
+SRCREV = "d348621ca93571343a56862df7de4ff3bc9b5667"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210815.0.bb b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210905.0.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210815.0.bb
rename to meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210905.0.bb
index 1d8a7ec..3289436 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210815.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210905.0.bb
@@ -14,7 +14,7 @@
 
 inherit autotools-brokensep pkgconfig manpages
 
-SRCREV = "24f852441bb12e2cfe4f6066bf85827b934e1469"
+SRCREV = "ca81123303640582358ce7b8a4e466615950a1f7"
 SRC_URI = "git://github.com/universal-ctags/ctags"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb b/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb
index 8835f32..60ca2ab 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb
@@ -4,8 +4,8 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "git://github.com/ubinux/dnf-plugin-tui.git;branch=master "
-SRCREV = "6d3fab9b9559b6a483fe668e39c29126cdbb58d8"
-PV = "1.2"
+SRCREV = "b0d80b7129f1d84cc563a4098d869e7420bcf4bc"
+PV = "1.3"
 
 SRC_URI:append:class-target = " file://oe-remote.repo.sample"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2020-15945.patch b/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2020-15945.patch
deleted file mode 100644
index 89ce491..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2020-15945.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-From d8d344365945a534f700c82c5dd26f704f89fef3 Mon Sep 17 00:00:00 2001
-From: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
-Date: Wed, 5 Aug 2020 16:59:58 +0800
-Subject: [PATCH] Fixed bug: invalid 'oldpc' when returning to a function
-
-The field 'L->oldpc' is not always updated when control returns to a
-function; an invalid value can seg. fault when computing 'changedline'.
-(One example is an error in a finalizer; control can return to
-'luaV_execute' without executing 'luaD_poscall'.) Instead of trying to
-fix all possible corner cases, it seems safer to be resilient to invalid
-values for 'oldpc'. Valid but wrong values at most cause an extra call
-to a line hook.
-
-CVE: CVE-2020-15945
-
-[Adjust the code to be applicable to the tree]
-
-Upstream-Status: Backport [https://github.com/lua/lua/commit/a2195644d89812e5b157ce7bac35543e06db05e3]
-
-Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
-Signed-off-by: Joe Slater <joe.slater@@windriver.com>
-
----
- src/ldebug.c | 30 +++++++++++++++---------------
- src/ldebug.h |  4 ++++
- src/ldo.c    |  2 +-
- src/lstate.c |  1 +
- src/lstate.h |  2 +-
- 5 files changed, 22 insertions(+), 17 deletions(-)
-
-diff --git a/src/ldebug.c b/src/ldebug.c
-index 239affb..832b16c 100644
---- a/src/ldebug.c
-+++ b/src/ldebug.c
-@@ -34,9 +34,8 @@
- #define noLuaClosure(f)		((f) == NULL || (f)->c.tt == LUA_TCCL)
- 
- 
--/* Active Lua function (given call info) */
--#define ci_func(ci)		(clLvalue((ci)->func))
--
-+/* inverse of 'pcRel' */
-+#define invpcRel(pc, p)                ((p)->code + (pc) + 1)
- 
- static const char *funcnamefromcode (lua_State *L, CallInfo *ci,
-                                     const char **name);
-@@ -71,20 +70,18 @@ static void swapextra (lua_State *L) {
- 
- /*
- ** This function can be called asynchronously (e.g. during a signal).
--** Fields 'oldpc', 'basehookcount', and 'hookcount' (set by
--** 'resethookcount') are for debug only, and it is no problem if they
--** get arbitrary values (causes at most one wrong hook call). 'hookmask'
--** is an atomic value. We assume that pointers are atomic too (e.g., gcc
--** ensures that for all platforms where it runs). Moreover, 'hook' is
--** always checked before being called (see 'luaD_hook').
-+** Fields 'basehookcount' and 'hookcount' (set by 'resethookcount')
-+** are for debug only, and it is no problem if they get arbitrary
-+** values (causes at most one wrong hook call). 'hookmask' is an atomic
-+** value. We assume that pointers are atomic too (e.g., gcc ensures that
-+** for all platforms where it runs). Moreover, 'hook' is always checked
-+** before being called (see 'luaD_hook').
- */
- LUA_API void lua_sethook (lua_State *L, lua_Hook func, int mask, int count) {
-   if (func == NULL || mask == 0) {  /* turn off hooks? */
-     mask = 0;
-     func = NULL;
-   }
--  if (isLua(L->ci))
--    L->oldpc = L->ci->u.l.savedpc;
-   L->hook = func;
-   L->basehookcount = count;
-   resethookcount(L);
-@@ -665,7 +662,10 @@ l_noret luaG_runerror (lua_State *L, const char *fmt, ...) {
- void luaG_traceexec (lua_State *L) {
-   CallInfo *ci = L->ci;
-   lu_byte mask = L->hookmask;
-+  const Proto *p = ci_func(ci)->p;
-   int counthook = (--L->hookcount == 0 && (mask & LUA_MASKCOUNT));
-+  /* 'L->oldpc' may be invalid; reset it in this case */
-+  int oldpc = (L->oldpc < p->sizecode) ? L->oldpc : 0;
-   if (counthook)
-     resethookcount(L);  /* reset count */
-   else if (!(mask & LUA_MASKLINE))
-@@ -677,15 +677,15 @@ void luaG_traceexec (lua_State *L) {
-   if (counthook)
-     luaD_hook(L, LUA_HOOKCOUNT, -1);  /* call count hook */
-   if (mask & LUA_MASKLINE) {
--    Proto *p = ci_func(ci)->p;
-     int npc = pcRel(ci->u.l.savedpc, p);
-     int newline = getfuncline(p, npc);
-     if (npc == 0 ||  /* call linehook when enter a new function, */
--        ci->u.l.savedpc <= L->oldpc ||  /* when jump back (loop), or when */
--        newline != getfuncline(p, pcRel(L->oldpc, p)))  /* enter a new line */
-+        ci->u.l.savedpc <= invpcRel(oldpc, p) ||  /* when jump back (loop), or when */
-+        newline != getfuncline(p, oldpc))  /* enter a new line */
-       luaD_hook(L, LUA_HOOKLINE, newline);  /* call line hook */
-+
-+    L->oldpc = npc;  /* 'pc' of last call to line hook */
-   }
--  L->oldpc = ci->u.l.savedpc;
-   if (L->status == LUA_YIELD) {  /* did hook yield? */
-     if (counthook)
-       L->hookcount = 1;  /* undo decrement to zero */
-diff --git a/src/ldebug.h b/src/ldebug.h
-index 0e31546..c224cc4 100644
---- a/src/ldebug.h
-+++ b/src/ldebug.h
-@@ -13,6 +13,10 @@
- 
- #define pcRel(pc, p)	(cast(int, (pc) - (p)->code) - 1)
- 
-+/* Active Lua function (given call info) */
-+#define ci_func(ci)            (clLvalue((ci)->func))
-+
-+
- #define getfuncline(f,pc)	(((f)->lineinfo) ? (f)->lineinfo[pc] : -1)
- 
- #define resethookcount(L)	(L->hookcount = L->basehookcount)
-diff --git a/src/ldo.c b/src/ldo.c
-index 90b695f..f66ac1a 100644
---- a/src/ldo.c
-+++ b/src/ldo.c
-@@ -382,7 +382,7 @@ int luaD_poscall (lua_State *L, CallInfo *ci, StkId firstResult, int nres) {
-       luaD_hook(L, LUA_HOOKRET, -1);
-       firstResult = restorestack(L, fr);
-     }
--    L->oldpc = ci->previous->u.l.savedpc;  /* 'oldpc' for caller function */
-+    L->oldpc = pcRel(ci->u.l.savedpc, ci_func(ci)->p);  /* 'oldpc' for caller function */
-   }
-   res = ci->func;  /* res == final position of 1st result */
-   L->ci = ci->previous;  /* back to caller */
-diff --git a/src/lstate.c b/src/lstate.c
-index 9194ac3..3573e36 100644
---- a/src/lstate.c
-+++ b/src/lstate.c
-@@ -236,6 +236,7 @@ static void preinit_thread (lua_State *L, global_State *g) {
-   L->nny = 1;
-   L->status = LUA_OK;
-   L->errfunc = 0;
-+  L->oldpc = 0;
- }
- 
- 
-diff --git a/src/lstate.h b/src/lstate.h
-index a469466..d75eadf 100644
---- a/src/lstate.h
-+++ b/src/lstate.h
-@@ -164,7 +164,6 @@ struct lua_State {
-   StkId top;  /* first free slot in the stack */
-   global_State *l_G;
-   CallInfo *ci;  /* call info for current function */
--  const Instruction *oldpc;  /* last pc traced */
-   StkId stack_last;  /* last free slot in the stack */
-   StkId stack;  /* stack base */
-   UpVal *openupval;  /* list of open upvalues in this stack */
-@@ -174,6 +173,7 @@ struct lua_State {
-   CallInfo base_ci;  /* CallInfo for first level (C calling Lua) */
-   volatile lua_Hook hook;
-   ptrdiff_t errfunc;  /* current error handling function (stack index) */
-+  int oldpc;  /* last pc traced */
-   int stacksize;
-   int basehookcount;
-   int hookcount;
--- 
-2.13.3
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.6.bb b/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.6.bb
index f830e09..af3054d 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.6.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.6.bb
@@ -8,7 +8,6 @@
            file://lua.pc.in \
            file://0001-Allow-building-lua-without-readline-on-Linux.patch \
            file://CVE-2020-15888.patch \
-           file://CVE-2020-15945.patch \
            file://0001-Fixed-bug-barriers-cannot-be-active-during-sweep.patch \
            "
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb b/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_4.0.0.bb
similarity index 83%
rename from meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_4.0.0.bb
index 5224f32..1bb371a 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_4.0.0.bb
@@ -9,10 +9,9 @@
 
 PV .= "+git${SRCPV}"
 
-SRC_URI = "git://github.com/msgpack/msgpack-c \
+SRC_URI = "git://github.com/msgpack/msgpack-c;branch=c_master \
            "
-# cpp-3.2.1
-SRCREV = "8085ab8721090a447cf98bb802d1406ad7afe420"
+SRCREV = "a9a48cea3a78ba661ee8096b5dab456361b0ff23"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb b/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-cpp_4.0.2.bb
similarity index 80%
copy from meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb
copy to meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-cpp_4.0.2.bb
index 5224f32..f66a00b 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-cpp_4.0.2.bb
@@ -9,10 +9,11 @@
 
 PV .= "+git${SRCPV}"
 
-SRC_URI = "git://github.com/msgpack/msgpack-c \
+SRC_URI = "git://github.com/msgpack/msgpack-c;branch=cpp_master \
            "
-# cpp-3.2.1
-SRCREV = "8085ab8721090a447cf98bb802d1406ad7afe420"
+SRCREV = "3bdbf0d2ee75d46d71afa691a594777d89a22cf7"
+
+DEPENDS += "boost"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.9.1.bb b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.2.bb
similarity index 81%
rename from meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.9.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.2.bb
index c0a1560..d201577 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.9.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.2.bb
@@ -2,12 +2,12 @@
 HOMEPAGE = "https://nlohmann.github.io/json/"
 SECTION = "libs"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=dd0607f896f392c8b7d0290a676efc24"
+LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=441793d25a658d58d79a1f87516a6ad1"
 
 SRC_URI = "git://github.com/nlohmann/json.git;nobranch=1 \
            "
 
-SRCREV = "db78ac1d7716f56fc9f1b030b715f872f93964e4"
+SRCREV = "626e7d61e44dee32887126c8f437dd077dec09cf"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/pahole/files/0001-CMakeList.txt-make-python-optional.patch b/meta-openembedded/meta-oe/recipes-devtools/pahole/files/0001-CMakeList.txt-make-python-optional.patch
new file mode 100644
index 0000000..d64cba1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/pahole/files/0001-CMakeList.txt-make-python-optional.patch
@@ -0,0 +1,44 @@
+From f6ca8c930d0fbd2491b3cc77169e32806a14e5e9 Mon Sep 17 00:00:00 2001
+From: Matteo Croce <mcroce@microsoft.com>
+Date: Mon, 30 Aug 2021 16:25:56 +0200
+Subject: [PATCH] CMakeList.txt: make python optional
+
+Upstream-Status: Backport [https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?id=88431099950ab3e8bc1645353508d7978a6cad35]
+
+ostra-cg, which requires python, is installed in the destination dir.
+Make it optional for embedded distributions which doesn't have the
+python interpreter available.
+
+Signed-off-by: Matteo Croce <mcroce@microsoft.com>
+---
+ CMakeLists.txt | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4140574..8523bce 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -61,6 +61,7 @@ find_package(DWARF REQUIRED)
+ find_package(ZLIB REQUIRED)
+ find_package(argp REQUIRED)
+ find_package(obstack REQUIRED)
++find_package(Python3 QUIET)
+ 
+ # make sure git submodule(s) are checked out
+ find_package(Git QUIET)
+@@ -185,8 +186,10 @@ install(FILES dwarves.h dwarves_emit.h dwarves_reorganize.h
+ 	      elfcreator.h elf_symtab.h hash.h libctf.h
+ 	DESTINATION ${CMAKE_INSTALL_PREFIX}/include/dwarves/)
+ install(FILES man-pages/pahole.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1/)
+-install(PROGRAMS ostra/ostra-cg DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
++if(Python3_FOUND)
++	install(PROGRAMS ostra/ostra-cg DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
++	install(FILES ostra/python/ostra.py DESTINATION ${CMAKE_INSTALL_PREFIX}/share/dwarves/runtime/python)
++endif()
+ install(PROGRAMS btfdiff fullcircle DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
+-install(FILES ostra/python/ostra.py DESTINATION ${CMAKE_INSTALL_PREFIX}/share/dwarves/runtime/python)
+ install(FILES lib/Makefile lib/ctracer_relay.c lib/ctracer_relay.h lib/linux.blacklist.cu
+ 	DESTINATION ${CMAKE_INSTALL_PREFIX}/share/dwarves/runtime)
+-- 
+2.31.1
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.22.bb b/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.22.bb
new file mode 100644
index 0000000..db7d88c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.22.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Shows and manipulates data structure layout"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "elfutils zlib libbpf"
+
+COMPATIBLE_HOST = "(x86_64|i.86|aarch64).*-linux"
+
+SRCREV = "f02af2553ea58ae1186226af0d0ec835a248358f"
+SRC_URI = "git://git.kernel.org/pub/scm/devel/pahole/pahole.git \
+           file://0001-CMakeList.txt-make-python-optional.patch"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+PACKAGECONFIG[python3] = ",,python3-core,python3-core"
+
+EXTRA_OECMAKE = "-D__LIB=lib -DCMAKE_BUILD_TYPE=Release -DLIBBPF_EMBEDDED=OFF"
+
+FILES:${PN} =  "${bindir}/pahole \
+		${libdir}/libdwarves.so* \
+		${libdir}/libdwarves_reorganize.so*"
+
+PACKAGES += "${PN}-extra"
+FILES:${PN}-extra = "${datadir} ${bindir} ${libdir}/libdwarves_emit.so*"
+RDEPENDS:${PN}-extra += "bash python3-core"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb b/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.19.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb
rename to meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.19.bb
index a82f10b..df88afa 100644
--- a/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.19.bb
@@ -9,8 +9,7 @@
 DEPENDS = "liblockfile"
 
 SRC_URI = "${DEBIAN_MIRROR}/main/l/${BPN}/${BPN}_${PV}.tar.gz"
-SRC_URI[md5sum] = "4eb83bdf88016db836b7cc09591fb0f3"
-SRC_URI[sha256sum] = "a42995a4b97e6188efc90fcc1a761163c4b2cff5c81b936f85c84301ddb05ce6"
+SRC_URI[sha256sum] = "2c5704b01c8f474f82921780e4592a927b2bf6a6d7616354a6c5d7cd5664857e"
 
 do_compile() {
     oe_runmake CFLAGS=' -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables'
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2021-3560.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2021-3560.patch
index daf0b1e..76308ff 100644
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2021-3560.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2021-3560.patch
@@ -5,6 +5,8 @@
 
 initial values returned if error caught
 
+CVE: CVE-2021-3560
+
 Upstream-Status: Backport [https://gitlab.freedesktop.org/polkit/polkit/-/commit/a04d13affe0fa53ff618e07aa8f57f4c0e3b9b81]
 
 Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.4.bb b/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.5.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.4.bb
rename to meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.5.bb
index 0db7124..58d759b 100644
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.4.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.5.bb
@@ -17,7 +17,7 @@
            file://GNU_SOURCE.patch \
            file://0006-Define-correct-gregs-for-RISCV32.patch \
            "
-SRC_URI[sha256sum] = "ba32c406a10fc2c09426e2be2787d74ff204eb3a2e496d87cff76a476b6ae16e"
+SRC_URI[sha256sum] = "4b9a75709a1b74b3785e20a6c158cab94cf52298aa381eea947a678a60d551ae"
 
 inherit autotools-brokensep update-rc.d systemd useradd
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
index 8d63a10..1a2d330 100644
--- a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
@@ -45,3 +45,8 @@
 ALTERNATIVE_LINK_NAME[candump] = "${bindir}/candump"
 ALTERNATIVE_LINK_NAME[cansend] = "${bindir}/cansend"
 ALTERNATIVE_LINK_NAME[cansequence] = "${bindir}/cansequence"
+
+# busybox ip fails to configure can interfaces, so we need iproute2 to do so.
+# See details in http://www.armadeus.com/wiki/index.php?title=CAN_bus_Linux_driver.
+RRECOMMENDS:${PN} += "iproute2"
+
diff --git a/meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.7.bb b/meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.8.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.7.bb
rename to meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.8.bb
index e96ef00..977c321 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.7.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.8.bb
@@ -11,7 +11,7 @@
     git://github.com/hughsie/libjcat.git \
     file://run-ptest \
 "
-SRCREV = "e5307885528cf07058be073d0621624749cc10df"
+SRCREV = "356cd2faf2d2197156b0dae7984482cf781d64db"
 S = "${WORKDIR}/git"
 
 inherit gobject-introspection gtk-doc meson ptest-gnome vala
diff --git a/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.1.bb b/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.2.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.1.bb
rename to meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.2.bb
index 72d3aba..cacb493 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.2.bb
@@ -6,7 +6,7 @@
     git://github.com/hughsie/libxmlb.git \
     file://run-ptest \
 "
-SRCREV = "98fc241305306de9468249301474820696acb4be"
+SRCREV = "994fd0ec3d28da82b5965949a9d925510f603562"
 S = "${WORKDIR}/git"
 
 inherit gobject-introspection gtk-doc meson ptest-gnome
diff --git a/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes/0001-build-use-autotools.patch b/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes/0001-build-use-autotools.patch
index 2577116..0c9fe62 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes/0001-build-use-autotools.patch
+++ b/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes/0001-build-use-autotools.patch
@@ -60,7 +60,7 @@
 +++ /dev/null
 @@ -1,66 +0,0 @@
 -TARGET = unclutter
--VERSION = 1.5
+-VERSION = 1.6
 -SDIR = src
 -IDIR = include
 -ODIR = obj
diff --git a/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes_1.5.bb b/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes_1.6.bb
similarity index 92%
rename from meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes_1.5.bb
rename to meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes_1.6.bb
index e56803e..8a6b6f8 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes_1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes_1.6.bb
@@ -7,7 +7,7 @@
 
 SRC_URI = "git://github.com/Airblader/unclutter-xfixes.git \
            file://0001-build-use-autotools.patch"
-SRCREV = "10fd337bb77e4e93c3380f630a0555372778a948"
+SRCREV = "160ae3760a51126eb225ce77d83e4706eccd4ed9"
 
 inherit autotools pkgconfig features_check
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_367.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_368.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_367.bb
rename to meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_368.bb
index ee25dc8..8f6a7ef 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_367.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_368.bb
@@ -8,7 +8,7 @@
            file://0001-Add-configure-time-check-for-setsid.patch \
           "
 
-SRC_URI[sha256sum] = "27f1a8b1c756e269fd5684e60802b545f0be9b36b8b5d6bdbc840c6b000dc51f"
+SRC_URI[sha256sum] = "2ff5169930b6b49ef0bafb5e1331c94f1a98c310442bba7798add821c76ae712"
 
 PACKAGECONFIG ?= ""
 PACKAGECONFIG[xft] = "--enable-freetype,--disable-freetype,libxft fontconfig freetype-native"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.16.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.17.bb
similarity index 77%
rename from meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.16.bb
rename to meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.17.bb
index fb24c63..d9d09a2 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.16.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.17.bb
@@ -15,5 +15,4 @@
 
 COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
 
-SRC_URI[md5sum] = "ecd9be89d853301167e3d564c49f7a8e"
-SRC_URI[sha256sum] = "304060806415579cdb5c1f71f1c54d11cacb431b5552b170decbc883ed43bf06"
+SRC_URI[sha256sum] = "499322e27a55c8183166bf2dd1e47d085eb834143e0d7036baba8427b90c156b"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/crash/crash/0001-printk-add-support-for-lockless-ringbuffer.patch b/meta-openembedded/meta-oe/recipes-kernel/crash/crash/0001-printk-add-support-for-lockless-ringbuffer.patch
deleted file mode 100644
index 1aaf1e6..0000000
--- a/meta-openembedded/meta-oe/recipes-kernel/crash/crash/0001-printk-add-support-for-lockless-ringbuffer.patch
+++ /dev/null
@@ -1,445 +0,0 @@
-From a5531b24750e7949c35640d996ea14c0587938bc Mon Sep 17 00:00:00 2001
-From: John Ogness <john.ogness@linutronix.de>
-Date: Fri, 20 Nov 2020 05:56:59 +0000
-Subject: [PATCH 1/2] printk: add support for lockless ringbuffer
-
-Linux 5.10 introduces a new lockless ringbuffer. The new ringbuffer
-is structured completely different to the previous iterations.
-Add support for dumping the ringbuffer with the "log" command.
-The new ringbuffer is detected based on the availability of
-the "prb" symbol.
-
-Upstream-Status: Backport [https://github.com/crash-utility/crash/commit/a5531b24750e7949c35640d996ea14c0587938bc]
-
-Signed-off-by: John Ogness <john.ogness@linutronix.de>
-Signed-off-by: Kazuhito Hagio <k-hagio-ab@nec.com>
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com> 
----
- Makefile  |   5 ++
- defs.h    |  30 +++++++
- kernel.c  |   7 +-
- printk.c  | 256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- symbols.c |  27 ++++++
- 5 files changed, 324 insertions(+), 1 deletion(-)
- create mode 100644 printk.c
-
-diff --git a/Makefile b/Makefile
-index d185719..f66eba7 100644
---- a/Makefile
-+++ b/Makefile
-@@ -61,6 +61,7 @@ VMWARE_HFILES=vmware_vmss.h
- 
- CFILES=main.c tools.c global_data.c memory.c filesys.c help.c task.c \
- 	kernel.c test.c gdb_interface.c configure.c net.c dev.c bpf.c \
-+	printk.c \
- 	alpha.c x86.c ppc.c ia64.c s390.c s390x.c s390dbf.c ppc64.c x86_64.c \
- 	arm.c arm64.c mips.c sparc64.c \
- 	extensions.c remote.c va_server.c va_server_v1.c symbols.c cmdline.c \
-@@ -80,6 +81,7 @@ SOURCE_FILES=${CFILES} ${GENERIC_HFILES} ${MCORE_HFILES} \
- 
- OBJECT_FILES=main.o tools.o global_data.o memory.o filesys.o help.o task.o \
- 	build_data.o kernel.o test.o gdb_interface.o net.o dev.o bpf.o \
-+	printk.o \
- 	alpha.o x86.o ppc.o ia64.o s390.o s390x.o s390dbf.o ppc64.o x86_64.o \
- 	arm.o arm64.o mips.o sparc64.o \
- 	extensions.o remote.o va_server.o va_server_v1.o symbols.o cmdline.o \
-@@ -363,6 +365,9 @@ task.o: ${GENERIC_HFILES} task.c
- kernel.o: ${GENERIC_HFILES} kernel.c
- 	${CC} -c ${CRASH_CFLAGS} kernel.c ${WARNING_OPTIONS} ${WARNING_ERROR}
- 
-+printk.o: ${GENERIC_HFILES} printk.c
-+	${CC} -c ${CRASH_CFLAGS} printk.c ${WARNING_OPTIONS} ${WARNING_ERROR}
-+
- gdb_interface.o: ${GENERIC_HFILES} gdb_interface.c
- 	${CC} -c ${CRASH_CFLAGS} gdb_interface.c ${WARNING_OPTIONS} ${WARNING_ERROR}
- 
-diff --git a/defs.h b/defs.h
-index 9594950..e1a18e9 100644
---- a/defs.h
-+++ b/defs.h
-@@ -2106,6 +2106,28 @@ struct offset_table {                    /* stash of commonly-used offsets */
- 	long irq_common_data_affinity;
- 	long irq_desc_irq_common_data;
- 	long uts_namespace_name;
-+	long printk_info_seq;
-+	long printk_info_ts_nsec;
-+	long printk_info_text_len;
-+	long printk_info_level;
-+	long printk_info_caller_id;
-+	long printk_info_dev_info;
-+	long dev_printk_info_subsystem;
-+	long dev_printk_info_device;
-+	long prb_desc_ring;
-+	long prb_text_data_ring;
-+	long prb_desc_ring_count_bits;
-+	long prb_desc_ring_descs;
-+	long prb_desc_ring_infos;
-+	long prb_desc_ring_head_id;
-+	long prb_desc_ring_tail_id;
-+	long prb_desc_state_var;
-+	long prb_desc_text_blk_lpos;
-+	long prb_data_blk_lpos_begin;
-+	long prb_data_blk_lpos_next;
-+	long prb_data_ring_size_bits;
-+	long prb_data_ring_data;
-+	long atomic_long_t_counter;
- };
- 
- struct size_table {         /* stash of commonly-used sizes */
-@@ -2265,6 +2287,9 @@ struct size_table {         /* stash of commonly-used sizes */
- 	long xa_node;
- 	long zram_table_entry;
- 	long irq_common_data;
-+	long printk_info;
-+	long printk_ringbuffer;
-+	long prb_desc;
- };
- 
- struct array_table {
-@@ -6696,6 +6721,11 @@ int vmware_guestdump_memory_dump(FILE *);
-  */
- int calc_kaslr_offset(ulong *, ulong *);
- 
-+/*
-+ * printk.c
-+ */
-+void dump_lockless_record_log(int);
-+
- /*
-  *  gnu_binutils.c
-  */
-diff --git a/kernel.c b/kernel.c
-index 9871637..e722ff9 100644
---- a/kernel.c
-+++ b/kernel.c
-@@ -5042,6 +5042,11 @@ dump_log(int msg_flags)
- 	struct syment *nsp;
- 	int log_wrap, loglevel, log_buf_len;
- 
-+	if (kernel_symbol_exists("prb")) {
-+		dump_lockless_record_log(msg_flags);
-+		return;
-+	}
-+
- 	if (kernel_symbol_exists("log_first_idx") && 
- 	    kernel_symbol_exists("log_next_idx")) {
- 		dump_variable_length_record_log(msg_flags);
-@@ -5289,7 +5294,7 @@ dump_log_entry(char *logptr, int msg_flags)
- }
- 
- /* 
-- *  Handle the new variable-length-record log_buf.
-+ *  Handle the variable-length-record log_buf.
-  */
- static void
- dump_variable_length_record_log(int msg_flags)
-diff --git a/printk.c b/printk.c
-new file mode 100644
-index 0000000..f6d54ce
---- /dev/null
-+++ b/printk.c
-@@ -0,0 +1,256 @@
-+#include "defs.h"
-+#include <ctype.h>
-+
-+#define DESC_SV_BITS		(sizeof(unsigned long) * 8)
-+#define DESC_COMMITTED_MASK	(1UL << (DESC_SV_BITS - 1))
-+#define DESC_REUSE_MASK		(1UL << (DESC_SV_BITS - 2))
-+#define DESC_FLAGS_MASK		(DESC_COMMITTED_MASK | DESC_REUSE_MASK)
-+#define DESC_ID_MASK		(~DESC_FLAGS_MASK)
-+
-+/* convenience struct for passing many values to helper functions */
-+struct prb_map {
-+	char *prb;
-+
-+	char *desc_ring;
-+	unsigned long desc_ring_count;
-+	char *descs;
-+	char *infos;
-+
-+	char *text_data_ring;
-+	unsigned long text_data_ring_size;
-+	char *text_data;
-+};
-+
-+static void
-+init_offsets(void)
-+{
-+	char *n;
-+
-+	n = "printk_info";
-+	STRUCT_SIZE_INIT(printk_info, n);
-+	MEMBER_OFFSET_INIT(printk_info_seq, n, "seq");
-+	MEMBER_OFFSET_INIT(printk_info_ts_nsec, n, "ts_nsec");
-+	MEMBER_OFFSET_INIT(printk_info_text_len, n, "text_len");
-+	MEMBER_OFFSET_INIT(printk_info_level, n, "level");
-+	MEMBER_OFFSET_INIT(printk_info_caller_id, n, "caller_id");
-+	MEMBER_OFFSET_INIT(printk_info_dev_info, n, "dev_info");
-+
-+	n = "dev_printk_info";
-+	MEMBER_OFFSET_INIT(dev_printk_info_subsystem, n, "subsystem");
-+	MEMBER_OFFSET_INIT(dev_printk_info_device, n, "device");
-+
-+	n = "printk_ringbuffer";
-+	STRUCT_SIZE_INIT(printk_ringbuffer, n);
-+	MEMBER_OFFSET_INIT(prb_desc_ring, n, "desc_ring");
-+	MEMBER_OFFSET_INIT(prb_text_data_ring, n, "text_data_ring");
-+
-+	n = "prb_desc_ring";
-+	MEMBER_OFFSET_INIT(prb_desc_ring_count_bits, n, "count_bits");
-+	MEMBER_OFFSET_INIT(prb_desc_ring_descs, n, "descs");
-+	MEMBER_OFFSET_INIT(prb_desc_ring_infos, n, "infos");
-+	MEMBER_OFFSET_INIT(prb_desc_ring_head_id, n, "head_id");
-+	MEMBER_OFFSET_INIT(prb_desc_ring_tail_id, n, "tail_id");
-+
-+	n = "prb_desc";
-+	STRUCT_SIZE_INIT(prb_desc, n);
-+	MEMBER_OFFSET_INIT(prb_desc_state_var, n, "state_var");
-+	MEMBER_OFFSET_INIT(prb_desc_text_blk_lpos, n, "text_blk_lpos");
-+
-+	n = "prb_data_blk_lpos";
-+	MEMBER_OFFSET_INIT(prb_data_blk_lpos_begin, n, "begin");
-+	MEMBER_OFFSET_INIT(prb_data_blk_lpos_next, n, "next");
-+
-+	n = "prb_data_ring";
-+	MEMBER_OFFSET_INIT(prb_data_ring_size_bits, n, "size_bits");
-+	MEMBER_OFFSET_INIT(prb_data_ring_data, n, "data");
-+
-+	n = "atomic_long_t";
-+	MEMBER_OFFSET_INIT(atomic_long_t_counter, n, "counter");
-+}
-+
-+static void
-+dump_record(struct prb_map *m, unsigned long id, int msg_flags)
-+{
-+	unsigned short text_len;
-+	unsigned long state_var;
-+	unsigned int caller_id;
-+	unsigned char level;
-+	unsigned long begin;
-+	unsigned long next;
-+	char buf[BUFSIZE];
-+	uint64_t ts_nsec;
-+	ulonglong nanos;
-+	ulonglong seq;
-+	int ilen = 0, i;
-+	char *desc, *info, *text, *p;
-+	ulong rem;
-+
-+	desc = m->descs + ((id % m->desc_ring_count) * SIZE(prb_desc));
-+
-+	/* skip non-committed record */
-+	state_var = ULONG(desc + OFFSET(prb_desc_state_var) +
-+			OFFSET(atomic_long_t_counter));
-+	if ((state_var & DESC_FLAGS_MASK) != DESC_COMMITTED_MASK)
-+		return;
-+
-+	info = m->infos + ((id % m->desc_ring_count) * SIZE(printk_info));
-+
-+	seq = ULONGLONG(info + OFFSET(printk_info_seq));
-+	caller_id = UINT(info + OFFSET(printk_info_caller_id));
-+	if (CRASHDEBUG(1))
-+		fprintf(fp, "seq: %llu caller_id: %x (%s: %u)\n", seq, caller_id,
-+			caller_id & 0x80000000 ? "cpu" : "pid", caller_id & ~0x80000000);
-+
-+	text_len = USHORT(info + OFFSET(printk_info_text_len));
-+
-+	begin = ULONG(desc + OFFSET(prb_desc_text_blk_lpos) +
-+		      OFFSET(prb_data_blk_lpos_begin)) %
-+			m->text_data_ring_size;
-+	next = ULONG(desc + OFFSET(prb_desc_text_blk_lpos) +
-+		     OFFSET(prb_data_blk_lpos_next)) %
-+			m->text_data_ring_size;
-+
-+	/* skip data-less text blocks */
-+	if (begin == next)
-+		goto out;
-+
-+	if ((msg_flags & SHOW_LOG_TEXT) == 0) {
-+		ts_nsec = ULONGLONG(info + OFFSET(printk_info_ts_nsec));
-+		nanos = (ulonglong)ts_nsec / (ulonglong)1000000000;
-+		rem = (ulonglong)ts_nsec % (ulonglong)1000000000;
-+		if (msg_flags & SHOW_LOG_CTIME) {
-+			time_t t = kt->boot_date.tv_sec + nanos;
-+			sprintf(buf, "[%s] ", ctime_tz(&t));
-+		} else
-+			sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000);
-+
-+		ilen += strlen(buf);
-+		fprintf(fp, "%s", buf);
-+	}
-+
-+	if (msg_flags & SHOW_LOG_LEVEL) {
-+		level = UCHAR(info + OFFSET(printk_info_level)) >> 5;
-+		sprintf(buf, "<%x>", level);
-+		ilen += strlen(buf);
-+		fprintf(fp, "%s", buf);
-+	}
-+
-+	/* handle wrapping data block */
-+	if (begin > next)
-+		begin = 0;
-+
-+	/* skip over descriptor ID */
-+	begin += sizeof(unsigned long);
-+
-+	/* handle truncated messages */
-+	if (next - begin < text_len)
-+		text_len = next - begin;
-+
-+	text = m->text_data + begin;
-+
-+	for (i = 0, p = text; i < text_len; i++, p++) {
-+		if (*p == '\n')
-+			fprintf(fp, "\n%s", space(ilen));
-+		else if (isprint(*p) || isspace(*p))
-+			fputc(*p, fp);
-+		else
-+			fputc('.', fp);
-+	}
-+
-+	if (msg_flags & SHOW_LOG_DICT) {
-+		text = info + OFFSET(printk_info_dev_info) +
-+				OFFSET(dev_printk_info_subsystem);
-+		if (strlen(text))
-+			fprintf(fp, "\n%sSUBSYSTEM=%s", space(ilen), text);
-+
-+		text = info + OFFSET(printk_info_dev_info) +
-+				OFFSET(dev_printk_info_device);
-+		if (strlen(text))
-+			fprintf(fp, "\n%sDEVICE=%s", space(ilen), text);
-+	}
-+out:
-+	fprintf(fp, "\n");
-+}
-+
-+/*
-+ *  Handle the lockless printk_ringbuffer.
-+ */
-+void
-+dump_lockless_record_log(int msg_flags)
-+{
-+	unsigned long head_id;
-+	unsigned long tail_id;
-+	unsigned long kaddr;
-+	unsigned long id;
-+	struct prb_map m;
-+
-+	if (INVALID_SIZE(printk_info))
-+		init_offsets();
-+
-+	/* setup printk_ringbuffer */
-+	get_symbol_data("prb", sizeof(char *), &kaddr);
-+	m.prb = GETBUF(SIZE(printk_ringbuffer));
-+	if (!readmem(kaddr, KVADDR, m.prb, SIZE(printk_ringbuffer),
-+		     "printk_ringbuffer contents", RETURN_ON_ERROR|QUIET)) {
-+		error(WARNING, "\ncannot read printk_ringbuffer contents\n");
-+		goto out_prb;
-+	}
-+
-+	/* setup descriptor ring */
-+	m.desc_ring = m.prb + OFFSET(prb_desc_ring);
-+	m.desc_ring_count = 1 << UINT(m.desc_ring + OFFSET(prb_desc_ring_count_bits));
-+
-+	kaddr = ULONG(m.desc_ring + OFFSET(prb_desc_ring_descs));
-+	m.descs = GETBUF(SIZE(prb_desc) * m.desc_ring_count);
-+	if (!readmem(kaddr, KVADDR, m.descs, SIZE(prb_desc) * m.desc_ring_count,
-+		     "prb_desc_ring contents", RETURN_ON_ERROR|QUIET)) {
-+		error(WARNING, "\ncannot read prb_desc_ring contents\n");
-+		goto out_descs;
-+	}
-+
-+	kaddr = ULONG(m.desc_ring + OFFSET(prb_desc_ring_infos));
-+	m.infos = GETBUF(SIZE(printk_info) * m.desc_ring_count);
-+	if (!readmem(kaddr, KVADDR, m.infos, SIZE(printk_info) * m.desc_ring_count,
-+		     "prb_info_ring contents", RETURN_ON_ERROR|QUIET)) {
-+		error(WARNING, "\ncannot read prb_info_ring contents\n");
-+		goto out_infos;
-+	}
-+
-+	/* setup text data ring */
-+	m.text_data_ring = m.prb + OFFSET(prb_text_data_ring);
-+	m.text_data_ring_size = 1 << UINT(m.text_data_ring + OFFSET(prb_data_ring_size_bits));
-+
-+	kaddr = ULONG(m.text_data_ring + OFFSET(prb_data_ring_data));
-+	m.text_data = GETBUF(m.text_data_ring_size);
-+	if (!readmem(kaddr, KVADDR, m.text_data, m.text_data_ring_size,
-+		     "prb_text_data_ring contents", RETURN_ON_ERROR|QUIET)) {
-+		error(WARNING, "\ncannot read prb_text_data_ring contents\n");
-+		goto out_text_data;
-+	}
-+
-+	/* ready to go */
-+
-+	tail_id = ULONG(m.desc_ring + OFFSET(prb_desc_ring_tail_id) +
-+			OFFSET(atomic_long_t_counter));
-+	head_id = ULONG(m.desc_ring + OFFSET(prb_desc_ring_head_id) +
-+			OFFSET(atomic_long_t_counter));
-+
-+	hq_open();
-+
-+	for (id = tail_id; id != head_id; id = (id + 1) & DESC_ID_MASK)
-+		dump_record(&m, id, msg_flags);
-+
-+	/* dump head record */
-+	dump_record(&m, id, msg_flags);
-+
-+	hq_close();
-+
-+out_text_data:
-+	FREEBUF(m.text_data);
-+out_infos:
-+	FREEBUF(m.infos);
-+out_descs:
-+	FREEBUF(m.descs);
-+out_prb:
-+	FREEBUF(m.prb);
-+}
-diff --git a/symbols.c b/symbols.c
-index b2f4eb5..a51078d 100644
---- a/symbols.c
-+++ b/symbols.c
-@@ -10426,6 +10426,30 @@ dump_offset_table(char *spec, ulong makestruct)
- 		OFFSET(log_level));
- 	fprintf(fp, "               log_flags_level: %ld\n",
- 		OFFSET(log_flags_level));
-+
-+	fprintf(fp, "               printk_info_seq: %ld\n", OFFSET(printk_info_seq));
-+	fprintf(fp, "           printk_info_ts_nseq: %ld\n", OFFSET(printk_info_ts_nsec));
-+	fprintf(fp, "          printk_info_text_len: %ld\n", OFFSET(printk_info_text_len));
-+	fprintf(fp, "             printk_info_level: %ld\n", OFFSET(printk_info_level));
-+	fprintf(fp, "         printk_info_caller_id: %ld\n", OFFSET(printk_info_caller_id));
-+	fprintf(fp, "          printk_info_dev_info: %ld\n", OFFSET(printk_info_dev_info));
-+	fprintf(fp, "     dev_printk_info_subsystem: %ld\n", OFFSET(dev_printk_info_subsystem));
-+	fprintf(fp, "        dev_printk_info_device: %ld\n", OFFSET(dev_printk_info_device));
-+	fprintf(fp, "                 prb_desc_ring: %ld\n", OFFSET(prb_desc_ring));
-+	fprintf(fp, "            prb_text_data_ring: %ld\n", OFFSET(prb_text_data_ring));
-+	fprintf(fp, "      prb_desc_ring_count_bits: %ld\n", OFFSET(prb_desc_ring_count_bits));
-+	fprintf(fp, "           prb_desc_ring_descs: %ld\n", OFFSET(prb_desc_ring_descs));
-+	fprintf(fp, "           prb_desc_ring_infos: %ld\n", OFFSET(prb_desc_ring_infos));
-+	fprintf(fp, "         prb_desc_ring_head_id: %ld\n", OFFSET(prb_desc_ring_head_id));
-+	fprintf(fp, "         prb_desc_ring_tail_id: %ld\n", OFFSET(prb_desc_ring_tail_id));
-+	fprintf(fp, "            prb_desc_state_var: %ld\n", OFFSET(prb_desc_state_var));
-+	fprintf(fp, "        prb_desc_text_blk_lpos: %ld\n", OFFSET(prb_desc_text_blk_lpos));
-+	fprintf(fp, "       prb_data_blk_lpos_begin: %ld\n", OFFSET(prb_data_blk_lpos_begin));
-+	fprintf(fp, "        prb_data_blk_lpos_next: %ld\n", OFFSET(prb_data_blk_lpos_next));
-+	fprintf(fp, "       prb_data_ring_size_bits: %ld\n", OFFSET(prb_data_ring_size_bits));
-+	fprintf(fp, "            prb_data_ring_data: %ld\n", OFFSET(prb_data_ring_data));
-+	fprintf(fp, "         atomit_long_t_counter: %ld\n", OFFSET(atomic_long_t_counter));
-+
- 	fprintf(fp, "          sched_rt_entity_my_q: %ld\n",
- 		OFFSET(sched_rt_entity_my_q));
- 	fprintf(fp, "             task_group_parent: %ld\n",
-@@ -10850,6 +10874,9 @@ dump_offset_table(char *spec, ulong makestruct)
- 		SIZE(xarray));
- 	fprintf(fp, "                       xa_node: %ld\n",
- 		SIZE(xa_node));
-+	fprintf(fp, "                   printk_info: %ld\n", SIZE(printk_info));
-+	fprintf(fp, "             printk_ringbuffer: %ld\n", SIZE(printk_ringbuffer));
-+	fprintf(fp, "                      prb_desc: %ld\n", SIZE(prb_desc));
- 
- 
-         fprintf(fp, "\n                   array_table:\n");
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-kernel/crash/crash/0002-printk-use-committed-finalized-state-values.patch b/meta-openembedded/meta-oe/recipes-kernel/crash/crash/0002-printk-use-committed-finalized-state-values.patch
deleted file mode 100644
index 5213195..0000000
--- a/meta-openembedded/meta-oe/recipes-kernel/crash/crash/0002-printk-use-committed-finalized-state-values.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From 71e159c64000467e94e08aefc144f5e1cdaa4aa0 Mon Sep 17 00:00:00 2001
-From: John Ogness <john.ogness@linutronix.de>
-Date: Wed, 25 Nov 2020 05:27:53 +0106
-Subject: [PATCH 2/2] printk: use committed/finalized state values
-
-An addendum to the previous crash commit a5531b24750e.
-The ringbuffer entries use 2 state values (committed and finalized)
-rather than a single flag to represent being available for reading.
-Copy the definitions and state lookup function directly from the
-kernel source and use the new states.
-
-Upstream-Status: Backport [https://github.com/crash-utility/crash/commit/71e159c64000467e94e08aefc144f5e1cdaa4aa0]
-
-Signed-off-by: John Ogness <john.ogness@linutronix.de>
-Signed-off-by: Nikolay Borisov <nborisov@suse.com>
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com> 
----
- printk.c | 48 +++++++++++++++++++++++++++++++++++++++++-------
- 1 file changed, 41 insertions(+), 7 deletions(-)
-
-diff --git a/printk.c b/printk.c
-index f6d54ce..8658016 100644
---- a/printk.c
-+++ b/printk.c
-@@ -1,12 +1,6 @@
- #include "defs.h"
- #include <ctype.h>
- 
--#define DESC_SV_BITS		(sizeof(unsigned long) * 8)
--#define DESC_COMMITTED_MASK	(1UL << (DESC_SV_BITS - 1))
--#define DESC_REUSE_MASK		(1UL << (DESC_SV_BITS - 2))
--#define DESC_FLAGS_MASK		(DESC_COMMITTED_MASK | DESC_REUSE_MASK)
--#define DESC_ID_MASK		(~DESC_FLAGS_MASK)
--
- /* convenience struct for passing many values to helper functions */
- struct prb_map {
- 	char *prb;
-@@ -21,6 +15,44 @@ struct prb_map {
- 	char *text_data;
- };
- 
-+/*
-+ * desc_state and DESC_* definitions taken from kernel source:
-+ *
-+ * kernel/printk/printk_ringbuffer.h
-+ */
-+
-+/* The possible responses of a descriptor state-query. */
-+enum desc_state {
-+	desc_miss	=  -1,	/* ID mismatch (pseudo state) */
-+	desc_reserved	= 0x0,	/* reserved, in use by writer */
-+	desc_committed	= 0x1,	/* committed by writer, could get reopened */
-+	desc_finalized	= 0x2,	/* committed, no further modification allowed */
-+	desc_reusable	= 0x3,	/* free, not yet used by any writer */
-+};
-+
-+#define DESC_SV_BITS		(sizeof(unsigned long) * 8)
-+#define DESC_FLAGS_SHIFT	(DESC_SV_BITS - 2)
-+#define DESC_FLAGS_MASK		(3UL << DESC_FLAGS_SHIFT)
-+#define DESC_STATE(sv)		(3UL & (sv >> DESC_FLAGS_SHIFT))
-+#define DESC_ID_MASK		(~DESC_FLAGS_MASK)
-+#define DESC_ID(sv)		((sv) & DESC_ID_MASK)
-+
-+/*
-+ * get_desc_state() taken from kernel source:
-+ *
-+ * kernel/printk/printk_ringbuffer.c
-+ */
-+
-+/* Query the state of a descriptor. */
-+static enum desc_state get_desc_state(unsigned long id,
-+				      unsigned long state_val)
-+{
-+	if (id != DESC_ID(state_val))
-+		return desc_miss;
-+
-+	return DESC_STATE(state_val);
-+}
-+
- static void
- init_offsets(void)
- {
-@@ -74,6 +106,7 @@ dump_record(struct prb_map *m, unsigned long id, int msg_flags)
- 	unsigned short text_len;
- 	unsigned long state_var;
- 	unsigned int caller_id;
-+	enum desc_state state;
- 	unsigned char level;
- 	unsigned long begin;
- 	unsigned long next;
-@@ -90,7 +123,8 @@ dump_record(struct prb_map *m, unsigned long id, int msg_flags)
- 	/* skip non-committed record */
- 	state_var = ULONG(desc + OFFSET(prb_desc_state_var) +
- 			OFFSET(atomic_long_t_counter));
--	if ((state_var & DESC_FLAGS_MASK) != DESC_COMMITTED_MASK)
-+	state = get_desc_state(id, state_var);
-+	if (state != desc_committed && state != desc_finalized)
- 		return;
- 
- 	info = m->infos + ((id % m->desc_ring_count) * SIZE(printk_info));
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-kernel/crash/crash/donnot-extract-gdb-during-do-compile.patch b/meta-openembedded/meta-oe/recipes-kernel/crash/crash/donnot-extract-gdb-during-do-compile.patch
index e254fe8..7133cf0 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/crash/crash/donnot-extract-gdb-during-do-compile.patch
+++ b/meta-openembedded/meta-oe/recipes-kernel/crash/crash/donnot-extract-gdb-during-do-compile.patch
@@ -9,7 +9,7 @@
 index bb0a34e..5eb7604 100644
 --- a/Makefile
 +++ b/Makefile
-@@ -226,7 +226,7 @@ all: make_configure
+@@ -228,7 +228,7 @@ all: make_configure
  #	@make --no-print-directory extensions
  
  gdb_merge: force
@@ -18,15 +18,16 @@
  	  make --no-print-directory gdb_unzip; fi
  	@echo "${LDFLAGS} -lz -ldl -rdynamic" > ${GDB}/gdb/mergelibs
  	@echo "../../${PROGRAM} ../../${PROGRAM}lib.a" > ${GDB}/gdb/mergeobj
-@@ -253,11 +253,6 @@ gdb_unzip:
- 	@rm -f gdb.files
- 	@for FILE in ${GDB_FILES} dummy; do\
- 	  echo $$FILE >> gdb.files; done
+@@ -255,12 +255,6 @@ gdb_unzip:
+	@rm -f gdb.files
+	@for FILE in ${GDB_FILES} dummy; do\
+	  echo $$FILE >> gdb.files; done
 -	@if [ ! -f ${GDB}.tar.gz ] && [ ! -f /usr/bin/wget ]; then \
 -	  echo /usr/bin/wget is required to download ${GDB}.tar.gz; echo; exit 1; fi
 -	@if [ ! -f ${GDB}.tar.gz ] && [ -f /usr/bin/wget ]; then \
--	  wget http://ftp.gnu.org/gnu/gdb/${GDB}.tar.gz; fi
--	@tar --exclude-from gdb.files -xvzmf ${GDB}.tar.gz
- 	@make --no-print-directory gdb_patch
- 
+-	  [ ! -t 2 ] && WGET_OPTS="--progress=dot:mega"; \
+-	  wget $$WGET_OPTS http://ftp.gnu.org/gnu/gdb/${GDB}.tar.gz; fi
+-	@tar --exclude-from gdb.files -xzmf ${GDB}.tar.gz
+	@make --no-print-directory gdb_patch
+
  gdb_patch:
diff --git a/meta-openembedded/meta-oe/recipes-kernel/crash/crash/remove-unrecognized-gcc-option-m32-for-mips.patch b/meta-openembedded/meta-oe/recipes-kernel/crash/crash/remove-unrecognized-gcc-option-m32-for-mips.patch
index 905b4c2..37d43b8 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/crash/crash/remove-unrecognized-gcc-option-m32-for-mips.patch
+++ b/meta-openembedded/meta-oe/recipes-kernel/crash/crash/remove-unrecognized-gcc-option-m32-for-mips.patch
@@ -13,16 +13,16 @@
 index cf1973b..71e97b3 100644
 --- a/configure.c
 +++ b/configure.c
-@@ -151,7 +151,7 @@ void add_extra_lib(char *);
+@@ -155,7 +155,7 @@ void add_extra_lib(char *);
  #define TARGET_CFLAGS_PPC64_ON_X86_64  "TARGET_CFLAGS="
  #define TARGET_CFLAGS_MIPS            "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
  #define TARGET_CFLAGS_MIPS_ON_X86     "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
 -#define TARGET_CFLAGS_MIPS_ON_X86_64  "TARGET_CFLAGS=-m32 -D_FILE_OFFSET_BITS=64"
 +#define TARGET_CFLAGS_MIPS_ON_X86_64  "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
+ #define TARGET_CFLAGS_MIPS64          "TARGET_CFLAGS="
  #define TARGET_CFLAGS_SPARC64         "TARGET_CFLAGS="
  
- #define GDB_TARGET_DEFAULT        "GDB_CONF_FLAGS="
-@@ -162,7 +162,7 @@ void add_extra_lib(char *);
+@@ -167,7 +167,7 @@ void add_extra_lib(char *);
  #define GDB_TARGET_ARM64_ON_X86_64  "GDB_CONF_FLAGS=--target=aarch64-elf-linux"   /* TBD */
  #define GDB_TARGET_PPC64_ON_X86_64  "GDB_CONF_FLAGS=--target=powerpc64le-unknown-linux-gnu"
  #define GDB_TARGET_MIPS_ON_X86     "GDB_CONF_FLAGS=--target=mipsel-elf-linux"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.9.bb b/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.3.0.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.9.bb
rename to meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.3.0.bb
index c2d83cb..4b228bb 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.9.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.3.0.bb
@@ -25,10 +25,8 @@
            file://remove-unrecognized-gcc-option-m32-for-mips.patch \
            file://0002-crash-fix-build-error-unknown-type-name-gdb_fpregset.patch \
            file://0003-crash-detect-the-sysroot-s-glibc-header-file.patch \
-           file://0001-printk-add-support-for-lockless-ringbuffer.patch \
-           file://0002-printk-use-committed-finalized-state-values.patch \
            "
-SRCREV = "a25aa4b649d339dd25c20d5413d81b851a77e0b2"
+SRCREV = "2a3e546942ab560f050ab77e8c7828b06513b3f0"
 
 SRC_URI[gdb.md5sum] = "a9836707337e5f7bf76a009a8904f470"
 SRC_URI[gdb.sha256sum] = "8070389a5dcc104eb0be483d582729f98ed4d761ad19cedd3f17b5d2502faa36"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.4.bb b/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.4.bb
deleted file mode 100644
index 27559ba..0000000
--- a/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.4.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "Library for BPF handling"
-DESCRIPTION = "Library for BPF handling"
-HOMEPAGE = "https://github.com/libbpf/libbpf"
-SECTION = "libs"
-LICENSE = "LGPLv2.1+"
-
-LIC_FILES_CHKSUM = "file://../LICENSE.LGPL-2.1;md5=b370887980db5dd40659b50909238dbd"
-
-DEPENDS = "zlib elfutils"
-
-do_compile[depends] += "virtual/kernel:do_shared_workdir"
-
-SRC_URI = "git://github.com/libbpf/libbpf.git;protocol=https"
-SRCREV = "db9614b6bd69746809d506c2786f914b0f812c37"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64).*-linux"
-
-S = "${WORKDIR}/git/src"
-
-EXTRA_OEMAKE += "DESTDIR=${D} LIBDIR=${libdir} INCLUDEDIR=${includedir}"
-
-inherit pkgconfig
-
-do_compile() {
-	if grep -q "CONFIG_BPF_SYSCALL=y" ${STAGING_KERNEL_BUILDDIR}/.config
-	then
-		oe_runmake
-	else
-		bbnote "BFP syscall is not enabled"
-	fi
-}
-
-do_install() {
-	if grep -q "CONFIG_BPF_SYSCALL=y" ${STAGING_KERNEL_BUILDDIR}/.config
-	then
-		oe_runmake install
-	else
-		bbnote "no files to install"
-	fi
-}
diff --git a/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.bb b/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.bb
new file mode 100644
index 0000000..7ce7234
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Library for BPF handling"
+DESCRIPTION = "Library for BPF handling"
+HOMEPAGE = "https://github.com/libbpf/libbpf"
+SECTION = "libs"
+LICENSE = "LGPLv2.1+"
+
+LIC_FILES_CHKSUM = "file://../LICENSE.LGPL-2.1;md5=b370887980db5dd40659b50909238dbd"
+
+DEPENDS = "zlib elfutils"
+
+SRC_URI = "git://github.com/libbpf/libbpf.git;protocol=https"
+SRCREV = "5579664205e42194e1921d69d0839f660c801a4d"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_HOST = "(x86_64|i.86|aarch64).*-linux"
+
+S = "${WORKDIR}/git/src"
+
+EXTRA_OEMAKE += "DESTDIR=${D} LIBDIR=${libdir} INCLUDEDIR=${includedir}"
+
+inherit pkgconfig
+
+do_compile() {
+	oe_runmake
+}
+
+do_install() {
+	oe_runmake install
+}
diff --git a/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.3.bb b/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.5.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.3.bb
rename to meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.5.bb
index 53d0183..8fe601a 100644
--- a/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.3.bb
+++ b/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.5.bb
@@ -8,8 +8,7 @@
 inherit autotools update-alternatives
 
 SRC_URI = "http://gondor.apana.org.au/~herbert/${BPN}/files/${BP}.tar.gz"
-SRC_URI[md5sum] = "c7016b513f701d88c70b3082eb183581"
-SRC_URI[sha256sum] = "62b9f1676ba6a7e8eaec541a39ea037b325253240d1f378c72360baa1cbcbc2a"
+SRC_URI[sha256sum] = "db778110891f7937985f29bf23410fe1c5d669502760f584e54e0e7b29e123bd"
 
 EXTRA_OECONF += "--bindir=${base_bindir}"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch b/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch
deleted file mode 100644
index 6496b92..0000000
--- a/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From f24f863f3a8ca86f44123a58613f62c3b511da1e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 19 Dec 2019 18:23:41 -0800
-Subject: [PATCH] cmake: Use GNUInstallDirs instead of hard-coded paths
-
-This ensures that it can be built on platforms where libdir is not
-/usr/lib e.g. ppc64
-
-Upstream-Status: Submitted [https://github.com/apache/avro/pull/749]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lang/c/CMakeLists.txt     |  2 +-
- lang/c/src/CMakeLists.txt | 16 +++++++++-------
- 2 files changed, 10 insertions(+), 8 deletions(-)
-
-diff --git a/lang/c/CMakeLists.txt b/lang/c/CMakeLists.txt
-index 11cbf018e..6c8d7aaf3 100644
---- a/lang/c/CMakeLists.txt
-+++ b/lang/c/CMakeLists.txt
-@@ -16,7 +16,7 @@
- # specific language governing permissions and limitations
- # under the License.
- #
--cmake_minimum_required(VERSION 2.4)
-+cmake_minimum_required(VERSION 3.1)
- project(AvroC)
- enable_testing()
- 
-diff --git a/lang/c/src/CMakeLists.txt b/lang/c/src/CMakeLists.txt
-index 6f5659750..c1761c8de 100644
---- a/lang/c/src/CMakeLists.txt
-+++ b/lang/c/src/CMakeLists.txt
-@@ -106,17 +106,19 @@ install(DIRECTORY
-         DESTINATION include
-         FILES_MATCHING PATTERN "*.h")
- 
-+include(GNUInstallDirs)
-+
- if (WIN32)
- install(TARGETS avro-static
--        RUNTIME DESTINATION bin
--        LIBRARY DESTINATION lib
--        ARCHIVE DESTINATION lib
-+	RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-+        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-        )
- else(WIN32)
- install(TARGETS avro-static avro-shared
--        RUNTIME DESTINATION bin
--        LIBRARY DESTINATION lib
--        ARCHIVE DESTINATION lib
-+	RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-+	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-        )
- endif(WIN32)
- 
-@@ -126,7 +128,7 @@ set(prefix ${CMAKE_INSTALL_PREFIX})
- set(VERSION ${AVRO_VERSION})
- configure_file(avro-c.pc.in avro-c.pc)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/avro-c.pc
--        DESTINATION lib/pkgconfig)
-+        DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
- 
- add_executable(avrocat avrocat.c)
- target_link_libraries(avrocat avro-static)
--- 
-2.24.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.9.2.bb b/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.10.2.bb
similarity index 66%
rename from meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.9.2.bb
rename to meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.10.2.bb
index 0642179..b86bfea 100644
--- a/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.9.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.10.2.bb
@@ -7,10 +7,9 @@
 
 DEPENDS = "jansson zlib xz"
 
-BRANCH = "branch-1.9"
-SRCREV = "bf20128ca6138a830b2ea13e0490f3df6b035639"
+BRANCH = "branch-1.10"
+SRCREV = "8111cdc35430ff68dcb644306362859de40999d9"
 SRC_URI = "git://github.com/apache/avro;branch=${BRANCH} \
-           file://0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch;patchdir=../../ \
           "
 
 S = "${WORKDIR}/git/lang/c"
diff --git a/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.10.bb b/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.11.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.10.bb
rename to meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.11.bb
diff --git a/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.10.bb b/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.11.bb
similarity index 72%
rename from meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.10.bb
rename to meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.11.bb
index 8635371..5a1e4aa 100644
--- a/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.11.bb
@@ -7,7 +7,6 @@
 DEPENDS = "libusb1"
 
 SRC_URI = "http://dfu-util.sourceforge.net/releases/${BP}.tar.gz"
-SRC_URI[md5sum] = "8cf55663703cdc6b40f377f999eb8d3d"
-SRC_URI[sha256sum] = "a03dc58dfc79c056819c0544b2a5970537566460102b3d82cfb038c60e619b42"
+SRC_URI[sha256sum] = "b4b53ba21a82ef7e3d4c47df2952adf5fa494f499b6b0b57c58c5d04ae8ff19e"
 
 inherit autotools pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-support/fmt/fmt_7.1.3.bb b/meta-openembedded/meta-oe/recipes-support/fmt/fmt_8.0.1.bb
similarity index 82%
rename from meta-openembedded/meta-oe/recipes-support/fmt/fmt_7.1.3.bb
rename to meta-openembedded/meta-oe/recipes-support/fmt/fmt_8.0.1.bb
index 9820b86..0dc8e03 100644
--- a/meta-openembedded/meta-oe/recipes-support/fmt/fmt_7.1.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fmt/fmt_8.0.1.bb
@@ -4,8 +4,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=af88d758f75f3c5c48a967501f24384b"
 
-SRC_URI += "git://github.com/fmtlib/fmt"
-SRCREV = "7bdf0628b1276379886c7f6dda2cef2b3b374f0b"
+SRC_URI = "git://github.com/fmtlib/fmt"
+SRCREV = "d141cdbeb0fb422a3fb7173b285fd38e0d1772dc"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/gsl/gsl_2.6.bb b/meta-openembedded/meta-oe/recipes-support/gsl/gsl_2.6.bb
deleted file mode 100644
index 367a083..0000000
--- a/meta-openembedded/meta-oe/recipes-support/gsl/gsl_2.6.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-include gsl.inc
-
-SRC_URI = "${GNU_MIRROR}/gsl/gsl-${PV}.tar.gz"
-SRC_URI[md5sum] = "bda73a3dd5ff2f30b5956764399db6e7"
-SRC_URI[sha256sum] = "b782339fc7a38fe17689cb39966c4d821236c28018b6593ddb6fd59ee40786a8"
diff --git a/meta-openembedded/meta-oe/recipes-support/gsl/gsl_2.7.bb b/meta-openembedded/meta-oe/recipes-support/gsl/gsl_2.7.bb
new file mode 100644
index 0000000..d40eebb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/gsl/gsl_2.7.bb
@@ -0,0 +1,4 @@
+include gsl.inc
+
+SRC_URI = "${GNU_MIRROR}/gsl/gsl-${PV}.tar.gz"
+SRC_URI[sha256sum] = "efbbf3785da0e53038be7907500628b466152dbc3c173a87de1b5eba2e23602b"
diff --git a/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.4.bb b/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.6.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.4.bb
rename to meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.6.bb
index ba21ffa..118259e 100644
--- a/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.6.bb
@@ -9,7 +9,7 @@
 S = "${WORKDIR}/git"
 B = "${S}"
 
-SRCREV = "732ee8d28492e4bc9b52c29bcb81a5c19388d002"
+SRCREV = "c9864f4dd03736839f40d225da494cb1eb64e654"
 SRC_URI = "git://github.com/rhinstaller/libbytesize;branch=master"
 
 inherit gettext autotools python3native
diff --git a/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.9.bb b/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb
similarity index 80%
rename from meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.9.bb
rename to meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb
index 8ce26ff..54b6f74 100644
--- a/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.9.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb
@@ -3,15 +3,15 @@
 HOMEPAGE = "http://eigen.tuxfamily.org/"
 LICENSE = "MPL-2.0 & Apache-2.0 & BSD-3-Clause & GPLv3 & LGPLv2.1 & MINPACK"
 LIC_FILES_CHKSUM = "file://COPYING.MPL2;md5=815ca599c9df247a0c7f619bab123dad \
-                    file://COPYING.BSD;md5=543367b8e11f07d353ef894f71b574a0 \
+                    file://COPYING.BSD;md5=2dd0510ee95e59ca28834b875bc96596 \
                     file://COPYING.GPL;md5=d32239bcb673463ab874e80d47fae504 \
                     file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
-                    file://COPYING.MINPACK;md5=5fe4603e80ef7390306f51ef74449bbd \
+                    file://COPYING.MINPACK;md5=71d91b0f75ce79a75d3108a72bef8116 \
 "
 
 SRC_URI = "git://gitlab.com/libeigen/eigen.git;protocol=http;nobranch=1"
 
-SRCREV = "0fd6b4f71dd85b2009ee4d1aeb296e2c11fc9d68"
+SRCREV = "3147391d946bb4b6c68edd901f2add6ac1f31f8c"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/monit/monit_5.28.1.bb b/meta-openembedded/meta-oe/recipes-support/monit/monit_5.29.0.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-support/monit/monit_5.28.1.bb
rename to meta-openembedded/meta-oe/recipes-support/monit/monit_5.29.0.bb
index 9833c0c..9528fe7 100644
--- a/meta-openembedded/meta-oe/recipes-support/monit/monit_5.28.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/monit/monit_5.29.0.bb
@@ -15,7 +15,7 @@
 	file://monitrc \
 "
 
-SRC_URI[sha256sum] = "57d8885f66e58a0a4ca6a967f2bb7e8c15ed988a25b5ca6ba6733f919ef07a5c"
+SRC_URI[sha256sum] = "f665e6dd1f26a74b5682899a877934167de2b2582e048652ecf036318477885f"
 
 DEPENDS = "zlib bison-native libnsl2 flex-native openssl virtual/crypt"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.10.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.11.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.10.bb
rename to meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.11.bb
index 7574c7b..3b65083 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.11.bb
@@ -18,8 +18,7 @@
            ${CMAP_RESOURCES_BASE}/Identity-H;name=idh \
            ${CMAP_RESOURCES_BASE}/Identity-V;name=idv"
 
-SRC_URI[md5sum] = "a7f15fb2f26c60a7a92093cfdf2378d5"
-SRC_URI[sha256sum] = "6e2fcef66ec8c44625f94292ccf8af9f1d918b410d5aa69c274ce67387967b30"
+SRC_URI[sha256sum] = "2cec05cd1bb03af98a8b06a1e22f6e6e1a65b1e2f3816cb3069bb0874825f08c"
 SRC_URI[idh.md5sum] = "009c93cf0141ab7bd6acb7eea14306cc"
 SRC_URI[idh.sha256sum] = "ae702c203a82ea124e9b96590f821db6fbf8754e2c4547a9dba0e82f94739e95"
 SRC_URI[idv.md5sum] = "2f32a45d43d001c26eeac6b878855fbf"
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Do-not-overwrite-all-our-build-flags.patch b/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Do-not-overwrite-all-our-build-flags.patch
index afb0b5d..e07da38 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Do-not-overwrite-all-our-build-flags.patch
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Do-not-overwrite-all-our-build-flags.patch
@@ -10,46 +10,46 @@
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
 ---
- cmake/modules/PopplerMacros.cmake | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ cmake/modules/PopplerMacros.cmake | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
+diff --git a/cmake/modules/PopplerMacros.cmake b/cmake/modules/PopplerMacros.cmake
+index 2aed028..3c30f3f 100644
 --- a/cmake/modules/PopplerMacros.cmake
 +++ b/cmake/modules/PopplerMacros.cmake
-@@ -104,14 +104,14 @@ if(CMAKE_COMPILER_IS_GNUCXX)
+@@ -117,13 +117,13 @@ if(CMAKE_COMPILER_IS_GNUCXX)
+   set(DEFAULT_COMPILE_WARNINGS "${_warn}")
    set(DEFAULT_COMPILE_WARNINGS_EXTRA "${_warn} ${_warnx}")
-
-   set(_save_cxxflags "${CMAKE_CXX_FLAGS}")
+ 
 -  set(CMAKE_CXX_FLAGS                "-fno-exceptions -fno-check-new -fno-common -fno-operator-names -D_DEFAULT_SOURCE")
 +  set(CMAKE_CXX_FLAGS                "-fno-exceptions -fno-check-new -fno-common -fno-operator-names -D_DEFAULT_SOURCE ${_save_cxxflags}")
-   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g ${_save_cxxflags}")
-   set(CMAKE_CXX_FLAGS_RELEASE        "-O2 -DNDEBUG ${_save_cxxflags}")
-   set(CMAKE_CXX_FLAGS_DEBUG          "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline ${_save_cxxflags}")
-   set(CMAKE_CXX_FLAGS_DEBUGFULL      "-g3 -fno-inline ${_save_cxxflags}")
-   set(CMAKE_CXX_FLAGS_PROFILE        "-g3 -fno-inline -ftest-coverage -fprofile-arcs ${_save_cxxflags}")
-   set(_save_cflags "${CMAKE_C_FLAGS}")
+   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
+   set(CMAKE_CXX_FLAGS_RELEASE        "-O2 -DNDEBUG")
+   set(CMAKE_CXX_FLAGS_DEBUG          "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline")
+   set(CMAKE_CXX_FLAGS_DEBUGFULL      "-g3 -fno-inline")
+   set(CMAKE_CXX_FLAGS_PROFILE        "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
 -  set(CMAKE_C_FLAGS                  "-std=c99 -D_DEFAULT_SOURCE")
 +  set(CMAKE_C_FLAGS                  "-std=c99 -D_DEFAULT_SOURCE ${_save_cflags}")
-   set(CMAKE_C_FLAGS_RELWITHDEBINFO   "-O2 -g ${_save_cflags}")
-   set(CMAKE_C_FLAGS_RELEASE          "-O2 -DNDEBUG ${_save_cflags}")
-   set(CMAKE_C_FLAGS_DEBUG            "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline ${_save_cflags}")
-@@ -149,7 +149,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+   set(CMAKE_C_FLAGS_RELWITHDEBINFO   "-O2 -g")
+   set(CMAKE_C_FLAGS_RELEASE          "-O2 -DNDEBUG")
+   set(CMAKE_C_FLAGS_DEBUG            "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline")
+@@ -161,14 +161,14 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+   set(DEFAULT_COMPILE_WARNINGS "${_warn}")
    set(DEFAULT_COMPILE_WARNINGS_EXTRA "${_warn} ${_warnx}")
-
-   set(_save_cxxflags "${CMAKE_CXX_FLAGS}")
+ 
 -  set(CMAKE_CXX_FLAGS                "-fno-exceptions -fno-check-new -fno-common -D_DEFAULT_SOURCE")
 +  set(CMAKE_CXX_FLAGS                "-fno-exceptions -fno-check-new -fno-common -D_DEFAULT_SOURCE ${_save_cxxflags}")
-   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g ${_save_cxxflags}")
-   set(CMAKE_CXX_FLAGS_RELEASE        "-O2 -DNDEBUG ${_save_cxxflags}")
+   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
+   set(CMAKE_CXX_FLAGS_RELEASE        "-O2 -DNDEBUG")
    # clang does not support -fno-reorder-blocks -fno-schedule-insns, so do not use -O2
-@@ -157,7 +157,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
-   set(CMAKE_CXX_FLAGS_DEBUGFULL      "-g3 -fno-inline ${_save_cxxflags}")
-   set(CMAKE_CXX_FLAGS_PROFILE        "-g3 -fno-inline -ftest-coverage -fprofile-arcs ${_save_cxxflags}")
-   set(_save_cflags "${CMAKE_C_FLAGS}")
+   set(CMAKE_CXX_FLAGS_DEBUG          "-g")
+   set(CMAKE_CXX_FLAGS_DEBUGFULL      "-g3 -fno-inline")
+   set(CMAKE_CXX_FLAGS_PROFILE        "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
 -  set(CMAKE_C_FLAGS                  "-std=c99 -D_DEFAULT_SOURCE")
 +  set(CMAKE_C_FLAGS                  "-std=c99 -D_DEFAULT_SOURCE ${_save_cflags}")
-   set(CMAKE_C_FLAGS_RELWITHDEBINFO   "-O2 -g ${_save_cflags}")
-   set(CMAKE_C_FLAGS_RELEASE          "-O2 -DNDEBUG ${_save_cflags}")
+   set(CMAKE_C_FLAGS_RELWITHDEBINFO   "-O2 -g")
+   set(CMAKE_C_FLAGS_RELEASE          "-O2 -DNDEBUG")
    # clang does not support -fno-reorder-blocks -fno-schedule-insns, so do not use -O2
---
+-- 
 2.25.1
 
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.08.0.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.09.0.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.08.0.bb
rename to meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.09.0.bb
index 1fc3bf3..0ecf199 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.08.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.09.0.bb
@@ -7,7 +7,7 @@
            file://0001-Do-not-overwrite-all-our-build-flags.patch \
            file://basename-include.patch \
            "
-SRC_URI[sha256sum] = "e9cf5dc5964bce4bb0264d1c4f8122706c910588b421cfc30abc97d6b23e602d"
+SRC_URI[sha256sum] = "5a47fef738c2b99471f9b459a8bf8b40aefb7eed92caa4861c3798b2e126d05b"
 
 DEPENDS = "fontconfig zlib cairo lcms glib-2.0"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.8.2.bb b/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.9.2.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.8.2.bb
rename to meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.9.2.bb
index 40ef464..c103c34 100644
--- a/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.8.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.9.2.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
 
-SRCREV = "de0dbfa3596a18cd70a4619b6a9766847a941276"
+SRCREV = "eb3220622e73a4889eee355ffa37972b3cac3df5"
 SRC_URI = "git://github.com/gabime/spdlog.git;protocol=git;branch=v1.x; \
            file://0001-Enable-use-of-external-fmt-library.patch"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.3.0.bb b/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.4.0.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.3.0.bb
rename to meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.4.0.bb
index 9926ad4..44aeaed 100644
--- a/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.4.0.bb
@@ -6,7 +6,7 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRCREV = "1b52efddbd68b4395df3ac9cd10eeb984af22439"
+SRCREV = "014b55ac5d1d7fb46a8f1eefe9fc3b87ea65a75f"
 SRC_URI = "git://github.com/mvp/${BPN}"
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/zchunk/zchunk_1.1.9.bb b/meta-openembedded/meta-oe/recipes-support/zchunk/zchunk_1.1.16.bb
similarity index 64%
rename from meta-openembedded/meta-oe/recipes-support/zchunk/zchunk_1.1.9.bb
rename to meta-openembedded/meta-oe/recipes-support/zchunk/zchunk_1.1.16.bb
index 9ac205a..59a0dff 100644
--- a/meta-openembedded/meta-oe/recipes-support/zchunk/zchunk_1.1.9.bb
+++ b/meta-openembedded/meta-oe/recipes-support/zchunk/zchunk_1.1.16.bb
@@ -2,11 +2,11 @@
 AUTHOR = "Jonathan Dieter"
 
 LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=cd6e590282010ce90a94ef25dd31410f"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=daf6e68539f564601a5a5869c31e5242"
 
-SRC_URI = "git://github.com/zchunk/zchunk.git;protocol=https"
+SRC_URI = "git://github.com/zchunk/zchunk.git;protocol=https;branch=main"
 
-SRCREV = "fe3e3af49fd30b68c21a9fcaac340ad8e7f91055"
+SRCREV = "ff34ee911f7d78d66b97894a773276babd63144c"
 S = "${WORKDIR}/git"
 
 DEPENDS = "\
diff --git a/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb b/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb
index ea5683c..550b026 100644
--- a/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb
+++ b/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb
@@ -210,6 +210,7 @@
     python3-kconfiglib \
     python3-keras-applications \
     python3-keras-preprocessing \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11 opengl", "python3-kivy", "", d)} \
     python3-kiwisolver \
     python3-langtable \
     python3-lazy-object-proxy \
@@ -277,6 +278,7 @@
     python3-ply \
     python3-pocketsphinx \
     python3-polyline \
+    python3-portalocker \
     python3-prctl \
     python3-precise-runner \
     python3-pretend \
@@ -348,6 +350,7 @@
     python3-pytest-html \
     python3-pytest-metadata \
     python3-pytest-runner \
+    python3-pytest-subtests \
     python3-pytest-tempdir \
     python3-pytest-timeout \
     python3-pythonping \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.6.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.6.5.bb
index 9af21c9..e1f29ca 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.6.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.6.5.bb
@@ -15,3 +15,5 @@
     ${PYTHON_PN}-sqlalchemy \
     ${PYTHON_PN}-misc \
 "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.3.3.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.3.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.3.3.bb
index 8b473b5..17b5d93 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.3.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.3.3.bb
@@ -3,7 +3,7 @@
 LICENSE = "PSF"
 LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=2ad702cdcd49e8d2ac01d7e7d0810d2d"
 
-SRC_URI[sha256sum] = "4bee3ba9164b66cef64f1099e9a3b88e99ddcd0c943807e99443613e184b48b4"
+SRC_URI[sha256sum] = "0edf630a4471a48627aec0b840cf3b8e10901191d328f6511560420459de282e"
 
 inherit setuptools3 pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.8.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.8.bb
index 565e223..2fb48f3 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.8.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0 | BSD"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4"
 
-SRC_URI[sha256sum] = "a7ac3aaa57514687696ad65f833e5e39b6fa3c5d41de2b8c938346ee119204c2"
+SRC_URI[sha256sum] = "4c84410257993d3de058b44b777a49e1da2ae35ebea2970a360c7e3aa0f580f2"
 
 PYPI_PACKAGE = "cryptography_vectors"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.4.bb
index c7a6cd8..dffc361 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-editor_1.0.4.bb
@@ -8,3 +8,5 @@
 PYPI_PACKAGE = "python-editor"
 
 inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.18.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.19.1.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.18.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.19.1.bb
index 0dc3182..564058e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.18.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.19.1.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
 
-SRC_URI[sha256sum] = "a25661ec6cf4c159f41fe9c061c2bee31b2dddaf2ad787e23617048a25b53842"
+SRC_URI[sha256sum] = "c89b345615188fbd525f52d59013156ad3bfd1023af27041f2dec3d7877ba112"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.26.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.27.0.bb
similarity index 88%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.26.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.27.0.bb
index 4c1d4eb..2ec0722 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.26.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.27.0.bb
@@ -6,7 +6,7 @@
 
 PYPI_PACKAGE = "ipython"
 
-SRC_URI[sha256sum] = "0cff04bb042800129348701f7bd68a430a844e8fb193979c08f6c99f28bb735e"
+SRC_URI[sha256sum] = "58b55ebfdfa260dad10d509702dc2857cb25ad82609506b070cf2d7b7df5af13"
 
 RDEPENDS:${PN} = "\
     ${PYTHON_PN}-setuptools \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy/0001-add-support-for-glesv2.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy/0001-add-support-for-glesv2.patch
new file mode 100644
index 0000000..bb236b4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy/0001-add-support-for-glesv2.patch
@@ -0,0 +1,38 @@
+--- a/setup.py
++++ b/setup.py
+@@ -695,7 +695,18 @@ def determine_gl_flags():
+         c_options['use_x11'] = True
+         c_options['use_egl'] = True
+     else:
+-        flags['libraries'] = ['GL']
++        if cross_sysroot:
++            flags['include_dirs'] = [cross_sysroot + '/usr/include']
++            flags['library_dirs'] = [cross_sysroot + '/usr/lib']
++
++        if c_options['use_opengl_es2']:
++            print("using GLESv2 libraries")
++            flags['libraries'] = ['GLESv2']
++        else:
++            flags['libraries'] = ['GL']
++
++
++    print("cross_sysroot: " + str(cross_sysroot))
+     return flags, base_flags
+ 
+ 
+@@ -723,14 +734,13 @@ def determine_sdl2():
+             sdl_inc = join(include, 'SDL2')
+             if isdir(sdl_inc):
+                 sdl2_paths.append(sdl_inc)
+-        sdl2_paths.extend(['/usr/local/include/SDL2', '/usr/include/SDL2'])
+ 
+     flags['include_dirs'] = sdl2_paths
+     flags['extra_link_args'] = []
+     flags['extra_compile_args'] = []
+     flags['library_dirs'] = (
+         sdl2_paths if sdl2_paths else
+-        ['/usr/local/lib/'])
++        [''])
+ 
+     if sdl2_flags:
+         flags = merge(flags, sdl2_flags)
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb
new file mode 100644
index 0000000..d046489
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb
@@ -0,0 +1,73 @@
+SUMMARY = "Open source Python library for rapid development of applications \
+    that make use of innovative user interfaces, such as multi-touch apps."
+HOMEPAGE = "https://kivy.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f0c851d60495c7e27225a819e179208a"
+
+inherit setuptools3 pkgconfig features_check
+
+SRC_URI = "\
+    git://github.com/kivy/kivy.git;protocol=git;\
+"
+
+# Kivy's setup files only look for GLES libraries for Android, iOS, RPi,
+# and mali-based OS's. We need to patch the setup file to tell Kivy setup
+# that our machine has GLES libaries installed as well
+# Also, if using SDL2 as backend, SDL2 needs to be configured wth gles
+SRC_URI += " \
+    file://0001-add-support-for-glesv2.patch \
+"
+SRCREV = "dedcb6bcabe3d8d6758dcee607e8c33b174d782b"
+
+S = "${WORKDIR}/git"
+
+PACKAGES += "${PN}-examples"
+FILES:${PN}-examples = "/usr/share/kivy-examples"
+
+USE_WAYLAND = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '1', '0', d)}"
+export USE_WAYLAND
+
+# if using Wayland, let's use pure Wayland (and not XWayland)
+# so do not build using X11 flag when we detect Wayland
+USE_X11 = " \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland',  '0', \
+       bb.utils.contains('DISTRO_FEATURES', 'x11',      '1', \
+                                                        '0', d), d)}"
+export USE_X11
+
+# Use OpenGL ES 2.0 library
+KIVY_GRAPHICS = "gles"
+export KIVY_GRAPHICS
+
+KIVY_CROSS_SYSROOT="${RECIPE_SYSROOT}"
+export KIVY_CROSS_SYSROOT
+
+REQUIRED_DISTRO_FEATURES += "x11 opengl"
+
+DEPENDS += " \
+    gstreamer1.0 \
+    gstreamer1.0-python \
+    libsdl2 \
+    libsdl2-ttf \
+    libsdl2-image \
+    libsdl2-mixer \
+    pango \
+    python3 \
+    python3-cython-native \
+"
+
+RDEPENDS_${PN} = " \
+    gstreamer1.0 \
+    gstreamer1.0-python \
+    libsdl2 \
+    libsdl2-ttf \
+    libsdl2-image \
+    libsdl2-mixer \
+    pango \
+    python3 \
+    python3-docutils \
+    python3-fcntl \
+    python3-image \
+    python3-pillow \
+    python3-pygments \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.3.2.bb
similarity index 73%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.3.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.3.2.bb
index fb66619..cf14c49 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.3.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.3.2.bb
@@ -3,8 +3,7 @@
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://setup.py;endline=7;md5=e54bd74bd9d0a84ae3f8f6d21ada0ab4"
 
-SRC_URI[md5sum] = "81012578317ddcfa3daed806142f8fed"
-SRC_URI[sha256sum] = "950a199911a8d94683a6b10321f9345d5a3a8433ec58b217ace979e18f16e248"
+SRC_URI[sha256sum] = "fc4453705b81d03568d5b808ad8f09c77c47534f6ac2e72e733f9ca4714aa75c"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.16.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.16.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb
index 85a54af..24e4e26 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.16.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb
@@ -8,8 +8,11 @@
 UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/lrparsing/files/"
 UPSTREAM_CHECK_REGEX = "lrparsing-(?P<pver>\d+(\.\d+)+)"
 SRC_URI = "${SOURCEFORGE_MIRROR}/lrparsing/lrparsing-${PV}.tar.gz"
-SRC_URI[md5sum] = "34357d69bce87654d792cd8f02d148b2"
-SRC_URI[sha256sum] = "b45afda44001dc5ba632934f74c043d40cce653f1a7526cfbcb68f6be055b8d7"
+SRC_URI[sha256sum] = "7c060d9f03cf582fdbc0ae0fef0ea2ff6fd56251047ba7e425af97e23f46f582"
+
+RDEPENDS:${PN} = " \
+	python3-crypt \
+"
 
 inherit setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.3.2.bb
similarity index 93%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.3.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.3.2.bb
index d0a17cb..68b80a7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.3.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.3.2.bb
@@ -9,7 +9,7 @@
            file://0001-support-cross-compiling.patch \
            file://0001-explicitly-set-compile-options.patch \
 "
-SRCREV ?= "92933b86574b9c80764bf52c357ed29e1ef53382"
+SRCREV ?= "8013f130a5077b238a4346b73e149432b180a8ea"
 
 inherit setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-subtests_0.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-subtests_0.5.0.bb
new file mode 100644
index 0000000..2e03512
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-subtests_0.5.0.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "unittest subTest() support and subtests fixture."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=242b4e17fa287dcf7aef372f6bc3dcb1"
+
+SRC_URI[sha256sum] = "5bd1e4bf0eda4c89a6cd42b0ee28e1d2ca0848de3fd67ad8cdd6d559ed00f120"
+
+inherit pypi setuptools3
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+RDEPENDS:${PN} += " \
+    ${PYTHON_PN}-pytest \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.8.27.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.8.28.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.8.27.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.8.28.bb
index c869003..e375b5b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.8.27.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.8.28.bb
@@ -5,7 +5,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "e9700c52749cb3e90c98efd72b730c97b7e4962992fca5fbcaf1363be8e3b849"
+SRC_URI[sha256sum] = "f585cbbeecb35f35609edccb95efd95a3e35824cd7752b586503f7e6087303f1"
 
 RDEPENDS:${PN} += " \
 	python3-stringold \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.13.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.16.bb
similarity index 75%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.13.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.16.bb
index d28e8a1..e64f196 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.13.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.16.bb
@@ -8,10 +8,12 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "02f0ed93e98ea32498d25a2952635bbd9fabd553599b8ad67724b4ac88dd8f6c"
+SRC_URI[sha256sum] = "1a771fc92d3823682b7f0893ad56cb5a5c87c48e62b5399d6f42c8759a583b33"
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-netclient \
 "
 
 do_install:prepend() {
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.23.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.23.bb
index 1b8af82..4bfaf65 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.23.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.23.bb
@@ -19,3 +19,5 @@
     ${PYTHON_PN}-compression \
     ${PYTHON_PN}-profile \
 "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.0.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.0.bb
similarity index 72%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.0.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.0.bb
index 01fdffb..da23421 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.0.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.0.bb
@@ -6,8 +6,7 @@
 
 PYPI_PACKAGE = "traitlets"
 
-SRC_URI[md5sum] = "2ffe54aee5d0d87890127dd28ce3f6c4"
-SRC_URI[sha256sum] = "178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396"
+SRC_URI[sha256sum] = "bd382d7ea181fbbcce157c133db9a829ce06edffe097bcf3ab945b435452b46d"
 
 RDEPENDS:${PN} = "\
     ${PYTHON_PN}-ipython-genutils \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.9.bb
similarity index 61%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.8.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.9.bb
index ddb66ff..178dfad 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.8.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.9.bb
@@ -4,6 +4,6 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "e7a86b31a161a76133f189b3ae9dad2755a80ea4c1e0eee1805648d021fb677d"
+SRC_URI[sha256sum] = "fc2ec6d6b6f986cd7e28e119eeb9ba1c9cc51ab4fbbdb7f2dedad01983fd2de0"
 
-RDEPENDS:${PN} += "python3-six"
+RDEPENDS:${PN} += "python3-six python3-logging"
diff --git a/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.3.2.bb b/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.3.2.bb
new file mode 100644
index 0000000..bf9304c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.3.2.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Cross-platform locking library"
+DESCRIPTION = "Portalocker is a library to provide an easy API to file locking"
+LICENSE = "PSF"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f9273424c73af966635d66eb53487e14"
+
+SRC_URI[md5sum] = "bd4908d035464aa440dd7f262ef78345"
+SRC_URI[sha256sum] = "75cfe02f702737f1726d83e04eedfa0bda2cc5b974b1ceafb8d6b42377efbd5f"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"