meta-openembedded: subtree update:2449e5f07a..8fbcfb9f02

Adrian Zaharia (1):
      ntp: fix ntpdate to wait for subprocesses

Akifumi Chikazawa (1):
      openvpn: add CVE-2020-7224 and CVE-2020-27569 to allowlist

Andrea Adami (3):
      initramfs-kexecboot-image: support cases where machines override IMAGE_FSTYPES
      initramfs-debug-image: support cases where machines override IMAGE_FSTYPES
      rapidjson: remove stale LIB_INSTALL_DIR

Andreas Müller (50):
      poppler: upgrade 21.05.0 -> 21.06.0
      dbus-broker: upgrade 28 -> 29
      libmbim: upgrade 1.24.6 -> 1.24.8
      icewm: upgrade 2.3.3 -> 2.3.4
      poppler: upgrade 21.06.0 -> 21.06.1
      gnome-disk-utility: upgrade 3.36.3 -> 40.1
      gnome-font-viewer: upgrade 3.34.0 -> 40.0
      pipewire: upgrade 0.3.24 -> 0.3.29
      libqmi: upgrade 1.28.4 -> 1.28.6
      ttf-noto-emoji: upgrade 20190815 -> 20200916
      remmina: upgrade 1.4.17 -> 1.4.18
      metacity: upgrade 3.36.1 -> 3.40.0
      gnome-flashback: upgrade 3.36.3 -> 3.40.0
      gthumb: initial add 3.10.3
      atkmm: upgrade 2.28.0 -> 2.28.2
      atkmm: build with meson
      dconf: upgrade 0.38.0 -> 0.40.0
      evolution-data-server: upgrade 3.40.1 -> 3.40.2
      file-roller: upgrade 3.38.1 -> 3.40.0
      glibmm: upgrade 2.62.0 -> 2.66.1 / build with meson / cleanup recipe
      gmime: upgrade 3.2.6 -> 3.2.7
      gnome-autoar; upgrade 0.3.2 -> 0.3.3
      gnome-keyring: upgrade 3.36.0 -> 40.0
      gnome-online-accounts: upgrade 3.36.0 -> 3.40.0
      gnome-terminal: upgrade 3.36.2 -> 3.40.2
      gspell: upgrade 1.8.4 -> 1.9.1
      gtkmm3: upgrade 3.24.3 -> 3.24.5
      gtksourceview4: upgrade 4.6.1 -> 4.8.1
      gupnp: upgrade 1.2.6 -> 1.2.7
      gvfs: upgrade 1.44.1 -> 1.48.1
      libgdata: upgrade 0.17.13 -> 0.18.1
      libmediaart 0.7.0: remove
      libmediaart-2.0: upgrade 1.9.4 -> 1.9.5 / merge inc file / build with meson
      libsigc++-2.0: upgrade 2.10.6 -> 2.10.7
      nautilus: upgrade 40.1 -> 40.2
      pangomm: upgrade 2.42.1 -> 2.46.1 / build with meson
      yelp-xsl: upgrade 3.36.0 -> 4.02
      yelp-tools: upgrade 3.32.2 -> 40.0
      yelp: upgrade 3.36.0 -> 40.2
      modemmanager: upgrade 1.16.4 -> 1.16.6
      xfce4-settings: 4.16.1 upgrade 4.16.2
      blueman: upgrade 2.1.4 -> 2.2.1
      pipewire: upgrade 0.3.30 -> 0-3-31
      cmark: upgrade 0.29.0 -> 0.30.0
      networkmanager: upgrade 1.30.4 -> 1.32.2
      ristretto: upgrade 0.10.0 -> 0.11.0
      libgusb: upgrade 0.3.6 -> 0.3.7
      poppler: upgrade 21.06.1 -> 21.07.0
      gegl: Disable pango on native build to fix gimp build segfaults
      gimp: remove --disable-vector-icons

Bartosz Golaszewski (13):
      libgpiod: coding style fixes
      libgpiod: list all packages in a single assignment
      libgpiod: fix RRECOMMENDS for python bindings
      libgpiod: correctly split output files into packages
      libgpiod: add RDEPENDS for tests
      libgpiod: redirect stdout from the ptest executable to a file
      libgpiod: ptest: run all test-suites if possible
      libgpiod: ptest: warn if the gpio-mockup kernel module is not selected
      libgpiod: ptest: add kernel-modules to RRECOMMENDS
      libgpiod: ptest: only rrecommend a single module that we need
      libgpiod: add the python test-suite to the ptest package
      libgpiod: update my email address
      python3-joblib: new package

Ben Horgan (1):
      cpputest: Add initial recipe. Version 4.0.

Carlos Rafael Giani (2):
      pipewire: Add filter-chain files to modules-filter-chain package
      pipewire: Upgrade to 0.3.30

Changqing Li (1):
      mousepad: fix warning during postinst

Chen Qi (1):
      minifi-cpp: set CLEANBROKEN to 1

Daiane Angolini (1):
      wireguard-module: Stop overriding modules_install in the recipe

Daniel Klauer (1):
      spidev-test: Update common-licenses reference

David Sterling (1):
      can-isotp: Upgrade to latest on master

Ed Tanous (1):
      Use the built-in options for removing pack tools

Geoff Parker (1):
      cifs-utils: set ROOTSBINDIR to /usr/sbin if DISTRO_FEATURES has usrmerge

Gianfranco (2):
      vboxguestdrivers: add a fix for build failure with kernel 5.13
      dlt-daemon: update from 2.18.6 to 2.18.7

Hongxu Jia (1):
      debootstrap: fix runtime failure on nativesdk

Joshua Watt (1):
      gnome: gnome-shell: Move gsettings to their own package

Kai Kang (4):
      python3-m2crypto: fix word size for qemuppc64 little endian
      python3-m2crypto: avoid host contamination for swig
      bats: fix qa issue when multilib eanbled
      mariadb: fix failures to start install_db.service

Khem Raj (57):
      glog: Upgrade to 0.5.0
      mbedtls: Upgrade to 2.26.0
      mbedtls: Add packageconfig for warning-as-errors
      memcached: upgrade to 1.6.9
      indent: Remove dead code using count_parens function
      glm: Fix additional clang warnings
      tbb: Fix warnings with clang
      libwebsockets: Update to latest on v4.2-stable
      packagegroup-meta-oe: Add libparse-yapp-perl
      netplan: Fix a warning with clang
      python3-yappi: Fix patching errors
      packagegroup-meta-oe: Add zsync-curl
      klibc: Add clang's -rtlib to known options
      libpfm4: Upgrade to 4.11.0
      ltrace: Remove unused static function
      flashrom: Fix build with clang
      mongodb: Enable wiredtiger only on aarch64/x86_64 hosts
      mariadb: Fix build with clang/musl
      c-ares: Upgrade to 1.17.1 release
      nodejs: Update to 14.17.1
      rocksdb: Upgrade to 6.20.3
      rocksdb: Implement toku_time_now function for rv32/rv64
      rocksdb: Fix build with ppc64/musl
      rocksdb: Implement timer for mips
      rocksdb: Implement timer for armv6+
      rocksdb: Fix build with gcc on rv32 and mips
      libzip: Upgrade to 1.8.0
      czmq: Inherit pkgconfig
      czmq: Add libmicrohttpd feature via packageconfig
      czmq: Use Cmake knobs to enable/disable designed packageconfigs
      czmq: Add nss packageconfig
      meta-python: Add python3-fastjsonschema and its dependencies
      packagegroup-meta-python: Add newly added recipes
      python3-process-tests: Add recipe
      python3-aspectlib: Add ptests
      python3-execnet: Add ptests
      python3-py-cpuinfo: Add ptests
      libc-bench: Do not override ldflags in makefile
      mpich: Add libgcc to ldflags on x86/glibc
      mpd: Update to 0.22.9
      imlib2: Use propert git SHA in SRCREV
      suitesparse: Update to 5.10.1
      packagegroup-meta-oe: Add libyang
      sysdig: Disable JIT on ppc64
      portaudio-v19: Use GNUInstallDirs to make it portable
      keepalived: Upgrade to 2.2.2
      suitesparse: Fix LIC_FILES_CHKSUM
      xscreensaver: Update to 6.01
      ltrace: Fix mips build with kernels 5.13+
      python3-pyusb: Add missing runtime dependency on libusb1
      can-isotp: Ignore in world builds
      postfix: Upgrade to 3.6.1
      packagegroup-meta-oe: Add new package cpputest
      apitrace: Update to latest trunk
      fatresize: Disable building documentation files
      layers: Fix git send-email instructions in README
      autofs: Upgrade to 5.1.7

Leon Anavi (61):
      python3-oauthlib: Upgrade 3.1.0 -> 3.1.1
      python3-django: Upgrade 3.2.3 -> 3.2.4
      python3-sqlalchemy: Upgrade 1.4.15 -> 1.4.17
      python3-aiohue: Upgrade 2.5.0 -> 2.5.1
      python3-typeguard: Upgrade 2.12.0 -> 2.12.1
      python3-cbor2: Upgrade 5.3.0 -> 5.4.0
      python3-ipython: Upgrade 7.24.0 -> 7.24.1
      python3-pkgconfig: Upgrade 1.5.2 -> 1.5.4
      python3-humanize: Upgrade 3.6.0 -> 3.7.1
      python3-fasteners: Upgrade 0.16 -> 0.16.1
      python3-pythonping: Upgrade 1.0.16 -> 1.1.0
      python3-bitarray: Upgrade 2.1.0 -> 2.1.2
      python3-coloredlogs: Upgrade 15.0 -> 15.0.1
      python3-pysonos: Upgrade 0.0.50 -> 0.0.51
      python3-dill: Upgrade 0.3.3 -> 0.3.4
      python3-humanfriendly: Upgrade 9.1 -> 9.2
      python3-zeroconf: Add recipe
      python3-pychromecast: Upgrade 9.1.2 -> 9.2.0
      python3-ifaddr: Fix RDEPENDS
      python3-bitarray: Upgrade 2.1.2 -> 2.1.3
      python3-astroid: Upgrade 2.5.7 -> 2.5.8
      python3-license-expression: Upgrade 1.2 -> 21.6.14
      python3-humanize: Upgrade 3.7.1 -> 3.9.0
      python3-ruamel-yaml: Upgrade 0.17.7 -> 0.17.9
      python3-cmd2: Upgrade 1.5.0 -> 2.1.1
      python3-fasteners: Upgrade 0.16.1 -> 0.16.3
      python3-elementpath: Upgrade 2.2.2 -> 2.2.3
      python3-prompt-toolkit: Upgrade 3.0.18 -> 3.0.19
      python3-mypy: Upgrade 0.812 -> 0.902
      python3-send2trash: Upgrade 1.5.0 -> 1.7.1
      python3-pandas: Upgrade 1.2.4 -> 1.2.5
      python3-mypy: Upgrade 0.902 -> 0.910
      python3-astroid: Upgrade 2.5.8 -> 2.6.0
      python3-tqdm: Upgrade 4.61.0 -> 4.61.1
      python3-ruamel-yaml: Upgrade 0.17.9 -> 0.17.10
      python3-httplib2: Fix runtime dependencies
      python3-google-api-core: Add recipe
      python3-google-auth: Add recipe
      python3-googleapis-common-protos: Add recipe
      python3-google-api-python-client: Upgrade 2.6.0 -> 2.10.0
      python3-ipython: Upgrade 7.24.1 -> 7.25.0
      python3-croniter: Upgrade 1.0.13 -> 1.0.15
      python3-priority: Upgrade 1.3.0 -> 2.0.0
      python3-astroid: Upgrade 2.6.0 -> 2.6.2
      python3-watchdog: Upgrade 2.1.2 -> 2.1.3
      python3-humanize: Upgrade 3.9.0 -> 3.10.0
      python3-pillow: Upgrade 8.2.0 -> 8.3.1
      python3-bitarray: Upgrade 2.1.3 -> 2.2.1
      python3-cmd2: Upgrade 2.1.1 -> 2.1.2
      python3-pandas: Upgrade 1.2.5 -> 1.3.0
      python3-texttable: Upgrade 1.6.3 -> 1.6.4
      python3-dateutil: Upgrade 2.8.1 -> 2.8.2
      python3-requests: Upgrade 2.25.1 -> 2.26.0
      python3-websocket-client: Upgrade 1.0.1 -> 1.1.0
      python3-pysonos: Upgrade 0.0.51 -> 0.0.53
      python3-bitarray: Upgrade 2.2.1 -> 2.2.2
      python3-pyusb: Upgrade 1.2.0 -> 1.2.1
      python3-zeroconf: Upgrade 0.31.0 -> 0.33.1
      python3-yamlloader: Upgrade 1.0.0 -> 1.1.0
      python3-astroid: Upgrade 2.6.2 -> 2.6.5
      python3-pkgconfig: Upgrade 1.5.4 -> 1.5.5

Luan Rafael Carneiro (1):
      libwebsockets: Update 4.2.0 -> 4.2.1

Luca Boccassi (2):
      dbus-broker: remove deprecated linux-4-17 option
      dbus-broker: enforce required versions of libselinux and libaudit

Marek Vasut (1):
      nss: Fix build on Centos 7

Martin Jansa (1):
      rygel: require gobject-introspection-data in DISTRO_FEATURES

Masaki Ambai (1):
      nss: add CVE-2006-5201 to allowlist

Oleksandr Kravchuk (1):
      iwd: update to 1.15

Olivier Georget (1):
      libpfm4 4.10.1 : enable arm64 host platform

Ovidiu Panait (1):
      libeigen: update LICENSE information

Pascal Bach (1):
      python3-thrift: support native recipe

Persian Prince (1):
      samba: Don't guess dirs for perllocal.pod removing

Peter Bergin (4):
      linuxptp: use install from makefile and install more apps
      linuxptp: add homepage
      linuxptp: ship example configurations in separate package
      hiredis: add cmake config file for pkgconfig

Peter Kjellerstedt (3):
      net-snmp: A little clean up
      net-snmp: Support building for native
      cryptsetup: Only recommend kernel modules when building for target

Philip Balister (1):
      fftw: Update recipe to 3.3.9.

Pierre-Jean Texier (5):
      libtinyxml2: upgrade 8.1.0 -> 9.0.0
      sshfs-fuse: upgrade 3.7.1 -> 3.7.2
      monit: upgrade 5.27.2 -> 5.28.0
      spitools: upgrade 0.8.7 -> 1.0.0
      linuxptp: fix upstream version check

Ross Burton (1):
      zsync-curl: add recipe

Sam Van Den Berge (1):
      libiio: fix installing libiio when python3 bindings are enabled

Sekine Shigeki (2):
      add CVE-2011-2411 to allowlist
      ntp: add CVE-2016-9312 to allowlist

Signed-off-by: Bartosz Golaszewski (1):
      Revert "libgpiod: ptest: warn if the gpio-mockup kernel module is not selected"

Tim Orling (8):
      libcgi-perl: upgrade 4.51 -> 4.53
      libcrypt-openssl-guess-perl: upgrade 0.12 -> 0.13
      libextutils-cppguess-perl: upgrade 0.21 -> 0.23
      libio-socket-ssl-perl: upgrade 2.068 -> 2.071
      libmoo-perl: upgrade 2.004000 -> 2.005004
      libnet-dns-perl: upgrade 1.26 -> 1.31
      libtest-warnings-perl: upgrade 0.028 -> 0.030
      logcheck: upgrade 1.3.20 -> 1.3.23

Tony Tascioglu (2):
      libyang: create recipe for libyang
      redis: upgrade to 6.2.4

Trevor Gamblin (9):
      libnftnl: upgrade 1.1.9 -> 1.2.0
      nftables: upgrade 0.9.8 -> 0.9.9
      python3-yarl: backport fix for test_url_query test
      python3-yappi: fix ptests
      python3-django: upgrade 2.2.23 -> 2.2.24
      python3-django: upgrade 3.2.4 -> 3.2.5
      python3-geomet: add recipe
      python3-cassandra-driver: add geomet to RDEPENDS, remove DISTUTILS options
      python3-geomet: Add missing RDEPENDS; add to packagegroup-meta-python

Yi Zhao (14):
      libldb: upgrade 1.5.8 -> 2.3.0
      samba: upgrade 4.10.18 -> 4.14.4
      samba: update smb.conf
      libparse-yapp-perl: add recipe
      dhcp-relay: update bundled bind to 9.11.32
      dhcp-relay: disable backtrace in bundled bind
      dhcp-relay: update 4.4.2 -> 4.4.2-P1
      packagegroup-meta-networking: add dhcp-relay
      samba: disable check fcntl RW_HINTS when configure
      samba: upgrade 4.14.4 -> 4.14.5
      minifi-cpp: set correct python processor directory in configure file
      samba: fix shebang for pidl
      samba: add missing runtime dependency for pidl
      audit: upgrade 3.0.1 -> 3.0.2

Zoltán Böszörményi (2):
      mariadb: Use qemu to run cross-compiled binaries
      mariadb: Upgrade to 10.5.11

hayashi.satoshi@fujitsu.com (1):
      dracut: add CVE-2010-4176 to allowlist

ito-yuichi@fujitsu.com (2):
      cyrus-sasl: add CVE-2020-8032 to allowlist
      dovecot: add CVE-2016-4983 to allowlist

massimo toscanelli (1):
      sysbench: fix memory test

wangmy (8):
      samba: Solve the dependency problem when installing Samba
      fatresize: upgrade 1.0.2 -> 1.1.0
      xfsprogs: upgrade 5.10.0 -> 5.12.0
      ctags: upgrade 5.9.20210627.0 -> 5.9.20210711.0
      icewm: upgrade 2.3.4 -> 2.6.0
      yelp: upgrade 40.2 -> 40.3
      live555: upgrade 20210406 -> 20210710
      modemmanager: upgrade 1.16.6 -> 1.16.8

zangrc (49):
      python3-idna: upgrade 3.1 -> 3.2
      netplan: upgrade 0.101 -> 0.102
      wireshark: upgrade 3.4.5 -> 3.4.6
      tracker: upgrade 3.0.4 -> 3.1.1
      tracker-miners: upgrade 3.0.5 -> 3.1.1
      rasdaemon: upgrade 0.6.6 -> 0.6.7
      speedtest-cli: upgrade 2.1.2 -> 2.1.3
      abseil-cpp: upgrade 20210324 -> 20210324.2
      cryptsetup: upgrade 2.3.5 -> 2.3.6
      ctags: upgrade 5.9.20210502.0 -> 5.9.20210606.0
      opencl-clhpp: upgrade 2.0.13 -> 2.0.14
      protobuf: upgrade 3.17.0 -> 3.17.3
      toybox: upgrade 0.8.4 -> 0.8.5
      fuse3: upgrade 3.10.3 -> 3.10.4
      evince: upgrade 40.1 -> 40.2
      mosquitto: upgrade 2.0.10 -> 2.0.11
      ctags: upgrade 5.9.20210606.0 -> 20210613.0
      fsverity-utils: upgrade 1.3 -> 1.4
      googletest: upgrade 1.10.0 -> 1.11.0
      mg: upgrade 20210314 -> 20210609
      nano: upgrade 5.7 -> 5.8
      openvpn: upgrade 2.5.2 -> 2.5.3
      snort: upgrade 2.9.17.1 -> 2.9.18
      function2: upgrade 4.1.0 -> 4.2.0
      python3-configargparse: upgrade 1.4.1 -> 1.5
      python3-grpcio-tools: upgrade 1.37.0 -> 1.38.1
      python3-h5py: upgrade 3.2.1 -> 3.3.0
      python3-isort: upgrade 5.8.0 -> 5.9.1
      can-utils: upgrade 2020.12.0 -> 2021.06.0
      ctags: upgrade 5.9.20210620.0 -> 5.9.20210627.0
      python3-gast: upgrade 0.4.0 -> 0.5.0
      python3-grpcio: upgrade 1.38.0 -> 1.38.1
      python3-haversine: upgrade 2.3.0 -> 2.3.1
      python3-m2crypto: upgrade 0.37.1 -> 0.38.0
      python3-pyrsistent: upgrade 0.17.3 -> 0.18.0
      babl: upgrade 0.1.86 -> 0.1.88
      python3-pyusb: upgrade 1.1.1 -> 1.2.0
      python3-google-api-python-client: upgrade 2.10.0 -> 2.12.0
      firewalld: upgrade 0.9.3 -> 0.9.4
      strongswan: upgrade 5.9.2 -> 5.9.3
      opencl-clhpp: upgrade 2.0.14 -> 2.0.15
      python3-cffi: upgrade 1.14.5 -> 1.14.6
      python3-configargparse: upgrade 1.5 -> 1.5.1
      python3-cryptography-vectors: upgrade 3.4.6 -> 3.4.7
      python3-flask-migrate: upgrade 3.0.0 -> 3.0.1
      python3-flask-socketio: upgrade 5.0.3 -> 5.1.0
      python3-isort: upgrade 5.9.1 -> 5.9.2
      python3-networkx: upgrade 2.5.1 -> 2.6.1
      python3-gnupg: upgrade 0.4.6 -> 0.4.7

zhengruoqin (30):
      opensaf: upgrade 5.21.03 -> 5.21.06
      fio: upgrade 3.26 -> 3.27
      gensio: upgrade 2.2.5 -> 2.2.7
      memtester: upgrade 4.5.0 -> 4.5.1
      graphene: upgrade 1.10.2 -> 1.10.6
      iozone3: upgrade 490 -> 492
      net-snmp: upgrade 5.9 -> 5.9.1
      rsnapshot: upgrade 1.4.3 -> 1.4.4
      rsyslog: upgrade 8.2104.0 -> 8.2106.0
      python3-absl: upgrade 0.12.0 -> 0.13.0
      ctags: upgrade 5.9.20210613.0 -> 5.9.20210620.0
      fwts: upgrade 21.03.00 -> 21.06.00
      grpc: upgrade 1.38.0 -> 1.38.1
      libconfig: upgrade 1.7.2 -> 1.7.3
      satyr: upgrade 0.37 -> 0.38
      libnet-telnet-perl: upgrade 3.04 -> 3.05
      python3-scrypt: upgrade 0.8.17 -> 0.8.18
      python3-urllib3: upgrade 1.26.5 -> 1.26.6
      python3-sqlalchemy: upgrade 1.4.17 -> 1.4.20
      python3-qrcode: upgrade 6.1 -> 7.1
      python3-regex: upgrade 2021.4.4 -> 2021.7.6
      python3-sentry-sdk: upgrade 1.1.0 -> 1.2.0
      python3-tqdm: upgrade 4.61.1 -> 4.61.2
      python3-xlsxwriter: upgrade 1.4.3 -> 1.4.4
      ostree: upgrade 2021.2 -> 2021.3
      span-lite: upgrade 0.9.2 -> 0.10.0
      python3-pymisp: upgrade 2.4.143 -> 2.4.144
      python3-protobuf: upgrade 3.17.0 -> 3.17.3
      python3-pulsectl: upgrade 21.5.17 -> 21.5.18
      python3-pytun: upgrade 2.3.0 -> 2.4.1

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: Ie45184e6f308aa2fc98ee6edf4a3ca1c4afbb5b4
diff --git a/meta-openembedded/meta-filesystems/README b/meta-openembedded/meta-filesystems/README
index edcf8bf..78a4429 100644
--- a/meta-openembedded/meta-filesystems/README
+++ b/meta-openembedded/meta-filesystems/README
@@ -30,7 +30,7 @@
 
    git send-email -1 -M \
         --to openembedded-devel@lists.openembedded.org \
-        --subject-prefix=meta-filesystems][PATCH
+        --subject-prefix='meta-filesystems][PATCH'
 
 
 Table of Contents
@@ -99,4 +99,3 @@
 
   --- xfsprogs ---
   It provides XFS filesystem utilities.
-
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_3.7.1.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_3.7.2.bb
similarity index 92%
rename from meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_3.7.1.bb
rename to meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_3.7.2.bb
index 1db3284..2debc6d 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_3.7.1.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_3.7.2.bb
@@ -7,7 +7,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "git://github.com/libfuse/sshfs"
-SRCREV = "8059e2ce630dd2b984f7a6c44a2b5291b0fe2abc"
+SRCREV = "9700b353700589dcc462205c638bcb40219a49c2"
 S = "${WORKDIR}/git"
 
 inherit meson ptest
diff --git a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.3.bb b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.4.bb
similarity index 94%
rename from meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.3.bb
rename to meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.4.bb
index 72d0cd3..32dab3e 100644
--- a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.3.bb
+++ b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.4.bb
@@ -13,7 +13,7 @@
 
 SRC_URI = "https://github.com/libfuse/libfuse/releases/download/fuse-${PV}/fuse-${PV}.tar.xz \
 "
-SRC_URI[sha256sum] = "eb8373f208b05a39702f9f437f6e49caf4b1ace26a9acb68110b49912078560f"
+SRC_URI[sha256sum] = "9365b74fd8471caecdb3cc5adf25a821f70a931317ee9103d15bd39089e3590d"
 
 S = "${WORKDIR}/fuse-${PV}"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/fatresize/fatresize/0001-build-Do-not-build-.sgml-file.patch b/meta-openembedded/meta-filesystems/recipes-utils/fatresize/fatresize/0001-build-Do-not-build-.sgml-file.patch
new file mode 100644
index 0000000..c754f21
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-utils/fatresize/fatresize/0001-build-Do-not-build-.sgml-file.patch
@@ -0,0 +1,27 @@
+From b16373da7e5a45cf92df83b39e2fdee939439c84 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 17 Jul 2021 08:55:42 -0700
+Subject: [PATCH] build: Do not build .sgml file
+
+It needs docbook-to-man tool which we do not have recipe for
+
+Upstream-Status: OE-Specific [needs native docbook-to-man tool]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 2becb84..858df00 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -14,4 +14,4 @@ SUFFIXES = .1
+ CLEANFILES = $(man_MANS)
+ 
+ .sgml.1:
+-	docbook-to-man $< > $@
++	@echo "Needs docbook-to-man"
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/fatresize/fatresize_1.0.2.bb b/meta-openembedded/meta-filesystems/recipes-utils/fatresize/fatresize_1.0.2.bb
deleted file mode 100644
index 88d495b..0000000
--- a/meta-openembedded/meta-filesystems/recipes-utils/fatresize/fatresize_1.0.2.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "Resize FAT partitions using libparted"
-SECTION = "console/tools"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-SRC_URI = "git://salsa.debian.org/parted-team/fatresize.git;protocol=https"
-SRCREV = "3f80afc76ad82d4a1b852a6c8dea24cd9f5e7a24"
-
-PV = "1.0.2-11"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "parted"
-
-inherit autotools pkgconfig
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/fatresize/fatresize_1.1.0.bb b/meta-openembedded/meta-filesystems/recipes-utils/fatresize/fatresize_1.1.0.bb
new file mode 100644
index 0000000..ec7e7f9
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-utils/fatresize/fatresize_1.1.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Resize FAT partitions using libparted"
+SECTION = "console/tools"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "git://salsa.debian.org/parted-team/fatresize.git;protocol=https \
+           file://0001-build-Do-not-build-.sgml-file.patch \
+          "
+SRCREV = "12da22087de2ec43f0fe5af1237389e94619c483"
+
+PV = "1.1.0"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "parted"
+
+inherit autotools pkgconfig
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.10.0.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.12.0.bb
similarity index 96%
rename from meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.10.0.bb
rename to meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.12.0.bb
index 509dbd6..c2d0595 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.10.0.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.12.0.bb
@@ -12,7 +12,7 @@
            file://0002-include-include-xfs-linux.h-after-sys-mman.h.patch \
            file://0001-support-usrmerge.patch \
            "
-SRC_URI[sha256sum] = "e04017e46d43e4d54b9a560fd7cea922520f8f6ef882404969d20cd4e5c790e9"
+SRC_URI[sha256sum] = "bec44445cf18f49e63971d4f27dc4e90a17b118b852714a1104b621ea30e3507"
 inherit autotools-brokensep
 
 PACKAGES =+ "${PN}-fsck ${PN}-mkfs ${PN}-repair libhandle"
diff --git a/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.86.bb b/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.88.bb
similarity index 86%
rename from meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.86.bb
rename to meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.88.bb
index d264bf8..e35044c 100644
--- a/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.86.bb
+++ b/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.88.bb
@@ -15,6 +15,6 @@
 CFLAGS_append_toolchain-clang_riscv64 = " -ffp-exception-behavior=ignore "
 
 SRC_URI = "https://download.gimp.org/pub/${BPN}/0.1/${BP}.tar.xz"
-SRC_URI[sha256sum] = "0b3f595159ad1b216cd729c0504c3a5f6cf780c641f4dc63fc164f3c0382c8f0"
+SRC_URI[sha256sum] = "4f0d7f4aaa0bb2e725f349adf7b351a957d9fb26d555d9895a7af816b4167039"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.30.bb b/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.30.bb
index bb0cd1f..1fc8832 100644
--- a/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.30.bb
+++ b/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.30.bb
@@ -6,7 +6,6 @@
     intltool-native \
     babl \
     glib-2.0 \
-    pango \
     cairo \
     expat \
     zlib \
@@ -28,7 +27,7 @@
 "
 SRC_URI[sha256sum] = "c112782cf4096969e23217ccdfabe42284e35d5435ff0c43d40e4c70faeca8dd"
 
-PACKAGECONFIG ??= "gexiv2 jpeg libpng libraw librsvg poppler sdl2"
+PACKAGECONFIG ??= "gexiv2 jpeg libpng libraw librsvg pango poppler sdl2"
 PACKAGECONFIG_class-native = "libpng librsvg"
 
 PACKAGECONFIG[jasper] = "-Djasper=enabled,-Djasper=disabled,jasper"
@@ -40,6 +39,7 @@
 PACKAGECONFIG[libpng] = "-Dlibpng=enabled,-Dlibpng=disabled,libpng"
 PACKAGECONFIG[libraw] = "-Dlibraw=enabled,-Dlibraw=disabled,libraw"
 PACKAGECONFIG[librsvg] = "-Dlibrsvg=enabled,-Dlibrsvg=disabled,librsvg"
+PACKAGECONFIG[pango] = "-Dpango=enabled -Dpangocairo=enabled,-Dpango=disabled -Dpangocairo=disabled,pango"
 PACKAGECONFIG[poppler] = "-Dpoppler=enabled,-Dpoppler=disabled,poppler"
 PACKAGECONFIG[sdl] = "-Dsdl1=enabled,-Dsdl1=disabled,virtual/libsdl"
 PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2"
diff --git a/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.24.bb b/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.24.bb
index e729d9d..be05354 100644
--- a/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.24.bb
+++ b/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.24.bb
@@ -51,11 +51,6 @@
                 --disable-check-update \
                 --without-wmf"
 
-EXTRA_OECONF_append_mipsarch = " --disable-vector-icons"
-EXTRA_OECONF_append_libc-musl_riscv32 = " --disable-vector-icons"
-EXTRA_OECONF_append_libc-musl_x86 = " --disable-vector-icons"
-EXTRA_OECONF_append_toolchain-clang_arm = " --disable-vector-icons"
-
 do_configure_append() {
     find ${B} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
     find ${B} -name Makefile | xargs sed -i s:'-I/usr/include':'-I${STAGING_INCDIR}':g
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.38.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.40.0.bb
similarity index 82%
rename from meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.38.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.40.0.bb
index 162748d..b1604e8 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.38.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.40.0.bb
@@ -3,7 +3,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 SECTION = "x11/gnome"
 
-SRC_URI[archive.sha256sum] = "45f60f41330d27715cce1315af123f94f1c2cdedb68b6bed3b309866eec44f58"
+SRC_URI[archive.sha256sum] = "cf7f22a4c9200421d8d3325c5c1b8b93a36843650c9f95d6451e20f0bcb24533"
 
 DEPENDS = "dbus glib-2.0 intltool-native"
 
@@ -18,6 +18,7 @@
 
 FILES_${PN} += " \
     ${datadir}/dbus-1 \
+    ${systemd_user_unitdir} \
     ${libdir}/gio/modules/*.so \
 "
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_40.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_40.2.bb
similarity index 93%
rename from meta-openembedded/meta-gnome/recipes-gnome/evince/evince_40.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/evince/evince_40.2.bb
index 3b1a978..fa5125b 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_40.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_40.2.bb
@@ -24,7 +24,7 @@
 def gnome_verdir(v):
     return oe.utils.trim_version(v, 1)
 
-SRC_URI[archive.sha256sum] = "7a666363c350af2e3bbba7f14b3c1befc5012f9ed3d9d073447f4c59f33dcf2d"
+SRC_URI[archive.sha256sum] = "0ff7ec79376a8a97ac4cd274d32e804c7e236ef2d2d5d3f646de6eb882a63c77"
 
 GTKDOC_MESON_OPTION = "gtk_doc"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.inc b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.inc
index 870a9c0..86c7dea 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.inc
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.inc
@@ -9,5 +9,5 @@
 
 inherit gnomebase upstream-version-is-even
 
-SRC_URI[archive.sha256sum] = "eac75f348aa5defbe9473fa30ab6084635ee64d8e3eaaec60a62c27f149c3e22"
-PV = "3.40.1"
+SRC_URI[archive.sha256sum] = "ec82951639f32a5cece80a8b0b9aa3f66b7d318e3ee2c1c35234f2e2bde8a418"
+PV = "3.40.2"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.38.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.40.0.bb
similarity index 76%
rename from meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.38.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.40.0.bb
index 379857c..e4aeea2 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.38.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.40.0.bb
@@ -13,11 +13,11 @@
 
 inherit gnomebase gsettings itstool gnome-help gettext upstream-version-is-even mime-xdg
 
-SRC_URI[archive.sha256sum] = "94a0130e12d321aa119793a14d09716523e2e4a61f29570cee53fd88dd6abc57"
+SRC_URI[archive.sha256sum] = "4a2886a3966200fb0a9cbba4e2b79f8dad9d26556498aacdaed71775590b3c0d"
 
 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'packagekit', '', d)}"
 
-PACKAGECONFIG[nautilus] = "-Dnautilus-actions=true,-Dnautilus-actions=false,nautilus"
+PACKAGECONFIG[nautilus] = "-Dnautilus-actions=enabled,-Dnautilus-actions=disabled,nautilus"
 PACKAGECONFIG[packagekit] = "-Dpackagekit=true,-Dpackagekit=false,"
 
 FILES_${PN} += " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.3.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.3.3.bb
similarity index 66%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.3.2.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.3.3.bb
index 8eba859..5d7a9a6 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.3.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.3.3.bb
@@ -9,8 +9,7 @@
 
 inherit gnomebase gobject-introspection gtk-doc vala
 
-SRC_URI[archive.md5sum] = "3c8da1a8489255f2aaa5fdb690308e5d"
-SRC_URI[archive.sha256sum] = "a48c4d5ce9a9ed05ba8bc8fdeb9af2d1a7bd8091c2911d6c37223c4f488f7c72"
+SRC_URI[archive.sha256sum] = "272400f73a375a7e88fdf1e12591bfb8f3f03edf01780cadcd74f70b613e5c04"
 
 do_compile_prepend() {
     export GIR_EXTRA_LIBS_PATH="${B}/gnome-autoar/.libs"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_3.36.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_40.1.bb
similarity index 83%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_3.36.3.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_40.1.bb
index 1045dea..869f820 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_3.36.3.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_40.1.bb
@@ -12,11 +12,12 @@
     libsecret \
     libpwquality \
     udisks2 \
+    libhandy \
 "
 
 GNOMEBASEBUILDCLASS = "meson"
 
-inherit gnomebase gsettings gtk-icon-cache gettext features_check upstream-version-is-even mime-xdg
+inherit gnomebase gsettings gtk-icon-cache gettext features_check mime-xdg
 
 REQUIRED_DISTRO_FEATURES = "x11 polkit"
 
@@ -25,7 +26,7 @@
 # As soon as elogind is of interest this needs rework: meson option is combo
 PACKAGECONFIG[systemd] = "-Dlogind=libsystemd,-Dlogind=none,systemd"
 
-SRC_URI[archive.sha256sum] = "dd033d3f36ab070bc72317cf3045e5b4927765543f1bce7612b2c7f96595167a"
+SRC_URI[archive.sha256sum] = "2a4b99ac11ca23394b28c5584b9e96284e8c5a4da65cf06207de54f42b1ff141"
 
 FILES_${PN} += " \
     ${datadir}/metainfo \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.36.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.40.0.bb
similarity index 83%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.36.3.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.40.0.bb
index 6dd9894..e6d946c 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.36.3.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.40.0.bb
@@ -18,8 +18,7 @@
     gnome-panel \
 "
 
-SRC_URI[archive.md5sum] = "690b0d78c7d9265183ef18387b12fa50"
-SRC_URI[archive.sha256sum] = "2dba9ea40f2da81c22954a8ccc29f8f1fa4ca8395a6bb552506635832751c1a7"
+SRC_URI[archive.sha256sum] = "e03f33100f1982019c2e59bbdcd664549ec5caa0ef2d99e2c0e1272cea08bb3b"
 
 do_install_append() {
     # no oe-layer has compiz -> remove dead session
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_3.34.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_3.34.0.bb
deleted file mode 100644
index cf20225..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_3.34.0.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "GNOME font viewer"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-SECTION = "x11/gnome"
-
-DEPENDS = " \
-    gtk+3 \
-    gnome-desktop3 \
-"
-
-GNOMEBASEBUILDCLASS = "meson"
-
-inherit gnomebase gtk-icon-cache gettext features_check upstream-version-is-even mime-xdg
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI[archive.md5sum] = "76004a8986ea622b09c408b01a6f42e5"
-SRC_URI[archive.sha256sum] = "aa6f0583e5f93aec095e537f0638b29de3d02491f0131ef584a7c55d39d6b98b"
-
-FILES_${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/metainfo \
-    ${datadir}/thumbnailers \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_40.0.bb
new file mode 100644
index 0000000..a2f0af6
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_40.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "GNOME font viewer"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SECTION = "x11/gnome"
+
+DEPENDS = " \
+    gtk+3 \
+    gnome-desktop3 \
+    libhandy \
+"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gtk-icon-cache gettext features_check mime-xdg
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[archive.sha256sum] = "d2cc7686946690dc274a5d0c72841d358d0ccd42d3f34993c698bdf13588fe42"
+
+FILES_${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/metainfo \
+    ${datadir}/thumbnailers \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_3.36.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_40.0.bb
similarity index 88%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_3.36.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_40.0.bb
index 3fc16bb..fce28bd 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_3.36.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_40.0.bb
@@ -17,12 +17,11 @@
     ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)} \
 "
 
-inherit gnomebase gsettings features_check remove-libtool gettext upstream-version-is-even
+inherit gnomebase gsettings features_check remove-libtool gettext
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI[archive.md5sum] = "38f0732845a510a8dff4f154c3406f65"
-SRC_URI[archive.sha256sum] = "a264b57a8d1a71fdf0d66e8cd6033d013fb828be279c35766545eb9bb3734f87"
+SRC_URI[archive.sha256sum] = "a3d24db08ee2fdf240fbbf0971a98c8ee295aa0e1a774537f4ea938038a3b931"
 SRC_URI += " \
     file://0001-Set-paths-to-ssh-agent-and-ssh-add-by-configure-opti.patch \
     file://musl.patch \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.36.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.40.0.bb
similarity index 88%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.36.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.40.0.bb
index c3142ad..4b79fe2 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.36.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.40.0.bb
@@ -11,8 +11,7 @@
 
 DEPENDS = "glib-2.0"
 
-SRC_URI[archive.md5sum] = "44a37e1f8d4cac1dca0c41b57b49c2d0"
-SRC_URI[archive.sha256sum] = "1c8f62990833ca41188dbb80c5e99d99b57a62608ca675bbcd37bc2244742f2e"
+SRC_URI[archive.sha256sum] = "585c4f979f6f543b77bfdb4fb01eb18ba25c2aec5b7866c676d929616fb2c3fa"
 
 # backend is required for gnome-control-center
 PACKAGECONFIG = "backend other"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_3.34.5.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_3.34.5.bb
index 9619628..77b9015 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_3.34.5.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_3.34.5.bb
@@ -49,6 +49,8 @@
     done
 }
 
+GSETTINGS_PACKAGE = "${PN}-gsettings"
+
 FILES_${PN} += " \
     ${datadir}/dbus-1 \
     ${datadir}/gnome-control-center \
@@ -56,9 +58,9 @@
     ${systemd_user_unitdir} \
 "
 
-RDEPENDS_${PN} += "gsettings-desktop-schemas gdm-base librsvg-gtk"
+RDEPENDS_${PN} += "gsettings-desktop-schemas gdm-base librsvg-gtk ${PN}-gsettings"
 
-PACKAGES =+ "${PN}-tools"
+PACKAGES =+ "${PN}-tools ${PN}-gsettings"
 FILES_${PN}-tools = "${bindir}/*-tool"
 RDEPENDS_${PN}-tools = "python3-core"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.36.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.40.2.bb
similarity index 83%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.36.2.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.40.2.bb
index ce54faa..62534a9 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.36.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.40.2.bb
@@ -11,6 +11,7 @@
     glib-2.0-native \
     intltool-native \
     yelp-tools-native \
+    docbook-xsl-stylesheets-native libxslt-native \
     desktop-file-utils-native \
     gtk+3 \
     gsettings-desktop-schemas \
@@ -19,8 +20,7 @@
     libpcre2 \
 "
 
-SRC_URI[archive.md5sum] = "08150cbf2e23dd4f60f959a6eca8ef0c"
-SRC_URI[archive.sha256sum] = "41d1b6a3dc97c066e294acdb7f36931e81668638dcc92ffa25bca3ddebacdf46"
+SRC_URI[archive.sha256sum] = "4c79af8ffe8bd3a5daca1911ea2c0acd6872860a1dd5d7eea219f4ab4ae556ac"
 SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch"
 
 EXTRA_OECONF += " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/graphene/graphene_1.10.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/graphene/graphene_1.10.6.bb
similarity index 63%
rename from meta-openembedded/meta-gnome/recipes-gnome/graphene/graphene_1.10.2.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/graphene/graphene_1.10.6.bb
index ef18986..2e0d502 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/graphene/graphene_1.10.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/graphene/graphene_1.10.6.bb
@@ -9,8 +9,10 @@
 
 inherit gnomebase gobject-introspection gtk-doc
 
-SRC_URI[archive.md5sum] = "a2c26c4f44a02ca053e0e9afb63cc94c"
-SRC_URI[archive.sha256sum] = "e97de8208f1aac4f913d4fa71ab73a7034e807186feb2abe55876e51c425a7f6"
+SRC_URI[archive.md5sum] = "390139e704772b915ff2b7cac56c24ae"
+SRC_URI[archive.sha256sum] = "80ae57723e4608e6875626a88aaa6f56dd25df75024bd16e9d77e718c3560b25"
+
+PACKAGECONFIG[introspection] = "-Dintrospection=enabled,-Dintrospection=disabled,"
 
 GTKDOC_MESON_OPTION = "gtk_doc"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gspell/gspell_1.8.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/gspell/gspell_1.9.1.bb
similarity index 75%
rename from meta-openembedded/meta-gnome/recipes-gnome/gspell/gspell_1.8.4.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gspell/gspell_1.9.1.bb
index f7f493d..d6de146 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gspell/gspell_1.8.4.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gspell/gspell_1.9.1.bb
@@ -7,4 +7,4 @@
 
 inherit gnomebase gettext gobject-introspection
 
-SRC_URI[archive.sha256sum] = "cf4d16a716e813449bd631405dc1001ea89537b8cdae2b8abfb3999212bd43b4"
+SRC_URI[archive.sha256sum] = "dcbb769dfdde8e3c0a8ed3102ce7e661abbf7ddf85df08b29915e92cd723abdd"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gthumb/gthumb_3.10.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/gthumb/gthumb_3.10.3.bb
new file mode 100644
index 0000000..00b1873
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gthumb/gthumb_3.10.3.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Image viewer and browser"
+LICENSE="GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+REQUIRED_DISTRO_FEATURES = "polkit gobject-introspection-data"
+
+DEPENDS = " \
+    glib-2.0-native \
+    bison-native \
+    yelp-tools-native \
+    gtk+3 \
+    gsettings-desktop-schemas \
+    zlib \
+    jpeg \
+    exiv2 \
+    colord \
+    lcms \
+    libraw \
+    librsvg \
+    libsoup-2.4 \
+    json-glib \
+    libsecret \
+"
+
+inherit features_check gnomebase gnome-help gsettings itstool mime-xdg
+
+SRC_URI[archive.sha256sum] = "dab73f77cc2963ebe90112972c301441d228af3003cfef3f8b7300a6d5d3c212"
+
+FILES_${PN} += "${datadir}/metainfo"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview4_4.6.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview4_4.8.1.bb
similarity index 72%
rename from meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview4_4.6.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview4_4.8.1.bb
index 5a420e6..f7d040d 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview4_4.6.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview4_4.8.1.bb
@@ -16,9 +16,8 @@
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtksourceview/4.6/${PNAME}-${PV}.tar.xz"
-SRC_URI[md5sum] = "4d4cff3a57a371bff4793e97d50404ef"
-SRC_URI[sha256sum] = "63f487a7ab59612ffa9e7be1883dbd274ab1016afcede3239b93b0fc384df874"
+SRC_URI = "https://download.gnome.org/sources/gtksourceview/4.8/${PNAME}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "d163d71b5fcafbc5b1eec6dd841edbdbcddd3a7511cd5fdcffd86b8bbfe69ac1"
 
 GIR_MESON_OPTION = 'gir'
 GTKDOC_MESON_OPTION = "gtk_doc"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.44.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.48.1.bb
similarity index 95%
rename from meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.44.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.48.1.bb
index c8c16a3..39f681f 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.44.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.48.1.bb
@@ -11,8 +11,7 @@
 RDEPENDS_${PN} += "gsettings-desktop-schemas"
 
 SRC_URI = "https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive"
-SRC_URI[archive.md5sum] = "72383474f52d05c21ef2be96d0b91974"
-SRC_URI[archive.sha256sum] = "50ef3245d1b03666a40455109169a2a1bd51419fd2d51f9fa6cfd4f89f04fb46"
+SRC_URI[archive.sha256sum] = "b2ea4f271aad2711f16b43c03151e2ec5a9874ff1a21142ef6d6406486a19dc2"
 
 # depends on gsettings-desktop-schemas->gcr->gtk+3-> x11
 REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.17.13.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb
similarity index 91%
rename from meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.17.13.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb
index de33fd8..a65ed05 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.17.13.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb
@@ -30,4 +30,4 @@
 
 EXTRA_OEMESON = "-Dalways_build_tests=false"
 
-SRC_URI[archive.sha256sum] = "eab9ef792c3c2b9ece19d45aea15225aba8df2521bc12785b1b2d3318d8c472e"
+SRC_URI[archive.sha256sum] = "dd8592eeb6512ad0a8cf5c8be8c72e76f74bfe6b23e4dd93f0756ee0716804c7"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.36.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.40.0.bb
similarity index 86%
rename from meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.36.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.40.0.bb
index 0cb59cd..5865ca7 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.36.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.40.0.bb
@@ -13,6 +13,8 @@
     startup-notification \
     libcanberra \
     libgtop \
+    libxres \
+    libxpresent \
 "
 
 
@@ -21,8 +23,7 @@
 
 inherit gnomebase gsettings gettext upstream-version-is-even features_check
 
-SRC_URI[archive.md5sum] = "d1171705829bbebd42ac08ec49a9a90a"
-SRC_URI[archive.sha256sum] = "11f07693e2b266840759063a4bc807346070e8e7fec8f53cd0757f6662c1b323"
+SRC_URI[archive.sha256sum] = "224c1f65487eac21f0c1d9856152343768ee726c48b1a8a2835a46a8ad9015b5"
 SRC_URI += "file://0001-drop-zenity-detection.patch"
 
 PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,libxinerama"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_40.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_40.2.bb
similarity index 91%
rename from meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_40.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_40.2.bb
index 75fc032..ee58df2 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_40.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_40.2.bb
@@ -22,7 +22,7 @@
 def gnome_verdir(v):
     return oe.utils.trim_version(v, 1)
 
-SRC_URI[archive.sha256sum] = "8ecfb90174a0bd5815b1ceb9cbfcd91fec0fb5e34907a4f2df2d05e5d6c99d33"
+SRC_URI[archive.sha256sum] = "b71ef2fe07e5eea89a2bb1e5bd30947bd18873bfb30f79cbf17edfbd4d20f60d"
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-meson.build-Just-warn-if-we-build-without-libseccomp.patch b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-meson.build-Just-warn-if-we-build-without-libseccomp.patch
index c9eb799..53c5f26 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-meson.build-Just-warn-if-we-build-without-libseccomp.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-meson.build-Just-warn-if-we-build-without-libseccomp.patch
@@ -23,8 +23,8 @@
 index 71a9df4..1eaa1a0 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -279,7 +279,7 @@ cpu_supports_seccomp = not unsupported_cpus.contains(host_cpu)
- seccomp_required = system_supports_seccomp and cpu_supports_seccomp
+@@ 299,7 +299,7 @@ cpu_supports_seccomp = not unsupported_cpus.contains(host_cpu)
+ seccomp_required = system_supports_seccomp and cpu_supports_seccomp and get_option('seccomp') and get_option('extract')
  
  if not libseccomp.found() and seccomp_required
 -  error('Libseccomp is mandatory for sandboxed metadata extraction')
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.0.5.bb b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.1.1.bb
similarity index 91%
rename from meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.0.5.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.1.1.bb
index 6672195..7287ec2 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.0.5.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.1.1.bb
@@ -15,7 +15,7 @@
 
 inherit gnomebase gsettings gobject-introspection vala bash-completion features_check
 
-SRC_URI[archive.sha256sum] = "c9be14871b1398e6e656a354a8f8f59e69e93169017f2b28308ef439324fd12b"
+SRC_URI[archive.sha256sum] = "e4d361351b156f2862a524415fbebf0539c781cd87c6629662f0265b4803b8b8"
 SRC_URI += "file://0001-meson.build-Just-warn-if-we-build-without-libseccomp.patch"
 
 # gobject-introspection is mandatory and cannot be configured
@@ -34,6 +34,7 @@
     png \
     tiff \
     xml \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} \
 "
 
 PACKAGECONFIG[battery]     = "-Dbattery_detection=upower,-Dbattery_detection=none,upower"
@@ -54,7 +55,7 @@
 
 # For security reasons it is strongly recommended to set add meta-security in
 # your layers and 'libseccomp' to PACKAGECONFIG".
-PACKAGECONFIG[libseccomp] = ",,libseccomp"
+PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp"
 # not yet in meta-gnome
 PACKAGECONFIG[rss]        = "-Dminer_rss=true,-Dminer_rss=false,libgrss"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.0.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.1.1.bb
similarity index 93%
rename from meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.0.4.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.1.1.bb
index 82e3d00..7d9fe9b 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.0.4.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.1.1.bb
@@ -21,7 +21,7 @@
 
 inherit gnomebase gsettings gobject-introspection vala gtk-doc manpages bash-completion features_check
 
-SRC_URI[archive.sha256sum] = "c120d81f2df94aa794b1a7953b55cfa46de318ed68e6f3b5ad4fce0c729c2483"
+SRC_URI[archive.sha256sum] = "4376e2e98454066f44f7a242e45b99b3bfe4c03b67fab19abb0ed586ca748ae7"
 
 # gobject-introspection is mandatory and cannot be configured
 REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_3.32.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_40.0.bb
similarity index 65%
rename from meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_3.32.2.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_40.0.bb
index af2bab3..f58c9ee 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_3.32.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_40.0.bb
@@ -5,17 +5,19 @@
     file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
 "
 
+GNOMEBASEBUILDCLASS = "meson"
+
 inherit gnomebase itstool
 
 DEPENDS += " \
     libxslt-native \
     libxml2-native \
+    python3-lxml-native \
     yelp-xsl \
 "
 
-SRC_URI[archive.md5sum] = "7856f9ad0492aaf9adf097f5058bfc2e"
-SRC_URI[archive.sha256sum] = "183856b5ed0b0bb2c05dd1204af023946ed436943e35e789afb0295e5e71e8f9"
+SRC_URI[archive.sha256sum] = "664bacf2f3dd65ef00a43f79487351ab64a6c4c629c56ac0ceb1723c2eb66aae"
 
-RDEPENDS_${PN} += "yelp-xsl"
+RDEPENDS_${PN} += "python3-core yelp-xsl"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.36.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_40.2.bb
similarity index 65%
rename from meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.36.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_40.2.bb
index 14a8850..99b6667 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_3.36.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_40.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "XSL stylesheets for the yelp help browser"
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPLv2.1 & GPLv2 & BSD-3-Clause"
 LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=3e2bad3c5e3990988f9fa1bc5785b147 \
+    file://COPYING;md5=8ca13a5a6972ac1620a1e42a3dacd774 \
     file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
     file://COPYING.LGPL;md5=a6f89e2100d9b6cdffcea4f398e37343 \
 "
@@ -10,8 +10,7 @@
 
 DEPENDS += "libxml2"
 
-SRC_URI[archive.md5sum] = "7d71af68fff4a92bcb2b8989f126be6c"
-SRC_URI[archive.sha256sum] = "4fe51c0233b79a4c204c68498d45f09b342c30ed02c4e418506c0e35f0904ec3"
+SRC_URI[archive.sha256sum] = "919c552f846aaec741fe51d5af416b469bcdb25c77effc3b5a15a4b4b7ff814e"
 
 RDEPENDS_${PN}_append_class-target = " libxml2 itstool"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_3.36.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_40.3.bb
similarity index 79%
rename from meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_3.36.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_40.3.bb
index b9263f5..3ea4978 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_3.36.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_40.3.bb
@@ -9,8 +9,7 @@
 # for webkitgtk
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI[archive.md5sum] = "32f879293f79b4042edc46aa13d82c71"
-SRC_URI[archive.sha256sum] = "fd4b3e23d31ad2bebe42ac8f80242b2d9bef51418bf62b59acdf2440bd94ed24"
+SRC_URI[archive.sha256sum] = "a173847851f26189be78ecbb10015d539d8cceffc7c23e8635492bc3ada5ee23"
 
 DEPENDS += " \
     libxml2-native \
diff --git a/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb b/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb
index 593e586..a45dfde 100644
--- a/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/packagegroups/packagegroup-gnome-apps.bb
@@ -4,7 +4,7 @@
 
 inherit packagegroup features_check
 
-REQUIRED_DISTRO_FEATURES = "x11"
+REQUIRED_DISTRO_FEATURES = "x11 polkit gobject-introspection-data"
 
 RDEPENDS_${PN} = " \
     evolution-data-server \
@@ -17,6 +17,7 @@
     gnome-font-viewer \
     gnome-photos \
     gnome-terminal \
+    gthumb \
     libwnck3 \
     nautilus \
     ${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'gnome-system-monitor gnome-disk-utility', '', d)} \
diff --git a/meta-openembedded/meta-initramfs/README b/meta-openembedded/meta-initramfs/README
index 79244d4..a8f17ba 100644
--- a/meta-openembedded/meta-initramfs/README
+++ b/meta-openembedded/meta-initramfs/README
@@ -23,7 +23,7 @@
 with '[meta-initramfs]' in the subject.
 
 When sending single patches, please using something like:
-'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-initramfs][PATCH'
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-initramfs][PATCH'
 
 Interm layer maintainer: Khem Raj <raj.khem@gmail.com>
 
diff --git a/meta-openembedded/meta-initramfs/recipes-core/images/initramfs-debug-image.bb b/meta-openembedded/meta-initramfs/recipes-core/images/initramfs-debug-image.bb
index c3dcd2b..601056b 100644
--- a/meta-openembedded/meta-initramfs/recipes-core/images/initramfs-debug-image.bb
+++ b/meta-openembedded/meta-initramfs/recipes-core/images/initramfs-debug-image.bb
@@ -11,7 +11,12 @@
 export IMAGE_BASENAME = "initramfs-debug-image"
 IMAGE_LINGUAS = ""
 
-IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
+# Some BSPs use IMAGE_FSTYPES_<machine override> which would override
+# an assignment to IMAGE_FSTYPES so we need anon python
+python () {
+    d.setVar("IMAGE_FSTYPES", d.getVar("INITRAMFS_FSTYPES"))
+}
+
 inherit core-image
 
 IMAGE_ROOTFS_SIZE = "8192"
diff --git a/meta-openembedded/meta-initramfs/recipes-core/images/initramfs-kexecboot-image.bb b/meta-openembedded/meta-initramfs/recipes-core/images/initramfs-kexecboot-image.bb
index 9a686f3..dd082ba 100644
--- a/meta-openembedded/meta-initramfs/recipes-core/images/initramfs-kexecboot-image.bb
+++ b/meta-openembedded/meta-initramfs/recipes-core/images/initramfs-kexecboot-image.bb
@@ -1,9 +1,13 @@
 SUMMARY = "Initramfs image for kexecboot kernel"
 DESCRIPTION = "This image provides kexecboot (linux as bootloader) and helpers."
 
-inherit image
+# Some BSPs use IMAGE_FSTYPES_<machine override> which would override
+# an assignment to IMAGE_FSTYPES so we need anon python
+python () {
+    d.setVar("IMAGE_FSTYPES", d.getVar("INITRAMFS_FSTYPES"))
+}
 
-IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
+inherit image
 
 # avoid circular dependencies
 EXTRA_IMAGEDEPENDS = ""
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb b/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
index ce975f5..4d702dc 100644
--- a/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
@@ -66,3 +66,6 @@
                      busybox \
                      coreutils \
                     "
+
+# CVE-2010-4176 affects only Fedora
+CVE_CHECK_WHITELIST += "CVE-2010-4176"
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/klibc/files/klcc-cross-accept-clang-options.patch b/meta-openembedded/meta-initramfs/recipes-devtools/klibc/files/klcc-cross-accept-clang-options.patch
index 56905a5..431c75e 100644
--- a/meta-openembedded/meta-initramfs/recipes-devtools/klibc/files/klcc-cross-accept-clang-options.patch
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/klibc/files/klcc-cross-accept-clang-options.patch
@@ -5,7 +5,7 @@
 
 --- a/klcc/klcc.in
 +++ b/klcc/klcc.in
-@@ -207,6 +207,24 @@ while ( defined($a = shift(@ARGV)) ) {
+@@ -207,6 +207,27 @@ while ( defined($a = shift(@ARGV)) ) {
      } elsif ( $a =~ /^--([sysroot=])(.*)$/ ) {
  	# Override gcc encoded sysroot
  	push(@ccopt, $a);
@@ -27,6 +27,9 @@
 +    } elsif ( $a =~ '--unwindlib=.*' ) {
 +	# Allow clang options
 +	push(@ccopt, $a);
++    } elsif ( $a =~ '-rtlib=.*' ) {
++	# Allow clang options
++	push(@ccopt, $a);
      } else {
  	die "$0: unknown option: $a\n";
      }
diff --git a/meta-openembedded/meta-multimedia/README b/meta-openembedded/meta-multimedia/README
index b4c2455..9c649ff 100644
--- a/meta-openembedded/meta-multimedia/README
+++ b/meta-openembedded/meta-multimedia/README
@@ -9,10 +9,10 @@
 branch: master
 revision: HEAD
 
-Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-multimedia]' in the subject'
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-multimedia]' in the subject
 
 When sending single patches, please use something like:
-'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-multimedia][PATCH
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-multimedia][PATCH'
 
 You are encouraged to fork the mirror on github https://github.com/openembedded/meta-openembedded to share your patches, this is preferred for patch sets consisting of more than one patch. Other services like GitLab, repo.or.cz or self hosted setups are of course accepted as well, 'git fetch <remote>' works the same on all of them. We recommend github because it is free, easy to use, has been proven to be reliable and has a really good web GUI.
 
diff --git a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp/0001-Fix-build-with-hardened-security-flags.patch b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp/0001-Fix-build-with-hardened-security-flags.patch
deleted file mode 100644
index ef0c945..0000000
--- a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp/0001-Fix-build-with-hardened-security-flags.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 6eba07bd195e0a1199a0fc62d7cc31ec376bc3dd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Mon, 31 May 2021 17:44:29 +0200
-Subject: [PATCH] Fix build with hardened security flags
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-| ../gupnp-1.2.6/examples/get-volume.c: In function 'on_introspection':
-| ../gupnp-1.2.6/examples/get-volume.c:53:17: error: format not a string literal and no format arguments [-Werror=format-security]
-|    53 |                 g_critical (error->message);
-|       |                 ^~~~~~~~~~
-| ../gupnp-1.2.6/examples/get-volume.c:114:17: error: format not a string literal and no format arguments [-Werror=format-security]
-|   114 |                 g_critical (error->message);
-|       |                 ^~~~~~~~~~
-| ../gupnp-1.2.6/examples/get-volume.c: In function 'main':
-| ../gupnp-1.2.6/examples/get-volume.c:150:17: error: format not a string literal and no format arguments [-Werror=format-security]
-|   150 |                 g_error (error->message);
-|       |                 ^~~~~~~
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
-Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gupnp/-/merge_requests/17]
----
- examples/get-volume.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/examples/get-volume.c b/examples/get-volume.c
-index 4601014..923581c 100644
---- a/examples/get-volume.c
-+++ b/examples/get-volume.c
-@@ -50,7 +50,7 @@ on_introspection (GObject *object, GAsyncResult *res, gpointer user_data)
-                 &error);
- 
-         if (error != NULL) {
--                g_critical (error->message);
-+                g_critical ("%s", error->message);
-                 g_clear_error (&error);
-         }
- 
-@@ -111,7 +111,7 @@ on_introspection (GObject *object, GAsyncResult *res, gpointer user_data)
-         g_list_free (out_names);
- 
-         if (error != NULL) {
--                g_critical (error->message);
-+                g_critical ("%s", error->message);
-                 g_clear_error (&error);
-         } else {
-                 g_print ("Current volume: %s\n",
-@@ -147,7 +147,7 @@ int main(int argc, char *argv[])
-         GUPnPContext *context = gupnp_context_new ("wlp3s0", 0, &error);
- 
-         if (error != NULL) {
--                g_error (error->message);
-+                g_error ("%s", error->message);
-         }
- 
-         GUPnPControlPoint *cp = gupnp_control_point_new (context, CONTENT_DIR);
--- 
-2.31.1
-
diff --git a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp_1.2.6.bb b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp_1.2.6.bb
deleted file mode 100644
index 294c361..0000000
--- a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp_1.2.6.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require gupnp.inc
-
-SRC_URI = " \
-    ${GNOME_MIRROR}/${BPN}/1.2/${BPN}-${PV}.tar.xz \
-    file://0001-Fix-build-with-hardened-security-flags.patch \
-"
-SRC_URI[sha256sum] = "00b20f1e478a72deac92c34723693a2ac55789ed1e4bb4eed99eb4d62092aafd"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
-                    file://libgupnp/gupnp.h;beginline=1;endline=20;md5=d78a69d9b6e63ee2dc72e7b674d97520"
diff --git a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp_1.2.7.bb b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp_1.2.7.bb
new file mode 100644
index 0000000..7ad594f
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp_1.2.7.bb
@@ -0,0 +1,7 @@
+require gupnp.inc
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/1.2/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "8441276f1afd0176e6f595026a3a507eed1809abfa04026bad3f21622b3523ec"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+                    file://libgupnp/gupnp.h;beginline=1;endline=20;md5=d78a69d9b6e63ee2dc72e7b674d97520"
diff --git a/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.38.3.bb b/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.38.3.bb
index 3fc8450..01705a8 100644
--- a/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.38.3.bb
+++ b/meta-openembedded/meta-multimedia/recipes-connectivity/rygel/rygel_0.38.3.bb
@@ -12,7 +12,10 @@
 RDEPENDS_${PN} = "gstreamer1.0-plugins-base-playback shared-mime-info"
 RRECOMMENDS_${PN} = "rygel-plugin-media-export"
 
-inherit gnomebase vala gobject-introspection gettext systemd
+inherit gnomebase vala gobject-introspection gettext systemd features_check
+
+# gobject-introspection is mandatory for libmediaart-2.0 and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
 
 SRC_URI[archive.md5sum] = "7f95401903a3f855b464d5152b9d4c07"
 SRC_URI[archive.sha256sum] = "08c21a577f7bdad26446a75ffa32778b26842c3b1188165f0b19818559747d00"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0001-include-utility-for-std-forward.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0001-include-utility-for-std-forward.patch
new file mode 100644
index 0000000..68ccb65
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd/0001-include-utility-for-std-forward.patch
@@ -0,0 +1,43 @@
+From 9bb962148672a3c20fb0119d7f71789b8ef3dc02 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Jun 2021 19:31:34 -0700
+Subject: [PATCH] include <utility> for std::forward
+
+Fixes
+../git/src/Log.hxx:121:42: error: no member named 'forward' in namespace 'std'
+        LogFormat(LogLevel::ERROR, e, fmt, std::forward<Args>(args)...);
+
+Upstream-Status: Submitted [https://github.com/MusicPlayerDaemon/MPD/pull/1201]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/Log.hxx                   | 1 +
+ src/lib/expat/ExpatParser.hxx | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/src/Log.hxx b/src/Log.hxx
+index a295ed9f6..87097b086 100644
+--- a/src/Log.hxx
++++ b/src/Log.hxx
+@@ -24,6 +24,7 @@
+ #include "util/Compiler.h"
+ 
+ #include <exception>
++#include <utility>
+ 
+ class Domain;
+ 
+diff --git a/src/lib/expat/ExpatParser.hxx b/src/lib/expat/ExpatParser.hxx
+index e1723d109..4b5221e89 100644
+--- a/src/lib/expat/ExpatParser.hxx
++++ b/src/lib/expat/ExpatParser.hxx
+@@ -25,6 +25,7 @@
+ #include <expat.h>
+ 
+ #include <stdexcept>
++#include <utility>
+ 
+ class InputStream;
+ 
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.22.6.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.22.9.bb
similarity index 97%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.22.6.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.22.9.bb
index b1fa96e..c112a40 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.22.6.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.22.9.bb
@@ -19,9 +19,10 @@
 
 SRC_URI = " \
     git://github.com/MusicPlayerDaemon/MPD;branch=v0.22.x \
+    file://0001-include-utility-for-std-forward.patch \
     file://mpd.conf.in \
 "
-SRCREV = "938728820b11d4544a071994fe3c63c6ab710e8e"
+SRCREV = "18628bf89ebfa5a806971479a71cf9b5764e500e"
 S = "${WORKDIR}/git"
 
 EXTRA_OEMESON += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '-Dsystemd=enabled -Dsystemd_system_unit_dir=${systemd_system_unitdir} -Dsystemd_user_unit_dir=${systemd_system_unitdir}', '-Dsystemd=disabled', d)}"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/packagegroups/packagegroup-meta-multimedia.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/packagegroups/packagegroup-meta-multimedia.bb
index 73b852a..0601cdd 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/packagegroups/packagegroup-meta-multimedia.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/packagegroups/packagegroup-meta-multimedia.bb
@@ -85,7 +85,7 @@
     ${@bb.utils.contains("DISTRO_FEATURES", "x11", "gupnp-tools", "", d)} \
     gupnp \
     libupnp \
-    rygel \
+    ${@bb.utils.contains("DISTRO_FEATURES", "gobject-introspection-data", "rygel", "", d)} \
 "
 RDEPENDS_packagegroup-meta-multimedia-dvb = "\
     oscam \
@@ -99,8 +99,7 @@
 
 RDEPENDS_packagegroup-meta-multimedia-support = "\
     crossguid \
-    libmediaart-2.0 \
-    libmediaart \
+    ${@bb.utils.contains("DISTRO_FEATURES", "gobject-introspection-data", "libmediaart-2.0", "", d)} \
     gst-instruments \
     libsrtp \
     srt \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.24.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.31.bb
similarity index 89%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.24.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.31.bb
index 25c87d2..3e87921 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.24.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.31.bb
@@ -2,16 +2,16 @@
 DESCRIPTION = "Linux server for handling and routing audio and video streams between applications and multimedia I/O devices"
 HOMEPAGE = "https://pipewire.org/"
 BUGTRACKER  = "https://gitlab.freedesktop.org/pipewire/pipewire/issues"
-LICENSE = "MIT"
+LICENSE = "MIT & LGPL-2.1-or-later & GPL-2.0-only"
 LIC_FILES_CHKSUM = " \
-    file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \
+    file://LICENSE;md5=2158739e172e58dc9ab1bdd2d6ec9c72 \
     file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \
 "
 SECTION = "multimedia"
 
 DEPENDS = "dbus"
 
-SRCREV = "c81d44e8a9497899d01bcc3054b6aa845e7a066e"
+SRCREV = "c43dabcc96e2e072cdf08e5f094bb677d9017c6b"
 SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https"
 
 S = "${WORKDIR}/git"
@@ -91,7 +91,7 @@
     # Remove it if pipewire-jack is not built to avoid creating the
     # pipewire-jack package.
     if ${@bb.utils.contains('PACKAGECONFIG', 'pipewire-jack', 'false', 'true', d)}; then
-        rm -f "${D}${sysconfdir}/pipewire/jack.conf"
+        rm -f "${D}${datadir}/pipewire/jack.conf"
     fi
 }
 
@@ -189,9 +189,9 @@
 PACKAGES_DYNAMIC = "^${PN}-spa-plugins.* ^${PN}-modules.*"
 
 SYSTEMD_SERVICE_${PN} = "pipewire.service"
-CONFFILES_${PN} += "${sysconfdir}/pipewire/pipewire.conf"
+CONFFILES_${PN} += "${datadir}/pipewire/pipewire.conf"
 FILES_${PN} = " \
-    ${sysconfdir}/pipewire/pipewire.conf \
+    ${datadir}/pipewire/pipewire.conf \
     ${systemd_user_unitdir}/pipewire.* \
     ${bindir}/pipewire \
 "
@@ -200,9 +200,9 @@
     ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so \
 "
 
-CONFFILES_libpipewire += "${sysconfdir}/pipewire/client.conf"
+CONFFILES_libpipewire += "${datadir}/pipewire/client.conf"
 FILES_libpipewire = " \
-    ${sysconfdir}/pipewire/client.conf \
+    ${datadir}/pipewire/client.conf \
     ${libdir}/libpipewire-*.so.* \
 "
 # Add the bare minimum modules and plugins required to be able
@@ -220,9 +220,9 @@
 # This is a shim daemon that is intended to be used as a
 # drop-in PulseAudio replacement, providing a pulseaudio-compatible
 # socket that can be used by applications that use libpulse.
-CONFFILES_${PN}-pulse += "${sysconfdir}/pipewire/pipewire-pulse.conf"
+CONFFILES_${PN}-pulse += "${datadir}/pipewire/pipewire-pulse.conf"
 FILES_${PN}-pulse = " \
-    ${sysconfdir}/pipewire/pipewire-pulse.conf \
+    ${datadir}/pipewire/pipewire-pulse.conf \
     ${systemd_user_unitdir}/pipewire-pulse.* \
     ${bindir}/pipewire-pulse \
 "
@@ -237,18 +237,18 @@
 "
 
 # jack drop-in libraries to redirect audio to pipewire
-CONFFILES_${PN}-jack = "${sysconfdir}/pipewire/jack.conf"
+CONFFILES_${PN}-jack = "${datadir}/pipewire/jack.conf"
 FILES_${PN}-jack = "\
-    ${sysconfdir}/pipewire/jack.conf \
+    ${datadir}/pipewire/jack.conf \
     ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so.* \
 "
 
 # Example session manager. Not intended for use in production.
-CONFFILES_${PN}-media-session = "${sysconfdir}/pipewire/media-session.d/*"
+CONFFILES_${PN}-media-session = "${datadir}/pipewire/media-session.d/*"
 SYSTEMD_SERVICE_${PN}-media-session = "pipewire-media-session.service"
 FILES_${PN}-media-session = " \
     ${bindir}/pipewire-media-session \
-    ${sysconfdir}/pipewire/media-session.d/* \
+    ${datadir}/pipewire/media-session.d/* \
     ${systemd_system_unitdir}/pipewire-media-session.service \
 "
 RPROVIDES_${PN}-media-session = "virtual/pipewire-sessionmanager"
@@ -265,11 +265,16 @@
 FILES_${PN}-modules = ""
 RRECOMMENDS_${PN}-modules += "${PN}-modules-meta"
 
-CONFFILES_${PN}-modules-rtkit = "${sysconfdir}/pipewire/client-rt.conf"
+CONFFILES_${PN}-modules-rtkit = "${datadir}/pipewire/client-rt.conf"
 FILES_${PN}-modules-rtkit += " \
-    ${sysconfdir}/pipewire/client-rt.conf \
+    ${datadir}/pipewire/client-rt.conf \
     "
 
+CONFFILES_${PN}-modules-filter-chain = "${datadir}/pipewire/filter-chain/*"
+FILES_${PN}-modules-filter-chain += " \
+    ${datadir}/pipewire/filter-chain/* \
+"
+
 FILES_${PN}-alsa-card-profile = " \
     ${datadir}/alsa-card-profile/* \
     ${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \
diff --git a/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart-2.0_1.9.4.bb b/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart-2.0_1.9.4.bb
deleted file mode 100644
index 56a7873..0000000
--- a/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart-2.0_1.9.4.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require libmediaart.inc
-
-SRC_URI = "${GNOME_MIRROR}/libmediaart/1.9/libmediaart-${PV}.tar.xz"
-SRC_URI[md5sum] = "9b960a6a764fba38135fb57219f2e6b4"
-SRC_URI[sha256sum] = "a57be017257e4815389afe4f58fdacb6a50e74fd185452b23a652ee56b04813d"
-
-S = "${WORKDIR}/libmediaart-${PV}"
diff --git a/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart-2.0_1.9.5.bb b/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart-2.0_1.9.5.bb
new file mode 100644
index 0000000..31fe43b
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart-2.0_1.9.5.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Library tasked with managing, extracting and handling media art caches"
+
+LICENSE = "LGPLv2+ & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c \
+                    file://libmediaart/extract.c;endline=18;md5=dff2b6328ab067b5baadc135f9876c36 \
+                    file://tests/mediaarttest.c;endline=18;md5=067106eaa1f7a9d918759a096667f18e"
+
+DEPENDS = "glib-2.0 gdk-pixbuf"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gobject-introspection vala features_check
+
+SRC_URI = "${GNOME_MIRROR}/libmediaart/1.9/libmediaart-${PV}.tar.xz"
+SRC_URI[sha256sum] = "07def5a42c482ae71d3e1f77a4d0fdc337f74226059a65284d6d5a241f0e9cd6"
+
+S = "${WORKDIR}/libmediaart-${PV}"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+UNKNOWN_CONFIGURE_WHITELIST = "introspection"
+
+EXTRA_OEMESON = "-Dimage_library=gdk-pixbuf"
diff --git a/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart.inc b/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart.inc
deleted file mode 100644
index c7b368d..0000000
--- a/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart.inc
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = "Library tasked with managing, extracting and handling media art caches"
-
-LICENSE = "LGPLv2+ & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c \
-                    file://libmediaart/extract.c;endline=18;md5=dff2b6328ab067b5baadc135f9876c36 \
-                    file://tests/mediaarttest.c;endline=18;md5=067106eaa1f7a9d918759a096667f18e"
-
-DEPENDS = "glib-2.0 gdk-pixbuf"
-
-inherit gnomebase gtk-doc gobject-introspection
-
-EXTRA_OECONF = "--disable-qt --enable-gdkpixbuf"
diff --git a/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart_0.7.0.bb b/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart_0.7.0.bb
deleted file mode 100644
index ae95d4f..0000000
--- a/meta-openembedded/meta-multimedia/recipes-support/libmediaart/libmediaart_0.7.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require libmediaart.inc
-
-SRC_URI[archive.md5sum] = "1a44933d4cd0064e3c76d8d0ddacddc9"
-SRC_URI[archive.sha256sum] = "3a9dffcad862aed7c0921579b93080d694b8a66f3676bfee8037867f653a1cd3"
-
-EXTRA_OECONF_append = " --disable-gtk-doc"
diff --git a/meta-openembedded/meta-networking/MAINTAINERS b/meta-openembedded/meta-networking/MAINTAINERS
index 5c4c4ce..77e9066 100644
--- a/meta-openembedded/meta-networking/MAINTAINERS
+++ b/meta-openembedded/meta-networking/MAINTAINERS
@@ -8,7 +8,7 @@
 
    git send-email -1 -M \
         --to openembedded-devel@lists.openembedded.org \
-        --subject-prefix=meta-networking][PATCH
+        --subject-prefix='meta-networking][PATCH'
 
 You may also contact the maintainers directly.
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman/0002-fix-fail-to-enable-bluetooth.patch b/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman/0002-fix-fail-to-enable-bluetooth.patch
index 55d1ac9..282d821 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman/0002-fix-fail-to-enable-bluetooth.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman/0002-fix-fail-to-enable-bluetooth.patch
@@ -22,13 +22,13 @@
 ---
  blueman/Functions.py                   | 10 ++++++++++
  blueman/plugins/applet/PowerManager.py |  4 ++++
- 2 files changed, 15 insertions(+), 1 deletion(-)
+ 2 files changed, 14 insertions(+)
 
 diff --git a/blueman/Functions.py b/blueman/Functions.py
-index 3b76271..c5eeb27 100644
+index 3917f42..b4d5eae 100644
 --- a/blueman/Functions.py
 +++ b/blueman/Functions.py
-@@ -86,6 +86,16 @@ def check_bluetooth_status(message, exitfunc):
+@@ -80,6 +80,16 @@ def check_bluetooth_status(message: str, exitfunc: Callable[[], Any]) -> None:
              return
  
      applet.SetBluetoothStatus('(b)', True)
@@ -46,27 +46,27 @@
          print('Failed to enable bluetooth')
          exitfunc()
 diff --git a/blueman/plugins/applet/PowerManager.py b/blueman/plugins/applet/PowerManager.py
-index 8ec9fc4..29a0fb0 100644
+index c2f7bc3..bf6c99f 100644
 --- a/blueman/plugins/applet/PowerManager.py
 +++ b/blueman/plugins/applet/PowerManager.py
-@@ -48,6 +48,7 @@ class PowerManager(AppletPlugin):
+@@ -63,6 +63,7 @@ class PowerManager(AppletPlugin, StatusIconProvider):
          self._add_dbus_signal("BluetoothStatusChanged", "b")
          self._add_dbus_method("SetBluetoothStatus", ("b",), "", self.request_power_state)
          self._add_dbus_method("GetBluetoothStatus", (), "b", self.get_bluetooth_status)
 +        self._add_dbus_method("GetRequestStatus", (), "b", self.get_request_status)
  
-     def on_unload(self):
+     def on_unload(self) -> None:
          self.parent.Plugins.Menu.unregister(self)
-@@ -182,6 +183,9 @@ class PowerManager(AppletPlugin):
-     def get_bluetooth_status(self):
+@@ -196,6 +197,9 @@ class PowerManager(AppletPlugin, StatusIconProvider):
+     def get_bluetooth_status(self) -> bool:
          return self.current_state
  
 +    def get_request_status(self):
 +        return self.request_in_progress
 +
-     def on_adapter_property_changed(self, _path, key, value):
+     def on_adapter_property_changed(self, _path: str, key: str, value: Any) -> None:
          if key == "Powered":
              if value and not self.current_state:
 -- 
-2.20.1
+2.31.1
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.1.4.bb b/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.2.1.bb
similarity index 85%
rename from meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.1.4.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.2.1.bb
index 29bef23..3cb01ff 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.1.4.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.2.1.bb
@@ -4,14 +4,14 @@
 
 DEPENDS = "bluez5 python3-pygobject python3-cython-native python3-setuptools-native intltool-native"
 
-inherit autotools systemd gsettings python3native gtk-icon-cache
+inherit autotools gettext systemd gsettings python3native gtk-icon-cache
 
 SRC_URI = " \
     https://github.com/blueman-project/blueman/releases/download/${PV}/blueman-${PV}.tar.xz \
     file://0001-Search-for-cython3.patch \
     file://0002-fix-fail-to-enable-bluetooth.patch \
 "
-SRC_URI[sha256sum] = "1d9c3d39a564d88851aa8de509f16bfa586b0b50f4307dc6c6347ba4833664da"
+SRC_URI[sha256sum] = "fcc10a2259bef2c5ac63f577010d76caed460d68810b7f70fecf056bf10a1a72"
 
 EXTRA_OECONF = " \
     --disable-appindicator \
@@ -48,12 +48,10 @@
 do_install_append() {
     sed -i "1s/.*/#!\/usr\/bin\/env python3/" ${D}${prefix}/libexec/blueman-rfcomm-watcher \
                                               ${D}${prefix}/libexec/blueman-mechanism \
-                                              ${D}${bindir}/blueman-tray \
-                                              ${D}${bindir}/blueman-services \
-                                              ${D}${bindir}/blueman-sendto \
-                                              ${D}${bindir}/blueman-report \
-                                              ${D}${bindir}/blueman-manager \
-                                              ${D}${bindir}/blueman-assistant \
+                                              ${D}${bindir}/blueman-adapters \
                                               ${D}${bindir}/blueman-applet \
-                                              ${D}${bindir}/blueman-adapters
+                                              ${D}${bindir}/blueman-manager \
+                                              ${D}${bindir}/blueman-sendto \
+                                              ${D}${bindir}/blueman-services \
+                                              ${D}${bindir}/blueman-tray
 }
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.2.bb b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.2p1.bb
similarity index 70%
rename from meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.2.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.2p1.bb
index b178180..6ea5b4b2 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.2.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.2p1.bb
@@ -10,20 +10,25 @@
 
 DEPENDS = "openssl libcap zlib"
 
-SRC_URI = "https://ftp.isc.org/isc/dhcp/${PV}/dhcp-${PV}.tar.gz \
+SRC_URI = "https://ftp.isc.org/isc/dhcp/4.4.2-P1/dhcp-4.4.2-P1.tar.gz \
+           https://ftp.isc.org/isc/bind9/9.11.32/bind-9.11.32.tar.gz;name=bind;downloadfilename=bind.tar.gz;unpack=0 \
            file://default-relay \
            file://init-relay \
            file://dhcrelay.service \
            file://0001-Makefile.am-only-build-dhcrelay.patch \
+           file://0002-bind-version-update-to-latest-version.patch \
+           file://0003-bind-Makefile.in-disable-backtrace.patch \
            "
 
-SRC_URI[md5sum] = "2afdaf8498dc1edaf3012efdd589b3e1"
-SRC_URI[sha256sum] = "1a7ccd64a16e5e68f7b5e0f527fd07240a2892ea53fe245620f4f5f607004521"
+SRC_URI[md5sum] = "3089a1ebd20a802ec0870ae337d43907"
+SRC_URI[sha256sum] = "b05e04337539545a8faa0d6ac518defc61a07e5aec66a857f455e7f218c85a1a"
+SRC_URI[bind.md5sum] = "0d029dd06ca60c6739c3189c999ef757"
+SRC_URI[bind.sha256sum] = "cbf8cb4b74dd1452d97c3a2a8c625ea346df8516b4b3508ef07443121a591342"
 
 UPSTREAM_CHECK_URI = "http://ftp.isc.org/isc/dhcp/"
 UPSTREAM_CHECK_REGEX = "(?P<pver>\d+\.\d+\.(\d+?))/"
 
-S = "${WORKDIR}/dhcp-${PV}"
+S = "${WORKDIR}/dhcp-4.4.2-P1"
 
 inherit autotools-brokensep systemd
 
@@ -43,15 +48,18 @@
 # Enable shared libs per dhcp README
 do_configure_prepend () {
     cp configure.ac+lt configure.ac
+    rm ${S}/bind/bind.tar.gz
+    mv ${WORKDIR}/bind.tar.gz ${S}/bind/
 }
+
 do_compile_prepend() {
-    rm -rf ${S}/bind/bind-9.11.14/
+    rm -rf ${S}/bind/bind-9.11.32/
     tar xf ${S}/bind/bind.tar.gz -C ${S}/bind
-    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/bind/bind-9.11.14/
-    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/bind/bind-9.11.14/
-    cp -fpR ${S}/m4/*.m4 ${S}/bind/bind-9.11.14/libtool.m4/
-    rm -rf ${S}/bind/bind-9.11.14/libtool
-    install -m 0755 ${S}/${HOST_SYS}-libtool ${S}/bind/bind-9.11.14/
+    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/bind/bind-9.11.32/
+    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/bind/bind-9.11.32/
+    cp -fpR ${S}/m4/*.m4 ${S}/bind/bind-9.11.32/libtool.m4/
+    rm -rf ${S}/bind/bind-9.11.32/libtool
+    install -m 0755 ${S}/${HOST_SYS}-libtool ${S}/bind/bind-9.11.32/
 }
 
 do_install_append () {
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0002-bind-version-update-to-latest-version.patch b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0002-bind-version-update-to-latest-version.patch
new file mode 100644
index 0000000..5c7a5f0
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0002-bind-version-update-to-latest-version.patch
@@ -0,0 +1,30 @@
+From edb68972f8dc636e6208e78f02dec6f9805e4c0b Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Wed, 26 May 2021 11:39:00 +0800
+Subject: [PATCH] bind/version: update to latest version
+
+Update the bundled bind from 9.11.14 to 9.11.32.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ bind/version.tmp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bind/version.tmp b/bind/version.tmp
+index cf52f1b..4cc538e 100644
+--- a/bind/version.tmp
++++ b/bind/version.tmp
+@@ -5,7 +5,7 @@ PRODUCT=BIND
+ DESCRIPTION="(Extended Support Version)"
+ MAJORVER=9
+ MINORVER=11
+-PATCHVER=14
++PATCHVER=32
+ RELEASETYPE=
+ RELEASEVER=
+ EXTENSIONS=
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0003-bind-Makefile.in-disable-backtrace.patch b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0003-bind-Makefile.in-disable-backtrace.patch
new file mode 100644
index 0000000..51520bc
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0003-bind-Makefile.in-disable-backtrace.patch
@@ -0,0 +1,31 @@
+From bc9c5d64ad4829c7830ef70fcaff94470974247c Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Tue, 8 Jun 2021 10:13:57 +0800
+Subject: [PATCH] bind/Makefile.in: disable backtrace
+
+Fixes build error for qemuarm on musl:
+libisc.so: undefined reference to `_Unwind_GetIP'
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ bind/Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bind/Makefile.in b/bind/Makefile.in
+index 8fe8883..1058160 100644
+--- a/bind/Makefile.in
++++ b/bind/Makefile.in
+@@ -22,7 +22,7 @@ prefix = @prefix@
+ exec_prefix = @exec_prefix@
+ 
+ bindconfig = --without-openssl --without-libxml2 --without-libjson \
+-	--without-gssapi --disable-threads --without-lmdb \
++	--without-gssapi --disable-threads --without-lmdb --disable-backtrace \
+ 	--includedir=@includedir@ --libdir=@libdir@  --without-python\
+ 	@BINDLT@ @BINDIOMUX@ @BINDCONFIG@ --enable-full-report
+ 
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.9.3.bb b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.9.4.bb
similarity index 97%
rename from meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.9.3.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.9.4.bb
index 9aad510..b8025c7 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.9.3.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.9.4.bb
@@ -8,7 +8,7 @@
 SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz \
            file://firewalld.init \
 "
-SRC_URI[sha256sum] = "5998894db976d77996ca0a6b700a2f4125b9f283465fb255da9bddfb1640cb27"
+SRC_URI[sha256sum] = "52c5e3d5b1e2efc0e86c22b2bc1f7fd80908cc2d8130157dc2a3517a59b0a760"
 
 # glib-2.0-native is needed for GSETTINGS_RULES autoconf macro from gsettings.m4
 DEPENDS = "intltool-native glib-2.0-native nftables"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.25.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.26.0.bb
similarity index 92%
rename from meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.25.0.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.26.0.bb
index 481e7ea..3c7df44 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.25.0.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.26.0.bb
@@ -23,7 +23,7 @@
 SECTION = "libs"
 
 S = "${WORKDIR}/git"
-SRCREV = "1c54b5410fd48d6bcada97e30cac417c5c7eea67"
+SRCREV = "e483a77c85e1f9c1dd2eb1c5a8f552d2617fe400"
 SRC_URI = "git://github.com/ARMmbed/mbedtls.git;protocol=https;branch=development"
 SRC_URI += "file://0001-ssl_tls-Increase-size-of-padbuf-to-64.patch"
 
@@ -32,6 +32,7 @@
 PACKAGECONFIG ??= "shared-libs programs"
 PACKAGECONFIG[shared-libs] = "-DUSE_SHARED_MBEDTLS_LIBRARY=ON,-DUSE_SHARED_MBEDTLS_LIBRARY=OFF"
 PACKAGECONFIG[programs] = "-DENABLE_PROGRAMS=ON,-DENABLE_PROGRAMS=OFF"
+PACKAGECONFIG[werror] = "-DMBEDTLS_FATAL_WARNINGS=ON,-DMBEDTLS_FATAL_WARNINGS=OFF"
 
 EXTRA_OECMAKE = "-DENABLE_TESTING=OFF -DLIB_INSTALL_DIR:STRING=${libdir}"
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.10.bb b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.11.bb
similarity index 93%
rename from meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.10.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.11.bb
index b815ac3..9f1c024 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.10.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_2.0.11.bb
@@ -10,7 +10,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=ca9a8f366c6babf593e374d0d7d58749 \
                     file://edl-v10;md5=c09f121939f063aeb5235972be8c722c \
                     file://epl-v20;md5=d9fc0efef5228704e7f5b37f27192723 \
-                    file://notice.html;md5=541f8f37af492858dab8d2c1b69ede69 \
+                    file://NOTICE.md;md5=a7a91b4754c6f7995020d1b49bc829c6 \
 "
 DEPENDS = "uthash cjson dlt-daemon"
 
@@ -19,8 +19,8 @@
            file://1571.patch \
 "
 
-SRC_URI[md5sum] = "3d1c327d8c5881f56983bee1e3c8f068"
-SRC_URI[sha256sum] = "0188f7b21b91d6d80e992b8d6116ba851468b3bd154030e8a003ed28fb6f4a44"
+SRC_URI[md5sum] = "638d801e6aac611b41de76d030951612"
+SRC_URI[sha256sum] = "7b36a7198bce85cf31b132f5c6ee36dcf5dadf86fb768501eb1e11ce95d4f78a"
 
 inherit systemd update-rc.d useradd cmake
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-Handle-enum-element-override.patch b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-Handle-enum-element-override.patch
new file mode 100644
index 0000000..dfc6f90
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-Handle-enum-element-override.patch
@@ -0,0 +1,34 @@
+From 6d284f1ff81494a5fca91a399b92b218ea1a9ea8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 8 Jun 2021 08:53:30 -0700
+Subject: [PATCH] Handle enum element override
+
+NETPLAN_DEF_TYPE_VIRTUAL and NETPLAN_DEF_TYPE_BRIDGE point
+to same value in enum, however here they are assigned individually
+which results in overriding the initialization of the objects
+
+Fixes
+src/netplan.h:85:33: error: initializer overrides prior initialization of this subobject [-Werror,-Winitializer-overrides]
+    [NETPLAN_DEF_TYPE_BRIDGE] = "bridges",
+                                ^~~~~~~~~
+Upstream-Status: Submitted [https://github.com/canonical/netplan/pull/213]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/netplan.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/netplan.h b/src/netplan.h
+index d2c538b..26574f8 100644
+--- a/src/netplan.h
++++ b/src/netplan.h
+@@ -81,7 +81,6 @@ static const char* const netplan_def_type_to_str[NETPLAN_DEF_TYPE_MAX_] = {
+     [NETPLAN_DEF_TYPE_ETHERNET] = "ethernets",
+     [NETPLAN_DEF_TYPE_WIFI] = "wifis",
+     [NETPLAN_DEF_TYPE_MODEM] = "modems",
+-    [NETPLAN_DEF_TYPE_VIRTUAL] = NULL,
+     [NETPLAN_DEF_TYPE_BRIDGE] = "bridges",
+     [NETPLAN_DEF_TYPE_BOND] = "bonds",
+     [NETPLAN_DEF_TYPE_VLAN] = "vlans",
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-dbus-Remove-unused-variabes.patch b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-dbus-Remove-unused-variabes.patch
deleted file mode 100644
index 407e24c..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-dbus-Remove-unused-variabes.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-Subject: [PATCH 1/2] dbus: Remove unused variabes
-
-This issue is seen when using clang to compile it
-
-Same fix is needed for parse.c and networkd.c,
-
-Fixes
-src/dbus.c:49:23: error: unused variable 'stdout' [-Werror,-Wunused-variable]
-g_autofree gchar *stdout = NULL;
-^
-Upstream-Status: Submitted [https://github.com/CanonicalLtd/netplan/pull/175]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/dbus.c     | 3 ---
- src/networkd.c | 1 -
- src/parse.c    | 1 -
- 3 files changed, 5 deletions(-)
-
-diff --git a/src/dbus.c b/src/dbus.c
-index 9606fea..8e1ed9d 100644
---- a/src/dbus.c
-+++ b/src/dbus.c
-@@ -242,9 +242,6 @@ static int
- method_info(sd_bus_message *m, void *userdata, sd_bus_error *ret_error)
- {
-     sd_bus_message *reply = NULL;
--    g_autoptr(GError) err = NULL;
--    g_autofree gchar *stdout = NULL;
--    g_autofree gchar *stderr = NULL;
-     gint exit_status = 0;
- 
-     exit_status = sd_bus_message_new_method_return(m, &reply);
-diff --git a/src/networkd.c b/src/networkd.c
-index 7c86cd6..7200740 100644
---- a/src/networkd.c
-+++ b/src/networkd.c
-@@ -897,7 +897,6 @@ append_wpa_auth_conf(GString* s, const NetplanAuthenticationSettings* auth, cons
- static void
- write_wpa_unit(const NetplanNetDefinition* def, const char* rootdir)
- {
--    g_autoptr(GError) err = NULL;
-     g_autofree gchar *stdouth = NULL;
- 
-     stdouth = systemd_escape(def->id);
-diff --git a/src/parse.c b/src/parse.c
-index 033c657..faca27f 100644
---- a/src/parse.c
-+++ b/src/parse.c
-@@ -1899,7 +1899,6 @@ handle_wireguard_peers(yaml_document_t* doc, yaml_node_t* node, const void* _, G
-     }
- 
-     for (yaml_node_item_t *i = node->data.sequence.items.start; i < node->data.sequence.items.top; i++) {
--        g_autofree char* addr = NULL;
-         yaml_node_t *entry = yaml_document_get_node(doc, *i);
-         assert_type(entry, YAML_MAPPING_NODE);
- 
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch
index dab8693..0fa6ba4 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch
@@ -8,13 +8,11 @@
  src/util.c | 6 ++++++
  1 file changed, 6 insertions(+)
 
-diff --git a/src/util.c b/src/util.c
-index 7e59985..eb8e573 100644
 --- a/src/util.c
 +++ b/src/util.c
-@@ -23,6 +23,12 @@
- 
+@@ -24,6 +24,12 @@
  #include "util.h"
+ #include "netplan.h"
  
 +/* Don't fail if the standard library
 + * doesn't provide brace expansion */
@@ -25,6 +23,3 @@
  GHashTable* wifi_frequency_24;
  GHashTable* wifi_frequency_5;
  
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0002-Makefile-Exclude-.h-files-from-target-rule.patch b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0002-Makefile-Exclude-.h-files-from-target-rule.patch
deleted file mode 100644
index 68aabd6..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0002-Makefile-Exclude-.h-files-from-target-rule.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Subject: [PATCH 2/2] Makefile: Exclude .h files from target rule
-
-This ensures that src/_features.h is not added to compiler cmdline which
-can confuse the compilers e.g. clang as it may not like .h as valid input
-and complain
-
-| clang-11: error: cannot specify -o when generating multiple output files
-| make: *** [Makefile:50: netplan-dbus] Error 1
-| make: *** Waiting for unfinished jobs....
-
-Upstream-Status: Submitted [https://github.com/CanonicalLtd/netplan/pull/175]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 4fa6bd8..567d326 100644
---- a/Makefile
-+++ b/Makefile
-@@ -46,7 +46,7 @@ generate: libnetplan.so.$(NETPLAN_SOVER) nm.o networkd.o openvswitch.o generate.
- 	$(CC) $(BUILDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $^ -L. -lnetplan `pkg-config --cflags --libs glib-2.0 gio-2.0 yaml-0.1 uuid`
- 
- netplan-dbus: src/dbus.c src/_features.h util.o
--	$(CC) $(BUILDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $^ `pkg-config --cflags --libs libsystemd glib-2.0 gio-2.0`
-+	$(CC) $(BUILDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(patsubst %.h,,$^) `pkg-config --cflags --libs libsystemd glib-2.0 gio-2.0`
- 
- src/_features.h: src/[^_]*.[hc]
- 	printf "#include <stddef.h>\nstatic const char *feature_flags[] __attribute__((__unused__)) = {\n" > $@
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.101.bb b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.102.bb
similarity index 92%
rename from meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.101.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.102.bb
index a3afcd2..3328dfb 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.101.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.102.bb
@@ -11,13 +11,12 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 S = "${WORKDIR}/git"
-SRCREV = "e445b87b9dff439ec564c245d030b03d61eb0f24"
-PV = "0.101+git${SRCPV}"
+SRCREV = "62701436991e42606c4e9e8dbdcdc5067d64f69b"
+PV = "0.102+git${SRCPV}"
 
 SRC_URI = " \
         git://github.com/CanonicalLtd/netplan.git \
-        file://0001-dbus-Remove-unused-variabes.patch \
-        file://0002-Makefile-Exclude-.h-files-from-target-rule.patch \
+        file://0001-Handle-enum-element-override.patch \
 "
 SRC_URI_append_libc-musl = " file://0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch"
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch
index 0a86aba..86e8eaa 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch
@@ -1,6 +1,6 @@
 From d0dead0478a070b96f37bd3b310443eaa8c93a25 Mon Sep 17 00:00:00 2001
-From: Vinicius Aquino <voa.aquino@gmail.com>
-Date: Thu, 1 Apr 2021 14:13:07 -0300
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Mon, 5 Jul 2021 00:42:23 +0200
 Subject: [PATCH] Do not create settings settings/property documentation
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
@@ -15,34 +15,35 @@
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
 Signed-off-by: Vinicius Aquino <voa.aquino@gmail.com>
 ---
- Makefile.am  | 4 ----
+ Makefile.am  | 5 -----
  configure.ac | 5 -----
- 2 files changed, 9 deletions(-)
+ 2 files changed, 10 deletions(-)
 
 diff --git a/Makefile.am b/Makefile.am
-index 9279672c1..2e52acbb2 100644
+index 5a62070..3d0ebcd 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -1686,14 +1686,10 @@ libnm/libnm.typelib: libnm/libnm.gir
- INTROSPECTION_GIRS += libnm/NM-1.0.gir
+@@ -1860,15 +1860,10 @@ src/libnm-client-impl/libnm.typelib: src/libnm-client-impl/libnm.gir
+ INTROSPECTION_GIRS += src/libnm-client-impl/NM-1.0.gir
  
  libnm_noinst_data = \
--	clients/cli/generate-docs-nm-settings-nmcli.xml \
- 	libnm/nm-property-infos-dbus.xml \
- 	libnm/nm-property-infos-ifcfg-rh.xml \
- 	libnm/nm-property-infos-keyfile.xml \
- 	libnm/nm-property-infos-nmcli.xml \
--	libnm/nm-settings-docs-gir.xml \
+-	src/nmcli/generate-docs-nm-settings-nmcli.xml \
 -	man/nm-settings-docs-dbus.xml \
 -	man/nm-settings-docs-nmcli.xml \
+ 	src/libnm-client-impl/nm-property-infos-dbus.xml \
+ 	src/libnm-client-impl/nm-property-infos-ifcfg-rh.xml \
+ 	src/libnm-client-impl/nm-property-infos-keyfile.xml \
+ 	src/libnm-client-impl/nm-property-infos-nmcli.xml \
+-	src/libnm-client-impl/nm-settings-docs-gir.xml \
+-	src/libnmc-setting/settings-docs-input.xml \
  	$(NULL)
  
  noinst_DATA += $(libnm_noinst_data)
 diff --git a/configure.ac b/configure.ac
-index 784ac4695..681e6cb32 100644
+index 8fe23de..dc24850 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1241,11 +1241,6 @@ GTK_DOC_CHECK(1.0)
+@@ -1258,11 +1258,6 @@ GTK_DOC_CHECK(1.0)
  # check if we can build setting property documentation
  build_docs=no
  if test -n "$INTROSPECTION_MAKEFILE"; then
@@ -55,5 +56,5 @@
  	if test -z "$PERL"; then
  		AC_MSG_ERROR([--enable-introspection requires perl])
 -- 
-2.20.1
+2.31.1
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Fix-build-with-musl-systemd-specific.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Fix-build-with-musl-systemd-specific.patch
deleted file mode 100644
index 692f1ff..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Fix-build-with-musl-systemd-specific.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From 44884c7e7655b889f41cb02ffc8ab72a29b52ebf Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Tue, 2 Apr 2019 01:34:35 +0200
-Subject: [PATCH 1/2] Fix build with musl - systemd specific
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Networkmanager imported some code from systemd. This requires some adjustments
-for musl.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-Signed-off-by: Vinicius Aquino <voa.aquino@gmail.com>
----
- shared/systemd/src/basic/in-addr-util.c |  1 +
- shared/systemd/src/basic/process-util.c |  9 +++++++++
- shared/systemd/src/basic/socket-util.h  |  6 ++++++
- shared/systemd/src/basic/sort-util.h    | 13 ++++---------
- shared/systemd/src/basic/stdio-util.h   |  2 ++
- shared/systemd/src/basic/string-util.h  |  5 +++++
- 6 files changed, 27 insertions(+), 9 deletions(-)
-
-diff --git a/shared/systemd/src/basic/in-addr-util.c b/shared/systemd/src/basic/in-addr-util.c
-index c315dcbb8..5b7e04eb7 100644
---- a/shared/systemd/src/basic/in-addr-util.c
-+++ b/shared/systemd/src/basic/in-addr-util.c
-@@ -15,6 +15,7 @@
- #include "in-addr-util.h"
- #include "macro.h"
- #include "parse-util.h"
-+#include "string-util.h"
- #include "random-util.h"
- #include "string-util.h"
- #include "strxcpyx.h"
-diff --git a/shared/systemd/src/basic/process-util.c b/shared/systemd/src/basic/process-util.c
-index 0e25b0200..ea2c0fbb4 100644
---- a/shared/systemd/src/basic/process-util.c
-+++ b/shared/systemd/src/basic/process-util.c
-@@ -17,6 +17,9 @@
- #include <sys/wait.h>
- #include <syslog.h>
- #include <unistd.h>
-+#ifndef __GLIBC__
-+#include <pthread.h>
-+#endif
- #if 0 /* NM_IGNORED */
- #if HAVE_VALGRIND_VALGRIND_H
- #include <valgrind/valgrind.h>
-@@ -1152,11 +1155,13 @@ void reset_cached_pid(void) {
-         cached_pid = CACHED_PID_UNSET;
- }
- 
-+#ifdef __GLIBC__
- /* We use glibc __register_atfork() + __dso_handle directly here, as they are not included in the glibc
-  * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against
-  * libpthread, as it is part of glibc anyway. */
- extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void *dso_handle);
- extern void* __dso_handle _weak_;
-+#endif
- 
- pid_t getpid_cached(void) {
-         static bool installed = false;
-@@ -1185,7 +1190,11 @@ pid_t getpid_cached(void) {
-                          * only half-documented (glibc doesn't document it but LSB does — though only superficially)
-                          * we'll check for errors only in the most generic fashion possible. */
- 
-+#ifdef __GLIBC__
-                         if (__register_atfork(NULL, NULL, reset_cached_pid, __dso_handle) != 0) {
-+#else
-+                        if (pthread_atfork(NULL, NULL, reset_cached_pid) != 0) {
-+#endif
-                                 /* OOM? Let's try again later */
-                                 cached_pid = CACHED_PID_UNSET;
-                                 return new_pid;
-diff --git a/shared/systemd/src/basic/socket-util.h b/shared/systemd/src/basic/socket-util.h
-index 1de069476..f6834fbd2 100644
---- a/shared/systemd/src/basic/socket-util.h
-+++ b/shared/systemd/src/basic/socket-util.h
-@@ -14,6 +14,12 @@
- #include <sys/types.h>
- #include <sys/un.h>
- 
-+#if !defined(__GLIBC__)
-+/* SIOCGSTAMPNS from linux/asm-generic.h
-+ * for src/systemd/src/libsystemd-network/sd-lldp.c */
-+#include <linux/sockios.h>
-+#endif
-+
- #include "macro.h"
- #include "missing_network.h"
- #include "missing_socket.h"
-diff --git a/shared/systemd/src/basic/sort-util.h b/shared/systemd/src/basic/sort-util.h
-index a8984fc16..5fb90f8c5 100644
---- a/shared/systemd/src/basic/sort-util.h
-+++ b/shared/systemd/src/basic/sort-util.h
-@@ -5,15 +5,10 @@
- 
- #include "macro.h"
- 
--void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
--                 __compar_d_fn_t compar, void *arg);
--
--#define typesafe_bsearch_r(k, b, n, func, userdata)                     \
--        ({                                                              \
--                const typeof(b[0]) *_k = k;                             \
--                int (*_func_)(const typeof(b[0])*, const typeof(b[0])*, typeof(userdata)) = func; \
--                xbsearch_r((const void*) _k, (b), (n), sizeof((b)[0]), (__compar_d_fn_t) _func_, userdata); \
--        })
-+#if !defined(__GLIBC__)
-+typedef int (*__compar_fn_t) (const void*, const void*);
-+typedef __compar_fn_t comparison_fn_t;
-+#endif
- 
- /**
-  * Normal bsearch requires base to be nonnull. Here were require
-diff --git a/shared/systemd/src/basic/stdio-util.h b/shared/systemd/src/basic/stdio-util.h
-index d45d3c1a6..fee1a57ca 100644
---- a/shared/systemd/src/basic/stdio-util.h
-+++ b/shared/systemd/src/basic/stdio-util.h
-@@ -2,7 +2,9 @@
- #pragma once
- 
- #if 0 /* NM_IGNORED */
-+#if defined(__GLIBC__)
- #include <printf.h>
-+#endif
- #endif /* NM_IGNORED */
- #include <stdarg.h>
- #include <stdio.h>
-diff --git a/shared/systemd/src/basic/string-util.h b/shared/systemd/src/basic/string-util.h
-index 593cf04ae..541c393f6 100644
---- a/shared/systemd/src/basic/string-util.h
-+++ b/shared/systemd/src/basic/string-util.h
-@@ -26,6 +26,11 @@
- #define strcaseeq(a,b) (strcasecmp((a),(b)) == 0)
- #define strncaseeq(a, b, n) (strncasecmp((a), (b), (n)) == 0)
- 
-+/* musl does not know strndupa */
-+#if !defined(__GLIBC__)
-+#define strndupa(x,s) strncpy(alloca(strlen(x)+1),x,s)
-+#endif
-+
- int strcmp_ptr(const char *a, const char *b) _pure_;
- int strcasecmp_ptr(const char *a, const char *b) _pure_;
- 
--- 
-2.20.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-Fix-build-with-musl-systemd-specific.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-Fix-build-with-musl-systemd-specific.patch
deleted file mode 100644
index d83efd3..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-Fix-build-with-musl-systemd-specific.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 7d9a11a17da425d106791ada7100d7a6559e6065 Mon Sep 17 00:00:00 2001
-From: Adrian Freihofer <adrian.freihofer@siemens.com>
-Date: Sat, 7 Mar 2020 14:24:01 +0100
-Subject: [PATCH 2/2] Fix build with musl - systemd specific
-
----
- src/core/systemd/src/libsystemd-network/sd-dhcp6-client.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/core/systemd/src/libsystemd-network/sd-dhcp6-client.c b/src/core/systemd/src/libsystemd-network/sd-dhcp6-client.c
-index 3fafd3c0e..79d6096c2 100644
---- a/src/core/systemd/src/libsystemd-network/sd-dhcp6-client.c
-+++ b/src/core/systemd/src/libsystemd-network/sd-dhcp6-client.c
-@@ -8,7 +8,9 @@
- #include <errno.h>
- #include <sys/ioctl.h>
- #if 0 /* NM_IGNORED */
-+#ifdef __GLIBC__  /* musl supplies full set of userspace headers */
- #include <linux/if_arp.h>
-+#endif
- #else /* NM_IGNORED */
- #include <net/if_arp.h>
- #endif /* NM_IGNORED */
--- 
-2.20.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.30.4.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.32.2.bb
similarity index 94%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.30.4.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.32.2.bb
index 7c07b0a..a01e530 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.30.4.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.32.2.bb
@@ -27,11 +27,7 @@
     file://0002-Do-not-create-settings-settings-property-documentati.patch \
     file://0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch \
 "
-SRC_URI_append_libc-musl = " \
-    file://musl/0001-Fix-build-with-musl-systemd-specific.patch \
-    file://musl/0002-Fix-build-with-musl-systemd-specific.patch \
-"
-SRC_URI[sha256sum] = "6050b724212ea3ce7386113359bea9afa1f679a54f60d999a5999892e672c190"
+SRC_URI[sha256sum] = "701d511067f757d0f92f412c98cdb49a74a6ba69448aabb1beadacbc171e3873"
 
 S = "${WORKDIR}/NetworkManager-${PV}"
 
@@ -56,7 +52,7 @@
 "
 
 do_compile_prepend() {
-    export GIR_EXTRA_LIBS_PATH="${B}/libnm/.libs:${B}/libnm-glib/.libs:${B}/libnm-util/.libs"
+    export GIR_EXTRA_LIBS_PATH="${B}/src/libnm-client-impl/.libs"
 }
 
 PACKAGECONFIG ??= "nss ifupdown dnsmasq nmcli \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/16-do-not-check-xsltproc-manpages.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-Don-t-check-xsltproc-manpages.patch
similarity index 77%
rename from meta-openembedded/meta-networking/recipes-connectivity/samba/samba/16-do-not-check-xsltproc-manpages.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-Don-t-check-xsltproc-manpages.patch
index 8ca7a52..f4668dc 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/16-do-not-check-xsltproc-manpages.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-Don-t-check-xsltproc-manpages.patch
@@ -1,12 +1,14 @@
-From 2214c2d1e455a38c891d17e421b438e3f7c495d8 Mon Sep 17 00:00:00 2001
+From 3bc1ebc3d2758af4067b3aace7ddd0ea0cb0b57b Mon Sep 17 00:00:00 2001
 From: Bian Naimeng <biannm@cn.fujitsu.com>
 Date: Mon, 18 Apr 2016 17:00:53 -0400
 Subject: [PATCH] Don't check xsltproc manpages
 
 Upstream-Status: Pending
- 
+
 Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
 
+Rebase to 4.14.4
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
 ---
  lib/ldb/wscript    | 2 +-
  lib/talloc/wscript | 2 +-
@@ -14,10 +16,10 @@
  3 files changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/lib/ldb/wscript b/lib/ldb/wscript
-index 5ea5231..d94086b 100644
+index bf6129b..c515deb 100644
 --- a/lib/ldb/wscript
 +++ b/lib/ldb/wscript
-@@ -98,7 +98,7 @@ def configure(conf):
+@@ -143,7 +143,7 @@ def configure(conf):
          conf.DEFINE('EXPECTED_SYSTEM_LDB_VERSION_RELEASE', int(v[2]))
  
      if conf.env.standalone_ldb:
@@ -27,10 +29,10 @@
          # we need this for the ldap backend
          if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'):
 diff --git a/lib/talloc/wscript b/lib/talloc/wscript
-index df7e6be..b3305cf 100644
+index a767477..f754819 100644
 --- a/lib/talloc/wscript
 +++ b/lib/talloc/wscript
-@@ -49,7 +49,7 @@ def configure(conf):
+@@ -48,7 +48,7 @@ def configure(conf):
          conf.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig'
          conf.env.TALLOC_VERSION = VERSION
  
@@ -40,18 +42,18 @@
      conf.CHECK_HEADERS('sys/auxv.h')
      conf.CHECK_FUNCS('getauxval')
 diff --git a/lib/tdb/wscript b/lib/tdb/wscript
-index 4782550..6bb3fa1 100644
+index e56ddd0..467dd65 100644
 --- a/lib/tdb/wscript
 +++ b/lib/tdb/wscript
-@@ -89,7 +89,7 @@ def configure(conf):
+@@ -95,7 +95,7 @@ def configure(conf):
          not conf.env.disable_tdb_mutex_locking):
          conf.define('USE_TDB_MUTEX_LOCKING', 1)
  
 -    conf.CHECK_XSLTPROC_MANPAGES()
 +    #conf.CHECK_XSLTPROC_MANPAGES()
  
-     if not conf.env.disable_python:
-         # also disable if we don't have the python libs installed
+     conf.SAMBA_CHECK_PYTHON()
+     conf.SAMBA_CHECK_PYTHON_HEADERS()
 -- 
-2.14.3
+2.17.1
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-lib-replace-wscript-Avoid-generating-nested-main-fun.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-lib-replace-wscript-Avoid-generating-nested-main-fun.patch
deleted file mode 100644
index de7f311..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-lib-replace-wscript-Avoid-generating-nested-main-fun.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 3a935c638605bfb392ca7780d22c08c1a0a71e71 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 5 Sep 2019 21:37:33 -0700
-Subject: [PATCH 1/2] lib/replace/wscript: Avoid generating nested main
- function
-
-clang is not happy when it sees another main nested inside the main
-function and fails the test for prctl syscall, therefore avoid adding
-implicit main() here
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/replace/wscript | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/lib/replace/wscript b/lib/replace/wscript
-index a7fd25d..d6767fc 100644
---- a/lib/replace/wscript
-+++ b/lib/replace/wscript
-@@ -137,6 +137,7 @@ def configure(conf):
-                     }
-                     ''',
-                     'HAVE_PRCTL',
-+                    addmain=False,
-                     headers='sys/prctl.h',
-                     msg='Checking for prctl syscall')
- 
--- 
-2.23.0
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-nsswitch-nsstest.c-Avoid-nss-function-conflicts-with.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-nsswitch-nsstest.c-Avoid-nss-function-conflicts-with.patch
deleted file mode 100644
index 2dbabda..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-nsswitch-nsstest.c-Avoid-nss-function-conflicts-with.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 9aba5ac17bb822f91f6b214f5b82dd1eb8c47616 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 22 Jul 2020 22:42:09 -0700
-Subject: [PATCH] nsswitch/nsstest.c: Avoid nss function conflicts with glibc nss.h
-
-glibc 2.32 will define these varibles [1] which results in conflicts
-with these static function names, therefore prefix these function names
-with samba_ to avoid it
-
-[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=499a92df8b9fc64a054cf3b7f728f8967fc1da7d
-
-Upstream-Status: Submitted [https://gitlab.com/samba-team/samba/-/merge_requests/1477]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- nsswitch/nsstest.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/nsswitch/nsstest.c b/nsswitch/nsstest.c
-index 6d92806..46f9679 100644
---- a/nsswitch/nsstest.c
-+++ b/nsswitch/nsstest.c
-@@ -137,7 +137,7 @@ static struct passwd *nss_getpwuid(uid_t uid)
- 	return &pwd;
- }
- 
--static void nss_setpwent(void)
-+static void samba_nss_setpwent(void)
- {
- 	NSS_STATUS (*_nss_setpwent)(void) =
- 		(NSS_STATUS(*)(void))find_fn("setpwent");
-@@ -152,7 +152,7 @@ static void nss_setpwent(void)
- 	}
- }
- 
--static void nss_endpwent(void)
-+static void samba_nss_endpwent(void)
- {
- 	NSS_STATUS (*_nss_endpwent)(void) =
- 		(NSS_STATUS (*)(void))find_fn("endpwent");
-@@ -284,7 +284,7 @@ again:
- 	return &grp;
- }
- 
--static void nss_setgrent(void)
-+static void samba_nss_setgrent(void)
- {
- 	NSS_STATUS (*_nss_setgrent)(void) =
- 		(NSS_STATUS (*)(void))find_fn("setgrent");
-@@ -299,7 +299,7 @@ static void nss_setgrent(void)
- 	}
- }
- 
--static void nss_endgrent(void)
-+static void samba_nss_endgrent(void)
- {
- 	NSS_STATUS (*_nss_endgrent)(void) =
- 		(NSS_STATUS (*)(void))find_fn("endgrent");
-@@ -396,7 +396,7 @@ static void nss_test_users(void)
- {
- 	struct passwd *pwd;
- 
--	nss_setpwent();
-+	samba_nss_setpwent();
- 	/* loop over all users */
- 	while ((pwd = nss_getpwent())) {
- 		printf("Testing user %s\n", pwd->pw_name);
-@@ -418,14 +418,14 @@ static void nss_test_users(void)
- 		printf("initgroups: "); nss_test_initgroups(pwd->pw_name, pwd->pw_gid);
- 		printf("\n");
- 	}
--	nss_endpwent();
-+	samba_nss_endpwent();
- }
- 
- static void nss_test_groups(void)
- {
- 	struct group *grp;
- 
--	nss_setgrent();
-+	samba_nss_setgrent();
- 	/* loop over all groups */
- 	while ((grp = nss_getgrent())) {
- 		printf("Testing group %s\n", grp->gr_name);
-@@ -446,7 +446,7 @@ static void nss_test_groups(void)
- 		printf("getgrgid: "); print_group(grp);
- 		printf("\n");
- 	}
--	nss_endgrent();
-+	samba_nss_endgrent();
- }
- 
- static void nss_test_errors(void)
--- 
-2.27.0
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-waf-add-support-of-cross_compile.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-waf-add-support-of-cross_compile.patch
deleted file mode 100644
index 23b35a8..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-waf-add-support-of-cross_compile.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 4b8463ff43f8983a706b181c5292491f9f954be1 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Fri, 25 Jan 2019 15:00:59 +0800
-Subject: [PATCH] waf: add support of cross_compile
-
-After upgrade, waf also upgraded 
-
-on 1.5.19, for cross_compile, subprocess.Popen is set to be
-samba_cross.cross_Popen, which will not execute testprog on
-host, but only read result from cross-answers.txt which is
-passed by option --cross-answer
-
-part of old code:
-    args = Utils.to_list(kw.get('exec_args', []))
-    proc = Utils.pproc.Popen([lastprog] + args, stdout=Utils.pproc.PIPE, stderr=Utils.pproc.PIPE)
-
-but on new version, exec_args is not used and cause do_configure
-failed with Exec format error
-
-fixed by append cross anser related args to cmd
-
-Upstream-Status: Submitted [https://gitlab.com/samba-team/samba/merge_requests/211]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- third_party/waf/waflib/Tools/c_config.py | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/third_party/waf/waflib/Tools/c_config.py b/third_party/waf/waflib/Tools/c_config.py
-index 7608215..767cf33 100644
---- a/third_party/waf/waflib/Tools/c_config.py
-+++ b/third_party/waf/waflib/Tools/c_config.py
-@@ -660,20 +660,21 @@ class test_exec(Task.Task):
- 	"""
- 	color = 'PINK'
- 	def run(self):
-+		args = self.generator.bld.kw.get('exec_args', [])
- 		if getattr(self.generator, 'rpath', None):
- 			if getattr(self.generator, 'define_ret', False):
--				self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()])
--			else:
--				self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()])
-+				self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()] + args)
-+			else: 
-+				self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()] + args)
- 		else:
- 			env = self.env.env or {}
- 			env.update(dict(os.environ))
- 			for var in ('LD_LIBRARY_PATH', 'DYLD_LIBRARY_PATH', 'PATH'):
- 				env[var] = self.inputs[0].parent.abspath() + os.path.pathsep + env.get(var, '')
- 			if getattr(self.generator, 'define_ret', False):
--				self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()], env=env)
-+				self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()] + args, env=env)
- 			else:
--				self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()], env=env)
-+				self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()] + args, env=env)
- 
- @feature('test_exec')
- @after_method('apply_link')
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/20-do-not-import-target-module-while-cross-compile.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0002-do-not-import-target-module-while-cross-compile.patch
similarity index 94%
rename from meta-openembedded/meta-networking/recipes-connectivity/samba/samba/20-do-not-import-target-module-while-cross-compile.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0002-do-not-import-target-module-while-cross-compile.patch
index 3f2921e..292e614 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/20-do-not-import-target-module-while-cross-compile.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0002-do-not-import-target-module-while-cross-compile.patch
@@ -1,4 +1,4 @@
-From cc0576405803bcae45ee353c4333c449cead9207 Mon Sep 17 00:00:00 2001
+From 9ebea97a52e4f70e831dd6402b865c77753ce1cc Mon Sep 17 00:00:00 2001
 From: Changqing Li <changqing.li@windriver.com>
 Date: Tue, 25 Jun 2019 14:25:08 +0800
 Subject: [PATCH] do not import target module while cross compile
@@ -12,10 +12,10 @@
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
 ---
  buildtools/wafsamba/samba_bundled.py | 27 +++++++++++++++++++--------
- 1 file changed, 18 insertions(+), 8 deletions(-)
+ 1 file changed, 19 insertions(+), 8 deletions(-)
 
 diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
-index 60ce7da..5468a36 100644
+index 5f080dd..cdc115e 100644
 --- a/buildtools/wafsamba/samba_bundled.py
 +++ b/buildtools/wafsamba/samba_bundled.py
 @@ -4,6 +4,7 @@ import sys
@@ -63,5 +63,5 @@
          Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion))
          sys.exit(1)
 -- 
-2.7.4
+2.17.1
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0002-util_sec.c-Move-__thread-variable-to-global-scope.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0002-util_sec.c-Move-__thread-variable-to-global-scope.patch
deleted file mode 100644
index 6fc8493..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0002-util_sec.c-Move-__thread-variable-to-global-scope.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From c62a6f32ab965de2ec77a614f20f04568116835b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 5 Sep 2019 21:39:05 -0700
-Subject: [PATCH 2/2] util_sec.c: Move __thread variable to global scope
-
-Make clang happy otherwise it complains about variable scope
-
-fixes
-
-source3/./lib/util_sec.c:470:4: error: '__thread' variables must have global storage
-        } __thread cache;
-          ^
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- source3/lib/util_sec.c | 19 +++++++++++--------
- 1 file changed, 11 insertions(+), 8 deletions(-)
-
-diff --git a/source3/lib/util_sec.c b/source3/lib/util_sec.c
-index 9408269..7390318 100644
---- a/source3/lib/util_sec.c
-+++ b/source3/lib/util_sec.c
-@@ -444,6 +444,17 @@ void become_user_permanently(uid_t uid, gid_t gid)
- 	assert_gid(gid, gid);
- }
- 
-+#ifdef HAVE___THREAD
-+	struct cache_t {
-+		bool active;
-+		uid_t uid;
-+		gid_t gid;
-+		size_t setlen;
-+		uintptr_t gidset;
-+	};
-+
-+static __thread struct cache_t cache;
-+#endif
- /**********************************************************
-  Function to set thread specific credentials. Leave
-  saved-set uid/gid alone.Must be thread-safe code.
-@@ -461,14 +472,6 @@ int set_thread_credentials(uid_t uid,
- 	 * available.
- 	 */
- #ifdef HAVE___THREAD
--	static struct {
--		bool active;
--		uid_t uid;
--		gid_t gid;
--		size_t setlen;
--		uintptr_t gidset;
--	} __thread cache;
--
- 	if (cache.active &&
- 	    cache.uid == uid &&
- 	    cache.gid == gid &&
--- 
-2.23.0
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/21-add-config-option-without-valgrind.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0003-Add-config-option-without-valgrind.patch
similarity index 88%
rename from meta-openembedded/meta-networking/recipes-connectivity/samba/samba/21-add-config-option-without-valgrind.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0003-Add-config-option-without-valgrind.patch
index 46a6f06..93ca005 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/21-add-config-option-without-valgrind.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0003-Add-config-option-without-valgrind.patch
@@ -1,4 +1,4 @@
-From 87bc8e7eafc7d12a1d3a143ebb9e43cf5fbafb72 Mon Sep 17 00:00:00 2001
+From 6455448eb060d03a534539f1a424e2d3e44319e1 Mon Sep 17 00:00:00 2001
 From: Changqing Li <changqing.li@windriver.com>
 Date: Thu, 20 Jun 2019 14:11:16 +0800
 Subject: [PATCH] Add config option without-valgrind
@@ -15,10 +15,10 @@
  2 files changed, 7 insertions(+), 2 deletions(-)
 
 diff --git a/lib/replace/wscript b/lib/replace/wscript
-index a7fd25d..a19ae68 100644
+index 2c856b6..bc726f7 100644
 --- a/lib/replace/wscript
 +++ b/lib/replace/wscript
-@@ -110,8 +110,9 @@ def configure(conf):
+@@ -121,8 +121,9 @@ def configure(conf):
      conf.CHECK_HEADERS('sys/fileio.h sys/filesys.h sys/dustat.h sys/sysmacros.h')
      conf.CHECK_HEADERS('xfs/libxfs.h netgroup.h')
  
@@ -31,10 +31,10 @@
      conf.CHECK_HEADERS('sys/extattr.h sys/ea.h sys/proplist.h sys/cdefs.h')
      conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h')
 diff --git a/wscript b/wscript
-index e38a8e9..38b7230 100644
+index 83d9421..969b07a 100644
 --- a/wscript
 +++ b/wscript
-@@ -105,6 +105,10 @@ def options(opt):
+@@ -123,6 +123,10 @@ def options(opt):
                    help=("Disable RELRO builds"),
                    action="store_false", dest='enable_relro')
  
@@ -46,5 +46,5 @@
  
      opt.load('python') # options for disabling pyc or pyo compilation
 -- 
-2.7.4
+2.17.1
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-Add-options-to-configure-the-use-of-libbsd.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0004-Add-options-to-configure-the-use-of-libbsd.patch
similarity index 76%
rename from meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-Add-options-to-configure-the-use-of-libbsd.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0004-Add-options-to-configure-the-use-of-libbsd.patch
index 80cdd39..5fd32f3 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-Add-options-to-configure-the-use-of-libbsd.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0004-Add-options-to-configure-the-use-of-libbsd.patch
@@ -1,19 +1,21 @@
-From 1e8d31c138395122df4cc2a3e0edd6cd3fad736c Mon Sep 17 00:00:00 2001
+From 5abf3c2efa1cd4e16878b6b26068ff153973ebd3 Mon Sep 17 00:00:00 2001
 From: Peter Kjellerstedt <pkj@axis.com>
 Date: Tue, 28 Apr 2020 02:05:33 +0200
 Subject: [PATCH] Add options to configure the use of libbsd
 
 Upstream-Status: Inappropriate [oe deterministic build specific]
 Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
+
+Rebase to 4.14.4
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
 ---
- buildtools/wafsamba/wscript  |  7 +++++++
- lib/crypto/wscript_configure |  2 +-
- lib/replace/wscript          | 29 +++++++++++++++--------------
- lib/texpect/wscript          |  7 ++++++-
- 4 files changed, 29 insertions(+), 16 deletions(-)
+ buildtools/wafsamba/wscript |  7 +++++++
+ lib/replace/wscript         | 29 +++++++++++++++--------------
+ lib/texpect/wscript         |  8 +++++++-
+ 3 files changed, 29 insertions(+), 15 deletions(-)
 
 diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript
-index 7b8fb01..a8e4b0a 100644
+index 1aadb95..e7b47c0 100644
 --- a/buildtools/wafsamba/wscript
 +++ b/buildtools/wafsamba/wscript
 @@ -88,6 +88,13 @@ def options(opt):
@@ -30,24 +32,11 @@
      gr = opt.option_group('developer options')
  
      gr.add_option('-C',
-diff --git a/lib/crypto/wscript_configure b/lib/crypto/wscript_configure
-index 09dfe04..e871718 100644
---- a/lib/crypto/wscript_configure
-+++ b/lib/crypto/wscript_configure
-@@ -2,7 +2,7 @@
- from waflib import Options
- from waflib import Errors, Logs
- 
--if not conf.CHECK_FUNCS_IN('MD5Init', 'bsd', headers='bsd/md5.h',
-+if not Options.options.enable_libbsd or not conf.CHECK_FUNCS_IN('MD5Init', 'bsd', headers='bsd/md5.h',
-     checklibc=True):
-     conf.CHECK_FUNCS_IN('MD5Init', 'md5', headers='sys/md5.h',
-                         checklibc=True)
 diff --git a/lib/replace/wscript b/lib/replace/wscript
-index 0020d2a..cd9228f 100644
+index bc726f7..44ad0d6 100644
 --- a/lib/replace/wscript
 +++ b/lib/replace/wscript
-@@ -407,20 +407,21 @@ def configure(conf):
+@@ -419,20 +419,21 @@ def configure(conf):
  
      strlcpy_in_bsd = False
  
@@ -84,13 +73,14 @@
      conf.CHECK_CODE('''
                  struct ucred cred;
 diff --git a/lib/texpect/wscript b/lib/texpect/wscript
-index e14c048..a91de59 100644
+index 82f6b25..33eea64 100644
 --- a/lib/texpect/wscript
 +++ b/lib/texpect/wscript
-@@ -1,7 +1,12 @@
+@@ -1,7 +1,13 @@
  #!/usr/bin/env python
-+from waflib import Options
  
++from waflib import Options
++
  def configure(conf):
 -    conf.CHECK_FUNCS_IN('openpty', 'util', checklibc=True, headers='pty.h util.h bsd/libutil.h libutil.h')
 +    hdrs = 'pty.h util.h'
@@ -100,4 +90,7 @@
 +    conf.CHECK_FUNCS_IN('openpty', 'util', checklibc=True, headers=hdrs)
  
  def build(bld):
-     bld.SAMBA_BINARY('texpect', 'texpect.c', deps='popt util replace', install=False)
+     bld.SAMBA_BINARY('texpect',
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0005-samba-build-dnsserver_common-code.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0005-samba-build-dnsserver_common-code.patch
new file mode 100644
index 0000000..2abbe56
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0005-samba-build-dnsserver_common-code.patch
@@ -0,0 +1,30 @@
+From 10d7abc8f1aa99ae45209aeb704978d206f329c0 Mon Sep 17 00:00:00 2001
+From: Joe Slater <joe.slater@windriver.com>
+Date: Tue, 1 Jun 2021 11:09:19 +0800
+Subject: [PATCH] samba: build dnsserver_common code
+
+Just 'install' does not seem to do it.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+---
+ source4/dns_server/wscript_build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/source4/dns_server/wscript_build b/source4/dns_server/wscript_build
+index e97c85d..a49fbb9 100644
+--- a/source4/dns_server/wscript_build
++++ b/source4/dns_server/wscript_build
+@@ -4,7 +4,7 @@ bld.SAMBA_LIBRARY('dnsserver_common',
+         source='dnsserver_common.c',
+         deps='samba-util samba-errors ldbsamba clidns',
+         private_library=True,
+-        install=bld.AD_DC_BUILD_IS_ENABLED()
++        enabled=bld.AD_DC_BUILD_IS_ENABLED()
+         )
+ 
+ bld.SAMBA_MODULE('service_dns',
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0006-samba-defeat-iconv-test.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0006-samba-defeat-iconv-test.patch
new file mode 100644
index 0000000..00b692b
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0006-samba-defeat-iconv-test.patch
@@ -0,0 +1,39 @@
+From 59f7098bfbd63f9b3c19d7d297a8f90870a1893d Mon Sep 17 00:00:00 2001
+From: Joe Slater <joe.slater@windriver.com>
+Date: Mon, 31 May 2021 14:50:38 +0800
+Subject: [PATCH] samba: defeat iconv test
+
+A test was added when configuring samba which requires target code
+to be executed.  In general, this will not work, so we eliminate it.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+---
+ lib/util/charset/wscript_configure | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/lib/util/charset/wscript_configure b/lib/util/charset/wscript_configure
+index 9c27fc6..845eb36 100644
+--- a/lib/util/charset/wscript_configure
++++ b/lib/util/charset/wscript_configure
+@@ -17,6 +17,8 @@ if (conf.CHECK_FUNCS_IN('iconv_open', 'iconv', checklibc=False, headers='iconv.h
+     
+     conf.DEFINE('HAVE_NATIVE_ICONV', 1)
+ 
++"""
++[added for 4.7.0, but breaks cross-compilation]
+ conf.CHECK_CODE('''
+                 uint8_t inbuf[2] = { 0x30, 0xdf };
+                 uint8_t outbuf[4] = { 0 };
+@@ -36,6 +38,7 @@ conf.CHECK_CODE('''
+                 msg='Checking errno of iconv for illegal multibyte sequence',
+                 lib='iconv',
+                 headers='errno.h iconv.h')
++"""
+ 
+ if conf.CHECK_CFG(package='icu-i18n',
+                args='--cflags --libs',
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0007-wscript_configure_system_gnutls-disable-check-gnutls.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0007-wscript_configure_system_gnutls-disable-check-gnutls.patch
new file mode 100644
index 0000000..0f843af
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0007-wscript_configure_system_gnutls-disable-check-gnutls.patch
@@ -0,0 +1,39 @@
+From a31a014c5d98501074fde1acb5c00162c927c361 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Mon, 31 May 2021 15:47:58 +0800
+Subject: [PATCH] wscript_configure_system_gnutls: disable check gnutls
+ AES_CFB8/AES_CMAC
+
+The CHECK_VALUEOF() can not work on cross-compilation.
+
+Fixes configure error:
+  Checking value of GNUTLS_CIPHER_AES_128_CFB8: UNKNOWN
+  Checking value of GNUTLS_MAC_AES_CMAC_128: UNKNOWN
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ wscript_configure_system_gnutls | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/wscript_configure_system_gnutls b/wscript_configure_system_gnutls
+index 2ec217f..cd91b55 100644
+--- a/wscript_configure_system_gnutls
++++ b/wscript_configure_system_gnutls
+@@ -39,6 +39,7 @@ if (parse_version(gnutls_version) > parse_version('3.6.14')):
+ if conf.CHECK_FUNCS_IN('gnutls_get_system_config_file', 'gnutls'):
+     conf.DEFINE('HAVE_GNUTLS_CRYPTO_POLICIES', 1)
+ 
++"""
+ if conf.CHECK_VALUEOF('GNUTLS_CIPHER_AES_128_CFB8', headers='gnutls/gnutls.h'):
+     conf.DEFINE('HAVE_GNUTLS_AES_CFB8', 1)
+ else:
+@@ -48,3 +49,4 @@ if conf.CHECK_VALUEOF('GNUTLS_MAC_AES_CMAC_128', headers='gnutls/gnutls.h'):
+     conf.DEFINE('HAVE_GNUTLS_AES_CMAC', 1)
+ else:
+     Logs.warn('No gnutls support for AES CMAC')
++"""
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0008-source3-wscript-disable-check-fcntl-F_OWNER_EX.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0008-source3-wscript-disable-check-fcntl-F_OWNER_EX.patch
new file mode 100644
index 0000000..d4ceb5c
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0008-source3-wscript-disable-check-fcntl-F_OWNER_EX.patch
@@ -0,0 +1,79 @@
+From ba6bc5459cf148dd617fd9cd38dd50c3a9b5d706 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Mon, 31 May 2021 15:50:48 +0800
+Subject: [PATCH] source3/wscript: disable check fcntl F_OWNER_EX
+
+It fails on cross-compilation.
+
+Fixes configure error:
+  Checking whether fcntl supports flags to send direct I/O availability signals: UNKNOWN
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ source3/wscript | 48 ------------------------------------------------
+ 1 file changed, 48 deletions(-)
+
+diff --git a/source3/wscript b/source3/wscript
+index adc31ce..f6de0a6 100644
+--- a/source3/wscript
++++ b/source3/wscript
+@@ -1168,54 +1168,6 @@ err:
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <stdlib.h>
+-#include <sys/socket.h>
+-
+-int main(void)
+-{
+-        int sockfd, ret;
+-        struct f_owner_ex owner, get_owner;
+-
+-        sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
+-        if (sockfd == -1) {
+-            goto err;
+-        }
+-
+-        owner.type = F_OWNER_PID;
+-        owner.pid = getpid();
+-
+-        ret = fcntl(sockfd, F_SETOWN_EX, &owner);
+-        if (ret == -1) {
+-            goto err;
+-        }
+-
+-        ret = fcntl(sockfd, F_GETOWN_EX, &get_owner);
+-        if (ret == -1) {
+-            goto err;
+-        }
+-
+-        if (get_owner.type != F_OWNER_PID) {
+-            goto err;
+-        }
+-
+-        if (get_owner.pid != getpid()) {
+-            goto err;
+-        }
+-
+-        close(sockfd);
+-        exit(0);
+-err:
+-        close(sockfd);
+-        exit(1);
+-}''',
+-            'HAVE_F_OWNER_EX',
+-            addmain=False,
+-            execute=True,
+-            msg="Checking whether fcntl supports flags to send direct I/O availability signals")
+-
+-    conf.CHECK_CODE('''
+-#include <fcntl.h>
+-#include <unistd.h>
+-#include <stdlib.h>
+ #include <stdint.h>
+ 
+ #define DATA "hinttest.fcntl"
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0009-source3-wscript-disable-check-fcntl-RW_HINTS.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0009-source3-wscript-disable-check-fcntl-RW_HINTS.patch
new file mode 100644
index 0000000..a0b7510
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0009-source3-wscript-disable-check-fcntl-RW_HINTS.patch
@@ -0,0 +1,92 @@
+From 9942bca2e276c7b4c7696a08594258430c4c5bb5 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Thu, 3 Jun 2021 09:39:56 +0800
+Subject: [PATCH] source3/wscript: disable check fcntl RW_HINTS
+
+It fails on cross-compilation for musl.
+
+Fixes configure error:
+  Checking whether fcntl supports setting/geting hints: UNKNOWN
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ source3/wscript | 61 -------------------------------------------------
+ 1 file changed, 61 deletions(-)
+
+diff --git a/source3/wscript b/source3/wscript
+index f6de0a6..3e260c1 100644
+--- a/source3/wscript
++++ b/source3/wscript
+@@ -1164,67 +1164,6 @@ err:
+             execute=True,
+             msg="Checking whether fcntl lock supports open file description locks")
+ 
+-    conf.CHECK_CODE('''
+-#include <fcntl.h>
+-#include <unistd.h>
+-#include <stdlib.h>
+-#include <stdint.h>
+-
+-#define DATA "hinttest.fcntl"
+-
+-int main(void)
+-{
+-        uint64_t hint, get_hint;
+-        int fd;
+-
+-        fd = open(DATA, O_RDONLY | O_CREAT | O_EXCL);
+-        if (fd == -1) {
+-            goto err;
+-        }
+-
+-        hint = RWH_WRITE_LIFE_SHORT;
+-        int ret = fcntl(fd, F_SET_RW_HINT, &hint);
+-        if (ret == -1) {
+-            goto err;
+-        }
+-
+-        ret = fcntl(fd, F_GET_RW_HINT, &get_hint);
+-        if (ret == -1) {
+-            goto err;
+-        }
+-
+-        if (get_hint != RWH_WRITE_LIFE_SHORT) {
+-            goto err;
+-        }
+-
+-        hint = RWH_WRITE_LIFE_EXTREME;
+-        ret = fcntl(fd, F_SET_FILE_RW_HINT, &hint);
+-        if (ret == -1) {
+-            goto err;
+-        }
+-
+-        ret = fcntl(fd, F_GET_FILE_RW_HINT, &get_hint);
+-        if (ret == -1) {
+-            goto err;
+-        }
+-
+-        if (get_hint != RWH_WRITE_LIFE_EXTREME) {
+-            goto err;
+-        }
+-
+-        close(fd);
+-        unlink(DATA);
+-        exit(0);
+-err:
+-        close(fd);
+-        unlink(DATA);
+-        exit(1);
+-}''',
+-            'HAVE_RW_HINTS',
+-            addmain=False,
+-            execute=True,
+-            msg="Checking whether fcntl supports setting/geting hints")
+-
+     conf.CHECK_STRUCTURE_MEMBER('struct stat', 'st_mtim.tv_nsec',
+                                 define='HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC') # Linux, Solaris
+     conf.CHECK_STRUCTURE_MEMBER('struct stat', 'st_mtimensec',
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/CVE-2020-14318.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/CVE-2020-14318.patch
deleted file mode 100644
index ff1225d..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/CVE-2020-14318.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From ccf53dfdcd39f3526dbc2f20e1245674155380ff Mon Sep 17 00:00:00 2001
-From: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
-Date: Fri, 11 Dec 2020 11:32:44 +0900
-Subject: [PATCH] s4: torture: Add smb2.notify.handle-permissions test.
-
-s3: smbd: Ensure change notifies can't get set unless the
- directory handle is open for SEC_DIR_LIST.
-
-CVE-2020-14318
-
-BUG: https://bugzilla.samba.org/show_bug.cgi?id=14434
-
-Signed-off-by: Jeremy Allison <jra@samba.org>
-
-Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
----
- source3/smbd/notify.c         |  8 ++++
- source4/torture/smb2/notify.c | 82 ++++++++++++++++++++++++++++++++++-
- 2 files changed, 89 insertions(+), 1 deletion(-)
-
-diff --git a/source3/smbd/notify.c b/source3/smbd/notify.c
-index 44c0b09..d23c03b 100644
---- a/source3/smbd/notify.c
-+++ b/source3/smbd/notify.c
-@@ -283,6 +283,14 @@ NTSTATUS change_notify_create(struct files_struct *fsp, uint32_t filter,
- 	char fullpath[len+1];
- 	NTSTATUS status = NT_STATUS_NOT_IMPLEMENTED;
- 
-+	/*
-+	 * Setting a changenotify needs READ/LIST access
-+	 * on the directory handle.
-+	 */
-+	if (!(fsp->access_mask & SEC_DIR_LIST)) {
-+		return NT_STATUS_ACCESS_DENIED;
-+	}
-+
- 	if (fsp->notify != NULL) {
- 		DEBUG(1, ("change_notify_create: fsp->notify != NULL, "
- 			  "fname = %s\n", fsp->fsp_name->base_name));
-diff --git a/source4/torture/smb2/notify.c b/source4/torture/smb2/notify.c
-index ebb4f8a..a5c9b94 100644
---- a/source4/torture/smb2/notify.c
-+++ b/source4/torture/smb2/notify.c
-@@ -2569,6 +2569,83 @@ done:
- 	return ok;
- }
- 
-+/*
-+  Test asking for a change notify on a handle without permissions.
-+*/
-+
-+#define BASEDIR_HPERM BASEDIR "_HPERM"
-+
-+static bool torture_smb2_notify_handle_permissions(
-+		struct torture_context *torture,
-+		struct smb2_tree *tree)
-+{
-+	bool ret = true;
-+	NTSTATUS status;
-+	union smb_notify notify;
-+	union smb_open io;
-+	struct smb2_handle h1 = {{0}};
-+	struct smb2_request *req;
-+
-+	smb2_deltree(tree, BASEDIR_HPERM);
-+	smb2_util_rmdir(tree, BASEDIR_HPERM);
-+
-+	torture_comment(torture,
-+		"TESTING CHANGE NOTIFY "
-+		"ON A HANDLE WITHOUT PERMISSIONS\n");
-+
-+	/*
-+	  get a handle on the directory
-+	*/
-+	ZERO_STRUCT(io.smb2);
-+	io.generic.level = RAW_OPEN_SMB2;
-+	io.smb2.in.create_flags = 0;
-+	io.smb2.in.desired_access = SEC_FILE_READ_ATTRIBUTE;
-+	io.smb2.in.create_options = NTCREATEX_OPTIONS_DIRECTORY;
-+	io.smb2.in.file_attributes = FILE_ATTRIBUTE_NORMAL;
-+	io.smb2.in.share_access = NTCREATEX_SHARE_ACCESS_READ |
-+				NTCREATEX_SHARE_ACCESS_WRITE;
-+	io.smb2.in.alloc_size = 0;
-+	io.smb2.in.create_disposition = NTCREATEX_DISP_CREATE;
-+	io.smb2.in.impersonation_level = SMB2_IMPERSONATION_ANONYMOUS;
-+	io.smb2.in.security_flags = 0;
-+	io.smb2.in.fname = BASEDIR_HPERM;
-+
-+	status = smb2_create(tree, torture, &io.smb2);
-+	CHECK_STATUS(status, NT_STATUS_OK);
-+	h1 = io.smb2.out.file.handle;
-+
-+	/* ask for a change notify,
-+	   on file or directory name changes */
-+	ZERO_STRUCT(notify.smb2);
-+	notify.smb2.level = RAW_NOTIFY_SMB2;
-+	notify.smb2.in.buffer_size = 1000;
-+	notify.smb2.in.completion_filter = FILE_NOTIFY_CHANGE_NAME;
-+	notify.smb2.in.file.handle = h1;
-+	notify.smb2.in.recursive = true;
-+
-+	req = smb2_notify_send(tree, &notify.smb2);
-+	torture_assert_goto(torture,
-+			req != NULL,
-+			ret,
-+			done,
-+			"smb2_notify_send failed\n");
-+
-+	/*
-+	 * Cancel it, we don't really want to wait.
-+	 */
-+	smb2_cancel(req);
-+	status = smb2_notify_recv(req, torture, &notify.smb2);
-+	/* Handle h1 doesn't have permissions for ChangeNotify. */
-+	CHECK_STATUS(status, NT_STATUS_ACCESS_DENIED);
-+
-+done:
-+	if (!smb2_util_handle_empty(h1)) {
-+		smb2_util_close(tree, h1);
-+	}
-+	smb2_deltree(tree, BASEDIR_HPERM);
-+	return ret;
-+}
-+
- /*
-    basic testing of SMB2 change notify
- */
-@@ -2602,7 +2679,10 @@ struct torture_suite *torture_smb2_notify_init(TALLOC_CTX *ctx)
- 				     torture_smb2_notify_rmdir3);
- 	torture_suite_add_2smb2_test(suite, "rmdir4",
- 				     torture_smb2_notify_rmdir4);
--
-+	torture_suite_add_1smb2_test(suite,
-+				    "handle-permissions",
-+				    torture_smb2_notify_handle_permissions);
-+ 
- 	suite->description = talloc_strdup(suite, "SMB2-NOTIFY tests");
- 
- 	return suite;
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/CVE-2020-14383.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/CVE-2020-14383.patch
deleted file mode 100644
index 3341b80..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/CVE-2020-14383.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From ff17443fe761eda864d13957bec45f5bac478fe3 Mon Sep 17 00:00:00 2001
-From: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
-Date: Fri, 11 Dec 2020 14:34:31 +0900
-Subject: [PATCH] CVE-2020-14383: s4/dns: Ensure variable initialization with 
- NULL. do not crash when additional data not found
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Found by Francis Brosnan Blázquez <francis@aspl.es>.
-Based on patches from Francis Brosnan Blázquez <francis@aspl.es>
-and Jeremy Allison <jra@samba.org>
-
-BUG: https://bugzilla.samba.org/show_bug.cgi?id=14472
-BUG: https://bugzilla.samba.org/show_bug.cgi?id=12795
-
-Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
-Reviewed-by: Jeremy Allison <jra@samba.org>
-
-Autobuild-User(master): Douglas Bagnall <dbagnall@samba.org>
-Autobuild-Date(master): Mon Aug 24 00:21:41 UTC 2020 on sn-devel-184
-
-(based on commit df98e7db04c901259dd089e20cd557bdbdeaf379)
-(based on commit 7afe449e7201be92bed8e53cbb37b74af720ef4e
-
-Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
----
- .../rpc_server/dnsserver/dcerpc_dnsserver.c   | 31 ++++++++++---------
- 1 file changed, 17 insertions(+), 14 deletions(-)
-
-diff --git a/source4/rpc_server/dnsserver/dcerpc_dnsserver.c b/source4/rpc_server/dnsserver/dcerpc_dnsserver.c
-index 910de9a1..618c7096 100644
---- a/source4/rpc_server/dnsserver/dcerpc_dnsserver.c
-+++ b/source4/rpc_server/dnsserver/dcerpc_dnsserver.c
-@@ -1754,15 +1754,17 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate,
- 	TALLOC_CTX *tmp_ctx;
- 	char *name;
- 	const char * const attrs[] = { "name", "dnsRecord", NULL };
--	struct ldb_result *res;
--	struct DNS_RPC_RECORDS_ARRAY *recs;
-+	struct ldb_result *res = NULL;
-+	struct DNS_RPC_RECORDS_ARRAY *recs = NULL;
- 	char **add_names = NULL;
--	char *rname;
-+	char *rname = NULL;
- 	const char *preference_name = NULL;
- 	int add_count = 0;
- 	int i, ret, len;
- 	WERROR status;
--	struct dns_tree *tree, *base, *node;
-+	struct dns_tree *tree = NULL;
-+	struct dns_tree *base = NULL;
-+	struct dns_tree *node = NULL;
- 
- 	tmp_ctx = talloc_new(mem_ctx);
- 	W_ERROR_HAVE_NO_MEMORY(tmp_ctx);
-@@ -1845,15 +1847,15 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate,
- 		}
- 	}
- 
--	talloc_free(res);
--	talloc_free(tree);
--	talloc_free(name);
-+	TALLOC_FREE(res);
-+	TALLOC_FREE(tree);
-+	TALLOC_FREE(name);
- 
- 	/* Add any additional records */
- 	if (select_flag & DNS_RPC_VIEW_ADDITIONAL_DATA) {
- 		for (i=0; i<add_count; i++) {
--			struct dnsserver_zone *z2;
--
-+			struct dnsserver_zone *z2 = NULL;
-+			struct ldb_message *msg = NULL;
- 			/* Search all the available zones for additional name */
- 			for (z2 = dsstate->zones; z2; z2 = z2->next) {
- 				char *encoded_name;
-@@ -1865,14 +1867,15 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate,
- 						LDB_SCOPE_ONELEVEL, attrs,
- 						"(&(objectClass=dnsNode)(name=%s)(!(dNSTombstoned=TRUE)))",
- 						encoded_name);
--				talloc_free(name);
-+				TALLOC_FREE(name);
- 				if (ret != LDB_SUCCESS) {
- 					continue;
- 				}
- 				if (res->count == 1) {
-+					msg = res->msgs[0];
- 					break;
- 				} else {
--					talloc_free(res);
-+					TALLOC_FREE(res);
- 					continue;
- 				}
- 			}
-@@ -1885,10 +1888,10 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate,
- 			}
- 			status = dns_fill_records_array(tmp_ctx, NULL, DNS_TYPE_A,
- 							select_flag, rname,
--							res->msgs[0], 0, recs,
-+							msg, 0, recs,
- 							NULL, NULL);
--			talloc_free(rname);
--			talloc_free(res);
-+			TALLOC_FREE(rname);
-+			TALLOC_FREE(res);
- 		}
- 	}
- 
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/dnsserver-4.7.0.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/dnsserver-4.7.0.patch
deleted file mode 100644
index 0c7592f..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/dnsserver-4.7.0.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-samba: build dnsserver_common code
-
-Just 'install' does not seem to do it.
-
-Upstream-Status: Pending
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
---- a/source4/dns_server/wscript_build
-+++ b/source4/dns_server/wscript_build
-@@ -4,7 +4,7 @@ bld.SAMBA_LIBRARY('dnsserver_common',
-         source='dnsserver_common.c',
-         deps='samba-util samba-errors ldbsamba clidns',
-         private_library=True,
--        install=bld.AD_DC_BUILD_IS_ENABLED()
-+        enabled=bld.AD_DC_BUILD_IS_ENABLED()
-         )
- 
- bld.SAMBA_MODULE('service_dns',
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/glibc_only.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/glibc_only.patch
deleted file mode 100644
index d07ec0d..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/glibc_only.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 062cf74b498c1d12fd76f9d9bca926ac806e0b99 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Thu, 20 Jun 2019 14:15:18 +0800
-Subject: [PATCH] glibc only fix
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- ctdb/tests/src/test_mutex_raw.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/ctdb/tests/src/test_mutex_raw.c b/ctdb/tests/src/test_mutex_raw.c
-index 926a525..814343f 100644
---- a/ctdb/tests/src/test_mutex_raw.c
-+++ b/ctdb/tests/src/test_mutex_raw.c
-@@ -291,8 +291,10 @@ int main(int argc, const char **argv)
- 					"failed\n");
- 				exit (EXIT_FAILURE);
- 			}
-+#ifdef __GLIBC__
- 		} else if (ret == EBUSY) {
- 			printf("INFO: pid=%u\n", mutex->__data.__owner);
-+#endif
- 		} else if (ret == 0) {
- 			pthread_mutex_unlock(mutex);
- 		}
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/iconv-4.7.0.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/iconv-4.7.0.patch
deleted file mode 100644
index 5ae8c59..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/iconv-4.7.0.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-samba: defeat iconv test
-
-A test was added when configuring samba which requires target code
-to be executed.  In general, this will not work, so we eliminate it.
-
-Upstream-Status: Pending
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
---- a/lib/util/charset/wscript_configure
-+++ b/lib/util/charset/wscript_configure
-@@ -17,6 +17,8 @@ if (conf.CHECK_FUNCS_IN('iconv_open', 'i
-     
-     conf.DEFINE('HAVE_NATIVE_ICONV', 1)
- 
-+"""
-+[added for 4.7.0, but breaks cross-compilation]
- conf.CHECK_CODE('''
-                 uint8_t inbuf[2] = { 0x30, 0xdf };
-                 uint8_t outbuf[4] = { 0 };
-@@ -36,3 +38,4 @@ conf.CHECK_CODE('''
-                 msg='Checking errno of iconv for illegal multibyte sequence',
-                 lib='iconv',
-                 headers='errno.h iconv.h')
-+"""
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-samba-fix-musl-lib-without-innetgr.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/samba-fix-musl-lib-without-innetgr.patch
similarity index 100%
rename from meta-openembedded/meta-networking/recipes-connectivity/samba/samba/0001-samba-fix-musl-lib-without-innetgr.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/samba/samba/samba-fix-musl-lib-without-innetgr.patch
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb.conf b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb.conf
index d6bde41..588491e 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb.conf
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb.conf
@@ -32,17 +32,6 @@
 # Change this to the workgroup/NT-domain name your Samba server will part of
    workgroup = WORKGROUP
 
-# Windows Internet Name Serving Support Section:
-# WINS Support - Tells the NMBD component of Samba to enable its WINS Server
-#   wins support = no
-
-# WINS Server - Tells the NMBD components of Samba to be a WINS Client
-# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
-;   wins server = w.x.y.z
-
-# This will prevent nmbd to search for NetBIOS names through DNS.
-   dns proxy = no
-
 #### Networking ####
 
 # The specific set of interfaces / networks to bind to
@@ -68,14 +57,9 @@
 # Cap the size of the individual log files (in KiB).
    max log size = 1000
 
-# If you want Samba to only log through syslog then set the following
-# parameter to 'yes'.
-#   syslog only = no
-
-# We want Samba to log a minimum amount of information to syslog. Everything
-# should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
-# through syslog you should set the following parameter to something higher.
-   syslog = 0
+# We want Samba to only log to /var/log/samba/log.{smbd,nmbd}.
+# Append syslog@1 if you want important messages to be sent to syslog too.
+   logging = file
 
 # Do something sensible when Samba crashes: mail the admin a backtrace
    panic action = /usr/share/samba/panic-action %d
@@ -94,10 +78,6 @@
 # new domain.
    server role = standalone server
 
-# If you are using encrypted passwords, Samba will need to know what
-# password database type you are using.  
-   passdb backend = tdbsam
-
    obey pam restrictions = yes
 
 # This boolean parameter controls whether Samba attempts to sync the Unix
@@ -123,8 +103,8 @@
 ########## Domains ###########
 
 #
-# The following settings only takes effect if 'server role = primary
-# classic domain controller', 'server role = backup domain controller'
+# The following settings only takes effect if 'server role = classic
+# primary domain controller', 'server role = classic backup domain controller'
 # or 'domain logons' is set 
 #
 
@@ -172,15 +152,17 @@
 
 # Some defaults for winbind (make sure you're not using the ranges
 # for something else.)
-;   idmap uid = 10000-20000
-;   idmap gid = 10000-20000
+;   idmap config * :              backend = tdb
+;   idmap config * :              range   = 3000-7999
+;   idmap config YOURDOMAINHERE : backend = tdb
+;   idmap config YOURDOMAINHERE : range   = 100000-999999
 ;   template shell = /bin/bash
 
 # Setup usershare options to enable non-root users to share folders
 # with the net usershare command.
 
-# Maximum number of usershare. 0 (default) means that usershare is disabled.
-;   usershare max shares = 100
+# Maximum number of usershare. 0 means that usershare is disabled.
+#   usershare max shares = 100
 
 # Allow users who've been granted usershare privileges to create
 # public shares, not just authenticated ones
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb_conf-4.7.0.patch b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb_conf-4.7.0.patch
deleted file mode 100644
index 6ae2928..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba/smb_conf-4.7.0.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From f99b6a8617df6a46f41fb68ffafb2608dbb6681e Mon Sep 17 00:00:00 2001
-From: Joe Slater <joe.slater@windriver.com>
-Date: Wed, 8 Nov 2017 11:58:05 -0800
-Subject: [PATCH] samba: correct log files location
-
-We use /var/log/samba.
-
-Upstream-Status: Pending
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
----
- examples/smb.conf.default | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/examples/smb.conf.default b/examples/smb.conf.default
-index 2f20720..44c1aa8 100644
---- a/examples/smb.conf.default
-+++ b/examples/smb.conf.default
-@@ -52,7 +52,7 @@
- 
- # this tells Samba to use a separate log file for each machine
- # that connects
--   log file = /usr/local/samba/var/log.%m
-+   log file = /var/log/samba/log.%m
- 
- # Put a capping on the size of the log files (in Kb).
-    max log size = 50
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.18.bb b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.5.bb
similarity index 83%
rename from meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.18.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.5.bb
index 166bf57..5c5ce36 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.18.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.5.bb
@@ -14,40 +14,40 @@
 
 SRC_URI = "${SAMBA_MIRROR}/stable/samba-${PV}.tar.gz \
            file://smb.conf \
-           file://16-do-not-check-xsltproc-manpages.patch \
-           file://20-do-not-import-target-module-while-cross-compile.patch \
-           file://21-add-config-option-without-valgrind.patch \
-           file://netdb_defines.patch \
-           file://glibc_only.patch \
-           file://iconv-4.7.0.patch \
-           file://dnsserver-4.7.0.patch \
-           file://smb_conf-4.7.0.patch \
            file://volatiles.03_samba \
-           file://0001-waf-add-support-of-cross_compile.patch \
-           file://0001-lib-replace-wscript-Avoid-generating-nested-main-fun.patch \
-           file://0002-util_sec.c-Move-__thread-variable-to-global-scope.patch \
-           file://0001-Add-options-to-configure-the-use-of-libbsd.patch \
-           file://0001-nsswitch-nsstest.c-Avoid-nss-function-conflicts-with.patch \
-           file://CVE-2020-14318.patch \
-           file://CVE-2020-14383.patch \
+           file://0001-Don-t-check-xsltproc-manpages.patch \
+           file://0002-do-not-import-target-module-while-cross-compile.patch \
+           file://0003-Add-config-option-without-valgrind.patch \
+           file://0004-Add-options-to-configure-the-use-of-libbsd.patch \
+           file://0005-samba-build-dnsserver_common-code.patch \
+           file://0006-samba-defeat-iconv-test.patch \
+           file://0007-wscript_configure_system_gnutls-disable-check-gnutls.patch \
+           file://0008-source3-wscript-disable-check-fcntl-F_OWNER_EX.patch \
+           file://0009-source3-wscript-disable-check-fcntl-RW_HINTS.patch \
            "
+
 SRC_URI_append_libc-musl = " \
+           file://netdb_defines.patch \
            file://samba-pam.patch \
            file://samba-4.3.9-remove-getpwent_r.patch \
            file://cmocka-uintptr_t.patch \
-           file://0001-samba-fix-musl-lib-without-innetgr.patch \
-          "
+           file://samba-fix-musl-lib-without-innetgr.patch \
+           "
 
-SRC_URI[md5sum] = "f006a3d1876113e4a049015969d20fe6"
-SRC_URI[sha256sum] = "7dcfc2aaaac565b959068788e6a43fc79ce2a03e7d523f5843f7a9fddffc7c2c"
+SRC_URI[md5sum] = "96d275e31387e6c403d6c16465d15b7e"
+SRC_URI[sha256sum] = "bb6ef5d2f16b85288d823578abc453d9a80514c42e5a2ea2c4e3c60dc42335c3"
 
-UPSTREAM_CHECK_REGEX = "samba\-(?P<pver>4\.10(\.\d+)+).tar.gz"
+UPSTREAM_CHECK_REGEX = "samba\-(?P<pver>4\.14(\.\d+)+).tar.gz"
 
-inherit systemd waf-samba cpan-base perlnative update-rc.d
+inherit systemd waf-samba cpan-base perlnative update-rc.d perl-version
+
+# CVE-2011-2411 is valnerble only on HP NonStop Servers.
+CVE_CHECK_WHITELIST += "CVE-2011-2411" 
+
 # remove default added RDEPENDS on perl
 RDEPENDS_${PN}_remove = "perl"
 
-DEPENDS += "readline virtual/libiconv zlib popt libtalloc libtdb libtevent libldb libaio libpam libtasn1 jansson"
+DEPENDS += "readline virtual/libiconv zlib popt libtalloc libtdb libtevent libldb libaio libpam libtasn1 jansson libparse-yapp-perl-native gnutls"
 
 inherit features_check
 REQUIRED_DISTRO_FEATURES = "pam"
@@ -56,6 +56,8 @@
 CFLAGS_append_libc-musl = " -I${STAGING_INCDIR}/tirpc"
 LDFLAGS_append_libc-musl = " -ltirpc"
 
+COMPATIBLE_HOST_riscv32 = "null"
+
 INITSCRIPT_NAME = "samba"
 INITSCRIPT_PARAMS = "start 20 3 5 . stop 20 0 1 6 ."
 
@@ -76,7 +78,7 @@
 # Use krb5.  Build active domain controller.
 #
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd zeroconf', d)} \
-                   acl cups ad-dc gnutls ldap mitkrb5 \
+                   acl cups ad-dc ldap mitkrb5 \
 "
 
 RDEPENDS_${PN}-ctdb-tests += "bash util-linux-getopt"
@@ -96,19 +98,7 @@
 PACKAGECONFIG[gpgme] = ",--without-gpgme,,"
 PACKAGECONFIG[lmdb] = ",--without-ldb-lmdb,lmdb,"
 PACKAGECONFIG[libbsd] = "--with-libbsd, --without-libbsd, libbsd"
-
-# Building the AD (Active Directory) DC (Domain Controller) requires GnuTLS,
-# And ad-dc doesn't work with mitkrb5 for versions prior to 4.7.0 according to:
-# http://samba.2283325.n4.nabble.com/samba-4-6-6-Unknown-dependency-kdc-in-service-kdc-objlist-td4722096.html
-# So the working combination is:
-# 1) ad-dc: enable, gnutls: enable, mitkrb5: disable
-# 2) ad-dc: disable, gnutls: enable/disable, mitkrb5: enable
-#
-# We are now at 4.7.0, so take the above with a grain of salt. We do not need to know where
-# krb5kdc is unless ad-dc is enabled, but we tell configure anyhow.
-#
-PACKAGECONFIG[ad-dc] = "--with-experimental-mit-ad-dc,--without-ad-dc,,"
-PACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls,"
+PACKAGECONFIG[ad-dc] = "--with-experimental-mit-ad-dc,--without-ad-dc,python3-markdown python3-dnspython,"
 PACKAGECONFIG[mitkrb5] = "--with-system-mitkrb5 --with-system-mitkdc=/usr/sbin/krb5kdc,,krb5,"
 
 SAMBA4_IDMAP_MODULES="idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2"
@@ -140,6 +130,18 @@
 
 LDFLAGS += "-Wl,-z,relro,-z,now ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
 
+do_configure_append () {
+    cd ${S}/pidl/
+    perl Makefile.PL PREFIX=${prefix}
+    sed -e 's,VENDORPREFIX)/lib/perl,VENDORPREFIX)/${baselib}/perl,g' \
+        -e 's,PERLPREFIX)/lib/perl,PERLPREFIX)/${baselib}/perl,g' -i Makefile
+
+}
+
+do_compile_append () {
+    oe_runmake -C ${S}/pidl
+}
+
 do_install_append() {
     for section in 1 5 7; do
         install -d ${D}${mandir}/man$section
@@ -182,11 +184,11 @@
     install -m644 packaging/systemd/samba.sysconfig ${D}${sysconfdir}/default/samba
 
     # the items are from ctdb/tests/run_tests.sh
-    for d in onnode takeover tool eventscripts cunit simple complex; do
-        testdir=${D}${datadir}/ctdb-tests/$d
+    for d in cunit eventd eventscripts onnode shellcheck takeover takeover_helper tool; do
+        testdir=${D}${datadir}/ctdb-tests/UNIT/$d
         install -d $testdir
-        cp ${S}/ctdb/tests/$d/*.sh $testdir
-        cp -r ${S}/ctdb/tests/$d/scripts ${S}/ctdb/tests/$d/stubs $testdir || true
+        cp ${S}/ctdb/tests/UNIT/$d/*.sh $testdir
+        cp -r ${S}/ctdb/tests/UNIT/$d/scripts ${S}/ctdb/tests/UNIT/$d/stubs $testdir || true
     done
 
     # fix file-rdeps qa warning
@@ -197,7 +199,7 @@
     chmod 0750 ${D}${sysconfdir}/sudoers.d || true
     rm -rf ${D}/run ${D}${localstatedir}/run ${D}${localstatedir}/log
     
-    for f in samba-gpupdate samba_upgradedns samba_spnupdate samba_kcc samba_dnsupdate; do
+    for f in samba-gpupdate samba_upgradedns samba_spnupdate samba_kcc samba_dnsupdate samba_downgrade_db; do
         if [ -f "${D}${sbindir}/$f" ]; then
             sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${sbindir}/$f
         fi
@@ -205,7 +207,11 @@
     if [ -f "${D}${bindir}/samba-tool" ]; then
         sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${bindir}/samba-tool
     fi
-    
+
+    oe_runmake -C ${S}/pidl DESTDIR=${D} install_vendor
+    find ${D}${libdir}/ -type f -name "perllocal.pod" | xargs rm -f
+    rm -rf ${D}${libdir}/perl5/vendor_perl/${PERLVERSION}/${BUILD_SYS}/auto/Parse/Pidl/.packlist
+    sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${bindir}/pidl
 }
 
 PACKAGES =+ "${PN}-python3 ${PN}-pidl \
@@ -310,8 +316,10 @@
                    ${bindir}/smbtree \
                    ${libdir}/samba/smbspool_krb5_wrapper"
 
-RDEPENDS_${PN}-pidl_append = " perl"
-FILES_${PN}-pidl = "${bindir}/pidl ${datadir}/perl5/Parse"
+RDEPENDS_${PN}-pidl_append = " perl libparse-yapp-perl"
+FILES_${PN}-pidl = "${bindir}/pidl \
+                    ${libdir}/perl5 \
+                   "
 
 RDEPENDS_${PN}-client = "\
     smbclient \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/configure.in-disable-tirpc-checking-for-fedora.patch b/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/configure.in-disable-tirpc-checking-for-fedora.patch
index 87fd05b..d8c945a 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/configure.in-disable-tirpc-checking-for-fedora.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/snort/snort/configure.in-disable-tirpc-checking-for-fedora.patch
@@ -52,9 +52,9 @@
 -    fi
 -fi
 -
- Z_LIB=""
- AC_CHECK_HEADERS(zlib.h,, Z_LIB="no")
- if test "x$Z_LIB" = "xno"; then
+ ##################################################
+ # Centos 8+ does not have inbuilt SunRPC support  #
+ # in glibc and is separately availble in tirpc   #
 -- 
 2.7.4
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.17.1.bb b/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.18.bb
similarity index 97%
rename from meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.17.1.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.18.bb
index b5ff430..cca18d7 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.17.1.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.18.bb
@@ -14,7 +14,7 @@
     file://disable-run-test-program-while-cross-compiling.patch \
     file://configure.in-disable-tirpc-checking-for-fedora.patch \
 "
-SRC_URI[sha256sum] = "303d3d5dc5affecfeaad3a331d3163f901d48d960fdd6598cb55c6d1591eed82"
+SRC_URI[sha256sum] = "d0308642f69e0d36f70db9703e5766afce2f44ff05b7d2c9cc8e3ac8323b2c77"
 
 UPSTREAM_CHECK_URI = "https://www.snort.org/downloads"
 UPSTREAM_CHECK_REGEX = "snort-(?P<pver>\d+(\.\d+)+)\.tar"
diff --git a/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb b/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb
index 24b9a1b..31f9aef 100644
--- a/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb
+++ b/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb
@@ -67,6 +67,7 @@
     wolfssl \
     autossh \
     bearssl \
+    dhcp-relay \
 "
 
 RDEPENDS_packagegroup-meta-networking-connectivity_remove_libc-musl = "rdist"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Define-__SWORD_TYPE-if-undefined.patch b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Define-__SWORD_TYPE-if-undefined.patch
new file mode 100644
index 0000000..117b1e5
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Define-__SWORD_TYPE-if-undefined.patch
@@ -0,0 +1,124 @@
+From 9fe90ab1e333b2e2bed370ff13ba552eb54c3aaf Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 17 Jul 2021 09:56:28 -0700
+Subject: [PATCH] Define __SWORD_TYPE if undefined
+
+These fixes are inspired when building autofs on musl
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ daemon/automount.c | 20 ++++++++++++++------
+ include/hash.h     |  5 +++++
+ lib/log.c          |  6 +++++-
+ 3 files changed, 24 insertions(+), 7 deletions(-)
+
+diff --git a/daemon/automount.c b/daemon/automount.c
+index e476f6b..3a1514b 100644
+--- a/daemon/automount.c
++++ b/daemon/automount.c
+@@ -1,7 +1,7 @@
+ /* ----------------------------------------------------------------------- *
+  *
+  *  automount.c - Linux automounter daemon
+- *   
++ *
+  *   Copyright 1997 Transmeta Corporation - All Rights Reserved
+  *   Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
+  *   Copyright 2001-2005 Ian Kent <raven@themaw.net>
+@@ -11,7 +11,7 @@
+  *   the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139,
+  *   USA; either version 2 of the License, or (at your option) any later
+  *   version.
+- *   
++ *
+  *   This program is distributed in the hope that it will be useful,
+  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+@@ -40,6 +40,14 @@
+ #include <systemd/sd-daemon.h>
+ #endif
+ 
++#ifndef __SWORD_TYPE
++# if __WORDSIZE == 32  /* System word size */
++#  define __SWORD_TYPE int
++# else /* __WORDSIZE == 64 */
++#  define __SWORD_TYPE long int
++# endif
++#endif
++
+ #include "automount.h"
+ #if defined(LIBXML2_WORKAROUND) || defined(TIRPC_WORKAROUND)
+ #include <dlfcn.h>
+@@ -282,7 +290,7 @@ int rmdir_path(struct autofs_point *ap, const char *path, dev_t dev)
+ 			     dev, buf, st.st_dev);
+ 			return -1;
+ 		}
+-			     
++
+ 		/*
+ 		 * Last element of path may be a symbolic link; all others
+ 		 * are directories (and the last directory element is
+@@ -455,7 +463,7 @@ int count_mounts(struct autofs_point *ap, const char *path, dev_t dev)
+ 
+ 	counter.count = 0;
+ 	counter.dev = dev;
+-	
++
+ 	if (walk_tree(path, counter_fn, 1, ap, &counter) == -1)
+ 		return -1;
+ 
+@@ -811,7 +819,7 @@ static char *automount_path_to_fifo(unsigned logopt, const char *path)
+ 	/*
+ 	 *  An automount path can be made up of subdirectories.  So, to
+ 	 *  create the fifo name, we will just replace instances of '/' with
+-	 *  '-'. 
++	 *  '-'.
+ 	 */
+ 	p = fifo_name + strlen(fifodir);
+ 	while (*p != '\0') {
+@@ -1640,7 +1648,7 @@ static void return_start_status(void *arg)
+ 	sc->done = 1;
+ 
+ 	/*
+-	 * Startup condition mutex must be locked during 
++	 * Startup condition mutex must be locked during
+ 	 * the startup process.
+ 	 */
+ 	status = pthread_cond_signal(&sc->cond);
+diff --git a/include/hash.h b/include/hash.h
+index 2447f29..6f0dee6 100644
+--- a/include/hash.h
++++ b/include/hash.h
+@@ -5,6 +5,11 @@
+ 
+ #include <sys/types.h>
+ #include <stdint.h>
++#include <linux/stddef.h>
++
++#ifndef __GLIBC__
++#include <sys/reg.h>
++#endif
+ 
+ /*
+  * The "GOLDEN_RATIO_PRIME" is used in ifs/btrfs/brtfs_inode.h and
+diff --git a/lib/log.c b/lib/log.c
+index 0cb47d7..39b1e3b 100644
+--- a/lib/log.c
++++ b/lib/log.c
+@@ -38,7 +38,11 @@ static char *prepare_attempt_prefix(const char *msg)
+ 	char buffer[ATTEMPT_ID_SIZE + 1];
+ 	char *prefixed_msg = NULL;
+ 
+-	attempt_id = pthread_getspecific(key_thread_attempt_id);
++        if (key_thread_attempt_id) {
++                attempt_id = pthread_getspecific(key_thread_attempt_id);
++        } else {
++                attempt_id = 0;
++        }
+ 	if (attempt_id) {
+ 		int len = sizeof(buffer) + 1 + strlen(msg) + 1;
+ 
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Do-not-hardcode-path-for-pkg.m4.patch b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Do-not-hardcode-path-for-pkg.m4.patch
index b991aca..d5ea417 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Do-not-hardcode-path-for-pkg.m4.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-Do-not-hardcode-path-for-pkg.m4.patch
@@ -15,12 +15,10 @@
  configure.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/configure.in b/configure.in
-index 493b9f1..268d06b 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -12,7 +12,7 @@ define([AC_CACHE_SAVE], )dnl
- AC_INIT(.autofs-5.1.6)
+ AC_INIT(.autofs-5.1.7)
  
  # for pkg-config macros
 -m4_include([/usr/share/aclocal/pkg.m4])
@@ -28,6 +26,3 @@
  
  #
  # autofs installs by default in /usr
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0002-Replace-__S_IEXEC-with-S_IEXEC.patch b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0002-Replace-__S_IEXEC-with-S_IEXEC.patch
index e7fdd10..1a2eb4f 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0002-Replace-__S_IEXEC-with-S_IEXEC.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0002-Replace-__S_IEXEC-with-S_IEXEC.patch
@@ -16,29 +16,27 @@
  modules/lookup_multi.c | 2 +-
  2 files changed, 4 insertions(+), 4 deletions(-)
 
-diff --git a/daemon/lookup.c b/daemon/lookup.c
-index 18df935..d35d484 100644
 --- a/daemon/lookup.c
 +++ b/daemon/lookup.c
-@@ -382,7 +382,7 @@ static int read_file_source_instance(struct autofs_point *ap, struct map_source
- 	if (!S_ISREG(st.st_mode))
+@@ -397,7 +397,7 @@ static int read_file_source_instance(str
  		return NSS_STATUS_NOTFOUND;
+ 	}
  
 -	if (st.st_mode & __S_IEXEC)
 +	if (st.st_mode & S_IEXEC)
  		type = src_prog;
  	else
  		type = src_file;
-@@ -942,7 +942,7 @@ static int lookup_name_file_source_instance(struct autofs_point *ap, struct map_
- 	if (!S_ISREG(st.st_mode))
+@@ -930,7 +930,7 @@ static int lookup_name_file_source_insta
  		return NSS_STATUS_NOTFOUND;
+ 	}
  
 -	if (st.st_mode & __S_IEXEC)
 +	if (st.st_mode & S_IEXEC)
  		type = src_prog;
  	else
  		type = src_file;
-@@ -1118,7 +1118,7 @@ static struct map_source *lookup_get_map_source(struct master_mapent *entry)
+@@ -1077,7 +1077,7 @@ static struct map_source *lookup_get_map
  	if (!S_ISREG(st.st_mode))
  		return NULL;
  
@@ -47,11 +45,9 @@
  		type = "program";
  	else
  		type = "file";
-diff --git a/modules/lookup_multi.c b/modules/lookup_multi.c
-index bb9f88c..cf109de 100644
 --- a/modules/lookup_multi.c
 +++ b/modules/lookup_multi.c
-@@ -247,7 +247,7 @@ static struct lookup_mod *nss_open_lookup(const char *format, int argc, const ch
+@@ -247,7 +247,7 @@ static struct lookup_mod *nss_open_looku
  				continue;
  			}
  
@@ -60,6 +56,3 @@
  				type = src_prog;
  			else
  				type = src_file;
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-include-linux-nfs.h-directly-in-rpc_sub.patch b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-include-linux-nfs.h-directly-in-rpc_sub.patch
deleted file mode 100644
index 9b0942e..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/autofs-5.0.7-include-linux-nfs.h-directly-in-rpc_sub.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 2256b8aa98cff15ddf2a8d36496e6c9125927901 Mon Sep 17 00:00:00 2001
-From: Andreas Oberritter <obi@opendreambox.org>
-Date: Wed, 13 Mar 2013 16:17:08 +0100
-Subject: [PATCH] autofs-5.0.7: include linux/nfs.h directly in rpc_subs.h
-
-Upstream-Status: Pending
-
-Fixes compile error with uclibc. Glibc's nfs/nfs.h contains
-nothing but "#include linux/nfs.h". rpc_subs.h already includes
-other linux/nfs*.h files directly.
-
-Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
-
----
- include/rpc_subs.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/rpc_subs.h b/include/rpc_subs.h
-index e744e89..83db47e 100644
---- a/include/rpc_subs.h
-+++ b/include/rpc_subs.h
-@@ -18,7 +18,7 @@
- 
- #include <rpc/rpc.h>
- #include <rpc/pmap_prot.h>
--#include <nfs/nfs.h>
-+#include <linux/nfs.h>
- #include <linux/nfs2.h>
- #include <linux/nfs3.h>
- 
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/fix-the-YACC-rule-to-fix-a-building-failure.patch b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/fix-the-YACC-rule-to-fix-a-building-failure.patch
index 21a97c8..8ad3b22 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/fix-the-YACC-rule-to-fix-a-building-failure.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/fix-the-YACC-rule-to-fix-a-building-failure.patch
@@ -23,21 +23,9 @@
  modules/Makefile | 3 ++-
  2 files changed, 6 insertions(+), 3 deletions(-)
 
-diff --git a/lib/Makefile b/lib/Makefile
-index 4798a4b..c40cf86 100644
 --- a/lib/Makefile
 +++ b/lib/Makefile
-@@ -57,7 +57,8 @@ mount_xdr.o: mount_xdr.c
- master_tok.c: master_tok.l
- 	$(LEX) -o$@ -Pmaster_ $?
- 
--master_parse.tab.c master_parse.tab.h: master_parse.y
-+master_parse.tab.h: master_parse.tab.c
-+master_parse.tab.c: master_parse.y
- 	$(YACC) -v -d -p master_ -b master_parse $?
- 
- master_tok.o: master_tok.c master_parse.tab.h
-@@ -67,7 +68,8 @@ master_parse.tab.o: master_parse.tab.c master_parse.tab.h
+@@ -53,7 +53,8 @@ mount_xdr.o: mount_xdr.c
  nss_tok.c: nss_tok.l
  	$(LEX) -o$@ -Pnss_ $?
  
@@ -47,8 +35,6 @@
  	$(YACC) -v -d -p nss_ -b nss_parse $?
  
  nss_tok.o: nss_tok.c nss_parse.tab.h
-diff --git a/modules/Makefile b/modules/Makefile
-index d9ab06c..abc7698 100644
 --- a/modules/Makefile
 +++ b/modules/Makefile
 @@ -103,7 +103,8 @@ amd_tok.c: amd_tok.l
@@ -61,3 +47,30 @@
  	$(YACC) -v -d -p amd_ -b amd_parse $?
  
  amd_parse.tab.o: amd_parse.tab.c amd_parse.tab.h
+--- a/daemon/Makefile
++++ b/daemon/Makefile
+@@ -16,7 +16,7 @@ YACCSRC = master_tok.c master_parse.tab.
+ version := $(shell cat ../.version)
+ 
+ CFLAGS += -rdynamic $(DAEMON_CFLAGS) -D_GNU_SOURCE -I../include
+-CFLAGS += -DAUTOFS_LIB_DIR=\"$(autofslibdir)\" 
++CFLAGS += -DAUTOFS_LIB_DIR=\"$(autofslibdir)\"
+ CFLAGS += -DAUTOFS_MAP_DIR=\"$(autofsmapdir)\"
+ CFLAGS += -DAUTOFS_CONF_DIR=\"$(autofsconfdir)\"
+ CFLAGS += -DAUTOFS_FIFO_DIR=\"$(autofsfifodir)\"
+@@ -44,7 +44,8 @@ automount: $(OBJS) $(AUTOFS_LIB)
+ master_tok.c: master_tok.l
+ 	$(LEX) -o$@ -Pmaster_ $?
+ 
+-master_parse.tab.c master_parse.tab.h: master_parse.y
++master_parse.tab.h: master_parse.tab.c
++master_parse.tab.c: master_parse.y
+ 	$(YACC) -v -d -p master_ -b master_parse $?
+ 
+ master_tok.o: master_tok.c master_parse.tab.h
+@@ -57,5 +58,3 @@ clean:
+ install: all
+ 	install -d -m 755 $(INSTALLROOT)$(sbindir)
+ 	install -c automount -m 755 $(INSTALLROOT)$(sbindir)
+-
+-
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/using-pkg-config-to-detect-libxml-2.0-and-krb5.patch b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/using-pkg-config-to-detect-libxml-2.0-and-krb5.patch
index d1f9f34..41de373 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/using-pkg-config-to-detect-libxml-2.0-and-krb5.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/using-pkg-config-to-detect-libxml-2.0-and-krb5.patch
@@ -16,33 +16,21 @@
  configure.in | 16 ++++++++++++++--
  1 file changed, 14 insertions(+), 2 deletions(-)
 
-diff --git a/configure.in b/configure.in
-index f5fbb35..76ecb40 100644
 --- a/configure.in
 +++ b/configure.in
-@@ -211,8 +211,20 @@ fi
- AC_SUBST(ENABLE_FEDFS)
- 
- # LDAP SASL auth needs libxml and Kerberos
--AF_CHECK_LIBXML()
+@@ -215,7 +215,14 @@ PKG_CHECK_MODULES([XML], [libxml-2.0], [
+   AC_DEFINE(LIBXML2_WORKAROUND, 1, [Use libxml2 tsd usage workaround])
+ ], [HAVE_LIBXML=0])
+
 -AF_CHECK_KRB5()
-+PKG_CHECK_MODULES(XML, [libxml-2.0],HAVE_LIBXML=1,HAVE_LIBXML=0)
-+AC_SUBST([HAVE_LIBXML])
-+XML_FLAGS=$XML_CFLAGS
-+
-+PKG_CHECK_MODULES(KRB5, [krb5],HAVE_KRB5=1,HAVE_KRB5=0)
-+AC_SUBST([HAVE_KRB5])
-+if test "x$HAVE_KRB5" = "x1"; then
++PKG_CHECK_MODULES(KRB5, [krb5], [
++  HAVE_KRB5=1
 +  SAVE_CFLAGS=$CFLAGS
 +  SAVE_LIBS=$LIBS
 +  CFLAGS="$CFLAGS $KRB5_FLAGS"
 +  LIBS="$LIBS $KRB5_LIBS"
-+
 +  AC_CHECK_FUNCS([krb5_principal_get_realm])
-+fi
- 
++], [HAVE_KRB5=0])
+
  AC_SEARCH_LIBS([versionsort],[])
  if test "$ac_cv_search_versionsort" = "no"; then
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.6.bb b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.7.bb
similarity index 88%
rename from meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.6.bb
rename to meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.7.bb
index 54f0b99..019b453 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.6.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.7.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Kernel based automounter for linux"
 SECTION = "utils"
 LICENSE = "GPL-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ee9324a6f564bb2376b63878ac396798"
 
 DEPENDS += "libtirpc flex-native bison-native e2fsprogs openssl libxml2 util-linux cyrus-sasl libnsl2"
 
@@ -10,7 +10,6 @@
 inherit autotools-brokensep systemd update-rc.d pkgconfig
 
 SRC_URI = "${KERNELORG_MIRROR}/linux/daemons/autofs/v5/autofs-${PV}.tar.gz \
-           file://autofs-5.0.7-include-linux-nfs.h-directly-in-rpc_sub.patch \
            file://no-bash.patch \
            file://cross.patch \
            file://fix_disable_ldap.patch \
@@ -26,11 +25,9 @@
            file://0001-modules-lookup_multi.c-Replace-__S_IEXEC-with-S_IEXE.patch \
            file://0001-Do-not-hardcode-path-for-pkg.m4.patch \
            file://0001-Bug-fix-for-pid_t-not-found-on-musl.patch \
+           file://0001-Define-__SWORD_TYPE-if-undefined.patch \
            "
-
-
-SRC_URI[md5sum] = "e6800e0afd6009ecdff148088c564050"
-SRC_URI[sha256sum] = "82094cad44f4e5c4f93eff2789cd66b57d7ab3fa646b7722d97608571001e694"
+SRC_URI[sha256sum] = "a18619e5ad18960fe382354eef33f070e57e4e5711d484b010acde080a003312"
 
 UPSTREAM_CHECK_URI = "${KERNELORG_MIRROR}/linux/daemons/autofs/v5/"
 
@@ -87,10 +84,14 @@
 }
 SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
 
+# all the libraries are unversioned, so don't pack it on PN-dev
+SOLIBS = ".so"
+FILES_SOLIBSDEV = ""
+# Some symlinks are created in plugins dir e.g.
+# mount_nfs4.so -> mount_nfs.so
 INSANE_SKIP_${PN} = "dev-so"
 
 RPROVIDES_${PN} += "${PN}-systemd"
 RREPLACES_${PN} += "${PN}-systemd"
 RCONFLICTS_${PN} += "${PN}-systemd"
 SYSTEMD_SERVICE_${PN} = "autofs.service"
-
diff --git a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl_2.1.27.bb b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl_2.1.27.bb
index 33de8ca..c4b41ac 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl_2.1.27.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl_2.1.27.bb
@@ -96,3 +96,6 @@
 FILES_${PN}-staticdev += "${libdir}/sasl2/*.a"
 
 INSANE_SKIP_${PN} += "dev-so"
+
+# CVE-2020-8032 affects only openSUSE
+CVE_CHECK_WHITELIST += "CVE-2020-8032"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived/0001-layer4-Change-order-of-include-files.patch b/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived/0001-layer4-Change-order-of-include-files.patch
new file mode 100644
index 0000000..f9cadbc
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived/0001-layer4-Change-order-of-include-files.patch
@@ -0,0 +1,58 @@
+From a85ca79143a87286f793957e803ee3daf03c2b57 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 6 Jul 2021 14:06:44 -0700
+Subject: [PATCH] layer4: Change order of include files
+
+curent order to include standard headers first is causing an isue with
+glibc 2.34 + kernel-headers 5.13+ where order of including netinet/in.h
+and linux/in.h matters and it does not define __UAPI_DEF_IN_IPPROTO
+before including linux/in.h and then later includes netinet/in.h which
+then means lot of definitions will be defined twice and compile would
+fail. Re-ordering the local headers to appear first solves the issue
+amicably, and I think this is right order too
+
+Upsteam-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ keepalived/core/layer4.c | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/keepalived/core/layer4.c b/keepalived/core/layer4.c
+index 90cdc84..c122c29 100644
+--- a/keepalived/core/layer4.c
++++ b/keepalived/core/layer4.c
+@@ -23,6 +23,16 @@
+ 
+ #include "config.h"
+ 
++#include "layer4.h"
++#include "logger.h"
++#include "scheduler.h"
++#ifdef _WITH_LVS_
++#include "check_api.h"
++#endif
++#include "bitops.h"
++#include "utils.h"
++#include "align.h"
++
+ #include <stdio.h>
+ #include <errno.h>
+ #include <unistd.h>
+@@ -33,17 +43,6 @@
+ #include <sys/time.h>
+ #endif
+ #include <linux/errqueue.h>
+-#include <netinet/in.h>
+-
+-#include "layer4.h"
+-#include "logger.h"
+-#include "scheduler.h"
+-#ifdef _WITH_LVS_
+-#include "check_api.h"
+-#endif
+-#include "bitops.h"
+-#include "utils.h"
+-#include "align.h"
+ 
+ // #define ICMP_DEBUG	1
+ 
diff --git a/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived_2.2.1.bb b/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived_2.2.2.bb
similarity index 87%
rename from meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived_2.2.1.bb
rename to meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived_2.2.2.bb
index a778d26..f0cbca1 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived_2.2.1.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived_2.2.2.bb
@@ -10,8 +10,10 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRC_URI = "http://www.keepalived.org/software/${BP}.tar.gz"
-SRC_URI[sha256sum] = "91186f20c83ffc48d7a15a9a6e2329ed4feeb2dcb51f4aa9672c8840190ea741"
+SRC_URI = "http://www.keepalived.org/software/${BP}.tar.gz \
+           file://0001-layer4-Change-order-of-include-files.patch \
+           "
+SRC_URI[sha256sum] = "103692bd5345a4ed9f4581632ea636214fdf53e45682e200aab122c4fa674ece"
 UPSTREAM_CHECK_URI = "https://github.com/acassen/keepalived/releases"
 
 DEPENDS = "libnfnetlink openssl"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.03.bb b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.06.bb
similarity index 95%
rename from meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.03.bb
rename to meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.06.bb
index 118c5fe..a971677 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.03.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.21.06.bb
@@ -29,8 +29,8 @@
            file://0001-Fix-build-with-fno-common.patch \
            file://0001-Use-correct-printf-format-for-__fsblkcnt_t.patch \
            "
-SRC_URI[md5sum] = "0433650ba9c25f2cf36145e11bf96a2a"
-SRC_URI[sha256sum] = "ed40386852e34bbec0ca7e9534ce315b93a17b587614c8118aea1ecd082e1723"
+SRC_URI[md5sum] = "a60775787ba520a0b1031fcd42e0d65b"
+SRC_URI[sha256sum] = "d29d124506e4b084285d27c8742c7bca66de80be6a0ba9de8e37835ccaa8ee57"
 
 UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/opensaf/files/releases"
 
diff --git a/meta-openembedded/meta-networking/recipes-daemons/postfix/files/0007-correct-signature-of-closefrom-API.patch b/meta-openembedded/meta-networking/recipes-daemons/postfix/files/0007-correct-signature-of-closefrom-API.patch
new file mode 100644
index 0000000..e583354
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/postfix/files/0007-correct-signature-of-closefrom-API.patch
@@ -0,0 +1,101 @@
+From 1e451ddc15af1a4e19318c8b1ced46c5c41610d3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 14 Jul 2021 18:08:30 -0700
+Subject: [PATCH] correct signature of closefrom() API
+
+glibc 2.34 introduced this function and finds this error which has been
+all along.
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/util/sys_compat.c |  6 +++---
+ src/util/sys_defs.h   | 12 ++++++------
+ 2 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/src/util/sys_compat.c b/src/util/sys_compat.c
+index 8bf8e58..c87f043 100644
+--- a/src/util/sys_compat.c
++++ b/src/util/sys_compat.c
+@@ -286,7 +286,7 @@ int     dup2_pass_on_exec(int oldd, int newd)
+ 
+ /* closefrom() - closes all file descriptors from the given one up */
+ 
+-int     closefrom(int lowfd)
++void     closefrom(int lowfd)
+ {
+     int     fd_limit = open_limit(0);
+     int     fd;
+@@ -298,14 +298,14 @@ int     closefrom(int lowfd)
+      */
+     if (lowfd < 0) {
+ 	errno = EBADF;
+-	return (-1);
++	return;
+     }
+     if (fd_limit > 500)
+ 	fd_limit = 500;
+     for (fd = lowfd; fd < fd_limit; fd++)
+ 	(void) close(fd);
+ 
+-    return (0);
++    return;
+ }
+ 
+ #endif
+diff --git a/src/util/sys_defs.h b/src/util/sys_defs.h
+index 2e1c953..515de6c 100644
+--- a/src/util/sys_defs.h
++++ b/src/util/sys_defs.h
+@@ -1509,7 +1509,7 @@ extern int setsid(void);
+ #endif
+ 
+ #ifndef HAS_CLOSEFROM
+-extern int closefrom(int);
++extern void closefrom(int);
+ 
+ #endif
+ 
+@@ -1563,7 +1563,7 @@ typedef int pid_t;
+ 
+  /*
+   * Clang-style attribute tests.
+-  * 
++  *
+   * XXX Without the unconditional test below, gcc 4.6 will barf on ``elif
+   * defined(__clang__) && __has_attribute(__whatever__)'' with error message
+   * ``missing binary operator before token "("''.
+@@ -1577,7 +1577,7 @@ typedef int pid_t;
+   * warn for missing initializations and other trouble. However, OPENSTEP4
+   * gcc 2.7.x cannot handle this so we define this only if NORETURN isn't
+   * already defined above.
+-  * 
++  *
+   * Data point: gcc 2.7.2 has __attribute__ (Wietse Venema) but gcc 2.6.3 does
+   * not (Clive Jones). So we'll set the threshold at 2.7.
+   */
+@@ -1653,12 +1653,12 @@ typedef int pid_t;
+   * write to output parameters (for example, stat- or scanf-like functions)
+   * or from functions that have other useful side effects (for example,
+   * fseek- or rename-like functions).
+-  * 
++  *
+   * DO NOT use this for functions that write to a stream; it is entirely
+   * legitimate to detect write errors with fflush() or fclose() only. On the
+   * other hand most (but not all) functions that read from a stream must
+   * never ignore result values.
+-  * 
++  *
+   * XXX Prepending "(void)" won't shut up GCC. Clang behaves as expected.
+   */
+ #if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || __GNUC__ > 3)
+@@ -1739,7 +1739,7 @@ typedef const char *CONST_CHAR_STAR;
+   * Safety. On some systems, ctype.h misbehaves with non-ASCII or negative
+   * characters. More importantly, Postfix uses the ISXXX() macros to ensure
+   * protocol compliance, so we have to rule out non-ASCII characters.
+-  * 
++  *
+   * XXX The (unsigned char) casts in isalnum() etc arguments are unnecessary
+   * because the ISASCII() guard already ensures that the values are
+   * non-negative; the casts are done anyway to shut up chatty compilers.
diff --git a/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.4.12.bb b/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.6.1.bb
similarity index 81%
rename from meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.4.12.bb
rename to meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.6.1.bb
index db5b41b..c139f06 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.4.12.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.6.1.bb
@@ -13,6 +13,7 @@
            file://postfix-install.patch \
            file://icu-config.patch \
            file://0001-makedefs-add-lnsl-and-lresolv-to-SYSLIBS-by-default.patch \
+           file://0007-correct-signature-of-closefrom-API.patch \
            "
-SRC_URI[sha256sum] = "18555183ae8b52a9e76067799279c86f9f2770cdef3836deb8462ee0a0855dec"
+SRC_URI[sha256sum] = "20a805625601e7b95989220832c8fa14ce374f0711da054188f8cec6a92fd71c"
 UPSTREAM_CHECK_REGEX = "postfix\-(?P<pver>3\.3(\.\d+)+).tar.gz"
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0001-avoid-naming-local-function-as-one-of-printf-family.patch b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0001-avoid-naming-local-function-as-one-of-printf-family.patch
index f49ef2a..6232820 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0001-avoid-naming-local-function-as-one-of-printf-family.patch
+++ b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl/0001-avoid-naming-local-function-as-one-of-printf-family.patch
@@ -1,6 +1,6 @@
-From e03b003610a176d608da9a02e433e7ded7e4b75f Mon Sep 17 00:00:00 2001
-From: Todd Cunningham <tcunningham07@gmail.com>
-Date: Wed, 11 Dec 2019 10:18:56 +1000
+From c29959e045dd09d0b5727682d4e9dbc10923ac4f Mon Sep 17 00:00:00 2001
+From: Trevor Gamblin <trevor.gamblin@windriver.com>
+Date: Wed, 2 Jun 2021 11:08:51 -0400
 Subject: [PATCH] avoid naming local function as one of printf family
 
 Fixes build issues with clang
@@ -11,6 +11,10 @@
 
 Signed-off-by: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
 Signed-off-by: Todd Cunningham <tcunningham07@gmail.com>
+
+Use wiggle to get the patch to apply for version 1.2.0.
+
+Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
 ---
  include/expr_ops.h      | 2 +-
  include/obj.h           | 2 +-
@@ -62,56 +66,56 @@
  src/obj/synproxy.c      | 2 +-
  src/obj/tunnel.c        | 2 +-
  src/object.c            | 2 +-
- 49 files changed, 50 insertions(+), 50 deletions(-)
+ 50 files changed, 51 insertions(+), 51 deletions(-)
 
 diff --git a/include/expr_ops.h b/include/expr_ops.h
-index a7f1b9a..d2946de 100644
+index 7a6aa23..d3a2855 100644
 --- a/include/expr_ops.h
 +++ b/include/expr_ops.h
-@@ -17,7 +17,7 @@ struct expr_ops {
+@@ -18,7 +18,7 @@ struct expr_ops {
  	const void *(*get)(const struct nftnl_expr *e, uint16_t type, uint32_t *data_len);
  	int 	(*parse)(struct nftnl_expr *e, struct nlattr *attr);
  	void	(*build)(struct nlmsghdr *nlh, const struct nftnl_expr *e);
--	int	(*snprintf)(char *buf, size_t len, uint32_t type, uint32_t flags, const struct nftnl_expr *e);
-+	int	(*snprintf_)(char *buf, size_t len, uint32_t type, uint32_t flags, const struct nftnl_expr *e);
+-	int	(*snprintf)(char *buf, size_t len, uint32_t flags, const struct nftnl_expr *e);
++	int	(*snprintf_)(char *buf, size_t len, uint32_t flags, const struct nftnl_expr *e);
  };
  
  struct expr_ops *nftnl_expr_ops_lookup(const char *name);
 diff --git a/include/obj.h b/include/obj.h
-index 9394d79..08610d7 100644
+index 60dc853..1c1c3c1 100644
 --- a/include/obj.h
 +++ b/include/obj.h
-@@ -99,7 +99,7 @@ struct obj_ops {
+@@ -109,7 +109,7 @@ struct obj_ops {
  	const void *(*get)(const struct nftnl_obj *e, uint16_t type, uint32_t *data_len);
  	int	(*parse)(struct nftnl_obj *e, struct nlattr *attr);
  	void	(*build)(struct nlmsghdr *nlh, const struct nftnl_obj *e);
--	int	(*snprintf)(char *buf, size_t len, uint32_t type, uint32_t flags, const struct nftnl_obj *e);
-+	int	(*snprintf_)(char *buf, size_t len, uint32_t type, uint32_t flags, const struct nftnl_obj *e);
+-	int	(*snprintf)(char *buf, size_t len, uint32_t flags, const struct nftnl_obj *e);
++	int	(*snprintf_)(char *buf, size_t len, uint32_t flags, const struct nftnl_obj *e);
  };
  
  extern struct obj_ops obj_ops_counter;
 diff --git a/src/expr.c b/src/expr.c
-index 80c4c36..b698a60 100644
+index 277bbde..2231b21 100644
 --- a/src/expr.c
 +++ b/src/expr.c
-@@ -275,10 +275,10 @@ int nftnl_expr_snprintf(char *buf, size_t size, const struct nftnl_expr *expr,
- 	if (size)
+@@ -279,10 +279,10 @@ int nftnl_expr_snprintf(char *buf, size_t remain, const struct nftnl_expr *expr,
+ 	if (remain)
  		buf[0] = '\0';
  
--	if (!expr->ops->snprintf)
-+	if (!expr->ops->snprintf_)
+-	if (!expr->ops->snprintf || type != NFTNL_OUTPUT_DEFAULT)
++	if (!expr->ops->snprintf_ || type != NFTNL_OUTPUT_DEFAULT)
  		return 0;
  
--	ret = expr->ops->snprintf(buf + offset, remain, type, flags, expr);
-+	ret = expr->ops->snprintf_(buf + offset, remain, type, flags, expr);
+-	ret = expr->ops->snprintf(buf + offset, remain, flags, expr);
++	ret = expr->ops->snprintf_(buf + offset, remain, flags, expr);
  	SNPRINTF_BUFFER_SIZE(ret, remain, offset);
  
  	return offset;
 diff --git a/src/expr/bitwise.c b/src/expr/bitwise.c
-index c9d40df..27d644b 100644
+index d0c7827..eded505 100644
 --- a/src/expr/bitwise.c
 +++ b/src/expr/bitwise.c
-@@ -219,5 +219,5 @@ struct expr_ops expr_ops_bitwise = {
+@@ -282,5 +282,5 @@ struct expr_ops expr_ops_bitwise = {
  	.get		= nftnl_expr_bitwise_get,
  	.parse		= nftnl_expr_bitwise_parse,
  	.build		= nftnl_expr_bitwise_build,
@@ -119,10 +123,10 @@
 +	.snprintf_	= nftnl_expr_bitwise_snprintf,
  };
 diff --git a/src/expr/byteorder.c b/src/expr/byteorder.c
-index efdfa2b..7ae9dfb 100644
+index d299745..0068ab2 100644
 --- a/src/expr/byteorder.c
 +++ b/src/expr/byteorder.c
-@@ -234,5 +234,5 @@ struct expr_ops expr_ops_byteorder = {
+@@ -220,5 +220,5 @@ struct expr_ops expr_ops_byteorder = {
  	.get		= nftnl_expr_byteorder_get,
  	.parse		= nftnl_expr_byteorder_parse,
  	.build		= nftnl_expr_byteorder_build,
@@ -130,10 +134,10 @@
 +	.snprintf_	= nftnl_expr_byteorder_snprintf,
  };
 diff --git a/src/expr/cmp.c b/src/expr/cmp.c
-index 86d7842..e3be442 100644
+index 6030693..7e548e6 100644
 --- a/src/expr/cmp.c
 +++ b/src/expr/cmp.c
-@@ -216,5 +216,5 @@ struct expr_ops expr_ops_cmp = {
+@@ -202,5 +202,5 @@ struct expr_ops expr_ops_cmp = {
  	.get		= nftnl_expr_cmp_get,
  	.parse		= nftnl_expr_cmp_parse,
  	.build		= nftnl_expr_cmp_build,
@@ -141,10 +145,10 @@
 +	.snprintf_	= nftnl_expr_cmp_snprintf,
  };
 diff --git a/src/expr/connlimit.c b/src/expr/connlimit.c
-index 53af93b..6c8bc40 100644
+index 3b37587..39b7092 100644
 --- a/src/expr/connlimit.c
 +++ b/src/expr/connlimit.c
-@@ -149,5 +149,5 @@ struct expr_ops expr_ops_connlimit = {
+@@ -135,5 +135,5 @@ struct expr_ops expr_ops_connlimit = {
  	.get		= nftnl_expr_connlimit_get,
  	.parse		= nftnl_expr_connlimit_parse,
  	.build		= nftnl_expr_connlimit_build,
@@ -152,10 +156,10 @@
 +	.snprintf_  = nftnl_expr_connlimit_snprintf,
  };
 diff --git a/src/expr/counter.c b/src/expr/counter.c
-index 89a602e..a32a69e 100644
+index 1676d70..42c96d9 100644
 --- a/src/expr/counter.c
 +++ b/src/expr/counter.c
-@@ -147,5 +147,5 @@ struct expr_ops expr_ops_counter = {
+@@ -133,5 +133,5 @@ struct expr_ops expr_ops_counter = {
  	.get		= nftnl_expr_counter_get,
  	.parse		= nftnl_expr_counter_parse,
  	.build		= nftnl_expr_counter_build,
@@ -163,10 +167,10 @@
 +	.snprintf_	= nftnl_expr_counter_snprintf,
  };
 diff --git a/src/expr/ct.c b/src/expr/ct.c
-index 124de9d..7bde179 100644
+index d5dfc81..8c15db1 100644
 --- a/src/expr/ct.c
 +++ b/src/expr/ct.c
-@@ -273,5 +273,5 @@ struct expr_ops expr_ops_ct = {
+@@ -258,5 +258,5 @@ struct expr_ops expr_ops_ct = {
  	.get		= nftnl_expr_ct_get,
  	.parse		= nftnl_expr_ct_parse,
  	.build		= nftnl_expr_ct_build,
@@ -174,10 +178,10 @@
 +	.snprintf_	= nftnl_expr_ct_snprintf,
  };
 diff --git a/src/expr/dup.c b/src/expr/dup.c
-index 2bb35e5..d9bd4b1 100644
+index f041b55..6238a43 100644
 --- a/src/expr/dup.c
 +++ b/src/expr/dup.c
-@@ -154,5 +154,5 @@ struct expr_ops expr_ops_dup = {
+@@ -138,5 +138,5 @@ struct expr_ops expr_ops_dup = {
  	.get		= nftnl_expr_dup_get,
  	.parse		= nftnl_expr_dup_parse,
  	.build		= nftnl_expr_dup_build,
@@ -185,10 +189,10 @@
 +	.snprintf_	= nftnl_expr_dup_snprintf,
  };
 diff --git a/src/expr/dynset.c b/src/expr/dynset.c
-index 68115ba..6e43bb4 100644
+index 85d64bb..9afbb94 100644
 --- a/src/expr/dynset.c
 +++ b/src/expr/dynset.c
-@@ -288,5 +288,5 @@ struct expr_ops expr_ops_dynset = {
+@@ -373,5 +373,5 @@ struct expr_ops expr_ops_dynset = {
  	.get		= nftnl_expr_dynset_get,
  	.parse		= nftnl_expr_dynset_parse,
  	.build		= nftnl_expr_dynset_build,
@@ -196,10 +200,10 @@
 +	.snprintf_	= nftnl_expr_dynset_snprintf,
  };
 diff --git a/src/expr/exthdr.c b/src/expr/exthdr.c
-index e5f714b..e68792b 100644
+index 1b813b1..25f1491 100644
 --- a/src/expr/exthdr.c
 +++ b/src/expr/exthdr.c
-@@ -276,5 +276,5 @@ struct expr_ops expr_ops_exthdr = {
+@@ -262,5 +262,5 @@ struct expr_ops expr_ops_exthdr = {
  	.get		= nftnl_expr_exthdr_get,
  	.parse		= nftnl_expr_exthdr_parse,
  	.build		= nftnl_expr_exthdr_build,
@@ -207,10 +211,10 @@
 +	.snprintf_	= nftnl_expr_exthdr_snprintf,
  };
 diff --git a/src/expr/fib.c b/src/expr/fib.c
-index 9475af4..8e7090d 100644
+index aaff52a..3916e18 100644
 --- a/src/expr/fib.c
 +++ b/src/expr/fib.c
-@@ -213,5 +213,5 @@ struct expr_ops expr_ops_fib = {
+@@ -198,5 +198,5 @@ struct expr_ops expr_ops_fib = {
  	.get		= nftnl_expr_fib_get,
  	.parse		= nftnl_expr_fib_parse,
  	.build		= nftnl_expr_fib_build,
@@ -218,10 +222,10 @@
 +	.snprintf_	= nftnl_expr_fib_snprintf,
  };
 diff --git a/src/expr/flow_offload.c b/src/expr/flow_offload.c
-index 6ccec9a..c2f2478 100644
+index a826202..c1ca678 100644
 --- a/src/expr/flow_offload.c
 +++ b/src/expr/flow_offload.c
-@@ -134,5 +134,5 @@ struct expr_ops expr_ops_flow = {
+@@ -120,5 +120,5 @@ struct expr_ops expr_ops_flow = {
  	.get		= nftnl_expr_flow_get,
  	.parse		= nftnl_expr_flow_parse,
  	.build		= nftnl_expr_flow_build,
@@ -229,10 +233,10 @@
 +	.snprintf_	= nftnl_expr_flow_snprintf,
  };
 diff --git a/src/expr/fwd.c b/src/expr/fwd.c
-index cff8235..bcd7d3f 100644
+index 82e5a41..4e80687 100644
 --- a/src/expr/fwd.c
 +++ b/src/expr/fwd.c
-@@ -174,5 +174,5 @@ struct expr_ops expr_ops_fwd = {
+@@ -158,5 +158,5 @@ struct expr_ops expr_ops_fwd = {
  	.get		= nftnl_expr_fwd_get,
  	.parse		= nftnl_expr_fwd_parse,
  	.build		= nftnl_expr_fwd_build,
@@ -240,10 +244,10 @@
 +	.snprintf_	= nftnl_expr_fwd_snprintf,
  };
 diff --git a/src/expr/hash.c b/src/expr/hash.c
-index 2c801d2..a9f6e7e 100644
+index 10b4a72..84ace31 100644
 --- a/src/expr/hash.c
 +++ b/src/expr/hash.c
-@@ -241,5 +241,5 @@ struct expr_ops expr_ops_hash = {
+@@ -226,5 +226,5 @@ struct expr_ops expr_ops_hash = {
  	.get		= nftnl_expr_hash_get,
  	.parse		= nftnl_expr_hash_parse,
  	.build		= nftnl_expr_hash_build,
@@ -251,10 +255,10 @@
 +	.snprintf_	= nftnl_expr_hash_snprintf,
  };
 diff --git a/src/expr/immediate.c b/src/expr/immediate.c
-index 47106ae..ea86c88 100644
+index 94b043c..a8a3c1f 100644
 --- a/src/expr/immediate.c
 +++ b/src/expr/immediate.c
-@@ -235,5 +235,5 @@ struct expr_ops expr_ops_immediate = {
+@@ -229,5 +229,5 @@ struct expr_ops expr_ops_immediate = {
  	.get		= nftnl_expr_immediate_get,
  	.parse		= nftnl_expr_immediate_parse,
  	.build		= nftnl_expr_immediate_build,
@@ -262,10 +266,10 @@
 +	.snprintf_	= nftnl_expr_immediate_snprintf,
  };
 diff --git a/src/expr/limit.c b/src/expr/limit.c
-index 5872e27..0ce482f 100644
+index 3dfd54a..f652df0 100644
 --- a/src/expr/limit.c
 +++ b/src/expr/limit.c
-@@ -216,5 +216,5 @@ struct expr_ops expr_ops_limit = {
+@@ -202,5 +202,5 @@ struct expr_ops expr_ops_limit = {
  	.get		= nftnl_expr_limit_get,
  	.parse		= nftnl_expr_limit_parse,
  	.build		= nftnl_expr_limit_build,
@@ -273,10 +277,10 @@
 +	.snprintf_	= nftnl_expr_limit_snprintf,
  };
 diff --git a/src/expr/log.c b/src/expr/log.c
-index bbe43d2..5506bc2 100644
+index 86db548..d96b7ce 100644
 --- a/src/expr/log.c
 +++ b/src/expr/log.c
-@@ -267,5 +267,5 @@ struct expr_ops expr_ops_log = {
+@@ -253,5 +253,5 @@ struct expr_ops expr_ops_log = {
  	.get		= nftnl_expr_log_get,
  	.parse		= nftnl_expr_log_parse,
  	.build		= nftnl_expr_log_build,
@@ -284,10 +288,10 @@
 +	.snprintf_	= nftnl_expr_log_snprintf,
  };
 diff --git a/src/expr/lookup.c b/src/expr/lookup.c
-index a495ac0..678868c 100644
+index 83adce9..1fbace4 100644
 --- a/src/expr/lookup.c
 +++ b/src/expr/lookup.c
-@@ -221,5 +221,5 @@ struct expr_ops expr_ops_lookup = {
+@@ -206,5 +206,5 @@ struct expr_ops expr_ops_lookup = {
  	.get		= nftnl_expr_lookup_get,
  	.parse		= nftnl_expr_lookup_parse,
  	.build		= nftnl_expr_lookup_build,
@@ -295,10 +299,10 @@
 +	.snprintf_	= nftnl_expr_lookup_snprintf,
  };
 diff --git a/src/expr/masq.c b/src/expr/masq.c
-index f6f3ceb..88292a6 100644
+index 684708c..1ce099c 100644
 --- a/src/expr/masq.c
 +++ b/src/expr/masq.c
-@@ -169,5 +169,5 @@ struct expr_ops expr_ops_masq = {
+@@ -163,5 +163,5 @@ struct expr_ops expr_ops_masq = {
  	.get		= nftnl_expr_masq_get,
  	.parse		= nftnl_expr_masq_parse,
  	.build		= nftnl_expr_masq_build,
@@ -306,10 +310,10 @@
 +	.snprintf_	= nftnl_expr_masq_snprintf,
  };
 diff --git a/src/expr/match.c b/src/expr/match.c
-index 4fa74b2..249c6b5 100644
+index 533fdf5..8561986 100644
 --- a/src/expr/match.c
 +++ b/src/expr/match.c
-@@ -198,5 +198,5 @@ struct expr_ops expr_ops_match = {
+@@ -189,5 +189,5 @@ struct expr_ops expr_ops_match = {
  	.get		= nftnl_expr_match_get,
  	.parse		= nftnl_expr_match_parse,
  	.build		= nftnl_expr_match_build,
@@ -317,10 +321,10 @@
 +	.snprintf_	= nftnl_expr_match_snprintf,
  };
 diff --git a/src/expr/meta.c b/src/expr/meta.c
-index 73f6efa..35d5ec5 100644
+index 34fbb9b..1ef79a4 100644
 --- a/src/expr/meta.c
 +++ b/src/expr/meta.c
-@@ -226,5 +226,5 @@ struct expr_ops expr_ops_meta = {
+@@ -216,5 +216,5 @@ struct expr_ops expr_ops_meta = {
  	.get		= nftnl_expr_meta_get,
  	.parse		= nftnl_expr_meta_parse,
  	.build		= nftnl_expr_meta_build,
@@ -328,10 +332,10 @@
 +	.snprintf_	= nftnl_expr_meta_snprintf,
  };
 diff --git a/src/expr/nat.c b/src/expr/nat.c
-index 6b7d50e..be4a579 100644
+index 0a9cdd7..bc4a3fa 100644
 --- a/src/expr/nat.c
 +++ b/src/expr/nat.c
-@@ -279,5 +279,5 @@ struct expr_ops expr_ops_nat = {
+@@ -274,5 +274,5 @@ struct expr_ops expr_ops_nat = {
  	.get		= nftnl_expr_nat_get,
  	.parse		= nftnl_expr_nat_parse,
  	.build		= nftnl_expr_nat_build,
@@ -339,10 +343,10 @@
 +	.snprintf_	= nftnl_expr_nat_snprintf,
  };
 diff --git a/src/expr/numgen.c b/src/expr/numgen.c
-index 4e0d541..5995ee3 100644
+index 159dfec..99bb442 100644
 --- a/src/expr/numgen.c
 +++ b/src/expr/numgen.c
-@@ -195,5 +195,5 @@ struct expr_ops expr_ops_ng = {
+@@ -180,5 +180,5 @@ struct expr_ops expr_ops_ng = {
  	.get		= nftnl_expr_ng_get,
  	.parse		= nftnl_expr_ng_parse,
  	.build		= nftnl_expr_ng_build,
@@ -350,10 +354,10 @@
 +	.snprintf_	= nftnl_expr_ng_snprintf,
  };
 diff --git a/src/expr/objref.c b/src/expr/objref.c
-index 7388b18..e673ffd 100644
+index a4b6470..1b2d387 100644
 --- a/src/expr/objref.c
 +++ b/src/expr/objref.c
-@@ -210,5 +210,5 @@ struct expr_ops expr_ops_objref = {
+@@ -205,5 +205,5 @@ struct expr_ops expr_ops_objref = {
  	.get		= nftnl_expr_objref_get,
  	.parse		= nftnl_expr_objref_parse,
  	.build		= nftnl_expr_objref_build,
@@ -361,10 +365,10 @@
 +	.snprintf_	= nftnl_expr_objref_snprintf,
  };
 diff --git a/src/expr/osf.c b/src/expr/osf.c
-index 98d0df9..618b46e 100644
+index 215a681..75a6b3c 100644
 --- a/src/expr/osf.c
 +++ b/src/expr/osf.c
-@@ -161,5 +161,5 @@ struct expr_ops expr_ops_osf = {
+@@ -147,5 +147,5 @@ struct expr_ops expr_ops_osf = {
  	.get		= nftnl_expr_osf_get,
  	.parse		= nftnl_expr_osf_parse,
  	.build		= nftnl_expr_osf_build,
@@ -372,10 +376,10 @@
 +	.snprintf_	= nftnl_expr_osf_snprintf,
  };
 diff --git a/src/expr/payload.c b/src/expr/payload.c
-index 2192dad..37aacc4 100644
+index 9ccb78e..aa17025 100644
 --- a/src/expr/payload.c
 +++ b/src/expr/payload.c
-@@ -266,5 +266,5 @@ struct expr_ops expr_ops_payload = {
+@@ -258,5 +258,5 @@ struct expr_ops expr_ops_payload = {
  	.get		= nftnl_expr_payload_get,
  	.parse		= nftnl_expr_payload_parse,
  	.build		= nftnl_expr_payload_build,
@@ -383,10 +387,10 @@
 +	.snprintf_	= nftnl_expr_payload_snprintf,
  };
 diff --git a/src/expr/queue.c b/src/expr/queue.c
-index 051ef71..b06feff 100644
+index 8f70977..6bc76ef 100644
 --- a/src/expr/queue.c
 +++ b/src/expr/queue.c
-@@ -207,5 +207,5 @@ struct expr_ops expr_ops_queue = {
+@@ -193,5 +193,5 @@ struct expr_ops expr_ops_queue = {
  	.get		= nftnl_expr_queue_get,
  	.parse		= nftnl_expr_queue_parse,
  	.build		= nftnl_expr_queue_build,
@@ -394,10 +398,10 @@
 +	.snprintf_	= nftnl_expr_queue_snprintf,
  };
 diff --git a/src/expr/quota.c b/src/expr/quota.c
-index 39a92e6..41797be 100644
+index 8c841d8..1a5f2fa 100644
 --- a/src/expr/quota.c
 +++ b/src/expr/quota.c
-@@ -161,5 +161,5 @@ struct expr_ops expr_ops_quota = {
+@@ -147,5 +147,5 @@ struct expr_ops expr_ops_quota = {
  	.get		= nftnl_expr_quota_get,
  	.parse		= nftnl_expr_quota_parse,
  	.build		= nftnl_expr_quota_build,
@@ -405,10 +409,10 @@
 +	.snprintf_	= nftnl_expr_quota_snprintf,
  };
 diff --git a/src/expr/range.c b/src/expr/range.c
-index d1d5083..b619cdf 100644
+index f76843a..73a1930 100644
 --- a/src/expr/range.c
 +++ b/src/expr/range.c
-@@ -227,5 +227,5 @@ struct expr_ops expr_ops_range = {
+@@ -213,5 +213,5 @@ struct expr_ops expr_ops_range = {
  	.get		= nftnl_expr_range_get,
  	.parse		= nftnl_expr_range_parse,
  	.build		= nftnl_expr_range_build,
@@ -416,10 +420,10 @@
 +	.snprintf_	= nftnl_expr_range_snprintf,
  };
 diff --git a/src/expr/redir.c b/src/expr/redir.c
-index 477659a..5c4ebeb 100644
+index 4f56cb4..51ec71c 100644
 --- a/src/expr/redir.c
 +++ b/src/expr/redir.c
-@@ -181,5 +181,5 @@ struct expr_ops expr_ops_redir = {
+@@ -167,5 +167,5 @@ struct expr_ops expr_ops_redir = {
  	.get		= nftnl_expr_redir_get,
  	.parse		= nftnl_expr_redir_parse,
  	.build		= nftnl_expr_redir_build,
@@ -427,10 +431,10 @@
 +	.snprintf_	= nftnl_expr_redir_snprintf,
  };
 diff --git a/src/expr/reject.c b/src/expr/reject.c
-index 141942e..a98990d 100644
+index 716d25c..acf32c2 100644
 --- a/src/expr/reject.c
 +++ b/src/expr/reject.c
-@@ -148,5 +148,5 @@ struct expr_ops expr_ops_reject = {
+@@ -134,5 +134,5 @@ struct expr_ops expr_ops_reject = {
  	.get		= nftnl_expr_reject_get,
  	.parse		= nftnl_expr_reject_parse,
  	.build		= nftnl_expr_reject_build,
@@ -438,10 +442,10 @@
 +	.snprintf_	= nftnl_expr_reject_snprintf,
  };
 diff --git a/src/expr/rt.c b/src/expr/rt.c
-index 0fce72d..32ace19 100644
+index 1ad9b2a..9f2fdf3 100644
 --- a/src/expr/rt.c
 +++ b/src/expr/rt.c
-@@ -177,5 +177,5 @@ struct expr_ops expr_ops_rt = {
+@@ -162,5 +162,5 @@ struct expr_ops expr_ops_rt = {
  	.get		= nftnl_expr_rt_get,
  	.parse		= nftnl_expr_rt_parse,
  	.build		= nftnl_expr_rt_build,
@@ -449,10 +453,10 @@
 +	.snprintf_	= nftnl_expr_rt_snprintf,
  };
 diff --git a/src/expr/socket.c b/src/expr/socket.c
-index 96550d5..2394dbf 100644
+index 02d86f8..49a126b 100644
 --- a/src/expr/socket.c
 +++ b/src/expr/socket.c
-@@ -174,5 +174,5 @@ struct expr_ops expr_ops_socket = {
+@@ -165,5 +165,5 @@ struct expr_ops expr_ops_socket = {
  	.get		= nftnl_expr_socket_get,
  	.parse		= nftnl_expr_socket_parse,
  	.build		= nftnl_expr_socket_build,
@@ -460,10 +464,10 @@
 +	.snprintf_	= nftnl_expr_socket_snprintf,
  };
 diff --git a/src/expr/synproxy.c b/src/expr/synproxy.c
-index 245f4fb..9721029 100644
+index 630f3f4..b22ad2f 100644
 --- a/src/expr/synproxy.c
 +++ b/src/expr/synproxy.c
-@@ -166,5 +166,5 @@ struct expr_ops expr_ops_synproxy = {
+@@ -152,5 +152,5 @@ struct expr_ops expr_ops_synproxy = {
  	.get		= nftnl_expr_synproxy_get,
  	.parse		= nftnl_expr_synproxy_parse,
  	.build		= nftnl_expr_synproxy_build,
@@ -471,10 +475,10 @@
 +	.snprintf_	= nftnl_expr_synproxy_snprintf,
  };
 diff --git a/src/expr/target.c b/src/expr/target.c
-index 9100038..7180085 100644
+index b7c595a..31a039c 100644
 --- a/src/expr/target.c
 +++ b/src/expr/target.c
-@@ -198,5 +198,5 @@ struct expr_ops expr_ops_target = {
+@@ -189,5 +189,5 @@ struct expr_ops expr_ops_target = {
  	.get		= nftnl_expr_target_get,
  	.parse		= nftnl_expr_target_parse,
  	.build		= nftnl_expr_target_build,
@@ -482,10 +486,10 @@
 +	.snprintf_	= nftnl_expr_target_snprintf,
  };
 diff --git a/src/expr/tproxy.c b/src/expr/tproxy.c
-index 3827b75..feabbbe 100644
+index d3ee8f8..1b01591 100644
 --- a/src/expr/tproxy.c
 +++ b/src/expr/tproxy.c
-@@ -183,5 +183,5 @@ struct expr_ops expr_ops_tproxy = {
+@@ -170,5 +170,5 @@ struct expr_ops expr_ops_tproxy = {
  	.get		= nftnl_expr_tproxy_get,
  	.parse		= nftnl_expr_tproxy_parse,
  	.build		= nftnl_expr_tproxy_build,
@@ -493,10 +497,10 @@
 +	.snprintf_	= nftnl_expr_tproxy_snprintf,
  };
 diff --git a/src/expr/tunnel.c b/src/expr/tunnel.c
-index b2b8d72..1ed46d3 100644
+index 1460fd2..6c2f653 100644
 --- a/src/expr/tunnel.c
 +++ b/src/expr/tunnel.c
-@@ -173,5 +173,5 @@ struct expr_ops expr_ops_tunnel = {
+@@ -145,5 +145,5 @@ struct expr_ops expr_ops_tunnel = {
  	.get		= nftnl_expr_tunnel_get,
  	.parse		= nftnl_expr_tunnel_parse,
  	.build		= nftnl_expr_tunnel_build,
@@ -504,10 +508,10 @@
 +	.snprintf_	= nftnl_expr_tunnel_snprintf,
  };
 diff --git a/src/expr/xfrm.c b/src/expr/xfrm.c
-index 8fe5438..b6b2772 100644
+index c81d14d..e648ee5 100644
 --- a/src/expr/xfrm.c
 +++ b/src/expr/xfrm.c
-@@ -239,5 +239,5 @@ struct expr_ops expr_ops_xfrm = {
+@@ -196,5 +196,5 @@ struct expr_ops expr_ops_xfrm = {
  	.get		= nftnl_expr_xfrm_get,
  	.parse		= nftnl_expr_xfrm_parse,
  	.build		= nftnl_expr_xfrm_build,
@@ -515,10 +519,10 @@
 +	.snprintf_	= nftnl_expr_xfrm_snprintf,
  };
 diff --git a/src/obj/counter.c b/src/obj/counter.c
-index 1baba4e..3710bce 100644
+index ef0cd20..0c199f7 100644
 --- a/src/obj/counter.c
 +++ b/src/obj/counter.c
-@@ -145,5 +145,5 @@ struct obj_ops obj_ops_counter = {
+@@ -127,5 +127,5 @@ struct obj_ops obj_ops_counter = {
  	.get		= nftnl_obj_counter_get,
  	.parse		= nftnl_obj_counter_parse,
  	.build		= nftnl_obj_counter_build,
@@ -526,10 +530,10 @@
 +	.snprintf_	= nftnl_obj_counter_snprintf,
  };
 diff --git a/src/obj/ct_expect.c b/src/obj/ct_expect.c
-index c0bb5ba..953c08c 100644
+index 8136ad9..b3e1d70 100644
 --- a/src/obj/ct_expect.c
 +++ b/src/obj/ct_expect.c
-@@ -209,5 +209,5 @@ struct obj_ops obj_ops_ct_expect = {
+@@ -196,5 +196,5 @@ struct obj_ops obj_ops_ct_expect = {
  	.get		= nftnl_obj_ct_expect_get,
  	.parse		= nftnl_obj_ct_expect_parse,
  	.build		= nftnl_obj_ct_expect_build,
@@ -537,10 +541,10 @@
 +	.snprintf_	= nftnl_obj_ct_expect_snprintf,
  };
 diff --git a/src/obj/ct_helper.c b/src/obj/ct_helper.c
-index d91f636..2037461 100644
+index c52032a..12b783c 100644
 --- a/src/obj/ct_helper.c
 +++ b/src/obj/ct_helper.c
-@@ -166,5 +166,5 @@ struct obj_ops obj_ops_ct_helper = {
+@@ -150,5 +150,5 @@ struct obj_ops obj_ops_ct_helper = {
  	.get		= nftnl_obj_ct_helper_get,
  	.parse		= nftnl_obj_ct_helper_parse,
  	.build		= nftnl_obj_ct_helper_build,
@@ -548,10 +552,10 @@
 +	.snprintf_	= nftnl_obj_ct_helper_snprintf,
  };
 diff --git a/src/obj/ct_timeout.c b/src/obj/ct_timeout.c
-index e2e9991..a4f2dd2 100644
+index 1d4f8fb..0a12883 100644
 --- a/src/obj/ct_timeout.c
 +++ b/src/obj/ct_timeout.c
-@@ -330,5 +330,5 @@ struct obj_ops obj_ops_ct_timeout = {
+@@ -316,5 +316,5 @@ struct obj_ops obj_ops_ct_timeout = {
  	.get		= nftnl_obj_ct_timeout_get,
  	.parse		= nftnl_obj_ct_timeout_parse,
  	.build		= nftnl_obj_ct_timeout_build,
@@ -559,10 +563,10 @@
 +	.snprintf_	= nftnl_obj_ct_timeout_snprintf,
  };
 diff --git a/src/obj/limit.c b/src/obj/limit.c
-index 60b0159..538f37a 100644
+index 8b40f9d..2f049b8 100644
 --- a/src/obj/limit.c
 +++ b/src/obj/limit.c
-@@ -185,5 +185,5 @@ struct obj_ops obj_ops_limit = {
+@@ -168,5 +168,5 @@ struct obj_ops obj_ops_limit = {
  	.get		= nftnl_obj_limit_get,
  	.parse		= nftnl_obj_limit_parse,
  	.build		= nftnl_obj_limit_build,
@@ -570,10 +574,10 @@
 +	.snprintf_	= nftnl_obj_limit_snprintf,
  };
 diff --git a/src/obj/quota.c b/src/obj/quota.c
-index 1914037..585a088 100644
+index 8ab3300..8666334 100644
 --- a/src/obj/quota.c
 +++ b/src/obj/quota.c
-@@ -161,5 +161,5 @@ struct obj_ops obj_ops_quota = {
+@@ -144,5 +144,5 @@ struct obj_ops obj_ops_quota = {
  	.get		= nftnl_obj_quota_get,
  	.parse		= nftnl_obj_quota_parse,
  	.build		= nftnl_obj_quota_build,
@@ -581,21 +585,32 @@
 +	.snprintf_	= nftnl_obj_quota_snprintf,
  };
 diff --git a/src/obj/secmark.c b/src/obj/secmark.c
-index e27b5fa..6241bee 100644
+index 2ccc803..e96e06f 100644
 --- a/src/obj/secmark.c
 +++ b/src/obj/secmark.c
-@@ -133,5 +133,5 @@ struct obj_ops obj_ops_secmark = {
+@@ -116,5 +116,5 @@ struct obj_ops obj_ops_secmark = {
  	.get		= nftnl_obj_secmark_get,
  	.parse		= nftnl_obj_secmark_parse,
  	.build		= nftnl_obj_secmark_build,
 -	.snprintf	= nftnl_obj_secmark_snprintf,
 +	.snprintf_	= nftnl_obj_secmark_snprintf,
  };
+diff --git a/src/obj/synproxy.c b/src/obj/synproxy.c
+index d689fee..d06cb6d 100644
+--- a/src/obj/synproxy.c
++++ b/src/obj/synproxy.c
+@@ -143,5 +143,5 @@ struct obj_ops obj_ops_synproxy = {
+ 	.get		= nftnl_obj_synproxy_get,
+ 	.parse		= nftnl_obj_synproxy_parse,
+ 	.build		= nftnl_obj_synproxy_build,
+-	.snprintf	= nftnl_obj_synproxy_snprintf,
++	.snprintf_	= nftnl_obj_synproxy_snprintf,
+ };
 diff --git a/src/obj/tunnel.c b/src/obj/tunnel.c
-index 7ffade8..800eb3e 100644
+index 5ede6bd..d3743ff 100644
 --- a/src/obj/tunnel.c
 +++ b/src/obj/tunnel.c
-@@ -564,5 +564,5 @@ struct obj_ops obj_ops_tunnel = {
+@@ -547,5 +547,5 @@ struct obj_ops obj_ops_tunnel = {
  	.get		= nftnl_obj_tunnel_get,
  	.parse		= nftnl_obj_tunnel_parse,
  	.build		= nftnl_obj_tunnel_build,
@@ -603,29 +618,18 @@
 +	.snprintf_	= nftnl_obj_tunnel_snprintf,
  };
 diff --git a/src/object.c b/src/object.c
-index d8c87ee..5307d7e 100644
+index 46e208b..d321c50 100644
 --- a/src/object.c
 +++ b/src/object.c
-@@ -370,7 +370,7 @@ static int nftnl_obj_snprintf_dflt(char *buf, size_t size,
+@@ -396,7 +396,7 @@ static int nftnl_obj_snprintf_dflt(char *buf, size_t remain,
  	SNPRINTF_BUFFER_SIZE(ret, remain, offset);
  
  	if (obj->ops) {
--		ret = obj->ops->snprintf(buf + offset, offset, type, flags,
-+		ret = obj->ops->snprintf_(buf + offset, offset, type, flags,
- 					 obj);
+-		ret = obj->ops->snprintf(buf + offset, remain, flags, obj);
++		ret = obj->ops->snprintf_(buf + offset, remain, flags, obj);
  		SNPRINTF_BUFFER_SIZE(ret, remain, offset);
  	}
-diff --git a/src/obj/synproxy.c b/src/obj/synproxy.c
-index 56ebc85..6b5380f 100644
---- a/src/obj/synproxy.c
-+++ b/src/obj/synproxy.c
-@@ -157,5 +157,5 @@ struct obj_ops obj_ops_synproxy = {
- 	.get		= nftnl_obj_synproxy_get,
- 	.parse		= nftnl_obj_synproxy_parse,
- 	.build		= nftnl_obj_synproxy_build,
--	.snprintf	= nftnl_obj_synproxy_snprintf,
-+	.snprintf_	= nftnl_obj_synproxy_snprintf,
- };
+ 	ret = snprintf(buf + offset, remain, "]");
 -- 
-2.17.1
+2.31.1
 
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.1.9.bb b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.2.0.bb
similarity index 88%
rename from meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.1.9.bb
rename to meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.2.0.bb
index 5532af8..2b90fdd 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.1.9.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.2.0.bb
@@ -4,7 +4,7 @@
 SECTION = "libs"
 DEPENDS = "libmnl"
 
-SRCREV = "c3fdda6ac8675aea9b35772458544f03157be415"
+SRCREV = "d45be40eef72f0d42a1ba82efddbb0970d4c760a"
 SRC_URI = "git://git.netfilter.org/libnftnl \
            file://0001-avoid-naming-local-function-as-one-of-printf-family.patch \
            "
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.8.bb b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.9.bb
similarity index 93%
rename from meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.8.bb
rename to meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.9.bb
index 6990ae3..cbe2bb3 100644
--- a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.8.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.9.bb
@@ -10,7 +10,7 @@
 UPSTREAM_CHECK_REGEX = "nftables-(?P<pver>\d+(\.\d+){2,}).tar.bz2"
 
 SRC_URI = "http://www.netfilter.org/projects/nftables/files/${BP}.tar.bz2"
-SRC_URI[sha256sum] = "60fc004656dae4fefc4901c939c9d64120b4dedb49738e420a9a34989f108fe4"
+SRC_URI[sha256sum] = "76ef2dc7fd0d79031a8369487739a217ca83996b3a746cec5bda79da11e3f1b4"
 
 inherit autotools manpages pkgconfig
 
diff --git a/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-module_1.0.20210219.bb b/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-module_1.0.20210219.bb
index 0525b41..01e3b74 100644
--- a/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-module_1.0.20210219.bb
+++ b/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-module_1.0.20210219.bb
@@ -17,15 +17,11 @@
     "
 
 MAKE_TARGETS = "module"
+MODULES_INSTALL_TARGET = "module-install"
 
 RRECOMMENDS_${PN} = "kernel-module-xt-hashlimit"
 MODULE_NAME = "wireguard"
 
-module_do_install() {
-    install -d ${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel/${MODULE_NAME}
-    install -m 0644 ${MODULE_NAME}.ko \
-    ${D}${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel/${MODULE_NAME}/${MODULE_NAME}.ko
-}
 
 # WireGuard has been merged into Linux kernel >= 5.6 and therefore this compatibility module is no longer required.
 # OE-core post dunfell has moved to use kernel 5.8 which now means we cant build this module in world builds
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch
index da6d80e..022eb95 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch
@@ -1,6 +1,6 @@
-From b6a3d6c8af35f1ef27b80b0516742fce89f4eb29 Mon Sep 17 00:00:00 2001
-From: Marian Florea <marian.florea@windriver.com>
-Date: Thu, 20 Jul 2017 16:55:24 +0800
+From 1e3178835217ba89aa355e2b6b88e490f17be16d Mon Sep 17 00:00:00 2001
+From: Zheng Ruoqin <zhengrq.fnst@fujitsu.com>
+Date: Wed, 9 Jun 2021 15:47:30 +0900
 Subject: [PATCH] net snmp: fix engineBoots value on SIGHUP
 
 Upstream-Status: Pending
@@ -14,17 +14,17 @@
  2 files changed, 3 insertions(+), 2 deletions(-)
 
 diff --git a/agent/snmpd.c b/agent/snmpd.c
-index ae73eda..66b4560 100644
+index 1af439f..355b510 100644
 --- a/agent/snmpd.c
 +++ b/agent/snmpd.c
-@@ -1207,6 +1207,7 @@ receive(void)
+@@ -1208,6 +1208,7 @@ receive(void)
  	    snmp_log(LOG_INFO, "NET-SNMP version %s restarted\n",
  		     netsnmp_get_version());
              update_config();
-+            snmp_store(app_name);
++	    snmp_store(app_name);
              send_easy_trap(SNMP_TRAP_ENTERPRISESPECIFIC, 3);
- #if HAVE_SIGHOLD
-             sigrelse(SIGHUP);
+ #if HAVE_SIGPROCMASK
+             ret = sigprocmask(SIG_UNBLOCK, &set, NULL);
 diff --git a/snmplib/snmpv3.c b/snmplib/snmpv3.c
 index 29c2a0f..ada961c 100644
 --- a/snmplib/snmpv3.c
@@ -41,3 +41,6 @@
          engineBoots = 1;
      }
  
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.bb b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb
similarity index 89%
rename from meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.bb
rename to meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb
index de0aeee..ed7f842 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb
@@ -5,7 +5,8 @@
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=9d100a395a38584f2ec18a8275261687"
 
-DEPENDS = "openssl libnl pciutils"
+DEPENDS = "openssl"
+DEPENDS_append_class-target = " pciutils"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
            file://init \
@@ -27,7 +28,7 @@
            file://reproducibility-have-printcap.patch \
            file://0001-ac_add_search_path.m4-keep-consistent-between-32bit.patch \
            "
-SRC_URI[sha256sum] = "04303a66f85d6d8b16d3cc53bde50428877c82ab524e17591dfceaeb94df6071"
+SRC_URI[sha256sum] = "eb7fd4a44de6cddbffd9a92a85ad1309e5c1054fb9d5a7dd93079c8953f48c3f"
 
 UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/net-snmp/files/net-snmp/"
 UPSTREAM_CHECK_REGEX = "/net-snmp/(?P<pver>\d+(\.\d+)+)/"
@@ -41,24 +42,23 @@
 
 TARGET_CC_ARCH += "${LDFLAGS}"
 
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} des smux"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 systemd', d)} des smux"
+PACKAGECONFIG[des] = "--enable-des, --disable-des"
 PACKAGECONFIG[elfutils] = "--with-elf, --without-elf, elfutils"
+PACKAGECONFIG[ipv6] = "--enable-ipv6, --disable-ipv6"
 PACKAGECONFIG[libnl] = "--with-nl, --without-nl, libnl"
-
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,,"
-
-PACKAGECONFIG[perl] = "--enable-embedded-perl --with-perl-modules=yes, --disable-embedded-perl --with-perl-modules=no,\
-                       perl,"
-PACKAGECONFIG[des] = "--enable-des,--disable-des"
+PACKAGECONFIG[perl] = "--enable-embedded-perl --with-perl-modules=yes, --disable-embedded-perl --with-perl-modules=no, perl"
 PACKAGECONFIG[smux] = ""
+PACKAGECONFIG[systemd] = "--with-systemd, --without-systemd"
 
-EXTRA_OECONF = "--enable-shared \
-                --disable-manuals \
-                --with-defaults \
-                --with-install-prefix=${D} \
-                --with-persistent-directory=${localstatedir}/lib/net-snmp \
-                ${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', '--with-endianness=little', '--with-endianness=big', d)} \
-                --with-mib-modules='${MIB_MODULES}' \
+EXTRA_OECONF = " \
+    --enable-shared \
+    --disable-manuals \
+    --with-defaults \
+    --with-install-prefix=${D} \
+    --with-persistent-directory=${localstatedir}/lib/net-snmp \
+    --with-endianness=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
+    --with-mib-modules='${MIB_MODULES}' \
 "
 
 MIB_MODULES = ""
@@ -73,8 +73,10 @@
     ac_cv_file__etc_printcap=no \
     NETSNMP_CONFIGURE_OPTIONS= \
 "
-export PERLPROG="${bindir}/env perl"
+PERLPROG = "${bindir}/env perl"
+PERLPROG_class-native = "${bindir_native}/env perl"
 PERLPROG_append = "${@bb.utils.contains('PACKAGECONFIG', 'perl', ' -I${WORKDIR}', '', d)}"
+export PERLPROG
 
 HAS_PERL = "${@bb.utils.contains('PACKAGECONFIG', 'perl', '1', '0', d)}"
 
@@ -117,7 +119,7 @@
     install -d ${D}${systemd_unitdir}/system
     install -m 0644 ${WORKDIR}/snmpd.service ${D}${systemd_unitdir}/system
     install -m 0644 ${WORKDIR}/snmptrapd.service ${D}${systemd_unitdir}/system
-    sed    -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g" \
+    sed -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g" \
         -i ${D}${bindir}/net-snmp-create-v3-user
     sed -e 's@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g' \
         -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
@@ -128,11 +130,14 @@
         -e 's@[^ ]*--with-install-prefix=[^ "]*@@g' \
         -e 's@[^ ]*PKG_CONFIG_PATH=[^ "]*@@g' \
         -e 's@[^ ]*PKG_CONFIG_LIBDIR=[^ "]*@@g' \
-        -e 's@${STAGING_DIR_HOST}@@g' \
         -i ${D}${bindir}/net-snmp-config
 
-    sed -e 's@${STAGING_DIR_HOST}@@g' \
-        -i ${D}${libdir}/pkgconfig/netsnmp*.pc
+    # ${STAGING_DIR_HOST} is empty for native builds, and the sed command below
+    # will result in errors if run for native.
+    if [ "${STAGING_DIR_HOST}" ]; then
+        sed -e 's@${STAGING_DIR_HOST}@@g' \
+            -i ${D}${bindir}/net-snmp-config ${D}${libdir}/pkgconfig/netsnmp*.pc
+    fi
 
     sed -e "s@^NSC_INCLUDEDIR=.*@NSC_INCLUDEDIR=\$\{includedir\}@g" \
         -e "s@^NSC_LIBDIR=-L.*@NSC_LIBDIR=-L\$\{libdir\}@g" \
@@ -234,8 +239,6 @@
 INITSCRIPT_NAME_${PN}-server-snmpd = "snmpd"
 INITSCRIPT_PARAMS_${PN}-server-snmpd = "start 90 2 3 4 5 . stop 60 0 1 6 ."
 
-EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--with-systemd', '--without-systemd', d)}"
-
 SYSTEMD_PACKAGES = "${PN}-server-snmpd \
                     ${PN}-server-snmptrapd"
 
@@ -275,3 +278,5 @@
 LEAD_SONAME = "libnetsnmp.so"
 
 MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/net-snmp-config"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.13.bb b/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.13.bb
index 41a9b8e..bf8b180 100644
--- a/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.13.bb
+++ b/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.13.bb
@@ -22,10 +22,21 @@
 
 inherit autotools pkgconfig
 
+do_configure_prepend() {
+    # want installed to /usr/sbin rather than /sbin to be DISTRO_FEATURES usrmerge compliant
+    # must override ROOTSBINDIR (default '/sbin'),
+    # setting --exec-prefix or --prefix in EXTRA_OECONF does not work
+    if ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','true','fakse',d)}; then
+        export ROOTSBINDIR=${sbindir}
+    fi
+}
+
 do_install_append() {
-    # Remove empty /usr/bin and /usr/sbin directories since the mount helper
-    # is installed to /sbin
-    rmdir --ignore-fail-on-non-empty ${D}${bindir} ${D}${sbindir}
+    if ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','false','true',d)}; then
+        # Remove empty /usr/bin and /usr/sbin directories since the mount helper
+        # is installed to /sbin
+        rmdir --ignore-fail-on-non-empty ${D}${bindir} ${D}${sbindir}
+    fi
 }
 
 FILES_${PN} += "${base_libdir}/security"
diff --git a/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot_2.3.14.bb b/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot_2.3.14.bb
index 19ba2b1..26b4f5e 100644
--- a/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot_2.3.14.bb
+++ b/meta-openembedded/meta-networking/recipes-support/dovecot/dovecot_2.3.14.bb
@@ -72,3 +72,6 @@
 FILES_${PN}-staticdev += "${libdir}/dovecot/*/*.a"
 FILES_${PN}-dev += "${libdir}/dovecot/libdovecot*.so"
 FILES_${PN}-dbg += "${libdir}/dovecot/*/.debug"
+
+# CVE-2016-4983 affects only postinstall script on specific distribution
+CVE_CHECK_WHITELIST += "CVE-2016-4983"
diff --git a/meta-openembedded/meta-networking/recipes-support/libldb/libldb/do-not-import-target-module-while-cross-compile.patch b/meta-openembedded/meta-networking/recipes-support/libldb/libldb/0001-do-not-import-target-module-while-cross-compile.patch
similarity index 91%
rename from meta-openembedded/meta-networking/recipes-support/libldb/libldb/do-not-import-target-module-while-cross-compile.patch
rename to meta-openembedded/meta-networking/recipes-support/libldb/libldb/0001-do-not-import-target-module-while-cross-compile.patch
index 3f2921e..74f8d8a 100644
--- a/meta-openembedded/meta-networking/recipes-support/libldb/libldb/do-not-import-target-module-while-cross-compile.patch
+++ b/meta-openembedded/meta-networking/recipes-support/libldb/libldb/0001-do-not-import-target-module-while-cross-compile.patch
@@ -1,4 +1,4 @@
-From cc0576405803bcae45ee353c4333c449cead9207 Mon Sep 17 00:00:00 2001
+From 00500909ebb0f51dd3b4e90c665f07158e7fe255 Mon Sep 17 00:00:00 2001
 From: Changqing Li <changqing.li@windriver.com>
 Date: Tue, 25 Jun 2019 14:25:08 +0800
 Subject: [PATCH] do not import target module while cross compile
@@ -10,12 +10,16 @@
 
 update to version 4.10.5, and switch to python3
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
 ---
  buildtools/wafsamba/samba_bundled.py | 27 +++++++++++++++++++--------
- 1 file changed, 18 insertions(+), 8 deletions(-)
+ 1 file changed, 19 insertions(+), 8 deletions(-)
 
 diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
-index 60ce7da..5468a36 100644
+index 5f080dd..cdc115e 100644
 --- a/buildtools/wafsamba/samba_bundled.py
 +++ b/buildtools/wafsamba/samba_bundled.py
 @@ -4,6 +4,7 @@ import sys
@@ -63,5 +67,5 @@
          Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion))
          sys.exit(1)
 -- 
-2.7.4
+2.17.1
 
diff --git a/meta-openembedded/meta-networking/recipes-support/libldb/libldb/0001-waf-add-support-of-cross_compile.patch b/meta-openembedded/meta-networking/recipes-support/libldb/libldb/0001-waf-add-support-of-cross_compile.patch
deleted file mode 100644
index 45c5aca..0000000
--- a/meta-openembedded/meta-networking/recipes-support/libldb/libldb/0001-waf-add-support-of-cross_compile.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 4b8463ff43f8983a706b181c5292491f9f954be1 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Fri, 25 Jan 2019 15:00:59 +0800
-Subject: [PATCH] waf: add support of cross_compile
-
-After upgrade, waf build system also upgraded.
-
-on 1.5.19, for cross_compile, subprocess.Popen is set to be
-samba_cross.cross_Popen, which will not execute testprog on
-host, but only read result from cross-answers.txt which is
-passed by option --cross-answer
-
-part of old code:
-    args = Utils.to_list(kw.get('exec_args', []))
-    proc = Utils.pproc.Popen([lastprog] + args, stdout=Utils.pproc.PIPE, stderr=Utils.pproc.PIPE)
-
-but on new version, exec_args is not used and cause do_configure
-failed with Exec format error
-
-fixed by append cross anser related args to cmd
-
-Upstream-Status: Submitted [https://gitlab.com/samba-team/samba/merge_requests/211]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- third_party/waf/waflib/Tools/c_config.py | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/third_party/waf/waflib/Tools/c_config.py b/third_party/waf/waflib/Tools/c_config.py
-index 7608215..767cf33 100644
---- a/third_party/waf/waflib/Tools/c_config.py
-+++ b/third_party/waf/waflib/Tools/c_config.py
-@@ -660,20 +660,21 @@ class test_exec(Task.Task):
- 	"""
- 	color = 'PINK'
- 	def run(self):
-+		args = self.generator.bld.kw.get('exec_args', [])
- 		if getattr(self.generator, 'rpath', None):
- 			if getattr(self.generator, 'define_ret', False):
--				self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()])
--			else:
--				self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()])
-+				self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()] + args)
-+			else: 
-+				self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()] + args)
- 		else:
- 			env = self.env.env or {}
- 			env.update(dict(os.environ))
- 			for var in ('LD_LIBRARY_PATH', 'DYLD_LIBRARY_PATH', 'PATH'):
- 				env[var] = self.inputs[0].parent.abspath() + os.path.pathsep + env.get(var, '')
- 			if getattr(self.generator, 'define_ret', False):
--				self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()], env=env)
-+				self.generator.bld.retval = self.generator.bld.cmd_and_log([self.inputs[0].abspath()] + args, env=env)
- 			else:
--				self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()], env=env)
-+				self.generator.bld.retval = self.generator.bld.exec_command([self.inputs[0].abspath()] + args, env=env)
- 
- @feature('test_exec')
- @after_method('apply_link')
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-networking/recipes-support/libldb/libldb/options-1.5.4.patch b/meta-openembedded/meta-networking/recipes-support/libldb/libldb/0002-ldb-Add-configure-options-for-packages.patch
similarity index 90%
rename from meta-openembedded/meta-networking/recipes-support/libldb/libldb/options-1.5.4.patch
rename to meta-openembedded/meta-networking/recipes-support/libldb/libldb/0002-ldb-Add-configure-options-for-packages.patch
index bffd065..a55d46b 100644
--- a/meta-openembedded/meta-networking/recipes-support/libldb/libldb/options-1.5.4.patch
+++ b/meta-openembedded/meta-networking/recipes-support/libldb/libldb/0002-ldb-Add-configure-options-for-packages.patch
@@ -1,4 +1,4 @@
-From 0841c3ed69c388251c1aeae63f2c3813555a54f6 Mon Sep 17 00:00:00 2001
+From 100d16aaa6fe9a28a5ba77b2de2bde81a3fa3dac Mon Sep 17 00:00:00 2001
 From: Changqing Li <changqing.li@windriver.com>
 Date: Mon, 1 Jul 2019 16:14:16 +0800
 Subject: [PATCH] ldb: Add configure options for packages
@@ -17,20 +17,22 @@
 
 upgrade to version 1.5.4
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+Rebase to 2.3.0
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
 ---
- lib/replace/wscript | 92 +++++++++++++++++++++++++++++++++++++++++------------
- wscript             |  8 +++++
- 2 files changed, 79 insertions(+), 21 deletions(-)
+ lib/replace/wscript | 90 +++++++++++++++++++++++++++++++++++----------
+ wscript             |  8 ++++
+ 2 files changed, 78 insertions(+), 20 deletions(-)
 
 diff --git a/lib/replace/wscript b/lib/replace/wscript
-index a7fd25d..ad26041 100644
+index 2c856b6..36b696d 100644
 --- a/lib/replace/wscript
 +++ b/lib/replace/wscript
-@@ -24,6 +24,41 @@ def options(opt):
-     opt.BUILTIN_DEFAULT('NONE')
+@@ -25,6 +25,41 @@ def options(opt):
      opt.PRIVATE_EXTENSION_DEFAULT('')
      opt.RECURSE('buildtools/wafsamba')
-+    
+ 
 +    opt.add_option('--with-acl',
 +                   help=("Enable use of acl"),
 +                   action="store_true", dest='enable_acl')
@@ -65,10 +67,11 @@
 +    opt.add_option('--without-libcap',
 +                   help=("Disable use of libcap"),
 +                   action="store_false", dest='enable_libcap', default=False)
- 
++
  @Utils.run_once
  def configure(conf):
-@@ -34,12 +69,25 @@ def configure(conf):
+     conf.RECURSE('buildtools/wafsamba')
+@@ -35,12 +70,25 @@ def configure(conf):
      conf.DEFINE('HAVE_LIBREPLACE', 1)
      conf.DEFINE('LIBREPLACE_NETWORK_CHECKS', 1)
  
@@ -77,10 +80,9 @@
 +    conf.CHECK_HEADERS('linux/types.h crypt.h locale.h compat.h')
 +    conf.CHECK_HEADERS('compat.h ctype.h dustat.h')
      conf.CHECK_HEADERS('fcntl.h fnmatch.h glob.h history.h krb5.h langinfo.h')
--    conf.CHECK_HEADERS('libaio.h locale.h ndir.h pwd.h')
+     conf.CHECK_HEADERS('locale.h ndir.h pwd.h')
 -    conf.CHECK_HEADERS('shadow.h sys/acl.h')
 -    conf.CHECK_HEADERS('sys/attributes.h attr/attributes.h sys/capability.h sys/dir.h sys/epoll.h')
-+    conf.CHECK_HEADERS('locale.h ndir.h pwd.h')
 +    conf.CHECK_HEADERS('shadow.h')
 +    conf.CHECK_HEADERS('sys/attributes.h sys/dir.h sys/epoll.h')
 +
@@ -97,9 +99,9 @@
 +        conf.CHECK_HEADERS('sys/capability.h')
 +
      conf.CHECK_HEADERS('port.h')
-     conf.CHECK_HEADERS('sys/fcntl.h sys/filio.h sys/filsys.h sys/fs/s5param.h sys/fs/vx/quota.h')
+     conf.CHECK_HEADERS('sys/fcntl.h sys/filio.h sys/filsys.h sys/fs/s5param.h')
      conf.CHECK_HEADERS('sys/id.h sys/ioctl.h sys/ipc.h sys/mman.h sys/mode.h sys/ndir.h sys/priv.h')
-@@ -110,8 +158,9 @@ def configure(conf):
+@@ -121,8 +169,9 @@ def configure(conf):
      conf.CHECK_HEADERS('sys/fileio.h sys/filesys.h sys/dustat.h sys/sysmacros.h')
      conf.CHECK_HEADERS('xfs/libxfs.h netgroup.h')
  
@@ -111,7 +113,7 @@
      conf.CHECK_HEADERS('nss_common.h nsswitch.h ns_api.h')
      conf.CHECK_HEADERS('sys/extattr.h sys/ea.h sys/proplist.h sys/cdefs.h')
      conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h')
-@@ -380,20 +429,21 @@ def configure(conf):
+@@ -418,20 +467,21 @@ def configure(conf):
  
      strlcpy_in_bsd = False
  
@@ -148,10 +150,10 @@
      conf.CHECK_CODE('''
                  struct ucred cred;
 diff --git a/wscript b/wscript
-index d3402a7..d4e0ce1 100644
+index bf6129b..722fdf6 100644
 --- a/wscript
 +++ b/wscript
-@@ -38,6 +38,14 @@ def options(opt):
+@@ -39,6 +39,14 @@ def options(opt):
                     help='disable new LMDB backend for LDB',
                     action='store_true', dest='without_ldb_lmdb', default=False)
  
@@ -167,5 +169,5 @@
  def configure(conf):
      conf.RECURSE('lib/tdb')
 -- 
-2.7.4
+2.17.1
 
diff --git a/meta-openembedded/meta-networking/recipes-support/libldb/libldb/avoid-openldap-unless-wanted.patch b/meta-openembedded/meta-networking/recipes-support/libldb/libldb/0003-avoid-openldap-unless-wanted.patch
similarity index 69%
rename from meta-openembedded/meta-networking/recipes-support/libldb/libldb/avoid-openldap-unless-wanted.patch
rename to meta-openembedded/meta-networking/recipes-support/libldb/libldb/0003-avoid-openldap-unless-wanted.patch
index b30afee..dd12465 100644
--- a/meta-openembedded/meta-networking/recipes-support/libldb/libldb/avoid-openldap-unless-wanted.patch
+++ b/meta-openembedded/meta-networking/recipes-support/libldb/libldb/0003-avoid-openldap-unless-wanted.patch
@@ -1,16 +1,20 @@
-From 63570b98ef63c91d8508478fcbe6b89c90c8398f Mon Sep 17 00:00:00 2001
+From 1f24231095a59debcf25d0e3309dc5d1056a7fad Mon Sep 17 00:00:00 2001
 From: Jens Rehsack <rehsack@gmail.com>
 Date: Thu, 19 Nov 2015 20:45:56 +0100
+Subject: [PATCH] avoid openldap unless wanted
 
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
 ---
  wscript | 4 +---
  1 file changed, 1 insertion(+), 3 deletions(-)
 
 diff --git a/wscript b/wscript
-index e7c05d2..1633593 100644
+index 722fdf6..22700d5 100644
 --- a/wscript
 +++ b/wscript
-@@ -161,9 +161,7 @@ def configure(conf):
+@@ -153,9 +153,7 @@ def configure(conf):
      if conf.env.standalone_ldb:
          conf.CHECK_XSLTPROC_MANPAGES()
  
@@ -21,3 +25,6 @@
  
          # we don't want any libraries or modules to rely on runtime
          # resolution of symbols
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-networking/recipes-support/libldb/libldb/libldb-fix-musl-libc-unkown-type-error.patch b/meta-openembedded/meta-networking/recipes-support/libldb/libldb/libldb-fix-musl-libc-unkown-type-error.patch
deleted file mode 100644
index c0e7e89..0000000
--- a/meta-openembedded/meta-networking/recipes-support/libldb/libldb/libldb-fix-musl-libc-unkown-type-error.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From d90534469c5c43bf2a97e5698a5ddb4b7471f92a Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Tue, 24 Jul 2018 10:53:16 +0800
-Subject: [PATCH] libldb: fix musl libc unkoown type error
-
-tevent.h:1440:8: error: unknown type name 'pid_t'; did you mean 'div_t'?
-        pid_t *pid,
-         ^~~~~
-         div_t
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- lib/tevent/tevent.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h
-index aa6fe0d..2572696 100644
---- a/lib/tevent/tevent.h
-+++ b/lib/tevent/tevent.h
-@@ -32,6 +32,8 @@
- #include <talloc.h>
- #include <sys/time.h>
- #include <stdbool.h>
-+#include <sys/stat.h>
-+#include <sys/types.h>
- 
- struct tevent_context;
- struct tevent_ops;
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-networking/recipes-support/libldb/libldb_1.5.8.bb b/meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.3.0.bb
similarity index 85%
rename from meta-openembedded/meta-networking/recipes-support/libldb/libldb_1.5.8.bb
rename to meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.3.0.bb
index 199db79..3731c26 100644
--- a/meta-openembedded/meta-networking/recipes-support/libldb/libldb_1.5.8.bb
+++ b/meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.3.0.bb
@@ -7,11 +7,9 @@
 RDEPENDS_pyldb += "python3"
 
 SRC_URI = "http://samba.org/ftp/ldb/ldb-${PV}.tar.gz \
-           file://do-not-import-target-module-while-cross-compile.patch \
-           file://libldb-fix-musl-libc-unkown-type-error.patch \
+           file://0001-do-not-import-target-module-while-cross-compile.patch \
+           file://0002-ldb-Add-configure-options-for-packages.patch \
            file://libldb-fix-musl-libc-conflict-type-error.patch \
-           file://0001-waf-add-support-of-cross_compile.patch \
-           file://options-1.5.4.patch \ 
           "
 
 PACKAGECONFIG ??= "\
@@ -27,14 +25,14 @@
 PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind"
 PACKAGECONFIG[lmdb] = ",--without-ldb-lmdb,lmdb,"
 
-SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'ldap', '', 'file://avoid-openldap-unless-wanted.patch', d)}"
+SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'ldap', '', 'file://0003-avoid-openldap-unless-wanted.patch', d)}"
 
 LIC_FILES_CHKSUM = "file://pyldb.h;endline=24;md5=dfbd238cecad76957f7f860fbe9adade \
                     file://man/ldb.3.xml;beginline=261;endline=262;md5=137f9fd61040c1505d1aa1019663fd08 \
                     file://tools/ldbdump.c;endline=19;md5=a7d4fc5d1f75676b49df491575a86a42"
 
-SRC_URI[md5sum] = "d9b4bea8b48cd4c4d0c492e65881164b"
-SRC_URI[sha256sum] = "ddf7f770643e0a0dda60f2818913f883caeed37fa1e8d6eda0dfe9588c1e3a83"
+SRC_URI[md5sum] = "fe4b1f17f77e2ea52b4e1320d927844c"
+SRC_URI[sha256sum] = "a4d308b3d0922ef01f3661a69ebc373e772374defa76cf0979ad21b21f91922d"
 
 inherit waf-samba
 
diff --git a/meta-openembedded/meta-networking/recipes-support/memcached/memcached/0001-Replace-sigignore-with-signal-API.patch b/meta-openembedded/meta-networking/recipes-support/memcached/memcached/0001-Replace-sigignore-with-signal-API.patch
deleted file mode 100644
index e4aa8fd..0000000
--- a/meta-openembedded/meta-networking/recipes-support/memcached/memcached/0001-Replace-sigignore-with-signal-API.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From b9040acdba1245f8cdf5e94384830e3d04fde98a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 22 Jul 2020 21:32:14 -0700
-Subject: [PATCH] Replace sigignore with signal API
-
-sigignore has been deprecated in glibc 2.32+ [1] and eventually it will be
-removed, therefore substitute it
-
-[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=02802fafcf6e11ea3f998f685035ffe568dfddeb
-
-Upstream-Status: Submitted [https://github.com/memcached/memcached/pull/702]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- configure.ac |  1 -
- memcached.c  | 16 ++--------------
- 2 files changed, 2 insertions(+), 15 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index ffc98b2..4567b30 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -630,7 +630,6 @@ AC_CHECK_FUNCS(mlockall)
- AC_CHECK_FUNCS(getpagesizes)
- AC_CHECK_FUNCS(sysconf)
- AC_CHECK_FUNCS(memcntl)
--AC_CHECK_FUNCS(sigignore)
- AC_CHECK_FUNCS(clock_gettime)
- AC_CHECK_FUNCS(preadv)
- AC_CHECK_FUNCS(pread)
-diff --git a/memcached.c b/memcached.c
-index 9cb778d..91ced9e 100644
---- a/memcached.c
-+++ b/memcached.c
-@@ -8292,18 +8292,6 @@ static void sig_usrhandler(const int sig) {
-     stop_main_loop = GRACE_STOP;
- }
- 
--#ifndef HAVE_SIGIGNORE
--static int sigignore(int sig) {
--    struct sigaction sa = { .sa_handler = SIG_IGN, .sa_flags = 0 };
--
--    if (sigemptyset(&sa.sa_mask) == -1 || sigaction(sig, &sa, 0) == -1) {
--        return -1;
--    }
--    return 0;
--}
--#endif
--
--
- /*
-  * On systems that supports multiple page sizes we may reduce the
-  * number of TLB-misses by using the biggest available page size
-@@ -9996,7 +9984,7 @@ int main (int argc, char **argv) {
-     /* daemonize if requested */
-     /* if we want to ensure our ability to dump core, don't chdir to / */
-     if (do_daemonize) {
--        if (sigignore(SIGHUP) == -1) {
-+        if (signal(SIGHUP, SIG_IGN) == SIG_ERR) {
-             perror("Failed to ignore SIGHUP");
-         }
-         if (daemonize(maxcore, settings.verbose) == -1) {
-@@ -10146,7 +10134,7 @@ int main (int argc, char **argv) {
-      * ignore SIGPIPE signals; we can use errno == EPIPE if we
-      * need that information
-      */
--    if (sigignore(SIGPIPE) == -1) {
-+    if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) {
-         perror("failed to ignore SIGPIPE; sigaction");
-         exit(EX_OSERR);
-     }
--- 
-2.27.0
-
diff --git a/meta-openembedded/meta-networking/recipes-support/memcached/memcached/0002-stats_prefix.c-Check-for-NDEBUG-before-using-total_w.patch b/meta-openembedded/meta-networking/recipes-support/memcached/memcached/0002-stats_prefix.c-Check-for-NDEBUG-before-using-total_w.patch
new file mode 100644
index 0000000..2979552
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/memcached/memcached/0002-stats_prefix.c-Check-for-NDEBUG-before-using-total_w.patch
@@ -0,0 +1,48 @@
+From d6294e9166e4875a0572349aabcc5e51acbd2e3c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 4 Jun 2021 11:33:12 -0700
+Subject: [PATCH] stats_prefix.c: Check for NDEBUG before using total_written
+ variable
+
+When using NDEBUG assert macro is ineffective which is caught by latest
+clang and reports that total_written is set but unused. Therefore check
+for NDEBUG to make sure assert is used only when its effective
+
+Fixes
+error: variable 'total_written' set but not used [-Werror,-Wunused-but-set-variable]
+    size_t size = 0, written = 0, total_written = 0;
+                                  ^
+Upstream-Status: Submitted [https://github.com/memcached/memcached/pull/792]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ stats_prefix.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/stats_prefix.c b/stats_prefix.c
+index 62f0d04..d72e514 100644
+--- a/stats_prefix.c
++++ b/stats_prefix.c
+@@ -127,8 +127,10 @@ char *stats_prefix_dump(int *length) {
+     PREFIX_STATS *pfs;
+     char *buf;
+     int i, pos;
+-    size_t size = 0, written = 0, total_written = 0;
+-
++    size_t size = 0, written = 0;
++#ifndef NDEBUG
++    size_t total_written = 0;
++#endif
+     /*
+      * Figure out how big the buffer needs to be. This is the sum of the
+      * lengths of the prefixes themselves, plus the size of one copy of
+@@ -154,8 +156,10 @@ char *stats_prefix_dump(int *length) {
+                            pfs->prefix, pfs->num_gets, pfs->num_hits,
+                            pfs->num_sets, pfs->num_deletes);
+             pos += written;
++#ifndef NDEBUG
+             total_written += written;
+             assert(total_written < size);
++#endif
+         }
+     }
+ 
diff --git a/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.6.6.bb b/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.6.9.bb
similarity index 90%
rename from meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.6.6.bb
rename to meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.6.9.bb
index 2eb24db..73e18a4 100644
--- a/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.6.6.bb
+++ b/meta-openembedded/meta-networking/recipes-support/memcached/memcached_1.6.9.bb
@@ -21,9 +21,9 @@
 
 SRC_URI = "http://www.memcached.org/files/${BP}.tar.gz \
            file://memcached-add-hugetlbfs-check.patch \
-           file://0001-Replace-sigignore-with-signal-API.patch \
+           file://0002-stats_prefix.c-Check-for-NDEBUG-before-using-total_w.patch \
            "
-SRC_URI[sha256sum] = "908f0eecfa559129c9e44edc46f02e73afe8faca355b4efc5c86d902fc3e32f7"
+SRC_URI[sha256sum] = "d5a62ce377314dbffdb37c4467e7763e3abae376a16171e613cbe69956f092d1"
 
 # set the same COMPATIBLE_HOST as libhugetlbfs
 COMPATIBLE_HOST = "(i.86|x86_64|powerpc|powerpc64|aarch64|arm).*-linux*"
diff --git a/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.43.0.bb b/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.43.0.bb
index 959cccf..08b8552 100644
--- a/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.43.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/nghttp2/nghttp2_1.43.0.bb
@@ -18,11 +18,7 @@
 
 # examples are never installed, and don't need to be built in the
 # first place
-EXTRA_OECMAKE = "-DENABLE_EXAMPLES=OFF -DENABLE_APP=ON"
-
-do_install_append() {
-	rm ${D}${bindir}/deflatehd ${D}${bindir}/inflatehd
-}
+EXTRA_OECMAKE = "-DENABLE_EXAMPLES=OFF -DENABLE_APP=ON -DENABLE_HPACK_TOOLS=OFF"
 
 PACKAGES =+ "lib${PN} ${PN}-client ${PN}-proxy ${PN}-server"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate b/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate
index 17b64d1..be3bacf 100755
--- a/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate
+++ b/meta-openembedded/meta-networking/recipes-support/ntp/ntp/ntpdate
@@ -52,3 +52,8 @@
 fi
 
 ) &
+
+# wait for all subprocesses to finish
+# this is required when using systemd service as ntpd will start before ntpdate finishes
+# and results in a bind error (port 123)
+wait
diff --git a/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p15.bb b/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p15.bb
index 7e16882..e668113 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p15.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p15.bb
@@ -26,6 +26,9 @@
 
 SRC_URI[sha256sum] = "f65840deab68614d5d7ceb2d0bb9304ff70dcdedd09abb79754a87536b849c19"
 
+# CVE-2016-9312 is only for windows.
+CVE_CHECK_WHITELIST += "CVE-2016-9312"
+
 inherit autotools update-rc.d useradd systemd pkgconfig
 
 # The ac_cv_header_readline_history is to stop ntpdc depending on either
diff --git a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.2.bb b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.3.bb
similarity index 89%
rename from meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.2.bb
rename to meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.3.bb
index f82107d..7f4cc18 100644
--- a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.3.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://openvpn.net/"
 SECTION = "net"
 LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7aee596ed2deefe3e8a861e24292abba"
+LIC_FILES_CHKSUM = "file://COPYING;md5=377a495e6f12b2a3adcee797e59540b8"
 DEPENDS = "lzo openssl iproute2 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
 
 inherit autotools systemd update-rc.d
@@ -14,8 +14,11 @@
 
 UPSTREAM_CHECK_URI = "https://openvpn.net/community-downloads"
 
-SRC_URI[md5sum] = "7643f135b49aee49df7d83c1f434dc4e"
-SRC_URI[sha256sum] = "b9d295988b34e39964ac475b619c3585d667b36c350cf1adec19e5e3c843ba11"
+SRC_URI[md5sum] = "08895fd1142f25fdd94a98315632e1bf"
+SRC_URI[sha256sum] = "75f0044df449430555ca7b995a2b77ab24f2946fdc3668301b8edc23986a5f7e"
+
+# CVE-2020-7224 and CVE-2020-27569 are for Aviatrix OpenVPN client, not for openvpn.
+CVE_CHECK_WHITELIST += "CVE-2020-7224 CVE-2020-27569"
 
 SYSTEMD_SERVICE_${PN} += "openvpn@loopback-server.service openvpn@loopback-client.service"
 SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.2.bb b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.3.bb
similarity index 97%
rename from meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.2.bb
rename to meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.3.bb
index c178b4c..8a704f6 100644
--- a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.3.bb
@@ -12,8 +12,7 @@
            file://0001-memory.h-Include-stdint.h-for-uintptr_t.patch \
            "
 
-SRC_URI[md5sum] = "8918e6675e1be3784817641f07eadeb8"
-SRC_URI[sha256sum] = "61c72f741edb2c1295a7b7ccce0317a104b3f9d39efd04c52cd05b01b55ab063"
+SRC_URI[sha256sum] = "9325ab56a0a4e97e379401e1d942ce3e0d8b6372291350ab2caae0755862c6f7"
 
 UPSTREAM_CHECK_REGEX = "strongswan-(?P<pver>\d+(\.\d+)+)\.tar"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.5.bb b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.6.bb
similarity index 96%
rename from meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.5.bb
rename to meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.6.bb
index 3100e4c..3062633 100644
--- a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.5.bb
+++ b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.6.bb
@@ -19,7 +19,7 @@
 
 UPSTREAM_CHECK_URI = "https://1.as.dl.wireshark.org/src"
 
-SRC_URI[sha256sum] = "de1aafd100a1e1207c850d180e97dd91ab8da0f5eb6beec545f725cdb145d333"
+SRC_URI[sha256sum] = "12a678208f8cb009e6b9d96026e41a6ef03c7ad086b9e1029f42053b249b4628"
 
 PE = "1"
 
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.2.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.3.bb
similarity index 86%
rename from meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.2.bb
rename to meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.3.bb
index de4fa16..949b45b 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.2.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.3.bb
@@ -7,7 +7,7 @@
 inherit setuptools3
 
 SRC_URI = "git://github.com/sivel/speedtest-cli.git"
-SRCREV = "c58ad3367bf27f4b4a4d5b1bca29ebd574731c5d"
+SRCREV = "42e96b13dda2afabbcec2622612d13495a415caa"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb
index 95e0cf7..9c1e485 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb
@@ -61,6 +61,9 @@
 
 MONGO_ARCH ?= "${HOST_ARCH}"
 MONGO_ARCH_powerpc64le = "ppc64le"
+WIREDTIGER ?= "off"
+WIREDTIGER_x86-64 = "on"
+WIREDTIGER_aarch64 = "on"
 
 EXTRA_OESCONS = "PREFIX=${prefix} \
                  DESTDIR=${D} \
@@ -75,7 +78,7 @@
                  --use-system-zlib \
                  --nostrip \
                  --endian=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
-                 --wiredtiger=${@['off','on'][d.getVar('SITEINFO_BITS') != '32']} \
+                 --wiredtiger='${WIREDTIGER}' \
                  --separate-debug \
                  ${PACKAGECONFIG_CONFARGS}"
 
diff --git a/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/rasdaemon/rasdaemon_0.6.6.bb b/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/rasdaemon/rasdaemon_0.6.7.bb
similarity index 97%
rename from meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/rasdaemon/rasdaemon_0.6.6.bb
rename to meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/rasdaemon/rasdaemon_0.6.7.bb
index 93e00e6..39ed3d1 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/rasdaemon/rasdaemon_0.6.6.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/rasdaemon/rasdaemon_0.6.7.bb
@@ -8,7 +8,7 @@
            file://rasdaemon.service \
            file://init"
 
-SRCREV = "32b978fcf73215c90ce7383580224e4295930ae7"
+SRCREV = "aa96737648d867a3d73e4151d05b54bbab494605"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/licenses/MINPACK b/meta-openembedded/meta-oe/licenses/MINPACK
new file mode 100644
index 0000000..132cc3f
--- /dev/null
+++ b/meta-openembedded/meta-oe/licenses/MINPACK
@@ -0,0 +1,51 @@
+Minpack Copyright Notice (1999) University of Chicago.  All rights reserved
+
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the
+following conditions are met:
+
+1. Redistributions of source code must retain the above
+copyright notice, this list of conditions and the following
+disclaimer.
+
+2. Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following
+disclaimer in the documentation and/or other materials
+provided with the distribution.
+
+3. The end-user documentation included with the
+redistribution, if any, must include the following
+acknowledgment:
+
+   "This product includes software developed by the
+   University of Chicago, as Operator of Argonne National
+   Laboratory.
+
+Alternately, this acknowledgment may appear in the software
+itself, if and wherever such third-party acknowledgments
+normally appear.
+
+4. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS"
+WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE
+UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND
+THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE
+OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY
+OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
+USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF
+THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4)
+DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION
+UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL
+BE CORRECTED.
+
+5. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT
+HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF
+ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT,
+INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF
+ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF
+PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER
+SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT
+(INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE,
+EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE
+POSSIBILITY OF SUCH LOSS OR DAMAGES.
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.26.bb b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.27.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.26.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.27.bb
index 6f2464e..d18649d 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.26.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.27.bb
@@ -22,7 +22,7 @@
 PACKAGECONFIG ??= "${PACKAGECONFIG_NUMA}"
 PACKAGECONFIG[numa] = ",--disable-numa,numactl"
 
-SRCREV = "267b164c372d57145880f365bab8d8a52bf8baa7"
+SRCREV = "0313e938c9c8bb37d71dade239f1f5326677b079"
 SRC_URI = "git://git.kernel.dk/fio.git \
 "
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/parallelism.patch b/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/parallelism.patch
index d5622ed..48069ff 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/parallelism.patch
+++ b/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/parallelism.patch
@@ -10,20 +10,24 @@
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 Upstream-Status: Pending
 
+---
+ current/makefile | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
 
-
---- current/makefile.org	2016-12-06 02:19:10.367911020 +0000
-+++ current/makefile	2016-12-06 02:21:38.767911020 +0000
-@@ -167,7 +167,7 @@
+diff --git current/makefile current/makefile
+index 3a54701..7071427 100644
+--- current/makefile
++++ current/makefile
+@@ -171,7 +171,7 @@ hpux_no_ansi:	iozone_hpux_no.o  libbif.o
  #
  # GNU 'C' compiler Linux build with threads, largefiles, async I/O 
  #
 -linux:	iozone_linux.o libasync.o libbif.o fileop_linux.o pit_server.o
 +linux:	iozone_linux.o fileop_linux.o pit_server.o
- 	$(CC)  -O3 $(LDFLAGS) iozone_linux.o libasync.o libbif.o -lpthread \
+ 	$(CC)  -O3 $(CFLAGS) iozone_linux.o libasync.o libbif.o -lpthread \
  		-lrt -o iozone
- 	$(CC)  -O3 -Dlinux fileop_linux.o -o fileop
-@@ -176,7 +176,7 @@
+ 	$(CC)  -O3 $(CFLAGS) -Dlinux fileop_linux.o -o fileop
+@@ -180,7 +180,7 @@ linux:	iozone_linux.o libasync.o libbif.o fileop_linux.o pit_server.o
  #
  # GNU 'C' compiler Linux build for powerpc chip with threads, largefiles, async I/O 
  #
@@ -32,7 +36,7 @@
  	$(CC) -O3 $(LDFLAGS) iozone_linux-powerpc.o libasync.o \
  		libbif.o -lpthread  -lrt -o iozone
  	$(CC)  -O3 -Dlinux fileop_linux-ppc.o -o fileop
-@@ -184,7 +184,7 @@
+@@ -188,7 +188,7 @@ linux-powerpc: iozone_linux-powerpc.o  libbif.o libasync.o fileop_linux-ppc.o pi
  #
  # GNU 'C' compiler Linux build for sparc chip with threads, largefiles, async I/O 
  #
@@ -41,7 +45,7 @@
  	$(CC) -O3 $(LDFLAGS) iozone_linux-sparc.o libasync.o libbif.o \
  		-lpthread -lrt -o iozone
  	$(CC) -O3 -Dlinux fileop_linux.o -o fileop
-@@ -193,7 +193,7 @@
+@@ -197,7 +197,7 @@ linux-sparc: iozone_linux-sparc.o  libbif.o libasync.o fileop_linux.o pit_server
  #
  # GNU 'C' compiler Linux build with threads, largefiles, async I/O 
  #
@@ -50,7 +54,7 @@
  	$(CC) -O3 $(LDFLAGS) iozone_linux-ia64.o libbif.o libasync.o \
  		-lrt -lpthread -o iozone
  	$(CC)  -O3 -Dlinux fileop_linux-ia64.o -o fileop
-@@ -202,7 +202,7 @@
+@@ -206,7 +206,7 @@ linux-ia64:	iozone_linux-ia64.o  libbif.o libasync.o fileop_linux-ia64.o pit_ser
  #
  # GNU 'C' compiler Linux build for powerpc chip with threads, largefiles, async I/O 
  #
@@ -59,7 +63,7 @@
  	$(CC) -O3 -Dunix -DHAVE_ANSIC_C -DSHARED_MEM -DASYNC_IO \
  		-D_LARGEFILE64_SOURCE -Dlinux \
  		iozone_linux-powerpc64.o libasync.o libbif.o -lpthread \
-@@ -213,7 +213,7 @@
+@@ -217,7 +217,7 @@ linux-powerpc64: iozone_linux-powerpc64.o  libbif.o libasync.o fileop_linux-ppc6
  #
  # GNU 'C' compiler Linux build with threads, largefiles, async I/O
  #
@@ -68,7 +72,7 @@
  	$(CC) -O3 $(LDFLAGS) iozone_linux-arm.o libbif.o libasync.o \
  		-lrt -lpthread -o iozone
  	$(CC) -O3 -Dlinux fileop_linux-arm.o -o fileop
-@@ -222,7 +222,7 @@
+@@ -249,7 +249,7 @@ endif
  #
  # GNU 'C' compiler Linux build with threads, largefiles, async I/O 
  #
@@ -77,7 +81,7 @@
  	$(CC)  -O3 $(LDFLAGS) iozone_linux-AMD64.o libbif.o libasync.o \
  		-lrt -lpthread -o iozone
  	$(CC)  -O3 -Dlinux fileop_linux-AMD64.o -o fileop
-@@ -231,7 +231,7 @@
+@@ -258,7 +258,7 @@ linux-AMD64:	iozone_linux-AMD64.o  libbif.o libasync.o fileop_linux-AMD64.o pit_
  #
  # GNU 'C' compiler Linux build with S/390, threads, largfiles, async I/O
  #
@@ -86,7 +90,7 @@
  	$(CC)  -O2 $(LDFLAGS) -lpthread -lrt iozone_linux-s390.o \
  		libbif.o libasync.o -o iozone
  	$(CC)  -O3 -Dlinux fileop_linux-s390.o -o fileop
-@@ -240,7 +240,7 @@
+@@ -267,7 +267,7 @@ linux-S390:	iozone_linux-s390.o libbif.o libasync.o fileop_linux-s390.o pit_serv
  #
  # GNU 'C' compiler Linux build with S/390, threads, largfiles, async I/O
  #
@@ -95,3 +99,6 @@
  	$(CC)  -O2 $(LDFLAGS) -lpthread -lrt iozone_linux-s390x.o \
  		libbif.o libasync.o -o iozone
  	$(CC)  -O3 -Dlinux fileop_linux-s390x.o -o fileop
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_490.bb b/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_492.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_490.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_492.bb
index 1d2e53a..a68a27c 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_490.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_492.bb
@@ -11,8 +11,8 @@
     file://0001-let-system-headers-provide-pread64.patch \
     file://copyright.txt \
 "
-SRC_URI[md5sum] = "95cb73dfdd58a0dfa42804f016dbb83c"
-SRC_URI[sha256sum] = "5eadb4235ae2a956911204c50ebf2d8d8d59ddcd4a2841a1baf42f3145ad4fed"
+SRC_URI[md5sum] = "228f54482c01d1c04c571a9414cd20e5"
+SRC_URI[sha256sum] = "322981e168f32bd39f54772b82b2906d598d958c37e954e75742e71baf58bb9b"
 
 UPSTREAM_CHECK_REGEX = "iozone3_(?P<pver>\d+).tar"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench/0001-build-Do-not-override-ldflags-from-environment.patch b/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench/0001-build-Do-not-override-ldflags-from-environment.patch
new file mode 100644
index 0000000..060b418
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench/0001-build-Do-not-override-ldflags-from-environment.patch
@@ -0,0 +1,30 @@
+From 419dac71dd524a39ad2333e91334b4650e277a78 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 25 Jun 2021 09:43:00 -0700
+Subject: [PATCH] build: Do not override ldflags from environment
+
+bitbake passed LDFLAGS contain important information e.g. which compiler
+runtime to link etc. Therefore append -static to LDFLAGS instead
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index efda5c0..a867876 100644
+--- a/Makefile
++++ b/Makefile
+@@ -3,7 +3,7 @@ SRCS = $(sort $(wildcard *.c))
+ OBJS = $(SRCS:.c=.o)
+ 
+ CFLAGS = -Os -D_XOPEN_SOURCE=700
+-LDFLAGS = -static
++LDFLAGS += -static
+ LIBS = -lpthread -lrt -lpthread
+ 
+ 
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench_git.bb b/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench_git.bb
index e813894..f16bd99 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench_git.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench_git.bb
@@ -10,6 +10,7 @@
 PV = "20110206+git${SRCPV}"
 
 SRC_URI = "git://git.musl-libc.org/libc-bench \
+           file://0001-build-Do-not-override-ldflags-from-environment.patch \
            "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.5.0.bb b/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.5.1.bb
similarity index 81%
rename from meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.5.0.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.5.1.bb
index 1a04110..1628a05 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.5.1.bb
@@ -8,8 +8,8 @@
 SRC_URI = "http://pyropus.ca/software/memtester/old-versions/${BP}.tar.gz \
            file://Makefile.patch \
            "
-SRC_URI[md5sum] = "674a8a88ff54bdb229ca4148218a41f1"
-SRC_URI[sha256sum] = "8ed52b0d06d4aeb61954994146e2a5b2d20448a8f3ce3ee995120e6dbde2ae37"
+SRC_URI[md5sum] = "1bc22c01e987d6a67fac39dc5656a4d3"
+SRC_URI[sha256sum] = "1c5fc2382576c084b314cfd334d127a66c20bd63892cac9f445bc1d8b4ca5a47"
 
 do_compile () {
     echo '${CC} ${CFLAGS} -DPOSIX -c' > conf-cc
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/sysbench/sysbench/0001-Adding-volatile-modifier-to-tmp-variable-in-memory-t.patch b/meta-openembedded/meta-oe/recipes-benchmark/sysbench/sysbench/0001-Adding-volatile-modifier-to-tmp-variable-in-memory-t.patch
new file mode 100644
index 0000000..d628e81
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/sysbench/sysbench/0001-Adding-volatile-modifier-to-tmp-variable-in-memory-t.patch
@@ -0,0 +1,40 @@
+From c1ebf893e32a0a77e820484d48a903523fef7c1b Mon Sep 17 00:00:00 2001
+From: Vasily Tarasov <tarasov@vasily.name>
+Date: Fri, 10 Jun 2016 14:33:48 -0400
+Subject: [PATCH] Adding volatile modifier to tmp variable in memory test
+
+Issue explanation:
+
+./sysbench/sysbench --test=memory --num-threads=16 \
+		    --memory-block-size=268435456 \
+		    --memory-total-size=137438953472 \
+		    --memory-oper=read \
+		    --memory-access-mode=seq \
+		    --memory-scope=local run
+
+Without this commit the time to run the above command is 0.0004 seconds.
+With this commit the time is greater than 3 seconds.  Essentially,
+without the volatile modifier, the compiler optimizes read access so
+that no real access happens.
+
+Upstream-Status: Backport [part of v1.0.0 https://github.com/akopytov/sysbench/commit/8753cb93be4c0b81a20b704ced91e7a422da52b1]
+
+(cherry picked from commit 8753cb93be4c0b81a20b704ced91e7a422da52b1)
+Signed-off-by: massimo toscanelli <massimo.toscanelli@leica-geosystems.com>
+---
+ sysbench/tests/memory/sb_memory.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sysbench/tests/memory/sb_memory.c b/sysbench/tests/memory/sb_memory.c
+index 2e8998f..7d22bb9 100644
+--- a/sysbench/tests/memory/sb_memory.c
++++ b/sysbench/tests/memory/sb_memory.c
+@@ -244,7 +244,7 @@ sb_request_t memory_get_request(int tid)
+ int memory_execute_request(sb_request_t *sb_req, int thread_id)
+ {
+   sb_mem_request_t    *mem_req = &sb_req->u.mem_request;
+-  int                 tmp = 0;
++  volatile int        tmp = 0;
+   int                 idx; 
+   int                 *buf, *end;
+   log_msg_t           msg;
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/sysbench/sysbench_0.4.12.bb b/meta-openembedded/meta-oe/recipes-benchmark/sysbench/sysbench_0.4.12.bb
index 708c71f..d1725dd 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/sysbench/sysbench_0.4.12.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/sysbench/sysbench_0.4.12.bb
@@ -8,7 +8,9 @@
 
 # The project has moved from Sourceforge to Launchpad, to Github. Use the source tarball from
 # Launchpad until the next release is available from Github.
-SRC_URI = "https://launchpad.net/ubuntu/+archive/primary/+files/${BPN}_${PV}.orig.tar.gz"
+SRC_URI = "https://launchpad.net/ubuntu/+archive/primary/+files/${BPN}_${PV}.orig.tar.gz \
+           file://0001-Adding-volatile-modifier-to-tmp-variable-in-memory-t.patch \
+           "
 
 SRC_URI[md5sum] = "3a6d54fdd3fe002328e4458206392b9d"
 SRC_URI[sha256sum] = "83fa7464193e012c91254e595a89894d8e35b4a38324b52a5974777e3823ea9e"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-hwaccess-use-__asm__-as-is-done-elsewhere.patch b/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-hwaccess-use-__asm__-as-is-done-elsewhere.patch
new file mode 100644
index 0000000..f3316aa
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-hwaccess-use-__asm__-as-is-done-elsewhere.patch
@@ -0,0 +1,52 @@
+From 3334dd4e9fc34c79c3925c3c24869939d8955f21 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Sat, 18 Jul 2020 12:16:00 -0700
+Subject: [PATCH] hwaccess: use __asm__ as is done elsewhere
+
+Fixes compilation under powerpc platform. Made the change for the SPARC
+platform as well.
+
+../hwaccess.c: In function 'sync_primitive':
+../hwaccess.c:74:2: warning: implicit declaration of function 'asm'
+ [-Wimplicit-function-declaration]
+   74 |  asm("eieio" : : : "memory");
+      |  ^~~
+../hwaccess.c:74:13: error: expected ')' before ':' token
+   74 |  asm("eieio" : : : "memory");
+
+Upstream-Status: Submitted [https://github.com/flashrom/flashrom/pull/155]
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ hwaccess.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/hwaccess.c b/hwaccess.c
+index 48ccb34..2a39989 100644
+--- a/hwaccess.c
++++ b/hwaccess.c
+@@ -71,18 +71,18 @@ static inline void sync_primitive(void)
+  * See also https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/memory-barriers.txt
+  */
+ #if IS_PPC // cf. http://lxr.free-electrons.com/source/arch/powerpc/include/asm/barrier.h
+-	asm("eieio" : : : "memory");
++	__asm__ ("eieio" : : : "memory");
+ #elif IS_SPARC
+ #if defined(__sparc_v9__) || defined(__sparcv9)
+ 	/* Sparc V9 CPUs support three different memory orderings that range from x86-like TSO to PowerPC-like
+ 	 * RMO. The modes can be switched at runtime thus to make sure we maintain the right order of access we
+ 	 * use the strongest hardware memory barriers that exist on Sparc V9. */
+-	asm volatile ("membar #Sync" ::: "memory");
++	__asm__ volatile ("membar #Sync" ::: "memory");
+ #elif defined(__sparc_v8__) || defined(__sparcv8)
+ 	/* On SPARC V8 there is no RMO just PSO and that does not apply to I/O accesses... but if V8 code is run
+ 	 * on V9 CPUs it might apply... or not... we issue a write barrier anyway. That's the most suitable
+ 	 * operation in the V8 instruction set anyway. If you know better then please tell us. */
+-	asm volatile ("stbar");
++	__asm__ volatile ("stbar");
+ #else
+ 	#error Unknown and/or unsupported SPARC instruction set version detected.
+ #endif
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.2.bb b/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.2.bb
index 145a3ca..1d06132 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.2.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.2.bb
@@ -7,6 +7,7 @@
            file://0001-typecast-enum-conversions-explicitly.patch \
            file://meson-fixes.patch \
            file://0001-flashrom-Mark-RISCV-as-non-memory-mapped-I-O-archite.patch \
+           file://0001-hwaccess-use-__asm__-as-is-done-elsewhere.patch \
            "
 SRC_URI[md5sum] = "7f8e4b87087eb12ecee0fcc5445b4956"
 SRC_URI[sha256sum] = "e1f8d95881f5a4365dfe58776ce821dfcee0f138f75d0f44f8a3cd032d9ea42b"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.2.5.bb b/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.2.7.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.2.5.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.2.7.bb
index 271a668..f2a2a5f 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.2.5.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.2.7.bb
@@ -5,7 +5,7 @@
                     file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f \
                     "
 
-SRCREV = "ed307629e067a9ef55d79beec9c9f67b86efbaaf"
+SRCREV = "35c82812f2d6bb41686d49987e052b75e1836afd"
 
 SRC_URI = "git://github.com/cminyard/gensio;protocol=https;branch=2.2.x"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.14.bb b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.15.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.14.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.15.bb
index dbcc319..9a5256f 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.14.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.15.bb
@@ -8,7 +8,7 @@
 SRC_URI = "https://www.kernel.org/pub/linux/network/wireless/${BP}.tar.xz \
            file://0001-build-Use-abs_top_srcdir-instead-of-abs_srcdir-for-e.patch \
           "
-SRC_URI[sha256sum] = "21be6ad59ba666ba1e50e01889d647472b9b2f96f4941123db036fd33c257f0b"
+SRC_URI[sha256sum] = "a7ab8e80592da5cb1a8b651b6d41e87e4507a3f07e04246e05bca89c547af659"
 
 inherit autotools manpages pkgconfig python3native systemd
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.24.6.bb b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.24.8.bb
similarity index 81%
rename from meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.24.6.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.24.8.bb
index 6fe6a2e..6a8d240 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.24.6.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.24.8.bb
@@ -12,6 +12,4 @@
 inherit autotools pkgconfig bash-completion gobject-introspection
 
 SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "38d228548eae3ee144e19a42b028eab0"
-SRC_URI[sha256sum] = "760465caaa1ccd699c14290e9791da456d5300dd11ebf4c1486151033e875dfd"
+SRC_URI[sha256sum] = "02590736163fff10e5732191fccc1b9920969616ddc59613a003052a116a3c25"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.28.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.28.6.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.28.4.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.28.6.bb
index c6422c3..f062d86 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.28.4.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.28.6.bb
@@ -14,7 +14,7 @@
 
 SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz"
 
-SRC_URI[sha256sum] = "3b14cd2ab5221a7adbb39fed16ef697538ea1c79308821ad2d19b505e1daaea0"
+SRC_URI[sha256sum] = "cbb890893de1dee06ea5ebdac2d22f0469314a6f93f15f61f2f1206a1c9ae5fd"
 
 PACKAGECONFIG ??= "udev mbim"
 PACKAGECONFIG[udev] = ",--without-udev,libgudev"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.1.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.0.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.1.bb
index 89c98fe..685aebe 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.2.1.bb
@@ -1,12 +1,12 @@
 SUMMARY = "Canonical libwebsockets.org websocket library"
 HOMEPAGE = "https://libwebsockets.org/"
-LICENSE = "MIT & Zlib & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8c47b078124308a4e1354e8d59f606b7"
+LICENSE = "MIT & Zlib & BSD-3-Clause & Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c8bea43a2eb5d713c338819a0be07797"
 
 DEPENDS = "zlib"
 
 S = "${WORKDIR}/git"
-SRCREV = "1367c11e1ee44d9e19daa50e1d015365bae17354"
+SRCREV = "8a580b59b23d204ca72028370e97a8f6aa0c9202"
 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/linuxptp/linuxptp_3.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.1.bb
index c852726..a0f894a 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.1.bb
@@ -1,4 +1,5 @@
 DESCRIPTION = "Precision Time Protocol (PTP) according to IEEE standard 1588 for Linux"
+HOMEPAGE = "http://linuxptp.sourceforge.net/"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
@@ -7,17 +8,25 @@
            file://Use-cross-cpp-in-incdefs.patch \
            "
 
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/linuxptp/files/"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
+
 SRC_URI[md5sum] = "2264cb69c9af947028835c12c89a7572"
 SRC_URI[sha256sum] = "f58f5b11cf14dc7c4f7c9efdfb27190e43d02cf20c3525f6639edac10528ce7d"
 
-EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} EXTRA_CFLAGS='${CFLAGS}'"
+EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} EXTRA_CFLAGS='${CFLAGS}' mandir=${mandir}"
 
 export KBUILD_OUTPUT="${RECIPE_SYSROOT}"
 
-do_install () {
-    install -d ${D}/${bindir}
-    install -p ${S}/ptp4l  ${D}/${bindir}
-    install -p ${S}/pmc  ${D}/${bindir}
-    install -p ${S}/phc2sys  ${D}/${bindir}
-    install -p ${S}/hwstamp_ctl  ${D}/${bindir}
+do_install() {
+    oe_runmake install DESTDIR=${D} prefix=${prefix}
+
+    # Install example configs from source tree
+    install -d ${D}${docdir}/${PN}
+    cp -R --no-dereference --preserve=mode,links ${S}/configs ${D}${docdir}/${PN}
 }
+
+PACKAGES =+ "${PN}-configs"
+
+FILES_${PN}-configs = "${docdir}"
+FILES_${PN}-doc = "${mandir}"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.16.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.16.8.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.16.4.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.16.8.bb
index f8e8aa1..acfa113 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.16.4.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.16.8.bb
@@ -12,7 +12,7 @@
 DEPENDS = "glib-2.0 libgudev intltool-native libxslt-native"
 
 SRC_URI = "http://www.freedesktop.org/software/ModemManager/ModemManager-${PV}.tar.xz"
-SRC_URI[sha256sum] = "167e60b26fa05887f87a0b3fb54143d7845e6e4d8c2f2dd93afac059f41e7edf"
+SRC_URI[sha256sum] = "21fdfaf94171261ad9d99771894f5ade4bc39ef3d1ff1d421054d14713e97880"
 S = "${WORKDIR}/ModemManager-${PV}"
 
 PACKAGECONFIG ??= "mbim qmi \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.1.bb
index e6a4bc4..7558449 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.1.bb
@@ -11,7 +11,7 @@
 
 UPSTREAM_CHECK_URI = "https://github.com/zeromq/${BPN}/releases"
 
-inherit cmake
+inherit cmake pkgconfig
 
 PACKAGES = "lib${BPN} lib${BPN}-dev lib${BPN}-staticdev ${PN} ${PN}-dbg"
 
@@ -23,10 +23,12 @@
 RDEPENDS_lib${BPN}-dev = "zeromq-dev"
 
 PACKAGECONFIG ??= "lz4 uuid curl ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[lz4] = ",-DCMAKE_DISABLE_FIND_PACKAGE_lz4=TRUE,lz4"
-PACKAGECONFIG[uuid] = ",-DCMAKE_DISABLE_FIND_PACKAGE_uuid=TRUE,util-linux"
-PACKAGECONFIG[curl] = ",-DCMAKE_DISABLE_FIND_PACKAGE_libcurl=TRUE,curl"
-PACKAGECONFIG[systemd] = ",-DCMAKE_DISABLE_FIND_PACKAGE_systemd=TRUE,systemd"
+PACKAGECONFIG[curl] = "-DCZMQ_WITH_LIBCURL=ON,-DCZMQ_WITH_LIBCURL=OFF,curl"
+PACKAGECONFIG[httpd] = "-DCZMQ_WITH_LIBMICROHTTPD=ON,-DCZMQ_WITH_LIBMICROHTTPD=OFF,libmicrohttpd"
+PACKAGECONFIG[lz4] = "-DCZMQ_WITH_LZ4=ON,-DCZMQ_WITH_LZ4=OFF,lz4"
+PACKAGECONFIG[nss] = "-DCZMQ_WITH_NSS=ON,-DCZMQ_WITH_NSS=OFF,nss"
+PACKAGECONFIG[systemd] = "-DCZMQ_WITH_SYSTEMD=ON,-DCZMQ_WITH_SYSTEMD=OFF,systemd"
+PACKAGECONFIG[uuid] = "-DCZMQ_WITH_UUID=ON,-DCZMQ_WITH_UUID=OFF,util-linux"
 
 BBCLASSEXTEND = "nativesdk"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_28.bb b/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_29.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_28.bb
rename to meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_29.bb
index a35f5c6..8fcdb8c 100644
--- a/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_28.bb
+++ b/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_29.bb
@@ -7,15 +7,15 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=7b486c2338d225a1405d979ed2c15ce8"
 
 SRC_URI = "https://github.com/bus1/dbus-broker/releases/download/v${PV}/dbus-broker-${PV}.tar.xz"
-SRC_URI[sha256sum] = "abb8b54434faeeb6bf59a70ebf0732e851a50bd922995ba5928e8c28c18b05ea"
+SRC_URI[sha256sum] = "4eca425db52b7ab1027153e93fea9b3f11759db9e93ffbf88759b73ddfb8026a"
 
 UPSTREAM_CHECK_URI = "https://github.com/bus1/${BPN}/releases"
 
 inherit meson pkgconfig systemd features_check
 
 DEPENDS = "expat systemd"
-DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'libselinux', '', d)}"
-DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'audit', '', d)}"
+DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'libselinux (>= 3.2)', '', d)}"
+DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'audit (>= 3.0)', '', d)}"
 
 RDEPENDS_${PN} += "dbus-common"
 
@@ -29,5 +29,4 @@
 
 EXTRA_OEMESON += " -Dselinux=${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'true', 'false', d)}"
 EXTRA_OEMESON += " -Daudit=${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'true', 'false', d)}"
-EXTRA_OEMESON += " -Dlinux-4-17=true"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.62.0.bb b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.66.1.bb
similarity index 62%
rename from meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.62.0.bb
rename to meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.66.1.bb
index 75eea4e..a405611 100644
--- a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.62.0.bb
+++ b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.66.1.bb
@@ -6,23 +6,16 @@
                     file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
 
 DEPENDS = "mm-common glib-2.0 libsigc++-2.0 glib-2.0-native"
+
+GNOMEBASEBUILDCLASS = "meson"
+
 inherit gnomebase
 
 SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
 
-SRC_URI += " \
-    file://remove-examples.patch \
-"
-SRC_URI[archive.md5sum] = "7da228e3f0c6a10024b9a7708c53691e"
-SRC_URI[archive.sha256sum] = "36659f13cc73282392d1305858f3bbca46fbd1ce2f078cc9db8b9f79b2e93cfe"
+SRC_URI[archive.sha256sum] = "69bd6b5327716ca2f511ab580a969fd7bf0cd2c24ce15e1d0e530592d3ff209c"
 
 do_install_append() {
-    install -d ${D}${datadir}/glibmm-2.4
-    install -d ${D}${datadir}/aclocal
-
-    install -m 0644 glib/glibmmconfig.h ${D}${datadir}/glibmm-2.4/
-    install -m 0644 scripts/glibmm_check_perl.m4 ${D}${datadir}/aclocal/ || true
-
     for i in generate_wrap_init.pl gmmproc; do
         sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/glibmm-2.4/proc/$i
     done
@@ -32,4 +25,3 @@
 FILES_${PN}-dev += "${datadir}/glibmm-* ${libdir}/glibmm-2.4/include/ ${libdir}/glibmm-2.4/proc/ ${libdir}/giomm-2.4/include/"
 
 RDEPENDS_${PN}-dev = "perl"
-SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
diff --git a/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.6.bb b/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.7.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.6.bb
rename to meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.7.bb
index f4c5aa3..de1aa4e 100644
--- a/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.6.bb
+++ b/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.7.bb
@@ -6,7 +6,7 @@
 DEPENDS = "mm-common"
 
 SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.10/libsigc++-${PV}.tar.xz"
-SRC_URI[sha256sum] = "dda176dc4681bda9d5a2ac1bc55273bdd381662b7a6d49e918267d13e8774e1b"
+SRC_URI[sha256sum] = "d082a2ce72c750f66b1a415abe3e852df2eae1e8af53010f4ac2ea261a478832"
 
 S = "${WORKDIR}/libsigc++-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/opencl/opencl-clhpp_git.bb b/meta-openembedded/meta-oe/recipes-core/opencl/opencl-clhpp_git.bb
index 0148c0c..4ecfb3d 100644
--- a/meta-openembedded/meta-oe/recipes-core/opencl/opencl-clhpp_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/opencl/opencl-clhpp_git.bb
@@ -6,8 +6,8 @@
 LICENSE  = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-PV = "2.0.13+git${SRCPV}"
-SRCREV = "b230a96b61e9e35b8da1565893d74380646e03c8"
+PV = "2.0.15+git${SRCPV}"
+SRCREV = "f7237f3799009d856935e1eecfd7c9301fe522b4"
 
 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 d0665f2..6db7f1e 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
@@ -245,6 +245,7 @@
     lemon \
     flatbuffers \
     heaptrack \
+    libparse-yapp-perl \
     libubox \
     ltrace \
     lua \
@@ -355,6 +356,7 @@
     libleak \
     libuio \
     ${@bb.utils.contains("DISTRO_FEATURES", "x11", "libwmf", "", d)} \
+    libyang \
     lprng \
     ${@bb.utils.contains("DISTRO_FEATURES", "x11", "icewm", "", d)} \
     md5deep \
@@ -425,6 +427,7 @@
     wxwidgets \
     zlog \
     zstd \
+    zsync-curl \
     redis-plus-plus \
 "
 RDEPENDS_packagegroup-meta-oe-extended_append_libc-musl = " libexecinfo"
@@ -437,8 +440,8 @@
 RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc = "upm mraa minifi-cpp"
 RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc64 = "upm mraa minifi-cpp"
 RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc64le = "upm mraa"
-RDEPENDS_packagegroup-meta-oe-extended_remove_riscv64 = "upm libleak mraa sysdig tiptop"
-RDEPENDS_packagegroup-meta-oe-extended_remove_riscv32 = "upm libleak mraa sysdig tiptop"
+RDEPENDS_packagegroup-meta-oe-extended_remove_riscv64 = "upm libleak libyang mraa sysdig tiptop"
+RDEPENDS_packagegroup-meta-oe-extended_remove_riscv32 = "upm libleak libyang mraa sysdig tiptop"
 
 RDEPENDS_packagegroup-meta-oe-extended-python2 ="\
     ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", bb.utils.contains('I_SWEAR_TO_MIGRATE_TO_PYTHON3', 'yes', 'openlmi-tools', '', d), "", d)} \
@@ -933,6 +936,7 @@
     bats \
     cmocka \
     cppunit \
+    cpputest \
     cukinia \
     cunit \
     cxxtest \
diff --git a/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.4.bb b/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.5.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.4.bb
rename to meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.5.bb
index cc98b9e..90a0ad6 100644
--- a/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.4.bb
+++ b/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.5.bb
@@ -9,7 +9,7 @@
 
 SRC_URI = "http://www.landley.net/toybox/downloads/${BPN}-${PV}.tar.gz \
            "
-SRC_URI[sha256sum] = "cb2a565a8d30015d08d73628795dca51a85b99b149aeabbbecd9e8dbdbd8fddc"
+SRC_URI[sha256sum] = "bfd230c187726347f7e31a1fc5841705871dfe4f3cbc6628f512b54e57360949"
 
 SECTION = "base"
 
diff --git a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.5.bb b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.6.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.5.bb
rename to meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.6.bb
index 0da9a26..9e83b90 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.5.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.6.bb
@@ -16,13 +16,9 @@
     util-linux-libuuid \
 "
 
-RDEPENDS_${PN} = " \
-    libdevmapper \
-"
-
 SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}/${BP}.tar.xz"
-SRC_URI[md5sum] = "408620e0df577ec04108ec0bc2b91dee"
-SRC_URI[sha256sum] = "ced9946f444d132536daf92fc8aca4277638a3c2d96e20540b2bae4d36fd70c1"
+SRC_URI[md5sum] = "504d1ab22cbc4d1a59a8d8c7ee5ed3bf"
+SRC_URI[sha256sum] = "b296b7a21ea576c2b180611ccb19d06aec8dddaedf7c704b0c6a81210c25635f"
 
 inherit autotools gettext pkgconfig
 
@@ -71,14 +67,6 @@
 PACKAGECONFIG[nettle] = "--with-crypto_backend=nettle,,nettle"
 PACKAGECONFIG[luks2] = "--with-default-luks-format=LUKS2,--with-default-luks-format=LUKS1"
 
-RRECOMMENDS_${PN} = "kernel-module-aes-generic \
-                     kernel-module-dm-crypt \
-                     kernel-module-md5 \
-                     kernel-module-cbc \
-                     kernel-module-sha256-generic \
-                     kernel-module-xts \
-"
-
 EXTRA_OECONF = "--enable-static"
 # Building without largefile is not supported by upstream
 EXTRA_OECONF += "--enable-largefile"
@@ -89,4 +77,17 @@
 
 FILES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES','systemd','${exec_prefix}/lib/tmpfiles.d/cryptsetup.conf', '', d)}"
 
+RDEPENDS_${PN} = " \
+    libdevmapper \
+"
+
+RRECOMMENDS_${PN}_class-target = " \
+    kernel-module-aes-generic \
+    kernel-module-dm-crypt \
+    kernel-module-md5 \
+    kernel-module-cbc \
+    kernel-module-sha256-generic \
+    kernel-module-xts \
+"
+
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-crypto/fsverity-utils/fsverity-utils_1.3.bb b/meta-openembedded/meta-oe/recipes-crypto/fsverity-utils/fsverity-utils_1.4.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-crypto/fsverity-utils/fsverity-utils_1.3.bb
rename to meta-openembedded/meta-oe/recipes-crypto/fsverity-utils/fsverity-utils_1.4.bb
index 9b1ba4f..a39aeb6 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/fsverity-utils/fsverity-utils_1.3.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/fsverity-utils/fsverity-utils_1.4.bb
@@ -9,7 +9,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=bc974d217b525ea216a336adb73e1220"
 
-SRCREV = "a92b1a54b003879322c044adf0ae3ea3e95e7348"
+SRCREV = "9e082897d61a2449657651aa5a0931aca31428fd"
 SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/fsverity-utils.git"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.5.10.bb b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.5.11.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.5.10.bb
rename to meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.5.11.bb
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
index 25e630a..5787ae4 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
@@ -12,7 +12,6 @@
            file://mysql-systemd-start \
            file://configure.cmake-fix-valgrind.patch \
            file://support-files-CMakeLists.txt-fix-do_populate_sysroot.patch \
-           file://sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
            file://0001-disable-ucontext-on-musl.patch \
            file://c11_atomics.patch \
            file://clang_version_header_conflict.patch \
@@ -21,12 +20,12 @@
            file://0001-innobase-Define-__NR_futex-if-it-does-not-exist.patch \
            file://0001-aio_linux-Check-if-syscall-exists-before-using-it.patch \
            file://sys_futex.patch \
-           file://cross-compiling.patch \
            file://ssize_t.patch \
+           file://mm_malloc.patch \
           "
 SRC_URI_append_libc-musl = " file://ppc-remove-glibc-dep.patch"
 
-SRC_URI[sha256sum] = "a5ff32f9fcaaf26bf5cba94accc7b246d2d5eb75710d027e40122df6bac0babb"
+SRC_URI[sha256sum] = "761053605fe30ce393f324852117990350840a93b3e6305ef4d2f8c8305cc47a"
 
 UPSTREAM_CHECK_URI = "https://github.com/MariaDB/server/releases"
 
@@ -37,15 +36,15 @@
 inherit cmake gettext binconfig update-rc.d useradd systemd multilib_script
 
 MULTILIB_SCRIPTS = "${PN}-server:${bindir}/mariadbd-safe \
-                    ${PN}-server:${bindir}/mariadb-install-db"
+                    ${PN}-setupdb:${bindir}/mariadb-install-db"
 
 INITSCRIPT_PACKAGES = "${PN}-server ${PN}-setupdb"
 INITSCRIPT_NAME_${PN}-server = "mysqld"
 INITSCRIPT_PARAMS_${PN}-server ?= "start 45 5 . stop 45 0 6 1 ."
 
-USERADD_PACKAGES = "${PN}-server"
-USERADD_PARAM_${PN}-server = "--system --home-dir /var/mysql -g mysql --shell /bin/false mysql"
-GROUPADD_PARAM_${PN}-server = "--system mysql"
+USERADD_PACKAGES = "${PN}-setupdb"
+USERADD_PARAM_${PN}-setupdb = "--system --home-dir /var/mysql -g mysql --shell /bin/false mysql"
+GROUPADD_PARAM_${PN}-setupdb = "--system mysql"
 
 INITSCRIPT_NAME_${PN}-setupdb = "install_db"
 INITSCRIPT_PARAMS_${PN}-setupdb ?= "defaults 44 44"
@@ -57,16 +56,18 @@
 SYSTEMD_SERVICE_${PN}-setupdb = "install_db.service"
 SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
 ALLOW_EMPTY_${PN}-setupdb ?= "1"
-FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
+FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db \
+                       ${bindir}/mariadb-install-db \
+                       ${bindir}/my_print_defaults \
+                       ${bindir}/mysql_install_db \
+                       ${bindir}/mysql-systemd-start \
+                       "
 
-EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} setupdb"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
 PACKAGECONFIG_class-native = ""
 PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
 PACKAGECONFIG[valgrind] = "-DWITH_VALGRIND=TRUE,-DWITH_VALGRIND=FALSE,valgrind"
 PACKAGECONFIG[krb5] = ", ,krb5"
-PACKAGECONFIG[setupdb] = ", ,,${PN}-setupdb"
 PACKAGECONFIG[zstd] = "-DWITH_ROCKSDB_ZSTD=ON,-DWITH_ROCKSDB_ZSTD=OFF,zstd"
 
 # MariaDB doesn't link properly with gold
@@ -94,6 +95,8 @@
                  -DCAT_EXECUTABLE=`which cat` \
                  -DCMAKE_AR:FILEPATH=${AR}"
 
+EXTRA_OECMAKE_prepend_class-target = "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper "
+
 # With Ninja it fails with:
 # make: *** No rule to make target `install'.  Stop.
 OECMAKE_GENERATOR = "Unix Makefiles"
@@ -116,12 +119,18 @@
     sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
 }
 
-do_compile_prepend_class-target () {
-    # These need to be in-tree or make will think they need to be built,
-    # and since we're cross-compiling that is disabled
-    cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
-    cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
+do_configure_prepend_class-target () {
+	# Write out a qemu wrapper that will be used by cmake
+	# so that it can run target helper binaries through that.
+	qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
+	cat > ${WORKDIR}/qemuwrapper << EOF
+#!/bin/sh
+$qemu_binary "\$@"
+EOF
+	chmod +x ${WORKDIR}/qemuwrapper
+}
 
+do_compile_prepend_class-target () {
     if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
         if ! [ -e ${B}/include/openssl/kssl.h ] ; then
             mkdir -p ${B}/include/openssl
@@ -131,11 +140,6 @@
             echo "#endif" >>${B}/include/openssl/kssl.h
         fi
     fi
-    # workaround to handle out-of-source build from source package
-    yacc_files="sql_yacc.hh sql_yacc.cc sql_yacc_ora.hh sql_yacc_ora.cc"
-    for yacc_file in ${yacc_files}; do
-        cp ${S}/sql/${yacc_file} ${B}/sql/${yacc_file}
-    done
 }
 
 SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
@@ -185,10 +189,10 @@
     fi
 }
 
-PACKAGES = "${PN}-dbg ${PN} \
+PACKAGES = "${PN}-dbg ${PN}-setupdb ${PN} \
     libmysqlclient-r libmysqlclient-r-dev libmysqlclient-r-staticdev \
     libmysqlclient libmysqlclient-dev libmysqlclient-staticdev \
-    libmysqld libmysqld-dev ${PN}-client ${PN}-server ${PN}-setupdb ${PN}-leftovers"
+    libmysqld libmysqld-dev ${PN}-client ${PN}-server ${PN}-leftovers"
 CONFFILES_${PN}-server += "${sysconfdir}/my.cnf ${sysconfdir}/my.cnf.d/server.cnf"
 CONFFILES_${PN}-client += "${sysconfdir}/my.cnf.d/mysql-clients.cnf"
 CONFFILES_libmysqlclient += "${sysconfdir}/my.cnf.d/client.cnf"
@@ -291,7 +295,6 @@
     ${bindir}/mysql_convert_table_format \
     ${bindir}/mariadb-convert-table-format \
     ${bindir}/mysql_install_db \
-    ${bindir}/mariadb-install-db \
     ${bindir}/mysql_secure_installation \
     ${bindir}/mariadb-secure-installation \
     ${bindir}/mysql_setpermission \
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
deleted file mode 100644
index 0f4815b..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/cross-compiling.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-This is not needed for OE builds
-
-building failed since native does not generate import_executables.cmake
-In fact, our building system will export the needed commands
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -392,11 +392,6 @@ CHECK_PCRE()
- 
- CHECK_SYSTEMD()
- 
--IF(CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
--  SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build")
--  INCLUDE(${IMPORT_EXECUTABLES})
--ENDIF()
--
- #
- # Setup maintainer mode options. Platform checks are
- # not run with the warning options as to not perturb fragile checks
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mm_malloc.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mm_malloc.patch
new file mode 100644
index 0000000..347fcd8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mm_malloc.patch
@@ -0,0 +1,11 @@
+--- a/storage/rocksdb/rocksdb/port/jemalloc_helper.h
++++ b/storage/rocksdb/rocksdb/port/jemalloc_helper.h
+@@ -5,7 +5,7 @@
+ 
+ #pragma once
+ 
+-#if defined(__clang__)
++#if defined(__clang__) && defined(__GLIBC__)
+ // glibc's `posix_memalign()` declaration specifies `throw()` while clang's
+ // declaration does not. There is a hack in clang to make its re-declaration
+ // compatible with glibc's if they are declared consecutively. That hack breaks
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/ppc-remove-glibc-dep.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/ppc-remove-glibc-dep.patch
index d082d42..d6e53c2 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/ppc-remove-glibc-dep.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/ppc-remove-glibc-dep.patch
@@ -36,7 +36,7 @@
 +  __builtin_ppc_get_timebase();
  #elif defined __GNUC__ && (defined __arm__ || defined __aarch64__)
    /* Mainly, prevent the compiler from optimizing away delay loops */
-   __asm__ __volatile__ ("isb":::"memory");
+ #ifdef _aarch64_
 --- a/storage/tokudb/PerconaFT/portability/toku_time.h
 +++ b/storage/tokudb/PerconaFT/portability/toku_time.h
 @@ -124,7 +124,7 @@ static inline tokutime_t toku_time_now(v
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
deleted file mode 100644
index 4cb0443..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From cfce1491827e5a581878b5e166bf4d30e6d90e07 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Thu, 23 Jul 2020 00:08:16 -0700
-Subject: [PATCH] sql/CMakeLists.txt: fix gen_lex_hash not found
-
-Fix the below do_compile issue in cross-compiling env.
-| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_hash', needed by 'sql/lex_hash.h'.  Stop.
-| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_token', needed by 'sql/lex_token.h'.  Stop.
-
-Upstream-Status: Inappropriate [oe build specific]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- sql/CMakeLists.txt | 30 ++++++++++++++++++++----------
- 1 file changed, 20 insertions(+), 10 deletions(-)
-
-diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
-index 0dc3caa..616017b 100644
---- a/sql/CMakeLists.txt
-+++ b/sql/CMakeLists.txt
-@@ -52,11 +52,16 @@ ${CMAKE_BINARY_DIR}/sql
- ${CMAKE_SOURCE_DIR}/tpool
- )
- 
--ADD_CUSTOM_COMMAND(
--  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
--  COMMAND gen_lex_token > lex_token.h
--  DEPENDS gen_lex_token
--)
-+IF(NOT CMAKE_CROSSCOMPILING)
-+  ADD_CUSTOM_COMMAND(
-+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
-+   COMMAND gen_lex_token > lex_token.h
-+   DEPENDS gen_lex_token)
-+ELSE()
-+  ADD_CUSTOM_COMMAND(
-+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
-+   COMMAND gen_lex_token > lex_token.h)
-+ENDIF()
- 
- ADD_CUSTOM_COMMAND(
-   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.yy
-@@ -345,11 +350,16 @@ IF(NOT CMAKE_CROSSCOMPILING)
-   ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
- ENDIF()
- 
--ADD_CUSTOM_COMMAND(
--  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
--  COMMAND gen_lex_hash > lex_hash.h
--  DEPENDS gen_lex_hash
--)
-+IF(NOT CMAKE_CROSSCOMPILING)
-+  ADD_CUSTOM_COMMAND(
-+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
-+   COMMAND gen_lex_hash > lex_hash.h
-+   DEPENDS gen_lex_hash)
-+ELSE()
-+  ADD_CUSTOM_COMMAND(
-+   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
-+   COMMAND gen_lex_hash > lex_hash.h)
-+ENDIF()
- 
- MYSQL_ADD_EXECUTABLE(mariadb-tzinfo-to-sql tztime.cc COMPONENT Server)
- SET_TARGET_PROPERTIES(mariadb-tzinfo-to-sql PROPERTIES COMPILE_FLAGS "-DTZINFO2SQL")
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.5.11.bb
similarity index 80%
rename from meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
rename to meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.5.11.bb
index 8ae8241..57d7736 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.5.10.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.5.11.bb
@@ -1,8 +1,8 @@
 require mariadb.inc
 
-EXTRA_OECMAKE += "-DSTACK_DIRECTION=-1"
+inherit qemu
 
-DEPENDS += "mariadb-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
+DEPENDS += "qemu-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
 
 PROVIDES += "mysql5 libmysqlclient"
 
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch
index eb9928a..8bdd27f 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch
@@ -25,11 +25,9 @@
  2 files changed, 74 insertions(+)
  create mode 100644 cmake/modules/CheckAtomic.cmake
 
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index f9c8f3346..4d604004b 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -852,7 +852,12 @@ endif()
+@@ -935,7 +935,12 @@ endif()
  if(WIN32)
    set(SYSTEM_LIBS ${SYSTEM_LIBS} shlwapi.lib rpcrt4.lib)
  else()
@@ -41,10 +39,7 @@
 +  endif()
  endif()
  
- add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES})
-diff --git a/cmake/modules/CheckAtomic.cmake b/cmake/modules/CheckAtomic.cmake
-new file mode 100644
-index 000000000..8b7dc8a37
+ add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES} ${BUILD_VERSION_CC})
 --- /dev/null
 +++ b/cmake/modules/CheckAtomic.cmake
 @@ -0,0 +1,69 @@
@@ -117,6 +112,3 @@
 +  endif()
 +endif()
 +
--- 
-2.28.0
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Use-exported-target-for-bz2.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Use-exported-target-for-bz2.patch
index 57433b0..d305475 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Use-exported-target-for-bz2.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Use-exported-target-for-bz2.patch
@@ -11,8 +11,6 @@
  CMakeLists.txt | 9 ++-------
  1 file changed, 2 insertions(+), 7 deletions(-)
 
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 676192913..801586c30 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
 @@ -32,7 +32,7 @@
@@ -24,7 +22,7 @@
  
  list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/modules/")
  include(ReadVersion)
-@@ -148,12 +148,7 @@ else()
+@@ -152,12 +152,7 @@ else()
    if(WITH_BZ2)
      find_package(BZip2 REQUIRED)
      add_definitions(-DBZIP2)
@@ -38,6 +36,3 @@
    endif()
  
    if(WITH_LZ4)
--- 
-2.28.0
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-folly-Use-SYS_futex-for-syscall.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-folly-Use-SYS_futex-for-syscall.patch
index aa291da..9c70d4f 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-folly-Use-SYS_futex-for-syscall.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-folly-Use-SYS_futex-for-syscall.patch
@@ -12,8 +12,6 @@
  third-party/folly/folly/detail/Futex.cpp | 10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)
 
-diff --git a/third-party/folly/folly/detail/Futex.cpp b/third-party/folly/folly/detail/Futex.cpp
-index 62d6ea2b2..a914a8c73 100644
 --- a/third-party/folly/folly/detail/Futex.cpp
 +++ b/third-party/folly/folly/detail/Futex.cpp
 @@ -48,9 +48,15 @@ namespace {
@@ -42,6 +40,3 @@
        addr, /* addr1 */
        op, /* op */
        expected, /* val */
--- 
-2.29.2
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-jemalloc_helper-Limit-the-mm_malloc.h-hack-to-glibc-.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-jemalloc_helper-Limit-the-mm_malloc.h-hack-to-glibc-.patch
new file mode 100644
index 0000000..dbb0dda
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-jemalloc_helper-Limit-the-mm_malloc.h-hack-to-glibc-.patch
@@ -0,0 +1,23 @@
+From 1a69d4cc3f97e348dba9714c7ec60da1a8650664 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 15 Jun 2021 22:05:36 -0700
+Subject: [PATCH] jemalloc_helper: Limit the mm_malloc.h hack to glibc on linux
+
+Musl does not need this hack
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ port/jemalloc_helper.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/port/jemalloc_helper.h
++++ b/port/jemalloc_helper.h
+@@ -5,7 +5,7 @@
+ 
+ #pragma once
+ 
+-#if defined(__clang__)
++#if defined(__clang__) && defined(__GLIBC__)
+ // glibc's `posix_memalign()` declaration specifies `throw()` while clang's
+ // declaration does not. There is a hack in clang to make its re-declaration
+ // compatible with glibc's if they are declared consecutively. That hack breaks
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-range_tree-Implement-toku_time_now-for-rv32-rv64-in-.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-range_tree-Implement-toku_time_now-for-rv32-rv64-in-.patch
new file mode 100644
index 0000000..86c1bff
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-range_tree-Implement-toku_time_now-for-rv32-rv64-in-.patch
@@ -0,0 +1,44 @@
+From 89c032a9b4011385c0b504ea61e5df0db71f0ff5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 16 Jun 2021 19:06:02 -0700
+Subject: [PATCH] range_tree: Implement toku_time_now for rv32/rv64 in asm
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../range_tree/lib/portability/toku_time.h    | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+index 4425a4a2e..4ac964f85 100644
+--- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
++++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+@@ -133,6 +133,25 @@ static inline tokutime_t toku_time_now(void) {
+   return result;
+ #elif defined(__powerpc__)
+   return __ppc_get_timebase();
++#elif defined(__riscv) // RISC-V
++#if __riscv_xlen == 32
++  uint32_t lo, hi0, hi1;
++  __asm __volatile__(
++      "rdcycleh %0\n"
++      "rdcycle %1\n"
++      "rdcycleh %2\n"
++      "sub %0, %0, %2\n"
++      "seqz %0, %0\n"
++      "sub %0, zero, %0\n"
++      "and %1, %1, %0\n"
++      : "=r"(hi0), "=r"(lo), "=r"(hi1));
++  return ((uint64_t)hi1 << 32) | lo;
++#else
++  uint64_t result;
++  __asm __volatile__("rdcycle %0" : "=r"(result));
++  return result;
++#endif
++
+ #else
+ #error No timer implementation for this platform
+ #endif
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch
new file mode 100644
index 0000000..4aa91d9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch
@@ -0,0 +1,59 @@
+From 114c42fba3fc86119710e8dd1bb2b7a9e39e3064 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 17 Jun 2021 19:35:01 -0700
+Subject: [PATCH] replace old sync with new atomic builtin equivalents
+
+Helps compiling with gcc on newer arches e.g. riscv32 where these
+__sync* builtins are not implemented atleast for 64bit values
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../range/range_tree/lib/portability/toku_atomic.h   | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h
++++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h
+@@ -77,37 +77,37 @@ template <typename T, typename U>
+ __attribute__((always_inline)) static inline T toku_sync_fetch_and_add(T *addr,
+                                                                        U diff) {
+   paranoid_invariant(!crosses_boundary(addr, sizeof *addr));
+-  return __sync_fetch_and_add(addr, diff);
++  return __atomic_fetch_add(addr, diff, 5);
+ }
+ template <typename T, typename U>
+ __attribute__((always_inline)) static inline T toku_sync_add_and_fetch(T *addr,
+                                                                        U diff) {
+   paranoid_invariant(!crosses_boundary(addr, sizeof *addr));
+-  return __sync_add_and_fetch(addr, diff);
++  return __atomic_add_fetch(addr, diff, 5);
+ }
+ template <typename T, typename U>
+ __attribute__((always_inline)) static inline T toku_sync_fetch_and_sub(T *addr,
+                                                                        U diff) {
+   paranoid_invariant(!crosses_boundary(addr, sizeof *addr));
+-  return __sync_fetch_and_sub(addr, diff);
++  return __atomic_fetch_sub(addr, diff, 5);
+ }
+ template <typename T, typename U>
+ __attribute__((always_inline)) static inline T toku_sync_sub_and_fetch(T *addr,
+                                                                        U diff) {
+   paranoid_invariant(!crosses_boundary(addr, sizeof *addr));
+-  return __sync_sub_and_fetch(addr, diff);
++  return __atomic_sub_fetch(addr, diff, 5);
+ }
+ template <typename T, typename U, typename V>
+ __attribute__((always_inline)) static inline T toku_sync_val_compare_and_swap(
+     T *addr, U oldval, V newval) {
+   paranoid_invariant(!crosses_boundary(addr, sizeof *addr));
+-  return __sync_val_compare_and_swap(addr, oldval, newval);
++  return __atomic_compare_exchange(addr, oldval, newval);
+ }
+ template <typename T, typename U, typename V>
+ __attribute__((always_inline)) static inline bool
+ toku_sync_bool_compare_and_swap(T *addr, U oldval, V newval) {
+   paranoid_invariant(!crosses_boundary(addr, sizeof *addr));
+-  return __sync_bool_compare_and_swap(addr, oldval, newval);
++  return static_cast<bool>(__atomic_compare_exchange(addr, oldval, newval));
+ }
+ 
+ // in case you include this but not toku_portability.h
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/arm.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/arm.patch
new file mode 100644
index 0000000..d428a66
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/arm.patch
@@ -0,0 +1,26 @@
+implement timer for arm >= v6
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
++++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+@@ -161,6 +161,20 @@ static inline tokutime_t toku_time_now(v
+   struct timeval tv;
+   gettimeofday(&tv, nullptr);
+   return (uint64_t)tv.tv_sec * 1000000 + tv.tv_usec;
++#elif (__ARM_ARCH >= 6)
++  uint32_t pmccntr;
++  uint32_t pmuseren;
++  uint32_t pmcntenset;
++  // Read the user mode perf monitor counter access permissions.
++  asm volatile("mrc p15, 0, %0, c9, c14, 0" : "=r"(pmuseren));
++  if (pmuseren & 1) {  // Allows reading perfmon counters for user mode code.
++    asm volatile("mrc p15, 0, %0, c9, c12, 1" : "=r"(pmcntenset));
++    if (pmcntenset & 0x80000000ul) {  // Is it counting?
++      asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(pmccntr));
++      // The counter is set up to count every 64th cycle
++      return (uint64_t)pmccntr * 64;  // Should optimize to << 6
++    }
++  }
+ #else
+ #error No timer implementation for this platform
+ #endif
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/mips.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/mips.patch
new file mode 100644
index 0000000..db2305d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/mips.patch
@@ -0,0 +1,19 @@
+implement timer implementation for mips platform
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
++++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+@@ -155,7 +155,12 @@ static inline tokutime_t toku_time_now(v
+   __asm __volatile__("rdcycle %0" : "=r"(result));
+   return result;
+ #endif
+-
++#elif defined(__mips__)
++  // mips apparently only allows rdtsc for superusers, so we fall
++  // back to gettimeofday.  It's possible clock_gettime would be better.
++  struct timeval tv;
++  gettimeofday(&tv, nullptr);
++  return (uint64_t)tv.tv_sec * 1000000 + tv.tv_usec;
+ #else
+ #error No timer implementation for this platform
+ #endif
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/ppc64.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/ppc64.patch
new file mode 100644
index 0000000..bc40f1b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/ppc64.patch
@@ -0,0 +1,28 @@
+implement support for musl/ppc64
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
++++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+@@ -58,7 +58,7 @@ Copyright (c) 2006, 2015, Percona and/or
+ #include <stdint.h>
+ #include <sys/time.h>
+ #include <time.h>
+-#if defined(__powerpc__)
++#if defined(__powerpc__) && defined(__GLIBC__)
+ #include <sys/platform/ppc.h>
+ #endif
+ 
+@@ -131,8 +131,12 @@ static inline tokutime_t toku_time_now(v
+   uint64_t result;
+   __asm __volatile__("mrs %[rt], cntvct_el0" : [ rt ] "=r"(result));
+   return result;
+-#elif defined(__powerpc__)
++#elif defined(__powerpc__) && defined(__GLIBC__)
+   return __ppc_get_timebase();
++#elif defined(__powerpc64__) || defined(__ppc64__)
++  uint64_t result;
++  asm volatile("mfspr %0, 268" : "=r"(result));
++  return result;
+ #elif defined(__riscv) // RISC-V
+ #if __riscv_xlen == 32
+   uint32_t lo, hi0, hi1;
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_6.15.5.bb b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_6.20.3.bb
similarity index 71%
rename from meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_6.15.5.bb
rename to meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_6.20.3.bb
index acef05b..c89d5d4 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_6.15.5.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_6.20.3.bb
@@ -6,15 +6,24 @@
                     file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://LICENSE.leveldb;md5=fb04ff57a14f308f2eed4a9b87d45837"
 
-SRCREV = "abd4b1ff1504ae2a7ed6e60bc9c9797b880c33a5"
-SRCBRANCH = "6.15.fb"
+SRCREV = "8608d75d85f8e1b3b64b73a4fb6d19baec61ba5c"
+SRCBRANCH = "6.20.fb"
 
 SRC_URI = "git://github.com/facebook/${BPN}.git;branch=${SRCBRANCH} \
            file://0001-cmake-Add-check-for-atomic-support.patch \
            file://0001-cmake-Use-exported-target-for-bz2.patch \
            file://0001-folly-Use-SYS_futex-for-syscall.patch \
+           file://0001-jemalloc_helper-Limit-the-mm_malloc.h-hack-to-glibc-.patch \
+           file://0001-range_tree-Implement-toku_time_now-for-rv32-rv64-in-.patch \
+           file://ppc64.patch \
+           file://mips.patch \
+           file://arm.patch \
           "
 
+SRC_URI_append_riscv32 = " file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
+SRC_URI_append_mips = " file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
+SRC_URI_remove_toolchain-clang_riscv32 = "file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
+
 S = "${WORKDIR}/git"
 
 inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Export-of-internal-Abseil-changes.patch b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Export-of-internal-Abseil-changes.patch
index 52d4f42..126b792 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Export-of-internal-Abseil-changes.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Export-of-internal-Abseil-changes.patch
@@ -1,6 +1,6 @@
-From a9831f1cbf93fb18dd951453635f488037454ce9 Mon Sep 17 00:00:00 2001
-From: Abseil Team <absl-team@google.com>
-Date: Mon, 3 May 2021 07:37:39 -0700
+From c9250af98f48e4aa734cab0e2f5ae1f780c05ad0 Mon Sep 17 00:00:00 2001
+From: Zang Ruochen <zangrc.fnst@fujitsu.com>
+Date: Fri, 11 Jun 2021 10:53:37 +0900
 Subject: [PATCH] Export of internal Abseil changes
 
 --
@@ -27,15 +27,16 @@
 PiperOrigin-RevId: 371403419
 GitOrigin-RevId: cf88f9cf40eab54c06bca7f20795352ec23bb583
 Change-Id: I4360a18c638a4d901ff44ab1e0a9d8f321c302ea
+
+Signed-off-by: Zang Ruochen <zangrc.fnst@fujitsu.com>
 ---
  CMake/AbseilHelpers.cmake                        | 3 ++-
- absl/debugging/failure_signal_handler.cc         | 3 ++-
  absl/strings/internal/str_format/arg.h           | 8 ++++++++
  absl/strings/internal/str_format/convert_test.cc | 3 +++
- 4 files changed, 15 insertions(+), 2 deletions(-)
+ 3 files changed, 13 insertions(+), 1 deletion(-)
 
 diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
-index 1f754392..1a80b5b4 100644
+index 54fb8df3..a32b94d5 100644
 --- a/CMake/AbseilHelpers.cmake
 +++ b/CMake/AbseilHelpers.cmake
 @@ -141,7 +141,8 @@ function(absl_cc_library)
@@ -48,20 +49,6 @@
      if(NOT ABSL_CC_LIB_TESTONLY)
        if(absl_VERSION)
          set(PC_VERSION "${absl_VERSION}")
-diff --git a/absl/debugging/failure_signal_handler.cc b/absl/debugging/failure_signal_handler.cc
-index e458a795..689e5979 100644
---- a/absl/debugging/failure_signal_handler.cc
-+++ b/absl/debugging/failure_signal_handler.cc
-@@ -136,7 +136,8 @@ static bool SetupAlternateStackOnce() {
- #else
-   const size_t page_mask = sysconf(_SC_PAGESIZE) - 1;
- #endif
--  size_t stack_size = (std::max(SIGSTKSZ, 65536) + page_mask) & ~page_mask;
-+  size_t stack_size =
-+      (std::max<size_t>(SIGSTKSZ, 65536) + page_mask) & ~page_mask;
- #if defined(ABSL_HAVE_ADDRESS_SANITIZER) || \
-     defined(ABSL_HAVE_MEMORY_SANITIZER) || defined(ABSL_HAVE_THREAD_SANITIZER)
-   // Account for sanitizer instrumentation requiring additional stack space.
 diff --git a/absl/strings/internal/str_format/arg.h b/absl/strings/internal/str_format/arg.h
 index 7040c866..3c91be70 100644
 --- a/absl/strings/internal/str_format/arg.h
@@ -96,5 +83,5 @@
  
  TEST_F(FormatConvertTest, NullString) {
 -- 
-2.31.1
+2.25.1
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
index 01dd9f5..3f89df5 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
@@ -7,8 +7,8 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
 
-PV = "20210324+git${SRCPV}"
-SRCREV = "e1d388e7e74803050423d035e4374131b9b57919"
+PV = "20210324.2+git${SRCPV}"
+SRCREV = "278e0a071885a22dcd2fd1b5576cc44757299343"
 BRANCH = "lts_2021_03_24"
 SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH}         \
            file://0001-absl-always-use-asm-sgidefs.h.patch             \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace_10.0.bb b/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace_10.0.bb
index 616d56d..e42b891 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace_10.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/apitrace/apitrace_10.0.bb
@@ -5,9 +5,9 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=aeb969185a143c3c25130bc2c3ef9a50 \
                     file://thirdparty/snappy/COPYING;md5=f62f3080324a97b3159a7a7e61812d0c"
 
-SRCREV = "03e4e9d2cab4f1a61d3f589785641a73dff027c5"
-SRC_URI = "git://github.com/${BPN}/${BPN}.git \
-           file://0001-libbacktrace-include-config.h.patch \
+SRCREV = "9d42f667e2a36a6624d92b9bd697de097cc4e619"
+PV .= "+10.0.1+git${SRCPV}"
+SRC_URI = "gitsm://github.com/${BPN}/${BPN}.git \
           "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210502.0.bb b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210711.0.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210502.0.bb
rename to meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210711.0.bb
index 273d6e5..4be634b 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210502.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20210711.0.bb
@@ -14,7 +14,7 @@
 
 inherit autotools-brokensep pkgconfig manpages
 
-SRCREV = "6df08b82d4845d1b9420d9268f24d5db16ee4480"
+SRCREV = "c81079788bfe650190db8ac9df80d63d2bc160aa"
 SRC_URI = "git://github.com/universal-ctags/ctags"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap/0001-do-not-hardcode-the-full-path-of-dpkg.patch b/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap/0001-do-not-hardcode-the-full-path-of-dpkg.patch
new file mode 100644
index 0000000..2a5f233
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap/0001-do-not-hardcode-the-full-path-of-dpkg.patch
@@ -0,0 +1,33 @@
+From e735fb23f46f0c3c7a1144ba6b4050bfc0015a05 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 2 Jun 2021 13:34:35 +0800
+Subject: [PATCH] do not hardcode the full path of dpkg
+
+While calling debootstrap in sdk, if host does not install dpkg package,
+the full path calling will fail
+
+Do not hardcode the full path of dpkg, then then sdk's dpkg will be used.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ debootstrap | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/debootstrap b/debootstrap
+index a3cf3af..5e96c3e 100755
+--- a/debootstrap
++++ b/debootstrap
+@@ -538,7 +538,7 @@ fi
+ 
+ if in_path dpkg && \
+      dpkg --print-architecture >/dev/null 2>&1; then
+-	HOST_ARCH=$(/usr/bin/dpkg --print-architecture)
++	HOST_ARCH=$(dpkg --print-architecture)
+ elif in_path udpkg && \
+      udpkg --print-architecture >/dev/null 2>&1; then
+ 	HOST_ARCH=$(/usr/bin/udpkg --print-architecture)
+-- 
+2.27.0
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.124.bb b/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.124.bb
index 300c98f..4fc59ad 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.124.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/debootstrap/debootstrap_1.0.124.bb
@@ -8,6 +8,7 @@
     http://http.debian.net/debian/pool/main/d/debootstrap/debootstrap_${PV}.tar.gz \
     file://0001-support-to-override-usr-sbin-and-usr-share.patch \
     file://0002-support-to-override-usr-bin-arch-test.patch \
+    file://0001-do-not-hardcode-the-full-path-of-dpkg.patch \
 "
 
 SRC_URI[md5sum] = "8a5e97f60236c3a63f715c056a5f0e29"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.38.0.bb b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.38.1.bb
similarity index 98%
rename from meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.38.0.bb
rename to meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.38.1.bb
index 2095d81..10004b2 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.38.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.38.1.bb
@@ -16,7 +16,7 @@
 RDEPENDS_${PN}-dev += "${PN}-compiler"
 
 S = "${WORKDIR}/git"
-SRCREV_grpc = "54dc182082db941aa67c7c3f93ad858c99a16d7d"
+SRCREV_grpc = "96b73272eadc01afb5fb45b92b408c47e4387274"
 BRANCH = "v1.38.x"
 SRC_URI = "git://github.com/grpc/grpc.git;protocol=https;name=grpc;branch=${BRANCH} \
            "
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-mips-Use-hardcodes-values-for-ABI-syscall-bases.patch b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-mips-Use-hardcodes-values-for-ABI-syscall-bases.patch
new file mode 100644
index 0000000..f83e0a2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-mips-Use-hardcodes-values-for-ABI-syscall-bases.patch
@@ -0,0 +1,50 @@
+From ed8dbe1c793f2f770fef61adc4390277f903cceb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 9 Jul 2021 01:32:42 -0700
+Subject: [PATCH] mips: Use hardcodes values for ABI syscall bases
+
+mips kernels 5.13+ have stopped exposing the UAPIs which provided these
+defines, the values are more or less static so just use the hardcoded
+values for now. Use __NR_syscalls to get number of syscalls supported
+and include asm-generic/unistd.h to get this definition
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sysdeps/linux-gnu/mips/trace.c | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/sysdeps/linux-gnu/mips/trace.c b/sysdeps/linux-gnu/mips/trace.c
+index d54818e..e72184d 100644
+--- a/sysdeps/linux-gnu/mips/trace.c
++++ b/sysdeps/linux-gnu/mips/trace.c
+@@ -33,6 +33,7 @@
+ #include <asm/unistd.h>
+ #include <assert.h>
+ #include <asm/unistd.h>
++#include <asm-generic/unistd.h>
+ 
+ #include "backend.h"
+ #include "common.h"
+@@ -135,12 +136,12 @@ syscall_p(struct process *proc, int status, int *sysnum)
+ 	int min_syscall, max_syscall, sigreturn, rt_sigreturn;
+ 	struct callstack_element *top = NULL;
+ 	int depth = proc->callstack_depth;
+-	const int syscallbase[] = {__NR_O32_Linux, __NR_N32_Linux,
+-				   __NR_64_Linux, __NR_O32_Linux};
+-	const int syscallnum[] = {__NR_O32_Linux_syscalls,
+-				  __NR_N32_Linux_syscalls,
+-				  __NR_64_Linux_syscalls,
+-				  __NR_O32_Linux_syscalls};
++	const int syscallbase[] = {4000, 6000,
++				   5000, 4000};
++	const int syscallnum[] = {__NR_syscalls,
++				  __NR_syscalls,
++				  __NR_syscalls,
++				  __NR_syscalls};
+ 	const int rt_sigreturn_list[] = {193, 211, 211, 193};
+ 	const int sigreturn_list[] = {119, -1, -1, 119};
+ 
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ppc-Remove-unused-host_powerpc64-function.patch b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ppc-Remove-unused-host_powerpc64-function.patch
new file mode 100644
index 0000000..39e1f77
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ppc-Remove-unused-host_powerpc64-function.patch
@@ -0,0 +1,37 @@
+From 4517bf59838f40eb6e3f46e39adb5e5090c59df8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 15 Jun 2021 18:14:36 -0700
+Subject: [PATCH] ppc: Remove unused host_powerpc64 function
+
+This function is dead code, remove it which avoids compiler warnings
+with clang
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sysdeps/linux-gnu/ppc/plt.c | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/sysdeps/linux-gnu/ppc/plt.c b/sysdeps/linux-gnu/ppc/plt.c
+index 5f81889..9d1838b 100644
+--- a/sysdeps/linux-gnu/ppc/plt.c
++++ b/sysdeps/linux-gnu/ppc/plt.c
+@@ -142,16 +142,6 @@
+ #define PPC64_PLT_STUB_SIZE 4
+ #endif
+ 
+-static inline int
+-host_powerpc64()
+-{
+-#ifdef __powerpc64__
+-	return 1;
+-#else
+-	return 0;
+-#endif
+-}
+-
+ static void
+ mark_as_resolved(struct library_symbol *libsym, GElf_Addr value)
+ {
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/include_unistd_nr.patch b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/include_unistd_nr.patch
deleted file mode 100644
index e4490bb..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/include_unistd_nr.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-kernel headers have restructured mips syscall generation in kernel
-in recent versions, however, ltrace still has logic to define the
-syscall numbers based on old logic, this patch includes the legacy
-UAPI headers to get these defines
-
-Fixes errors e.g.
-../../../../git/sysdeps/linux-gnu/mips/trace.c:138:29: error: '__NR_O32_Linux' undeclared (first use in this function)
-  const int syscallbase[] = {__NR_O32_Linux, __NR_N32_Linux,
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/sysdeps/linux-gnu/mips/trace.c
-+++ b/sysdeps/linux-gnu/mips/trace.c
-@@ -34,6 +34,16 @@
- #include <assert.h>
- #include <asm/unistd.h>
- 
-+#ifndef __NR_O32_Linux
-+#include <asm/unistd_nr_o32.h>
-+#endif
-+#ifndef __NR_N32_Linux
-+#include <asm/unistd_nr_n64.h>
-+#endif
-+#ifndef __NR_N64_Linux
-+#include <asm/unistd_nr_n32.h>
-+#endif
-+
- #include "backend.h"
- #include "common.h"
- #include "debug.h"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
index 17264ce..69dce85 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
@@ -26,9 +26,10 @@
            file://0001-mips-plt.c-Delete-include-error.h.patch \
            file://0001-move-fprintf-into-same-block-where-modname-and-symna.patch \
            file://0001-hook-Do-not-append-int-to-std-string.patch \
-           file://include_unistd_nr.patch \
            file://0001-Bug-fix-for-data-type-length-judgment.patch \
            file://0001-ensure-the-struct-pointers-are-null-initilized.patch \
+           file://0001-ppc-Remove-unused-host_powerpc64-function.patch \
+           file://0001-mips-Use-hardcodes-values-for-ABI-syscall-bases.patch \
            "
 SRC_URI_append_libc-musl = " file://add_ppc64le.patch"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/mpich/mpich_3.4.2.bb b/meta-openembedded/meta-oe/recipes-devtools/mpich/mpich_3.4.2.bb
index 0ee02d6..20df362 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/mpich/mpich_3.4.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/mpich/mpich_3.4.2.bb
@@ -31,7 +31,8 @@
 "
 PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR},--without-x,virtual/libx11"
 
-LDFLAGS_append_x86-64 = " -lgcc"
+LDFLAGS_append_libc-glibc_x86-64 = " -lgcc"
+LDFLAGS_append_libc-glibc_x86 = " -lgcc"
 
 inherit autotools gettext pkgconfig
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch
new file mode 100644
index 0000000..00b2e9b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch
@@ -0,0 +1,28 @@
+From 0976af0f3b328436ea44a74a406f311adb2ab211 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 15 Jun 2021 19:01:31 -0700
+Subject: [PATCH] ppc64: Do not use -mminimal-toc with clang
+
+clang does not support this option
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ common.gypi | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/common.gypi b/common.gypi
+index ee91fb1d..049c8f8c 100644
+--- a/common.gypi
++++ b/common.gypi
+@@ -413,7 +413,7 @@
+             'ldflags': [ '-m32' ],
+           }],
+           [ 'target_arch=="ppc64" and OS!="aix"', {
+-            'cflags': [ '-m64', '-mminimal-toc' ],
++            'cflags': [ '-m64' ],
+             'ldflags': [ '-m64' ],
+           }],
+           [ 'target_arch=="s390x"', {
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/v8-call-new-ListFormatter-createInstance.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/v8-call-new-ListFormatter-createInstance.patch
deleted file mode 100644
index 8063600..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/v8-call-new-ListFormatter-createInstance.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 035c305ce7761f51328b45f1bd83e26aef267c9d Mon Sep 17 00:00:00 2001
-From: Frank Tang <ftang@chromium.org>
-Date: Thu, 15 Oct 2020 22:44:27 -0700
-Subject: [PATCH] [Intl] call new ListFormatter::createInstance
-
-The one we currently using is now marked as internal and to be removed
-for 68. Migrating to the style which already avaiable in ICU 67-1.
-
-Upstream-Status: Backport
-Bug: v8:11031
-Change-Id: I668382a2e1b8602ddca02bf231c5008a6c92bf2d
-Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2477751
-Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
-Commit-Queue: Frank Tang <ftang@chromium.org>
-Cr-Commit-Position: refs/heads/master@{#70638}
----
- deps/v8/src/objects/js-list-format.cc | 55 ++++++++++++-----------------------
- 1 file changed, 18 insertions(+), 37 deletions(-)
-
---- a/deps/v8/src/objects/js-list-format.cc
-+++ b/deps/v8/src/objects/js-list-format.cc
-@@ -29,46 +29,27 @@ namespace v8 {
- namespace internal {
- 
- namespace {
--const char* kStandard = "standard";
--const char* kOr = "or";
--const char* kUnit = "unit";
--const char* kStandardShort = "standard-short";
--const char* kOrShort = "or-short";
--const char* kUnitShort = "unit-short";
--const char* kStandardNarrow = "standard-narrow";
--const char* kOrNarrow = "or-narrow";
--const char* kUnitNarrow = "unit-narrow";
- 
--const char* GetIcuStyleString(JSListFormat::Style style,
--                              JSListFormat::Type type) {
-+UListFormatterWidth GetIcuWidth(JSListFormat::Style style) {
-+  switch (style) {
-+    case JSListFormat::Style::LONG:
-+      return ULISTFMT_WIDTH_WIDE;
-+    case JSListFormat::Style::SHORT:
-+      return ULISTFMT_WIDTH_SHORT;
-+    case JSListFormat::Style::NARROW:
-+      return ULISTFMT_WIDTH_NARROW;
-+  }
-+  UNREACHABLE();
-+}
-+
-+UListFormatterType GetIcuType(JSListFormat::Type type) {
-   switch (type) {
-     case JSListFormat::Type::CONJUNCTION:
--      switch (style) {
--        case JSListFormat::Style::LONG:
--          return kStandard;
--        case JSListFormat::Style::SHORT:
--          return kStandardShort;
--        case JSListFormat::Style::NARROW:
--          return kStandardNarrow;
--      }
-+      return ULISTFMT_TYPE_AND;
-     case JSListFormat::Type::DISJUNCTION:
--      switch (style) {
--        case JSListFormat::Style::LONG:
--          return kOr;
--        case JSListFormat::Style::SHORT:
--          return kOrShort;
--        case JSListFormat::Style::NARROW:
--          return kOrNarrow;
--      }
-+      return ULISTFMT_TYPE_OR;
-     case JSListFormat::Type::UNIT:
--      switch (style) {
--        case JSListFormat::Style::LONG:
--          return kUnit;
--        case JSListFormat::Style::SHORT:
--          return kUnitShort;
--        case JSListFormat::Style::NARROW:
--          return kUnitNarrow;
--      }
-+      return ULISTFMT_TYPE_UNITS;
-   }
-   UNREACHABLE();
- }
-@@ -143,7 +124,7 @@ MaybeHandle<JSListFormat> JSListFormat::
-   icu::Locale icu_locale = r.icu_locale;
-   UErrorCode status = U_ZERO_ERROR;
-   icu::ListFormatter* formatter = icu::ListFormatter::createInstance(
--      icu_locale, GetIcuStyleString(style_enum, type_enum), status);
-+      icu_locale, GetIcuType(type_enum), GetIcuWidth(style_enum), status);
-   if (U_FAILURE(status) || formatter == nullptr) {
-     delete formatter;
-     THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_14.16.1.bb b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_14.17.1.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_14.16.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_14.17.1.bb
index 48bf2f4..5ac4f9d 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_14.16.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_14.17.1.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
 HOMEPAGE = "http://nodejs.org"
 LICENSE = "MIT & BSD & Artistic-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=85bf260d8b6de1588f57abc5dc66587c"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a1016f9b7979cfe6fc3466a9bba60b1e"
 
 DEPENDS = "openssl"
 DEPENDS_append_class-target = " qemu-native"
@@ -21,7 +21,6 @@
            file://0004-v8-don-t-override-ARM-CFLAGS.patch \
            file://big-endian.patch \
            file://mips-warnings.patch \
-           file://v8-call-new-ListFormatter-createInstance.patch \
            file://mips-less-memory.patch \
            "
 SRC_URI_append_class-target = " \
@@ -30,7 +29,10 @@
 SRC_URI_append_toolchain-clang_x86 = " \
            file://libatomic.patch \
            "
-SRC_URI[sha256sum] = "e44adbbed6756c2c1a01258383e9f00df30c147b36e438f6369b5ef1069abac3"
+SRC_URI_append_toolchain-clang_powerpc64le = " \
+           file://0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch \
+           "
+SRC_URI[sha256sum] = "ddf1d2d56ddf35ecd98c5ea5ddcd690b245899f289559b4330c921255f5a247f"
 
 S = "${WORKDIR}/node-v${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libparse-yapp-perl_1.21.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/libparse-yapp-perl_1.21.bb
new file mode 100644
index 0000000..27a7f9d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/libparse-yapp-perl_1.21.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Perl extension for generating and using LALR parsers"
+DESCRIPTION = "Parse::Yapp (Yet Another Perl Parser compiler) is a collection \
+of modules that let you generate and use yacc like thread safe (reentrant) parsers \
+with perl object oriented interface."
+
+HOMEPAGE = "http://search.cpan.org/dist/Parse-Yapp/"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+LIC_FILES_CHKSUM = "file://lib/Parse/Yapp.pm;beginline=508;endline=521;md5=41a4542fcde97a600c9de0d782a90256"
+
+SRC_URI = "https://www.cpan.org/authors/id/W/WB/WBRASWELL/Parse-Yapp-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "69584d5b0f0304bb2a23cffcd982c5de"
+SRC_URI[sha256sum] = "3810e998308fba2e0f4f26043035032b027ce51ce5c8a52a8b8e340ca65f13e5"
+
+S = "${WORKDIR}/Parse-Yapp-${PV}"
+
+inherit cpan
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.17.0.bb b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.17.3.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.17.0.bb
rename to meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.17.3.bb
index 81af2d5..6ad3bdb 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.17.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.17.3.bb
@@ -10,7 +10,7 @@
 DEPENDS = "zlib"
 DEPENDS_append_class-target = " protobuf-native"
 
-SRCREV = "652d99a8ee8aa6b801e11977951fbf444cfccc8f"
+SRCREV = "909a0f36a10075c4b4bc70fdee2c7e32dd612a72"
 
 SRC_URI = "git://github.com/protocolbuffers/protobuf.git \
            file://run-ptest \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb b/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
index 5b5c8b2..ac80329 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
@@ -14,7 +14,7 @@
 
 inherit cmake
 
-EXTRA_OECMAKE += "-DRAPIDJSON_BUILD_DOC=OFF -DRAPIDJSON_BUILD_TESTS=OFF -DRAPIDJSON_BUILD_EXAMPLES=OFF -DLIB_INSTALL_DIR:STRING=${libdir}"
+EXTRA_OECMAKE += "-DRAPIDJSON_BUILD_DOC=OFF -DRAPIDJSON_BUILD_TESTS=OFF -DRAPIDJSON_BUILD_EXAMPLES=OFF"
 
 # RapidJSON is a header-only C++ library, so the main package will be empty.
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/suitesparse/suitesparse_5.8.1.bb b/meta-openembedded/meta-oe/recipes-devtools/suitesparse/suitesparse_5.10.1.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-devtools/suitesparse/suitesparse_5.8.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/suitesparse/suitesparse_5.10.1.bb
index 9ccf2d0..b92f63b 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/suitesparse/suitesparse_5.8.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/suitesparse/suitesparse_5.10.1.bb
@@ -1,15 +1,11 @@
 LICENSE = "GPLv2 & GPLv3 & BSD-3-Clause & LGPL-2.0 & Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f9f2b9d61cb769a67c4cd079e1166de7"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5fa987762101f748a6cdd951b64ffc6b"
 SRC_URI = "git://github.com/DrTimothyAldenDavis/SuiteSparse;protocol=https \
            file://0001-Preserve-CXXFLAGS-from-environment-in-Mongoose.patch \
            file://0002-Preserve-links-when-installing-libmetis.patch \
            file://0003-Add-version-information-to-libmetis.patch \
            "
-
-SRC_URI[md5sum] = "c414679bbc9432a3def01b31ad921140"
-SRC_URI[sha256sum] = "06726e471fbaa55f792578f9b4ab282ea9d008cf39ddcc3b42b73400acddef40"
-
-SRCREV = "v${PV}"
+SRCREV = "538273cfd53720a10e34a3d80d3779b607e1ac26"
 
 S = "${WORKDIR}/git"
 
@@ -77,4 +73,3 @@
 FILES_${PN}-dev += "${includedir} ${libdir}/*.so"
 
 EXCLUDE_FROM_WORLD = "1"
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/317.patch b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/317.patch
new file mode 100644
index 0000000..fe40334
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/317.patch
@@ -0,0 +1,43 @@
+Origin: https://github.com/GENIVI/dlt-daemon/pull/317
+From 55d31216823841a1547fe261cdf8e3b1002d5f94 Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Date: Thu, 1 Jul 2021 12:58:20 +0200
+Subject: [PATCH] dlt-control-common.c: Fix build failure due to out-of-bound
+ write -Werror=stringop-truncation
+
+cd /build/dlt-daemon-2.18.7/obj-x86_64-linux-gnu/src/console/logstorage && /usr/bin/cc -DCONFIGURATION_FILES_DIR=\"/etc\" -DDLT_DAEMON_USE_FIFO_IPC -DDLT_LIB_USE_FIFO_IPC -DDLT_NETWORK_TRACE_ENABLE -DDLT_SYSTEMD_ENABLE -DDLT_SYSTEMD_JOURNAL_ENABLE -DDLT_UNIT_TESTS -DDLT_USER_IPC_PATH=\"/tmp\" -DDLT_USE_IPv6 -DEXTENDED_FILTERING -D_GNU_SOURCE -I/build/dlt-daemon-2.18.7 -I/build/dlt-daemon-2.18.7/obj-x86_64-linux-gnu/include/dlt -I/build/dlt-daemon-2.18.7/include/dlt -I/build/dlt-daemon-2.18.7/src/shared -I/build/dlt-daemon-2.18.7/src/core_dump_handler -I/build/dlt-daemon-2.18.7/src/offlinelogstorage -I/build/dlt-daemon-2.18.7/src/lib -I/build/dlt-daemon-2.18.7/src/daemon -I/build/dlt-daemon-2.18.7/src/console -I/build/dlt-daemon-2.18.7/src/gateway -I/build/dlt-daemon-2.18.7/systemd/3rdparty -g -O2 -ffile-prefix-map=/build/dlt-daemon-2.18.7=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2   -Werror -std=gnu99 -Wall -Wextra -Wno-variadic-macros -Wno-strict-aliasing -o CMakeFiles/dlt-logstorage-ctrl.dir/__/dlt-control-common.c.o -c /build/dlt-daemon-2.18.7/src/console/dlt-control-common.c
+make[3]: Leaving directory '/build/dlt-daemon-2.18.7/obj-x86_64-linux-gnu'
+In file included from /usr/include/string.h:495,
+                 from /build/dlt-daemon-2.18.7/src/console/dlt-control-common.c:56:
+In function 'strncpy',
+    inlined from 'dlt_json_filter_load' at /build/dlt-daemon-2.18.7/src/console/dlt-control-common.c:716:13:
+/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error: '__builtin_strncpy' specified bound 4 equals destination size [-Werror=stringop-truncation]
+  106 |   return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
+      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In function 'strncpy',
+    inlined from 'dlt_json_filter_load' at /build/dlt-daemon-2.18.7/src/console/dlt-control-common.c:721:13:
+/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error: '__builtin_strncpy' specified bound 4 equals destination size [-Werror=stringop-truncation]
+  106 |   return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
+      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Signed-off-by: Gianfranco Costamagna <locutusofborg@debian.org>
+---
+ src/console/dlt-control-common.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/console/dlt-control-common.c b/src/console/dlt-control-common.c
+index 8a9d29f0..f58d8268 100644
+--- a/src/console/dlt-control-common.c
++++ b/src/console/dlt-control-common.c
+@@ -671,8 +671,8 @@ DltReturnValue dlt_json_filter_load(DltFilter *filter, const char *filename, int
+     struct json_object *j_payload_max;
+     enum json_tokener_error jerr;
+ 
+-    char app_id[DLT_ID_SIZE] = "";
+-    char context_id[DLT_ID_SIZE] = "";
++    char app_id[DLT_ID_SIZE + 1] = "";
++    char context_id[DLT_ID_SIZE + 1] = "";
+     int32_t log_level = 0;
+     int32_t payload_max = INT32_MAX;
+     int32_t payload_min = 0;
diff --git a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.6.bb b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.7.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.6.bb
rename to meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.7.bb
index b3cfb47..a16e810 100644
--- a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.6.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.7.bb
@@ -12,13 +12,14 @@
 LICENSE = "MPLv2"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8184208060df880fe3137b93eb88aeea"
 
-DEPENDS = "zlib gzip-native"
+DEPENDS = "zlib gzip-native json-c"
 
 SRC_URI = "git://github.com/GENIVI/${BPN}.git;protocol=https \
     file://0002-Don-t-execute-processes-as-a-specific-user.patch \
     file://0004-Modify-systemd-config-directory.patch \
+    file://317.patch \
 "
-SRCREV = "22715aeceaa81ace2c832312529bde3a42d0814f"
+SRCREV = "24d197214bfdcec7430d31b42e5c87df27287aaf"
 
 S = "${WORKDIR}/git"
 
@@ -44,7 +45,7 @@
 
 inherit autotools gettext cmake systemd
 
-EXTRA_OECMAKE += "-DSYSTEMD_UNITDIR=${systemd_system_unitdir}"
+EXTRA_OECMAKE += "-DWITH_EXTENDED_FILTERING=ON -DSYSTEMD_UNITDIR=${systemd_system_unitdir}"
 
 PACKAGES += "${PN}-systemd"
 SYSTEMD_PACKAGES = "${PN} ${PN}-systemd"
diff --git a/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-CMake-configuration-for-hiredis.patch b/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-CMake-configuration-for-hiredis.patch
new file mode 100644
index 0000000..139d13f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-CMake-configuration-for-hiredis.patch
@@ -0,0 +1,117 @@
+From 2dc0c7e4a3fa7ecc92ee5e22f1d8ee48c2b333a8 Mon Sep 17 00:00:00 2001
+From: Thomas Lee <debian@tomlee.co>
+Date: Sun, 4 Nov 2018 22:59:09 +0000
+Subject: [PATCH] CMake configuration for hiredis
+
+Last-Update: 2018-09-26
+
+Upstream-Status: Backport [Ubuntu 20.04]
+---
+ HiredisConfig.cmake.in        |  5 +++++
+ HiredisConfigVersion.cmake.in | 22 ++++++++++++++++++++++
+ Makefile                      | 17 ++++++++++++++++-
+ 3 files changed, 43 insertions(+), 1 deletion(-)
+ create mode 100644 HiredisConfig.cmake.in
+ create mode 100644 HiredisConfigVersion.cmake.in
+
+diff --git a/HiredisConfig.cmake.in b/HiredisConfig.cmake.in
+new file mode 100644
+index 0000000..2cce290
+--- /dev/null
++++ b/HiredisConfig.cmake.in
+@@ -0,0 +1,5 @@
++find_path(HIREDIS_INCLUDE_DIRS hiredis/hiredis.h HINTS "/usr/include")
++find_library(HIREDIS_LIB_HIREDIS NAMES hiredis HINTS "/usr/lib")
++
++set(HIREDIS_LIBRARIES ${HIREDIS_LIB_HIREDIS})
++
+diff --git a/HiredisConfigVersion.cmake.in b/HiredisConfigVersion.cmake.in
+new file mode 100644
+index 0000000..584144a
+--- /dev/null
++++ b/HiredisConfigVersion.cmake.in
+@@ -0,0 +1,22 @@
++set(PACKAGE_VERSION "@HIREDIS_VERSION@")
++
++string(REPLACE "." ";" HIREDIS_VERSION_COMPONENTS ${PACKAGE_VERSION})
++string(REPLACE "." ";" REQUESTED_VERSION_COMPONENTS ${PACKAGE_FIND_VERSION})
++
++list(GET HIREDIS_VERSION_COMPONENTS 0 HIREDIS_VERSION_MAJOR)
++list(GET HIREDIS_VERSION_COMPONENTS 1 HIREDIS_VERSION_MINOR)
++
++list(GET REQUESTED_VERSION_COMPONENTS 0 REQUESTED_VERSION_MAJOR)
++list(GET REQUESTED_VERSION_COMPONENTS 1 REQUESTED_VERSION_MINOR)
++
++if(("${HIREDIS_VERSION_MAJOR}" EQUAL "${REQUESTED_VERSION_MAJOR}") AND
++    (("${HIREDIS_VERSION_MINOR}" EQUAL "${REQUESTED_VERSION_MINOR}") OR
++     ("${HIREDIS_VERSION_MINOR}" GREATER "${REQUESTED_VERSION_MINOR}")))
++    set(PACKAGE_VERSION_COMPATIBLE TRUE)
++    if("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
++        set(PACKAGE_VERSION_EXACT TRUE)
++    endif()
++else()
++    set(PACKAGE_VERSION_COMPATIBLE FALSE)
++endif()
++
+diff --git a/Makefile b/Makefile
+index 339727f..43704cd 100644
+--- a/Makefile
++++ b/Makefile
+@@ -8,6 +8,8 @@ EXAMPLES=hiredis-example hiredis-example-libevent hiredis-example-libev hiredis-
+ TESTS=hiredis-test
+ LIBNAME=libhiredis
+ PKGCONFNAME=hiredis.pc
++CMAKECONFNAME=HiredisConfig.cmake
++CMAKEVERSNAME=HiredisConfigVersion.cmake
+ 
+ HIREDIS_MAJOR=$(shell grep HIREDIS_MAJOR hiredis.h | awk '{print $$3}')
+ HIREDIS_MINOR=$(shell grep HIREDIS_MINOR hiredis.h | awk '{print $$3}')
+@@ -19,9 +21,11 @@ PREFIX?=/usr/local
+ INCLUDE_PATH?=include/hiredis
+ LIBRARY_PATH?=lib
+ PKGCONF_PATH?=pkgconfig
++CMAKE_PATH?=cmake/Hiredis
+ INSTALL_INCLUDE_PATH= $(DESTDIR)$(PREFIX)/$(INCLUDE_PATH)
+ INSTALL_LIBRARY_PATH= $(DESTDIR)$(PREFIX)/$(LIBRARY_PATH)
+ INSTALL_PKGCONF_PATH= $(INSTALL_LIBRARY_PATH)/$(PKGCONF_PATH)
++INSTALL_CMAKE_PATH= $(INSTALL_LIBRARY_PATH)/$(CMAKE_PATH)
+ 
+ # redis-server configuration used for testing
+ REDIS_PORT=56379
+@@ -150,6 +154,7 @@ check: hiredis-test
+ 
+ clean:
+ 	rm -rf $(DYLIBNAME) $(STLIBNAME) $(TESTS) $(PKGCONFNAME) examples/hiredis-example* *.o *.gcda *.gcno *.gcov
++	rm -f $(CMAKECONFNAME) $(CMAKEVERSNAME)
+ 
+ dep:
+ 	$(CC) -MM *.c
+@@ -169,7 +174,14 @@ $(PKGCONFNAME): hiredis.h
+ 	@echo Libs: -L\$${libdir} -lhiredis >> $@
+ 	@echo Cflags: -I\$${includedir} -D_FILE_OFFSET_BITS=64 >> $@
+ 
+-install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME)
++$(CMAKECONFNAME): $(CMAKECONFNAME).in
++	cp $(CMAKECONFNAME).in $(CMAKECONFNAME)
++
++$(CMAKEVERSNAME): $(CMAKEVERSNAME).in
++	sed -e "s,@HIREDIS_VERSION@,$(HIREDIS_MAJOR).$(HIREDIS_MINOR).$(HIREDIS_PATCH),g" \
++		$(CMAKEVERSNAME).in >$(CMAKEVERSNAME)
++
++install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME) $(CMAKECONFNAME) $(CMAKEVERSNAME)
+ 	mkdir -p $(INSTALL_INCLUDE_PATH) $(INSTALL_INCLUDE_PATH)/adapters $(INSTALL_LIBRARY_PATH)
+ 	$(INSTALL) hiredis.h async.h read.h sds.h $(INSTALL_INCLUDE_PATH)
+ 	$(INSTALL) adapters/*.h $(INSTALL_INCLUDE_PATH)/adapters
+@@ -178,6 +190,9 @@ install: $(DYLIBNAME) $(STLIBNAME) $(PKGCONFNAME)
+ 	$(INSTALL) $(STLIBNAME) $(INSTALL_LIBRARY_PATH)
+ 	mkdir -p $(INSTALL_PKGCONF_PATH)
+ 	$(INSTALL) $(PKGCONFNAME) $(INSTALL_PKGCONF_PATH)
++	mkdir -p $(INSTALL_CMAKE_PATH)
++	$(INSTALL) $(CMAKECONFNAME) $(INSTALL_CMAKE_PATH)
++	$(INSTALL) $(CMAKEVERSNAME) $(INSTALL_CMAKE_PATH)
+ 
+ 32bit:
+ 	@echo ""
+-- 
+2.27.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb b/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb
index 29f8de8..a418888 100644
--- a/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb
@@ -7,7 +7,8 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=d84d659a35c666d23233e54503aaea51"
 SRCREV = "685030652cd98c5414ce554ff5b356dfe8437870"
 SRC_URI = "git://github.com/redis/hiredis;protocol=git \
-           file://0001-Makefile-remove-hardcoding-of-CC.patch"
+           file://0001-Makefile-remove-hardcoding-of-CC.patch \
+           file://0001-CMake-configuration-for-hiredis.patch"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.3.3.bb b/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.6.0.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.3.3.bb
rename to meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.6.0.bb
index abc3e09..90c0d24 100644
--- a/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.3.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.6.0.bb
@@ -5,7 +5,7 @@
 SRC_URI = "https://github.com/ice-wm/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.lz \
            file://0001-configure.ac-skip-running-test-program-when-cross-co.patch \
            "
-SRC_URI[sha256sum] = "4162565cf7566d78d786e4ecf4b0639451b8464bcb24e761b1f08ef43e95e513"
+SRC_URI[sha256sum] = "33cc69ba1fb762d85cc2755a930d6cf1a7c23e33f736ef2ec01c59d612f9b2eb"
 
 UPSTREAM_CHECK_URI = "https://github.com/ice-wm/${BPN}/releases"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Remove-dead-paren_level-code.patch b/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Remove-dead-paren_level-code.patch
new file mode 100644
index 0000000..5a474cf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Remove-dead-paren_level-code.patch
@@ -0,0 +1,79 @@
+From 5af65ce9674a69054c9a8405e51794c6f3ca41df Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 4 Jun 2021 12:34:18 -0700
+Subject: [PATCH] Remove dead paren_level code
+
+Local variable `paren_level' in src/output.c:dump_line_code() is
+initialized to 0, then incremented with count_parens() return
+value, and then the variable is never used. Also count_parens()
+has no side effect. Thus this patch removes this useless code.
+
+Upstream-Status: Submitted [https://mail.gnu.org/archive/html/bug-indent/2011-04/msg00000.html]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/output.c | 35 -----------------------------------
+ 1 file changed, 35 deletions(-)
+
+diff --git a/src/output.c b/src/output.c
+index ee01bcc..5b92167 100644
+--- a/src/output.c
++++ b/src/output.c
+@@ -798,37 +798,6 @@ static int dump_line_label(void)
+    return cur_col;
+ }
+ 
+-/**
+- *
+- */
+-
+-static int count_parens(
+-    const char * string)
+-{
+-    int paren_level = 0;
+-
+-    while (*string)
+-    {
+-        switch (*string)
+-        {
+-        case '(':
+-        case '[':
+-            paren_level++;
+-            break;
+-        case ')':
+-        case ']':
+-            paren_level--;
+-            break;
+-        default:
+-            break;
+-        }
+-
+-        string++;
+-    }
+-
+-    return paren_level;
+-}
+-
+ /**
+  *
+  */
+@@ -840,8 +809,6 @@ static void dump_line_code(
+     BOOLEAN * pbreak_line,
+     int       target_col_break)
+ {
+-   int paren_level   = 0;
+-
+    if (s_code != e_code)
+    {                       /* print code section, if any */
+       int i;
+@@ -928,8 +895,6 @@ static void dump_line_code(
+ 
+          *pcur_col = count_columns (*pcur_col, s_code, NULL_CHAR);
+ 
+-         paren_level += count_parens(s_code);
+-
+          s_code[buf_break->offset] = c;
+ 
+          *pnot_truncated = 0;
+-- 
+2.31.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb b/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb
index 90ba8a2..829bf0f 100644
--- a/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb
@@ -16,6 +16,7 @@
            file://0001-src-indent.c-correct-the-check-for-locale.h.patch \
            file://0001-Makefile.am-remove-regression-dir.patch \
            file://0001-Fix-builds-with-recent-gettext.patch \
+           file://0001-Remove-dead-paren_level-code.patch \
            "
 SRC_URI[md5sum] = "4764b6ac98f6654a35da117b8e5e8e14"
 SRC_URI[sha256sum] = "e77d68c0211515459b8812118d606812e300097cfac0b4e9fb3472664263bb8b"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.2.bb b/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.3.bb
similarity index 82%
rename from meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.3.bb
index a4a2581..3d87e44 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.3.bb
@@ -14,8 +14,8 @@
 
 inherit autotools-brokensep pkgconfig
 
-SRC_URI[md5sum] = "6bd98ee3a6e6b9126c82c916d7a9e690"
-SRC_URI[sha256sum] = "7c3c7a9c73ff3302084386e96f903eb62ce06953bb1666235fac74363a16fad9"
+SRC_URI[md5sum] = "15ec701205f91f21b1187f8b61e0d64f"
+SRC_URI[sha256sum] = "545166d6cac037744381d1e9cc5a5405094e7bfad16a411699bcff40bbb31ee7"
 
 PACKAGE_BEFORE_PN = "${PN}++"
 FILES_${PN}++ = "${libdir}/${BPN}++*${SOLIBS}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libyang/libyang/libyang-skip-pcre2-config-add-stdint-h.patch b/meta-openembedded/meta-oe/recipes-extended/libyang/libyang/libyang-skip-pcre2-config-add-stdint-h.patch
new file mode 100644
index 0000000..e3b2d0e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libyang/libyang/libyang-skip-pcre2-config-add-stdint-h.patch
@@ -0,0 +1,55 @@
+From c7f3e2a8fe530beec6103cb9071ccc41458879aa Mon Sep 17 00:00:00 2001
+From: Tony Tascioglu <tony.tascioglu@windriver.com>
+Date: Mon, 21 Jun 2021 12:34:22 -0400
+Subject: [PATCH] libyang: fix initial build errors
+
+This patch addresses build errors seen when integrating libyang as a
+recipe.
+
+The call to pcre2-config has been commented out. *-config calls are
+being replaced by pkgconfig, and we want to avoid the binary config
+calls. This call can safely be discarded since it is used to check
+the version of libpcre2 on the system, and all recent YP builds meet
+the minimum required version (v10.21).
+
+There is a missing include statement for stdint.h in utests.h which
+causes build problems. stdint.h is required to be imported by cmocka.h
+prior to the cmocka file. Adding the stdint allows it to build the
+tests correctly
+
+Upstream-Status: Pending
+
+Signed-off-by: Tony Tascioglu <tony.tascioglu@windriver.com>
+---
+ CMakeModules/FindPCRE2.cmake | 2 +-
+ tests/utests/utests.h        | 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeModules/FindPCRE2.cmake b/CMakeModules/FindPCRE2.cmake
+index 8f60daa2..ad014f14 100644
+--- a/CMakeModules/FindPCRE2.cmake
++++ b/CMakeModules/FindPCRE2.cmake
+@@ -12,7 +12,7 @@ FIND_PATH(PCRE2_INCLUDE_DIR pcre2.h)
+ FIND_LIBRARY(PCRE2_LIBRARY NAMES libpcre2.a pcre2-8)
+ 
+ # Check required version
+-execute_process(COMMAND pcre2-config --version OUTPUT_VARIABLE PCRE2_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
++# execute_process(COMMAND pcre2-config --version OUTPUT_VARIABLE PCRE2_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
+ 
+ # Handle the QUIETLY and REQUIRED arguments and set PCRE_FOUND to TRUE if all listed variables are TRUE.
+ INCLUDE(FindPackageHandleStandardArgs)
+diff --git a/tests/utests/utests.h b/tests/utests/utests.h
+index 5bea0459..a256120c 100644
+--- a/tests/utests/utests.h
++++ b/tests/utests/utests.h
+@@ -23,6 +23,7 @@
+ #include <stddef.h>
+ #include <stdlib.h>
+ 
++#include <stdint.h>
+ #include <cmocka.h>
+ 
+ #include <string.h>
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/libyang/libyang/run-ptest b/meta-openembedded/meta-oe/recipes-extended/libyang/libyang/run-ptest
new file mode 100644
index 0000000..1c9f8f4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libyang/libyang/run-ptest
@@ -0,0 +1,46 @@
+#!/bin/sh
+# Valid tests to run
+tests="utest_binary \
+       utest_bits \
+       utest_common \
+       utest_hash_table \
+       utest_inet_types \
+       utest_int8 \
+       utest_json \
+       utest_list \
+       utest_merge \
+       utest_metadata \
+       utest_parser_yang \
+       utest_parser_yin \
+       utest_pattern \
+       utest_printer_yang \
+       utest_printer_yin \
+       utest_range \
+       utest_schema \
+       utest_set \
+       utest_string \
+       utest_tree_data \
+       utest_tree_schema_compile \
+       utest_types \
+       utest_xml \
+       utest_xpath \
+       utest_yang_types \
+       utest_yanglib"
+
+# cd into right directory
+ptestdir=$(dirname "$(readlink -f "$0")")
+cd "$ptestdir"/tests || exit
+
+# Run specified tests
+for f in $tests
+do
+    if test -e ./"$f"; then
+        if ./"$f" > ./"$f".out 2> ./"$f".err; then
+            echo "PASS: $f"
+        else
+            echo "FAIL: $f"
+        fi
+    else
+        echo "SKIP: $f"
+    fi
+done
diff --git a/meta-openembedded/meta-oe/recipes-extended/libyang/libyang_2.0.7.bb b/meta-openembedded/meta-oe/recipes-extended/libyang/libyang_2.0.7.bb
new file mode 100644
index 0000000..8e9e8cc
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libyang/libyang_2.0.7.bb
@@ -0,0 +1,37 @@
+SUMMARY = "YANG data modeling language library"
+DESCRIPTION = "libyang is a YANG data modelling language parser and toolkit written (and providing API) in C."
+HOMEPAGE = "https://github.com/CESNET/libyang"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f3916d7d8d42a6508d0ea418cfff10ad"
+
+SRCREV = "69d9fff65abb58beb0bb6aa9ecacd572ca1dfc56"
+
+SRC_URI = "git://github.com/CESNET/libyang.git \
+           file://libyang-skip-pcre2-config-add-stdint-h.patch \
+           file://run-ptest \
+           "
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_HOST_riscv32 = "null"
+COMPATIBLE_HOST_armv5 = "null"
+COMPATIBLE_HOST_riscv64 = "null"
+
+# Main dependencies
+inherit cmake pkgconfig lib_package binconfig-disabled ptest
+DEPENDS = "libpcre2"
+DEPENDS += "${@bb.utils.contains('PTEST_ENABLED', '1', 'cmocka', '', d)}"
+BINCONFIG = "${bindir}/pcre2-config"
+
+# Ptest dependencies
+RDEPENDS_${PN}-ptest += "valgrind"
+
+EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release"
+EXTRA_OECMAKE += " ${@bb.utils.contains('PTEST_ENABLED', '1', '-DENABLE_BUILD_TESTS=ON', '', d)}"
+
+do_install_ptest () {
+    cp -fR ${B}/tests/ ${D}${PTEST_PATH}/
+}
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/libzip/libzip_1.7.3.bb b/meta-openembedded/meta-oe/recipes-extended/libzip/libzip_1.7.3.bb
deleted file mode 100644
index e903de3..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libzip/libzip_1.7.3.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "libzip is a C library for reading, creating, and modifying zip archives."
-HOMEPAGE = "https://libzip.org/"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=067e9870bba57e1ce20695c4d5672f30"
-
-DEPENDS = "zlib bzip2"
-
-PACKAGECONFIG[ssl] = "-DENABLE_OPENSSL=ON,-DENABLE_OPENSSL=OFF,openssl"
-PACKAGECONFIG[lzma] = "-DENABLE_LZMA=ON,-DENABLE_LZMA=OFF,xz"
-
-PACKAGECONFIG ?= "ssl lzma"
-
-inherit cmake
-
-SRC_URI = "https://libzip.org/download/libzip-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "a60473ffdb7b4260c08bfa19c2ccea0438edac11193c3afbbb1f17fbcf6c6132"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libzip/libzip_1.8.0.bb b/meta-openembedded/meta-oe/recipes-extended/libzip/libzip_1.8.0.bb
new file mode 100644
index 0000000..23ac76a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libzip/libzip_1.8.0.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "libzip is a C library for reading, creating, and modifying zip archives."
+HOMEPAGE = "https://libzip.org/"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=067e9870bba57e1ce20695c4d5672f30"
+
+DEPENDS = "zlib bzip2"
+
+PACKAGECONFIG[ssl] = "-DENABLE_OPENSSL=ON,-DENABLE_OPENSSL=OFF,openssl"
+PACKAGECONFIG[lzma] = "-DENABLE_LZMA=ON,-DENABLE_LZMA=OFF,xz"
+PACKAGECONFIG[gnutls] = "-DENABLE_GNUTLS=ON,-DENABLE_GNUTLS=OFF,gnutls nettle"
+PACKAGECONFIG[zstd] = "-DENABLE_ZSTD=ON,-DENABLE_ZSTD=OFF,zstd"
+PACKAGECONFIG[mbedtls] = "-DENABLE_MBEDTLS=ON,-DENABLE_MBEDTLS=OFF,mbedtls"
+PACKAGECONFIG[examples] = "-DENABLE_EXAMPLES=ON,-DENABLE_EXAMPLES=OFF,"
+PACKAGECONFIG[tools] = "-DENABLE_TOOLS=ON,-DENABLE_TOOLS=OFF,"
+PACKAGECONFIG[tests] = "-DBUILD_REGRESS=ON,-DBUILD_REGRESS=OFF,"
+
+PACKAGECONFIG ?= "ssl lzma tools examples"
+
+inherit cmake
+
+SRC_URI = "https://libzip.org/download/libzip-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "f0763bda24ba947e80430be787c4b068d8b6aa6027a26a19923f0acfa3dac97e"
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb
index 86c149b..ef82a8f 100644
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb
@@ -89,6 +89,7 @@
     install -d ${D}${MINIFI_BIN}
     install -d ${D}${MINIFI_HOME}/conf
     install -m 755 -d ${D}${localstatedir}/lib/minifi
+    install -m 755 -d ${D}${libexecdir}/minifi-python
     cp -a ${WORKDIR}/minifi-install/usr/bin/*   ${D}${MINIFI_BIN}/
     cp -a ${WORKDIR}/minifi-install/usr/conf/*  ${D}${MINIFI_HOME}/conf/
 
@@ -102,6 +103,8 @@
         ${D}${MINIFI_HOME}/conf/minifi.properties
     sed -i 's|nifi.flow.configuration.file=.*|nifi.flow.configuration.file='${MINIFI_HOME}'/conf/config.yml|g' \
         ${D}${MINIFI_HOME}/conf/minifi.properties
+    sed -i 's|nifi.python.processor.dir=.*|nifi.python.processor.dir=${libexecdir}/minifi-python|g' \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
 
     sed -i 's|export MINIFI_HOME=.*|export MINIFI_HOME='${MINIFI_HOME}'|g' ${D}${MINIFI_BIN}/minifi.sh
     sed -i 's|bin_dir=${MINIFI_HOME}/bin|bin_dir='${MINIFI_BIN}'|g' ${D}${MINIFI_BIN}/minifi.sh
@@ -136,3 +139,5 @@
         fi
     fi
 }
+
+CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.2.bb b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.3.bb
similarity index 98%
rename from meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.3.bb
index c3505ab..c735f6d 100644
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.3.bb
@@ -25,7 +25,7 @@
     gitsm://github.com/ostreedev/ostree;branch=main \
     file://run-ptest \
 "
-SRCREV = "6a72674ec621a2282043c3a083fe1e45cd6a8761"
+SRCREV = "38c14b374567f736533f7f515595208fe359819f"
 
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+)"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.3.bb b/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.4.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.3.bb
rename to meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.4.bb
index 67ac974..35f34a2 100644
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis_6.2.4.bb
@@ -17,7 +17,7 @@
            file://GNU_SOURCE.patch \
            file://0006-Define-correct-gregs-for-RISCV32.patch \
            "
-SRC_URI[sha256sum] = "98ed7d532b5e9671f5df0825bb71f0f37483a16546364049384c63db8764512b"
+SRC_URI[sha256sum] = "ba32c406a10fc2c09426e2be2787d74ff204eb3a2e496d87cff76a476b6ae16e"
 
 inherit autotools-brokensep update-rc.d systemd useradd
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2104.0.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2106.0.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2104.0.bb
rename to meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2106.0.bb
index 3f1ec91..37f3913 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2104.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2106.0.bb
@@ -31,8 +31,8 @@
     file://0001-Include-sys-time-h.patch \
 "
 
-SRC_URI[md5sum] = "a0213c989bce297944901e1a85286b8b"
-SRC_URI[sha256sum] = "710981c3c34f88d5d1fb55ecfc042aecad8af69414b2b1602b304f4dedbf9f43"
+SRC_URI[md5sum] = "b90659d85dce1df0f6c69a79c4ef053a"
+SRC_URI[sha256sum] = "faf45c25a2265c001739e8888b3652cf685eb3f35cd65d17d5c38fd44b9ddd81"
 
 UPSTREAM_CHECK_URI = "https://github.com/rsyslog/rsyslog/releases"
 UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
diff --git a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
index eca8dfc..0278b53 100644
--- a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
@@ -1,14 +1,19 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=72d977d697c3c05830fdff00a7448931"
-SRCREV = "b31bce98d65f894aad6427bcf6f3f7822e261a59"
+SRCREV = "beb4650660179963a8ed5b5cbf2085cc1b34f608"
 PV = "1.0+git${SRCPV}"
 
 SRC_URI = "git://github.com/hartkopp/can-isotp.git;protocol=https"
 
+
 S = "${WORKDIR}/git"
 
 inherit module
 
 EXTRA_OEMAKE += "KERNELDIR=${STAGING_KERNEL_DIR}"
 
-PNBLACKLIST[can-isotp] ?= "Kernel module Needs forward porting to kernel 5.2+"
+do_install_append() {
+    install -Dm 644 ${S}/include/uapi/linux/can/isotp.h ${D}${includedir}/linux/can/isotp.h
+}
+
+EXCLUDE_FROM_WORLD = "1"
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 3b2b6a9..36e7d1e 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
@@ -6,9 +6,9 @@
 
 SRC_URI = "git://github.com/linux-can/${BPN}.git;protocol=git"
 
-SRCREV = "eb66451df280f95a9a12e78b151b8d867e1b78ed"
+SRCREV = "e9dd86fa5c4e6ecdfc34e487634a32f19e5c4d63"
 
-PV = "2020.12.0"
+PV = "2021.06.0"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb b/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb
index f1b7707..a626e3b 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb
@@ -15,6 +15,8 @@
 JIT_riscv64 = ""
 JIT_riscv32 = ""
 JIT_powerpc = ""
+JIT_powerpc64le = ""
+JIT_powerpc64 = ""
 
 DEPENDS += "libb64 lua${JIT} zlib c-ares grpc-native grpc curl ncurses jsoncpp tbb jq openssl elfutils protobuf protobuf-native jq-native"
 RDEPENDS_${PN} = "bash"
diff --git a/meta-openembedded/meta-oe/recipes-extended/zsync/zsync-curl/fixes.patch b/meta-openembedded/meta-oe/recipes-extended/zsync/zsync-curl/fixes.patch
new file mode 100644
index 0000000..1ec4993
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/zsync/zsync-curl/fixes.patch
@@ -0,0 +1,115 @@
+Upstream-Status: Submitted [https://github.com/probonopd/zsync-curl/pull/41]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/src/configure.ac b/src/configure.ac
+index 10de8c4..6488140 100644
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -9,7 +9,6 @@ AC_CONFIG_MACRO_DIR([autotools])
+ AC_CANONICAL_HOST
+ 
+ AM_INIT_AUTOMAKE([dist-bzip2 no-dist-gzip foreign check-news -Woverride -Wobsolete -Wportability -Wsyntax -Wunsupported])
+-AM_MAINTAINER_MODE
+ 
+ dnl --- Check for programs
+ AC_PROG_CC
+@@ -23,6 +22,7 @@ AS_IF([test "x$enable_profile" = "xyes"], [
+    ZS_CFLAGS="${ZS_CFLAGS} -pg" ])
+ 
+ dnl --- Header files, typedefs, structures, libraries
++AC_USE_SYSTEM_EXTENSIONS
+ AC_C_CONST
+ AC_HEADER_STDC
+ # string.h, memory.h, stdlib.h both included in the default header checks
+@@ -55,10 +55,6 @@ case $host_os in
+        host_os_mingw32=yes
+        LIBS="${LIBS} -lwsock32"
+        ;;
+-   *)
+-       AC_DEFINE([_XOPEN_SOURCE], 600, [Enable POSIX extensions if present])
+-       AC_DEFINE([_BSD_SOURCE],1, [Enable BSD extensions if present])
+-       ;;
+ esac
+ AM_CONDITIONAL([MINGW32], test "x$host_os_mingw32" = "xyes")
+ 
+diff --git a/src/librcksum/Makefile.am b/src/librcksum/Makefile.am
+index f4fce72..47754eb 100644
+--- a/src/librcksum/Makefile.am
++++ b/src/librcksum/Makefile.am
+@@ -1,4 +1,4 @@
+-
++AM_CPPFLAGS = "-I$(top_srcdir)"
+ 
+ noinst_LIBRARIES = librcksum.a
+ 
+diff --git a/src/librcksum/md4.h b/src/librcksum/md4.h
+index e90603a..0ed7485 100644
+--- a/src/librcksum/md4.h
++++ b/src/librcksum/md4.h
+@@ -18,11 +18,8 @@
+ 
+ #include "zsglobal.h"
+ 
+-#ifdef HAVE_INTTYPES_H
+-#include <inttypes.h>
+-#else
++#include <stdint.h>
+ #include <sys/types.h>
+-#endif
+ 
+ #define	MD4_BLOCK_LENGTH		64
+ #define	MD4_DIGEST_LENGTH		16
+diff --git a/src/libzsync/Makefile.am b/src/libzsync/Makefile.am
+index 0a6ae85..33a5951 100644
+--- a/src/libzsync/Makefile.am
++++ b/src/libzsync/Makefile.am
+@@ -1,3 +1,4 @@
++AM_CPPFLAGS = "-I$(top_srcdir)"
+ 
+ noinst_LIBRARIES = libzsync.a
+ 
+diff --git a/src/libzsync/sha1.h b/src/libzsync/sha1.h
+index 3946505..87f3794 100644
+--- a/src/libzsync/sha1.h
++++ b/src/libzsync/sha1.h
+@@ -11,11 +11,8 @@
+ 
+ #include "config.h"
+ 
+-#ifdef HAVE_INTTYPES_H
+-#include <inttypes.h>
+-#else
++#include <stdint.h>
+ #include <sys/types.h>
+-#endif
+ 
+ #define	SHA1_BLOCK_LENGTH		64
+ #define	SHA1_DIGEST_LENGTH		20
+diff --git a/src/libzsync/zmap.c b/src/libzsync/zmap.c
+index f052dba..030b2a5 100644
+--- a/src/libzsync/zmap.c
++++ b/src/libzsync/zmap.c
+@@ -28,9 +28,6 @@
+ #include <string.h>
+ #include <sys/types.h>
+ #include <arpa/inet.h>
+-#ifdef HAVE_INTTYPES_H
+-#include <inttypes.h>
+-#endif
+ 
+ #ifdef WITH_DMALLOC
+ # include <dmalloc.h>
+diff --git a/src/make.c b/src/make.c
+index 191b527..ba7f3a9 100644
+--- a/src/make.c
++++ b/src/make.c
+@@ -28,9 +28,6 @@
+ #include <time.h>
+ 
+ #include <arpa/inet.h>
+-#ifdef HAVE_INTTYPES_H
+-#include <inttypes.h>
+-#endif
+ 
+ #include <sys/types.h>
+ #include <sys/stat.h>
diff --git a/meta-openembedded/meta-oe/recipes-extended/zsync/zsync-curl/make.patch b/meta-openembedded/meta-oe/recipes-extended/zsync/zsync-curl/make.patch
new file mode 100644
index 0000000..ef19b5e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/zsync/zsync-curl/make.patch
@@ -0,0 +1,50 @@
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 3b9d64cf3c33ad235ed444f8715732e509ab023f Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@arm.com>
+Date: Wed, 9 Jun 2021 16:11:25 +0100
+Subject: [PATCH] Build zsyncmake
+
+No point having the zsync client without the server-side tool.
+
+Closes #42
+---
+ .gitignore      | 1 +
+ src/Makefile.am | 5 ++++-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/.gitignore b/.gitignore
+index 36f7bd8..728658e 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -22,3 +22,4 @@ src/librcksum/md4test
+ src/libzsync/sha1test
+ stamp-h1
+ zsync_curl
++zsyncmake_curl
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 5f8ff73..ffa2280 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -4,13 +4,16 @@ ACLOCAL_AMFLAGS = -I autotools
+ 
+ SUBDIRS = librcksum zlib libzsync doc
+ 
+-bin_PROGRAMS = zsync_curl
++bin_PROGRAMS = zsync_curl zsyncmake_curl
+ 
+ zsync_curl_SOURCES = client.c http.c http.h url.c url.h progress.c progress.h base64.c format_string.h zsglobal.h
+ zsync_curl_LDADD = libzsync/libzsync.a librcksum/librcksum.a zlib/libinflate.a $(LIBOBJS)
+ 
+ EXTRA_zsync_curl_SOURCES = getaddrinfo.h
+ 
++zsyncmake_curl_SOURCES = make.c makegz.c makegz.h format_string.h
++zsyncmake_curl_LDADD = libzsync/libzsync.a librcksum/librcksum.a zlib/libinflate.a zlib/libdeflate.a -lm
++
+ # From "GNU autoconf, automake and libtool" Vaughan, Elliston, 
+ # #  Tromey and Taylor, publisher New Riders, p.134
+ # # They made me do it! :-)
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/zsync/zsync-curl_git.bb b/meta-openembedded/meta-oe/recipes-extended/zsync/zsync-curl_git.bb
new file mode 100644
index 0000000..adb72d5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/zsync/zsync-curl_git.bb
@@ -0,0 +1,20 @@
+SUMMARY = "File transfer tool optimised for large files (curl port)"
+HOMEPAGE = "http://zsync.moria.org.uk/"
+DEPENDS = "curl"
+
+LICENSE = "Artistic-2.0"
+LIC_FILES_CHKSUM = "file://src/COPYING;md5=71c0ac4d86266533509aa0825b8d323c"
+
+SRC_URI = "git://github.com/probonopd/zsync-curl;protocol=https \
+           file://fixes.patch \
+           file://make.patch"
+SRCREV = "00141c2806ccc4ddf2ff6263ee1612d19c0b713f"
+
+PV = "0.6.2+git${SRCPV}"
+
+inherit autotools
+
+S = "${WORKDIR}/git"
+AUTOTOOLS_SCRIPT_PATH = "${S}/src"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.28.0.bb b/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.28.0.bb
deleted file mode 100644
index 0e09c3a..0000000
--- a/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.28.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "C++ bindings for the atk"
-SECTION = "libs"
-
-LICENSE = "LGPLv2.1 & GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
-                    file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
-
-DEPENDS = "atk glibmm"
-
-inherit features_check gnomebase autotools pkgconfig
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI[archive.md5sum] = "6194ac577f15567adfa3c923944c6651"
-SRC_URI[archive.sha256sum] = "4c4cfc917fd42d3879ce997b463428d6982affa0fb660cafcc0bc2d9afcedd3a"
-
-EXTRA_OECONF = " --disable-documentation "
-
-FILES_${PN}-dev += "${libdir}/*/include ${libdir}/*/proc/m4"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.28.2.bb b/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.28.2.bb
new file mode 100644
index 0000000..a3e8bbf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.28.2.bb
@@ -0,0 +1,20 @@
+SUMMARY = "C++ bindings for the atk"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1 & GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+                    file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "atk glibmm"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[archive.sha256sum] = "a0bb49765ceccc293ab2c6735ba100431807d384ffa14c2ebd30e07993fd2fa4"
+
+EXTRA_OEMESON = "-Dbuild-documentation=false"
+
+FILES_${PN}-dev += "${libdir}/*/include ${libdir}/*/proc/m4"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/iconv-detect.h b/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/iconv-detect.h
index 714cb5a..a899ce0 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/iconv-detect.h
+++ b/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/iconv-detect.h
@@ -3,3 +3,4 @@
 #define ICONV_ISO_INT_FORMAT "iso-%u-%u"
 #define ICONV_ISO_STR_FORMAT "iso-%u-%s"
 #define ICONV_10646 "iso-10646"
+#define ICONV_SHIFT_JIS "shift-jis"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.6.bb b/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.7.bb
similarity index 72%
rename from meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.6.bb
rename to meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.7.bb
index 4ae13e7..e70b747 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.6.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.7.bb
@@ -2,15 +2,14 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 DESCRIPTION = "Runtime libraries for parsing and creating MIME mail"
 SECTION = "libs"
+
 DEPENDS = "glib-2.0 zlib"
 
 inherit gnomebase gobject-introspection
 
 SRC_URI += "file://iconv-detect.h \
             file://nodolt.patch"
-
-SRC_URI[archive.md5sum] = "656548dc431004d1ebf95e5d0bb4b9c8"
-SRC_URI[archive.sha256sum] = "abff194c7c4802fba2e233890d09dde8bf7170c3ad5e13000601c8d5b3c44717"
+SRC_URI[archive.sha256sum] = "2aea96647a468ba2160a64e17c6dc6afe674ed9ac86070624a3f584c10737d44"
 
 export ac_cv_have_iconv_detect_h="yes"
 
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm/0001-meson.build-use-relative-path.patch b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm/0001-meson.build-use-relative-path.patch
deleted file mode 100644
index 46a6916..0000000
--- a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm/0001-meson.build-use-relative-path.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 152d295a28567ac87b0e6db2e62c0d914b1d7ef9 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Tue, 23 Feb 2021 08:47:54 +0000
-Subject: [PATCH] meson.build: use relative path
-
-Fixes:
-Fatal error: can't create
-gdk/gdkmm/libgdkmm-3.0.so.1.1.0.p/_buildarea1_master-wr_build_Userspace_auto-usrmerge_standalone_usrmerge_next_210222_lxbuilds_Har12345_platform_up_intel-x86-64-standard-glibc-std_wrlinux_build_tmp-glibc_work_corei7-64-wrs-linux_gtkmm3_3.24.3-r0_gtkmm-3.24.3_untracked_gdk_gdkmm_timecoord.cc.o: File name too long
-
-Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gtkmm/-/merge_requests/61]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- gdk/gdkmm/meson.build | 4 ++--
- gtk/gtkmm/meson.build | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/gdk/gdkmm/meson.build b/gdk/gdkmm/meson.build
-index afccaea..240ce4d 100644
---- a/gdk/gdkmm/meson.build
-+++ b/gdk/gdkmm/meson.build
-@@ -200,9 +200,9 @@ else # not maintainer_mode
-     gdkmm_hg_ccg_basenames,
-   )
- 
--  built_cc_files = [ src_untracked_gdkmm / 'wrap_init.cc' ]
-+  built_cc_files = [ '../..' / untracked_gdkmm / 'wrap_init.cc' ]
-   foreach file : gdkmm_used_hg_ccg_basenames
--    built_cc_files += src_untracked_gdkmm / file + '.cc'
-+    built_cc_files += '../..' / untracked_gdkmm / file + '.cc'
-   endforeach
- 
-   gdk_gen_sources = built_cc_files
-diff --git a/gtk/gtkmm/meson.build b/gtk/gtkmm/meson.build
-index ab96a22..cc0c050 100644
---- a/gtk/gtkmm/meson.build
-+++ b/gtk/gtkmm/meson.build
-@@ -464,9 +464,9 @@ else # not maintainer_mode
-     gtkmm_hg_ccg_basenames,
-   )
- 
--  built_cc_files = [ src_untracked_gtkmm / 'wrap_init.cc' ]
-+  built_cc_files = [ '../..' / untracked_gtkmm / 'wrap_init.cc' ]
-   foreach file : gtkmm_used_hg_ccg_basenames
--    built_cc_files += src_untracked_gtkmm / file + '.cc'
-+    built_cc_files += '../..' / untracked_gtkmm / file + '.cc'
-   endforeach
- 
-   gtk_gen_sources = built_cc_files
--- 
-2.29.2
-
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.3.bb b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.5.bb
similarity index 77%
rename from meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.3.bb
rename to meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.5.bb
index 1648e37..2c5012c 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.3.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.5.bb
@@ -16,10 +16,7 @@
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI += "file://0001-meson.build-use-relative-path.patch \
-"
-
-SRC_URI[archive.sha256sum] = "60497c4f7f354c3bd2557485f0254f8b7b4cf4bebc9fee0be26a77744eacd435"
+SRC_URI[archive.sha256sum] = "856333de86689f6a81c123f2db15d85db9addc438bc3574c36f15736aeae22e6"
 
 EXTRA_OEMESON = "-Dbuild-demos=false"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Silence-clang-warnings.patch b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Silence-clang-warnings.patch
index 25e8518..3a62fff 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Silence-clang-warnings.patch
+++ b/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Silence-clang-warnings.patch
@@ -1,6 +1,6 @@
-From 5b83983b246cff440de4421696b6b5dd9072ed2d Mon Sep 17 00:00:00 2001
+From bd9b5060bc3b9581090d44f15b4e236566ea86a6 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 6 Feb 2021 11:36:23 -0800
+Date: Fri, 4 Jun 2021 12:57:57 -0700
 Subject: [PATCH] Silence clang warnings
 
 Fixes
@@ -12,15 +12,22 @@
     GLM_FUNC_QUALIFIER qua<T, Q> slerp(qua<T, Q> const& x, qua<T, Q> const& y, T a, S k)
                                                                                       ^
 
+and
+
+test/gtx/gtx_fast_trigonometry.cpp:135:9: error: variable 'result' set but not used [-Werror,-Wunused-but-set-variable]
+|                 float result = 0.f;
+|                       ^
+
 Upstream-Status: Submitted [https://github.com/g-truc/glm/pull/1055]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
- glm/ext/quaternion_common.inl | 2 +-
- glm/gtc/random.inl            | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ glm/ext/quaternion_common.inl      |  2 +-
+ glm/gtc/random.inl                 |  2 +-
+ test/gtx/gtx_fast_trigonometry.cpp | 30 ++++++++++++------------------
+ 3 files changed, 14 insertions(+), 20 deletions(-)
 
 diff --git a/glm/ext/quaternion_common.inl b/glm/ext/quaternion_common.inl
-index 0e4a3bb2..8f9dccef 100644
+index 0e4a3bb2..6f99f52d 100644
 --- a/glm/ext/quaternion_common.inl
 +++ b/glm/ext/quaternion_common.inl
 @@ -104,7 +104,7 @@ namespace glm
@@ -28,7 +35,7 @@
              // Graphics Gems III, page 96
              T angle = acos(cosTheta);
 -            T phi = angle + k * glm::pi<T>();
-+            T phi = angle + static_cast<float>(k) * glm::pi<T>();
++            T phi = angle + static_cast<T>(k) * glm::pi<T>();
              return (sin(angle - a * phi)* x + sin(a * phi) * z) / sin(angle);
          }
      }
@@ -45,6 +52,114 @@
  		}
  	};
  
+diff --git a/test/gtx/gtx_fast_trigonometry.cpp b/test/gtx/gtx_fast_trigonometry.cpp
+index 8bf86ba0..ddaa708b 100644
+--- a/test/gtx/gtx_fast_trigonometry.cpp
++++ b/test/gtx/gtx_fast_trigonometry.cpp
+@@ -19,15 +19,14 @@ namespace fastCos
+ 	{
+ 		const float begin = -glm::pi<float>();
+ 		const float end = glm::pi<float>();
+-		float result = 0.f;
+ 
+ 		const std::clock_t timestamp1 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::fastCos(i);
++			glm::fastCos(i);
+ 
+ 		const std::clock_t timestamp2 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::cos(i);
++			glm::cos(i);
+ 
+ 		const std::clock_t timestamp3 = std::clock();
+ 		const std::clock_t time_fast = timestamp2 - timestamp1;
+@@ -53,15 +52,14 @@ namespace fastSin
+ 	{
+ 		const float begin = -glm::pi<float>();
+ 		const float end = glm::pi<float>();
+-		float result = 0.f;
+ 
+ 		const std::clock_t timestamp1 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::fastSin(i);
++			glm::fastSin(i);
+ 
+ 		const std::clock_t timestamp2 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::sin(i);
++			glm::sin(i);
+ 
+ 		const std::clock_t timestamp3 = std::clock();
+ 		const std::clock_t time_fast = timestamp2 - timestamp1;
+@@ -79,15 +77,14 @@ namespace fastTan
+ 	{
+ 		const float begin = -glm::pi<float>();
+ 		const float end = glm::pi<float>();
+-		float result = 0.f;
+ 
+ 		const std::clock_t timestamp1 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::fastTan(i);
++			glm::fastTan(i);
+ 
+ 		const std::clock_t timestamp2 = std::clock();
+ 		for (float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::tan(i);
++			glm::tan(i);
+ 
+ 		const std::clock_t timestamp3 = std::clock();
+ 		const std::clock_t time_fast = timestamp2 - timestamp1;
+@@ -105,15 +102,14 @@ namespace fastAcos
+ 	{
+ 		const float begin = -glm::pi<float>();
+ 		const float end = glm::pi<float>();
+-		float result = 0.f;
+ 
+ 		const std::clock_t timestamp1 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::fastAcos(i);
++			glm::fastAcos(i);
+ 
+ 		const std::clock_t timestamp2 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::acos(i);
++			glm::acos(i);
+ 
+ 		const std::clock_t timestamp3 = std::clock();
+ 		const std::clock_t time_fast = timestamp2 - timestamp1;
+@@ -132,13 +128,12 @@ namespace fastAsin
+ 	{
+ 		const float begin = -glm::pi<float>();
+ 		const float end = glm::pi<float>();
+-		float result = 0.f;
+ 		const std::clock_t timestamp1 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::fastAsin(i);
++			glm::fastAsin(i);
+ 		const std::clock_t timestamp2 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::asin(i);
++			glm::asin(i);
+ 		const std::clock_t timestamp3 = std::clock();
+ 		const std::clock_t time_fast = timestamp2 - timestamp1;
+ 		const std::clock_t time_default = timestamp3 - timestamp2;
+@@ -155,13 +150,12 @@ namespace fastAtan
+ 	{
+ 		const float begin = -glm::pi<float>();
+ 		const float end = glm::pi<float>();
+-		float result = 0.f;
+ 		const std::clock_t timestamp1 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::fastAtan(i);
++			glm::fastAtan(i);
+ 		const std::clock_t timestamp2 = std::clock();
+ 		for(float i = begin; i < end; i = NextFloat ? glm::nextFloat(i) : i += 0.1f)
+-			result = glm::atan(i);
++			glm::atan(i);
+ 		const std::clock_t timestamp3 = std::clock();
+ 		const std::clock_t time_fast = timestamp2 - timestamp1;
+ 		const std::clock_t time_default = timestamp3 - timestamp2;
 -- 
-2.30.0
+2.31.1
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/imlib2/imlib2_git.bb b/meta-openembedded/meta-oe/recipes-graphics/imlib2/imlib2_git.bb
index b44b03c..085aaae 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/imlib2/imlib2_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/imlib2/imlib2_git.bb
@@ -8,7 +8,7 @@
 DEPENDS = "freetype "
 PROVIDES = "virtual/imlib2"
 PV = "1.7.1"
-SRCREV = "v1.7.1"
+SRCREV = "01424487e360383a039dc123bc2a345fe7ea2535"
 
 inherit autotools pkgconfig lib_package
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.42.1.bb b/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.42.1.bb
deleted file mode 100644
index 57d9ff9..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.42.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "C++ bindings for the pango library"
-SECTION = "libs"
-LICENSE = "LGPLv2.1 & GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
-                    file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
-
-DEPENDS = "mm-common cairomm glibmm pango"
-
-SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
-
-SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/pangomm/${SHRT_VER}/pangomm-${PV}.tar.xz"
-SRC_URI[md5sum] = "339c48dd92ebd3a9911b231708f7a819"
-SRC_URI[sha256sum] = "14bf04939930870d5cfa96860ed953ad2ce07c3fd8713add4a1bfe585589f40f"
-
-inherit features_check autotools pkgconfig
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-EXTRA_OECONF = " --disable-documentation "
-
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${libdir}/*/include/ ${libdir}/pangomm-*/"
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.46.1.bb b/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.46.1.bb
new file mode 100644
index 0000000..f7e126e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.46.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "C++ bindings for the pango library"
+SECTION = "libs"
+LICENSE = "LGPLv2.1 & GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
+                    file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "mm-common cairomm glibmm pango"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase features_check
+
+SRC_URI[archive.sha256sum] = "c885013fe61a4c5117fda395770d507563411c63e49f4a3aced4c9efe34d9975"
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/*/include/ ${libdir}/pangomm-*/"
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-noto-emoji_20190815.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-noto-emoji_20200916.bb
similarity index 78%
rename from meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-noto-emoji_20190815.bb
rename to meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-noto-emoji_20200916.bb
index e74f7a7..6dc39b1 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-noto-emoji_20190815.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-noto-emoji_20200916.bb
@@ -5,8 +5,8 @@
 LICENSE = "OFL-1.1"
 LIC_FILES_CHKSUM = "file://fonts/LICENSE;md5=55719faa0112708e946b820b24b14097"
 
-SRC_URI = "git://github.com/googlefonts/noto-emoji;protocol=https"
-SRCREV = "833a43d03246a9325e748a2d783006454d76ff66"
+SRC_URI = "git://github.com/googlefonts/noto-emoji;branch=main;protocol=https"
+SRCREV = "aac7ccaa4d1dea4543453b96f7d6fc47066a57ff"
 
 PACKAGES = "${PN}-color ${PN}-regular"
 FONT_PACKAGES = "${PN}-color ${PN}-regular"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/0001-build-Do-not-build-po-files.patch b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/0001-build-Do-not-build-po-files.patch
new file mode 100644
index 0000000..7703a43
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/0001-build-Do-not-build-po-files.patch
@@ -0,0 +1,44 @@
+From 19bd0a979677a81d7399d5b567998398ec81f38b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 8 Jul 2021 15:40:10 -0700
+Subject: [PATCH] build: Do not build po files
+
+Fixes
+| make[1]: Entering directory '/mnt/b/yoe/master/build/tmp/work/cortexa57-yoe-linux/xscreensaver/6.01-r0/xscreensaver-6.01/po'
+| make[1]: *** No rule to make target 'default'.  Stop.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile.in | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -6,8 +6,8 @@ srcdir		= @srcdir@
+ VPATH		= @srcdir@
+ 
+ SHELL		= /bin/sh
+-SUBDIRS 	= utils jwxyz hacks/images hacks hacks/glx hacks/fonts \
+-		  driver po
++SUBDIRS 	= utils jwxyz hacks/images hacks hacks/fonts \
++		  driver
+ SUBDIRS2	= $(SUBDIRS) OSX android
+ TARFILES	= README README.hacking INSTALL \
+ 		  configure configure.ac Makefile.in config.h.in \
+@@ -451,4 +451,3 @@ cerebrum::
+ 	--include 'configure*' \
+ 	--include '*/' \
+ 	--exclude '*'
+-
+--- a/driver/Makefile.in
++++ b/driver/Makefile.in
+@@ -212,7 +212,7 @@ TEST_EXES	= test-passwd   test-uid
+ 		  xdpyinfo      test-screens    test-yarandom   test-xinput   \
+ 	          test-xkb
+ 
+-EXES		= xscreensaver xscreensaver-command xscreensaver-settings
++EXES		= xscreensaver xscreensaver-command
+ UTIL_EXES	= xscreensaver-gfx @EXES_SYSTEMD@
+ SETUID_EXES	= xscreensaver-auth
+ DEMO_EXES	= @ALL_DEMO_PROGRAMS@
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/fix-buildscripts.patch b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/fix-buildscripts.patch
deleted file mode 100644
index afc8bc8..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/fix-buildscripts.patch
+++ /dev/null
@@ -1,100 +0,0 @@
---- xscreensaver-5.44.orig/configure.in	2020-06-16 12:49:55.384675395 +0000
-+++ xscreensaver-5.44/configure.in	2020-06-16 12:51:49.451826729 +0000
-@@ -14,6 +14,9 @@
- #
- ###############################################################################
- 
-+includedir=''
-+libdir=''
-+
- AH_TOP([
- /* config.h.in --- xscreensaver, Copyright (c) 1991-2014 Jamie Zawinski.
-  *
-diff -Naur xscreensaver-5.44.orig/driver/Makefile.in xscreensaver-5.44/driver/Makefile.in
---- xscreensaver-5.44.orig/driver/Makefile.in	2020-06-16 12:49:55.388675365 +0000
-+++ xscreensaver-5.44/driver/Makefile.in	2020-06-16 12:53:36.331038333 +0000
-@@ -10,7 +10,7 @@
- top_srcdir	= @top_srcdir@
- top_builddir	= ..
- 
--install_prefix	=
-+install_prefix	= ${DESTDIR}
- prefix		= @prefix@
- exec_prefix	= @exec_prefix@
- bindir		= @bindir@
-@@ -228,7 +228,7 @@
- SCRIPTS_1	= xscreensaver-getimage-file xscreensaver-getimage-video \
- 		  xscreensaver-text
- SCRIPTS_OSX	= xscreensaver-getimage-desktop
--SCRIPTS		= $(SCRIPTS_1) @SCRIPTS_OSX@
-+#SCRIPTS		= $(SCRIPTS_1) @SCRIPTS_OSX@
- 
- HDRS		= XScreenSaver_ad.h XScreenSaver_Xm_ad.h \
- 		  xscreensaver.h prefs.h remote.h exec.h \
-diff -Naur xscreensaver-5.44.orig/hacks/Makefile.in xscreensaver-5.44/hacks/Makefile.in
---- xscreensaver-5.44.orig/hacks/Makefile.in	2020-06-16 12:49:55.532674285 +0000
-+++ xscreensaver-5.44/hacks/Makefile.in	2020-06-16 12:58:54.364719996 +0000
-@@ -10,7 +10,7 @@
- top_srcdir	= @top_srcdir@
- top_builddir	= ..
- 
--install_prefix	=
-+install_prefix	= ${DESTDIR}
- prefix		= @prefix@
- exec_prefix	= @exec_prefix@
- bindir		= @bindir@
-@@ -124,7 +124,7 @@
- 		  tessellimage.c delaunay.c recanim.c binaryring.c \
- 		  glitchpeg.c vfeedback.c scooter.c webcollage-cocoa.m \
- 		  webcollage-helper-cocoa.m testx11.c
--SCRIPTS		= vidwhacker webcollage ljlatest
-+#SCRIPTS		= vidwhacker webcollage ljlatest
- 
- # Programs that are mentioned in XScreenSaver.ad, and that have XML files,
- # but that are not shipped with xscreensaver itself.
-@@ -166,7 +166,13 @@
- 		  tessellimage.o delaunay.o recanim.o binaryring.o \
- 		  glitchpeg.o vfeedback.o scooter.o testx11.o
- 
--EXES		= attraction blitspin bouboule braid decayscreen deco \
-+EXES           = fontglide
-+JPEG_EXES      = webcollage-helper
-+
-+RETIRED_EXES   =  ant bubbles critical flag forest hyperball hypercube laser \
-+                  lightning lisa lissie lmorph rotor sphere spiral t3d vines \
-+                  whirlygig worm xsublim juggle testx11 \
-+                  attraction blitspin bouboule braid decayscreen deco \
- 		  drift flame galaxy grav greynetic halo \
- 		  helix hopalong ifs imsmap julia kaleidescope \
- 		  maze moire noseguy pedal \
-@@ -182,17 +188,12 @@
- 		  speedmine vermiculate twang apollonian euler2d \
- 		  polyominoes thornbird  fluidballs anemone halftone \
- 		  metaballs eruption popsquares barcode piecewise cloudlife \
--		  fontglide apple2 xanalogtv pong filmleader wormhole \
-+		  apple2 xanalogtv pong filmleader wormhole \
- 		  pacman fuzzyflakes anemotaxis memscroller substrate \
- 		  intermomentary fireworkx fiberlamp boxfit interaggregate \
- 		  celtic cwaves m6502 abstractile lcdscrub hexadrop \
- 		  tessellimage binaryring glitchpeg vfeedback scooter \
- 		  @JPEG_EXES@
--JPEG_EXES	= webcollage-helper
--
--RETIRED_EXES	= ant bubbles critical flag forest hyperball hypercube laser \
--		  lightning lisa lissie lmorph rotor sphere spiral t3d vines \
--		  whirlygig worm xsublim juggle testx11
- 
- HACK_OBJS_1	= fps.o $(UTILS_BIN)/resources.o $(UTILS_BIN)/visual.o \
- 		  $(UTILS_BIN)/usleep.o $(UTILS_BIN)/yarandom.o \
-diff -Naur xscreensaver-5.44.orig/Makefile.in xscreensaver-5.44/Makefile.in
---- xscreensaver-5.44.orig/Makefile.in	2020-06-16 12:49:55.384675395 +0000
-+++ xscreensaver-5.44/Makefile.in	2020-06-16 12:52:49.395383836 +0000
-@@ -6,7 +6,7 @@
- VPATH		= @srcdir@
- 
- SHELL		= /bin/sh
--SUBDIRS 	= utils jwxyz hacks/images hacks hacks/glx driver po
-+SUBDIRS         = utils jwxyz hacks/images hacks driver
- SUBDIRS2	= $(SUBDIRS) OSX android
- TARFILES	= README README.hacking README.VMS INSTALL \
- 		  configure configure.in Makefile.in config.h.in \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/tweak-app-defaults.patch b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/tweak-app-defaults.patch
index 0f2e09a..4ce2fae 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/tweak-app-defaults.patch
+++ b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/tweak-app-defaults.patch
@@ -1,5 +1,5 @@
---- xscreensaver-5.44.orig/driver/XScreenSaver.ad.in	2020-06-16 13:13:14.950970569 +0000
-+++ xscreensaver-5.44/driver/XScreenSaver.ad.in	2020-06-16 13:19:35.777000937 +0000
+--- a/driver/XScreenSaver.ad.in
++++ b/driver/XScreenSaver.ad.in
 @@ -29,7 +29,7 @@
  ! /* (xrdb prevention kludge: whole file)
  
@@ -18,13 +18,13 @@
  *grabVideoFrames:	False
  *chooseRandomImages:	@DEFAULT_IMAGES_P@
  ! This can be a local directory name, or the URL of an RSS or Atom feed.
-@@ -48,11 +48,11 @@
+@@ -47,11 +47,11 @@
+ *memoryLimit:		0
  *lock:			False
  *verbose:		False
- *timestamp:		True
 -*fade:			True
 +*fade:			False
- *unfade:		False
+ *unfade:		True
  *fadeSeconds:		0:00:03
  *fadeTicks:		20
 -*splash:		True
@@ -32,7 +32,7 @@
  *splashDuration:	0:00:05
  *visualID:		default
  *installColormap:	True
-@@ -343,246 +343,8 @@
+@@ -324,250 +324,8 @@ XScreenSaver.bourneShell:		/bin/sh
  !=============================================================================
  
  *programs:								      \
@@ -272,8 +272,12 @@
 -				vfeedback -root				    \n\
 -@GL_KLUDGE@ GL: 				deepstars -root				    \n\
 -@GL_KLUDGE@ GL: 				gravitywell -root			    \n\
+-@GL_KLUDGE@ GL: 				beats -root				    \n\
+-@GL_KLUDGE@ GL: 				covid19 -root				    \n\
 -@GL_KLUDGE@ GL: 				etruscanvenus -root			    \n\
--@GL_KLUDGE@ GL: 				gibson -root				    \n
+-@GL_KLUDGE@ GL: 				gibson -root				    \n\
+-@GL_KLUDGE@ GL: 				headroom -root				    \n\
+-@GL_KLUDGE@ GL: 				sphereeversion -root			    \n
 -
 -
 +-				fontglide -root -program "date +'%F %H:%M %z'"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.44.bb b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.44.bb
deleted file mode 100644
index 9131c75..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.44.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "X screen saver and locker"
-HOMEPAGE = "https://www.jwz.org/xscreensaver/"
-LICENSE = "BSD-0-Clause"
-LIC_FILES_CHKSUM = "file://driver/xscreensaver.h;endline=10;md5=2b97002f72fbfc9329b4336e798f2463"
-
-SRC_URI = "https://www.jwz.org/${BPN}/${BP}.tar.gz"
-SRC_URI[md5sum] = "9f764e561f9939f8684a66ec98b27cba"
-SRC_URI[sha256sum] = "73d8089cfc7d7363b5dac99b5b01dffb3429d0a855e6af16ce9a4b7777017b95"
-
-SRC_URI += " \
-    file://xscreensaver.service \
-    file://fix-buildscripts.patch \
-    file://tweak-app-defaults.patch \
-"
-
-DEPENDS = "intltool-native libx11 libxext libxt libxft glib-2.0-native bc-native"
-# These are only needed as part of the stopgap screensaver implementation:
-RDEPENDS_${PN} = " \
-    liberation-fonts \
-    xuser-account \
-"
-
-inherit systemd perlnative pkgconfig gettext autotools-brokensep features_check
-
-EXTRA_OECONF += "--with-x-app-defaults=${datadir}/X11/app-defaults"
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-do_install_append() {
-    install -D ${WORKDIR}/xscreensaver.service ${D}${systemd_unitdir}/system/xscreensaver.service
-}
-
-FILES_${PN} += "${datadir}/X11/app-defaults/XScreenSaver"
-SYSTEMD_SERVICE_${PN} = "xscreensaver.service"
-
-CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_6.01.bb b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_6.01.bb
new file mode 100644
index 0000000..d67e058
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_6.01.bb
@@ -0,0 +1,53 @@
+SUMMARY = "X screen saver and locker"
+HOMEPAGE = "https://www.jwz.org/xscreensaver/"
+LICENSE = "BSD-0-Clause"
+LIC_FILES_CHKSUM = "file://driver/xscreensaver.h;endline=10;md5=c3ce41cdff745eb1dc9d4fcfbffb4d51"
+
+SRC_URI = "https://www.jwz.org/${BPN}/${BP}.tar.gz"
+SRC_URI[sha256sum] = "085484665d91f60b4a1dedacd94bcf9b74b0fb096bcedc89ff1c245168e5473b"
+
+SRC_URI += " \
+    file://xscreensaver.service \
+    file://0001-build-Do-not-build-po-files.patch \
+    file://tweak-app-defaults.patch \
+"
+
+DEPENDS = "intltool-native libx11 libxext libxt libxft libxi glib-2.0-native bc-native libpam"
+# These are only needed as part of the stopgap screensaver implementation:
+RDEPENDS_${PN} = " \
+    liberation-fonts \
+    xuser-account \
+"
+
+inherit systemd perlnative pkgconfig gettext autotools-brokensep features_check
+
+
+EXTRA_OECONF += "--with-app-defaults=${datadir}/X11/app-defaults --libdir=${STAGING_LIBDIR} \
+                 --includedir=${STAGING_INCDIR} --with-pam --with-login-manager"
+
+EXTRA_OEMAKE += "install_prefix=${D}"
+REQUIRED_DISTRO_FEATURES = "x11 pam"
+
+do_install_append() {
+    install -D ${WORKDIR}/xscreensaver.service ${D}${systemd_unitdir}/system/xscreensaver.service
+    for f in xscreensaver-getimage-file xscreensaver-getimage-video webcollage xscreensaver-text vidwhacker
+    do
+        sed -i -e "s|${STAGING_BINDIR_NATIVE}/perl-native/perl|/usr/bin/perl|g" ${D}/${libexecdir}/${PN}/$f
+    done
+}
+
+PACKAGES =+ "${PN}-perl"
+
+FILES_${PN}-perl = "\
+    ${libexecdir}/${PN}/xscreensaver-getimage-file \
+    ${libexecdir}/${PN}/xscreensaver-getimage-video \
+    ${libexecdir}/${PN}/webcollage \
+    ${libexecdir}/${PN}/xscreensaver-text \
+    ${libexecdir}/${PN}/vidwhacker \
+    "
+FILES_${PN} += "${datadir}/X11/app-defaults/XScreenSaver ${datadir}/fonts"
+SYSTEMD_SERVICE_${PN} = "xscreensaver.service"
+
+RDEPENDS_${PN}-perl = "perl"
+
+CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4/0002-perf_examples-Remove-unused-sum-variable.patch b/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4/0002-perf_examples-Remove-unused-sum-variable.patch
new file mode 100644
index 0000000..e85ca96
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4/0002-perf_examples-Remove-unused-sum-variable.patch
@@ -0,0 +1,44 @@
+From 0b2f611a95f3c93454453892bbe021ad2815925d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 15 Jun 2021 17:35:26 -0700
+Subject: [PATCH] perf_examples: Remove unused 'sum' variable
+
+Fixes
+self_smpl_multi.c:144:19: error: variable 'sum' set but not used [-Werror,-Wunused-but-set-variable]
+        unsigned long x, sum;
+                         ^
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ perf_examples/self_smpl_multi.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/perf_examples/self_smpl_multi.c b/perf_examples/self_smpl_multi.c
+index 391fa61..75b45e0 100644
+--- a/perf_examples/self_smpl_multi.c
++++ b/perf_examples/self_smpl_multi.c
+@@ -141,7 +141,7 @@ void
+ do_cycles(void)
+ {
+ 	struct timeval start, last, now;
+-	unsigned long x, sum;
++	unsigned long x;
+ 
+ 	gettimeofday(&start, NULL);
+ 	last = start;
+@@ -150,15 +150,12 @@ do_cycles(void)
+ 	iter[myid] = 0;
+ 
+ 	do {
+-
+-		sum = 1;
+ 		for (x = 1; x < 250000; x++) {
+ 			/* signal pending to private queue because of
+ 			 * pthread_kill(), i.e., tkill()
+ 			 */
+ 			if ((x % 5000) == 0)
+ 				pthread_kill(pthread_self(), SIGUSR1);
+-			sum += x;
+ 		}
+ 		iter[myid]++;
+ 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.10.1.bb b/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.11.0.bb
similarity index 81%
rename from meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.10.1.bb
rename to meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.11.0.bb
index ff56d48..8ffc99f 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.10.1.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.11.0.bb
@@ -10,13 +10,13 @@
 
 SECTION = "devel"
 
-COMPATIBLE_HOST = "powerpc64"
+COMPATIBLE_HOST = "powerpc64|aarch64"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/perfmon2/${BPN}/libpfm-${PV}.tar.gz \
            file://0001-Include-poll.h-instead-of-sys-poll.h.patch \
-          "
-SRC_URI[md5sum] = "d8f66cb9bfa7e1434434e0de6409db5b"
-SRC_URI[sha256sum] = "c61c575378b5c17ccfc5806761e4038828610de76e2e34fac9f7fa73ba844b49"
+           file://0002-perf_examples-Remove-unused-sum-variable.patch \
+           "
+SRC_URI[sha256sum] = "5da5f8872bde14b3634c9688d980f68bda28b510268723cc12973eedbab9fecc"
 
 UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/perfmon2/files/libpfm4/"
 
@@ -24,6 +24,7 @@
 EXTRA_OEMAKE_append_powerpc = " ARCH=\"powerpc\""
 EXTRA_OEMAKE_append_powerpc64 = " ARCH=\"powerpc\" BITMODE=\"64\""
 EXTRA_OEMAKE_append_powerpc64le = " ARCH=\"powerpc\" BITMODE=\"64\""
+EXTRA_OEMAKE_append_aarch64 = " ARCH=\"arm64\""
 
 S = "${WORKDIR}/libpfm-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/spidev-test/spidev-test.bb b/meta-openembedded/meta-oe/recipes-kernel/spidev-test/spidev-test.bb
index 6626302..974cb1e 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/spidev-test/spidev-test.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/spidev-test/spidev-test.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Test SPI devices"
 DESCRIPTION = "SPI testing utility using the spidev driver"
 LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
 PROVIDES = "virtual/spidev-test"
 
 inherit bash-completion kernelsrc kernel-arch
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20210406.bb b/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20210710.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20210406.bb
rename to meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20210710.bb
index cc138ad..9d89e1c 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20210406.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20210710.bb
@@ -16,7 +16,7 @@
 # only latest live version stays on http://www.live555.com/liveMedia/public/, add mirror for older
 MIRRORS += "http://www.live555.com/liveMedia/public/ http://download.videolan.org/contrib/live555/ \n"
 
-SRC_URI[sha256sum] = "0bd182fac7d6297d924af4405ce840515a38fa5438cb1a4b90fcb6bc737b36d6"
+SRC_URI[sha256sum] = "c157e848fecb335a7af2917fe787dacc5ada07e74f02026c206b092bc4cecb01"
 
 S = "${WORKDIR}/live"
 
diff --git a/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.1.bb b/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.2.bb
similarity index 98%
rename from meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.1.bb
rename to meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.2.bb
index ba24d36..7d2cec1 100644
--- a/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.2.bb
@@ -15,7 +15,7 @@
 "
 
 S = "${WORKDIR}/git"
-SRCREV = "46cb7d92443c9ec7b3af15fb0baa65f65f6415d3"
+SRCREV = "40312ddee3035d13e287355544cd7bd7e49b5499"
 
 inherit autotools python3native update-rc.d systemd
 
diff --git a/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/cmake-install-libcares.pc.patch b/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/cmake-install-libcares.pc.patch
index 0eb7e4b..c6f9c6d 100644
--- a/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/cmake-install-libcares.pc.patch
+++ b/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/cmake-install-libcares.pc.patch
@@ -1,4 +1,4 @@
-From 12414304245cce6ef0e8b9547949be5109845353 Mon Sep 17 00:00:00 2001
+From 2cc41bee63223cb398ea932aad6ecc94ff5b61dd Mon Sep 17 00:00:00 2001
 From: Changqing Li <changqing.li@windriver.com>
 Date: Tue, 24 Jul 2018 13:33:33 +0800
 Subject: [PATCH] cmake: Install libcares.pc
@@ -11,12 +11,13 @@
 update to 1.14.0, fix patch warning
 
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
 ---
- CMakeLists.txt | 28 +++++++++++++++++++++++-----
- 1 file changed, 23 insertions(+), 5 deletions(-)
+ CMakeLists.txt | 23 +++++++++++++++++------
+ 1 file changed, 17 insertions(+), 6 deletions(-)
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index fd123e1..3a5878d 100644
+index 08c0247..0020d6b 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
 @@ -214,22 +214,25 @@ ADD_DEFINITIONS(${SYSFLAGS})
@@ -50,9 +51,9 @@
  
  # When checking for symbols, we need to make sure we set the proper
  # headers, libraries, and definitions for the detection to work properly
-@@ -554,6 +557,15 @@ CONFIGURE_FILE (ares_build.h.cmake ${PROJECT_BINARY_DIR}/ares_build.h)
- # Write ares_config.h configuration file.  This is used only for the build.
- CONFIGURE_FILE (ares_config.h.cmake ${PROJECT_BINARY_DIR}/ares_config.h)
+@@ -551,6 +554,15 @@ ENDIF()
+ # Record toplevel CMakeLists.txt path
+ set(CARES_TOPLEVEL_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
  
 +# Pass required CFLAGS to pkg-config in case of static library
 +IF (CARES_STATIC)
@@ -66,19 +67,11 @@
  
  # TRANSFORM_MAKEFILE_INC
  #
-@@ -728,6 +740,12 @@ IF (CARES_INSTALL)
+@@ -624,7 +636,6 @@ IF (CARES_INSTALL)
  	INSTALL (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcares.pc" COMPONENT Devel DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
  ENDIF ()
  
-+# pkg-config file
-+IF (CARES_INSTALL)
-+       SET (PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
-+       INSTALL (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcares.pc" DESTINATION ${PKGCONFIG_INSTALL_DIR})
-+ENDIF ()
-+
+-
  # Legacy chain-building variables (provided for compatibility with old code).
  # Don't use these, external code should be updated to refer to the aliases directly (e.g., Cares::cares).
  SET (CARES_FOUND 1 CACHE INTERNAL "CARES LIBRARY FOUND")
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.16.1.bb b/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.17.1.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.16.1.bb
rename to meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.17.1.bb
index 67dd701..92eb9da 100644
--- a/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.16.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.17.1.bb
@@ -5,14 +5,14 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=fb997454c8d62aa6a47f07a8cd48b006"
 
-PV = "1.16.0+gitr${SRCPV}"
+PV = "1.17.1"
 
 SRC_URI = "\
     git://github.com/c-ares/c-ares.git \
     file://cmake-install-libcares.pc.patch \
     file://0001-fix-configure-error-mv-libcares.pc.cmakein-to-libcar.patch \
 "
-SRCREV = "74a1426ba60e2cd7977e53a22ef839c87415066e"
+SRCREV = "39c73b503d9ef70a58ad1f4a4643f15b01407c66"
 
 UPSTREAM_CHECK_GITTAGREGEX = "cares-(?P<pver>\d+_(\d_?)+)"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/cmark/cmark_git.bb b/meta-openembedded/meta-oe/recipes-support/cmark/cmark_0.30.0.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-support/cmark/cmark_git.bb
rename to meta-openembedded/meta-oe/recipes-support/cmark/cmark_0.30.0.bb
index f74a39b..c52a040 100644
--- a/meta-openembedded/meta-oe/recipes-support/cmark/cmark_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/cmark/cmark_0.30.0.bb
@@ -4,11 +4,9 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=81f9cae6293cc0345a9144b78152ab62"
 
 SRC_URI = "git://github.com/commonmark/cmark.git"
-SRCREV = "8daa6b1495124f0b67e6034130e12d7be83e38bd"
+SRCREV = "8800e66010214384e75f933830ca5585e1ae3060"
 S = "${WORKDIR}/git"
 
-PV = "0.29.0"
-
 inherit cmake lib_package
 
 EXTRA_OECMAKE += " \
diff --git a/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.8.bb b/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.9.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.8.bb
rename to meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.9.bb
index de175d6..9979c21 100644
--- a/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.8.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.9.bb
@@ -9,8 +9,7 @@
     file://install-bench.patch \
     file://run-ptest \
 "
-SRC_URI[md5sum] = "8aac833c943d8e90d51b697b27d4384d"
-SRC_URI[sha256sum] = "6113262f6e92c5bd474f2875fa1b01054c4ad5040f6b0da7c03c98821d9ae303"
+SRC_URI[sha256sum] = "bf2c7ce40b04ae811af714deb512510cc2c17b9ab9d6ddcf49fe4487eea7af3d"
 
 inherit autotools pkgconfig ptest
 
diff --git a/meta-openembedded/meta-oe/recipes-support/function2/function2_4.1.0.bb b/meta-openembedded/meta-oe/recipes-support/function2/function2_4.2.0.bb
similarity index 92%
rename from meta-openembedded/meta-oe/recipes-support/function2/function2_4.1.0.bb
rename to meta-openembedded/meta-oe/recipes-support/function2/function2_4.2.0.bb
index 56dc30a..14b9883 100644
--- a/meta-openembedded/meta-oe/recipes-support/function2/function2_4.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/function2/function2_4.2.0.bb
@@ -3,7 +3,7 @@
 HOMEPAGE = "https://naios.github.io/function2"
 LICENSE = "BSL-1.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
-SRCREV = "3a0746bf5f601dfed05330aefcb6854354fce07d"
+SRCREV = "02ca99831de59c7c3a4b834789260253cace0ced"
 PV .= "+git${SRCPV}"
 
 SRC_URI += "gitsm://github.com/Naios/function2"
diff --git a/meta-openembedded/meta-oe/recipes-support/glog/glog/0001-Find-Libunwind-during-configure.patch b/meta-openembedded/meta-oe/recipes-support/glog/glog/0001-Find-Libunwind-during-configure.patch
deleted file mode 100644
index 4c0861c..0000000
--- a/meta-openembedded/meta-oe/recipes-support/glog/glog/0001-Find-Libunwind-during-configure.patch
+++ /dev/null
@@ -1,119 +0,0 @@
---- /dev/null
-+++ b/cmake/FindLibunwind.cmake
-@@ -0,0 +1,54 @@
-+# - Try to find libunwind
-+# Once done this will define
-+#
-+#  Libunwind_FOUND - system has libunwind
-+#  unwind - cmake target for libunwind
-+
-+find_library (UNWIND_LIBRARY NAMES unwind DOC "unwind library")
-+include (CheckIncludeFile)
-+check_include_file (libunwind.h HAVE_LIBUNWIND_H)
-+check_include_file (unwind.h HAVE_UNWIND_H)
-+
-+if (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
-+    set(LIBUNWIND_ARCH "arm")
-+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
-+    set(LIBUNWIND_ARCH "aarch64")
-+elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR
-+        CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" OR
-+        CMAKE_SYSTEM_PROCESSOR STREQUAL "corei7-64")
-+    set(LIBUNWIND_ARCH "x86_64")
-+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
-+    set(LIBUNWIND_ARCH "x86")
-+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64")
-+    set(LIBUNWIND_ARCH "ppc64")
-+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc")
-+    set(LIBUNWIND_ARCH "ppc32")
-+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
-+    set(LIBUNWIND_ARCH "mips")
-+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^hppa")
-+    set(LIBUNWIND_ARCH "hppa")
-+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^ia64")
-+    set(LIBUNWIND_ARCH "ia64")
-+endif()
-+
-+find_library (UNWIND_LIBRARY_PLATFORM NAMES "unwind-${LIBUNWIND_ARCH}" DOC "unwind library platform")
-+if (UNWIND_LIBRARY_PLATFORM)
-+    set(HAVE_LIB_UNWIND "1")
-+endif()
-+
-+include(FindPackageHandleStandardArgs)
-+# handle the QUIETLY and REQUIRED arguments and set Libunwind_FOUND to TRUE
-+# if all listed variables are TRUE
-+find_package_handle_standard_args(Libunwind DEFAULT_MSG
-+    UNWIND_LIBRARY HAVE_LIBUNWIND_H HAVE_UNWIND_H HAVE_LIB_UNWIND)
-+
-+mark_as_advanced (UNWIND_LIBRARY UNWIND_LIBRARY_PLATFORM)
-+
-+if (Libunwind_FOUND)
-+    add_library(unwind INTERFACE IMPORTED)
-+    set_target_properties(unwind PROPERTIES
-+        INTERFACE_LINK_LIBRARIES "${UNWIND_LIBRARY};${UNWIND_LIBRARY_PLATFORM}"
-+    )
-+else()
-+    message("Can't find libunwind library")
-+endif()
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -64,7 +64,6 @@ check_include_file (dlfcn.h HAVE_DLFCN_H
- check_include_file (execinfo.h HAVE_EXECINFO_H)
- check_include_file (glob.h HAVE_GLOB_H)
- check_include_file (inttypes.h HAVE_INTTYPES_H)
--check_include_file (libunwind.h HAVE_LIBUNWIND_H)
- check_include_file (memory.h HAVE_MEMORY_H)
- check_include_file (pwd.h HAVE_PWD_H)
- check_include_file (stdint.h HAVE_STDINT_H)
-@@ -80,7 +79,6 @@ check_include_file (syscall.h HAVE_SYSCA
- check_include_file (syslog.h HAVE_SYSLOG_H)
- check_include_file (ucontext.h HAVE_UCONTEXT_H)
- check_include_file (unistd.h HAVE_UNISTD_H)
--check_include_file (unwind.h HAVE_UNWIND_H)
- check_include_file (pwd.h HAVE_PWD_H)
- 
- check_include_file_cxx ("ext/hash_map" HAVE_EXT_HASH_MAP)
-@@ -116,11 +114,9 @@ check_cxx_compiler_flag (-Wunnamed-type-
- # snprintf as an inline function
- check_symbol_exists (snprintf stdio.h HAVE_SNPRINTF)
- 
--check_library_exists (unwind get_static_proc_name "" HAVE_LIB_UNWIND)
- check_library_exists (dbghelp UnDecorateSymbolName "" HAVE_DBGHELP)
- 
--find_library (UNWIND_LIBRARY NAMES unwind DOC "unwind library")
--mark_as_advanced (UNWIND_LIBRARY)
-+find_package(Libunwind)
- 
- check_c_source_compiles ("
- #include <stdlib.h>
-@@ -471,9 +467,9 @@ add_library(glog::glog ALIAS glog)
- 
- set_target_properties (glog PROPERTIES POSITION_INDEPENDENT_CODE ON)
- 
--if (UNWIND_LIBRARY)
--  target_link_libraries (glog PUBLIC ${UNWIND_LIBRARY})
--endif (UNWIND_LIBRARY)
-+if (Libunwind_FOUND)
-+  target_link_libraries (glog PUBLIC unwind)
-+endif (Libunwind_FOUND)
- 
- if (HAVE_DBGHELP)
-    target_link_libraries (glog PUBLIC dbghelp)
-@@ -678,6 +674,7 @@ export (PACKAGE glog)
- install (FILES
-   ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake
-   ${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake
-+  ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindLibunwind.cmake
-   DESTINATION ${_glog_CMake_INSTALLDIR})
- 
- install (EXPORT glog-targets NAMESPACE glog:: DESTINATION
---- a/glog-config.cmake.in
-+++ b/glog-config.cmake.in
-@@ -8,4 +8,7 @@ include (CMakeFindDependencyMacro)
- 
- @gflags_DEPENDENCY@
- 
-+list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
-+find_dependency (Libunwind)
-+
- include ("${CMAKE_CURRENT_LIST_DIR}/glog-targets.cmake")
diff --git a/meta-openembedded/meta-oe/recipes-support/glog/glog/libexecinfo.patch b/meta-openembedded/meta-oe/recipes-support/glog/glog/libexecinfo.patch
index ae46d32..927c269 100644
--- a/meta-openembedded/meta-oe/recipes-support/glog/glog/libexecinfo.patch
+++ b/meta-openembedded/meta-oe/recipes-support/glog/glog/libexecinfo.patch
@@ -8,17 +8,17 @@
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -115,6 +115,7 @@ check_cxx_compiler_flag (-Wunnamed-type-
- check_symbol_exists (snprintf stdio.h HAVE_SNPRINTF)
+@@ -144,6 +144,7 @@ check_cxx_compiler_flag (-Wunnamed-type-
+ check_symbol_exists (snprintf cstdio HAVE_SNPRINTF)
  
  check_library_exists (dbghelp UnDecorateSymbolName "" HAVE_DBGHELP)
 +check_library_exists (execinfo backtrace "" HAVE_EXECINFO)
  
- find_package(Libunwind)
- 
-@@ -471,6 +472,10 @@ if (Libunwind_FOUND)
-   target_link_libraries (glog PUBLIC unwind)
- endif (Libunwind_FOUND)
+ check_cxx_source_compiles ("
+ #include <cstdlib>
+@@ -584,6 +585,10 @@ if (Unwind_FOUND)
+   set (Unwind_DEPENDENCY "find_dependency (Unwind ${Unwind_VERSION})")
+ endif (Unwind_FOUND)
  
 +if (HAVE_EXECINFO)
 +  target_link_libraries (glog PUBLIC execinfo)
diff --git a/meta-openembedded/meta-oe/recipes-support/glog/glog_0.4.0.bb b/meta-openembedded/meta-oe/recipes-support/glog/glog_0.5.0.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-support/glog/glog_0.4.0.bb
rename to meta-openembedded/meta-oe/recipes-support/glog/glog_0.5.0.bb
index 6b101ef..c4ba9f2 100644
--- a/meta-openembedded/meta-oe/recipes-support/glog/glog_0.4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/glog/glog_0.5.0.bb
@@ -8,11 +8,10 @@
 
 SRC_URI = " \
     git://github.com/google/glog.git;nobranch=1 \
-    file://0001-Find-Libunwind-during-configure.patch \
     file://libexecinfo.patch \
 "
 
-SRCREV = "96a2f23dca4cc7180821ca5f32e526314395d26a"
+SRCREV = "8f9ccfe770add9e4c64e9b25c102658e3c763b73"
 
 S = "${WORKDIR}/git"
 
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.3.9.bb
index d6ef98f..a54d8f8 100644
--- a/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.9.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.9.bb
@@ -1,8 +1,13 @@
 DESCRIPTION = "Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms."
 AUTHOR = "Benoît Jacob and Gaël Guennebaud and others"
 HOMEPAGE = "http://eigen.tuxfamily.org/"
-LICENSE = "MPL-2.0"
-LIC_FILES_CHKSUM = "file://COPYING.MPL2;md5=815ca599c9df247a0c7f619bab123dad"
+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.GPL;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
+                    file://COPYING.MINPACK;md5=5fe4603e80ef7390306f51ef74449bbd \
+"
 
 SRC_URI = "git://gitlab.com/libeigen/eigen.git;protocol=http;nobranch=1"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/files/run-ptest b/meta-openembedded/meta-oe/recipes-support/libgpiod/files/run-ptest
index 4cda05d..60c661f 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgpiod/files/run-ptest
+++ b/meta-openembedded/meta-oe/recipes-support/libgpiod/files/run-ptest
@@ -1,12 +1,19 @@
 #!/bin/sh
 
-testbin="gpiod-test"
+testbins="gpiod-test gpio-tools-test gpiod-cxx-test gpiod_py_test.py"
+
 ptestdir=$(dirname "$(readlink -f "$0")")
 cd $ptestdir/tests
 
-./$testbin
-if [ $? -ne 0 ]; then
-	echo "FAIL: $testbin"
-else
-	echo "PASS: $testbin"
-fi
+for testbin in $testbins; do
+	if test -e ./$testbin; then
+		./$testbin > ./$testbin.out
+		if [ $? -ne 0 ]; then
+			echo "FAIL: $testbin"
+		else
+			echo "PASS: $testbin"
+		fi
+	else
+		echo "SKIP: $testbin"
+	fi
+done
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.6.3.bb b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.6.3.bb
index d9c2517..be5be2f 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.6.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.6.3.bb
@@ -1,11 +1,12 @@
 SUMMARY = "C library and tools for interacting with the linux GPIO character device"
-AUTHOR = "Bartosz Golaszewski <bgolaszewski@baylibre.com>"
+AUTHOR = "Bartosz Golaszewski <brgl@bgdev.pl>"
 
 LICENSE = "LGPLv2.1+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2caced0b25dfefd4c601d92bd15116de"
 
-SRC_URI = "https://www.kernel.org/pub/software/libs/${BPN}/${BP}.tar.xz \
-           file://run-ptest \
+SRC_URI = " \
+    https://www.kernel.org/pub/software/libs/${BPN}/${BP}.tar.xz \
+    file://run-ptest \
 "
 
 SRC_URI[md5sum] = "28e79f6f70fee1da9079558d8b7b3736"
@@ -13,7 +14,7 @@
 
 inherit autotools pkgconfig python3native ptest
 
-PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,kmod udev glib-2.0 catch2"
+PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,kmod udev glib-2.0 catch2,bats python3-packaging"
 PACKAGECONFIG[cxx] = "--enable-bindings-cxx,--disable-bindings-cxx"
 PACKAGECONFIG[python3] = "--enable-bindings-python,--disable-bindings-python,python3"
 
@@ -26,19 +27,51 @@
 
 DEPENDS += "autoconf-archive-native"
 
-PACKAGES =+ "${PN}-tools libgpiodcxx"
-FILES_${PN}-tools = "${bindir}/*"
+PACKAGES =+ "${PN}-tools libgpiodcxx ${PN}-python"
+FILES_${PN}-tools = " \
+    ${bindir}/gpiodetect \
+    ${bindir}/gpioinfo \
+    ${bindir}/gpioget \
+    ${bindir}/gpioset \
+    ${bindir}/gpiofind \
+    ${bindir}/gpiomon \
+"
+FILES_${PN}-ptest += " \
+    ${bindir}/gpiod-test \
+    ${bindir}/gpio-tools-test \
+    ${bindir}/gpio-tools-test.bats \
+    ${bindir}/gpiod-cxx-test \
+    ${bindir}/gpiod_py_test.py \
+    ${libdir}/libgpiomockup.so.* \
+"
 FILES_libgpiodcxx = "${libdir}/libgpiodcxx.so.*"
-
-PACKAGES =+ "${PN}-python"
 FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}/*.so"
 FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
-RRECOMMENDS_PYTHON = "${@bb.utils.contains('PACKAGECONFIG', 'python3', '${PN}-python', '',d)}"
-RRECOMMENDS_${PN}-python += "${RRECOMMENDS_PYTHON}"
+
+RRECOMMENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'python3', '${PN}-python', '', d)}"
+RRECOMMENDS_${PN}-ptest += "kernel-module-gpio-mockup"
 
 PACKAGECONFIG_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'tests', '', d)}"
 
 do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp ${B}/tests/.libs/gpiod-test ${D}${PTEST_PATH}/tests/
+    install -d ${D}${PTEST_PATH}/tests
+
+    # These are the core C library tests
+    install -m 0755 ${B}/tests/.libs/gpiod-test ${D}${PTEST_PATH}/tests/
+
+    # Tools are always built so let's always install them for ptest even if
+    # we're not selecting libgpiod-tools.
+    install -m 0755 ${S}/tools/gpio-tools-test ${D}${PTEST_PATH}/tests/
+    install -m 0755 ${S}/tools/gpio-tools-test.bats ${D}${PTEST_PATH}/tests/
+    for tool in ${FILES_${PN}-tools}; do
+        install ${B}/tools/.libs/$(basename $tool) ${D}${PTEST_PATH}/tests/
+    done
+
+    if ${@bb.utils.contains('PACKAGECONFIG', 'cxx', 'true', 'false', d)}; then
+        install -m 0755 ${B}/bindings/cxx/tests/.libs/gpiod-cxx-test ${D}${PTEST_PATH}/tests/
+    fi
+
+    if ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'true', 'false', d)}; then
+        install -m 0755 ${S}/bindings/python/tests/gpiod_py_test.py ${D}${PTEST_PATH}/tests/
+    fi
 }
diff --git a/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.6.bb b/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.7.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.6.bb
rename to meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.7.bb
index 2f74013..2b87281 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.6.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.7.bb
@@ -7,5 +7,5 @@
 inherit meson gobject-introspection gtk-doc gettext vala
 
 SRC_URI = "git://github.com/hughsie/libgusb.git"
-SRCREV = "b0464454048cac6779d4d51f12fe7f37ae4bbd57"
+SRCREV = "ff9c606d9d72c7dd369ad220d92729556faaaf0c"
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/libiio/files/0001-python-Do-not-verify-whether-libiio-is-installed-whe.patch b/meta-openembedded/meta-oe/recipes-support/libiio/files/0001-python-Do-not-verify-whether-libiio-is-installed-whe.patch
new file mode 100644
index 0000000..4d3dcd5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libiio/files/0001-python-Do-not-verify-whether-libiio-is-installed-whe.patch
@@ -0,0 +1,34 @@
+From 717b0f46b23ddc042da481d1d446bdd1c6c49142 Mon Sep 17 00:00:00 2001
+From: Julien Malik <julien.malik@unseenlabs.fr>
+Date: Mon, 27 Jul 2020 14:34:44 +0200
+Subject: [PATCH] python: Do not verify whether libiio is installed when
+ cross-compiling
+
+This should fix #561
+
+Signed-off-by: Julien Malik <julien.malik@paraiso.me>
+---
+ bindings/python/setup.py.cmakein | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/bindings/python/setup.py.cmakein b/bindings/python/setup.py.cmakein
+index cd14e2e..96d58a8 100644
+--- a/bindings/python/setup.py.cmakein
++++ b/bindings/python/setup.py.cmakein
+@@ -54,6 +54,13 @@ class InstallWrapper(install):
+         install.run(self)
+ 
+     def _check_libiio_installed(self):
++        cross_compiling = ("${CMAKE_CROSSCOMPILING}" == "TRUE")
++        if cross_compiling:
++            # When cross-compiling, we generally cannot dlopen
++            # the libiio shared lib from the build platform.
++            # Simply skip this check in that case.
++            return
++
+         from platform import system as _system
+         from ctypes import CDLL as _cdll
+         from ctypes.util import find_library
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb b/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
index 6f37d1e..d2d6fd4 100644
--- a/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
@@ -7,7 +7,9 @@
 SRCREV = "565bf68eccfdbbf22cf5cb6d792e23de564665c7"
 PV = "0.21+git${SRCPV}"
 
-SRC_URI = "git://github.com/analogdevicesinc/libiio.git;protocol=https"
+SRC_URI = "git://github.com/analogdevicesinc/libiio.git;protocol=https \
+           file://0001-python-Do-not-verify-whether-libiio-is-installed-whe.patch \
+"
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_8.1.0.bb b/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_9.0.0.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_8.1.0.bb
rename to meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_9.0.0.bb
index 5245059..215f32a 100644
--- a/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_8.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_9.0.0.bb
@@ -6,7 +6,7 @@
 
 SRC_URI = "git://github.com/leethomason/tinyxml2.git"
 
-SRCREV = "3291390336141573e51dfa991b4179c8bcd8f306"
+SRCREV = "1dee28e51f9175a31955b9791c74c430fe13dc82"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/mg/mg_20210314.bb b/meta-openembedded/meta-oe/recipes-support/mg/mg_20210609.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-support/mg/mg_20210314.bb
rename to meta-openembedded/meta-oe/recipes-support/mg/mg_20210609.bb
index 9275dd2..eb7de12 100644
--- a/meta-openembedded/meta-oe/recipes-support/mg/mg_20210314.bb
+++ b/meta-openembedded/meta-oe/recipes-support/mg/mg_20210609.bb
@@ -5,7 +5,7 @@
 DEPENDS = "ncurses libbsd"
 SECTION = "console/editors"
 
-SRCREV = "598f7a028f01f85f0dee0e798753bccf93233add"
+SRCREV = "688f49cd67ab30dfa6482c74815e117cbf7af63a"
 SRC_URI = "git://github.com/hboetes/mg \
            file://0001-fileio-Include-sys-param.h-for-MAXNAMLEN.patch \
            file://0002-fileio-Define-DEFFILEMODE-if-platform-is-missing.patch \
diff --git a/meta-openembedded/meta-oe/recipes-support/monit/monit_5.27.2.bb b/meta-openembedded/meta-oe/recipes-support/monit/monit_5.28.0.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-support/monit/monit_5.27.2.bb
rename to meta-openembedded/meta-oe/recipes-support/monit/monit_5.28.0.bb
index b5e16d0..069d9f8 100644
--- a/meta-openembedded/meta-oe/recipes-support/monit/monit_5.27.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/monit/monit_5.28.0.bb
@@ -15,8 +15,7 @@
 	file://monitrc \
 "
 
-SRC_URI[md5sum] = "13a0804dae18ef08198c3ace72f9dd60"
-SRC_URI[sha256sum] = "d8809c78d5dc1ed7a7ba32a5a55c5114855132cc4da4805f8d3aaf8cf46eaa4c"
+SRC_URI[sha256sum] = "9fc6287fd9570b25a85c5d5bf988ee8bd4c54d0e9e01ff04cc4b9398a159849c"
 
 DEPENDS = "zlib bison-native libnsl2 flex-native openssl virtual/crypt"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/nano/nano_5.7.bb b/meta-openembedded/meta-oe/recipes-support/nano/nano_5.8.bb
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-support/nano/nano_5.7.bb
rename to meta-openembedded/meta-oe/recipes-support/nano/nano_5.8.bb
index 6a293c7..8ba4ca1 100644
--- a/meta-openembedded/meta-oe/recipes-support/nano/nano_5.7.bb
+++ b/meta-openembedded/meta-oe/recipes-support/nano/nano_5.8.bb
@@ -13,7 +13,7 @@
 PV_MAJOR = "${@d.getVar('PV').split('.')[0]}"
 
 SRC_URI = "https://nano-editor.org/dist/v${PV_MAJOR}/nano-${PV}.tar.xz"
-SRC_URI[sha256sum] = "d4b181cc2ec11def3711b4649e34f2be7a668e70ab506860514031d069cccafa"
+SRC_URI[sha256sum] = "e43b63db2f78336e2aa123e8d015dbabc1720a15361714bfd4b1bb4e5e87768c"
 
 UPSTREAM_CHECK_URI = "https://ftp.gnu.org/gnu/nano"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.64.bb b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.64.bb
index fce5a85..98be21d 100644
--- a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.64.bb
+++ b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.64.bb
@@ -45,6 +45,8 @@
 
 TARGET_CC_ARCH += "${LDFLAGS}"
 
+CFLAGS_append_class-native = " -D_XOPEN_SOURCE "
+
 do_configure_prepend_libc-musl () {
     sed -i -e '/-DHAVE_SYS_CDEFS_H/d' ${S}/nss/lib/dbm/config/config.mk
 }
@@ -277,3 +279,6 @@
 RDEPENDS_${PN}-smime = "perl"
 
 BBCLASSEXTEND = "native nativesdk"
+
+# CVE-2006-5201 affects only Sun Solaris
+CVE_CHECK_WHITELIST += "CVE-2006-5201"
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.05.0.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.07.0.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.05.0.bb
rename to meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.07.0.bb
index 4cfc5bd..975ab1d 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.05.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_21.07.0.bb
@@ -7,7 +7,7 @@
            file://0001-Do-not-overwrite-all-our-build-flags.patch \
            file://basename-include.patch \
            "
-SRC_URI[sha256sum] = "dafd537b680fad1215bc40fc53d1f38e8449d7c185bc60d5a89e1d26c90dbd8c"
+SRC_URI[sha256sum] = "e26ab29f68065de4d6562f0a3e2b5435a83ca92be573b99a1c81998fa286a4d4"
 
 DEPENDS = "fontconfig zlib cairo lcms glib-2.0"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/portaudio/portaudio-v19/0001-cmake-Use-GNUInstallDirs.patch b/meta-openembedded/meta-oe/recipes-support/portaudio/portaudio-v19/0001-cmake-Use-GNUInstallDirs.patch
new file mode 100644
index 0000000..892399d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/portaudio/portaudio-v19/0001-cmake-Use-GNUInstallDirs.patch
@@ -0,0 +1,49 @@
+From ced7af0420c1df0ac02f0c25e7c3534431ebd7fd Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 4 Jul 2021 17:09:49 -0700
+Subject: [PATCH] cmake: Use GNUInstallDirs
+
+Helps install cmakefiles in right libdir
+
+Upstream-Status: Submitted [https://github.com/PortAudio/portaudio/pull/610]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -6,6 +6,8 @@
+ 
+ CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
+ 
++include(GNUInstallDirs)
++
+ # Check if the user is building PortAudio stand-alone or as part of a larger
+ # project. If this is part of a larger project (i.e. the CMakeLists.txt has
+ # been imported by some other CMakeLists.txt), we don't want to trump over
+@@ -452,18 +454,18 @@ IF(NOT PA_OUTPUT_OSX_FRAMEWORK AND NOT P
+   CONFIGURE_FILE(cmake_support/portaudio-2.0.pc.in ${CMAKE_CURRENT_BINARY_DIR}/portaudio-2.0.pc @ONLY)
+   INSTALL(FILES README.md DESTINATION share/doc/portaudio)
+   INSTALL(FILES LICENSE.txt DESTINATION share/doc/portaudio)
+-  INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/portaudio-2.0.pc DESTINATION lib/pkgconfig)
++  INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/portaudio-2.0.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+   INSTALL(FILES ${PA_PUBLIC_INCLUDES} DESTINATION include)
+   INSTALL(TARGETS ${PA_TARGETS}
+     EXPORT portaudio-targets
+-    RUNTIME DESTINATION bin
+-    LIBRARY DESTINATION lib
+-    ARCHIVE DESTINATION lib)
+-  INSTALL(EXPORT portaudio-targets FILE "portaudioTargets.cmake" DESTINATION "lib/cmake/portaudio")
++    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
++  INSTALL(EXPORT portaudio-targets FILE "portaudioTargets.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/portaudio")
+   EXPORT(TARGETS ${PA_TARGETS} FILE "${PROJECT_BINARY_DIR}/cmake/portaudio/portaudioTargets.cmake")
+   INSTALL(FILES "${CMAKE_BINARY_DIR}/cmake/portaudio/portaudioConfig.cmake"
+                 "${CMAKE_BINARY_DIR}/cmake/portaudio/portaudioConfigVersion.cmake"
+-    DESTINATION "lib/cmake/portaudio")
++    DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/portaudio")
+ 
+   IF (NOT TARGET uninstall)
+     CONFIGURE_FILE(
diff --git a/meta-openembedded/meta-oe/recipes-support/portaudio/portaudio-v19_19.7.0.bb b/meta-openembedded/meta-oe/recipes-support/portaudio/portaudio-v19_19.7.0.bb
index 3a0f789..aec482b 100644
--- a/meta-openembedded/meta-oe/recipes-support/portaudio/portaudio-v19_19.7.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/portaudio/portaudio-v19_19.7.0.bb
@@ -8,6 +8,7 @@
 SRC_URI = " \
     git://github.com/PortAudio/portaudio.git \
     file://0001-Find-jack.patch \
+    file://0001-cmake-Use-GNUInstallDirs.patch \
 "
 SRCREV = "147dd722548358763a8b649b3e4b41dfffbcfbb6"
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.17.bb b/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.18.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.17.bb
rename to meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.18.bb
index ef78767..954da27 100644
--- a/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.17.bb
+++ b/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.18.bb
@@ -25,7 +25,7 @@
 DEPENDS_append_libc-musl = " libexecinfo"
 LDFLAGS_append_libc-musl = " -lexecinfo"
 
-SRCREV = "0ef1621b3e16b3168213147a2bfca39da2c2668f"
+SRCREV = "045862cc7d7dd986b349c68131df2f86b9b1cd9c"
 SRC_URI = "git://gitlab.com/Remmina/Remmina;protocol=https"
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb b/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb
index 33f5dcc..a81d8d6 100644
--- a/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb
@@ -22,8 +22,8 @@
                   perl-module-ipc-open3 \
                  "
 
-SRCREV = "a9e29850fc33c503c289e245c7bad350eed746d9"
-PV = "1.4.3+git${SRCPV}"
+SRCREV = "4dc82bfe6be3f83fcfa94946dcf6accfd6a18031"
+PV = "1.4.4+git${SRCPV}"
 
 SRC_URI = "git://github.com/DrHyde/${BPN};branch=master;protocol=git \
            file://configure-fix-cmd_rsync.patch \
diff --git a/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.37.bb b/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.38.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.37.bb
rename to meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.38.bb
index 4630eb0..d01ea42 100644
--- a/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.37.bb
+++ b/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.38.bb
@@ -10,7 +10,7 @@
 SRC_URI = "git://github.com/abrt/satyr.git \
            file://0002-fix-compile-failure-against-musl-C-library.patch \
 "
-SRCREV = "4a7d0a31cdeee23bb13739f57926188a795bdf25"
+SRCREV = "ad0030f071b7ce7eb748eca3c31cb381038e2b21"
 S = "${WORKDIR}/git"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
diff --git a/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.9.2.bb b/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.10.0.bb
similarity index 86%
rename from meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.9.2.bb
rename to meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.10.0.bb
index 16b7c3e..4cf0dee 100644
--- a/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.9.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_0.10.0.bb
@@ -4,7 +4,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
 
 SRC_URI += "git://github.com/martinmoene/span-lite"
-SRCREV = "126453198fe2236b31ddfa7353e95d3a06c478ab"
+SRCREV = "2987dd8d3b8fe7c861e3c3f879234cc1c412f03f"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb b/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
index cde26df..bb41a33 100644
--- a/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
@@ -4,9 +4,9 @@
 LICENSE="GPLv2"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8c16666ae6c159876a0ba63099614381"
 
-BPV = "0.8.7"
+BPV = "1.0.0"
 PV = "${BPV}"
-SRCREV = "67937230d70ad87c23c7116a72df83577e309f6f"
+SRCREV = "f5d87954bd9e13689481700105efe2f42199d364"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/tbb/tbb/0001-arena-Remove-dead-code.patch b/meta-openembedded/meta-oe/recipes-support/tbb/tbb/0001-arena-Remove-dead-code.patch
new file mode 100644
index 0000000..8a603ff
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/tbb/tbb/0001-arena-Remove-dead-code.patch
@@ -0,0 +1,40 @@
+From b94a1e3d6b5c733ba24cfa0d35450d8659d48289 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 4 Jun 2021 13:07:28 -0700
+Subject: [PATCH] arena: Remove dead code
+
+Fixes clang warning
+arena.cpp:226:19: error: variable 'drained' set b
+ut not used [-Werror,-Wunused-but-set-variable]
+|     std::intptr_t drained = 0;
+|                   ^
+
+Upstream-Status: Submitted [https://github.com/oneapi-src/oneTBB/pull/429]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/tbb/arena.cpp | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/tbb/arena.cpp b/src/tbb/arena.cpp
+index 4a9c0f8a..c8ed4999 100644
+--- a/src/tbb/arena.cpp
++++ b/src/tbb/arena.cpp
+@@ -232,14 +232,13 @@ void arena::free_arena () {
+     __TBB_ASSERT( !my_global_concurrency_mode, NULL );
+ #endif
+     poison_value( my_guard );
+-    std::intptr_t drained = 0;
+     for ( unsigned i = 0; i < my_num_slots; ++i ) {
+         // __TBB_ASSERT( !my_slots[i].my_scheduler, "arena slot is not empty" );
+         // TODO: understand the assertion and modify
+         // __TBB_ASSERT( my_slots[i].task_pool == EmptyTaskPool, NULL );
+         __TBB_ASSERT( my_slots[i].head == my_slots[i].tail, NULL ); // TODO: replace by is_quiescent_local_task_pool_empty
+         my_slots[i].free_task_pool();
+-        drained += mailbox(i).drain();
++        mailbox(i).drain();
+         my_slots[i].my_default_task_dispatcher->~task_dispatcher();
+     }
+     __TBB_ASSERT(my_fifo_task_stream.empty(), "Not all enqueued tasks were executed");
+-- 
+2.31.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.2.0.bb b/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.2.0.bb
index f4c52da..0b039a1 100644
--- a/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2021.2.0.bb
@@ -19,6 +19,7 @@
             file://0001-CMakeLists.txt-exclude-riscv64-riscv32.patch \
             file://0001-Disable-use-of-_tpause-instruction.patch \
             file://0001-set_my_tls_end_of_input-Use-an-arbitrary-but-valid-p.patch \
+            file://0001-arena-Remove-dead-code.patch \
 "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/40-linux-5.13-support.patch b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/40-linux-5.13-support.patch
new file mode 100644
index 0000000..e95e240
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/40-linux-5.13-support.patch
@@ -0,0 +1,276 @@
+Subject: Fix build errors with linux 5.13
+Origin: upstream, https://www.virtualbox.org/browser/vbox/trunk
+Bug: https://bugs.launchpad.net/bugs/1929193
+
+diff -urpN virtualbox-6.1.22-dfsg.orig/src/VBox/Additions/linux/drm/vbox_drv.h virtualbox-6.1.22-dfsg/src/VBox/Additions/linux/drm/vbox_drv.h
+--- virtualbox-6.1.22-dfsg.orig/src/VBox/Additions/linux/drm/vbox_drv.h	2021-04-28 16:24:47.000000000 +0000
++++ virtualbox-6.1.22-dfsg/src/VBox/Additions/linux/drm/vbox_drv.h	2021-06-23 10:08:44.431714404 +0000
+@@ -46,20 +41,20 @@
+  * Evaluates to true if the linux kernel version is equal or higher to the
+  * one specfied. */
+ #define RTLNX_VER_MIN(a_Major, a_Minor, a_Patch) \
+-    (LINUX_VERSION_CODE >= KERNEL_VERSION(a_Major, a_Minor, a_Patch))
++	(LINUX_VERSION_CODE >= KERNEL_VERSION(a_Major, a_Minor, a_Patch))
+ 
+ /** @def RTLNX_VER_MAX
+  * Evaluates to true if the linux kernel version is less to the one specfied
+  * (exclusive). */
+ #define RTLNX_VER_MAX(a_Major, a_Minor, a_Patch) \
+-    (LINUX_VERSION_CODE < KERNEL_VERSION(a_Major, a_Minor, a_Patch))
++	(LINUX_VERSION_CODE < KERNEL_VERSION(a_Major, a_Minor, a_Patch))
+ 
+ /** @def RTLNX_VER_RANGE
+  * Evaluates to true if the linux kernel version is equal or higher to the given
+  * minimum version and less (but not equal) to the maximum version (exclusive). */
+ #define RTLNX_VER_RANGE(a_MajorMin, a_MinorMin, a_PatchMin,  a_MajorMax, a_MinorMax, a_PatchMax) \
+-    (   LINUX_VERSION_CODE >= KERNEL_VERSION(a_MajorMin, a_MinorMin, a_PatchMin) \
+-     && LINUX_VERSION_CODE <  KERNEL_VERSION(a_MajorMax, a_MinorMax, a_PatchMax) )
++	(   LINUX_VERSION_CODE >= KERNEL_VERSION(a_MajorMin, a_MinorMin, a_PatchMin) \
++	 && LINUX_VERSION_CODE <  KERNEL_VERSION(a_MajorMax, a_MinorMax, a_PatchMax) )
+ 
+ 
+ /** @def RTLNX_RHEL_MIN
+@@ -70,7 +65,7 @@
+  */
+ #if defined(RHEL_MAJOR) && defined(RHEL_MINOR)
+ # define RTLNX_RHEL_MIN(a_iMajor, a_iMinor) \
+-     ((RHEL_MAJOR) > (a_iMajor) || ((RHEL_MAJOR) == (a_iMajor) && (RHEL_MINOR) >= (a_iMinor)))
++	 ((RHEL_MAJOR) > (a_iMajor) || ((RHEL_MAJOR) == (a_iMajor) && (RHEL_MINOR) >= (a_iMinor)))
+ #else
+ # define RTLNX_RHEL_MIN(a_iMajor, a_iMinor) (0)
+ #endif
+@@ -83,7 +78,7 @@
+  */
+ #if defined(RHEL_MAJOR) && defined(RHEL_MINOR)
+ # define RTLNX_RHEL_MAX(a_iMajor, a_iMinor) \
+-     ((RHEL_MAJOR) < (a_iMajor) || ((RHEL_MAJOR) == (a_iMajor) && (RHEL_MINOR) < (a_iMinor)))
++	 ((RHEL_MAJOR) < (a_iMajor) || ((RHEL_MAJOR) == (a_iMajor) && (RHEL_MINOR) < (a_iMinor)))
+ #else
+ # define RTLNX_RHEL_MAX(a_iMajor, a_iMinor) (0)
+ #endif
+@@ -95,7 +90,7 @@
+  */
+ #if defined(RHEL_MAJOR) && defined(RHEL_MINOR)
+ # define RTLNX_RHEL_RANGE(a_iMajorMin, a_iMinorMin,  a_iMajorMax, a_iMinorMax) \
+-     (RTLNX_RHEL_MIN(a_iMajorMin, a_iMinorMin) && RTLNX_RHEL_MAX(a_iMajorMax, a_iMinorMax))
++	 (RTLNX_RHEL_MIN(a_iMajorMin, a_iMinorMin) && RTLNX_RHEL_MAX(a_iMajorMax, a_iMinorMax))
+ #else
+ # define RTLNX_RHEL_RANGE(a_iMajorMin, a_iMinorMin,  a_iMajorMax, a_iMinorMax)  (0)
+ #endif
+@@ -173,7 +168,9 @@
+ #include <drm/ttm/ttm_bo_api.h>
+ #include <drm/ttm/ttm_bo_driver.h>
+ #include <drm/ttm/ttm_placement.h>
++#if RTLNX_VER_MAX(5,13,0)
+ #include <drm/ttm/ttm_memory.h>
++#endif
+ #if RTLNX_VER_MAX(5,12,0)
+ # include <drm/ttm/ttm_module.h>
+ #endif
+@@ -222,7 +219,7 @@ static inline void drm_gem_object_put(st
+ 				 VBVA_ADAPTER_INFORMATION_SIZE)
+ #define GUEST_HEAP_SIZE   VBVA_ADAPTER_INFORMATION_SIZE
+ #define GUEST_HEAP_USABLE_SIZE (VBVA_ADAPTER_INFORMATION_SIZE - \
+-				sizeof(HGSMIHOSTFLAGS))
++				sizeof(struct hgsmi_host_flags))
+ #define HOST_FLAGS_OFFSET GUEST_HEAP_USABLE_SIZE
+ 
+ /** How frequently we refresh if the guest is not providing dirty rectangles. */
+@@ -232,7 +229,7 @@ static inline void drm_gem_object_put(st
+ static inline void *devm_kcalloc(struct device *dev, size_t n, size_t size,
+ 				 gfp_t flags)
+ {
+-    return devm_kzalloc(dev, n * size, flags);
++	return devm_kzalloc(dev, n * size, flags);
+ }
+ #endif
+ 
+@@ -244,7 +241,7 @@ struct vbox_private {
+ 	u8 __iomem *guest_heap;
+ 	u8 __iomem *vbva_buffers;
+ 	struct gen_pool *guest_pool;
+-	struct VBVABUFFERCONTEXT *vbva_info;
++	struct vbva_buf_context *vbva_info;
+ 	bool any_pitch;
+ 	u32 num_crtcs;
+ 	/** Amount of available VRAM, including space used for buffers. */
+@@ -252,7 +249,7 @@ struct vbox_private {
+ 	/** Amount of available VRAM, not including space used for buffers. */
+ 	u32 available_vram_size;
+ 	/** Array of structures for receiving mode hints. */
+-	VBVAMODEHINT *last_mode_hints;
++	struct vbva_modehint *last_mode_hints;
+ 
+ 	struct vbox_fbdev *fbdev;
+ 
+@@ -263,7 +260,11 @@ struct vbox_private {
+ 		struct drm_global_reference mem_global_ref;
+ 		struct ttm_bo_global_ref bo_global_ref;
+ #endif
++#if RTLNX_VER_MIN(5,13,0) 
++		struct ttm_device bdev; 
++#else
+ 		struct ttm_bo_device bdev;
++#endif
+ 		bool mm_initialised;
+ 	} ttm;
+ 
+diff -urpN virtualbox-6.1.22-dfsg.orig/src/VBox/Additions/linux/drm/vbox_ttm.c virtualbox-6.1.22-dfsg/src/VBox/Additions/linux/drm/vbox_ttm.c
+--- virtualbox-6.1.22-dfsg.orig/src/VBox/Additions/linux/drm/vbox_ttm.c	2021-04-28 16:24:47.000000000 +0000
++++ virtualbox-6.1.22-dfsg/src/VBox/Additions/linux/drm/vbox_ttm.c	2021-06-23 10:08:07.164057918 +0000
+@@ -48,7 +43,11 @@
+ #endif
+ 
+ 
++#if RTLNX_VER_MIN(5,13,0)
++static inline struct vbox_private *vbox_bdev(struct ttm_device *bd)
++#else
+ static inline struct vbox_private *vbox_bdev(struct ttm_bo_device *bd)
++#endif
+ {
+ 	return container_of(bd, struct vbox_private, ttm.bdev);
+ }
+@@ -188,7 +187,7 @@ static int vbox_ttm_io_mem_reserve(struc
+ 	mem->bus.size = mem->num_pages << PAGE_SHIFT;
+ 	mem->bus.base = 0;
+ 	mem->bus.is_iomem = false;
+-	if (!(man->flags & TTM_MEMTYPE_FLAG_MAPPABLE))
++	 if (!(man->flags & TTM_MEMTYPE_FLAG_MAPPABLE))
+ 		return -EINVAL;
+ 	switch (mem->mem_type) {
+ 	case TTM_PL_SYSTEM:
+@@ -205,8 +204,13 @@ static int vbox_ttm_io_mem_reserve(struc
+ 	return 0;
+ }
+ #else
++# if RTLNX_VER_MAX(5,13,0)
+ static int vbox_ttm_io_mem_reserve(struct ttm_bo_device *bdev,
+ 				   struct ttm_resource *mem)
++# else /* > 5.13.0 */
++static int vbox_ttm_io_mem_reserve(struct ttm_device *bdev,
++				   struct ttm_resource *mem)
++# endif /* > 5.13.0 */
+ {
+ 	struct vbox_private *vbox = vbox_bdev(bdev);
+ 	mem->bus.addr = NULL;
+@@ -241,7 +245,12 @@ static int vbox_ttm_io_mem_reserve(struc
+ 
+ 
+ 
+-#if RTLNX_VER_MIN(5,10,0)
++#if RTLNX_VER_MIN(5,13,0)
++static void vbox_ttm_io_mem_free(struct ttm_device *bdev,
++				 struct ttm_resource *mem)
++{
++}
++#elif RTLNX_VER_MIN(5,10,0)
+ static void vbox_ttm_io_mem_free(struct ttm_bo_device *bdev,
+ 				 struct ttm_resource *mem)
+ {
+@@ -253,7 +262,13 @@ static void vbox_ttm_io_mem_free(struct
+ }
+ #endif
+ 
+-#if RTLNX_VER_MIN(5,10,0)
++#if RTLNX_VER_MIN(5,13,0)
++static void vbox_ttm_tt_destroy(struct ttm_device *bdev, struct ttm_tt *tt)
++{
++	ttm_tt_fini(tt);
++	kfree(tt);
++}
++#elif RTLNX_VER_MIN(5,10,0)
+ static void vbox_ttm_tt_destroy(struct ttm_bo_device *bdev, struct ttm_tt *tt)
+ {
+ 	ttm_tt_fini(tt);
+@@ -333,7 +348,11 @@ static int vbox_bo_move(struct ttm_buffe
+ }
+ #endif
+ 
++#if RTLNX_VER_MIN(5,13,0)
++static struct ttm_device_funcs vbox_bo_driver = {
++#else /* < 5.13.0 */
+ static struct ttm_bo_driver vbox_bo_driver = {
++#endif /* < 5.13.0 */
+ 	.ttm_tt_create = vbox_ttm_tt_create,
+ #if RTLNX_VER_MIN(5,10,0)
+ 	.ttm_tt_destroy = vbox_ttm_tt_destroy,
+@@ -370,14 +389,22 @@ int vbox_mm_init(struct vbox_private *vb
+ {
+ 	int ret;
+ 	struct drm_device *dev = vbox->dev;
++#if RTLNX_VER_MIN(5,13,0)
++	struct ttm_device *bdev = &vbox->ttm.bdev;
++#else
+ 	struct ttm_bo_device *bdev = &vbox->ttm.bdev;
++#endif
+ 
+ #if RTLNX_VER_MAX(5,0,0) && !RTLNX_RHEL_MAJ_PREREQ(7,7) && !RTLNX_RHEL_MAJ_PREREQ(8,1)
+ 	ret = vbox_ttm_global_init(vbox);
+ 	if (ret)
+ 		return ret;
+ #endif
++#if RTLNX_VER_MIN(5,13,0)
++	ret = ttm_device_init(&vbox->ttm.bdev,
++#else
+ 	ret = ttm_bo_device_init(&vbox->ttm.bdev,
++#endif
+ #if RTLNX_VER_MAX(5,0,0) && !RTLNX_RHEL_MAJ_PREREQ(7,7) && !RTLNX_RHEL_MAJ_PREREQ(8,1)
+ 				 vbox->ttm.bo_global_ref.ref.object,
+ #endif
+@@ -429,7 +456,11 @@ int vbox_mm_init(struct vbox_private *vb
+ 	return 0;
+ 
+ err_device_release:
++#if RTLNX_VER_MIN(5,13,0)
++	ttm_device_fini(&vbox->ttm.bdev);
++#else
+ 	ttm_bo_device_release(&vbox->ttm.bdev);
++#endif
+ #if RTLNX_VER_MAX(5,0,0) && !RTLNX_RHEL_MAJ_PREREQ(7,7) && !RTLNX_RHEL_MAJ_PREREQ(8,1)
+ err_ttm_global_release:
+ 	vbox_ttm_global_release(vbox);
+@@ -446,7 +477,11 @@ void vbox_mm_fini(struct vbox_private *v
+ #else
+ 	arch_phys_wc_del(vbox->fb_mtrr);
+ #endif
++#if RTLNX_VER_MIN(5,13,0)
++        ttm_device_fini(&vbox->ttm.bdev);
++#else
+ 	ttm_bo_device_release(&vbox->ttm.bdev);
++#endif
+ #if RTLNX_VER_MAX(5,0,0) && !RTLNX_RHEL_MAJ_PREREQ(7,7) && !RTLNX_RHEL_MAJ_PREREQ(8,1)
+ 	vbox_ttm_global_release(vbox);
+ #endif
+@@ -528,7 +563,9 @@ int vbox_bo_create(struct drm_device *de
+ {
+ 	struct vbox_private *vbox = dev->dev_private;
+ 	struct vbox_bo *vboxbo;
++#if RTLNX_VER_MAX(5,13,0)
+ 	size_t acc_size;
++#endif
+ 	int ret;
+ 
+ 	vboxbo = kzalloc(sizeof(*vboxbo), GFP_KERNEL);
+@@ -551,16 +588,20 @@ int vbox_bo_create(struct drm_device *de
+ 
+ 	vbox_ttm_placement(vboxbo, VBOX_MEM_TYPE_VRAM | VBOX_MEM_TYPE_SYSTEM);
+ 
++#if RTLNX_VER_MAX(5,13,0)
+ 	acc_size = ttm_bo_dma_acc_size(&vbox->ttm.bdev, size,
+ 				       sizeof(struct vbox_bo));
++#endif
+ 
+ 	ret = ttm_bo_init(&vbox->ttm.bdev, &vboxbo->bo, size,
+ 			  ttm_bo_type_device, &vboxbo->placement,
+ #if RTLNX_VER_MAX(4,17,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5)
+ 			  align >> PAGE_SHIFT, false, NULL, acc_size,
+-#else
++#elif RTLNX_VER_MAX(5,13,0) /* < 5.13.0 */
+ 			  align >> PAGE_SHIFT, false, acc_size,
+-#endif
++#else /* > 5.13.0 */
++			  align >> PAGE_SHIFT, false,
++#endif /* > 5.13.0 */
+ #if RTLNX_VER_MIN(3,18,0) || RTLNX_RHEL_MAJ_PREREQ(7,2)
+ 			  NULL, NULL, vbox_bo_ttm_destroy);
+ #else
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.22.bb b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.22.bb
index a074d0a..19b8f8f 100644
--- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.22.bb
+++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.22.bb
@@ -13,6 +13,7 @@
 
 SRC_URI = "http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.tar.bz2 \
     file://Makefile.utils \
+    file://40-linux-5.13-support.patch \
     file://add__divmoddi4.patch \
 "
 SRC_URI[md5sum] = "abb1a20021e5915fe38c666e8c11cf80"
diff --git a/meta-openembedded/meta-oe/recipes-test/bats/bats_1.3.0.bb b/meta-openembedded/meta-oe/recipes-test/bats/bats_1.3.0.bb
index 8190a5e..39a0273 100644
--- a/meta-openembedded/meta-oe/recipes-test/bats/bats_1.3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-test/bats/bats_1.3.0.bb
@@ -7,6 +7,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=2970203aedf9e829edb96a137a4fe81b"
 
 SRC_URI = "git://github.com/bats-core/bats-core.git \
+           file://0001-install.sh-consider-multilib.patch \
           "
 # v1.3.0
 SRCREV = "9086c47854652f2731861b40385689c85f12103f"
@@ -15,7 +16,7 @@
 
 do_install() {
 	# Just a bunch of bash scripts to install
-	${S}/install.sh ${D}${prefix}
+	${S}/install.sh ${D}${prefix} ${baselib}
 }
 
 RDEPENDS_${PN} = "bash"
diff --git a/meta-openembedded/meta-oe/recipes-test/bats/files/0001-install.sh-consider-multilib.patch b/meta-openembedded/meta-oe/recipes-test/bats/files/0001-install.sh-consider-multilib.patch
new file mode 100644
index 0000000..c7393ca
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-test/bats/files/0001-install.sh-consider-multilib.patch
@@ -0,0 +1,43 @@
+From 6e3d01f1ff199383b78a7504858c374fbce05f4e Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Thu, 10 Jun 2021 11:11:07 +0800
+Subject: [PATCH] install.sh: consider multilib
+
+It may install files to /usr/lib64 when multilib is enabled. Add an
+optional parameter for install.sh to support it.
+
+Upstream-Status: Submitted [https://github.com/bats-core/bats-core/pull/452]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ install.sh | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/install.sh b/install.sh
+index e660866..d91159e 100755
+--- a/install.sh
++++ b/install.sh
+@@ -4,6 +4,7 @@ set -e
+ 
+ BATS_ROOT="${0%/*}"
+ PREFIX="$1"
++BASELIB="${2:-lib}"
+ 
+ if [[ -z "$PREFIX" ]]; then
+   printf '%s\n' \
+@@ -12,10 +13,10 @@ if [[ -z "$PREFIX" ]]; then
+   exit 1
+ fi
+ 
+-install -d -m 755 "$PREFIX"/{bin,libexec/bats-core,lib/bats-core,share/man/man{1,7}}
++install -d -m 755 "$PREFIX"/{bin,libexec/bats-core,${BASELIB}/bats-core,share/man/man{1,7}}
+ install -m 755 "$BATS_ROOT/bin"/* "$PREFIX/bin"
+ install -m 755 "$BATS_ROOT/libexec/bats-core"/* "$PREFIX/libexec/bats-core"
+-install -m 755 "$BATS_ROOT/lib/bats-core"/* "$PREFIX/lib/bats-core"
++install -m 755 "$BATS_ROOT/lib/bats-core"/* "$PREFIX/${BASELIB}/bats-core"
+ install -m 644 "$BATS_ROOT/man/bats.1" "$PREFIX/share/man/man1"
+ install -m 644 "$BATS_ROOT/man/bats.7" "$PREFIX/share/man/man7"
+ 
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-test/cpputest/cpputest_4.0.bb b/meta-openembedded/meta-oe/recipes-test/cpputest/cpputest_4.0.bb
new file mode 100644
index 0000000..a17c065
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-test/cpputest/cpputest_4.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "CppUTest unit testing and mocking framework for C/C++"
+HOMEPAGE = "http://cpputest.github.io/"
+SECTION = "devel"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ce5d5f1fe02bcd1343ced64a06fd4177"
+
+SRC_URI = "git://github.com/cpputest/cpputest.git;protocol=https"
+SRCREV = "67d2dfd41e13f09ff218aa08e2d35f1c32f032a1"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+EXTRA_OECMAKE = "-DLONGLONG=ON \
+                 -DC++11=ON \
+                 -DTESTS=OFF \
+                 -DEXTENSIONS=OFF \
+                 "
+
+FILES_${PN}-dev += "${libdir}/CppUTest/cmake/*"
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-Remove-Werror-from-build.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-Remove-Werror-from-build.patch
index 906ec99..5ccd461 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-Remove-Werror-from-build.patch
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-Remove-Werror-from-build.patch
@@ -11,12 +11,12 @@
  3 files changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/src/Makefile.am b/src/Makefile.am
-index a26a197b..70a28174 100644
+index f8066af..6b979f8 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
-@@ -14,7 +14,7 @@ AM_CPPFLAGS = \
- 	`pkg-config --silence-errors --cflags json`	\
- 	`pkg-config --silence-errors --cflags json-c`	\
+@@ -12,7 +12,7 @@ AM_CPPFLAGS = \
+ 	-I$(top_srcdir)/src/acpica/source/compiler	\
+ 	-I$(top_srcdir)/efi_runtime			\
  	-pthread `pkg-config --cflags glib-2.0 gio-2.0` \
 -	-Wall -Werror -Wextra				\
 +	-Wall -Wextra					\
@@ -24,7 +24,7 @@
  	-Wfloat-equal -Wmissing-declarations		\
  	-Wno-long-long -Wredundant-decls -Wshadow	\
 diff --git a/src/lib/src/Makefile.am b/src/lib/src/Makefile.am
-index 55c52b41..b85d0101 100644
+index 55c52b4..50efa97 100644
 --- a/src/lib/src/Makefile.am
 +++ b/src/lib/src/Makefile.am
 @@ -25,7 +25,7 @@ AM_CPPFLAGS = \
@@ -32,23 +32,23 @@
  	`pkg-config --cflags glib-2.0 gio-2.0` 		\
  	-DDATAROOTDIR=\"$(datarootdir)\"		\
 -	-Wall -Werror -Wextra				\
-+	-Wall -Wextra				\
++	-Wall -Wextra					\
  	-Wno-address-of-packed-member
  
  pkglib_LTLIBRARIES = libfwts.la
 diff --git a/src/utilities/Makefile.am b/src/utilities/Makefile.am
-index ecc25f0a..129c1036 100644
+index a7d9b9c..e1bf141 100644
 --- a/src/utilities/Makefile.am
 +++ b/src/utilities/Makefile.am
 @@ -16,7 +16,7 @@
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  #
  
--AM_CPPFLAGS = -Wall -Werror -Wextra -DDATAROOTDIR=\"$(datarootdir)\" \
-+AM_CPPFLAGS = -Wall -Wextra -DDATAROOTDIR=\"$(datarootdir)\" \
- 	`pkg-config --silence-errors --cflags json` \
- 	`pkg-config --silence-errors --cflags json-c` \
- 	-I../lib/include
+-AM_CPPFLAGS = -Wall -Werror -Wextra -DDATAROOTDIR=\"$(datarootdir)\" 	\
++AM_CPPFLAGS = -Wall -Wextra -DDATAROOTDIR=\"$(datarootdir)\" 	\
+ 	-I$(srcdir)/../lib/include
+ 
+ bin_PROGRAMS = kernelscan
 -- 
 2.25.1
 
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts_21.03.00.bb b/meta-openembedded/meta-oe/recipes-test/fwts/fwts_21.06.00.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-test/fwts/fwts_21.03.00.bb
rename to meta-openembedded/meta-oe/recipes-test/fwts/fwts_21.06.00.bb
index aa7d422..21d2563 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts_21.03.00.bb
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts_21.06.00.bb
@@ -13,7 +13,7 @@
            file://0005-Undefine-PAGE_SIZE.patch \
            file://0006-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch \
            "
-SRC_URI[sha256sum] = "c22dcba2572e4237bf2fe9ab579e195cf051d3a99b2c07ab58f757cae02d24fb"
+SRC_URI[sha256sum] = "ca43439707976f6664fe3f6eb7f356a51ac7d7f8a4e246ef4d1b16305e066909"
 
 COMPATIBLE_HOST = "(i.86|x86_64|aarch64|powerpc64).*-linux"
 
diff --git a/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb b/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb
index 2e0fecf..3e1fc4f 100644
--- a/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb
+++ b/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb
@@ -4,12 +4,12 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=cbbd27594afd089daa160d3a16dd515a"
 
-PV = "1.10.0+git${SRCPV}"
+PV = "1.11.0+git${SRCPV}"
 
 PROVIDES += "gmock gtest"
 
 S = "${WORKDIR}/git"
-SRCREV = "662fe38e44900c007eccb65a5d2ea19df7bd520e"
+SRCREV = "e2239ee6043f73722e7aa812a459f54a28552929"
 SRC_URI = "git://github.com/google/googletest.git"
 
 inherit cmake
diff --git a/meta-openembedded/meta-perl/README b/meta-openembedded/meta-perl/README
index 67f2910..2419ae2 100644
--- a/meta-openembedded/meta-perl/README
+++ b/meta-openembedded/meta-perl/README
@@ -78,7 +78,7 @@
 '[meta-perl]' in the subject.
 
 When sending single patches, please using something like:
-'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-perl][PATCH'
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-perl][PATCH'
 
 Layer maintainers:
     Hongxu Jia <hongxu.jia@windriver.com>
@@ -90,4 +90,3 @@
 All metadata is MIT licensed unless otherwise stated. Source code included
 in tree for individual recipes is under the LICENSE stated in each recipe
 (.bb file) unless otherwise stated.
-
diff --git a/meta-openembedded/meta-perl/recipes-extended/logcheck/logcheck_1.3.20.bb b/meta-openembedded/meta-perl/recipes-extended/logcheck/logcheck_1.3.23.bb
similarity index 94%
rename from meta-openembedded/meta-perl/recipes-extended/logcheck/logcheck_1.3.20.bb
rename to meta-openembedded/meta-perl/recipes-extended/logcheck/logcheck_1.3.23.bb
index 10b281a..bb9faa2 100644
--- a/meta-openembedded/meta-perl/recipes-extended/logcheck/logcheck_1.3.20.bb
+++ b/meta-openembedded/meta-perl/recipes-extended/logcheck/logcheck_1.3.23.bb
@@ -14,8 +14,7 @@
 SRC_URI = "${DEBIAN_MIRROR}/main/l/${BPN}/${BPN}_${PV}.tar.xz \
            file://99_logcheck \
 "
-SRC_URI[md5sum] = "1c6e9a97f9cc485353c25147cb99fb25"
-SRC_URI[sha256sum] = "9fb6d02b933470d0b1d1efb54ea186e0d0d27336f9d146be592f65ce60dfb3e6"
+SRC_URI[sha256sum] = "a2188ba549fff4412c82074b271884ff66d25f3fdb2a41916e817ce676855b29"
 
 S = "${WORKDIR}/${BPN}"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcgi/libcgi-perl_4.51.bb b/meta-openembedded/meta-perl/recipes-perl/libcgi/libcgi-perl_4.53.bb
similarity index 90%
rename from meta-openembedded/meta-perl/recipes-perl/libcgi/libcgi-perl_4.51.bb
rename to meta-openembedded/meta-perl/recipes-perl/libcgi/libcgi-perl_4.53.bb
index e3a8367..2f1a860 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libcgi/libcgi-perl_4.51.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libcgi/libcgi-perl_4.53.bb
@@ -10,8 +10,7 @@
 
 SRC_URI = "http://search.cpan.org/CPAN/authors/id/L/LE/LEEJO/CGI-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "87b6cf5bc68739c9310ca501adad998e"
-SRC_URI[sha256sum] = "0bd215e7012f9f52e6a7d3fe695ee30ef959d796e8e53472fa0ed8c53fba600a"
+SRC_URI[sha256sum] = "c67e732f3c96bcb505405fd944f131fe5c57b46e5d02885c00714c452bf14e60"
 
 S = "${WORKDIR}/CGI-${PV}"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-guess-perl_0.12.bb b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-guess-perl_0.13.bb
similarity index 85%
rename from meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-guess-perl_0.12.bb
rename to meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-guess-perl_0.13.bb
index 6f35e39..b0a1937 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-guess-perl_0.12.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-guess-perl_0.13.bb
@@ -5,8 +5,7 @@
 
 SRC_URI = "http://www.cpan.org/modules/by-module/Crypt/Crypt-OpenSSL-Guess-${PV}.tar.gz "
 
-SRC_URI[md5sum] = "9e86baf96828a38c967003a5e66f0c39"
-SRC_URI[sha256sum] = "0a18d18768cf42b49b15c9dea626199dc74346bbbc76acd3d817b9c1d2bd471d"
+SRC_URI[sha256sum] = "87c1dd7f0f80fcd3d1396bce9fd9962e7791e748dc0584802f8d10cc9585e743"
 
 DEPENDS += "openssl"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.21.bb b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.23.bb
similarity index 88%
rename from meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.21.bb
rename to meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.23.bb
index a11b4d2..876b75c 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.21.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.23.bb
@@ -12,8 +12,7 @@
 LIC_FILES_CHKSUM = "file://README;beginline=81;endline=84;md5=84c0390b90ea8c6702ce659b67bed699"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/E/ET/ETJ/ExtUtils-CppGuess-${PV}.tar.gz"
-SRC_URI[md5sum] = "62bdf731bcbe988d07486836e11585f7"
-SRC_URI[sha256sum] = "ff629178321a1e591b83f809712593eae4408a413aa448654bce59b156f24153"
+SRC_URI[sha256sum] = "f96c48984eb6d8efb7d933b34f361d0c8b38335e3e5382e9aeccc0aa519a002c"
 
 S = "${WORKDIR}/ExtUtils-CppGuess-${PV}"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_2.068.bb b/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_2.071.bb
similarity index 90%
rename from meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_2.068.bb
rename to meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_2.071.bb
index fc9786b..4a98ac3 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_2.068.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_2.071.bb
@@ -22,8 +22,7 @@
 SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SU/SULLR/IO-Socket-SSL-${PV}.tar.gz \
            file://run-ptest \
           "
-SRC_URI[md5sum] = "4230c829c8875889848093b2b46a7284"
-SRC_URI[sha256sum] = "4420fc0056f1827b4dd1245eacca0da56e2182b4ef6fc078f107dc43c3fb8ff9"
+SRC_URI[sha256sum] = "40da40948ecc9c787ed39c95715872679eebfd54243721174993a2003e32ab0a"
 
 S = "${WORKDIR}/IO-Socket-SSL-${PV}"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.004000.bb b/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.005004.bb
similarity index 90%
rename from meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.004000.bb
rename to meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.005004.bb
index dbad74d..ecc4d87c 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.004000.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.005004.bb
@@ -10,8 +10,7 @@
 LIC_FILES_CHKSUM = "file://README;beginline=742;endline=787;md5=0e7ee44f5ce5e9b84619cd198caad1d6"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/H/HA/HAARG/Moo-${PV}.tar.gz"
-SRC_URI[md5sum] = "e542104553d616b15631b5c66ccee904"
-SRC_URI[sha256sum] = "323240d000394cf38ec42e865b05cb8928f625c82c9391cd2cdc72b33c51b834"
+SRC_URI[sha256sum] = "e3030b80bd554a66f6b3c27fd53b1b5909d12af05c4c11ece9a58f8d1e478928"
 
 S = "${WORKDIR}/Moo-${PV}"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_1.26.bb b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_1.31.bb
similarity index 92%
rename from meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_1.26.bb
rename to meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_1.31.bb
index 3b96077..c806456 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_1.26.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-dns-perl_1.31.bb
@@ -9,8 +9,7 @@
 
 SRC_URI = "http://search.cpan.org/CPAN/authors/id/N/NL/NLNETLABS/Net-DNS-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "6db2562b6c42619e9c7d7e62422af8c4"
-SRC_URI[sha256sum] = "eabaecd0fdb3e6adef8c9e016e8509319f19caa8c76836253f7db72bafe56498"
+SRC_URI[sha256sum] = "00024a8e371605c6d8422a27a0a87af8b7cf66f26502102e68ddd4baf7cfc615"
 
 UPSTREAM_CHECK_REGEX = "Net\-DNS\-(?P<pver>(\d+\.\d+))(?!_\d+).tar"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-telnet-perl_3.04.bb b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-telnet-perl_3.05.bb
similarity index 78%
rename from meta-openembedded/meta-perl/recipes-perl/libnet/libnet-telnet-perl_3.04.bb
rename to meta-openembedded/meta-perl/recipes-perl/libnet/libnet-telnet-perl_3.05.bb
index 652e8c9..c5d8271 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-telnet-perl_3.04.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-telnet-perl_3.05.bb
@@ -12,11 +12,11 @@
 SECTION = "Development/Libraries"
 
 LICENSE = "Artistic-1.0|GPLv1+"
-LIC_FILES_CHKSUM = "file://README;beginline=4;endline=7;md5=3fd238bfb6ee1810cb15d5d95e07b0f5"
+LIC_FILES_CHKSUM = "file://README;beginline=4;endline=7;md5=e94ab3b72335e3cdadd6c1ff736dd714"
 
 SRC_URI = "http://search.cpan.org/CPAN/authors/id/J/JR/JROGERS/Net-Telnet-${PV}.tar.gz"
-SRC_URI[md5sum] = "d2514080116c1b0fa5f96295c84538e3"
-SRC_URI[sha256sum] = "e64d567a4e16295ecba949368e7a6b8b5ae2a16b3ad682121d9b007dc5d2a37a"
+SRC_URI[md5sum] = "c8573c57a2d9469f038c40ac284b1e5f"
+SRC_URI[sha256sum] = "677f68ba2cd2a824fae323fa82e183bf7e3d03c3c499c91d923bd6283796a743"
 
 S = "${WORKDIR}/Net-Telnet-${PV}"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.028.bb b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.030.bb
similarity index 88%
rename from meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.028.bb
rename to meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.030.bb
index 7cd07b2..78110ca 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.028.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.030.bb
@@ -19,8 +19,7 @@
 
 SRC_URI = "https://cpan.metacpan.org/authors/id/E/ET/ETHER/Test-Warnings-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "cd007342017fedfb02d6fde75602e473"
-SRC_URI[sha256sum] = "26fda9f8d279e943d27e43a4a3a5cea8a6592cd36e7308695f8dc6602262c0e0"
+SRC_URI[sha256sum] = "89a4947ddf1564ae01122275584433d7f6c4370370bcf3768922d796956ae24f"
 
 S = "${WORKDIR}/Test-Warnings-${PV}"
 
diff --git a/meta-openembedded/meta-python/README b/meta-openembedded/meta-python/README
index ca0a290..df6abe0 100644
--- a/meta-openembedded/meta-python/README
+++ b/meta-openembedded/meta-python/README
@@ -37,8 +37,8 @@
 Send pull requests to openembedded-devel@lists.openembedded.org with
 '[meta-python]' in the subject.
 
-When sending single patches, please use something like: 
-'git send-email -M -1 --to=openembedded-devel@lists.openembedded.org --subject-prefix=meta-python][PATCH'
+When sending single patches, please use something like:
+git send-email -M -1 --to=openembedded-devel@lists.openembedded.org --subject-prefix='meta-python][PATCH'
 
 Maintenance
 -------------------------
@@ -47,4 +47,3 @@
         Tim "moto-timo" Orling <TicoTimo@gmail.com>
         Derek Straka <derek@asterius.io>
         Trevor Gamblin <trevor.gamblin@windriver.com>
-
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-priority/python3-priority_1.3.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-priority/python3-priority_2.0.0.bb
similarity index 63%
rename from meta-openembedded/meta-python/recipes-connectivity/python-priority/python3-priority_1.3.0.bb
rename to meta-openembedded/meta-python/recipes-connectivity/python-priority/python3-priority_2.0.0.bb
index 5d84571..93b694c 100644
--- a/meta-openembedded/meta-python/recipes-connectivity/python-priority/python3-priority_1.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-priority/python3-priority_2.0.0.bb
@@ -4,7 +4,6 @@
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ae57d8a09fc8b6b164d7357339619045"
 
-SRC_URI[md5sum] = "4f1ff52f7fa448e9d9cb46337ae86d1e"
-SRC_URI[sha256sum] = "6bc1961a6d7fcacbfc337769f1a382c8e746566aaa365e78047abe9f66b2ffbe"
+SRC_URI[sha256sum] = "c965d54f1b8d0d0b19479db3924c7c36cf672dbf2aec92d43fbdaf4492ba18c0"
 
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.13.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.13.0.bb
index 80f1a50..c17a602 100644
--- a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.13.0.bb
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.13.0.bb
@@ -16,3 +16,5 @@
     ${PYTHON_PN}-stringold \
     ${PYTHON_PN}-threading \
 "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python3-pytun/python3-pytun_2.3.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python3-pytun/python3-pytun_2.3.0.bb
deleted file mode 100644
index bc11d70..0000000
--- a/meta-openembedded/meta-python/recipes-connectivity/python3-pytun/python3-pytun_2.3.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-SUMMARY = "Python TUN/TAP tunnel module"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=13f7629e8e4989b66b4a913ab05a91de"
-
-SRC_URI[md5sum] = "adcaeea56d0ed06814487cdbde32d198"
-SRC_URI[sha256sum] = "5ead86b3391acef239535ebcabeb04d2cdc6b40ab14580d28c6da193c2d1fe53"
-
-PYPI_PACKAGE = "python-pytun"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python3-pytun/python3-pytun_2.4.1.bb b/meta-openembedded/meta-python/recipes-connectivity/python3-pytun/python3-pytun_2.4.1.bb
new file mode 100644
index 0000000..08ec2cf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python3-pytun/python3-pytun_2.4.1.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Python TUN/TAP tunnel module"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=13f7629e8e4989b66b4a913ab05a91de"
+
+SRC_URI[sha256sum] = "20b53ea7a09dfe173c00ec0a00eea508b05e959f5dc4b4bb698aa52252192f8f"
+
+PYPI_PACKAGE = "python-pytun"
+
+inherit pypi setuptools3
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 9f3d482..063b6e4 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
@@ -34,6 +34,7 @@
     python3-arpeggio \
     python3-asciitree \
     python3-asn1crypto \
+    python3-aspectlib \
     python3-astor \
     python3-astroid \
     python3-asttokens \
@@ -114,10 +115,13 @@
     python3-engineio \
     python3-et-xmlfile \
     python3-evdev \
+    python3-execnet \
     python3-fann2 \
     python3-fasteners \
+    python3-fastjsonschema \
     python3-fastnumbers \
     python3-feedformatter \
+    python3-fields \
     python3-flask \
     python3-flask-babel \
     python3-flask-bootstrap \
@@ -141,6 +145,7 @@
     python3-future \
     python3-gast \
     python3-geojson \
+    python3-geomet \
     python3-gevent \
     python3-gmpy2 \
     python3-gmqtt \
@@ -192,6 +197,7 @@
     python3-jdcal \
     python3-jedi \
     python3-jmespath \
+    python3-joblib \
     python3-jsmin \
     python3-jsonpatch \
     python3-jsonpath-rw \
@@ -274,12 +280,14 @@
     python3-pretend \
     python3-prettytable \
     python3-priority \
+    python3-process-tests \
     python3-progress \
     python3-prompt-toolkit \
     python3-protobuf \
     python3-psutil \
     python3-ptyprocess \
     python3-pulsectl \
+    python3-py-cpuinfo \
     python3-py-ubjson \
     python3-pyalsaaudio \
     python3-pyasn1 \
@@ -332,6 +340,8 @@
     python3-pystache \
     python3-pystemd \
     python3-pytest-asyncio \
+    python3-pytest-benchmark \
+    python3-pytest-cache \
     python3-pytest-helpers-namespace \
     python3-pytest-html \
     python3-pytest-metadata \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.12.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.13.0.bb
similarity index 67%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.12.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.13.0.bb
index 2ecf10c..2ebd358 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.12.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-absl_0.13.0.bb
@@ -4,8 +4,8 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-SRC_URI[md5sum] = "cfc383e2c647698666a7c5d8ef83a675"
-SRC_URI[sha256sum] = "b44f68984a5ceb2607d135a615999b93924c771238a63920d17d3387b0d229d5"
+SRC_URI[md5sum] = "afb3ffb4b59d53575e8eb073c3a52803"
+SRC_URI[sha256sum] = "6953272383486044699fd0e9f00aad167a27e08ce19aae66c6c4b10e7e767793"
 
 PYPI_PACKAGE = "absl-py"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.5.1.bb
similarity index 76%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.5.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.5.1.bb
index a29625a..4a203cc 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.5.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohue_2.5.1.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=dab31a1d28183826937f4b152143a33f"
 
-SRC_URI[sha256sum] = "e2ae49be45261283a899cc1b95786f07fe5076be9a311d250dbe2de1b8c38f0f"
+SRC_URI[sha256sum] = "3ee8e857b07364516f8b9f0e5c52d4cd775036f3ace37c2769de1e8579f4dc07"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib/0001-Remove-tornado-6-test-constraint.-Ref-15.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib/0001-Remove-tornado-6-test-constraint.-Ref-15.patch
new file mode 100644
index 0000000..174f088
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib/0001-Remove-tornado-6-test-constraint.-Ref-15.patch
@@ -0,0 +1,45 @@
+From d3ae6ac951cc5bbce29b9c987741e0a557c9b777 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ionel=20Cristian=20M=C4=83rie=C8=99?= <contact@ionelmc.ro>
+Date: Sun, 2 May 2021 09:50:43 +0300
+Subject: [PATCH] Remove tornado<6 test constraint. Ref #15.
+
+Upstream-Status: Backport [https://github.com/ionelmc/python-aspectlib/commit/7dccb198dfb426f529b81a28a755f3c02f8b50cb]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ tests/test_integrations_py3.py | 5 ++++-
+ tox.ini                        | 3 ++-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/tests/test_integrations_py3.py b/tests/test_integrations_py3.py
+index e025eac..596589d 100644
+--- a/tests/test_integrations_py3.py
++++ b/tests/test_integrations_py3.py
+@@ -36,7 +36,10 @@ def test_decorate_tornado_coroutine():
+     @gen.coroutine
+     @debug.log(print_to=buf, module=False, stacktrace=2, result_repr=repr)
+     def coro():
+-        yield gen.Task(loop.add_timeout, timedelta(microseconds=10))
++        if hasattr(gen, 'Task'):
++            yield gen.Task(loop.add_timeout, timedelta(microseconds=10))
++        else:
++            yield gen.sleep(0.01)
+         return "result"
+ 
+     loop = ioloop.IOLoop.current()
+diff --git a/tox.ini b/tox.ini
+index 8c607de..08c31b3 100644
+--- a/tox.ini
++++ b/tox.ini
+@@ -55,7 +55,8 @@ deps =
+     pytest-clarity
+     pytest-cov
+     pytest-travis-fold
+-    tornado<6.0
++    six
++    tornado
+ commands =
+     {posargs:pytest --cov --cov-report=term-missing -vv --ignore=src}
+ 
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib_1.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib_1.5.2.bb
new file mode 100644
index 0000000..2dc57a6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aspectlib_1.5.2.bb
@@ -0,0 +1,29 @@
+# Copyright (C) 2021 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "``aspectlib`` is an aspect-oriented programming, monkey-patch and decorators library. It is useful when changing"
+HOMEPAGE = "https://github.com/ionelmc/python-aspectlib"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d58b3f20fd10347a9458b8a03793b62e"
+
+SRC_URI[sha256sum] = "d275ec82c4c2712e564bb760e4accff8f061f648e38774feabeb8b241cf3a4aa"
+
+inherit ptest pypi setuptools3
+
+SRC_URI += "file://run-ptest \
+            file://0001-Remove-tornado-6-test-constraint.-Ref-15.patch \
+           "
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS_${PN}-ptest += "\
+    python3-tornado \
+    python3-process-tests \
+"
+
+RDEPENDS_${PN} += "python3-core python3-fields"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.5.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.6.5.bb
similarity index 89%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.5.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.6.5.bb
index c805dc4..513235b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.5.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.6.5.bb
@@ -4,7 +4,7 @@
 LICENSE = "LGPL-2.1"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a70cf540abf41acb644ac3b621b2fad1"
 
-SRC_URI[sha256sum] = "d66a600e1602736a0f24f725a511b0e50d12eb18f54b31ec276d2c26a0a62c6a"
+SRC_URI[sha256sum] = "83e494b02d75d07d4e347b27c066fd791c0c74fc96c613d1ea3de0c82c48168f"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.2.2.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.2.2.bb
index 12de2c9..01f474d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.2.2.bb
@@ -3,7 +3,7 @@
 LICENSE = "PSF"
 LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=2ad702cdcd49e8d2ac01d7e7d0810d2d"
 
-SRC_URI[sha256sum] = "97224a19325ecee49a3bf4df3ee0531d3af9cf288b67d089a7ef44a3c4ea3839"
+SRC_URI[sha256sum] = "5ed37f0482199de5a3e096405a646ab3f45dd020d234c42539b3c11ea0e2278d"
 
 inherit setuptools3 pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.25.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.25.0.bb
index a1941bf..ad446d6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.25.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.25.0.bb
@@ -10,17 +10,11 @@
 
 SRC_URI[sha256sum] = "8ad7d7c090eb1cac6110b3bfc1fd2d334ac62f415aac09350ebb8d241b7aa7ee"
 
-DISTUTILS_BUILD_ARGS += " \
-    --no-libev \
-"
-DISTUTILS_INSTALL_ARGS += " \
-    --no-libev \
-"
-
 inherit pypi setuptools3
 
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-cython \
+    ${PYTHON_PN}-geomet \
     ${PYTHON_PN}-json \
     ${PYTHON_PN}-misc \
     ${PYTHON_PN}-multiprocessing \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.0.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.3.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.0.bb
index 32d2016..b791588 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
 
-SRC_URI[sha256sum] = "462b3604d9579458a79e6ca350943c49aabbc98c794c111a79b98720b9164336"
+SRC_URI[sha256sum] = "a7926f7244b08c413f1a4fa71a81aa256771c75bdf1a4fd77308547a2d63dd48"
 
 inherit pypi setuptools3 ptest
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.6.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.6.bb
index 16928f0..bcd185d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.14.6.bb
@@ -4,7 +4,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf"
 DEPENDS += "libffi ${PYTHON_PN}-pycparser"
 
-SRC_URI[sha256sum] = "fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c"
+SRC_URI[sha256sum] = "c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_1.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_2.1.2.bb
similarity index 60%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_1.5.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_2.1.2.bb
index 18c7a66..38f050a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_1.5.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cmd2_2.1.2.bb
@@ -1,11 +1,11 @@
 SUMMARY = "Extra features for standard library's cmd module"
 HOMEPAGE = "https://github.com/python-cmd2/cmd2"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=9791cd24ca7d1807388ccd55cd066def"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4c527bcb481233ebcb803de975f42701"
 
 DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
 
-SRC_URI[sha256sum] = "701a8c9975c4abc45e5d13906ab149f959f812869106347323a3f89ac0e82a62"
+SRC_URI[sha256sum] = "25dbb2e9847aaa686a8a21e84e3d101db8b79f5cb992e044fc54210ab8c0ad41"
 
 inherit pypi setuptools3
 
@@ -14,6 +14,9 @@
     ${PYTHON_PN}-colorama \
     ${PYTHON_PN}-pyperclip \
     ${PYTHON_PN}-wcwidth \
+    ${PYTHON_PN}-compression \
+    ${PYTHON_PN}-pydoc \
+    ${PYTHON_PN}-json \
 "
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_15.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_15.0.1.bb
similarity index 84%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_15.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_15.0.1.bb
index daeda6b..5de59d5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_15.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_15.0.1.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=764e737b117a38d773609885e8d04f0b"
 
-SRC_URI[sha256sum] = "5e78691e2673a8e294499e1832bb13efcfb44a86b92e18109fa18951093218ab"
+SRC_URI[sha256sum] = "7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.5.1.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.4.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.5.1.bb
index 0c851fe..596d16f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.4.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-configargparse_1.5.1.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=da746463714cc35999ed9a42339f2943"
 
-SRC_URI[sha256sum] = "6df537158f28c5ef2e8a8146781833abbc6cb7fca81b1b55d18808ce3439235e"
+SRC_URI[sha256sum] = "371f46577e76ec71a183b88378f36dd09f4b946f60fe60712f411b020f26b812"
 
 PYPI_PACKAGE = "ConfigArgParse"
 
@@ -15,6 +15,7 @@
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-core \
     ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-json \
 "
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_1.0.13.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_1.0.15.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_1.0.13.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_1.0.15.bb
index c520fa7..1782391 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_1.0.13.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_1.0.15.bb
@@ -5,7 +5,7 @@
 
 PYPI_PACKAGE = "croniter"
 
-SRC_URI[sha256sum] = "57f36df4f5a1c31bbf50bbffa3551612c19f6156ab1e88e2e42342ccbb9f9b9a"
+SRC_URI[sha256sum] = "a70dfc9d52de9fc1a886128b9148c89dd9e76b67d55f46516ca94d2d73d58219"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.7.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.6.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.7.bb
index b5f34da..565e223 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_3.4.7.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0 | BSD"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4"
 
-SRC_URI[sha256sum] = "e5f88a5fb03d60b4f20eed4920638b6a3ed32a363523a77086528d557a2c2da8"
+SRC_URI[sha256sum] = "a7ac3aaa57514687696ad65f833e5e39b6fa3c5d41de2b8c938346ee119204c2"
 
 PYPI_PACKAGE = "cryptography_vectors"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.2.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.2.bb
index 5326924..a68a736 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.2.bb
@@ -4,8 +4,7 @@
 LICENSE = "BSD-3-Clause & Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e3155c7bdc71f66e02678411d2abf996"
 
-SRC_URI[md5sum] = "f2a1d4b680b297b367a974664ca3a4f6"
-SRC_URI[sha256sum] = "73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"
+SRC_URI[sha256sum] = "0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"
 
 PYPI_PACKAGE = "python-dateutil"
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dill_0.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dill_0.3.3.bb
deleted file mode 100644
index bf26ba3..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dill_0.3.3.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "Serialize all of python"
-HOMEPAGE = "https://pypi.org/project/dill/"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=90fee9f98d11d59df3f8aa813ff9a3de"
-
-SRC_URI[md5sum] = "99c878e2e4e924f3234c0efcbcff6abf"
-SRC_URI[sha256sum] = "efb7f6cb65dba7087c1e111bb5390291ba3616741f96840bfc75792a1a9b5ded"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE_EXT = "zip"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dill_0.3.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dill_0.3.4.bb
new file mode 100644
index 0000000..0634e17
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dill_0.3.4.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Serialize all of python"
+HOMEPAGE = "https://pypi.org/project/dill/"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=41adceb584fdde8323ddf9ad23c07fe5"
+
+SRC_URI[sha256sum] = "9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE_EXT = "zip"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-multiprocessing \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.23.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.23.bb
deleted file mode 100644
index ab4b68f..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.23.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require python-django.inc
-inherit setuptools3
-
-SRC_URI[md5sum] = "d72405637143e201b745714e300bb546"
-SRC_URI[sha256sum] = "12cfc045a4ccb2348719aaaa77b17e66a26bff9fc238b4c765a3e825ef92e414"
-
-RDEPENDS_${PN} += "\
-    ${PYTHON_PN}-sqlparse \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.24.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.24.bb
new file mode 100644
index 0000000..964ca6b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.24.bb
@@ -0,0 +1,9 @@
+require python-django.inc
+inherit setuptools3
+
+SRC_URI[md5sum] = "ebf3bbb7716a7b11029e860475b9a122"
+SRC_URI[sha256sum] = "3339ff0e03dee13045aef6ae7b523edff75b6d726adf7a7a48f53d5a501f7db7"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-sqlparse \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.5.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.5.bb
index 7a9611c..5890c85 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.5.bb
@@ -1,7 +1,7 @@
 require python-django.inc
 inherit setuptools3
 
-SRC_URI[sha256sum] = "13ac78dbfd189532cad8f383a27e58e18b3d33f80009ceb476d7fcbfc5dcebd8"
+SRC_URI[sha256sum] = "3da05fea54fdec2315b54a563d5b59f3b4e2b1e69c3a5841dda35019c01855cd"
 
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-sqlparse \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.2.3.bb
similarity index 74%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.2.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.2.3.bb
index c793592..2d9c531 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.2.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_2.2.3.bb
@@ -3,9 +3,13 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=5dbb7fb7d72da3921202dd7b995d3ecf"
 
-SRC_URI[sha256sum] = "68de07c1aec3b1d33126111252cc699600dd1e45802625344aa6eb9e680ef157"
+SRC_URI[sha256sum] = "60139b91ef9646e27381fd62b8c38f1fc8ebc78dc4bc231c08c51240062e58e6"
 
 PYPI_PACKAGE = "elementpath"
 inherit pypi setuptools3
 
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-xml \
+"
+
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-execnet/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-execnet/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-execnet/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-execnet_1.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-execnet_1.9.0.bb
new file mode 100644
index 0000000..a7b1565
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-execnet_1.9.0.bb
@@ -0,0 +1,28 @@
+# Copyright (C) 2021 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "execnet: rapid multi-Python deployment"
+HOMEPAGE = "https://execnet.readthedocs.io/en/latest/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=772fcdaca14b378878d05c7d857e6c3e"
+
+DEPENDS += "python3-pip-native"
+
+SRC_URI += "file://run-ptest \
+           "
+SRC_URI[sha256sum] = "8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5"
+
+inherit ptest pypi setuptools3
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/testing/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS_${PN}-ptest += "\
+    python3-pytest \
+"
+
+RDEPENDS_${PN} += "python3-core python3-crypt python3-ctypes python3-fcntl python3-io python3-shell python3-threading"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.16.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.16.3.bb
new file mode 100644
index 0000000..6f283a3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.16.3.bb
@@ -0,0 +1,13 @@
+SUMMARY = "A python package that provides useful locks."
+HOMEPAGE = "https://github.com/harlowja/fasteners"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4476c4be31402271e101d9a4a3430d52"
+
+SRC_URI[sha256sum] = "b1ab4e5adfbc28681ce44b3024421c4f567e705cc3963c732bf1cba3348307de"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-fcntl \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.16.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.16.bb
deleted file mode 100644
index eed8d2c..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.16.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-SUMMARY = "A python package that provides useful locks."
-HOMEPAGE = "https://github.com/harlowja/fasteners"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=4476c4be31402271e101d9a4a3430d52"
-
-SRC_URI[sha256sum] = "c995d8c26b017c5d6a6de9ad29a0f9cdd57de61ae1113d28fac26622b06a0933"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fastjsonschema/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-fastjsonschema/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-fastjsonschema/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fastjsonschema_2.15.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-fastjsonschema_2.15.1.bb
new file mode 100644
index 0000000..d901fcb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-fastjsonschema_2.15.1.bb
@@ -0,0 +1,38 @@
+# Copyright (C) 2021 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Fastest Python implementation of JSON schema"
+HOMEPAGE = "https://github.com/seznam/python-fastjsonschema"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=18950e8362b69c0c617b42b8bd8e7532"
+
+SRCREV = "1e214911fe83dbaeea3d50dfb3a539118de8a442"
+PYPI_SRC_URI = "git://github.com/horejsek/python-fastjsonschema;protocol=https;branch=master"
+
+SRC_URI += "file://run-ptest"
+
+inherit ptest pypi setuptools3
+
+S = "${WORKDIR}/git"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS_${PN}-ptest += "\
+    python3-colorama \
+    python3-jsonschema \
+    python3-pylint \
+    python3-pytest \
+    python3-pytest-benchmark \
+    python3-pytest-cache \
+"
+RDEPENDS_${PN} += "\
+    python3-core \
+    python3-urllib3 \
+    python3-numbers \
+    python3-pickle \
+    "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fields_5.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-fields_5.0.0.bb
new file mode 100644
index 0000000..9c22b92
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-fields_5.0.0.bb
@@ -0,0 +1,15 @@
+# Copyright (C) 2021 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Container class boilerplate killer."
+HOMEPAGE = "https://github.com/ionelmc/python-fields"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e32c6705498713d9c904a9f565953a2c"
+
+SRC_URI[sha256sum] = "31d4aa03d8d44e35df13c431de35136997f047a924a597d84f7bc209e1be5727"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-core"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_3.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_3.0.1.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_3.0.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_3.0.1.bb
index 8f84e05..77fd172 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_3.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_3.0.1.bb
@@ -2,7 +2,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b69377f79f3f48c661701236d5a6a85"
 
-SRC_URI[sha256sum] = "a6607e66bf1d68489b2281ead5caa6fdf7a21b71984fae922ef5f915ac45bbcb"
+SRC_URI[sha256sum] = "4d42e8f861d78cb6e9319afcba5bf76062e5efd7784184dd2a1cccd9de34a702"
 
 PYPI_PACKAGE = "Flask-Migrate"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_5.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_5.1.0.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_5.0.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_5.1.0.bb
index 5def762..5a6b83b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_5.0.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_5.1.0.bb
@@ -9,7 +9,7 @@
 
 PYPI_PACKAGE = "Flask-SocketIO"
 
-SRC_URI[sha256sum] = "4fb968c43bc384f184cd1a25c1842297c2e3d6efc2f755a61be6d4406858220f"
+SRC_URI[sha256sum] = "b41b9f6fb0d7f3fcadd54c44653307a9b96e985c7da73f92779480248b5b6874"
 
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-flask \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gast_0.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gast_0.5.0.bb
similarity index 69%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-gast_0.4.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-gast_0.5.0.bb
index 7ef2eb4..9908950 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gast_0.4.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gast_0.5.0.bb
@@ -4,8 +4,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a3ad9b6802e713fc5e307e1230f1ea90"
 
-SRC_URI[md5sum] = "d1f258eb70bb916f8fe5535351d5ff05"
-SRC_URI[sha256sum] = "40feb7b8b8434785585ab224d1568b857edb18297e5a3047f1ba012bc83b42c1"
+SRC_URI[sha256sum] = "8109cbe7aa0f7bf7e4348379da05b8137ea1f059f073332c3c1cedd57db8541f"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-geomet_0.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-geomet_0.3.0.bb
new file mode 100644
index 0000000..de05534b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-geomet_0.3.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Convert GeoJSON to WKT/WKB (Well-Known Text/Binary), and vice versa."
+DESCRIPTION = "Convert GeoJSON to WKT/WKB (Well-Known Text/Binary), and vice versa."
+HOMEPAGE = "https://github.com/geomet/geomet"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
+SRCNAME = "geomet"
+
+SRC_URI[sha256sum] = "cb52411978ee01ff104ab48f108d7333b14423ae7a15a65fee25b7d29bda2e1b"
+
+S = "${WORKDIR}/git"
+SRC_URI = "git://github.com/geomet/geomet.git;protocol=https;branch=release-${PV} \
+           "
+SRCREV = "73ec5ec96cca32f2e2461d3964fc3d4ab80248f9"
+
+inherit setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-click \
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.4.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.4.7.bb
similarity index 62%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.4.6.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.4.7.bb
index ff0a91c..cc441af 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.4.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gnupg_0.4.7.bb
@@ -4,8 +4,11 @@
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b0b7ac63b60085b23fa9f7e1951daa1d"
 
 PYPI_PACKAGE = "python-gnupg"
-SRC_URI[sha256sum] = "3aa0884b3bd414652c2385b9df39e7b87272c2eca1b8fcc3089bc9e58652019a"
+SRC_URI[sha256sum] = "2061f56b1942c29b92727bf9aecbd3cea3893acc9cccbdc7eb4604285efe4ac7"
 
 inherit pypi setuptools3
 
-RDEPENDS_${PN} +=  "gnupg-gpg"
+RDEPENDS_${PN} +=  " \
+	gnupg-gpg \
+	python3-logging \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_1.30.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_1.30.0.bb
new file mode 100644
index 0000000..08cc35d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_1.30.0.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Google API client core library"
+HOMEPAGE = "https://github.com/googleapis/python-api-core"
+AUTHOR = "Google LLC"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "0724d354d394b3d763bc10dfee05807813c5210f0bd9b8e2ddf6b6925603411c"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-asyncio \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-math \
+"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-googleapis-common-protos \
+    ${PYTHON_PN}-google-auth \
+    ${PYTHON_PN}-grpcio \
+    ${PYTHON_PN}-protobuf \
+    ${PYTHON_PN}-pytz \
+    ${PYTHON_PN}-requests \
+    ${PYTHON_PN}-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.12.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.12.0.bb
new file mode 100644
index 0000000..67d05b5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.12.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "The Google API Client for Python is a client library for accessing the Plus, \
+Moderator, and many other Google APIs."
+HOMEPAGE = "https://github.com/googleapis/google-api-python-client"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=94023d14f6b58272fd885e4e3f2f08b3"
+
+SRC_URI[sha256sum] = "a5d203241a93201a770c966f8eca39de7f88b28194f9d252065b18e83bd99c4b"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-six \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-httplib2 \
+    ${PYTHON_PN}-uritemplate \
+    ${PYTHON_PN}-google-api-core \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.6.0.bb
deleted file mode 100644
index c6ae6e8..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.6.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "The Google API Client for Python is a client library for accessing the Plus, \
-Moderator, and many other Google APIs."
-HOMEPAGE = "https://github.com/googleapis/google-api-python-client"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=94023d14f6b58272fd885e4e3f2f08b3"
-
-SRC_URI[sha256sum] = "6a87f324334247bf7ba24406da586424b09e715d04336fb7cf45a402b80d38e8"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_1.32.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_1.32.0.bb
new file mode 100644
index 0000000..d492bbb
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_1.32.0.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Google Authentication Library"
+HOMEPAGE = "https://github.com/googleapis/google-auth-library-python"
+AUTHOR = "Google Cloud Platform"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "e34e5f5de5610b202f9b40ebd9f8b27571d5c5537db9afed3a72b2db5a345039"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-asyncio \
+    ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-io \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-numbers \
+"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-aiohttp \
+    ${PYTHON_PN}-cachetools \
+    ${PYTHON_PN}-pyasn1-modules \
+    ${PYTHON_PN}-rsa \
+    ${PYTHON_PN}-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.53.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.53.0.bb
new file mode 100644
index 0000000..2c59ae8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.53.0.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Common protobufs used in Google APIs"
+HOMEPAGE = "https://github.com/googleapis/python-api-common-protos"
+AUTHOR = "Google LLC"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "a88ee8903aa0a81f6c3cec2d5cf62d3c8aa67c06439b0496b49048fb1854ebf4"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-grpcio \
+    ${PYTHON_PN}-protobuf \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.37.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.38.1.bb
similarity index 85%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.37.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.38.1.bb
index d1b934b..e6680e8 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.37.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.38.1.bb
@@ -11,7 +11,7 @@
 
 SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch"
 
-SRC_URI[sha256sum] = "3ec510c1b6bfc32effc639acf9a055e72dab7a7b6757bf72f2132790d6a7cf1c"
+SRC_URI[sha256sum] = "cd85f58038b92e1961f8127d79691e84e151390d35cae73c4c0cbe2042f76b77"
 
 RDEPENDS_${PN} = "${PYTHON_PN}-grpcio"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.38.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.38.1.bb
similarity index 93%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.38.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.38.1.bb
index d9e0042..3af033d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.38.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.38.1.bb
@@ -12,7 +12,7 @@
                                 file://mips_bigendian.patch \
                                 file://0001-absl-always-use-asm-sgidefs.h.patch \
 "
-SRC_URI[sha256sum] = "abbf9c8c3df4d5233d5888c6cfa85c1bb68a6923749bd4dd1abc6e1e93986f17"
+SRC_URI[sha256sum] = "1f79d8a24261e3c12ec3a6c25945ff799ae09874fd24815bc17c2dc37715ef6c"
 
 RDEPENDS_${PN} = "${PYTHON_PN}-protobuf \
                   ${PYTHON_PN}-setuptools \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.3.0.bb
similarity index 89%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.2.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.3.0.bb
index 5faa0b8..58498f8 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.2.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.3.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=113251d71fb0384712c719b567261c5c"
 
-SRC_URI[sha256sum] = "89474be911bfcdb34cbf0d98b8ec48b578c27a89fdb1ae4ee7513f1ef8d9249e"
+SRC_URI[sha256sum] = "e0dac887d779929778b3cfd13309a939359cc9e74756fc09af7c527a82797186"
 
 SRC_URI_append = " \
            file://0001-setup_build.py-avoid-absolute-path.patch \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine/0001-setup.py-Correct-the-license-assignment.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine/0001-setup.py-Correct-the-license-assignment.patch
deleted file mode 100644
index bb5955a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine/0001-setup.py-Correct-the-license-assignment.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 56b421a18ef8acb41ab9e4bde7e1f5452ec67da9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 17 May 2021 22:17:07 -0700
-Subject: [PATCH] setup.py: Correct the license assignment
-
-latest python/2.9 + setuptools bail out otherwise
-
-lines = header.split('\n')
-| AttributeError: 'list' object has no attribute 'split'
-
-Upstream-Status: Submitted [https://github.com/mapado/haversine/pull/38]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- setup.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/setup.py b/setup.py
-index 549436d..9e7fb00 100755
---- a/setup.py
-+++ b/setup.py
-@@ -15,7 +15,7 @@ setup(
-     maintainer_email='julien.deniau@mapado.com',
-     url='https://github.com/mapado/haversine',
-     packages=['haversine'],
--    license=['MIT'],
-+    license='MIT',
-     classifiers=[
-         'Development Status :: 4 - Beta',
-         'Intended Audience :: Developers',
--- 
-2.31.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.3.0.bb
deleted file mode 100644
index 624d30c..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.3.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "Calculate the distance between 2 points on Earth"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-SRC_URI += "file://0001-setup.py-Correct-the-license-assignment.patch"
-
-SRC_URI[md5sum] = "ff2d43a74195ec00c42ccd5da2a3f3de"
-SRC_URI[sha256sum] = "72c76855ac25e6ad054c7ed380e95c1a96803185f005dd11f40ccaa9620b551f"
-
-inherit pypi setuptools3
-
-RDEPENDS_${PN} += "python3-numpy"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.3.1.bb
new file mode 100644
index 0000000..c325162
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-haversine_2.3.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Calculate the distance between 2 points on Earth"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI[sha256sum] = "75a7f859b3fb6df746564ca66ad1fd5b4052cdbab3d74ff16e8f1a7c3d4a26a5"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-numpy"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.19.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.19.1.bb
index a16f8d9..122b4bd 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.19.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.19.1.bb
@@ -7,3 +7,9 @@
 SRC_URI[sha256sum] = "0b12617eeca7433d4c396a100eaecfa4b08ee99aa881e6df6e257a7aad5d533d"
 
 inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-compression \
+    ${PYTHON_PN}-netclient \
+    ${PYTHON_PN}-pyparsing \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-humanfriendly_9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanfriendly_9.2.bb
similarity index 74%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-humanfriendly_9.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-humanfriendly_9.2.bb
index fb6a7e3..6be27f7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-humanfriendly_9.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanfriendly_9.2.bb
@@ -2,11 +2,11 @@
 HOMEPAGE = "https://humanfriendly.readthedocs.io/"
 SECTION = "devel/python"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=764e737b117a38d773609885e8d04f0b"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5d178009f806c2bdd498a19be0013a7a"
 
 PYPI_PACKAGE = "humanfriendly"
 
-SRC_URI[sha256sum] = "066562956639ab21ff2676d1fda0b5987e985c534fc76700a19bd54bcb81121d"
+SRC_URI[sha256sum] = "f7dba53ac7935fd0b4a2fc9a29e316ddd9ea135fb3052d3d0279d10c18ff9c48"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.10.0.bb
similarity index 75%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.6.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.10.0.bb
index 1c269ba..eba13db 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.6.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.10.0.bb
@@ -5,7 +5,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENCE;md5=4ecc42519e84f6f3e23529464df7bd1d"
 
-SRC_URI[sha256sum] = "a31704cf41f023e268032c4813c6482573320150a0d986f76b245e0451bb89e1"
+SRC_URI[sha256sum] = "b2413730ce6684f85e0439a5b80b8f402e09f03e16ab8023d1da758c6ff41148"
 
 inherit pypi setuptools3
 
@@ -15,6 +15,7 @@
 
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-datetime \
+    ${PYTHON_PN}-setuptools \
 "
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.2.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.2.bb
index fbdbab6..4ca7f62 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-idna_3.2.bb
@@ -3,7 +3,7 @@
 LICENSE = "BSD-3-Clause & Python-2.0 & Unicode"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=239668a7c6066d9e0c5382e9c8c6c0e1"
 
-SRC_URI[sha256sum] = "c5b02147e01ea9920e6b0a3f1f7bb833612d507592c837a6c49552768f4054e1"
+SRC_URI[sha256sum] = "467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ifaddr_0.1.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ifaddr_0.1.7.bb
index 4fff7d1..6d4fab3 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ifaddr_0.1.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ifaddr_0.1.7.bb
@@ -8,3 +8,7 @@
 SRC_URI[sha256sum] = "1f9e8a6ca6f16db5a37d3356f07b6e52344f6f9f7e806d618537731669eb1a94"
 
 inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-ctypes \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.24.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.25.0.bb
similarity index 88%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.24.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.25.0.bb
index 1c11eec..b8a6db2 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.24.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_7.25.0.bb
@@ -6,7 +6,7 @@
 
 PYPI_PACKAGE = "ipython"
 
-SRC_URI[sha256sum] = "a171caa3d3d4c819a1c0742e3abecfd5a2b8ab525ca1c9f114b40b76b0679ab1"
+SRC_URI[sha256sum] = "54bbd1fe3882457aaf28ae060a5ccdef97f212a741754e420028d4ec5c2291dc"
 
 RDEPENDS_${PN} = "\
     ${PYTHON_PN}-setuptools \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.9.2.bb
similarity index 66%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.8.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.9.2.bb
index 36de825..5832136 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.8.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.9.2.bb
@@ -4,13 +4,17 @@
 SECTION = "devel/python"
 LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=6;endline=6;md5=8227180126797a0148f94f483f3e1489"
 
-SRC_URI[sha256sum] = "0a943902919f65c5684ac4e0154b1ad4fac6dcaa5d9f3426b732f1c8b5419be6"
+SRC_URI[sha256sum] = "f65ce5bd4cbc6abdfbe29afc2f0245538ab358c14590912df638033f157d555e"
 
 inherit pypi setuptools3
 
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-datetime \
     ${PYTHON_PN}-shell \
+    ${PYTHON_PN}-profile \
+    ${PYTHON_PN}-numbers \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-difflib \
 "
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.0.1.bb
new file mode 100644
index 0000000..4e63b05
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-joblib_1.0.1.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Joblib is a set of tools to provide lightweight pipelining in Python."
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=32b289008fb813a27c9025f02b59d03d"
+
+inherit setuptools3 pypi
+
+SRC_URI[md5sum] = "9914b330916395c0a1feca54949867a3"
+SRC_URI[sha256sum] = "9c17567692206d2f3fb9ecf5e991084254fe631665c450b443761c4186a613f7"
+
+RDEPENDS_${PN} += " \
+    python3-asyncio \
+    python3-distutils \
+    python3-json \
+    python3-multiprocessing \
+    python3-pprint \
+    python3-pydoc \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_21.6.14.bb
similarity index 64%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_1.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_21.6.14.bb
index c033bd3..0513d09 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_1.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_21.6.14.bb
@@ -2,16 +2,20 @@
 HOMEPAGE = "https://github.com/nexB/license-expression"
 
 LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://apache-2.0.LICENSE;md5=e23fadd6ceef8c618fc1c65191d846fa"
+LIC_FILES_CHKSUM = "file://apache-2.0.LICENSE;md5=9429839cdc4b292ff46e88b524c6e0c9"
 
-SRC_URI[md5sum] = "fd4cb295cc345be1071274cdbd81c969"
-SRC_URI[sha256sum] = "7960e1dfdf20d127e75ead931476f2b5c7556df05b117a73880b22ade17d1abc"
+SRC_URI[sha256sum] = "9de87a427c9a449eee7913472fb9ed03b63036295547369fdbf95f76a8b924b2"
 
 inherit pypi ptest setuptools3
 
+DEPENDS += "\
+    ${PYTHON_PN}-setuptools-scm-native \
+    ${PYTHON_PN}-wheel-native \
+"
+
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-booleanpy \
-    "
+"
 
 BBCLASSEXTEND = "native nativesdk"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-Allow-verify_cb_-to-be-called-with-ok-True.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-Allow-verify_cb_-to-be-called-with-ok-True.patch
deleted file mode 100644
index 3c83663..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-Allow-verify_cb_-to-be-called-with-ok-True.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 73fbd1e646f6bbf202d4418bae80eb9941fbf552 Mon Sep 17 00:00:00 2001
-From: Casey Deccio <casey@deccio.net>
-Date: Fri, 8 Jan 2021 12:43:09 -0700
-Subject: [PATCH] Allow verify_cb_* to be called with ok=True
-
-With https://github.com/openssl/openssl/commit/2e06150e3928daa06d5ff70c32bffad8088ebe58
-OpenSSL allowed verificaton to continue on UNABLE_TO_VERIFY_LEAF_SIGNATURE
----
- tests/test_ssl.py | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/tests/test_ssl.py b/tests/test_ssl.py
-index 92b6942..7a3271a 100644
---- a/tests/test_ssl.py
-+++ b/tests/test_ssl.py
-@@ -59,8 +59,13 @@ def allocate_srv_port():
- 
- 
- def verify_cb_new_function(ok, store):
--    assert not ok
-     err = store.get_error()
-+    # If err is X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE, then instead of
-+    # aborting, this callback is called to retrieve additional error
-+    # information.  In this case, ok might not be False.
-+    # See https://github.com/openssl/openssl/commit/2e06150e3928daa06d5ff70c32bffad8088ebe58
-+    if err != m2.X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
-+        assert not ok
-     assert err in [m2.X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT,
-                    m2.X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY,
-                    m2.X509_V_ERR_CERT_UNTRUSTED,
-@@ -618,7 +623,12 @@ class MiscSSLClientTestCase(BaseSSLClientTestCase):
- 
-     def verify_cb_old(self, ctx_ptr, x509_ptr, err, depth, ok):
-         try:
--            self.assertFalse(ok)
-+            # If err is X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE, then instead of
-+            # aborting, this callback is called to retrieve additional error
-+            # information.  In this case, ok might not be False.
-+            # See https://github.com/openssl/openssl/commit/2e06150e3928daa06d5ff70c32bffad8088ebe58
-+            if err != m2.X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
-+                self.assertFalse(ok)
-             self.assertIn(err,
-                           [m2.X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT,
-                            m2.X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY,
--- 
-2.29.2
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-Use-of-RSA_SSLV23_PADDING-has-been-deprecated.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-Use-of-RSA_SSLV23_PADDING-has-been-deprecated.patch
deleted file mode 100644
index 2313a32..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/0001-Use-of-RSA_SSLV23_PADDING-has-been-deprecated.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From d06eaa88a5f491827733f32027c46de3557fbd05 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Mat=C4=9Bj=20Cepl?= <mcepl@cepl.eu>
-Date: Fri, 19 Feb 2021 15:53:02 +0100
-Subject: [PATCH] Use of RSA_SSLV23_PADDING has been deprecated.
-
-Fixes #293.
----
- tests/test_rsa.py | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/tests/test_rsa.py b/tests/test_rsa.py
-index 3de5016..7299785 100644
---- a/tests/test_rsa.py
-+++ b/tests/test_rsa.py
-@@ -124,11 +124,6 @@ class RSATestCase(unittest.TestCase):
-             ptxt = priv.private_decrypt(ctxt, p)
-             self.assertEqual(ptxt, self.data)
- 
--        # sslv23_padding
--        ctxt = priv.public_encrypt(self.data, RSA.sslv23_padding)
--        res = priv.private_decrypt(ctxt, RSA.sslv23_padding)
--        self.assertEqual(res, self.data)
--
-         # no_padding
-         with six.assertRaisesRegex(self, RSA.RSAError, 'data too small'):
-             priv.public_encrypt(self.data, RSA.no_padding)
--- 
-2.29.2
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/avoid-host-contamination.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/avoid-host-contamination.patch
new file mode 100644
index 0000000..9d9b844
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/avoid-host-contamination.patch
@@ -0,0 +1,23 @@
+Filter out '/usr/include' for swig to avoid host contamination issue.
+
+Upstream-Status: Upstream-Status: Inappropriate [cross compile specific]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ setup.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 5a12981..389d49f 100644
+--- a/setup.py
++++ b/setup.py
+@@ -153,7 +153,8 @@ class _M2CryptoBuildExt(build_ext.build_ext):
+             self.swig_opts.append('-py3')
+ 
+         # swig seems to need the default header file directories
+-        self.swig_opts.extend(['-I%s' % i for i in _get_additional_includes()])
++        self.swig_opts.extend(['-I%s' % i for i in _get_additional_includes()
++                                            if i != '/usr/include'])
+ 
+         log.debug('self.include_dirs = %s', self.include_dirs)
+         log.debug('self.library_dirs = %s', self.library_dirs)
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/cross-compile-platform.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/cross-compile-platform.patch
index f039ae8..77ef7e5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/cross-compile-platform.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto/cross-compile-platform.patch
@@ -6,7 +6,7 @@
 
 --- a/setup.py
 +++ b/setup.py
-@@ -169,22 +169,6 @@ class _M2CryptoBuildExt(build_ext.build_
+@@ -169,24 +169,6 @@ class _M2CryptoBuildExt(build_ext.build_
              log.debug('self.include_dirs = %s', self.include_dirs)
              log.debug('self.library_dirs = %s', self.library_dirs)
  
@@ -25,6 +25,8 @@
 -            self.swig_opts.append('-D%s' % arch)
 -            if mach in ('ppc64le', 'ppc64el'):
 -                self.swig_opts.append('-D_CALL_ELF=2')
+-            if mach in ('arm64_be'):
+-                self.swig_opts.append('-D__AARCH64EB__')
 -
          self.swig_opts.extend(['-I%s' % i for i in self.include_dirs])
  
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.37.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.38.0.bb
similarity index 84%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.37.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.38.0.bb
index e1f9292..950de56 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.37.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-m2crypto_0.38.0.bb
@@ -8,10 +8,9 @@
 
 SRC_URI += "file://0001-setup.py-link-in-sysroot-not-in-host-directories.patch \
             file://cross-compile-platform.patch \
-            file://0001-Allow-verify_cb_-to-be-called-with-ok-True.patch \
-            file://0001-Use-of-RSA_SSLV23_PADDING-has-been-deprecated.patch \
+            file://avoid-host-contamination.patch \
            "
-SRC_URI[sha256sum] = "e4e42f068b78ccbf113e5d0a72ae5f480f6c3ace4940b91e4fff5598cfff6fb3"
+SRC_URI[sha256sum] = "99f2260a30901c949a8dc6d5f82cd5312ffb8abc92e76633baf231bbbcb2decb"
 
 PYPI_PACKAGE = "M2Crypto"
 inherit pypi siteinfo setuptools3
@@ -39,6 +38,9 @@
 SWIG_FEATURES_append_riscv64 = " -D__SIZEOF_POINTER__=${SITEINFO_BITS}/8 -D__riscv_xlen=${SITEINFO_BITS}"
 SWIG_FEATURES_append_riscv32 = " -D__SIZEOF_POINTER__=${SITEINFO_BITS}/8 -D__riscv_xlen=${SITEINFO_BITS}"
 SWIG_FEATURES_append_mipsarch = " -D_MIPS_SZPTR=${SITEINFO_BITS}"
+SWIG_FEATURES_append_powerpc64le = " -D__powerpc64__"
 export SWIG_FEATURES
 
+export STAGING_DIR
+
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_0.812.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_0.812.bb
deleted file mode 100644
index 8faab60..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_0.812.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Optional static typing for Python 3 and 2 (PEP 484)"
-HOMEPAGE = "https://github.com/python/mypy"
-LICENSE = "MIT & Python-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=6afb7c151c4dedb5c3dc292cc120fadc"
-
-RDEPENDS_${PN} = " \
-    ${PYTHON_PN}-mypy-extensions \
-    ${PYTHON_PN}-typed-ast \
-    ${PYTHON_PN}-typing-extensions \
-"
-
-PYPI_PACKAGE = "mypy"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "cd07039aa5df222037005b08fbbfd69b3ab0b0bd7a07d7906de75ae52c4e3119"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_0.910.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_0.910.bb
new file mode 100644
index 0000000..8e675e6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_0.910.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Optional static typing for Python 3 and 2 (PEP 484)"
+HOMEPAGE = "https://github.com/python/mypy"
+LICENSE = "MIT & Python-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=17b7180fcfc43c4e70c07c71588604c4"
+
+PYPI_PACKAGE = "mypy"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "704098302473cb31a218f1775a873b376b30b4c18229421e9e9dc8916fd16150"
+
+BBCLASSEXTEND = "native"
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-mypy-extensions \
+    ${PYTHON_PN}-typed-ast \
+    ${PYTHON_PN}-typing-extensions \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-compression \
+    ${PYTHON_PN}-pprint \
+    ${PYTHON_PN}-difflib \
+    ${PYTHON_PN}-toml \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.5.1.bb
deleted file mode 100644
index 0b52cfd..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.5.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "Python package for creating and manipulating graphs and networks"
-HOMEPAGE = "http://networkx.github.io/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a24ea029adac8935699bf69b2e38c728"
-
-SRC_URI[sha256sum] = "109cd585cac41297f71103c3c42ac6ef7379f29788eb54cb751be5a663bb235a"
-
-inherit pypi setuptools3
-
-RDEPENDS_${PN} += "\
-                   ${PYTHON_PN}-decorator \
-                   "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.6.1.bb
new file mode 100644
index 0000000..676e1db
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.6.1.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Python package for creating and manipulating graphs and networks"
+HOMEPAGE = "http://networkx.github.io/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5cfa4d8f5881e0d053bb497130b9c73a"
+
+SRC_URI[sha256sum] = "bf4cb807d1bccf1593c7d0742d9127d9e04e021867299082658b0fc3907924e8"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "\
+                   ${PYTHON_PN}-decorator \
+                   ${PYTHON_PN}-netclient \
+                   ${PYTHON_PN}-compression \
+                   ${PYTHON_PN}-numbers \
+                   ${PYTHON_PN}-pickle \
+                   ${PYTHON_PN}-html \
+                   ${PYTHON_PN}-xml \
+                   ${PYTHON_PN}-json \
+                   "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_3.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_3.1.1.bb
similarity index 88%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_3.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_3.1.1.bb
index fe27e8e..e117863 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_3.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-oauthlib_3.1.1.bb
@@ -4,8 +4,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=abd2675e944a2011aed7e505290ba482"
 
-SRC_URI[md5sum] = "43cb2b5bac983712ee55076b61181cc2"
-SRC_URI[sha256sum] = "bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889"
+SRC_URI[sha256sum] = "8f0215fcc533dd8dd1bee6f4c412d4f0cd7297307d43ac61666389e3bc3198a3"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.2.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.3.0.bb
similarity index 73%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.2.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.3.0.bb
index 54fa910..b98e286 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.2.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pandas_1.3.0.bb
@@ -4,9 +4,9 @@
 the Python programming language."
 HOMEPAGE = "http://pandas.pydata.org/"
 LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c2a8f987b2ce77c368c6b3e1b5b10774"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3f23c5c092b74d245d48eeef72bc3fd2"
 
-SRC_URI[sha256sum] = "649ecab692fade3cbfcf967ff936496b0cfba0af00a55dfaacd82bdda5cb2279"
+SRC_URI[sha256sum] = "c554e6c9cf2d5ea1aba5979cc837b3649539ced0e18ece186f055450c86622e2"
 
 inherit pypi setuptools3
 
@@ -20,5 +20,7 @@
     ${PYTHON_PN}-json \
     ${PYTHON_PN}-numpy \
     ${PYTHON_PN}-dateutil \
+    ${PYTHON_PN}-dateutil-zoneinfo \
     ${PYTHON_PN}-pytz \
+    ${PYTHON_PN}-profile \
 "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.3.1.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.2.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.3.1.bb
index 3241230..045357a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.2.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_8.3.1.bb
@@ -5,11 +5,11 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=0337b116233da4616ae9fdb130bf6f1a"
 
-SRC_URI = "git://github.com/python-pillow/Pillow.git;branch=8.2.x \
+SRC_URI = "git://github.com/python-pillow/Pillow.git;branch=8.3.x \
            file://0001-support-cross-compiling.patch \
            file://0001-explicitly-set-compile-options.patch \
 "
-SRCREV ?= "e0e353c0ef7516979a9aedce3792596649ce4433"
+SRCREV ?= "92933b86574b9c80764bf52c357ed29e1ef53382"
 
 inherit setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.5.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.5.5.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.5.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.5.5.bb
index 7a98ef2..4c0e799 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.5.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.5.5.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=faa7f82be8f220bff6156be4790344fc"
 
-SRC_URI[sha256sum] = "38d612488f0633755a2e7a8acab6c01d20d63dbc31af75e2a9ac98a6f638ca94"
+SRC_URI[sha256sum] = "deb4163ef11f75b520d822d9505c1f462761b4309b1bb713d08689759ea8b899"
 
 RDEPENDS_${PN} = "pkgconfig \
                  ${PYTHON_PN}-shell \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-process-tests_2.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-process-tests_2.1.2.bb
new file mode 100644
index 0000000..dccdeb7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-process-tests_2.1.2.bb
@@ -0,0 +1,15 @@
+# Copyright (C) 2021 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Tools for testing processes."
+HOMEPAGE = "https://github.com/ionelmc/python-process-tests"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=37031056aff37e4b3310872a9a3d0b1e"
+
+SRC_URI[sha256sum] = "a3747ad947bdfc93e5c986bdb17a6d718f3f26e8577a0807a00962f29e26deba"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-core"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.18.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.19.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.18.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.19.bb
index 3662875..f384e21 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.18.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prompt-toolkit_3.0.19.bb
@@ -3,7 +3,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b2cde7da89f0c1f3e49bf968d00d554f"
 
-SRC_URI[sha256sum] = "e1b4f11b9336a28fa11810bc623c357420f69dfdb6d2dac41ca2c21a55c033bc"
+SRC_URI[sha256sum] = "08360ee3a3148bdb5163621709ee322ec34fc4375099afa4bbf751e9b7b7fa4f"
 
 inherit pypi setuptools3
 
@@ -18,6 +18,7 @@
     ${PYTHON_PN}-datetime \
     ${PYTHON_PN}-shell \
     ${PYTHON_PN}-image \
+    ${PYTHON_PN}-asyncio \
 "
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.17.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.17.3.bb
similarity index 91%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.17.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.17.3.bb
index be846f7..b3f9f6f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.17.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.17.3.bb
@@ -7,7 +7,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "05dfe9319939a8473c21b469f34f6486646e54fb8542637cf7ed8e2fbfe21538"
+SRC_URI[sha256sum] = "72804ea5eaa9c22a090d2803813e280fb273b62d5ae497aaf3553d141c4fdd7b"
 
 # http://errors.yoctoproject.org/Errors/Details/184715/
 # Can't find required file: ../src/google/protobuf/descriptor.proto
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.5.17.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.5.18.bb
similarity index 84%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.5.17.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.5.18.bb
index 3c0a9c0..d039b7e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.5.17.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pulsectl_21.5.18.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f1d10048469ff90123263eb5e214061d"
 
-SRC_URI[sha256sum] = "3f782b3adf6d91b2398504002d248b36aa047bd04d5acd0ae5d4e2d3c8e746a0"
+SRC_URI[sha256sum] = "14e34563cdad5f01d193f1ef7cd859a0fbdaa846726d44b0b68f4451a7458458"
 
 RDEPENDS_${PN} += " \
 	libpulse \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-py-cpuinfo/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-py-cpuinfo/run-ptest
new file mode 100644
index 0000000..b63c4de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-py-cpuinfo/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-py-cpuinfo_8.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-py-cpuinfo_8.0.0.bb
new file mode 100644
index 0000000..1b62a76
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-py-cpuinfo_8.0.0.bb
@@ -0,0 +1,27 @@
+# Copyright (C) 2021 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Get CPU info with pure Python 2 & 3"
+HOMEPAGE = "https://github.com/workhorsy/py-cpuinfo"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b0b97c022f12b14d9e02de0b283ee9e9"
+
+SRC_URI[sha256sum] = "5f269be0e08e33fd959de96b34cd4aeeeacac014dd8305f70eb28d06de2345c5"
+
+inherit ptest pypi setuptools3
+
+SRC_URI += "file://run-ptest \
+           "
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS_${PN}-ptest += "\
+    python3-pytest \
+"
+
+RDEPENDS_${PN} += "python3-core python3-ctypes python3-datetime python3-json python3-io python3-mmap python3-multiprocessing python3-netclient python3-pickle python3-pprint python3-shell"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.1.2.bb
deleted file mode 100644
index c392261..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.1.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-SUMMARY = "Library for Python 3.6+ to communicate with the Google Chromecast."
-HOMEPAGE = "https://github.com/balloob/pychromecast"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b1dbd4e85f47b389bdadee9c694669f5"
-
-SRC_URI[sha256sum] = "907656cea46d39d0e93ec815979578ef4fb6f655fd8bf4e88e6421fcd7824e85"
-
-PYPI_PACKAGE = "PyChromecast"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.2.0.bb
new file mode 100644
index 0000000..ebe1124
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_9.2.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Library for Python 3.6+ to communicate with the Google Chromecast."
+HOMEPAGE = "https://github.com/balloob/pychromecast"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b1dbd4e85f47b389bdadee9c694669f5"
+
+SRC_URI[sha256sum] = "6d34593575cf77565df47af4c75dd47c6a65831ec18a8c10b5367b2f1c172f0a"
+
+PYPI_PACKAGE = "PyChromecast"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-logging \
+    ${PYTHON_PN}-zeroconf \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-requests \
+    ${PYTHON_PN}-protobuf \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.143.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.144.bb
similarity index 92%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.143.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.144.bb
index 1e3ef27..1e97b27 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.143.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.144.bb
@@ -4,7 +4,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20"
 
 SRC_URI = "git://github.com/MISP/PyMISP.git;protocol=https;branch=main"
-SRCREV = "c2e9663765e83f1a4aa70099546bec653ed770e7"
+SRCREV = "7dbaf665d9288f2a2692bee3d6207bb6abe3c51f"
 S = "${WORKDIR}/git"
 
 inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.17.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.17.3.bb
deleted file mode 100644
index 72736c8..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.17.3.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "Persistent/Immutable/Functional data structures for Python"
-HOMEPAGE = "https://github.com/tobgu/pyrsistent"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENCE.mit;md5=ca574f2891cf528b3e7a2ee570337e7c"
-
-SRC_URI[md5sum] = "cd38658ea772a7f9b12b6f9485a7018b"
-SRC_URI[sha256sum] = "2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e"
-
-inherit pypi setuptools3
-
-RDEPENDS_${PN} += " \
-    ${PYTHON_PN}-numbers \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.18.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.18.0.bb
new file mode 100644
index 0000000..7b79228
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrsistent_0.18.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Persistent/Immutable/Functional data structures for Python"
+HOMEPAGE = "https://github.com/tobgu/pyrsistent"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.mit;md5=a4b94c2b800b582a8d3925a9939cbf44"
+
+SRC_URI[sha256sum] = "773c781216f8c2900b42a7b638d5b517bb134ae1acbebe4d1e8f1f41ea60eb4b"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-numbers \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pysonos_0.0.50.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pysonos_0.0.53.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pysonos_0.0.50.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pysonos_0.0.53.bb
index cfa0d6e..dc7f676 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pysonos_0.0.50.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pysonos_0.0.53.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=07b0e2ca9ac77cd65cd4edf2e13367ea"
 
-SRC_URI[sha256sum] = "15a583b819c1e758cca72d5e148d59dd3bf7c9d59f19b5e79ab38c743c3e0738"
+SRC_URI[sha256sum] = "e24ea33f4ab810ff5e698d5e577d382413a2994565439ebc67fb42614f899e93"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-benchmark_3.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-benchmark_3.4.1.bb
new file mode 100644
index 0000000..5fb11dd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-benchmark_3.4.1.bb
@@ -0,0 +1,15 @@
+# Copyright (C) 2021 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer."
+HOMEPAGE = "https://github.com/ionelmc/pytest-benchmark"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9c5c2c74370826468065c5702b8a1fcf"
+
+SRC_URI[sha256sum] = "40e263f912de5a81d891619032983557d62a3d85843f9a9f30b98baea0cd7b47"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-core python3-py-cpuinfo python3-pytest python3-aspectlib"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cache_1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cache_1.0.bb
new file mode 100644
index 0000000..4ce91dd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cache_1.0.bb
@@ -0,0 +1,15 @@
+# Copyright (C) 2021 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "pytest plugin with mechanisms for caching across test runs"
+HOMEPAGE = "http://bitbucket.org/hpk42/pytest-cache/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
+
+SRC_URI[sha256sum] = "be7468edd4d3d83f1e844959fd6e3fd28e77a481440a7118d430130ea31b07a9"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += "python3-core python3-execnet python3-pprint python3-py python3-pytest"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pythonping_1.0.16.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pythonping_1.1.0.bb
similarity index 68%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pythonping_1.0.16.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pythonping_1.1.0.bb
index 5affb93..fd66a6f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pythonping_1.0.16.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pythonping_1.1.0.bb
@@ -4,8 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://setup.py;beginline=12;endline=12;md5=2d33c00f47720c7e35e1fdb4b9fab027"
 
-SRC_URI[md5sum] = "9b505ad8a5b8a6a8e57ccf75098ea364"
-SRC_URI[sha256sum] = "d025c8b25952580dea47bc241421e17a5a97f97f50098e1096dd10d845d0f156"
+SRC_URI[sha256sum] = "71199bdeee942ba1258b65f88ca5624278e63b31e7643ee8ca7292d2f5f77e99"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.2.1.bb
similarity index 66%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.1.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.2.1.bb
index a8c7031..30b2c6d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.1.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyusb_1.2.1.bb
@@ -5,8 +5,14 @@
 
 DEPENDS += "libusb1 ${PYTHON_PN}-setuptools-scm-native"
 
-SRC_URI[sha256sum] = "7d449ad916ce58aff60b89aae0b65ac130f289c24d6a5b7b317742eccffafc38"
+RDEPENDS_${PN} += " \
+	python3-logging \
+"
+
+SRC_URI[sha256sum] = "a4cc7404a203144754164b8b40994e2849fde1cfff06b08492f12fff9d9de7b9"
 
 inherit pypi setuptools3
 
+RDEPENDS_${PN} += "libusb1"
+
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-qrcode_6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-qrcode_7.1.bb
similarity index 73%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-qrcode_6.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-qrcode_7.1.bb
index df99d40..329bf3e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-qrcode_6.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-qrcode_7.1.bb
@@ -4,7 +4,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=4b802d2a65df4626623c79757f486af9"
 
 PYPI_PACKAGE = "qrcode"
-SRC_URI[sha256sum] = "505253854f607f2abf4d16092c61d4e9d511a3b4392e60bff957a68592b04369"
+SRC_URI[sha256sum] = "59ba630fa2adb637b06571e6ceec1bb0ecf372c458c4447ceba763061bd3af72"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.4.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.7.6.bb
similarity index 69%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.4.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.7.6.bb
index 177b06b..458236d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.4.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.7.6.bb
@@ -5,6 +5,10 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "52ba3d3f9b942c49d7e4bc105bb28551c44065f139a65062ab7912bef10c9afb"
+SRC_URI[sha256sum] = "8394e266005f2d8c6f0bc6780001f7afa3ef81a7a2111fa35058ded6fce79e4d"
+
+RDEPENDS_${PN} += " \
+	python3-stringold \
+"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests/setup.py-Support-idna-version-3.1.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests/setup.py-Support-idna-version-3.1.patch
deleted file mode 100644
index 2633224..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests/setup.py-Support-idna-version-3.1.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From fc45beed40a86c8fc38fc430765c1c5d2c9961c2 Mon Sep 17 00:00:00 2001
-From: Fabio Berton <fabio.berton@ossystems.com.br>
-Date: Thu, 4 Mar 2021 09:26:48 -0300
-Subject: [PATCH] setup.py: Support idna version 3.1
-Organization: O.S. Systems Software LTDA.
-
-Change idna required version to use python3-idna recipe that currently
-is on version 3.1.
-
-Without this change python-request doesn't work as the idna version
-doesn't match the required versions. When bump python-request recipe,
-verify if the upstream project bumped the idna version and drop this
-patch.
-
-As this recipe was tested with python3-idna_3.1 don't allow higher
-versions.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
----
- setup.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/setup.py b/setup.py
-index 7ba4b2a2..9d3b973e 100755
---- a/setup.py
-+++ b/setup.py
-@@ -43,7 +43,7 @@ packages = ['requests']
- 
- requires = [
-     'chardet>=3.0.2,<5',
--    'idna>=2.5,<3',
-+    'idna>=2.5,<3.2',
-     'urllib3>=1.21.1,<1.27',
-     'certifi>=2017.4.17'
- 
--- 
-2.30.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.25.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.26.0.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.25.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.26.0.bb
index cea8fd5..95e6e1a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.25.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.26.0.bb
@@ -3,9 +3,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
 
-SRC_URI += "file://setup.py-Support-idna-version-3.1.patch"
-
-SRC_URI[sha256sum] = "27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804"
+SRC_URI[sha256sum] = "b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.10.bb
similarity index 74%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.10.bb
index 5da0ac3..3414ed0 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ruamel-yaml_0.17.10.bb
@@ -8,9 +8,11 @@
 
 inherit pypi setuptools3
 
-BBCLASSEXTEND = "native nativesdk"
+SRC_URI[sha256sum] = "106bc8d6dc6a0ff7c9196a47570432036f41d556b779c6b4e618085f57e39e67"
 
-SRC_URI[sha256sum] = "5c3fa739bbedd2f23769656784e671c6335d17a5bf163c3c3901d8663c0af287"
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-shell \
+"
 
 do_install_prepend() {
     export RUAMEL_NO_PIP_INSTALL_CHECK=1
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.17.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.18.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.17.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.18.bb
index bcd5891..da31300 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.17.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.18.bb
@@ -5,7 +5,7 @@
 
 SRC_URI += "file://0001-py-scrypt-remove-the-hard-coded-include-paths.patch"
 
-SRC_URI[sha256sum] = "25b5075f2238be93af1cd574540a5ea01b8547f9b678aa72d22fce22577475ec"
+SRC_URI[sha256sum] = "bcf04257af12e6d52974d177a7b08e314b66f350a73f9b6f7b232d69a6a1e041"
 
 inherit pypi ptest setuptools3 dos2unix
 
@@ -17,6 +17,10 @@
     ${PYTHON_PN}-pytest \
 "
 
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-ctypes \
+"
+
 do_install_ptest() {
     install -d ${D}${PTEST_PATH}/tests
     cp -rf ${S}/scrypt/tests/* ${D}${PTEST_PATH}/tests/
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.2.0.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.2.0.bb
index 89c659d..e86ff46 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.2.0.bb
@@ -7,7 +7,7 @@
 
 RDEPENDS_${PN} += "python3-urllib3"
 
-SRC_URI[sha256sum] = "c1227d38dca315ba35182373f129c3e2722e8ed999e52584e6aca7d287870739"
+SRC_URI[sha256sum] = "9907adbdd30a55b818914512cc143e6beae0bb3ba78b2649f4b079752eb0e424"
 
 PYPI_PACKAGE = "sentry-sdk"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.15.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.20.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.15.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.20.bb
index 2d7273b..b96cdd3 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.15.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.20.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3359ed561ac16aaa25b6c6eff84df595"
 
-SRC_URI[sha256sum] = "0ff100c75cd175f35f4d24375a0b3d82461f5b1af5fc8d112ef0e5ceea8049e6"
+SRC_URI[sha256sum] = "38ee3a266afef2978e82824650457f70c5d74ec0cadec1b10fe5ed6f038eb5d0"
 
 PYPI_PACKAGE = "SQLAlchemy"
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-texttable_1.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-texttable_1.6.4.bb
similarity index 64%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-texttable_1.6.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-texttable_1.6.4.bb
index 03ebd01..6916a72 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-texttable_1.6.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-texttable_1.6.4.bb
@@ -5,7 +5,6 @@
 
 inherit pypi setuptools3
 
-SRC_URI[md5sum] = "68e6b31d36f5c20221da7d5db3eca772"
-SRC_URI[sha256sum] = "ce0faf21aa77d806bbff22b107cc22cce68dc9438f97a2df32c93e9afa4ce436"
+SRC_URI[sha256sum] = "42ee7b9e15f7b225747c3fa08f43c5d6c83bc899f80ff9bae9319334824076e9"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.61.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.61.2.bb
similarity index 67%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.61.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.61.2.bb
index 0c04b67..1e127f7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.61.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.61.2.bb
@@ -5,10 +5,15 @@
 LICENSE = "MIT & MPL-2.0"
 LIC_FILES_CHKSUM = "file://LICENCE;md5=59e4271a933d33edfe60237db377a14b"
 
-SRC_URI[sha256sum] = "cd5791b5d7c3f2f1819efc81d36eb719a38e0906a7380365c556779f585ea042"
+SRC_URI[sha256sum] = "8bb94db0d4468fea27d004a0f1d1c02da3cdedc00fe491c0de986b76a04d6b0a"
 
 inherit pypi setuptools3
 
 DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
 
+RDEPENDS_${PN} += " \
+	python3-logging \
+	python3-numbers \
+"
+
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.12.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.12.1.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.12.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.12.1.bb
index 148806e..8030676 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.12.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.12.1.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f0e423eea5c91e7aa21bdb70184b3e53"
 
-SRC_URI[sha256sum] = "fca77fd4ccba63465b421cdbbab5a1a8e3994e6d6f18b45da2bb475c09f147ef"
+SRC_URI[sha256sum] = "c2af8b9bdd7657f4bd27b45336e7930171aead796711bc4cfc99b4731bb9d051"
 
 inherit pypi setuptools3 ptest
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.6.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.6.bb
index f2fb33c..f9b49fe 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.6.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c2823cb995439c984fd62a973d79815c"
 
-SRC_URI[sha256sum] = "a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098"
+SRC_URI[sha256sum] = "f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.3.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.3.bb
index c2bf68a..ba0fdf1 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.3.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-SRC_URI[sha256sum] = "0237db4d9024859bea27d0efb59fe75eef290833fd988b8ead7a879b0308c2db"
+SRC_URI[sha256sum] = "e5236a8e8602ab6db4b873664c2d356c365ab3cac96fbdec4970ad616415dd45"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.1.0.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.0.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.1.0.bb
index da4e05f..b46392a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.1.0.bb
@@ -7,7 +7,7 @@
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c96ca6c1de8adc025adfada81d06fba5"
 
-SRC_URI[sha256sum] = "3e2bf58191d4619b161389a95bdce84ce9e0b24eb8107e7e590db682c2d0ca81"
+SRC_URI[sha256sum] = "b68e4959d704768fa20e35c9d508c8dc2bbc041fd8d267c0d7345cffe2824568"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_1.4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_1.4.4.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_1.4.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_1.4.4.bb
index e6b1969..64ab8af 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_1.4.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_1.4.4.bb
@@ -16,6 +16,6 @@
 	python3-io \
 "
 
-SRC_URI[sha256sum] = "641db6e7b4f4982fd407a3f372f45b878766098250d26963e95e50121168cbe2"
+SRC_URI[sha256sum] = "791567acccc485ba76e0b84bccced2651981171de5b47d541520416f2f9f93e3"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_1.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_1.1.0.bb
similarity index 76%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_1.0.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_1.1.0.bb
index a2483a6..25e7eda 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_1.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_1.1.0.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=6831ef36faa29329bce2420c5356f97e"
 
-SRC_URI[sha256sum] = "e96dc3dc6895d814c330c054c966d993fc81ef1dbf5a30a4bdafeb256359e058"
+SRC_URI[sha256sum] = "8a297c7a197683ba02e5e2b882ffd6c6180d01bdefb534b69cd3962df020bfe6"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0001-Fix-imports-for-ptests.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0001-Fix-imports-for-ptests.patch
new file mode 100644
index 0000000..fa58897
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi/0001-Fix-imports-for-ptests.patch
@@ -0,0 +1,3905 @@
+From 0dedc1c573ddc4e87475eb03c64555cd54a72e92 Mon Sep 17 00:00:00 2001
+From: Trevor Gamblin <trevor.gamblin@windriver.com>
+Date: Mon, 7 Jun 2021 09:40:20 -0400
+Subject: [PATCH] Fix imports for tests
+
+Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
+---
+ tests/test_asyncio.py              | 2 +-
+ tests/test_asyncio_context_vars.py | 2 +-
+ tests/test_functionality.py        | 2 +-
+ tests/test_gevent.py               | 2 +-
+ tests/test_hooks.py                | 2 +-
+ tests/test_tags.py                 | 2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
+
+--- a/tests/test_asyncio.py
++++ b/tests/test_asyncio.py
+@@ -2,7 +2,7 @@ import unittest
+ import yappi
+ import asyncio
+ import threading
+-from utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
++from .utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
+ 
+ 
+ @asyncio.coroutine
+--- a/tests/test_asyncio_context_vars.py
++++ b/tests/test_asyncio_context_vars.py
+@@ -5,7 +5,7 @@ import contextvars
+ import functools
+ import time
+ import os
+-import utils
++import tests.utils as utils
+ import yappi
+ 
+ async_context_id = contextvars.ContextVar('async_context_id')
+--- a/tests/test_functionality.py
++++ b/tests/test_functionality.py
+@@ -1,1916 +1,1916 @@
+-import os

+-import sys

+-import time

+-import threading

+-import unittest

+-import yappi

+-import _yappi

+-import utils

+-import multiprocessing  # added to fix http://bugs.python.org/issue15881 for > Py2.6

+-import subprocess

+-

+-_counter = 0

+-

+-

+-class BasicUsage(utils.YappiUnitTestCase):

+-

+-    def test_callback_function_int_return_overflow(self):

+-        # this test is just here to check if any errors are generated, as the err

+-        # is printed in C side, I did not include it here. THere are ways to test

+-        # this deterministically, I did not bother

+-        import ctypes

+-

+-        def _unsigned_overflow_margin():

+-            return 2**(ctypes.sizeof(ctypes.c_void_p) * 8) - 1

+-

+-        def foo():

+-            pass

+-

+-        #with utils.captured_output() as (out, err):

+-        yappi.set_context_id_callback(_unsigned_overflow_margin)

+-        yappi.set_tag_callback(_unsigned_overflow_margin)

+-        yappi.start()

+-        foo()

+-

+-    def test_issue60(self):

+-

+-        def foo():

+-            buf = bytearray()

+-            buf += b't' * 200

+-            view = memoryview(buf)[10:]

+-            view = view.tobytes()

+-            del buf[:10]  # this throws exception

+-            return view

+-

+-        yappi.start(builtins=True)

+-        foo()

+-        self.assertTrue(

+-            len(

+-                yappi.get_func_stats(

+-                    filter_callback=lambda x: yappi.

+-                    func_matches(x, [memoryview.tobytes])

+-                )

+-            ) > 0

+-        )

+-        yappi.stop()

+-

+-    def test_issue54(self):

+-

+-        def _tag_cbk():

+-            global _counter

+-            _counter += 1

+-            return _counter

+-

+-        def a():

+-            pass

+-

+-        def b():

+-            pass

+-

+-        yappi.set_tag_callback(_tag_cbk)

+-        yappi.start()

+-        a()

+-        a()

+-        a()

+-        yappi.stop()

+-        stats = yappi.get_func_stats()

+-        self.assertEqual(stats.pop().ncall, 3)  # aggregated if no tag is given

+-        stats = yappi.get_func_stats(tag=1)

+-

+-        for i in range(1, 3):

+-            stats = yappi.get_func_stats(tag=i)

+-            stats = yappi.get_func_stats(

+-                tag=i, filter_callback=lambda x: yappi.func_matches(x, [a])

+-            )

+-

+-            stat = stats.pop()

+-            self.assertEqual(stat.ncall, 1)

+-

+-        yappi.set_tag_callback(None)

+-        yappi.clear_stats()

+-        yappi.start()

+-        b()

+-        b()

+-        stats = yappi.get_func_stats()

+-        self.assertEqual(len(stats), 1)

+-        stat = stats.pop()

+-        self.assertEqual(stat.ncall, 2)

+-

+-    def test_filter(self):

+-

+-        def a():

+-            pass

+-

+-        def b():

+-            a()

+-

+-        def c():

+-            b()

+-

+-        _TCOUNT = 5

+-

+-        ts = []

+-        yappi.start()

+-        for i in range(_TCOUNT):

+-            t = threading.Thread(target=c)

+-            t.start()

+-            ts.append(t)

+-

+-        for t in ts:

+-            t.join()

+-

+-        yappi.stop()

+-

+-        ctx_ids = []

+-        for tstat in yappi.get_thread_stats():

+-            if tstat.name == '_MainThread':

+-                main_ctx_id = tstat.id

+-            else:

+-                ctx_ids.append(tstat.id)

+-

+-        fstats = yappi.get_func_stats(filter={"ctx_id": 9})

+-        self.assertTrue(fstats.empty())

+-        fstats = yappi.get_func_stats(

+-            filter={

+-                "ctx_id": main_ctx_id,

+-                "name": "c"

+-            }

+-        )  # main thread

+-        self.assertTrue(fstats.empty())

+-

+-        for i in ctx_ids:

+-            fstats = yappi.get_func_stats(

+-                filter={

+-                    "ctx_id": i,

+-                    "name": "a",

+-                    "ncall": 1

+-                }

+-            )

+-            self.assertEqual(fstats.pop().ncall, 1)

+-            fstats = yappi.get_func_stats(filter={"ctx_id": i, "name": "b"})

+-            self.assertEqual(fstats.pop().ncall, 1)

+-            fstats = yappi.get_func_stats(filter={"ctx_id": i, "name": "c"})

+-            self.assertEqual(fstats.pop().ncall, 1)

+-

+-        yappi.clear_stats()

+-        yappi.start(builtins=True)

+-        time.sleep(0.1)

+-        yappi.stop()

+-        fstats = yappi.get_func_stats(filter={"module": "time"})

+-        self.assertEqual(len(fstats), 1)

+-

+-        # invalid filters`

+-        self.assertRaises(

+-            Exception, yappi.get_func_stats, filter={'tag': "sss"}

+-        )

+-        self.assertRaises(

+-            Exception, yappi.get_func_stats, filter={'ctx_id': "None"}

+-        )

+-

+-    def test_filter_callback(self):

+-

+-        def a():

+-            time.sleep(0.1)

+-

+-        def b():

+-            a()

+-

+-        def c():

+-            pass

+-

+-        def d():

+-            pass

+-

+-        yappi.set_clock_type("wall")

+-        yappi.start(builtins=True)

+-        a()

+-        b()

+-        c()

+-        d()

+-        stats = yappi.get_func_stats(

+-            filter_callback=lambda x: yappi.func_matches(x, [a, b])

+-        )

+-        #stats.print_all()

+-        r1 = '''

+-        tests/test_functionality.py:98 a      2      0.000000  0.200350  0.100175

+-        tests/test_functionality.py:101 b     1      0.000000  0.120000  0.100197

+-        '''

+-        self.assert_traces_almost_equal(r1, stats)

+-        self.assertEqual(len(stats), 2)

+-        stats = yappi.get_func_stats(

+-            filter_callback=lambda x: yappi.

+-            module_matches(x, [sys.modules[__name__]])

+-        )

+-        r1 = '''

+-        tests/test_functionality.py:98 a      2      0.000000  0.230130  0.115065

+-        tests/test_functionality.py:101 b     1      0.000000  0.120000  0.109011

+-        tests/test_functionality.py:104 c     1      0.000000  0.000002  0.000002

+-        tests/test_functionality.py:107 d     1      0.000000  0.000001  0.000001

+-        '''

+-        self.assert_traces_almost_equal(r1, stats)

+-        self.assertEqual(len(stats), 4)

+-

+-        stats = yappi.get_func_stats(

+-            filter_callback=lambda x: yappi.func_matches(x, [time.sleep])

+-        )

+-        self.assertEqual(len(stats), 1)

+-        r1 = '''

+-        time.sleep                            2      0.206804  0.220000  0.103402

+-        '''

+-        self.assert_traces_almost_equal(r1, stats)

+-

+-    def test_print_formatting(self):

+-

+-        def a():

+-            pass

+-

+-        def b():

+-            a()

+-

+-        func_cols = {

+-            1: ("name", 48),

+-            0: ("ncall", 5),

+-            2: ("tsub", 8),

+-        }

+-        thread_cols = {

+-            1: ("name", 48),

+-            0: ("ttot", 8),

+-        }

+-

+-        yappi.start()

+-        a()

+-        b()

+-        yappi.stop()

+-        fs = yappi.get_func_stats()

+-        cs = fs[1].children

+-        ts = yappi.get_thread_stats()

+-        #fs.print_all(out=sys.stderr, columns={1:("name", 70), })

+-        #cs.print_all(out=sys.stderr, columns=func_cols)

+-        #ts.print_all(out=sys.stderr, columns=thread_cols)

+-        #cs.print_all(out=sys.stderr, columns={})

+-

+-        self.assertRaises(

+-            yappi.YappiError, fs.print_all, columns={1: ("namee", 9)}

+-        )

+-        self.assertRaises(

+-            yappi.YappiError, cs.print_all, columns={1: ("dd", 0)}

+-        )

+-        self.assertRaises(

+-            yappi.YappiError, ts.print_all, columns={1: ("tidd", 0)}

+-        )

+-

+-    def test_get_clock(self):

+-        yappi.set_clock_type('cpu')

+-        self.assertEqual('cpu', yappi.get_clock_type())

+-        clock_info = yappi.get_clock_info()

+-        self.assertTrue('api' in clock_info)

+-        self.assertTrue('resolution' in clock_info)

+-

+-        yappi.set_clock_type('wall')

+-        self.assertEqual('wall', yappi.get_clock_type())

+-

+-        t0 = yappi.get_clock_time()

+-        time.sleep(0.1)

+-        duration = yappi.get_clock_time() - t0

+-        self.assertTrue(0.05 < duration < 0.3)

+-

+-    def test_profile_decorator(self):

+-

+-        def aggregate(func, stats):

+-            fname = "tests/%s.profile" % (func.__name__)

+-            try:

+-                stats.add(fname)

+-            except IOError:

+-                pass

+-            stats.save(fname)

+-            raise Exception("messing around")

+-

+-        @yappi.profile(return_callback=aggregate)

+-        def a(x, y):

+-            if x + y == 25:

+-                raise Exception("")

+-            return x + y

+-

+-        def b():

+-            pass

+-

+-        try:

+-            os.remove(

+-                "tests/a.profile"

+-            )  # remove the one from prev test, if available

+-        except:

+-            pass

+-

+-        # global profile is on to mess things up

+-        yappi.start()

+-        b()

+-

+-        # assert functionality and call function at same time

+-        try:

+-            self.assertEqual(a(1, 2), 3)

+-        except:

+-            pass

+-        try:

+-            self.assertEqual(a(2, 5), 7)

+-        except:

+-            pass

+-        try:

+-            a(4, 21)

+-        except:

+-            pass

+-        stats = yappi.get_func_stats().add("tests/a.profile")

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        self.assertEqual(fsa.ncall, 3)

+-        self.assertEqual(len(stats), 1)  # b() should be cleared out.

+-

+-        @yappi.profile(return_callback=aggregate)

+-        def count_down_rec(n):

+-            if n == 0:

+-                return

+-            count_down_rec(n - 1)

+-

+-        try:

+-            os.remove(

+-                "tests/count_down_rec.profile"

+-            )  # remove the one from prev test, if available

+-        except:

+-            pass

+-

+-        try:

+-            count_down_rec(4)

+-        except:

+-            pass

+-        try:

+-            count_down_rec(3)

+-        except:

+-            pass

+-

+-        stats = yappi.YFuncStats("tests/count_down_rec.profile")

+-        fsrec = utils.find_stat_by_name(stats, 'count_down_rec')

+-        self.assertEqual(fsrec.ncall, 9)

+-        self.assertEqual(fsrec.nactualcall, 2)

+-

+-    def test_strip_dirs(self):

+-

+-        def a():

+-            pass

+-

+-        stats = utils.run_and_get_func_stats(a, )

+-        stats.strip_dirs()

+-        fsa = utils.find_stat_by_name(stats, "a")

+-        self.assertEqual(fsa.module, os.path.basename(fsa.module))

+-

+-    @unittest.skipIf(os.name == "nt", "do not run on Windows")

+-    def test_run_as_script(self):

+-        import re

+-        p = subprocess.Popen(

+-            ['yappi', os.path.join('./tests', 'run_as_script.py')],

+-            stdout=subprocess.PIPE

+-        )

+-        out, err = p.communicate()

+-        self.assertEqual(p.returncode, 0)

+-        func_stats, thread_stats = re.split(

+-            b'name\\s+id\\s+tid\\s+ttot\\s+scnt\\s*\n', out

+-        )

+-        self.assertTrue(b'FancyThread' in thread_stats)

+-

+-    def test_yappi_overhead(self):

+-        LOOP_COUNT = 100000

+-

+-        def a():

+-            pass

+-

+-        def b():

+-            for i in range(LOOP_COUNT):

+-                a()

+-

+-        t0 = time.time()

+-        yappi.start()

+-        b()

+-        yappi.stop()

+-        time_with_yappi = time.time() - t0

+-        t0 = time.time()

+-        b()

+-        time_without_yappi = time.time() - t0

+-        if time_without_yappi == 0:

+-            time_without_yappi = 0.000001

+-

+-        # in latest v0.82, I calculated this as close to "7.0" in my machine.

+-        # however, %83 of this overhead is coming from tickcount(). The other %17

+-        # seems to have been evenly distributed to the internal bookkeeping

+-        # structures/algorithms which seems acceptable. Note that our test only

+-        # tests one function being profiled at-a-time in a short interval.

+-        # profiling high number of functions in a small time

+-        # is a different beast, (which is pretty unlikely in most applications)

+-        # So as a conclusion: I cannot see any optimization window for Yappi that

+-        # is worth implementing as we will only optimize %17 of the time.

+-        sys.stderr.write("\r\nYappi puts %0.1f times overhead to the profiled application in average.\r\n" % \

+-            (time_with_yappi / time_without_yappi))

+-

+-    def test_clear_stats_while_running(self):

+-

+-        def a():

+-            pass

+-

+-        yappi.start()

+-        a()

+-        yappi.clear_stats()

+-        a()

+-        stats = yappi.get_func_stats()

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        self.assertEqual(fsa.ncall, 1)

+-

+-    def test_generator(self):

+-

+-        def _gen(n):

+-            while (n > 0):

+-                yield n

+-                n -= 1

+-

+-        yappi.start()

+-        for x in _gen(5):

+-            pass

+-        self.assertTrue(

+-            yappi.convert2pstats(yappi.get_func_stats()) is not None

+-        )

+-

+-    def test_slice_child_stats_and_strip_dirs(self):

+-

+-        def b():

+-            for i in range(10000000):

+-                pass

+-

+-        def a():

+-            b()

+-

+-        yappi.start(builtins=True)

+-        a()

+-        stats = yappi.get_func_stats()

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        self.assertTrue(fsa.children[0:1] is not None)

+-        prev_afullname = fsa.full_name

+-        prev_bchildfullname = fsa.children[fsb].full_name

+-        stats.strip_dirs()

+-        self.assertTrue(len(prev_afullname) > len(fsa.full_name))

+-        self.assertTrue(

+-            len(prev_bchildfullname) > len(fsa.children[fsb].full_name)

+-        )

+-

+-    def test_children_stat_functions(self):

+-        _timings = {"a_1": 5, "b_1": 3, "c_1": 1}

+-        _yappi._set_test_timings(_timings)

+-

+-        def b():

+-            pass

+-

+-        def c():

+-            pass

+-

+-        def a():

+-            b()

+-            c()

+-

+-        yappi.start()

+-        a()

+-        b()  # non-child call

+-        c()  # non-child call

+-        stats = yappi.get_func_stats()

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        childs_of_a = fsa.children.get().sort("tavg", "desc")

+-        prev_item = None

+-        for item in childs_of_a:

+-            if prev_item:

+-                self.assertTrue(prev_item.tavg > item.tavg)

+-            prev_item = item

+-        childs_of_a.sort("name", "desc")

+-        prev_item = None

+-        for item in childs_of_a:

+-            if prev_item:

+-                self.assertTrue(prev_item.name > item.name)

+-            prev_item = item

+-        childs_of_a.clear()

+-        self.assertTrue(childs_of_a.empty())

+-

+-    def test_no_stats_different_clock_type_load(self):

+-

+-        def a():

+-            pass

+-

+-        yappi.start()

+-        a()

+-        yappi.stop()

+-        yappi.get_func_stats().save("tests/ystats1.ys")

+-        yappi.clear_stats()

+-        yappi.set_clock_type("WALL")

+-        yappi.start()

+-        yappi.stop()

+-        stats = yappi.get_func_stats().add("tests/ystats1.ys")

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        self.assertTrue(fsa is not None)

+-

+-    def test_subsequent_profile(self):

+-        _timings = {"a_1": 1, "b_1": 1}

+-        _yappi._set_test_timings(_timings)

+-

+-        def a():

+-            pass

+-

+-        def b():

+-            pass

+-

+-        yappi.start()

+-        a()

+-        yappi.stop()

+-        yappi.start()

+-        b()

+-        yappi.stop()

+-        stats = yappi.get_func_stats()

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        self.assertTrue(fsa is not None)

+-        self.assertTrue(fsb is not None)

+-        self.assertEqual(fsa.ttot, 1)

+-        self.assertEqual(fsb.ttot, 1)

+-

+-    def test_lambda(self):

+-        f = lambda: time.sleep(0.3)

+-        yappi.set_clock_type("wall")

+-        yappi.start()

+-        f()

+-        stats = yappi.get_func_stats()

+-        fsa = utils.find_stat_by_name(stats, '<lambda>')

+-        self.assertTrue(fsa.ttot > 0.1)

+-

+-    def test_module_stress(self):

+-        self.assertEqual(yappi.is_running(), False)

+-

+-        yappi.start()

+-        yappi.clear_stats()

+-        self.assertRaises(_yappi.error, yappi.set_clock_type, "wall")

+-

+-        yappi.stop()

+-        yappi.clear_stats()

+-        yappi.set_clock_type("cpu")

+-        self.assertRaises(yappi.YappiError, yappi.set_clock_type, "dummy")

+-        self.assertEqual(yappi.is_running(), False)

+-        yappi.clear_stats()

+-        yappi.clear_stats()

+-

+-    def test_stat_sorting(self):

+-        _timings = {"a_1": 13, "b_1": 10, "a_2": 6, "b_2": 1}

+-        _yappi._set_test_timings(_timings)

+-

+-        self._ncall = 1

+-

+-        def a():

+-            b()

+-

+-        def b():

+-            if self._ncall == 2:

+-                return

+-            self._ncall += 1

+-            a()

+-

+-        stats = utils.run_and_get_func_stats(a)

+-        stats = stats.sort("totaltime", "desc")

+-        prev_stat = None

+-        for stat in stats:

+-            if prev_stat:

+-                self.assertTrue(prev_stat.ttot >= stat.ttot)

+-            prev_stat = stat

+-        stats = stats.sort("totaltime", "asc")

+-        prev_stat = None

+-        for stat in stats:

+-            if prev_stat:

+-                self.assertTrue(prev_stat.ttot <= stat.ttot)

+-            prev_stat = stat

+-        stats = stats.sort("avgtime", "asc")

+-        prev_stat = None

+-        for stat in stats:

+-            if prev_stat:

+-                self.assertTrue(prev_stat.tavg <= stat.tavg)

+-            prev_stat = stat

+-        stats = stats.sort("name", "asc")

+-        prev_stat = None

+-        for stat in stats:

+-            if prev_stat:

+-                self.assertTrue(prev_stat.name <= stat.name)

+-            prev_stat = stat

+-        stats = stats.sort("subtime", "asc")

+-        prev_stat = None

+-        for stat in stats:

+-            if prev_stat:

+-                self.assertTrue(prev_stat.tsub <= stat.tsub)

+-            prev_stat = stat

+-

+-        self.assertRaises(

+-            yappi.YappiError, stats.sort, "invalid_func_sorttype_arg"

+-        )

+-        self.assertRaises(

+-            yappi.YappiError, stats.sort, "totaltime",

+-            "invalid_func_sortorder_arg"

+-        )

+-

+-    def test_start_flags(self):

+-        self.assertEqual(_yappi._get_start_flags(), None)

+-        yappi.start()

+-

+-        def a():

+-            pass

+-

+-        a()

+-        self.assertEqual(_yappi._get_start_flags()["profile_builtins"], 0)

+-        self.assertEqual(_yappi._get_start_flags()["profile_multicontext"], 1)

+-        self.assertEqual(len(yappi.get_thread_stats()), 1)

+-

+-    def test_builtin_profiling(self):

+-

+-        def a():

+-            time.sleep(0.4)  # is a builtin function

+-

+-        yappi.set_clock_type('wall')

+-

+-        yappi.start(builtins=True)

+-        a()

+-        stats = yappi.get_func_stats()

+-        fsa = utils.find_stat_by_name(stats, 'sleep')

+-        self.assertTrue(fsa is not None)

+-        self.assertTrue(fsa.ttot > 0.3)

+-        yappi.stop()

+-        yappi.clear_stats()

+-

+-        def a():

+-            pass

+-

+-        yappi.start()

+-        t = threading.Thread(target=a)

+-        t.start()

+-        t.join()

+-        stats = yappi.get_func_stats()

+-

+-    def test_singlethread_profiling(self):

+-        yappi.set_clock_type('wall')

+-

+-        def a():

+-            time.sleep(0.2)

+-

+-        class Worker1(threading.Thread):

+-

+-            def a(self):

+-                time.sleep(0.3)

+-

+-            def run(self):

+-                self.a()

+-

+-        yappi.start(profile_threads=False)

+-

+-        c = Worker1()

+-        c.start()

+-        c.join()

+-        a()

+-        stats = yappi.get_func_stats()

+-        fsa1 = utils.find_stat_by_name(stats, 'Worker1.a')

+-        fsa2 = utils.find_stat_by_name(stats, 'a')

+-        self.assertTrue(fsa1 is None)

+-        self.assertTrue(fsa2 is not None)

+-        self.assertTrue(fsa2.ttot > 0.1)

+-

+-    def test_run(self):

+-

+-        def profiled():

+-            pass

+-

+-        yappi.clear_stats()

+-        try:

+-            with yappi.run():

+-                profiled()

+-            stats = yappi.get_func_stats()

+-        finally:

+-            yappi.clear_stats()

+-

+-        self.assertIsNotNone(utils.find_stat_by_name(stats, 'profiled'))

+-

+-    def test_run_recursive(self):

+-

+-        def profiled():

+-            pass

+-

+-        def not_profiled():

+-            pass

+-

+-        yappi.clear_stats()

+-        try:

+-            with yappi.run():

+-                with yappi.run():

+-                    profiled()

+-                # Profiling stopped here

+-                not_profiled()

+-            stats = yappi.get_func_stats()

+-        finally:

+-            yappi.clear_stats()

+-

+-        self.assertIsNotNone(utils.find_stat_by_name(stats, 'profiled'))

+-        self.assertIsNone(utils.find_stat_by_name(stats, 'not_profiled'))

+-

+-

+-class StatSaveScenarios(utils.YappiUnitTestCase):

+-

+-    def test_pstats_conversion(self):

+-

+-        def pstat_id(fs):

+-            return (fs.module, fs.lineno, fs.name)

+-

+-        def a():

+-            d()

+-

+-        def b():

+-            d()

+-

+-        def c():

+-            pass

+-

+-        def d():

+-            pass

+-

+-        _timings = {"a_1": 12, "b_1": 7, "c_1": 5, "d_1": 2}

+-        _yappi._set_test_timings(_timings)

+-        stats = utils.run_and_get_func_stats(a, )

+-        stats.strip_dirs()

+-        stats.save("tests/a1.pstats", type="pstat")

+-        fsa_pid = pstat_id(utils.find_stat_by_name(stats, "a"))

+-        fsd_pid = pstat_id(utils.find_stat_by_name(stats, "d"))

+-        yappi.clear_stats()

+-        _yappi._set_test_timings(_timings)

+-        stats = utils.run_and_get_func_stats(a, )

+-        stats.strip_dirs()

+-        stats.save("tests/a2.pstats", type="pstat")

+-        yappi.clear_stats()

+-        _yappi._set_test_timings(_timings)

+-        stats = utils.run_and_get_func_stats(b, )

+-        stats.strip_dirs()

+-        stats.save("tests/b1.pstats", type="pstat")

+-        fsb_pid = pstat_id(utils.find_stat_by_name(stats, "b"))

+-        yappi.clear_stats()

+-        _yappi._set_test_timings(_timings)

+-        stats = utils.run_and_get_func_stats(c, )

+-        stats.strip_dirs()

+-        stats.save("tests/c1.pstats", type="pstat")

+-        fsc_pid = pstat_id(utils.find_stat_by_name(stats, "c"))

+-

+-        # merge saved stats and check pstats values are correct

+-        import pstats

+-        p = pstats.Stats(

+-            'tests/a1.pstats', 'tests/a2.pstats', 'tests/b1.pstats',

+-            'tests/c1.pstats'

+-        )

+-        p.strip_dirs()

+-        # ct = ttot, tt = tsub

+-        (cc, nc, tt, ct, callers) = p.stats[fsa_pid]

+-        self.assertEqual(cc, nc, 2)

+-        self.assertEqual(tt, 20)

+-        self.assertEqual(ct, 24)

+-        (cc, nc, tt, ct, callers) = p.stats[fsd_pid]

+-        self.assertEqual(cc, nc, 3)

+-        self.assertEqual(tt, 6)

+-        self.assertEqual(ct, 6)

+-        self.assertEqual(len(callers), 2)

+-        (cc, nc, tt, ct) = callers[fsa_pid]

+-        self.assertEqual(cc, nc, 2)

+-        self.assertEqual(tt, 4)

+-        self.assertEqual(ct, 4)

+-        (cc, nc, tt, ct) = callers[fsb_pid]

+-        self.assertEqual(cc, nc, 1)

+-        self.assertEqual(tt, 2)

+-        self.assertEqual(ct, 2)

+-

+-    def test_merge_stats(self):

+-        _timings = {

+-            "a_1": 15,

+-            "b_1": 14,

+-            "c_1": 12,

+-            "d_1": 10,

+-            "e_1": 9,

+-            "f_1": 7,

+-            "g_1": 6,

+-            "h_1": 5,

+-            "i_1": 1

+-        }

+-        _yappi._set_test_timings(_timings)

+-

+-        def a():

+-            b()

+-

+-        def b():

+-            c()

+-

+-        def c():

+-            d()

+-

+-        def d():

+-            e()

+-

+-        def e():

+-            f()

+-

+-        def f():

+-            g()

+-

+-        def g():

+-            h()

+-

+-        def h():

+-            i()

+-

+-        def i():

+-            pass

+-

+-        yappi.start()

+-        a()

+-        a()

+-        yappi.stop()

+-        stats = yappi.get_func_stats()

+-        self.assertRaises(

+-            NotImplementedError, stats.save, "", "INVALID_SAVE_TYPE"

+-        )

+-        stats.save("tests/ystats2.ys")

+-        yappi.clear_stats()

+-        _yappi._set_test_timings(_timings)

+-        yappi.start()

+-        a()

+-        stats = yappi.get_func_stats().add("tests/ystats2.ys")

+-        fsa = utils.find_stat_by_name(stats, "a")

+-        fsb = utils.find_stat_by_name(stats, "b")

+-        fsc = utils.find_stat_by_name(stats, "c")

+-        fsd = utils.find_stat_by_name(stats, "d")

+-        fse = utils.find_stat_by_name(stats, "e")

+-        fsf = utils.find_stat_by_name(stats, "f")

+-        fsg = utils.find_stat_by_name(stats, "g")

+-        fsh = utils.find_stat_by_name(stats, "h")

+-        fsi = utils.find_stat_by_name(stats, "i")

+-        self.assertEqual(fsa.ttot, 45)

+-        self.assertEqual(fsa.ncall, 3)

+-        self.assertEqual(fsa.nactualcall, 3)

+-        self.assertEqual(fsa.tsub, 3)

+-        self.assertEqual(fsa.children[fsb].ttot, fsb.ttot)

+-        self.assertEqual(fsa.children[fsb].tsub, fsb.tsub)

+-        self.assertEqual(fsb.children[fsc].ttot, fsc.ttot)

+-        self.assertEqual(fsb.children[fsc].tsub, fsc.tsub)

+-        self.assertEqual(fsc.tsub, 6)

+-        self.assertEqual(fsc.children[fsd].ttot, fsd.ttot)

+-        self.assertEqual(fsc.children[fsd].tsub, fsd.tsub)

+-        self.assertEqual(fsd.children[fse].ttot, fse.ttot)

+-        self.assertEqual(fsd.children[fse].tsub, fse.tsub)

+-        self.assertEqual(fse.children[fsf].ttot, fsf.ttot)

+-        self.assertEqual(fse.children[fsf].tsub, fsf.tsub)

+-        self.assertEqual(fsf.children[fsg].ttot, fsg.ttot)

+-        self.assertEqual(fsf.children[fsg].tsub, fsg.tsub)

+-        self.assertEqual(fsg.ttot, 18)

+-        self.assertEqual(fsg.tsub, 3)

+-        self.assertEqual(fsg.children[fsh].ttot, fsh.ttot)

+-        self.assertEqual(fsg.children[fsh].tsub, fsh.tsub)

+-        self.assertEqual(fsh.ttot, 15)

+-        self.assertEqual(fsh.tsub, 12)

+-        self.assertEqual(fsh.tavg, 5)

+-        self.assertEqual(fsh.children[fsi].ttot, fsi.ttot)

+-        self.assertEqual(fsh.children[fsi].tsub, fsi.tsub)

+-        #stats.debug_print()

+-

+-    def test_merge_multithreaded_stats(self):

+-        import _yappi

+-        timings = {"a_1": 2, "b_1": 1}

+-        _yappi._set_test_timings(timings)

+-

+-        def a():

+-            pass

+-

+-        def b():

+-            pass

+-

+-        yappi.start()

+-        t = threading.Thread(target=a)

+-        t.start()

+-        t.join()

+-        t = threading.Thread(target=b)

+-        t.start()

+-        t.join()

+-        yappi.get_func_stats().save("tests/ystats1.ys")

+-        yappi.clear_stats()

+-        _yappi._set_test_timings(timings)

+-        self.assertEqual(len(yappi.get_func_stats()), 0)

+-        self.assertEqual(len(yappi.get_thread_stats()), 1)

+-        t = threading.Thread(target=a)

+-        t.start()

+-        t.join()

+-

+-        self.assertEqual(_yappi._get_start_flags()["profile_builtins"], 0)

+-        self.assertEqual(_yappi._get_start_flags()["profile_multicontext"], 1)

+-        yappi.get_func_stats().save("tests/ystats2.ys")

+-

+-        stats = yappi.YFuncStats([

+-            "tests/ystats1.ys",

+-            "tests/ystats2.ys",

+-        ])

+-        fsa = utils.find_stat_by_name(stats, "a")

+-        fsb = utils.find_stat_by_name(stats, "b")

+-        self.assertEqual(fsa.ncall, 2)

+-        self.assertEqual(fsb.ncall, 1)

+-        self.assertEqual(fsa.tsub, fsa.ttot, 4)

+-        self.assertEqual(fsb.tsub, fsb.ttot, 1)

+-

+-    def test_merge_load_different_clock_types(self):

+-        yappi.start(builtins=True)

+-

+-        def a():

+-            b()

+-

+-        def b():

+-            c()

+-

+-        def c():

+-            pass

+-

+-        t = threading.Thread(target=a)

+-        t.start()

+-        t.join()

+-        yappi.get_func_stats().sort("name", "asc").save("tests/ystats1.ys")

+-        yappi.stop()

+-        yappi.clear_stats()

+-        yappi.start(builtins=False)

+-        t = threading.Thread(target=a)

+-        t.start()

+-        t.join()

+-        yappi.get_func_stats().save("tests/ystats2.ys")

+-        yappi.stop()

+-        self.assertRaises(_yappi.error, yappi.set_clock_type, "wall")

+-        yappi.clear_stats()

+-        yappi.set_clock_type("wall")

+-        yappi.start()

+-        t = threading.Thread(target=a)

+-        t.start()

+-        t.join()

+-        yappi.get_func_stats().save("tests/ystats3.ys")

+-        self.assertRaises(

+-            yappi.YappiError,

+-            yappi.YFuncStats().add("tests/ystats1.ys").add, "tests/ystats3.ys"

+-        )

+-        stats = yappi.YFuncStats(["tests/ystats1.ys",

+-                                  "tests/ystats2.ys"]).sort("name")

+-        fsa = utils.find_stat_by_name(stats, "a")

+-        fsb = utils.find_stat_by_name(stats, "b")

+-        fsc = utils.find_stat_by_name(stats, "c")

+-        self.assertEqual(fsa.ncall, 2)

+-        self.assertEqual(fsa.ncall, fsb.ncall, fsc.ncall)

+-

+-    def test_merge_aabab_aabbc(self):

+-        _timings = {

+-            "a_1": 15,

+-            "a_2": 14,

+-            "b_1": 12,

+-            "a_3": 10,

+-            "b_2": 9,

+-            "c_1": 4

+-        }

+-        _yappi._set_test_timings(_timings)

+-

+-        def a():

+-            if self._ncall == 1:

+-                self._ncall += 1

+-                a()

+-            elif self._ncall == 5:

+-                self._ncall += 1

+-                a()

+-            else:

+-                b()

+-

+-        def b():

+-            if self._ncall == 2:

+-                self._ncall += 1

+-                a()

+-            elif self._ncall == 6:

+-                self._ncall += 1

+-                b()

+-            elif self._ncall == 7:

+-                c()

+-            else:

+-                return

+-

+-        def c():

+-            pass

+-

+-        self._ncall = 1

+-        stats = utils.run_and_get_func_stats(a, )

+-        stats.save("tests/ystats1.ys")

+-        yappi.clear_stats()

+-        _yappi._set_test_timings(_timings)

+-        #stats.print_all()

+-

+-        self._ncall = 5

+-        stats = utils.run_and_get_func_stats(a, )

+-        stats.save("tests/ystats2.ys")

+-

+-        #stats.print_all()

+-

+-        def a():  # same name but another function(code object)

+-            pass

+-

+-        yappi.start()

+-        a()

+-        stats = yappi.get_func_stats().add(

+-            ["tests/ystats1.ys", "tests/ystats2.ys"]

+-        )

+-        #stats.print_all()

+-        self.assertEqual(len(stats), 4)

+-

+-        fsa = None

+-        for stat in stats:

+-            if stat.name == "a" and stat.ttot == 45:

+-                fsa = stat

+-                break

+-        self.assertTrue(fsa is not None)

+-

+-        self.assertEqual(fsa.ncall, 7)

+-        self.assertEqual(fsa.nactualcall, 3)

+-        self.assertEqual(fsa.ttot, 45)

+-        self.assertEqual(fsa.tsub, 10)

+-        fsb = utils.find_stat_by_name(stats, "b")

+-        fsc = utils.find_stat_by_name(stats, "c")

+-        self.assertEqual(fsb.ncall, 6)

+-        self.assertEqual(fsb.nactualcall, 3)

+-        self.assertEqual(fsb.ttot, 36)

+-        self.assertEqual(fsb.tsub, 27)

+-        self.assertEqual(fsb.tavg, 6)

+-        self.assertEqual(fsc.ttot, 8)

+-        self.assertEqual(fsc.tsub, 8)

+-        self.assertEqual(fsc.tavg, 4)

+-        self.assertEqual(fsc.nactualcall, fsc.ncall, 2)

+-

+-

+-class MultithreadedScenarios(utils.YappiUnitTestCase):

+-

+-    def test_issue_32(self):

+-        '''

+-        Start yappi from different thread and we get Internal Error(15) as 

+-        the current_ctx_id() called while enumerating the threads in start() 

+-        and as it does not swap to the enumerated ThreadState* the THreadState_GetDict()

+-        returns wrong object and thus sets an invalid id for the _ctx structure.

+-

+-        When this issue happens multiple Threads have same tid as the internal ts_ptr

+-        will be same for different contexts. So, let's see if that happens

+-        '''

+-

+-        def foo():

+-            time.sleep(0.2)

+-

+-        def bar():

+-            time.sleep(0.1)

+-

+-        def thread_func():

+-            yappi.set_clock_type("wall")

+-            yappi.start()

+-

+-            bar()

+-

+-        t = threading.Thread(target=thread_func)

+-        t.start()

+-        t.join()

+-

+-        foo()

+-

+-        yappi.stop()

+-

+-        thread_ids = set()

+-        for tstat in yappi.get_thread_stats():

+-            self.assertTrue(tstat.tid not in thread_ids)

+-            thread_ids.add(tstat.tid)

+-

+-    def test_subsequent_profile(self):

+-        WORKER_COUNT = 5

+-

+-        def a():

+-            pass

+-

+-        def b():

+-            pass

+-

+-        def c():

+-            pass

+-

+-        _timings = {

+-            "a_1": 3,

+-            "b_1": 2,

+-            "c_1": 1,

+-        }

+-

+-        yappi.start()

+-

+-        def g():

+-            pass

+-

+-        g()

+-        yappi.stop()

+-        yappi.clear_stats()

+-        _yappi._set_test_timings(_timings)

+-        yappi.start()

+-

+-        _dummy = []

+-        for i in range(WORKER_COUNT):

+-            t = threading.Thread(target=a)

+-            t.start()

+-            t.join()

+-        for i in range(WORKER_COUNT):

+-            t = threading.Thread(target=b)

+-            t.start()

+-            _dummy.append(t)

+-            t.join()

+-        for i in range(WORKER_COUNT):

+-            t = threading.Thread(target=a)

+-            t.start()

+-            t.join()

+-        for i in range(WORKER_COUNT):

+-            t = threading.Thread(target=c)

+-            t.start()

+-            t.join()

+-        yappi.stop()

+-        yappi.start()

+-

+-        def f():

+-            pass

+-

+-        f()

+-        stats = yappi.get_func_stats()

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        fsc = utils.find_stat_by_name(stats, 'c')

+-        self.assertEqual(fsa.ncall, 10)

+-        self.assertEqual(fsb.ncall, 5)

+-        self.assertEqual(fsc.ncall, 5)

+-        self.assertEqual(fsa.ttot, fsa.tsub, 30)

+-        self.assertEqual(fsb.ttot, fsb.tsub, 10)

+-        self.assertEqual(fsc.ttot, fsc.tsub, 5)

+-

+-        # MACOSx optimizes by only creating one worker thread

+-        self.assertTrue(len(yappi.get_thread_stats()) >= 2)

+-

+-    def test_basic(self):

+-        yappi.set_clock_type('wall')

+-

+-        def dummy():

+-            pass

+-

+-        def a():

+-            time.sleep(0.2)

+-

+-        class Worker1(threading.Thread):

+-

+-            def a(self):

+-                time.sleep(0.3)

+-

+-            def run(self):

+-                self.a()

+-

+-        yappi.start(builtins=False, profile_threads=True)

+-

+-        c = Worker1()

+-        c.start()

+-        c.join()

+-        a()

+-        stats = yappi.get_func_stats()

+-        fsa1 = utils.find_stat_by_name(stats, 'Worker1.a')

+-        fsa2 = utils.find_stat_by_name(stats, 'a')

+-        self.assertTrue(fsa1 is not None)

+-        self.assertTrue(fsa2 is not None)

+-        self.assertTrue(fsa1.ttot > 0.2)

+-        self.assertTrue(fsa2.ttot > 0.1)

+-        tstats = yappi.get_thread_stats()

+-        self.assertEqual(len(tstats), 2)

+-        tsa = utils.find_stat_by_name(tstats, 'Worker1')

+-        tsm = utils.find_stat_by_name(tstats, '_MainThread')

+-        dummy()  # call dummy to force ctx name to be retrieved again.

+-        self.assertTrue(tsa is not None)

+-        # TODO: I put dummy() to fix below, remove the comments after a while.

+-        self.assertTrue( # FIX: I see this fails sometimes?

+-            tsm is not None,

+-            'Could not find "_MainThread". Found: %s' % (', '.join(utils.get_stat_names(tstats))))

+-

+-    def test_ctx_stats(self):

+-        from threading import Thread

+-        DUMMY_WORKER_COUNT = 5

+-        yappi.start()

+-

+-        class DummyThread(Thread):

+-            pass

+-

+-        def dummy():

+-            pass

+-

+-        def dummy_worker():

+-            pass

+-

+-        for i in range(DUMMY_WORKER_COUNT):

+-            t = DummyThread(target=dummy_worker)

+-            t.start()

+-            t.join()

+-        yappi.stop()

+-        stats = yappi.get_thread_stats()

+-        tsa = utils.find_stat_by_name(stats, "DummyThread")

+-        self.assertTrue(tsa is not None)

+-        yappi.clear_stats()

+-        time.sleep(1.0)

+-        _timings = {

+-            "a_1": 6,

+-            "b_1": 5,

+-            "c_1": 3,

+-            "d_1": 1,

+-            "a_2": 4,

+-            "b_2": 3,

+-            "c_2": 2,

+-            "d_2": 1

+-        }

+-        _yappi._set_test_timings(_timings)

+-

+-        class Thread1(Thread):

+-            pass

+-

+-        class Thread2(Thread):

+-            pass

+-

+-        def a():

+-            b()

+-

+-        def b():

+-            c()

+-

+-        def c():

+-            d()

+-

+-        def d():

+-            time.sleep(0.6)

+-

+-        yappi.set_clock_type("wall")

+-        yappi.start()

+-        t1 = Thread1(target=a)

+-        t1.start()

+-        t2 = Thread2(target=a)

+-        t2.start()

+-        t1.join()

+-        t2.join()

+-        stats = yappi.get_thread_stats()

+-

+-        # the fist clear_stats clears the context table?

+-        tsa = utils.find_stat_by_name(stats, "DummyThread")

+-        self.assertTrue(tsa is None)

+-

+-        tst1 = utils.find_stat_by_name(stats, "Thread1")

+-        tst2 = utils.find_stat_by_name(stats, "Thread2")

+-        tsmain = utils.find_stat_by_name(stats, "_MainThread")

+-        dummy()  # call dummy to force ctx name to be retrieved again.

+-        self.assertTrue(len(stats) == 3)

+-        self.assertTrue(tst1 is not None)

+-        self.assertTrue(tst2 is not None)

+-        # TODO: I put dummy() to fix below, remove the comments after a while.

+-        self.assertTrue( # FIX: I see this fails sometimes

+-            tsmain is not None,

+-            'Could not find "_MainThread". Found: %s' % (', '.join(utils.get_stat_names(stats))))

+-        self.assertTrue(1.0 > tst2.ttot >= 0.5)

+-        self.assertTrue(1.0 > tst1.ttot >= 0.5)

+-

+-        # test sorting of the ctx stats

+-        stats = stats.sort("totaltime", "desc")

+-        prev_stat = None

+-        for stat in stats:

+-            if prev_stat:

+-                self.assertTrue(prev_stat.ttot >= stat.ttot)

+-            prev_stat = stat

+-        stats = stats.sort("totaltime", "asc")

+-        prev_stat = None

+-        for stat in stats:

+-            if prev_stat:

+-                self.assertTrue(prev_stat.ttot <= stat.ttot)

+-            prev_stat = stat

+-        stats = stats.sort("schedcount", "desc")

+-        prev_stat = None

+-        for stat in stats:

+-            if prev_stat:

+-                self.assertTrue(prev_stat.sched_count >= stat.sched_count)

+-            prev_stat = stat

+-        stats = stats.sort("name", "desc")

+-        prev_stat = None

+-        for stat in stats:

+-            if prev_stat:

+-                self.assertTrue(prev_stat.name.lower() >= stat.name.lower())

+-            prev_stat = stat

+-        self.assertRaises(

+-            yappi.YappiError, stats.sort, "invalid_thread_sorttype_arg"

+-        )

+-        self.assertRaises(

+-            yappi.YappiError, stats.sort, "invalid_thread_sortorder_arg"

+-        )

+-

+-    def test_ctx_stats_cpu(self):

+-

+-        def get_thread_name():

+-            try:

+-                return threading.current_thread().name

+-            except AttributeError:

+-                return "Anonymous"

+-

+-        def burn_cpu(sec):

+-            t0 = yappi.get_clock_time()

+-            elapsed = 0

+-            while (elapsed < sec):

+-                for _ in range(1000):

+-                    pass

+-                elapsed = yappi.get_clock_time() - t0

+-

+-        def test():

+-

+-            ts = []

+-            for i in (0.01, 0.05, 0.1):

+-                t = threading.Thread(target=burn_cpu, args=(i, ))

+-                t.name = "burn_cpu-%s" % str(i)

+-                t.start()

+-                ts.append(t)

+-            for t in ts:

+-                t.join()

+-

+-        yappi.set_clock_type("cpu")

+-        yappi.set_context_name_callback(get_thread_name)

+-

+-        yappi.start()

+-

+-        test()

+-

+-        yappi.stop()

+-

+-        tstats = yappi.get_thread_stats()

+-        r1 = '''

+-        burn_cpu-0.1      3      123145356058624  0.100105  8

+-        burn_cpu-0.05     2      123145361313792  0.050149  8

+-        burn_cpu-0.01     1      123145356058624  0.010127  2

+-        MainThread        0      4321620864       0.001632  6

+-        '''

+-        self.assert_ctx_stats_almost_equal(r1, tstats)

+-

+-    def test_producer_consumer_with_queues(self):

+-        # we currently just stress yappi, no functionality test is done here.

+-        yappi.start()

+-        if utils.is_py3x():

+-            from queue import Queue

+-        else:

+-            from Queue import Queue

+-        from threading import Thread

+-        WORKER_THREAD_COUNT = 50

+-        WORK_ITEM_COUNT = 2000

+-

+-        def worker():

+-            while True:

+-                item = q.get()

+-                # do the work with item

+-                q.task_done()

+-

+-        q = Queue()

+-        for i in range(WORKER_THREAD_COUNT):

+-            t = Thread(target=worker)

+-            t.daemon = True

+-            t.start()

+-

+-        for item in range(WORK_ITEM_COUNT):

+-            q.put(item)

+-        q.join()  # block until all tasks are done

+-        #yappi.get_func_stats().sort("callcount").print_all()

+-        yappi.stop()

+-

+-    def test_temporary_lock_waiting(self):

+-        yappi.start()

+-        _lock = threading.Lock()

+-

+-        def worker():

+-            _lock.acquire()

+-            try:

+-                time.sleep(1.0)

+-            finally:

+-                _lock.release()

+-

+-        t1 = threading.Thread(target=worker)

+-        t2 = threading.Thread(target=worker)

+-        t1.start()

+-        t2.start()

+-        t1.join()

+-        t2.join()

+-        #yappi.get_func_stats().sort("callcount").print_all()

+-        yappi.stop()

+-

+-    @unittest.skipIf(os.name != "posix", "requires Posix compliant OS")

+-    def test_signals_with_blocking_calls(self):

+-        import signal, os, time

+-

+-        # just to verify if signal is handled correctly and stats/yappi are not corrupted.

+-        def handler(signum, frame):

+-            raise Exception("Signal handler executed!")

+-

+-        yappi.start()

+-        signal.signal(signal.SIGALRM, handler)

+-        signal.alarm(1)

+-        self.assertRaises(Exception, time.sleep, 2)

+-        stats = yappi.get_func_stats()

+-        fsh = utils.find_stat_by_name(stats, "handler")

+-        self.assertTrue(fsh is not None)

+-

+-    @unittest.skipIf(not sys.version_info >= (3, 2), "requires Python 3.2")

+-    def test_concurrent_futures(self):

+-        yappi.start()

+-        from concurrent.futures import ThreadPoolExecutor

+-        with ThreadPoolExecutor(max_workers=5) as executor:

+-            f = executor.submit(pow, 5, 2)

+-            self.assertEqual(f.result(), 25)

+-        time.sleep(1.0)

+-        yappi.stop()

+-

+-    @unittest.skipIf(not sys.version_info >= (3, 2), "requires Python 3.2")

+-    def test_barrier(self):

+-        yappi.start()

+-        b = threading.Barrier(2, timeout=1)

+-

+-        def worker():

+-            try:

+-                b.wait()

+-            except threading.BrokenBarrierError:

+-                pass

+-            except Exception:

+-                raise Exception("BrokenBarrierError not raised")

+-

+-        t1 = threading.Thread(target=worker)

+-        t1.start()

+-        #b.wait()

+-        t1.join()

+-        yappi.stop()

+-

+-

+-class NonRecursiveFunctions(utils.YappiUnitTestCase):

+-

+-    def test_abcd(self):

+-        _timings = {"a_1": 6, "b_1": 5, "c_1": 3, "d_1": 1}

+-        _yappi._set_test_timings(_timings)

+-

+-        def a():

+-            b()

+-

+-        def b():

+-            c()

+-

+-        def c():

+-            d()

+-

+-        def d():

+-            pass

+-

+-        stats = utils.run_and_get_func_stats(a)

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        fsc = utils.find_stat_by_name(stats, 'c')

+-        fsd = utils.find_stat_by_name(stats, 'd')

+-        cfsab = fsa.children[fsb]

+-        cfsbc = fsb.children[fsc]

+-        cfscd = fsc.children[fsd]

+-

+-        self.assertEqual(fsa.ttot, 6)

+-        self.assertEqual(fsa.tsub, 1)

+-        self.assertEqual(fsb.ttot, 5)

+-        self.assertEqual(fsb.tsub, 2)

+-        self.assertEqual(fsc.ttot, 3)

+-        self.assertEqual(fsc.tsub, 2)

+-        self.assertEqual(fsd.ttot, 1)

+-        self.assertEqual(fsd.tsub, 1)

+-        self.assertEqual(cfsab.ttot, 5)

+-        self.assertEqual(cfsab.tsub, 2)

+-        self.assertEqual(cfsbc.ttot, 3)

+-        self.assertEqual(cfsbc.tsub, 2)

+-        self.assertEqual(cfscd.ttot, 1)

+-        self.assertEqual(cfscd.tsub, 1)

+-

+-    def test_stop_in_middle(self):

+-        _timings = {"a_1": 6, "b_1": 4}

+-        _yappi._set_test_timings(_timings)

+-

+-        def a():

+-            b()

+-            yappi.stop()

+-

+-        def b():

+-            time.sleep(0.2)

+-

+-        yappi.start()

+-        a()

+-        stats = yappi.get_func_stats()

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-

+-        self.assertEqual(fsa.ncall, 1)

+-        self.assertEqual(fsa.nactualcall, 0)

+-        self.assertEqual(fsa.ttot, 0)  # no call_leave called

+-        self.assertEqual(fsa.tsub, 0)  # no call_leave called

+-        self.assertEqual(fsb.ttot, 4)

+-

+-

+-class RecursiveFunctions(utils.YappiUnitTestCase):

+-

+-    def test_fibonacci(self):

+-

+-        def fib(n):

+-            if n > 1:

+-                return fib(n - 1) + fib(n - 2)

+-            else:

+-                return n

+-

+-        stats = utils.run_and_get_func_stats(fib, 22)

+-        fs = utils.find_stat_by_name(stats, 'fib')

+-        self.assertEqual(fs.ncall, 57313)

+-        self.assertEqual(fs.ttot, fs.tsub)

+-

+-    def test_abcadc(self):

+-        _timings = {

+-            "a_1": 20,

+-            "b_1": 19,

+-            "c_1": 17,

+-            "a_2": 13,

+-            "d_1": 12,

+-            "c_2": 10,

+-            "a_3": 5

+-        }

+-        _yappi._set_test_timings(_timings)

+-

+-        def a(n):

+-            if n == 3:

+-                return

+-            if n == 1 + 1:

+-                d(n)

+-            else:

+-                b(n)

+-

+-        def b(n):

+-            c(n)

+-

+-        def c(n):

+-            a(n + 1)

+-

+-        def d(n):

+-            c(n)

+-

+-        stats = utils.run_and_get_func_stats(a, 1)

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        fsc = utils.find_stat_by_name(stats, 'c')

+-        fsd = utils.find_stat_by_name(stats, 'd')

+-        self.assertEqual(fsa.ncall, 3)

+-        self.assertEqual(fsa.nactualcall, 1)

+-        self.assertEqual(fsa.ttot, 20)

+-        self.assertEqual(fsa.tsub, 7)

+-        self.assertEqual(fsb.ttot, 19)

+-        self.assertEqual(fsb.tsub, 2)

+-        self.assertEqual(fsc.ttot, 17)

+-        self.assertEqual(fsc.tsub, 9)

+-        self.assertEqual(fsd.ttot, 12)

+-        self.assertEqual(fsd.tsub, 2)

+-        cfsca = fsc.children[fsa]

+-        self.assertEqual(cfsca.nactualcall, 0)

+-        self.assertEqual(cfsca.ncall, 2)

+-        self.assertEqual(cfsca.ttot, 13)

+-        self.assertEqual(cfsca.tsub, 6)

+-

+-    def test_aaaa(self):

+-        _timings = {"d_1": 9, "d_2": 7, "d_3": 3, "d_4": 2}

+-        _yappi._set_test_timings(_timings)

+-

+-        def d(n):

+-            if n == 3:

+-                return

+-            d(n + 1)

+-

+-        stats = utils.run_and_get_func_stats(d, 0)

+-        fsd = utils.find_stat_by_name(stats, 'd')

+-        self.assertEqual(fsd.ncall, 4)

+-        self.assertEqual(fsd.nactualcall, 1)

+-        self.assertEqual(fsd.ttot, 9)

+-        self.assertEqual(fsd.tsub, 9)

+-        cfsdd = fsd.children[fsd]

+-        self.assertEqual(cfsdd.ttot, 7)

+-        self.assertEqual(cfsdd.tsub, 7)

+-        self.assertEqual(cfsdd.ncall, 3)

+-        self.assertEqual(cfsdd.nactualcall, 0)

+-

+-    def test_abcabc(self):

+-        _timings = {

+-            "a_1": 20,

+-            "b_1": 19,

+-            "c_1": 17,

+-            "a_2": 13,

+-            "b_2": 11,

+-            "c_2": 9,

+-            "a_3": 6

+-        }

+-        _yappi._set_test_timings(_timings)

+-

+-        def a(n):

+-            if n == 3:

+-                return

+-            else:

+-                b(n)

+-

+-        def b(n):

+-            c(n)

+-

+-        def c(n):

+-            a(n + 1)

+-

+-        stats = utils.run_and_get_func_stats(a, 1)

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        fsc = utils.find_stat_by_name(stats, 'c')

+-        self.assertEqual(fsa.ncall, 3)

+-        self.assertEqual(fsa.nactualcall, 1)

+-        self.assertEqual(fsa.ttot, 20)

+-        self.assertEqual(fsa.tsub, 9)

+-        self.assertEqual(fsb.ttot, 19)

+-        self.assertEqual(fsb.tsub, 4)

+-        self.assertEqual(fsc.ttot, 17)

+-        self.assertEqual(fsc.tsub, 7)

+-        cfsab = fsa.children[fsb]

+-        cfsbc = fsb.children[fsc]

+-        cfsca = fsc.children[fsa]

+-        self.assertEqual(cfsab.ttot, 19)

+-        self.assertEqual(cfsab.tsub, 4)

+-        self.assertEqual(cfsbc.ttot, 17)

+-        self.assertEqual(cfsbc.tsub, 7)

+-        self.assertEqual(cfsca.ttot, 13)

+-        self.assertEqual(cfsca.tsub, 8)

+-

+-    def test_abcbca(self):

+-        _timings = {"a_1": 10, "b_1": 9, "c_1": 7, "b_2": 4, "c_2": 2, "a_2": 1}

+-        _yappi._set_test_timings(_timings)

+-        self._ncall = 1

+-

+-        def a():

+-            if self._ncall == 1:

+-                b()

+-            else:

+-                return

+-

+-        def b():

+-            c()

+-

+-        def c():

+-            if self._ncall == 1:

+-                self._ncall += 1

+-                b()

+-            else:

+-                a()

+-

+-        stats = utils.run_and_get_func_stats(a)

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        fsc = utils.find_stat_by_name(stats, 'c')

+-        cfsab = fsa.children[fsb]

+-        cfsbc = fsb.children[fsc]

+-        cfsca = fsc.children[fsa]

+-        self.assertEqual(fsa.ttot, 10)

+-        self.assertEqual(fsa.tsub, 2)

+-        self.assertEqual(fsb.ttot, 9)

+-        self.assertEqual(fsb.tsub, 4)

+-        self.assertEqual(fsc.ttot, 7)

+-        self.assertEqual(fsc.tsub, 4)

+-        self.assertEqual(cfsab.ttot, 9)

+-        self.assertEqual(cfsab.tsub, 2)

+-        self.assertEqual(cfsbc.ttot, 7)

+-        self.assertEqual(cfsbc.tsub, 4)

+-        self.assertEqual(cfsca.ttot, 1)

+-        self.assertEqual(cfsca.tsub, 1)

+-        self.assertEqual(cfsca.ncall, 1)

+-        self.assertEqual(cfsca.nactualcall, 0)

+-

+-    def test_aabccb(self):

+-        _timings = {

+-            "a_1": 13,

+-            "a_2": 11,

+-            "b_1": 9,

+-            "c_1": 5,

+-            "c_2": 3,

+-            "b_2": 1

+-        }

+-        _yappi._set_test_timings(_timings)

+-        self._ncall = 1

+-

+-        def a():

+-            if self._ncall == 1:

+-                self._ncall += 1

+-                a()

+-            else:

+-                b()

+-

+-        def b():

+-            if self._ncall == 3:

+-                return

+-            else:

+-                c()

+-

+-        def c():

+-            if self._ncall == 2:

+-                self._ncall += 1

+-                c()

+-            else:

+-                b()

+-

+-        stats = utils.run_and_get_func_stats(a)

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        fsc = utils.find_stat_by_name(stats, 'c')

+-        cfsaa = fsa.children[fsa.index]

+-        cfsab = fsa.children[fsb]

+-        cfsbc = fsb.children[fsc.full_name]

+-        cfscc = fsc.children[fsc]

+-        cfscb = fsc.children[fsb]

+-        self.assertEqual(fsb.ttot, 9)

+-        self.assertEqual(fsb.tsub, 5)

+-        self.assertEqual(cfsbc.ttot, 5)

+-        self.assertEqual(cfsbc.tsub, 2)

+-        self.assertEqual(fsa.ttot, 13)

+-        self.assertEqual(fsa.tsub, 4)

+-        self.assertEqual(cfsab.ttot, 9)

+-        self.assertEqual(cfsab.tsub, 4)

+-        self.assertEqual(cfsaa.ttot, 11)

+-        self.assertEqual(cfsaa.tsub, 2)

+-        self.assertEqual(fsc.ttot, 5)

+-        self.assertEqual(fsc.tsub, 4)

+-

+-    def test_abaa(self):

+-        _timings = {"a_1": 13, "b_1": 10, "a_2": 9, "a_3": 5}

+-        _yappi._set_test_timings(_timings)

+-

+-        self._ncall = 1

+-

+-        def a():

+-            if self._ncall == 1:

+-                b()

+-            elif self._ncall == 2:

+-                self._ncall += 1

+-                a()

+-            else:

+-                return

+-

+-        def b():

+-            self._ncall += 1

+-            a()

+-

+-        stats = utils.run_and_get_func_stats(a)

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        cfsaa = fsa.children[fsa]

+-        cfsba = fsb.children[fsa]

+-        self.assertEqual(fsb.ttot, 10)

+-        self.assertEqual(fsb.tsub, 1)

+-        self.assertEqual(fsa.ttot, 13)

+-        self.assertEqual(fsa.tsub, 12)

+-        self.assertEqual(cfsaa.ttot, 5)

+-        self.assertEqual(cfsaa.tsub, 5)

+-        self.assertEqual(cfsba.ttot, 9)

+-        self.assertEqual(cfsba.tsub, 4)

+-

+-    def test_aabb(self):

+-        _timings = {"a_1": 13, "a_2": 10, "b_1": 9, "b_2": 5}

+-        _yappi._set_test_timings(_timings)

+-

+-        self._ncall = 1

+-

+-        def a():

+-            if self._ncall == 1:

+-                self._ncall += 1

+-                a()

+-            elif self._ncall == 2:

+-                b()

+-            else:

+-                return

+-

+-        def b():

+-            if self._ncall == 2:

+-                self._ncall += 1

+-                b()

+-            else:

+-                return

+-

+-        stats = utils.run_and_get_func_stats(a)

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        cfsaa = fsa.children[fsa]

+-        cfsab = fsa.children[fsb]

+-        cfsbb = fsb.children[fsb]

+-        self.assertEqual(fsa.ttot, 13)

+-        self.assertEqual(fsa.tsub, 4)

+-        self.assertEqual(fsb.ttot, 9)

+-        self.assertEqual(fsb.tsub, 9)

+-        self.assertEqual(cfsaa.ttot, 10)

+-        self.assertEqual(cfsaa.tsub, 1)

+-        self.assertEqual(cfsab.ttot, 9)

+-        self.assertEqual(cfsab.tsub, 4)

+-        self.assertEqual(cfsbb.ttot, 5)

+-        self.assertEqual(cfsbb.tsub, 5)

+-

+-    def test_abbb(self):

+-        _timings = {"a_1": 13, "b_1": 10, "b_2": 6, "b_3": 1}

+-        _yappi._set_test_timings(_timings)

+-

+-        self._ncall = 1

+-

+-        def a():

+-            if self._ncall == 1:

+-                b()

+-

+-        def b():

+-            if self._ncall == 3:

+-                return

+-            self._ncall += 1

+-            b()

+-

+-        stats = utils.run_and_get_func_stats(a)

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        cfsab = fsa.children[fsb]

+-        cfsbb = fsb.children[fsb]

+-        self.assertEqual(fsa.ttot, 13)

+-        self.assertEqual(fsa.tsub, 3)

+-        self.assertEqual(fsb.ttot, 10)

+-        self.assertEqual(fsb.tsub, 10)

+-        self.assertEqual(fsb.ncall, 3)

+-        self.assertEqual(fsb.nactualcall, 1)

+-        self.assertEqual(cfsab.ttot, 10)

+-        self.assertEqual(cfsab.tsub, 4)

+-        self.assertEqual(cfsbb.ttot, 6)

+-        self.assertEqual(cfsbb.tsub, 6)

+-        self.assertEqual(cfsbb.nactualcall, 0)

+-        self.assertEqual(cfsbb.ncall, 2)

+-

+-    def test_aaab(self):

+-        _timings = {"a_1": 13, "a_2": 10, "a_3": 6, "b_1": 1}

+-        _yappi._set_test_timings(_timings)

+-

+-        self._ncall = 1

+-

+-        def a():

+-            if self._ncall == 3:

+-                b()

+-                return

+-            self._ncall += 1

+-            a()

+-

+-        def b():

+-            return

+-

+-        stats = utils.run_and_get_func_stats(a)

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        cfsaa = fsa.children[fsa]

+-        cfsab = fsa.children[fsb]

+-        self.assertEqual(fsa.ttot, 13)

+-        self.assertEqual(fsa.tsub, 12)

+-        self.assertEqual(fsb.ttot, 1)

+-        self.assertEqual(fsb.tsub, 1)

+-        self.assertEqual(cfsaa.ttot, 10)

+-        self.assertEqual(cfsaa.tsub, 9)

+-        self.assertEqual(cfsab.ttot, 1)

+-        self.assertEqual(cfsab.tsub, 1)

+-

+-    def test_abab(self):

+-        _timings = {"a_1": 13, "b_1": 10, "a_2": 6, "b_2": 1}

+-        _yappi._set_test_timings(_timings)

+-

+-        self._ncall = 1

+-

+-        def a():

+-            b()

+-

+-        def b():

+-            if self._ncall == 2:

+-                return

+-            self._ncall += 1

+-            a()

+-

+-        stats = utils.run_and_get_func_stats(a)

+-        fsa = utils.find_stat_by_name(stats, 'a')

+-        fsb = utils.find_stat_by_name(stats, 'b')

+-        cfsab = fsa.children[fsb]

+-        cfsba = fsb.children[fsa]

+-        self.assertEqual(fsa.ttot, 13)

+-        self.assertEqual(fsa.tsub, 8)

+-        self.assertEqual(fsb.ttot, 10)

+-        self.assertEqual(fsb.tsub, 5)

+-        self.assertEqual(cfsab.ttot, 10)

+-        self.assertEqual(cfsab.tsub, 5)

+-        self.assertEqual(cfsab.ncall, 2)

+-        self.assertEqual(cfsab.nactualcall, 1)

+-        self.assertEqual(cfsba.ttot, 6)

+-        self.assertEqual(cfsba.tsub, 5)

+-

+-

+-if __name__ == '__main__':

+-    #     import sys;sys.argv = ['', 'BasicUsage.test_run_as_script']

+-    #     import sys;sys.argv = ['', 'MultithreadedScenarios.test_subsequent_profile']

+-    unittest.main()

++import os
++import sys
++import time
++import threading
++import unittest
++import yappi
++import _yappi
++import tests.utils as utils
++import multiprocessing  # added to fix http://bugs.python.org/issue15881 for > Py2.6
++import subprocess
++
++_counter = 0
++
++
++class BasicUsage(utils.YappiUnitTestCase):
++
++    def test_callback_function_int_return_overflow(self):
++        # this test is just here to check if any errors are generated, as the err
++        # is printed in C side, I did not include it here. THere are ways to test
++        # this deterministically, I did not bother
++        import ctypes
++
++        def _unsigned_overflow_margin():
++            return 2**(ctypes.sizeof(ctypes.c_void_p) * 8) - 1
++
++        def foo():
++            pass
++
++        #with utils.captured_output() as (out, err):
++        yappi.set_context_id_callback(_unsigned_overflow_margin)
++        yappi.set_tag_callback(_unsigned_overflow_margin)
++        yappi.start()
++        foo()
++
++    def test_issue60(self):
++
++        def foo():
++            buf = bytearray()
++            buf += b't' * 200
++            view = memoryview(buf)[10:]
++            view = view.tobytes()
++            del buf[:10]  # this throws exception
++            return view
++
++        yappi.start(builtins=True)
++        foo()
++        self.assertTrue(
++            len(
++                yappi.get_func_stats(
++                    filter_callback=lambda x: yappi.
++                    func_matches(x, [memoryview.tobytes])
++                )
++            ) > 0
++        )
++        yappi.stop()
++
++    def test_issue54(self):
++
++        def _tag_cbk():
++            global _counter
++            _counter += 1
++            return _counter
++
++        def a():
++            pass
++
++        def b():
++            pass
++
++        yappi.set_tag_callback(_tag_cbk)
++        yappi.start()
++        a()
++        a()
++        a()
++        yappi.stop()
++        stats = yappi.get_func_stats()
++        self.assertEqual(stats.pop().ncall, 3)  # aggregated if no tag is given
++        stats = yappi.get_func_stats(tag=1)
++
++        for i in range(1, 3):
++            stats = yappi.get_func_stats(tag=i)
++            stats = yappi.get_func_stats(
++                tag=i, filter_callback=lambda x: yappi.func_matches(x, [a])
++            )
++
++            stat = stats.pop()
++            self.assertEqual(stat.ncall, 1)
++
++        yappi.set_tag_callback(None)
++        yappi.clear_stats()
++        yappi.start()
++        b()
++        b()
++        stats = yappi.get_func_stats()
++        self.assertEqual(len(stats), 1)
++        stat = stats.pop()
++        self.assertEqual(stat.ncall, 2)
++
++    def test_filter(self):
++
++        def a():
++            pass
++
++        def b():
++            a()
++
++        def c():
++            b()
++
++        _TCOUNT = 5
++
++        ts = []
++        yappi.start()
++        for i in range(_TCOUNT):
++            t = threading.Thread(target=c)
++            t.start()
++            ts.append(t)
++
++        for t in ts:
++            t.join()
++
++        yappi.stop()
++
++        ctx_ids = []
++        for tstat in yappi.get_thread_stats():
++            if tstat.name == '_MainThread':
++                main_ctx_id = tstat.id
++            else:
++                ctx_ids.append(tstat.id)
++
++        fstats = yappi.get_func_stats(filter={"ctx_id": 9})
++        self.assertTrue(fstats.empty())
++        fstats = yappi.get_func_stats(
++            filter={
++                "ctx_id": main_ctx_id,
++                "name": "c"
++            }
++        )  # main thread
++        self.assertTrue(fstats.empty())
++
++        for i in ctx_ids:
++            fstats = yappi.get_func_stats(
++                filter={
++                    "ctx_id": i,
++                    "name": "a",
++                    "ncall": 1
++                }
++            )
++            self.assertEqual(fstats.pop().ncall, 1)
++            fstats = yappi.get_func_stats(filter={"ctx_id": i, "name": "b"})
++            self.assertEqual(fstats.pop().ncall, 1)
++            fstats = yappi.get_func_stats(filter={"ctx_id": i, "name": "c"})
++            self.assertEqual(fstats.pop().ncall, 1)
++
++        yappi.clear_stats()
++        yappi.start(builtins=True)
++        time.sleep(0.1)
++        yappi.stop()
++        fstats = yappi.get_func_stats(filter={"module": "time"})
++        self.assertEqual(len(fstats), 1)
++
++        # invalid filters`
++        self.assertRaises(
++            Exception, yappi.get_func_stats, filter={'tag': "sss"}
++        )
++        self.assertRaises(
++            Exception, yappi.get_func_stats, filter={'ctx_id': "None"}
++        )
++
++    def test_filter_callback(self):
++
++        def a():
++            time.sleep(0.1)
++
++        def b():
++            a()
++
++        def c():
++            pass
++
++        def d():
++            pass
++
++        yappi.set_clock_type("wall")
++        yappi.start(builtins=True)
++        a()
++        b()
++        c()
++        d()
++        stats = yappi.get_func_stats(
++            filter_callback=lambda x: yappi.func_matches(x, [a, b])
++        )
++        #stats.print_all()
++        r1 = '''
++        tests/test_functionality.py:98 a      2      0.000000  0.200350  0.100175
++        tests/test_functionality.py:101 b     1      0.000000  0.120000  0.100197
++        '''
++        self.assert_traces_almost_equal(r1, stats)
++        self.assertEqual(len(stats), 2)
++        stats = yappi.get_func_stats(
++            filter_callback=lambda x: yappi.
++            module_matches(x, [sys.modules[__name__]])
++        )
++        r1 = '''
++        tests/test_functionality.py:98 a      2      0.000000  0.230130  0.115065
++        tests/test_functionality.py:101 b     1      0.000000  0.120000  0.109011
++        tests/test_functionality.py:104 c     1      0.000000  0.000002  0.000002
++        tests/test_functionality.py:107 d     1      0.000000  0.000001  0.000001
++        '''
++        self.assert_traces_almost_equal(r1, stats)
++        self.assertEqual(len(stats), 4)
++
++        stats = yappi.get_func_stats(
++            filter_callback=lambda x: yappi.func_matches(x, [time.sleep])
++        )
++        self.assertEqual(len(stats), 1)
++        r1 = '''
++        time.sleep                            2      0.206804  0.220000  0.103402
++        '''
++        self.assert_traces_almost_equal(r1, stats)
++
++    def test_print_formatting(self):
++
++        def a():
++            pass
++
++        def b():
++            a()
++
++        func_cols = {
++            1: ("name", 48),
++            0: ("ncall", 5),
++            2: ("tsub", 8),
++        }
++        thread_cols = {
++            1: ("name", 48),
++            0: ("ttot", 8),
++        }
++
++        yappi.start()
++        a()
++        b()
++        yappi.stop()
++        fs = yappi.get_func_stats()
++        cs = fs[1].children
++        ts = yappi.get_thread_stats()
++        #fs.print_all(out=sys.stderr, columns={1:("name", 70), })
++        #cs.print_all(out=sys.stderr, columns=func_cols)
++        #ts.print_all(out=sys.stderr, columns=thread_cols)
++        #cs.print_all(out=sys.stderr, columns={})
++
++        self.assertRaises(
++            yappi.YappiError, fs.print_all, columns={1: ("namee", 9)}
++        )
++        self.assertRaises(
++            yappi.YappiError, cs.print_all, columns={1: ("dd", 0)}
++        )
++        self.assertRaises(
++            yappi.YappiError, ts.print_all, columns={1: ("tidd", 0)}
++        )
++
++    def test_get_clock(self):
++        yappi.set_clock_type('cpu')
++        self.assertEqual('cpu', yappi.get_clock_type())
++        clock_info = yappi.get_clock_info()
++        self.assertTrue('api' in clock_info)
++        self.assertTrue('resolution' in clock_info)
++
++        yappi.set_clock_type('wall')
++        self.assertEqual('wall', yappi.get_clock_type())
++
++        t0 = yappi.get_clock_time()
++        time.sleep(0.1)
++        duration = yappi.get_clock_time() - t0
++        self.assertTrue(0.05 < duration < 0.3)
++
++    def test_profile_decorator(self):
++
++        def aggregate(func, stats):
++            fname = "tests/%s.profile" % (func.__name__)
++            try:
++                stats.add(fname)
++            except IOError:
++                pass
++            stats.save(fname)
++            raise Exception("messing around")
++
++        @yappi.profile(return_callback=aggregate)
++        def a(x, y):
++            if x + y == 25:
++                raise Exception("")
++            return x + y
++
++        def b():
++            pass
++
++        try:
++            os.remove(
++                "tests/a.profile"
++            )  # remove the one from prev test, if available
++        except:
++            pass
++
++        # global profile is on to mess things up
++        yappi.start()
++        b()
++
++        # assert functionality and call function at same time
++        try:
++            self.assertEqual(a(1, 2), 3)
++        except:
++            pass
++        try:
++            self.assertEqual(a(2, 5), 7)
++        except:
++            pass
++        try:
++            a(4, 21)
++        except:
++            pass
++        stats = yappi.get_func_stats().add("tests/a.profile")
++        fsa = utils.find_stat_by_name(stats, 'a')
++        self.assertEqual(fsa.ncall, 3)
++        self.assertEqual(len(stats), 1)  # b() should be cleared out.
++
++        @yappi.profile(return_callback=aggregate)
++        def count_down_rec(n):
++            if n == 0:
++                return
++            count_down_rec(n - 1)
++
++        try:
++            os.remove(
++                "tests/count_down_rec.profile"
++            )  # remove the one from prev test, if available
++        except:
++            pass
++
++        try:
++            count_down_rec(4)
++        except:
++            pass
++        try:
++            count_down_rec(3)
++        except:
++            pass
++
++        stats = yappi.YFuncStats("tests/count_down_rec.profile")
++        fsrec = utils.find_stat_by_name(stats, 'count_down_rec')
++        self.assertEqual(fsrec.ncall, 9)
++        self.assertEqual(fsrec.nactualcall, 2)
++
++    def test_strip_dirs(self):
++
++        def a():
++            pass
++
++        stats = utils.run_and_get_func_stats(a, )
++        stats.strip_dirs()
++        fsa = utils.find_stat_by_name(stats, "a")
++        self.assertEqual(fsa.module, os.path.basename(fsa.module))
++
++    @unittest.skipIf(os.name == "nt", "do not run on Windows")
++    def test_run_as_script(self):
++        import re
++        p = subprocess.Popen(
++            ['yappi', os.path.join('./tests', 'run_as_script.py')],
++            stdout=subprocess.PIPE
++        )
++        out, err = p.communicate()
++        self.assertEqual(p.returncode, 0)
++        func_stats, thread_stats = re.split(
++            b'name\\s+id\\s+tid\\s+ttot\\s+scnt\\s*\n', out
++        )
++        self.assertTrue(b'FancyThread' in thread_stats)
++
++    def test_yappi_overhead(self):
++        LOOP_COUNT = 100000
++
++        def a():
++            pass
++
++        def b():
++            for i in range(LOOP_COUNT):
++                a()
++
++        t0 = time.time()
++        yappi.start()
++        b()
++        yappi.stop()
++        time_with_yappi = time.time() - t0
++        t0 = time.time()
++        b()
++        time_without_yappi = time.time() - t0
++        if time_without_yappi == 0:
++            time_without_yappi = 0.000001
++
++        # in latest v0.82, I calculated this as close to "7.0" in my machine.
++        # however, %83 of this overhead is coming from tickcount(). The other %17
++        # seems to have been evenly distributed to the internal bookkeeping
++        # structures/algorithms which seems acceptable. Note that our test only
++        # tests one function being profiled at-a-time in a short interval.
++        # profiling high number of functions in a small time
++        # is a different beast, (which is pretty unlikely in most applications)
++        # So as a conclusion: I cannot see any optimization window for Yappi that
++        # is worth implementing as we will only optimize %17 of the time.
++        sys.stderr.write("\r\nYappi puts %0.1f times overhead to the profiled application in average.\r\n" % \
++            (time_with_yappi / time_without_yappi))
++
++    def test_clear_stats_while_running(self):
++
++        def a():
++            pass
++
++        yappi.start()
++        a()
++        yappi.clear_stats()
++        a()
++        stats = yappi.get_func_stats()
++        fsa = utils.find_stat_by_name(stats, 'a')
++        self.assertEqual(fsa.ncall, 1)
++
++    def test_generator(self):
++
++        def _gen(n):
++            while (n > 0):
++                yield n
++                n -= 1
++
++        yappi.start()
++        for x in _gen(5):
++            pass
++        self.assertTrue(
++            yappi.convert2pstats(yappi.get_func_stats()) is not None
++        )
++
++    def test_slice_child_stats_and_strip_dirs(self):
++
++        def b():
++            for i in range(10000000):
++                pass
++
++        def a():
++            b()
++
++        yappi.start(builtins=True)
++        a()
++        stats = yappi.get_func_stats()
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        self.assertTrue(fsa.children[0:1] is not None)
++        prev_afullname = fsa.full_name
++        prev_bchildfullname = fsa.children[fsb].full_name
++        stats.strip_dirs()
++        self.assertTrue(len(prev_afullname) > len(fsa.full_name))
++        self.assertTrue(
++            len(prev_bchildfullname) > len(fsa.children[fsb].full_name)
++        )
++
++    def test_children_stat_functions(self):
++        _timings = {"a_1": 5, "b_1": 3, "c_1": 1}
++        _yappi._set_test_timings(_timings)
++
++        def b():
++            pass
++
++        def c():
++            pass
++
++        def a():
++            b()
++            c()
++
++        yappi.start()
++        a()
++        b()  # non-child call
++        c()  # non-child call
++        stats = yappi.get_func_stats()
++        fsa = utils.find_stat_by_name(stats, 'a')
++        childs_of_a = fsa.children.get().sort("tavg", "desc")
++        prev_item = None
++        for item in childs_of_a:
++            if prev_item:
++                self.assertTrue(prev_item.tavg > item.tavg)
++            prev_item = item
++        childs_of_a.sort("name", "desc")
++        prev_item = None
++        for item in childs_of_a:
++            if prev_item:
++                self.assertTrue(prev_item.name > item.name)
++            prev_item = item
++        childs_of_a.clear()
++        self.assertTrue(childs_of_a.empty())
++
++    def test_no_stats_different_clock_type_load(self):
++
++        def a():
++            pass
++
++        yappi.start()
++        a()
++        yappi.stop()
++        yappi.get_func_stats().save("tests/ystats1.ys")
++        yappi.clear_stats()
++        yappi.set_clock_type("WALL")
++        yappi.start()
++        yappi.stop()
++        stats = yappi.get_func_stats().add("tests/ystats1.ys")
++        fsa = utils.find_stat_by_name(stats, 'a')
++        self.assertTrue(fsa is not None)
++
++    def test_subsequent_profile(self):
++        _timings = {"a_1": 1, "b_1": 1}
++        _yappi._set_test_timings(_timings)
++
++        def a():
++            pass
++
++        def b():
++            pass
++
++        yappi.start()
++        a()
++        yappi.stop()
++        yappi.start()
++        b()
++        yappi.stop()
++        stats = yappi.get_func_stats()
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        self.assertTrue(fsa is not None)
++        self.assertTrue(fsb is not None)
++        self.assertEqual(fsa.ttot, 1)
++        self.assertEqual(fsb.ttot, 1)
++
++    def test_lambda(self):
++        f = lambda: time.sleep(0.3)
++        yappi.set_clock_type("wall")
++        yappi.start()
++        f()
++        stats = yappi.get_func_stats()
++        fsa = utils.find_stat_by_name(stats, '<lambda>')
++        self.assertTrue(fsa.ttot > 0.1)
++
++    def test_module_stress(self):
++        self.assertEqual(yappi.is_running(), False)
++
++        yappi.start()
++        yappi.clear_stats()
++        self.assertRaises(_yappi.error, yappi.set_clock_type, "wall")
++
++        yappi.stop()
++        yappi.clear_stats()
++        yappi.set_clock_type("cpu")
++        self.assertRaises(yappi.YappiError, yappi.set_clock_type, "dummy")
++        self.assertEqual(yappi.is_running(), False)
++        yappi.clear_stats()
++        yappi.clear_stats()
++
++    def test_stat_sorting(self):
++        _timings = {"a_1": 13, "b_1": 10, "a_2": 6, "b_2": 1}
++        _yappi._set_test_timings(_timings)
++
++        self._ncall = 1
++
++        def a():
++            b()
++
++        def b():
++            if self._ncall == 2:
++                return
++            self._ncall += 1
++            a()
++
++        stats = utils.run_and_get_func_stats(a)
++        stats = stats.sort("totaltime", "desc")
++        prev_stat = None
++        for stat in stats:
++            if prev_stat:
++                self.assertTrue(prev_stat.ttot >= stat.ttot)
++            prev_stat = stat
++        stats = stats.sort("totaltime", "asc")
++        prev_stat = None
++        for stat in stats:
++            if prev_stat:
++                self.assertTrue(prev_stat.ttot <= stat.ttot)
++            prev_stat = stat
++        stats = stats.sort("avgtime", "asc")
++        prev_stat = None
++        for stat in stats:
++            if prev_stat:
++                self.assertTrue(prev_stat.tavg <= stat.tavg)
++            prev_stat = stat
++        stats = stats.sort("name", "asc")
++        prev_stat = None
++        for stat in stats:
++            if prev_stat:
++                self.assertTrue(prev_stat.name <= stat.name)
++            prev_stat = stat
++        stats = stats.sort("subtime", "asc")
++        prev_stat = None
++        for stat in stats:
++            if prev_stat:
++                self.assertTrue(prev_stat.tsub <= stat.tsub)
++            prev_stat = stat
++
++        self.assertRaises(
++            yappi.YappiError, stats.sort, "invalid_func_sorttype_arg"
++        )
++        self.assertRaises(
++            yappi.YappiError, stats.sort, "totaltime",
++            "invalid_func_sortorder_arg"
++        )
++
++    def test_start_flags(self):
++        self.assertEqual(_yappi._get_start_flags(), None)
++        yappi.start()
++
++        def a():
++            pass
++
++        a()
++        self.assertEqual(_yappi._get_start_flags()["profile_builtins"], 0)
++        self.assertEqual(_yappi._get_start_flags()["profile_multicontext"], 1)
++        self.assertEqual(len(yappi.get_thread_stats()), 1)
++
++    def test_builtin_profiling(self):
++
++        def a():
++            time.sleep(0.4)  # is a builtin function
++
++        yappi.set_clock_type('wall')
++
++        yappi.start(builtins=True)
++        a()
++        stats = yappi.get_func_stats()
++        fsa = utils.find_stat_by_name(stats, 'sleep')
++        self.assertTrue(fsa is not None)
++        self.assertTrue(fsa.ttot > 0.3)
++        yappi.stop()
++        yappi.clear_stats()
++
++        def a():
++            pass
++
++        yappi.start()
++        t = threading.Thread(target=a)
++        t.start()
++        t.join()
++        stats = yappi.get_func_stats()
++
++    def test_singlethread_profiling(self):
++        yappi.set_clock_type('wall')
++
++        def a():
++            time.sleep(0.2)
++
++        class Worker1(threading.Thread):
++
++            def a(self):
++                time.sleep(0.3)
++
++            def run(self):
++                self.a()
++
++        yappi.start(profile_threads=False)
++
++        c = Worker1()
++        c.start()
++        c.join()
++        a()
++        stats = yappi.get_func_stats()
++        fsa1 = utils.find_stat_by_name(stats, 'Worker1.a')
++        fsa2 = utils.find_stat_by_name(stats, 'a')
++        self.assertTrue(fsa1 is None)
++        self.assertTrue(fsa2 is not None)
++        self.assertTrue(fsa2.ttot > 0.1)
++
++    def test_run(self):
++
++        def profiled():
++            pass
++
++        yappi.clear_stats()
++        try:
++            with yappi.run():
++                profiled()
++            stats = yappi.get_func_stats()
++        finally:
++            yappi.clear_stats()
++
++        self.assertIsNotNone(utils.find_stat_by_name(stats, 'profiled'))
++
++    def test_run_recursive(self):
++
++        def profiled():
++            pass
++
++        def not_profiled():
++            pass
++
++        yappi.clear_stats()
++        try:
++            with yappi.run():
++                with yappi.run():
++                    profiled()
++                # Profiling stopped here
++                not_profiled()
++            stats = yappi.get_func_stats()
++        finally:
++            yappi.clear_stats()
++
++        self.assertIsNotNone(utils.find_stat_by_name(stats, 'profiled'))
++        self.assertIsNone(utils.find_stat_by_name(stats, 'not_profiled'))
++
++
++class StatSaveScenarios(utils.YappiUnitTestCase):
++
++    def test_pstats_conversion(self):
++
++        def pstat_id(fs):
++            return (fs.module, fs.lineno, fs.name)
++
++        def a():
++            d()
++
++        def b():
++            d()
++
++        def c():
++            pass
++
++        def d():
++            pass
++
++        _timings = {"a_1": 12, "b_1": 7, "c_1": 5, "d_1": 2}
++        _yappi._set_test_timings(_timings)
++        stats = utils.run_and_get_func_stats(a, )
++        stats.strip_dirs()
++        stats.save("tests/a1.pstats", type="pstat")
++        fsa_pid = pstat_id(utils.find_stat_by_name(stats, "a"))
++        fsd_pid = pstat_id(utils.find_stat_by_name(stats, "d"))
++        yappi.clear_stats()
++        _yappi._set_test_timings(_timings)
++        stats = utils.run_and_get_func_stats(a, )
++        stats.strip_dirs()
++        stats.save("tests/a2.pstats", type="pstat")
++        yappi.clear_stats()
++        _yappi._set_test_timings(_timings)
++        stats = utils.run_and_get_func_stats(b, )
++        stats.strip_dirs()
++        stats.save("tests/b1.pstats", type="pstat")
++        fsb_pid = pstat_id(utils.find_stat_by_name(stats, "b"))
++        yappi.clear_stats()
++        _yappi._set_test_timings(_timings)
++        stats = utils.run_and_get_func_stats(c, )
++        stats.strip_dirs()
++        stats.save("tests/c1.pstats", type="pstat")
++        fsc_pid = pstat_id(utils.find_stat_by_name(stats, "c"))
++
++        # merge saved stats and check pstats values are correct
++        import pstats
++        p = pstats.Stats(
++            'tests/a1.pstats', 'tests/a2.pstats', 'tests/b1.pstats',
++            'tests/c1.pstats'
++        )
++        p.strip_dirs()
++        # ct = ttot, tt = tsub
++        (cc, nc, tt, ct, callers) = p.stats[fsa_pid]
++        self.assertEqual(cc, nc, 2)
++        self.assertEqual(tt, 20)
++        self.assertEqual(ct, 24)
++        (cc, nc, tt, ct, callers) = p.stats[fsd_pid]
++        self.assertEqual(cc, nc, 3)
++        self.assertEqual(tt, 6)
++        self.assertEqual(ct, 6)
++        self.assertEqual(len(callers), 2)
++        (cc, nc, tt, ct) = callers[fsa_pid]
++        self.assertEqual(cc, nc, 2)
++        self.assertEqual(tt, 4)
++        self.assertEqual(ct, 4)
++        (cc, nc, tt, ct) = callers[fsb_pid]
++        self.assertEqual(cc, nc, 1)
++        self.assertEqual(tt, 2)
++        self.assertEqual(ct, 2)
++
++    def test_merge_stats(self):
++        _timings = {
++            "a_1": 15,
++            "b_1": 14,
++            "c_1": 12,
++            "d_1": 10,
++            "e_1": 9,
++            "f_1": 7,
++            "g_1": 6,
++            "h_1": 5,
++            "i_1": 1
++        }
++        _yappi._set_test_timings(_timings)
++
++        def a():
++            b()
++
++        def b():
++            c()
++
++        def c():
++            d()
++
++        def d():
++            e()
++
++        def e():
++            f()
++
++        def f():
++            g()
++
++        def g():
++            h()
++
++        def h():
++            i()
++
++        def i():
++            pass
++
++        yappi.start()
++        a()
++        a()
++        yappi.stop()
++        stats = yappi.get_func_stats()
++        self.assertRaises(
++            NotImplementedError, stats.save, "", "INVALID_SAVE_TYPE"
++        )
++        stats.save("tests/ystats2.ys")
++        yappi.clear_stats()
++        _yappi._set_test_timings(_timings)
++        yappi.start()
++        a()
++        stats = yappi.get_func_stats().add("tests/ystats2.ys")
++        fsa = utils.find_stat_by_name(stats, "a")
++        fsb = utils.find_stat_by_name(stats, "b")
++        fsc = utils.find_stat_by_name(stats, "c")
++        fsd = utils.find_stat_by_name(stats, "d")
++        fse = utils.find_stat_by_name(stats, "e")
++        fsf = utils.find_stat_by_name(stats, "f")
++        fsg = utils.find_stat_by_name(stats, "g")
++        fsh = utils.find_stat_by_name(stats, "h")
++        fsi = utils.find_stat_by_name(stats, "i")
++        self.assertEqual(fsa.ttot, 45)
++        self.assertEqual(fsa.ncall, 3)
++        self.assertEqual(fsa.nactualcall, 3)
++        self.assertEqual(fsa.tsub, 3)
++        self.assertEqual(fsa.children[fsb].ttot, fsb.ttot)
++        self.assertEqual(fsa.children[fsb].tsub, fsb.tsub)
++        self.assertEqual(fsb.children[fsc].ttot, fsc.ttot)
++        self.assertEqual(fsb.children[fsc].tsub, fsc.tsub)
++        self.assertEqual(fsc.tsub, 6)
++        self.assertEqual(fsc.children[fsd].ttot, fsd.ttot)
++        self.assertEqual(fsc.children[fsd].tsub, fsd.tsub)
++        self.assertEqual(fsd.children[fse].ttot, fse.ttot)
++        self.assertEqual(fsd.children[fse].tsub, fse.tsub)
++        self.assertEqual(fse.children[fsf].ttot, fsf.ttot)
++        self.assertEqual(fse.children[fsf].tsub, fsf.tsub)
++        self.assertEqual(fsf.children[fsg].ttot, fsg.ttot)
++        self.assertEqual(fsf.children[fsg].tsub, fsg.tsub)
++        self.assertEqual(fsg.ttot, 18)
++        self.assertEqual(fsg.tsub, 3)
++        self.assertEqual(fsg.children[fsh].ttot, fsh.ttot)
++        self.assertEqual(fsg.children[fsh].tsub, fsh.tsub)
++        self.assertEqual(fsh.ttot, 15)
++        self.assertEqual(fsh.tsub, 12)
++        self.assertEqual(fsh.tavg, 5)
++        self.assertEqual(fsh.children[fsi].ttot, fsi.ttot)
++        self.assertEqual(fsh.children[fsi].tsub, fsi.tsub)
++        #stats.debug_print()
++
++    def test_merge_multithreaded_stats(self):
++        import _yappi
++        timings = {"a_1": 2, "b_1": 1}
++        _yappi._set_test_timings(timings)
++
++        def a():
++            pass
++
++        def b():
++            pass
++
++        yappi.start()
++        t = threading.Thread(target=a)
++        t.start()
++        t.join()
++        t = threading.Thread(target=b)
++        t.start()
++        t.join()
++        yappi.get_func_stats().save("tests/ystats1.ys")
++        yappi.clear_stats()
++        _yappi._set_test_timings(timings)
++        self.assertEqual(len(yappi.get_func_stats()), 0)
++        self.assertEqual(len(yappi.get_thread_stats()), 1)
++        t = threading.Thread(target=a)
++        t.start()
++        t.join()
++
++        self.assertEqual(_yappi._get_start_flags()["profile_builtins"], 0)
++        self.assertEqual(_yappi._get_start_flags()["profile_multicontext"], 1)
++        yappi.get_func_stats().save("tests/ystats2.ys")
++
++        stats = yappi.YFuncStats([
++            "tests/ystats1.ys",
++            "tests/ystats2.ys",
++        ])
++        fsa = utils.find_stat_by_name(stats, "a")
++        fsb = utils.find_stat_by_name(stats, "b")
++        self.assertEqual(fsa.ncall, 2)
++        self.assertEqual(fsb.ncall, 1)
++        self.assertEqual(fsa.tsub, fsa.ttot, 4)
++        self.assertEqual(fsb.tsub, fsb.ttot, 1)
++
++    def test_merge_load_different_clock_types(self):
++        yappi.start(builtins=True)
++
++        def a():
++            b()
++
++        def b():
++            c()
++
++        def c():
++            pass
++
++        t = threading.Thread(target=a)
++        t.start()
++        t.join()
++        yappi.get_func_stats().sort("name", "asc").save("tests/ystats1.ys")
++        yappi.stop()
++        yappi.clear_stats()
++        yappi.start(builtins=False)
++        t = threading.Thread(target=a)
++        t.start()
++        t.join()
++        yappi.get_func_stats().save("tests/ystats2.ys")
++        yappi.stop()
++        self.assertRaises(_yappi.error, yappi.set_clock_type, "wall")
++        yappi.clear_stats()
++        yappi.set_clock_type("wall")
++        yappi.start()
++        t = threading.Thread(target=a)
++        t.start()
++        t.join()
++        yappi.get_func_stats().save("tests/ystats3.ys")
++        self.assertRaises(
++            yappi.YappiError,
++            yappi.YFuncStats().add("tests/ystats1.ys").add, "tests/ystats3.ys"
++        )
++        stats = yappi.YFuncStats(["tests/ystats1.ys",
++                                  "tests/ystats2.ys"]).sort("name")
++        fsa = utils.find_stat_by_name(stats, "a")
++        fsb = utils.find_stat_by_name(stats, "b")
++        fsc = utils.find_stat_by_name(stats, "c")
++        self.assertEqual(fsa.ncall, 2)
++        self.assertEqual(fsa.ncall, fsb.ncall, fsc.ncall)
++
++    def test_merge_aabab_aabbc(self):
++        _timings = {
++            "a_1": 15,
++            "a_2": 14,
++            "b_1": 12,
++            "a_3": 10,
++            "b_2": 9,
++            "c_1": 4
++        }
++        _yappi._set_test_timings(_timings)
++
++        def a():
++            if self._ncall == 1:
++                self._ncall += 1
++                a()
++            elif self._ncall == 5:
++                self._ncall += 1
++                a()
++            else:
++                b()
++
++        def b():
++            if self._ncall == 2:
++                self._ncall += 1
++                a()
++            elif self._ncall == 6:
++                self._ncall += 1
++                b()
++            elif self._ncall == 7:
++                c()
++            else:
++                return
++
++        def c():
++            pass
++
++        self._ncall = 1
++        stats = utils.run_and_get_func_stats(a, )
++        stats.save("tests/ystats1.ys")
++        yappi.clear_stats()
++        _yappi._set_test_timings(_timings)
++        #stats.print_all()
++
++        self._ncall = 5
++        stats = utils.run_and_get_func_stats(a, )
++        stats.save("tests/ystats2.ys")
++
++        #stats.print_all()
++
++        def a():  # same name but another function(code object)
++            pass
++
++        yappi.start()
++        a()
++        stats = yappi.get_func_stats().add(
++            ["tests/ystats1.ys", "tests/ystats2.ys"]
++        )
++        #stats.print_all()
++        self.assertEqual(len(stats), 4)
++
++        fsa = None
++        for stat in stats:
++            if stat.name == "a" and stat.ttot == 45:
++                fsa = stat
++                break
++        self.assertTrue(fsa is not None)
++
++        self.assertEqual(fsa.ncall, 7)
++        self.assertEqual(fsa.nactualcall, 3)
++        self.assertEqual(fsa.ttot, 45)
++        self.assertEqual(fsa.tsub, 10)
++        fsb = utils.find_stat_by_name(stats, "b")
++        fsc = utils.find_stat_by_name(stats, "c")
++        self.assertEqual(fsb.ncall, 6)
++        self.assertEqual(fsb.nactualcall, 3)
++        self.assertEqual(fsb.ttot, 36)
++        self.assertEqual(fsb.tsub, 27)
++        self.assertEqual(fsb.tavg, 6)
++        self.assertEqual(fsc.ttot, 8)
++        self.assertEqual(fsc.tsub, 8)
++        self.assertEqual(fsc.tavg, 4)
++        self.assertEqual(fsc.nactualcall, fsc.ncall, 2)
++
++
++class MultithreadedScenarios(utils.YappiUnitTestCase):
++
++    def test_issue_32(self):
++        '''
++        Start yappi from different thread and we get Internal Error(15) as
++        the current_ctx_id() called while enumerating the threads in start()
++        and as it does not swap to the enumerated ThreadState* the THreadState_GetDict()
++        returns wrong object and thus sets an invalid id for the _ctx structure.
++
++        When this issue happens multiple Threads have same tid as the internal ts_ptr
++        will be same for different contexts. So, let's see if that happens
++        '''
++
++        def foo():
++            time.sleep(0.2)
++
++        def bar():
++            time.sleep(0.1)
++
++        def thread_func():
++            yappi.set_clock_type("wall")
++            yappi.start()
++
++            bar()
++
++        t = threading.Thread(target=thread_func)
++        t.start()
++        t.join()
++
++        foo()
++
++        yappi.stop()
++
++        thread_ids = set()
++        for tstat in yappi.get_thread_stats():
++            self.assertTrue(tstat.tid not in thread_ids)
++            thread_ids.add(tstat.tid)
++
++    def test_subsequent_profile(self):
++        WORKER_COUNT = 5
++
++        def a():
++            pass
++
++        def b():
++            pass
++
++        def c():
++            pass
++
++        _timings = {
++            "a_1": 3,
++            "b_1": 2,
++            "c_1": 1,
++        }
++
++        yappi.start()
++
++        def g():
++            pass
++
++        g()
++        yappi.stop()
++        yappi.clear_stats()
++        _yappi._set_test_timings(_timings)
++        yappi.start()
++
++        _dummy = []
++        for i in range(WORKER_COUNT):
++            t = threading.Thread(target=a)
++            t.start()
++            t.join()
++        for i in range(WORKER_COUNT):
++            t = threading.Thread(target=b)
++            t.start()
++            _dummy.append(t)
++            t.join()
++        for i in range(WORKER_COUNT):
++            t = threading.Thread(target=a)
++            t.start()
++            t.join()
++        for i in range(WORKER_COUNT):
++            t = threading.Thread(target=c)
++            t.start()
++            t.join()
++        yappi.stop()
++        yappi.start()
++
++        def f():
++            pass
++
++        f()
++        stats = yappi.get_func_stats()
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        fsc = utils.find_stat_by_name(stats, 'c')
++        self.assertEqual(fsa.ncall, 10)
++        self.assertEqual(fsb.ncall, 5)
++        self.assertEqual(fsc.ncall, 5)
++        self.assertEqual(fsa.ttot, fsa.tsub, 30)
++        self.assertEqual(fsb.ttot, fsb.tsub, 10)
++        self.assertEqual(fsc.ttot, fsc.tsub, 5)
++
++        # MACOSx optimizes by only creating one worker thread
++        self.assertTrue(len(yappi.get_thread_stats()) >= 2)
++
++    def test_basic(self):
++        yappi.set_clock_type('wall')
++
++        def dummy():
++            pass
++
++        def a():
++            time.sleep(0.2)
++
++        class Worker1(threading.Thread):
++
++            def a(self):
++                time.sleep(0.3)
++
++            def run(self):
++                self.a()
++
++        yappi.start(builtins=False, profile_threads=True)
++
++        c = Worker1()
++        c.start()
++        c.join()
++        a()
++        stats = yappi.get_func_stats()
++        fsa1 = utils.find_stat_by_name(stats, 'Worker1.a')
++        fsa2 = utils.find_stat_by_name(stats, 'a')
++        self.assertTrue(fsa1 is not None)
++        self.assertTrue(fsa2 is not None)
++        self.assertTrue(fsa1.ttot > 0.2)
++        self.assertTrue(fsa2.ttot > 0.1)
++        tstats = yappi.get_thread_stats()
++        self.assertEqual(len(tstats), 2)
++        tsa = utils.find_stat_by_name(tstats, 'Worker1')
++        tsm = utils.find_stat_by_name(tstats, '_MainThread')
++        dummy()  # call dummy to force ctx name to be retrieved again.
++        self.assertTrue(tsa is not None)
++        # TODO: I put dummy() to fix below, remove the comments after a while.
++        self.assertTrue( # FIX: I see this fails sometimes?
++            tsm is not None,
++            'Could not find "_MainThread". Found: %s' % (', '.join(utils.get_stat_names(tstats))))
++
++    def test_ctx_stats(self):
++        from threading import Thread
++        DUMMY_WORKER_COUNT = 5
++        yappi.start()
++
++        class DummyThread(Thread):
++            pass
++
++        def dummy():
++            pass
++
++        def dummy_worker():
++            pass
++
++        for i in range(DUMMY_WORKER_COUNT):
++            t = DummyThread(target=dummy_worker)
++            t.start()
++            t.join()
++        yappi.stop()
++        stats = yappi.get_thread_stats()
++        tsa = utils.find_stat_by_name(stats, "DummyThread")
++        self.assertTrue(tsa is not None)
++        yappi.clear_stats()
++        time.sleep(1.0)
++        _timings = {
++            "a_1": 6,
++            "b_1": 5,
++            "c_1": 3,
++            "d_1": 1,
++            "a_2": 4,
++            "b_2": 3,
++            "c_2": 2,
++            "d_2": 1
++        }
++        _yappi._set_test_timings(_timings)
++
++        class Thread1(Thread):
++            pass
++
++        class Thread2(Thread):
++            pass
++
++        def a():
++            b()
++
++        def b():
++            c()
++
++        def c():
++            d()
++
++        def d():
++            time.sleep(0.6)
++
++        yappi.set_clock_type("wall")
++        yappi.start()
++        t1 = Thread1(target=a)
++        t1.start()
++        t2 = Thread2(target=a)
++        t2.start()
++        t1.join()
++        t2.join()
++        stats = yappi.get_thread_stats()
++
++        # the fist clear_stats clears the context table?
++        tsa = utils.find_stat_by_name(stats, "DummyThread")
++        self.assertTrue(tsa is None)
++
++        tst1 = utils.find_stat_by_name(stats, "Thread1")
++        tst2 = utils.find_stat_by_name(stats, "Thread2")
++        tsmain = utils.find_stat_by_name(stats, "_MainThread")
++        dummy()  # call dummy to force ctx name to be retrieved again.
++        self.assertTrue(len(stats) == 3)
++        self.assertTrue(tst1 is not None)
++        self.assertTrue(tst2 is not None)
++        # TODO: I put dummy() to fix below, remove the comments after a while.
++        self.assertTrue( # FIX: I see this fails sometimes
++            tsmain is not None,
++            'Could not find "_MainThread". Found: %s' % (', '.join(utils.get_stat_names(stats))))
++        self.assertTrue(1.0 > tst2.ttot >= 0.5)
++        self.assertTrue(1.0 > tst1.ttot >= 0.5)
++
++        # test sorting of the ctx stats
++        stats = stats.sort("totaltime", "desc")
++        prev_stat = None
++        for stat in stats:
++            if prev_stat:
++                self.assertTrue(prev_stat.ttot >= stat.ttot)
++            prev_stat = stat
++        stats = stats.sort("totaltime", "asc")
++        prev_stat = None
++        for stat in stats:
++            if prev_stat:
++                self.assertTrue(prev_stat.ttot <= stat.ttot)
++            prev_stat = stat
++        stats = stats.sort("schedcount", "desc")
++        prev_stat = None
++        for stat in stats:
++            if prev_stat:
++                self.assertTrue(prev_stat.sched_count >= stat.sched_count)
++            prev_stat = stat
++        stats = stats.sort("name", "desc")
++        prev_stat = None
++        for stat in stats:
++            if prev_stat:
++                self.assertTrue(prev_stat.name.lower() >= stat.name.lower())
++            prev_stat = stat
++        self.assertRaises(
++            yappi.YappiError, stats.sort, "invalid_thread_sorttype_arg"
++        )
++        self.assertRaises(
++            yappi.YappiError, stats.sort, "invalid_thread_sortorder_arg"
++        )
++
++    def test_ctx_stats_cpu(self):
++
++        def get_thread_name():
++            try:
++                return threading.current_thread().name
++            except AttributeError:
++                return "Anonymous"
++
++        def burn_cpu(sec):
++            t0 = yappi.get_clock_time()
++            elapsed = 0
++            while (elapsed < sec):
++                for _ in range(1000):
++                    pass
++                elapsed = yappi.get_clock_time() - t0
++
++        def test():
++
++            ts = []
++            for i in (0.01, 0.05, 0.1):
++                t = threading.Thread(target=burn_cpu, args=(i, ))
++                t.name = "burn_cpu-%s" % str(i)
++                t.start()
++                ts.append(t)
++            for t in ts:
++                t.join()
++
++        yappi.set_clock_type("cpu")
++        yappi.set_context_name_callback(get_thread_name)
++
++        yappi.start()
++
++        test()
++
++        yappi.stop()
++
++        tstats = yappi.get_thread_stats()
++        r1 = '''
++        burn_cpu-0.1      3      123145356058624  0.100105  8
++        burn_cpu-0.05     2      123145361313792  0.050149  8
++        burn_cpu-0.01     1      123145356058624  0.010127  2
++        MainThread        0      4321620864       0.001632  6
++        '''
++        self.assert_ctx_stats_almost_equal(r1, tstats)
++
++    def test_producer_consumer_with_queues(self):
++        # we currently just stress yappi, no functionality test is done here.
++        yappi.start()
++        if utils.is_py3x():
++            from queue import Queue
++        else:
++            from Queue import Queue
++        from threading import Thread
++        WORKER_THREAD_COUNT = 50
++        WORK_ITEM_COUNT = 2000
++
++        def worker():
++            while True:
++                item = q.get()
++                # do the work with item
++                q.task_done()
++
++        q = Queue()
++        for i in range(WORKER_THREAD_COUNT):
++            t = Thread(target=worker)
++            t.daemon = True
++            t.start()
++
++        for item in range(WORK_ITEM_COUNT):
++            q.put(item)
++        q.join()  # block until all tasks are done
++        #yappi.get_func_stats().sort("callcount").print_all()
++        yappi.stop()
++
++    def test_temporary_lock_waiting(self):
++        yappi.start()
++        _lock = threading.Lock()
++
++        def worker():
++            _lock.acquire()
++            try:
++                time.sleep(1.0)
++            finally:
++                _lock.release()
++
++        t1 = threading.Thread(target=worker)
++        t2 = threading.Thread(target=worker)
++        t1.start()
++        t2.start()
++        t1.join()
++        t2.join()
++        #yappi.get_func_stats().sort("callcount").print_all()
++        yappi.stop()
++
++    @unittest.skipIf(os.name != "posix", "requires Posix compliant OS")
++    def test_signals_with_blocking_calls(self):
++        import signal, os, time
++
++        # just to verify if signal is handled correctly and stats/yappi are not corrupted.
++        def handler(signum, frame):
++            raise Exception("Signal handler executed!")
++
++        yappi.start()
++        signal.signal(signal.SIGALRM, handler)
++        signal.alarm(1)
++        self.assertRaises(Exception, time.sleep, 2)
++        stats = yappi.get_func_stats()
++        fsh = utils.find_stat_by_name(stats, "handler")
++        self.assertTrue(fsh is not None)
++
++    @unittest.skipIf(not sys.version_info >= (3, 2), "requires Python 3.2")
++    def test_concurrent_futures(self):
++        yappi.start()
++        from concurrent.futures import ThreadPoolExecutor
++        with ThreadPoolExecutor(max_workers=5) as executor:
++            f = executor.submit(pow, 5, 2)
++            self.assertEqual(f.result(), 25)
++        time.sleep(1.0)
++        yappi.stop()
++
++    @unittest.skipIf(not sys.version_info >= (3, 2), "requires Python 3.2")
++    def test_barrier(self):
++        yappi.start()
++        b = threading.Barrier(2, timeout=1)
++
++        def worker():
++            try:
++                b.wait()
++            except threading.BrokenBarrierError:
++                pass
++            except Exception:
++                raise Exception("BrokenBarrierError not raised")
++
++        t1 = threading.Thread(target=worker)
++        t1.start()
++        #b.wait()
++        t1.join()
++        yappi.stop()
++
++
++class NonRecursiveFunctions(utils.YappiUnitTestCase):
++
++    def test_abcd(self):
++        _timings = {"a_1": 6, "b_1": 5, "c_1": 3, "d_1": 1}
++        _yappi._set_test_timings(_timings)
++
++        def a():
++            b()
++
++        def b():
++            c()
++
++        def c():
++            d()
++
++        def d():
++            pass
++
++        stats = utils.run_and_get_func_stats(a)
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        fsc = utils.find_stat_by_name(stats, 'c')
++        fsd = utils.find_stat_by_name(stats, 'd')
++        cfsab = fsa.children[fsb]
++        cfsbc = fsb.children[fsc]
++        cfscd = fsc.children[fsd]
++
++        self.assertEqual(fsa.ttot, 6)
++        self.assertEqual(fsa.tsub, 1)
++        self.assertEqual(fsb.ttot, 5)
++        self.assertEqual(fsb.tsub, 2)
++        self.assertEqual(fsc.ttot, 3)
++        self.assertEqual(fsc.tsub, 2)
++        self.assertEqual(fsd.ttot, 1)
++        self.assertEqual(fsd.tsub, 1)
++        self.assertEqual(cfsab.ttot, 5)
++        self.assertEqual(cfsab.tsub, 2)
++        self.assertEqual(cfsbc.ttot, 3)
++        self.assertEqual(cfsbc.tsub, 2)
++        self.assertEqual(cfscd.ttot, 1)
++        self.assertEqual(cfscd.tsub, 1)
++
++    def test_stop_in_middle(self):
++        _timings = {"a_1": 6, "b_1": 4}
++        _yappi._set_test_timings(_timings)
++
++        def a():
++            b()
++            yappi.stop()
++
++        def b():
++            time.sleep(0.2)
++
++        yappi.start()
++        a()
++        stats = yappi.get_func_stats()
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++
++        self.assertEqual(fsa.ncall, 1)
++        self.assertEqual(fsa.nactualcall, 0)
++        self.assertEqual(fsa.ttot, 0)  # no call_leave called
++        self.assertEqual(fsa.tsub, 0)  # no call_leave called
++        self.assertEqual(fsb.ttot, 4)
++
++
++class RecursiveFunctions(utils.YappiUnitTestCase):
++
++    def test_fibonacci(self):
++
++        def fib(n):
++            if n > 1:
++                return fib(n - 1) + fib(n - 2)
++            else:
++                return n
++
++        stats = utils.run_and_get_func_stats(fib, 22)
++        fs = utils.find_stat_by_name(stats, 'fib')
++        self.assertEqual(fs.ncall, 57313)
++        self.assertEqual(fs.ttot, fs.tsub)
++
++    def test_abcadc(self):
++        _timings = {
++            "a_1": 20,
++            "b_1": 19,
++            "c_1": 17,
++            "a_2": 13,
++            "d_1": 12,
++            "c_2": 10,
++            "a_3": 5
++        }
++        _yappi._set_test_timings(_timings)
++
++        def a(n):
++            if n == 3:
++                return
++            if n == 1 + 1:
++                d(n)
++            else:
++                b(n)
++
++        def b(n):
++            c(n)
++
++        def c(n):
++            a(n + 1)
++
++        def d(n):
++            c(n)
++
++        stats = utils.run_and_get_func_stats(a, 1)
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        fsc = utils.find_stat_by_name(stats, 'c')
++        fsd = utils.find_stat_by_name(stats, 'd')
++        self.assertEqual(fsa.ncall, 3)
++        self.assertEqual(fsa.nactualcall, 1)
++        self.assertEqual(fsa.ttot, 20)
++        self.assertEqual(fsa.tsub, 7)
++        self.assertEqual(fsb.ttot, 19)
++        self.assertEqual(fsb.tsub, 2)
++        self.assertEqual(fsc.ttot, 17)
++        self.assertEqual(fsc.tsub, 9)
++        self.assertEqual(fsd.ttot, 12)
++        self.assertEqual(fsd.tsub, 2)
++        cfsca = fsc.children[fsa]
++        self.assertEqual(cfsca.nactualcall, 0)
++        self.assertEqual(cfsca.ncall, 2)
++        self.assertEqual(cfsca.ttot, 13)
++        self.assertEqual(cfsca.tsub, 6)
++
++    def test_aaaa(self):
++        _timings = {"d_1": 9, "d_2": 7, "d_3": 3, "d_4": 2}
++        _yappi._set_test_timings(_timings)
++
++        def d(n):
++            if n == 3:
++                return
++            d(n + 1)
++
++        stats = utils.run_and_get_func_stats(d, 0)
++        fsd = utils.find_stat_by_name(stats, 'd')
++        self.assertEqual(fsd.ncall, 4)
++        self.assertEqual(fsd.nactualcall, 1)
++        self.assertEqual(fsd.ttot, 9)
++        self.assertEqual(fsd.tsub, 9)
++        cfsdd = fsd.children[fsd]
++        self.assertEqual(cfsdd.ttot, 7)
++        self.assertEqual(cfsdd.tsub, 7)
++        self.assertEqual(cfsdd.ncall, 3)
++        self.assertEqual(cfsdd.nactualcall, 0)
++
++    def test_abcabc(self):
++        _timings = {
++            "a_1": 20,
++            "b_1": 19,
++            "c_1": 17,
++            "a_2": 13,
++            "b_2": 11,
++            "c_2": 9,
++            "a_3": 6
++        }
++        _yappi._set_test_timings(_timings)
++
++        def a(n):
++            if n == 3:
++                return
++            else:
++                b(n)
++
++        def b(n):
++            c(n)
++
++        def c(n):
++            a(n + 1)
++
++        stats = utils.run_and_get_func_stats(a, 1)
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        fsc = utils.find_stat_by_name(stats, 'c')
++        self.assertEqual(fsa.ncall, 3)
++        self.assertEqual(fsa.nactualcall, 1)
++        self.assertEqual(fsa.ttot, 20)
++        self.assertEqual(fsa.tsub, 9)
++        self.assertEqual(fsb.ttot, 19)
++        self.assertEqual(fsb.tsub, 4)
++        self.assertEqual(fsc.ttot, 17)
++        self.assertEqual(fsc.tsub, 7)
++        cfsab = fsa.children[fsb]
++        cfsbc = fsb.children[fsc]
++        cfsca = fsc.children[fsa]
++        self.assertEqual(cfsab.ttot, 19)
++        self.assertEqual(cfsab.tsub, 4)
++        self.assertEqual(cfsbc.ttot, 17)
++        self.assertEqual(cfsbc.tsub, 7)
++        self.assertEqual(cfsca.ttot, 13)
++        self.assertEqual(cfsca.tsub, 8)
++
++    def test_abcbca(self):
++        _timings = {"a_1": 10, "b_1": 9, "c_1": 7, "b_2": 4, "c_2": 2, "a_2": 1}
++        _yappi._set_test_timings(_timings)
++        self._ncall = 1
++
++        def a():
++            if self._ncall == 1:
++                b()
++            else:
++                return
++
++        def b():
++            c()
++
++        def c():
++            if self._ncall == 1:
++                self._ncall += 1
++                b()
++            else:
++                a()
++
++        stats = utils.run_and_get_func_stats(a)
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        fsc = utils.find_stat_by_name(stats, 'c')
++        cfsab = fsa.children[fsb]
++        cfsbc = fsb.children[fsc]
++        cfsca = fsc.children[fsa]
++        self.assertEqual(fsa.ttot, 10)
++        self.assertEqual(fsa.tsub, 2)
++        self.assertEqual(fsb.ttot, 9)
++        self.assertEqual(fsb.tsub, 4)
++        self.assertEqual(fsc.ttot, 7)
++        self.assertEqual(fsc.tsub, 4)
++        self.assertEqual(cfsab.ttot, 9)
++        self.assertEqual(cfsab.tsub, 2)
++        self.assertEqual(cfsbc.ttot, 7)
++        self.assertEqual(cfsbc.tsub, 4)
++        self.assertEqual(cfsca.ttot, 1)
++        self.assertEqual(cfsca.tsub, 1)
++        self.assertEqual(cfsca.ncall, 1)
++        self.assertEqual(cfsca.nactualcall, 0)
++
++    def test_aabccb(self):
++        _timings = {
++            "a_1": 13,
++            "a_2": 11,
++            "b_1": 9,
++            "c_1": 5,
++            "c_2": 3,
++            "b_2": 1
++        }
++        _yappi._set_test_timings(_timings)
++        self._ncall = 1
++
++        def a():
++            if self._ncall == 1:
++                self._ncall += 1
++                a()
++            else:
++                b()
++
++        def b():
++            if self._ncall == 3:
++                return
++            else:
++                c()
++
++        def c():
++            if self._ncall == 2:
++                self._ncall += 1
++                c()
++            else:
++                b()
++
++        stats = utils.run_and_get_func_stats(a)
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        fsc = utils.find_stat_by_name(stats, 'c')
++        cfsaa = fsa.children[fsa.index]
++        cfsab = fsa.children[fsb]
++        cfsbc = fsb.children[fsc.full_name]
++        cfscc = fsc.children[fsc]
++        cfscb = fsc.children[fsb]
++        self.assertEqual(fsb.ttot, 9)
++        self.assertEqual(fsb.tsub, 5)
++        self.assertEqual(cfsbc.ttot, 5)
++        self.assertEqual(cfsbc.tsub, 2)
++        self.assertEqual(fsa.ttot, 13)
++        self.assertEqual(fsa.tsub, 4)
++        self.assertEqual(cfsab.ttot, 9)
++        self.assertEqual(cfsab.tsub, 4)
++        self.assertEqual(cfsaa.ttot, 11)
++        self.assertEqual(cfsaa.tsub, 2)
++        self.assertEqual(fsc.ttot, 5)
++        self.assertEqual(fsc.tsub, 4)
++
++    def test_abaa(self):
++        _timings = {"a_1": 13, "b_1": 10, "a_2": 9, "a_3": 5}
++        _yappi._set_test_timings(_timings)
++
++        self._ncall = 1
++
++        def a():
++            if self._ncall == 1:
++                b()
++            elif self._ncall == 2:
++                self._ncall += 1
++                a()
++            else:
++                return
++
++        def b():
++            self._ncall += 1
++            a()
++
++        stats = utils.run_and_get_func_stats(a)
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        cfsaa = fsa.children[fsa]
++        cfsba = fsb.children[fsa]
++        self.assertEqual(fsb.ttot, 10)
++        self.assertEqual(fsb.tsub, 1)
++        self.assertEqual(fsa.ttot, 13)
++        self.assertEqual(fsa.tsub, 12)
++        self.assertEqual(cfsaa.ttot, 5)
++        self.assertEqual(cfsaa.tsub, 5)
++        self.assertEqual(cfsba.ttot, 9)
++        self.assertEqual(cfsba.tsub, 4)
++
++    def test_aabb(self):
++        _timings = {"a_1": 13, "a_2": 10, "b_1": 9, "b_2": 5}
++        _yappi._set_test_timings(_timings)
++
++        self._ncall = 1
++
++        def a():
++            if self._ncall == 1:
++                self._ncall += 1
++                a()
++            elif self._ncall == 2:
++                b()
++            else:
++                return
++
++        def b():
++            if self._ncall == 2:
++                self._ncall += 1
++                b()
++            else:
++                return
++
++        stats = utils.run_and_get_func_stats(a)
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        cfsaa = fsa.children[fsa]
++        cfsab = fsa.children[fsb]
++        cfsbb = fsb.children[fsb]
++        self.assertEqual(fsa.ttot, 13)
++        self.assertEqual(fsa.tsub, 4)
++        self.assertEqual(fsb.ttot, 9)
++        self.assertEqual(fsb.tsub, 9)
++        self.assertEqual(cfsaa.ttot, 10)
++        self.assertEqual(cfsaa.tsub, 1)
++        self.assertEqual(cfsab.ttot, 9)
++        self.assertEqual(cfsab.tsub, 4)
++        self.assertEqual(cfsbb.ttot, 5)
++        self.assertEqual(cfsbb.tsub, 5)
++
++    def test_abbb(self):
++        _timings = {"a_1": 13, "b_1": 10, "b_2": 6, "b_3": 1}
++        _yappi._set_test_timings(_timings)
++
++        self._ncall = 1
++
++        def a():
++            if self._ncall == 1:
++                b()
++
++        def b():
++            if self._ncall == 3:
++                return
++            self._ncall += 1
++            b()
++
++        stats = utils.run_and_get_func_stats(a)
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        cfsab = fsa.children[fsb]
++        cfsbb = fsb.children[fsb]
++        self.assertEqual(fsa.ttot, 13)
++        self.assertEqual(fsa.tsub, 3)
++        self.assertEqual(fsb.ttot, 10)
++        self.assertEqual(fsb.tsub, 10)
++        self.assertEqual(fsb.ncall, 3)
++        self.assertEqual(fsb.nactualcall, 1)
++        self.assertEqual(cfsab.ttot, 10)
++        self.assertEqual(cfsab.tsub, 4)
++        self.assertEqual(cfsbb.ttot, 6)
++        self.assertEqual(cfsbb.tsub, 6)
++        self.assertEqual(cfsbb.nactualcall, 0)
++        self.assertEqual(cfsbb.ncall, 2)
++
++    def test_aaab(self):
++        _timings = {"a_1": 13, "a_2": 10, "a_3": 6, "b_1": 1}
++        _yappi._set_test_timings(_timings)
++
++        self._ncall = 1
++
++        def a():
++            if self._ncall == 3:
++                b()
++                return
++            self._ncall += 1
++            a()
++
++        def b():
++            return
++
++        stats = utils.run_and_get_func_stats(a)
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        cfsaa = fsa.children[fsa]
++        cfsab = fsa.children[fsb]
++        self.assertEqual(fsa.ttot, 13)
++        self.assertEqual(fsa.tsub, 12)
++        self.assertEqual(fsb.ttot, 1)
++        self.assertEqual(fsb.tsub, 1)
++        self.assertEqual(cfsaa.ttot, 10)
++        self.assertEqual(cfsaa.tsub, 9)
++        self.assertEqual(cfsab.ttot, 1)
++        self.assertEqual(cfsab.tsub, 1)
++
++    def test_abab(self):
++        _timings = {"a_1": 13, "b_1": 10, "a_2": 6, "b_2": 1}
++        _yappi._set_test_timings(_timings)
++
++        self._ncall = 1
++
++        def a():
++            b()
++
++        def b():
++            if self._ncall == 2:
++                return
++            self._ncall += 1
++            a()
++
++        stats = utils.run_and_get_func_stats(a)
++        fsa = utils.find_stat_by_name(stats, 'a')
++        fsb = utils.find_stat_by_name(stats, 'b')
++        cfsab = fsa.children[fsb]
++        cfsba = fsb.children[fsa]
++        self.assertEqual(fsa.ttot, 13)
++        self.assertEqual(fsa.tsub, 8)
++        self.assertEqual(fsb.ttot, 10)
++        self.assertEqual(fsb.tsub, 5)
++        self.assertEqual(cfsab.ttot, 10)
++        self.assertEqual(cfsab.tsub, 5)
++        self.assertEqual(cfsab.ncall, 2)
++        self.assertEqual(cfsab.nactualcall, 1)
++        self.assertEqual(cfsba.ttot, 6)
++        self.assertEqual(cfsba.tsub, 5)
++
++
++if __name__ == '__main__':
++    #     import sys;sys.argv = ['', 'BasicUsage.test_run_as_script']
++    #     import sys;sys.argv = ['', 'MultithreadedScenarios.test_subsequent_profile']
++    unittest.main()
+--- a/tests/test_gevent.py
++++ b/tests/test_gevent.py
+@@ -4,7 +4,7 @@ import yappi
+ import gevent
+ from gevent.event import Event
+ import threading
+-from utils import (
++from .utils import (
+     YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io,
+     burn_io_gevent
+ )
+--- a/tests/test_hooks.py
++++ b/tests/test_hooks.py
+@@ -5,7 +5,7 @@ import unittest
+ import time
+ 
+ import yappi
+-import utils
++import tests.utils as utils
+ 
+ 
+ def a():
+--- a/tests/test_tags.py
++++ b/tests/test_tags.py
+@@ -2,7 +2,7 @@ import unittest
+ import yappi
+ import threading
+ import time
+-from utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
++from .utils import YappiUnitTestCase, find_stat_by_name, burn_cpu, burn_io
+ 
+ 
+ class MultiThreadTests(YappiUnitTestCase):
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.3.2.bb
index 7c3f0fd..8a1aca2 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.3.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yappi_1.3.2.bb
@@ -8,6 +8,7 @@
 
 SRC_URI += " \
     file://run-ptest \
+    file://0001-Fix-imports-for-ptests.patch \
 "
 
 inherit pypi setuptools3 ptest
@@ -19,9 +20,11 @@
 "
 
 RDEPENDS_${PN}-ptest += " \
-    ${PYTHON_PN}-pytest \
+    ${PYTHON_PN}-gevent \
     ${PYTHON_PN}-multiprocessing \
+    ${PYTHON_PN}-pytest \
     ${PYTHON_PN}-profile \
+    ${PYTHON_PN}-zopeinterface \
 "
 
 do_install_ptest() {
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl/0001-Drop-tests-for-semicolon-as-a-separator.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl/0001-Drop-tests-for-semicolon-as-a-separator.patch
new file mode 100644
index 0000000..1a9d5d0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl/0001-Drop-tests-for-semicolon-as-a-separator.patch
@@ -0,0 +1,45 @@
+From 47eabc562a8883d757e3cff487c6c6e98def5a21 Mon Sep 17 00:00:00 2001
+From: Andrew Svetlov <andrew.svetlov@gmail.com>
+Date: Fri, 28 May 2021 12:42:17 +0300
+Subject: [PATCH] Drop tests for semicolon as a separator
+
+yarl 1.6.3 ptests check the use of semicolons as separators in URLs,
+which are no longer valid by default in newer versions of Python. This
+patch is in python3-yarl master, but there is no release with it yet, so
+backport it until there is a new release.
+
+For more info, see: 
+https://bugs.python.org/issue42967
+https://github.com/aio-libs/yarl/issues/563
+
+Upstream-Status: Backport
+(https://github.com/aio-libs/yarl/commit/47eabc562a8883d757e3cff487c6c6e98def5a21)
+
+Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
+
+---
+ tests/test_url_query.py | 11 -----------
+ 1 file changed, 11 deletions(-)
+
+diff --git a/tests/test_url_query.py b/tests/test_url_query.py
+index d2ca640..07f858b 100644
+--- a/tests/test_url_query.py
++++ b/tests/test_url_query.py
+@@ -60,14 +60,3 @@ def test_ampersand_as_value():
+     u = URL("http://127.0.0.1/?a=1%26b=2")
+     assert len(u.query) == 1
+     assert u.query["a"] == "1&b=2"
+-
+-
+-def test_semicolon_as_separator():
+-    u = URL("http://127.0.0.1/?a=1;b=2")
+-    assert len(u.query) == 2
+-
+-
+-def test_semicolon_as_value():
+-    u = URL("http://127.0.0.1/?a=1%3Bb=2")
+-    assert len(u.query) == 1
+-    assert u.query["a"] == "1;b=2"
+-- 
+2.31.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.6.3.bb
index 01682a4..e0e2626 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.6.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yarl_1.6.3.bb
@@ -7,6 +7,7 @@
 
 SRC_URI += " \
     file://run-ptest \
+    file://0001-Drop-tests-for-semicolon-as-a-separator.patch \
 "
 
 PYPI_PACKAGE = "yarl"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.33.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.33.1.bb
new file mode 100644
index 0000000..a0af842
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.33.1.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Pure Python Multicast DNS Service Discovery Library (Bonjour/Avahi compatible)"
+HOMEPAGE = "https://github.com/jstasiak/python-zeroconf"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bb705b228ea4a14ea2728215b780d80"
+
+SRC_URI[sha256sum] = "ac88738639669f924859a4e01d9742f3783e619e710103f4a0d321a47f260fd2"
+
+inherit pypi setuptools3
+
+RDEPENDS_${PN} += " \
+    ${PYTHON_PN}-ifaddr \
+    ${PYTHON_PN}-asyncio \
+"
diff --git a/meta-openembedded/meta-python/recipes-extended/send2trash/python3-send2trash_1.5.0.bb b/meta-openembedded/meta-python/recipes-extended/send2trash/python3-send2trash_1.5.0.bb
deleted file mode 100644
index d906c0b..0000000
--- a/meta-openembedded/meta-python/recipes-extended/send2trash/python3-send2trash_1.5.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "Send file to trash natively under Mac OS X, Windows and Linux"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=05faa35ba1ca10b723f19d286c9d5237"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2"
-
-PYPI_PACKAGE = "Send2Trash"
diff --git a/meta-openembedded/meta-python/recipes-extended/send2trash/python3-send2trash_1.7.1.bb b/meta-openembedded/meta-python/recipes-extended/send2trash/python3-send2trash_1.7.1.bb
new file mode 100644
index 0000000..d3554c8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/send2trash/python3-send2trash_1.7.1.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Send file to trash natively under Mac OS X, Windows and Linux"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a02659c2d5f4cc626e4dcf6504b865eb"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "17730aa0a33ab82ed6ca76be3bb25f0433d0014f1ccf63c979bab13a5b9db2b2"
+
+PYPI_PACKAGE = "Send2Trash"
diff --git a/meta-openembedded/meta-xfce/README b/meta-openembedded/meta-xfce/README
index 70ad47a..bbf4b2e 100644
--- a/meta-openembedded/meta-xfce/README
+++ b/meta-openembedded/meta-xfce/README
@@ -17,6 +17,6 @@
 Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-xfce]' in the subject'
 
 When sending single patches, please using something like:
-'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-xfce][PATCH'
+git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix='meta-xfce][PATCH'
 
 Layer maintainer: Kai Kang <kai.kang@windriver.com>
diff --git a/meta-openembedded/meta-xfce/recipes-apps/mousepad/files/0001-Plugin-support-Properly-handle-plugin-settings.patch b/meta-openembedded/meta-xfce/recipes-apps/mousepad/files/0001-Plugin-support-Properly-handle-plugin-settings.patch
new file mode 100644
index 0000000..0ace907
--- /dev/null
+++ b/meta-openembedded/meta-xfce/recipes-apps/mousepad/files/0001-Plugin-support-Properly-handle-plugin-settings.patch
@@ -0,0 +1,279 @@
+From 6d1800a305698f801236a2d73ebe178fa2d1139d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ga=C3=ABl=20Bonithon?= <gael@xfce.org>
+Date: Sat, 12 Jun 2021 16:45:56 +0200
+Subject: [PATCH] Plugin support: Properly handle plugin settings
+
+What was done in !92 was strictly speaking only suitable for one plugin.
+This could be extended to several plugins by adding a `.gschema.xml`
+file in `plugins/`, intermediate between the one of the application and
+those of the plugins, or by refactoring the Makefiles with inclusions
+and a single call to `@GSETTINGS_RULES@`.
+
+But in any case, due to the relative rigidity of the `.gschema.xml` file
+format and the internal workings of `glib-compile-schemas`, this would
+only be suitable for plugins that are present at compile time, i.e.
+"fake plugins".
+
+Instead, this commit adds the plugin settings at load time, as is
+natural and as the `GSettingsSchema` documentation states. To do this,
+the setting store is extended to contain several roots: the application
+root and the plugin roots.
+
+For the latter, a unified naming convention is preserved, with the
+prefix `org.xfce.mousepad.plugins.`, but they are in fact completely
+independent of each other and independent of the application root.
+
+Fixes #136, related to !92.
+
+Upstream-Status: Backport [https://gitlab.xfce.org/apps/mousepad/-/commit/0d9d4f05aace800118d0a390e4e5dc5ebb940ca5]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ mousepad/mousepad-application.c               | 12 +++-
+ mousepad/mousepad-settings-store.c            | 70 ++++++++++++-------
+ mousepad/mousepad-settings-store.h            |  3 +
+ mousepad/mousepad-settings.c                  | 14 +++-
+ mousepad/mousepad-settings.h                  |  1 +
+ mousepad/org.xfce.mousepad.gschema.xml        |  1 -
+ ...g.xfce.mousepad.plugins.gspell.gschema.xml |  4 --
+ 7 files changed, 71 insertions(+), 34 deletions(-)
+
+diff --git a/mousepad/mousepad-application.c b/mousepad/mousepad-application.c
+index d9a64ff..378d78e 100644
+--- a/mousepad/mousepad-application.c
++++ b/mousepad/mousepad-application.c
+@@ -721,7 +721,7 @@ mousepad_application_load_plugins (MousepadApplication *application)
+   GError                  *error = NULL;
+   GDir                    *dir;
+   const gchar             *basename;
+-  gchar                   *provider_name;
++  gchar                   *provider_name, *schema_id;
+   gchar                  **strs;
+   gsize                    n_strs;
+ 
+@@ -775,6 +775,16 @@ mousepad_application_load_plugins (MousepadApplication *application)
+                                            application, G_CONNECT_SWAPPED);
+           g_action_map_add_action (G_ACTION_MAP (application), G_ACTION (action));
+ 
++          /* add its settings to the setting store */
++          if (g_str_has_prefix (provider_name, "mousepad-plugin-"))
++            schema_id = provider_name + 16;
++          else
++            schema_id = provider_name;
++
++          schema_id = g_strconcat (MOUSEPAD_ID, ".plugins.", schema_id, NULL);
++          mousepad_settings_add_root (schema_id);
++          g_free (schema_id);
++
+           /* instantiate this provider types and initialize its action state */
+           if (g_strv_contains ((const gchar *const *) strs, provider_name))
+             {
+diff --git a/mousepad/mousepad-settings-store.c b/mousepad/mousepad-settings-store.c
+index de989bd..d117c53 100644
+--- a/mousepad/mousepad-settings-store.c
++++ b/mousepad/mousepad-settings-store.c
+@@ -29,9 +29,11 @@
+ 
+ struct MousepadSettingsStore_
+ {
+-  GObject     parent;
+-  GSettings  *root;
+-  GHashTable *keys;
++  GObject parent;
++
++  GSettingsBackend *backend;
++  GList            *roots;
++  GHashTable       *keys;
+ };
+ 
+ 
+@@ -76,8 +78,10 @@ mousepad_setting_key_new (const gchar *key_name,
+ 
+ 
+ static void
+-mousepad_setting_key_free (MousepadSettingKey *key)
++mousepad_setting_key_free (gpointer data)
+ {
++  MousepadSettingKey *key = data;
++
+   if (G_LIKELY (key != NULL))
+     {
+       g_object_unref (key->settings);
+@@ -138,16 +142,16 @@ mousepad_settings_store_class_init (MousepadSettingsStoreClass *klass)
+ static void
+ mousepad_settings_store_finalize (GObject *object)
+ {
+-  MousepadSettingsStore *self;
++  MousepadSettingsStore *self = MOUSEPAD_SETTINGS_STORE (object);
+ 
+   g_return_if_fail (MOUSEPAD_IS_SETTINGS_STORE (object));
+ 
+-  self = MOUSEPAD_SETTINGS_STORE (object);
++  if (self->backend != NULL)
++    g_object_unref (self->backend);
+ 
++  g_list_free_full (self->roots, g_object_unref);
+   g_hash_table_destroy (self->keys);
+ 
+-  g_object_unref (self->root);
+-
+   G_OBJECT_CLASS (mousepad_settings_store_parent_class)->finalize (object);
+ }
+ 
+@@ -212,28 +216,19 @@ static void
+ mousepad_settings_store_init (MousepadSettingsStore *self)
+ {
+ #ifdef MOUSEPAD_SETTINGS_KEYFILE_BACKEND
+-  GSettingsBackend *backend;
+-  gchar            *conf_file;
+-  conf_file = g_build_filename (g_get_user_config_dir (),
+-                                "Mousepad",
+-                                "settings.conf",
+-                                NULL);
+-  backend = g_keyfile_settings_backend_new (conf_file, "/", NULL);
++  gchar *conf_file;
++
++  conf_file = g_build_filename (g_get_user_config_dir (), "Mousepad", "settings.conf", NULL);
++  self->backend = g_keyfile_settings_backend_new (conf_file, "/", NULL);
+   g_free (conf_file);
+-  self->root = g_settings_new_with_backend (MOUSEPAD_ID, backend);
+-  g_object_unref (backend);
+ #else
+-  self->root = g_settings_new (MOUSEPAD_ID);
++  self->backend = NULL;
+ #endif
+ 
+-  self->keys = g_hash_table_new_full (g_str_hash,
+-                                      g_str_equal,
+-                                      NULL,
+-                                      (GDestroyNotify) mousepad_setting_key_free);
++  self->roots = NULL;
++  self->keys = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, mousepad_setting_key_free);
+ 
+-  mousepad_settings_store_add_settings (self, MOUSEPAD_ID,
+-                                        g_settings_schema_source_get_default (),
+-                                        self->root);
++  mousepad_settings_store_add_root (self, MOUSEPAD_ID);
+ }
+ 
+ 
+@@ -246,6 +241,31 @@ mousepad_settings_store_new (void)
+ 
+ 
+ 
++void
++mousepad_settings_store_add_root (MousepadSettingsStore *self,
++                                  const gchar           *schema_id)
++{
++  GSettingsSchemaSource *source;
++  GSettingsSchema       *schema;
++  GSettings             *root;
++
++  source = g_settings_schema_source_get_default ();
++  schema = g_settings_schema_source_lookup (source, schema_id, TRUE);
++
++  /* exit silently if no schema is found: plugins may have settings or not */
++  if (schema == NULL)
++    return;
++
++  root = g_settings_new_full (schema, self->backend, NULL);
++  g_settings_schema_unref (schema);
++
++  self->roots = g_list_prepend (self->roots, root);
++
++  mousepad_settings_store_add_settings (self, schema_id, source, root);
++}
++
++
++
+ const gchar *
+ mousepad_settings_store_lookup_key_name (MousepadSettingsStore *self,
+                                          const gchar           *setting)
+diff --git a/mousepad/mousepad-settings-store.h b/mousepad/mousepad-settings-store.h
+index 3f5cae1..4842036 100644
+--- a/mousepad/mousepad-settings-store.h
++++ b/mousepad/mousepad-settings-store.h
+@@ -38,6 +38,9 @@ GType                  mousepad_settings_store_get_type        (void);
+ 
+ MousepadSettingsStore *mousepad_settings_store_new             (void);
+ 
++void                   mousepad_settings_store_add_root        (MousepadSettingsStore  *store,
++                                                                const gchar            *schema_id);
++
+ const gchar           *mousepad_settings_store_lookup_key_name (MousepadSettingsStore  *store,
+                                                                 const gchar            *setting);
+ 
+diff --git a/mousepad/mousepad-settings.c b/mousepad/mousepad-settings.c
+index d071de6..66b338d 100644
+--- a/mousepad/mousepad-settings.c
++++ b/mousepad/mousepad-settings.c
+@@ -24,6 +24,15 @@ static MousepadSettingsStore *settings_store = NULL;
+ 
+ 
+ 
++void
++mousepad_settings_init (void)
++{
++  if (settings_store == NULL)
++    settings_store = mousepad_settings_store_new ();
++}
++
++
++
+ void
+ mousepad_settings_finalize (void)
+ {
+@@ -39,10 +48,9 @@ mousepad_settings_finalize (void)
+ 
+ 
+ void
+-mousepad_settings_init (void)
++mousepad_settings_add_root (const gchar *schema_id)
+ {
+-  if (settings_store == NULL)
+-    settings_store = mousepad_settings_store_new ();
++  mousepad_settings_store_add_root (settings_store, schema_id);
+ }
+ 
+ 
+diff --git a/mousepad/mousepad-settings.h b/mousepad/mousepad-settings.h
+index bc63d11..615be51 100644
+--- a/mousepad/mousepad-settings.h
++++ b/mousepad/mousepad-settings.h
+@@ -87,6 +87,7 @@ G_BEGIN_DECLS
+ 
+ void       mousepad_settings_init          (void);
+ void       mousepad_settings_finalize      (void);
++void       mousepad_settings_add_root      (const gchar        *schema_id);
+ 
+ void       mousepad_setting_bind           (const gchar        *setting,
+                                             gpointer            object,
+diff --git a/mousepad/org.xfce.mousepad.gschema.xml b/mousepad/org.xfce.mousepad.gschema.xml
+index e802719..8509ee3 100644
+--- a/mousepad/org.xfce.mousepad.gschema.xml
++++ b/mousepad/org.xfce.mousepad.gschema.xml
+@@ -39,7 +39,6 @@
+ 
+   <!-- generic schemas -->
+   <schema id="org.xfce.mousepad" path="/org/xfce/mousepad/" gettext-domain="mousepad">
+-    <child name="plugins" schema="org.xfce.mousepad.plugins"/>
+     <child name="preferences" schema="org.xfce.mousepad.preferences"/>
+     <child name="state" schema="org.xfce.mousepad.state"/>
+   </schema>
+diff --git a/plugins/gspell-plugin/org.xfce.mousepad.plugins.gspell.gschema.xml b/plugins/gspell-plugin/org.xfce.mousepad.plugins.gspell.gschema.xml
+index 6db65b6..95295ba 100644
+--- a/plugins/gspell-plugin/org.xfce.mousepad.plugins.gspell.gschema.xml
++++ b/plugins/gspell-plugin/org.xfce.mousepad.plugins.gspell.gschema.xml
+@@ -1,9 +1,5 @@
+ <schemalist>
+ 
+-  <schema id="org.xfce.mousepad.plugins" path="/org/xfce/mousepad/plugins/" gettext-domain="mousepad">
+-    <child name="gspell" schema="org.xfce.mousepad.plugins.gspell"/>
+-  </schema>
+-
+   <schema id="org.xfce.mousepad.plugins.gspell" path="/org/xfce/mousepad/plugins/gspell/" gettext-domain="mousepad">
+     <child name="preferences" schema="org.xfce.mousepad.plugins.gspell.preferences"/>
+   </schema>
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.5.bb b/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.5.bb
index 830d86b..a93ff55 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.5.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.5.bb
@@ -7,6 +7,8 @@
 
 inherit xfce-app gsettings mime-xdg
 
+SRC_URI += "file://0001-Plugin-support-Properly-handle-plugin-settings.patch"
+
 SRC_URI[sha256sum] = "40c35f00e0e10df50a59bd0dbba9007d2fb5574ed8a2aa73b0fc5ef40e64abe1"
 
 PACKAGECONFIG ??= ""
diff --git a/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.10.0.bb b/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.11.0.bb
similarity index 72%
rename from meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.10.0.bb
rename to meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.11.0.bb
index fbca96f..e611ddd 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.10.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.11.0.bb
@@ -10,7 +10,6 @@
 
 RRECOMMENDS_${PN} += "tumbler"
 
-SRC_URI[md5sum] = "4249e14fba78728481d89ce61a8771fc"
-SRC_URI[sha256sum] = "16225dd74245eb6e0f82b9c72c6112f161bb8d8b11f3fc77277b7bc3432d4769"
+SRC_URI[sha256sum] = "877e30d412c8cbfa9706f4ac0cab1a478f5829beafb773addc7722ca0cb78823"
 
 FILES_${PN} += "${datadir}/metainfo"
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.16.1.bb b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.16.2.bb
similarity index 92%
rename from meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.16.1.bb
rename to meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.16.2.bb
index ccd5572..bf853bf 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.16.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.16.2.bb
@@ -9,7 +9,7 @@
 REQUIRED_DISTRO_FEATURES = "x11"
 
 SRC_URI += "file://0001-xsettings.xml-Set-default-themes.patch"
-SRC_URI[sha256sum] = "bb28e1be7aa34d0edb1cfbaacc509a4267db56828b36cd6be312a202973635c6"
+SRC_URI[sha256sum] = "4dd7cb420860535e687f673c0b5c0274e0d2fb67181281d4b85be9197da03d7e"
 
 EXTRA_OECONF += "--enable-maintainer-mode --disable-debug"