subtree updates march 30 2022

meta-raspberrypi: e39a0a570c..c06ae5eacf:
  Andrei Gherzan (7):
        linux-raspberrypi: linux-raspberrypi: Bump 5.10 to 5.10.95
        linux-raspberrypi: linux-raspberrypi: Bump 5.15 revision
        raspberrypi-firmware.inc: Move to using tarballs from rpi deb repo
        rpi-base.inc: Cleanup redundant imgtyp variable
        sdcard_image-rpi.bbclass: Use processed list of device trees
        docs: Update www.raspberrypi.com documentation links
        linux-raspberrypi: Bump 5.15 recipe to 5.15.30

  Khem Raj (10):
        python3-adafruit-circuitpython-register: Define PIP_INSTALL_PACKAGE
        python3-adafruit-pureio: Fix build with wheel
        python3-rtimu: Port to using setuptools and fix build with wheel
        python3-adafruit-platformdetect: Fix build with wheel
        linux-raspberrypi_5.15.bb: Upgrade to 5.15.25
        rpi-gpio: Port to PEP-517 packaging
        linux-raspberrypi_5.15.bb: Update to 5.15.26
        linux-raspberrypi: Update to 5.15.27
        python: Unbolt wheel packaging PIP_INSTALL_PACKAGE band-aids
        linux-raspberrypi: Update to 5.15.28

  Matthias Klein (1):
        u-boot: always set fdt_addr with firmware-provided FDT address

meta-security: 6cc8dde794..da93339112:
  Akshay Bhat (1):
        meta-security-isafw: Fixes to work with oe-core master

  Armin Kuster (16):
        README.md: fix typo
        packagegroup-security-tpm:  Fix QA Error
        apparmor: update to 3.0.4
        layer.conf: enable apparmor for qemu machine
        parsec-service: Only enable TPM is layer and DISTRO_FEATURE is defined.
        python3-privacyidea: fix QA ERROR
        python3-privacyidea: update to 3.6.2
        openscap-daemon: fix wheels and License issues.
        swtpm: update to 0.7.1
        libtpm: update to 0.9.2
        ima-evm-keys: don't use lnr
        tpm-tools: Fix pod2man race
        tpm2-tss: fix user perms
        python3-fail2ban: fix SPDX license.
        python3-privacyidea: drop old package ref.
        kas-security-alt: drop rust layer

  Ashish Sharma (1):
        Subject: [PATCH] Subject: python3-fail2ban: switch to legacy setuptools3

meta-openembedded: cf0ed42391..9a52bfc4a6:
  Adrian Freihofer (6):
        networkmanager: switch to meson
        networkmanager: new configure options
        libqrtr-glib: add new recipe
        libqmi: switch to meson and git
        modemmanager: update 1.16.8 -> 1.18.6
        networkmanager: replace deprecated licenses

  Alejandro Enedino Hernandez Samaniego (1):
        meta-python: Clean up recipes and classes that were moved to oe-core

  Andreas Müller (3):
        vlc: upgrade 3.0.12 -> 3.0.17-1 to fix build with ffmpeg5
        gnome-tweaks: Fix build on latest meson
        gnome-shell-extensions: Fix build with latest meson

  Andrej Valek (1):
        nodejs: add option to use openssl legacy providers again

  Anu Deepthika, Nandipati (2):
        usbguard: Add inital recipe
        usbguard: package simplification

  Armin Kuster (1):
        pw-am.sh: update to new patcwork system

  Carlos Rafael Giani (1):
        libopenmpt: Upgrade to version 0.6.2

  Changqing Li (1):
        hstr: add new recipe

  Christian Eggers (3):
        libiio: update to version 0.23
        boost-sml: 1.1.4+git --> 1.1.5
        graphviz: don't clear PACKAGECONFIG for nativesdk

  Daniel Gomez (5):
        python3-flask-versioned: Fix PYPA_WHEEL name
        v4l-utils: Update 1.20.0 -> 1.22.1
        opencl-icd-loader: Update 2020.12.18 -> v2022.01.04
        opencl-headers: Update v2020.12.18 -> v2022.01.04
        opencl-clhpp: Update 2.0.15 -> 2.0.16

  Jeremy A. Puhlman (1):
        nspr-native: fix ubuntu 18.04 builds using system gcc.

  Jeremy Puhlman (1):
        nspr-native: build correclty with extended buildtools.

  Jiaqing Zhao (2):
        libesmtp: bump 1.0.6 -> 1.1.0
        esmtp: fix libesmtp dependency check

  Julian Haller (1):
        nlohmann-json: Set CVE_PRODUCT according to NVD

  Justin Bronder (17):
        python3-crc32c: add 2.2.post0
        python3-feedformatter: drop recipe
        python3-coloredlogs: fix location of coloredlogs.pth
        python3-bitarray: switch to setuptools
        python3-kivy: fix wheel build
        python3-astor: fix wheel build
        python3-crcmod: use setuptools instead of distutils
        python3-gcovr: fix wheel build
        python3-prctl: fix wheel build
        python3-ntplib: pull from PyPI
        python3-lrparsing: use setuptools instead of distutils
        python3-configshell-fb: set PIP_INSTALL_PACKAGE
        python3-pyscaffold: fix wheel build and license
        python3-pyserial-asyncio: add 0.6
        python3-pymodbus: add 2.5.3
        python3-asyncinotify: add 2.0.2
        python3-pymodbus: add asyncio to package config

  Kai Kang (9):
        cairomm: correct SRC_URI
        networkmanager: fix installed-vs-shipped error
        python3-pydot: add recipe
        python3-blivet: use setuptools_legacy
        Revert "python3-ipy: drop recipe"
        wxwidgets: fix libdir for multilib
        wxwidgets: fix install errors
        graphviz: 2.44.1 -> 2.50.0
        graphviz: add pkg_postinst script

  Kas User (1):
        netdata: added enable/disable cloud config.

  Khem Raj (131):
        python3-apt: Point PYPA_WHEEL to custom location
        python3-pycups: Inherit setuptools_build_meta
        python3-anyjson: Drop recipe
        Revert "python3-twofish: drop recipe"
        cxxtest: Define PIP_INSTALL_DIST_PATH
        sanlock: Fix build with wheels on
        guider: Set PYPA_WHEEL
        unattended-upgrades: Migrate to use wheels
        python3-scapy: Define custom PYPA_WHEEL
        python3-termcolor: Use setuptools instead of distutils
        cyrus-sasl: Fix ptest builds
        bluepy: Define custom PYPA_WHEEL
        ufw: Upgrade to 0.36.1 bugfix release
        catfish: Fix wheel build
        menulibre: Inherit distutils3
        onboard: Inherit setuptools3-base instead of setuptools3
        python3-xmodem: Move docs to /usr/share/doc
        python3-blivet: Upgrade to 3.4.3
        python3-pytest-runner: Define PIP_INSTALL_PACKAGE
        python3-setuptools-rust-native: Define PIP_INSTALL_PACKAGE
        python3-dateutil: Define PIP_INSTALL_PACKAGE
        python3-poetry-core: Define PIP_INSTALL_PACKAGE
        python3-keras-applications: Define PIP_INSTALL_PACKAGE
        python3-pymetno: Define PIP_INSTALL_PACKAGE
        python3-cson: Define PIP_INSTALL_PACKAGE
        python3-dbussy: Define PIP_INSTALL_PACKAGE
        python3-txws: Define PIP_INSTALL_PACKAGE
        python3-aws-iot-device-sdk-python: Upgrade to 1.5.0
        python3-blivetgui: Upgrade to 2.3.0
        python3-blivet: Adjust install location for binaries and systemd units
        python3-slip-dbus: Fix build with wheel packaging
        xfce4-terminal: Add missing gtk-doc dependency
        recipes: Update LICENSE variable to use SPDX license identifiers
        recipes: Update LICENSE variable to use SPDX license identifiers
        recipes: Update LICENSE variable to use SPDX license identifiers
        recipes: Update LICENSE variable to use SPDX license identifiers
        recipes: Update LICENSE variable to use SPDX license identifiers
        recipes: Update LICENSE variable to use SPDX license identifiers
        recipes: Update LICENSE variable to use SPDX license identifiers
        recipes: Update LICENSE variable to use SPDX license identifiers
        recipes: Update LICENSE variable to use SPDX license identifiers
        recipes: Update LICENSE variable to use SPDX license identifiers
        unattended-upgrades: Inherit setuptools3_legacy
        menulibre: Inherit setuptools3_legacy
        libbpf: Enable builds for riscv64
        pcp: Enable check for x11 distro feature
        gfbgraph: Check for x11 distro feature
        gedit: Fix REQUIRED_DISTRO_FEATURES to not overwrite x11
        thunar-shares-plugin: Check for x11 in distro features
        tepl: Check for x11 in distro features
        geary: Check for x11 in distro features
        packagegroup-xfce-multimedia: Check for x11 distro feature
        fbida: Fix build when x11 is not enabled in distro features
        python3-crc32c: set target platform via setup.cfg
        python3-pyruvate: Fix build on riscv32
        libdc1394: Change dependency from virtual/libgl to virtual/egl
        boinc-client: Depend on virtual/egl instead of virtual/libgl
        libsdl2-ttf: Change depenendency from virtual/libgl to virtual/egl
        Revert "python3-smbus: fix wheel build"
        catfish: Do not set PYPA_WHEEL
        libcereal: Disable Werror with ptests
        ttf-vlgothic: Specify accurate BSD license type
        pcp: Upgrade to 5.3.6
        pcp: Do not search headers on build host during cross compile
        libcereal: Link libatomics on mips for ptests
        nodejs: Disable for powerpc
        gimp: Disable vector icons on ppc
        capnproto: Link in libatomic on ppc
        rocksdb: Use new atomic builtins on powerpc as well
        fwts: Upgrade to 22.01.00
        fwts: Do not use --as-needed on ppc64
        python3-poetry-core: Setting PIP_INSTALL_PACKAGE is no longer needed
        python3-grpcio, python3-grpcio-tools: Upgrade to 1.44.0
        packagegroup-meta-python: Do not exclude python3-grpcio python3-grpcio-tools for ppc64
        python3-pyrad: Change poetry bbclass inherit to match oe-core
        python3-bcrypt: Remove
        python3-psutil: Remove
        abseil: Upgrade to 20211102.0 LTS release
        python3-kiwisolver: Upgrade to 1.4.0
        python3-pyruvate: Update libc to 0.2.120
        python3-chardet: Remove
        python3-pytest-runner: Remove
        php: Fix build on rv32/musl
        recipes: Adjust for renaming flit_core -> python_flit_core
        libgphoto: Fix build with libtool 2.4.7
        monit: Fix build with libtool 2.4.7
        uim: Fix build with libtool 2.4.7
        libbpf: Enable on ppc64
        librdkafka: Use CMAKE_INSTALL_LIBDIR
        liburing: Define libdir based on environment variable
        http-parser: Define LIBDIR
        msgpack-cpp: Upgrade to 4.1.1 release
        weechat: Define LIBDIR
        json-schema-validator: Use GNUInstallDirs in cmake
        redis-plus-plus: Use GNUInstallDirs in cmake
        libiec61850: Use GNUInstallDirs in cmake
        paho-mqtt-cpp: Use CMAKE_INSTALL_LIBDIR in cmake
        sqlite-orm: Define cmake variable defaults
        duktape: Upgrade to 2.7.0
        cockpit: Package missing nonarch_libdir
        unattended-upgrades: Package nonarch_libdir for systemd files
        fsverity-utils: Define LIBDIR
        luaposix: Fix INST_LIBDIR to honor libdir var
        uml-utilities: Define LIB_DIR to be libdir relative
        libsquish: Define LIBDIR knob
        io-compress-lzma-perl,io-compress-perl: Do not mark allarch
        luajit: Upgrade to latest on v2.1 branch
        libcppkafka: Use CMAKE_INSTALL_LIBDIR instead of hardcoding lib
        lvgl,lv-lib-png,lv-drivers: Pass libdir via LIB_INSTALL_DIR to cmake
        geany-plugins: Do not overwrite OE's pkg-config env
        io-compress-lzma-perl, io-compress-perl: Rename to use debian names
        projucer: Upgrade to 6.1.6
        grpc: Enable cpp plugin for target version too
        sysdig: Upgrade to 0.28.0
        libsquish: Fix build when libdir != 'lib'
        valijson: move out of hard dep on meta-networking
        mariadb: Add missing dependency on lzo
        mariadb: Enable openSSL and use as default SSL option
        mariadb: Align atomic ops to help clang on x86
        folks: Upgrade to 0.15.5
        geary: Fix build failures with latest vala
        netdata: Fix override separator syntax
        iniparser: Update to latest tip of trunk
        ndctl: Upgrade to v73
        rocksdb: Exclude on ppc/musl
        gsl: Disable on musl/ppc
        a2jmidid: Fix build on ppc/musl
        abseil-cpp: Fix ppc/musl patch
        gperftools: Disable cpu profiles for ppc/musl
        pmdk: Fix build with newer ndctl
        duktape: Use baselib to construct LIBDIR

  Leon Anavi (10):
        python3-prettytable: Upgrade 2.4.0 -> 3.1.1
        python3-transitions: Upgrade 0.8.10 -> 0.8.11
        python3-charset-normalizer: Upgrade 2.0.10 -> 2.0.12
        python3-semantic-version: Upgrade 2.8.5 -> 2.9.0
        python3-networkx: Upgrade 2.6.3 -> 2.7
        python3-h11: Upgrade 0.12.0 -> 0.13.0
        python3-humanize: Upgrade 3.14.0 -> 4.0.0
        python3-typed-ast: Upgrade 1.4.3 -> 1.5.2
        python3-bandit: Upgrade 1.7.2 -> 1.7.4
        xbindkeys: Add recipe

  Macpaul Lin (1):
        android-tools: adb: add u3 ss descriptor support

  Markus Volk (6):
        gjs: update; customize dependencies
        gnome-disk-utility: disable build of man pages
        evolution-data-server: update to v3.43.1
        libvdpau: allow to build native and nativesdk
        crossguid: update
        blueman: update; add missing RDEPENDS

  Matthias Klein (1):
        python3-smbus: fix wheel build

  Mikko Rapeli (2):
        polkit: add patches for CVE-2021-4034 and CVE-2021-4115
        polkit: switch from mozjs to duktape javascript engine

  Mingli Yu (4):
        gosu: add new recipe
        redis: remove fuzz warning
        libcereal: add ptest support
        mariadb: Upgrade to 10.7.3

  Peter Bergin (1):
        wireplumber: backport fix for default device setting

  Peter Kjellerstedt (1):
        net-snmp: Avoid running `make clean` as it may fail

  Preeti Sachan (1):
        live555: Fix rdepends of live555-dev

  Radovan Scasny (1):
        proftpd: update to 1.3.7c

  Randy MacLeod (7):
        libyang: update from 2.0.7 to 2.0.164
        iperf3: upgrade from 3.9 to 3.11
        syslog-ng: update from 3.31.2 to 3.26.1
        mcelog: update from 175 to 180
        haveged: update from 1.9.14 to 1.9.17
        pv: update from 1.6.6 to 1.6.20
        edac-utils: update to latest git head

  Richard Hughes (1):
        fwupd: New release

  Robert Joslyn (2):
        hwdata: Update to 0.357
        stunnel: Update to 5.63

  Ross Burton (23):
        layer.conf: change layer priority to match oe-core
        ufw: port to setuptools, use setuptools_legacy
        unattended-upgrades: remove PYPA_WHEEL
        python3-blivetgui: use setuptools_legacy
        python3-meh: fix HOMEPAGE
        python3-meh: use setuptools_legacy
        python3-poetry-core: self-bootstrap
        poetry-core: clean up class
        python3-pystache: remove, unmaintained
        python3-configparser: remove, not needed for Python 3
        python3-backports-functional-lru-cache: remove, not needed for Python 3
        python3-pyzmq: clean up recipe
        python3-pycurl: fix DEPENDS
        python3-twisted: remove empty PN-src and PN-dbg
        python3-pylint: upgrade to 2.12.2
        meta-python: migrate away from setuptool3 where possible
        packagegroup-meta-python: add poetry-core and unattended-upgrade
        meta-*: remove obsolete PYPA_WHEEL and PIP_INSTALL_PACKAGE assignments
        poetry_core: update for renamed class pip_install_wheel to python_pep517
        sanlock: update patch status
        Update for setuptools_build_meta renamed to python_setuptools_build_meta
        python3-lz4: use system lz4 library
        python3-lz4: add ptest

  S. Lockwood-Childs (2):
        gyp: fix for compatibility with Python 3.10 (part 2)
        devmem2: patches have been upstreamed

  Samuli Piippo (3):
        python3-path: add recipe
        python3-antlr4-runtime: add recipe
        python3-qface: add recipe

  Scott Murray (13):
        python3-babel: Remove
        python3-certifi: Remove
        python3-ndg-httpsclient: Remove
        python3-pyasn1: Remove
        python3-pyopenssl: Remove
        python3-pysocks: Remove
        python3-requests: Remove
        python3-urllib3: Remove
        mpd: upgrade to 0.23.6
        libmpdclient: upgrade to 2.20
        mpc: upgrade to 0.34
        ncmpc: upgrade to 0.46
        polkit: Fix build with libtool 2.4.7

  Stefan Herbrechtsmeier (4):
        grpc: Remove runtime dependency between grpc and protobuf-compiler
        spdlog: remove header-only leftover
        nginx: add gunzip PACKAGECONFIG
        openldap: correct slapd systemd service support

  Theodore A. Roth (1):
        python3-marshmallow: fix wheel build

  Tim Orling (40):
        python3-setuptools-rust-native: fix wheel build
        python3-cryptography: fix wheel build
        python3-pyruvate: fix wheel build
        python3-backcall: inherit flit_core
        python3-distutils-extra; merge inc, fix wheel build
        python3-ptyprocess: inherit flit_core
        python3-pyserial: also remove /usr/bin/__pycache__
        python3-twisted: also ship Twisted-*.dist-info
        python3-pillow: fix wheel build
        python3-xlrd: fix wheel build
        python3-pykickstart: fix wheel build
        python3-twofish: drop recipe
        python3-monotonic: fix wheel build
        python3-geomet: fix wheel build
        python3-pako: remove duplicate LICENSE
        python3-configobj: backport patch for setuptools
        python3-systemd: patch to use setuptools
        python3-twofish: patch to use setuptools
        python3-sdnotify: patch to use setuptools
        python3-pynetlinux: patch to use setuptools
        python3-pyiface: upgrade to latest git
        python3-meh: patch to use setuptools
        distutils*.bbclass: move from oe-core
        python3-ipy: drop recipe
        python3-poetry-core: add v1.0.8
        python3-dnspython: inherit poetry_core
        python3-pkgconfig: inherit poetry_core
        python3-iso8601: inherit poetry_core
        python3-rsa: inherit poetry_core
        python3-isort: inherit poetry_core
        python3-pymisp: inherit poetry_core
        python3-aiofiles: inherit poetry_core
        poetry_core: add helper class
        python3-iso8601: move to oe-core
        python3-ply: move to oe-core
        python3-poetry-core: move to oe-core
        python3-pretend: move to oe-core
        python3-pytest-subtests: move to oe-core
        python3-pytz: move to oe-core
        packagegroup-meta-python: drop recipes moved to core

  Tom Hochstein (1):
        python3-pybind11: Override pip install variables

  Trevor Gamblin (9):
        python3-django: upgrade 3.2.11 -> 3.2.12
        python3-django: upgrade 4.0.1 -> 4.0.2
        python3-pytest-lazy-fixture: add recipe
        python3-prettytable: add python3-pytest-lazy-fixture to ptest RDEPENDS
        packagegroup-meta-python: add python3-pytest-lazy-fixture
        grpc: upgrade 1.41.1 -> 1.45.0
        python3-protobuf: upgrade 3.19.3 -> 3.19.4
        python3-h5py: upgrade 3.5.0 -> 3.6.0
        python3-paramiko: upgrade 2.9.2 -> 2.10.3

  Vyacheslav Yurkov (1):
        sdbus-c++: disable code generation tools

  Wang Mingyu (81):
        python3-websockets: upgrade 10.1 -> 10.2
        python3-websocket-client: upgrade 1.2.3 -> 1.3.1
        python3-xlsxwriter: upgrade 3.0.2 -> 3.0.3
        python3-socketio: upgrade 5.5.1 -> 5.5.2
        python3-sentry-sdk: upgrade 1.5.3 -> 1.5.6
        babl: upgrade 0.1.88 -> 0.1.90
        gegl: upgrade 0.4.34 -> 0.4.36
        cyrus-sasl: upgrade 2.1.27 -> 2.1.28
        networkmanager: upgrade 1.34.0 -> 1.36.0
        bats: upgrade 1.5.0 -> 1.6.0
        cukinia: upgrade 0.5.1 -> 0.6.0
        iwd: upgrade 1.24 -> 1.25
        freerdp: upgrade 2.5.0 -> 2.6.0
        openconnect: upgrade 8.10 -> 8.20
        libcereal: upgrade 1.3.1 -> 1.3.2
        poco: upgrade 1.11.0 -> 1.11.1
        poppler: upgrade 22.02.0 -> 22.03.0
        smartmontools: upgrade 7.2 -> 7.3
        python3-autobahn: upgrade 22.1.1 -> 22.2.2
        python3-cheetah: upgrade 3.2.6.post1 -> 3.2.6.post2
        python3-django: upgrade 2.2.26 -> 2.2.27
        python3-httplib2: upgrade 0.20.2- > 0.20.4
        python3-icu: upgrade 2.8 -> 2.8.1
        python3-jsonrpcserver: upgrade 5.0.3 -> 5.0.6
        python3-lxml: upgrade 4.7.1 -> 4.8.0
        python3-pyscaffold: upgrade 4.1.4 -> 4.1.5
        python3-redis: upgrade 4.1.1 -> 4.1.4
        python3-scrypt: upgrade 0.8.19 -> 0.8.20
        python3-tqdm: upgrade 4.62.3 -> 4.63.0
        python3-twisted: upgrade 22.1.0 -> 22.2.0
        python3-waitress: upgrade 2.0.0 -> 2.1.0
        python3-astroid: upgrade 2.9.3 -> 2.10.0
        python3-bitarray: upgrade 2.3.7 -> 2.4.0
        python3-aws-iot-device-sdk-python: upgrade 1.5.0-> 1.5.1
        python3-imageio: upgrade 2.16.0 -> 2.16.1
        python3-python-vlc: upgrade 3.0.12118 -> 3.0.16120
        python3-pymisp: upgrade 2.4.152 -> 2.4.155.1
        python3-networkx: upgrade 2.7 -> 2.7.1
        python3-pychromecast: upgrade 10.2.3 -> 10.3.0
        smbnetfs: upgrade 0.6.1 -> 0.6.3
        python3-astroid: upgrade 2.10.0 -> 2.11.0
        python3-bitstruct: upgrade 8.12.1 -> 8.13.0
        python3-cppy: upgrade 1.1.0 -> 1.2.0
        python3-dnspython: upgrade 2.2.0 -> 2.2.1
        libiec61850: upgrade 1.5.0 -> 1.5.1
        evince: upgrade 41.3 -> 41.4
        networkmanager-openvpn: upgrade 1.8.16 -> 1.8.18
        networkmanager: upgrade 1.36.0 -> 1.36.2
        weechat: upgrade 3.4 -> 3.4.1
        freerdp: upgrade 2.6.0 -> 2.6.1
        libvdpau: upgrade 1.4 -> 1.5
        python3-itsdangerous: upgrade 2.1.0 -> 2.1.1
        python3-jsonrpcserver: upgrade 5.0.6 -> 5.0.7
        gjs: upgrade 1.71.1 -> 1.72.0
        gvfs: upgrade 1.49.1 -> 1.50.0
        nautilus: upgrade 41.2 -> 42.0
        gnome-disk-utility: upgrade 41.0 -> 42.0
        gnome-photos: upgrade 40.0 -> 42.0
        gnome-system-monitor: upgrade 41.0 -> 42.0
        metacity: upgrade 3.42.0 -> 3.44.0
        graphene: upgrade 1.10.6 -> 1.10.8
        libpeas: upgrade 1.30.0 -> 1.32.0
        php: upgrade 8.1.3 -> 8.1.4
        iwd: upgrade 1.25 -> 1.26
        libgsf: upgrade 1.14.48 -> 1.14.49
        libjcat: upgrade 0.1.10 -> 0.1.11
        libqb: upgrade 2.0.4 -> 2.0.6
        libwacom: upgrade 2.1.0 -> 2.2.0
        stm32flash: upgrade 0.6 -> 0.7
        babl: upgrade 0.1.90 -> 0.1.92
        libxmlb: upgrade 0.3.7 -> 0.3.8
        monit: upgrade 5.31.0 -> 5.32.0
        python3-astroid: upgrade 2.11.0 -> 2.11.2
        python3-autobahn: upgrade 22.2.2 -> 22.3.2
        python3-pylint: upgrade 2.12.2 -> 2.13.2
        python3-pymisp: upgrade 2.4.155.1 -> 2.4.157
        python3-redis: upgrade 4.1.4 -> 4.2.0
        python3-robotframework: upgrade 4.1.3 -> 5.0
        python3-tqdm: upgrade 4.63.0 -> 4.63.1
        python3-watchdog: upgrade 2.1.6 -> 2.1.7
        python3-pytest-metadata: upgrade 1.11.0 -> 2.0.1

  Xu Huan (18):
        python3-lz4: upgrade 3.1.10 -> 4.0.0
        python3-mccabe: upgrade 0.6.1 -> 0.7.0
        python3-pillow: upgrade 9.0.0 -> 9.0.1
        python3-snappy upgrade 0.6.0 -> 0.6.1
        python3-twine: upgrade 3.7.1 -> 3.8.0
        python3-xxhash: upgrade 2.0.2 -> 3.0.0
        python3-txaio: upgrade 21.2.1 -> 22.2.1
        python3-regex :upgrade 2021.11.10 -> 2022.3.2
        python3-pywbemtools: upgrade 0.9.1 -> 1.0.0
        python3-pymongo: upgrade 4.0.1 -> 4.0.2
        python3-wrapt: upgrade 1.13.3 -> 1.14.0
        python3-sqlalchemy: upgrade 1.4.31 -> 1.4.32
        python3-sentry-sdk: upgrade 1.5.6 -> 1.5.7
        python3-alembic: upgrade 1.7.6 -> 1.7.7
        python3-arpeggio: upgrade 1.10.2 -> 2.0.0
        python3-cachetools: upgrade 4.2.4 -> 5.0.0
        python3-cantools: upgrade 37.0.1 -> 37.0.7
        python3-intervals: upgrade 1.10.0.post1 -> 1.10.0

  Yi Zhao (5):
        netplan: fix parallel build failure
        nftables: upgrade 1.0.1 -> 1.0.2
        postfix: upgrade 3.6.4 -> 3.6.5
        dhcp-relay: upgrade 4.4.2p1 -> 4.4.3
        apache2: upgrade 2.4.52 -> 2.4.53

  Zoltán Böszörményi (1):
        nodejs: Upgrade to 16.14.0

  wangmy (3):
        python3-waitress: upgrade 2.1.0 -> 2.1.1
        openvpn: upgrade 2.5.5 -> 2.5.6
        rrdtool: upgrade 1.7.2 -> 1.8.0

poky: 49168f5d55..5fe3689f4f:
  Ahmad Fatoum (1):
        kernel-fitimage: allow overriding FIT configuration prefix

  Alejandro Hernandez Samaniego (1):
        initramfs-framework: Add overlayroot module

  Alexander Kanavin (36):
        sstate: do not add TARGET_ARCH to pkgarch for cross recipes.
        OELAYOUT_ABI: bump, avoid tmp/ breakage by removing old cross manifests
        libsndfile1: correct upstream version check
        libarchive: correct upstream version check
        glslang/spirv: synchronize with the rest of vulkan items
        rust: update 1.58.1 -> 1.59.0
        librsvg: update 2.52.5 -> 2.52.6
        xwayland: update 21.1.4 -> 22.1.0
        apt: upgrade 2.2.4 -> 2.4.0
        kea: upgrade 2.0.1 -> 2.0.2
        python3-cython: upgrade 0.29.27 -> 0.29.28
        diffoscope: upgrade 204 -> 206
        harfbuzz: upgrade 3.4.0 -> 4.0.0
        libsecret: upgrade 0.20.4 -> 0.20.5
        vulkan: upgrade 1.3.204.0 -> 1.3.204.1
        mmc-utils: upgrade to latest revision
        webkitgtk: upgrade 2.34.5 -> 2.34.6
        openssh: update 8.8 -> 8.9
        sysklogd: nobranch in SRC_URI is no longer necessary
        libuv: fix upstream version check
        bind: all even versions now get long term maintenance windows
        dbus-test: merge into main dbus recipe
        dbus: merge dbus.inc into the recipe
        dbus: update 1.12.22 -> 1.14.0
        python3-semantic-version: fix upstream verison check
        python3-typing-extensions: fix upstream version check
        bind: update 9.16.26 -> 9.18.1
        perl-cross: update 1.3.6 -> 1.3.7
        perl: update 5.34.0 -> 5.34.1
        diffoscope: upgrade 206 -> 207
        gtk+3: upgrade 3.24.31 -> 3.24.33
        squashfs-tools: correct upstream version check
        meson: upgrade 0.61.2 -> 0.61.3
        mtools: upgrade 4.0.37 -> 4.0.38
        sqlite3: upgrade 3.38.0 -> 3.38.1
        python3-sphinx-rtd-theme: correct upstream version check

  Alexandre Belloni (1):
        scripts/patchreview: handle Inactive-Upstream status

  Andrew Jeffery (5):
        rust: Introduce arch_to_rust_arch()
        rust: Introduce RUST_BUILD_ARCH
        rust: Add snapshot checksums for powerpc64le
        ipk: Import re in manifest module
        ipk: Decode byte data to string in manifest handling

  Bill Pittman (1):
        wic: Use custom kernel path if provided

  Bruce Ashfield (19):
        linux-yocto/5.15: riscv64: drop MAXPHYSMEM_128GB
        linux-yocto/5.10: features/zram: remove CONFIG_ZRAM_DEF_COMP
        linux-yocto/5.15: update to v5.15.24
        linux-yocto/5.10: update to v5.10.101
        linux-yocto/5.10: Fix ramoops/ftrace
        linux-yocto/5.15: arm defconfig fixes
        linux-yocto/5.15: update to v5.15.26
        linux-yocto/5.10: update to v5.10.103
        linux-yocto/5.15: riscv32: drop MAXPHYSMEM_1GB
        linux-yocto: nohz_full boot arg fix
        linux-yocto/5.10: split vtpm for more granular inclusion
        linux-yocto/5.15: split vtpm for more granular inclusion
        linux-yocto/5.10: cfg/debug: add configs for kcsan
        linux-yocto/5.15: cfg/debug: add configs for kcsan
        linux-yocto/5.15: update to v5.15.27
        linux-yocto-rt/5.15: update to -rt34
        linux-yocto-rt/5.10: update to -rt61
        linux-yocto/5.15: update to v5.15.30
        linux-yocto/5.10: update to v5.10.107

  Carlos Rafael Giani (1):
        libsdl2: Add libunwind-native to the libsdl2-native DEPENDS

  Changhyeok Bae (2):
        repo: upgrade 2.21 -> 2.22
        mobile-broadband-provider-info: upgrade 20210805 -> 20220315

  Chen Qi (1):
        multilib_global.bbclass: fix setting preferred version for canadian recipes

  Christian Eggers (7):
        license: expand_wildcard_licenses: add AGPL-3.0* wildcard
        ref-manual: INCOMPATIBLE_LICENSE: use new license wildcards
        glib-2.0: upgrade 2.70.4 -> 2.72.0
        rust-common: override RUST_LIBC for crosssdk
        machine-sdk: clear ABIEXTENSION for class-crosssdk
        rust-crosssdk: use ${RUST_LIBC} in ${PN}
        librsvg: reenable nativesdk

  Claudius Heine (4):
        overlayfs: add systemd unit path prefix to FILES:${PN} array
        overlayfs-etc: add condition to package-management feature conflict
        files: overlayfs-etc: wrap long lines of preinit file
        files: overlayfs-etc: add overlay mount options to preinit

  Daniel Gomez (1):
        bitbake: contrib: Add Dockerfile for building PR service

  Daniel Wagenknecht (4):
        copy_buildsystem: allow more layer paths
        bitbake: fetch2: ssh: username and password are optional
        bitbake: fetch2: ssh: fix path handling
        bitbake: fetch2: ssh: support checkstatus

  David Reyna (4):
        bitbake: toaster: Add 'Kirkstone', 'Honister', and 'Hardknott'. Remove 'Dunfell' and 'Gatesgarth'.
        bitbake: toaster: automation to generate fixture files
        bitbake: toaster: detect when bitbake crashed
        bitbake: toaster: race condition for end-of-build

  Diego Sueiro (1):
        grub-efi: Add option to include all available modules

  Joe Slater (5):
        zip: modify when match.S is built
        weston: require wayland as a distro feature
        expect: modify fixline1 script
        weston: use same distro features for weston and westion-init
        libxml2: fix CVE-2022-23308 regression

  Jose Quaresma (18):
        icecc.bbclass: enable networking in all tasks
        buildhistory.bbclass: create the buildhistory directory when needed
        Revert "cmake.bbclass: Set CXXFLAGS and CFLAGS"
        sstate: inside the threadedpool don't write to the shared localdata
        gstreamer1.0-plugins-base: libgst is already defined on PACKAGES_DYNAMIC
        gstreamer1.0-plugins-packaging: rename variables
        gstreamer1.0-plugins-bad/ugly: use the GPL-2.0-or-later only when it is in use
        gstreamer1.0: upgrade 1.20.0 -> 1.20.1
        gstreamer1.0-plugins-base: upgrade 1.20.0 -> 1.20.1
        gstreamer1.0-plugins-good: upgrade 1.20.0 -> 1.20.1
        gstreamer1.0-plugins-bad: upgrade 1.20.0 -> 1.20.1
        gstreamer1.0-plugins-ugly: upgrade 1.20.0 -> 1.20.1
        gstreamer1.0-libav: upgrade 1.20.0 -> 1.20.1
        gstreamer1.0-omx: upgrade 1.20.0 -> 1.20.1
        gstreamer1.0-vaapi: upgrade 1.20.0 -> 1.20.1
        gstreamer1.0-rtsp-server: upgrade 1.20.0 -> 1.20.1
        gstreamer1.0-python: upgrade 1.20.0 -> 1.20.1
        gst-devtools: upgrade 1.20.0 -> 1.20.1

  Kai Kang (1):
        python3-pyparsing: rdepends on python3-html

  Kamil Dziezyk (1):
        libacpi: Build libacpi also for 'aarch64' machines

  Khem Raj (42):
        musl: Update to latest master
        libical: Pass TOOLCHAIN_OPTIONS via CFLAGS
        libical: Do not set CC explicitly for gir compiler
        insane: Accomodate llvm-objdump
        systemtap: Enable for riscv64
        packagegroup-core-tools-profile: Enable systemtap for riscv64
        kmscube: Fix build when x11 is absent in distro features
        virglrenderer: Depend on virtual/egl
        zlib: Pass ldflags to configure tests using linking
        zip: Pass ldflags to configure tests using linking
        qemu: Fix build when x11 is not in distro features
        webkitgtk: Fix build when x11 is not in distro features
        unzip: Pass LDFLAGS to configure tests
        libtool: Recognise additional linker commandline options passed by clang
        m4: Fix build on musl/ppc
        gcompat: Update to latest
        powerpc32-linux: Remove libc cached variables
        ppc/siteinfo: Fix differences between musl and glibc
        gcompat: Do not use static-pie on ppc
        linux-yocto: Ignore textrels for ppc64 kernel
        binutils: Bump to latest 2.38 release branch
        erofs-utils: Use __SANE_USERSPACE_TYPES__ on ppc64
        libstd-rs: Fix build on riscv64/musl
        qemu: Fix build on ppc64
        qemuppc64.conf: Disable huge vmalloc
        qemuppc64: Use smp = 2
        libucontext: Upgrade to 1.2 release
        python3-cryptography: Upgrade to 36.0.2
        weston-init: Use pixman on riscv64 qemu
        openssh: Default to not using sandbox when cross compiling
        qemuriscv: Use virtio-tablet-pci for mouse
        weston-init: Use pixman rendering for qemuppc64
        qemu: Fix build on systems without MAP_SYNC
        libsdl2: Depend on virtual/egl
        piglit: Remove virtual/libgl
        waffle: Use the right dependencies as needed
        webkitgtk: Depend on virtual/egl instead of virtual/libgl
        qemu: Depend on libepoxy instead of virtual/libgl
        musl: Update to latest master
        diffutils: Fix build on ppc/musl
        grep: Fix build on ppc/musl
        qemu: Disable for ppc32

  Konrad Weihmann (2):
        pip_install_wheel: improve wheel handling
        setuptools_build_meta: remove python dependency

  Lee Chee Yang (1):
        poky.conf: update tested distro

  Luca Boccassi (3):
        mount-copybind: fix shellcheck warning
        mount-copybind: add MOUNT_COPYBIND_AVOID_OVERLAYFS env var to skip OverlayFS
        volatile-binds: add recipe variable to allow disabling OverlayFS

  Mark Hatle (2):
        insane.bbclass: Update insane.bbclass to work on FIPS enabled hosts
        bitbake: utils/ply: Change md5 usages to work on FIPS enabled hosts

  Markus Volk (9):
        libxslt: update to v1.1.35
        x86-base.inc: replace intel i965 driver with crocus
        mesa: update to 22.0.0
        gtk+3: remove deprecated option
        librsvg: inherit vala
        xf86-video-intel: add dependencies; remove dri1
        mesa: align target- and native build
        libva: make buildable for native and nativesdk
        wayland: provide wayland-client-native and wayland-protocols-native

  Marta Rybczynska (3):
        bitbake: lib/bb: more verbose error message
        cve-check: add json format
        cve-check: add coverage statistics on recipes with/without CVEs

  Michael Halstead (2):
        releases: update to include 3.3.5
        releases: update to include 3.1.15

  Michael Olbrich (1):
        kernel.bbclass: avoid config changes based on the availability of pahole

  Michael Opdenacker (30):
        documentation: remove references to prelink support
        documentation/README: how to upgrade Sphinx packages
        documentation: individual release note files
        documentation: release notes for 3.4.2
        bitbake: bitbake-user-manual: further override syntax updates
        bitbake: bitbake-user-manual: add "crate" fetcher
        bitbake: bitbake-user-manual: stop mentioning the Angstrom distribution
        bitbake: bitbake-user-manual: add note about the old syntax for OVERRIDES
        bitbake: bitbake-user-manual: yet another overrides syntax update
        bitbake: bitbake-user-manual: update allowed characters in overrides
        bitbake: bitbake-user-manual: add recent release manuals
        local.conf.sample: fix reference to extended configuration sample
        local.conf.sample: https and no newline for SSTATE_MIRRORS
        conf/machine: fix QEMU x86 sound options
        bitbake: doc: bitbake-user-manual: reorder variable definitions
        docs: overview-manual: formating fixes
        docs: migration-3.5.rst: fix "distutils" typo
        docs: update examples to add branch info to git URIs
        documentation/README: correct heading styles actually used in the YP manuals
        manuals: inclusive language updates
        dev-manual: details about using firewalls and limiting fetch threads
        docs: brief-yoctoprojectqs: update video tutorial
        docs: ref-system-requirements.rst: update list of supported distros
        ref-manual: sort list of variables in generated output
        ref-manual: reorder variable definitions
        doc: migration-3.5: move the distutils changes to the class changes section
        doc: migration-3.5: variable changes for inclusive language
        bitbake: doc: bitbake-user-manual: add branch parameter to git SRC_URI examples
        bitbake: doc: bitbake-user-manual: branch parameter now mandatory in git SRC_URIs
        bitbake: bitbake: bitbake-user-manual: punctuation fixes

  Ming Liu (5):
        image.bbclass: make sure do_rootfs run from a clean workspace
        weston-init: add use-pixman PACKAGECONFIG
        kernel-fitimage.bbclass: introduce get_fit_replacement_type function
        kernel-fitimage.bbclass: change 'echo' to 'bbnote'
        kernel-fitimage.bbclass: introduce FIT_SUPPORTED_INITRAMFS_FSTYPES

  Minjae Kim (2):
        gnu-config: update SRC_URI
        virglrenderer: update SRC_URI

  Nicholas Sielicki (1):
        dev-manual: note on using journald without syslog

  Olaf Mandel (1):
        bitbake: fetch2/git: stop generated tarballs from leaking info

  Oleksandr Ocheretnyi (1):
        kernel-devsrc: do not copy Module.symvers file during install

  Peter Kjellerstedt (24):
        license.py: Correct a comment
        gma500-gfx-check: Update LICENSE to use an SPDX license identifier
        default-distrovars.inc: Remove the empty default for WHITELIST_GPL-3.0
        selftest: recipetool: Correct the URI for socat
        recipetool/create_buildsys_python: Add support for more known licenses
        recipetool: Use SPDX license identifiers
        meta, meta-selftest: Replace more non-SPDX license identifiers
        manuals: Update LICENSE vars in examples to use SPDX license identifiers
        bitbake: knotty.py: Improve the message while waiting for running tasks to finish
        bitbake: knotty.py: Correct the width of the progress bar for the real tasks
        bitbake: knotty.py: A little clean up of TerminalFilter::updateFooter()
        oe-pkgdata-util: Adapt to the new variable override syntax
        create-spdx.bbclass: Remove an unnecessary path from do_create_spdx[dirs]
        deploy.bbclass: Remove an unnecessary path from do_deploy[dirs]
        package.bbclass: Remove an unnecessary path from do_package[dirs]
        image.bbclass: Remove two unnecessary paths from do_rootfs[dirs]
        go: Remove three unnecessary paths from do_compile[dirs]
        selftest/incompatible_lic: Remove references to AVAILABLE_LICENSES
        create-spdx.bbclass: Simplify extraction of license text
        license.bbclass: Remove the available_licenses() function
        bitbake: server/process: Correct a typo in a comment
        glib-2.0: Remove a leftover comment
        libdnf: Add a dependency on util-linux
        python3: Add a dependency on ncurses

  Pgowda (1):
        binutils: Avoid Race condition in as.info

  Quentin Schulz (1):
        ref-manual: classes: provide command with ready-to-use password

  Ralph Siemsen (2):
        libxml2: move to gitlab.gnome.org
        libxml2: update to 2.9.13

  Randy MacLeod (1):
        libarchive: upgrade 3.5.3 -> 3.6.0

  Ricardo Salveti (1):
        libpam: use /run instead of /var/run in systemd tmpfiles

  Richard Neill (1):
        systemd: Update 250.3 -> 250.4

  Richard Purdie (113):
        pip_install_wheel: Use BPN instead of PN to construct PYPI_PACKAGE default
        mutlilib: Handle WHITELIST_GPL-3.0 being unset
        recipetool/devtool: Further SPDX identifier cleanups
        license/insane: Show warning for obsolete license usage
        license: Rework INCOMPATIBLE_LICENSE wildcard handling
        libsndfile: Fix missing external library support
        python3-native: Drop opt-1 and opt-2 pyc files
        cmake-native: Remove help docs from the native sysroot
        python3-native: Remove all pyc files
        python3: Drop opt1 and opt2 pyc files from target
        Revert "libsdl2: Add libunwind-native to the libsdl2-native DEPENDS"
        Revert "libical: Pass TOOLCHAIN_OPTIONS via CFLAGS"
        layer.conf: Filter docs dependencies for efficiency
        layer.conf: Add libarchive-native e2fsprogs-native exclusion from sysroot
        python3: Reduce util-linux dependency to util-linux-libuuid
        layer.conf: Allow sysroot dependencies on perlcross-native to be skipped
        bitbake: knotty: Correctly handle multiple line items
        bitbake: knotty: Improve setscene task display
        expat: Upgrade 2.4.6 -> 2.4.7
        build-appliance-image: Update to master head revision
        vim: Update to 8.2.4524 for further CVE fixes
        bitbake: server/xmlrpcserver: Add missing xmlrpcclient import
        bitbake: uievent: Fix import warning for python 3.10
        bitbake: cooker: Fix environment history printing
        bitbake: toaster: Fix IMAGE_INSTALL issues with _append vs :append
        bitbake: toaster: move gen_fixtures to the correct path
        Revert "mesa: make sure GLES3 headers are installed"
        oeqa/runtime/ping: Improve failure message to include more detail
        scripts/runqemu: Fix memory limits for qemux86-64
        shadow-native: Simplify and fix syslog disable patch
        bitbake: bitbake: Bump to version 2.0.0
        poky: Bump to 4.0 in preparation for release
        python3-psutil/python3-bcrypt: Add missing HOMEPAGE
        py3o: Rename to python_py3o
        setuptools3_rust: Rename to python_setuptools3_rust
        poetry_core: Rename to python_poetry_core
        python3-cryptography: Add missing ptest tomli dependency
        python3-cryptography-vectors: Fix reproducibility
        perf-build-test/report: Drop phantomjs and html email reports support
        create-spdx: Use function rather than AVAILABLE_LICENSES
        sstate: Allow optimisation of do_create_spdx task dependencies
        license: Drop AVAILABLE_LICENSES
        libstd-rs: Extend to nativesdk
        rust-cross: Add rust-crosssdk variant for nativesdk use
        cargo: Add missing nativesdk support
        python3-cryptography: Fix ptest result handling
        python3-docutil: Extend to nativesdk
        bitbake: data_smart: Skip commonly accessed variables from variable data context lookup
        bitbake: data_smart: Avoid multiple getVarFlag calls
        bitbake: codeparser: Avoid log bufer overhead in cache case
        python3-snowballstemmer: Add new recipe
        python3-imagesize: Add new recipe
        python3-alabaster: Add new recipe
        python3-pyasn1: Add from meta-oe/meta-python
        ptest-packagelists.inc: Add python3-pyasn1 to fast ptests list
        python3-certifi: Add from meta-oe/meta-python
        python3-chardet: Add from meta-oe/meta-python
        python3-ndg-httpsclient: Add from meta-oe/meta-python
        python3-pyopenssl: Add from meta-oe/meta-python
        python3-pysocks: Add from meta-oe/meta-python
        python3-pytest-runner: Add from meta-oe/meta-python
        python3-requests: Add from meta-oe/meta-python
        python3-urllib3: Add from meta-oe/meta-python
        python3-babel: Add recipe from meta-oe/meta-python
        python3-sphinxcontrib-qthelp: Add new recipe
        python3-sphinxcontrib-devhelp: Add new recipe
        python3-sphinxcontrib-htmlhelp: Add new recipe
        python3-sphinxcontrib-serializinghtml: Add new recipe
        python3-sphinxcontrib-jsmath: Add new recipe
        python3-sphinxcontrib-applehelp: add new recipe
        python3-sphinx-rtd-theme: Add new recipe
        python3-sphinx: Add a new recipe
        python3-sphinx: Work around reproducibility issue
        python3: Add missing HOMEPAGE entries
        maintainers.inc: Add new python recipes
        Add buildtools-docs-tarball recipe
        buildtools-docs-tarball: Add test for building documentation using sphinx
        oeqa/selftest/tinfoil: Improve tinfoil event test debugging
        toaster: Fix broken overrides usage
        poky.yaml: Drop POKYVERSION and YOCTO_POKY references
        poky.yaml: Drop unused YOCTO_DOC_VERSION_MINUS_ONE
        Makefile/set_versions: Allow poky.yaml to be autogenerated
        conf.py/set_versions/poky.yaml: Set version in conf.py from poky.yaml
        set_versions: Add support for setting POKYVERSION found in older releases
        set_versions/switchers.js: Allow switchers.js version information to be autogenerated
        set_versions: Various improvements
        set_versions: Handle dev branch in switchers correctly
        set_versions/switchers: Drop versions shown to the active releases
        pseudo: Add patch to workaround paths with crazy lengths
        libtool: Upgrade 2.4.6 -> 2.4.7
        bitbake: siggen: Improve ambiguous use of 'dependent'
        Revert "set_versions: Handle dev branch in switchers correctly"
        Revert "set_versions/switchers: Drop versions shown to the active releases"
        set_versions: Handle dev branch in switchers correctly
        set_versions: Correct devbranch comparision
        bitbake: utils: Fix lockfile path length issues
        sanity: Add warning for local hasheqiv server with remote sstate mirrors
        bitbake: tinfoil: Allow run_command not to wait on events
        bitbake: cooker/siggen: Support exit calls and use for hashserv client
        bitbake: siggen: Add missing reset handler to hashserv signature generator
        bitbake: server/process: Move threads left debug to after cooker shutdown
        bitbake: cooker: Fix inotify watches causing memory resident bitbake corruption
        perl: Add missing RDEPENDS
        oeqa/selftest/tinfoil: Fix intermittent event loss issue in test
        create-spdx: Avoid regex warning by quoting correctly
        bitbake: cooker: Fix exception handling in parsers
        bitbake: cooker: Fix main loop starvation when parsing
        bitbake: cooker: Improve exception handling in parsing process
        bitbake: cooker: Simplify parser init function handling
        bitbake: cooker/process: Fix signal handling lockups
        bitbake: cooker: Rework force parser shutdown
        bitbake: build: Add missing parameter to TaskInvalid
        poky: Drop PREMIRRORS entries for scms

  Robert Joslyn (1):
        curl: Update to 7.82.0

  Robert P. J. Day (1):
        scripts: Various typo/grammar/punctuation fixes

  Robert Yang (4):
        coreutils: Disable statx for native build
        perl: Makefile.PL: Fix _PATH_LOG for deterministic
        quilt: Disable external sendmail for deterministic build
        cups: Add --with-dbusdir to EXTRA_OECONF for deterministic build

  Ross Burton (67):
        Revert "cve-check: add lockfile to task"
        classes: add setuptools3_legacy
        asciidoc: update git repository
        bmap-tools: remove redundant python3native inherit
        setuptools3.bbclass: clean up
        pip_install_wheel: clean up
        pip_install_wheel: don't lazy assign PIPINSTALLARGS
        python3-pip: remove obsolete and confusing comment
        flit_core: clean up configure/compile
        setuptools_build_meta: clean up configure/compile
        flit_core: respect PIP_INSTALL_DIST_PATH
        flit_core: add variable to control where pyproject.toml is located
        setuptools_build_meta: respect PIP_INSTALL_DIST_PATH
        setuptools_build_meta: add variable to control where pyproject.toml is located
        python3-flit-core: improve recipe
        setuptools3: respect PIP_INSTALL_DIST_PATH
        python3-pip: clean up PYPA_WHEEL usage
        python3-setuptools3: clean up PYPA_WHEEL usage
        python3-wheel: clean up PYPA_WHEEL usage
        bmap-tools: remove redundant PYPA_WHEEL
        python3-markdown: use setuptools_build_meta
        python3-pyrsistent: use setuptools_build_meta
        python3-pyyaml: use setuptools_build_meta
        python3-scons: remove PIP_INSTALL_DIST_PATH
        pip_install_wheel: generate the wheels in directory we control outside of S
        pip_install_wheel: install wheel with a glob
        python3-scons: remove redundant FILES:${PN}-doc
        flit_core: remove redundant python3-pip-native DEPENDS
        python3-pip: remove redundant DEPENDS on python3-setuptools-native
        pip_install_wheel: add a generic do_install for bootstrapping
        seatd: upgrade to 0.6.4 (fixes CVE-2022-25643)
        setuptools3-base: improve RDEPENDS assignment
        meta: remove obsolete PIP_INSTALL_PACKAGE
        meta: rename pip_install_wheel.bbclass to python_pep517.bbclass
        python_pep517: move PEP517_SOURCE_PATH to python_pep517
        python3-setuptools-rust-native: remove obsolete PIP_*
        python3-poetry-core: remove obsolete PIP_INSTALL_PACKAGE
        poetry_core: update for renamed class pip_install_wheel to python_pep517
        python3-cryptography: mark test_create_certificate_with_extensions as expected to fail
        python3-cryptography: remove obsolete PIP_INSTALL_DIST_PATH
        python3-installer: add installer module
        python_pep517: use installer instead of pip
        devupstream: fix handling of SRC_URI
        linux-yocto: remove redundant devupstream assignments
        python3-setuptools-rust-native: use setuptools_build_meta
        openssl: upgrade to 3.0.2
        Update documentation for Python packaging changes
        python3-packaging: remove duplicate python3-setuptools-native DEPENDS
        classes/flit_core: use python_pep517_do_compile
        classes/python_pep517: implement a standard do_compile
        classes/python_poetry_core: use python_pep517_do_compile
        classes/python_pep517: add more comments
        classes/setuptools_build_meta: use python_pep517_do_compile
        classes/flit_core: rename to python_flit_core
        classes/python_pep517: consolidate stub do_configure
        lttng-modules: remove redundant devupstream assignments
        python3-cryptography: enforce identical version for -cryptography-vectors
        python3-cryptography-vectors: upgrade to 36.0.2
        classes/setuptools_build_meta: rename to python_setuptools_build_meta
        bitbake: bitbake: knotty: display active tasks when printing keepAlive() message
        bitbake: bitbake: knotty: reduce keep-alive timeout from 5000s (83 minutes) to 10 minutes
        tiff: backport CVE fixes:
        python3: ignore CVE-2022-26488
        oeqa/runtime/context: remove duplicate sys.path entries when looking for modules
        grub: ignore CVE-2021-46705
        qemu: backport fixes for CVE-2022-26353 and CVE-2022-26354
        zlib: backport the fix for CVE-2018-25032

  Sakib Sajal (1):
        perl: generate alternative link for streamzip

  Samuli Piippo (2):
        mesa: make sure GLES3 headers are installed
        binutils-cross-canadian: enable gold for mingw

  Saul Wold (4):
        base/license: Rework INCOMPATIBLE_LICENSE variable handling
        convert-variable-renames: Fix output string
        meta/scripts: Improve internal variable naming
        documentation: Update for skip_recipe rename

  Stefan Herbrechtsmeier (4):
        systemd: move systemd shared library into its own package
        classes: rootfs-postcommands: include /etc/fstab in overlayfs_qa_check
        oeqa: selftest: overlayfs: add test for image with fstab entry
        zstd: add libzstd package

  Tean Cunningham (1):
        rootfs-postcommands: amend systemd_create_users add user to group check

  Tim Orling (44):
        flit_core: inherit setuptools3-base
        flit_core: export do_configure and do_compile
        python3-tomli: inherit flit_core
        python3-flit-core: upgrade 3.6.0 to 3.7.1
        docs: update setuptools3 class
        docs: ref-manual: drop distutils from variables
        docs: ref-manual: remove distutils* from classes
        docs: migration-3.5: distutils move
        docs: migration-2.6 drop distutils labels, terms
        docs: migration-3.3 drop distutils labels, terms
        docs: add new python packaging classes
        docs: add pip install variables
        python3-jsonschema: upgrade 3.2.0 -> 4.4.0
        python3-importlib-metadata: upgrade 4.10.1 -> 4.11.2
        bitbake: toaster-requirements.txt: Django 3.2 LTS
        bitbake: toaster: Update docs links in templates
        bitbake: toaster: orm/models -- drop django.utils.six
        bitbake: toaster: set DEFAULT_AUTO_FIELD
        bitbake: toaster: migratation for models.BigAutoField
        bitbake: bitbake: buildinfohelper.py fix for Django 3.2
        bitbake: toaster: drop landing_not_managed template
        python3-setuptools-rust-native: from meta-python
        pyo3.bbclass: move from meta-python
        setuptools3_rust.bbclass: move from meta-python
        python3-cryptography: move from meta-python
        python3-pytest-subtests: move from meta-python
        python3-cryptography-vectors: from meta-python
        python3-asn1crypto: move from meta-python
        python3-cffi: move from meta-python
        python3-pytz: move from meta-python
        python3-bcrypt: move from meta-python
        python3-pretend: move from meta-python
        python3-psutil: move from meta-python
        poetry_core.bbclass: move from meta-python
        python3-poetry-core: move from meta-python
        python3-iso8601: move from meta-python
        python3-typing-extensions: move from meta-python
        python3-semantic-version: move from meta-python
        python3-pycparser: move from meta-python
        python3-ply: move from meta-python
        maintainers.inc: add python3-crypto and friends
        ptest-packagelists.inc: add python3-cryptography
        ptest-packagelists: add python3-bcrypt and -pytz
        python3-pytest: upgrade 7.0.1 -> 7.1.1

  Tony McDowell (1):
        dev-manual: add instructions for compacting WSLv2 VHDX files

  Trevor Gamblin (3):
        iptables: do not install /etc/ethertypes
        iptables: use nft backend with libnftnl PACKAGECONFIG
        python3: upgrade 3.10.2 -> 3.10.3

  Zoltán Böszörményi (1):
        mesa: Allow building Mesa's OpenCL through PACKAGECONFIG

  leimaohui (1):
        bitbake: monitordisk.py: Deleted redundant word in warning message.

  wangmy (72):
        python3-git: upgrade 3.1.26 -> 3.1.27
        ell: upgrade 0.48 -> 0.49
        libgit2: upgrade 1.4.1 -> 1.4.2
        nghttp2: upgrade 1.46.0 -> 1.47.0
        python3-dbusmock: upgrade 0.25.0 -> 0.26.1
        python3-hypothesis: upgrade 6.37.2 -> 6.39.0
        at: upgrade 3.2.4 -> 3.2.5
        dbus: upgrade 1.12.20 -> 1.12.22
        ccache: upgrade 4.5.1 -> 4.6
        libjpeg-turbo: upgrade 2.1.2 -> 2.1.3
        libsolv: upgrade 0.7.20 -> 0.7.21
        libva: upgrade 2.13.0 -> 2.14.0
        mesa: upgrade 21.3.6 -> 21.3.7
        ovmf: upgrade 202111 -> 202202
        wget: upgrade 1.21.2 -> 1.21.3
        sqlite3: upgrade 3.37.2 -> 3.38.0
        sysstat: upgrade 12.4.4 -> 12.4.5
        btrfs-tools: upgrade 5.16 -> 5.16.2
        python3-hypothesis: upgrade 6.39.0 -> 6.39.2
        cmake: upgrade 3.22.2 -> 3.22.3
        asciidoc: upgrade 10.1.3 -> 10.1.4
        go: upgrade 1.17.7 -> 1.17.8
        gpgme: upgrade 1.17.0 -> 1.17.1
        python3-pycairo: upgrade 1.20.1 -> 1.21.0
        stress-ng: upgrade 0.13.11 -> 0.13.12
        sudo: upgrade 1.9.9 -> 1.9.10
        createrepo-c: upgrade 0.18.0 -> 0.19.0
        dnf: upgrade 4.10.0 -> 4.11.1
        harfbuzz: upgrade 4.0.0 -> 4.0.1
        libdnf: upgrade 0.65.0 -> 0.66.0
        librsvg: upgrade 2.52.6 -> 2.52.7
        linux-firmware: upgrade 20220209 -> 20220310
        python3-importlib-metadata: upgrade 4.11.2 -> 4.11.3
        lttng-modules: upgrade 2.13.1 -> 2.13.2
        python3-numpy: upgrade 1.22.2 -> 1.22.3
        libcgroup: upgrade 2.0 -> 2.0.1
        libuv: upgrade 1.43.0 -> 1.44.1
        dpkg: upgrade 1.21.1 -> 1.21.2
        gobject-introspection: upgrade 1.70.0 -> 1.72.0
        libdazzle: upgrade 3.42.0 -> 3.44.0
        libsolv: upgrade 0.7.21 -> 0.7.22
        man-db: upgrade 2.10.1 -> 2.10.2
        python3-markupsafe: upgrade 2.1.0 -> 2.1.1
        vala: upgrade 0.54.7 -> 0.56.0
        adwaita-icon-theme: upgrade 41.0 -> 42.0
        bluez5: upgrade 5.63 -> 5.64
        gnutls: upgrade 3.7.3 -> 3.7.4
        gsettings-desktop-schemas: upgrade 41.0 -> 42.0
        rng-tools: enable macro JENT_CONF_ENABLE_INTERNAL_TIMER
        libjitterentropy: upgrade 3.3.1 -> 3.4.0
        apt: upgrade 2.4.0 -> 2.4.3
        atk: upgrade 2.36.0 -> 2.38.0
        cronie: upgrade 1.5.7 -> 1.6.0
        diffoscope: upgrade 207 -> 208
        dpkg: upgrade 1.21.2 -> 1.21.4
        glib-networking: upgrade 2.70.1 -> 2.72.0
        iproute2: upgrade 5.16.0 -> 5.17.0
        libevdev: upgrade 1.12.0 -> 1.12.1
        libsoup: upgrade 3.0.4 -> 3.0.5
        lttng-modules: upgrade 2.13.2 -> 2.13.3
        lttng-ust: upgrade 2.13.1 -> 2.13.2
        msmtp: upgrade 1.8.19 -> 1.8.20
        sqlite3: upgrade 3.38.1 -> 3.38.2
        python3-asn1crypto: upgrade 1.4.0 -> 1.5.1
        python3-dbusmock: upgrade 0.26.1 -> 0.27.3
        python3-hypothesis: upgrade 6.39.2 -> 6.39.5
        python3-imagesize: upgrade 1.2.0 -> 1.3.0
        python3-jinja2: upgrade 3.0.3 -> 3.1.1
        python3-pytest-runner: upgrade 5.3.1 -> 6.0.0
        python3-pytest-subtests: upgrade 0.6.0 -> 0.7.0
        python3-pytz: upgrade 2021.3 -> 2022.1
        python3-urllib3: upgrade 1.26.8 -> 1.26.9

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: Ib4c513b74dbc38e31b3792d8323e877294f959d9
diff --git a/meta-openembedded/contrib/pw-am.sh b/meta-openembedded/contrib/pw-am.sh
index 8987eee..d9d1187 100755
--- a/meta-openembedded/contrib/pw-am.sh
+++ b/meta-openembedded/contrib/pw-am.sh
@@ -9,7 +9,7 @@
 
 for patchnumber in $@;
 do
-	wget -nv http://patches.openembedded.org/patch/$patchnumber/mbox/ -O pw-am-$patchnumber.patch
+	wget -nv http://patchwork.yoctoproject.org/patch/$patchnumber/mbox/ -O pw-am-$patchnumber.patch
 	git am -s pw-am-$patchnumber.patch
 	rm pw-am-$patchnumber.patch
 done
diff --git a/meta-openembedded/meta-filesystems/conf/layer.conf b/meta-openembedded/meta-filesystems/conf/layer.conf
index b5f59d9..75a27d6 100644
--- a/meta-openembedded/meta-filesystems/conf/layer.conf
+++ b/meta-openembedded/meta-filesystems/conf/layer.conf
@@ -7,7 +7,7 @@
 
 BBFILE_COLLECTIONS += "filesystems-layer"
 BBFILE_PATTERN_filesystems-layer = "^${LAYERDIR}/"
-BBFILE_PRIORITY_filesystems-layer = "6"
+BBFILE_PRIORITY_filesystems-layer = "5"
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/fuse-exfat/fuse-exfat_1.3.0.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/fuse-exfat/fuse-exfat_1.3.0.bb
index 2586b79..ac18fe9 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/fuse-exfat/fuse-exfat_1.3.0.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/fuse-exfat/fuse-exfat_1.3.0.bb
@@ -5,7 +5,7 @@
 "
 HOMEPAGE = "https://github.com/relan/exfat"
 SECTION = "universe/otherosfs"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 SRC_URI = "https://github.com/relan/exfat/releases/download/v${PV}/${BP}.tar.gz"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/httpfs2-fuse/httpfs2_0.1.5.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/httpfs2-fuse/httpfs2_0.1.5.bb
index 0895ce5..0086551 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/httpfs2-fuse/httpfs2_0.1.5.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/httpfs2-fuse/httpfs2_0.1.5.bb
@@ -1,6 +1,6 @@
 SUMMARY = "This is a filesystem client based on the HTTP using FUSE"
 HOMEPAGE = "http://httpfs.sourceforge.net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=83f224c5182f148ec92e0b9f84b3c6c7"
 
 inherit pkgconfig
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/ifuse/ifuse_1.1.4.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/ifuse/ifuse_1.1.4.bb
index 8a317cd..c9702eb 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/ifuse/ifuse_1.1.4.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/ifuse/ifuse_1.1.4.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A fuse filesystem to access the contents of an iPhone or iPod Touch"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6ab17b41640564434dda85c06b7124f7"
 HOMEPAGE ="http://www.libimobiledevice.org/"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/logfsprogs/logfsprogs_git.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/logfsprogs/logfsprogs_git.bb
index e4a0f95..7d0a836 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/logfsprogs/logfsprogs_git.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/logfsprogs/logfsprogs_git.bb
@@ -7,7 +7,7 @@
 version 2.6.34, released on May 16, 2010."
 HOMEPAGE = "https://github.com/prasad-joshi/logfsprogs"
 SECTION = "base"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://fsck.c;md5=3859dc73da97909ff1d0125e88a27e02"
 DEPENDS = "zlib"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2021.8.22.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2021.8.22.bb
index 1ebbb41..aa1b4c2 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2021.8.22.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2021.8.22.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.ntfs-3g.org/"
 DEPENDS = "fuse libgcrypt"
 PROVIDES = "ntfsprogs ntfs-3g"
-LICENSE = "GPLv2 & LGPLv2"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
                     file://COPYING.LIB;md5=f30a9716ef3762e3467a2f62bf790f0a"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs_3.2p3.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs_3.2p3.bb
index c4bb94e..b641e4c 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs_3.2p3.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/owfs/owfs_3.2p3.bb
@@ -3,7 +3,7 @@
 HOMEPAGE = "http://www.owfs.org/"
 SECTION = "console/network"
 
-LICENSE = "GPLv2 & LGPLv2"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=628b867016631792781a8735a04760e5 \
                     file://COPYING.LIB;md5=9021b7435efdd9fb22beef8291134099"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/simple-mtpfs/simple-mtpfs_0.4.0.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/simple-mtpfs/simple-mtpfs_0.4.0.bb
index 2335771..b839926 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/simple-mtpfs/simple-mtpfs_0.4.0.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/simple-mtpfs/simple-mtpfs_0.4.0.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "SIMPLE-MTPFS is a FUSE based filsystem for MTP devices connected via USB"
 HOMEPAGE = "https://github.com/phatina/simple-mtpfs"
 BUGTRACKER = "19e7bb9b608b0c0dce2ee6f56fac75901bc69529"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
 
 DEPENDS = "fuse libmtp autoconf-archive"
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch b/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch
index f22b389..31892d2 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs/configure.patch
@@ -1,7 +1,7 @@
 --- a/configure.ac
 +++ b/configure.ac
 @@ -1,5 +1,5 @@
- AC_INIT([SMBNetFS],[0.6.2])
+ AC_INIT([SMBNetFS],[0.6.3])
 -AM_INIT_AUTOMAKE
 +AM_INIT_AUTOMAKE([foreign])
  AC_CONFIG_HEADERS([src/config.h])
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb
index e84bdc9..2d9eab1 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/smbnetfs/smbnetfs_git.bb
@@ -4,7 +4,7 @@
                neighborhood in Microsoft Windows. Please donate me to help \
                in SMBNetFS development."
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
 HOMEPAGE ="http://sourceforge.net/projects/smbnetfs"
 
@@ -16,9 +16,9 @@
 # samba depends on libpam
 REQUIRED_DISTRO_FEATURES = "pam"
 
-PV = "0.6.1+git${SRCPV}"
+PV = "0.6.3"
 
-SRCREV = "a117eec8de7ed7249871da73dcc350283ce72069"
+SRCREV = "736d5e599df3bebce3450125118ac2e70358b0c9"
 
 SRC_URI = "git://smbnetfs.git.sourceforge.net/gitroot/smbnetfs/smbnetfs;branch=master \
            file://configure.patch \
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_3.7.2.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_3.7.2.bb
index 8eeca84..b839c26 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_3.7.2.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/sshfs-fuse/sshfs-fuse_3.7.2.bb
@@ -2,7 +2,7 @@
 AUTHOR = "Miklos Szeredi <miklos@szeredi.hu>"
 HOMEPAGE = "https://github.com/libfuse/sshfs"
 SECTION = "console/network"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 DEPENDS = "glib-2.0 fuse3"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb
index 0e61c9c..6bf321e 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb
@@ -4,7 +4,7 @@
 SECTION = "base"
 HOMEPAGE = "http://www.yaffs.net"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://utils/mkyaffs2image.c;beginline=11;endline=13;md5=5f5464f9b3e981ca574e65b00e438561 \
                     file://utils/mkyaffsimage.c;beginline=10;endline=12;md5=5f5464f9b3e981ca574e65b00e438561 \
                     "
diff --git a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.5.bb b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.5.bb
index 6af9fc9..e0cf209 100644
--- a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.5.bb
+++ b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse3_3.10.5.bb
@@ -6,7 +6,7 @@
               "
 HOMEPAGE = "https://github.com/libfuse/libfuse"
 SECTION = "libs"
-LICENSE = "GPLv2 & LGPLv2"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://GPL2.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://LGPL2.txt;md5=4fbd65380cdd255951079008b364516c \
                     file://LICENSE;md5=a55c12a2d7d742ecb41ca9ae0a6ddc66"
diff --git a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse_2.9.9.bb b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse_2.9.9.bb
index d7a6923..cee4879 100644
--- a/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse_2.9.9.bb
+++ b/meta-openembedded/meta-filesystems/recipes-support/fuse/fuse_2.9.9.bb
@@ -6,7 +6,7 @@
               "
 HOMEPAGE = "https://github.com/libfuse/libfuse"
 SECTION = "libs"
-LICENSE = "GPLv2 & LGPLv2"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb b/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
index d06aed7..f565be3 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/aufs-util/aufs-util_git.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Tools for managing AUFS mounts"
 SECTION = "base"
 HOMEPAGE = "http://aufs.sourceforge.net/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
 
 DEPENDS = "coreutils-native aufs-util-native"
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/exfat-utils/exfat-utils_1.3.0.bb b/meta-openembedded/meta-filesystems/recipes-utils/exfat-utils/exfat-utils_1.3.0.bb
index 7f804a7..abb8fec 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/exfat-utils/exfat-utils_1.3.0.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/exfat-utils/exfat-utils_1.3.0.bb
@@ -9,7 +9,7 @@
 "
 HOMEPAGE = "https://github.com/relan/exfat"
 SECTION = "universe/otherosfs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "https://github.com/relan/exfat/releases/download/v${PV}/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/f2fs-tools/f2fs-tools_1.14.0.bb b/meta-openembedded/meta-filesystems/recipes-utils/f2fs-tools/f2fs-tools_1.14.0.bb
index 14af721..fb71b18 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/f2fs-tools/f2fs-tools_1.14.0.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/f2fs-tools/f2fs-tools_1.14.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Tools for Flash-Friendly File System (F2FS)"
 HOMEPAGE = "https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=362b4b2594cd362b874a97718faa51d3"
 
 # to provide libuuid
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
index 2517e9d..1ca8bb3 100644
--- 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
@@ -1,6 +1,6 @@
 SUMMARY = "Resize FAT partitions using libparted"
 SECTION = "console/tools"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "git://salsa.debian.org/parted-team/fatresize.git;protocol=https;branch=master \
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/udevil/udevil_0.4.4.bb b/meta-openembedded/meta-filesystems/recipes-utils/udevil/udevil_0.4.4.bb
index 3591a4f..20d6036 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/udevil/udevil_0.4.4.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/udevil/udevil_0.4.4.bb
@@ -8,7 +8,7 @@
 "
 RDEPENDS:${PN} = "udev bash"
 
-LICENSE = "GPL-3.0"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 inherit autotools pkgconfig systemd
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils/ufs-utils_1.9.bb b/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils/ufs-utils_1.9.bb
index 11cbb2d..f6aa872 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils/ufs-utils_1.9.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils/ufs-utils_1.9.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Tool to access UFS (Universal Flash Storage) devices"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 BRANCH ?= "dev"
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.10.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.10.bb
index 3b80fb5..fdaebbe 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.10.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.10.bb
@@ -6,7 +6,7 @@
                specified disk, tape or other storage medium."
 HOMEPAGE = "http://oss.sgi.com/projects/xfs"
 SECTION = "base"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://doc/COPYING;md5=15c832894d10ddd00dfcf57bee490ecc"
 DEPENDS = "xfsprogs attr"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.13.0.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.13.0.bb
index df5f764..fae7a93 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.13.0.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.13.0.bb
@@ -1,8 +1,8 @@
 SUMMARY = "XFS Filesystem Utilities"
 HOMEPAGE = "http://oss.sgi.com/projects/xfs"
 SECTION = "base"
-LICENSE = "GPLv2 & LGPLv2.1"
-LICENSE:libhandle = "LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
+LICENSE:libhandle = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSES/GPL-2.0;md5=e6a75371ba4d16749254a51215d13f97 \
                     file://LICENSES/LGPL-2.1;md5=b370887980db5dd40659b50909238dbd"
 DEPENDS = "util-linux util-linux-native"
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xorriso/xorriso_1.5.5.bb b/meta-openembedded/meta-filesystems/recipes-utils/xorriso/xorriso_1.5.5.bb
index cf00922..a83950d 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/xorriso/xorriso_1.5.5.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xorriso/xorriso_1.5.5.bb
@@ -2,7 +2,7 @@
 into Rock Ridge enhanced ISO 9660 filesystems and allows session-wise \
 manipulation of such filesystems"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "http://www.gnu.org/software/${BPN}/${BPN}-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-gnome/conf/layer.conf b/meta-openembedded/meta-gnome/conf/layer.conf
index 3f6b4f7..2fb3485 100644
--- a/meta-openembedded/meta-gnome/conf/layer.conf
+++ b/meta-openembedded/meta-gnome/conf/layer.conf
@@ -6,7 +6,7 @@
 
 BBFILE_COLLECTIONS += "gnome-layer"
 BBFILE_PATTERN_gnome-layer := "^${LAYERDIR}/"
-BBFILE_PRIORITY_gnome-layer = "7"
+BBFILE_PRIORITY_gnome-layer = "5"
 
 # auto-pack gnome help files
 IMAGE_LINGUAS_COMPLEMENTARY:append = " ${@bb.utils.contains('DISTRO_FEATURES','helpfiles','*-help-%s','',d)}"
diff --git a/meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.4.bb b/meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.5.bb
similarity index 88%
rename from meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.4.bb
rename to meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.5.bb
index c3c30ca..51620bb 100644
--- a/meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.4.bb
+++ b/meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.5.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Folks is a contact aggregation library."
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 DEPENDS = " \
@@ -25,4 +25,4 @@
 
 inherit pkgconfig gnomebase gettext gobject-introspection vala features_check
 
-SRC_URI[archive.sha256sum] = "e71099afc9e88fad4e757ae134bc3fd63e12b901ad62b0ed5536afb79124af5f"
+SRC_URI[archive.sha256sum] = "0fff8a896330cd82aee4598324f7e541c884d0337536212723b4beb38c759086"
diff --git a/meta-openembedded/meta-gnome/recipes-connectivity/geary/geary/0001-Util.Cache.Lru-Workaround-missing-generic-type-argum.patch b/meta-openembedded/meta-gnome/recipes-connectivity/geary/geary/0001-Util.Cache.Lru-Workaround-missing-generic-type-argum.patch
new file mode 100644
index 0000000..22af4f5
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-connectivity/geary/geary/0001-Util.Cache.Lru-Workaround-missing-generic-type-argum.patch
@@ -0,0 +1,27 @@
+From 166198735e9f4fbe91557df1351b3481bcf79e78 Mon Sep 17 00:00:00 2001
+From: Rico Tzschichholz <ricotz@ubuntu.com>
+Date: Sun, 30 Jan 2022 19:54:11 +0100
+Subject: [PATCH 1/2] Util.Cache.Lru: Workaround missing generic type argument
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/geary/-/commit/0f75e7a84a39492d0748cec2ba6028e08cae3644]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/client/util/util-cache.vala | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/client/util/util-cache.vala b/src/client/util/util-cache.vala
+index f054e32e..ecc275e8 100644
+--- a/src/client/util/util-cache.vala
++++ b/src/client/util/util-cache.vala
+@@ -12,7 +12,7 @@ public class Util.Cache.Lru<T> : Geary.BaseObject {
+     private class CacheEntry<T> {
+ 
+ 
+-        public static int lru_compare(CacheEntry<T> a, CacheEntry<T> b) {
++        public static int lru_compare(CacheEntry a, CacheEntry b) {
+             if (a.key == b.key) {
+                 return 0;
+             }
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-connectivity/geary/geary/0002-Fix-accessibility-issues-with-initializer-of-constan.patch b/meta-openembedded/meta-gnome/recipes-connectivity/geary/geary/0002-Fix-accessibility-issues-with-initializer-of-constan.patch
new file mode 100644
index 0000000..76315f3
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-connectivity/geary/geary/0002-Fix-accessibility-issues-with-initializer-of-constan.patch
@@ -0,0 +1,42 @@
+From 64b56e75a54a9fa3f37c7686be97a5c8818413a4 Mon Sep 17 00:00:00 2001
+From: Rico Tzschichholz <ricotz@ubuntu.com>
+Date: Tue, 30 Nov 2021 15:31:31 +0100
+Subject: [PATCH 2/2] Fix accessibility issues with initializer of constants
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/geary/-/commit/9bd4c82952a0a2c3308c5cc86c0b85650c1fb484]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/client/application/application-client.vala | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/src/client/application/application-client.vala b/src/client/application/application-client.vala
+index 6ce19ce2..e6ba8533 100644
+--- a/src/client/application/application-client.vala
++++ b/src/client/application/application-client.vala
+@@ -8,16 +8,16 @@
+ 
+ // Defined by CMake build script.
+ extern const string GETTEXT_PACKAGE;
+-extern const string _APP_ID;
+-extern const string _BUILD_ROOT_DIR;
+-extern const string _GSETTINGS_DIR;
+-extern const string _INSTALL_PREFIX;
+-extern const string _NAME_SUFFIX;
++public extern const string _APP_ID;
++public extern const string _BUILD_ROOT_DIR;
++public extern const string _GSETTINGS_DIR;
++public extern const string _INSTALL_PREFIX;
++public extern const string _NAME_SUFFIX;
+ extern const string _PLUGINS_DIR;
+ extern const string _PROFILE;
+ extern const string _REVNO;
+-extern const string _SOURCE_ROOT_DIR;
+-extern const string _VERSION;
++public extern const string _SOURCE_ROOT_DIR;
++public extern const string _VERSION;
+ extern const string _WEB_EXTENSIONS_DIR;
+ 
+ 
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-connectivity/geary/geary_40.0.bb b/meta-openembedded/meta-gnome/recipes-connectivity/geary/geary_40.0.bb
index b3b4311..501b27a 100644
--- a/meta-openembedded/meta-gnome/recipes-connectivity/geary/geary_40.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-connectivity/geary/geary_40.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Geary is an email application built around conversations, for the GNOME 3 desktop."
 SECTION = "network"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2a2244d5a13871ad950c55877546a6a2"
 
 DEPENDS = " \
@@ -30,16 +30,19 @@
 
 RDEPENDS:${PN} = "gnome-keyring"
 
-inherit meson pkgconfig mime-xdg gtk-icon-cache gobject-introspection vala
+inherit meson pkgconfig mime-xdg gtk-icon-cache gobject-introspection vala features_check
 
 SRC_URI = " \
 	git://github.com/GNOME/geary.git;nobranch=1;protocol=https \
+        file://0001-Util.Cache.Lru-Workaround-missing-generic-type-argum.patch \
+        file://0002-Fix-accessibility-issues-with-initializer-of-constan.patch \
 "
 
 S = "${WORKDIR}/git"
 SRCREV = "e561775c1580a9f60a726355b2b897bfc9cb3382"
 
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+# for gnome-online-accounts
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data x11"
 
 GIR_MESON_OPTION = ""
 EXTRA_OEMESON = "-Dprofile=release"
diff --git a/meta-openembedded/meta-gnome/recipes-connectivity/libnma/libnma_1.8.34.bb b/meta-openembedded/meta-gnome/recipes-connectivity/libnma/libnma_1.8.34.bb
index 311492e..ea852ce 100644
--- a/meta-openembedded/meta-gnome/recipes-connectivity/libnma/libnma_1.8.34.bb
+++ b/meta-openembedded/meta-gnome/recipes-connectivity/libnma/libnma_1.8.34.bb
@@ -1,5 +1,5 @@
 SUMMARY = "NetworkManager GUI library"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "glib-2.0 gtk+3 networkmanager"
diff --git a/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.24.0.bb b/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.24.0.bb
index c181d39..c0667b5 100644
--- a/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.24.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.24.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GTK+ applet for NetworkManager"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "gtk+3 libnma libnotify libsecret libgudev networkmanager iso-codes nss"
diff --git a/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_1.3.1.bb b/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_1.3.1.bb
index 355bcce..d1a9759 100644
--- a/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_1.3.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_1.3.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A partition editor to graphically manage disk partitions "
 HOMEPAGE = "http://gparted.org/index.php"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 inherit features_check autotools pkgconfig python3native gnome-help gtk-icon-cache
diff --git a/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.88.bb b/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.92.bb
similarity index 83%
rename from meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.88.bb
rename to meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.92.bb
index 8a09fdf..156c91b 100644
--- a/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.88.bb
+++ b/meta-openembedded/meta-gnome/recipes-gimp/babl/babl_0.1.92.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Babl is a dynamic, any to any, pixel format conversion library"
-LICENSE = "LGPL-3.0"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6a6a8e020838b23406c81b19c1d46df6"
 
 GNOMEBASEBUILDCLASS = "meson"
@@ -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] = "4f0d7f4aaa0bb2e725f349adf7b351a957d9fb26d555d9895a7af816b4167039"
+SRC_URI[sha256sum] = "f667735028944b6375ad18f160a64ceb93f5c7dccaa9d8751de359777488a2c1"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.34.bb b/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.36.bb
similarity index 94%
rename from meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.34.bb
rename to meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.36.bb
index 2f8928d..a6e5fa0 100644
--- a/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.34.bb
+++ b/meta-openembedded/meta-gnome/recipes-gimp/gegl/gegl_0.4.36.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GEGL (Generic Graphics Library) is a graph based image processing framework"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f1a8bfcbc85304df454b65d378b299c7"
 
 DEPENDS = " \
@@ -22,7 +22,7 @@
 SHPV = "${@gnome_verdir("${PV}")}"
 
 SRC_URI = "https://download.gimp.org/pub/${BPN}/${SHPV}/${BP}.tar.xz"
-SRC_URI[sha256sum] = "ef63f0bca5b431c6119addd834ca7fbb507c900c4861c57b3667b6f4ccfcaaaa"
+SRC_URI[sha256sum] = "6fd58a0cdcc7702258adaeffb573a389228ae8f0eff47578efda2309b61b2ca6"
 
 PACKAGECONFIG ??= "gexiv2 jpeg libpng libraw librsvg pango poppler sdl2"
 PACKAGECONFIG:class-native = "libpng librsvg"
diff --git a/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.30.bb b/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.30.bb
index 5081583..1155e0e 100644
--- a/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.30.bb
+++ b/meta-openembedded/meta-gnome/recipes-gimp/gimp/gimp_2.10.30.bb
@@ -1,7 +1,7 @@
 SUMMARY = "The GIMP is the GNU Image Manipulation Program"
 HOMEPAGE = "http://www.gimp.org"
 SECTION = "x11/graphics"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c678957b0c8e964aa6c70fd77641a71e"
 
 DEPENDS = " \
@@ -55,6 +55,7 @@
 EXTRA_OECONF:append:toolchain-clang:riscv32 = " --disable-vector-icons"
 EXTRA_OECONF:append:toolchain-clang:mips = " --disable-vector-icons"
 EXTRA_OECONF:append:toolchain-clang:x86 = " --disable-vector-icons"
+EXTRA_OECONF:append:powerpc = " --disable-vector-icons"
 
 do_configure:append() {
     find ${B} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/amtk/amtk_5.3.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/amtk/amtk_5.3.1.bb
index d4d91ed..f6d8739 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/amtk/amtk_5.3.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/amtk/amtk_5.3.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Actions, Menus and Toolbars Kit"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf-editor_3.38.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf-editor_3.38.3.bb
index 55b2913..ef26caa 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf-editor_3.38.3.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf-editor_3.38.3.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Configuration editor for dconf"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.40.0.bb
index 5613556..6641be8 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.40.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/dconf/dconf_0.40.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "configuation database system"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 SECTION = "x11/gnome"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.44.bb b/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.44.bb
index 8e04817..01900cc 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.44.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/devilspie/devilspie2_0.44.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Devilspie2 is a window matching utility, allowing the user to perform scripted actions on windows as they are created"
 HOMEPAGE = "http://www.gusnan.se/devilspie2"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=00aefaa50aad75c21367df66102d542c \
                     file://GPL3.txt;md5=d32239bcb673463ab874e80d47fae504"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_41.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_41.4.bb
similarity index 91%
rename from meta-openembedded/meta-gnome/recipes-gnome/evince/evince_41.3.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/evince/evince_41.4.bb
index ec3dca2..6b3479c 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_41.3.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_41.4.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Evince is a document viewer for document formats like pdf, ps, djvu"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=96f2f8d5ee576a2163977938ea36fa7b"
 SECTION = "x11/office"
 DEPENDS = " \
@@ -25,7 +25,7 @@
     return oe.utils.trim_version(v, 1)
 
 SRC_URI += " file://0001-Remove-incorrect-args-for-i18n.merge_file.patch"
-SRC_URI[archive.sha256sum] = "3346b01f9bdc8f2d5ffea92f110a090c64a3624942b5b543aad4592a9de33bb0"
+SRC_URI[archive.sha256sum] = "ff245240f230922bec32a4d7b0a1d91b247a83d13484f99b74035d51eb232130"
 
 GTKDOC_MESON_OPTION = "gtk_doc"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
index 59856f3..f6b7193 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
@@ -11,6 +11,7 @@
 REQUIRED_DISTRO_FEATURES = "x11"
 
 SRC_URI += " \
+    file://0001-cmake-Do-not-export-CC-into-gir-compiler.patch \
     file://0001-CMakeLists.txt-Remove-TRY_RUN-for-iconv.patch \
     file://0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch \
     file://0003-contact-Replace-the-Novell-sample-contact-with-somet.patch \
@@ -25,7 +26,7 @@
 EXTRA_OECMAKE = " \
     -DSYSCONF_INSTALL_DIR=${sysconfdir} \
     -DWITH_KRB5=OFF \
-    -DENABLE_UOA=OFF \
+    -DENABLE_GOA=OFF \
     -DENABLE_GOOGLE_AUTH=OFF \
     -DENABLE_WEATHER=OFF \
     -DVAPIGEN=${STAGING_BINDIR_NATIVE}/vapigen \
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 96367aa..bcbe20d 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
@@ -2,12 +2,12 @@
 HOMEPAGE = "http://www.gnome.org/projects/evolution/"
 BUGTRACKER = "https://bugzilla.gnome.org/"
 
-LICENSE = "LGPLv2 & LGPLv2+"
+LICENSE = "LGPL-2.0-only & LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6a6e689d19255cf0557f3fe7d7068212 \
                     file://src/camel/camel.h;endline=24;md5=342fc5e9357254bc30c24e43ae47d9a1 \
                     file://src/libedataserver/e-data-server-util.h;endline=20;md5=8f21a9c80ea82a4fb80b5f959f672543"
 
 inherit gnomebase upstream-version-is-even
 
-SRC_URI[archive.sha256sum] = "6f5847a1234799073e9585db861c21381a09ed550dc0a2125f00ba5f90bd361d"
-PV = "3.42.3"
+SRC_URI[archive.sha256sum] = "8c437af75edbef196034f7913f505c3f68acc18515a6eed20f3ef52452785898"
+PV = "3.43.1"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0001-cmake-Do-not-export-CC-into-gir-compiler.patch b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0001-cmake-Do-not-export-CC-into-gir-compiler.patch
new file mode 100644
index 0000000..8fd077c
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server/0001-cmake-Do-not-export-CC-into-gir-compiler.patch
@@ -0,0 +1,13 @@
+--- a/cmake/modules/GObjectIntrospection.cmake	2022-03-06 18:10:47.724184883 +0100
++++ b/cmake/modules/GObjectIntrospection.cmake	2022-03-06 18:10:12.560450948 +0100
+@@ -122,9 +122,7 @@
+ 		file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${_gir_name}_files "${_gir_files}")
+ 
+ 		add_custom_command(
+-			COMMAND ${CMAKE_COMMAND} -E env "CC='${CMAKE_C_COMPILER}'" LDFLAGS=
+-				${INTROSPECTION_SCANNER_ENV}
+-				${G_IR_SCANNER}
++			COMMAND ${G_IR_SCANNER}
+ 				${INTROSPECTION_SCANNER_ARGS}
+ 				--namespace=${_gir_namespace}
+ 				--nsversion=${_gir_version}
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/faenza-icon-theme/faenza-icon-theme_1.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/faenza-icon-theme/faenza-icon-theme_1.3.bb
index 55fdba5..5ed3375 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/faenza-icon-theme/faenza-icon-theme_1.3.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/faenza-icon-theme/faenza-icon-theme_1.3.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "An icon theme for Gnome"
 SECTION = "x11/wm"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 HOMEPAGE = "http://code.google.com/p/faenza-icon-theme/"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.40.0.bb
index ccc82ae..cce7f21 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.40.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_3.40.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "An archive manager utility for the  GNOME Environment"
-LICENSE="GPLv2"
+LICENSE="GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_41.0.bb
index e31ca13..94ffdc2 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_41.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_41.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME Display Manager"
-LICENSE="GPLv2"
+LICENSE="GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_41.0.bb
index 8c11fb5..adba8ab 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_41.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gedit/gedit_41.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "GNOME editor"
 SECTION = "x11/gnome"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
 
 GNOMEBASEBUILDCLASS = "meson"
@@ -21,12 +21,11 @@
 def gnome_verdir(v):
     return oe.utils.trim_version(v, 1)
 
-REQUIRED_DISTRO_FEATURES = "x11"
-
 SRC_URI[archive.sha256sum] = "7a9b18b158808d1892989165f3706c4f1a282979079ab7458a79d3c24ad4deb5"
 
 # gobject-introspection is mandatory and cannot be configured
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+# x11 is needed for tepl and gtksourceview4
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data x11"
 GIR_MESON_OPTION = ""
 
 GTKDOC_MESON_OPTION = "gtk_doc"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/geocode-glib/geocode-glib_3.26.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/geocode-glib/geocode-glib_3.26.2.bb
index c0f3c27..df401f7 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/geocode-glib/geocode-glib_3.26.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/geocode-glib/geocode-glib_3.26.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A convenience library for the geocoding"
 
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gexiv2/gexiv2_0.14.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gexiv2/gexiv2_0.14.0.bb
index b2fd4b0..afec302 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gexiv2/gexiv2_0.14.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gexiv2/gexiv2_0.14.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A GObject-based Exiv2 wrapper"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=625f055f41728f84a8d7938acc35bdc2"
 
 DEPENDS = "exiv2 python3-pygobject-native"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.4.bb
index 23b3bf6..2b36003 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.4.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.4.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A GObject library for Facebook Graph API"
 SECTION = "x11/gnome"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=5804fe91d3294da4ac47c02b454bbc8a"
 
 DEPENDS = " \
@@ -10,7 +10,10 @@
     gnome-online-accounts \
 "
 
-inherit gnomebase gtk-doc gobject-introspection pkgconfig
+inherit gnomebase gtk-doc gobject-introspection pkgconfig features_check
+
+# for gnome-online-accounts
+REQUIRED_DISTRO_FEATURES = "x11"
 
 SRC_URI += " file://0001-Update-rest-requirement-to-rest-1.0.patch"
 SRC_URI[archive.md5sum] = "c38af63e49f8fe8baad99537956b69ba"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/ghex/ghex_3.18.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/ghex/ghex_3.18.4.bb
index 438f811..08e5040 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/ghex/ghex_3.18.4.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/ghex/ghex_3.18.4.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GHex - a hex editor for GNOME"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch
index 55af681..0c45e60 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch
@@ -1,4 +1,4 @@
-From 550e98013b0e003c1a6771d8e811375913adf16b Mon Sep 17 00:00:00 2001
+From fa47185d9c8150a0dcb0ea12b92fcf139edbef35 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Wed, 27 Oct 2021 20:18:47 +0200
 Subject: [PATCH] Support cross builds a bit better
@@ -17,10 +17,10 @@
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/meson.build b/meson.build
-index dfcc2c3..192b1b5 100644
+index 136e812..f5b91e0 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -234,6 +234,7 @@ release builds of SpiderMonkey. Try configuring SpiderMonkey with
+@@ -252,6 +252,7 @@ release builds of SpiderMonkey. Try configuring SpiderMonkey with
  --disable-debug.''')
  endif
  
@@ -28,15 +28,15 @@
  # Check if a minimal SpiderMonkey program compiles, links, and runs. If not,
  # it's most likely the case that SpiderMonkey was configured incorrectly, for
  # example by building mozglue as a shared library.
-@@ -254,6 +255,7 @@ could not be compiled, linked, or run. Most likely you should build it with a
- different configuration. Check the recommended configuration:
- https://github.com/spidermonkey-embedders/spidermonkey-embedding-examples/blob/esr78/docs/Building%20SpiderMonkey.md''')
+@@ -282,6 +283,7 @@ elif minimal_program.returncode() != 0
+ failed to execute. Most likely you should build it with a different
+ configuration.''' + recommended_configuration)
  endif
 +endif # not meson.is_cross_build()
  
  have_printf_alternative_int = cc.compiles('''
  #include <stdio.h>
-@@ -662,7 +664,7 @@ endif
+@@ -682,7 +684,7 @@ subdir('installed-tests')
  
  # Note: The test program in test/ needs to be ported
  #       to Windows before we can build it on Windows.
@@ -45,6 +45,3 @@
      subdir('test')
  endif
  
--- 
-2.31.1
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch
index 8777d14..6e7b550 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch
@@ -1,4 +1,4 @@
-From 6a29818204e647d5fad68ed7ca8cac53d301cae6 Mon Sep 17 00:00:00 2001
+From 2b8aa1ea4a4d1836164c934b1ab2556a32cb5af7 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Wed, 27 Oct 2021 20:04:02 +0200
 Subject: [PATCH] meson.build: Do not add dir installed-tests when
@@ -15,10 +15,10 @@
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/meson.build b/meson.build
-index 6878e2e..edbbf79 100644
+index f5b91e0..3110530 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -635,7 +635,9 @@ if not get_option('skip_gtk_tests')
+@@ -680,7 +680,9 @@ if not get_option('skip_gtk_tests')
      have_gtk4 = dependency('gtk4', required: false).found()
  endif
  
@@ -29,6 +29,3 @@
  
  # Note: The test program in test/ needs to be ported
  #       to Windows before we can build it on Windows.
--- 
-2.31.1
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.70.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.72.0.bb
similarity index 88%
rename from meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.70.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.72.0.bb
index 90ea140..9e6fc45 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.70.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.72.0.bb
@@ -4,11 +4,11 @@
 
 GNOMEBASEBUILDCLASS = "meson"
 
-DEPENDS = "mozjs-78 gtk4"
+DEPENDS = "mozjs-91"
 
 inherit gnomebase gsettings gobject-introspection vala gettext features_check upstream-version-is-even pkgconfig
 
-SRC_URI[archive.sha256sum] = "bbdc0eec7cf25fbc534769f6a1fb2c7a18e17b871efdb0ca58e9abf08b28003f"
+SRC_URI[archive.sha256sum] = "3ef0caf716e3920dd61f7748f6d56e476cc0fc18351ad0548e7df1a0ab9bdcad"
 SRC_URI += " \
     file://0001-Support-cross-builds-a-bit-better.patch \
     file://0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch \
@@ -21,6 +21,7 @@
 EXTRA_OEMESON = " \
     -Dinstalled_tests=false \
     -Dskip_dbus_tests=true \
+    -Dskip_gtk_tests=true \
 "
 
 LDFLAGS:append:mipsarch = " -latomic"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.4.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.4.3.bb
index 0015e9f..017d67b 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.4.3.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-autoar/gnome-autoar_0.4.3.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME archive library"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_3.34.5.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_3.34.5.bb
index 8eed262..57fe744 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_3.34.5.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_3.34.5.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME bluetooth manager"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
                     file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
 "
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_41.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_41.1.bb
index f4aba65..607f52a 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_41.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_41.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME calculator"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SECTION = "x11/gnome"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_41.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_41.2.bb
index 4b62a0c..c97bf0b 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_41.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_41.2.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME calendar"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
 
 SECTION = "x11/gnome"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_41.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_41.2.bb
index f2b95ed..1cdc96b 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_41.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_41.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "GNOME Settings"
 DESCRIPTION = "GNOME Settings is GNOME's main interface for configuration of various aspects of your desktop"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_41.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_41.2.bb
index 3085d27..6bf2ab3 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_41.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop_41.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "GNOME library for reading .desktop files"
 SECTION = "x11/gnome"
-LICENSE = "GPLv2 & LGPLv2"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
     file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/0001-build-fix-arguments-of-i18n.merge_file.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/0001-build-fix-arguments-of-i18n.merge_file.patch
deleted file mode 100644
index 2758af5..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility/0001-build-fix-arguments-of-i18n.merge_file.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 629ca0e61bb59303d43d7eac44a47ae866cc78f0 Mon Sep 17 00:00:00 2001
-From: rvalue <i@rvalue.moe>
-Date: Fri, 17 Dec 2021 12:29:30 +0000
-Subject: [PATCH] build: fix arguments of i18n.merge_file
-
-`i18n.merge_file` has been ignoring positional arguments for a time
-and explicitly rejects with error since meson 0.60.0
-
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex@linutronix.de>
----
- data/meson.build | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/data/meson.build b/data/meson.build
-index e38a1d8..38fb520 100644
---- a/data/meson.build
-+++ b/data/meson.build
-@@ -11,7 +11,6 @@ desktops = [
- 
- foreach desktop: desktops
-   i18n.merge_file (
--    desktop,
-     type: 'desktop',
-     input: desktop + '.in',
-     output: desktop,
-@@ -38,7 +37,6 @@ install_data(
- info = 'org.gnome.DiskUtility.appdata.xml'
- 
- i18n.merge_file(
--  info,
-   input: info + '.in',
-   output: info,
-   po_dir: po_dir,
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_42.0.bb
similarity index 79%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_41.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_42.0.bb
index 7e254f5..e972474 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_41.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_42.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME disk utility"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SECTION = "x11/gnome"
@@ -26,8 +26,9 @@
 # As soon as elogind is of interest this needs rework: meson option is combo
 PACKAGECONFIG[systemd] = "-Dlogind=libsystemd,-Dlogind=none,systemd"
 
-SRC_URI += " file://0001-build-fix-arguments-of-i18n.merge_file.patch"
-SRC_URI[archive.sha256sum] = "8743c98fd656062ef862933efe30c5be4c6b322ec02eee154ec70d08ed0895df"
+SRC_URI[archive.sha256sum] = "1b6564454d67426322cb3bfc5a5558653bfc7dfeea2ae0825b1d08629f01090b"
+
+EXTRA_OEMESON = "-Dman=false"
 
 FILES:${PN} += " \
     ${datadir}/metainfo \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.42.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.42.1.bb
index 3f47de6..13a68e3 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.42.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-flashback/gnome-flashback_3.42.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME Flashback (GNOME 2) session"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 inherit gnomebase gsettings gtk-icon-cache gettext upstream-version-is-even features_check
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_41.0.bb
index 9528b66..2e2927f 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_41.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_41.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME font viewer"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SECTION = "x11/gnome"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_40.0.bb
index 5bc5f2e..5aa52d1 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_40.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-keyring/gnome-keyring_40.0.bb
@@ -3,7 +3,7 @@
 BUGTRACKER = "https://bugzilla.gnome.org/"
 SECTION = "x11/gnome"
 
-LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later & LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
     file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus_3.36.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus_3.36.0.bb
index c582298..dbc6e96 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus_3.36.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-menus/gnome-menus_3.36.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "GNOME menus"
 SECTION = "x11/gnome"
-LICENSE = "GPLv2 & LGPLv2"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.43.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.43.1.bb
index 3dca7e3..8dabb9e 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.43.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.43.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME Online Accounts - Single sign-on framework for GNOME"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=34c88b124db5fb2762c1676be7dadd36"
 
 GNOMEBASEBUILDCLASS = "autotools"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_3.42.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_3.42.0.bb
index 9c9add4..2bcf145 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_3.42.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-panel/gnome-panel_3.42.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME flashback panel"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 inherit gnomebase gsettings itstool gnome-help gtk-icon-cache gtk-doc gettext upstream-version-is-even features_check
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos/0001-meson-remove-incorrect-args-for-i18n.merge_file.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos/0001-meson-remove-incorrect-args-for-i18n.merge_file.patch
deleted file mode 100644
index 9fb7a5b..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos/0001-meson-remove-incorrect-args-for-i18n.merge_file.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From a112e8a089851035945b6848849149bb36787906 Mon Sep 17 00:00:00 2001
-From: rvalue <i@rvalue.moe>
-Date: Fri, 21 Jan 2022 12:36:02 +0000
-Subject: [PATCH] meson: remove incorrect args for i18n.merge_file
-
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex@linutronix.de>
----
- data/meson.build | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/data/meson.build b/data/meson.build
-index 6e7192e..94271de 100644
---- a/data/meson.build
-+++ b/data/meson.build
-@@ -3,7 +3,6 @@ subdir('icons')
- appdata = photos_namespace + '.appdata.xml'
- 
- i18n.merge_file(
--  appdata,
-   input: appdata + '.in',
-   output: appdata,
-   po_dir: po_dir,
-@@ -23,7 +22,6 @@ desktop_in = configure_file(
- )
- 
- i18n.merge_file(
--  desktop,
-   type: 'desktop',
-   input: desktop_in,
-   output: desktop,
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_42.0.bb
similarity index 82%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_40.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_42.0.bb
index ae8ab31..5af3088 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_40.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-photos/gnome-photos_42.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Access, organize and share your photos on GNOME"
 SECTION = "x11/gnome"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 DEPENDS = " \
@@ -30,8 +30,7 @@
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI += " file://0001-meson-remove-incorrect-args-for-i18n.merge_file.patch"
-SRC_URI[archive.sha256sum] = "e02d73e138af8b2868b5cad7faa1bdd278aeade3b6c3c92836511a4e6f3af1af"
+SRC_URI[archive.sha256sum] = "25cb281425199dec7b045f13f32f8f96034cb0cb8b94d96f9dffaf4f5be68551"
 
 do_install:append() {
     # make gnome-photos available on all desktops
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_41.0.bb
index 18d73d8..fa7e161 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_41.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-screenshot/gnome-screenshot_41.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "GNOME Screenshot"
 DESCRIPTION = "GNOME Screenshot is a small utility that takes a screenshot \
 of the whole desktop, the currently focused window, or an area of the screen."
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 SECTION = "x11/gnome"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_41.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_41.3.bb
index 010f815..07f3634 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_41.3.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_41.3.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME session"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_41.0.bb
index 78d6811..cbc4c46 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_41.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_41.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Window navigation construction toolkit"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions/0001-meson-Drop-unused-argument-for-i18n.merge_file.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions/0001-meson-Drop-unused-argument-for-i18n.merge_file.patch
new file mode 100644
index 0000000..df8fe0e
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions/0001-meson-Drop-unused-argument-for-i18n.merge_file.patch
@@ -0,0 +1,30 @@
+From cdaa837d48894737ca0b4e7d2dfb365119e53759 Mon Sep 17 00:00:00 2001
+From: Jan Beich <jbeich@FreeBSD.org>
+Date: Tue, 25 Jan 2022 11:49:54 +0000
+Subject: [PATCH] meson: Drop unused argument for i18n.merge_file()
+
+Ignored in Meson < 0.60.0, deprecated since 0.60.1 and fatal since 0.61.0.
+
+data/meson.build:23:0: ERROR: Function does not take positional arguments.
+
+Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/210>
+
+Upstream-Status: Backport[https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/commit/cdaa837d48894737ca0b4e7d2dfb365119e53759]
+---
+ data/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/data/meson.build b/data/meson.build
+index 27f4287..a4bcd5e 100644
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -1,5 +1,5 @@
+ session_desktop = 'gnome-classic.desktop'
+-i18n.merge_file('',
++i18n.merge_file(
+   input:  session_desktop + '.in',
+   output: session_desktop,
+   po_dir: '../po',
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_41.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_41.1.bb
index 16184f2..f51ca9f 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_41.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_41.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME Shell Extensions"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4cb3a392cbf81a9e685ec13b88c4c101"
 
 GNOMEBASEBUILDCLASS = "meson"
@@ -9,6 +9,7 @@
 REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam gobject-introspection-data"
 
 SRC_URI[archive.sha256sum] = "d0e6f2273f08d52d925fc2bb66b47b28e5ef50d1b8a14020877c662423d507d3"
+SRC_URI += "file://0001-meson-Drop-unused-argument-for-i18n.merge_file.patch"
 
 DEPENDS += " \
     sassc-native \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_41.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_41.2.bb
index d1b1989..8d0dba4 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_41.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_41.2.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME Shell is the graphical shell of the GNOME desktop environment"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_42.0.bb
similarity index 85%
rename from meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_41.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_42.0.bb
index 9b573d0..219a069 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_41.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_42.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Gnome system monitor"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 DEPENDS = " \
@@ -22,7 +22,7 @@
 def gnome_verdir(v):
     return oe.utils.trim_version(v, 1)
 
-SRC_URI[archive.sha256sum] = "c7fc44c61949b794b0289968ebbbcc0c15f8cfc3d9e45bfaa81ed45c12139e5f"
+SRC_URI[archive.sha256sum] = "13239d22032201a22bd29833c575b684816700d2de168a1530223577c5c075dc"
 
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
 PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.42.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.42.2.bb
index 2b3f3a6..061da27 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.42.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.42.2.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME terminal"
-LICENSE = "GPLv3 & GFDL-1.3"
+LICENSE = "GPL-3.0-only & GFDL-1.3"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
     file://COPYING.GFDL;md5=a22d0be1ce2284b67950a4d1673dd1b0 \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks/0002-meson-fix-invalid-positional-argument.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks/0002-meson-fix-invalid-positional-argument.patch
new file mode 100644
index 0000000..dfa4615
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks/0002-meson-fix-invalid-positional-argument.patch
@@ -0,0 +1,33 @@
+From dc9701e18775c01d0b69fabaa350147f70096da8 Mon Sep 17 00:00:00 2001
+From: Mae Dartmann <hello@maedartmann.name>
+Date: Wed, 16 Feb 2022 06:08:41 +0000
+Subject: [PATCH] meson: fix invalid positional argument
+
+Upstream-Status: Accepted[https://gitlab.gnome.org/GNOME/gnome-tweaks/-/commit/dc9701e18775c01d0b69fabaa350147f70096da8]
+---
+ data/meson.build | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/data/meson.build b/data/meson.build
+index fd6d5da..74f7e82 100644
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -1,5 +1,5 @@
+ appdata_file = 'org.gnome.tweaks.appdata.xml'
+-i18n.merge_file(appdata_file,
++i18n.merge_file(
+   input: appdata_file + '.in',
+   output: appdata_file,
+   po_dir: '../po',
+@@ -8,7 +8,7 @@ i18n.merge_file(appdata_file,
+ )
+ 
+ desktop_file = 'org.gnome.tweaks.desktop'
+-i18n.merge_file(desktop_file,
++i18n.merge_file(
+   input: desktop_file + '.in',
+   output: desktop_file,
+   po_dir: '../po',
+-- 
+GitLab
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks_40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks_40.0.bb
index 30275c9..ffdf2c9 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks_40.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-tweaks/gnome-tweaks_40.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME tweaks: Advanced options for GNOME 3 session"
-LICENSE = "GPLv3 & CC0-1.0"
+LICENSE = "GPL-3.0-only & CC0-1.0"
 LIC_FILES_CHKSUM = " \
     file://LICENSES/CC0-1.0;md5=65d3616852dbf7b1a6d4b53b00626032 \
     file://LICENSES/GPL-3.0;md5=9eef91148a9b14ec7f9df333daebc746 \
@@ -19,7 +19,10 @@
 GIR_MESON_OPTION = ""
 
 SRC_URI[archive.sha256sum] = "f95f3fe031b0b01c02f79a1659f889152d3772ae3e44df8403d1460ba5eec36a"
-SRC_URI += "file://0001-Make-python-path-configurable.patch"
+SRC_URI += " \
+    file://0001-Make-python-path-configurable.patch \
+    file://0002-meson-fix-invalid-positional-argument.patch \
+"
 
 EXTRA_OEMESON = "-Dpython_site_dir=${PYTHON_SITEPACKAGES_DIR}"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo-plugins_0.3.14.bb b/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo-plugins_0.3.14.bb
index 028e1d2..d00e737 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo-plugins_0.3.14.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo-plugins_0.3.14.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Grilo is a framework forsearching media content from various sources"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo_0.3.14.bb b/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo_0.3.14.bb
index 53d80c5..7ceb26d 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo_0.3.14.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/grilo/grilo_0.3.14.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Grilo is a framework forsearching media content from various sources"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gsound/gsound_1.0.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/gsound/gsound_1.0.3.bb
index 7c79254..bdef603 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gsound/gsound_1.0.3.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gsound/gsound_1.0.3.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Small gobject library for playing system sounds"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=447b837ae57f08b7060593ac6256163f"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gspell/gspell_1.9.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gspell/gspell_1.9.1.bb
index aba9be8..15f1cad 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gspell/gspell_1.9.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gspell/gspell_1.9.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "gspell adds spell-checking to a GTK+ applications"
 HOMEPAGE = "https://wiki.gnome.org/Projects/gspell"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8c2e1ec1540fb3e0beb68361344cba7e"
 
 DEPENDS = "gtk+3 iso-codes enchant2"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gthumb/gthumb_3.12.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gthumb/gthumb_3.12.0.bb
index e9c52f3..1459e0b 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gthumb/gthumb_3.12.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gthumb/gthumb_3.12.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Image viewer and browser"
-LICENSE="GPLv2"
+LICENSE="GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview-classic-light_1.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview-classic-light_1.0.bb
index 64d5b86..4e1e434 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview-classic-light_1.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview-classic-light_1.0.bb
@@ -1,5 +1,5 @@
 DESCRIPTION = "Gtksourceview Classic-Light theme"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://classic-light.xml;beginline=6;endline=23;md5=2b4f75364fad00a4d752214dcbd7d7c3"
 
 inherit allarch
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview3_3.24.11.bb b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview3_3.24.11.bb
index 9f88513..1e5652d 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview3_3.24.11.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview3_3.24.11.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Portable C library for multiline text editing"
 HOMEPAGE = "http://projects.gnome.org/gtksourceview/"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 
 DEPENDS = "gtk+3 libxml2 intltool-native gnome-common-native glib-2.0-native"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview4_4.8.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview4_4.8.2.bb
index 5b5ce53..db4d89d 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview4_4.8.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview4_4.8.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Portable C library for multiline text editing"
 HOMEPAGE = "http://projects.gnome.org/gtksourceview/"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 
 DEPENDS = "gtk+3 libxml2 intltool-native gnome-common-native glib-2.0-native"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview5_5.2.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview5_5.2.0.bb
index c7c6e92..0048774 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview5_5.2.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview5_5.2.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Portable C library for multiline text editing"
 HOMEPAGE = "http://projects.gnome.org/gtksourceview/"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs/Remove-incorrect-i18n.merge_file-argument.patch b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs/Remove-incorrect-i18n.merge_file-argument.patch
deleted file mode 100644
index a6e3523..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs/Remove-incorrect-i18n.merge_file-argument.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Upstream-Status: Backport
-
-Fixes "../gvfs-1.49.1/daemon/meson.build:362:7: ERROR: Function does not take positional arguments.
-
-Signed-off-by: Markus Volk f_l_k@t-online.de
-
-From 17a067b9b823a0d54e061eae45ff8e2c7e4a88d0 Mon Sep 17 00:00:00 2001
-From: Ondrej Holy <oholy@redhat.com>
-Date: Fri, 21 Jan 2022 08:32:31 +0100
-Subject: [PATCH] build: Remove incorrect i18n.merge_file argument
-
-The positional argument was being silently ignored until meson 0.60.0 where
-it fails with "ERROR: Function does not take positional arguments".
-
-Related: https://github.com/mesonbuild/meson/issues/9441
-Fixes: https://gitlab.gnome.org/GNOME/gvfs/-/issues/599
----
- daemon/meson.build | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/daemon/meson.build b/daemon/meson.build
-index 5f9559aa..e20ada29 100644
---- a/daemon/meson.build
-+++ b/daemon/meson.build
-@@ -360,7 +360,6 @@ if enable_admin
-   policy = gvfs_namespace + '.file-operations.policy'
- 
-   i18n.merge_file(
--    policy,
-     input: configure_file(
-       input: policy + '.in.in',
-       output: '@BASENAME@',
--- 
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.49.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.50.0.bb
similarity index 91%
rename from meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.49.1.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.50.0.bb
index c73716d..93f7f57 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.49.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.50.0.bb
@@ -1,5 +1,5 @@
 DESCRIPTION = "gvfs is a userspace virtual filesystem"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=05df38dd77c35ec8431f212410a3329e"
 
 GNOMEBASEBUILDCLASS = "meson"
@@ -10,12 +10,9 @@
 
 RDEPENDS:${PN} += "gsettings-desktop-schemas"
 
-SRC_URI = " \
-    https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive \
-    file://Remove-incorrect-i18n.merge_file-argument.patch \
-"
+SRC_URI = "https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive"
 
-SRC_URI[archive.sha256sum] = "b0d1dda4e475066207305b0776b0daefeae790f6c0107ffd2687994c8e71915a"
+SRC_URI[archive.sha256sum] = "cbc2f564d2e9f00c760673f42d6803bce3e081ab7ffb4456deffffba9339b4dd"
 
 # depends on gsettings-desktop-schemas->gcr->gtk+3-> x11
 REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libchamplain/libchamplain_0.12.20.bb b/meta-openembedded/meta-gnome/recipes-gnome/libchamplain/libchamplain_0.12.20.bb
index 51ca63e..859eab9 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libchamplain/libchamplain_0.12.20.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libchamplain/libchamplain_0.12.20.bb
@@ -1,5 +1,5 @@
 SUMMARY = "libchamplain is a Gtk widget displaying zoomable and pannable maps"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 DEPENDS = "glib-2.0 gtk+3 gdk-pixbuf clutter-1.0 clutter-gtk-1.0 libsoup-2.4"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb
index a1be2a2..921c3ee 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://live.gnome.org/libgdata"
 BUGTRACKER = "https://bugzilla.gnome.org/"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24 \
                     file://gdata/gdata.h;endline=20;md5=079a554efcf65d46f96a515806e7e99a \
                     file://gdata/gdata-types.h;endline=20;md5=7399b111aac8718da13888fc634be6ef"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.48.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.49.bb
similarity index 81%
rename from meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.48.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.49.bb
index a3ff13f..f663141 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.48.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgsf/libgsf_1.14.49.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GNOME Structured File Library"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=dc7371b50816c96e145fa0f8ade8e24d \
                     file://COPYING.LIB;md5=61464cfe342798eeced82efe9ae55f63"
 
@@ -9,7 +9,7 @@
 
 inherit gnomebase gobject-introspection gettext gtk-doc
 
-SRC_URI[archive.sha256sum] = "ff86d7f1d46dd0ebefb7bd830a74a41db64362b987bf8853fff6ab4c1132b837"
+SRC_URI[archive.sha256sum] = "e9ebe36688f010c9e6e40c8903f3732948deb8aca032578d07d0751bd82cf857"
 SRC_URI += "file://0001-configure.ac-drop-a-copy-paste-of-introspection.m4-m.patch"
 
 PACKAGECONFIG ??= ""
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.40.0.bb
index 6d9398f..3ee7746 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.40.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.40.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A library for collecting system monitoring data"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 inherit gnomebase lib_package gtk-doc gobject-introspection gettext upstream-version-is-even
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather_40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather_40.0.bb
index 49493b1..771fc62 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather_40.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather_40.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A library to access weather information from online services"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libportal/libportal_0.5.bb b/meta-openembedded/meta-gnome/recipes-gnome/libportal/libportal_0.5.bb
index 67f63fe..6deac38 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libportal/libportal_0.5.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libportal/libportal_0.5.bb
@@ -3,7 +3,7 @@
 with a familiar GObject API along side the D-Bus API"
 HOMEPAGE = "https://github.com/flatpak/libportal"
 BUGTRACKER = "https://github.com/flatpak/libportal/issues"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=3000208d539ec061b899bce1d9ce9404"
 
 SRC_URI = "git://github.com/flatpak/${BPN}.git;protocol=https;branch=master"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libtimezonemap/libtimezonemap_0.4.6.bb b/meta-openembedded/meta-gnome/recipes-gnome/libtimezonemap/libtimezonemap_0.4.6.bb
index c74e1d4..d633b06 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libtimezonemap/libtimezonemap_0.4.6.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libtimezonemap/libtimezonemap_0.4.6.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Time zone map widget for Gtk+"
 HOMEPAGE = "https://launchpad.net/timezonemap"
 SECTION = "devel/lib"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "http://archive.ubuntu.com/ubuntu/pool/main/libt/${BPN}/${BPN}_${PV}.tar.gz"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck3_40.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck3_40.1.bb
index 6c9e631..cb4e459 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck3_40.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck3_40.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Window navigation construction toolkit"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
 
 BPN = "libwnck"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck_2.31.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck_2.31.0.bb
index d1f36a9..3abba94 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck_2.31.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libwnck/libwnck_2.31.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Window navigation construction toolkit"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
 
 SECTION = "x11/libs"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier_5.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier_5.4.bb
index e47d74b..7955663 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier_5.4.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libxklavier/libxklavier_5.4.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Helper lib for keyboard management"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=6e29c688d912da12b66b73e32b03d812"
 
 DEPENDS = "xkbcomp gtk+ iso-codes libxi libxml2"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.42.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.44.0.bb
similarity index 88%
rename from meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.42.0.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.44.0.bb
index 58479cf..b670855 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.42.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.44.0.bb
@@ -1,6 +1,6 @@
 SECTION = "x11/wm"
 SUMMARY = "Metacity is the boring window manager for the adult in you"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b4cce53560b8e619ffa7c830fb8761aa \
                     file://src/include/main.h;endline=24;md5=72148ede07a6dadd01de6a882d20a9ad"
 
@@ -23,7 +23,7 @@
 
 inherit gnomebase gsettings gettext upstream-version-is-even features_check
 
-SRC_URI[archive.sha256sum] = "d89d679dcfed9b5eef18f06e2dcb33a7ab543d53b358fa89ce65593c231eeebc"
+SRC_URI[archive.sha256sum] = "19c3c5d79d2171f45baa0f632cc8995f8607bf1231a16014439bac9ba165a7c0"
 SRC_URI += "file://0001-drop-zenity-detection.patch"
 
 PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,libxinerama"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_41.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_41.2.bb
index 19dad21..08ac897 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_41.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_41.2.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Window and compositing manager based on Clutter"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/liportal-0.5-fix.patch b/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/liportal-0.5-fix.patch
deleted file mode 100644
index 708595a..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus/liportal-0.5-fix.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Fix an issue building Nautilus with libportal-0.5+
-where expected header is moved to different directory
-in staging sysroot
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/meson.build
-+++ b/meson.build
-@@ -123,7 +123,7 @@ gtk = dependency('gtk+-3.0', version: '>
- libhandy = dependency('libhandy-1', version: '>= 1.1.90')
- libportal = []
- if get_option('libportal')
--  libportal = dependency('libportal', version: '>= 0.3')
-+  libportal = dependency('libportal-gtk3', version: '>= 0.3')
- endif
- selinux = []
- if get_option('selinux')
---- a/src/nautilus-files-view.c
-+++ b/src/nautilus-files-view.c
-@@ -92,7 +92,7 @@
- 
- #ifdef HAVE_LIBPORTAL
- #include <libportal/portal.h>
--#include <libportal/portal-gtk3.h>
-+#include <libportal-gtk3/portal-gtk3.h>
- #endif
- 
- /* Minimum starting update inverval */
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_41.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_42.0.bb
similarity index 86%
rename from meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_41.2.bb
rename to meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_42.0.bb
index e9541a7..2935cc2 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_41.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/nautilus/nautilus_42.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "File manager for GNOME"
 SECTION = "x11/gnome"
 
-LICENSE="GPLv3"
+LICENSE="GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504"
 
 GNOMEBASEBUILDCLASS = "meson"
@@ -22,8 +22,7 @@
 def gnome_verdir(v):
     return oe.utils.trim_version(v, 1)
 
-SRC_URI += "file://liportal-0.5-fix.patch"
-SRC_URI[archive.sha256sum] = "872285b1c40a6ee418ce295ed115f5427da70907d822d95bcf51675d5498822b"
+SRC_URI[archive.sha256sum] = "3c904f33ba2d2a078892bee2af71484cd608923cd78ec7e8a1517bc2155113d5"
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb
index 545224a..f1c9915 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.8.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "library to access web services that claim to be "RESTful""
 HOMEPAGE = "https://wiki.gnome.org/Projects/Librest"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 GNOMEBASEBUILDCLASS = "autotools"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/sysprof/sysprof_3.42.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/sysprof/sysprof_3.42.1.bb
index 3dd08a2..99b3c60 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/sysprof/sysprof_3.42.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/sysprof/sysprof_3.42.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "System-wide Performance Profiler for Linux"
 HOMEPAGE = "http://www.sysprof.com"
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
                     file://src/sysprof/sysprof-application.c;endline=17;md5=a3de8df3b0f8876dd01e1388d2d4b607"
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tepl/tepl_6.00.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/tepl/tepl_6.00.0.bb
index 0ac7e36..61e82e2 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/tepl/tepl_6.00.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tepl/tepl_6.00.0.bb
@@ -15,10 +15,13 @@
 
 inherit gnomebase gobject-introspection gettext features_check
 
+# for gtksourceview4
+REQUIRED_DISTRO_FEATURES += "x11"
+
 SRC_URI[archive.sha256sum] = "a86397a895dca9c0de7a5ccb063bda8f7ef691cccb950ce2cfdee367903e7a63"
 
 # gobject-introspection is mandatory and cannot be configured
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+REQUIRED_DISTRO_FEATURES += "gobject-introspection-data"
 GIR_MESON_OPTION = ""
 
 GTKDOC_MESON_OPTION = "gtk_doc"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.2.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.2.1.bb
index 44b3671..2847635 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.2.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.2.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Tracker miners and metadata extractors"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING.GPL;md5=ee31012bf90e7b8c108c69f197f3e3a4 \
     file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.2.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.2.1.bb
index 1c18efb..f81a84c 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.2.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.2.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Tracker is a file search engine"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING.GPL;md5=ee31012bf90e7b8c108c69f197f3e3a4 \
     file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_41.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_41.0.bb
index ec8edb8..13dada4 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_41.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-tools_41.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Collection of scripts and build utilities for documentation"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=d67c6f9f1515506abfea4f0d920c0774 \
     file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_41.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_41.1.bb
index 3b23979..50cc8fc 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_41.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp-xsl_41.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "XSL stylesheets for the yelp help browser"
-LICENSE = "LGPLv2.1 & GPLv2 & BSD-3-Clause"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only & BSD-3-Clause"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=8ca13a5a6972ac1620a1e42a3dacd774 \
     file://COPYING.GPL;md5=eb723b61539feef013de476e68b5c50a \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_41.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_41.2.bb
index 590ff2f..01427b1 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_41.2.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/yelp/yelp_41.2.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Help browser for the GNOME desktop"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=6e1b9cb787e76d7e6946887a65caa754 \
 "
diff --git a/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-1.0.inc b/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-1.0.inc
index b91bc30..ce6b8a0 100644
--- a/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-1.0.inc
+++ b/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-1.0.inc
@@ -3,7 +3,7 @@
 designed for creating fast, mainly 2D single window applications such as media \
 box UIs, presentations, kiosk style applications and so on."
 HOMEPAGE = "http://www.clutter-project.org/"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 
 inherit clutter ptest-gnome features_check upstream-version-is-even gobject-introspection
 # depends on cogl-1.0 which needs opengl
diff --git a/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-gst-3.0.inc b/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-gst-3.0.inc
index 8c6d0b3..7880021 100644
--- a/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-gst-3.0.inc
+++ b/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-gst-3.0.inc
@@ -4,7 +4,7 @@
 implements the ClutterGstPlayer interface using playbin."
 HOMEPAGE = "http://www.clutter-project.org/"
 BUGTRACKER = "https://gitlab.gnome.org/GNOME/clutter-gst/-/issues"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 
 inherit clutter features_check upstream-version-is-even gobject-introspection
 # depends on clutter-1.0 which depends on cogl-1.0
diff --git a/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-gtk-1.0.inc b/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-gtk-1.0.inc
index 9a28b52..025e95b 100644
--- a/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-gtk-1.0.inc
+++ b/meta-openembedded/meta-gnome/recipes-graphics/clutter/clutter-gtk-1.0.inc
@@ -5,7 +5,7 @@
 actor for embedding any GtkWidget inside a Clutter stage."
 HOMEPAGE = "http://www.clutter-project.org/"
 BUGTRACKER = "https://gitlab.gnome.org/GNOME/clutter/-/issues"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 
 CLUTTERBASEBUILDCLASS = "meson"
 inherit clutter features_check upstream-version-is-even gobject-introspection gtk-doc
diff --git a/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice_0.6.55.bb b/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice_0.6.55.bb
index 26cc04b..551ff5d 100644
--- a/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice_0.6.55.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/accountsservice/accountsservice_0.6.55.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "D-Bus interfaces for querying and manipulating user account information"
 HOMEPAGE = "https://www.freedesktop.org/wiki/Software/AccountsService/"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-support/appstream-glib/appstream-glib_0.7.18.bb b/meta-openembedded/meta-gnome/recipes-support/appstream-glib/appstream-glib_0.7.18.bb
index 3488fb5..45a28ed 100644
--- a/meta-openembedded/meta-gnome/recipes-support/appstream-glib/appstream-glib_0.7.18.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/appstream-glib/appstream-glib_0.7.18.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Objects and helper methods to help reading and writing AppStream metadata"
 HOMEPAGE = "https://people.freedesktop.org/~hughsient/appstream-glib/index.htm"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-gnome/recipes-support/colord-gtk/colord-gtk_0.2.0.bb b/meta-openembedded/meta-gnome/recipes-support/colord-gtk/colord-gtk_0.2.0.bb
index 2b09adf..e9c79e2 100644
--- a/meta-openembedded/meta-gnome/recipes-support/colord-gtk/colord-gtk_0.2.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/colord-gtk/colord-gtk_0.2.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "GTK support library for colord"
 HOMEPAGE = "https://www.freedesktop.org/software/colord/"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
 
 inherit meson gobject-introspection gettext gtk-doc features_check
diff --git a/meta-openembedded/meta-gnome/recipes-support/ibus/ibus.inc b/meta-openembedded/meta-gnome/recipes-support/ibus/ibus.inc
index 01f05c1..23f565f 100644
--- a/meta-openembedded/meta-gnome/recipes-support/ibus/ibus.inc
+++ b/meta-openembedded/meta-gnome/recipes-support/ibus/ibus.inc
@@ -1,6 +1,6 @@
 SUMMARY = "Intelligent Input Bus for Linux/Unix"
 HOMEPAGE = "https://github.com/ibus/ibus/wiki"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 
 inherit autotools-brokensep pkgconfig gobject-introspection gettext gtk-doc vala
diff --git a/meta-openembedded/meta-gnome/recipes-support/libuser/libuser_0.62.bb b/meta-openembedded/meta-gnome/recipes-support/libuser/libuser_0.62.bb
index 722b647..22ddd10 100644
--- a/meta-openembedded/meta-gnome/recipes-support/libuser/libuser_0.62.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/libuser/libuser_0.62.bb
@@ -4,7 +4,7 @@
 HOMEPAGE = "https://pagure.io/libuser"
 BUGTRACKER = "https://pagure.io/libuser/issues"
 
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
                     file://lib/user.h;endline=19;md5=76b301f63c39fa992062395efbdc9558 \
                     file://samples/testuser.c;endline=19;md5=3b87fa660fa3f4a6bb31d624afe30ba1"
diff --git a/meta-openembedded/meta-gnome/recipes-support/libwacom/libwacom_2.1.0.bb b/meta-openembedded/meta-gnome/recipes-support/libwacom/libwacom_2.2.0.bb
similarity index 93%
rename from meta-openembedded/meta-gnome/recipes-support/libwacom/libwacom_2.1.0.bb
rename to meta-openembedded/meta-gnome/recipes-support/libwacom/libwacom_2.2.0.bb
index 226446d..78f5a28 100644
--- a/meta-openembedded/meta-gnome/recipes-support/libwacom/libwacom_2.1.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/libwacom/libwacom_2.2.0.bb
@@ -8,7 +8,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=40a21fffb367c82f39fd91a3b137c36e"
 
 SRC_URI = "git://github.com/linuxwacom/libwacom.git;branch=master;protocol=https"
-SRCREV = "0f263ce26edc47587d5f7604e44fad1b61240c3d"
+SRCREV = "be485deca03157b0dbd702c7acaf35b71378be9e"
 
 DEPENDS = " \
     libxml2-native \
diff --git a/meta-openembedded/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb b/meta-openembedded/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb
index e7733bf..9325ef9 100644
--- a/meta-openembedded/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/onboard/onboard_1.4.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "An onscreen keyboard"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING.GPL3;md5=8521fa4dd51909b407c5150498d34f4e"
 
 DEPENDS += "gtk+3 hunspell libcanberra libxkbfile dconf python3-distutils-extra-native intltool-native"
@@ -10,7 +10,7 @@
 SRC_URI[md5sum] = "1a2fbe82e934f5b37841d17ff51e80e8"
 SRC_URI[sha256sum] = "01cae1ac5b1ef1ab985bd2d2d79ded6fc99ee04b1535cc1bb191e43a231a3865"
 
-inherit features_check setuptools3 pkgconfig gtk-icon-cache gsettings mime-xdg
+inherit features_check setuptools3-base pkgconfig gtk-icon-cache gsettings mime-xdg
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
diff --git a/meta-openembedded/meta-gnome/recipes-support/usermode/usermode_1.114.bb b/meta-openembedded/meta-gnome/recipes-support/usermode/usermode_1.114.bb
index 478d8fa..1811b2d 100644
--- a/meta-openembedded/meta-gnome/recipes-support/usermode/usermode_1.114.bb
+++ b/meta-openembedded/meta-gnome/recipes-support/usermode/usermode_1.114.bb
@@ -7,7 +7,7 @@
 * userpasswd allows users to change their passwords. \
 "
 HOMEPAGE = "https://pagure.io/usermode"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 DEPENDS = "libuser ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)} \
diff --git a/meta-openembedded/meta-initramfs/conf/layer.conf b/meta-openembedded/meta-initramfs/conf/layer.conf
index 33e61d3..c63383f 100644
--- a/meta-openembedded/meta-initramfs/conf/layer.conf
+++ b/meta-openembedded/meta-initramfs/conf/layer.conf
@@ -13,7 +13,7 @@
 # choosing carefully how this layer interacts with all of the
 # other layers.
 
-BBFILE_PRIORITY_meta-initramfs = "8"
+BBFILE_PRIORITY_meta-initramfs = "5"
 LAYERDEPENDS_meta-initramfs = "core"
 
 LAYERSERIES_COMPAT_meta-initramfs = "kirkstone"
diff --git a/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb b/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb
index 08d983e..9f7a214 100644
--- a/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb
+++ b/meta-openembedded/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb
@@ -1,7 +1,7 @@
 SUMMARY = "kexecboot linux-as-bootloader"
 DESCRIPTION = "kexecboot is a graphical linux-as-bootloader implementation based on kexec."
 HOMEPAGE = "http://kexecboot.org"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 PV = "0.6+git${SRCPV}"
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_055.bb b/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_055.bb
index 3eee666..a8fc546 100644
--- a/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_055.bb
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_055.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://dracut.wiki.kernel.org/index.php/Main_Page"
 DESCRIPTION = "Dracut is an event driven initramfs infrastructure. dracut (the tool) is used to create an initramfs image by copying tools and files from an installed system and combining it with the dracut framework, usually found in /usr/lib/dracut/modules.d."
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 PE = "1"
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_8.40.bb b/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_8.40.bb
index b224a5c..307c0e8 100644
--- a/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_8.40.bb
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_8.40.bb
@@ -5,7 +5,7 @@
 new kernels and need to find information about the current boot environment. \
 "
 HOMEPAGE = "https://github.com/rhboot/grubby"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
 
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_git.bb b/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_git.bb
index 43fcc1a..a276bf4 100644
--- a/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_git.bb
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_git.bb
@@ -5,7 +5,7 @@
 new kernels and need to find information about the current boot environment. \
 "
 HOMEPAGE = "https://github.com/rhboot/grubby"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
 
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc b/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc
index 1a188a6..ceb4f5a 100644
--- a/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/klibc/klibc.inc
@@ -2,7 +2,7 @@
 use with initramfs.  It is deliberately written for small size, \
 minimal entaglement, and portability, not speed."
 SECTION = "libs"
-LICENSE = "BSD-3-Clause & GPL-2.0 & MIT & Zlib"
+LICENSE = "BSD-3-Clause & GPL-2.0-only & MIT & Zlib"
 LIC_FILES_CHKSUM = "file://usr/klibc/LICENSE;md5=d75181f10e998c21eb147f6d2e43ce8b"
 DEPENDS = "linux-libc-headers perl-native"
 
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.0.2.bb b/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.0.2.bb
index e5446c1..8b91fb4 100644
--- a/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.0.2.bb
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc_2.0.2.bb
@@ -3,7 +3,7 @@
 SECTION = "base"
 DEPENDS = "zlib lzo e2fsprogs util-linux"
 HOMEPAGE = "http://www.linux-mtd.infradead.org/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
                     file://include/common.h;beginline=1;endline=17;md5=ba05b07912a44ea2bf81ce409380049c"
 
diff --git a/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb b/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb
index a588296..88f32c8 100644
--- a/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb
+++ b/meta-openembedded/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_git.bb
@@ -3,7 +3,7 @@
 AUTHOR = "Eric Biederman"
 HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kexec/"
 SECTION = "kernel/userland"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a \
                     file://kexec/kexec.c;beginline=1;endline=20;md5=af10f6ae4a8715965e648aa687ad3e09"
 PV = "2.0.18+git${SRCPV}"
diff --git a/meta-openembedded/meta-multimedia/conf/layer.conf b/meta-openembedded/meta-multimedia/conf/layer.conf
index 1fe9c80..b5120bb 100644
--- a/meta-openembedded/meta-multimedia/conf/layer.conf
+++ b/meta-openembedded/meta-multimedia/conf/layer.conf
@@ -23,7 +23,7 @@
 # choosing carefully how this layer interacts with all of the
 # other layers.
 
-BBFILE_PRIORITY_multimedia-layer = "6"
+BBFILE_PRIORITY_multimedia-layer = "5"
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
diff --git a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gssdp_1.4.0.1.bb b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gssdp_1.4.0.1.bb
index 97b0bbd..1d8cbb1 100644
--- a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gssdp_1.4.0.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gssdp_1.4.0.1.bb
@@ -3,7 +3,7 @@
                (Simpe Service Discovery Protocol)."
 HOMEPAGE = "https://gitlab.gnome.org/GNOME/gssdp/"
 BUGTRACKER = "https://gitlab.gnome.org/GNOME/gssdp/-/issues"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 SRC_URI = "${GNOME_MIRROR}/${BPN}/1.4/${BPN}-${PV}.tar.xz"
diff --git a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-dlna_0.12.0.bb b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-dlna_0.12.0.bb
index e1758c1..8dc5fce 100644
--- a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-dlna_0.12.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-dlna_0.12.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Helpers for AV applications using DLNA"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
                     file://libgupnp-dlna/gupnp-dlna-profile.h;beginline=1;endline=22;md5=1b85459f65cb1e73a885ca137aab6274"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-igd_1.2.0.bb b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-igd_1.2.0.bb
index 4bbfb6e..49cd8d8 100644
--- a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-igd_1.2.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-igd_1.2.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Helpers for interacting with Internet Gateway Devices over UPnP"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
                     file://libgupnp-igd/gupnp-simple-igd.c;beginline=1;endline=21;md5=aa292c0d9390463a6e1055dc5fc68e80"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-tools_0.10.2.bb b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-tools_0.10.2.bb
index 49f7d91..20aced8 100644
--- a/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-tools_0.10.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-connectivity/gupnp/gupnp-tools_0.10.2.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Tools for GUPnP"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
                     file://src/network-light/main.c;beginline=1;endline=21;md5=2c39b3a000495dabd4932f231c7efed8"
 
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 9633cab..ec7824b 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
@@ -5,7 +5,7 @@
 that may be controlled remotely by a UPnP or DLNA Controller."
 HOMEPAGE = "http://live.gnome.org/Rygel"
 
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = "libxml2 glib-2.0 gssdp gupnp gupnp-av gupnp-dlna gstreamer1.0 gstreamer1.0-plugins-base libgee libsoup-2.4 libmediaart-2.0 libunistring sqlite3 intltool-native"
diff --git a/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb b/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb
index 5acdd7e..7c09e39 100644
--- a/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb
+++ b/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb
@@ -1,7 +1,7 @@
 SUMMARY = "OSCam: Open Source Conditional Access Module"
 HOMEPAGE = "http://www.streamboard.tv/oscam/"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 DEPENDS = "libusb1 openssl pcsc-lite"
diff --git a/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb b/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
index 1930558..c278cf5 100644
--- a/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
@@ -5,7 +5,7 @@
 
 DEPENDS = "avahi cmake-native dvb-apps libdvbcsa libpcre2 openssl uriparser zlib"
 
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=9cae5acac2e9ee2fc3aec01ac88ce5db"
 
 SRC_URI = "git://github.com/tvheadend/tvheadend.git;branch=master;protocol=https \
diff --git a/meta-openembedded/meta-multimedia/recipes-mkv/libebml/libebml_1.3.0.bb b/meta-openembedded/meta-multimedia/recipes-mkv/libebml/libebml_1.3.0.bb
index 70df73f..744486f 100644
--- a/meta-openembedded/meta-multimedia/recipes-mkv/libebml/libebml_1.3.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-mkv/libebml/libebml_1.3.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "libebml is a C++ libary to parse EBML files"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=7fbc338309ac38fefcd64b04bb903e34"
 
 SRC_URI = "\
diff --git a/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska_1.4.1.bb b/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska_1.4.1.bb
index fdffa41..890be69 100644
--- a/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska_1.4.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-mkv/libmatroska/libmatroska_1.4.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "libmatroska is a C++ libary to parse Matroska files (.mkv and .mka)"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = "libebml"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/alsa-equal/alsa-equal_0.6.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/alsa-equal/alsa-equal_0.6.bb
index 4d10099..b5c8ddc 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/alsa-equal/alsa-equal_0.6.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/alsa-equal/alsa-equal_0.6.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "A real-time adjustable equalizer plugin for ALSA"
 HOMEPAGE = "https://web.archive.org/web/20161105202833/http://thedigitalmachine.net/alsaequal.html"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
 
 DEPENDS = "alsa-lib"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps_0.9.26.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps_0.9.26.bb
index ed2b6c6..f33d7ad 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps_0.9.26.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/caps/caps_0.9.26.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "The CAPS Audio Plugin Suite - LADSPA plugin suite"
 HOMEPAGE = "http://quitte.de/dsp/caps.html"
-LICENSE = "GPL-3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "http://quitte.de/dsp/${BPN}_${PV}.tar.bz2 \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/cdparanoia_10.2.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/cdparanoia_10.2.bb
index 27fa0e5..0b844ee 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/cdparanoia_10.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/cdparanoia/cdparanoia_10.2.bb
@@ -4,7 +4,7 @@
 HOMEPAGE = "https://www.xiph.org/"
 SECTION = "multimedia"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING-LGPL;md5=d370feaa1c9edcdbd29ca27ea3d2304d"
 
 SRC_URI = "http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-${PV}.src.tgz \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec_0.2.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec_0.2.0.bb
index 343b9d7..ddd4c26 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec_0.2.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dca/dcadec_0.2.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "DTS Coherent Acoustics decoder with support for HD extensions"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.LGPLv2.1;md5=4fbd65380cdd255951079008b364516c"
 
 SRCREV = "b93deed1a231dd6dd7e39b9fe7d2abe05aa00158"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-connector-dbus_0.3.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-connector-dbus_0.3.0.bb
index 5645de2..033854f 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-connector-dbus_0.3.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-connector-dbus_0.3.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "D-Bus connector for dLeyna libraries"
 HOMEPAGE = "https://01.org/dleyna/"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
                     file://src/connector-dbus.c;endline=21;md5=0a1695cef53beefc36651de439f643b5"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-core_0.6.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-core_0.6.0.bb
index 647532d..eafbb50 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-core_0.6.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-core_0.6.0.bb
@@ -5,7 +5,7 @@
 and task management and an IPC asbstraction API."
 HOMEPAGE = "https://01.org/dleyna/"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
                     file://libdleyna/core/core.c;endline=21;md5=68602998351825b0844aae34c684c54e"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-renderer_0.6.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-renderer_0.6.0.bb
index 9c4af81..3e43c0d 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-renderer_0.6.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-renderer_0.6.0.bb
@@ -4,7 +4,7 @@
 An implementation of such a service for linux is also included."
 HOMEPAGE = "https://01.org/dleyna/"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
                     file://libdleyna/renderer/server.c;endline=21;md5=f51acd4757fb6a779a87122c43cf1346"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-server_0.6.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-server_0.6.0.bb
index 036d5c1..b25e446 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-server_0.6.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dleyna/dleyna-server_0.6.0.bb
@@ -4,7 +4,7 @@
 An implementation of such a service for linux is also included."
 HOMEPAGE = "https://01.org/dleyna/"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
                     file://libdleyna/server/server.c;endline=22;md5=437455d8aeff69ebd0996a76c67397bb"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb
index 3cf0ca4..98970d5 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/dvb-apps/dvb-apps_1.1.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Linux DVB API applications and utilities"
 HOMEPAGE = "http://www.linuxtv.org"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 SRCREV = "3d43b280298c39a67d1d889e01e173f52c12da35"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/faac/faac_1.29.9.2.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/faac/faac_1.29.9.2.bb
index 44662e2..1663548 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/faac/faac_1.29.9.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/faac/faac_1.29.9.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Freeware Advanced Audio Coder (MPEG2-AAC, MPEG4-AAC)"
 SECTION = "libs"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 HOMEPAGE = "http://www.audiocoding.com/faac.html"
 LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
                     file://libfaac/coder.h;beginline=5;endline=17;md5=fa1fd6a5fa8cdc877d63a12530d273e0"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth.inc b/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth.inc
index 978d05e..218a51f 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth.inc
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/fluidsynth/fluidsynth.inc
@@ -1,7 +1,7 @@
 SUMMARY = "Fluidsynth is a software synthesizer"
 HOMEPAGE = "http://www.fluidsynth.org/"
 SECTION = "libs/multimedia"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=fc178bcd425090939a8b634d1d6a9594"
 
 SRC_URI = "git://github.com/FluidSynth/fluidsynth.git;branch=master;protocol=https"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.9.2.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.9.2.bb
index 7e6ae97..cbb127d 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.9.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.9.2.bb
@@ -1,6 +1,6 @@
 Description = "Gerbera - An UPnP media server"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=25cdec9afe3f1f26212ead6bd2f7fac8"
 
 SRC_URI = "git://github.com/v00d00/gerbera.git;protocol=https;branch=master \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb
index 8c0a5c1..4e50897 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gst-shark_git.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Benchmarks and profiling tools for GStreamer"
 HOMEPAGE = "https://developer.ridgerun.com/wiki/index.php?title=GstShark"
 SECTION = "multimedia"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=e1caa368743492879002ad032445fa97"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd_git.bb
index d37ab98..38fafe8 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer-1.0/gstd_git.bb
@@ -2,7 +2,7 @@
 SUMMARY = "GStreamer framework for controlling audio and video streaming using TCP connection messages"
 HOMEPAGE = "https://developer.ridgerun.com/wiki/index.php?title=Gstd-1.0"
 SECTION = "multimedia"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gstreamer1.0-rtsp-server json-glib libdaemon jansson"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer.inc b/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer.inc
index ee97993..feb3564 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer.inc
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/juce/projucer.inc
@@ -3,8 +3,10 @@
 JUCE supported platforms, including Linux and Embedded Linux."
 SECTION = "utils"
 HOMEPAGE = "http://juce.com/"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://LICENSE.md;md5=12e9c2db7897c0349a4cc1c6d2a8c5d5"
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eff9da77cdb81a803f8cbca6c16801d8"
+
+LICENSE_FLAGS = "commercial"
 
 inherit pkgconfig features_check
 
@@ -13,13 +15,13 @@
 DEPENDS = "libx11 libxext libxinerama libxrandr libxcursor freetype alsa-lib curl bzip2 libpng harfbuzz glib-2.0 libpcre"
 DEPENDS:append:libc-musl = " libexecinfo"
 
-SRCREV = "90e8da0cfb54ac593cdbed74c3d0c9b09bad3a9f"
+SRCREV = "2f980209cc4091a4490bb1bafc5d530f16834e58"
 BRANCH = "master"
 SRC_URI = "git://github.com/WeAreROLI/JUCE.git;protocol=https;branch=${BRANCH} \
 "
 
 S = "${WORKDIR}/git"
-PV = "6.0.8"
+PV = "6.1.6"
 
 JUCE_PROJUCER_BUILD_PATH = "${B}/extras/Projucer/Builds"
 JUCE_PROJUCER_MAKEFILE_PATH = "${JUCE_PROJUCER_BUILD_PATH}/LinuxMakefile"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libao/libao_1.2.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libao/libao_1.2.0.bb
index e6a9b7d..b30f398 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libao/libao_1.2.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libao/libao_1.2.0.bb
@@ -4,7 +4,7 @@
 SECTION = "multimedia"
 HOMEPAGE = "https://www.xiph.org/ao/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI="http://downloads.xiph.org/releases/ao/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libavc1394/libavc1394_0.5.4.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libavc1394/libavc1394_0.5.4.bb
index f85c166..02a90c5 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libavc1394/libavc1394_0.5.4.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libavc1394/libavc1394_0.5.4.bb
@@ -6,7 +6,7 @@
 DEPENDS = "libraw1394"
 DEPENDS:append:libc-musl = " argp-standalone"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
index a8d54f0..7136260 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Linux libcamera framework"
 SECTION = "libs"
 
-LICENSE = "GPL-2.0+ & LGPL-2.1+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
 
 LIC_FILES_CHKSUM = "\
     file://LICENSES/GPL-2.0-or-later.txt;md5=fed54355545ffd980b814dab4a3b312c \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_2.2.6.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_2.2.6.bb
index c9ade4a..952ba60 100755
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_2.2.6.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libdc1394/libdc1394_2.2.6.bb
@@ -1,13 +1,13 @@
 SUMMARY = "Capture and control API for IIDC compliant cameras"
 HOMEPAGE = "http://sourceforge.net/projects/libdc1394/"
 SECTION = "libs"
-LICENSE = "LGPL-2.0"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c848e78d9a4a5cc69906178e4d6fbd64"
 
 # libsdl to provide sdl.m4 with AM_PATH_SDL
 DEPENDS += "libusb1 libraw1394 libsdl \
             ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libxv virtual/libx11', '', d)} \
-            ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virtual/libgl', '', d)} \
+            ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virtual/egl', '', d)} \
             ${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'libglu', '', d)} \
 "
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libde265/libde265_1.0.5.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libde265/libde265_1.0.5.bb
index f101afd..d0ecd04 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libde265/libde265_1.0.5.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libde265/libde265_1.0.5.bb
@@ -4,7 +4,7 @@
 HOMEPAGE = "http://www.libde265.org/"
 SECTION = "libs/multimedia"
 
-LICENSE = "LGPLv3 & MIT"
+LICENSE = "LGPL-3.0-only & MIT"
 LICENSE_FLAGS = "commercial"
 LIC_FILES_CHKSUM = "file://COPYING;md5=695b556799abb2435c97a113cdca512f"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbcsa/libdvbcsa_1.1.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbcsa/libdvbcsa_1.1.0.bb
index f9b8c7d..5de717c 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbcsa/libdvbcsa_1.1.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbcsa/libdvbcsa_1.1.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Open implementation of the DVB Common Scrambling Algorithm, encrypt and decrypt "
 SECTION = "libs/multimedia"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRCREV = "bc6c0b164a87ce05e9925785cc6fb3f54c02b026"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbpsi/libdvbpsi_1.3.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbpsi/libdvbpsi_1.3.0.bb
index 48b0111..5ca1467 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbpsi/libdvbpsi_1.3.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libdvbpsi/libdvbpsi_1.3.0.bb
@@ -2,7 +2,7 @@
 and generation of MPEG TS and DVB PSI tables according to standards \
 ISO/IEC 13818 and ITU-T H.222.0."
 HOMEPAGE = "http://www.videolan.org/developers/libdvbpsi.html"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 SRC_URI = "http://download.videolan.org/pub/libdvbpsi/${PV}/libdvbpsi-${PV}.tar.bz2"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libdvdnav/libdvdnav_6.1.1.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libdvdnav/libdvdnav_6.1.1.bb
index c1a9c48..766ee02 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libdvdnav/libdvdnav_6.1.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libdvdnav/libdvdnav_6.1.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "library for DVD navigation features"
 SECTION = "libs/multimedia"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = "libdvdread"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libiec61883/libiec61883_1.2.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libiec61883/libiec61883_1.2.0.bb
index e6079bd..7c90faa 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libiec61883/libiec61883_1.2.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libiec61883/libiec61883_1.2.0.bb
@@ -6,7 +6,7 @@
 
 DEPENDS = "libraw1394"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=771782cb6245c7fbbe74bc0ec059beff"
 
 SRC_URI = "https://www.kernel.org/pub/linux/libs/ieee1394/${BPN}-${PV}.tar.xz"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libopenmpt/libopenmpt_0.3.10.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libopenmpt/libopenmpt_0.6.2.bb
similarity index 68%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/libopenmpt/libopenmpt_0.3.10.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/libopenmpt/libopenmpt_0.6.2.bb
index b163473..a7b6b00 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libopenmpt/libopenmpt_0.3.10.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libopenmpt/libopenmpt_0.6.2.bb
@@ -1,41 +1,33 @@
 SUMMARY = "C and C++ cross-platform library for decoding tracked music files (modules)"
 DESCRIPTION = "libopenmpt is a cross-platform C++ and C library to decode tracked \
 music files (modules) into a raw PCM audio stream. It also comes with openmpt123, a \
-cross-platform command-line or terminal based module file player, and libopenmpt_modplug, \
-a wrapper around libopenmpt that provides an interface that is ABI compatile with \
-libmodplug. libopenmpt is based on the player code of the OpenMPT project."
+cross-platform command-line or terminal based module file player. libopenmpt is based \
+on the player code of the OpenMPT project."
 HOMEPAGE = "https://lib.openmpt.org/libopenmpt/"
 SECTION = "libs"
 
 LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e804150573f149befef6c07e173f20c3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ae09d6164bdecb499183479fd32b66fb"
 
 DEPENDS = "virtual/libiconv"
 
 SRC_URI = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${PV}+release.autotools.tar.gz \
            file://run-ptest \
           "
-SRC_URI[md5sum] = "66bbc6fbb5f27a554cb145d805e9ef9d"
-SRC_URI[sha256sum] = "14a137b8d1a20e1b6a5e67cbc9467ab7e5e4e67d5aa38a247afc825685c53939"
+SRC_URI[md5sum] = "d21fb799695cbe10a1e9aeaea23ed708"
+SRC_URI[sha256sum] = "50c0d62ff2d9afefa36cce9f29042cb1fb8d4f0b386b81a0fc7734f35e21e6b6"
 
 S = "${WORKDIR}/libopenmpt-${PV}+release.autotools"
 
 inherit autotools pkgconfig ptest
 
 PACKAGECONFIG ??= " \
-    libopenmpt-modplug openmpt123 \
+    openmpt123 \
     ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
     flac mpg123 ogg sndfile vorbis vorbisfile zlib \
     ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio', d)} \
 "
 
-# libopenmpt_modplug is a library that wraps libopenmpt calls into
-# functions that are ABI compatible with libmodplug. This allows for
-# using modplug headers and linking against libopenmpt_modplug
-# instead of against the original libmodplug library.
-# NOTE: The wrapper is compatible to the ABI from libmodplug version
-# 0.8.8 and newer.
-PACKAGECONFIG[libopenmpt-modplug] = "--enable-libopenmpt_modplug,--disable-libopenmpt_modplug"
 PACKAGECONFIG[openmpt123]         = "--enable-openmpt123,--disable-openmpt123"
 PACKAGECONFIG[tests]              = "--enable-tests,--disable-tests"
 
@@ -45,22 +37,15 @@
 PACKAGECONFIG[ogg]                = "--with-ogg,--without-ogg,libogg"
 PACKAGECONFIG[portaudio]          = "--with-portaudio,--without-portaudio,portaudio-v19"
 PACKAGECONFIG[pulseaudio]         = "--with-pulseaudio,--without-pulseaudio,pulseaudio"
-PACKAGECONFIG[sdl]                = "--with-sdl,--without-sdl,virtual/libsdl"
 PACKAGECONFIG[sdl2]               = "--with-sdl2,--without-sdl2,virtual/libsdl2"
 PACKAGECONFIG[sndfile]            = "--with-sndfile,--without-sndfile,libsndfile1"
 PACKAGECONFIG[vorbis]             = "--with-vorbis,--without-vorbis,libvorbis"
 PACKAGECONFIG[vorbisfile]         = "--with-vorbisfile,--without-vorbisfile,libvorbis"
 PACKAGECONFIG[zlib]               = "--with-zlib,--without-zlib,zlib"
 
-# --disable-libmodplug is necessary, since otherwise we'd
-# have a collision with the libmodplug package, because of the
-# libmodplug.so file. (libmodplug.so from libopenmpt isintended
-# to be used as a drop-in replacement, and according to the
-# documentation, is not complete.)
 EXTRA_OECONF += " \
     --disable-doxygen-doc \
     --disable-examples \
-    --disable-libmodplug \
     --without-portaudiocpp \
 "
 
@@ -85,8 +70,7 @@
         bb.error("sdl and sdl2 packageconfigs cannot be both enabled")
 }
 
-PACKAGES =+ "${PN}-modplug ${PN}-openmpt123 ${PN}-openmpt123-doc"
-FILES:${PN}-modplug = "${libdir}/libopenmpt_modplug.so.*"
+PACKAGES =+ "${PN}-openmpt123 ${PN}-openmpt123-doc"
 FILES:${PN}-openmpt123 = "${bindir}/openmpt123"
 FILES:${PN}-openmpt123-doc = "${mandir}/man1/openmpt123*"
 
@@ -94,7 +78,6 @@
 # The SemVer versioning scheme is incompatible with Debian/Ubuntu
 # package version names.
 DEBIAN_NOAUTONAME:${PN} = "1"
-DEBIAN_NOAUTONAME:${PN}-modplug = "1"
 
 RDEPENDS:${PN}:libc-glibc = " \
     glibc-gconv-cp1252 \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libsquish/libsquish/0001-Add-support-for-variable-libdir.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/libsquish/libsquish/0001-Add-support-for-variable-libdir.patch
new file mode 100644
index 0000000..a6a5868
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libsquish/libsquish/0001-Add-support-for-variable-libdir.patch
@@ -0,0 +1,70 @@
+From 20d14f323c877eca631f0a75efcf19727fb18dd9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 22 Mar 2022 09:17:06 -0700
+Subject: [PATCH] Add support for variable libdir
+
+sometimes libdir is not 'lib' in such cases set LIBDIR_SUFFIX to 32 or
+64 to append to it.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile     | 9 +++++----
+ config.in    | 2 ++
+ squish.pc.in | 3 ++-
+ 3 files changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 1c01f89..768a4a7 100644
+--- a/Makefile
++++ b/Makefile
+@@ -10,13 +10,13 @@ LIB = libsquish.a
+ all : $(LIB) squish.pc
+ 
+ install : $(LIB) squish.pc
+-	install squish.h $(INSTALL_DIR)/include 
+-	install libsquish.a $(INSTALL_DIR)/lib
+-	install squish.pc $(INSTALL_DIR)/lib/pkgconfig
++	install squish.h $(INSTALL_DIR)/include
++	install libsquish.a $(INSTALL_DIR)/lib$(LIBDIR_SUFFIX)
++	install squish.pc $(INSTALL_DIR)/lib$(LIBDIR_SUFFIX)/pkgconfig
+ 
+ uninstall:
+ 	$(RM) $(INSTALL_DIR)/include/squish.h
+-	$(RM) $(INSTALL_DIR)/lib/libsquish.a
++	$(RM) $(INSTALL_DIR)/lib$(LIBDIR_SUFFIX)/libsquish.a
+ 
+ $(LIB) : $(OBJ)
+ 	$(AR) cr $@ $?
+@@ -30,4 +30,5 @@ clean :
+ 
+ squish.pc:
+ 	sed 's|@PREFIX@|$(PREFIX)|' $@.in > $@
++	sed 's|@LIBDIR_SUFFIX@|$(LIBDIR_SUFFIX)|' $@.in > $@
+ 
+diff --git a/config.in b/config.in
+index fdca022..a6cf833 100644
+--- a/config.in
++++ b/config.in
+@@ -19,3 +19,5 @@ endif
+ 
+ # where should we install to
+ INSTALL_DIR ?= @PREFIX@
++# libdir is architecture specific
++LIBDIR_SUFFIX ?= @LIBDIR_SUFFIX@
+diff --git a/squish.pc.in b/squish.pc.in
+index ca04334..73c21bb 100644
+--- a/squish.pc.in
++++ b/squish.pc.in
+@@ -1,6 +1,7 @@
+ prefix=@PREFIX@
++suffix=@LIBDIR_SUFFIX@
+ exec_prefix=${prefix}
+-libdir=${prefix}/lib
++libdir=${prefix}/lib${suffix}
+ sharedlibdir=${libdir}
+ includedir=${prefix}/include
+ 
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libsquish/libsquish/0001-makefile-Add-LIBDIR.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/libsquish/libsquish/0001-makefile-Add-LIBDIR.patch
new file mode 100644
index 0000000..c6eb7ac
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libsquish/libsquish/0001-makefile-Add-LIBDIR.patch
@@ -0,0 +1,36 @@
+From 4fd08c0446ca02917014b63f9080c4205958a130 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 20 Mar 2022 01:15:32 -0700
+Subject: [PATCH] makefile: Add LIBDIR
+
+Avoid hardcoding /lib
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 1c01f89..2b1df5b 100644
+--- a/Makefile
++++ b/Makefile
+@@ -11,12 +11,12 @@ all : $(LIB) squish.pc
+ 
+ install : $(LIB) squish.pc
+ 	install squish.h $(INSTALL_DIR)/include 
+-	install libsquish.a $(INSTALL_DIR)/lib
+-	install squish.pc $(INSTALL_DIR)/lib/pkgconfig
++	install libsquish.a $(INSTALL_DIR)/$(LIBDIR)
++	install squish.pc $(INSTALL_DIR)/$(LIBDIR)/pkgconfig
+ 
+ uninstall:
+ 	$(RM) $(INSTALL_DIR)/include/squish.h
+-	$(RM) $(INSTALL_DIR)/lib/libsquish.a
++	$(RM) $(INSTALL_DIR)/$(LIBDIR)/libsquish.a
+ 
+ $(LIB) : $(OBJ)
+ 	$(AR) cr $@ $?
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libsquish/libsquish_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libsquish/libsquish_git.bb
index cb42d94..fb74881 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libsquish/libsquish_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libsquish/libsquish_git.bb
@@ -6,11 +6,14 @@
 PV = "1.10+git${SRCPV}"
 
 SRCREV = "52e7d93c5947f72380521116c05d97c528863ba8"
-SRC_URI = "git://github.com/OpenELEC/libsquish.git;protocol=https;branch=master"
+SRC_URI = "git://github.com/OpenELEC/libsquish.git;protocol=https;branch=master \
+           file://0001-Add-support-for-variable-libdir.patch \
+          "
 
 S = "${WORKDIR}/git"
 
-EXTRA_OEMAKE = "INSTALL_DIR=${D}${prefix}"
+EXTRA_OEMAKE = "INSTALL_DIR=${D}${prefix} LIBDIR_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
+                ${@bb.utils.contains('TUNE_FEATURES', 'altivec', 'USE_ALTIVEC=1', '', d)}"
 
 do_install() {
 	install -d ${D}${includedir}
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mimic/mimic_1.3.0.1.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/mimic/mimic_1.3.0.1.bb
index 0cdc709..ac0165a 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/mimic/mimic_1.3.0.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mimic/mimic_1.3.0.1.bb
@@ -4,7 +4,7 @@
 SECTION = "multimedia"
 
 # "Mimic is available under permissive BSD-like licenses"
-LICENSE = "MIT-X & \
+LICENSE = "MIT & \
            PD & \
            CMU-Tex & \
            BSD & \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb
index 3564f6d..803c627 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb
@@ -1,7 +1,7 @@
 SUMMARY = "MusicBrainz client library"
 DESCRIPTION = "The MusicBrainz client is a library which can be built into other programs.  The library allows you to access the data held on the MusicBrainz server."
 HOMEPAGE = "http://musicbrainz.org"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING.txt;md5=fbc093901857fcd118f065f900982c24"
 DEPENDS = "expat libxml2 libxml2-native neon neon-native libmusicbrainz-native"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpd_11.8.17.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpd_11.8.17.bb
index 54d7910..d5ee395 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpd_11.8.17.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpd_11.8.17.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Music Player Daemon library"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 HOMEPAGE ="http://sourceforge.net/projects/musicpd"
 DEPENDS = "glib-2.0"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpdclient_2.19.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpdclient_2.20.bb
similarity index 91%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpdclient_2.19.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpdclient_2.20.bb
index 6cff3c4..2746c6b 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpdclient_2.19.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/libmpdclient_2.20.bb
@@ -8,7 +8,7 @@
 SRC_URI = " \
     git://github.com/MusicPlayerDaemon/libmpdclient;branch=master;protocol=https \
 "
-SRCREV = "27767959442ef390aabb16790494ba93fed962ef"
+SRCREV = "7124a0ad4841a44db084bb785a6e7120bc8f0139"
 S = "${WORKDIR}/git"
 
 PACKAGECONFIG ??= "tcp"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpc_0.33.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpc_0.34.bb
similarity index 81%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpc_0.33.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpc_0.34.bb
index 09190a8..93df25e 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpc_0.33.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpc_0.34.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A minimalist command line interface to the Music Player Daemon"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 HOMEPAGE = "https://www.musicpd.org/clients/mpc/"
 
@@ -8,6 +8,6 @@
 DEPENDS += "libmpdclient"
 
 SRC_URI = "git://github.com/MusicPlayerDaemon/mpc;branch=master;protocol=https"
-SRCREV = "ef16b280052ef0320cb80f79d74c8ce0324005ed"
+SRCREV = "31c900b79b3a1cd7f2944e92f24223d12589fdaa"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.23.5.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.23.6.bb
similarity index 97%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.23.5.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.23.6.bb
index 5596760..c74f107 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.23.5.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/mpd_0.23.6.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Music Player Daemon"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 HOMEPAGE ="http://www.musicpd.org"
@@ -21,7 +21,7 @@
 SRC_URI = "git://github.com/MusicPlayerDaemon/MPD;branch=v0.23.x;protocol=https \
            file://mpd.conf.in \
            "
-SRCREV = "df4b6b92f2c4bba1b55fe0a5559b19808abb28ff"
+SRCREV = "f591193ddaa7f9bcb6c85ff5899517fc7b53e35a"
 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/musicpd/ncmpc_0.45.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.46.bb
similarity index 94%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.45.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.46.bb
index b1ecbf1..a77d4f9 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.45.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.46.bb
@@ -1,13 +1,13 @@
 SUMMARY = "A curses client for the Music Player Daemon"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 HOMEPAGE = "https://www.musicpd.org/clients/ncmpc/"
 
 inherit meson pkgconfig
 
 DEPENDS += " \
-    boost \
     ncurses \
+    libpcre2 \
     libmpdclient \
 "
 
@@ -35,5 +35,5 @@
 SRC_URI = " \
     git://github.com/MusicPlayerDaemon/ncmpc;branch=master;protocol=https \
 "
-SRCREV = "6780ec072f1d314f44ed77efdc58d03c6fbcc96b"
+SRCREV = "b9b5e11e10d8f66cd672ffb51728aa447f78ecd4"
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft_1.20.1.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft_1.20.1.bb
index 095ef93..ad70005 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft_1.20.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft_1.20.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "OpenAL is a cross-platform 3D audio API"
 HOMEPAGE = "http://kcat.strangesoft.net/openal.html"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0f159f19f9377e1895fbb477d5a7953e"
 
 inherit cmake pkgconfig
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/opus-tools/opus-tools_0.2.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/opus-tools/opus-tools_0.2.bb
index b5e6ed9..b76c5ba 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/opus-tools/opus-tools_0.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/opus-tools/opus-tools_0.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Opus Audio Tools"
 HOMEPAGE = "http://www.opus-codec.org/"
 
-LICENSE = "BSD-2-Clause & GPLv2"
+LICENSE = "BSD-2-Clause & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=79f6fc2a6239fbe5f6e52f20ac76698c"
 
 SRC_URI = "http://downloads.xiph.org/releases/opus/opus-tools-${PV}.tar.gz"
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 62ca273..2b7a43b 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
@@ -55,7 +55,7 @@
     tearsofsteel-1080p \
     schroedinger \
     pipewire \
-    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "projucer", "", d)} \
+    ${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "commercial", "projucer", "", d)} \
     libcamera \
     ${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "commercial", "libde265 openh264", "", d)} \
     vorbis-tools \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb
index d6dfd87..52a672f 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb
@@ -2,7 +2,7 @@
 AUTHOR = "Wim Taymans <wtaymans@redhat.com>"
 HOMEPAGE = "https://pipewire.org"
 SECTION = "multimedia"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = " \
     file://LICENSE;md5=d8153c6e65986f862a0550ca74a3ed73 \
     file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/rtmpdump/rtmpdump_2.4.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/rtmpdump/rtmpdump_2.4.bb
index 53ee2a8..aa92c58 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/rtmpdump/rtmpdump_2.4.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/rtmpdump/rtmpdump_2.4.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "rtmpdump is a toolkit for RTMP streams. All forms of RTMP are \
 supported, including rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://."
 HOMEPAGE = "http://rtmpdump.mplayerhq.hu/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 DEPENDS = "gnutls zlib"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb
index 2f1fda3..c9d98a2 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/schroedinger/schroedinger_1.0.11.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Dirac compressed video encoder/decoder"
 HOMEPAGE = "http://schrodinger.sourceforge.net/"
-LICENSE = "MPL-1.1 | GPLv2 | LGPLv2 | MIT"
+LICENSE = "MPL-1.1 | GPL-2.0-only | LGPL-2.0-only | MIT"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=d91a46405fc074b88c963cc4f2a0aae9 \
                     file://COPYING.GPL;md5=e181e3b7c66f5f96921d813c1074f833 \
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.2.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.2.bb
index 544b613..0791c85 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/sox/sox_14.4.2.bb
@@ -23,7 +23,7 @@
 PACKAGECONFIG[lame] = "--with-lame,--without-lame,lame,"
 PACKAGECONFIG[ao] = "--with-ao,--without-ao,libao,"
 
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=751419260aa954499f7abaabaa882bbe \
                     file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/streamripper/streamripper_1.64.6.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/streamripper/streamripper_1.64.6.bb
index 3068a47..6014326 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/streamripper/streamripper_1.64.6.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/streamripper/streamripper_1.64.6.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "This command-line tool can be used to record MPEG III \
 and OGG online radio-streams into track-separated audio files."
 HOMEPAGE = "http://streamripper.sourceforge.net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 DEPENDS = "glib-2.0 libmad libogg libvorbis"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.4.2.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.4.2.bb
index fe06699..0b472b8 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.4.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.4.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "libdvdcss is a simple library for accessing DVDs like block devices"
 DESCRIPTION = "libdvdcss is a simple library designed for accessing DVDs like a block device without having to bother about the decryption."
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "http://download.videolan.org/pub/libdvdcss/${PV}/libdvdcss-${PV}.tar.bz2"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.12.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.17-1.bb
similarity index 94%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.12.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.17-1.bb
index fde7b04..9b85cb5 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.12.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.17-1.bb
@@ -2,10 +2,10 @@
 HOMEPAGE = "http://www.videolan.org"
 SECTION = "multimedia"
 
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-DEPENDS = "coreutils-native fribidi libtool libgcrypt libgcrypt-native \
+DEPENDS = "coreutils-native fribidi libtool libgcrypt libgcrypt-native bison-native \
    dbus libxml2 gnutls \
    tremor faad2 ffmpeg flac alsa-lib \
    lua-native lua libidn \
@@ -16,17 +16,17 @@
 LDFLAGS:append:riscv64 = " -latomic"
 LDFLAGS:append:riscv32 = " -latomic"
 
-SRC_URI = "http://download.videolan.org/pub/videolan/${BPN}/${PV}/${BP}.tar.xz \
+SRC_URI = "git://github.com/videolan/vlc.git;protocol=https;branch=3.0.x \
            file://0001-make-opencv-configurable.patch \
            file://0002-use-vorbisidec.patch \
            file://0003-fix-luaL-checkint.patch \
            file://0004-Use-packageconfig-to-detect-mmal-support.patch \
            file://0005-linux-thread-Use-SYS_futex-instead-of-__NR_futex.patch \
-           file://0001-include-limits-header.patch \
 "
-SRC_URI[sha256sum] = "eff458f38a92126094f44f2263c2bf2c7cdef271b48192d0fe7b1726388cf879"
+SRCREV = "aa76328c572d93f1d99c867a94ecad1dc3259733"
+S = "${WORKDIR}/git"
 
-inherit autotools features_check gettext pkgconfig mime-xdg
+inherit autotools-brokensep features_check gettext pkgconfig mime-xdg
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.2.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.2.bb
index f399bfa..2901621 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vorbis-tools/vorbis-tools_1.4.2.bb
@@ -5,7 +5,7 @@
 HOMEPAGE = "http://www.vorbis.com/"
 BUGTRACKER = "https://trac.xiph.org"
 SECTION = "multimedia"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "libogg libvorbis"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/files/0001-spa-json-fix-va_list-APIs-for-different-architecture.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/files/0001-spa-json-fix-va_list-APIs-for-different-architecture.patch
new file mode 100644
index 0000000..75c7b85
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/files/0001-spa-json-fix-va_list-APIs-for-different-architecture.patch
@@ -0,0 +1,217 @@
+From e429db7e8c266045aee25e153fb2308bd61fe233 Mon Sep 17 00:00:00 2001
+From: Julian Bouzas <julian.bouzas@collabora.com>
+Date: Wed, 9 Feb 2022 07:59:59 -0500
+Subject: [PATCH] spa-json: fix va_list APIs for different architectures
+
+The va_list type might not always be a pointer in some architectures, so we
+cannot guarantee it will be modified after using it for a second time in another
+function. This fixes the issue by using macros so args does not get copied, and
+always gets modified when using it more than once.
+
+Upstream-Status: Backport [https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/e429db7e8c266045aee25e153fb2308bd61fe233]
+
+Signed-off-by: Peter Bergin <peter@berginkonsult.se>
+
+---
+ lib/wp/spa-json.c | 156 ++++++++++++++++++++++++----------------------
+ 1 file changed, 80 insertions(+), 76 deletions(-)
+
+diff --git a/lib/wp/spa-json.c b/lib/wp/spa-json.c
+index f14f395..c5e59a3 100644
+--- a/lib/wp/spa-json.c
++++ b/lib/wp/spa-json.c
+@@ -363,33 +363,33 @@ wp_spa_json_new_string (const gchar *value)
+       wp_spa_json_builder_new_formatted ("\"%s\"", value));
+ }
+ 
+-static void
+-wp_spa_json_builder_add_value (WpSpaJsonBuilder *self, const gchar *fmt,
+-    va_list args)
+-{
+-  switch (*fmt) {
+-    case 'n':
+-      wp_spa_json_builder_add_null (self);
+-      break;
+-    case 'b':
+-      wp_spa_json_builder_add_boolean (self, va_arg(args, gboolean));
+-      break;
+-    case 'i':
+-      wp_spa_json_builder_add_int (self, va_arg(args, gint));
+-      break;
+-    case 'f':
+-      wp_spa_json_builder_add_float (self, (float)va_arg(args, double));
+-      break;
+-    case 's':
+-      wp_spa_json_builder_add_string (self, va_arg(args, const gchar *));
+-      break;
+-    case 'J':
+-      wp_spa_json_builder_add_json (self, va_arg(args, WpSpaJson *));
+-      break;
+-    default:
+-      return;
+-  }
+-}
++/* Args is not a pointer in some architectures, so this needs to be a macro to
++ * avoid args being copied */
++#define wp_spa_json_builder_add_value(self,fmt,args)                           \
++do {                                                                           \
++  switch (*fmt) {                                                              \
++    case 'n':                                                                  \
++      wp_spa_json_builder_add_null (self);                                     \
++      break;                                                                   \
++    case 'b':                                                                  \
++      wp_spa_json_builder_add_boolean (self, va_arg(args, gboolean));          \
++      break;                                                                   \
++    case 'i':                                                                  \
++      wp_spa_json_builder_add_int (self, va_arg(args, gint));                  \
++      break;                                                                   \
++    case 'f':                                                                  \
++      wp_spa_json_builder_add_float (self, (float)va_arg(args, double));       \
++      break;                                                                   \
++    case 's':                                                                  \
++      wp_spa_json_builder_add_string (self, va_arg(args, const gchar *));      \
++      break;                                                                   \
++    case 'J':                                                                  \
++      wp_spa_json_builder_add_json (self, va_arg(args, WpSpaJson *));          \
++      break;                                                                   \
++    default:                                                                   \
++      break;                                                                   \
++  }								               \
++} while(false)
+ 
+ /*!
+  * \brief Creates a spa json of type array
+@@ -724,48 +724,46 @@ wp_spa_json_parse_object_valist (WpSpaJson *self, va_list args)
+   return res;
+ }
+ 
+-static gboolean
+-wp_spa_json_parse_value (const gchar *data, int len, const gchar *fmt,
+-    va_list args)
+-{
+-  switch (*fmt) {
+-    case 'n':
+-      if (!spa_json_is_null (data, len))
+-        return FALSE;
+-      break;
+-    case 'b':
+-      if (!wp_spa_json_parse_boolean_internal (data, len,
+-          va_arg(args, gboolean *)))
+-        return FALSE;
+-      break;
+-    case 'i':
+-      if (spa_json_parse_int (data, len, va_arg(args, gint *)) < 0)
+-        return FALSE;
+-      break;
+-    case 'f':
+-      if (spa_json_parse_float (data, len,
+-          (float *)va_arg(args, double *)) < 0)
+-        return FALSE;
+-      break;
+-    case 's': {
+-      gchar *str = wp_spa_json_parse_string_internal (data, len);
+-      if (!str)
+-        return FALSE;
+-      *va_arg(args, gchar **) = str;
+-      break;
+-    }
+-    case 'J': {
+-      WpSpaJson *j = wp_spa_json_new (data, len);
+-      if (!j)
+-        return FALSE;
+-      *va_arg(args, WpSpaJson **) = j;
+-      break;
+-    }
+-    default:
+-      return FALSE;
+-  }
+-  return TRUE;
+-}
++/* Args is not a pointer in some architectures, so this needs to be a macro to
++ * avoid args being copied */
++#define wp_spa_json_parse_value(data,len,fmt,args)                             \
++do {                                                                           \
++  switch (*fmt) {                                                              \
++    case 'n':                                                                  \
++      if (!spa_json_is_null (data, len))                                       \
++        return FALSE;                                                          \
++      break;                                                                   \
++    case 'b':                                                                  \
++      if (!wp_spa_json_parse_boolean_internal (data, len,                      \
++          va_arg(args, gboolean *)))                                           \
++        return FALSE;                                                          \
++      break;                                                                   \
++    case 'i':                                                                  \
++      if (spa_json_parse_int (data, len, va_arg(args, gint *)) < 0)            \
++        return FALSE;                                                          \
++      break;                                                                   \
++    case 'f':                                                                  \
++      if (spa_json_parse_float (data, len, va_arg(args, float *)) < 0)         \
++        return FALSE;                                                          \
++      break;                                                                   \
++    case 's': {                                                                \
++      gchar *str = wp_spa_json_parse_string_internal (data, len);              \
++      if (!str)                                                                \
++        return FALSE;                                                          \
++      *va_arg(args, gchar **) = str;                                           \
++      break;                                                                   \
++    }                                                                          \
++    case 'J': {                                                                \
++      WpSpaJson *j = wp_spa_json_new (data, len);                              \
++      if (!j)                                                                  \
++        return FALSE;                                                          \
++      *va_arg(args, WpSpaJson **) = j;                                         \
++      break;                                                                   \
++    }                                                                          \
++    default:                                                                   \
++      return FALSE;                                                            \
++  }                                                                            \
++} while(false)
+ 
+ /*!
+  * \brief Parses the object property values of a spa json object
+@@ -827,8 +825,7 @@ wp_spa_json_object_get_valist (WpSpaJson *self, va_list args)
+     value = g_value_get_boxed (&item);
+ 
+     if (g_strcmp0 (key_str, lookup_key) == 0) {
+-      if (!wp_spa_json_parse_value (value->data, value->size, lookup_fmt, args))
+-        return FALSE;
++      wp_spa_json_parse_value (value->data, value->size, lookup_fmt, args);
+       lookup_key = va_arg(args, const gchar *);
+       if (!lookup_key)
+         return TRUE;
+@@ -1366,9 +1363,12 @@ gboolean
+ wp_spa_json_parser_get_value (WpSpaJsonParser *self, const gchar *fmt,
+     va_list args)
+ {
+-  return wp_spa_json_parser_advance (self) &&
+-      wp_spa_json_parse_value (self->curr.cur,
+-          self->curr.end - self->curr.cur, fmt, args);
++  if (wp_spa_json_parser_advance (self)) {
++    wp_spa_json_parse_value (self->curr.cur, self->curr.end - self->curr.cur,
++        fmt, args);
++    return TRUE;
++  }
++  return FALSE;
+ }
+ 
+ /*!
+@@ -1419,9 +1419,13 @@ wp_spa_json_parser_get_valist (WpSpaJsonParser *self, va_list args)
+     if (!format)
+       return TRUE;
+ 
+-    /* parse value */
+-    if (!wp_spa_json_parser_get_value (self, format, args))
++    /* advance */
++    if (!wp_spa_json_parser_advance (self))
+       return FALSE;
++
++    /* parse value */
++    wp_spa_json_parse_value (self->curr.cur, self->curr.end - self->curr.cur,
++        format, args);
+   } while (TRUE);
+ 
+   return FALSE;
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.8.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.8.bb
index 2310c3a..ed7417c 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.8.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.8.bb
@@ -14,6 +14,7 @@
 SRCREV = "e14bb72dcc85e2130d0ea96768e5ae3b375a041e"
 SRC_URI = "git://gitlab.freedesktop.org/pipewire/wireplumber.git;branch=master;protocol=https \
            file://90-OE-disable-session-dbus-dependent-features.lua \
+           file://0001-spa-json-fix-va_list-APIs-for-different-architecture.patch \
           "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/x265/x265_3.2.1.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/x265/x265_3.2.1.bb
index 3d8aef0..c36619b 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/x265/x265_3.2.1.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/x265/x265_3.2.1.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "A free software library and application for encoding video streams into the H.265/HEVC format."
 HOMEPAGE = "http://www.videolan.org/developers/x265.html"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LICENSE_FLAGS = "commercial"
 LIC_FILES_CHKSUM = "file://../COPYING;md5=c9e0427bc58f129f99728c62d4ad4091"
 
diff --git a/meta-openembedded/meta-multimedia/recipes-support/crossguid/crossguid_0.2.2.bb b/meta-openembedded/meta-multimedia/recipes-support/crossguid/crossguid_0.2.2.bb
index bc54ea9..b496531 100644
--- a/meta-openembedded/meta-multimedia/recipes-support/crossguid/crossguid_0.2.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-support/crossguid/crossguid_0.2.2.bb
@@ -7,14 +7,10 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1373274bc8d8001edc54933919f36f68"
 DEPENDS += "util-linux"
 
-SRCREV = "5b45cdd9a56ca9da35ee0f8845cb4e2603d245dc"
+SRCREV = "ca1bf4b810e2d188d04cb6286f957008ee1b7681"
 SRC_URI = "git://github.com/graeme-hill/crossguid;protocol=https;branch=master"
 
 S = "${WORKDIR}/git"
 
 inherit cmake
 
-do_install() {
-	install -D -m 0644 ${B}/libxg.a ${D}${libdir}/libxg.a
-	install -D -m 0644 ${S}/Guid.hpp ${D}${includedir}/Guid.hpp
-}
diff --git a/meta-openembedded/meta-multimedia/recipes-support/gst-instruments/gst-instruments_git.bb b/meta-openembedded/meta-multimedia/recipes-support/gst-instruments/gst-instruments_git.bb
index c345721..9a6c71c 100644
--- a/meta-openembedded/meta-multimedia/recipes-support/gst-instruments/gst-instruments_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-support/gst-instruments/gst-instruments_git.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://github.com/kirushyk/gst-instruments"
 SECTION = "multimedia"
 
-LICENSE = "LGPL-3.0"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e6a600fd5e1d9cbde2d983680233ad02"
 
 DEPENDS = "gstreamer1.0"
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
index ffedb26..ad42e27 100644
--- 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
@@ -1,6 +1,6 @@
 SUMMARY = "Library tasked with managing, extracting and handling media art caches"
 
-LICENSE = "LGPLv2+ & GPLv2+"
+LICENSE = "LGPL-2.0-or-later & GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c \
                     file://libmediaart/extract.c;endline=18;md5=dff2b6328ab067b5baadc135f9876c36 \
                     file://tests/mediaarttest.c;endline=18;md5=067106eaa1f7a9d918759a096667f18e"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/adcli/adcli_0.9.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/adcli/adcli_0.9.0.bb
index 074292b..b9fefa8 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/adcli/adcli_0.9.0.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/adcli/adcli_0.9.0.bb
@@ -13,7 +13,7 @@
 
 S = "${WORKDIR}/git"
 
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=23c2a5e0106b99d75238986559bb5fc6"
 
 inherit autotools xmlcatalog
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman/0001-Search-for-cython3.patch b/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman/0001-Search-for-cython3.patch
index 269174b..913566d 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman/0001-Search-for-cython3.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman/0001-Search-for-cython3.patch
@@ -1,31 +1,24 @@
-From 77db892cdee265e971270c06ca1ffbaeea6449a3 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Tue, 26 Jun 2018 00:27:40 +0200
 Subject: [PATCH] Search for cython3
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
-Upstream-Status: Pending
+Upstream-Status: Inappropriate
 
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+Signed-off-by: Markus Volk <f_l_k@gmx.net>
 ---
- configure.ac | 2 +-
+ meson.build | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/configure.ac b/configure.ac
-index 727089d1..6b565cdc 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -58,7 +58,7 @@ AC_SUBST([PYGOBJECT_LIBS])
+--- a/module/meson.build        2022-02-10 08:49:35.000000000 +0100
++++ b/module/meson.build        2022-03-29 12:58:03.456193737 +0200
+@@ -1,4 +1,4 @@
+-cython = find_program('cython', required: true)
++cython = find_program('cython3', required: true)
  
- AC_ARG_VAR([CYTHONEXEC], [Cython compiler])
- if test "x$CYTHONEXEC" = "x"; then
--   AC_PATH_PROG([CYTHONEXEC],[cython])
-+   AC_PATH_PROG([CYTHONEXEC],[cython3])
- fi
- AC_SUBST([CYTHONEXEC])
- AC_MSG_CHECKING([for cython executable])
+ blueman_c = custom_target(
+     'blueman_c',
+
 -- 
 2.14.3
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.2.3.bb b/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.2.4.bb
similarity index 68%
rename from meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.2.3.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.2.4.bb
index df496c3..ea06ee6 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.2.3.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/blueman/blueman_2.2.4.bb
@@ -1,23 +1,19 @@
 DESCRIPTION = "Blueman is a GTK+ Bluetooth Manager"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
-DEPENDS = "bluez5 python3-pygobject python3-cython-native python3-setuptools-native intltool-native"
+DEPENDS = "gtk+3 glib-2.0 bluez5 python3-pygobject python3-cython-native"
 
-inherit autotools gettext systemd gsettings pkgconfig python3native gtk-icon-cache
+inherit meson gettext systemd gsettings pkgconfig 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] = "6edd791da6afd8f610ffb08d5138cfcf50e6257ad30efad686287f3a2be106e9"
+SRC_URI[sha256sum] = "55d639feeda0b43b18a659e65985213a54b47dcb1348f3b4effb5238db242602"
 
-EXTRA_OECONF = " \
-    --disable-appindicator \
-    --disable-runtime-deps-check \
-    --disable-schemas-compile \
-"
+EXTRA_OEMESON = "-Druntime_deps_check=false -Dappindicator=false"
 
 SYSTEMD_SERVICE:${PN} = "${BPN}-mechanism.service"
 SYSTEMD_AUTO_ENABLE:${PN} = "disable"
@@ -26,22 +22,25 @@
 RDEPENDS:${PN} += " \
     python3-core \
     python3-dbus \
+    python3-pygobject \
+    python3-terminal \
     packagegroup-tools-bluetooth \
 "
 
-PACKAGECONFIG ??= "thunar"
-PACKAGECONFIG[thunar] = "--enable-thunar-sendto,--disable-thunar-sendto"
+PACKAGECONFIG ??= " \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'polkit pulseaudio ', d)} \
+    thunar \
+"
+PACKAGECONFIG[thunar] = "-Dthunar-sendto=true,-Dthunar-sendto=false"
+PACKAGECONFIG[pulseaudio] = "-Dpulseaudio=true,-Dpulseaudio=false"
+PACKAGECONFIG[polkit] = "-Dpolicykit=true,-Dpolicykit=false"
 
 FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/Thunar \
+    ${datadir} \
     ${systemd_user_unitdir} \
-    ${exec_prefix}${systemd_system_unitdir} \
     ${PYTHON_SITEPACKAGES_DIR} \
 "
 
-FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/_blueman.a"
-
 # In code, path to python is a variable that is replaced with path to native version of it
 # during the configure stage, e.g ../recipe-sysroot-native/usr/bin/python3-native/python3.
 # Replace it with #!/usr/bin/env python3
@@ -55,3 +54,4 @@
                                               ${D}${bindir}/blueman-services \
                                               ${D}${bindir}/blueman-tray
 }
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/bluepy/bluepy_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/bluepy/bluepy_git.bb
index a3b734c..8e16470 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/bluepy/bluepy_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/bluepy/bluepy_git.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Python interface to Bluetooth LE on Linux"
 HOMEPAGE = "https://github.com/IanHarvey/bluepy"
 SECTION = "devel/python"
-LICENSE = "GPLv2 & PD"
+LICENSE = "GPL-2.0-only & PD"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=59e0d45ea684dda215889aa1b5acd001"
 DEPENDS = "glib-2.0"
 SRCREV = "7ad565231a97c304c0eff45f2649cd005e69db09"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni_1.0.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni_1.0.0.bb
index 86b6577..f34c73c 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni_1.0.0.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/cannelloni/cannelloni_1.0.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "a SocketCAN over Ethernet tunnel"
 HOMEPAGE = "https://github.com/mguentner/cannelloni"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 SRC_URI = "git://github.com/mguentner/cannelloni.git;protocol=https;branch=master"
 SRCREV = "0bd7e27db35bdef361226882ae04205504f7b2f4"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/daq/daq_2.0.7.bb b/meta-openembedded/meta-networking/recipes-connectivity/daq/daq_2.0.7.bb
index 8e5ee66..14d809f 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/daq/daq_2.0.7.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/daq/daq_2.0.7.bb
@@ -1,7 +1,7 @@
 SUMMARY = "The dump DAQ test the various inline mode features "
 HOMEPAGE = "http://www.snort.org"
 SECTION = "libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f9ce51a65dd738dc1ae631d8b21c40e0"
 
 PARALLEL_MAKE = ""
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.2p1.bb b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.2p1.bb
deleted file mode 100644
index 8d4be95..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.2p1.bb
+++ /dev/null
@@ -1,83 +0,0 @@
-SECTION = "console/network"
-SUMMARY = "Internet Software Consortium DHCP Relay Agent"
-DESCRIPTION = "A DHCP relay agent passes DHCP requests from one \
-LAN to another, so that a DHCP server is not needed on every LAN."
-
-HOMEPAGE = "http://www.isc.org/"
-
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;beginline=4;md5=004a4db50a1e20972e924a8618747c01"
-
-DEPENDS = "openssl libcap zlib chrpath-replacement-native"
-EXTRANATIVEPATH += "chrpath-native"
-
-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;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] = "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-4.4.2-P1"
-
-inherit autotools-brokensep systemd
-
-SYSTEMD_SERVICE:${PN} = "dhcrelay.service"
-SYSTEMD_AUTO_ENABLE:${PN} = "disable"
-
-CFLAGS += "-D_GNU_SOURCE -fcommon"
-LDFLAGS:append = " -pthread"
-
-EXTRA_OECONF = "--enable-paranoia \
-                --disable-static \
-                --enable-libtool \
-                --with-randomdev=/dev/random \
-               "
-
-# Enable shared libs per dhcp README
-do_configure:prepend () {
-    cp configure.ac+lt configure.ac
-    cp ${WORKDIR}/bind-9.11.32.tar.gz ${S}/bind/bind.tar.gz
-}
-
-do_compile:prepend() {
-    # Need to unpack this now instead of earlier as do_configure will delete the configure script
-    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.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}/libtool ${S}/bind/bind-9.11.32/
-}
-
-do_install:append () {
-    install -Dm 0644 ${WORKDIR}/default-relay ${D}${sysconfdir}/default/dhcp-relay
-    install -Dm 0755 ${B}/bind/bind-9.11.32/lib/isccfg/.libs/libisccfg.so.163 ${D}${libdir}/libisccfg.so.163
-    install -Dm 0755 ${B}/bind/bind-9.11.32/lib/dns/.libs/libdns.so.1115 ${D}${libdir}/libdns.so.1115
-    chrpath --delete ${D}${libdir}/libisccfg.so.163
-    chrpath --delete ${D}${libdir}/libdns.so.1115
-
-    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-        install -d ${D}${systemd_unitdir}/system
-        install -m 0644 ${WORKDIR}/dhcrelay.service ${D}${systemd_unitdir}/system
-        sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/dhcrelay.service
-        sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhcrelay.service
-    else
-        install -d ${D}${sysconfdir}/init.d
-        install -m 0755 ${WORKDIR}/init-relay ${D}${sysconfdir}/init.d/dhcp-relay
-    fi
-}
-
-PARALLEL_MAKE = ""
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.3.bb b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.3.bb
new file mode 100644
index 0000000..92c6487
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/dhcp-relay_4.4.3.bb
@@ -0,0 +1,62 @@
+SECTION = "console/network"
+SUMMARY = "Internet Software Consortium DHCP Relay Agent"
+DESCRIPTION = "A DHCP relay agent passes DHCP requests from one \
+LAN to another, so that a DHCP server is not needed on every LAN."
+
+HOMEPAGE = "http://www.isc.org/"
+
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c463f4afde26d9eb60f14f50aeb85f8f"
+
+DEPENDS = "openssl libcap zlib"
+
+SRC_URI = "https://downloads.isc.org/isc/dhcp/${PV}/dhcp-${PV}.tar.gz \
+           file://default-relay \
+           file://init-relay \
+           file://dhcrelay.service \
+           file://0001-Makefile.am-only-build-dhcrelay.patch \
+           file://0002-bind-Makefile.in-disable-backtrace.patch \
+           file://0003-bind-Makefile.in-regenerate-configure.patch \
+           "
+
+SRC_URI[sha256sum] = "0e3ec6b4c2a05ec0148874bcd999a66d05518378d77421f607fb0bc9d0135818"
+
+UPSTREAM_CHECK_URI = "http://ftp.isc.org/isc/dhcp/"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+\.\d+\.(\d+?))/"
+
+S = "${WORKDIR}/dhcp-${PV}"
+
+inherit autotools-brokensep systemd pkgconfig
+
+SYSTEMD_SERVICE:${PN} = "dhcrelay.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "disable"
+
+CFLAGS += "-D_GNU_SOURCE -fcommon"
+LDFLAGS:append = " -pthread"
+
+EXTRA_OECONF = "--enable-paranoia \
+                --disable-static \
+                --enable-libtool \
+                --with-randomdev=/dev/random \
+               "
+
+# Enable shared libs per dhcp README
+do_configure:prepend () {
+    cp configure.ac+lt configure.ac
+}
+
+do_install:append () {
+    install -Dm 0644 ${WORKDIR}/default-relay ${D}${sysconfdir}/default/dhcp-relay
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/dhcrelay.service ${D}${systemd_unitdir}/system
+        sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/dhcrelay.service
+        sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/dhcrelay.service
+    else
+        install -d ${D}${sysconfdir}/init.d
+        install -m 0755 ${WORKDIR}/init-relay ${D}${sysconfdir}/init.d/dhcp-relay
+    fi
+}
+
+PARALLEL_MAKE = ""
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0001-Makefile.am-only-build-dhcrelay.patch b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0001-Makefile.am-only-build-dhcrelay.patch
index fed85d2..5320d7c 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0001-Makefile.am-only-build-dhcrelay.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0001-Makefile.am-only-build-dhcrelay.patch
@@ -1,4 +1,4 @@
-From 17cc080e58894644dd18664ac6f3451096d5f065 Mon Sep 17 00:00:00 2001
+From 4fd67b6adb7c1d8524ba17d1a0b3894f901555a9 Mon Sep 17 00:00:00 2001
 From: Yi Zhao <yi.zhao@windriver.com>
 Date: Thu, 13 May 2021 15:23:16 +0800
 Subject: [PATCH] Makefile.am: only build dhcrelay
@@ -26,5 +26,5 @@
  DIST_SUBDIRS = $(SUBDIRS) keama
  
 -- 
-2.17.1
+2.25.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/0002-bind-Makefile.in-disable-backtrace.patch
similarity index 89%
rename from meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0003-bind-Makefile.in-disable-backtrace.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0002-bind-Makefile.in-disable-backtrace.patch
index 51520bc..631a640 100644
--- 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/0002-bind-Makefile.in-disable-backtrace.patch
@@ -1,4 +1,4 @@
-From bc9c5d64ad4829c7830ef70fcaff94470974247c Mon Sep 17 00:00:00 2001
+From 6c6bbfe6b33e5c7e46a4260d656593dbe610fd8a 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
@@ -14,7 +14,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/bind/Makefile.in b/bind/Makefile.in
-index 8fe8883..1058160 100644
+index 2e60091..533d55c 100644
 --- a/bind/Makefile.in
 +++ b/bind/Makefile.in
 @@ -22,7 +22,7 @@ prefix = @prefix@
@@ -27,5 +27,5 @@
  	@BINDLT@ @BINDIOMUX@ @BINDCONFIG@ --enable-full-report
  
 -- 
-2.17.1
+2.25.1
 
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
deleted file mode 100644
index 5c7a5f0..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0002-bind-version-update-to-latest-version.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-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-regenerate-configure.patch b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0003-bind-Makefile.in-regenerate-configure.patch
new file mode 100644
index 0000000..71be027
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dhcp/files/0003-bind-Makefile.in-regenerate-configure.patch
@@ -0,0 +1,30 @@
+From 6ca1b224032355521b35471d222d0b09c08369a0 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Thu, 27 May 2021 11:38:36 +0800
+Subject: [PATCH] bind/Makefile.in: regenerate configure
+
+Run autogen.sh to regenerate configure.
+
+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 533d55c..fdffe15 100644
+--- a/bind/Makefile.in
++++ b/bind/Makefile.in
+@@ -55,7 +55,7 @@ bind1:
+ 	else                                                            \
+ 		echo Configuring BIND libraries for DHCP. ;             \
+ 		rm -rf ${cleandirs} ${cleanfiles} ;                     \
+-		(cd ${bindsrcdir} &&                                    \
++		(cd ${bindsrcdir} && ./autogen.sh &&                    \
+                  ./configure ${bindconfig} > ${binddir}/configure.log); \
+ 	fi
+ 
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler_git.bb
index 8c74c39..bdda35a 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler_git.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Dibbler is a portable DHCPv6 implementation. It supports stateful as well as stateless autoconfiguration for IPv6."
 HOMEPAGE = "http://klub.com.pl/dhcpv6"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=7236695bb6d4461c105d685a8b61c4e3"
 
 SRCREV = "a7c6cf58a88a510cb00841351e75030ce78d36bf"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/ez-ipupdate/ez-ipupdate_3.0.11b7.bb b/meta-openembedded/meta-networking/recipes-connectivity/ez-ipupdate/ez-ipupdate_3.0.11b7.bb
index 51e220c..8648f2e 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/ez-ipupdate/ez-ipupdate_3.0.11b7.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/ez-ipupdate/ez-ipupdate_3.0.11b7.bb
@@ -1,7 +1,7 @@
 SUMMARY = "daemon that sends updates when your IP changes"
 HOMEPAGE = "http://sourceforge.net/projects/ez-ipupdate/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=7783169b4be06b54e86730eb01bc3a31"
 
 SRC_URI = "http://sourceforge.net/projects/ez-ipupdate/files/${BPN}/${PV}/${BPN}-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.9.4.bb b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.9.4.bb
index 7d29bf1..1dea339 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.9.4.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.9.4.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://firewalld.org/"
 BUGTRACKER = "https://github.com/firewalld/firewalld/issues"
 UPSTREAM_CHECK_URI = "https://github.com/firewalld/firewalld/releases"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.21.bb b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.21.bb
index 3e5cca6..da7e604 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.21.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.21.bb
@@ -9,7 +9,7 @@
 SUMMARY = "High-performance and highly configurable RADIUS server"
 HOMEPAGE = "http://www.freeradius.org/"
 SECTION = "System/Servers"
-LICENSE = "GPLv2 & LGPLv2+"
+LICENSE = "GPL-2.0-only & LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=eb723b61539feef013de476e68b5c50a"
 DEPENDS = "openssl-native openssl libidn libtool libpcap libtalloc"
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.2.bb b/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.2.bb
index 9b64388..bf3e18d 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.2.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/lftp/lftp_4.9.2.bb
@@ -3,7 +3,7 @@
                FISH, SFTP, HTTPS and FTPS protocols"
 HOMEPAGE = "http://lftp.yar.ru/"
 SECTION = "console/network"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "http://lftp.yar.ru/ftp/lftp-${PV}.tar.bz2"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/libiec61850/files/0001-pyiec61850-Use-CMAKE_INSTALL_LIBDIR-from-GNUInstallD.patch b/meta-openembedded/meta-networking/recipes-connectivity/libiec61850/files/0001-pyiec61850-Use-CMAKE_INSTALL_LIBDIR-from-GNUInstallD.patch
new file mode 100644
index 0000000..e778e81
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/libiec61850/files/0001-pyiec61850-Use-CMAKE_INSTALL_LIBDIR-from-GNUInstallD.patch
@@ -0,0 +1,29 @@
+From 16d07a82242c3263ec0038c9b4c97355795d2dd9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 19 Mar 2022 23:16:51 -0700
+Subject: [PATCH] pyiec61850: Use CMAKE_INSTALL_LIBDIR from GNUInstallDirs in
+ cmake
+
+This ensures that it gets installed in platform specified system libdir
+all platforms do not use /usr/lib as assumed here e.g. ppc64 uses lib64
+
+Upstream-Status: Submitted [https://github.com/mz-automation/libiec61850/pull/376]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ pyiec61850/CMakeLists.txt | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/pyiec61850/CMakeLists.txt
++++ b/pyiec61850/CMakeLists.txt
+@@ -31,7 +31,9 @@ endif()
+ 
+ swig_link_libraries(iec61850 ${PYTHON_LIBRARIES} ${LIBS})
+ 
+-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/iec61850.py DESTINATION /usr/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
+-install(TARGETS _iec61850 LIBRARY DESTINATION /usr/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
++include(GNUInstallDirs)
++
++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/iec61850.py DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
++install(TARGETS _iec61850 LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}//python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
+ 
+ add_test(test_pyiec61850 ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/test_pyiec61850.py)
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/libiec61850/libiec61850_1.5.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/libiec61850/libiec61850_1.5.1.bb
similarity index 88%
rename from meta-openembedded/meta-networking/recipes-connectivity/libiec61850/libiec61850_1.5.0.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/libiec61850/libiec61850_1.5.1.bb
index fa42be6..3e5fc91 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/libiec61850/libiec61850_1.5.0.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/libiec61850/libiec61850_1.5.1.bb
@@ -10,13 +10,14 @@
 written in C. It is available under the GPLv3 license."
 HOMEPAGE = "http://libiec61850.com"
 SECTION = "console/network"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 DEPENDS = "swig-native python3"
-SRCREV = "fcefc746fea286aeaa40d2f62240216da81c85e5"
+SRCREV = "210cf30897631fe2006ac50483caf8fd616622a2"
 
 SRC_URI = "git://github.com/mz-automation/${BPN}.git;branch=v1.5;protocol=https \
            file://0001-pyiec61850-don-t-break-CMAKE_INSTALL_PATH-by-trying-.patch \
+           file://0001-pyiec61850-Use-CMAKE_INSTALL_LIBDIR-from-GNUInstallD.patch \
 "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/nanomsg/nanomsg_1.1.5.bb b/meta-openembedded/meta-networking/recipes-connectivity/nanomsg/nanomsg_1.1.5.bb
index 3c2ab98..005ad72 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/nanomsg/nanomsg_1.1.5.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/nanomsg/nanomsg_1.1.5.bb
@@ -4,7 +4,7 @@
 and easy to use. Implemented in C, it works on a wide range of operating \
 systems with no further dependencies."
 HOMEPAGE = "https://nanomsg.org/"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=587b3fd7fd291e418ff4d2b8f3904755"
 
 SECTION = "libs/networking"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-Makefile-fix-parallel-build-failure.patch b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-Makefile-fix-parallel-build-failure.patch
new file mode 100644
index 0000000..2149ee3
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan/0001-Makefile-fix-parallel-build-failure.patch
@@ -0,0 +1,44 @@
+From 2e84550b47b475d830622f41576992a1d45d6af0 Mon Sep 17 00:00:00 2001
+From: Zhao Yi <38274519+yizhao1@users.noreply.github.com>
+Date: Tue, 15 Mar 2022 19:28:26 +0800
+Subject: [PATCH] Makefile: fix parallel build failure (#267)
+
+* Makefile: fix parallel build failure
+
+Add src/_features.h as dependency for dbus.o to fix the parallel build
+failure:
+src/dbus.c:17:10: fatal error: _features.h: No such file or directory
+
+Upstream-Status: Backport
+[https://github.com/canonical/netplan/commit/2e84550b47b475d830622f41576992a1d45d6af0]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 0368e41..8ac7432 100644
+--- a/Makefile
++++ b/Makefile
+@@ -52,7 +52,7 @@ NOSETESTS3 ?= $(shell command -v nosetests-3 || command -v nosetests3 || echo tr
+ 
+ default: netplan/_features.py generate netplan-dbus dbus/io.netplan.Netplan.service doc/netplan.html doc/netplan.5 doc/netplan-generate.8 doc/netplan-apply.8 doc/netplan-try.8 doc/netplan-dbus.8 doc/netplan-get.8 doc/netplan-set.8
+ 
+-%.o: src/%.c
++%.o: src/%.c src/_features.h
+ 	$(CC) $(BUILDFLAGS) $(CFLAGS) $(LDFLAGS) -c $^ `pkg-config --cflags --libs glib-2.0 gio-2.0 yaml-0.1 uuid`
+ 
+ libnetplan.so.$(NETPLAN_SOVER): $(SRCS) abicompat.lds
+@@ -62,7 +62,7 @@ libnetplan.so.$(NETPLAN_SOVER): $(SRCS) abicompat.lds
+ generate: libnetplan.so.$(NETPLAN_SOVER) generate.o
+ 	$(CC) $(BUILDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(filter-out $<,$^) -L. -lnetplan `pkg-config --cflags --libs glib-2.0 gio-2.0 yaml-0.1 uuid`
+ 
+-netplan-dbus: libnetplan.so.$(NETPLAN_SOVER) src/_features.h dbus.o
++netplan-dbus: libnetplan.so.$(NETPLAN_SOVER) dbus.o
+ 	$(CC) $(BUILDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(filter-out $<,$(patsubst %.h,,$^)) -L. -lnetplan `pkg-config --cflags --libs libsystemd glib-2.0 gio-2.0 yaml-0.1 uuid`
+ 
+ src/_features.h: src/[^_]*.[hc]
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.104.bb b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.104.bb
index e266497..ea944fa 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.104.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/netplan/netplan_0.104.bb
@@ -7,7 +7,7 @@
 HOMEPAGE = "https://netplan.io"
 SECTION = "net/misc"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 S = "${WORKDIR}/git"
@@ -16,6 +16,7 @@
 
 SRC_URI = "git://github.com/CanonicalLtd/netplan.git;branch=main;protocol=https \
            file://0001-Makefile-do-not-use-Werror.patch \
+           file://0001-Makefile-fix-parallel-build-failure.patch \
            "
 
 SRC_URI:append:libc-musl = " file://0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.16.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.18.bb
similarity index 92%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.16.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.18.bb
index 19cac13..1d0c38e 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.16.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager-openvpn_1.8.18.bb
@@ -1,7 +1,7 @@
 SUMMARY = "NetworkManager-openvpn-plugin"
 SECTION = "net/misc"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=100d5a599bead70ddcd70dcd73f2e29c"
 
 DEPENDS = "dbus dbus-glib networkmanager openvpn intltool-native glib-2.0-native"
@@ -10,7 +10,7 @@
 
 SRC_URI = "${GNOME_MIRROR}/NetworkManager-openvpn/${@gnome_verdir("${PV}")}/NetworkManager-openvpn-${PV}.tar.xz"
 
-SRC_URI[sha256sum] = "8920de09c7ae5f1f520c83f844455db8faec31427350268fe2dd95b860f91fb5"
+SRC_URI[sha256sum] = "53dfb0acf64478adc728074f162f62e60bff62a605bd897eb88b267e7057927a"
 
 S = "${WORKDIR}/NetworkManager-openvpn-${PV}"
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch
deleted file mode 100644
index 19c8c74..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 9bcf4c81a559d1e7deac47b2e510d7f1e5837a02 Mon Sep 17 00:00:00 2001
-From: Pablo Saavedra <psaavedra@igalia.com>
-Date: Tue, 13 Mar 2018 17:36:20 +0100
-Subject: [PATCH] Fixed configure.ac: Fix pkgconfig sysroot locations
-
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 65ceffb..ad4b0fc 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -561,7 +561,7 @@ if test "$have_jansson" = "yes"; then
- 	AC_DEFINE(WITH_JANSSON, 1, [Define if JANSSON is enabled])
- 
- 	AC_CHECK_TOOLS(READELF, [eu-readelf readelf])
--	JANSSON_LIBDIR=`$PKG_CONFIG --variable=libdir jansson`
-+	JANSSON_LIBDIR=${PKG_CONFIG_SYSROOT_DIR}`$PKG_CONFIG --variable=libdir jansson`
- 	JANSSON_SONAME=`$READELF -d $JANSSON_LIBDIR/libjansson.so |sed -n 's/.*SONAME.*\[[\([^]]*\)]]/\1/p'`
- 
- 	if test "$JANSSON_SONAME" = ""; then
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-do-not-ask-host-for-ifcfg-defaults.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-do-not-ask-host-for-ifcfg-defaults.patch
new file mode 100644
index 0000000..92b1293
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-do-not-ask-host-for-ifcfg-defaults.patch
@@ -0,0 +1,24 @@
+From 37559b659e22886d5f55837d4f167ba5fda73e85 Mon Sep 17 00:00:00 2001
+From: Adrian Freihofer <adrian.freihofer@siemens.com>
+Date: Sun, 29 Aug 2021 15:50:35 +0200
+Subject: [PATCH] do-not-ask-host-for-ifcfg-defaults
+
+---
+ meson.build | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index d0cec83..289aa1b 100644
+--- a/meson.build
++++ b/meson.build
+@@ -304,8 +304,8 @@ else
+   distro = 'unknown'
+ endif
+ 
+-enable_ifcfg_rh = get_option('ifcfg_rh') or (distro == 'redhat')
+-enable_ifupdown = get_option('ifupdown') or (distro == 'debian')
++enable_ifcfg_rh = get_option('ifcfg_rh')
++enable_ifupdown = get_option('ifupdown')
+ 
+ config_plugins_default = get_option('config_plugins_default')
+ config_h.set_quoted('NM_CONFIG_DEFAULT_MAIN_PLUGINS', config_plugins_default)
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
deleted file mode 100644
index 86e8eaa..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From d0dead0478a070b96f37bd3b310443eaa8c93a25 Mon Sep 17 00:00:00 2001
-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
-Content-Transfer-Encoding: 8bit
-
-It was tried to get this work by adding python3-pygobject-native to DEPENDS but
-compile could not find (configure passed) python module gi.
-Anyway it is not necessary for us to have the settings/property docs.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-Signed-off-by: Vinicius Aquino <voa.aquino@gmail.com>
----
- Makefile.am  | 5 -----
- configure.ac | 5 -----
- 2 files changed, 10 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 5a62070..3d0ebcd 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -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 = \
--	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 8fe23de..dc24850 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -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
--	# If g-i is installed we know we have python, but we might not have pygobject
--	if ! "$PYTHON" -c 'from gi.repository import GObject' > /dev/null 2>&1; then
--		AC_MSG_ERROR(["--enable-introspection aims to build the settings documentation. This requires GObject introspection for python (pygobject)])
--	fi
--
- 	AC_PATH_PROG(PERL, perl)
- 	if test -z "$PERL"; then
- 		AC_MSG_ERROR([--enable-introspection requires perl])
--- 
-2.31.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch
deleted file mode 100644
index 1174189..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 6388b16b93ba805f8877a94f47509f701250812f Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Mon, 6 Jul 2020 19:33:54 -0700
-Subject: [PATCH] install firewalld to var-libdir rather than hardcod lib
-
-The oe install firewalld (split packages) to ${libdir}/firewalld/zones
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 358b01a..5745339 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -4778,7 +4778,7 @@ data/server.conf: $(srcdir)/data/server.conf.in
- 	$(AM_V_GEN) $(data_edit) $< >$@
- 
- if WITH_FIREWALLD_ZONE
--firewalldzonedir = $(prefix)/lib/firewalld/zones
-+firewalldzonedir = $(libdir)/firewalld/zones
- firewalldzone_DATA = data/nm-shared.xml
- endif
- 
--- 
-2.21.0
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/enable-dhcpcd.conf b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/enable-dhcpcd.conf
new file mode 100644
index 0000000..8da4fe0
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/enable-dhcpcd.conf
@@ -0,0 +1,2 @@
+[main]
+dhcp=dhcpcd
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/enable-iwd.conf b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/enable-iwd.conf
new file mode 100644
index 0000000..abb5937
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/enable-iwd.conf
@@ -0,0 +1,3 @@
+[device]
+wifi.iwd.autoconnect=yes
+wifi.backend=iwd
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.34.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.34.0.bb
deleted file mode 100644
index ec15aea..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.34.0.bb
+++ /dev/null
@@ -1,180 +0,0 @@
-SUMMARY = "NetworkManager"
-HOMEPAGE = "https://wiki.gnome.org/Projects/NetworkManager"
-SECTION = "net/misc"
-
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
-"
-
-DEPENDS = " \
-    intltool-native \
-    libxslt-native \
-    libnl \
-    udev \
-    util-linux \
-    libndp \
-    libnewt \
-    curl \
-"
-
-inherit gnomebase gettext update-rc.d systemd vala gobject-introspection gtk-doc update-alternatives upstream-version-is-even
-
-SRC_URI = " \
-    ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \
-    file://${BPN}.initd \
-    file://0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch \
-    file://0002-Do-not-create-settings-settings-property-documentati.patch \
-    file://0003-install-firewalld-to-var-libdir-rather-than-hardcod-.patch \
-"
-SRC_URI[sha256sum] = "819795d0899076204f5672421a58f1b1d9e393536ee87bb844b911e6243bf0bd"
-
-S = "${WORKDIR}/NetworkManager-${PV}"
-
-EXTRA_OECONF = " \
-    --disable-ifcfg-rh \
-    --disable-more-warnings \
-    --with-iptables=${sbindir}/iptables \
-    --with-tests \
-    --with-nmtui=yes \
-    --with-udev-dir=${nonarch_base_libdir}/udev \
-    --with-dhclient=no \
-    --with-dhcpcd=no \
-    --with-dhcpcanon=no \
-    --with-netconfig=no \
-"
-
-# stolen from https://github.com/void-linux/void-packages/blob/master/srcpkgs/NetworkManager/template
-# avoids:
-# | ../NetworkManager-1.16.0/libnm-core/nm-json.c:106:50: error: 'RTLD_DEEPBIND' undeclared (first use in this function); did you mean 'RTLD_DEFAULT'?
-CFLAGS:append:libc-musl = " \
-    -DRTLD_DEEPBIND=0 \
-"
-
-do_compile:prepend() {
-    export GIR_EXTRA_LIBS_PATH="${B}/src/libnm-client-impl/.libs"
-}
-
-PACKAGECONFIG ??= "nss ifupdown dnsmasq nmcli \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'wifi polkit', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit', '', d)} \
-"
-
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'nmcli', 'bash-completion', '', d)}
-
-PACKAGECONFIG[systemd] = " \
-    --with-systemdsystemunitdir=${systemd_unitdir}/system --with-session-tracking=systemd, \
-    --without-systemdsystemunitdir, \
-"
-PACKAGECONFIG[polkit] = "--enable-polkit,--disable-polkit,polkit"
-PACKAGECONFIG[bluez5] = "--enable-bluez5-dun,--disable-bluez5-dun,bluez5"
-# consolekit is not picked by shlibs, so add it to RDEPENDS too
-PACKAGECONFIG[consolekit] = "--with-session-tracking=consolekit,,consolekit,consolekit"
-PACKAGECONFIG[modemmanager] = "--with-modem-manager-1=yes,--with-modem-manager-1=no,modemmanager"
-PACKAGECONFIG[ppp] = "--enable-ppp,--disable-ppp,ppp,ppp"
-PACKAGECONFIG[dnsmasq] = "--with-dnsmasq=${bindir}/dnsmasq"
-PACKAGECONFIG[nss] = "--with-crypto=nss,,nss"
-PACKAGECONFIG[resolvconf] = "--with-resolvconf=${base_sbindir}/resolvconf,,,resolvconf"
-PACKAGECONFIG[gnutls] = "--with-crypto=gnutls,,gnutls"
-PACKAGECONFIG[wifi] = "--with-wext=yes --enable-wifi=yes,--with-wext=no --enable-wifi=no,,wpa-supplicant"
-PACKAGECONFIG[ifupdown] = "--enable-ifupdown,--disable-ifupdown"
-PACKAGECONFIG[qt4-x11-free] = "--enable-qt,--disable-qt,qt4-x11-free"
-PACKAGECONFIG[cloud-setup] = "--with-nm-cloud-setup=yes,--with-nm-cloud-setup=no"
-PACKAGECONFIG[nmcli] = "--with-nmcli=yes,--with-nmcli=no,readline"
-PACKAGECONFIG[ovs] = "--enable-ovs,--disable-ovs,jansson"
-PACKAGECONFIG[audit] = "--with-libaudit,--without-libaudit,audit"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
-
-PACKAGES =+ " \
-  ${PN}-nmcli ${PN}-nmcli-doc \
-  ${PN}-nmtui ${PN}-nmtui-doc \
-  ${PN}-adsl ${PN}-cloud-setup \
-"
-
-SYSTEMD_PACKAGES = "${PN} ${PN}-cloud-setup"
-
-FILES:${PN}-adsl = "${libdir}/NetworkManager/${PV}/libnm-device-plugin-adsl.so"
-
-FILES:${PN}-cloud-setup = " \
-    ${libexecdir}/nm-cloud-setup \
-    ${systemd_system_unitdir}/nm-cloud-setup.service \
-    ${systemd_system_unitdir}/nm-cloud-setup.timer \
-    ${libdir}/NetworkManager/dispatcher.d/90-nm-cloud-setup.sh \
-    ${libdir}/NetworkManager/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh \
-"
-ALLOW_EMPTY:${PN}-cloud-setup = "1"
-SYSTEMD_SERVICE:${PN}-cloud-setup = "${@bb.utils.contains('PACKAGECONFIG', 'cloud-setup', 'nm-cloud-setup.service nm-cloud-setup.timer', '', d)}"
-
-FILES:${PN} += " \
-    ${libexecdir} \
-    ${libdir}/NetworkManager/${PV}/*.so \
-    ${libdir}/NetworkManager \
-    ${libdir}/firewalld/zones \
-    ${nonarch_libdir}/NetworkManager/conf.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-down.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-up.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d/no-wait.d \
-    ${nonarch_libdir}/NetworkManager/VPN \
-    ${nonarch_libdir}/NetworkManager/system-connections \
-    ${datadir}/polkit-1 \
-    ${datadir}/dbus-1 \
-    ${nonarch_base_libdir}/udev/* \
-    ${systemd_system_unitdir} \
-    ${libdir}/pppd \
-"
-
-RRECOMMENDS:${PN} += "iptables \
-    ${@bb.utils.filter('PACKAGECONFIG', 'dnsmasq', d)} \
-"
-RCONFLICTS:${PN} = "connman"
-
-FILES:${PN}-dev += " \
-    ${datadir}/NetworkManager/gdb-cmd \
-    ${libdir}/pppd/*/*.la \
-    ${libdir}/NetworkManager/*.la \
-    ${libdir}/NetworkManager/${PV}/*.la \
-"
-
-FILES:${PN}-nmcli = " \
-    ${bindir}/nmcli \
-"
-
-FILES:${PN}-nmcli-doc = " \
-    ${mandir}/man1/nmcli* \
-"
-
-FILES:${PN}-nmtui = " \
-    ${bindir}/nmtui \
-    ${bindir}/nmtui-edit \
-    ${bindir}/nmtui-connect \
-    ${bindir}/nmtui-hostname \
-"
-
-FILES:${PN}-nmtui-doc = " \
-    ${mandir}/man1/nmtui* \
-"
-
-INITSCRIPT_NAME = "network-manager"
-SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'NetworkManager.service NetworkManager-dispatcher.service', '', d)}"
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','resolv-conf','',d)}"
-ALTERNATIVE_TARGET[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv-conf.NetworkManager','',d)}"
-ALTERNATIVE_LINK_NAME[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv.conf','',d)}"
-
-do_install:append() {
-    install -Dm 0755 ${WORKDIR}/${BPN}.initd ${D}${sysconfdir}/init.d/network-manager
-
-    rm -rf ${D}/run ${D}${localstatedir}/run
-
-    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-        # For read-only filesystem, do not create links during bootup
-        ln -sf ../run/NetworkManager/resolv.conf ${D}${sysconfdir}/resolv-conf.NetworkManager
-
-        # systemd v210 and newer do not need this rule file
-        rm ${D}/${nonarch_base_libdir}/udev/rules.d/84-nm-drivers.rules
-    fi
-}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.36.2.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.36.2.bb
new file mode 100644
index 0000000..b09ff18
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.36.2.bb
@@ -0,0 +1,248 @@
+SUMMARY = "NetworkManager"
+HOMEPAGE = "https://wiki.gnome.org/Projects/NetworkManager"
+SECTION = "net/misc"
+
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
+"
+
+DEPENDS = " \
+    coreutils-native \
+    intltool-native \
+    libxslt-native \
+    libnl \
+    udev \
+    util-linux \
+    libndp \
+    libnewt \
+    curl \
+    dbus \
+"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase gettext update-rc.d systemd gobject-introspection gtk-doc update-alternatives upstream-version-is-even
+
+SRC_URI = " \
+    ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \
+    file://${BPN}.initd \
+    file://enable-dhcpcd.conf \
+    file://enable-iwd.conf \
+    file://0001-do-not-ask-host-for-ifcfg-defaults.patch \
+"
+SRC_URI[sha256sum] = "ab855cbe3b41832e9a3b003810e7c7313dfe19e630d29806d14d87fdd1470cab"
+
+S = "${WORKDIR}/NetworkManager-${PV}"
+
+# ['auto', 'symlink', 'file', 'netconfig', 'resolvconf']
+NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT ??= "auto"
+
+# ['dhcpcanon', 'dhclient', 'dhcpcd', 'internal', 'nettools']
+NETWORKMANAGER_DHCP_DEFAULT ??= "internal"
+
+EXTRA_OEMESON = "\
+    -Difcfg_rh=false \
+    -Dtests=yes \
+    -Dnmtui=true \
+    -Dudev_dir=${nonarch_base_libdir}/udev \
+    -Dlibpsl=false \
+    -Dqt=false \
+    -Dconfig_dns_rc_manager_default=${NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT} \
+    -Dconfig_dhcp_default=${NETWORKMANAGER_DHCP_DEFAULT} \
+    -Ddhcpcanon=false \
+"
+
+# stolen from https://github.com/void-linux/void-packages/blob/master/srcpkgs/NetworkManager/template
+# avoids:
+# | ../NetworkManager-1.16.0/libnm-core/nm-json.c:106:50: error: 'RTLD_DEEPBIND' undeclared (first use in this function); did you mean 'RTLD_DEFAULT'?
+CFLAGS:append:libc-musl = " \
+    -DRTLD_DEEPBIND=0 \
+"
+
+do_compile:prepend() {
+    export GI_TYPELIB_PATH="${B}}/src/libnm-client-impl${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}"
+}
+
+PACKAGECONFIG ??= "readline nss ifupdown dnsmasq nmcli vala \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'wifi polkit', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit', '', d)} \
+"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'nmcli', 'bash-completion', '', d)}
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'vala', 'vala', '', d)}
+
+PACKAGECONFIG[systemd] = "\
+    -Dsystemdsystemunitdir=${systemd_unitdir}/system -Dsession_tracking=systemd,\
+    -Dsystemdsystemunitdir=no -Dsystemd_journal=false -Dsession_tracking=no\
+"
+PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false,polkit"
+PACKAGECONFIG[bluez5] = "-Dbluez5_dun=true,-Dbluez5_dun=false,bluez5"
+# consolekit is not picked by shlibs, so add it to RDEPENDS too
+PACKAGECONFIG[consolekit] = "-Dsession_tracking_consolekit=true,-Dsession_tracking_consolekit=false,consolekit,consolekit"
+PACKAGECONFIG[modemmanager] = "-Dmodem_manager=true,-Dmodem_manager=false,modemmanager mobile-broadband-provider-info"
+PACKAGECONFIG[ppp] = "-Dppp=true,-Dppp=false,ppp,ppp"
+PACKAGECONFIG[dnsmasq] = "-Ddnsmasq=${bindir}/dnsmasq"
+PACKAGECONFIG[nss] = "-Dcrypto=nss,,nss"
+PACKAGECONFIG[resolvconf] = "-Dresolvconf=${base_sbindir}/resolvconf,-Dresolvconf=no,,resolvconf"
+PACKAGECONFIG[gnutls] = "-Dcrypto=gnutls,,gnutls"
+PACKAGECONFIG[wifi] = "-Dwext=true -Dwifi=true,-Dwext=false -Dwifi=false"
+PACKAGECONFIG[iwd] = "-Diwd=true,-Diwd=false"
+PACKAGECONFIG[ifupdown] = "-Difupdown=true,-Difupdown=false"
+PACKAGECONFIG[cloud-setup] = "-Dnm_cloud_setup=true,-Dnm_cloud_setup=false"
+PACKAGECONFIG[nmcli] = "-Dnmcli=true,-Dnmcli=false"
+PACKAGECONFIG[readline] = "-Dreadline=libreadline,,readline"
+PACKAGECONFIG[libedit] = "-Dreadline=libedit,,libedit"
+PACKAGECONFIG[ovs] = "-Dovs=true,-Dovs=false,jansson"
+PACKAGECONFIG[audit] = "-Dlibaudit=yes,-Dlibaudit=no"
+PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux"
+PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false"
+PACKAGECONFIG[dhcpcd] = "-Ddhcpcd=yes,-Ddhcpcd=no,,dhcpcd"
+PACKAGECONFIG[dhclient] = "-Ddhclient=yes,-Ddhclient=no,,dhcp"
+PACKAGECONFIG[concheck] = "-Dconcheck=true,-Dconcheck=false"
+
+
+PACKAGES =+ " \
+    ${PN}-adsl \
+    ${PN}-bluetooth \
+    ${PN}-cloud-setup \
+    ${PN}-nmcli ${PN}-nmcli-doc \
+    ${PN}-nmtui ${PN}-nmtui-doc \
+    ${PN}-wifi \
+    ${PN}-wwan \
+    ${PN}-ovs ${PN}-ovs-doc \
+    ${PN}-ppp \
+"
+
+SYSTEMD_PACKAGES = "${PN} ${PN}-cloud-setup"
+
+NETWORKMANAGER_PLUGINDIR = "${libdir}/NetworkManager/${PV}"
+
+FILES:${PN}-adsl = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-adsl.so"
+
+FILES:${PN}-bluetooth = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-bluetooth.so"
+
+FILES:${PN}-cloud-setup = " \
+    ${libexecdir}/nm-cloud-setup \
+    ${systemd_system_unitdir}/nm-cloud-setup.service \
+    ${systemd_system_unitdir}/nm-cloud-setup.timer \
+    ${libdir}/NetworkManager/dispatcher.d/90-nm-cloud-setup.sh \
+    ${libdir}/NetworkManager/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh \
+"
+ALLOW_EMPTY:${PN}-cloud-setup = "1"
+SYSTEMD_SERVICE:${PN}-cloud-setup = "${@bb.utils.contains('PACKAGECONFIG', 'cloud-setup', 'nm-cloud-setup.service nm-cloud-setup.timer', '', d)}"
+
+FILES:${PN}-nmcli = " \
+    ${bindir}/nmcli \
+"
+
+FILES:${PN}-nmcli-doc = " \
+    ${mandir}/man1/nmcli* \
+"
+
+FILES:${PN}-nmtui = " \
+    ${bindir}/nmtui \
+    ${bindir}/nmtui-edit \
+    ${bindir}/nmtui-connect \
+    ${bindir}/nmtui-hostname \
+"
+
+FILES:${PN}-nmtui-doc = " \
+    ${mandir}/man1/nmtui* \
+"
+
+FILES:${PN}-wifi = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wifi.so"
+
+FILES:${PN}-wwan = "\
+    ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wwan.so \
+    ${NETWORKMANAGER_PLUGINDIR}/libnm-wwan.so \
+"
+
+FILES:${PN}-ovs = "\
+    ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-ovs.so \
+    ${systemd_system_unitdir}/NetworkManager.service.d/NetworkManager-ovs.conf \
+"
+
+FILES:${PN}-ovs-doc = "\
+    ${mandir}/man7/nm-openvswitch.7* \
+"
+
+FILES:${PN}-ppp = "\
+    ${NETWORKMANAGER_PLUGINDIR}/libnm-ppp-plugin.so \
+    ${libdir}/pppd/*/nm-pppd-plugin.so \
+"
+
+FILES:${PN}-dev += " \
+    ${libdir}/pppd/*/*.la \
+    ${libdir}/NetworkManager/*.la \
+    ${NETWORKMANAGER_PLUGINDIR}/*.la \
+"
+
+FILES:${PN} += " \
+    ${libexecdir} \
+    ${libdir}/NetworkManager \
+    ${nonarch_libdir}/firewalld/zones \
+    ${nonarch_libdir}/NetworkManager/conf.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-down.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-up.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d/no-wait.d \
+    ${nonarch_libdir}/NetworkManager/VPN \
+    ${nonarch_libdir}/NetworkManager/system-connections \
+    ${datadir}/polkit-1 \
+    ${datadir}/dbus-1 \
+    ${nonarch_base_libdir}/udev/* \
+    ${systemd_system_unitdir} \
+"
+
+RRECOMMENDS:${PN} += "\
+    iptables \
+    ${@bb.utils.filter('PACKAGECONFIG', 'dnsmasq', d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','adsl','${PN}-adsl','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','bluez5','${PN}-bluetooth','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','cloud-setup','${PN}-cloud-setup','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','nmcli','${PN}-nmcli','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','nmtui','${PN}-nmtui','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','wifi','${PN}-wifi','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','wwan','${PN}-wwan','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','ovs','${PN}-ovs','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','ppp','${PN}-ppp','',d)} \
+"
+RCONFLICTS:${PN} = "connman"
+
+
+INITSCRIPT_NAME = "network-manager"
+SYSTEMD_SERVICE:${PN} = "\
+    NetworkManager.service \
+    NetworkManager-dispatcher.service \
+"
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','resolv-conf','',d)}"
+ALTERNATIVE_TARGET[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv-conf.NetworkManager','',d)}"
+ALTERNATIVE_LINK_NAME[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv.conf','',d)}"
+
+do_install:append() {
+    install -Dm 0755 ${WORKDIR}/${BPN}.initd ${D}${sysconfdir}/init.d/network-manager
+
+    rm -rf ${D}/run ${D}${localstatedir}/run
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        # For read-only filesystem, do not create links during bootup
+        ln -sf ../run/NetworkManager/resolv.conf ${D}${sysconfdir}/resolv-conf.NetworkManager
+
+        # systemd v210 and newer do not need this rule file
+        rm ${D}/${nonarch_base_libdir}/udev/rules.d/84-nm-drivers.rules
+    fi
+
+    # Enable iwd if compiled
+    if ${@bb.utils.contains('PACKAGECONFIG','iwd','true','false',d)}; then
+        install -Dm 0644 ${WORKDIR}/enable-iwd.conf ${D}${libdir}/NetworkManager/conf.d/enable-iwd.conf
+    fi
+
+    # Enable dhcpd if compiled
+    if ${@bb.utils.contains('PACKAGECONFIG','dhcpcd','true','false',d)}; then
+        install -Dm 0644 ${WORKDIR}/enable-dhcpcd.conf ${D}${libdir}/NetworkManager/conf.d/enable-dhcpcd.conf
+    fi
+}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_8.10.bb b/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_8.20.bb
similarity index 84%
rename from meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_8.10.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_8.20.bb
index 7a61f74..022ba85 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_8.10.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_8.20.bb
@@ -1,11 +1,11 @@
 SUMMARY = "Open client for Cisco AnyConnect VPN"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING.LGPL;md5=243b725d71bb5df4a1e5920b344b86ad"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING.LGPL;md5=8c2e1ec1540fb3e0beb68361344cba7e"
 
 SRC_URI = " \
     git://git.infradead.org/users/dwmw2/openconnect.git;branch=master \
 "
-SRCREV = "9d287e40c57233190a51b6434ba7345370e36f38"
+SRCREV = "03a3b9c76a9b6d0a65073b6bebbc1192e3445507"
 
 DEPENDS = "vpnc libxml2 krb5 gettext-native"
 RDEPENDS:${PN} = "bash python3-core vpnc-script"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/rdate/rdate_1.5.bb b/meta-openembedded/meta-networking/recipes-connectivity/rdate/rdate_1.5.bb
index cd4db12..67e7c1c 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/rdate/rdate_1.5.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/rdate/rdate_1.5.bb
@@ -8,7 +8,7 @@
 HOMEPAGE= "https://www.aelius.com/njh/rdate/"
 SECTION = "Applications/System"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
 
 SRC_URI = "https://www.aelius.com/njh/${BPN}/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/relayd/relayd_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/relayd/relayd_git.bb
index 1dd50f6..1da18d7 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/relayd/relayd_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/relayd/relayd_git.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Layer 3 relay daemon"
 SECTION = "console/network"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://main.c;endline=17;md5=86aad799085683e0a2e1c2684a20bab2"
 
 DEPENDS = "libubox"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.12.bb b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.12.bb
index 84eee44..dc6e4b5 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.12.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.14.12.bb
@@ -1,7 +1,7 @@
 HOMEPAGE = "https://www.samba.org/"
 SECTION = "console/network"
 
-LICENSE = "GPL-3.0+ & LGPL-3.0+ & GPL-2.0+"
+LICENSE = "GPL-3.0-or-later & LGPL-3.0-or-later & GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
                     file://${COREBASE}/meta/files/common-licenses/LGPL-3.0-or-later;md5=c51d3eef3be114124d11349ca0d7e117 \
                     file://${COREBASE}/meta/files/common-licenses/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/sethdlc/sethdlc_1.18.bb b/meta-openembedded/meta-networking/recipes-connectivity/sethdlc/sethdlc_1.18.bb
index 744e782..4e3c157 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/sethdlc/sethdlc_1.18.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/sethdlc/sethdlc_1.18.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "set Linux HDLC packet radio modem driver port information"
 HOMEPAGE = "https://www.kernel.org/pub/linux/utils/net/hdlc"
 SECTION = "comm"
-LICENSE = "GPLv2 & GPLv2+ "
+LICENSE = "GPL-2.0-only & GPL-2.0-or-later "
 LIC_FILES_CHKSUM = "file://sethdlc.c;endline=10;md5=90f936879e9f8b755a138aeb348782eb"
 
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.19.bb b/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.19.bb
index 9c479d2..26b335d 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.19.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.19.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "snort - a free lightweight network intrusion detection system for UNIX and Windows."
 HOMEPAGE = "http://www.snort.org/"
 SECTION = "net"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=78fa8ef966b48fbf9095e13cc92377c5"
 
 DEPENDS = "xz libpcap libpcre daq libdnet util-linux daq-native libtirpc bison-native"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0002-add-an-option-to-specify-iptables-location.patch b/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0002-add-an-option-to-specify-iptables-location.patch
index 884fa16..ee935eb 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0002-add-an-option-to-specify-iptables-location.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/0002-add-an-option-to-specify-iptables-location.patch
@@ -23,11 +23,9 @@
  setup.py | 65 ++++++++++++++++++++++++++++++++------------------------
  1 file changed, 37 insertions(+), 28 deletions(-)
 
-diff --git a/setup.py b/setup.py
-index 09204d3..2343bc9 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -246,41 +246,50 @@ shutil.copytree('src', 'staging')
+@@ -245,45 +245,50 @@ shutil.copytree('src', 'staging')
  os.unlink(os.path.join('staging', 'ufw-init'))
  os.unlink(os.path.join('staging', 'ufw-init-functions'))
  
@@ -36,7 +34,11 @@
  iptables_dir = ''
  
 -for e in ['iptables']:
--    for dir in ['/sbin', '/bin', '/usr/sbin', '/usr/bin', '/usr/local/sbin', \
+-    # Historically iptables was in /sbin, then later also symlinked from
+-    # /usr/sbin/iptables to /sbin/iptables. Debian bullseye moves iptables
+-    # to /usr/sbin with no symlink in /sbin except on upgrades. To accomodate
+-    # buildds that may still have the old iptables, search /usr/sbin first
+-    for dir in ['/usr/sbin', '/sbin', '/usr/bin', '/bin', '/usr/local/sbin', \
 -                '/usr/local/bin']:
 -        if e == "iptables":
 -            if os.path.exists(os.path.join(dir, e)):
@@ -49,6 +51,14 @@
 -        if iptables_exe != "":
 -            break
 -
+-
+-if iptables_exe == '':
+-    print("ERROR: could not find required binary 'iptables'", file=sys.stderr)
+-    sys.exit(1)
+-
+-for e in ['ip6tables', 'iptables-restore', 'ip6tables-restore']:
+-    if not os.path.exists(os.path.join(iptables_dir, e)):
+-        print("ERROR: could not find required binary '%s'" % (e), file=sys.stderr)
 +if "--iptables-dir" in sys.argv:
 +    iptables_dir = sys.argv[sys.argv.index("--iptables-dir") + 1]
 +    iptables_exe = os.path.join(iptables_dir, "iptables")
@@ -59,7 +69,7 @@
 +
 +if not iptables_set:
 +    for e in ['iptables']:
-+        for dir in ['/sbin', '/bin', '/usr/sbin', '/usr/bin', '/usr/local/sbin', \
++        for dir in ['/usr/sbin', '/sbin', '/usr/bin', '/bin', '/usr/local/sbin', \
 +                    '/usr/local/bin']:
 +            if e == "iptables":
 +                if os.path.exists(os.path.join(dir, e)):
@@ -68,16 +78,10 @@
 +                    print("Found '%s'" % iptables_exe)
 +                else:
 +                    continue
- 
--if iptables_exe == '':
--    print("ERROR: could not find required binary 'iptables'", file=sys.stderr)
--    sys.exit(1)
++
 +            if iptables_exe != "":
 +                break
- 
--for e in ['ip6tables', 'iptables-restore', 'ip6tables-restore']:
--    if not os.path.exists(os.path.join(iptables_dir, e)):
--        print("ERROR: could not find required binary '%s'" % (e), file=sys.stderr)
++
 +    if iptables_exe == '':
 +        print("ERROR: could not find required binary 'iptables'", file=sys.stderr)
          sys.exit(1)
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/setuptools.patch b/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/setuptools.patch
new file mode 100644
index 0000000..ad5391c
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw/setuptools.patch
@@ -0,0 +1,20 @@
+Move to setuptools as distutils is now deprecated.
+
+Upstream-Status: Submitted [https://code.launchpad.net/~tgamblin/ufw/distutils-to-setuptools]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/setup.py b/setup.py
+index cb67a6a..de648d3 100644
+--- a/setup.py
++++ b/setup.py
+@@ -25,8 +25,8 @@
+ #
+ 
+ from __future__ import print_function
+-from distutils.command.install import install as _install
+-from distutils.core import setup
++from setuptools.command.install import install as _install
++from setuptools import setup
+ import errno
+ import os
+ import re
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw_0.36.bb b/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw_0.36.1.bb
similarity index 87%
rename from meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw_0.36.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw_0.36.1.bb
index 40188ce..70216a8 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw_0.36.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/ufw/ufw_0.36.1.bb
@@ -5,21 +5,20 @@
 to be uncomplicated and easy to use."
 HOMEPAGE = "https://launchpad.net/ufw"
 SECTION = "net"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
 
-SRC_URI = "https://launchpad.net/ufw/0.36/0.36/+download/ufw-0.36.tar.gz \
+SRC_URI = "https://launchpad.net/ufw/0.36/0.36.1/+download/ufw-0.36.1.tar.gz \
            file://0001-optimize-boot.patch \
            file://0002-add-an-option-to-specify-iptables-location.patch \
            file://0003-only-make-one-reference-to-env.patch \
+           file://setuptools.patch \
            "
+SRC_URI[sha256sum] = "1c57e78fbf2970f0cc9c56ea87a231e6d83d825e55b9e31e2c88b91b0ea03c8c"
 
 UPSTREAM_CHECK_URI = "https://launchpad.net/ufw"
 
-SRC_URI[md5sum] = "6d8ab1506da21ae003f4628f93d05781"
-SRC_URI[sha256sum] = "754b22ae5edff0273460ac9f57509c3938187e0cf4fb9692c6a02833fff33cfc"
-
-inherit setuptools3 features_check systemd update-rc.d
+inherit setuptools3_legacy features_check systemd update-rc.d
 
 RDEPENDS:${PN} = " \
                   iptables \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/vlan/vlan_1.9.bb b/meta-openembedded/meta-networking/recipes-connectivity/vlan/vlan_1.9.bb
index 8f899e6..035d494 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/vlan/vlan_1.9.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/vlan/vlan_1.9.bb
@@ -1,7 +1,7 @@
 SUMMARY = "VLAN provides vconfig utility"
 HOMEPAGE = "http://www.candelatech.com/~greear/vlan.html"
 SECTION = "misc"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://vconfig.c;beginline=1;endline=19;md5=094ca47de36c20c598b15b32c270ce0a"
 
 SRC_URI = "https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/vlan/1.9-3ubuntu10.6/${BPN}_${PV}.orig.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc_0.5.3.bb b/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc_0.5.3.bb
index 421ebaa..adc2a72 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc_0.5.3.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/vpnc/vpnc_0.5.3.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.unix-ag.uni-kl.de/~massar/vpnc/"
 AUTHOR = "Maurice Massar vpnc@unix-ag.uni-kl.de"
 SECTION = "net"
-LICENSE = "GPL-2.0+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=173b74cb8ac640a9992c03f3bce22a33"
 
 DEPENDS += "libgcrypt"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_5.2.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_5.2.0.bb
index a597fb3..78a24bc 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_5.2.0.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_5.2.0.bb
@@ -6,7 +6,7 @@
 HOMEPAGE = "https://www.wolfssl.com/products/wolfssl"
 BUGTRACKER = "https://github.com/wolfssl/wolfssl/issues"
 SECTION = "libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 PROVIDES += "cyassl"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_0.7.5.bb b/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_0.7.5.bb
index 59905b5..f893a4d 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_0.7.5.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/atftp/atftp_0.7.5.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Advanced TFTP server and client"
 SECTION = "net"
 HOMEPAGE = "http://packages.debian.org/atftp"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f65159f73e603f89d6867d43191900e5"
 
 SRCREV = "00921e75728e3681b051c2e48c59e36c6cfa2e97"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.8.bb b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.8.bb
index c41d0e6..1f87bdd 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.8.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.8.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Kernel based automounter for linux"
 SECTION = "utils"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ee9324a6f564bb2376b63878ac396798"
 
 DEPENDS += "libtirpc flex-native bison-native e2fsprogs openssl libxml2 util-linux cyrus-sasl libnsl2"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0001-Allow-saslauthd-to-be-built-outside-of-source-tree-w.patch b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0001-Allow-saslauthd-to-be-built-outside-of-source-tree-w.patch
deleted file mode 100644
index c89822c..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0001-Allow-saslauthd-to-be-built-outside-of-source-tree-w.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 6515f3e7656d97d40a6a1cf4eb3ada193a698309 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 12 Sep 2018 23:18:12 +0800
-Subject: [PATCH] Allow saslauthd to be built outside of source tree while
- configuring with `--enable-ldapdb'
-
-[snip]
-| powerpc-wrs-linux-gcc [snip] -I../common
-|../../git/saslauthd/lak.c:58:10: fatal error: crypto-compat.h:
-No such file or directory
-[snip]
-
-The crypto-compat.h locates in git/common/, it should be                                                                                                                           |
-`-I../../git/common'
-
-Remove useless `-I$(top_srcdir)/../include' which was incorrectly
-added by commit `faae590 cleanup misc INCLUDES for different build paths'
-
-Upstream-Status: Submitted [https://github.com/cyrusimap/cyrus-sasl]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- saslauthd/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/saslauthd/Makefile.am b/saslauthd/Makefile.am
-index d7244be..864b29b 100644
---- a/saslauthd/Makefile.am
-+++ b/saslauthd/Makefile.am
-@@ -34,7 +34,7 @@ saslcache_SOURCES = saslcache.c
- 
- EXTRA_DIST	= saslauthd.8 saslauthd.mdoc include \
- 		  getnameinfo.c getaddrinfo.c LDAP_SASLAUTHD
--AM_CPPFLAGS	= -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/../include -I$(top_builddir)/common
-+AM_CPPFLAGS	= -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_builddir)/common -I$(top_srcdir)/common
- DEFS            = @DEFS@ -DSASLAUTHD_CONF_FILE_DEFAULT=\"@sysconfdir@/saslauthd.conf\" -I. -I$(srcdir) -I..
- 
- 
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0001-makeinit.sh-fix-parallel-build-issue.patch b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0001-makeinit.sh-fix-parallel-build-issue.patch
deleted file mode 100644
index bf232ac..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0001-makeinit.sh-fix-parallel-build-issue.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From bb693db0e1d1d693e8ca31fcbc4f46d1674eeca1 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 13 Sep 2018 14:20:57 +0800
-Subject: [PATCH] makeinit.sh: fix parallel build issue
-
-While building plugins, each <plugin>.c requires a <plugin>_init.c,
-and the <plugin>_init.c is dynamically generated by makeinit.sh.
-
-But the makeinit.sh generates all *_init.c (13 mechanism plugins,
-3 auxprop plugins) at one time, if there are multiple plugins,
-there will be multiple makeinit.sh invoking.
-
-It caused a parallel issue, the *_init.c files will be generated
-repeatedly.
-
-It occasionally generate dapdb_init.c incorrectly
-[snip plugins/ldapdb_init.c]
-SASL_CANONUSER_PLUG_INIT( ldapdb )
-SASL_CANONUSER_PLUG_INIT( ldapdb )
-SASL_CANONUSER_PLUG_INIT( ldapdb )
-[snip plugins/ldapdb_init.c]
-
-Let makeinit.sh generate the expected <plugin>_init.c which
-is exactly required by <plugin>.c.
-
-Upstream-Status: Submitted [https://github.com/cyrusimap/cyrus-sasl/pull/532]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- plugins/Makefile.am |  2 +-
- plugins/makeinit.sh | 19 ++++++++++++++-----
- 2 files changed, 15 insertions(+), 6 deletions(-)
-
-diff --git a/plugins/Makefile.am b/plugins/Makefile.am
-index 929f6a4..81e7f0b 100644
---- a/plugins/Makefile.am
-+++ b/plugins/Makefile.am
-@@ -149,4 +149,4 @@ passdss_init.c sasldb_init.c sql_init.c ldapdb_init.c
- CLEANFILES=$(init_src)
- 
- ${init_src}: $(srcdir)/makeinit.sh
--	$(SHELL) $(srcdir)/makeinit.sh
-+	$(SHELL) $(srcdir)/makeinit.sh $@
-diff --git a/plugins/makeinit.sh b/plugins/makeinit.sh
-index cc65f7d..3131877 100644
---- a/plugins/makeinit.sh
-+++ b/plugins/makeinit.sh
-@@ -1,7 +1,9 @@
-+plugin_init="$1"
- # mechanism plugins
- for mech in anonymous crammd5 digestmd5 scram gssapiv2 kerberos4 login ntlm otp passdss plain srp gs2; do
-+    if [ ${plugin_init} = "${mech}_init.c" ];then
- 
--echo "
-+        echo "
- #include <config.h>
- 
- #include <string.h>
-@@ -43,13 +45,16 @@ BOOL APIENTRY DllMain( HANDLE hModule,
- 
- SASL_CLIENT_PLUG_INIT( $mech )
- SASL_SERVER_PLUG_INIT( $mech )
--" > ${mech}_init.c
-+"       > ${mech}_init.c
-+        echo "generating $1"
-+    fi # End of `if [ ${plugin_init} = "${mech}_init.c" ];then'
- done
- 
- # auxprop plugins
- for auxprop in sasldb sql ldapdb; do
-+    if [ ${plugin_init} = "${auxprop}_init.c" ];then
- 
--echo "
-+        echo "
- #include <config.h>
- 
- #include <string.h>
-@@ -86,8 +91,12 @@ BOOL APIENTRY DllMain( HANDLE hModule,
- #endif
- 
- SASL_AUXPROP_PLUG_INIT( $auxprop )
--" > ${auxprop}_init.c
-+"       > ${auxprop}_init.c
-+        echo "generating $1"
-+    fi # End of `if [ ${plugin_init} = "${auxprop}_init.c" ];then'
- done
- 
- # ldapdb is also a canon_user plugin
--echo "SASL_CANONUSER_PLUG_INIT( ldapdb )" >> ldapdb_init.c
-+if [ ${plugin_init} = "ldapdb_init.c" ];then
-+    echo "SASL_CANONUSER_PLUG_INIT( ldapdb )" >> ldapdb_init.c
-+fi
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0001-sample-Rename-dprintf-to-cyrus_dprintf.patch b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0001-sample-Rename-dprintf-to-cyrus_dprintf.patch
new file mode 100644
index 0000000..4c6d61d
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0001-sample-Rename-dprintf-to-cyrus_dprintf.patch
@@ -0,0 +1,91 @@
+From ade70f39c4aa5a8830462d9ccf3b8f8dd968c0d8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 28 Feb 2022 11:10:26 -0800
+Subject: [PATCH] sample: Rename dprintf to cyrus_dprintf
+
+This avoids shadowing the dprintf implementations in glibc
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sample/client.c | 12 ++++++------
+ sample/common.c |  2 +-
+ sample/common.h |  2 +-
+ 3 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/sample/client.c b/sample/client.c
+index e723c6b7..6a04f428 100644
+--- a/sample/client.c
++++ b/sample/client.c
+@@ -241,9 +241,9 @@ int mysasl_negotiate(FILE *in, FILE *out, sasl_conn_t *conn)
+     int r, c;
+ 
+     /* get the capability list */
+-    dprintf(0, "receiving capability list... ");
++    cyrus_dprintf(0, "receiving capability list... ");
+     len = recv_string(in, buf, sizeof buf);
+-    dprintf(0, "%s\n", buf);
++    cyrus_dprintf(0, "%s\n", buf);
+ 
+     if (mech) {
+ 	/* make sure that 'mech' appears in 'buf' */
+@@ -262,7 +262,7 @@ int mysasl_negotiate(FILE *in, FILE *out, sasl_conn_t *conn)
+ 	return -1;
+     }
+     
+-    dprintf(1, "using mechanism %s\n", chosenmech);
++    cyrus_dprintf(1, "using mechanism %s\n", chosenmech);
+ 
+     /* we send up to 3 strings;
+        the mechanism chosen, the presence of initial response,
+@@ -276,7 +276,7 @@ int mysasl_negotiate(FILE *in, FILE *out, sasl_conn_t *conn)
+     }
+ 
+     for (;;) {
+-	dprintf(2, "waiting for server reply...\n");
++	cyrus_dprintf(2, "waiting for server reply...\n");
+ 
+ 	c = fgetc(in);
+ 	switch (c) {
+@@ -303,10 +303,10 @@ int mysasl_negotiate(FILE *in, FILE *out, sasl_conn_t *conn)
+ 	}
+ 
+ 	if (data) {
+-	    dprintf(2, "sending response length %d...\n", len);
++	    cyrus_dprintf(2, "sending response length %d...\n", len);
+ 	    send_string(out, data, len);
+ 	} else {
+-	    dprintf(2, "sending null response...\n");
++	    cyrus_dprintf(2, "sending null response...\n");
+ 	    send_string(out, "", 0);
+ 	}
+     }
+diff --git a/sample/common.c b/sample/common.c
+index 712549fd..d138e450 100644
+--- a/sample/common.c
++++ b/sample/common.c
+@@ -127,7 +127,7 @@ int recv_string(FILE *f, char *buf, int buflen)
+ 
+ int debuglevel = 0;
+ 
+-int dprintf(int lvl, const char *fmt, ...)
++int cyrus_dprintf(int lvl, const char *fmt, ...)
+ {
+     va_list ap;
+     int ret = 0;
+diff --git a/sample/common.h b/sample/common.h
+index 819d0101..cd56907a 100644
+--- a/sample/common.h
++++ b/sample/common.h
+@@ -43,7 +43,7 @@ extern int send_string(FILE *f, const char *s, int l);
+ extern int recv_string(FILE *f, char *buf, int buflen);
+ 
+ extern int debuglevel;
+-extern int dprintf(int lvl, const char *fmt, ...);
++extern int cyrus_dprintf(int lvl, const char *fmt, ...);
+ 
+ extern void saslerr(int why, const char *what);
+ extern void saslfail(int why, const char *what);
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0004-configure.ac-fix-condition-for-suppliment-snprintf-i.patch b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0004-configure.ac-fix-condition-for-suppliment-snprintf-i.patch
deleted file mode 100644
index 68d09c3..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/0004-configure.ac-fix-condition-for-suppliment-snprintf-i.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 98082f81da1b49876081ff1ab340e952755f985a Mon Sep 17 00:00:00 2001
-From: OBATA Akio <obache@users.noreply.github.com>
-Date: Fri, 11 May 2018 18:36:26 +0900
-Subject: [PATCH] configure.ac: fix condition for suppliment snprintf
- implementation
-
-$sasl_cv_snprintf means requremnt of suppliment snprintf
-implementation, not existence of system snprintf implementation,
-
-Upstream-Status: Submitted [https://github.com/cyrusimap/cyrus-sasl/pull/512]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index ac59f14..9804e98 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1264,7 +1264,7 @@ SNPRINTFOBJS=""
- LTSNPRINTFOBJS=""
- AC_CHECK_FUNC(snprintf, [AC_DEFINE(HAVE_SNPRINTF,[],[Does the system have snprintf()?])], [sasl_cv_snprintf=yes])
- AC_CHECK_FUNC(vsnprintf, [AC_DEFINE(HAVE_VSNPRINTF,[],[Does the system have vsnprintf()?])], [sasl_cv_snprintf=yes])
--if test $sasl_cv_snprintf = no; then
-+if test $sasl_cv_snprintf = yes; then
-        AC_LIBOBJ(snprintf)
-        SNPRINTFOBJS="snprintf.o"
-        LTSNPRINTFOBJS="snprintf.lo"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/CVE-2019-19906.patch b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/CVE-2019-19906.patch
index b94780f..33a9e3f 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/CVE-2019-19906.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/CVE-2019-19906.patch
@@ -18,7 +18,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/lib/common.c b/lib/common.c
-index 305311d..445c5d5 100644
+index d9104c8..fef82db 100644
 --- a/lib/common.c
 +++ b/lib/common.c
 @@ -190,7 +190,7 @@ int _sasl_add_string(char **out, size_t *alloclen,
@@ -27,9 +27,9 @@
  
 -  addlen=strlen(add); /* only compute once */
 +  addlen=strlen(add)+1; /* only compute once */
-   if (_buf_alloc(out, alloclen, (*outlen)+addlen)!=SASL_OK)
+   if (_buf_alloc(out, alloclen, (*outlen)+addlen+1)!=SASL_OK)
      return SASL_NOMEM;
  
 -- 
-2.7.4
+2.25.1
 
diff --git a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch
index aa271b8..1e6f996 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl/avoid-to-call-AC_TRY_RUN.patch
@@ -9,41 +9,42 @@
 on cross-compile environment by definition AC_ARG_ENABLE enable-spnego
 
 Signed-off-by: Roy.Li <rongqing.li@windriver.com>
-
 ---
- m4/sasl2.m4 | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
+ m4/sasl2.m4 | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
 
 diff --git a/m4/sasl2.m4 b/m4/sasl2.m4
-index 56e0504..cf62607 100644
+index 80371ef..ff70083 100644
 --- a/m4/sasl2.m4
 +++ b/m4/sasl2.m4
-@@ -314,7 +314,18 @@ if test "$gssapi" != no; then
-   cmu_save_LIBS="$LIBS"
-   LIBS="$LIBS $GSSAPIBASE_LIBS"
- 
--  AC_MSG_CHECKING([for SPNEGO support in GSSAPI libraries])
-+  AC_ARG_ENABLE([spnego],
-+              [AC_HELP_STRING([--enable-spnego=<DIR>],
-+                              [enable SPNEGO support in GSSAPI libraries [no]])],
-+              [spnego=$enableval],
-+              [spnego=no])
-+
-+  if test "$spnego" = no; then
-+       echo "no"
-+  elif test "$spnego" = yes; then
-+       AC_DEFINE(HAVE_GSS_SPNEGO,,[Define if your GSSAPI implementation supports SPNEGO])
-+  else
-+       AC_MSG_CHECKING([for SPNEGO support in GSSAPI libraries])
-   AC_TRY_RUN([
+@@ -316,6 +316,18 @@ if test "$gssapi" != no; then
+   AC_CACHE_CHECK([for SPNEGO support in GSSAPI libraries],[ac_cv_gssapi_supports_spnego],[
+     cmu_save_LIBS="$LIBS"
+     LIBS="$LIBS $GSSAPIBASE_LIBS"
++    AC_ARG_ENABLE([spnego],
++                [AC_HELP_STRING([--enable-spnego=<DIR>],
++                                [enable SPNEGO support in GSSAPI libraries [no]])],
++                [spnego=$enableval],
++                [spnego=no])
++  
++    if test "$spnego" = no; then
++         echo "no"
++    elif test "$spnego" = yes; then
++         AC_DEFINE(HAVE_GSS_SPNEGO,,[Define if your GSSAPI implementation supports SPNEGO])
++    else
++         AC_MSG_CHECKING([for SPNEGO support in GSSAPI libraries])
+     AC_TRY_RUN([
  #ifdef HAVE_GSSAPI_H
  #include <gssapi.h>
-@@ -341,7 +352,7 @@ int main(void)
- 	AC_MSG_RESULT(yes) ],
- 	AC_MSG_RESULT(no))
-   LIBS="$cmu_save_LIBS"
+@@ -343,7 +355,7 @@ int main(void)
+   AS_IF([test "$ac_cv_gssapi_supports_spnego" = yes],[
+     AC_DEFINE(HAVE_GSS_SPNEGO,,[Define if your GSSAPI implementation supports SPNEGO])
+   ])
 -
 +   fi
  else
    AC_MSG_RESULT([disabled])
  fi
+-- 
+2.25.1
+
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.28.bb
similarity index 90%
rename from meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl_2.1.27.bb
rename to meta-openembedded/meta-networking/recipes-daemons/cyrus-sasl/cyrus-sasl_2.1.28.bb
index 43b69f7..98899df 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.28.bb
@@ -5,17 +5,14 @@
 LICENSE = "BSD-4-Clause"
 LIC_FILES_CHKSUM = "file://COPYING;md5=3f55e0974e3d6db00ca6f57f2d206396"
 
-SRCREV = "e41cfb986c1b1935770de554872247453fdbb079"
+SRCREV = "7a6b45b177070198fed0682bea5fa87c18abb084"
 
-SRC_URI = "git://github.com/cyrusimap/cyrus-sasl;protocol=https;branch=master \
+SRC_URI = "git://github.com/cyrusimap/cyrus-sasl;protocol=https;branch=cyrus-sasl-2.1 \
            file://avoid-to-call-AC_TRY_RUN.patch \
-           file://Fix-hardcoded-libdir.patch \
            file://debian_patches_0014_avoid_pic_overwrite.diff \
+           file://0001-sample-Rename-dprintf-to-cyrus_dprintf.patch \
            file://saslauthd.service \
            file://saslauthd.conf \
-           file://0004-configure.ac-fix-condition-for-suppliment-snprintf-i.patch \
-           file://0001-Allow-saslauthd-to-be-built-outside-of-source-tree-w.patch \
-           file://0001-makeinit.sh-fix-parallel-build-issue.patch \
            file://CVE-2019-19906.patch \
            "
 
diff --git a/meta-openembedded/meta-networking/recipes-daemons/igmpproxy/igmpproxy_0.3.bb b/meta-openembedded/meta-networking/recipes-daemons/igmpproxy/igmpproxy_0.3.bb
index 119475f..e8567cc 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/igmpproxy/igmpproxy_0.3.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/igmpproxy/igmpproxy_0.3.bb
@@ -1,7 +1,7 @@
 SUMMARY = "simple dynamic multicast routing daemon that only uses IGMP signalling"
 HOMEPAGE = "http://sourceforge.net/projects/igmpproxy/"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=432040ff3a55670c1dec0c32b209ad69"
 
 SRC_URI = "https://github.com/pali/igmpproxy/releases/download/${PV}/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool_1.3.bb b/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool_1.3.bb
index 3ed1767..b91ca53 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool_1.3.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/ippool/ippool_1.3.bb
@@ -9,7 +9,7 @@
 "
 HOMEPAGE = "http://www.openl2tp.org/"
 SECTION = "console/network"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 SRC_URI = "https://sourceforge.net/projects/openl2tp/files/${BPN}/${PV}/${BPN}-${PV}.tar.gz \
            file://runtest.sh \
diff --git a/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.1.6.bb b/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.1.6.bb
index e85fdd7..921f7d4 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.1.6.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.1.6.bb
@@ -5,7 +5,7 @@
 programs used to manage it. iSCSI is a protocol for distributed \
 disk access using SCSI commands sent over Internet Protocol networks."
 HOMEPAGE = "http://www.open-iscsi.com/"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 SECTION = "net"
 DEPENDS = "openssl flex-native bison-native open-isns util-linux kmod"
 DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived_2.2.2.bb b/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived_2.2.2.bb
index d04b738..204d2fd 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived_2.2.2.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/keepalived/keepalived_2.2.2.bb
@@ -7,7 +7,7 @@
 "
 HOMEPAGE = "http://www.keepalived.org/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "http://www.keepalived.org/software/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-daemons/networkd-dispatcher/networkd-dispatcher_2.1.bb b/meta-openembedded/meta-networking/recipes-daemons/networkd-dispatcher/networkd-dispatcher_2.1.bb
index 5159cf5..e929534 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/networkd-dispatcher/networkd-dispatcher_2.1.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/networkd-dispatcher/networkd-dispatcher_2.1.bb
@@ -4,7 +4,7 @@
 systemd-networkd(8)."
 AUTHOR = "Clayton Craft and others"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=84dcc94da3adb52b53ae4fa38fe49e5d"
 
 inherit features_check systemd
diff --git a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.22.01.bb b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.22.01.bb
index b4ee3ed..8ce324d 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.22.01.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.22.01.bb
@@ -11,7 +11,7 @@
 Ericsson, Nokia Siemens Networks, HP and Sun Microsystems as founding members."
 HOMEPAGE = "http://www.opensaf.org"
 SECTION = "admin"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7"
 
 DEPENDS = "libxml2 python3"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/postfix/files/0006-correct-signature-of-closefrom-API.patch b/meta-openembedded/meta-networking/recipes-daemons/postfix/files/0006-correct-signature-of-closefrom-API.patch
deleted file mode 100644
index 95ca03b..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/postfix/files/0006-correct-signature-of-closefrom-API.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 56bec31c4117fddee3a141bcca6c585aa8ddbbe2 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.
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-networking/recipes-daemons/postfix/files/main.cf b/meta-openembedded/meta-networking/recipes-daemons/postfix/files/main.cf
index e75c6fc..22c5748 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/postfix/files/main.cf
+++ b/meta-openembedded/meta-networking/recipes-daemons/postfix/files/main.cf
@@ -1,4 +1,4 @@
-compatibility_level = 2
+compatibility_level = 3.6
 smtputf8_enable = no
 
 # Configure your domain and accounts
diff --git a/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.6.4.bb b/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.6.5.bb
similarity index 82%
rename from meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.6.4.bb
rename to meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.6.5.bb
index 54c8eab..343a8b2 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.6.4.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.6.5.bb
@@ -12,7 +12,6 @@
             file://0003-makedefs-Use-native-compiler-to-build-makedefs.test.patch \
             file://0004-Fix-icu-config.patch \
             file://0005-makedefs-add-lnsl-and-lresolv-to-SYSLIBS-by-default.patch \
-            file://0006-correct-signature-of-closefrom-API.patch \
            "
-SRC_URI[sha256sum] = "8de0619dcf2fa7c215a80cf84b82ab71631d4d4722cba0949725ce3e18031d4e"
+SRC_URI[sha256sum] = "300fa8811cea20d01d25c619d359bffab82656e704daa719e0c9afc4ecff4808"
 UPSTREAM_CHECK_REGEX = "postfix\-(?P<pver>3\.6(\.\d+)+).tar.gz"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/proftpd/proftpd_1.3.7a.bb b/meta-openembedded/meta-networking/recipes-daemons/proftpd/proftpd_1.3.7c.bb
similarity index 98%
rename from meta-openembedded/meta-networking/recipes-daemons/proftpd/proftpd_1.3.7a.bb
rename to meta-openembedded/meta-networking/recipes-daemons/proftpd/proftpd_1.3.7c.bb
index cdebd24..686f1e5 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/proftpd/proftpd_1.3.7a.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/proftpd/proftpd_1.3.7c.bb
@@ -1,10 +1,10 @@
 SUMMARY = "Secure and configurable FTP server"
 SECTION = "net"
 HOMEPAGE = "http://www.proftpd.org"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fb0d1484d11915fa88a6a7702f1dc184"
 
-SRCREV = "715eadc1aa4f6b07d69f9d09558e9cb471e51d87"
+SRCREV = "75aa739805a6e05eeb31189934a3d324e7862962"
 BRANCH = "1.3.7"
 
 SRC_URI = "git://github.com/proftpd/proftpd.git;branch=${BRANCH};protocol=https \
diff --git a/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd_1.0.50.bb b/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd_1.0.50.bb
index e29d063..edc2af3 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd_1.0.50.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/pure-ftpd/pure-ftpd_1.0.50.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Pure-FTPd is a free (BSD license), secure, production-quality and standard-conformant FTP server."
 HOMEPAGE = "http://www.pureftpd.org/project/pure-ftpd"
 SECTION = "net"
-LICENSE = "BSD-0-Clause"
+LICENSE = "0BSD"
 LIC_FILES_CHKSUM = "file://COPYING;md5=a4496a14dea009df36c612707d455d02"
 
 DEPENDS = "libcap virtual/crypt"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/squid/squid_4.15.bb b/meta-openembedded/meta-networking/recipes-daemons/squid/squid_4.15.bb
index 5af00d6..a1122a3 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/squid/squid_4.15.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/squid/squid_4.15.bb
@@ -7,7 +7,7 @@
 "
 HOMEPAGE = "http://www.squid-cache.org"
 SECTION = "web"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 MAJ_VER = "${@oe.utils.trim_version("${PV}", 1)}"
 MIN_VER = "${@oe.utils.trim_version("${PV}", 2)}"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/vblade/vblade_25.bb b/meta-openembedded/meta-networking/recipes-daemons/vblade/vblade_25.bb
index 688add5..7c37fc1 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/vblade/vblade_25.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/vblade/vblade_25.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Virtual EtherDrive blade AoE target"
 SECTION = "admin"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/aoetools/files/vblade/"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd_3.0.5.bb b/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd_3.0.5.bb
index 08238c1..cce3e66 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd_3.0.5.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/vsftpd/vsftpd_3.0.5.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Very Secure FTP server"
 HOMEPAGE = "https://security.appspot.com/vsftpd.html"
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=a6067ad950b28336613aed9dd47b1271"
 
 DEPENDS = "libcap openssl"
diff --git a/meta-openembedded/meta-networking/recipes-devtools/python/python3-ldap_3.4.0.bb b/meta-openembedded/meta-networking/recipes-devtools/python/python3-ldap_3.4.0.bb
index 42f113d..4299058 100644
--- a/meta-openembedded/meta-networking/recipes-devtools/python/python3-ldap_3.4.0.bb
+++ b/meta-openembedded/meta-networking/recipes-devtools/python/python3-ldap_3.4.0.bb
@@ -4,7 +4,7 @@
 instead of C API. The module mainly acts as a wrapper for the \
 OpenLDAP 2.x libraries. Errors will appear as exceptions."
 HOMEPAGE = "http://www.python-ldap.org/"
-LICENSE = "PSF"
+LICENSE = "PSF-2.0"
 LIC_FILES_CHKSUM = "file://LICENCE;md5=36ce9d726d0321b73c1521704d07db1b"
 
 DEPENDS = "python3 openldap cyrus-sasl"
diff --git a/meta-openembedded/meta-networking/recipes-devtools/python/python3-scapy_2.4.5.bb b/meta-openembedded/meta-networking/recipes-devtools/python/python3-scapy_2.4.5.bb
index d318c27..0f66dfd 100644
--- a/meta-openembedded/meta-networking/recipes-devtools/python/python3-scapy_2.4.5.bb
+++ b/meta-openembedded/meta-networking/recipes-devtools/python/python3-scapy_2.4.5.bb
@@ -9,7 +9,7 @@
 sending invalid frames, injecting your own 802.11 frames, combining technics \
 (VLAN hopping+ARP cache poisoning, VOIP decoding on WEP encrypted channel, ...), etc."
 SECTION = "security"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
diff --git a/meta-openembedded/meta-networking/recipes-extended/dlm/dlm_4.0.9.bb b/meta-openembedded/meta-networking/recipes-extended/dlm/dlm_4.0.9.bb
index b99c30c..3e699d2 100644
--- a/meta-openembedded/meta-networking/recipes-extended/dlm/dlm_4.0.9.bb
+++ b/meta-openembedded/meta-networking/recipes-extended/dlm/dlm_4.0.9.bb
@@ -17,7 +17,7 @@
 UPSTREAM_CHECK_URI = "https://pagure.io/dlm/releases"
 UPSTREAM_CHECK_REGEX = "dlm-(?P<pver>\d+(\.\d+)+)"
 
-LICENSE = "LGPLv2+ & GPLv2 & GPLv2+"
+LICENSE = "LGPL-2.0-or-later & GPL-2.0-only & GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://README.license;md5=8f0bbcdd678df1bce9863492b6c8832d"
 
 S = "${WORKDIR}/dlm-dlm-${PV}"
diff --git a/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet_1.22.bb b/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet_1.22.bb
index 28d740c..ad0a00e 100644
--- a/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet_1.22.bb
+++ b/meta-openembedded/meta-networking/recipes-extended/kronosnet/kronosnet_1.22.bb
@@ -5,7 +5,7 @@
            designed for High Availability use cases, where redundancy, security, \
            fault tolerance and fast fail-over are the core requirements of your application."
 HOMEPAGE = "https://kronosnet.org/"
-LICENSE = "GPL-2.0+ & LGPL-2.1"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.applications;md5=751419260aa954499f7abaabaa882bbe \
                     file://COPYING.libraries;md5=2d5025d4aa3495befef8f17206a5b0a1"
 SECTION = "libs"
diff --git a/meta-openembedded/meta-networking/recipes-filter/arno-iptables-firewall/arno-iptables-firewall_2.1.1.bb b/meta-openembedded/meta-networking/recipes-filter/arno-iptables-firewall/arno-iptables-firewall_2.1.1.bb
index 8b78433..bba11a8 100644
--- a/meta-openembedded/meta-networking/recipes-filter/arno-iptables-firewall/arno-iptables-firewall_2.1.1.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/arno-iptables-firewall/arno-iptables-firewall_2.1.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "IPTables based firewall scripts"
 HOMEPAGE = "http://rocky.eld.leidenuniv.nl/joomla/index.php?option=com_content&view=article&id=45&Itemid=63"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://gpl_license.txt;md5=11c7b65c4a4acb9d5175f7e9bf99c403"
 
 SRCREV = "a96b81da4a9b619e4045805f5f13a1e982c95663"
diff --git a/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/conntrack-tools_1.4.6.bb b/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/conntrack-tools_1.4.6.bb
index 0e009da..de6a72e 100644
--- a/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/conntrack-tools_1.4.6.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/conntrack-tools/conntrack-tools_1.4.6.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Connection tracking userspace tools for Linux"
 SECTION = "net"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 
 DEPENDS = "libnfnetlink libnetfilter-conntrack libnetfilter-cttimeout \
diff --git a/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables_2.0.11.bb b/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables_2.0.11.bb
index fd83762..d522b51 100644
--- a/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables_2.0.11.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/ebtables/ebtables_2.0.11.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://sourceforge.net/projects/ebtables/"
 DESCRIPTION = "Utility for basic Ethernet frame filtering on a Linux bridge, \
                advanced logging, MAC DNAT/SNAT and brouting."
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=53b4a999993871a28ab1488fdbd2e73e"
 SECTION = "net"
 
diff --git a/meta-openembedded/meta-networking/recipes-filter/ipset/ipset_7.15.bb b/meta-openembedded/meta-networking/recipes-filter/ipset/ipset_7.15.bb
index 7af7dea..0e928a3 100644
--- a/meta-openembedded/meta-networking/recipes-filter/ipset/ipset_7.15.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/ipset/ipset_7.15.bb
@@ -3,7 +3,7 @@
 
 DESCRIPTION = "Administration tool for IP sets"
 HOMEPAGE = "http://ipset.netfilter.org"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 SECTION = "base"
 
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-acct_1.0.3.bb b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-acct_1.0.3.bb
index 974035c..d92c676 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-acct_1.0.3.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-acct_1.0.3.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "libnetfilter_acct is the userspace library providing interface to extended accounting infrastructure."
 HOMEPAGE = "http://netfilter.org/projects/libnetfilter_acct/index.html"
 SECTION = "libs"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 DEPENDS = "libnfnetlink libmnl"
 
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-conntrack_1.0.8.bb b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-conntrack_1.0.8.bb
index cd89433..180f076 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-conntrack_1.0.8.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-conntrack_1.0.8.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Userspace library providing a programming interface (API) to the Linux kernel netfilter connection tracking state table"
 HOMEPAGE = "http://www.netfilter.org/projects/libnetfilter_conntrack/index.html"
 SECTION = "libs"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 DEPENDS = "libnfnetlink libmnl"
 
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cthelper_1.0.0.bb b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cthelper_1.0.0.bb
index 92cb23d..fea520d 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cthelper_1.0.0.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cthelper_1.0.0.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Userspace library providing a programming interface (API) to the Linux kernel netfilter user-space helper infrastructure"
 HOMEPAGE = "http://www.netfilter.org/projects/libnetfilter_cthelper/index.html"
 SECTION = "libs"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 DEPENDS = "libmnl"
 
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cttimeout_1.0.0.bb b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cttimeout_1.0.0.bb
index ff32f34..dc87d9b 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cttimeout_1.0.0.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-cttimeout_1.0.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Netfilter connection tracking timeout library"
 DESCRIPTION = "Userspace library providing a programming interface (API) to the Linux kernel netfilter fine-grain connection tracking timeout infrastructure"
 SECTION = "libs"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 DEPENDS = "libmnl"
 
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-log_1.0.2.bb b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-log_1.0.2.bb
index 03c0af5..699b096 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-log_1.0.2.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-log_1.0.2.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Userspace library providing a programming interface (API) to the Linux kernel netfilter log message (NFLOG)"
 HOMEPAGE = "http://www.netfilter.org/projects/libnetfilter_log/index.html"
 SECTION = "libs"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 DEPENDS = "libnfnetlink libmnl"
 SRCREV = "b0e4be94c0b8f68d4e912402b93a130063c34e17"
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-queue_1.0.5.bb b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-queue_1.0.5.bb
index f806b07..580c29e 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-queue_1.0.5.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/libnetfilter-queue_1.0.5.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Userspace library providing a programming interface (API) to access the Linux kernel netfilter packet queue"
 HOMEPAGE = "http://www.netfilter.org/projects/libnetfilter_queue/index.html"
 SECTION = "libs"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 DEPENDS = "libnfnetlink libmnl"
 
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnfnetlink/libnfnetlink_1.0.1.bb b/meta-openembedded/meta-networking/recipes-filter/libnfnetlink/libnfnetlink_1.0.1.bb
index f7951ff..64271c7 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnfnetlink/libnfnetlink_1.0.1.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/libnfnetlink/libnfnetlink_1.0.1.bb
@@ -6,7 +6,7 @@
 management tools in userspace."
 HOMEPAGE = "http://www.netfilter.org/projects/libnfnetlink/index.html"
 SECTION = "libs"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.2.1.bb b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.2.1.bb
index ec4619e..4447963 100644
--- a/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.2.1.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/libnftnl/libnftnl_1.2.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Library for low-level interaction with nftables Netlink's API over libmnl"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=79808397c3355f163c012616125c9e26"
 SECTION = "libs"
 DEPENDS = "libmnl"
diff --git a/meta-openembedded/meta-networking/recipes-filter/nfacct/nfacct_1.0.2.bb b/meta-openembedded/meta-networking/recipes-filter/nfacct/nfacct_1.0.2.bb
index 3245455..20a8412 100644
--- a/meta-openembedded/meta-networking/recipes-filter/nfacct/nfacct_1.0.2.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/nfacct/nfacct_1.0.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "nfacct is the command line tool to create/retrieve/delete accounting objects"
 HOMEPAGE = "http://netfilter.org/projects/nfacct/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 
 UPSTREAM_CHECK_URI = "ftp://ftp.netfilter.org/pub/nfacct/"
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/0001-examples-compile-with-make-check-and-add-AM_CPPFLAGS.patch b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/0001-examples-compile-with-make-check-and-add-AM_CPPFLAGS.patch
new file mode 100644
index 0000000..65ab2df
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/0001-examples-compile-with-make-check-and-add-AM_CPPFLAGS.patch
@@ -0,0 +1,39 @@
+From 18a08fb7f0443f8bde83393bd6f69e23a04246b3 Mon Sep 17 00:00:00 2001
+From: Pablo Neira Ayuso <pablo@netfilter.org>
+Date: Tue, 22 Feb 2022 00:56:36 +0100
+Subject: [PATCH] examples: compile with `make check' and add AM_CPPFLAGS
+
+Compile examples via `make check' like libnftnl does. Use AM_CPPFLAGS to
+specify local headers via -I.
+
+Unfortunately, `make distcheck' did not catch this compile time error in
+my system, since it was using the nftables/libnftables.h file of the
+previous nftables release.
+
+Fixes: 5b364657a35f ("build: missing SUBIRS update")
+Fixes: caf2a6ad2d22 ("examples: add libnftables example program")
+Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+
+Upstream-Status: Backport
+[http://git.netfilter.org/nftables/commit/?id=18a08fb7f0443f8bde83393bd6f69e23a04246b3]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ examples/Makefile.am | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/examples/Makefile.am b/examples/Makefile.am
+index c972170d..3b8b0b67 100644
+--- a/examples/Makefile.am
++++ b/examples/Makefile.am
+@@ -1,4 +1,6 @@
+-noinst_PROGRAMS	= nft-buffer		\
++check_PROGRAMS	= nft-buffer		\
+ 		  nft-json-file
+ 
++AM_CPPFLAGS = -I$(top_srcdir)/include
++
+ LDADD = $(top_builddir)/src/libnftables.la
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_1.0.1.bb b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_1.0.2.bb
similarity index 84%
rename from meta-openembedded/meta-networking/recipes-filter/nftables/nftables_1.0.1.bb
rename to meta-openembedded/meta-networking/recipes-filter/nftables/nftables_1.0.2.bb
index 91df154..fd8e26e 100644
--- a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_1.0.1.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_1.0.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Netfilter Tables userspace utillites"
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d1a78fdd879a263a5e0b42d1fc565e79"
 
 DEPENDS = "libmnl libnftnl bison-native \
@@ -9,8 +9,11 @@
 # Ensure we reject the 0.099 version by matching at least two dots
 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] = "3ceeba625818e81a0be293e9dd486c3ef799ebd92165270f1e57e9a201efa423"
+SRC_URI = "http://www.netfilter.org/projects/nftables/files/${BP}.tar.bz2 \
+           file://0001-examples-compile-with-make-check-and-add-AM_CPPFLAGS.patch \
+          "
+
+SRC_URI[sha256sum] = "0b28a36ffcf4567b841de7bd3f37918b1fed27859eb48bdec51e1f7a83954c02"
 
 inherit autotools manpages pkgconfig
 
diff --git a/meta-openembedded/meta-networking/recipes-irc/weechat/weechat_3.4.bb b/meta-openembedded/meta-networking/recipes-irc/weechat/weechat_3.4.1.bb
similarity index 76%
rename from meta-openembedded/meta-networking/recipes-irc/weechat/weechat_3.4.bb
rename to meta-openembedded/meta-networking/recipes-irc/weechat/weechat_3.4.1.bb
index ca404eb..64cd107 100644
--- a/meta-openembedded/meta-networking/recipes-irc/weechat/weechat_3.4.bb
+++ b/meta-openembedded/meta-networking/recipes-irc/weechat/weechat_3.4.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Full-featured IRC plugin: multi-servers, proxy support, IPv6, SASL authentication, nicklist, DCC, and many other features"
 HOMEPAE = "https://weechat.org/"
 SECTION = "net"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 DEPENDS = "openssl zlib icu libgcrypt gnutls curl aspell"
@@ -10,7 +10,7 @@
            file://0001-use-pkg-config-for-gcrypt-instead.patch \
            "
 
-SRC_URI[sha256sum] = "7cd3dcc7029e888de49e13ebbcc3749586ff59c9d97f89f5eeb611067c7bb94c"
+SRC_URI[sha256sum] = "7e088109ad5dfbcb08a9a6b1dd70ea8236093fed8a13ee9d9c98881d7b1aeae7"
 
 inherit cmake pkgconfig
 
@@ -18,7 +18,10 @@
 PACKAGECONFIG[ncurses] = "-DENABLE_NCURSES=ON,-DENABLE_NCURSES=OFF,ncurses"
 PACKAGECONFIG[python] = "-DENABLE_PYTHON=ON,-DENABLE_PYTHON=OFF,python3,python3"
 
-EXTRA_OECMAKE:append = " -DENABLE_PHP=OFF -DENABLE_TCL=OFF -DENABLE_LUA=OFF -DENABLE_JAVASCRIPT=OFF -DENABLE_RUBY=OFF -DENABLE_GUILE=OFF -DENABLE_PERL=OFF -DENABLE_ASPELL=ON"
+EXTRA_OECMAKE:append = " -DENABLE_PHP=OFF -DENABLE_TCL=OFF -DENABLE_LUA=OFF \
+                         -DENABLE_JAVASCRIPT=OFF -DENABLE_RUBY=OFF \
+                         -DENABLE_GUILE=OFF -DENABLE_PERL=OFF -DENABLE_ASPELL=ON \
+                         -DLIBDIR=${libdir}"
 
 do_configure:prepend(){
     #  Make sure we get dependencies from recipe-sysroot
diff --git a/meta-openembedded/meta-networking/recipes-irc/znc/znc_1.8.2.bb b/meta-openembedded/meta-networking/recipes-irc/znc/znc_1.8.2.bb
index 724ef0c..1517384 100644
--- a/meta-openembedded/meta-networking/recipes-irc/znc/znc_1.8.2.bb
+++ b/meta-openembedded/meta-networking/recipes-irc/znc/znc_1.8.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "ZNC, an advanced IRC bouncer"
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
 DEPENDS = "openssl zlib icu"
diff --git a/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard.inc b/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard.inc
index a3a7867..6fac24e 100644
--- a/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard.inc
+++ b/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard.inc
@@ -6,7 +6,7 @@
 and easier to use."
 SECTION = "networking"
 HOMEPAGE = "https://www.wireguard.io/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://../COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb
index b0c5bbd..5f887b8 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.1.bb
@@ -40,6 +40,7 @@
 
 PARALLEL_MAKE = ""
 CCACHE = ""
+CLEANBROKEN = "1"
 
 TARGET_CC_ARCH += "${LDFLAGS}"
 
diff --git a/meta-openembedded/meta-networking/recipes-protocols/nopoll/nopoll_0.4.6.b400.bb b/meta-openembedded/meta-networking/recipes-protocols/nopoll/nopoll_0.4.6.b400.bb
index 8c57d29..816e513 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/nopoll/nopoll_0.4.6.b400.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/nopoll/nopoll_0.4.6.b400.bb
@@ -7,7 +7,7 @@
 allowing message based (handler notified) programming or stream oriented access."
 
 HOMEPAGE = "http://www.aspl.es/nopoll/"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f0504124678c1b3158146e0630229298 \
                    "
 DEPENDS = "openssl"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc b/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc
index 7968a44..15eb65a 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc
+++ b/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc
@@ -7,7 +7,7 @@
 HOMEPAGE = "http://www.openflow.org"
 
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=e870c934e2c3d6ccf085fd7cf0a1e2e2"
 
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb b/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb
index 6ce15a2..15cebf4 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/openl2tp/openl2tp_1.8.bb
@@ -9,7 +9,7 @@
 SECTION = "net"
 
 # cli and usl use license LGPL-2.1
-LICENSE = "GPL-2.0 & LGPL-2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=e9d9259cbbf00945adc25a470c1d3585 \
                     file://LICENSE;md5=f8970abd5ea9be701a0deedf5afd77a5 \
                     file://cli/LICENSE;md5=9c1387a3c5213aa40671438af3e00793 \
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openlldp/openlldp_1.0.1.bb b/meta-openembedded/meta-networking/recipes-protocols/openlldp/openlldp_1.0.1.bb
index abfa713..acde9c3 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/openlldp/openlldp_1.0.1.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/openlldp/openlldp_1.0.1.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Link Layer Discovery Protocol for Linux that includes support for DCBX"
 HOMEPAGE = "http://open-lldp.org/start"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8c2bc283e65df398ced5f5b747e78162"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/pptp-linux/pptp-linux_1.10.0.bb b/meta-openembedded/meta-networking/recipes-protocols/pptp-linux/pptp-linux_1.10.0.bb
index 71046ce..0d26c33 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/pptp-linux/pptp-linux_1.10.0.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/pptp-linux/pptp-linux_1.10.0.bb
@@ -6,7 +6,7 @@
     cable and ADSL internet service providers."
 HOMEPAGE = "http://pptpclient.sourceforge.net"
 SECTION = "net"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 inherit perlnative
diff --git a/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc b/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc
index b3574a7..d368311 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc
+++ b/meta-openembedded/meta-networking/recipes-protocols/quagga/quagga.inc
@@ -9,7 +9,7 @@
 SECTION = "net"
 
 
-LICENSE = "GPL-2.0 & LGPL-2.0"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=81bcece21748c91ba9992349a91ec11d \
                     file://COPYING.LIB;md5=01ef24401ded36cd8e5d18bfe947240c"
 
diff --git a/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.13.bb b/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.13.bb
index 363eeeb..846abca 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.13.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.13.bb
@@ -1,7 +1,7 @@
 SUMMARY = "A user-mode PPPoE client and server suite for Linux"
 HOMEPAGE = "http://www.roaringpenguin.com/products/pppoe"
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=a194eaefae2be54ee3221339b10d0581"
 
 PR = "r10"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/tsocks/tsocks_1.8beta5.bb b/meta-openembedded/meta-networking/recipes-protocols/tsocks/tsocks_1.8beta5.bb
index 09699f3..8099fa5 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/tsocks/tsocks_1.8beta5.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/tsocks/tsocks_1.8beta5.bb
@@ -6,7 +6,7 @@
 SOCKS server as necessary."
 HOMEPAGE = "http://sourceforge.net/projects/tsocks/"
 SECTION = "net"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760"
 
 SRC_URI = "http://downloads.sourceforge.net/tsocks/tsocks-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd_1.3.16.bb b/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd_1.3.16.bb
index d96a28e..08bab4a 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd_1.3.16.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/xl2tpd/xl2tpd_1.3.16.bb
@@ -5,7 +5,7 @@
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "git://github.com/xelerance/xl2tpd.git;branch=master;protocol=https"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb b/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb
index 753d832..4f8d4f6 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb
@@ -9,7 +9,7 @@
 both hosts (are supposed to) renumber."
 AUTHOR = "Anand Kumria <wildfire@progsoc.uts.edu.au>"
 HOMEPAGE = "http://www.progsoc.org/~wildfire/zeroconf/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4 \
                     file://zeroconf.c;beginline=1;endline=13;md5=a5bada96e1e34b08eb7446b28e2630b2"
 SECTION = "net"
diff --git a/meta-openembedded/meta-networking/recipes-support/aoetools/aoetools_36.bb b/meta-openembedded/meta-networking/recipes-support/aoetools/aoetools_36.bb
index 676d2e5..9c9e5ca 100644
--- a/meta-openembedded/meta-networking/recipes-support/aoetools/aoetools_36.bb
+++ b/meta-openembedded/meta-networking/recipes-support/aoetools/aoetools_36.bb
@@ -6,7 +6,7 @@
 "
 HOMEPAGE = "http://sourceforge.net/projects/${BPN}"
 SECTION = "admin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 RRECOMMENDS:${PN} = "kernel-module-aoe"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/arptables/arptables_git.bb b/meta-openembedded/meta-networking/recipes-support/arptables/arptables_git.bb
index a4eaa9f..898b696 100644
--- a/meta-openembedded/meta-networking/recipes-support/arptables/arptables_git.bb
+++ b/meta-openembedded/meta-networking/recipes-support/arptables/arptables_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Administration tool for arp packet filtering"
 SECTION = "net"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
 SRCREV = "efae8949e31f8b2eb6290f377a28384cecaf105a"
 PV = "0.0.5+git${SRCPV}"
diff --git a/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils_1.7.1.bb b/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils_1.7.1.bb
index 85a7e59..cf0fc1c 100644
--- a/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils_1.7.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/bridge-utils/bridge-utils_1.7.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Tools for ethernet bridging"
 HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge"
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=f9d20a453221a1b7e32ae84694da2c37"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/chrony/chrony_4.2.bb b/meta-openembedded/meta-networking/recipes-support/chrony/chrony_4.2.bb
index 609aaab..57dd635 100644
--- a/meta-openembedded/meta-networking/recipes-support/chrony/chrony_4.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/chrony/chrony_4.2.bb
@@ -27,7 +27,7 @@
 
 HOMEPAGE = "https://chrony.tuxfamily.org/"
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 SRC_URI = "https://download.tuxfamily.org/chrony/chrony-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.14.bb b/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.14.bb
index 7821a12..d4cdda0 100644
--- a/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.14.bb
+++ b/meta-openembedded/meta-networking/recipes-support/cifs/cifs-utils_6.14.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "A a package of utilities for doing and managing mounts of the Linux CIFS filesystem."
 HOMEPAGE = "http://wiki.samba.org/index.php/LinuxCIFS_utils"
 SECTION = "otherosfs"
-LICENSE = "GPLv3 & LGPLv3"
+LICENSE = "GPL-3.0-only & LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRCREV = "8c06dce7d596e478c20bc54bdcec87ad97f80a1b"
diff --git a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq.inc b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
index cd51c07..136c65d 100644
--- a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
+++ b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq.inc
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.thekelleys.org.uk/dnsmasq/doc.html"
 SECTION = "net"
 # GPLv3 was added in version 2.41 as license option
-LICENSE = "GPLv2 | GPLv3"
+LICENSE = "GPL-2.0-only | GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
                     file://COPYING-v3;md5=d32239bcb673463ab874e80d47fae504"
 
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 1017f16..d8c4831 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
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://www.dovecot.org/"
 DESCRIPTION = "Dovecot is an open source IMAP and POP3 email server for Linux/UNIX-like systems, written with security primarily in mind. Dovecot is an excellent choice for both small and large installations. It's fast, simple to set up, requires no special administration and it uses very little memory."
 SECTION = "mail"
-LICENSE = "LGPLv2.1 & MIT"
+LICENSE = "LGPL-2.1-only & MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2956560272e5b31d9d64f03111732048"
 
 SRC_URI = "http://dovecot.org/releases/2.3/dovecot-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils_9.13.1.bb b/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils_9.13.1.bb
index 4cfb0c8..a246464 100644
--- a/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils_9.13.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/drbd/drbd-utils_9.13.1.bb
@@ -5,7 +5,7 @@
 setting up high availability (HA) clusters."
 HOMEPAGE = "http://www.drbd.org/"
 SECTION = "admin"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
 
 SRC_URI = "git://github.com/LINBIT/drbd-utils;name=drbd-utils;branch=${PV};protocol=https \
diff --git a/meta-openembedded/meta-networking/recipes-support/drbd/drbd_9.0.24-1.bb b/meta-openembedded/meta-networking/recipes-support/drbd/drbd_9.0.24-1.bb
index 05d42c7..0766f7f 100644
--- a/meta-openembedded/meta-networking/recipes-support/drbd/drbd_9.0.24-1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/drbd/drbd_9.0.24-1.bb
@@ -4,7 +4,7 @@
                block device via (a dedicated) network. You could see \
                it as a network raid-1."
 HOMEPAGE = "http://oss.linbit.com/drbd/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
 DEPENDS = "virtual/kernel"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/esmtp/esmtp/0001-Fix-libESMTP-dependency-check.patch b/meta-openembedded/meta-networking/recipes-support/esmtp/esmtp/0001-Fix-libESMTP-dependency-check.patch
new file mode 100644
index 0000000..92ac4b1
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/esmtp/esmtp/0001-Fix-libESMTP-dependency-check.patch
@@ -0,0 +1,44 @@
+From 63dbf8a9f04b34474021e8f0bf239b7446f10a7f Mon Sep 17 00:00:00 2001
+From: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
+Date: Thu, 3 Mar 2022 09:01:23 +0000
+Subject: [PATCH] Fix libESMTP dependency check
+
+Since libesmtp-1.1.0, libesmtp-config is removed, use pkg-config to
+check for existence instead.
+
+Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
+---
+ configure.ac | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 64b19b4..83346a8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -11,6 +11,8 @@ AC_PROG_CC
+ 
+ AC_HEADER_STDC
+ 
++PKG_PROG_PKG_CONFIG
++
+ dnl getopt needs this
+ AC_C_CONST
+ 
+@@ -30,11 +32,11 @@ then
+ 	AC_CHECK_HEADER(libesmtp.h, ,[AC_MSG_ERROR([libesmtp.h not found in $with_libesmtp])])
+ fi    
+ AC_MSG_CHECKING(for libESMTP)
+-if libesmtp-config --version > /dev/null 2>&1
++if $PKG_CONFIG --exists 'libesmtp-1.0'
+ then
+ 	AC_MSG_RESULT(yes)
+-	CFLAGS="$CFLAGS `libesmtp-config --cflags`"
+-	LIBS="$LIBS `libesmtp-config --libs`"
++	CFLAGS="$CFLAGS `$PKG_CONFIG --cflags 'libesmtp-1.0'`"
++	LIBS="$LIBS `$PKG_CONFIG --libs 'libesmtp-1.0'`"
+ else
+ 	AC_MSG_RESULT(no)
+ 	AC_MSG_ERROR(libESMTP library not found)
+-- 
+2.32.0
+
diff --git a/meta-openembedded/meta-networking/recipes-support/esmtp/esmtp_1.2.bb b/meta-openembedded/meta-networking/recipes-support/esmtp/esmtp_1.2.bb
index 110399a..e60e1ed 100644
--- a/meta-openembedded/meta-networking/recipes-support/esmtp/esmtp_1.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/esmtp/esmtp_1.2.bb
@@ -8,15 +8,17 @@
 
 DEPENDS = "libesmtp"
 
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
 
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${PV}/${BPN}-${PV}.tar.bz2"
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${PV}/${BPN}-${PV}.tar.bz2 \
+           file://0001-Fix-libESMTP-dependency-check.patch \
+           "
 
 # Have to set this or we get -L/lib in LDFLAGS
 EXTRA_OECONF = "--with-libesmtp=${STAGING_EXECPREFIXDIR}"
 
-inherit autotools update-alternatives
+inherit autotools update-alternatives pkgconfig
 
 ALTERNATIVE:${PN} = "sendmail mailq newaliases"
 # /usr/lib/sendmial is required by LSB core test
diff --git a/meta-openembedded/meta-networking/recipes-support/ettercap/ettercap_0.8.3.1.bb b/meta-openembedded/meta-networking/recipes-support/ettercap/ettercap_0.8.3.1.bb
index 6035ddf..99fcacd 100644
--- a/meta-openembedded/meta-networking/recipes-support/ettercap/ettercap_0.8.3.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ettercap/ettercap_0.8.3.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A suite for man in the middle attacks"
 HOMEPAGE = "https://github.com/Ettercap/ettercap"
-LICENSE = "GPL-2.0+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 inherit cmake
diff --git a/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.4.23.bb b/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.4.23.bb
index 9599837..e4ad0a3 100644
--- a/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.4.23.bb
+++ b/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.4.23.bb
@@ -5,7 +5,7 @@
 connections). It supports every remote-mail protocol now in use on the Internet: POP2, POP3, \
 RPOP, APOP, KPOP, all flavors of IMAP, ETRN, and ODMR. It can even support IPv6 and IPSEC."
 SECTION = "mail"
-LICENSE = "GPLv2 & MIT"
+LICENSE = "GPL-2.0-only & MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c3a05d9b9d3784c824c9b92a648e1353"
 
 DEPENDS = "openssl"
diff --git a/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop_2.6.10.bb b/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop_2.6.10.bb
index 2dfd8d5..a35ec06 100644
--- a/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop_2.6.10.bb
+++ b/meta-openembedded/meta-networking/recipes-support/fwknop/fwknop_2.6.10.bb
@@ -1,6 +1,6 @@
 SUMMARY = "fwknop - Single Packet Authorization"
 HOMEPAGE = "http://www.cipherdyne.org/fwknop/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
 		    "
 inherit autotools-brokensep
diff --git a/meta-openembedded/meta-networking/recipes-support/geoip/geoip-perl_1.51.bb b/meta-openembedded/meta-networking/recipes-support/geoip/geoip-perl_1.51.bb
index 92051a8..d8288f9 100644
--- a/meta-openembedded/meta-networking/recipes-support/geoip/geoip-perl_1.51.bb
+++ b/meta-openembedded/meta-networking/recipes-support/geoip/geoip-perl_1.51.bb
@@ -6,7 +6,7 @@
 DESCRIPTION = "perl library for country/city/organization to IP address or hostname mapping"
 HOMEPAGE = "http://www.maxmind.com/app/ip-location"
 SECTION = "libdevel"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e4f3ea6e9b28af88dc0321190a1f8250"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-networking/recipes-support/geoip/geoip_1.6.12.bb b/meta-openembedded/meta-networking/recipes-support/geoip/geoip_1.6.12.bb
index 8fe4fcb..429cd69 100644
--- a/meta-openembedded/meta-networking/recipes-support/geoip/geoip_1.6.12.bb
+++ b/meta-openembedded/meta-networking/recipes-support/geoip/geoip_1.6.12.bb
@@ -31,7 +31,7 @@
 SRC_URI[GeoLiteCityv6-dat.md5sum] = "6734ccdc644fc0ba76eb276dce73d005"
 SRC_URI[GeoLiteCityv6-dat.sha256sum] = "c95a9d2643b7f53d7abeed2114388870e13fbbad4653f450a49efa7e4b86aca4"
 
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad \
                     file://LICENSE;md5=0388276749a542b0d611601fa7c1dcc8 "
diff --git a/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate_2.5.0.bb b/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate_2.5.0.bb
index 9494bd3..9a0292e 100644
--- a/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate_2.5.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/geoip/geoipupdate_2.5.0.bb
@@ -13,7 +13,7 @@
 SRC_URI[md5sum] = "28f633c49ec87ab01ad3c0fb0228a696"
 SRC_URI[sha256sum] = "5119fd0e338cd083e886228b26679c64bcbaade8a815be092aecf865a610ab26"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "\
 file://ChangeLog.md;md5=11d2e31df0de2be3ccc3e2286c4dafcb \
diff --git a/meta-openembedded/meta-networking/recipes-support/htpdate/htpdate_1.2.2.bb b/meta-openembedded/meta-networking/recipes-support/htpdate/htpdate_1.2.2.bb
index d9d7268..156ea3c 100644
--- a/meta-openembedded/meta-networking/recipes-support/htpdate/htpdate_1.2.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/htpdate/htpdate_1.2.2.bb
@@ -15,7 +15,7 @@
 
 HOMEPAGE = "http://www.vervest.org/htp/"
 
-LICENSE = "GPL-2.0+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://htpdate.c;beginline=26;endline=30;md5=d7018a4d2c5a6eab392709a05e5e168a"
 
 SRC_URI = "http://www.vervest.org/htp/archive/c/htpdate-${PV}.tar.xz \
diff --git a/meta-openembedded/meta-networking/recipes-support/http-parser/http-parser_2.9.4.bb b/meta-openembedded/meta-networking/recipes-support/http-parser/http-parser_2.9.4.bb
index 122dfc0..d4f7685 100644
--- a/meta-openembedded/meta-networking/recipes-support/http-parser/http-parser_2.9.4.bb
+++ b/meta-openembedded/meta-networking/recipes-support/http-parser/http-parser_2.9.4.bb
@@ -17,6 +17,8 @@
 
 S = "${WORKDIR}/git"
 
+EXTRA_OEMAKE = "PLATFORM=linux"
+
 do_configure[noexec] = "1"
 
 do_compile() {
@@ -24,7 +26,7 @@
 }
 
 do_install() {
-    oe_runmake install DESTDIR=${D} PREFIX=${prefix}
+    oe_runmake install DESTDIR=${D} PREFIX=${prefix} LIBDIR=${libdir}
 }
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_2.13.bb b/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_2.13.bb
index a2eb81f..663685a 100644
--- a/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_2.13.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ifenslave/ifenslave_2.13.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding"
 SECTION = "net"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=acc89812938cf9ad6b1debc37cea0253"
 
 inherit manpages
diff --git a/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric_0.3.bb b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric_0.3.bb
index 4ee7c42..1e57a48 100644
--- a/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric_0.3.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric_0.3.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Set routing metrics for a network interface"
 
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI = "http://0pointer.de/lennart/projects/ifmetric/ifmetric-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-support/iftop/iftop_1.0pre4.bb b/meta-openembedded/meta-networking/recipes-support/iftop/iftop_1.0pre4.bb
index c71ecb3..517d781 100644
--- a/meta-openembedded/meta-networking/recipes-support/iftop/iftop_1.0pre4.bb
+++ b/meta-openembedded/meta-networking/recipes-support/iftop/iftop_1.0pre4.bb
@@ -3,7 +3,7 @@
 SECTION = "net"
 DEPENDS = "libpcap ncurses"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=76498170798db0f4f0fb685a225f702f"
 
 SRC_URI = "http://www.ex-parrot.com/pdw/iftop/download/iftop-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-support/ipcalc/ipcalc_0.2.3.bb b/meta-openembedded/meta-networking/recipes-support/ipcalc/ipcalc_0.2.3.bb
index 1e6db5b..efac3c8 100644
--- a/meta-openembedded/meta-networking/recipes-support/ipcalc/ipcalc_0.2.3.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ipcalc/ipcalc_0.2.3.bb
@@ -3,7 +3,7 @@
 
 SECTION = "net"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.31.bb b/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.31.bb
index 8fb116f..01bde4a 100644
--- a/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.31.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ipvsadm/ipvsadm_1.31.bb
@@ -11,7 +11,7 @@
 locality-based  least-connection, locality-based least-connection with replication, \
 destination-hashing, and source-hashing)."
 SECTION = "net"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://README;beginline=40;endline=56;md5=b4e40069f15598d0e3fe2aa177e5ec77"
 
 DEPENDS += "libnl popt"
diff --git a/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp/include-topdir.patch b/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp/include-topdir.patch
deleted file mode 100644
index 90c4ce7..0000000
--- a/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp/include-topdir.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff -Nurp libesmtp-1.0.6.org/crammd5/Makefile.am libesmtp-1.0.6/crammd5/Makefile.am
---- libesmtp-1.0.6.org/crammd5/Makefile.am	2010-08-08 23:45:57.000000000 +0800
-+++ libesmtp-1.0.6/crammd5/Makefile.am	2014-11-17 11:17:21.663624295 +0800
-@@ -2,7 +2,7 @@
- 
- libdir = @plugindir@
- 
--INCLUDES = -I@srcdir@
-+INCLUDES = -I@srcdir@ -I@srcdir@/../
- AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
- 
- lib_LTLIBRARIES = sasl-cram-md5.la
-diff -Nurp libesmtp-1.0.6.org/login/Makefile.am libesmtp-1.0.6/login/Makefile.am
---- libesmtp-1.0.6.org/login/Makefile.am	2010-08-08 23:45:56.000000000 +0800
-+++ libesmtp-1.0.6/login/Makefile.am	2014-11-17 11:17:54.339623018 +0800
-@@ -2,7 +2,7 @@
- 
- libdir = @plugindir@
- 
--INCLUDES = -I@srcdir@
-+INCLUDES = -I@srcdir@ -I@srcdir@/../
- 
- lib_LTLIBRARIES = sasl-login.la
- AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
-diff -Nurp libesmtp-1.0.6.org/ntlm/Makefile.am libesmtp-1.0.6/ntlm/Makefile.am
---- libesmtp-1.0.6.org/ntlm/Makefile.am	2010-08-08 23:45:56.000000000 +0800
-+++ libesmtp-1.0.6/ntlm/Makefile.am	2014-11-17 11:18:10.551622385 +0800
-@@ -2,7 +2,7 @@
- 
- libdir = @plugindir@
- 
--INCLUDES = -I@srcdir@
-+INCLUDES = -I@srcdir@ -I@srcdir@/../
- AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
- 
- lib_LTLIBRARIES = sasl-ntlm.la
-diff -Nurp libesmtp-1.0.6.org/plain/Makefile.am libesmtp-1.0.6/plain/Makefile.am
---- libesmtp-1.0.6.org/plain/Makefile.am	2010-08-08 23:45:54.000000000 +0800
-+++ libesmtp-1.0.6/plain/Makefile.am	2014-11-17 11:18:33.355621494 +0800
-@@ -2,7 +2,7 @@
- 
- libdir = @plugindir@
- 
--INCLUDES = -I@srcdir@
-+INCLUDES = -I@srcdir@ -I@srcdir@/../
- AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
- 
- lib_LTLIBRARIES = sasl-plain.la
diff --git a/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp/snprintf.patch b/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp/snprintf.patch
deleted file mode 100644
index d0d203e..0000000
--- a/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp/snprintf.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Use HAVE_WORKING_SNPRINTF to check for snprintf()
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: libesmtp-1.0.6/missing.h
-===================================================================
---- libesmtp-1.0.6.orig/missing.h
-+++ libesmtp-1.0.6/missing.h
-@@ -43,7 +43,7 @@ int strncasecmp (const char *a, const ch
- void *memrchr (const void *a, int c, size_t len);
- #endif
- 
--#ifndef HAVE_SNPRINTF
-+#ifndef HAVE_WORKING_SNPRINTF
- #include <sys/types.h>
- int snprintf(char *s, size_t n, const char *format, ...);
- #endif
diff --git a/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp_1.0.6.bb b/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp_1.0.6.bb
deleted file mode 100644
index ed2a5d9..0000000
--- a/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp_1.0.6.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "SMTP client library"
-DESCRIPTION = "LibESMTP is a library to manage posting \
-(or submission of) electronic mail using SMTP to a \
-preconfigured Mail Transport Agent (MTA) such as Exim or PostFix."
-HOMEPAGE = "http://www.stafford.uklinux.net/libesmtp/"
-LICENSE = "LGPLv2+"
-SECTION = "libs"
-
-DEPENDS = "openssl"
-
-SRC_URI = "http://www.stafford.uklinux.net/libesmtp/libesmtp-${PV}.tar.bz2 \
-           file://include-topdir.patch \
-           file://snprintf.patch \
-          "
-SRC_URI[md5sum] = "bf3915e627fd8f35524a8fdfeed979c8"
-SRC_URI[sha256sum] = "d0a61a5c52d99fa7ce7d00ed0a07e341dbda67101dbed1ab0cdae3f37db4eb0b"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
-
-inherit autotools binconfig
-
-EXTRA_OECONF = " \
-    --with-auth-plugin-dir=${libdir}/esmtp-plugins \
-    --enable-pthreads                              \
-    --enable-debug                                 \
-    --enable-etrn                                  \
-    --disable-isoc                                 \
-    --disable-more-warnings                        \
-    --disable-static                               \
-"
-
-FILES:${PN} = "${libdir}/lib*${SOLIBS} \
-               ${libdir}/esmtp-plugins/*${SOLIBSDEV}"
-
-FILES:${PN}-dev  += "${libdir}/esmtp-plugins/*.la"
-FILES:${PN}-static += "${libdir}/esmtp-plugins/*.a"
-FILES:${PN}-dbg += "${libdir}/esmtp-plugins/.debug/"
diff --git a/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp_1.1.0.bb b/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp_1.1.0.bb
new file mode 100644
index 0000000..231c572
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/libesmtp/libesmtp_1.1.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "SMTP client library"
+DESCRIPTION = "LibESMTP is a library to manage posting \
+(or submission of) electronic mail using SMTP to a \
+preconfigured Mail Transport Agent (MTA) such as Exim or PostFix."
+HOMEPAGE = "https://libesmtp.github.io/"
+LICENSE = "LGPL-2.0-or-later"
+SECTION = "libs"
+
+DEPENDS = "openssl"
+
+SRC_URI = "git://github.com/libesmtp/libESMTP.git;branch=master;protocol=https"
+SRCREV = "1d0af244310a66943ab400be56b15a9087f181eb"
+
+S = "${WORKDIR}/git"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1803fa9c2c3ce8cb06b4861d75310742 \
+                    file://COPYING.GPL;md5=393a5ca445f6965873eca0259a17f833"
+
+inherit meson pkgconfig
+
+EXTRA_OEMESON = " \
+    -Dpthreads=enabled \
+    -Dtls=enabled \
+    -Dxdg=false \
+    -Dlwres=disabled \
+    -Dbdat=true \
+    -Detrn=true \
+    -Dxusr=true \
+"
+
+FILES:${PN} = "${libdir}/lib*${SOLIBS} \
+               ${libdir}/esmtp-plugins-6.2.0/*${SOLIBSDEV}"
diff --git a/meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.3.2.bb b/meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.3.2.bb
index d26acea..a9c6794 100644
--- a/meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.3.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/libldb/libldb_2.3.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Hierarchical, reference counted memory pool system with destructors"
 HOMEPAGE = "http://ldb.samba.org"
 SECTION = "libs"
-LICENSE = "LGPL-3.0+ & LGPL-2.1+ & GPL-3.0+"
+LICENSE = "LGPL-3.0-or-later & LGPL-2.1-or-later & GPL-3.0-or-later"
 
 DEPENDS += "libtdb libtalloc libtevent popt"
 RDEPENDS:pyldb += "python3"
diff --git a/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb b/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
index 9b20760..b3f8b2c 100644
--- a/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
+++ b/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Hierarchical, reference counted memory pool system with destructors"
 HOMEPAGE = "http://talloc.samba.org"
 SECTION = "libs"
-LICENSE = "LGPL-3.0+ & GPL-3.0+"
+LICENSE = "LGPL-3.0-or-later & GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://talloc.h;beginline=3;endline=27;md5=a301712782cad6dd6d5228bfa7825249 \
                     file://pytalloc.h;beginline=1;endline=18;md5=21ab13bd853679d7d47a1739cb3b7db6 \
                     "
diff --git a/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.3.bb b/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.3.bb
index e7f7384..2affcf7 100644
--- a/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.3.bb
+++ b/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.3.bb
@@ -1,7 +1,7 @@
 SUMMARY = "The tdb library"
 HOMEPAGE = "http://tdb.samba.org/"
 SECTION = "libs"
-LICENSE = "LGPL-3.0+ & GPL-3.0+"
+LICENSE = "LGPL-3.0-or-later & GPL-3.0-or-later"
 
 LIC_FILES_CHKSUM = "file://tools/tdbdump.c;endline=18;md5=b59cd45aa8624578126a8c98f48018c4 \
                     file://include/tdb.h;endline=27;md5=f5bb544641d3081821bcc1dd58310be6"
diff --git a/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent_0.10.2.bb b/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent_0.10.2.bb
index 78c0920..732880e 100644
--- a/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent_0.10.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/libtevent/libtevent_0.10.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Hierarchical, reference counted memory pool system with destructors"
 HOMEPAGE = "http://tevent.samba.org"
 SECTION = "libs"
-LICENSE = "LGPLv3+"
+LICENSE = "LGPL-3.0-or-later"
 
 DEPENDS += "libtalloc libtirpc"
 RDEPENDS:python3-tevent = "python3"
diff --git a/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb b/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb
index 538fca7..effd750 100644
--- a/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Drivers and tools to support ATM networking under Linux"
 HOMEPAGE = "http://linux-atm.sourceforge.net/"
 SECTION = "libs"
-LICENSE = "GPL-2.0 & LGPL-2.0"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only"
 
 DEPENDS = "flex flex-native"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.19.bb b/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.19.bb
index 5455560..4a9d2f5 100644
--- a/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.19.bb
+++ b/meta-openembedded/meta-networking/recipes-support/lksctp-tools/lksctp-tools_1.0.19.bb
@@ -1,7 +1,7 @@
 SUMMARY = "The Linux Kernel Stream Control Transmission Protocol (lksctp) project"
 HOMEPAGE = "http://lksctp.org"
 SECTION = "net"
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 
 LIC_FILES_CHKSUM = " \
     file://COPYING.lib;md5=0a1b79af951c42a9c8573533fbba9a92 \
diff --git a/meta-openembedded/meta-networking/recipes-support/lowpan-tools/lowpan-tools_git.bb b/meta-openembedded/meta-networking/recipes-support/lowpan-tools/lowpan-tools_git.bb
index cc6053b..baaff1f 100644
--- a/meta-openembedded/meta-networking/recipes-support/lowpan-tools/lowpan-tools_git.bb
+++ b/meta-openembedded/meta-networking/recipes-support/lowpan-tools/lowpan-tools_git.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "This is a set of utils to manage the Linux LoWPAN stack. \
 The LoWPAN stack aims for IEEE 802.15.4-2003 (and for lesser extent IEEE 802.15.4-2006) compatibility."
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 DEPENDS = "flex-native bison-native libnl python"
diff --git a/meta-openembedded/meta-networking/recipes-support/macchanger/macchanger_1.7.0.bb b/meta-openembedded/meta-networking/recipes-support/macchanger/macchanger_1.7.0.bb
index f2b7ce9..f965c0d 100644
--- a/meta-openembedded/meta-networking/recipes-support/macchanger/macchanger_1.7.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/macchanger/macchanger_1.7.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Tool to view/change network interface MAC addresses"
 DESCRIPTION = "A GNU/Linux utility for viewing/manipulating the MAC address of network interfaces."
 HOMEPAGE = "https://github.com/alobbs/macchanger"
-LICENSE  = "GPLv3"
+LICENSE  = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 SECTION = "net"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/mctp/mctp_git.bb b/meta-openembedded/meta-networking/recipes-support/mctp/mctp_git.bb
index 350c272..602724d 100644
--- a/meta-openembedded/meta-networking/recipes-support/mctp/mctp_git.bb
+++ b/meta-openembedded/meta-networking/recipes-support/mctp/mctp_git.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Management Component Control Protocol utilities"
 HOMEPAGE = "http://www.github.com/CodeConstruct/mctp"
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=4cc91856b08b094b4f406a29dc61db21"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/mtr/mtr_0.95.bb b/meta-openembedded/meta-networking/recipes-support/mtr/mtr_0.95.bb
index b5e2fae..92f9c4b 100644
--- a/meta-openembedded/meta-networking/recipes-support/mtr/mtr_0.95.bb
+++ b/meta-openembedded/meta-networking/recipes-support/mtr/mtr_0.95.bb
@@ -4,7 +4,7 @@
 SECTION = "net"
 DEPENDS = "ncurses"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://ui/mtr.c;beginline=5;endline=16;md5=00a894a39d53726a27386534d1c4e468"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/nbd/nbd_3.20.bb b/meta-openembedded/meta-networking/recipes-support/nbd/nbd_3.20.bb
index 589ac87..7b7f5cb 100644
--- a/meta-openembedded/meta-networking/recipes-support/nbd/nbd_3.20.bb
+++ b/meta-openembedded/meta-networking/recipes-support/nbd/nbd_3.20.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Network Block Device"
 HOMEPAGE = "http://nbd.sourceforge.net"
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "glib-2.0"
diff --git a/meta-openembedded/meta-networking/recipes-support/ncp/libowfat_0.32.bb b/meta-openembedded/meta-networking/recipes-support/ncp/libowfat_0.32.bb
index 4e67f6c..94f36f9 100644
--- a/meta-openembedded/meta-networking/recipes-support/ncp/libowfat_0.32.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ncp/libowfat_0.32.bb
@@ -3,7 +3,7 @@
 Bernstein's software (libdjb), reimplemented and covered by the GNU \
 General Public License Version 2 (no later versions)."
 HOMEPAGE = "http://www.fefe.de/libowfat"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 
 SRC_URI = "https://www.fefe.de/${BPN}/${BP}.tar.xz \
diff --git a/meta-openembedded/meta-networking/recipes-support/ncp/ncp_1.2.4.bb b/meta-openembedded/meta-networking/recipes-support/ncp/ncp_1.2.4.bb
index a2f0ccc..516beed 100644
--- a/meta-openembedded/meta-networking/recipes-support/ncp/ncp_1.2.4.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ncp/ncp_1.2.4.bb
@@ -3,7 +3,7 @@
 security or integrity checking, no throttling, no features, except \
 one: you don't have to type the coordinates of your peer."
 HOMEPAGE = "http://www.fefe.de/ncp"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
 DEPENDS = "libowfat"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_git.bb b/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_git.bb
index 69b774a..f546779 100644
--- a/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_git.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ndisc6/ndisc6_git.bb
@@ -2,7 +2,7 @@
 IPv6 networks, including ndisc6, rdisc6, tcptraceroute6 and traceroute6."
 SECTION = "net"
 HOMEPAGE = "http://www.remlab.net/ndisc6/"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 PV = "1.0.5"
diff --git a/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb b/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
index fc09554..54a4ea0 100644
--- a/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
@@ -1,5 +1,5 @@
 require netcat.inc
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 PR = "r3"
diff --git a/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb b/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb
index 3b6880a..f60bb9f 100644
--- a/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb
+++ b/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "netcf is a cross-platform network configuration library."
 HOMEPAGE = "https://pagure.io/netcf"
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=fb919cc88dbe06ec0b0bd50e001ccf1f"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/netsniff-ng/netsniff-ng_0.6.8.bb b/meta-openembedded/meta-networking/recipes-support/netsniff-ng/netsniff-ng_0.6.8.bb
index 10e3004..004330e 100644
--- a/meta-openembedded/meta-networking/recipes-support/netsniff-ng/netsniff-ng_0.6.8.bb
+++ b/meta-openembedded/meta-networking/recipes-support/netsniff-ng/netsniff-ng_0.6.8.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Netsniff-ng is a fast zero-copy analyzer, pcap capturing and replaying tool"
 HOMEPAGE = "http://netsniff-ng.org"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9dd40dfb621eed702c0775577fbb7011"
 DEPENDS = "libpcap"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/nis/nis.inc b/meta-openembedded/meta-networking/recipes-support/nis/nis.inc
index 3ae0f7e..56b7ab0 100644
--- a/meta-openembedded/meta-networking/recipes-support/nis/nis.inc
+++ b/meta-openembedded/meta-networking/recipes-support/nis/nis.inc
@@ -6,7 +6,7 @@
 DESCRIPTION = "NIS Server and Tools"
 HOMEPAGE = "http://www.linux-nis.org/nis/"
 SECTION = "net"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 inherit autotools gettext pkgconfig
diff --git a/meta-openembedded/meta-networking/recipes-support/ntopng/ndpi_4.2.bb b/meta-openembedded/meta-networking/recipes-support/ntopng/ndpi_4.2.bb
index 352d2d2..13c3398 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntopng/ndpi_4.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ntopng/ndpi_4.2.bb
@@ -5,7 +5,7 @@
 SECTION = "libdevel"
 DEPENDS = "libpcap json-c"
 RDEPENDS:${PN} += " libpcap"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b52f2d57d10c4f7ee67a7eb9615d5d24"
 
 SRCREV = "8b5c6af71b562549f8416b31803daae223e09f46"
diff --git a/meta-openembedded/meta-networking/recipes-support/ntopng/ntopng_5.2.1.bb b/meta-openembedded/meta-networking/recipes-support/ntopng/ntopng_5.2.1.bb
index 1c74845..dca929b 100644
--- a/meta-openembedded/meta-networking/recipes-support/ntopng/ntopng_5.2.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ntopng/ntopng_5.2.1.bb
@@ -8,7 +8,7 @@
 
 DEPENDS = "curl libmaxminddb libpcap lua mariadb ndpi json-c rrdtool zeromq"
 RDEPENDS:${PN} = "bash redis"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRCREV = "d3ce78948e8d81dc1e2c5298ce556f9f2247aac1"
diff --git a/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_8.2.2.bb b/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_8.2.2.bb
index 677b031..115b51e 100644
--- a/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_8.2.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_8.2.2.bb
@@ -6,7 +6,7 @@
 data for a specified time interval, or alternatively transferring a specified \
 number of bytes."
 HOMEPAGE = "http://www.nuttcp.net/Welcome%20Page.html"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 SECTION = "net"
 LIC_FILES_CHKSUM = "file://${BP}.c;beginline=4;endline=30;md5=496a7c0bb83c07ff528d226bf85e05c5"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/open-isns/open-isns_0.101.bb b/meta-openembedded/meta-networking/recipes-support/open-isns/open-isns_0.101.bb
index b3d1bdc..f2a084d 100644
--- a/meta-openembedded/meta-networking/recipes-support/open-isns/open-isns_0.101.bb
+++ b/meta-openembedded/meta-networking/recipes-support/open-isns/open-isns_0.101.bb
@@ -7,7 +7,7 @@
 supporting persisten storage of registrations, isnsadm, a command line \
 utility for managing nodes, and isnsdd, a corresponding discovery daemon."
 HOMEPAGE = "http://github.com/gonzoleeman/open-isns/"
-LICENSE = "GPLv2+ & LGPLv2+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=321bf41f280cf805086dd5a720b37785"
 SECTION = "net"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/open-vm-tools/open-vm-tools_11.3.5.bb b/meta-openembedded/meta-networking/recipes-support/open-vm-tools/open-vm-tools_11.3.5.bb
index e37e9ee..a3e090f 100644
--- a/meta-openembedded/meta-networking/recipes-support/open-vm-tools/open-vm-tools_11.3.5.bb
+++ b/meta-openembedded/meta-networking/recipes-support/open-vm-tools/open-vm-tools_11.3.5.bb
@@ -17,12 +17,12 @@
 "
 SECTION = "vmware-tools"
 
-LICENSE = "LGPL-2.0 & GPL-2.0 & BSD & CDDL-1.0"
+LICENSE = "LGPL-2.0-only & GPL-2.0-only & BSD & CDDL-1.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=559317809c5444fb39ceaf6ac45c43ac"
 LICENSE:modules/freebsd/vmblock = "BSD"
-LICENSE:modules/freebsd/vmmemctl = "GPL-2.0"
-LICENSE:modules/freebsd/vmxnet = "GPL-2.0"
-LICENSE:modules/linux = "GPL-2.0"
+LICENSE:modules/freebsd/vmmemctl = "GPL-2.0-only"
+LICENSE:modules/freebsd/vmxnet = "GPL-2.0-only"
+LICENSE:modules/linux = "GPL-2.0-only"
 LICENSE:modules/solaris = "CDDL-1.0"
 
 SRC_URI = "git://github.com/vmware/open-vm-tools.git;protocol=https;branch=master \
diff --git a/meta-openembedded/meta-networking/recipes-support/openipmi/openipmi_2.0.32.bb b/meta-openembedded/meta-networking/recipes-support/openipmi/openipmi_2.0.32.bb
index 99fa9ba..c61303b 100644
--- a/meta-openembedded/meta-networking/recipes-support/openipmi/openipmi_2.0.32.bb
+++ b/meta-openembedded/meta-networking/recipes-support/openipmi/openipmi_2.0.32.bb
@@ -16,7 +16,7 @@
     readline \
     "
 
-LICENSE = "GPLv2 & LGPLv2.1 & BSD-3-Clause"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only & BSD-3-Clause"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
                     file://COPYING.LIB;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
diff --git a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.5.bb b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.6.bb
similarity index 94%
rename from meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.5.bb
rename to meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.6.bb
index 6c4514e..218e72b 100644
--- a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.5.bb
+++ b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.5.6.bb
@@ -1,8 +1,8 @@
 SUMMARY = "A full-featured SSL VPN solution via tun device."
 HOMEPAGE = "https://openvpn.net/"
 SECTION = "net"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=377a495e6f12b2a3adcee797e59540b8"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b76abd82c14ee01cc34c4ff5e3627b89"
 DEPENDS = "lzo openssl iproute2 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
 
 inherit autotools systemd update-rc.d
@@ -14,7 +14,7 @@
 
 UPSTREAM_CHECK_URI = "https://openvpn.net/community-downloads"
 
-SRC_URI[sha256sum] = "7500df4734173bce2e95b5039079119dacaff121650b2b6ca76d2dc68bdac1c5"
+SRC_URI[sha256sum] = "333a7ef3d5b317968aca2c77bdc29aa7c6d6bb3316eb3f79743b59c53242ad3d"
 
 # CVE-2020-7224 and CVE-2020-27569 are for Aviatrix OpenVPN client, not for openvpn.
 CVE_CHECK_IGNORE += "CVE-2020-7224 CVE-2020-27569"
diff --git a/meta-openembedded/meta-networking/recipes-support/phytool/phytool.bb b/meta-openembedded/meta-networking/recipes-support/phytool/phytool.bb
index 7fde88c..c2c4335 100644
--- a/meta-openembedded/meta-networking/recipes-support/phytool/phytool.bb
+++ b/meta-openembedded/meta-networking/recipes-support/phytool/phytool.bb
@@ -1,5 +1,5 @@
 SUMMARY = "PHY interface tool for Linux"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=39bba7d2cf0ba1036f2a6e2be52fe3f0"
 
 PV = "2+git${SRCPV}"
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_39.0.bb b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_39.0.bb
index 48434aa..5fb72c7 100644
--- a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_39.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_39.0.bb
@@ -10,7 +10,7 @@
 S = "${WORKDIR}/git"
 
 #Default Dual License https://github.com/linux-rdma/rdma-core/blob/master/COPYING.md
-LICENSE = "BSD-2-Clause | GPLv2"
+LICENSE = "BSD-2-Clause | GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING.BSD_FB;md5=0ec18bae1a9df92c8d6ae01f94a289ae \
 		   file://COPYING.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/ruli/ruli_0.36.bb b/meta-openembedded/meta-networking/recipes-support/ruli/ruli_0.36.bb
index 90e7fec..9de4cc6 100644
--- a/meta-openembedded/meta-networking/recipes-support/ruli/ruli_0.36.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ruli/ruli_0.36.bb
@@ -2,7 +2,7 @@
 
 HOMEPAGE = "http://www.nongnu.org/ruli/"
 
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
 
 DEPENDS = "liboop"
diff --git a/meta-openembedded/meta-networking/recipes-support/smcroute/smcroute_2.5.4.bb b/meta-openembedded/meta-networking/recipes-support/smcroute/smcroute_2.5.4.bb
index 21a3c44..649e6d4 100644
--- a/meta-openembedded/meta-networking/recipes-support/smcroute/smcroute_2.5.4.bb
+++ b/meta-openembedded/meta-networking/recipes-support/smcroute/smcroute_2.5.4.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "SMCRoute is a daemon and command line tool to manipulate the multicast routing table in the UNIX kernel."
 HOMEPAGE = "http://troglobit.github.io/smcroute.html"
 SECTION = "net"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 SRCREV = "9b6e397595a154c84a329c55bed21e0c43e89ee6"
diff --git a/meta-openembedded/meta-networking/recipes-support/spice/spice_git.bb b/meta-openembedded/meta-networking/recipes-support/spice/spice_git.bb
index c9f95b0..d9083bc 100644
--- a/meta-openembedded/meta-networking/recipes-support/spice/spice_git.bb
+++ b/meta-openembedded/meta-networking/recipes-support/spice/spice_git.bb
@@ -10,7 +10,7 @@
 anywhere on the Internet and using a wide variety of machine \
 architectures."
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 PV = "0.14.2+git${SRCPV}"
diff --git a/meta-openembedded/meta-networking/recipes-support/spice/usbredir_0.9.0.bb b/meta-openembedded/meta-networking/recipes-support/spice/usbredir_0.9.0.bb
index 5245f95..4524910 100644
--- a/meta-openembedded/meta-networking/recipes-support/spice/usbredir_0.9.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/spice/usbredir_0.9.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "usbredir libraries and utilities"
 
-LICENSE = "GPLv2+ & LGPLv2.1+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
     file://COPYING.LIB;md5=4b54a1fd55a448865a0b32d41598759d \
 "
diff --git a/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb b/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb
index decac0c..b0e921d 100644
--- a/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb
@@ -1,6 +1,6 @@
 SUMMARY = "extremely simple MTA to get mail off the system to a mail hub"
 HOMEPAGE = "http://packages.qa.debian.org/s/ssmtp.html"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0c56db0143f4f80c369ee3af7425af6e"
 
 SRC_URI = "${DEBIAN_MIRROR}/main/s/${BPN}/${BPN}_${PV}.orig.tar.bz2 \
diff --git a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.4.bb b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.4.bb
index 686cdb6..babfe17 100644
--- a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.4.bb
+++ b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.4.bb
@@ -3,7 +3,7 @@
 SUMMARY = "strongSwan is an OpenSource IPsec implementation"
 HOMEPAGE = "http://www.strongswan.org"
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 DEPENDS = "flex-native flex bison-native"
 DEPENDS:append = "${@bb.utils.contains('DISTRO_FEATURES', 'tpm2', '  tpm2-tss', '', d)}"
diff --git a/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.59.bb b/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.63.bb
similarity index 68%
rename from meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.59.bb
rename to meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.63.bb
index 9321070..325737e 100644
--- a/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.59.bb
+++ b/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.63.bb
@@ -2,21 +2,18 @@
 DESCRIPTION = "SSL encryption wrapper between remote client and local (inetd-startable) or remote server."
 HOMEPAGE = "https://www.stunnel.org/"
 SECTION = "net"
-# Note: Linking stunnel statically or dynamically with other modules is making
-# a combined work based on stunnel. Thus, the terms and conditions of the GNU
-# General Public License cover the whole combination.
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING.md;md5=223b26c62f5e7c5c8656d6c133edd5ec"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING.md;md5=d8a2866ad5ebf3a2d2ce27279472875a"
 
 DEPENDS = "autoconf-archive libnsl2 openssl"
 
-SRC_URI = "ftp://ftp.stunnel.org/stunnel/archive/5.x/${BP}.tar.gz \
+SRC_URI = "https://stunnel.org/archive/5.x/${BP}.tar.gz \
            file://fix-openssl-no-des.patch \
 "
 
-SRC_URI[sha256sum] = "137776df6be8f1701f1cd590b7779932e123479fb91e5192171c16798815ce9f"
+SRC_URI[sha256sum] = "c74c4e15144a3ae34b8b890bb31c909207301490bd1e51bfaaa5ffeb0a994617"
 
-inherit autotools
+inherit autotools bash-completion pkgconfig
 
 PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 systemd', d)} libwrap"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.4.1.bb b/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.4.1.bb
index f65956b..56db66b 100644
--- a/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.4.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.4.1.bb
@@ -4,7 +4,7 @@
 
 SECTION = "net"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://docs/LICENSE;md5=10f0474a2f0e5dccfca20f69d6598ad8"
 
 SRC_URI = "https://github.com/appneta/tcpreplay/releases/download/v${PV}/tcpreplay-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy_1.11.0.bb b/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy_1.11.0.bb
index f20013b..388f7ae 100644
--- a/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy_1.11.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/tinyproxy/tinyproxy_1.11.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Lightweight http(s) proxy daemon"
 HOMEPAGE = "https://tinyproxy.github.io/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-support/traceroute/traceroute_2.1.0.bb b/meta-openembedded/meta-networking/recipes-support/traceroute/traceroute_2.1.0.bb
index 82077db..9cac204 100644
--- a/meta-openembedded/meta-networking/recipes-support/traceroute/traceroute_2.1.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/traceroute/traceroute_2.1.0.bb
@@ -7,7 +7,7 @@
 show you where the trouble is coming from along the route."
 SECTION = "net"
 HOMEPAGE = "http://traceroute.sourceforge.net/"
-LICENSE = "GPL-2.0+ & LGPL-2.1+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/tunctl/tunctl.inc b/meta-openembedded/meta-networking/recipes-support/tunctl/tunctl.inc
index 1c11823..07e6dc2 100644
--- a/meta-openembedded/meta-networking/recipes-support/tunctl/tunctl.inc
+++ b/meta-openembedded/meta-networking/recipes-support/tunctl/tunctl.inc
@@ -1,6 +1,6 @@
 SUMMARY = "Tool for controlling the Linux TUN/TAP driver"
 SECTION = "net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://tunctl.c;beginline=1;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/tunctl/tunctl-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-networking/recipes-support/uftp/uftp_5.0.bb b/meta-openembedded/meta-networking/recipes-support/uftp/uftp_5.0.bb
index 4eeb62d..301e0fa 100644
--- a/meta-openembedded/meta-networking/recipes-support/uftp/uftp_5.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/uftp/uftp_5.0.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Encrypted UDP based FTP with multicast"
 HOMEPAGE = "https://sourceforge.net/projects/uftp-multicast"
 SECTION = "libs/network"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=d32239bcb673463ab874e80d47fae504"
 
 UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/uftp-multicast/files/source-tar/"
diff --git a/meta-openembedded/meta-networking/recipes-support/vnstat/vnstat_2.6.bb b/meta-openembedded/meta-networking/recipes-support/vnstat/vnstat_2.6.bb
index a7e008e..cf3f41c 100644
--- a/meta-openembedded/meta-networking/recipes-support/vnstat/vnstat_2.6.bb
+++ b/meta-openembedded/meta-networking/recipes-support/vnstat/vnstat_2.6.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "vnStat is a console-based network traffic monitor for Linux and BSD that keeps a log of network traffic for the selected interface(s)."
 HOMEPAGE = "https://humdi.net/vnstat/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 SECTION = "net"
 DEPENDS = "gd sqlite3"
diff --git a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.11.bb b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.11.bb
index 6fee972..f1dba22 100644
--- a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.11.bb
+++ b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_3.4.11.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "wireshark - a popular network protocol analyzer"
 HOMEPAGE = "http://www.wireshark.org"
 SECTION = "net"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6e271234ba1a13c6e512e76b94ac2f77"
 
 DEPENDS = "pcre expat glib-2.0 glib-2.0-native libgcrypt libgpg-error libxml2 bison-native c-ares"
diff --git a/meta-openembedded/meta-oe/conf/layer.conf b/meta-openembedded/meta-oe/conf/layer.conf
index 93f3dc5..88715d5 100644
--- a/meta-openembedded/meta-oe/conf/layer.conf
+++ b/meta-openembedded/meta-oe/conf/layer.conf
@@ -21,7 +21,7 @@
 # choosing carefully how this layer interacts with all of the
 # other layers.
 
-BBFILE_PRIORITY_openembedded-layer = "6"
+BBFILE_PRIORITY_openembedded-layer = "5"
 
 # only activates content when identified layers are present,
 # to ensure yocto compatibility check pass
diff --git a/meta-openembedded/meta-oe/dynamic-layers/gnome-layer/recipes-graphics/openbox/openbox-xdgmenu_0.3.bb b/meta-openembedded/meta-oe/dynamic-layers/gnome-layer/recipes-graphics/openbox/openbox-xdgmenu_0.3.bb
index 52dab10..90d6880 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/gnome-layer/recipes-graphics/openbox/openbox-xdgmenu_0.3.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/gnome-layer/recipes-graphics/openbox/openbox-xdgmenu_0.3.bb
@@ -2,7 +2,7 @@
 AUTHOR = "Siegfried Gevatter"
 HOMEPAGE = "https://launchpad.net/openbox-xdgmenu/"
 SECTION = "x11/wm"
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
 DEPENDS = " \
     gnome-menus \
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-bsp/rwmem/rwmem_1.2.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-bsp/rwmem/rwmem_1.2.bb
index f55247d..7bca24c 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-bsp/rwmem/rwmem_1.2.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-bsp/rwmem/rwmem_1.2.bb
@@ -8,7 +8,7 @@
 \
 In i2c mode rwmem accesses an i2c peripheral by sending i2c messages to it."
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS += "python3 python3-pybind11"
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc_0.10.1.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc_0.10.1.bb
index f3070c5..c8929b7 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc_0.10.1.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc_0.10.1.bb
@@ -5,7 +5,7 @@
 DESCRIPTION:append:lirc-nslu2example = " This package contains a working config for RC5 remotes and a modified NSLU2."
 HOMEPAGE = "http://www.lirc.org"
 SECTION = "console/network"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 DEPENDS = "libxslt-native alsa-lib libftdi libusb1 libusb-compat jack portaudio-v19 python3-pyyaml python3-setuptools-native"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc_git.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc_git.bb
index 46ca77f..76a9316 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc_git.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc_git.bb
@@ -3,7 +3,7 @@
 SUMMARY = "Drivers for character-based LCD displays"
 HOMEPAGE = "http://lcdproc.org"
 SECTION = "utils"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 DEPENDS = "ncurses lirc"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760 \
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem_1.5.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem_1.5.bb
index 544c154..9f85532 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem_1.5.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem_1.5.bb
@@ -6,7 +6,7 @@
 HOMEPAGE = "http://www.selenic.com/smem/"
 SECTION = "Applications/System"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 HG_CHANGESET = "98273ce331bb"
diff --git a/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend b/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend
index 359067c..b71b7e4 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend
+++ b/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend
@@ -1,6 +1,2 @@
-RDEPENDS:packagegroup-meta-oe-devtools += "\
-    valijson \
-"
-
 RDEPENDS:packagegroup-meta-oe-support:append:x86 = "${@bb.utils.contains('BBFILE_COLLECTIONS', 'filesystems-layer', ' open-vm-tools', '', d)}"
 RDEPENDS:packagegroup-meta-oe-support:append:x86-64 = "${@bb.utils.contains('BBFILE_COLLECTIONS', 'filesystems-layer', ' open-vm-tools', '', d)}"
diff --git a/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/debsums/debsums_2.2.2.bb b/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/debsums/debsums_2.2.2.bb
index 8c53af4..252db19 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/debsums/debsums_2.2.2.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/debsums/debsums_2.2.2.bb
@@ -7,7 +7,7 @@
 DESCRIPTION:${PN}-cron = "Cron scripts to control automatic system integrity \
 checking via debsums."
 SECTION = "base"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=770d751553e6559e9eaefd2e11ccf7e9"
 
 SRC_URI = "http://snapshot.debian.org/archive/debian/20170530T212108Z/pool/main/d/debsums/debsums_2.2.2.tar.xz"
diff --git a/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/rasdaemon/rasdaemon_0.6.7.bb b/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/rasdaemon/rasdaemon_0.6.7.bb
index 464d82f..f30822b 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/rasdaemon/rasdaemon_0.6.7.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/rasdaemon/rasdaemon_0.6.7.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Tools to provide a way to get Platform Reliability, Availability and Serviceability (RAS) reports made via the Kernel tracing events"
 HOMEPAGE = "http://git.infradead.org/users/mchehab/rasdaemon.git"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d3070efe0afa3dc41608bd82c00bb0dc"
 
 SRC_URI = "git://github.com/mchehab/rasdaemon.git;branch=master;protocol=https \
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.04.bb b/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.04.bb
index 9138717..c305aad 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.04.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.04.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Tests large file IO and creation/deletion of small files"
 HOMEPAGE = "http://www.coker.com.au/bonnie++/"
 SECTION = "benchmark/tests"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://copyright.txt;md5=cd4dde95a6b9d122f0a9150ae9cc3ee0"
 
 SRC_URI = "http://www.coker.com.au/bonnie++/${BPN}_${PV}.tgz \
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb b/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb
index 517958b..32f51fe 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb
@@ -2,7 +2,7 @@
 SUMMARY:dbench = "Filesystem load benchmark"
 SUMMARY:tbench = "TCP load benchmark"
 HOMEPAGE = "http://samba.org/ftp/tridge/dbench/"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 DEPENDS = "popt"
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.29.bb b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.29.bb
index 54e2f33..72479ce 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.29.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.29.bb
@@ -7,7 +7,7 @@
 files are included. fio displays all sorts of I/O performance information."
 HOMEPAGE = "http://freecode.com/projects/fio"
 SECTION = "console/tests"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "libaio zlib coreutils-native"
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb b/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
index 2a8ce54..47d9273 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
@@ -4,7 +4,7 @@
 HOMEPAGE = "https://github.com/glmark2/glmark2"
 BUGTRACKER = "https://github.com/glmark2/glmark2/issues"
 
-LICENSE = "GPLv3+ & SGIv1"
+LICENSE = "GPL-3.0-or-later & SGI-1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
                     file://COPYING.SGI;beginline=5;md5=269cdab4af6748677acce51d9aa13552"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0001-configure.ac-check-for-CPP-prog.patch b/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0001-configure.ac-check-for-CPP-prog.patch
index 739fd20..09e3d9c 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0001-configure.ac-check-for-CPP-prog.patch
+++ b/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0001-configure.ac-check-for-CPP-prog.patch
@@ -1,4 +1,4 @@
-From cc4499cd4cfcb655fc44c3f3571eee20663dafde Mon Sep 17 00:00:00 2001
+From 4801363fbff12bf1019aaf90142981702cecff92 Mon Sep 17 00:00:00 2001
 From: Andrey Zhizhikin <andrey.z@gmail.com>
 Date: Wed, 3 Feb 2021 20:44:34 +0000
 Subject: [PATCH] configure.ac: check for CPP prog
@@ -10,22 +10,20 @@
 
 Upstream-Status: Pending
 Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com>
+
 ---
  configure.ac | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/configure.ac b/configure.ac
-index 939cf0a..f75b398 100644
+index 53a4db4..3462b3e 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -47,6 +47,7 @@ AC_CANONICAL_HOST
+@@ -48,6 +48,7 @@ AC_CANONICAL_HOST
  # Checks for tools: c compiler, ranlib (used for creating static libraries),
  # symlinks and libtool
  AC_PROG_CC
 +AC_PROG_CPP
  AC_PROG_RANLIB
  AC_PROG_LN_S
- AC_PROG_LIBTOOL
--- 
-2.17.1
-
+ LT_INIT
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0002-Remove-pg-from-profile_CFLAGS.patch b/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0002-Remove-pg-from-profile_CFLAGS.patch
index 959e293..7870261 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0002-Remove-pg-from-profile_CFLAGS.patch
+++ b/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0002-Remove-pg-from-profile_CFLAGS.patch
@@ -1,4 +1,4 @@
-From 3ae408402635ea21ad90cd722c99ae3334376c91 Mon Sep 17 00:00:00 2001
+From 155ae12f7809e387a379703d8c09f227e430336d Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Fri, 14 Jul 2017 13:00:16 -0700
 Subject: [PATCH] Remove -pg from profile_CFLAGS
@@ -7,12 +7,13 @@
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+
 ---
  src/Makefile.am | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/src/Makefile.am b/src/Makefile.am
-index 5be8562..3881aa6 100644
+index 11d3e17..4058cff 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
 @@ -58,9 +58,9 @@ if ENABLE_PROFILING
@@ -27,6 +28,3 @@
  endif
  
  # Specify the sources and various flags for the test cases
--- 
-2.21.0
-
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.9.bb b/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.11.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.9.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.11.bb
index 47bf4d5..a6af23a 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.9.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.11.bb
@@ -4,19 +4,21 @@
 on IP networks. It supports tuning of various parameters related to timing, \
 protocols, and buffers. For each test it reports the bandwidth, loss, and \
 other parameters."
+
 HOMEPAGE = "http://software.es.net/iperf/"
 SECTION = "console/network"
 BUGTRACKER = "https://github.com/esnet/iperf/issues"
 AUTHOR = "ESNET <info@es.net>, Lawrence Berkeley National Laboratory <websupport@lbl.gov>"
+
 LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b7fb682e9941a49f1214dcd7441410d7"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=68ae8cfc577a2c8c51bb51e9628e80b7"
 
 SRC_URI = "git://github.com/esnet/iperf.git;branch=master;protocol=https \
            file://0002-Remove-pg-from-profile_CFLAGS.patch \
            file://0001-configure.ac-check-for-CPP-prog.patch \
            "
 
-SRCREV = "1f8fb13297f3e3e40169ebcd12e171167e394473"
+SRCREV = "76bd67f6e90e239a7686202d2b1b595159826d24"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
index b0e7475..80af987 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A library which provides easy access to huge pages of memory"
 HOMEPAGE = "https://github.com/libhugetlbfs/libhugetlbfs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LGPL-2.1;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 DEPENDS = "sysfsutils"
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
index 7d141d8..2046b13 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Tools for performance analysis"
 HOMEPAGE = "http://lmbench.sourceforge.net/"
 SECTION = "console/utils"
-LICENSE = "GPLv2 & GPL-2.0-with-lmbench-restriction"
+LICENSE = "GPL-2.0-only & GPL-2.0-with-lmbench-restriction"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
                     file://COPYING-2;md5=8e9aee2ccc75d61d107e43794a25cdf9"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/mbw/mbw_git.bb b/meta-openembedded/meta-oe/recipes-benchmark/mbw/mbw_git.bb
index 3738036..52b9399 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/mbw/mbw_git.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/mbw/mbw_git.bb
@@ -1,7 +1,7 @@
 SUMMARY = "MBW determines the copy memory bandwidth available to userspace programs"
 HOMEPAGE = "http://github.com/raas/mbw"
 SECTION = "console/tests"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://mbw.spec;beginline=1;endline=10;md5=bbb77813272134a5c461f71abe945bef"
 
 SRC_URI = "git://github.com/raas/${BPN}.git;branch=master;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.5.1.bb b/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.5.1.bb
index 1628a05..9df450c 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.5.1.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/memtester/memtester_4.5.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Utility to test for faulty memory subsystem"
 HOMEPAGE = "http://pyropus.ca/software/memtester/"
 SECTION = "console/utils"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_10.8.1.bb b/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_10.8.1.bb
index a83e09d..6d181a5 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_10.8.1.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_10.8.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Phoronix Test Suite"
 DESCRIPTION = "The Phoronix Test Suite is designed to carry out both qualitative \
 and quantitative benchmarks in a clean, reproducible, and easy-to-use manner."
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 SECTION = "console/tests"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/qperf/qperf_0.4.11.bb b/meta-openembedded/meta-oe/recipes-benchmark/qperf/qperf_0.4.11.bb
index f21af4b..9722323 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/qperf/qperf_0.4.11.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/qperf/qperf_0.4.11.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "qperf measures bandwidth and latency between two nodes."
 HOMEPAGE = "https://github.com/linux-rdma/qperf"
 AUTHOR = "Johann George"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 inherit autotools-brokensep
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb b/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb
index a0df05c..629b123 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Small collection of benchmarks for storage I/O"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b529aaa6a0c50f15d29f89609b5c22f3"
 
 SRCREV = "f97f1ae321d1fb8111a2c638075702ed2512ff07"
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 46b6788..22c634a 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
@@ -1,7 +1,7 @@
 SUMMARY = "System performance benchmark"
 HOMEPAGE = "http://github.com/akopytov/sysbench"
 SECTION = "console/tests"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 inherit autotools
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb b/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb
index c9e2958..5efddfc 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Threaded I/O tester"
 HOMEPAGE = "http://sourceforge.net/projects/tiobench/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
 
 PR = "r1"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/acpitool/acpitool_0.5.1.bb b/meta-openembedded/meta-oe/recipes-bsp/acpitool/acpitool_0.5.1.bb
index bc9669d..b392581e 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/acpitool/acpitool_0.5.1.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/acpitool/acpitool_0.5.1.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Acpitool is a Linux ACPI client. It simply reads /proc/acpi or /sys/class entries \
 and presents the output in a meaningfull, human-readable format."
 HOMEPAGE = "http://freeunix.dyndns.org:8088/site2/acpitool.shtml"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI = "http://nchc.dl.sourceforge.net/project/${BPN}/${BPN}/${PV}/${BP}.tar.bz2 \
diff --git a/meta-openembedded/meta-oe/recipes-bsp/con2fbmap/con2fbmap_git.bb b/meta-openembedded/meta-oe/recipes-bsp/con2fbmap/con2fbmap_git.bb
index 2edb7c3..5d1c5ba 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/con2fbmap/con2fbmap_git.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/con2fbmap/con2fbmap_git.bb
@@ -3,7 +3,7 @@
 
 SUMMARY = "Simple utility for swapping an fbtft-based device as the console."
 HOMEPAGE = "https://gitlab.com/pibox/con2fbmap"
-LICENSE = "GPL-3.0"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 SECTION = "console/utils"
 DEPENDS = ""
diff --git a/meta-openembedded/meta-oe/recipes-bsp/cpufrequtils/cpufrequtils_008.bb b/meta-openembedded/meta-oe/recipes-bsp/cpufrequtils/cpufrequtils_008.bb
index ff41459..1304ba9 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/cpufrequtils/cpufrequtils_008.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/cpufrequtils/cpufrequtils_008.bb
@@ -4,7 +4,7 @@
 
 DEPENDS = "libtool-cross"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRCREV = "a2f0c39d5f21596bb9f5223e895c0ff210b265d0"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/edac-utils/edac-utils_git.bb b/meta-openembedded/meta-oe/recipes-bsp/edac-utils/edac-utils_git.bb
index 5d61649..455859e 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/edac-utils/edac-utils_git.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/edac-utils/edac-utils_git.bb
@@ -1,12 +1,16 @@
 SUMMARY = "Userspace helper for Linux kernel EDAC drivers"
 HOMEPAGE = "https://github.com/grondo/edac-utils"
+DESCRIPTION = "EDAC (Error Detection and Correction) is a set of Linux kernel \
+modules that handle reporting of hardware-related errors. Currently \
+these modules mainly handle detection of ECC memory errors for many \
+x86 and x86-64 chipsets and PCI bus parity errors."
 SECTION = "Applications/System"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = " sysfsutils"
 
-SRCREV = "f9aa96205f610de39a79ff43c7478b7ef02e3138"
+SRCREV = "1c57818ecee186aa47af0342149577df5302c022"
 PV = "0.18+git${SRCPV}"
 
 S = "${WORKDIR}/git"
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 1d06132..bdc3ca0 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
@@ -1,5 +1,5 @@
 DESCRIPTION = "flashrom is a utility for identifying, reading, writing, verifying and erasing flash chips"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 HOMEPAGE = "http://flashrom.org"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd-efi_1.2.bb b/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd-efi_1.2.bb
index b88db2e..bcad241 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd-efi_1.2.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd-efi_1.2.bb
@@ -1,5 +1,5 @@
 SUMMARY = "EFI executable for fwupd"
-LICENSE = "LGPL-2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 SRC_URI = "git://github.com/fwupd/fwupd-efi;protocol=https;branch=main \
diff --git a/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd_1.7.3.bb b/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd_1.7.6.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd_1.7.3.bb
rename to meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd_1.7.6.bb
index b02e8ca..53f1720 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd_1.7.3.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd_1.7.6.bb
@@ -1,12 +1,12 @@
 SUMMARY = "A simple daemon to allow session software to update firmware"
-LICENSE = "LGPL-2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = "glib-2.0 libxmlb json-glib sqlite3 libjcat gcab vala-native"
 
 SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz \
            file://run-ptest"
-SRC_URI[sha256sum] = "109dacc16ed0db71eb08b852e96b070b8c2c53516a3071b9d0683acd8ecd42d9"
+SRC_URI[sha256sum] = "7ebe1514acb688d2649cecc392db929094da3f03cfc98a9c0faccabb084912fa"
 
 UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
 
@@ -32,6 +32,7 @@
                    plugin_ep963x \
                    plugin_fastboot \
                    plugin_flashrom \
+                   plugin_gpio \
                    plugin_intel_spi \
                    plugin_logitech_bulkcontroller \
                    plugin_modem_manager \
@@ -45,7 +46,9 @@
                    plugin_redfish \
                    plugin_synaptics_mst \
                    plugin_synaptics_rmi \
+                   plugin_scsi \
                    plugin_thunderbolt \
+                   plugin_uf2 \
                    plugin_upower \
                    sqlite"
 
@@ -80,6 +83,7 @@
 PACKAGECONFIG[plugin_ep963x] = "-Dplugin_ep963x=true,-Dplugin_ep963x=false"
 PACKAGECONFIG[plugin_fastboot] = "-Dplugin_fastboot=true,-Dplugin_fastboot=false"
 PACKAGECONFIG[plugin_flashrom] = "-Dplugin_flashrom=true,-Dplugin_flashrom=false,flashrom"
+PACKAGECONFIG[plugin_gpio] = "-Dplugin_gpio=true,-Dplugin_gpio"
 PACKAGECONFIG[plugin_intel_spi] = "-Dplugin_intel_spi=true -Dlzma=true,-Dplugin_intel_spi=false -Dlzma=false,xz"
 PACKAGECONFIG[plugin_logitech_bulkcontroller] = "-Dplugin_logitech_bulkcontroller=true,-Dplugin_logitech_bulkcontroller=false,protobuf-c-native protobuf-c"
 PACKAGECONFIG[plugin_modem_manager] = "-Dplugin_modem_manager=true,-Dplugin_modem_manager=false,libqmi modemmanager"
@@ -92,6 +96,7 @@
 PACKAGECONFIG[plugin_powerd] = "-Dplugin_powerd=true,-Dplugin_powerd=false"
 PACKAGECONFIG[plugin_realtek_mst] = "-Dplugin_realtek_mst=true,-Dplugin_realtek_mst=false"
 PACKAGECONFIG[plugin_redfish] = "-Dplugin_redfish=true,-Dplugin_redfish=false"
+PACKAGECONFIG[plugin_scsi] = "-Dplugin_scsi=true,-Dplugin_scsi=false"
 PACKAGECONFIG[plugin_synaptics_mst] = "-Dplugin_synaptics_mst=true,-Dplugin_synaptics_mst=false"
 PACKAGECONFIG[plugin_synaptics_rmi] = "-Dplugin_synaptics_rmi=true,-Dplugin_synaptics_rmi=false"
 PACKAGECONFIG[plugin_thunderbolt] = "-Dplugin_thunderbolt=true,-Dplugin_thunderbolt=false"
@@ -99,6 +104,7 @@
 # Turn off the capsule splash as it needs G-I at buildtime, which isn't currently supported
 PACKAGECONFIG[plugin_uefi_capsule] = "-Dplugin_uefi_capsule=true -Dplugin_uefi_capsule_splash=false,-Dplugin_uefi_capsule=false,efivar fwupd-efi"
 PACKAGECONFIG[plugin_uefi_pk] = "-Dplugin_uefi_pk=true,-Dplugin_uefi_pk=false"
+PACKAGECONFIG[plugin_uf2] = "-Dplugin_uf2=true,-Dplugin_uf2=false"
 PACKAGECONFIG[plugin_upower] = "-Dplugin_upower=true,-Dplugin_upower=false"
 
 # Always disable these plugins on non-x86 platforms as they don't compile or are useless
diff --git a/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils_0.9.18.bb b/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils_0.9.18.bb
index ebd034a..fa1bb92 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils_0.9.18.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils_0.9.18.bb
@@ -5,7 +5,7 @@
 HOMEPAGE = "http://irda.sourceforge.net/"
 BUGTRACKER = "http://sourceforge.net/p/irda/bugs/"
 SECTION = "base"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://irdadump/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
                     file://smcinit/COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
                     file://man/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
diff --git a/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon_git.bb b/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon_git.bb
index f1c859d..dbfd1e7 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon_git.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon_git.bb
@@ -5,7 +5,7 @@
 "
 HOMEPAGE = "https://github.com/intel/ledmon"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
 "
 
diff --git a/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors-config_1.0.bb b/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors-config_1.0.bb
index 038f0c6..25ab44f 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors-config_1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors-config_1.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "lm_sensors configuration files"
 DESCRIPTION = "Hardware health monitoring configuration files"
 HOMEPAGE = "http://www.lm-sensors.org/"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.6.0.bb b/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.6.0.bb
index 55e303f..f821cda 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.6.0.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.6.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Hardware health monitoring applications"
 HOMEPAGE = "https://hwmon.wiki.kernel.org/"
-LICENSE = "GPLv2+ & LGPLv2.1+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
                     file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c"
 
diff --git a/meta-openembedded/meta-oe/recipes-bsp/lsscsi/lsscsi_0.31.bb b/meta-openembedded/meta-oe/recipes-bsp/lsscsi/lsscsi_0.31.bb
index 2c96de1..54faaa3 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/lsscsi/lsscsi_0.31.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/lsscsi/lsscsi_0.31.bb
@@ -1,6 +1,6 @@
 SUMMARY = "The lsscsi command lists information about SCSI devices in Linux"
 HOMEPAGE = "http://sg.danny.cz/scsi/lsscsi.html"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 SECTION = "base"
 LIC_FILES_CHKSUM="file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
 
diff --git a/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.13.bb b/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.13.bb
index 7f087da..1055fa4 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.13.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.13.bb
@@ -2,7 +2,7 @@
 AUTHOR = "Stefan Wiehler <stefan.wiehler@missinglinkelectronics.com>"
 HOMEPAGE = "https://github.com/linux-nvme/nvme-cli"
 SECTION = "console/utils"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8264535c0c4e9c6c335635c4026a8022"
 DEPENDS = "util-linux"
 PV .= "+git${SRCPV}"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb
index 3ffbf6f..42dfcd1 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://www.kernel.org/pub/linux/utils/kernel/pcmcia/"
 SECTION = "kernel/userland"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "udev sysfsutils flex-native bison-native"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.42.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.42.0.bb
index ce78fde..aa52f62 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.42.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.42.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "GNU All Mobile Managment Utilities"
 SECTION = "console/network"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 HOMEPAGE = "https://wammu.eu/"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb
index 3fe4c94..1ba7dd4 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Bluetooth library with attribute support"
 SECTION = "libs/network"
 
-LICENSE = "GPL-2.0+ | BSD-3-Clause"
+LICENSE = "GPL-2.0-or-later | BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://CMakeLists.txt;beginline=1;endline=6;md5=71fdd2be76b4e95fe28324a70d4981c5"
 
 DEPENDS = "bluez5 glib-2.0"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.3.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.3.1.bb
index 876cf13..a6e0075 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_2.3.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A library to abstract stream I/O like serial port, TCP, telnet, etc"
 HOMEPAGE = "https://github.com/cminyard/gensio"
-LICENSE = "GPL-2.0 & LGPL-2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a0fd36908af843bcee10cb6dfc47fa67 \
                     file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f \
                     "
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb b/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb
index 3e6a01d..62651bc 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "ifplugd is a Linux daemon which will automatically configure your ethernet device \
 when a cable is plugged in and automatically unconfigure it if the cable is pulled."
 HOMEPAGE = "http://0pointer.de/lennart/projects/ifplugd/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "libdaemon"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_1.2.3.bb b/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_1.2.3.bb
index bb476ca..b0fde5e 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_1.2.3.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_1.2.3.bb
@@ -1,6 +1,6 @@
 SUMMARY = "ncurses IRC client"
 DESCRIPTION = "Irssi is an ncurses IRC client"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=55fdc1113306167d6ea2561404ce02f8"
 
 DEPENDS = "glib-2.0 ncurses openssl"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.24.bb b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.26.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.24.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.26.bb
index 6ee2651..6248850 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.24.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.26.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Wireless daemon for Linux"
 HOMEPAGE = "https://iwd.wiki.kernel.org/"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09"
 
 DEPENDS = "ell"
@@ -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] = "61b5e48380cd3a6d0529f725eb6974157f1410af165f5d266b87add0bf395224"
+SRC_URI[sha256sum] = "0ff4541c2b7f14ec010c3cbd1f02350f1b58cb0c103412db22550e90d8040d6b"
 
 inherit autotools manpages pkgconfig python3native systemd
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.33.bb b/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.33.bb
index 528b4e8..346e78b 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.33.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.33.bb
@@ -1,7 +1,7 @@
 SUMMARY = "A full-featured and high-performance event loop that is loosely \
 modelled after libevent."
 HOMEPAGE = "http://software.schmorp.de/pkg/libev.html"
-LICENSE = "BSD-2-Clause | GPL-2.0+"
+LICENSE = "BSD-2-Clause | GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d6ad416afd040c90698edcdf1cbee347"
 
 SRC_URI = "http://dist.schmorp.de/libev/Attic/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.3.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.3.0.bb
index 4d873d4..41b8d94 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.3.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A protocol library to access an iPhone or iPod Touch in Linux"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "\
     file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07 \
     file://COPYING.LESSER;md5=6ab17b41640564434dda85c06b7124f7 \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.26.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.26.2.bb
index 5cd2a7e..66d55f9 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.26.2.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.26.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "libmbim is library for talking to WWAN devices by MBIM protocol"
 DESCRIPTION = "libmbim is a glib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol"
 HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libmbim/"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
     file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.18.bb b/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.18.bb
index 7e3f91a..8a27cf9 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.18.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.18.bb
@@ -6,7 +6,7 @@
 compliant operating systems"
 SUMMARY = "libmtp is an Initiator implementation of the Media Transfer Protocol (MTP)"
 HOMEPAGE = "http://libmtp.sourceforge.net/"
-LICENSE = "LGPL-2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "\
     file://COPYING;md5=0448d3676bc0de00406af227d341a4d1 \
     file://src/ptp.c;beginline=3;endline=22;md5=303cc4422fd549ef8689aded20434a9a \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.8.bb b/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.8.bb
index 06fd0f7..4d4d3e5 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.8.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.8.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Library for IPv6 Neighbor Discovery Protocol"
 HOMEPAGE = "http://libndp.org/"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 SRC_URI = "git://github.com/jpirko/libndp;branch=master;protocol=https \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/files/0001-build-use-python3-everywhere.patch b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/files/0001-build-use-python3-everywhere.patch
new file mode 100644
index 0000000..e345d28
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/files/0001-build-use-python3-everywhere.patch
@@ -0,0 +1,33 @@
+From 189528e879e4099b44aae26a2af0cb16aaa96db6 Mon Sep 17 00:00:00 2001
+From: goapunk <goapunk@riseup.net>
+Date: Mon, 13 Sep 2021 13:45:41 +0200
+Subject: [PATCH] build: use python3 everywhere
+
+---
+ build-aux/qmi-codegen/qmi-codegen                  | 2 +-
+ examples/simple-tester-python/simple-tester-python | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/build-aux/qmi-codegen/qmi-codegen b/build-aux/qmi-codegen/qmi-codegen
+index 1fea7c1..1092c8e 100755
+--- a/build-aux/qmi-codegen/qmi-codegen
++++ b/build-aux/qmi-codegen/qmi-codegen
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ #
+ # This program is free software; you can redistribute it and/or modify it under
+diff --git a/examples/simple-tester-python/simple-tester-python b/examples/simple-tester-python/simple-tester-python
+index af9065a..a35e505 100755
+--- a/examples/simple-tester-python/simple-tester-python
++++ b/examples/simple-tester-python/simple-tester-python
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ #
+ # This program is free software; you can redistribute it and/or modify it under
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.30.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.30.4.bb
index dee36d7..4807244 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.30.4.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.30.4.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "libqmi is a glib-based library for talking to WWAN modems and \
                devices which speak the Qualcomm MSM Interface (QMI) protocol"
 HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libqmi"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
     file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
@@ -10,12 +10,23 @@
 
 DEPENDS = "glib-2.0 glib-2.0-native"
 
-inherit autotools pkgconfig bash-completion gobject-introspection
+inherit meson pkgconfig bash-completion gobject-introspection
 
-SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz"
+SRCREV ?= "f6c2feaf199e0f129a0bde8c5e6cba5f2117b564"
+# patch 0001 is on main branch upstream
+SRC_URI = "\
+    git://gitlab.freedesktop.org/mobile-broadband/libqmi.git;protocol=https;branch=qmi-1-30 \
+    file://0001-build-use-python3-everywhere.patch \
+"
 
-SRC_URI[sha256sum] = "00d7da30a4f8d1185f37cba289cfaf1dfcd04a58f2f76d6acfdf5b85312d6ed6"
+S = "${WORKDIR}/git"
 
 PACKAGECONFIG ??= "udev mbim"
-PACKAGECONFIG[udev] = ",--without-udev,libgudev"
-PACKAGECONFIG[mbim] = "--enable-mbim-qmux,--disable-mbim-qmux,libmbim"
+PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,libgudev"
+PACKAGECONFIG[mbim] = "-Dmbim_qmux=true,-Dmbim_qmux=false,libmbim"
+PACKAGECONFIG[qrtr] = "-Dqrtr=true,-Dqrtr=false,libqrtr-glib"
+
+EXTRA_OEMESON = " \
+    -Dgtk_doc=false \
+    -Dman=false \
+"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqrtr-glib/libqrtr-glib_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/libqrtr-glib/libqrtr-glib_git.bb
new file mode 100644
index 0000000..7bac311
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libqrtr-glib/libqrtr-glib_git.bb
@@ -0,0 +1,21 @@
+SUMMARY = "library to use and manage the QRTR bus"
+DESCRIPTION = "libqrtr-glib is a glib-based library to use and manage the QRTR (Qualcomm IPC Router) bus"
+HOMEPAGE = "https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib"
+
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://LICENSES/LGPL-2.1-or-later.txt;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib.git;protocol=https;branch=qrtr-1-2"
+
+PV = "1.2.2+git${SRCPV}"
+SRCREV = "8991f0e93713ebf4da48ae4f23940ead42f64c8c"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig gobject-introspection
+
+DEPENDS = "glib-2.0"
+
+EXTRA_OEMESON = " \
+    -Dgtk_doc=false \
+"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
index 1c3419c..2fa24b2 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "libTorrent is a BitTorrent library written in C++ for *nix, \
 with a focus on high performance and good code."
 HOMEPAGE = "http://libtorrent.rakshasa.no/"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
 
 DEPENDS = "zlib libsigc++-2.0 openssl cppunit"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.1.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.1.1.bb
index f3dc5d1..9c0f56e 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_3.1.1.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Precision Time Protocol (PTP) according to IEEE standard 1588 for Linux"
 HOMEPAGE = "http://linuxptp.sourceforge.net/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "http://sourceforge.net/projects/linuxptp/files/v3.1/linuxptp-${PV}.tgz \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb b/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb
index 4f1430b..7b5eecf 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Loudmouth is a lightweight and easy-to-use C library for programming with the Jabber protocol."
 HOMEPAGE = "http://www.loudmouth-project.org/"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c4f38aef94828f6b280e00d1173be689"
 
 DEPENDS = "glib-2.0 libcheck openssl libidn"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/files/0001-core-switch-bash-shell-scripts-to-use-bin-sh-for-use.patch b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/files/0001-core-switch-bash-shell-scripts-to-use-bin-sh-for-use.patch
new file mode 100644
index 0000000..7c3e775
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/files/0001-core-switch-bash-shell-scripts-to-use-bin-sh-for-use.patch
@@ -0,0 +1,68 @@
+From f7a3292c1c753b29384e216693f51a4213fea7d0 Mon Sep 17 00:00:00 2001
+From: "Bruce A. Johnson" <waterfordtrack@gmail.com>
+Date: Wed, 22 Dec 2021 14:24:02 -0500
+Subject: [PATCH 1/2] core: switch bash shell scripts to use /bin/sh for use
+ w/Busybox.
+
+Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/483
+---
+ data/fcc-unlock/105b           | 2 +-
+ data/fcc-unlock/1199           | 2 +-
+ data/fcc-unlock/1eac           | 2 +-
+ test/mmcli-test-sms            | 2 +-
+ tools/tests/test-wrapper.sh.in | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/data/fcc-unlock/105b b/data/fcc-unlock/105b
+index 21fe5329..f276050f 100644
+--- a/data/fcc-unlock/105b
++++ b/data/fcc-unlock/105b
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ # SPDX-License-Identifier: CC0-1.0
+ # 2021 Aleksander Morgado <aleksander@aleksander.es>
+diff --git a/data/fcc-unlock/1199 b/data/fcc-unlock/1199
+index 0109c6ab..e1d3804c 100644
+--- a/data/fcc-unlock/1199
++++ b/data/fcc-unlock/1199
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ # SPDX-License-Identifier: CC0-1.0
+ # 2021 Aleksander Morgado <aleksander@aleksander.es>
+diff --git a/data/fcc-unlock/1eac b/data/fcc-unlock/1eac
+index 1068d9c2..d9342852 100644
+--- a/data/fcc-unlock/1eac
++++ b/data/fcc-unlock/1eac
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ # SPDX-License-Identifier: CC0-1.0
+ # 2021 Aleksander Morgado <aleksander@aleksander.es>
+diff --git a/test/mmcli-test-sms b/test/mmcli-test-sms
+index 18e0a7b4..7136ee0d 100755
+--- a/test/mmcli-test-sms
++++ b/test/mmcli-test-sms
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ print_usage () {
+     echo "usage: $0 [MODEM INDEX] [all|ucs2|gsm7|data] [NUMBER]"
+diff --git a/tools/tests/test-wrapper.sh.in b/tools/tests/test-wrapper.sh.in
+index d64ea4cb..fcdb56de 100644
+--- a/tools/tests/test-wrapper.sh.in
++++ b/tools/tests/test-wrapper.sh.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ # For debugging behavior of test-modemmanager-service.py, you can modify
+ # this line to add --log-file option
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/files/0002-fcc-unlock-Make-scripts-POSIX-shell-compatible.patch b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/files/0002-fcc-unlock-Make-scripts-POSIX-shell-compatible.patch
new file mode 100644
index 0000000..d911d54
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/files/0002-fcc-unlock-Make-scripts-POSIX-shell-compatible.patch
@@ -0,0 +1,100 @@
+From ddf634b92bf96b35f521db6da329628b4525c2eb Mon Sep 17 00:00:00 2001
+From: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
+Date: Fri, 25 Feb 2022 21:37:13 +0100
+Subject: [PATCH 2/2] fcc-unlock: Make scripts POSIX shell compatible
+
+This allows us to not rely on bash which may not be available on
+constrained systems, e.g. Yocto-built embedded systems. The scripts now
+pass shellcheck.
+
+Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
+---
+ data/fcc-unlock/105b | 8 ++++----
+ data/fcc-unlock/1199 | 6 +++---
+ data/fcc-unlock/1eac | 8 ++++----
+ 3 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/data/fcc-unlock/105b b/data/fcc-unlock/105b
+index f276050f..772c90f4 100644
+--- a/data/fcc-unlock/105b
++++ b/data/fcc-unlock/105b
+@@ -15,20 +15,20 @@ shift
+ # second and next arguments are control port names
+ for PORT in "$@"; do
+   # match port type in Linux 5.14 and newer
+-  grep -q MBIM /sys/class/wwan/${PORT}/type 2>/dev/null && {
++  grep -q MBIM "/sys/class/wwan/$PORT/type" 2>/dev/null && {
+     MBIM_PORT=$PORT
+     break
+   }
+   # match port name in Linux 5.13
+-  [[ $PORT == *"MBIM"* ]] && {
++  echo "$PORT" | grep -q MBIM && {
+     MBIM_PORT=$PORT
+     break
+   }
+ done
+ 
+ # fail if no MBIM port exposed
+-[ -n "${MBIM_PORT}" ] || exit 2
++[ -n "$MBIM_PORT" ] || exit 2
+ 
+ # run qmicli operation over MBIM
+-qmicli --device-open-proxy --device=/dev/${MBIM_PORT} --dms-foxconn-set-fcc-authentication=0
++qmicli --device-open-proxy --device="/dev/$MBIM_PORT" --dms-foxconn-set-fcc-authentication=0
+ exit $?
+diff --git a/data/fcc-unlock/1199 b/data/fcc-unlock/1199
+index e1d3804c..6dbf8d1b 100644
+--- a/data/fcc-unlock/1199
++++ b/data/fcc-unlock/1199
+@@ -19,15 +19,15 @@ shift
+ # second and next arguments are control port names
+ for PORT in "$@"; do
+   # match port name
+-  [[ $PORT == *"cdc-wdm"* ]] && {
++  echo "$PORT" | grep -q cdc-wdm && {
+     CDC_WDM_PORT=$PORT
+     break
+   }
+ done
+ 
+ # fail if no cdc-wdm port exposed
+-[ -n "${CDC_WDM_PORT}" ] || exit 2
++[ -n "$CDC_WDM_PORT" ] || exit 2
+ 
+ # run qmicli operation
+-qmicli --device-open-proxy --device=/dev/${CDC_WDM_PORT} --dms-set-fcc-authentication
++qmicli --device-open-proxy --device="/dev/$CDC_WDM_PORT" --dms-set-fcc-authentication
+ exit $?
+diff --git a/data/fcc-unlock/1eac b/data/fcc-unlock/1eac
+index d9342852..44ce46d7 100644
+--- a/data/fcc-unlock/1eac
++++ b/data/fcc-unlock/1eac
+@@ -15,20 +15,20 @@ shift
+ # second and next arguments are control port names
+ for PORT in "$@"; do
+   # match port type in Linux 5.14 and newer
+-  grep -q MBIM /sys/class/wwan/${PORT}/type 2>/dev/null && {
++  grep -q MBIM "/sys/class/wwan/$PORT/type" 2>/dev/null && {
+     MBIM_PORT=$PORT
+     break
+   }
+   # match port name in Linux 5.13
+-  [[ $PORT == *"MBIM"* ]] && {
++  echo "$PORT" | grep -q MBIM && {
+     MBIM_PORT=$PORT
+     break
+   }
+ done
+ 
+ # fail if no MBIM port exposed
+-[ -n "${MBIM_PORT}" ] || exit 2
++[ -n "$MBIM_PORT" ] || exit 2
+ 
+ # run mbimcli operation
+-mbimcli --device-open-proxy --device=/dev/${MBIM_PORT} --quectel-set-radio-state=on
++mbimcli --device-open-proxy --device="/dev/$MBIM_PORT" --quectel-set-radio-state=on
+ exit $?
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.16.8.bb b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.16.8.bb
deleted file mode 100644
index 5aaa55c..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.16.8.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "ModemManager is a daemon controlling broadband devices/connections"
-DESCRIPTION = "ModemManager is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ModemManager/"
-LICENSE = "GPL-2.0 & LGPL-2.1"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
-"
-
-inherit gnomebase gettext systemd vala gobject-introspection bash-completion
-
-DEPENDS = "glib-2.0 libgudev libxslt-native"
-
-SRC_URI = "http://www.freedesktop.org/software/ModemManager/ModemManager-${PV}.tar.xz"
-SRC_URI[sha256sum] = "21fdfaf94171261ad9d99771894f5ade4bc39ef3d1ff1d421054d14713e97880"
-S = "${WORKDIR}/ModemManager-${PV}"
-
-PACKAGECONFIG ??= "mbim qmi \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd polkit', d)} \
-"
-
-PACKAGECONFIG[at] = "--with-at-command-via-dbus"
-PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,,"
-PACKAGECONFIG[polkit] = "--with-polkit=yes,--with-polkit=no,polkit"
-# Support WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol.
-PACKAGECONFIG[mbim] = "--with-mbim,--without-mbim,libmbim"
-# Support WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol.
-PACKAGECONFIG[qmi] = "--with-qmi,--without-qmi,libqmi"
-
-EXTRA_OECONF = " \
-    --with-udev-base-dir=${nonarch_base_libdir}/udev \
-"
-
-FILES:${PN} += " \
-    ${datadir}/icons \
-    ${datadir}/polkit-1 \
-    ${datadir}/dbus-1 \
-    ${datadir}/ModemManager \
-    ${libdir}/ModemManager \
-    ${systemd_unitdir}/system \
-"
-
-FILES:${PN}-dev += " \
-    ${libdir}/ModemManager/*.la \
-"
-
-FILES:${PN}-staticdev += " \
-    ${libdir}/ModemManager/*.a \
-"
-
-FILES:${PN}-dbg += "${libdir}/ModemManager/.debug"
-
-SYSTEMD_SERVICE:${PN} = "ModemManager.service"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.18.6.bb b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.18.6.bb
new file mode 100644
index 0000000..14d9942
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.18.6.bb
@@ -0,0 +1,62 @@
+SUMMARY = "ModemManager is a daemon controlling broadband devices/connections"
+DESCRIPTION = "ModemManager is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ModemManager/"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase gettext systemd gobject-introspection bash-completion
+
+DEPENDS = "glib-2.0 libgudev libxslt-native dbus"
+
+SRCREV ?= "a7bcf2036b34d5043dbc33fee7d98bae5859c4d3"
+
+# Patches 0001, 0002 will be in ModemManager > 1.18.6
+SRC_URI = " \
+    git://gitlab.freedesktop.org/mobile-broadband/ModemManager.git;protocol=https;branch=mm-1-18 \
+    file://0001-core-switch-bash-shell-scripts-to-use-bin-sh-for-use.patch \
+    file://0002-fcc-unlock-Make-scripts-POSIX-shell-compatible.patch \
+"
+
+S = "${WORKDIR}/git"
+
+# strict, permissive
+MODEMMANAGER_POLKIT_TYPE ??= "permissive"
+
+PACKAGECONFIG ??= "vala mbim qmi \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd polkit', d)} \
+"
+
+PACKAGECONFIG[at] = "-Dat_command_via_dbus=true"
+PACKAGECONFIG[systemd] = " \
+    -Dsystemdsystemunitdir=${systemd_unitdir}/system/, \
+    -Dsystemdsystemunitdir=no -Dsystemd_journal=false -Dsystemd_suspend_resume=false \
+"
+PACKAGECONFIG[polkit] = "-Dpolkit=${MODEMMANAGER_POLKIT_TYPE},-Dpolkit=no,polkit"
+# Support WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol.
+PACKAGECONFIG[mbim] = "-Dmbim=true,-Dmbim=false -Dplugin_dell=disabled -Dplugin_foxconn=disabled,libmbim"
+# Support WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol.
+PACKAGECONFIG[qmi] = "-Dqmi=true,-Dqmi=false,libqmi"
+PACKAGECONFIG[qrtr] = "-Dqrtr=true,-Dqrtr=false,libqrtr-glib"
+PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'vala', 'vala', '', d)}
+
+EXTRA_OEMESON = " \
+    -Dudevdir=${nonarch_base_libdir}/udev \
+    -Dqrtr=false \
+"
+
+FILES:${PN} += " \
+    ${datadir}/icons \
+    ${datadir}/polkit-1 \
+    ${datadir}/dbus-1 \
+    ${datadir}/ModemManager \
+    ${libdir}/ModemManager \
+    ${systemd_unitdir}/system \
+"
+
+SYSTEMD_SERVICE:${PN} = "ModemManager.service"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.3.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.3.2.bb
index 220c0a8..0921db5 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.3.2.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.3.2.bb
@@ -9,7 +9,7 @@
 robust and responsive, especially over Wi-Fi, cellular, and \
 long-distance links."
 HOMEPAGE = "http://mosh.mit.edu"
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 DEPENDS = "protobuf-native protobuf ncurses zlib libio-pty-perl openssl libutempter"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb b/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
index a181ef0..b2a2044 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
@@ -1,5 +1,5 @@
 DESCRIPTION = "obex-data-server is a D-Bus service providing high-level OBEX client and server side functionality"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "gtk+ dbus-glib dbus-glib-native imagemagick openobex bluez5"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
index 420d563..7348274 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
@@ -2,7 +2,7 @@
 Object Exchange (OBEX) protocol."
 HOMEPAGE = "http://openobex.triq.net"
 SECTION = "libs"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
                     file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
 "
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/obexftp/obexftp_0.24.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/obexftp/obexftp_0.24.2.bb
index 9c9c596..f7a98fb 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/obexftp/obexftp_0.24.2.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/obexftp/obexftp_0.24.2.bb
@@ -1,5 +1,5 @@
 DESCRIPTION = "A tool for transfer files to/from any OBEX enabled device"
-LICENSE = "GPLv2 & PD & LGPLv2.1"
+LICENSE = "GPL-2.0-only & PD & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LGPL-2.1.txt;md5=4fbd65380cdd255951079008b364516c \
                     file://GPL-2.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://License.txt;md5=fcbddc3c1debed80dd80da2d3e5f0dc1 \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp/0001-cmake-Use-CMAKE_INSTALL_LIBDIR-and-CMAKE_INSTALL_BIN.patch b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp/0001-cmake-Use-CMAKE_INSTALL_LIBDIR-and-CMAKE_INSTALL_BIN.patch
new file mode 100644
index 0000000..7cf9a8b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp/0001-cmake-Use-CMAKE_INSTALL_LIBDIR-and-CMAKE_INSTALL_BIN.patch
@@ -0,0 +1,49 @@
+From 2a0dd2b300242230faa92cf8e26ccd70231bc9ef Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 19 Mar 2022 23:37:58 -0700
+Subject: [PATCH] cmake: Use CMAKE_INSTALL_LIBDIR and CMAKE_INSTALL_BINDIR
+
+This ensures the install paths are not hardcoded.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ cmake/CMakeLists.txt       | 4 ++--
+ src/samples/CMakeLists.txt | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
+index a9f8908..7eadc60 100644
+--- a/cmake/CMakeLists.txt
++++ b/cmake/CMakeLists.txt
+@@ -11,7 +11,7 @@ export(EXPORT ${package_name}
+     FILE "${CMAKE_CURRENT_BINARY_DIR}/${package_name}Targets.cmake"
+     NAMESPACE ${package_name}::)
+ 
+-install(EXPORT ${package_name} DESTINATION lib/cmake/${package_name}
++install(EXPORT ${package_name} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${package_name}
+     FILE ${package_name}Targets.cmake
+     NAMESPACE ${package_name}::)
+ 
+@@ -19,4 +19,4 @@ install(FILES
+     "${CMAKE_CURRENT_BINARY_DIR}/${package_name}Config.cmake"
+     FindPahoMqttC.cmake
+     "${CMAKE_CURRENT_BINARY_DIR}/${package_name}ConfigVersion.cmake"
+-    DESTINATION lib/cmake/${package_name})
++    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${package_name})
+diff --git a/src/samples/CMakeLists.txt b/src/samples/CMakeLists.txt
+index 953f5dc..d26729a 100644
+--- a/src/samples/CMakeLists.txt
++++ b/src/samples/CMakeLists.txt
+@@ -103,7 +103,7 @@ endif()
+ 
+ ## install binaries
+ install(TARGETS ${INSTALL_TARGETS} EXPORT PahoMqttCppSamples
+-	RUNTIME DESTINATION bin
+-	LIBRARY DESTINATION lib
++	RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ )
+ 
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.2.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.2.0.bb
index b5a6ac2..a9e16fa 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.2.0.bb
@@ -11,8 +11,9 @@
     file://about.html;md5=dcde438d73cf42393da9d40fabc0c9bc \
 "
 
-SRC_URI = "git://github.com/eclipse/paho.mqtt.cpp;protocol=http;branch=master;protocol=https"
-
+SRC_URI = "git://github.com/eclipse/paho.mqtt.cpp;protocol=http;branch=master;protocol=https \
+           file://0001-cmake-Use-CMAKE_INSTALL_LIBDIR-and-CMAKE_INSTALL_BIN.patch \
+"
 SRCREV = "33921c8b68b351828650c36816e7ecf936764379"
 
 DEPENDS = "openssl paho-mqtt-c"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_1.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_1.0.bb
index ac0e8b7..c9c0738 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_1.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Radio enable/disable command line utility"
 HOMEPAGE = "http://linuxwireless.org/en/users/Documentation/rfkill"
 SECTION = "base"
-LICENSE = "BSD-0-Clause"
+LICENSE = "0BSD"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c6036d0eb7edbfced28c4160e5d3fa94"
 
 SRC_URI = "http://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
index 0f3b5e2..7879324 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Torrent client"
 HOMEPAGE = "http://libtorrent.rakshasa.no/"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "libsigc++-2.0 curl cppunit libtorrent ncurses"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.3.5.bb b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.3.5.bb
index 63b97d2..79d5403 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.3.5.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.3.5.bb
@@ -2,7 +2,7 @@
 SECTION = "console/network"
 HOMEPAGE = "http://sourceforge.net/projects/ser2net/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f"
 
 DEPENDS = "gensio libyaml"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.21.bb b/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.21.bb
index ca40957..9e54968 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.21.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.21.bb
@@ -1,7 +1,7 @@
 SUMMARY = "SMS Gateway software"
 DESCRIPTION = "The SMS Server Tools 3 is a SMS Gateway software which can send and receive short messages through GSM modems and mobile phones."
 SECTION = "console/network"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=4d21efa1bb2a186360dde4035f860682"
 HOMEPAGE = "http://smstools3.kekekasvi.com"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb
index e070d1b..1891eae 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Telepathy Framework: GLib-based helper library for connection managers"
 HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
 DEPENDS = "glib-2.0 dbus hostpython-runtime-native dbus-native dbus-glib libxslt-native"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 
 SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-glib/${BP}.tar.gz"
 SRC_URI[md5sum] = "cbeb0a24acc26e7f095be281c324da69"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
index a8190a4..039cfc3 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Telepathy implementation of the Internet Relay Chat protocols."
 HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
 DEPENDS = "glib-2.0 dbus telepathy-glib openssl libxslt-native"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
                     file://src/idle.c;beginline=1;endline=19;md5=b06b1e2594423111a1a7910b0eefc7f9"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/transmission/transmission_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/transmission/transmission_git.bb
index e81ec74..735db14 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/transmission/transmission_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/transmission/transmission_git.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Transmission is a fast, easy, and free BitTorrent client"
 SECTION = "network"
 HOMEPAGE = "https://transmissionbt.com/"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=73f535ddffcf2a0d3af4f381f84f9b33"
 
 DEPENDS = "curl libevent gnutls openssl libtool intltool-native glib-2.0-native"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_1.1.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_1.1.1.bb
index a74b157..3f4f846 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_1.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_1.1.1.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "This daemon is in charge of multiplexing connections over USB to an iPhone or iPod touch."
 HOMEPAGE = "https://github.com/libimobiledevice/usbmuxd"
-LICENSE = "GPLv3 & GPLv2 & LGPLv2.1"
+LICENSE = "GPL-3.0-only & GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=ebb5c50ab7cab4baeffba14977030c07 \
                     file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
index c41a173..99e3cca 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
@@ -1,7 +1,7 @@
 HOMEPAGE = "http://www.alumnit.ca/wiki/?WvDial"
 DESCRIPTION = "WvDial is a program that makes it easy to connect your Linux workstation to the Internet."
 
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
 
 inherit pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
index 5ff8496..d73c646 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
@@ -1,7 +1,7 @@
 HOMEPAGE = "http://alumnit.ca/wiki/index.php?page=WvStreams"
 SUMMARY = "WvStreams is a network programming library in C++"
 
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=55ca817ccb7d5b5b66355690e9abc605"
 
 DEPENDS = "zlib openssl (>= 0.9.8) dbus readline"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_5.2.6.bb b/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_5.2.6.bb
index b5ab15d..66c8075 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_5.2.6.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_5.2.6.bb
@@ -17,7 +17,7 @@
 multitude of servers."
 HOMEPAGE = "http://www.zabbix.com/"
 SECTION = "Applications/Internet"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=300e938ad303147fede2294ed78fe02e"
 DEPENDS  = "libevent libpcre openldap virtual/libiconv zlib"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.4.bb
index 72fd561..697bc47 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.4.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.4.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "ZeroMQ looks like an embeddable networking library but acts like a concurrency framework"
 HOMEPAGE = "http://www.zeromq.org"
-LICENSE = "LGPLv3+"
+LICENSE = "LGPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=d5311495d952062e0e4fbba39cbf3de1"
 
 PACKAGECONFIG ??= "libsodium"
diff --git a/meta-openembedded/meta-oe/recipes-core/dbus-cxx/dbus-cxx_2.1.0.bb b/meta-openembedded/meta-oe/recipes-core/dbus-cxx/dbus-cxx_2.1.0.bb
index 1524f09..487681c 100644
--- a/meta-openembedded/meta-oe/recipes-core/dbus-cxx/dbus-cxx_2.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-core/dbus-cxx/dbus-cxx_2.1.0.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://dbus-cxx.github.io/"
 BUGTRACKER = "https://github.com/libsigcplusplus/libsigcplusplus/issues"
 SECTION = "base"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4cf0188f02184e1e84b9586ac53c3f83"
 
 SRC_URI = "git://github.com/dbus-cxx/dbus-cxx.git;branch=master;protocol=https \
diff --git a/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb b/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb
index f40b488..d096cd6 100644
--- a/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "dbus forwarding daemon"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://dbus-daemon-proxy.c;endline=19;md5=41df6d21fe1c97d6a1cc22a5bf374cba"
 DEPENDS = "dbus dbus-glib"
 SRCREV = "1226a0a1374628ff191f6d8a56000be5e53e7608"
diff --git a/meta-openembedded/meta-oe/recipes-core/dbus/libdbus-c++_0.9.0.bb b/meta-openembedded/meta-oe/recipes-core/dbus/libdbus-c++_0.9.0.bb
index 999a0c0..8e8f544 100644
--- a/meta-openembedded/meta-oe/recipes-core/dbus/libdbus-c++_0.9.0.bb
+++ b/meta-openembedded/meta-oe/recipes-core/dbus/libdbus-c++_0.9.0.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "DBus-c++ attempts to provide a C++ API for D-BUS. The library has a glib and an Ecore mainloop integration. It also offers an optional own main loop."
 HOMEPAGE = "http://dbus-cplusplus.sourceforge.net"
 SECTION = "base"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 DEPENDS = "dbus expat glib-2.0 libpcre"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc b/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc
index 948e18d..8247870 100644
--- a/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc
+++ b/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc
@@ -1,6 +1,6 @@
 DESCRIPTION = "emlog is a Linux kernel module that makes it easy to access the \
 most recent (and only the most recent) output from a process"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI = "git://github.com/nicupavel/emlog.git;protocol=http;branch=master;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm-2.68_2.70.0.bb b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm-2.68_2.70.0.bb
index 357cf4f..278cfd8 100644
--- a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm-2.68_2.70.0.bb
+++ b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm-2.68_2.70.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "C++ bindings for the glib library"
 HOMEPAGE = "http://www.gtkmm.org/"
 SECTION = "libs"
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=42dfffebc56fec7527aac53b7a89d1d8 \
                     file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.66.2.bb b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.66.2.bb
index 2097ce8..f554a73 100644
--- a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.66.2.bb
+++ b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.66.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "C++ bindings for the glib library"
 HOMEPAGE = "http://www.gtkmm.org/"
 SECTION = "libs"
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=42dfffebc56fec7527aac53b7a89d1d8 \
                     file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb b/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb
index b8818c1..9733749 100644
--- a/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb
@@ -1,7 +1,7 @@
 SUMMARY  = "Platform independent Near Field Communication (NFC) library"
 DESCRIPTION = "libnfc is a library which allows userspace application access \
 to NFC devices."
-LICENSE  = "LGPLv3"
+LICENSE  = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b52f2d57d10c4f7ee67a7eb9615d5d24"
 SECTION = "libs"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.7.bb b/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.7.bb
index 8736d44..84494b8 100644
--- a/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.7.bb
+++ b/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.7.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A library for loose coupling of C++ method calls"
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
 
 DEPENDS = "mm-common"
diff --git a/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.2.0.bb b/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.2.0.bb
index 3726dd0..9318a30 100644
--- a/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.2.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A library for loose coupling of C++ method calls"
 SECTION = "libs"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=959bffe2993816eb32ec4bc1ec1d5875"
 
 DEPENDS = "mm-common"
diff --git a/meta-openembedded/meta-oe/recipes-core/libxml/libxml++-5.0_5.0.1.bb b/meta-openembedded/meta-oe/recipes-core/libxml/libxml++-5.0_5.0.1.bb
index 9c3b3e9..c0f0b2e 100644
--- a/meta-openembedded/meta-oe/recipes-core/libxml/libxml++-5.0_5.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-core/libxml/libxml++-5.0_5.0.1.bb
@@ -3,7 +3,7 @@
 HOMEPAGE = "http://libxmlplusplus.sourceforge.net"
 BUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml%2B%2B"
 SECTION = "libs"
-LICENSE = "LGPL-2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 "
 
 SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
diff --git a/meta-openembedded/meta-oe/recipes-core/libxml/libxml++_2.42.1.bb b/meta-openembedded/meta-oe/recipes-core/libxml/libxml++_2.42.1.bb
index 6065333..f75568a 100644
--- a/meta-openembedded/meta-oe/recipes-core/libxml/libxml++_2.42.1.bb
+++ b/meta-openembedded/meta-oe/recipes-core/libxml/libxml++_2.42.1.bb
@@ -3,7 +3,7 @@
 HOMEPAGE = "http://libxmlplusplus.sourceforge.net"
 BUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml%2B%2B"
 SECTION = "libs"
-LICENSE = "LGPL-2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 "
 
 SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
diff --git a/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb b/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb
index b39784e..07c5cc9 100644
--- a/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Mickey's DBus Introspection and Interaction Utility V2"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07"
 
 DEPENDS = "readline"
diff --git a/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_1.0.4.bb b/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_1.0.4.bb
index cee56fd..33969ff 100644
--- a/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_1.0.4.bb
+++ b/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_1.0.4.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Common GNOME build files for C++ bindings"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl/0001-meson-Use-pkg-config-to-detect-iniparser.patch b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl/0001-meson-Use-pkg-config-to-detect-iniparser.patch
new file mode 100644
index 0000000..ee172c3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl/0001-meson-Use-pkg-config-to-detect-iniparser.patch
@@ -0,0 +1,41 @@
+From 44516eee75696c84849c0f7aa632e2456b101813 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 26 Mar 2022 00:57:03 -0700
+Subject: [PATCH] meson: Use pkg-config to detect iniparser
+
+Add iniparser dependency to util subdir
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ meson.build      | 2 +-
+ util/meson.build | 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 42e11aa..4209320 100644
+--- a/meson.build
++++ b/meson.build
+@@ -160,7 +160,7 @@ cc = meson.get_compiler('c')
+ 
+ # keyutils and iniparser lack pkgconfig
+ keyutils = cc.find_library('keyutils', required : get_option('keyutils'))
+-iniparser = cc.find_library('iniparser', required : true)
++iniparser = dependency('iniparser', required : true)
+ 
+ conf = configuration_data()
+ check_headers = [
+diff --git a/util/meson.build b/util/meson.build
+index 784b279..8e9ae9a 100644
+--- a/util/meson.build
++++ b/util/meson.build
+@@ -12,5 +12,6 @@ util = static_library('util', [
+   'iomem.c',
+   ],
+   include_directories : root_inc,
++  dependencies : iniparser,
+ )
+ util_dep = declare_dependency(link_with : util)
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl/0001-util-Correct-path-to-iniparser.h.patch b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl/0001-util-Correct-path-to-iniparser.h.patch
new file mode 100644
index 0000000..fe2612c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl/0001-util-Correct-path-to-iniparser.h.patch
@@ -0,0 +1,28 @@
+From c212d228c25cb583f52a6d31e9f0ec7bc1f9c506 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 26 Mar 2022 01:10:02 -0700
+Subject: [PATCH] util: Correct path to iniparser.h
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ util/parse-configs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util/parse-configs.c b/util/parse-configs.c
+index c834a07..1b7ffa6 100644
+--- a/util/parse-configs.c
++++ b/util/parse-configs.c
+@@ -4,7 +4,7 @@
+ #include <dirent.h>
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <iniparser.h>
++#include <iniparser/iniparser.h>
+ #include <sys/stat.h>
+ #include <util/parse-configs.h>
+ #include <util/strbuf.h>
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v69.bb b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v69.bb
deleted file mode 100644
index b848ca6..0000000
--- a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v69.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "libnvdimm utility library"
-DESCRIPTION = "Utility library for managing the libnvdimm \
-(non-volatile memory device) sub-system in the Linux kernel. \
-The LIBNVDIMM subsystem provides support for three types of \
-NVDIMMs, namely,PMEM, BLK, and NVDIMM devices that can \
-simultaneously support both PMEM and BLK mode access."
-HOMEPAGE = "https://git.kernel.org/cgit/linux/kernel/git/nvdimm/nvdimm.git/tree/Documentation/nvdimm/nvdimm.txt?h=libnvdimm-for-next"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e66651809cac5da60c8b80e9e4e79e08"
-
-inherit autotools-brokensep pkgconfig bash-completion systemd
-
-SRCREV = "ea62d6d53bf6f806c4841e97a370201e18446860"
-SRC_URI = "git://github.com/pmem/ndctl.git;branch=master;protocol=https"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>v\d+(\.\d+)*)"
-
-DEPENDS = "kmod udev json-c keyutils"
-
-S = "${WORKDIR}/git"
-
-EXTRA_OECONF += "--enable-test --enable-destructive --disable-docs"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)}"
-PACKAGECONFIG[systemd] = "--with-systemd, --without-systemd, systemd"
-
-do_configure:prepend() {
-    ${S}/autogen.sh
-}
-
-SYSTEMD_SERVICE:${PN} = "ndctl-monitor.service"
-SYSTEMD_AUTO_ENABLE:${PN} = "disable"
-
-FILES:${PN} += "${datadir}/daxctl/daxctl.conf"
diff --git a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v73.bb b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v73.bb
new file mode 100644
index 0000000..c88d392
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v73.bb
@@ -0,0 +1,35 @@
+SUMMARY = "libnvdimm utility library"
+DESCRIPTION = "Utility library for managing the libnvdimm \
+(non-volatile memory device) sub-system in the Linux kernel. \
+The LIBNVDIMM subsystem provides support for three types of \
+NVDIMMs, namely,PMEM, BLK, and NVDIMM devices that can \
+simultaneously support both PMEM and BLK mode access."
+HOMEPAGE = "https://git.kernel.org/cgit/linux/kernel/git/nvdimm/nvdimm.git/tree/Documentation/nvdimm/nvdimm.txt?h=libnvdimm-for-next"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & MIT & CC0-1.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=74a614eac8b2657a4b8e6607421a0883"
+
+inherit meson pkgconfig bash-completion systemd
+
+SRCREV = "dd58d43458943d20ff063850670bf54a5242c9c5"
+SRC_URI = "git://github.com/pmem/ndctl.git;branch=main;protocol=https \
+           file://0001-util-Correct-path-to-iniparser.h.patch \
+           file://0001-meson-Use-pkg-config-to-detect-iniparser.patch"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>v\d+(\.\d+)*)"
+
+DEPENDS = "kmod udev json-c keyutils iniparser"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF += "-Ddestructive=enabled"
+
+PACKAGECONFIG ??= "tests ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)}"
+PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
+PACKAGECONFIG[tests] = "-Dtest=enabled, -Dtest=disabled,"
+PACKAGECONFIG[docs] = "-Ddocs=enabled -Dasciidoctor=enabled,-Ddocs=disabled -Dasciidoctor=disabled, asciidoc-native"
+
+SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
+SYSTEMD_SERVICE:${PN} = "ndctl-monitor.service daxdev-reconfigure@.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "disable"
+
+FILES:${PN} += "${datadir}/daxctl/daxctl.conf "
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 5a0776c..8a71260 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
@@ -1,13 +1,13 @@
 SUMMARY  = "OpenCL API C++ bindings"
 DESCRIPTION = "OpenCL API C++ bindings from Khronos"
 
-SRC_URI = "git://github.com/KhronosGroup/OpenCL-CLHPP.git;protocol=https;branch=master"
+SRC_URI = "git://github.com/KhronosGroup/OpenCL-CLHPP.git;protocol=https;branch=main"
 
 LICENSE  = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-PV = "2.0.15+git${SRCPV}"
-SRCREV = "f7237f3799009d856935e1eecfd7c9301fe522b4"
+PV = "2.0.16+git${SRCPV}"
+SRCREV = "1df82b9749739f2681081092ae163bb0f0d40f66"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/opencl/opencl-headers_git.bb b/meta-openembedded/meta-oe/recipes-core/opencl/opencl-headers_git.bb
index f77bf46..5e8e6f0 100644
--- a/meta-openembedded/meta-oe/recipes-core/opencl/opencl-headers_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/opencl/opencl-headers_git.bb
@@ -5,12 +5,13 @@
 SECTION = "base"
 
 S = "${WORKDIR}/git"
-# v2020.12.18
-SRCREV = "c57ba81c460ee97b6b9d0b8d18faf5ba6883114b"
-SRC_URI = "git://github.com/KhronosGroup/OpenCL-Headers.git;branch=master;protocol=https"
+PV = "v2022.01.04+git${SRCPV}"
+SRCREV = "59ac4dc2f282286d8db83143686cfe37ec658b84"
+SRC_URI = "git://github.com/KhronosGroup/OpenCL-Headers.git;branch=main;protocol=https"
 
 do_configure[noexec] = "1"
 do_compile[noexec] = "1"
+ALLOW_EMPTY:${PN} = "1"
 
 do_install () {
 	install -d ${D}${includedir}/CL/
diff --git a/meta-openembedded/meta-oe/recipes-core/opencl/opencl-icd-loader_git.bb b/meta-openembedded/meta-oe/recipes-core/opencl/opencl-icd-loader_git.bb
index 45b1ad5..6743773 100644
--- a/meta-openembedded/meta-oe/recipes-core/opencl/opencl-icd-loader_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/opencl/opencl-icd-loader_git.bb
@@ -1,30 +1,36 @@
-SUMMARY  = "OpenCL ICD Loader"
+SUMMARY = "OpenCL ICD Loader"
 DESCRIPTION = "OpenCL compute ICD Loader from Khronos Group"
-LICENSE  = "Apache-2.0"
+LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
 SECTION = "base"
 
-DEPENDS += "opencl-headers"
-
 inherit pkgconfig cmake
 
-S = "${WORKDIR}/git"
-PV = "2020.12.18+git${SRCPV}"
-SRCREV = "1d5315c3ed30d026acb79a1aa53a276fc833ffa7"
-SRC_URI = "git://github.com/KhronosGroup/OpenCL-ICD-Loader.git;branch=master;protocol=https"
+DEPENDS += "opencl-headers"
 
-do_install () {
-	install -d ${D}${bindir}
-	install -m 0755 ${B}/test/loader_test/icd_loader_test ${D}${bindir}/
-	chrpath -d ${D}${bindir}/icd_loader_test
-	install -d ${D}${libdir}
-	install -m 0644 ${B}/test/log/libIcdLog.so ${D}${libdir}/
-	install -m 0644 ${B}/test/driver_stub/libOpenCLDriverStub.so ${D}${libdir}/
-	chrpath -d ${D}${libdir}/libOpenCLDriverStub.so
-	install -m 0644 ${B}/libOpenCL.so.1.2 ${D}${libdir}/
-	cd ${D}${libdir}
-	ln -s libOpenCL.so.1.2 libOpenCL.so.1
-	ln -s libOpenCL.so.1 libOpenCL.so
+PROVIDES = "virtual/opencl-icd"
+
+S = "${WORKDIR}/git"
+PV = "v2022.01.04+git${SRCPV}"
+SRCREV = "169f05d026e65948b30cfe2200595fda92198cf7"
+SRC_URI = "git://github.com/KhronosGroup/OpenCL-ICD-Loader.git;branch=main;protocol=https"
+
+EXTRA_OECMAKE:append = " \
+    -DOPENCL_ICD_LOADER_HEADERS_DIR=${STAGING_INCDIR} \
+"
+
+do_install() {
+    install -d ${D}${bindir}
+    install -m 0755 ${B}/test/loader_test/icd_loader_test ${D}${bindir}/
+    chrpath -d ${D}${bindir}/icd_loader_test
+    install -d ${D}${libdir}
+    install -m 0644 ${B}/test/log/libIcdLog.so ${D}${libdir}/
+    install -m 0644 ${B}/test/driver_stub/libOpenCLDriverStub.so ${D}${libdir}/
+    chrpath -d ${D}${libdir}/libOpenCLDriverStub.so
+    install -m 0644 ${B}/libOpenCL.so.1.2 ${D}${libdir}/
+    cd ${D}${libdir}
+    ln -s libOpenCL.so.1.2 libOpenCL.so.1
+    ln -s libOpenCL.so.1 libOpenCL.so
 }
 
 PACKAGES = "opencl-icd-loader opencl-icd-loader-dev"
@@ -32,13 +38,13 @@
 PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
 
 FILES:${PN} = " \
-	${bindir}/icd_loader_test \
-	${libdir}/libOpenCLDriverStub.so \
-	${libdir}/libOpenCL.so.1.2 \
+    ${bindir}/icd_loader_test \
+    ${libdir}/libOpenCLDriverStub.so \
+    ${libdir}/libOpenCL.so.1.2 \
+    ${libdir}/libOpenCL.so.1 \
 "
 FILES:${PN}-dev = " \
-	${libdir}/libOpenCL.so \
-	${libdir}/libOpenCL.so.1 \
+    ${libdir}/libOpenCL.so \
 "
 
 FILES:libicdlog = "${libdir}/libIcdLog.so"
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 d7076c2..08d9e91 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
@@ -223,6 +223,7 @@
     soci \
     sqlite \
 "
+RDEPENDS:packagegroup-meta-oe-dbs:remove:libc-musl:powerpc = "rocksdb"
 
 RDEPENDS:packagegroup-meta-oe-dbs-python2 ="\
     ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", bb.utils.contains('I_SWEAR_TO_MIGRATE_TO_PYTHON3', 'yes', 'mysql-python', '', d), "", d)} \
@@ -303,6 +304,7 @@
     squashfs-tools-ng \
     uftrace \
     unifex \
+    valijson \
     libxerces-c \
     xerces-c-samples \
     xmlrpc-c \
@@ -446,7 +448,7 @@
 RDEPENDS:packagegroup-meta-oe-extended:remove:mips = "sysdig"
 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:powerpc64le = "upm mraa sysdig"
 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"
 
@@ -759,6 +761,7 @@
     gpm \
     gsoap \
     hdf5 \
+    hstr \
     htop \
     hunspell-dictionaries \
     hunspell \
@@ -948,6 +951,7 @@
 RDEPENDS:packagegroup-meta-oe-support:remove:powerpc = "ssiapi tbb"
 RDEPENDS:packagegroup-meta-oe-support:remove:powerpc64le = "ssiapi"
 RDEPENDS:packagegroup-meta-oe-support:remove:libc-musl = "pcp"
+RDEPENDS:packagegroup-meta-oe-support:remove:libc-musl:powerpc = "gsl"
 
 RDEPENDS:packagegroup-meta-oe-test ="\
     bats \
diff --git a/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.5.bb b/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.5.bb
index 7d76ab7..143ffa1 100644
--- a/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.5.bb
+++ b/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.5.bb
@@ -8,7 +8,7 @@
 HOMEPAGE = "http://www.freedesktop.org/wiki/Software/Plymouth"
 SECTION = "base"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb b/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
index c230a25..00b87bb 100644
--- a/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
+++ b/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Proxy libintl"
 HOMEPAGE = "http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/"
 SECTION = "libs"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://src/proxy-libintl/COPYING.LIB.txt;md5=bc400bc21422f9a92e76ec2c5167ca2e"
 
 PR = "r1"
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_250.3.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_250.3.bb
index 8b89a98..6d72eb6 100644
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_250.3.bb
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_250.3.bb
@@ -3,7 +3,7 @@
 
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
 
 inherit meson pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_1.1.0.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_1.1.0.bb
index 1064b85..01f66c3 100644
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_1.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_1.1.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "sdbus-c++ native tools"
 DESCRIPTION = "Native interface code generator for development with sdbus-c++"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=1803fa9c2c3ce8cb06b4861d75310742"
 
 inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_1.0.0.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_1.0.0.bb
index 79373f8..39f0b4c 100644
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_1.0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_1.0.0.bb
@@ -3,7 +3,7 @@
 
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1803fa9c2c3ce8cb06b4861d75310742"
 
 inherit cmake pkgconfig systemd ptest
@@ -21,7 +21,7 @@
 SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master"
 SRC_URI += "file://run-ptest"
 
-EXTRA_OECMAKE = "-DBUILD_CODE_GEN=ON \
+EXTRA_OECMAKE = "-DBUILD_CODE_GEN=OFF \
                  -DBUILD_DOC=ON \
                  -DBUILD_DOXYGEN_DOC=OFF"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.5.bb b/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.5.bb
index 69ac8b5..705f531 100644
--- a/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.5.bb
+++ b/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.8.5.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.landley.net/toybox/"
 DEPENDS = "attr virtual/crypt"
 
-LICENSE = "BSD-0-Clause"
+LICENSE = "0BSD"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=78659a599b9325da368f2f1eb88f19c7"
 
 inherit cml1 update-alternatives
diff --git a/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb b/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb
index 249a6ef..a529032 100644
--- a/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A user tool to support sleeping some number of microseconds"
 SECTION = "base"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 S = "${WORKDIR}"
diff --git a/meta-openembedded/meta-oe/recipes-crypto/fsverity-utils/fsverity-utils_1.5.bb b/meta-openembedded/meta-oe/recipes-crypto/fsverity-utils/fsverity-utils_1.5.bb
index 89e92d6..c95a5b2 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/fsverity-utils/fsverity-utils_1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/fsverity-utils/fsverity-utils_1.5.bb
@@ -16,7 +16,7 @@
 
 DEPENDS = "openssl"
 
-EXTRA_OEMAKE:append = "PREFIX=${prefix} USE_SHARED_LIB=1"
+EXTRA_OEMAKE:append = "PREFIX=${prefix} LIBDIR=${libdir} USE_SHARED_LIB=1"
 # We want to statically link the binary to libfsverity on native Windows
 EXTRA_OEMAKE:remove:mingw32:class-nativesdk = "USE_SHARED_LIB=1"
 EXTRA_OEMAKE:remove:mingw32:class-native = "USE_SHARED_LIB=1"
diff --git a/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_1.3.1.bb b/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_1.3.1.bb
index 1bd587f..8ff5ddd 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_1.3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_1.3.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Linux Kernel Crypto API User Space Interface Library"
 HOMEPAGE = "http://www.chronox.de/libkcapi.html"
-LICENSE = "BSD-3-Clause | GPL-2.0"
+LICENSE = "BSD-3-Clause | GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=80c467906eb826339c7f09e61808ed23"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-crypto/libmcrypt/libmcrypt_2.5.8.bb b/meta-openembedded/meta-oe/recipes-crypto/libmcrypt/libmcrypt_2.5.8.bb
index 0c5fc93..50cdf22 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/libmcrypt/libmcrypt_2.5.8.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/libmcrypt/libmcrypt_2.5.8.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Replacement for the old crypt() package and crypt(1) command, with extensions"
 HOMEPAGE = "http://mcrypt.sourceforge.net/"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff"
 DEPENDS = "libtool"
 
diff --git a/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.28.bb b/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.28.bb
index ca78e5e..68ae94b 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.28.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.28.bb
@@ -9,7 +9,7 @@
 HOMEPAGE = "https://github.com/OpenSC/pkcs11-helper"
 SECTION = "Development/Libraries"
 
-LICENSE = "GPLv2 & BSD-3-Clause"
+LICENSE = "GPL-2.0-only & BSD-3-Clause"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=30f10d22cfb1ba98ccd714a41ad3311a \
     file://COPYING.GPL;md5=8a71d0475d08eee76d8b6d0c6dbec543 \
diff --git a/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi.inc b/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi.inc
index cea2838..0aba91b 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi.inc
+++ b/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi.inc
@@ -4,7 +4,7 @@
 
 DESCRIPTION = "Database Independent Abstraction Layer for C"
 HOMEPAGE = "http://libdbi.sourceforge.net/"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
 SECTION = "libs"
 
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.6.4.bb b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.3.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.6.4.bb
rename to meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.7.3.bb
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
index 51e6ddb..855f124 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
@@ -1,7 +1,7 @@
 SUMMARY = "A robust, scalable, and reliable SQL server"
 HOMEPAGE = "http://mariadb.org"
 SECTION = "libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b1becf0cfa3366e0f4d854d1d264f311"
 
 SRC_URI = "https://archive.mariadb.org/${BP}/source/${BP}.tar.gz \
@@ -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://c11_atomics.patch \
            file://fix-arm-atomic.patch \
            file://0001-Fix-library-LZ4-lookup.patch \
            file://0001-innobase-Define-__NR_futex-if-it-does-not-exist.patch \
@@ -20,11 +19,12 @@
            file://ssize_t.patch \
            file://mm_malloc.patch \
            file://sys_futex.patch \
-           file://0001-MDEV-25785-Add-support-for-OpenSSL-3.0.patch \
+           file://mariadb-openssl3.patch \
+           file://clang-64bit-atomics.patch \
           "
 SRC_URI:append:libc-musl = " file://ppc-remove-glibc-dep.patch"
 
-SRC_URI[sha256sum] = "75bf9b147a95d38160d01a73b098d50a1960563b46d16a235971fff64d99643c"
+SRC_URI[sha256sum] = "da286919ffc9c913282202349709b6ba4ebcd342815e8dae0aa6b6bd8f515cd4"
 
 UPSTREAM_CHECK_URI = "https://github.com/MariaDB/server/releases"
 
@@ -62,17 +62,19 @@
                        ${bindir}/mysql-systemd-start \
                        "
 
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} openssl"
 PACKAGECONFIG:class-native = ""
 PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
 PACKAGECONFIG[valgrind] = "-DWITH_VALGRIND=TRUE,-DWITH_VALGRIND=FALSE,valgrind"
 PACKAGECONFIG[krb5] = ", ,krb5"
 PACKAGECONFIG[zstd] = "-DWITH_ROCKSDB_ZSTD=ON,-DWITH_ROCKSDB_ZSTD=OFF,zstd"
+PACKAGECONFIG[openssl] = "-DWITH_SSL='system',-DWITH_SSL='bundled',openssl"
 
 # MariaDB doesn't link properly with gold
 # https://mariadb.atlassian.net/browse/MDEV-5982
 TARGET_CFLAGS += "-fuse-ld=bfd"
 LDFLAGS += " -pthread"
+
 BUILD_CFLAGS += "-fuse-ld=bfd"
 BUILD_CXXFLAGS += "-fuse-ld=bfd"
 
@@ -203,7 +205,7 @@
 RDEPENDS:${PN}-server = "perl perl-module-getopt-long perl-module-data-dumper \
     perl-module-file-basename perl-module-file-path perl-module-sys-hostname \
     perl-module-file-copy perl-module-file-temp perl-module-posix \
-    ${PN}-client ${PN}-setupdb libdbi-perl libdbd-mysql-perl"
+    ${PN}-client ${PN}-setupdb libdbi-perl libdbd-mysql-perl lzo"
 RDEPENDS:${PN}-leftovers = "perl perl-module-cwd perl-module-benchmark perl-module-getopt-long \
     perl-module-posix perl-module-data-dumper perl-module-sigtrap perl-module-threads \
     perl-module-threads-shared perl-module-io-socket perl-module-sys-hostname perl-module-file-copy \
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch
index 0cf0560..6d9352f 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch
@@ -1,30 +1,31 @@
-From 1d7612b063eb1fc7bf97bc27b13e1de596748aa1 Mon Sep 17 00:00:00 2001
+From f15fbdf1244ca9ce01c5507660a86d685ed88bcf Mon Sep 17 00:00:00 2001
 From: Sumit Garg <sumit.garg@linaro.org>
-Date: Wed, 8 Jan 2020 04:58:30 +0000
+Date: Mon, 21 Mar 2022 15:08:40 +0800
 Subject: [PATCH] Fix library LZ4 lookup.
 
 Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
 ---
  cmake/FindLZ4.cmake | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 diff --git a/cmake/FindLZ4.cmake b/cmake/FindLZ4.cmake
-index e97dd63e2b0..2f4694e727c 100644
+index eebd859..094241c 100644
 --- a/cmake/FindLZ4.cmake
 +++ b/cmake/FindLZ4.cmake
 @@ -1,5 +1,10 @@
--find_path(LZ4_INCLUDE_DIR NAMES lz4.h)
+-find_path(LZ4_INCLUDE_DIRS NAMES lz4.h)
 -find_library(LZ4_LIBRARIES NAMES lz4)
 +find_path(LZ4_INCLUDE_DIR
-+  NAMES	lz4.h
++  NAMES    lz4.h
 +  NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
 +
 +find_library(LZ4_LIBRARIES
 +  NAMES lz4
 +  NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
  
- include(FindPackageHandleStandardArgs)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+ if(LZ4_INCLUDE_DIRS AND EXISTS "${LZ4_INCLUDE_DIRS}/lz4.h")
+   file(STRINGS "${LZ4_INCLUDE_DIRS}/lz4.h" LZ4_H REGEX "^#define LZ4_VERSION_[MR]")
 -- 
-2.17.1
+2.25.1
 
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/c11_atomics.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/c11_atomics.patch
deleted file mode 100644
index 1c76ab3..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/c11_atomics.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 976468458d53d8bb71acf48ddfc852a60557acb9 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= <vicentiu@mariadb.org>
-Date: Thu, 23 Jul 2020 00:02:21 -0700
-Subject: [PATCH] Link with libatomic to enable C11 atomics support
-
-   Some architectures (mips) require libatomic to support proper
-   atomic operations. Check first if support is available without
-   linking, otherwise use the library.
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- configure.cmake      | 20 +++++++++++++++++++-
- mysys/CMakeLists.txt |  4 ++++
- sql/CMakeLists.txt   |  4 ++++
- 3 files changed, 27 insertions(+), 1 deletion(-)
-
-diff --git a/configure.cmake b/configure.cmake
-index 4fc324a9..23a2ea91 100644
---- a/configure.cmake
-+++ b/configure.cmake
-@@ -862,7 +862,25 @@ int main()
-   long long int *ptr= &var;
-   return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
- }"
--HAVE_GCC_C11_ATOMICS)
-+HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+  SET(HAVE_GCC_C11_ATOMICS True)
-+ELSE()
-+  SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-+  LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
-+  CHECK_CXX_SOURCE_COMPILES("
-+  int main()
-+  {
-+    long long int var= 1;
-+    long long int *ptr= &var;
-+    return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-+  }"
-+  HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+    SET(HAVE_GCC_C11_ATOMICS True)
-+  ENDIF()
-+  SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
-+ENDIF()
- 
- IF(WITH_VALGRIND)
-   SET(HAVE_valgrind 1)
-diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt
-index 6aab788f..91b9c393 100644
---- a/mysys/CMakeLists.txt
-+++ b/mysys/CMakeLists.txt
-@@ -154,6 +154,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings ${ZLIB_LIBRARY}
-  ${LIBNSL} ${LIBM} ${LIBRT} ${CMAKE_DL_LIBS} ${LIBSOCKET} ${LIBEXECINFO})
- DTRACE_INSTRUMENT(mysys)
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(mysys atomic)
-+ENDIF()
-+
- IF(HAVE_BFD_H)
-   TARGET_LINK_LIBRARIES(mysys bfd)  
- ENDIF(HAVE_BFD_H)
-diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
-index b9cd418f..d42e5017 100644
---- a/sql/CMakeLists.txt
-+++ b/sql/CMakeLists.txt
-@@ -222,6 +222,10 @@ ELSE()
-   SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL})
- ENDIF()
- 
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(sql atomic)
-+ENDIF()
-+
- IF(MSVC OR CMAKE_SYSTEM_NAME MATCHES AIX)
-   SET(libs_to_export_symbols sql mysys dbug strings)
-   # Create shared library of already compiled object
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/clang-64bit-atomics.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/clang-64bit-atomics.patch
new file mode 100644
index 0000000..cdc2947
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/clang-64bit-atomics.patch
@@ -0,0 +1,178 @@
+Prevent Clang from emitting atomic libcalls
+
+Clang expects 8-byte alignment for some 64-bit atomic operations
+in some 32-bit targets. Native instruction lock cmpxchg8b (for x86)
+should only require 4-byte alignment.
+
+This patch tries to add 8-byte alignents to data needing atomic ops
+which helps clang to not generate the libatomic calls but emit
+builtins directly.
+
+Upstream-Status: Submitted[https://jira.mariadb.org/browse/MDEV-28162]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/include/my_atomic.h
++++ b/include/my_atomic.h
+@@ -115,6 +115,16 @@
+ #include "atomic/gcc_builtins.h"
+ #endif
+ 
++#include <stdint.h>
++
++# ifdef __GNUC__
++typedef __attribute__((__aligned__(8))) int64 ATOMIC_I64;
++typedef __attribute__((__aligned__(8))) uint64 ATOMIC_U64;
++# else
++typedef int64 ATOMIC_I64;
++typedef uint64 ATOMIC_U64;
++# endif
++
+ #if SIZEOF_LONG == 4
+ #define my_atomic_addlong(A,B) my_atomic_add32((int32*) (A), (B))
+ #define my_atomic_loadlong(A) my_atomic_load32((int32*) (A))
+@@ -123,12 +133,12 @@
+ #define my_atomic_faslong(A,B) my_atomic_fas32((int32*) (A), (B))
+ #define my_atomic_caslong(A,B,C) my_atomic_cas32((int32*) (A), (int32*) (B), (C))
+ #else
+-#define my_atomic_addlong(A,B) my_atomic_add64((int64*) (A), (B))
+-#define my_atomic_loadlong(A) my_atomic_load64((int64*) (A))
+-#define my_atomic_loadlong_explicit(A,O) my_atomic_load64_explicit((int64*) (A), (O))
+-#define my_atomic_storelong(A,B) my_atomic_store64((int64*) (A), (B))
+-#define my_atomic_faslong(A,B) my_atomic_fas64((int64*) (A), (B))
+-#define my_atomic_caslong(A,B,C) my_atomic_cas64((int64*) (A), (int64*) (B), (C))
++#define my_atomic_addlong(A,B) my_atomic_add64((ATOMIC_I64*) (A), (B))
++#define my_atomic_loadlong(A) my_atomic_load64((ATOMIC_I64*) (A))
++#define my_atomic_loadlong_explicit(A,O) my_atomic_load64_explicit((ATOMIC_I64*) (A), (O))
++#define my_atomic_storelong(A,B) my_atomic_store64((ATOMIC_I64*) (A), (B))
++#define my_atomic_faslong(A,B) my_atomic_fas64((ATOMIC_I64*) (A), (B))
++#define my_atomic_caslong(A,B,C) my_atomic_cas64((ATOMIC_I64*) (A), (ATOMIC_I64*) (B), (C))
+ #endif
+ 
+ #ifndef MY_MEMORY_ORDER_SEQ_CST
+--- a/storage/perfschema/pfs_atomic.h
++++ b/storage/perfschema/pfs_atomic.h
+@@ -41,7 +41,7 @@ public:
+   }
+ 
+   /** Atomic load. */
+-  static inline int64 load_64(int64 *ptr)
++  static inline int64 load_64(ATOMIC_I64 *ptr)
+   {
+     return my_atomic_load64(ptr);
+   }
+@@ -53,9 +53,9 @@ public:
+   }
+ 
+   /** Atomic load. */
+-  static inline uint64 load_u64(uint64 *ptr)
++  static inline uint64 load_u64(ATOMIC_U64 *ptr)
+   {
+-    return (uint64) my_atomic_load64((int64*) ptr);
++    return (uint64) my_atomic_load64((ATOMIC_I64*) ptr);
+   }
+ 
+   /** Atomic store. */
+@@ -65,7 +65,7 @@ public:
+   }
+ 
+   /** Atomic store. */
+-  static inline void store_64(int64 *ptr, int64 value)
++  static inline void store_64(ATOMIC_I64 *ptr, int64 value)
+   {
+     my_atomic_store64(ptr, value);
+   }
+@@ -77,9 +77,9 @@ public:
+   }
+ 
+   /** Atomic store. */
+-  static inline void store_u64(uint64 *ptr, uint64 value)
++  static inline void store_u64(ATOMIC_U64 *ptr, uint64 value)
+   {
+-    my_atomic_store64((int64*) ptr, (int64) value);
++    my_atomic_store64((ATOMIC_I64*) ptr, (int64) value);
+   }
+ 
+   /** Atomic add. */
+@@ -89,7 +89,7 @@ public:
+   }
+ 
+   /** Atomic add. */
+-  static inline int64 add_64(int64 *ptr, int64 value)
++  static inline int64 add_64(ATOMIC_I64 *ptr, int64 value)
+   {
+     return my_atomic_add64(ptr, value);
+   }
+@@ -101,9 +101,9 @@ public:
+   }
+ 
+   /** Atomic add. */
+-  static inline uint64 add_u64(uint64 *ptr, uint64 value)
++  static inline uint64 add_u64(ATOMIC_U64 *ptr, uint64 value)
+   {
+-    return (uint64) my_atomic_add64((int64*) ptr, (int64) value);
++    return (uint64) my_atomic_add64((ATOMIC_I64*) ptr, (int64) value);
+   }
+ 
+   /** Atomic compare and swap. */
+@@ -114,7 +114,7 @@ public:
+   }
+ 
+   /** Atomic compare and swap. */
+-  static inline bool cas_64(int64 *ptr, int64 *old_value,
++  static inline bool cas_64(ATOMIC_I64 *ptr, ATOMIC_I64 *old_value,
+                             int64 new_value)
+   {
+     return my_atomic_cas64(ptr, old_value, new_value);
+@@ -129,10 +129,10 @@ public:
+   }
+ 
+   /** Atomic compare and swap. */
+-  static inline bool cas_u64(uint64 *ptr, uint64 *old_value,
++  static inline bool cas_u64(ATOMIC_U64 *ptr, ATOMIC_U64 *old_value,
+                              uint64 new_value)
+   {
+-    return my_atomic_cas64((int64*) ptr, (int64*) old_value,
++    return my_atomic_cas64((ATOMIC_I64*) ptr, (ATOMIC_I64*) old_value,
+                             (uint64) new_value);
+   }
+ };
+--- a/sql/sql_class.h
++++ b/sql/sql_class.h
+@@ -1049,7 +1049,7 @@ static inline void update_global_memory_
+                       (longlong) global_status_var.global_memory_used,
+                       size));
+   // workaround for gcc 4.2.4-1ubuntu4 -fPIE (from DEB_BUILD_HARDENING=1)
+-  int64 volatile * volatile ptr= &global_status_var.global_memory_used;
++  ATOMIC_I64 volatile * volatile ptr= &global_status_var.global_memory_used;
+   my_atomic_add64_explicit(ptr, size, MY_MEMORY_ORDER_RELAXED);
+ }
+ 
+--- a/storage/innobase/include/srv0mon.h
++++ b/storage/innobase/include/srv0mon.h
+@@ -49,7 +49,7 @@ enum monitor_running_status {
+ typedef enum monitor_running_status	monitor_running_t;
+ 
+ /** Monitor counter value type */
+-typedef	int64_t				mon_type_t;
++typedef	ATOMIC_I64			mon_type_t;
+ 
+ /** Two monitor structures are defined in this file. One is
+ "monitor_value_t" which contains dynamic counter values for each
+@@ -568,7 +568,7 @@ Use MONITOR_INC if appropriate mutex pro
+ 	if (enabled) {							\
+ 		ib_uint64_t	value;					\
+ 		value  = my_atomic_add64_explicit(			\
+-			(int64*) &MONITOR_VALUE(monitor), 1,		\
++			(ATOMIC_I64*) &MONITOR_VALUE(monitor), 1,	\
+ 			MY_MEMORY_ORDER_RELAXED) + 1;			\
+ 		/* Note: This is not 100% accurate because of the	\
+ 		inherent race, we ignore it due to performance. */	\
+@@ -585,7 +585,7 @@ Use MONITOR_DEC if appropriate mutex pro
+ 	if (enabled) {							\
+ 		ib_uint64_t	value;					\
+ 		value = my_atomic_add64_explicit(			\
+-			(int64*) &MONITOR_VALUE(monitor), -1,		\
++			(ATOMIC_I64*) &MONITOR_VALUE(monitor), -1,	\
+ 			MY_MEMORY_ORDER_RELAXED) - 1;			\
+ 		/* Note: This is not 100% accurate because of the	\
+ 		inherent race, we ignore it due to performance. */	\
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-MDEV-25785-Add-support-for-OpenSSL-3.0.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mariadb-openssl3.patch
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-MDEV-25785-Add-support-for-OpenSSL-3.0.patch
rename to meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mariadb-openssl3.patch
index ab6811c..db123e4 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-MDEV-25785-Add-support-for-OpenSSL-3.0.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/mariadb-openssl3.patch
@@ -1,4 +1,4 @@
-From 1b238e343506b43825092941d4cd294d9b866bef Mon Sep 17 00:00:00 2001
+From c80991c79f701dac42c630af4bd39593b0c7efb4 Mon Sep 17 00:00:00 2001
 From: Vladislav Vaintroub <wlad@mariadb.com>
 Date: Mon, 8 Nov 2021 18:48:19 +0100
 Subject: [PATCH] MDEV-25785 Add support for OpenSSL 3.0
@@ -15,9 +15,6 @@
 
 - SECLEVEL in CipherString in openssl.cnf
   had been downgraded to 0, from 1, to make TLSv1.0 and TLSv1.1 possible
-   (according to https://github.com/openssl/openssl/blob/openssl-3.0.0/NEWS.md
-   even though the manual for SSL_CTX_get_security_level claims that it
-   should not be necessary)
 
 - Workaround Ssl_cipher_list issue, it now returns TLSv1.3 ciphers,
   in addition to what was set in --ssl-cipher
@@ -30,27 +27,40 @@
   added test that does "nopad" encryption piece-wise, to test
   replacement of EVP_CIPHER_CTX_buf_noconst
 
-Upstream-Status: Backport [https://github.com/MariaDB/server/commit/1b238e343506b43825092941d4cd294d9b866bef]
+Patch from Fedora https://src.fedoraproject.org/rpms/mariadb/raw/rawhide/f/mariadb-openssl3.patch
 
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
- cmake/ssl.cmake                   |   8 ++
+ cmake/ssl.cmake                   |  19 ++++-
  include/ssl_compat.h              |   3 +-
  mysql-test/lib/openssl.cnf        |   2 +-
  mysql-test/main/ssl_cipher.result |   6 +-
  mysql-test/main/ssl_cipher.test   |   2 +-
  mysys_ssl/my_crypt.cc             |  46 +++++++-----
  unittest/mysys/aes-t.c            | 121 ++++++++++++++++++++++--------
- 7 files changed, 133 insertions(+), 55 deletions(-)
+ 7 files changed, 141 insertions(+), 58 deletions(-)
 
-diff --git a/cmake/ssl.cmake b/cmake/ssl.cmake
-index 7c2488be8bd..1bd46bc0f39 100644
+
 --- a/cmake/ssl.cmake
 +++ b/cmake/ssl.cmake
-@@ -139,6 +139,13 @@ MACRO (MYSQL_CHECK_SSL)
+@@ -118,7 +118,7 @@ MACRO (MYSQL_CHECK_SSL)
+     ENDIF()
+     FIND_PACKAGE(OpenSSL)
+     SET_PACKAGE_PROPERTIES(OpenSSL PROPERTIES TYPE RECOMMENDED)
+-    IF(OPENSSL_FOUND AND OPENSSL_VERSION AND OPENSSL_VERSION VERSION_LESS "3.0.0")
++    IF(OPENSSL_FOUND)
+       SET(OPENSSL_LIBRARY ${OPENSSL_SSL_LIBRARY})
+       INCLUDE(CheckSymbolExists)
+       SET(SSL_SOURCES "")
+@@ -139,9 +139,20 @@ MACRO (MYSQL_CHECK_SSL)
        SET(SSL_INTERNAL_INCLUDE_DIRS "")
        SET(SSL_DEFINES "-DHAVE_OPENSSL")
  
++      FOREACH(x INCLUDES LIBRARIES DEFINITIONS)
++        SET(SAVE_CMAKE_REQUIRED_${x} ${CMAKE_REQUIRED_${x}})
++      ENDFOREACH()
++
 +      # Silence "deprecated in OpenSSL 3.0"
 +      IF((NOT OPENSSL_VERSION) # 3.0 not determined by older cmake
 +         OR NOT(OPENSSL_VERSION VERSION_LESS "3.0.0"))
@@ -60,17 +70,24 @@
 +
        SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
        SET(CMAKE_REQUIRED_LIBRARIES ${SSL_LIBRARIES})
-       SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
-@@ -152,6 +159,7 @@ MACRO (MYSQL_CHECK_SSL)
+-      SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
++
+       CHECK_SYMBOL_EXISTS(ERR_remove_thread_state "openssl/err.h"
+                           HAVE_ERR_remove_thread_state)
+       CHECK_SYMBOL_EXISTS(EVP_aes_128_ctr "openssl/evp.h"
+@@ -150,8 +161,10 @@ MACRO (MYSQL_CHECK_SSL)
+                           HAVE_EncryptAes128Gcm)
+       CHECK_SYMBOL_EXISTS(X509_check_host "openssl/x509v3.h"
                            HAVE_X509_check_host)
-       SET(CMAKE_REQUIRED_INCLUDES)
-       SET(CMAKE_REQUIRED_LIBRARIES)
-+      SET(CMAKE_REQUIRED_DEFINITIONS)
+-      SET(CMAKE_REQUIRED_INCLUDES)
+-      SET(CMAKE_REQUIRED_LIBRARIES)
++
++      FOREACH(x INCLUDES LIBRARIES DEFINITIONS)
++        SET(CMAKE_REQUIRED_${x} ${SAVE_CMAKE_REQUIRED_${x}})
++      ENDFOREACH()
      ELSE()
        IF(WITH_SSL STREQUAL "system")
          MESSAGE(FATAL_ERROR "Cannot find appropriate system libraries for SSL. Use WITH_SSL=bundled to enable SSL support")
-diff --git a/include/ssl_compat.h b/include/ssl_compat.h
-index 9f4b6be8d95..affa9f2a448 100644
 --- a/include/ssl_compat.h
 +++ b/include/ssl_compat.h
 @@ -24,7 +24,7 @@
@@ -82,16 +99,14 @@
  #undef EVP_MD_CTX_init
  #define EVP_MD_CTX_init(X) do { memset((X), 0, EVP_MD_CTX_SIZE); EVP_MD_CTX_reset(X); } while(0)
  #undef EVP_CIPHER_CTX_init
-@@ -74,7 +74,6 @@
+@@ -77,7 +77,6 @@
+ #define DH_set0_pqg(D,P,Q,G)            ((D)->p= (P), (D)->g= (G))
  #endif
  
- #define DH_set0_pqg(D,P,Q,G)            ((D)->p= (P), (D)->g= (G))
 -#define EVP_CIPHER_CTX_buf_noconst(ctx) ((ctx)->buf)
  #define EVP_CIPHER_CTX_encrypting(ctx)  ((ctx)->encrypt)
  #define EVP_CIPHER_CTX_SIZE             sizeof(EVP_CIPHER_CTX)
  
-diff --git a/mysql-test/lib/openssl.cnf b/mysql-test/lib/openssl.cnf
-index b9ab37ac3a1..7cd6f748af2 100644
 --- a/mysql-test/lib/openssl.cnf
 +++ b/mysql-test/lib/openssl.cnf
 @@ -9,4 +9,4 @@ ssl_conf = ssl_section
@@ -100,8 +115,6 @@
  [system_default_section]
 -CipherString = ALL:@SECLEVEL=1
 +CipherString = ALL:@SECLEVEL=0
-diff --git a/mysql-test/main/ssl_cipher.result b/mysql-test/main/ssl_cipher.result
-index 930d384eda9..66d817b7b41 100644
 --- a/mysql-test/main/ssl_cipher.result
 +++ b/mysql-test/main/ssl_cipher.result
 @@ -61,8 +61,8 @@ connect  ssl_con,localhost,root,,,,,SSL;
@@ -116,11 +129,9 @@
 +1
  disconnect ssl_con;
  connection default;
-diff --git a/mysql-test/main/ssl_cipher.test b/mysql-test/main/ssl_cipher.test
-index 36549d76d02..d4cdcffb276 100644
 --- a/mysql-test/main/ssl_cipher.test
 +++ b/mysql-test/main/ssl_cipher.test
-@@ -98,6 +98,6 @@ let $restart_parameters=--ssl-cipher=AES128-SHA;
+@@ -98,6 +98,6 @@ let $restart_parameters=--ssl-cipher=AES
  source include/restart_mysqld.inc;
  connect (ssl_con,localhost,root,,,,,SSL);
  SHOW STATUS LIKE 'Ssl_cipher';
@@ -128,8 +139,6 @@
 +SELECT VARIABLE_VALUE like '%AES128-SHA%' FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher_list';
  disconnect ssl_con;
  connection default;
-diff --git a/mysys_ssl/my_crypt.cc b/mysys_ssl/my_crypt.cc
-index e512eee9066..4d7ebc7bd27 100644
 --- a/mysys_ssl/my_crypt.cc
 +++ b/mysys_ssl/my_crypt.cc
 @@ -29,11 +29,7 @@
@@ -155,7 +164,7 @@
  
    MyCTX_nopad() : MyCTX() { }
    ~MyCTX_nopad() { }
-@@ -112,7 +109,7 @@ class MyCTX_nopad : public MyCTX
+@@ -112,7 +109,7 @@ public:
      compile_time_assert(MY_AES_CTX_SIZE >= sizeof(MyCTX_nopad));
      this->key= key;
      this->klen= klen;
@@ -164,7 +173,7 @@
      if (ivlen)
        memcpy(oiv, iv, ivlen);
      DBUG_ASSERT(ivlen == 0 || ivlen == sizeof(oiv));
-@@ -123,26 +120,41 @@ class MyCTX_nopad : public MyCTX
+@@ -123,26 +120,41 @@ public:
      return res;
    }
  
@@ -214,7 +223,7 @@
        */
        uchar mask[MY_AES_BLOCK_SIZE];
        uint mlen;
-@@ -154,10 +166,10 @@ class MyCTX_nopad : public MyCTX
+@@ -154,10 +166,10 @@ public:
          return rc;
        DBUG_ASSERT(mlen == sizeof(mask));
  
@@ -228,8 +237,6 @@
      return MY_AES_OK;
    }
  };
-diff --git a/unittest/mysys/aes-t.c b/unittest/mysys/aes-t.c
-index 34704e06749..cbec2760941 100644
 --- a/unittest/mysys/aes-t.c
 +++ b/unittest/mysys/aes-t.c
 @@ -21,27 +21,96 @@
@@ -324,12 +331,12 @@
 +    /* Compare with non-bytewise encryption result*/
 +    ok(dst_len == dst_len2 && memcmp(dst, dst2, dst_len) == 0,
 +       "memcmp bytewise  %s %u", mode_str, src_len);
-+  }
+   }
 +  else
 +  {
 +    int dst_len_real= my_aes_get_size(mode, src_len);
 +    ok(dst_len_real= dst_len, "my_aes_get_size");
-   }
++  }
 +  my_md5(md5, (char *) dst, dst_len);
 +  ok(dst_len == dlen, "md5 len");
 +  ok(memcmp(md5, hash, sizeof(md5)) == 0, "md5");
@@ -376,6 +383,3 @@
    DO_TEST_P(MY_AES_ECB, 200, '.', 208, "\xd8\x73\x8e\x3a\xbc\x66\x99\x13\x7f\x90\x23\x52\xee\x97\x6f\x9a");
    DO_TEST_P(MY_AES_ECB, 128, '?', 144, "\x19\x58\x33\x85\x4c\xaa\x7f\x06\xd1\xb2\xec\xd7\xb7\x6a\xa9\x5b");
    DO_TEST_P(MY_AES_CBC, 159, '%', 160, "\x4b\x03\x18\x3d\xf1\xa7\xcd\xa1\x46\xb3\xc6\x8a\x92\xc0\x0f\xc9");
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.6.4.bb b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.7.3.bb
similarity index 83%
rename from meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.6.4.bb
rename to meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.7.3.bb
index 04dfb42..c800c4c 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.6.4.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.7.3.bb
@@ -2,7 +2,8 @@
 
 inherit qemu
 
-DEPENDS += "qemu-native bison-native boost libpcre2 curl openssl ncurses zlib libaio libedit libevent libxml2"
+DEPENDS += "qemu-native bison-native boost libpcre2 curl ncurses \
+            zlib libaio libedit libevent libxml2 gnutls fmt lzo"
 
 PROVIDES += "mysql5 libmysqlclient"
 
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb b/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb
index cd46586..15f6b6f 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Python interface to MySQL"
 HOMEPAGE = "https://github.com/farcepest/MySQLdb1"
 SECTION = "devel/python"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://GPL-2.0;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "mysql5"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
index 257d27b..00c0107 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
@@ -18,7 +18,7 @@
     this package if you're installing the postgresql-server package. \
 "
 HOMEPAGE = "http://www.postgresql.com"
-LICENSE = "BSD-0-Clause"
+LICENSE = "0BSD"
 DEPENDS = "libnsl2 readline tzcode-native"
 
 ARM_INSTRUCTION_SET = "arm"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc_09.05.0300.bb b/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc_09.05.0300.bb
index 6e1c8ab..b0fc35e 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc_09.05.0300.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/psqlodbc/psqlodbc_09.05.0300.bb
@@ -1,6 +1,6 @@
 require ${PN}.inc
 
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://license.txt;md5=6db3822fc7512e83087ba798da013692"
 
 SRC_URI = "http://ftp.postgresql.org/pub/odbc/versions/src/${BPN}-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_6.20.3.bb b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_6.20.3.bb
index a5f6d83..2ad2d38 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_6.20.3.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_6.20.3.bb
@@ -1,7 +1,7 @@
 SUMMARY = "RocksDB an embeddable, persistent key-value store"
 DESCRIPTION = "RocksDB is library that provides an embeddable, persistent key-value store for fast storage."
 HOMEPAGE = "http://rocksdb.org/"
-LICENSE = "(Apache-2.0 | GPL-2.0) & BSD-3-Clause"
+LICENSE = "(Apache-2.0 | GPL-2.0-only) & BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE.Apache;md5=3b83ef96387f14655fc854ddc3c6bd57 \
                     file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://LICENSE.leveldb;md5=fb04ff57a14f308f2eed4a9b87d45837"
@@ -22,6 +22,7 @@
 
 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:append:powerpc = " 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"
@@ -51,3 +52,7 @@
 }
 
 LDFLAGS:append:riscv64 = " -pthread"
+
+# Need toku_time_now() implemented for ppc/musl
+# see utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+COMPATIBLE_HOST:libc-musl:powerpc = "null"
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
deleted file mode 100644
index 126b792..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Export-of-internal-Abseil-changes.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-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
-
---
-cf88f9cf40eab54c06bca7f20795352ec23bb583 by Derek Mauro <dmauro@google.com>:
-
-Fixes build with latest glibc
-Fixes #952
-
-PiperOrigin-RevId: 371693908
-
---
-99bcd0f4a747ce7a401e23c745adf34d0ec5131b by Samuel Benzaquen <sbenza@google.com>:
-
-Add support for std::string_view in StrFormat even when
-absl::string_view != std::string_view.
-
-PiperOrigin-RevId: 371693633
-
---
-e35463572149a6c2d4a0d439b9300ce03fd6b96d by Abseil Team <absl-team@google.com>:
-
-Cmake builds should only install pkg-config when explicitly requested.
-
-PiperOrigin-RevId: 371403419
-GitOrigin-RevId: cf88f9cf40eab54c06bca7f20795352ec23bb583
-Change-Id: I4360a18c638a4d901ff44ab1e0a9d8f321c302ea
-
-Signed-off-by: Zang Ruochen <zangrc.fnst@fujitsu.com>
----
- CMake/AbseilHelpers.cmake                        | 3 ++-
- absl/strings/internal/str_format/arg.h           | 8 ++++++++
- absl/strings/internal/str_format/convert_test.cc | 3 +++
- 3 files changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
-index 54fb8df3..a32b94d5 100644
---- a/CMake/AbseilHelpers.cmake
-+++ b/CMake/AbseilHelpers.cmake
-@@ -141,7 +141,8 @@ function(absl_cc_library)
-   endif()
- 
-   # Generate a pkg-config file for every library:
--  if(_build_type STREQUAL "static" OR _build_type STREQUAL "shared")
-+  if((_build_type STREQUAL "static" OR _build_type STREQUAL "shared")
-+     AND ABSL_ENABLE_INSTALL)
-     if(NOT ABSL_CC_LIB_TESTONLY)
-       if(absl_VERSION)
-         set(PC_VERSION "${absl_VERSION}")
-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
-+++ b/absl/strings/internal/str_format/arg.h
-@@ -122,6 +122,14 @@ StringConvertResult FormatConvertImpl(const std::string& v,
- StringConvertResult FormatConvertImpl(string_view v,
-                                       FormatConversionSpecImpl conv,
-                                       FormatSinkImpl* sink);
-+#if defined(ABSL_HAVE_STD_STRING_VIEW) && !defined(ABSL_USES_STD_STRING_VIEW)
-+inline StringConvertResult FormatConvertImpl(std::string_view v,
-+                                             FormatConversionSpecImpl conv,
-+                                             FormatSinkImpl* sink) {
-+  return FormatConvertImpl(absl::string_view(v.data(), v.size()), conv, sink);
-+}
-+#endif  // ABSL_HAVE_STD_STRING_VIEW && !ABSL_USES_STD_STRING_VIEW
-+
- ArgConvertResult<FormatConversionCharSetUnion(
-     FormatConversionCharSetInternal::s, FormatConversionCharSetInternal::p)>
- FormatConvertImpl(const char* v, const FormatConversionSpecImpl conv,
-diff --git a/absl/strings/internal/str_format/convert_test.cc b/absl/strings/internal/str_format/convert_test.cc
-index 926283cf..91e03609 100644
---- a/absl/strings/internal/str_format/convert_test.cc
-+++ b/absl/strings/internal/str_format/convert_test.cc
-@@ -229,6 +229,9 @@ TEST_F(FormatConvertTest, BasicString) {
-   TestStringConvert(static_cast<const char*>("hello"));
-   TestStringConvert(std::string("hello"));
-   TestStringConvert(string_view("hello"));
-+#if defined(ABSL_HAVE_STD_STRING_VIEW)
-+  TestStringConvert(std::string_view("hello"));
-+#endif  // ABSL_HAVE_STD_STRING_VIEW
- }
- 
- TEST_F(FormatConvertTest, NullString) {
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/abseil-ppc-fixes.patch b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/abseil-ppc-fixes.patch
index a4937e1..9521056 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/abseil-ppc-fixes.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/abseil-ppc-fixes.patch
@@ -31,13 +31,14 @@
  #ifdef __GLIBC__
 --- a/absl/base/internal/unscaledcycleclock.h
 +++ b/absl/base/internal/unscaledcycleclock.h
-@@ -46,7 +46,7 @@
+@@ -46,7 +46,8 @@
  
  // The following platforms have an implementation of a hardware counter.
  #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
--  defined(__powerpc__) || defined(__ppc__) || \
-+  ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
-   defined(_M_IX86) || defined(_M_X64)
+-    defined(__powerpc__) || defined(__ppc__) || defined(__riscv) ||     \
++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
++    defined(__riscv) ||     \
+     defined(_M_IX86) || defined(_M_X64)
  #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
  #else
 --- a/absl/debugging/internal/examine_stack.cc
@@ -61,13 +62,13 @@
 +#elif defined(__powerpc__) && defined(__GLIBC__)
      return reinterpret_cast<void*>(context->uc_mcontext.uc_regs->gregs[32]);
 +#elif defined(__powerpc__)
-+    return reinterpret_cast<void*>(((struct pt_regs *)context->uc_regs)->gregs[32]);
++    return reinterpret_cast<void*>((context->uc_regs)->gregs[32]);
  #elif defined(__riscv)
      return reinterpret_cast<void*>(context->uc_mcontext.__gregs[REG_PC]);
  #elif defined(__s390__) && !defined(__s390x__)
 --- a/absl/debugging/internal/stacktrace_config.h
 +++ b/absl/debugging/internal/stacktrace_config.h
-@@ -55,7 +55,7 @@
+@@ -59,7 +59,7 @@
  #elif defined(__i386__) || defined(__x86_64__)
  #define ABSL_STACKTRACE_INL_HEADER \
    "absl/debugging/internal/stacktrace_x86-inl.inc"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
index 37d5d81..82124c1 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,14 +7,13 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
 
-PV = "20210324.2+git${SRCPV}"
-SRCREV = "278e0a071885a22dcd2fd1b5576cc44757299343"
-BRANCH = "lts_2021_03_24"
+PV = "20211102.0+git${SRCPV}"
+SRCREV = "215105818dfde3174fe799600bb0f3cae233d0bf"
+BRANCH = "lts_2021_11_02"
 SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH};protocol=https \
            file://0001-absl-always-use-asm-sgidefs.h.patch             \
            file://0002-Remove-maes-option-from-cross-compilation.patch \
            file://abseil-ppc-fixes.patch \
-           file://0001-Export-of-internal-Abseil-changes.patch \
           "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0014-add-u3-ss-descriptor-support-for-adb.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0014-add-u3-ss-descriptor-support-for-adb.patch
new file mode 100644
index 0000000..05973aa
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0014-add-u3-ss-descriptor-support-for-adb.patch
@@ -0,0 +1,342 @@
+From dae9a11f3a158357966399aef97c48b5f16934d9 Mon Sep 17 00:00:00 2001
+From: Jiacheng Liu <jiacheng.liu@mediatek.com>
+Date: Sat, 24 Jul 2021 11:01:18 +0800
+Subject: [PATCH] android-tools: adb: add u3 ss descriptor support
+
+Porting u3 Superspeed descriptor support to open-embedded android-tools package.
+This patch origins from the the patch in android project [1], but has been
+modified for backporting to android-tools_5.1.1.r37.
+
+[1] https://android.googlesource.com/platform/system/core/+/d6ee9f26a5163af4121f4380264fcbd4e6851a17%5E%21
+
+Signed-off-by: Macpaul Lin <macpaul.lin@mediatek.com>
+Signed-off-by: Jiacheng Liu <jiacheng.liu@mediatek.com>
+---
+ adb/usb_linux_client.c | 275 +++++++++++++++++++++++++++++++----------
+ 1 file changed, 207 insertions(+), 68 deletions(-)
+
+diff --git a/adb/usb_linux_client.c b/adb/usb_linux_client.c
+index 6e8b5bb..884e85e 100644
+--- a/adb/usb_linux_client.c
++++ b/adb/usb_linux_client.c
+@@ -31,8 +31,10 @@
+ #define   TRACE_TAG  TRACE_USB
+ #include "adb.h"
+ 
++#define USB_EXT_PROP_UNICODE    1
+ #define MAX_PACKET_SIZE_FS	64
+ #define MAX_PACKET_SIZE_HS	512
++#define MAX_PACKET_SIZE_SS	1024
+ 
+ #if __BYTE_ORDER == __LITTLE_ENDIAN
+ # define cpu_to_le16(x) (x)
+@@ -62,74 +64,185 @@ struct usb_handle
+     int bulk_in;  /* "in" from the host's perspective => sink for adbd */
+ };
+ 
+-static const struct {
+-    struct usb_functionfs_descs_head header;
+-    struct {
+-        struct usb_interface_descriptor intf;
+-        struct usb_endpoint_descriptor_no_audio source;
+-        struct usb_endpoint_descriptor_no_audio sink;
+-    } __attribute__((packed)) fs_descs, hs_descs;
+-} __attribute__((packed)) descriptors = {
+-    .header = {
+-        .magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC),
+-        .length = cpu_to_le32(sizeof(descriptors)),
+-        .fs_count = 3,
+-        .hs_count = 3,
++struct func_desc {
++    struct usb_interface_descriptor intf;
++    struct usb_endpoint_descriptor_no_audio source;
++    struct usb_endpoint_descriptor_no_audio sink;
++} __attribute__((packed));
++
++struct ss_func_desc {
++    struct usb_interface_descriptor intf;
++    struct usb_endpoint_descriptor_no_audio source;
++    struct usb_ss_ep_comp_descriptor source_comp;
++    struct usb_endpoint_descriptor_no_audio sink;
++    struct usb_ss_ep_comp_descriptor sink_comp;
++} __attribute__((packed));
++
++struct desc_v1 {
++    struct usb_functionfs_descs_head_v1 {
++        __le32 magic;
++        __le32 length;
++        __le32 fs_count;
++        __le32 hs_count;
++    } __attribute__((packed)) header;
++    struct func_desc fs_descs, hs_descs;
++} __attribute__((packed));
++
++struct usb_os_desc_ext_prop {
++    uint32_t dwSize;
++    uint32_t dwPropertyDataType;
++
++    // Property name and value are transmitted as UTF-16, but the kernel only
++    // accepts ASCII values and performs the conversion for us.
++    uint16_t wPropertyNameLength;
++    char bPropertyName[20];
++
++    uint32_t dwPropertyDataLength;
++    char bProperty[39];
++} __attribute__((packed)) os_desc_guid = {
++    .dwSize = sizeof(struct usb_os_desc_ext_prop),
++    .dwPropertyDataType = cpu_to_le32(USB_EXT_PROP_UNICODE),
++    .wPropertyNameLength = cpu_to_le16(20),
++    .bPropertyName = "DeviceInterfaceGUID",
++    .dwPropertyDataLength = cpu_to_le32(39),
++    .bProperty = "{F72FE0D4-CBCB-407D-8814-9ED673D0DD6B}",
++};
++
++struct usb_ext_prop_values {
++    struct usb_os_desc_ext_prop guid;
++} __attribute__((packed));
++
++struct desc_v2 {
++    struct usb_functionfs_descs_head_v2 header;
++    // The rest of the structure depends on the flags in the header.
++    __le32 fs_count;
++    __le32 hs_count;
++    __le32 ss_count;
++    __le32 os_count;
++    struct func_desc fs_descs, hs_descs;
++    struct ss_func_desc ss_descs;
++    struct usb_os_desc_header os_header;
++    struct usb_ext_compat_desc os_desc;
++    struct usb_os_desc_header os_prop_header;
++    struct usb_ext_prop_values os_prop_values;
++} __attribute__((packed));
++
++static struct func_desc fs_descriptors = {
++    .intf = {
++        .bLength = sizeof(fs_descriptors.intf),
++        .bDescriptorType = USB_DT_INTERFACE,
++        .bInterfaceNumber = 0,
++        .bNumEndpoints = 2,
++        .bInterfaceClass = ADB_CLASS,
++        .bInterfaceSubClass = ADB_SUBCLASS,
++        .bInterfaceProtocol = ADB_PROTOCOL,
++        .iInterface = 1, /* first string from the provided table */
++    },
++    .source = {
++        .bLength = sizeof(fs_descriptors.source),
++        .bDescriptorType = USB_DT_ENDPOINT,
++        .bEndpointAddress = 1 | USB_DIR_OUT,
++        .bmAttributes = USB_ENDPOINT_XFER_BULK,
++        .wMaxPacketSize = MAX_PACKET_SIZE_FS,
++    },
++    .sink = {
++        .bLength = sizeof(fs_descriptors.sink),
++        .bDescriptorType = USB_DT_ENDPOINT,
++        .bEndpointAddress = 2 | USB_DIR_IN,
++        .bmAttributes = USB_ENDPOINT_XFER_BULK,
++        .wMaxPacketSize = MAX_PACKET_SIZE_FS,
++    },
++};
++
++static struct func_desc hs_descriptors = {
++    .intf = {
++        .bLength = sizeof(hs_descriptors.intf),
++        .bDescriptorType = USB_DT_INTERFACE,
++        .bInterfaceNumber = 0,
++        .bNumEndpoints = 2,
++        .bInterfaceClass = ADB_CLASS,
++        .bInterfaceSubClass = ADB_SUBCLASS,
++        .bInterfaceProtocol = ADB_PROTOCOL,
++        .iInterface = 1, /* first string from the provided table */
++    },
++    .source = {
++        .bLength = sizeof(hs_descriptors.source),
++        .bDescriptorType = USB_DT_ENDPOINT,
++        .bEndpointAddress = 1 | USB_DIR_OUT,
++        .bmAttributes = USB_ENDPOINT_XFER_BULK,
++        .wMaxPacketSize = MAX_PACKET_SIZE_HS,
++    },
++    .sink = {
++        .bLength = sizeof(hs_descriptors.sink),
++        .bDescriptorType = USB_DT_ENDPOINT,
++        .bEndpointAddress = 2 | USB_DIR_IN,
++        .bmAttributes = USB_ENDPOINT_XFER_BULK,
++        .wMaxPacketSize = MAX_PACKET_SIZE_HS,
++    },
++};
++
++static struct ss_func_desc ss_descriptors = {
++    .intf = {
++        .bLength = sizeof(ss_descriptors.intf),
++        .bDescriptorType = USB_DT_INTERFACE,
++        .bInterfaceNumber = 0,
++        .bNumEndpoints = 2,
++        .bInterfaceClass = ADB_CLASS,
++        .bInterfaceSubClass = ADB_SUBCLASS,
++        .bInterfaceProtocol = ADB_PROTOCOL,
++        .iInterface = 1, /* first string from the provided table */
++    },
++    .source = {
++        .bLength = sizeof(ss_descriptors.source),
++        .bDescriptorType = USB_DT_ENDPOINT,
++        .bEndpointAddress = 1 | USB_DIR_OUT,
++        .bmAttributes = USB_ENDPOINT_XFER_BULK,
++        .wMaxPacketSize = MAX_PACKET_SIZE_SS,
++    },
++    .source_comp = {
++        .bLength = sizeof(ss_descriptors.source_comp),
++        .bDescriptorType = USB_DT_SS_ENDPOINT_COMP,
++        .bMaxBurst = 4,
+     },
+-    .fs_descs = {
+-        .intf = {
+-            .bLength = sizeof(descriptors.fs_descs.intf),
+-            .bDescriptorType = USB_DT_INTERFACE,
+-            .bInterfaceNumber = 0,
+-            .bNumEndpoints = 2,
+-            .bInterfaceClass = ADB_CLASS,
+-            .bInterfaceSubClass = ADB_SUBCLASS,
+-            .bInterfaceProtocol = ADB_PROTOCOL,
+-            .iInterface = 1, /* first string from the provided table */
+-        },
+-        .source = {
+-            .bLength = sizeof(descriptors.fs_descs.source),
+-            .bDescriptorType = USB_DT_ENDPOINT,
+-            .bEndpointAddress = 1 | USB_DIR_OUT,
+-            .bmAttributes = USB_ENDPOINT_XFER_BULK,
+-            .wMaxPacketSize = MAX_PACKET_SIZE_FS,
+-        },
+-        .sink = {
+-            .bLength = sizeof(descriptors.fs_descs.sink),
+-            .bDescriptorType = USB_DT_ENDPOINT,
+-            .bEndpointAddress = 2 | USB_DIR_IN,
+-            .bmAttributes = USB_ENDPOINT_XFER_BULK,
+-            .wMaxPacketSize = MAX_PACKET_SIZE_FS,
+-        },
++    .sink = {
++        .bLength = sizeof(ss_descriptors.sink),
++        .bDescriptorType = USB_DT_ENDPOINT,
++        .bEndpointAddress = 2 | USB_DIR_IN,
++        .bmAttributes = USB_ENDPOINT_XFER_BULK,
++        .wMaxPacketSize = MAX_PACKET_SIZE_SS,
+     },
+-    .hs_descs = {
+-        .intf = {
+-            .bLength = sizeof(descriptors.hs_descs.intf),
+-            .bDescriptorType = USB_DT_INTERFACE,
+-            .bInterfaceNumber = 0,
+-            .bNumEndpoints = 2,
+-            .bInterfaceClass = ADB_CLASS,
+-            .bInterfaceSubClass = ADB_SUBCLASS,
+-            .bInterfaceProtocol = ADB_PROTOCOL,
+-            .iInterface = 1, /* first string from the provided table */
+-        },
+-        .source = {
+-            .bLength = sizeof(descriptors.hs_descs.source),
+-            .bDescriptorType = USB_DT_ENDPOINT,
+-            .bEndpointAddress = 1 | USB_DIR_OUT,
+-            .bmAttributes = USB_ENDPOINT_XFER_BULK,
+-            .wMaxPacketSize = MAX_PACKET_SIZE_HS,
+-        },
+-        .sink = {
+-            .bLength = sizeof(descriptors.hs_descs.sink),
+-            .bDescriptorType = USB_DT_ENDPOINT,
+-            .bEndpointAddress = 2 | USB_DIR_IN,
+-            .bmAttributes = USB_ENDPOINT_XFER_BULK,
+-            .wMaxPacketSize = MAX_PACKET_SIZE_HS,
+-        },
++    .sink_comp = {
++        .bLength = sizeof(ss_descriptors.sink_comp),
++        .bDescriptorType = USB_DT_SS_ENDPOINT_COMP,
++        .bMaxBurst = 4,
+     },
+ };
+ 
++struct usb_ext_compat_desc os_desc_compat = {
++    .bFirstInterfaceNumber = 0,
++    .Reserved1 = cpu_to_le32(1),
++    .CompatibleID = { 'W', 'I', 'N', 'U', 'S', 'B', '\0', '\0'},
++    .SubCompatibleID = {0},
++    .Reserved2 = {0},
++};
++
++static struct usb_os_desc_header os_desc_header = {
++    .interface = cpu_to_le32(0),
++    .dwLength = cpu_to_le32(sizeof(os_desc_header) + sizeof(os_desc_compat)),
++    .bcdVersion = cpu_to_le32(1),
++    .wIndex = cpu_to_le32(4),
++    .bCount = cpu_to_le32(1),
++    .Reserved = cpu_to_le32(0),
++};
++
++static struct usb_os_desc_header os_prop_header = {
++    .interface = cpu_to_le32(0),
++    .dwLength = cpu_to_le32(sizeof(os_desc_header) + sizeof(struct usb_ext_prop_values)),
++    .bcdVersion = cpu_to_le32(1),
++    .wIndex = cpu_to_le32(5),
++    .wCount = cpu_to_le16(1),
++};
++
+ #define STR_INTERFACE_ "ADB Interface"
+ 
+ static const struct {
+@@ -151,8 +264,6 @@ static const struct {
+     },
+ };
+ 
+-
+-
+ static void *usb_adb_open_thread(void *x)
+ {
+     struct usb_handle *usb = (struct usb_handle *)x;
+@@ -270,6 +381,24 @@ static void usb_adb_init()
+ static void init_functionfs(struct usb_handle *h)
+ {
+     ssize_t ret;
++    struct desc_v1 v1_descriptor = {};
++    struct desc_v2 v2_descriptor = {};
++
++    v2_descriptor.header.magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC_V2);
++    v2_descriptor.header.length = cpu_to_le32(sizeof(v2_descriptor));
++    v2_descriptor.header.flags = FUNCTIONFS_HAS_FS_DESC | FUNCTIONFS_HAS_HS_DESC |
++                                 FUNCTIONFS_HAS_SS_DESC | FUNCTIONFS_HAS_MS_OS_DESC;
++    v2_descriptor.fs_count = 3;
++    v2_descriptor.hs_count = 3;
++    v2_descriptor.ss_count = 5;
++    v2_descriptor.os_count = 2;
++    v2_descriptor.fs_descs = fs_descriptors;
++    v2_descriptor.hs_descs = hs_descriptors;
++    v2_descriptor.ss_descs = ss_descriptors;
++    v2_descriptor.os_header = os_desc_header;
++    v2_descriptor.os_desc = os_desc_compat;
++    v2_descriptor.os_prop_header = os_prop_header;
++    v2_descriptor.os_prop_values.guid = os_desc_guid;
+ 
+     if (h->control < 0) { // might have already done this before
+         D("OPENING %s\n", USB_FFS_ADB_EP0);
+@@ -279,10 +408,20 @@ static void init_functionfs(struct usb_handle *h)
+             goto err;
+         }
+ 
+-        ret = adb_write(h->control, &descriptors, sizeof(descriptors));
++        ret = adb_write(h->control, &v2_descriptor, sizeof(v2_descriptor));
+         if (ret < 0) {
+-            D("[ %s: write descriptors failed: errno=%d ]\n", USB_FFS_ADB_EP0, errno);
+-            goto err;
++            D("[ %s: write v2_descriptor failed: errno=%d ]\n", USB_FFS_ADB_EP0, errno);
++            v1_descriptor.header.magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC);
++            v1_descriptor.header.length = cpu_to_le32(sizeof(v1_descriptor));
++            v1_descriptor.header.fs_count = 3;
++            v1_descriptor.header.hs_count = 3;
++            v1_descriptor.fs_descs = fs_descriptors;
++            v1_descriptor.hs_descs = hs_descriptors;
++	    ret = adb_write(h->control, &v1_descriptor, sizeof(v1_descriptor));
++	    if (ret < 0) {
++		D("[ %s: failed to write USB descriptors]\n", USB_FFS_ADB_EP0);
++		goto err;
++	    }
+         }
+ 
+         ret = adb_write(h->control, &strings, sizeof(strings));
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
index 1195b7d..8f28abb 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Different utilities from Android"
 SECTION = "console/utils"
-LICENSE = "Apache-2.0 & GPL-2.0 & BSD-2-Clause & BSD-3-Clause"
+LICENSE = "Apache-2.0 & GPL-2.0-only & BSD-2-Clause & BSD-3-Clause"
 LIC_FILES_CHKSUM = " \
     file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10 \
     file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6 \
@@ -40,6 +40,7 @@
     file://core/0012-Fix-implicit-declaration-of-stlcat-strlcopy-function.patch;patchdir=system/core \
     file://core/adb_libssl_11.diff;patchdir=system/core \
     file://core/0013-adb-Support-riscv64.patch;patchdir=system/core \
+    file://core/0014-add-u3-ss-descriptor-support-for-adb.patch;patchdir=system/core \
     file://extras/0001-ext4_utils-remove-selinux-extensions.patch;patchdir=system/extras \
     file://extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch;patchdir=system/extras \
     file://libselinux/0001-Remove-bionic-specific-calls.patch;patchdir=external/libselinux \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13-native_2.13.bb b/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13-native_2.13.bb
index fff0f5e..21d1356 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13-native_2.13.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13-native_2.13.bb
@@ -6,8 +6,8 @@
 
 HOMEPAGE = "http://www.gnu.org/software/autoconf/"
 
-LICENSE = "GPLv3"
-LICENSE = "GPLv2 & GPLv3"
+LICENSE = "GPL-3.0-only"
+LICENSE = "GPL-2.0-only & GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=361b6b837cad26c6900a926b62aada5f"
 
 SRC_URI = " \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.9.1.bb b/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.9.1.bb
index 36004c5..d14bd84 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.9.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.9.1.bb
@@ -14,6 +14,7 @@
 inherit cmake
 
 CXXFLAGS:append:mips = " -latomic"
+CXXFLAGS:append:powerpc = " -latomic"
 CXXFLAGS:append:riscv32 = " -latomic"
 
 EXTRA_OECMAKE += "\
diff --git a/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.8.0.bb b/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.8.0.bb
index 99e09bf..c5a0030 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.8.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.8.0.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "cgdb is a lightweight curses (terminal-based) interface to the GNU Debugger (GDB)."
 HOMEPAGE = "http://cgdb.github.io/"
 SECTION = "devel"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "flex-native readline ncurses"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.92.bb b/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.92.bb
index 2b9f299..766d34f 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.92.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.92.bb
@@ -2,7 +2,7 @@
 in many programming languages."
 AUTHOR = "Al Danial"
 
-LICENSE="GPL-2.0"
+LICENSE="GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=2c1c00f9d3ed9e24fa69b932b7e7aff2"
 
 SRC_URI = "https://github.com/AlDanial/cloc/releases/download/v${PV}/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20211129.bb b/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20211129.bb
index d1f1250..3218ba6 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20211129.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20211129.bb
@@ -4,7 +4,7 @@
 It supports Intel, AMD, and VIA CPUs, as well as older Transmeta, Cyrix, \
 UMC, NexGen, Rise, and SiS CPUs"
 HOMEPAGE="http://www.etallen.com/cpuid.html"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "http://www.etallen.com/${BPN}/${BP}.src.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20211114.0.bb b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20211114.0.bb
index cde7c7a..504cc24 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20211114.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_5.9.20211114.0.bb
@@ -9,7 +9,7 @@
 
 HOMEPAGE = "https://ctags.io/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
 
 inherit autotools-brokensep pkgconfig manpages
diff --git a/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb b/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb
index ddb93a0..a82387a 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A text-based user interface plugin of dnf for user to manage packages. "
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.9.3.bb b/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.9.3.bb
index 7070c1f..92fea98 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.9.3.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.9.3.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Doxygen is the de facto standard tool for generating documentation from annotated C++ sources."
 HOMEPAGE = "http://www.doxygen.org/"
 
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "flex-native bison-native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins/0001-geany.m4-Do-not-tinker-with-pkg-config-paths.patch b/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins/0001-geany.m4-Do-not-tinker-with-pkg-config-paths.patch
new file mode 100644
index 0000000..cd417e0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins/0001-geany.m4-Do-not-tinker-with-pkg-config-paths.patch
@@ -0,0 +1,32 @@
+From b2187b45f61ce362a9d58d9081d66daddb4e577f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 20 Mar 2022 15:54:14 -0700
+Subject: [PATCH] geany.m4: Do not tinker with pkg-config paths
+
+OE sets up these paths correctly w.r.t. target sysroot
+
+Upstream-Status: Inappropriate [OE-Specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ build/geany.m4 | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/build/geany.m4
++++ b/build/geany.m4
+@@ -32,7 +32,8 @@ AC_DEFUN([GP_CHECK_GEANY],
+ [
+     AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ 
+-    GP_GEANY_PKG_CONFIG_PATH_PUSH
++    dnl GP_GEANY_PKG_CONFIG_PATH_PUSH
++    AC_REQUIRE([_GP_GEANY_LIBDIR])
+ 
+     PKG_CHECK_MODULES([GEANY], [geany >= $1])
+     geanypluginsdir=$geany_libdir/geany
+@@ -40,5 +41,5 @@ AC_DEFUN([GP_CHECK_GEANY],
+     AC_SUBST([geanypluginsdir])
+     AC_SUBST([GEANY_VERSION])
+ 
+-    GP_GEANY_PKG_CONFIG_PATH_POP
++    dnl GP_GEANY_PKG_CONFIG_PATH_POP
+ ])
diff --git a/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.38.bb b/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.38.bb
index bb419c9..fa4cccc 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.38.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.38.bb
@@ -1,8 +1,8 @@
 DESCRIPTION = "A fast and lightweight IDE"
 HOMEPAGE = "http://plugins.geany.org/"
 
-LICENSE_DEFAULT = "GPLv2"
-LICENSE = "${LICENSE_DEFAULT} & BSD-2-Clause & GPLv3"
+LICENSE_DEFAULT = "GPL-2.0-only"
+LICENSE = "${LICENSE_DEFAULT} & BSD-2-Clause & GPL-3.0-only"
 
 python () {
     for plugin in d.getVar('PLUGINS').split():
@@ -32,6 +32,7 @@
     https://plugins.geany.org/${BPN}/${BP}.tar.bz2 \
     file://0001-Use-pkg-config-to-find-gpgme.patch \
     file://0001-git-changebar-Adjust-structs-for-libgit2-1.4.x.patch \
+    file://0001-geany.m4-Do-not-tinker-with-pkg-config-paths.patch \
 "
 SRC_URI[sha256sum] = "1c578a7ebb390aa8882f195acd3d8da3ceb73925d291b28dec90cd3e5fd20586"
 
@@ -60,7 +61,7 @@
 
 PLUGINS += "${PN}-commander"
 LIC_FILES_CHKSUM += "file://commander/COPYING;md5=d32239bcb673463ab874e80d47fae504"
-LICENSE:${PN}-commander = "GPLv3"
+LICENSE:${PN}-commander = "GPL-3.0-only"
 FILES:${PN}-commander = "${libdir}/geany/commander.so"
 
 # | checking whether the GTK version in use is compatible with plugin Debugger... no
@@ -86,7 +87,7 @@
 
 PLUGINS += "${PN}-geanydoc"
 LIC_FILES_CHKSUM += "file://geanydoc/COPYING;md5=d32239bcb673463ab874e80d47fae504"
-LICENSE:${PN}-geanydoc = "GPLv3"
+LICENSE:${PN}-geanydoc = "GPL-3.0-only"
 FILES:${PN}-geanydoc = "${libdir}/geany/geanydoc.so"
 
 PLUGINS += "${PN}-geanyextrasel"
@@ -121,7 +122,7 @@
 
 PLUGINS += "${PN}-geanyprj"
 LIC_FILES_CHKSUM += "file://geanyprj/COPYING;md5=d32239bcb673463ab874e80d47fae504"
-LICENSE:${PN}-geanyprj = "GPLv3"
+LICENSE:${PN}-geanyprj = "GPL-3.0-only"
 FILES:${PN}-geanyprj = "${libdir}/geany/geanyprj.so"
 
 #PLUGINS += "${PN}-geanypy"
@@ -138,7 +139,7 @@
 
 PLUGINS += "${PN}-git-changebar"
 LIC_FILES_CHKSUM += "file://git-changebar/COPYING;md5=d32239bcb673463ab874e80d47fae504"
-LICENSE:${PN}-git-changebar = "GPLv3"
+LICENSE:${PN}-git-changebar = "GPL-3.0-only"
 FILES:${PN}-git-changebar = "${datadir}/${BPN}/git-changebar ${libdir}/geany/git-changebar.so"
 
 PLUGINS += "${PN}-keyrecord"
@@ -179,7 +180,7 @@
 FILES:${PN}-pairtaghighlighter = "${libdir}/geany/pairtaghighlighter.so"
 
 PLUGINS += "${PN}-pohelper"
-LICENSE:${PN}-pohelper = "GPLv3"
+LICENSE:${PN}-pohelper = "GPL-3.0-only"
 LIC_FILES_CHKSUM += "file://pohelper/COPYING;md5=d32239bcb673463ab874e80d47fae504"
 FILES:${PN}-pohelper = "${datadir}/${BPN}/pohelper ${libdir}/geany/pohelper.so"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.38.bb b/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.38.bb
index 33d0870..d75e3b5 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.38.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.38.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A fast and lightweight IDE"
 HOMEPAGE = "http://www.geany.org/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=bd7b2c994af21d318bd2cd3b3f80c2d5"
 
 DEPENDS = "gtk+3 libxml-parser-perl-native python3-docutils-native intltool-native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.2.bb b/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.2.bb
index 6417771..c7f98fa 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Glade - A User Interface Designer"
 HOMEPAGE = "http://www.gnu.org/software/gnash"
-LICENSE = "GPLv2 & LGPLv2"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=aabe87591cb8ae0f3c68be6977bb5522 \
                     file://COPYING.GPL;md5=9ac2e7cff1ddaf48b6eab6028f23ef88 \
                     file://COPYING.LGPL;md5=252890d9eee26aab7b432e8b8a616475"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.41.1.bb b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.45.0.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.41.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.45.0.bb
index 925907e..d25a01c 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.41.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.45.0.bb
@@ -3,8 +3,8 @@
 (C++, Node.js, Python, Ruby, Objective-C, PHP, C#)"
 HOMEPAGE = "https://github.com/grpc/grpc"
 SECTION = "libs"
-LICENSE = "Apache-2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6e4cf218112648d22420a84281b68b88"
 
 DEPENDS = "c-ares protobuf protobuf-native protobuf-c protobuf-c-native openssl libnsl2 abseil-cpp re2"
 DEPENDS:append:class-target = " googletest grpc-native "
@@ -13,17 +13,16 @@
 PACKAGE_BEFORE_PN = "${PN}-compiler"
 
 RDEPENDS:${PN}-compiler = "${PN}"
-RDEPENDS:${PN}-dev:class_native += "${PN}-compiler"
+RDEPENDS:${PN}-dev:append:class-native = " ${PN}-compiler"
 # Configuration above allows to cross-compile gRPC applications
 # In order to compile applications on the target, use the dependency below
 # Both dependencies are mutually exclusive
 # RDEPENDS:${PN}-dev += "${PN}-compiler"
 
 S = "${WORKDIR}/git"
-SRCREV_grpc = "635693ce624f3b3a89e5a764f0664958ef08b2b9"
-BRANCH = "v1.41.x"
+SRCREV_grpc = "494b08ada4009ead0d0b70e44d354be72f9c283a"
+BRANCH = "v1.45.x"
 SRC_URI = "git://github.com/grpc/grpc.git;protocol=https;name=grpc;branch=${BRANCH} \
-           file://0001-cmake-revert-db88fb0ee826e73323e06ac6166ac038ee71f6a.patch \
            file://0001-Revert-Changed-GRPCPP_ABSEIL_SYNC-to-GPR_ABSEIL_SYNC.patch \
            "
 # Fixes build with older compilers 4.8 especially on ubuntu 14.04
@@ -45,7 +44,6 @@
     "
 
 PACKAGECONFIG ??= "cpp shared"
-PACKAGECONFIG_class-target ?= "shared"
 PACKAGECONFIG[cpp] = "-DgRPC_BUILD_GRPC_CPP_PLUGIN=ON,-DgRPC_BUILD_GRPC_CPP_PLUGIN=OFF"
 PACKAGECONFIG[csharp] = "-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=ON,-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF"
 PACKAGECONFIG[node] = "-DgRPC_BUILD_GRPC_NODE_PLUGIN=ON,-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF"
@@ -84,4 +82,7 @@
 
 SYSROOT_DIRS_IGNORE:append:class-target = " ${baselib}/cmake/grpc"
 
-FILES:${PN}-compiler += "${bindir}"
+FILES:${PN}-compiler += " \
+    ${bindir} \
+    ${libdir}/libgrpc_plugin_support${SOLIBS} \
+    "
diff --git a/meta-openembedded/meta-oe/recipes-devtools/guider/guider_3.9.8.bb b/meta-openembedded/meta-oe/recipes-devtools/guider/guider_3.9.8.bb
index 47d872a..30d17c8 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/guider/guider_3.9.8.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/guider/guider_3.9.8.bb
@@ -3,7 +3,7 @@
 BUGTRACKER = "https://github.com/iipeace/guider/issues"
 AUTHOR = "Peace Lee <ipeace5@gmail.com>"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=2c1c00f9d3ed9e24fa69b932b7e7aff2"
 
 PV = "3.9.8+git${SRCPV}"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/heaptrack/heaptrack_1.2.0.bb b/meta-openembedded/meta-oe/recipes-devtools/heaptrack/heaptrack_1.2.0.bb
index fad42e3..29937e2 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/heaptrack/heaptrack_1.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/heaptrack/heaptrack_1.2.0.bb
@@ -4,7 +4,7 @@
 the heap memory profile to find hotspots to reduce memory, leaks, allocation \
 hotspots and temporary allocations"
 HOMEPAGE = "https://phabricator.kde.org/source/heaptrack/"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = "zlib boost libunwind elfutils"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/icon-slicer/icon-slicer_0.3.bb b/meta-openembedded/meta-oe/recipes-devtools/icon-slicer/icon-slicer_0.3.bb
index 9768a6e..8e7b0ba 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/icon-slicer/icon-slicer_0.3.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/icon-slicer/icon-slicer_0.3.bb
@@ -1,4 +1,4 @@
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "gdk-pixbuf popt"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/iptraf/iptraf-ng_1.2.1.bb b/meta-openembedded/meta-oe/recipes-devtools/iptraf/iptraf-ng_1.2.1.bb
index 27a0f44..0f6bbb4 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/iptraf/iptraf-ng_1.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/iptraf/iptraf-ng_1.2.1.bb
@@ -20,7 +20,7 @@
 on a wide variety of supported network cards."
 
 HOMEPAGE = "https://fedorahosted.org/iptraf-ng/"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e2b3850593b899b1a17594ed4cc4c731"
 DEPENDS = "ncurses"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/json-schema-validator/json-schema-validator/0001-cmake-Use-GNUInstallDirs.patch b/meta-openembedded/meta-oe/recipes-devtools/json-schema-validator/json-schema-validator/0001-cmake-Use-GNUInstallDirs.patch
new file mode 100644
index 0000000..4b1184a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/json-schema-validator/json-schema-validator/0001-cmake-Use-GNUInstallDirs.patch
@@ -0,0 +1,46 @@
+From e0b1ad02c678513412aba95a1b2fb4005c3c0452 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 19 Mar 2022 22:40:49 -0700
+Subject: [PATCH] cmake: Use GNUInstallDirs
+
+This helps it make it platform independent, some platforms e.g.
+ppc64/linux use /usr/lib64 for system libraries
+
+Upstream-Status: Submitted [https://github.com/pboettch/json-schema-validator/pull/197]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c4cc218..594dc5f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -122,11 +122,13 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+     endif()
+ endif()
+ 
++include(GNUInstallDirs)
++
+ if(JSON_VALIDATOR_INSTALL)
+     install(TARGETS nlohmann_json_schema_validator
+             EXPORT ${PROJECT_NAME}Targets
+-            LIBRARY DESTINATION lib
+-            ARCHIVE DESTINATION lib
++            LIBRARY DESTINATION ${LIBDIR}
++            ARCHIVE DESTINATION ${LIBDIR}
+             RUNTIME DESTINATION bin)
+ 
+     install(FILES src/nlohmann/json-schema.hpp
+@@ -155,7 +157,7 @@ if(JSON_VALIDATOR_INSTALL)
+     # Set Up the Project Targets and Config Files for CMake
+ 
+     # Set the install path to the cmake config files
+-    set(INSTALL_CMAKE_DIR ${CMAKE_INSTALL_PREFIX}/lib/cmake/${PROJECT_NAME})
++    set(INSTALL_CMAKE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+ 
+     # Create the ConfigVersion file
+     include(CMakePackageConfigHelpers) # write_basic_package_version_file
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/json-schema-validator/json-schema-validator_2.1.0.bb b/meta-openembedded/meta-oe/recipes-devtools/json-schema-validator/json-schema-validator_2.1.0.bb
index 4a8de5f..00d26d7 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/json-schema-validator/json-schema-validator_2.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/json-schema-validator/json-schema-validator_2.1.0.bb
@@ -2,7 +2,9 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c441d022da1b1663c70181a32225d006"
 
-SRC_URI = "git://github.com/pboettch/json-schema-validator;branch=master;protocol=https"
+SRC_URI = "git://github.com/pboettch/json-schema-validator;branch=master;protocol=https \
+           file://0001-cmake-Use-GNUInstallDirs.patch \
+          "
 SRCREV = "27fc1d094503623dfe39365ba82581507524545c"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb b/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb
index 53e49f5..169500f 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb
@@ -8,7 +8,7 @@
 The kconfig-frontends package provides the kconfig parser, as well as all \
 the frontends"
 HOMEPAGE = "https://gitlab.com/ymorin/kconfig-frontends"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9b8cf60ff39767ff04b671fca8302408"
 SECTION = "devel"
 DEPENDS += "ncurses flex-native gperf-native bison-native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.20.5.bb b/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.20.5.bb
index c0d7ea3..adf73d4 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.20.5.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.20.5.bb
@@ -5,7 +5,7 @@
 DEPENDS = "glib-2.0"
 
 BBCLASSEXTEND = "native"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 
 PE = "1"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/libsombok3/libsombok3_2.4.0.bb b/meta-openembedded/meta-oe/recipes-devtools/libsombok3/libsombok3_2.4.0.bb
index 2dc3776..2a1234c 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/libsombok3/libsombok3_2.4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/libsombok3/libsombok3_2.4.0.bb
@@ -4,7 +4,7 @@
 properties defined by Annex #11 (UAX #11) may be concerned to determin \
 breaking positions.  This package also implements "default" Grapheme \
 Cluster segmentation described in Annex #29 (UAX #29)."
-LICENSE = "Artistic-1.0 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=5b122a36d0f6dc55279a0ebc69f3c60b"
 
 SRC_URI = "git://github.com/hatukanezumi/sombok.git;protocol=https;branch=master \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb b/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
index 872bdb6..b2898c9 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "C utility functions for OpenWrt"
 SECTION = "libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "\
     file://avl.c;endline=39;md5=00810155fed3d604816ec5814523d60a \
     file://avl-cmp.c;endline=15;md5=1603e6094b432a5f3f320877a06f41b5 \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.19.2.bb b/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.19.2.bb
index a26fac9..8b3608a 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.19.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.19.2.bb
@@ -6,7 +6,7 @@
 HOMEPAGE = "http://ezix.org/project/wiki/HardwareLiSter"
 SECTION = "console/tools"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
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 b6fb1dc..ad58428 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
@@ -6,7 +6,7 @@
 "
 HOMEPAGE = "http://ltrace.org/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
 
 PE = "1"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb b/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb
index d4ff06b..3f3939e 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Just-In-Time Compiler for Lua"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=abe9020de9c00909317d02d5c803810e"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=23d6278200de9b48fd1439f80507cba8"
 HOMEPAGE = "http://luajit.org"
 
 SRC_URI = "git://luajit.org/git/luajit-2.0.git;protocol=http;branch=v2.1 \
@@ -10,7 +10,7 @@
 
 # Set PV to a version tag and date (YYMMDD) associated with SRCREV if it is later.
 PV = "2.1.0~beta3-210112"
-SRCREV = "ec6edc5c39c25e4eb3fca51b753f9995e97215da"
+SRCREV = "43ebb949a249a16c49d232ad24dc9127cc4302bb"
 
 S = "${WORKDIR}/git"
 
@@ -92,7 +92,7 @@
 "
 FILES:luajit-common = "${datadir}/${BPN}-${PV}"
 
-# mips64/ppc/ppc64/riscv64 is not supported in this release
+# mips64/ppc/ppc64/riscv64/riscv32 is not supported in this release
 COMPATIBLE_HOST:mipsarchn32 = "null"
 COMPATIBLE_HOST:mipsarchn64 = "null"
 COMPATIBLE_HOST:powerpc = "null"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_35.1.bb b/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_35.1.bb
index f6578ca..a71bbeb 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_35.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_35.1.bb
@@ -20,7 +20,7 @@
 }
 
 do_install() {
-    ${S}/build-aux/luke PREFIX=${D}${prefix} install
+    ${S}/build-aux/luke PREFIX=${D}${prefix} INST_LIBDIR=${D}${libdir}/lua/${LUA_VERSION} install
 }
 
 FILES:${PN} = "${datadir}/lua/${LUA_VERSION} \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/memstat/memstat_1.0.bb b/meta-openembedded/meta-oe/recipes-devtools/memstat/memstat_1.0.bb
index 1deb25a..7e0ff54d 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/memstat/memstat_1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/memstat/memstat_1.0.bb
@@ -6,7 +6,7 @@
 HOMEPAGE = "http://memstattool.sourceforge.net/"
 SECTION = "devtool"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 S = "${WORKDIR}/memstattool"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.5.bb b/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.5.bb
index ae978ae..8049434 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.5.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.5.bb
@@ -1,7 +1,7 @@
 SUMMARY = "The Mercurial distributed SCM"
 HOMEPAGE = "http://mercurial.selenic.com/"
 SECTION = "console/utils"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "python3 python3-native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-cpp_4.0.2.bb b/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-cpp_4.1.1.bb
similarity index 71%
rename from meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-cpp_4.0.2.bb
rename to meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-cpp_4.1.1.bb
index 25b199f..fd08bf8 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-cpp_4.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-cpp_4.1.1.bb
@@ -7,16 +7,13 @@
                     file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c \
                    "
 
-PV .= "+git${SRCPV}"
+SRC_URI = "https://github.com/msgpack/msgpack-c/releases/download/cpp-${PV}/msgpack-cxx-${PV}.tar.gz"
+SRC_URI[sha256sum] = "8115c5edcf20bc1408c798a6bdaec16c1e52b1c34859d4982a0fb03300438f0b"
 
-SRC_URI = "git://github.com/msgpack/msgpack-c;branch=cpp_master;protocol=https \
-           "
-SRCREV = "3bdbf0d2ee75d46d71afa691a594777d89a22cf7"
+S = "${WORKDIR}/msgpack-cxx-${PV}"
 
 DEPENDS += "boost"
 
-S = "${WORKDIR}/git"
-
 inherit cmake pkgconfig
 
 RDEPENDS:${PN}-dev = ""
diff --git a/meta-openembedded/meta-oe/recipes-devtools/msr-tools/msr-tools_1.3.bb b/meta-openembedded/meta-oe/recipes-devtools/msr-tools/msr-tools_1.3.bb
index e4701af..05220c2 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/msr-tools/msr-tools_1.3.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/msr-tools/msr-tools_1.3.bb
@@ -1,6 +1,6 @@
 SUMMARY = "utilies to read and write Intel model-specific registers"
 HOMEPAGE = "https://01.org/msr-tools"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://Makefile;beginline=1;endline=11;md5=678a3928c856042424c734f4a7586e65"
 SECTION = "devel"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.5.bb b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.5.bb
index a69c5c7..0cf6fd3 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.5.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.10.5.bb
@@ -4,6 +4,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=f969127d7b7ed0a8a63c2bbeae002588"
 
+CVE_PRODUCT = "json-for-modern-cpp"
+
 SRC_URI = "git://github.com/nlohmann/json.git;nobranch=1;protocol=https \
            "
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-crypto-fix-build-without-scrypt.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-crypto-fix-build-without-scrypt.patch
deleted file mode 100644
index 3a2719a..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-crypto-fix-build-without-scrypt.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 048203c97009c907ff3891f6ffa8f375fcf1045c Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Tue, 26 Oct 2021 08:34:39 -0700
-Subject: [PATCH] crypto: fix build without scrypt
-
-* add missing semicolon to fix:
-  In file included from ../src/node_crypto.h:47,
-                   from ../src/node.cc:46:
-  ../src/crypto/crypto_scrypt.h:80:2:
-  error: expected ';' after struct definition
-     80 | }
-        |  ^
-        |  ;
-
-  and fix typo in the comment
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-Upstream-Status: Submitted [https://github.com/nodejs/node/pull/40613]
-
----
- src/crypto/crypto_scrypt.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/crypto/crypto_scrypt.h b/src/crypto/crypto_scrypt.h
-index 4ca888e31d..3d185637f4 100644
---- a/src/crypto/crypto_scrypt.h
-+++ b/src/crypto/crypto_scrypt.h
-@@ -77,8 +77,8 @@ struct ScryptJob {
-   static void Initialize(
-       Environment* env,
-       v8::Local<v8::Object> target) {}
--}
--#endif  // !OPENSSL_NO_SCRIPT
-+};
-+#endif  // !OPENSSL_NO_SCRYPT
- 
- }  // namespace crypto
- }  // namespace node
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0005-add-openssl-legacy-provider-option.patch b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0005-add-openssl-legacy-provider-option.patch
index 2e66a02..4d238c0 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0005-add-openssl-legacy-provider-option.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0005-add-openssl-legacy-provider-option.patch
@@ -20,8 +20,8 @@
 }
 
 Co-authored-by: Richard Lau <rlau@redhat.com>
-
-Refs: https://github.com/nodejs/node/issues/40455
+Signed-off-by: Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+Upstream-Status: Backport [https://github.com/nodejs/node/issues/40455]
 ---
  doc/api/cli.md                                         | 10 ++++++++++
  src/crypto/crypto_util.cc                              | 10 ++++++++++
@@ -34,7 +34,7 @@
 index 74057706bf8d..608b9cdeddf1 100644
 --- a/doc/api/cli.md
 +++ b/doc/api/cli.md
-@@ -652,6 +652,14 @@ Load an OpenSSL configuration file on startup. Among other uses, this can be
+@@ -687,6 +687,14 @@ Load an OpenSSL configuration file on startup. Among other uses, this can be
  used to enable FIPS-compliant crypto if Node.js is built
  against FIPS-enabled OpenSSL.
  
@@ -47,9 +47,9 @@
 +[providers readme][].
 +
  ### `--pending-deprecation`
+ 
  <!-- YAML
- added: v8.0.0
-@@ -1444,6 +1452,7 @@ Node.js options that are allowed are:
+@@ -1544,6 +1552,7 @@ Node.js options that are allowed are:
  * `--no-warnings`
  * `--node-memory-debug`
  * `--openssl-config`
@@ -57,19 +57,19 @@
  * `--pending-deprecation`
  * `--policy-integrity`
  * `--preserve-symlinks-main`
-@@ -1814,6 +1823,7 @@ $ node --max-old-space-size=1536 index.js
- [emit_warning]: process.md#process_process_emitwarning_warning_type_code_ctor
+@@ -1933,6 +1942,7 @@ $ node --max-old-space-size=1536 index.js
+ [emit_warning]: process.md#processemitwarningwarning-options
  [jitless]: https://v8.dev/blog/jitless
  [libuv threadpool documentation]: https://docs.libuv.org/en/latest/threadpool.html
 +[providers readme]: https://github.com/openssl/openssl/blob/openssl-3.0.0/README-PROVIDERS.md
  [remote code execution]: https://www.owasp.org/index.php/Code_Injection
+ [security warning]: #warning-binding-inspector-to-a-public-ipport-combination-is-insecure
  [timezone IDs]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
- [ways that `TZ` is handled in other environments]: https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
 diff --git a/src/crypto/crypto_util.cc b/src/crypto/crypto_util.cc
 index 7e0c8ba3eb60..796ea3025e41 100644
 --- a/src/crypto/crypto_util.cc
 +++ b/src/crypto/crypto_util.cc
-@@ -136,6 +136,16 @@ void InitCryptoOnce() {
+@@ -148,6 +148,16 @@ void InitCryptoOnce() {
    }
  #endif
  
@@ -100,20 +100,6 @@
  
  #include <errno.h>
  #include <sstream>
-@@ -809,6 +812,13 @@ PerProcessOptionsParser::PerProcessOptionsParser(
-             &PerProcessOptions::secure_heap_min,
-             kAllowedInEnvironment);
- #endif
-+#if OPENSSL_VERSION_MAJOR >= 3
-+  AddOption("--openssl-legacy-provider",
-+            "enable OpenSSL 3.0 legacy provider",
-+            &PerProcessOptions::openssl_legacy_provider,
-+            kAllowedInEnvironment);
-+
-+#endif  // OPENSSL_VERSION_MAJOR
-   AddOption("--use-largepages",
-             "Map the Node.js static code to large pages. Options are "
-             "'off' (the default value, meaning do not map), "
 diff --git a/src/node_options.h b/src/node_options.h
 index fd772478d04d..1c0e018ab16f 100644
 --- a/src/node_options.h
@@ -143,7 +129,7 @@
 index 64626b71f019..8a4e35997907 100644
 --- a/test/parallel/test-process-env-allowed-flags-are-documented.js
 +++ b/test/parallel/test-process-env-allowed-flags-are-documented.js
-@@ -40,6 +40,10 @@ for (const line of [...nodeOptionsLines, ...v8OptionsLines]) {
+@@ -43,6 +43,10 @@ for (const line of [...nodeOptionsLines, ...v8OptionsLines]) {
    }
  }
  
@@ -154,7 +140,7 @@
  // Filter out options that are conditionally present.
  const conditionalOpts = [
    {
-@@ -47,6 +51,7 @@ const conditionalOpts = [
+@@ -50,6 +54,7 @@ const conditionalOpts = [
      filter: (opt) => {
        return [
          '--openssl-config',
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_16.11.1.bb b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_16.14.0.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_16.11.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_16.14.0.bb
index 7d8f08a..0ab68cc 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_16.11.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_16.14.0.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
 HOMEPAGE = "http://nodejs.org"
 LICENSE = "MIT & ISC & BSD-2-Clause & BSD-3-Clause & Artistic-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=12f6b053282af96a218353ae7aff7cd8"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6ba5b21ac7a505195ca69344d3d7a94a"
 
 DEPENDS = "openssl"
 DEPENDS:append:class-target = " qemu-native"
@@ -15,6 +15,7 @@
 
 COMPATIBLE_HOST:riscv64 = "null"
 COMPATIBLE_HOST:riscv32 = "null"
+COMPATIBLE_HOST:powerpc = "null"
 
 SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
            file://0001-Disable-running-gyp-files-for-bundled-deps.patch \
@@ -25,7 +26,6 @@
            file://mips-less-memory.patch \
            file://system-c-ares.patch \
            file://0001-liftoff-Correct-function-signatures.patch \
-           file://0001-crypto-fix-build-without-scrypt.patch \
            "
 SRC_URI:append:class-target = " \
            file://0002-Using-native-binaries.patch \
@@ -36,7 +36,7 @@
 SRC_URI:append:toolchain-clang:powerpc64le = " \
            file://0001-ppc64-Do-not-use-mminimal-toc-with-clang.patch \
            "
-SRC_URI[sha256sum] = "67587f4de25e30a9cc0b51a6033eca3bc82d7b4e0d79bb84a265e88f76ab6278"
+SRC_URI[sha256sum] = "05eb64193e391fa8a2c159c0f60c171824715165f80c67fcab9dbc944e30c623"
 
 S = "${WORKDIR}/node-v${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/octave/octave_4.4.1.bb b/meta-openembedded/meta-oe/recipes-devtools/octave/octave_4.4.1.bb
index 0556071..433175f 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/octave/octave_4.4.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/octave/octave_4.4.1.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.gnu.org/software/octave/"
 SECTION = "math"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 DEPENDS = "gperf-native texinfo lapack pcre readline"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
index 1b06f29..1503bb6 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Free and Open On-Chip Debugging, In-System Programming and Boundary-Scan Testing"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 DEPENDS = "libusb-compat libftdi"
 RDEPENDS:${PN} = "libusb1"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.22.bb b/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.22.bb
index c5c5e83..449508a 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.22.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/pahole/pahole_1.22.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Shows and manipulates data structure layout"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 DEPENDS = "elfutils zlib libbpf"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/pax-utils/pax-utils_1.2.2.bb b/meta-openembedded/meta-oe/recipes-devtools/pax-utils/pax-utils_1.2.2.bb
index 6cd4aa7..0eb2146 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/pax-utils/pax-utils_1.2.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/pax-utils/pax-utils_1.2.2.bb
@@ -4,7 +4,7 @@
 processes for issues that might be relevant when using ELF binaries \
 along with PaX, such as non-PIC code or executable stack and heap."
 HOMEPAGE = "http://www.gentoo.org/proj/en/hardened/pax-utils.xml"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
 
 SRC_URI = "https://dev.gentoo.org/~vapier/dist/pax-utils-${PV}.tar.xz"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb b/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb
index 6f4004f..85c4fa9 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://github.com/billfarrow/pcimem"
 BUGTRACKER = "https://github.com/billfarrow/pcimem/issues"
 SECTION = "devel"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 COMPATIBLE_HOST = "(x86_64|aarch64|arm|riscv64)"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_20200505.0.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_20200505.0.bb
index bab1827..34f3136 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_20200505.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_20200505.0.bb
@@ -5,7 +5,7 @@
 styles are both supported and may be mixed."
 HOMEPAGE = "https://metacpan.org/release/IPC-Run"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=0ebd37caf53781e8b7223e6b99b63f4e"
 DEPENDS = "perl"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libdbd-mysql-perl_4.050.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/libdbd-mysql-perl_4.050.bb
index 760c0ad..fc505fe 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/libdbd-mysql-perl_4.050.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/libdbd-mysql-perl_4.050.bb
@@ -9,7 +9,7 @@
 HOMEPAGE = "https://github.com/perl5-dbi/DBD-mysql"
 
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 DEPENDS += "libdev-checklib-perl-native libdbi-perl-native libmysqlclient"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d0a06964340e5c0cde88b7af611f755c"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libdbi-perl_1.643.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/libdbi-perl_1.643.bb
index b214182..94f98fe 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/libdbi-perl_1.643.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/libdbi-perl_1.643.bb
@@ -6,7 +6,7 @@
 "
 HOMEPAGE = "http://search.cpan.org/dist/DBI/"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=10982c7148e0a012c0fd80534522f5c5"
 
 SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl_1.14.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl_1.14.bb
index a96e3ad..6dfff78 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl_1.14.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl_1.14.bb
@@ -4,7 +4,7 @@
 link against it."
 HOMEPAGE = "https://metacpan.org/pod/Devel::CheckLib"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 LIC_FILES_CHKSUM = "file://README;md5=7911cdbb572d25c5f2e2ea17f669efc2"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.16.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.16.bb
index 4d0422e..e714851 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.16.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.16.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Perl module for pseudo tty IO"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://META.yml;beginline=11;endline=12;md5=b2562f94907eeb42e8ce9d45f628e587"
 
 SRC_URI = "http://www.cpan.org/modules/by-module/IO/IO-Tty-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libjson-perl_4.03000.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/libjson-perl_4.03000.bb
index ea1c1d5..88d0d26 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/libjson-perl_4.03000.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/libjson-perl_4.03000.bb
@@ -4,7 +4,7 @@
 
 HOMEPAGE = "https://metacpan.org/pod/JSON"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=1171;endline=1176;md5=3be2cb8159d094768e67386c453e8bbe"
 
 DEPENDS += "perl"
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
index 27a7f9d..d7959df 100644
--- 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
@@ -5,7 +5,7 @@
 
 HOMEPAGE = "http://search.cpan.org/dist/Parse-Yapp/"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 LIC_FILES_CHKSUM = "file://lib/Parse/Yapp.pm;beginline=508;endline=521;md5=41a4542fcde97a600c9de0d782a90256"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libperlio-gzip-perl_0.20.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/libperlio-gzip-perl_0.20.bb
index ccd8682..11f6a1a 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/libperlio-gzip-perl_0.20.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/libperlio-gzip-perl_0.20.bb
@@ -4,7 +4,7 @@
 
 HOMEPAGE = "https://metacpan.org/pod/PerlIO::gzip"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=55;endline=61;md5=bc3da2dec1fbea59ac91172c5e0eb837"
 
 DEPENDS += "perl"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php_8.1.3.bb b/meta-openembedded/meta-oe/recipes-devtools/php/php_8.1.4.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-devtools/php/php_8.1.3.bb
rename to meta-openembedded/meta-oe/recipes-devtools/php/php_8.1.4.bb
index bfe4d27..bf6c543 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/php/php_8.1.3.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/php/php_8.1.4.bb
@@ -7,6 +7,7 @@
 
 BBCLASSEXTEND = "native"
 DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native lemon-native"
+DEPENDS:append:libc-musl = " libucontext"
 DEPENDS:class-native = "zlib-native libxml2-native"
 
 PHP_MAJOR_VERSION = "${@d.getVar('PV').split('.')[0]}"
@@ -32,7 +33,7 @@
           "
 
 S = "${WORKDIR}/php-${PV}"
-SRC_URI[sha256sum] = "354c4e2c506046eca812d1fc2526884a2f54b5e3d20ef0ede919a69eb232d0be"
+SRC_URI[sha256sum] = "b3f688cb69758523838b8e7f509aaef0152133d9b84a84a0b7cf68eeafc1df76"
 
 inherit autotools pkgconfig python3native gettext
 
@@ -66,6 +67,10 @@
 
 EXTRA_OECONF:append:riscv64 = " --with-pcre-jit=no"
 EXTRA_OECONF:append:riscv32 = " --with-pcre-jit=no"
+# Needs fibers assembly implemented for rv32
+# for example rv64 implementation is below
+# see https://github.com/php/php-src/commit/70b02d75f2abe3a292d49c4a4e9e4f850c2fee68
+EXTRA_OECONF:append:riscv32:libc-musl = " --disable-fiber-asm"
 
 CACHED_CONFIGUREVARS += "ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=yes"
 
@@ -116,6 +121,7 @@
 # See https://bugs.php.net/bug.php?id=60109
 CFLAGS += " -DHAVE_LIBDL "
 LDFLAGS += " -ldl "
+LDFLAGS:append:libc-musl = " -lucontext "
 
 EXTRA_OEMAKE = "INSTALL_ROOT=${D}"
 
@@ -272,8 +278,3 @@
 # | {standard input}:3797: Error: unshifted register required -- `sub r2,r2,r0,asr#31'
 # | make: *** [ext/standard/math.lo] Error 1
 ARM_INSTRUCTION_SET = "arm"
-
-# Needs fibers assembly implemented for rv32
-# for example rv64 implementation is below
-# see https://github.com/php/php-src/commit/70b02d75f2abe3a292d49c4a4e9e4f850c2fee68
-COMPATIBLE_HOST:libc-musl:riscv32 = "null"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ply/ply_git.bb b/meta-openembedded/meta-oe/recipes-devtools/ply/ply_git.bb
index 616f5dd..84a79c1 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ply/ply_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ply/ply_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Ply: A light-weight dynamic tracer for eBPF"
 HOMEPAGE = "https://github.com/iovisor/ply"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS += "bison-native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb b/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb
index afa503e..56d895a 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "This is a small collection of power management \
     test and investigation tools"
 HOMEPAGE = "http://lesswatts.org/projects/acpi"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
 
 PV = "20130209+git${SRCPV}"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/poke/poke_1.2.bb b/meta-openembedded/meta-oe/recipes-devtools/poke/poke_1.2.bb
index b99d7b5..af85d21 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/poke/poke_1.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/poke/poke_1.2.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://pokology.org"
 DESCRIPTION = "GNU poke is an interactive, extensible editor for binary data. Not limited to editing basic entities such as bits and bytes, it provides a full-fledged procedural, interactive programming language designed to describe data structures and to operate on them."
 SECTION = "console/utils"
-LICENSE = "GPL-3.0+"
+LICENSE = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "${GNU_MIRROR}/poke/poke-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/python/python3-apt_2.3.0.bb b/meta-openembedded/meta-oe/recipes-devtools/python/python3-apt_2.3.0.bb
index 6463f49bb..ec1539b 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/python/python3-apt_2.3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/python/python3-apt_2.3.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Python-apt is a wrapper to use features of apt from python."
-LICENSE = "GPLv2 & FSFAP"
+LICENSE = "GPL-2.0-only & FSFAP"
 LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3 \
                     file://debian/copyright;md5=4ed7b6862ca422678b17e7d4ed592285"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra.bb b/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra.bb
deleted file mode 100644
index 580842d..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require python-distutils-extra.inc
-
-inherit setuptools3
-
-S = "${WORKDIR}/python-distutils-extra-${PV}"
-
-RDEPENDS:${PN} = "\
-    python3-setuptools \
-"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.inc b/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra_2.39.bb
similarity index 79%
rename from meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.inc
rename to meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra_2.39.bb
index 3430ced..e129c18 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.inc
+++ b/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra_2.39.bb
@@ -2,12 +2,16 @@
 DESCRIPTION = "python-distutils extension integrating gettext support, themed icons and scrollkeeper based documentation"
 HOMEPAGE = "https://launchpad.net/python-distutils-extra"
 SECTION = "devel/python"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=4325afd396febcb659c36b49533135d4"
 
-PV = "2.39"
 SRC_URI = "https://launchpad.net/python-distutils-extra/trunk/${PV}/+download/python-distutils-extra-${PV}.tar.gz"
-SRC_URI[md5sum] = "16e06db0ef73a35b4bff4b9eed5699b5"
 SRC_URI[sha256sum] = "723f24f4d65fc8d99b33a002fbbb3771d4cc9d664c97085bf37f3997ae8063af"
 
+inherit setuptools3
+
+PIP_INSTALL_PACKAGE = "python_distutils_extra"
+
+S = "${WORKDIR}/python-distutils-extra-${PV}"
+
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/python/python3-pycups_2.0.1.bb b/meta-openembedded/meta-oe/recipes-devtools/python/python3-pycups_2.0.1.bb
index dd00f44..1508273 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/python/python3-pycups_2.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/python/python3-pycups_2.0.1.bb
@@ -9,11 +9,11 @@
 
 DESCRIPTION = "pycups - CUPS bindings for Python"
 HOMEPAGE = "https://github.com/OpenPrinting/pycups"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 DEPENDS += "cups"
 
 # See https://pypi.org/project/pycups/ for data
 SRC_URI[sha256sum] = "57434ce5f62548eb12949ca8217f066f4eeb21a5d6ab8b13471dce350e380c90"
 
-inherit pypi setuptools3
\ No newline at end of file
+inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck_1.0.0.bb b/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck_1.0.0.bb
index 797ec0e..29abfe1 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck_1.0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/serialcheck/serialcheck_1.0.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Application to verify operation of serial ports"
 HOMEPAGE = "https://github.com/nsekhar/serialcheck"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = " \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.23.bb b/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.23.bb
index 792cdb5..d633558 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.23.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.23.bb
@@ -1,7 +1,7 @@
 SUMMARY = "SIP is a C++/Python Wrapper Generator"
 HOMEPAGE = "https://riverbankcomputing.com/software/sip/"
 SECTION = "devel"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE-GPL2;md5=e91355d8a6f8bd8f7c699d62863c7303"
 
 SRC_URI = "https://www.riverbankcomputing.com/static/Downloads/sip/${PV}/sip-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb b/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb
index c0b2240..db90bc5 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb
@@ -11,7 +11,9 @@
 SRC_URI = "git://github.com/fnc12/sqlite_orm;protocol=https;branch=master"
 S = "${WORKDIR}/git"
 
-EXTRA_OECMAKE += "-DSqliteOrm_BuildTests=OFF"
+EXTRA_OECMAKE += "-DSqliteOrm_BuildTests=OFF -DLIB_INSTALL_DIR=${libdir} \
+                  -DCMAKE_INSTALL_DIR=${libdir}/cmake \
+                  -DPKGCONFIG_INSTALL_DIR=${libdir}/pkgconfig"
 
 BBCLASSEXTEND = "native nativesdk"
 
@@ -19,4 +21,4 @@
 
 # Header-only library
 RDEPENDS:${PN}-dev = ""
-RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
\ No newline at end of file
+RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/squashfs-tools-ng/squashfs-tools-ng_1.0.2.bb b/meta-openembedded/meta-oe/recipes-devtools/squashfs-tools-ng/squashfs-tools-ng_1.0.2.bb
index 08b1ecb..580c53a 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/squashfs-tools-ng/squashfs-tools-ng_1.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/squashfs-tools-ng/squashfs-tools-ng_1.0.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "New set of tools for working with SquashFS images"
 SECTION = "base"
-LICENSE = "GPL-3.0+ & LGPL-3.0+ & MIT & BSD-2-Clause & Zlib"
+LICENSE = "GPL-3.0-or-later & LGPL-3.0-or-later & MIT & BSD-2-Clause & Zlib"
 LIC_FILES_CHKSUM = "file://COPYING.md;md5=c0de2c0aca56349dab98e97992316f7e \
                     file://licenses/GPLv3.txt;md5=1ebbd3e34237af26da5dc08a4e440464 \
                     file://licenses/hash_table.txt;md5=874823605326caeaabaa95bfbd0f9fb0 \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/suitesparse/suitesparse_5.10.1.bb b/meta-openembedded/meta-oe/recipes-devtools/suitesparse/suitesparse_5.10.1.bb
index c03cf2f..38e34b9 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/suitesparse/suitesparse_5.10.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/suitesparse/suitesparse_5.10.1.bb
@@ -1,4 +1,4 @@
-LICENSE = "GPLv2 & GPLv3 & BSD-3-Clause & LGPL-2.0 & Apache-2.0"
+LICENSE = "GPL-2.0-only & GPL-3.0-only & BSD-3-Clause & LGPL-2.0-only & Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5fa987762101f748a6cdd951b64ffc6b"
 SRC_URI = "git://github.com/DrTimothyAldenDavis/SuiteSparse;protocol=https;branch=master \
            file://0001-Preserve-CXXFLAGS-from-environment-in-Mongoose.patch \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb
index 6e951c9..efab961 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb
@@ -3,7 +3,7 @@
 SECTION = "devel/tcltk"
 
 # http://www.tcl.tk/software/tcltk/license.html
-LICENSE = "tcl"
+LICENSE = "TCL"
 LIC_FILES_CHKSUM = "file://${S}/../license.terms;md5=c88f99decec11afa967ad33d314f87fe \
     file://${S}/../compat/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
     file://${S}/../doc/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.11.bb b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.11.bb
index 59c9dd4..6d7696c 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.11.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.11.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://github.com/namhyung/uftrace"
 BUGTRACKER = "https://github.com/namhyung/uftrace/issues"
 SECTION = "devel"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "elfutils"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/unattended-upgrades/unattended-upgrades_2.6.bb b/meta-openembedded/meta-oe/recipes-devtools/unattended-upgrades/unattended-upgrades_2.6.bb
index 629d2b4..1ec205f 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/unattended-upgrades/unattended-upgrades_2.6.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/unattended-upgrades/unattended-upgrades_2.6.bb
@@ -1,7 +1,7 @@
 SUMMARY = "This script upgrades packages automatically and unattended."
 DESCRIPTION = "The purpose of unattended-upgrades is to keep the computer current with the latest security (and other) updates automatically."
 HOMEPAGE = "https://wiki.debian.org/UnattendedUpgrades"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
                     file://debian/copyright;md5=62b5f2ac0ede901fb245eefbe54c181f"
 
@@ -13,13 +13,13 @@
 
 S = "${WORKDIR}/git"
 
-inherit setuptools3
+inherit setuptools3_legacy
 
 DEPENDS += "apt intltool-native python3-distutils-extra-native"
 RDEPENDS:${PN} += "apt lsb-release python3-apt python3-core python3-datetime python3-email python3-fcntl python3-io python3-logging python3-stringold python3-syslog"
 
-do_install:prepend () {
-	cp -v ${S}/data/50unattended-upgrades.Debian ${S}/data/50unattended-upgrades
+do_configure:prepend () {
+	install -Dm 0644 ${S}/data/50unattended-upgrades.Debian ${S}/data/50unattended-upgrades
 }
 
 do_install:append () {
@@ -28,4 +28,4 @@
 	rm -r ${D}/usr/usr
 }
 
-FILES:${PN} = "${bindir} ${exec_prefix}/etc ${libdir} ${datadir}"
+FILES:${PN} = "${bindir} ${exec_prefix}/etc ${libdir} ${datadir} ${nonarch_libdir}"
diff --git a/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-devtools/valijson/valijson_0.6.bb b/meta-openembedded/meta-oe/recipes-devtools/valijson/valijson_0.6.bb
similarity index 81%
rename from meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-devtools/valijson/valijson_0.6.bb
rename to meta-openembedded/meta-oe/recipes-devtools/valijson/valijson_0.6.bb
index 1d3daa1..4bed4a4 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/networking-layer/recipes-devtools/valijson/valijson_0.6.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/valijson/valijson_0.6.bb
@@ -10,9 +10,11 @@
 
 inherit cmake
 
-EXTRA_OECMAKE = "-DINSTALL_HEADERS=1 -DBUILD_TESTS=0"
+PACKAGECONFIG ?= "boost"
 
-DEPENDS = "curlpp"
+PACKAGECONFIG[boost] = "-Dvalijson_EXCLUDE_BOOST=FALSE,-Dvalijson_EXCLUDE_BOOST=TRUE,boost"
+PACKAGECONFIG[examples] = "-Dvalijson_BUILD_EXAMPLES=TRUE,-Dvalijson_BUILD_EXAMPLES=FALSE,curlpp"
+PACKAGECONFIG[tests] = "-Dvalijson_BUILD_TESTS=TRUE,-Dvalijson_BUILD_TESTS=FALSE,curlpp"
 
 # valijson is a header only C++ library, so the main package will be empty.
 RDEPENDS:${PN}-dev = ""
diff --git a/meta-openembedded/meta-oe/recipes-extended/beep/beep_1.4.9.bb b/meta-openembedded/meta-oe/recipes-extended/beep/beep_1.4.9.bb
index 75cf215..ec62f31 100644
--- a/meta-openembedded/meta-oe/recipes-extended/beep/beep_1.4.9.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/beep/beep_1.4.9.bb
@@ -4,7 +4,7 @@
 HOMEPAGE = "https://github.com/spkr-beep/beep"
 BUGTRACKER = "https://github.com/spkr-beep/beep/issues"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "git://github.com/spkr-beep/beep.git;protocol=https;branch=master \
diff --git a/meta-openembedded/meta-oe/recipes-extended/bitwise/bitwise_0.43.bb b/meta-openembedded/meta-oe/recipes-extended/bitwise/bitwise_0.43.bb
index f473cca..713492b 100644
--- a/meta-openembedded/meta-oe/recipes-extended/bitwise/bitwise_0.43.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/bitwise/bitwise_0.43.bb
@@ -7,7 +7,7 @@
 HOMEPAGE = "https://github.com/mellowcandle/bitwise"
 SECTION = "console/utils"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 SRC_URI = "https://github.com/mellowcandle/bitwise/releases/download/v${PV}/bitwise-v${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.18.1.bb b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.18.1.bb
index 114e394..5e991d3 100644
--- a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.18.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.18.1.bb
@@ -16,7 +16,7 @@
 of scientific and mathematical research."
 
 HOMEPAGE = "http://boinc.berkeley.edu/"
-LICENSE = "LGPLv2+ & GPLv3"
+LICENSE = "LGPL-2.0-or-later & GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
                     file://COPYING.LESSER;md5=6a6a8e020838b23406c81b19c1d46df6"
 SECTION = "applications"
@@ -24,7 +24,7 @@
            jpeg \
            openssl \
            sqlite3 \
-           virtual/libgl \
+           virtual/egl \
            ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'libnotify', '', d)} \
            ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk+ libnotify xcb-util libxscrnsaver', '', d)} \
            nettle \
diff --git a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb
index 05d3a1e..1566f8a 100644
--- a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb
@@ -12,7 +12,7 @@
 
 SKIP_RECIPE[cfengine] ?= "Needs porting to openssl 3.x"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=233aa25e53983237cf0bd4c238af255f"
 
 DEPENDS = "attr tokyocabinet bison-native"
diff --git a/meta-openembedded/meta-oe/recipes-extended/cmatrix/cmatrix_2.0.bb b/meta-openembedded/meta-oe/recipes-extended/cmatrix/cmatrix_2.0.bb
index 39cdaea..a743e72 100644
--- a/meta-openembedded/meta-oe/recipes-extended/cmatrix/cmatrix_2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/cmatrix/cmatrix_2.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Terminal based 'The Matrix' screen implementation"
 AUTHOR = "Abishek V Ashok"
 
-LICENSE = "GPL-3.0"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "git://github.com/abishekvashok/cmatrix.git;branch=stable;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.12.0.bb b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.12.0.bb
index 1c613b0..dd97796 100644
--- a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.12.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.12.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Collects and summarises system performance statistics"
 DESCRIPTION = "collectd is a daemon which collects system performance statistics periodically and provides mechanisms to store the values in a variety of ways, for example in RRD files."
-LICENSE = "GPLv2 & MIT"
+LICENSE = "GPL-2.0-only & MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1bd21f19f7f0c61a7be8ecacb0e28854"
 
 DEPENDS = "rrdtool curl libpcap libxml2 yajl libgcrypt libtool lvm2"
diff --git a/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.26.bb b/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.26.bb
index 165e704..a31911b 100644
--- a/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.26.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.26.bb
@@ -4,7 +4,7 @@
     trying hard to rescue data in case of read errors."
 HOMEPAGE = "http://www.gnu.org/software/ddrescue/ddrescue.html"
 SECTION = "console"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
                     file://main_common.cc;beginline=5;endline=16;md5=ad099df052bdd8297f490712285069da \
diff --git a/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20210509.bb b/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20210509.bb
index 2bfa575..0b1e7e6 100644
--- a/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20210509.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20210509.bb
@@ -5,7 +5,7 @@
 HOMEPAGE = "http://invisible-island.net/dialog/"
 SECTION = "console/utils"
 DEPENDS = "ncurses"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
 
 SRC_URI = "ftp://ftp.invisible-island.net/${BPN}/${BP}.tgz"
diff --git a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.8.bb b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.8.bb
index f07d4c4..014c773 100644
--- a/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.8.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.8.bb
@@ -9,7 +9,7 @@
 - the DLT test applications"
 HOMEPAGE = "https://www.genivi.org/"
 SECTION = "console/utils"
-LICENSE = "MPLv2"
+LICENSE = "MPL-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8184208060df880fe3137b93eb88aeea"
 
 DEPENDS = "zlib gzip-native json-c"
diff --git a/meta-openembedded/meta-oe/recipes-extended/duktape/duktape_2.6.0.bb b/meta-openembedded/meta-oe/recipes-extended/duktape/duktape_2.7.0.bb
similarity index 62%
rename from meta-openembedded/meta-oe/recipes-extended/duktape/duktape_2.6.0.bb
rename to meta-openembedded/meta-oe/recipes-extended/duktape/duktape_2.7.0.bb
index 95df28e..7674785 100644
--- a/meta-openembedded/meta-oe/recipes-extended/duktape/duktape_2.6.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/duktape/duktape_2.7.0.bb
@@ -2,13 +2,12 @@
 DESCRIPTION = "Duktape is an embeddable Javascript engine, with a focus on portability and compact footprint."
 HOMEPAGE = "https://duktape.org"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c83446610de1f63c7ca60cfcc82dec9d"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b7825df97b52f926fc71300f7880408"
 
-SRC_URI = "https://duktape.org/duktape-${PV}.tar.xz \
-           file://0001-Support-makefile-variables.patch \
-"
-SRC_URI[md5sum] = "01ee8ecf3dd5c6504543c8679661bb20"
-SRC_URI[sha256sum] = "96f4a05a6c84590e53b18c59bb776aaba80a205afbbd92b82be609ba7fe75fa7"
+SRC_URI = "https://duktape.org/duktape-${PV}.tar.xz"
+SRC_URI[sha256sum] = "90f8d2fa8b5567c6899830ddef2c03f3c27960b11aca222fa17aa7ac613c2890"
+
+EXTRA_OEMAKE = "INSTALL_PREFIX='${prefix}' DESTDIR='${D}' LIBDIR='/${baselib}'"
 
 do_compile () {
     oe_runmake -f Makefile.sharedlibrary INSTALL_PREFIX="${prefix}" DESTDIR="${D}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/duktape/files/0001-Support-makefile-variables.patch b/meta-openembedded/meta-oe/recipes-extended/duktape/files/0001-Support-makefile-variables.patch
deleted file mode 100644
index f3fe40b..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/duktape/files/0001-Support-makefile-variables.patch
+++ /dev/null
@@ -1,297 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Luca Boccassi <luca.boccassi@microsoft.com>
-Date: Mon, 17 Jan 2022 18:12:03 +0000
-Subject: [PATCH] Support makefile variables
-
-Makefile*: use CFLAGS/CPPFLAGS/LDFLAGS
-Makefile*: allow compiler and install variables to be overridden
-Makefile.sharedlibrary: allow destdir and libdir to be overridden
-Makefile.sharedlibrary: generate pkg-config file
-
-Forwarded: https://github.com/svaarala/duktape/pull/2457
----
- Makefile.cmdline       |  5 ++--
- Makefile.codepage      |  5 ++--
- Makefile.dukdebug      |  5 ++--
- Makefile.eval          |  5 ++--
- Makefile.eventloop     |  5 ++--
- Makefile.hello         |  5 ++--
- Makefile.jsoncbor      |  5 ++--
- Makefile.jxpretty      |  5 ++--
- Makefile.sandbox       |  5 ++--
- Makefile.sharedlibrary | 48 ++++++++++++++++++++-----------
- duktape.pc.in          | 10 +++++++
- 11 files changed, 68 insertions(+), 35 deletions(-)
- create mode 100644 duktape.pc.in
-
-diff --git a/Makefile.cmdline b/Makefile.cmdline
-index 235566b8..0b020510 100644
---- a/Makefile.cmdline
-+++ b/Makefile.cmdline
-@@ -8,7 +8,8 @@ DUKTAPE_SOURCES = src/duktape.c
- CMDLINE_SOURCES = \
- 	examples/cmdline/duk_cmdline.c
- 
--CC = gcc
-+CC ?= gcc
-+CC := $(CC)
- CCOPTS = -Os -pedantic -std=c99 -Wall -fstrict-aliasing -fomit-frame-pointer
- CCOPTS += -I./examples/cmdline -I./src   # duktape.h and duk_config.h must be in include path
- CCLIBS = -lm
-@@ -40,7 +41,7 @@ CMDLINE_SOURCES += extras/module-duktape/duk_module_duktape.c
- # http://wiki.duktape.org/Configuring.html
- 
- duk: $(DUKTAPE_SOURCES) $(CMDLINE_SOURCES)
--	$(CC) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) $(CMDLINE_SOURCES) $(CCLIBS)
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) $(CMDLINE_SOURCES) $(CCLIBS)
- 
- linenoise/linenoise.c: linenoise
- linenoise:
-diff --git a/Makefile.codepage b/Makefile.codepage
-index f6ef1582..29fa6ffc 100644
---- a/Makefile.codepage
-+++ b/Makefile.codepage
-@@ -1,6 +1,7 @@
--CC = gcc
-+CC ?= gcc
-+CC := $(CC)
- 
- codepage:
--	$(CC) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \
- 		src/duktape.c examples/codepage-conv/duk_codepage_conv.c \
- 		examples/codepage-conv/test.c -lm
-diff --git a/Makefile.dukdebug b/Makefile.dukdebug
-index 9fafcc3f..aa289d2e 100644
---- a/Makefile.dukdebug
-+++ b/Makefile.dukdebug
-@@ -10,7 +10,8 @@ CMDLINE_SOURCES = \
- 	examples/cmdline/duk_cmdline.c \
- 	examples/debug-trans-socket/duk_trans_socket_unix.c
- 
--CC = gcc
-+CC ?= gcc
-+CC := $(CC)
- CCOPTS = -Os -pedantic -std=c99 -Wall -fstrict-aliasing -fomit-frame-pointer
- CCOPTS += -I./prep -I./examples/cmdline -I./examples/debug-trans-socket
- CCOPTS += -DDUK_CMDLINE_DEBUGGER_SUPPORT     # enable --debugger in ./duk
-@@ -38,4 +39,4 @@ duk: $(CMDLINE_SOURCES)
- 		-DDUK_USE_INTERRUPT_COUNTER \
- 		-DDUK_USE_DEBUGGER_DUMPHEAP \
- 		-DDUK_USE_DEBUGGER_INSPECT
--	$(CC) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) $(CMDLINE_SOURCES) $(CCLIBS)
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) $(CMDLINE_SOURCES) $(CCLIBS)
-diff --git a/Makefile.eval b/Makefile.eval
-index 530f74a8..ce831a69 100644
---- a/Makefile.eval
-+++ b/Makefile.eval
-@@ -2,8 +2,9 @@
- #  Example Makefile for building the eval example
- #
- 
--CC = gcc
-+CC ?= gcc
-+CC := $(CC)
- 
- eval:
--	$(CC) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \
- 		src/duktape.c examples/eval/eval.c -lm
-diff --git a/Makefile.eventloop b/Makefile.eventloop
-index 1a75587b..ab1b2f72 100644
---- a/Makefile.eventloop
-+++ b/Makefile.eventloop
-@@ -2,14 +2,15 @@
- #  Example Makefile for building the eventloop example
- #
- 
--CC = gcc
-+CC ?= gcc
-+CC := $(CC)
- 
- evloop:
- 	@echo "NOTE: The eventloop is an example intended to be used on Linux"
- 	@echo "      or other common UNIX variants.  It is not fully portable."
- 	@echo ""
- 
--	$(CC) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc \
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc \
- 		examples/eventloop/main.c \
- 		examples/eventloop/c_eventloop.c \
- 		examples/eventloop/poll.c \
-diff --git a/Makefile.hello b/Makefile.hello
-index c12b8e09..61269337 100644
---- a/Makefile.hello
-+++ b/Makefile.hello
-@@ -13,7 +13,8 @@ DUKTAPE_SOURCES = src/duktape.c
- # Compiler options are quite flexible.  GCC versions have a significant impact
- # on the size of -Os code, e.g. gcc-4.6 is much worse than gcc-4.5.
- 
--CC = gcc
-+CC ?= gcc
-+CC := $(CC)
- CCOPTS = -Os -pedantic -std=c99 -Wall -fstrict-aliasing -fomit-frame-pointer
- CCOPTS += -I./src  # for combined sources
- CCLIBS = -lm
-@@ -29,4 +30,4 @@ DEFINES =
- # For debugging, use -O0 -g -ggdb, and don't add -fomit-frame-pointer
- 
- hello: $(DUKTAPE_SOURCES) examples/hello/hello.c
--	$(CC) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) examples/hello/hello.c $(CCLIBS)
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $(DEFINES) $(CCOPTS) $(DUKTAPE_SOURCES) examples/hello/hello.c $(CCLIBS)
-diff --git a/Makefile.jsoncbor b/Makefile.jsoncbor
-index 30387a2f..8f234004 100644
---- a/Makefile.jsoncbor
-+++ b/Makefile.jsoncbor
-@@ -2,9 +2,10 @@
- #  Example Makefile for building the jsoncbor example
- #
- 
--CC = gcc
-+CC ?= gcc
-+CC := $(CC)
- 
- jsoncbor:
--	$(CC) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc -Iextras/cbor \
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc -Iextras/cbor \
- 		src/duktape.c extras/cbor/duk_cbor.c extras/cbor/jsoncbor.c \
- 		-lm
-diff --git a/Makefile.jxpretty b/Makefile.jxpretty
-index 7ab00cec..aa53aa8b 100644
---- a/Makefile.jxpretty
-+++ b/Makefile.jxpretty
-@@ -2,9 +2,10 @@
- #  Example Makefile for building the jxpretty example
- #
- 
--CC = gcc
-+CC ?= gcc
-+CC := $(CC)
- 
- jxpretty:
--	$(CC) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc \
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -Wall -Wextra -O2 -Isrc \
- 		src/duktape.c examples/jxpretty/jxpretty.c \
- 		-lm
-diff --git a/Makefile.sandbox b/Makefile.sandbox
-index 26bb5ffc..d1d69ce4 100644
---- a/Makefile.sandbox
-+++ b/Makefile.sandbox
-@@ -2,8 +2,9 @@
- #  Example Makefile for building the sandbox example
- #
- 
--CC = gcc
-+CC ?= gcc
-+CC := $(CC)
- 
- sandbox:
--	$(CC) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -std=c99 -O2 -Wall -Wextra -Isrc/ \
- 		src/duktape.c examples/sandbox/sandbox.c -lm
-diff --git a/Makefile.sharedlibrary b/Makefile.sharedlibrary
-index ace206a1..11620aa7 100644
---- a/Makefile.sharedlibrary
-+++ b/Makefile.sharedlibrary
-@@ -24,7 +24,9 @@
- # convention is to set soname version to (100*MAJOR + MINOR), e.g. 104 for
- # Duktape 1.4.x, so that it gets automatically bumped for major and minor
- # releases (potentially binary incompatible), but not for patch releases.
-+# The formatted version is used for the pkg-config file.
- DUK_VERSION = 20600
-+DUK_VERSION_FORMATTED = 2.6.0
- SONAME_VERSION = 206
- REAL_VERSION = $(SONAME_VERSION).$(DUK_VERSION)
- 
-@@ -45,44 +45,58 @@ else
- endif
- 
- # Change to actual path for actual distribution packaging.
--INSTALL_PREFIX = /usr/local
-+INSTALL_PREFIX ?= /usr/local
-+INSTALL_PREFIX := $(INSTALL_PREFIX)
-+DESTDIR ?=
-+DESTDIR := $(DESTDIR)
-+LIBDIR ?= /lib
-+LIBDIR := $(LIBDIR)
- 
- # The 'noline' variant may be more appropriate for some distributions; it
- # doesn't have #line directives in the combined source.
- DUKTAPE_SRCDIR = ./src
- #DUKTAPE_SRCDIR = ./src-noline
- 
--CC = gcc
-+CC ?= gcc
-+CC := $(CC)
- 
- .PHONY: all
--all: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX)
-+all: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX) duktape.pc
- 
- # If the default duk_config.h is not suitable for the distribution, modify it
- # before compiling the shared library and copy the same, edited duk_config.h
- # to $INSTALL_PREFIX/include on installation.
- 
- libduktape.$(SO_REALNAME_SUFFIX):
--	$(CC) -shared -fPIC -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktape.$(SO_SONAME_SUFFIX) \
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fPIC -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktape.$(SO_SONAME_SUFFIX) \
- 		-o $@ $(DUKTAPE_SRCDIR)/duktape.c
- 
- libduktaped.$(SO_REALNAME_SUFFIX):
--	$(CC) -shared -fPIC -g -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktaped.$(SO_SONAME_SUFFIX) \
-+	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fPIC -g -Wall -Wextra -Os -Wl,$(LD_SONAME_ARG),libduktaped.$(SO_SONAME_SUFFIX) \
- 		-o $@ $(DUKTAPE_SRCDIR)/duktape.c
- 
-+duktape.pc:
-+	sed -e "s|@PREFIX@|$(INSTALL_PREFIX)|" \
-+		-e "s|@LIBDIR@|$(LIBDIR)|" \
-+		-e "s|@VERSION@|$(DUK_VERSION_FORMATTED)|" \
-+		duktape.pc.in \
-+		> duktape.pc
-+
- # Symlinks depend on platform conventions.
- .PHONY: install
--install: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX)
--	mkdir -p $(INSTALL_PREFIX)/lib/
--	cp $+ $(INSTALL_PREFIX)/lib/
--	rm -f $(INSTALL_PREFIX)/lib/libduktape.so $(INSTALL_PREFIX)/lib/libduktape.$(SO_SONAME_SUFFIX)
--	ln -s libduktape.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktape.so
--	ln -s libduktape.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktape.$(SO_SONAME_SUFFIX)
--	rm -f $(INSTALL_PREFIX)/lib/libduktaped.so $(INSTALL_PREFIX)/lib/libduktaped.$(SO_SONAME_SUFFIX)
--	ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktaped.so
--	ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(INSTALL_PREFIX)/lib/libduktaped.$(SO_SONAME_SUFFIX)
--	mkdir -p $(INSTALL_PREFIX)/include/
--	cp $(DUKTAPE_SRCDIR)/duktape.h $(DUKTAPE_SRCDIR)/duk_config.h $(INSTALL_PREFIX)/include/
-+install: libduktape.$(SO_REALNAME_SUFFIX) libduktaped.$(SO_REALNAME_SUFFIX) duktape.pc
-+	mkdir -p $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/pkgconfig
-+	cp $+ $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/
-+	rm -f $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.so $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.$(SO_SONAME_SUFFIX)
-+	ln -s libduktape.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.so
-+	ln -s libduktape.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktape.$(SO_SONAME_SUFFIX)
-+	rm -f $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.so $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.$(SO_SONAME_SUFFIX)
-+	ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.so
-+	ln -s libduktaped.$(SO_REALNAME_SUFFIX) $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/libduktaped.$(SO_SONAME_SUFFIX)
-+	mv $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/duktape.pc $(DESTDIR)$(INSTALL_PREFIX)$(LIBDIR)/pkgconfig/
-+	mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/include/
-+	cp $(DUKTAPE_SRCDIR)/duktape.h $(DUKTAPE_SRCDIR)/duk_config.h $(DESTDIR)$(INSTALL_PREFIX)/include/
- 
- CCOPTS = -I./examples/cmdline
- duk:
--	$(CC) $(CCOPTS) -I$(INSTALL_PREFIX)/include -L$(INSTALL_PREFIX)/lib -Wall -Wextra -Os -o $@ ./examples/cmdline/duk_cmdline.c -lduktape -lm
-+	$(CC) $(CCOPTS) -I$(INSTALL_PREFIX)/include -L$(INSTALL_PREFIX)$(LIBDIR) -Wall -Wextra -Os -o $@ ./examples/cmdline/duk_cmdline.c -lduktape -lm
-diff --git a/duktape.pc.in b/duktape.pc.in
-new file mode 100644
-index 00000000..0985c67e
---- /dev/null
-+++ b/duktape.pc.in
-@@ -0,0 +1,10 @@
-+prefix=@PREFIX@
-+exec_prefix=${prefix}
-+libdir=${prefix}@LIBDIR@
-+includedir=${prefix}/include
-+
-+Name: duktape
-+Description: Embeddable Javascript engine
-+Version: @VERSION@
-+Libs: -L${libdir} -lduktape
-+Cflags: -I${includedir}
diff --git a/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb b/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb
index aa08216..3f00621 100644
--- a/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb
@@ -7,7 +7,7 @@
 HOMEPAGE = "http://www.gnu.org/software/enscript/"
 SECTION = "console/utils"
 
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
 
 SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.14.bb b/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.14.bb
deleted file mode 100644
index ba436c2..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.14.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-SUMMARY = "haveged - A simple entropy daemon"
-DESCRIPTION = "The haveged project is an attempt to provide an easy-to-use, unpredictable random number generator based upon an adaptation of the HAVEGE algorithm. Haveged was created to remedy low-entropy conditions in the Linux random device that can occur under some workloads, especially on headless servers."
-AUTHOR = "Gary Wuertz"
-HOMEPAGE = "http://www.issihosts.com/haveged/index.html"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM="file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-# v1.9.14
-SRCREV = "4da3080ad4587860e5da73072d6ed54d0052938c"
-SRC_URI = "git://github.com/jirka-h/haveged.git;branch=master;protocol=https \
-"
-S = "${WORKDIR}/git"
-
-UPSTREAM_CHECK_URI = "https://github.com/jirka-h/haveged/releases"
-
-inherit autotools update-rc.d systemd
-
-EXTRA_OECONF = "\
-    --enable-nistest=yes \
-    --enable-olt=yes \
-    --enable-threads=no \
-"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[systemd] = "--enable-init=service.fedora --enable-initdir=${systemd_system_unitdir}, --enable-init=sysv.redhat, systemd"
-
-INITSCRIPT_PACKAGES = "${PN}"
-INITSCRIPT_NAME = "haveged"
-INITSCRIPT_PARAMS:${PN} = "defaults 9"
-
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE:${PN} = "haveged.service"
-
-do_install:append() {
-    # The exit status is 143 when the service is stopped
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        sed -i '/ExecStart/a SuccessExitStatus=143' ${D}${systemd_system_unitdir}/haveged.service
-        # Hybrid systemd-sysvinit distros must install the initscript manually
-        if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-            install -d ${D}${INIT_D_DIR}
-            sed -e "s,@SBINDIR@,${sbindir},g" <${S}/init.d/sysv.redhat >${D}${INIT_D_DIR}/haveged
-            chmod 755 ${D}${INIT_D_DIR}/haveged
-        fi
-    fi
-}
-
-MIPS_INSTRUCTION_SET = "mips"
diff --git a/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.17.bb b/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.17.bb
new file mode 100644
index 0000000..25007c7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.17.bb
@@ -0,0 +1,26 @@
+SUMMARY = "haveged - A simple entropy daemon"
+DESCRIPTION = "The haveged project is an attempt to provide an easy-to-use, unpredictable random number generator based upon an adaptation of the HAVEGE algorithm. Haveged was created to remedy low-entropy conditions in the Linux random device that can occur under some workloads, especially on headless servers."
+
+AUTHOR = "Gary Wuertz"
+HOMEPAGE = "https://www.issihosts.com/haveged/index.html"
+
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM="file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+# v1.9.17
+SRCREV = "1ff76272aba9803501e6f473dd5083f0e09289ac"
+SRC_URI = "git://github.com/jirka-h/haveged.git;branch=master;protocol=https \
+"
+S = "${WORKDIR}/git"
+
+UPSTREAM_CHECK_URI = "https://github.com/jirka-h/haveged/releases"
+
+inherit autotools
+
+EXTRA_OECONF = "\
+    --enable-nistest=yes \
+    --enable-olt=yes \
+    --enable-threads=no \
+"
+
+MIPS_INSTRUCTION_SET = "mips"
diff --git a/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.5.bb b/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.5.bb
index 6583923..e996593 100644
--- a/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/hexedit/hexedit_1.5.bb
@@ -1,7 +1,7 @@
 SUMMARY = "view and edit files in hexadecimal or in ASCII"
 HOMEPAGE = "http://rigaux.org/hexedit.html"
 SECTION = "console/utils"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 DEPENDS = "ncurses"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
diff --git a/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb b/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb
index 0f31428..ac845ff 100644
--- a/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb
@@ -1,5 +1,5 @@
 SUMMARY = "HP Linux Imaging and Printing"
-LICENSE="GPLv2"
+LICENSE="GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=20f2c819499cc2063e9a7b07b408815c"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.9.0.bb b/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.9.0.bb
index e8e1576..dac025d 100644
--- a/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.9.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_2.9.0.bb
@@ -1,5 +1,5 @@
 DESCRIPTION = "Ice Window Manager (IceWM)"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4a26952467ef79a7efca4a9cf52d417b"
 
 SRC_URI = "https://github.com/ice-wm/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.lz \
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 80f599b..1a7d61a 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
@@ -7,7 +7,7 @@
 incorrect C syntax. \
 Install the indent package if you are developing applications in C and \
 you want a program to format your code."
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 DEPENDS = "virtual/gettext"
diff --git a/meta-openembedded/meta-oe/recipes-extended/inputattach-config/inputattach-config.bb b/meta-openembedded/meta-oe/recipes-extended/inputattach-config/inputattach-config.bb
index 3933355..84ed3b0 100644
--- a/meta-openembedded/meta-oe/recipes-extended/inputattach-config/inputattach-config.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/inputattach-config/inputattach-config.bb
@@ -1,5 +1,5 @@
 SUMMARY = "inputattach configuration file"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
 
 SRC_URI = "file://inputattach.conf"
diff --git a/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_1.21.bb b/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_1.21.bb
index fd4e31f..8eebd69 100644
--- a/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_1.21.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_1.21.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A top utility for I/O"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=48e7be78bd2671d08c9c3bad71f1cfaa"
 
 DEPENDS = "ncurses"
diff --git a/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb b/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb
index b0042b6..4f8ea64 100644
--- a/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb
@@ -4,7 +4,7 @@
 DEPENDS = "popt python3 openssl curl popt-native"
 RDEPENDS:${BPN} = "openssl curl"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 
 SRC_URI = "git://github.com/rhinstaller/isomd5sum.git;branch=master;protocol=https \
diff --git a/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb b/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb
index caa1395..d003279 100644
--- a/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A handy serial sniffer"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
 
 PV = "2.3.6+git${SRCPV}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.26.bb b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.26.bb
index b9c3bbb..3e6df56 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.26.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.26.bb
@@ -3,7 +3,7 @@
 LVM, Btrfs, MD RAID, Swap,...) is implemented in a separate plugin, possibly \
 with multiple implementations (e.g. using LVM CLI or the new LVM DBus API)."
 HOMEPAGE = "http://rhinstaller.github.io/libblockdev/"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 SECTION = "devel/lib"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c07cb499d259452f324bb90c3067d85c"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_6.0.2.bb b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_6.0.2.bb
index 2036c53..cd58689 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_6.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_6.0.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "USB CEC Adaptor communication Library"
 HOMEPAGE = "http://libcec.pulse-eight.com/"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b3a719e97f49e4841e90573f9b1a98ac"
 
 DEPENDS = "p8platform udev ncurses swig-native python3"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.3.bb b/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.3.bb
index 2369f03..6382569 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.3.bb
@@ -4,7 +4,7 @@
 BUGTRACKER = "https://github.com/hyperrealm/libconfig/issues"
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=fad9b3332be894bab9bc501572864b29"
 
 SRC_URI = "https://hyperrealm.github.io/libconfig/dist/libconfig-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb b/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb
index 7ca2a5f..2f67b12 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Libdivecomputer is a cross-platform and open source library for communication with dive computers from various manufacturers."
 HOMEPAGE = "http://www.divesoftware.org/libdc/"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
 
 DEPENDS = "libusb1"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb b/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb
index 8a2886b..80ab730 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb
@@ -19,7 +19,7 @@
 SRC_URI[md5sum] = "4bb1fa63d00eb224439d413591c29a6a"
 SRC_URI[sha256sum] = "75e20d1744139644f9951b78ea3910b162d3380302315cb4b3d0640f23694c79"
 
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "\
 file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.36.bb b/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.36.bb
index addc57e..0dea4af 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.36.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.36.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group."
 HOMEPAGE = "http://www.gnu.org/software/libidn/"
 SECTION = "libs"
-LICENSE = "(LGPLv2.1+ | LGPLv3) & GPLv3+"
+LICENSE = "(LGPL-2.1-or-later | LGPL-3.0-only) & GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=df4be47940a91ee69556f5f71eed4aec \
                     file://COPYING.LESSERv2;md5=4fbd65380cdd255951079008b364516c \
                     file://COPYING.LESSERv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
@@ -27,8 +27,8 @@
 PACKAGES =+ "idn"
 FILES:idn = "${bindir}/*"
 
-LICENSE:${PN} = "LGPLv2.1+ | LGPLv3"
-LICENSE:idn = "GPLv3+"
+LICENSE:${PN} = "LGPL-2.1-or-later | LGPL-3.0-only"
+LICENSE:idn = "GPL-3.0-or-later"
 
 EXTRA_OECONF = "--disable-csharp"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.2.0.bb b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.2.0.bb
index a7d2922..db4f507 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.2.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A library to handle Apple Property List format whereas it's binary or XML"
 HOMEPAGE = "https://github.com/libimobiledevice/libplist"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07 \
                     file://COPYING.LESSER;md5=6ab17b41640564434dda85c06b7124f7"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libusbmuxd_2.0.2.bb b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libusbmuxd_2.0.2.bb
index 171e555..a586f49 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libusbmuxd_2.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libusbmuxd_2.0.2.bb
@@ -1,5 +1,5 @@
 DESCRIPTION = "This daemon is in charge of multiplexing connections over USB to an iPhone or iPod touch."
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6ab17b41640564434dda85c06b7124f7"
 
 DEPENDS = "udev libusb1 libplist"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libleak/libleak_git.bb b/meta-openembedded/meta-oe/recipes-extended/libleak/libleak_git.bb
index 60aa07b..a83a11c 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libleak/libleak_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libleak/libleak_git.bb
@@ -3,7 +3,7 @@
 
 SUMMARY = "libleak detects memory leak by hooking memory functions (e.g. malloc) by LD_PRELOAD"
 HOMEPAGE = "https://github.com/WuBingzheng/libleak"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://README.md;beginline=18;endline=21;md5=de4f705f12cdedbe452b2c3524572b03"
 
 DEPENDS += "libbacktrace"
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb b/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb
index bbfee1f..1d650ac 100644
--- a/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "liblightmodbus is a very lightweight, highly configurable, \
 	       platform-independent Modbus RTU library."
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=84dcc94da3adb52b53ae4fa38fe49e5d"
 
 inherit cmake pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb
index 880770f..bac3a2c 100644
--- a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb
@@ -1,7 +1,7 @@
 SUMMARY = "File locking library"
 HOMEPAGE = "http://packages.qa.debian.org/libl/liblockfile.html"
 SECTION = "libs"
-LICENSE = "LGPLv2+ & GPLv2+"
+LICENSE = "LGPL-2.0-or-later & GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=f4ba6ad04fcb05cc30a4cfa5062c55a3"
 
 SRC_URI = "${DEBIAN_MIRROR}/main/libl/liblockfile/liblockfile_1.14.orig.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblognorm/liblognorm.inc b/meta-openembedded/meta-oe/recipes-extended/liblognorm/liblognorm.inc
index dc8abb9..5a6cda6 100644
--- a/meta-openembedded/meta-oe/recipes-extended/liblognorm/liblognorm.inc
+++ b/meta-openembedded/meta-oe/recipes-extended/liblognorm/liblognorm.inc
@@ -4,7 +4,7 @@
 HOMEPAGE = "http://www.liblognorm.com"
 SECTION = "base"
 
-LICENSE = "LGPL-2.1+"
+LICENSE = "LGPL-2.1-or-later"
 
 SRC_URI = "http://www.liblognorm.com/files/download/${BPN}-${PV}.tar.gz\
 "
diff --git a/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc
index b502177..0857cc4 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc
+++ b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc
@@ -5,7 +5,7 @@
 HOMEPAGE = "http://www.libmodbus.org/"
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c"
 
 SRC_URI = "http://libmodbus.org/releases/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.4.bb b/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.4.bb
index ec427a9..f892cc6 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.4.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.4.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Library for password quality checking and generating random passwords"
 HOMEPAGE = "https://github.com/libpwquality/libpwquality"
 SECTION = "devel/lib"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bd2f1386df813a459a0c34fde676fc2"
 
 SRCNAME = "libpwquality"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_2.0.4.bb b/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_2.0.6.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-extended/libqb/libqb_2.0.4.bb
rename to meta-openembedded/meta-oe/recipes-extended/libqb/libqb_2.0.6.bb
index 48a7d08..ce3606d 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_2.0.4.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_2.0.6.bb
@@ -4,12 +4,12 @@
 
 HOMEPAGE = "https://github.com/clusterlabs/libqb/wiki"
 SECTION = "libs"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=321bf41f280cf805086dd5a720b37785"
 
 inherit autotools pkgconfig
 
-SRCREV = "a2691b96188033b5ad5c08871982048ae1f4f4e8"
+SRCREV = "758044bed5f615c90818aa5431d00303288888e5"
 SRC_URI = "git://github.com/ClusterLabs/${BPN}.git;branch=main;protocol=https \
           "
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.10.0.bb b/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.10.0.bb
index 631860a..d917a32 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.10.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.10.0.bb
@@ -2,7 +2,7 @@
 to different bug targets like Bugzilla, ftp, trac, etc..."
 SUMMARY = "Generic library for reporting various problems"
 HOMEPAGE = "https://abrt.readthedocs.org/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 DEPENDS = "xmlrpc-c xmlrpc-c-native intltool-native \
         json-c libtar libnewt libproxy rpm \
         augeas satyr systemd \
diff --git a/meta-openembedded/meta-oe/recipes-extended/libserialport/libserialport_0.1.1.bb b/meta-openembedded/meta-oe/recipes-extended/libserialport/libserialport_0.1.1.bb
index 192d4bc..4190338 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libserialport/libserialport_0.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libserialport/libserialport_0.1.1.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "libserialport is a minimal, cross-platform shared library written in C that is intended to take care of the OS-specific details when writing software that uses serial ports."
 HOMEPAGE = "https://sigrok.org/wiki/Libserialport"
 
-LICENSE = "LGPL-3.0+"
+LICENSE = "LGPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
 
 inherit autotools
diff --git a/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.1.bb b/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.1.bb
index 61f159c..7498a57 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.1.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Utilities to collect and visualise system statistics"
 HOMEPAGE = "http://www.i-scream.org/libstatgrab/"
 
-LICENSE = "GPL-2.0+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "ncurses"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libuio/libuio_0.2.1.bb b/meta-openembedded/meta-oe/recipes-extended/libuio/libuio_0.2.1.bb
index c93c8b0..e22b25a 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libuio/libuio_0.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libuio/libuio_0.2.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Libuio - helper library for UIO subsystem"
 SECTION = "base"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
 
 SRC_URI = "git://git.code.sf.net/p/libuio/code;branch=master \
diff --git a/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb b/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
index 792d696..955dd51 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://wvware.sourceforge.net/libwmf.html"
 SECTION = "libs"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 PR = "r3"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libyang/libyang/libyang-add-stdint-h.patch b/meta-openembedded/meta-oe/recipes-extended/libyang/libyang/libyang-add-stdint-h.patch
new file mode 100644
index 0000000..d357411
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libyang/libyang/libyang-add-stdint-h.patch
@@ -0,0 +1,35 @@
+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.
+
+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: Submitted [ https://github.com/CESNET/libyang/pull/1819 ]
+
+Signed-off-by: Tony Tascioglu <tony.tascioglu@windriver.com>
+Signed-off-by: Randy MacLeod <randy.macleod@windriver.com>
+---
+ tests/utests/utests.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tests/utests/utests.h b/tests/utests/utests.h
+index 7e85a66e..8eee26ce 100644
+--- a/tests/utests/utests.h
++++ b/tests/utests/utests.h
+@@ -22,6 +22,7 @@
+ #include <stdarg.h>
+ #include <stddef.h>
+ #include <stdlib.h>
++#include <stdint.h>
+ 
+ #include <cmocka.h>
+ 
+-- 
+2.32.0
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
deleted file mode 100644
index e3b2d0e..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libyang/libyang/libyang-skip-pcre2-config-add-stdint-h.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-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_2.0.7.bb b/meta-openembedded/meta-oe/recipes-extended/libyang/libyang_2.0.164.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-extended/libyang/libyang_2.0.7.bb
rename to meta-openembedded/meta-oe/recipes-extended/libyang/libyang_2.0.164.bb
index 2f5e461..8f41769 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libyang/libyang_2.0.7.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libyang/libyang_2.0.164.bb
@@ -6,15 +6,16 @@
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f3916d7d8d42a6508d0ea418cfff10ad"
 
-SRCREV = "69d9fff65abb58beb0bb6aa9ecacd572ca1dfc56"
+SRCREV = "a0cc89516ab5eca84d01c85309f320a94752a64c"
 
 SRC_URI = "git://github.com/CESNET/libyang.git;branch=master;protocol=https \
-           file://libyang-skip-pcre2-config-add-stdint-h.patch \
+           file://libyang-add-stdint-h.patch \
            file://run-ptest \
            "
 
 S = "${WORKDIR}/git"
 
+# Due to valgrind not supported on these arches:
 COMPATIBLE_HOST:riscv32 = "null"
 COMPATIBLE_HOST:armv5 = "null"
 COMPATIBLE_HOST:riscv64 = "null"
@@ -29,7 +30,7 @@
 RDEPENDS:${PN}-ptest += "valgrind"
 
 EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release"
-EXTRA_OECMAKE += " ${@bb.utils.contains('PTEST_ENABLED', '1', '-DENABLE_BUILD_TESTS=ON', '', d)}"
+EXTRA_OECMAKE += " ${@bb.utils.contains('PTEST_ENABLED', '1', '-DENABLE_TESTS=ON', '', d)}"
 
 do_install_ptest () {
     cp -fR ${B}/tests/ ${D}${PTEST_PATH}/
diff --git a/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole_1.7.0.bb b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole_1.7.0.bb
index 504176d..b706f63 100644
--- a/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole_1.7.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/linuxconsole/linuxconsole_1.7.0.bb
@@ -5,7 +5,7 @@
 the input event layer."
 HOMEPAGE = "https://sourceforge.net/projects/linuxconsole"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.19.bb b/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.19.bb
index df88afa..d7ba6e1 100644
--- a/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.19.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.19.bb
@@ -4,7 +4,7 @@
 safely (via liblockfile)."
 HOMEPAGE = "http://packages.qa.debian.org/l/lockfile-progs.html"
 SECTION = "Applications/System"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
 DEPENDS = "liblockfile"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/lprng/lprng_3.8.C.bb b/meta-openembedded/meta-oe/recipes-extended/lprng/lprng_3.8.C.bb
index 53d4f46..73e4eac 100644
--- a/meta-openembedded/meta-oe/recipes-extended/lprng/lprng_3.8.C.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/lprng/lprng_3.8.C.bb
@@ -1,6 +1,6 @@
 SUMMARY = "An Enhanced Printer Spooler"
 SECTION = "console/utils"
-LICENSE = "GPLv2 | Artistic-1.0"
+LICENSE = "GPL-2.0-only | Artistic-1.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c6570d8d699af1883db9d0e733ac9bfb"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_git.bb b/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_git.bb
index cc31323..3cbe785 100644
--- a/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_git.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "md5deep is a set of programs to compute MD5, SHA-1, SHA-256, Tiger, or Whirlpool message digests on an arbitrary number of files. This package also includes hashdeep which is also able to audit hashsets."
 AUTHOR = "Jesse Kornblum, Simson L. Garfinkel"
 HOMEPAGE = "http://md5deep.sourceforge.net"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9190f660105b9a56cdb272309bfd5491"
 
 PV = "4.4+git${SRCPV}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb b/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
index 24271eb..df43d25 100644
--- a/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Set of CLI tools for Openlmi providers"
 DESCRIPTION = "openlmi-tools is a set of command line tools for Openlmi providers."
 HOMEPAGE = "http://www.openlmi.org/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://../COPYING;md5=75859989545e37968a99b631ef42722e"
 SECTION = "System/Management"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.6.bb b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.6.bb
index d2d5dc0..cf149ae 100644
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.6.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2021.6.bb
@@ -4,7 +4,7 @@
 bootable filesystem trees, along with a layer for deploying them and managing \
 the bootloader configuration."
 HOMEPAGE = "https://ostree.readthedocs.io"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb b/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb
index a5e9539..0492311 100644
--- a/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb
@@ -1,6 +1,6 @@
 SUMMARY = "7-zip is a commandline utility handling 7z archives."
 HOMEPAGE = "http://www.7-zip.org/"
-LICENSE = "LGPL-2.1+ & unRAR"
+LICENSE = "LGPL-2.1-or-later & unRAR"
 LIC_FILES_CHKSUM = "file://DOC/copying.txt;md5=4fbd65380cdd255951079008b364516c \
                     file://DOC/unRarLicense.txt;md5=9c87ddde469ef94aed153b0951d088de \
                     file://DOC/License.txt;md5=879598edf1f54dddb6930d7581357f8b"
diff --git a/meta-openembedded/meta-oe/recipes-extended/p8platform/p8platform_git.bb b/meta-openembedded/meta-oe/recipes-extended/p8platform/p8platform_git.bb
index eca7d87..8a06990 100644
--- a/meta-openembedded/meta-oe/recipes-extended/p8platform/p8platform_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/p8platform/p8platform_git.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Platform support library used by libCEC and binary add-ons for Kodi"
 HOMEPAGE = "http://libcec.pulse-eight.com/"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://src/os.h;md5=752555fa94e82005d45fd201fee5bd33"
 
 PV = "2.1.0.1"
diff --git a/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb b/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb
index dc7b849..7dd48b3 100644
--- a/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb
@@ -1,7 +1,7 @@
 SUMMARY = "PAM cached credentials module"
 HOMEPAGE = "https://www.padl.com/OSS/pam_ccreds.html"
 SECTION = "libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "libpam openssl db"
diff --git a/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb b/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb
index 2db8b18..f7cf4a0 100644
--- a/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "A PAM module which permits authentication via ssh-agent."
 HOMEPAGE = "http://sourceforge.net/projects/pamsshagentauth/"
 SECTION = "libs"
-LICENSE = "openssl & BSD"
+LICENSE = "OpenSSL & BSD"
 LIC_FILES_CHKSUM = "file://LICENSE.OpenSSL;md5=8ab01146141ded59b75f8ba7811ed05a \
                     file://OPENSSH_LICENSE;md5=7ae09218173be1643c998a4b71027f9b \
 "
diff --git a/meta-openembedded/meta-oe/recipes-extended/perl/libfile-fnmatch-perl_0.02.bb b/meta-openembedded/meta-oe/recipes-extended/perl/libfile-fnmatch-perl_0.02.bb
index 035fe9f..7768d17 100644
--- a/meta-openembedded/meta-oe/recipes-extended/perl/libfile-fnmatch-perl_0.02.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/perl/libfile-fnmatch-perl_0.02.bb
@@ -6,7 +6,7 @@
 
 HOMEPAGE = "http://search.cpan.org/dist/File-FnMatch/"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 LIC_FILES_CHKSUM = "file://README;beginline=34;endline=37;md5=54fdfac62963b7cece5583ab38f2cf0d"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk/0001-use-daxctl-libdaxctl.h-instead-of-ndctl-libdaxctl.h.patch b/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk/0001-use-daxctl-libdaxctl.h-instead-of-ndctl-libdaxctl.h.patch
new file mode 100644
index 0000000..0b03ffd
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk/0001-use-daxctl-libdaxctl.h-instead-of-ndctl-libdaxctl.h.patch
@@ -0,0 +1,69 @@
+From 932252c0ba54a51c8bcf58b747656e29cdebfa6a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 26 Mar 2022 13:06:50 -0700
+Subject: [PATCH] use daxctl/libdaxctl.h instead of ndctl/libdaxctl.h
+
+Upstream-Status: Submitted [https://github.com/pmem/pmdk/pull/5413]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libpmem2/badblocks_ndctl.c        | 2 +-
+ src/libpmem2/region_namespace_ndctl.c | 2 +-
+ src/libpmem2/usc_ndctl.c              | 2 +-
+ src/tools/daxio/daxio.c               | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/libpmem2/badblocks_ndctl.c b/src/libpmem2/badblocks_ndctl.c
+index 9a5910bba..cc637f7f4 100644
+--- a/src/libpmem2/badblocks_ndctl.c
++++ b/src/libpmem2/badblocks_ndctl.c
+@@ -16,7 +16,7 @@
+ #include <sys/sysmacros.h>
+ #include <fcntl.h>
+ #include <ndctl/libndctl.h>
+-#include <ndctl/libdaxctl.h>
++#include <daxctl/libdaxctl.h>
+ 
+ #include "libpmem2.h"
+ #include "pmem2_utils.h"
+diff --git a/src/libpmem2/region_namespace_ndctl.c b/src/libpmem2/region_namespace_ndctl.c
+index 1383796a9..e31185984 100644
+--- a/src/libpmem2/region_namespace_ndctl.c
++++ b/src/libpmem2/region_namespace_ndctl.c
+@@ -6,7 +6,7 @@
+  */
+ 
+ #include <ndctl/libndctl.h>
+-#include <ndctl/libdaxctl.h>
++#include <daxctl/libdaxctl.h>
+ #include <sys/sysmacros.h>
+ #include <fcntl.h>
+ 
+diff --git a/src/libpmem2/usc_ndctl.c b/src/libpmem2/usc_ndctl.c
+index be63e879b..c58032a83 100644
+--- a/src/libpmem2/usc_ndctl.c
++++ b/src/libpmem2/usc_ndctl.c
+@@ -5,7 +5,7 @@
+  * usc_ndctl.c -- pmem2 usc function for platforms using ndctl
+  */
+ #include <ndctl/libndctl.h>
+-#include <ndctl/libdaxctl.h>
++#include <daxctl/libdaxctl.h>
+ #include <sys/types.h>
+ #include <sys/sysmacros.h>
+ #include <fcntl.h>
+diff --git a/src/tools/daxio/daxio.c b/src/tools/daxio/daxio.c
+index 66cd0b7ae..7f2c89d48 100644
+--- a/src/tools/daxio/daxio.c
++++ b/src/tools/daxio/daxio.c
+@@ -21,7 +21,7 @@
+ #include <string.h>
+ 
+ #include <ndctl/libndctl.h>
+-#include <ndctl/libdaxctl.h>
++#include <daxctl/libdaxctl.h>
+ #include <libpmem.h>
+ 
+ #include "util.h"
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.11.1.bb b/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.11.1.bb
index 4354c83..33d0409 100644
--- a/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.11.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.11.1.bb
@@ -11,7 +11,8 @@
 
 S = "${WORKDIR}/git"
 
-SRC_URI = "git://github.com/pmem/pmdk.git;branch=stable-1.11;protocol=https"
+SRC_URI = "git://github.com/pmem/pmdk.git;branch=stable-1.11;protocol=https \
+           file://0001-use-daxctl-libdaxctl.h-instead-of-ndctl-libdaxctl.h.patch"
 SRCREV = "5b21904a257eff47f2e87fcbf2de46111f03ddd8"
 
 inherit autotools-brokensep pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-pkexec-local-privilege-escalation-CVE-2021-4034.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-pkexec-local-privilege-escalation-CVE-2021-4034.patch
new file mode 100644
index 0000000..c725c00
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-pkexec-local-privilege-escalation-CVE-2021-4034.patch
@@ -0,0 +1,84 @@
+From 85c2dd9275cdfb369f613089f22733c0f1ba2aec Mon Sep 17 00:00:00 2001
+From: Jan Rybar <jrybar@redhat.com>
+Date: Tue, 25 Jan 2022 17:21:46 +0000
+Subject: [PATCH 1/3] pkexec: local privilege escalation (CVE-2021-4034)
+
+Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
+
+---
+ src/programs/pkcheck.c |  5 +++++
+ src/programs/pkexec.c  | 23 ++++++++++++++++++++---
+ 2 files changed, 25 insertions(+), 3 deletions(-)
+
+CVE: CVE-2021-4034
+Upstream-Status: Backport [a2bf5c9c83b6ae46cbd5c779d3055bff81ded683]
+
+diff --git a/src/programs/pkcheck.c b/src/programs/pkcheck.c
+index f1bb4e1..768525c 100644
+--- a/src/programs/pkcheck.c
++++ b/src/programs/pkcheck.c
+@@ -363,6 +363,11 @@ main (int argc, char *argv[])
+   local_agent_handle = NULL;
+   ret = 126;
+ 
++  if (argc < 1)
++    {
++      exit(126);
++    }
++
+   /* Disable remote file access from GIO. */
+   setenv ("GIO_USE_VFS", "local", 1);
+ 
+diff --git a/src/programs/pkexec.c b/src/programs/pkexec.c
+index 7698c5c..84e5ef6 100644
+--- a/src/programs/pkexec.c
++++ b/src/programs/pkexec.c
+@@ -488,6 +488,15 @@ main (int argc, char *argv[])
+   pid_t pid_of_caller;
+   gpointer local_agent_handle;
+ 
++
++  /*
++   * If 'pkexec' is called THIS wrong, someone's probably evil-doing. Don't be nice, just bail out.
++   */
++  if (argc<1)
++    {
++      exit(127);
++    }
++
+   ret = 127;
+   authority = NULL;
+   subject = NULL;
+@@ -614,10 +623,10 @@ main (int argc, char *argv[])
+ 
+       path = g_strdup (pwstruct.pw_shell);
+       if (!path)
+-	{
++        {
+           g_printerr ("No shell configured or error retrieving pw_shell\n");
+           goto out;
+-	}
++        }
+       /* If you change this, be sure to change the if (!command_line)
+ 	 case below too */
+       command_line = g_strdup (path);
+@@ -636,7 +645,15 @@ main (int argc, char *argv[])
+           goto out;
+         }
+       g_free (path);
+-      argv[n] = path = s;
++      path = s;
++
++      /* argc<2 and pkexec runs just shell, argv is guaranteed to be null-terminated.
++       * /-less shell shouldn't happen, but let's be defensive and don't write to null-termination
++       */
++      if (argv[n] != NULL)
++      {
++        argv[n] = path;
++      }
+     }
+   if (access (path, F_OK) != 0)
+     {
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0002-CVE-2021-4115-GHSL-2021-077-fix.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0002-CVE-2021-4115-GHSL-2021-077-fix.patch
new file mode 100644
index 0000000..fcad872
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0002-CVE-2021-4115-GHSL-2021-077-fix.patch
@@ -0,0 +1,88 @@
+From c86aea01a06ad4d6c428137e9cfe2f74b1ae7f01 Mon Sep 17 00:00:00 2001
+From: Jan Rybar <jrybar@redhat.com>
+Date: Mon, 21 Feb 2022 08:29:05 +0000
+Subject: [PATCH 2/3] CVE-2021-4115 (GHSL-2021-077) fix
+
+Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
+
+---
+ src/polkit/polkitsystembusname.c | 38 ++++++++++++++++++++++++++++----
+ 1 file changed, 34 insertions(+), 4 deletions(-)
+
+CVE: CVE-2021-4115
+Upstream-Status: Backport [41cb093f554da8772362654a128a84dd8a5542a7]
+
+diff --git a/src/polkit/polkitsystembusname.c b/src/polkit/polkitsystembusname.c
+index 8ed1363..2fbf5f1 100644
+--- a/src/polkit/polkitsystembusname.c
++++ b/src/polkit/polkitsystembusname.c
+@@ -62,6 +62,10 @@ enum
+   PROP_NAME,
+ };
+ 
++
++guint8 dbus_call_respond_fails;      // has to be global because of callback
++
++
+ static void subject_iface_init (PolkitSubjectIface *subject_iface);
+ 
+ G_DEFINE_TYPE_WITH_CODE (PolkitSystemBusName, polkit_system_bus_name, G_TYPE_OBJECT,
+@@ -364,6 +368,7 @@ on_retrieved_unix_uid_pid (GObject              *src,
+   if (!v)
+     {
+       data->caught_error = TRUE;
++      dbus_call_respond_fails += 1;
+     }
+   else
+     {
+@@ -405,6 +410,8 @@ polkit_system_bus_name_get_creds_sync (PolkitSystemBusName           *system_bus
+   tmp_context = g_main_context_new ();
+   g_main_context_push_thread_default (tmp_context);
+ 
++  dbus_call_respond_fails = 0;
++
+   /* Do two async calls as it's basically as fast as one sync call.
+    */
+   g_dbus_connection_call (connection,
+@@ -432,11 +439,34 @@ polkit_system_bus_name_get_creds_sync (PolkitSystemBusName           *system_bus
+ 			  on_retrieved_unix_uid_pid,
+ 			  &data);
+ 
+-  while (!((data.retrieved_uid && data.retrieved_pid) || data.caught_error))
+-    g_main_context_iteration (tmp_context, TRUE);
++  while (TRUE)
++  {
++    /* If one dbus call returns error, we must wait until the other call
++     * calls _call_finish(), otherwise fd leak is possible.
++     * Resolves: GHSL-2021-077
++    */
+ 
+-  if (data.caught_error)
+-    goto out;
++    if ( (dbus_call_respond_fails > 1) )
++    {
++      // we got two faults, we can leave
++      goto out;
++    }
++
++    if ((data.caught_error && (data.retrieved_pid || data.retrieved_uid)))
++    {
++      // we got one fault and the other call finally finished, we can leave
++      goto out;
++    }
++
++    if ( !(data.retrieved_uid && data.retrieved_pid) )
++    {
++      g_main_context_iteration (tmp_context, TRUE);
++    }
++    else
++    {
++      break;
++    }
++  }
+ 
+   if (out_uid)
+     *out_uid = data.uid;
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0002-jsauthority-port-to-mozjs-91.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0002-jsauthority-port-to-mozjs-91.patch
deleted file mode 100644
index 5b3660d..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0002-jsauthority-port-to-mozjs-91.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 4ce27b66bb07b72cb96d3d43a75108a5a6e7e156 Mon Sep 17 00:00:00 2001
-From: Xi Ruoyao <xry111@mengyan1223.wang>
-Date: Tue, 10 Aug 2021 19:09:42 +0800
-Subject: [PATCH] jsauthority: port to mozjs-91
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/polkit/polkit/-/merge_requests/92]
-Signed-off-by: Alexander Kanavin <alex@linutronix.de>
----
- configure.ac | 2 +-
- meson.build  | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index d807086..5a7fc11 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -80,7 +80,7 @@ PKG_CHECK_MODULES(GLIB, [gmodule-2.0 gio-unix-2.0 >= 2.30.0])
- AC_SUBST(GLIB_CFLAGS)
- AC_SUBST(GLIB_LIBS)
- 
--PKG_CHECK_MODULES(LIBJS, [mozjs-78])
-+PKG_CHECK_MODULES(LIBJS, [mozjs-91])
- 
- AC_SUBST(LIBJS_CFLAGS)
- AC_SUBST(LIBJS_CXXFLAGS)
-diff --git a/meson.build b/meson.build
-index b3702be..733bbff 100644
---- a/meson.build
-+++ b/meson.build
-@@ -126,7 +126,7 @@ expat_dep = dependency('expat')
- assert(cc.has_header('expat.h', dependencies: expat_dep), 'Can\'t find expat.h. Please install expat.')
- assert(cc.has_function('XML_ParserCreate', dependencies: expat_dep), 'Can\'t find expat library. Please install expat.')
- 
--mozjs_dep = dependency('mozjs-78')
-+mozjs_dep = dependency('mozjs-91')
- 
- dbus_dep = dependency('dbus-1')
- dbus_confdir = dbus_dep.get_pkgconfig_variable('datadir', define_variable: ['datadir', pk_prefix / pk_datadir])   #changed from sysconfdir with respect to commit#8eada3836465838
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-Added-support-for-duktape-as-JS-engine.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-Added-support-for-duktape-as-JS-engine.patch
new file mode 100644
index 0000000..e44e4f6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-Added-support-for-duktape-as-JS-engine.patch
@@ -0,0 +1,3463 @@
+From eaecfb21e1bca42e99321cc731e21dbfc1ea0d0c Mon Sep 17 00:00:00 2001
+From: Gustavo Lima Chaves <limachaves@gmail.com>
+Date: Tue, 25 Jan 2022 09:43:21 +0000
+Subject: [PATCH 3/3] Added support for duktape as JS engine
+
+Original author: Wu Xiaotian (@yetist)
+Resurrection author, runaway-killer author: Gustavo Lima Chaves (@limachaves)
+
+Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
+
+---
+ .gitlab-ci.yml                                |    1 +
+ buildutil/ax_pthread.m4                       |  522 ++++++++
+ configure.ac                                  |   34 +-
+ docs/man/polkit.xml                           |    4 +-
+ meson.build                                   |   16 +-
+ meson_options.txt                             |    1 +
+ src/polkitbackend/Makefile.am                 |   17 +-
+ src/polkitbackend/meson.build                 |   14 +-
+ src/polkitbackend/polkitbackendcommon.c       |  530 +++++++++
+ src/polkitbackend/polkitbackendcommon.h       |  158 +++
+ .../polkitbackendduktapeauthority.c           | 1051 +++++++++++++++++
+ .../polkitbackendjsauthority.cpp              |  721 +----------
+ .../etc/polkit-1/rules.d/10-testing.rules     |    6 +-
+ .../test-polkitbackendjsauthority.c           |    2 +-
+ 14 files changed, 2399 insertions(+), 678 deletions(-)
+ create mode 100644 buildutil/ax_pthread.m4
+ create mode 100644 src/polkitbackend/polkitbackendcommon.c
+ create mode 100644 src/polkitbackend/polkitbackendcommon.h
+ create mode 100644 src/polkitbackend/polkitbackendduktapeauthority.c
+
+Upstream-Status: Backport [c7fc4e1b61f0fd82fc697c19c604af7e9fb291a2]
+Dropped change to .gitlab-ci.yml and adapted configure.ac due to other
+patches in meta-oe.
+
+diff --git a/buildutil/ax_pthread.m4 b/buildutil/ax_pthread.m4
+new file mode 100644
+index 0000000..9f35d13
+--- /dev/null
++++ b/buildutil/ax_pthread.m4
+@@ -0,0 +1,522 @@
++# ===========================================================================
++#        https://www.gnu.org/software/autoconf-archive/ax_pthread.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++#   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
++#
++# DESCRIPTION
++#
++#   This macro figures out how to build C programs using POSIX threads. It
++#   sets the PTHREAD_LIBS output variable to the threads library and linker
++#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler
++#   flags that are needed. (The user can also force certain compiler
++#   flags/libs to be tested by setting these environment variables.)
++#
++#   Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is
++#   needed for multi-threaded programs (defaults to the value of CC
++#   respectively CXX otherwise). (This is necessary on e.g. AIX to use the
++#   special cc_r/CC_r compiler alias.)
++#
++#   NOTE: You are assumed to not only compile your program with these flags,
++#   but also to link with them as well. For example, you might link with
++#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
++#   $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
++#
++#   If you are only building threaded programs, you may wish to use these
++#   variables in your default LIBS, CFLAGS, and CC:
++#
++#     LIBS="$PTHREAD_LIBS $LIBS"
++#     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
++#     CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
++#     CC="$PTHREAD_CC"
++#     CXX="$PTHREAD_CXX"
++#
++#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
++#   has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
++#   that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
++#
++#   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
++#   PTHREAD_PRIO_INHERIT symbol is defined when compiling with
++#   PTHREAD_CFLAGS.
++#
++#   ACTION-IF-FOUND is a list of shell commands to run if a threads library
++#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
++#   is not found. If ACTION-IF-FOUND is not specified, the default action
++#   will define HAVE_PTHREAD.
++#
++#   Please let the authors know if this macro fails on any platform, or if
++#   you have any other suggestions or comments. This macro was based on work
++#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
++#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
++#   Alejandro Forero Cuervo to the autoconf macro repository. We are also
++#   grateful for the helpful feedback of numerous users.
++#
++#   Updated for Autoconf 2.68 by Daniel Richard G.
++#
++# LICENSE
++#
++#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
++#   Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
++#   Copyright (c) 2019 Marc Stevens <marc.stevens@cwi.nl>
++#
++#   This program is free software: you can redistribute it and/or modify it
++#   under the terms of the GNU General Public License as published by the
++#   Free Software Foundation, either version 3 of the License, or (at your
++#   option) any later version.
++#
++#   This program is distributed in the hope that it will be useful, but
++#   WITHOUT ANY WARRANTY; without even the implied warranty of
++#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
++#   Public License for more details.
++#
++#   You should have received a copy of the GNU General Public License along
++#   with this program. If not, see <https://www.gnu.org/licenses/>.
++#
++#   As a special exception, the respective Autoconf Macro's copyright owner
++#   gives unlimited permission to copy, distribute and modify the configure
++#   scripts that are the output of Autoconf when processing the Macro. You
++#   need not follow the terms of the GNU General Public License when using
++#   or distributing such scripts, even though portions of the text of the
++#   Macro appear in them. The GNU General Public License (GPL) does govern
++#   all other use of the material that constitutes the Autoconf Macro.
++#
++#   This special exception to the GPL applies to versions of the Autoconf
++#   Macro released by the Autoconf Archive. When you make and distribute a
++#   modified version of the Autoconf Macro, you may extend this special
++#   exception to the GPL to apply to your modified version as well.
++
++#serial 31
++
++AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
++AC_DEFUN([AX_PTHREAD], [
++AC_REQUIRE([AC_CANONICAL_HOST])
++AC_REQUIRE([AC_PROG_CC])
++AC_REQUIRE([AC_PROG_SED])
++AC_LANG_PUSH([C])
++ax_pthread_ok=no
++
++# We used to check for pthread.h first, but this fails if pthread.h
++# requires special compiler flags (e.g. on Tru64 or Sequent).
++# It gets checked for in the link test anyway.
++
++# First of all, check if the user has set any of the PTHREAD_LIBS,
++# etcetera environment variables, and if threads linking works using
++# them:
++if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
++        ax_pthread_save_CC="$CC"
++        ax_pthread_save_CFLAGS="$CFLAGS"
++        ax_pthread_save_LIBS="$LIBS"
++        AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
++        AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"])
++        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
++        LIBS="$PTHREAD_LIBS $LIBS"
++        AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
++        AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
++        AC_MSG_RESULT([$ax_pthread_ok])
++        if test "x$ax_pthread_ok" = "xno"; then
++                PTHREAD_LIBS=""
++                PTHREAD_CFLAGS=""
++        fi
++        CC="$ax_pthread_save_CC"
++        CFLAGS="$ax_pthread_save_CFLAGS"
++        LIBS="$ax_pthread_save_LIBS"
++fi
++
++# We must check for the threads library under a number of different
++# names; the ordering is very important because some systems
++# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
++# libraries is broken (non-POSIX).
++
++# Create a list of thread flags to try. Items with a "," contain both
++# C compiler flags (before ",") and linker flags (after ","). Other items
++# starting with a "-" are C compiler flags, and remaining items are
++# library names, except for "none" which indicates that we try without
++# any flags at all, and "pthread-config" which is a program returning
++# the flags for the Pth emulation library.
++
++ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
++
++# The ordering *is* (sometimes) important.  Some notes on the
++# individual items follow:
++
++# pthreads: AIX (must check this before -lpthread)
++# none: in case threads are in libc; should be tried before -Kthread and
++#       other compiler flags to prevent continual compiler warnings
++# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
++# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
++#           (Note: HP C rejects this with "bad form for `-t' option")
++# -pthreads: Solaris/gcc (Note: HP C also rejects)
++# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
++#      doesn't hurt to check since this sometimes defines pthreads and
++#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
++#      is present but should not be used directly; and before -mthreads,
++#      because the compiler interprets this as "-mt" + "-hreads")
++# -mthreads: Mingw32/gcc, Lynx/gcc
++# pthread: Linux, etcetera
++# --thread-safe: KAI C++
++# pthread-config: use pthread-config program (for GNU Pth library)
++
++case $host_os in
++
++        freebsd*)
++
++        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
++        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
++
++        ax_pthread_flags="-kthread lthread $ax_pthread_flags"
++        ;;
++
++        hpux*)
++
++        # From the cc(1) man page: "[-mt] Sets various -D flags to enable
++        # multi-threading and also sets -lpthread."
++
++        ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
++        ;;
++
++        openedition*)
++
++        # IBM z/OS requires a feature-test macro to be defined in order to
++        # enable POSIX threads at all, so give the user a hint if this is
++        # not set. (We don't define these ourselves, as they can affect
++        # other portions of the system API in unpredictable ways.)
++
++        AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
++            [
++#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
++             AX_PTHREAD_ZOS_MISSING
++#            endif
++            ],
++            [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
++        ;;
++
++        solaris*)
++
++        # On Solaris (at least, for some versions), libc contains stubbed
++        # (non-functional) versions of the pthreads routines, so link-based
++        # tests will erroneously succeed. (N.B.: The stubs are missing
++        # pthread_cleanup_push, or rather a function called by this macro,
++        # so we could check for that, but who knows whether they'll stub
++        # that too in a future libc.)  So we'll check first for the
++        # standard Solaris way of linking pthreads (-mt -lpthread).
++
++        ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags"
++        ;;
++esac
++
++# Are we compiling with Clang?
++
++AC_CACHE_CHECK([whether $CC is Clang],
++    [ax_cv_PTHREAD_CLANG],
++    [ax_cv_PTHREAD_CLANG=no
++     # Note that Autoconf sets GCC=yes for Clang as well as GCC
++     if test "x$GCC" = "xyes"; then
++        AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
++            [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
++#            if defined(__clang__) && defined(__llvm__)
++             AX_PTHREAD_CC_IS_CLANG
++#            endif
++            ],
++            [ax_cv_PTHREAD_CLANG=yes])
++     fi
++    ])
++ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
++
++
++# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
++
++# Note that for GCC and Clang -pthread generally implies -lpthread,
++# except when -nostdlib is passed.
++# This is problematic using libtool to build C++ shared libraries with pthread:
++# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460
++# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333
++# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555
++# To solve this, first try -pthread together with -lpthread for GCC
++
++AS_IF([test "x$GCC" = "xyes"],
++      [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"])
++
++# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first
++
++AS_IF([test "x$ax_pthread_clang" = "xyes"],
++      [ax_pthread_flags="-pthread,-lpthread -pthread"])
++
++
++# The presence of a feature test macro requesting re-entrant function
++# definitions is, on some systems, a strong hint that pthreads support is
++# correctly enabled
++
++case $host_os in
++        darwin* | hpux* | linux* | osf* | solaris*)
++        ax_pthread_check_macro="_REENTRANT"
++        ;;
++
++        aix*)
++        ax_pthread_check_macro="_THREAD_SAFE"
++        ;;
++
++        *)
++        ax_pthread_check_macro="--"
++        ;;
++esac
++AS_IF([test "x$ax_pthread_check_macro" = "x--"],
++      [ax_pthread_check_cond=0],
++      [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
++
++
++if test "x$ax_pthread_ok" = "xno"; then
++for ax_pthread_try_flag in $ax_pthread_flags; do
++
++        case $ax_pthread_try_flag in
++                none)
++                AC_MSG_CHECKING([whether pthreads work without any flags])
++                ;;
++
++                *,*)
++                PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"`
++                PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"`
++                AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"])
++                ;;
++
++                -*)
++                AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
++                PTHREAD_CFLAGS="$ax_pthread_try_flag"
++                ;;
++
++                pthread-config)
++                AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
++                AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
++                PTHREAD_CFLAGS="`pthread-config --cflags`"
++                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
++                ;;
++
++                *)
++                AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
++                PTHREAD_LIBS="-l$ax_pthread_try_flag"
++                ;;
++        esac
++
++        ax_pthread_save_CFLAGS="$CFLAGS"
++        ax_pthread_save_LIBS="$LIBS"
++        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
++        LIBS="$PTHREAD_LIBS $LIBS"
++
++        # Check for various functions.  We must include pthread.h,
++        # since some functions may be macros.  (On the Sequent, we
++        # need a special flag -Kthread to make this header compile.)
++        # We check for pthread_join because it is in -lpthread on IRIX
++        # while pthread_create is in libc.  We check for pthread_attr_init
++        # due to DEC craziness with -lpthreads.  We check for
++        # pthread_cleanup_push because it is one of the few pthread
++        # functions on Solaris that doesn't have a non-functional libc stub.
++        # We try pthread_create on general principles.
++
++        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
++#                       if $ax_pthread_check_cond
++#                        error "$ax_pthread_check_macro must be defined"
++#                       endif
++                        static void *some_global = NULL;
++                        static void routine(void *a)
++                          {
++                             /* To avoid any unused-parameter or
++                                unused-but-set-parameter warning.  */
++                             some_global = a;
++                          }
++                        static void *start_routine(void *a) { return a; }],
++                       [pthread_t th; pthread_attr_t attr;
++                        pthread_create(&th, 0, start_routine, 0);
++                        pthread_join(th, 0);
++                        pthread_attr_init(&attr);
++                        pthread_cleanup_push(routine, 0);
++                        pthread_cleanup_pop(0) /* ; */])],
++            [ax_pthread_ok=yes],
++            [])
++
++        CFLAGS="$ax_pthread_save_CFLAGS"
++        LIBS="$ax_pthread_save_LIBS"
++
++        AC_MSG_RESULT([$ax_pthread_ok])
++        AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
++
++        PTHREAD_LIBS=""
++        PTHREAD_CFLAGS=""
++done
++fi
++
++
++# Clang needs special handling, because older versions handle the -pthread
++# option in a rather... idiosyncratic way
++
++if test "x$ax_pthread_clang" = "xyes"; then
++
++        # Clang takes -pthread; it has never supported any other flag
++
++        # (Note 1: This will need to be revisited if a system that Clang
++        # supports has POSIX threads in a separate library.  This tends not
++        # to be the way of modern systems, but it's conceivable.)
++
++        # (Note 2: On some systems, notably Darwin, -pthread is not needed
++        # to get POSIX threads support; the API is always present and
++        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
++        # -pthread does define _REENTRANT, and while the Darwin headers
++        # ignore this macro, third-party headers might not.)
++
++        # However, older versions of Clang make a point of warning the user
++        # that, in an invocation where only linking and no compilation is
++        # taking place, the -pthread option has no effect ("argument unused
++        # during compilation").  They expect -pthread to be passed in only
++        # when source code is being compiled.
++        #
++        # Problem is, this is at odds with the way Automake and most other
++        # C build frameworks function, which is that the same flags used in
++        # compilation (CFLAGS) are also used in linking.  Many systems
++        # supported by AX_PTHREAD require exactly this for POSIX threads
++        # support, and in fact it is often not straightforward to specify a
++        # flag that is used only in the compilation phase and not in
++        # linking.  Such a scenario is extremely rare in practice.
++        #
++        # Even though use of the -pthread flag in linking would only print
++        # a warning, this can be a nuisance for well-run software projects
++        # that build with -Werror.  So if the active version of Clang has
++        # this misfeature, we search for an option to squash it.
++
++        AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
++            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
++            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
++             # Create an alternate version of $ac_link that compiles and
++             # links in two steps (.c -> .o, .o -> exe) instead of one
++             # (.c -> exe), because the warning occurs only in the second
++             # step
++             ax_pthread_save_ac_link="$ac_link"
++             ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
++             ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"`
++             ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
++             ax_pthread_save_CFLAGS="$CFLAGS"
++             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
++                AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
++                CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
++                ac_link="$ax_pthread_save_ac_link"
++                AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
++                    [ac_link="$ax_pthread_2step_ac_link"
++                     AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
++                         [break])
++                    ])
++             done
++             ac_link="$ax_pthread_save_ac_link"
++             CFLAGS="$ax_pthread_save_CFLAGS"
++             AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
++             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
++            ])
++
++        case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
++                no | unknown) ;;
++                *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
++        esac
++
++fi # $ax_pthread_clang = yes
++
++
++
++# Various other checks:
++if test "x$ax_pthread_ok" = "xyes"; then
++        ax_pthread_save_CFLAGS="$CFLAGS"
++        ax_pthread_save_LIBS="$LIBS"
++        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
++        LIBS="$PTHREAD_LIBS $LIBS"
++
++        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
++        AC_CACHE_CHECK([for joinable pthread attribute],
++            [ax_cv_PTHREAD_JOINABLE_ATTR],
++            [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
++             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
++                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
++                                                 [int attr = $ax_pthread_attr; return attr /* ; */])],
++                                [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
++                                [])
++             done
++            ])
++        AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
++               test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
++               test "x$ax_pthread_joinable_attr_defined" != "xyes"],
++              [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
++                                  [$ax_cv_PTHREAD_JOINABLE_ATTR],
++                                  [Define to necessary symbol if this constant
++                                   uses a non-standard name on your system.])
++               ax_pthread_joinable_attr_defined=yes
++              ])
++
++        AC_CACHE_CHECK([whether more special flags are required for pthreads],
++            [ax_cv_PTHREAD_SPECIAL_FLAGS],
++            [ax_cv_PTHREAD_SPECIAL_FLAGS=no
++             case $host_os in
++             solaris*)
++             ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
++             ;;
++             esac
++            ])
++        AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
++               test "x$ax_pthread_special_flags_added" != "xyes"],
++              [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
++               ax_pthread_special_flags_added=yes])
++
++        AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
++            [ax_cv_PTHREAD_PRIO_INHERIT],
++            [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
++                                             [[int i = PTHREAD_PRIO_INHERIT;
++                                               return i;]])],
++                            [ax_cv_PTHREAD_PRIO_INHERIT=yes],
++                            [ax_cv_PTHREAD_PRIO_INHERIT=no])
++            ])
++        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
++               test "x$ax_pthread_prio_inherit_defined" != "xyes"],
++              [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
++               ax_pthread_prio_inherit_defined=yes
++              ])
++
++        CFLAGS="$ax_pthread_save_CFLAGS"
++        LIBS="$ax_pthread_save_LIBS"
++
++        # More AIX lossage: compile with *_r variant
++        if test "x$GCC" != "xyes"; then
++            case $host_os in
++                aix*)
++                AS_CASE(["x/$CC"],
++                    [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
++                    [#handle absolute path differently from PATH based program lookup
++                     AS_CASE(["x$CC"],
++                         [x/*],
++                         [
++			   AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])
++			   AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])])
++			 ],
++                         [
++			   AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])
++			   AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])])
++			 ]
++                     )
++                    ])
++                ;;
++            esac
++        fi
++fi
++
++test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
++test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX"
++
++AC_SUBST([PTHREAD_LIBS])
++AC_SUBST([PTHREAD_CFLAGS])
++AC_SUBST([PTHREAD_CC])
++AC_SUBST([PTHREAD_CXX])
++
++# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
++if test "x$ax_pthread_ok" = "xyes"; then
++        ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
++        :
++else
++        ax_pthread_ok=no
++        $2
++fi
++AC_LANG_POP
++])dnl AX_PTHREAD
+diff --git a/configure.ac b/configure.ac
+index b625743..bbf4768 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -80,11 +80,22 @@ PKG_CHECK_MODULES(GLIB, [gmodule-2.0 gio-unix-2.0 >= 2.30.0])
+ AC_SUBST(GLIB_CFLAGS)
+ AC_SUBST(GLIB_LIBS)
+ 
+-PKG_CHECK_MODULES(LIBJS, [mozjs-78])
+-
+-AC_SUBST(LIBJS_CFLAGS)
+-AC_SUBST(LIBJS_CXXFLAGS)
+-AC_SUBST(LIBJS_LIBS)
++dnl ---------------------------------------------------------------------------
++dnl - Check javascript backend
++dnl ---------------------------------------------------------------------------
++AC_ARG_WITH(duktape, AS_HELP_STRING([--with-duktape],[Use Duktape as javascript backend]),with_duktape=yes,with_duktape=no)
++AS_IF([test x${with_duktape} == xyes], [
++  PKG_CHECK_MODULES(LIBJS, [duktape >= 2.2.0 ])
++  AC_SUBST(LIBJS_CFLAGS)
++  AC_SUBST(LIBJS_LIBS)
++], [
++  PKG_CHECK_MODULES(LIBJS, [mozjs-78])
++
++  AC_SUBST(LIBJS_CFLAGS)
++  AC_SUBST(LIBJS_CXXFLAGS)
++  AC_SUBST(LIBJS_LIBS)
++])
++AM_CONDITIONAL(USE_DUKTAPE, [test x$with_duktape == xyes], [Using duktape as javascript engine library])
+ 
+ EXPAT_LIB=""
+ AC_ARG_WITH(expat, [  --with-expat=<dir>      Use expat from here],
+@@ -100,6 +111,12 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"],
+ 	     [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
+ AC_SUBST(EXPAT_LIBS)
+ 
++AX_PTHREAD([], [AC_MSG_ERROR([Cannot find the way to enable pthread support.])])
++LIBS="$PTHREAD_LIBS $LIBS"
++CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
++CC="$PTHREAD_CC"
++AC_CHECK_FUNCS([pthread_condattr_setclock])
++
+ AC_CHECK_FUNCS(clearenv fdatasync setnetgrent)
+ 
+ if test "x$GCC" = "xyes"; then
+@@ -581,6 +598,13 @@ echo "
+         PAM support:                ${have_pam}
+         systemdsystemunitdir:       ${systemdsystemunitdir}
+         polkitd user:               ${POLKITD_USER}"
++if test "x${with_duktape}" = xyes; then
++echo "
++        Javascript engine:          Duktape"
++else
++echo "
++        Javascript engine:          Mozjs"
++fi
+ 
+ if test "$have_pam" = yes ; then
+ echo "
+diff --git a/docs/man/polkit.xml b/docs/man/polkit.xml
+index 99aa474..90715a5 100644
+--- a/docs/man/polkit.xml
++++ b/docs/man/polkit.xml
+@@ -639,7 +639,9 @@ polkit.Result = {
+         If user-provided code takes a long time to execute, an exception
+         will be thrown which normally results in the function being
+         terminated (the current limit is 15 seconds). This is used to
+-        catch runaway scripts.
++        catch runaway scripts. If the duktape JavaScript backend is
++        compiled in, instead of mozjs, no exception will be thrown—the
++        script will be killed right away (same timeout).
+       </para>
+ 
+       <para>
+diff --git a/meson.build b/meson.build
+index b3702be..7506231 100644
+--- a/meson.build
++++ b/meson.build
+@@ -126,7 +126,18 @@ expat_dep = dependency('expat')
+ assert(cc.has_header('expat.h', dependencies: expat_dep), 'Can\'t find expat.h. Please install expat.')
+ assert(cc.has_function('XML_ParserCreate', dependencies: expat_dep), 'Can\'t find expat library. Please install expat.')
+ 
+-mozjs_dep = dependency('mozjs-78')
++duktape_req_version = '>= 2.2.0'
++
++js_engine = get_option('js_engine')
++if js_engine == 'duktape'
++  js_dep = dependency('duktape', version: duktape_req_version)
++  libm_dep = cc.find_library('m')
++  thread_dep = dependency('threads')
++  func = 'pthread_condattr_setclock'
++  config_h.set('HAVE_' + func.to_upper(), cc.has_function(func, prefix : '#include <pthread.h>'))
++elif js_engine == 'mozjs'
++  js_dep = dependency('mozjs-78')
++endif
+ 
+ dbus_dep = dependency('dbus-1')
+ dbus_confdir = dbus_dep.get_pkgconfig_variable('datadir', define_variable: ['datadir', pk_prefix / pk_datadir])   #changed from sysconfdir with respect to commit#8eada3836465838
+@@ -350,6 +361,9 @@ if enable_logind
+   output += '        systemdsystemunitdir:     ' + systemd_systemdsystemunitdir + '\n'
+ endif
+ output += '        polkitd user:             ' + polkitd_user + ' \n'
++output += '        Javascript engine:        ' + js_engine + '\n'
++if enable_logind
++endif
+ output += '        PAM support:              ' + enable_pam.to_string() + '\n\n'
+ if enable_pam
+   output += '        PAM file auth:            ' + pam_conf['PAM_FILE_INCLUDE_AUTH'] + '\n'
+diff --git a/meson_options.txt b/meson_options.txt
+index 25e3e77..76aa311 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -16,3 +16,4 @@ option('introspection', type: 'boolean', value: true, description: 'Enable intro
+ 
+ option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation')
+ option('man', type: 'boolean', value: false, description: 'build manual pages')
++option('js_engine', type: 'combo', choices: ['mozjs', 'duktape'], value: 'duktape', description: 'javascript engine')
+diff --git a/src/polkitbackend/Makefile.am b/src/polkitbackend/Makefile.am
+index 7e3c080..935fb98 100644
+--- a/src/polkitbackend/Makefile.am
++++ b/src/polkitbackend/Makefile.am
+@@ -17,6 +17,8 @@ AM_CPPFLAGS =                                                   \
+         -DPACKAGE_LIB_DIR=\""$(libdir)"\"                       \
+         -D_POSIX_PTHREAD_SEMANTICS                              \
+         -D_REENTRANT                                            \
++        -D_XOPEN_SOURCE=700                                     \
++        -D_GNU_SOURCE=1                                         \
+         $(NULL)
+ 
+ noinst_LTLIBRARIES=libpolkit-backend-1.la
+@@ -31,9 +33,10 @@ libpolkit_backend_1_la_SOURCES =                                   			\
+         polkitbackend.h									\
+ 	polkitbackendtypes.h								\
+ 	polkitbackendprivate.h								\
++	polkitbackendcommon.h			polkitbackendcommon.c			\
+ 	polkitbackendauthority.h		polkitbackendauthority.c		\
+ 	polkitbackendinteractiveauthority.h	polkitbackendinteractiveauthority.c	\
+-	polkitbackendjsauthority.h		polkitbackendjsauthority.cpp		\
++	polkitbackendjsauthority.h				\
+ 	polkitbackendactionpool.h		polkitbackendactionpool.c		\
+ 	polkitbackendactionlookup.h		polkitbackendactionlookup.c		\
+         $(NULL)
+@@ -51,19 +54,27 @@ libpolkit_backend_1_la_CFLAGS =                                        	\
+         -D_POLKIT_BACKEND_COMPILATION                                  	\
+         $(GLIB_CFLAGS)							\
+ 	$(LIBSYSTEMD_CFLAGS)						\
+-	$(LIBJS_CFLAGS)							\
++	$(LIBJS_CFLAGS)						\
+         $(NULL)
+ 
+ libpolkit_backend_1_la_CXXFLAGS = $(libpolkit_backend_1_la_CFLAGS)
+ 
+ libpolkit_backend_1_la_LIBADD =                               		\
+         $(GLIB_LIBS)							\
++        $(DUKTAPE_LIBS)							\
+ 	$(LIBSYSTEMD_LIBS)						\
+ 	$(top_builddir)/src/polkit/libpolkit-gobject-1.la		\
+ 	$(EXPAT_LIBS)							\
+-	$(LIBJS_LIBS)							\
++	$(LIBJS_LIBS)                                                   \
+         $(NULL)
+ 
++if USE_DUKTAPE
++libpolkit_backend_1_la_SOURCES += polkitbackendduktapeauthority.c
++libpolkit_backend_1_la_LIBADD += -lm
++else
++libpolkit_backend_1_la_SOURCES += polkitbackendjsauthority.cpp
++endif
++
+ rulesdir = $(sysconfdir)/polkit-1/rules.d
+ rules_DATA = 50-default.rules
+ 
+diff --git a/src/polkitbackend/meson.build b/src/polkitbackend/meson.build
+index 93c3c34..99f8e33 100644
+--- a/src/polkitbackend/meson.build
++++ b/src/polkitbackend/meson.build
+@@ -4,8 +4,8 @@ sources = files(
+   'polkitbackendactionlookup.c',
+   'polkitbackendactionpool.c',
+   'polkitbackendauthority.c',
++  'polkitbackendcommon.c',
+   'polkitbackendinteractiveauthority.c',
+-  'polkitbackendjsauthority.cpp',
+ )
+ 
+ output = 'initjs.h'
+@@ -21,7 +21,7 @@ sources += custom_target(
+ deps = [
+   expat_dep,
+   libpolkit_gobject_dep,
+-  mozjs_dep,
++  js_dep,
+ ]
+ 
+ c_flags = [
+@@ -29,8 +29,18 @@ c_flags = [
+   '-D_POLKIT_BACKEND_COMPILATION',
+   '-DPACKAGE_DATA_DIR="@0@"'.format(pk_prefix / pk_datadir),
+   '-DPACKAGE_SYSCONF_DIR="@0@"'.format(pk_prefix / pk_sysconfdir),
++  '-D_XOPEN_SOURCE=700',
++  '-D_GNU_SOURCE=1',
+ ]
+ 
++if js_engine == 'duktape'
++  sources += files('polkitbackendduktapeauthority.c')
++  deps += libm_dep
++  deps += thread_dep
++elif js_engine == 'mozjs'
++  sources += files('polkitbackendjsauthority.cpp')
++endif
++
+ if enable_logind
+   sources += files('polkitbackendsessionmonitor-systemd.c')
+ 
+diff --git a/src/polkitbackend/polkitbackendcommon.c b/src/polkitbackend/polkitbackendcommon.c
+new file mode 100644
+index 0000000..6783dff
+--- /dev/null
++++ b/src/polkitbackend/polkitbackendcommon.c
+@@ -0,0 +1,530 @@
++/*
++ * Copyright (C) 2008 Red Hat, Inc.
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General
++ * Public License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
++ * Boston, MA 02111-1307, USA.
++ *
++ * Author: David Zeuthen <davidz@redhat.com>
++ */
++
++#include "polkitbackendcommon.h"
++
++static void
++utils_child_watch_from_release_cb (GPid     pid,
++                                   gint     status,
++                                   gpointer user_data)
++{
++}
++
++static void
++utils_spawn_data_free (UtilsSpawnData *data)
++{
++  if (data->timeout_source != NULL)
++    {
++      g_source_destroy (data->timeout_source);
++      data->timeout_source = NULL;
++    }
++
++  /* Nuke the child, if necessary */
++  if (data->child_watch_source != NULL)
++    {
++      g_source_destroy (data->child_watch_source);
++      data->child_watch_source = NULL;
++    }
++
++  if (data->child_pid != 0)
++    {
++      GSource *source;
++      kill (data->child_pid, SIGTERM);
++      /* OK, we need to reap for the child ourselves - we don't want
++       * to use waitpid() because that might block the calling
++       * thread (the child might handle SIGTERM and use several
++       * seconds for cleanup/rollback).
++       *
++       * So we use GChildWatch instead.
++       *
++       * Avoid taking a references to ourselves. but note that we need
++       * to pass the GSource so we can nuke it once handled.
++       */
++      source = g_child_watch_source_new (data->child_pid);
++      g_source_set_callback (source,
++                             (GSourceFunc) utils_child_watch_from_release_cb,
++                             source,
++                             (GDestroyNotify) g_source_destroy);
++      g_source_attach (source, data->main_context);
++      g_source_unref (source);
++      data->child_pid = 0;
++    }
++
++  if (data->child_stdout != NULL)
++    {
++      g_string_free (data->child_stdout, TRUE);
++      data->child_stdout = NULL;
++    }
++
++  if (data->child_stderr != NULL)
++    {
++      g_string_free (data->child_stderr, TRUE);
++      data->child_stderr = NULL;
++    }
++
++  if (data->child_stdout_channel != NULL)
++    {
++      g_io_channel_unref (data->child_stdout_channel);
++      data->child_stdout_channel = NULL;
++    }
++  if (data->child_stderr_channel != NULL)
++    {
++      g_io_channel_unref (data->child_stderr_channel);
++      data->child_stderr_channel = NULL;
++    }
++
++  if (data->child_stdout_source != NULL)
++    {
++      g_source_destroy (data->child_stdout_source);
++      data->child_stdout_source = NULL;
++    }
++  if (data->child_stderr_source != NULL)
++    {
++      g_source_destroy (data->child_stderr_source);
++      data->child_stderr_source = NULL;
++    }
++
++  if (data->child_stdout_fd != -1)
++    {
++      g_warn_if_fail (close (data->child_stdout_fd) == 0);
++      data->child_stdout_fd = -1;
++    }
++  if (data->child_stderr_fd != -1)
++    {
++      g_warn_if_fail (close (data->child_stderr_fd) == 0);
++      data->child_stderr_fd = -1;
++    }
++
++  if (data->cancellable_handler_id > 0)
++    {
++      g_cancellable_disconnect (data->cancellable, data->cancellable_handler_id);
++      data->cancellable_handler_id = 0;
++    }
++
++  if (data->main_context != NULL)
++    g_main_context_unref (data->main_context);
++
++  if (data->cancellable != NULL)
++    g_object_unref (data->cancellable);
++
++  g_slice_free (UtilsSpawnData, data);
++}
++
++/* called in the thread where @cancellable was cancelled */
++static void
++utils_on_cancelled (GCancellable *cancellable,
++                    gpointer      user_data)
++{
++  UtilsSpawnData *data = (UtilsSpawnData *)user_data;
++  GError *error;
++
++  error = NULL;
++  g_warn_if_fail (g_cancellable_set_error_if_cancelled (cancellable, &error));
++  g_simple_async_result_take_error (data->simple, error);
++  g_simple_async_result_complete_in_idle (data->simple);
++  g_object_unref (data->simple);
++}
++
++static gboolean
++utils_timeout_cb (gpointer user_data)
++{
++  UtilsSpawnData *data = (UtilsSpawnData *)user_data;
++
++  data->timed_out = TRUE;
++
++  /* ok, timeout is history, make sure we don't free it in spawn_data_free() */
++  data->timeout_source = NULL;
++
++  /* we're done */
++  g_simple_async_result_complete_in_idle (data->simple);
++  g_object_unref (data->simple);
++
++  return FALSE; /* remove source */
++}
++
++static void
++utils_child_watch_cb (GPid     pid,
++                      gint     status,
++                      gpointer user_data)
++{
++  UtilsSpawnData *data = (UtilsSpawnData *)user_data;
++  gchar *buf;
++  gsize buf_size;
++
++  if (g_io_channel_read_to_end (data->child_stdout_channel, &buf, &buf_size, NULL) == G_IO_STATUS_NORMAL)
++    {
++      g_string_append_len (data->child_stdout, buf, buf_size);
++      g_free (buf);
++    }
++  if (g_io_channel_read_to_end (data->child_stderr_channel, &buf, &buf_size, NULL) == G_IO_STATUS_NORMAL)
++    {
++      g_string_append_len (data->child_stderr, buf, buf_size);
++      g_free (buf);
++    }
++
++  data->exit_status = status;
++
++  /* ok, child watch is history, make sure we don't free it in spawn_data_free() */
++  data->child_pid = 0;
++  data->child_watch_source = NULL;
++
++  /* we're done */
++  g_simple_async_result_complete_in_idle (data->simple);
++  g_object_unref (data->simple);
++}
++
++static gboolean
++utils_read_child_stderr (GIOChannel *channel,
++                         GIOCondition condition,
++                         gpointer user_data)
++{
++  UtilsSpawnData *data = (UtilsSpawnData *)user_data;
++  gchar buf[1024];
++  gsize bytes_read;
++
++  g_io_channel_read_chars (channel, buf, sizeof buf, &bytes_read, NULL);
++  g_string_append_len (data->child_stderr, buf, bytes_read);
++  return TRUE;
++}
++
++static gboolean
++utils_read_child_stdout (GIOChannel *channel,
++                         GIOCondition condition,
++                         gpointer user_data)
++{
++  UtilsSpawnData *data = (UtilsSpawnData *)user_data;
++  gchar buf[1024];
++  gsize bytes_read;
++
++  g_io_channel_read_chars (channel, buf, sizeof buf, &bytes_read, NULL);
++  g_string_append_len (data->child_stdout, buf, bytes_read);
++  return TRUE;
++}
++
++void
++polkit_backend_common_spawn (const gchar *const  *argv,
++                             guint                timeout_seconds,
++                             GCancellable        *cancellable,
++                             GAsyncReadyCallback  callback,
++                             gpointer             user_data)
++{
++  UtilsSpawnData *data;
++  GError *error;
++
++  data = g_slice_new0 (UtilsSpawnData);
++  data->timeout_seconds = timeout_seconds;
++  data->simple = g_simple_async_result_new (NULL,
++                                            callback,
++                                            user_data,
++                                            (gpointer*)polkit_backend_common_spawn);
++  data->main_context = g_main_context_get_thread_default ();
++  if (data->main_context != NULL)
++    g_main_context_ref (data->main_context);
++
++  data->cancellable = cancellable != NULL ? (GCancellable*)g_object_ref (cancellable) : NULL;
++
++  data->child_stdout = g_string_new (NULL);
++  data->child_stderr = g_string_new (NULL);
++  data->child_stdout_fd = -1;
++  data->child_stderr_fd = -1;
++
++  /* the life-cycle of UtilsSpawnData is tied to its GSimpleAsyncResult */
++  g_simple_async_result_set_op_res_gpointer (data->simple, data, (GDestroyNotify) utils_spawn_data_free);
++
++  error = NULL;
++  if (data->cancellable != NULL)
++    {
++      /* could already be cancelled */
++      error = NULL;
++      if (g_cancellable_set_error_if_cancelled (data->cancellable, &error))
++        {
++          g_simple_async_result_take_error (data->simple, error);
++          g_simple_async_result_complete_in_idle (data->simple);
++          g_object_unref (data->simple);
++          goto out;
++        }
++
++      data->cancellable_handler_id = g_cancellable_connect (data->cancellable,
++                                                            G_CALLBACK (utils_on_cancelled),
++                                                            data,
++                                                            NULL);
++    }
++
++  error = NULL;
++  if (!g_spawn_async_with_pipes (NULL, /* working directory */
++                                 (gchar **) argv,
++                                 NULL, /* envp */
++                                 G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
++                                 NULL, /* child_setup */
++                                 NULL, /* child_setup's user_data */
++                                 &(data->child_pid),
++                                 NULL, /* gint *stdin_fd */
++                                 &(data->child_stdout_fd),
++                                 &(data->child_stderr_fd),
++                                 &error))
++    {
++      g_prefix_error (&error, "Error spawning: ");
++      g_simple_async_result_take_error (data->simple, error);
++      g_simple_async_result_complete_in_idle (data->simple);
++      g_object_unref (data->simple);
++      goto out;
++    }
++
++  if (timeout_seconds > 0)
++    {
++      data->timeout_source = g_timeout_source_new_seconds (timeout_seconds);
++      g_source_set_priority (data->timeout_source, G_PRIORITY_DEFAULT);
++      g_source_set_callback (data->timeout_source, utils_timeout_cb, data, NULL);
++      g_source_attach (data->timeout_source, data->main_context);
++      g_source_unref (data->timeout_source);
++    }
++
++  data->child_watch_source = g_child_watch_source_new (data->child_pid);
++  g_source_set_callback (data->child_watch_source, (GSourceFunc) utils_child_watch_cb, data, NULL);
++  g_source_attach (data->child_watch_source, data->main_context);
++  g_source_unref (data->child_watch_source);
++
++  data->child_stdout_channel = g_io_channel_unix_new (data->child_stdout_fd);
++  g_io_channel_set_flags (data->child_stdout_channel, G_IO_FLAG_NONBLOCK, NULL);
++  data->child_stdout_source = g_io_create_watch (data->child_stdout_channel, G_IO_IN);
++  g_source_set_callback (data->child_stdout_source, (GSourceFunc) utils_read_child_stdout, data, NULL);
++  g_source_attach (data->child_stdout_source, data->main_context);
++  g_source_unref (data->child_stdout_source);
++
++  data->child_stderr_channel = g_io_channel_unix_new (data->child_stderr_fd);
++  g_io_channel_set_flags (data->child_stderr_channel, G_IO_FLAG_NONBLOCK, NULL);
++  data->child_stderr_source = g_io_create_watch (data->child_stderr_channel, G_IO_IN);
++  g_source_set_callback (data->child_stderr_source, (GSourceFunc) utils_read_child_stderr, data, NULL);
++  g_source_attach (data->child_stderr_source, data->main_context);
++  g_source_unref (data->child_stderr_source);
++
++ out:
++  ;
++}
++
++void
++polkit_backend_common_on_dir_monitor_changed (GFileMonitor     *monitor,
++                                              GFile            *file,
++                                              GFile            *other_file,
++                                              GFileMonitorEvent event_type,
++                                              gpointer          user_data)
++{
++  PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (user_data);
++
++  /* TODO: maybe rate-limit so storms of events are collapsed into one with a 500ms resolution?
++   *       Because when editing a file with emacs we get 4-8 events..
++   */
++
++  if (file != NULL)
++    {
++      gchar *name;
++
++      name = g_file_get_basename (file);
++
++      /* g_print ("event_type=%d file=%p name=%s\n", event_type, file, name); */
++      if (!g_str_has_prefix (name, ".") &&
++          !g_str_has_prefix (name, "#") &&
++          g_str_has_suffix (name, ".rules") &&
++          (event_type == G_FILE_MONITOR_EVENT_CREATED ||
++           event_type == G_FILE_MONITOR_EVENT_DELETED ||
++           event_type == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT))
++        {
++          polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                        "Reloading rules");
++          polkit_backend_common_reload_scripts (authority);
++        }
++      g_free (name);
++    }
++}
++
++gboolean
++polkit_backend_common_spawn_finish (GAsyncResult   *res,
++                                    gint           *out_exit_status,
++                                    gchar         **out_standard_output,
++                                    gchar         **out_standard_error,
++                                    GError        **error)
++{
++  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
++  UtilsSpawnData *data;
++  gboolean ret = FALSE;
++
++  g_return_val_if_fail (G_IS_ASYNC_RESULT (res), FALSE);
++  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
++
++  g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == polkit_backend_common_spawn);
++
++  if (g_simple_async_result_propagate_error (simple, error))
++    goto out;
++
++  data = (UtilsSpawnData*)g_simple_async_result_get_op_res_gpointer (simple);
++
++  if (data->timed_out)
++    {
++      g_set_error (error,
++                   G_IO_ERROR,
++                   G_IO_ERROR_TIMED_OUT,
++                   "Timed out after %d seconds",
++                   data->timeout_seconds);
++      goto out;
++    }
++
++  if (out_exit_status != NULL)
++    *out_exit_status = data->exit_status;
++
++  if (out_standard_output != NULL)
++    *out_standard_output = g_strdup (data->child_stdout->str);
++
++  if (out_standard_error != NULL)
++    *out_standard_error = g_strdup (data->child_stderr->str);
++
++  ret = TRUE;
++
++ out:
++  return ret;
++}
++
++static const gchar *
++polkit_backend_js_authority_get_name (PolkitBackendAuthority *authority)
++{
++  return "js";
++}
++
++static const gchar *
++polkit_backend_js_authority_get_version (PolkitBackendAuthority *authority)
++{
++  return PACKAGE_VERSION;
++}
++
++static PolkitAuthorityFeatures
++polkit_backend_js_authority_get_features (PolkitBackendAuthority *authority)
++{
++  return POLKIT_AUTHORITY_FEATURES_TEMPORARY_AUTHORIZATION;
++}
++
++void
++polkit_backend_common_js_authority_class_init_common (PolkitBackendJsAuthorityClass *klass)
++{
++  GObjectClass *gobject_class;
++  PolkitBackendAuthorityClass *authority_class;
++  PolkitBackendInteractiveAuthorityClass *interactive_authority_class;
++
++  gobject_class = G_OBJECT_CLASS (klass);
++  gobject_class->finalize                               = polkit_backend_common_js_authority_finalize;
++  gobject_class->set_property                           = polkit_backend_common_js_authority_set_property;
++  gobject_class->constructed                            = polkit_backend_common_js_authority_constructed;
++
++  authority_class = POLKIT_BACKEND_AUTHORITY_CLASS (klass);
++  authority_class->get_name                             = polkit_backend_js_authority_get_name;
++  authority_class->get_version                          = polkit_backend_js_authority_get_version;
++  authority_class->get_features                         = polkit_backend_js_authority_get_features;
++
++  interactive_authority_class = POLKIT_BACKEND_INTERACTIVE_AUTHORITY_CLASS (klass);
++  interactive_authority_class->get_admin_identities     = polkit_backend_common_js_authority_get_admin_auth_identities;
++  interactive_authority_class->check_authorization_sync = polkit_backend_common_js_authority_check_authorization_sync;
++
++  g_object_class_install_property (gobject_class,
++                                   PROP_RULES_DIRS,
++                                   g_param_spec_boxed ("rules-dirs",
++                                                       NULL,
++                                                       NULL,
++                                                       G_TYPE_STRV,
++                                                       G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE));
++}
++
++gint
++polkit_backend_common_rules_file_name_cmp (const gchar *a,
++                                           const gchar *b)
++{
++  gint ret;
++  const gchar *a_base;
++  const gchar *b_base;
++
++  a_base = strrchr (a, '/');
++  b_base = strrchr (b, '/');
++
++  g_assert (a_base != NULL);
++  g_assert (b_base != NULL);
++  a_base += 1;
++  b_base += 1;
++
++  ret = g_strcmp0 (a_base, b_base);
++  if (ret == 0)
++    {
++      /* /etc wins over /usr */
++      ret = g_strcmp0 (a, b);
++      g_assert (ret != 0);
++    }
++
++  return ret;
++}
++
++const gchar *
++polkit_backend_common_get_signal_name (gint signal_number)
++{
++  switch (signal_number)
++    {
++#define _HANDLE_SIG(sig) case sig: return #sig;
++    _HANDLE_SIG (SIGHUP);
++    _HANDLE_SIG (SIGINT);
++    _HANDLE_SIG (SIGQUIT);
++    _HANDLE_SIG (SIGILL);
++    _HANDLE_SIG (SIGABRT);
++    _HANDLE_SIG (SIGFPE);
++    _HANDLE_SIG (SIGKILL);
++    _HANDLE_SIG (SIGSEGV);
++    _HANDLE_SIG (SIGPIPE);
++    _HANDLE_SIG (SIGALRM);
++    _HANDLE_SIG (SIGTERM);
++    _HANDLE_SIG (SIGUSR1);
++    _HANDLE_SIG (SIGUSR2);
++    _HANDLE_SIG (SIGCHLD);
++    _HANDLE_SIG (SIGCONT);
++    _HANDLE_SIG (SIGSTOP);
++    _HANDLE_SIG (SIGTSTP);
++    _HANDLE_SIG (SIGTTIN);
++    _HANDLE_SIG (SIGTTOU);
++    _HANDLE_SIG (SIGBUS);
++#ifdef SIGPOLL
++    _HANDLE_SIG (SIGPOLL);
++#endif
++    _HANDLE_SIG (SIGPROF);
++    _HANDLE_SIG (SIGSYS);
++    _HANDLE_SIG (SIGTRAP);
++    _HANDLE_SIG (SIGURG);
++    _HANDLE_SIG (SIGVTALRM);
++    _HANDLE_SIG (SIGXCPU);
++    _HANDLE_SIG (SIGXFSZ);
++#undef _HANDLE_SIG
++    default:
++      break;
++    }
++  return "UNKNOWN_SIGNAL";
++}
++
++void
++polkit_backend_common_spawn_cb (GObject       *source_object,
++                                GAsyncResult  *res,
++                                gpointer       user_data)
++{
++  SpawnData *data = (SpawnData *)user_data;
++  data->res = (GAsyncResult*)g_object_ref (res);
++  g_main_loop_quit (data->loop);
++}
+diff --git a/src/polkitbackend/polkitbackendcommon.h b/src/polkitbackend/polkitbackendcommon.h
+new file mode 100644
+index 0000000..dd700fc
+--- /dev/null
++++ b/src/polkitbackend/polkitbackendcommon.h
+@@ -0,0 +1,158 @@
++/*
++ * Copyright (C) 2008 Red Hat, Inc.
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General
++ * Public License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
++ * Boston, MA 02111-1307, USA.
++ *
++ * Author: David Zeuthen <davidz@redhat.com>
++ */
++
++#if !defined (_POLKIT_BACKEND_COMPILATION) && !defined(_POLKIT_BACKEND_INSIDE_POLKIT_BACKEND_H)
++#error "Only <polkitbackend/polkitbackend.h> can be included directly, this file may disappear or change contents."
++#endif
++
++#ifndef __POLKIT_BACKEND_COMMON_H
++#define __POLKIT_BACKEND_COMMON_H
++
++#include "config.h"
++#include <sys/wait.h>
++#include <errno.h>
++#include <pwd.h>
++#include <grp.h>
++#ifdef HAVE_NETGROUP_H
++#include <netgroup.h>
++#else
++#include <netdb.h>
++#endif
++#include <string.h>
++#include <glib/gstdio.h>
++#include <locale.h>
++#include <glib/gi18n-lib.h> //here, all things glib via glib.h (including -> gspawn.h)
++
++#include <polkit/polkit.h>
++#include "polkitbackendjsauthority.h"
++
++#include <polkit/polkitprivate.h>
++
++#ifdef HAVE_LIBSYSTEMD
++#include <systemd/sd-login.h>
++#endif /* HAVE_LIBSYSTEMD */
++
++#define RUNAWAY_KILLER_TIMEOUT (15)
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++enum
++{
++  PROP_0,
++  PROP_RULES_DIRS,
++};
++
++typedef struct
++{
++  GSimpleAsyncResult *simple; /* borrowed reference */
++  GMainContext *main_context; /* may be NULL */
++
++  GCancellable *cancellable;  /* may be NULL */
++  gulong cancellable_handler_id;
++
++  GPid child_pid;
++  gint child_stdout_fd;
++  gint child_stderr_fd;
++
++  GIOChannel *child_stdout_channel;
++  GIOChannel *child_stderr_channel;
++
++  GSource *child_watch_source;
++  GSource *child_stdout_source;
++  GSource *child_stderr_source;
++
++  guint timeout_seconds;
++  gboolean timed_out;
++  GSource *timeout_source;
++
++  GString *child_stdout;
++  GString *child_stderr;
++
++  gint exit_status;
++} UtilsSpawnData;
++
++typedef struct
++{
++  GMainLoop *loop;
++  GAsyncResult *res;
++} SpawnData;
++
++void polkit_backend_common_spawn (const gchar *const  *argv,
++                                  guint                timeout_seconds,
++                                  GCancellable        *cancellable,
++                                  GAsyncReadyCallback  callback,
++                                  gpointer             user_data);
++void polkit_backend_common_spawn_cb (GObject       *source_object,
++                                     GAsyncResult  *res,
++                                     gpointer       user_data);
++gboolean polkit_backend_common_spawn_finish (GAsyncResult   *res,
++                                             gint           *out_exit_status,
++                                             gchar         **out_standard_output,
++                                             gchar         **out_standard_error,
++                                             GError        **error);
++
++void polkit_backend_common_on_dir_monitor_changed (GFileMonitor     *monitor,
++                                                   GFile            *file,
++                                                   GFile            *other_file,
++                                                   GFileMonitorEvent event_type,
++                                                   gpointer          user_data);
++
++void polkit_backend_common_js_authority_class_init_common (PolkitBackendJsAuthorityClass *klass);
++
++gint polkit_backend_common_rules_file_name_cmp (const gchar *a,
++                                                const gchar *b);
++
++const gchar *polkit_backend_common_get_signal_name (gint signal_number);
++
++/* To be provided by each JS backend, from here onwards  ---------------------------------------------- */
++
++void polkit_backend_common_reload_scripts (PolkitBackendJsAuthority *authority);
++void polkit_backend_common_js_authority_finalize (GObject *object);
++void polkit_backend_common_js_authority_constructed (GObject *object);
++GList *polkit_backend_common_js_authority_get_admin_auth_identities (PolkitBackendInteractiveAuthority *_authority,
++                                                                     PolkitSubject                     *caller,
++                                                                     PolkitSubject                     *subject,
++                                                                     PolkitIdentity                    *user_for_subject,
++                                                                     gboolean                           subject_is_local,
++                                                                     gboolean                           subject_is_active,
++                                                                     const gchar                       *action_id,
++                                                                     PolkitDetails                     *details);
++void polkit_backend_common_js_authority_set_property (GObject      *object,
++                                                      guint         property_id,
++                                                      const GValue *value,
++                                                      GParamSpec   *pspec);
++PolkitImplicitAuthorization polkit_backend_common_js_authority_check_authorization_sync (PolkitBackendInteractiveAuthority *_authority,
++                                                                                         PolkitSubject                     *caller,
++                                                                                         PolkitSubject                     *subject,
++                                                                                         PolkitIdentity                    *user_for_subject,
++                                                                                         gboolean                           subject_is_local,
++                                                                                         gboolean                           subject_is_active,
++                                                                                         const gchar                       *action_id,
++                                                                                         PolkitDetails                     *details,
++                                                                                         PolkitImplicitAuthorization        implicit);
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* __POLKIT_BACKEND_COMMON_H */
++
+diff --git a/src/polkitbackend/polkitbackendduktapeauthority.c b/src/polkitbackend/polkitbackendduktapeauthority.c
+new file mode 100644
+index 0000000..c89dbcf
+--- /dev/null
++++ b/src/polkitbackend/polkitbackendduktapeauthority.c
+@@ -0,0 +1,1051 @@
++/*
++ * Copyright (C) 2008-2012 Red Hat, Inc.
++ * Copyright (C) 2015 Tangent Space <jstpierre@mecheye.net>
++ * Copyright (C) 2019 Wu Xiaotian <yetist@gmail.com>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General
++ * Public License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
++ * Boston, MA 02111-1307, USA.
++ *
++ * Author: David Zeuthen <davidz@redhat.com>
++ */
++
++#include <pthread.h>
++
++#include "polkitbackendcommon.h"
++
++#include "duktape.h"
++
++/* Built source and not too big to worry about deduplication */
++#include "initjs.h" /* init.js */
++
++/**
++ * SECTION:polkitbackendjsauthority
++ * @title: PolkitBackendJsAuthority
++ * @short_description: JS Authority
++ * @stability: Unstable
++ *
++ * An (Duktape-based) implementation of #PolkitBackendAuthority that reads and
++ * evaluates Javascript files and supports interaction with authentication
++ * agents (virtue of being based on #PolkitBackendInteractiveAuthority).
++ */
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++struct _PolkitBackendJsAuthorityPrivate
++{
++  gchar **rules_dirs;
++  GFileMonitor **dir_monitors; /* NULL-terminated array of GFileMonitor instances */
++
++  duk_context *cx;
++
++  pthread_t runaway_killer_thread;
++};
++
++enum
++{
++  RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET,
++  RUNAWAY_KILLER_THREAD_EXIT_STATUS_SUCCESS,
++  RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE,
++};
++
++static gboolean execute_script_with_runaway_killer(PolkitBackendJsAuthority *authority,
++                                                   const gchar *filename);
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++G_DEFINE_TYPE (PolkitBackendJsAuthority, polkit_backend_js_authority, POLKIT_BACKEND_TYPE_INTERACTIVE_AUTHORITY);
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++static duk_ret_t js_polkit_log (duk_context *cx);
++static duk_ret_t js_polkit_spawn (duk_context *cx);
++static duk_ret_t js_polkit_user_is_in_netgroup (duk_context *cx);
++
++static const duk_function_list_entry js_polkit_functions[] =
++{
++  { "log", js_polkit_log, 1 },
++  { "spawn", js_polkit_spawn, 1 },
++  { "_userIsInNetGroup", js_polkit_user_is_in_netgroup, 2 },
++  { NULL, NULL, 0 },
++};
++
++static void report_error (void     *udata,
++                          const char *msg)
++{
++    PolkitBackendJsAuthority *authority = udata;
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                  "fatal Duktape JS backend error: %s",
++                                  (msg ? msg : "no message"));
++}
++
++static void
++polkit_backend_js_authority_init (PolkitBackendJsAuthority *authority)
++{
++  authority->priv = G_TYPE_INSTANCE_GET_PRIVATE (authority,
++                                                 POLKIT_BACKEND_TYPE_JS_AUTHORITY,
++                                                 PolkitBackendJsAuthorityPrivate);
++}
++
++static void
++load_scripts (PolkitBackendJsAuthority  *authority)
++{
++  GList *files = NULL;
++  GList *l;
++  guint num_scripts = 0;
++  GError *error = NULL;
++  guint n;
++
++  files = NULL;
++
++  for (n = 0; authority->priv->rules_dirs != NULL && authority->priv->rules_dirs[n] != NULL; n++)
++    {
++      const gchar *dir_name = authority->priv->rules_dirs[n];
++      GDir *dir = NULL;
++
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Loading rules from directory %s",
++                                    dir_name);
++
++      dir = g_dir_open (dir_name,
++                        0,
++                        &error);
++      if (dir == NULL)
++        {
++          polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                        "Error opening rules directory: %s (%s, %d)",
++                                        error->message, g_quark_to_string (error->domain), error->code);
++          g_clear_error (&error);
++        }
++      else
++        {
++          const gchar *name;
++          while ((name = g_dir_read_name (dir)) != NULL)
++            {
++              if (g_str_has_suffix (name, ".rules"))
++                files = g_list_prepend (files, g_strdup_printf ("%s/%s", dir_name, name));
++            }
++          g_dir_close (dir);
++        }
++    }
++
++  files = g_list_sort (files, (GCompareFunc) polkit_backend_common_rules_file_name_cmp);
++
++  for (l = files; l != NULL; l = l->next)
++    {
++      const gchar *filename = (gchar *)l->data;
++
++      if (!execute_script_with_runaway_killer(authority, filename))
++          continue;
++      num_scripts++;
++    }
++
++  polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                "Finished loading, compiling and executing %d rules",
++                                num_scripts);
++  g_list_free_full (files, g_free);
++}
++
++void
++polkit_backend_common_reload_scripts (PolkitBackendJsAuthority *authority)
++{
++  duk_context *cx = authority->priv->cx;
++
++  duk_set_top (cx, 0);
++  if (!duk_get_global_string (cx, "polkit")) {
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Error deleting old rules, not loading new ones");
++      return;
++  }
++  duk_push_string (cx, "_deleteRules");
++
++  duk_call_prop (cx, 0, 0);
++
++  polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                "Collecting garbage unconditionally...");
++
++  load_scripts (authority);
++
++  /* Let applications know we have new rules... */
++  g_signal_emit_by_name (authority, "changed");
++}
++
++static void
++setup_file_monitors (PolkitBackendJsAuthority *authority)
++{
++  guint n;
++  GPtrArray *p;
++
++  p = g_ptr_array_new ();
++  for (n = 0; authority->priv->rules_dirs != NULL && authority->priv->rules_dirs[n] != NULL; n++)
++    {
++      GFile *file;
++      GError *error;
++      GFileMonitor *monitor;
++
++      file = g_file_new_for_path (authority->priv->rules_dirs[n]);
++      error = NULL;
++      monitor = g_file_monitor_directory (file,
++                                          G_FILE_MONITOR_NONE,
++                                          NULL,
++                                          &error);
++      g_object_unref (file);
++      if (monitor == NULL)
++        {
++          g_warning ("Error monitoring directory %s: %s",
++                     authority->priv->rules_dirs[n],
++                     error->message);
++          g_clear_error (&error);
++        }
++      else
++        {
++          g_signal_connect (monitor,
++                            "changed",
++                            G_CALLBACK (polkit_backend_common_on_dir_monitor_changed),
++                            authority);
++          g_ptr_array_add (p, monitor);
++        }
++    }
++  g_ptr_array_add (p, NULL);
++  authority->priv->dir_monitors = (GFileMonitor**) g_ptr_array_free (p, FALSE);
++}
++
++void
++polkit_backend_common_js_authority_constructed (GObject *object)
++{
++  PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object);
++  duk_context *cx;
++
++  cx = duk_create_heap (NULL, NULL, NULL, authority, report_error);
++  if (cx == NULL)
++    goto fail;
++
++  authority->priv->cx = cx;
++
++  duk_push_global_object (cx);
++  duk_push_object (cx);
++  duk_put_function_list (cx, -1, js_polkit_functions);
++  duk_put_prop_string (cx, -2, "polkit");
++
++  /* load polkit objects/functions into JS context (e.g. addRule(),
++   * _deleteRules(), _runRules() et al)
++   */
++  duk_eval_string (cx, init_js);
++
++  if (authority->priv->rules_dirs == NULL)
++    {
++      authority->priv->rules_dirs = g_new0 (gchar *, 3);
++      authority->priv->rules_dirs[0] = g_strdup (PACKAGE_SYSCONF_DIR "/polkit-1/rules.d");
++      authority->priv->rules_dirs[1] = g_strdup (PACKAGE_DATA_DIR "/polkit-1/rules.d");
++    }
++
++  setup_file_monitors (authority);
++  load_scripts (authority);
++
++  G_OBJECT_CLASS (polkit_backend_js_authority_parent_class)->constructed (object);
++  return;
++
++ fail:
++  g_critical ("Error initializing JavaScript environment");
++  g_assert_not_reached ();
++}
++
++void
++polkit_backend_common_js_authority_finalize (GObject *object)
++{
++  PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object);
++  guint n;
++
++  for (n = 0; authority->priv->dir_monitors != NULL && authority->priv->dir_monitors[n] != NULL; n++)
++    {
++      GFileMonitor *monitor = authority->priv->dir_monitors[n];
++      g_signal_handlers_disconnect_by_func (monitor,
++                                            G_CALLBACK (polkit_backend_common_on_dir_monitor_changed),
++                                            authority);
++      g_object_unref (monitor);
++    }
++  g_free (authority->priv->dir_monitors);
++  g_strfreev (authority->priv->rules_dirs);
++
++  duk_destroy_heap (authority->priv->cx);
++
++  G_OBJECT_CLASS (polkit_backend_js_authority_parent_class)->finalize (object);
++}
++
++void
++polkit_backend_common_js_authority_set_property (GObject      *object,
++                                                 guint         property_id,
++                                                 const GValue *value,
++                                                 GParamSpec   *pspec)
++{
++  PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object);
++
++  switch (property_id)
++    {
++      case PROP_RULES_DIRS:
++        g_assert (authority->priv->rules_dirs == NULL);
++        authority->priv->rules_dirs = (gchar **) g_value_dup_boxed (value);
++        break;
++
++      default:
++        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
++        break;
++    }
++}
++
++static void
++polkit_backend_js_authority_class_init (PolkitBackendJsAuthorityClass *klass)
++{
++  polkit_backend_common_js_authority_class_init_common (klass);
++  g_type_class_add_private (klass, sizeof (PolkitBackendJsAuthorityPrivate));
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++static void
++set_property_str (duk_context *cx,
++                  const gchar *name,
++                  const gchar *value)
++{
++  duk_push_string (cx, value);
++  duk_put_prop_string (cx, -2, name);
++}
++
++static void
++set_property_strv (duk_context *cx,
++                   const gchar *name,
++                   GPtrArray   *value)
++{
++  guint n;
++  duk_push_array (cx);
++  for (n = 0; n < value->len; n++)
++    {
++      duk_push_string (cx, g_ptr_array_index (value, n));
++      duk_put_prop_index (cx, -2, n);
++    }
++  duk_put_prop_string (cx, -2, name);
++}
++
++static void
++set_property_int32 (duk_context *cx,
++                    const gchar *name,
++                    gint32       value)
++{
++  duk_push_int (cx, value);
++  duk_put_prop_string (cx, -2, name);
++}
++
++static void
++set_property_bool (duk_context *cx,
++                   const char  *name,
++                   gboolean     value)
++{
++  duk_push_boolean (cx, value);
++  duk_put_prop_string (cx, -2, name);
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++static gboolean
++push_subject (duk_context               *cx,
++              PolkitSubject             *subject,
++              PolkitIdentity            *user_for_subject,
++              gboolean                   subject_is_local,
++              gboolean                   subject_is_active,
++              GError                   **error)
++{
++  gboolean ret = FALSE;
++  pid_t pid;
++  uid_t uid;
++  gchar *user_name = NULL;
++  GPtrArray *groups = NULL;
++  struct passwd *passwd;
++  char *seat_str = NULL;
++  char *session_str = NULL;
++
++  if (!duk_get_global_string (cx, "Subject")) {
++    return FALSE;
++  }
++
++  duk_new (cx, 0);
++
++  if (POLKIT_IS_UNIX_PROCESS (subject))
++    {
++      pid = polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (subject));
++    }
++  else if (POLKIT_IS_SYSTEM_BUS_NAME (subject))
++    {
++      PolkitSubject *process;
++      process = polkit_system_bus_name_get_process_sync (POLKIT_SYSTEM_BUS_NAME (subject), NULL, error);
++      if (process == NULL)
++        goto out;
++      pid = polkit_unix_process_get_pid (POLKIT_UNIX_PROCESS (process));
++      g_object_unref (process);
++    }
++  else
++    {
++      g_assert_not_reached ();
++    }
++
++#ifdef HAVE_LIBSYSTEMD
++  if (sd_pid_get_session (pid, &session_str) == 0)
++    {
++      if (sd_session_get_seat (session_str, &seat_str) == 0)
++        {
++          /* do nothing */
++        }
++    }
++#endif /* HAVE_LIBSYSTEMD */
++
++  g_assert (POLKIT_IS_UNIX_USER (user_for_subject));
++  uid = polkit_unix_user_get_uid (POLKIT_UNIX_USER (user_for_subject));
++
++  groups = g_ptr_array_new_with_free_func (g_free);
++
++  passwd = getpwuid (uid);
++  if (passwd == NULL)
++    {
++      user_name = g_strdup_printf ("%d", (gint) uid);
++      g_warning ("Error looking up info for uid %d: %m", (gint) uid);
++    }
++  else
++    {
++      gid_t gids[512];
++      int num_gids = 512;
++
++      user_name = g_strdup (passwd->pw_name);
++
++      if (getgrouplist (passwd->pw_name,
++                        passwd->pw_gid,
++                        gids,
++                        &num_gids) < 0)
++        {
++          g_warning ("Error looking up groups for uid %d: %m", (gint) uid);
++        }
++      else
++        {
++          gint n;
++          for (n = 0; n < num_gids; n++)
++            {
++              struct group *group;
++              group = getgrgid (gids[n]);
++              if (group == NULL)
++                {
++                  g_ptr_array_add (groups, g_strdup_printf ("%d", (gint) gids[n]));
++                }
++              else
++                {
++                  g_ptr_array_add (groups, g_strdup (group->gr_name));
++                }
++            }
++        }
++    }
++
++  set_property_int32 (cx, "pid", pid);
++  set_property_str (cx, "user", user_name);
++  set_property_strv (cx, "groups", groups);
++  set_property_str (cx, "seat", seat_str);
++  set_property_str (cx, "session", session_str);
++  set_property_bool (cx, "local", subject_is_local);
++  set_property_bool (cx, "active", subject_is_active);
++
++  ret = TRUE;
++
++ out:
++  free (session_str);
++  free (seat_str);
++  g_free (user_name);
++  if (groups != NULL)
++    g_ptr_array_unref (groups);
++
++  return ret;
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++static gboolean
++push_action_and_details (duk_context               *cx,
++                         const gchar               *action_id,
++                         PolkitDetails             *details,
++                         GError                   **error)
++{
++  gchar **keys;
++  guint n;
++
++  if (!duk_get_global_string (cx, "Action")) {
++    return FALSE;
++  }
++
++  duk_new (cx, 0);
++
++  set_property_str (cx, "id", action_id);
++
++  keys = polkit_details_get_keys (details);
++  for (n = 0; keys != NULL && keys[n] != NULL; n++)
++    {
++      gchar *key;
++      const gchar *value;
++      key = g_strdup_printf ("_detail_%s", keys[n]);
++      value = polkit_details_lookup (details, keys[n]);
++      set_property_str (cx, key, value);
++      g_free (key);
++    }
++  g_strfreev (keys);
++
++  return TRUE;
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++typedef struct {
++  PolkitBackendJsAuthority *authority;
++  const gchar *filename;
++  pthread_cond_t cond;
++  pthread_mutex_t mutex;
++  gint ret;
++} RunawayKillerCtx;
++
++static gpointer
++runaway_killer_thread_execute_js (gpointer user_data)
++{
++  RunawayKillerCtx *ctx = user_data;
++  duk_context *cx = ctx->authority->priv->cx;
++
++  int oldtype, pthread_err;
++
++  if ((pthread_err = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype))) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (ctx->authority),
++                                  "Error setting thread cancel type: %s",
++                                  strerror(pthread_err));
++    goto err;
++  }
++
++  GFile *file = g_file_new_for_path(ctx->filename);
++  char *contents;
++  gsize len;
++
++  if (!g_file_load_contents(file, NULL, &contents, &len, NULL, NULL)) {
++    polkit_backend_authority_log(POLKIT_BACKEND_AUTHORITY(ctx->authority),
++                                 "Error loading script %s", ctx->filename);
++    g_object_unref(file);
++    goto err;
++  }
++
++  g_object_unref(file);
++
++  /* evaluate the script, trying to print context in any syntax errors
++     found */
++  if (duk_peval_lstring(cx, contents, len) != 0)
++  {
++    polkit_backend_authority_log(POLKIT_BACKEND_AUTHORITY(ctx->authority),
++                                 "Error compiling script %s: %s", ctx->filename,
++                                 duk_safe_to_string(cx, -1));
++    duk_pop(cx);
++    goto free_err;
++  }
++  g_free(contents);
++
++  ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_SUCCESS;
++  goto end;
++
++free_err:
++  g_free(contents);
++err:
++  ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE;
++end:
++  if ((pthread_err = pthread_cond_signal(&ctx->cond))) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (ctx->authority),
++                                  "Error signaling on condition variable: %s",
++                                  strerror(pthread_err));
++    ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE;
++  }
++  return NULL;
++}
++
++static gpointer
++runaway_killer_thread_call_js (gpointer user_data)
++{
++  RunawayKillerCtx *ctx = user_data;
++  duk_context *cx = ctx->authority->priv->cx;
++  int oldtype, pthread_err;
++
++  if ((pthread_err = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype))) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (ctx->authority),
++                                  "Error setting thread cancel type: %s",
++                                  strerror(pthread_err));
++    goto err;
++  }
++
++  if (duk_pcall_prop (cx, 0, 2) != DUK_EXEC_SUCCESS)
++    {
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (ctx->authority),
++                                    "Error evaluating admin rules: ",
++                                    duk_safe_to_string (cx, -1));
++      goto err;
++    }
++
++  ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_SUCCESS;
++  goto end;
++
++err:
++  ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE;
++end:
++  if ((pthread_err = pthread_cond_signal(&ctx->cond))) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (ctx->authority),
++                                  "Error signaling on condition variable: %s",
++                                  strerror(pthread_err));
++    ctx->ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE;
++  }
++  return NULL;
++}
++
++#if defined (HAVE_PTHREAD_CONDATTR_SETCLOCK)
++#  if defined(CLOCK_MONOTONIC)
++#    define PK_CLOCK CLOCK_MONOTONIC
++#  elif defined(CLOCK_BOOTTIME)
++#    define PK_CLOCK CLOCK_BOOTTIME
++#  else
++     /* No suitable clock */
++#    undef HAVE_PTHREAD_CONDATTR_SETCLOCK
++#    define PK_CLOCK CLOCK_REALTIME
++#  endif
++#else  /* ! HAVE_PTHREAD_CONDATTR_SETCLOCK */
++#  define PK_CLOCK CLOCK_REALTIME
++#endif /* ! HAVE_PTHREAD_CONDATTR_SETCLOCK */
++
++static gboolean
++runaway_killer_common(PolkitBackendJsAuthority *authority, RunawayKillerCtx *ctx, void *js_context_cb (void *user_data))
++{
++  int pthread_err;
++  gboolean cancel = FALSE;
++  pthread_condattr_t attr;
++  struct timespec abs_time;
++
++#ifdef HAVE_PTHREAD_CONDATTR_SETCLOCK
++  if ((pthread_err = pthread_condattr_init(&attr))) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                  "Error initializing condition variable attributes: %s",
++                                  strerror(pthread_err));
++    return FALSE;
++  }
++  if ((pthread_err = pthread_condattr_setclock(&attr, PK_CLOCK))) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                  "Error setting condition variable attributes: %s",
++                                  strerror(pthread_err));
++    goto err_clean_condattr;
++  }
++  /* Init again, with needed attr */
++  if ((pthread_err = pthread_cond_init(&ctx->cond, &attr))) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                  "Error initializing condition variable: %s",
++                                  strerror(pthread_err));
++    goto err_clean_condattr;
++  }
++#endif
++
++  if ((pthread_err = pthread_mutex_lock(&ctx->mutex))) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                  "Error locking mutex: %s",
++                                  strerror(pthread_err));
++    goto err_clean_cond;
++  }
++
++  if (clock_gettime(PK_CLOCK, &abs_time)) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                  "Error getting system's monotonic time: %s",
++                                  strerror(errno));
++    goto err_clean_cond;
++  }
++  abs_time.tv_sec += RUNAWAY_KILLER_TIMEOUT;
++
++  if ((pthread_err = pthread_create(&authority->priv->runaway_killer_thread, NULL,
++                                    js_context_cb, ctx))) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                  "Error creating runaway JS killer thread: %s",
++                                  strerror(pthread_err));
++    goto err_clean_cond;
++  }
++
++  while (ctx->ret == RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET) /* loop to treat spurious wakeups */
++    if (pthread_cond_timedwait(&ctx->cond, &ctx->mutex, &abs_time) == ETIMEDOUT) {
++      cancel = TRUE;
++
++      /* Log that we are terminating the script */
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Terminating runaway script after %d seconds",
++                                    RUNAWAY_KILLER_TIMEOUT);
++
++      break;
++    }
++
++  if ((pthread_err = pthread_mutex_unlock(&ctx->mutex))) {
++    polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                  "Error unlocking mutex: %s",
++                                  strerror(pthread_err));
++    goto err_clean_cond;
++  }
++
++  if (cancel) {
++    if ((pthread_err = pthread_cancel (authority->priv->runaway_killer_thread))) {
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Error cancelling runaway JS killer thread: %s",
++                                    strerror(pthread_err));
++      goto err_clean_cond;
++    }
++  }
++  if ((pthread_err = pthread_join (authority->priv->runaway_killer_thread, NULL))) {
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Error joining runaway JS killer thread: %s",
++                                    strerror(pthread_err));
++      goto err_clean_cond;
++    }
++
++  return ctx->ret == RUNAWAY_KILLER_THREAD_EXIT_STATUS_SUCCESS;
++
++    err_clean_cond:
++#ifdef HAVE_PTHREAD_CONDATTR_SETCLOCK
++  pthread_cond_destroy(&ctx->cond);
++#endif
++    err_clean_condattr:
++#ifdef HAVE_PTHREAD_CONDATTR_SETCLOCK
++  pthread_condattr_destroy(&attr);
++#endif
++  return FALSE;
++}
++
++/* Blocking for at most RUNAWAY_KILLER_TIMEOUT */
++static gboolean
++execute_script_with_runaway_killer(PolkitBackendJsAuthority *authority,
++                                   const gchar *filename)
++{
++  RunawayKillerCtx ctx = {.authority = authority, .filename = filename,
++                          .ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET,
++                          .mutex = PTHREAD_MUTEX_INITIALIZER,
++                          .cond = PTHREAD_COND_INITIALIZER};
++
++  return runaway_killer_common(authority, &ctx, &runaway_killer_thread_execute_js);
++}
++
++/* Calls already stacked function and args. Blocking for at most
++ * RUNAWAY_KILLER_TIMEOUT. If timeout is the case, ctx.ret will be
++ * RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET, thus returning FALSE.
++ */
++static gboolean
++call_js_function_with_runaway_killer(PolkitBackendJsAuthority *authority)
++{
++  RunawayKillerCtx ctx = {.authority = authority,
++                          .ret = RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET,
++                          .mutex = PTHREAD_MUTEX_INITIALIZER,
++                          .cond = PTHREAD_COND_INITIALIZER};
++
++  return runaway_killer_common(authority, &ctx, &runaway_killer_thread_call_js);
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++GList *
++polkit_backend_common_js_authority_get_admin_auth_identities (PolkitBackendInteractiveAuthority *_authority,
++                                                              PolkitSubject                     *caller,
++                                                              PolkitSubject                     *subject,
++                                                              PolkitIdentity                    *user_for_subject,
++                                                              gboolean                           subject_is_local,
++                                                              gboolean                           subject_is_active,
++                                                              const gchar                       *action_id,
++                                                              PolkitDetails                     *details)
++{
++  PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (_authority);
++  GList *ret = NULL;
++  guint n;
++  GError *error = NULL;
++  const char *ret_str = NULL;
++  gchar **ret_strs = NULL;
++  duk_context *cx = authority->priv->cx;
++
++  duk_set_top (cx, 0);
++  if (!duk_get_global_string (cx, "polkit")) {
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Error deleting old rules, not loading new ones");
++      goto out;
++  }
++
++  duk_push_string (cx, "_runAdminRules");
++
++  if (!push_action_and_details (cx, action_id, details, &error))
++    {
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Error converting action and details to JS object: %s",
++                                    error->message);
++      g_clear_error (&error);
++      goto out;
++    }
++
++  if (!push_subject (cx, subject, user_for_subject, subject_is_local, subject_is_active, &error))
++    {
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Error converting subject to JS object: %s",
++                                    error->message);
++      g_clear_error (&error);
++      goto out;
++    }
++
++  if (!call_js_function_with_runaway_killer (authority))
++    goto out;
++
++  ret_str = duk_require_string (cx, -1);
++
++  ret_strs = g_strsplit (ret_str, ",", -1);
++  for (n = 0; ret_strs != NULL && ret_strs[n] != NULL; n++)
++    {
++      const gchar *identity_str = ret_strs[n];
++      PolkitIdentity *identity;
++
++      error = NULL;
++      identity = polkit_identity_from_string (identity_str, &error);
++      if (identity == NULL)
++        {
++          polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                        "Identity `%s' is not valid, ignoring: %s",
++                                        identity_str, error->message);
++          g_clear_error (&error);
++        }
++      else
++        {
++          ret = g_list_prepend (ret, identity);
++        }
++    }
++  ret = g_list_reverse (ret);
++
++ out:
++  g_strfreev (ret_strs);
++  /* fallback to root password auth */
++  if (ret == NULL)
++    ret = g_list_prepend (ret, polkit_unix_user_new (0));
++
++  return ret;
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++PolkitImplicitAuthorization
++polkit_backend_common_js_authority_check_authorization_sync (PolkitBackendInteractiveAuthority *_authority,
++                                                             PolkitSubject                     *caller,
++                                                             PolkitSubject                     *subject,
++                                                             PolkitIdentity                    *user_for_subject,
++                                                             gboolean                           subject_is_local,
++                                                             gboolean                           subject_is_active,
++                                                             const gchar                       *action_id,
++                                                             PolkitDetails                     *details,
++                                                             PolkitImplicitAuthorization        implicit)
++{
++  PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (_authority);
++  PolkitImplicitAuthorization ret = implicit;
++  GError *error = NULL;
++  gchar *ret_str = NULL;
++  gboolean good = FALSE;
++  duk_context *cx = authority->priv->cx;
++
++  duk_set_top (cx, 0);
++  if (!duk_get_global_string (cx, "polkit")) {
++      goto out;
++  }
++
++  duk_push_string (cx, "_runRules");
++
++  if (!push_action_and_details (cx, action_id, details, &error))
++    {
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Error converting action and details to JS object: %s",
++                                    error->message);
++      g_clear_error (&error);
++      goto out;
++    }
++
++  if (!push_subject (cx, subject, user_for_subject, subject_is_local, subject_is_active, &error))
++    {
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Error converting subject to JS object: %s",
++                                    error->message);
++      g_clear_error (&error);
++      goto out;
++    }
++
++  // If any error is the js context happened (ctx.ret ==
++  // RUNAWAY_KILLER_THREAD_EXIT_STATUS_FAILURE) or it never properly returned
++  // (runaway scripts or ctx.ret == RUNAWAY_KILLER_THREAD_EXIT_STATUS_UNSET),
++  // unauthorize
++  if (!call_js_function_with_runaway_killer (authority))
++    goto out;
++
++  if (duk_is_null(cx, -1)) {
++    /* this is fine, means there was no match, use implicit authorizations */
++    good = TRUE;
++    goto out;
++  }
++  ret_str = g_strdup (duk_require_string (cx, -1));
++  if (!polkit_implicit_authorization_from_string (ret_str, &ret))
++    {
++      polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
++                                    "Returned result `%s' is not valid",
++                                    ret_str);
++      goto out;
++    }
++
++  good = TRUE;
++
++ out:
++  if (!good)
++    ret = POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED;
++  if (ret_str != NULL)
++      g_free (ret_str);
++
++  return ret;
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++static duk_ret_t
++js_polkit_log (duk_context *cx)
++{
++  const char *str = duk_require_string (cx, 0);
++  fprintf (stderr, "%s\n", str);
++  return 0;
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++static duk_ret_t
++js_polkit_spawn (duk_context *cx)
++{
++  duk_ret_t ret = DUK_RET_ERROR;
++  gchar *standard_output = NULL;
++  gchar *standard_error = NULL;
++  gint exit_status;
++  GError *error = NULL;
++  guint32 array_len;
++  gchar **argv = NULL;
++  GMainContext *context = NULL;
++  GMainLoop *loop = NULL;
++  SpawnData data = {0};
++  char *err_str = NULL;
++  guint n;
++
++  if (!duk_is_array (cx, 0))
++    goto out;
++
++  array_len = duk_get_length (cx, 0);
++
++  argv = g_new0 (gchar*, array_len + 1);
++  for (n = 0; n < array_len; n++)
++    {
++      duk_get_prop_index (cx, 0, n);
++      argv[n] = g_strdup (duk_to_string (cx, -1));
++      duk_pop (cx);
++    }
++
++  context = g_main_context_new ();
++  loop = g_main_loop_new (context, FALSE);
++
++  g_main_context_push_thread_default (context);
++
++  data.loop = loop;
++  polkit_backend_common_spawn ((const gchar *const *) argv,
++                               10, /* timeout_seconds */
++                               NULL, /* cancellable */
++                               polkit_backend_common_spawn_cb,
++                               &data);
++
++  g_main_loop_run (loop);
++
++  g_main_context_pop_thread_default (context);
++
++  if (!polkit_backend_common_spawn_finish (data.res,
++                                           &exit_status,
++                                           &standard_output,
++                                           &standard_error,
++                                           &error))
++    {
++      err_str = g_strdup_printf ("Error spawning helper: %s (%s, %d)",
++                                 error->message, g_quark_to_string (error->domain), error->code);
++      g_clear_error (&error);
++      goto out;
++    }
++
++  if (!(WIFEXITED (exit_status) && WEXITSTATUS (exit_status) == 0))
++    {
++      GString *gstr;
++      gstr = g_string_new (NULL);
++      if (WIFEXITED (exit_status))
++        {
++          g_string_append_printf (gstr,
++                                  "Helper exited with non-zero exit status %d",
++                                  WEXITSTATUS (exit_status));
++        }
++      else if (WIFSIGNALED (exit_status))
++        {
++          g_string_append_printf (gstr,
++                                  "Helper was signaled with signal %s (%d)",
++                                  polkit_backend_common_get_signal_name (WTERMSIG (exit_status)),
++                                  WTERMSIG (exit_status));
++        }
++      g_string_append_printf (gstr, ", stdout=`%s', stderr=`%s'",
++                              standard_output, standard_error);
++      err_str = g_string_free (gstr, FALSE);
++      goto out;
++    }
++
++  duk_push_string (cx, standard_output);
++  ret = 1;
++
++ out:
++  g_strfreev (argv);
++  g_free (standard_output);
++  g_free (standard_error);
++  g_clear_object (&data.res);
++  if (loop != NULL)
++    g_main_loop_unref (loop);
++  if (context != NULL)
++    g_main_context_unref (context);
++
++  if (err_str)
++    duk_error (cx, DUK_ERR_ERROR, err_str);
++
++  return ret;
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
++
++
++static duk_ret_t
++js_polkit_user_is_in_netgroup (duk_context *cx)
++{
++  const char *user;
++  const char *netgroup;
++  gboolean is_in_netgroup = FALSE;
++
++  user = duk_require_string (cx, 0);
++  netgroup = duk_require_string (cx, 1);
++
++  if (innetgr (netgroup,
++               NULL,  /* host */
++               user,
++               NULL)) /* domain */
++    {
++      is_in_netgroup = TRUE;
++    }
++
++  duk_push_boolean (cx, is_in_netgroup);
++  return 1;
++}
++
++/* ---------------------------------------------------------------------------------------------------- */
+diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
+index ca17108..11e91c0 100644
+--- a/src/polkitbackend/polkitbackendjsauthority.cpp
++++ b/src/polkitbackend/polkitbackendjsauthority.cpp
+@@ -19,29 +19,7 @@
+  * Author: David Zeuthen <davidz@redhat.com>
+  */
+ 
+-#include "config.h"
+-#include <sys/wait.h>
+-#include <errno.h>
+-#include <pwd.h>
+-#include <grp.h>
+-#ifdef HAVE_NETGROUP_H
+-#include <netgroup.h>
+-#else
+-#include <netdb.h>
+-#endif
+-#include <string.h>
+-#include <glib/gstdio.h>
+-#include <locale.h>
+-#include <glib/gi18n-lib.h>
+-
+-#include <polkit/polkit.h>
+-#include "polkitbackendjsauthority.h"
+-
+-#include <polkit/polkitprivate.h>
+-
+-#ifdef HAVE_LIBSYSTEMD
+-#include <systemd/sd-login.h>
+-#endif /* HAVE_LIBSYSTEMD */
++#include "polkitbackendcommon.h"
+ 
+ #include <js/CompilationAndEvaluation.h>
+ #include <js/ContextOptions.h>
+@@ -52,6 +30,7 @@
+ #include <js/Array.h>
+ #include <jsapi.h>
+ 
++/* Built source and not too big to worry about deduplication */
+ #include "initjs.h" /* init.js */
+ 
+ #ifdef JSGC_USE_EXACT_ROOTING
+@@ -67,10 +46,9 @@
+  * @short_description: JS Authority
+  * @stability: Unstable
+  *
+- * An implementation of #PolkitBackendAuthority that reads and
+- * evalates Javascript files and supports interaction with
+- * authentication agents (virtue of being based on
+- * #PolkitBackendInteractiveAuthority).
++ * An (SpiderMonkey-based) implementation of #PolkitBackendAuthority that reads
++ * and evaluates Javascript files and supports interaction with authentication
++ * agents (virtue of being based on #PolkitBackendInteractiveAuthority).
+  */
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+@@ -100,57 +78,11 @@ static bool execute_script_with_runaway_killer (PolkitBackendJsAuthority *author
+                                     JS::HandleScript                 script,
+                                     JS::MutableHandleValue           rval);
+ 
+-static void utils_spawn (const gchar *const  *argv,
+-                         guint                timeout_seconds,
+-                         GCancellable        *cancellable,
+-                         GAsyncReadyCallback  callback,
+-                         gpointer             user_data);
+-
+-gboolean utils_spawn_finish (GAsyncResult   *res,
+-                             gint           *out_exit_status,
+-                             gchar         **out_standard_output,
+-                             gchar         **out_standard_error,
+-                             GError        **error);
+-
+-static void on_dir_monitor_changed (GFileMonitor     *monitor,
+-                                    GFile            *file,
+-                                    GFile            *other_file,
+-                                    GFileMonitorEvent event_type,
+-                                    gpointer          user_data);
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-enum
+-{
+-  PROP_0,
+-  PROP_RULES_DIRS,
+-};
+-
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+ static gpointer runaway_killer_thread_func (gpointer user_data);
+ static void runaway_killer_terminate (PolkitBackendJsAuthority *authority);
+ 
+-static GList *polkit_backend_js_authority_get_admin_auth_identities (PolkitBackendInteractiveAuthority *authority,
+-                                                                     PolkitSubject                     *caller,
+-                                                                     PolkitSubject                     *subject,
+-                                                                     PolkitIdentity                    *user_for_subject,
+-                                                                     gboolean                           subject_is_local,
+-                                                                     gboolean                           subject_is_active,
+-                                                                     const gchar                       *action_id,
+-                                                                     PolkitDetails                     *details);
+-
+-static PolkitImplicitAuthorization polkit_backend_js_authority_check_authorization_sync (
+-                                                          PolkitBackendInteractiveAuthority *authority,
+-                                                          PolkitSubject                     *caller,
+-                                                          PolkitSubject                     *subject,
+-                                                          PolkitIdentity                    *user_for_subject,
+-                                                          gboolean                           subject_is_local,
+-                                                          gboolean                           subject_is_active,
+-                                                          const gchar                       *action_id,
+-                                                          PolkitDetails                     *details,
+-                                                          PolkitImplicitAuthorization        implicit);
+-
+ G_DEFINE_TYPE (PolkitBackendJsAuthority, polkit_backend_js_authority, POLKIT_BACKEND_TYPE_INTERACTIVE_AUTHORITY);
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+@@ -229,33 +161,6 @@ polkit_backend_js_authority_init (PolkitBackendJsAuthority *authority)
+                                                  PolkitBackendJsAuthorityPrivate);
+ }
+ 
+-static gint
+-rules_file_name_cmp (const gchar *a,
+-                     const gchar *b)
+-{
+-  gint ret;
+-  const gchar *a_base;
+-  const gchar *b_base;
+-
+-  a_base = strrchr (a, '/');
+-  b_base = strrchr (b, '/');
+-
+-  g_assert (a_base != NULL);
+-  g_assert (b_base != NULL);
+-  a_base += 1;
+-  b_base += 1;
+-
+-  ret = g_strcmp0 (a_base, b_base);
+-  if (ret == 0)
+-    {
+-      /* /etc wins over /usr */
+-      ret = g_strcmp0 (a, b);
+-      g_assert (ret != 0);
+-    }
+-
+-  return ret;
+-}
+-
+ /* authority->priv->cx must be within a request */
+ static void
+ load_scripts (PolkitBackendJsAuthority  *authority)
+@@ -299,7 +204,7 @@ load_scripts (PolkitBackendJsAuthority  *authority)
+         }
+     }
+ 
+-  files = g_list_sort (files, (GCompareFunc) rules_file_name_cmp);
++  files = g_list_sort (files, (GCompareFunc) polkit_backend_common_rules_file_name_cmp);
+ 
+   for (l = files; l != NULL; l = l->next)
+     {
+@@ -365,8 +270,8 @@ load_scripts (PolkitBackendJsAuthority  *authority)
+   g_list_free_full (files, g_free);
+ }
+ 
+-static void
+-reload_scripts (PolkitBackendJsAuthority *authority)
++void
++polkit_backend_common_reload_scripts (PolkitBackendJsAuthority *authority)
+ {
+   JS::RootedValueArray<1> args(authority->priv->cx);
+   JS::RootedValue rval(authority->priv->cx);
+@@ -395,42 +300,6 @@ reload_scripts (PolkitBackendJsAuthority *authority)
+   g_signal_emit_by_name (authority, "changed");
+ }
+ 
+-static void
+-on_dir_monitor_changed (GFileMonitor     *monitor,
+-                        GFile            *file,
+-                        GFile            *other_file,
+-                        GFileMonitorEvent event_type,
+-                        gpointer          user_data)
+-{
+-  PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (user_data);
+-
+-  /* TODO: maybe rate-limit so storms of events are collapsed into one with a 500ms resolution?
+-   *       Because when editing a file with emacs we get 4-8 events..
+-   */
+-
+-  if (file != NULL)
+-    {
+-      gchar *name;
+-
+-      name = g_file_get_basename (file);
+-
+-      /* g_print ("event_type=%d file=%p name=%s\n", event_type, file, name); */
+-      if (!g_str_has_prefix (name, ".") &&
+-          !g_str_has_prefix (name, "#") &&
+-          g_str_has_suffix (name, ".rules") &&
+-          (event_type == G_FILE_MONITOR_EVENT_CREATED ||
+-           event_type == G_FILE_MONITOR_EVENT_DELETED ||
+-           event_type == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT))
+-        {
+-          polkit_backend_authority_log (POLKIT_BACKEND_AUTHORITY (authority),
+-                                        "Reloading rules");
+-          reload_scripts (authority);
+-        }
+-      g_free (name);
+-    }
+-}
+-
+-
+ static void
+ setup_file_monitors (PolkitBackendJsAuthority *authority)
+ {
+@@ -462,7 +331,7 @@ setup_file_monitors (PolkitBackendJsAuthority *authority)
+         {
+           g_signal_connect (monitor,
+                             "changed",
+-                            G_CALLBACK (on_dir_monitor_changed),
++                            G_CALLBACK (polkit_backend_common_on_dir_monitor_changed),
+                             authority);
+           g_ptr_array_add (p, monitor);
+         }
+@@ -471,8 +340,8 @@ setup_file_monitors (PolkitBackendJsAuthority *authority)
+   authority->priv->dir_monitors = (GFileMonitor**) g_ptr_array_free (p, FALSE);
+ }
+ 
+-static void
+-polkit_backend_js_authority_constructed (GObject *object)
++void
++polkit_backend_common_js_authority_constructed (GObject *object)
+ {
+   PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object);
+ 
+@@ -561,8 +430,8 @@ polkit_backend_js_authority_constructed (GObject *object)
+   g_assert_not_reached ();
+ }
+ 
+-static void
+-polkit_backend_js_authority_finalize (GObject *object)
++void
++polkit_backend_common_js_authority_finalize (GObject *object)
+ {
+   PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object);
+   guint n;
+@@ -577,7 +446,7 @@ polkit_backend_js_authority_finalize (GObject *object)
+     {
+       GFileMonitor *monitor = authority->priv->dir_monitors[n];
+       g_signal_handlers_disconnect_by_func (monitor,
+-                                            (gpointer*)G_CALLBACK (on_dir_monitor_changed),
++                                            (gpointer*)G_CALLBACK (polkit_backend_common_on_dir_monitor_changed),
+                                             authority);
+       g_object_unref (monitor);
+     }
+@@ -594,11 +463,11 @@ polkit_backend_js_authority_finalize (GObject *object)
+   G_OBJECT_CLASS (polkit_backend_js_authority_parent_class)->finalize (object);
+ }
+ 
+-static void
+-polkit_backend_js_authority_set_property (GObject      *object,
+-                                          guint         property_id,
+-                                          const GValue *value,
+-                                          GParamSpec   *pspec)
++void
++polkit_backend_common_js_authority_set_property (GObject      *object,
++                                                 guint         property_id,
++                                                 const GValue *value,
++                                                 GParamSpec   *pspec)
+ {
+   PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (object);
+ 
+@@ -615,57 +484,12 @@ polkit_backend_js_authority_set_property (GObject      *object,
+     }
+ }
+ 
+-static const gchar *
+-polkit_backend_js_authority_get_name (PolkitBackendAuthority *authority)
+-{
+-  return "js";
+-}
+-
+-static const gchar *
+-polkit_backend_js_authority_get_version (PolkitBackendAuthority *authority)
+-{
+-  return PACKAGE_VERSION;
+-}
+-
+-static PolkitAuthorityFeatures
+-polkit_backend_js_authority_get_features (PolkitBackendAuthority *authority)
+-{
+-  return POLKIT_AUTHORITY_FEATURES_TEMPORARY_AUTHORIZATION;
+-}
+-
+ static void
+ polkit_backend_js_authority_class_init (PolkitBackendJsAuthorityClass *klass)
+ {
+-  GObjectClass *gobject_class;
+-  PolkitBackendAuthorityClass *authority_class;
+-  PolkitBackendInteractiveAuthorityClass *interactive_authority_class;
+-
+-
+-  gobject_class = G_OBJECT_CLASS (klass);
+-  gobject_class->finalize                               = polkit_backend_js_authority_finalize;
+-  gobject_class->set_property                           = polkit_backend_js_authority_set_property;
+-  gobject_class->constructed                            = polkit_backend_js_authority_constructed;
+-
+-  authority_class = POLKIT_BACKEND_AUTHORITY_CLASS (klass);
+-  authority_class->get_name                             = polkit_backend_js_authority_get_name;
+-  authority_class->get_version                          = polkit_backend_js_authority_get_version;
+-  authority_class->get_features                         = polkit_backend_js_authority_get_features;
+-
+-  interactive_authority_class = POLKIT_BACKEND_INTERACTIVE_AUTHORITY_CLASS (klass);
+-  interactive_authority_class->get_admin_identities     = polkit_backend_js_authority_get_admin_auth_identities;
+-  interactive_authority_class->check_authorization_sync = polkit_backend_js_authority_check_authorization_sync;
+-
+-  g_object_class_install_property (gobject_class,
+-                                   PROP_RULES_DIRS,
+-                                   g_param_spec_boxed ("rules-dirs",
+-                                                       NULL,
+-                                                       NULL,
+-                                                       G_TYPE_STRV,
+-                                                       GParamFlags(G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE)));
+-
++  polkit_backend_common_js_authority_class_init_common (klass);
+ 
+   g_type_class_add_private (klass, sizeof (PolkitBackendJsAuthorityPrivate));
+-
+   JS_Init ();
+ }
+ 
+@@ -1005,11 +829,14 @@ runaway_killer_setup (PolkitBackendJsAuthority *authority)
+ {
+   g_assert (authority->priv->rkt_source == NULL);
+ 
+-  /* set-up timer for runaway scripts, will be executed in runaway_killer_thread */
++  /* set-up timer for runaway scripts, will be executed in
++     runaway_killer_thread, that is one, permanent thread running a glib
++     mainloop (rkt_loop) whose context (rkt_context) has a timeout source
++     (rkt_source) */
+   g_mutex_lock (&authority->priv->rkt_timeout_pending_mutex);
+   authority->priv->rkt_timeout_pending = FALSE;
+   g_mutex_unlock (&authority->priv->rkt_timeout_pending_mutex);
+-  authority->priv->rkt_source = g_timeout_source_new_seconds (15);
++  authority->priv->rkt_source = g_timeout_source_new_seconds (RUNAWAY_KILLER_TIMEOUT);
+   g_source_set_callback (authority->priv->rkt_source, rkt_on_timeout, authority, NULL);
+   g_source_attach (authority->priv->rkt_source, authority->priv->rkt_context);
+ 
+@@ -1069,6 +896,9 @@ execute_script_with_runaway_killer (PolkitBackendJsAuthority *authority,
+ {
+   bool ret;
+ 
++  // tries to JS_ExecuteScript(), may hang for > RUNAWAY_KILLER_TIMEOUT,
++  // runaway_killer_thread makes sure the call returns, due to exception
++  // injection
+   runaway_killer_setup (authority);
+   ret = JS_ExecuteScript (authority->priv->cx,
+                           script,
+@@ -1099,15 +929,15 @@ call_js_function_with_runaway_killer (PolkitBackendJsAuthority *authority,
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+-static GList *
+-polkit_backend_js_authority_get_admin_auth_identities (PolkitBackendInteractiveAuthority *_authority,
+-                                                       PolkitSubject                     *caller,
+-                                                       PolkitSubject                     *subject,
+-                                                       PolkitIdentity                    *user_for_subject,
+-                                                       gboolean                           subject_is_local,
+-                                                       gboolean                           subject_is_active,
+-                                                       const gchar                       *action_id,
+-                                                       PolkitDetails                     *details)
++GList *
++polkit_backend_common_js_authority_get_admin_auth_identities (PolkitBackendInteractiveAuthority *_authority,
++                                                              PolkitSubject                     *caller,
++                                                              PolkitSubject                     *subject,
++                                                              PolkitIdentity                    *user_for_subject,
++                                                              gboolean                           subject_is_local,
++                                                              gboolean                           subject_is_active,
++                                                              const gchar                       *action_id,
++                                                              PolkitDetails                     *details)
+ {
+   PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (_authority);
+   GList *ret = NULL;
+@@ -1202,16 +1032,16 @@ polkit_backend_js_authority_get_admin_auth_identities (PolkitBackendInteractiveA
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+-static PolkitImplicitAuthorization
+-polkit_backend_js_authority_check_authorization_sync (PolkitBackendInteractiveAuthority *_authority,
+-                                                      PolkitSubject                     *caller,
+-                                                      PolkitSubject                     *subject,
+-                                                      PolkitIdentity                    *user_for_subject,
+-                                                      gboolean                           subject_is_local,
+-                                                      gboolean                           subject_is_active,
+-                                                      const gchar                       *action_id,
+-                                                      PolkitDetails                     *details,
+-                                                      PolkitImplicitAuthorization        implicit)
++PolkitImplicitAuthorization
++polkit_backend_common_js_authority_check_authorization_sync (PolkitBackendInteractiveAuthority *_authority,
++                                                             PolkitSubject                     *caller,
++                                                             PolkitSubject                     *subject,
++                                                             PolkitIdentity                    *user_for_subject,
++                                                             gboolean                           subject_is_local,
++                                                             gboolean                           subject_is_active,
++                                                             const gchar                       *action_id,
++                                                             PolkitDetails                     *details,
++                                                             PolkitImplicitAuthorization        implicit)
+ {
+   PolkitBackendJsAuthority *authority = POLKIT_BACKEND_JS_AUTHORITY (_authority);
+   PolkitImplicitAuthorization ret = implicit;
+@@ -1324,65 +1154,6 @@ js_polkit_log (JSContext  *cx,
+ 
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+-static const gchar *
+-get_signal_name (gint signal_number)
+-{
+-  switch (signal_number)
+-    {
+-#define _HANDLE_SIG(sig) case sig: return #sig;
+-    _HANDLE_SIG (SIGHUP);
+-    _HANDLE_SIG (SIGINT);
+-    _HANDLE_SIG (SIGQUIT);
+-    _HANDLE_SIG (SIGILL);
+-    _HANDLE_SIG (SIGABRT);
+-    _HANDLE_SIG (SIGFPE);
+-    _HANDLE_SIG (SIGKILL);
+-    _HANDLE_SIG (SIGSEGV);
+-    _HANDLE_SIG (SIGPIPE);
+-    _HANDLE_SIG (SIGALRM);
+-    _HANDLE_SIG (SIGTERM);
+-    _HANDLE_SIG (SIGUSR1);
+-    _HANDLE_SIG (SIGUSR2);
+-    _HANDLE_SIG (SIGCHLD);
+-    _HANDLE_SIG (SIGCONT);
+-    _HANDLE_SIG (SIGSTOP);
+-    _HANDLE_SIG (SIGTSTP);
+-    _HANDLE_SIG (SIGTTIN);
+-    _HANDLE_SIG (SIGTTOU);
+-    _HANDLE_SIG (SIGBUS);
+-#ifdef SIGPOLL
+-    _HANDLE_SIG (SIGPOLL);
+-#endif
+-    _HANDLE_SIG (SIGPROF);
+-    _HANDLE_SIG (SIGSYS);
+-    _HANDLE_SIG (SIGTRAP);
+-    _HANDLE_SIG (SIGURG);
+-    _HANDLE_SIG (SIGVTALRM);
+-    _HANDLE_SIG (SIGXCPU);
+-    _HANDLE_SIG (SIGXFSZ);
+-#undef _HANDLE_SIG
+-    default:
+-      break;
+-    }
+-  return "UNKNOWN_SIGNAL";
+-}
+-
+-typedef struct
+-{
+-  GMainLoop *loop;
+-  GAsyncResult *res;
+-} SpawnData;
+-
+-static void
+-spawn_cb (GObject       *source_object,
+-          GAsyncResult  *res,
+-          gpointer       user_data)
+-{
+-  SpawnData *data = (SpawnData *)user_data;
+-  data->res = (GAsyncResult*)g_object_ref (res);
+-  g_main_loop_quit (data->loop);
+-}
+-
+ static bool
+ js_polkit_spawn (JSContext  *cx,
+                  unsigned    js_argc,
+@@ -1440,21 +1211,21 @@ js_polkit_spawn (JSContext  *cx,
+   g_main_context_push_thread_default (context);
+ 
+   data.loop = loop;
+-  utils_spawn ((const gchar *const *) argv,
+-               10, /* timeout_seconds */
+-               NULL, /* cancellable */
+-               spawn_cb,
+-               &data);
++  polkit_backend_common_spawn ((const gchar *const *) argv,
++                               10, /* timeout_seconds */
++                               NULL, /* cancellable */
++                               polkit_backend_common_spawn_cb,
++                               &data);
+ 
+   g_main_loop_run (loop);
+ 
+   g_main_context_pop_thread_default (context);
+ 
+-  if (!utils_spawn_finish (data.res,
+-                           &exit_status,
+-                           &standard_output,
+-                           &standard_error,
+-                           &error))
++  if (!polkit_backend_common_spawn_finish (data.res,
++                                           &exit_status,
++                                           &standard_output,
++                                           &standard_error,
++                                           &error))
+     {
+       JS_ReportErrorUTF8 (cx,
+                       "Error spawning helper: %s (%s, %d)",
+@@ -1477,7 +1248,7 @@ js_polkit_spawn (JSContext  *cx,
+         {
+           g_string_append_printf (gstr,
+                                   "Helper was signaled with signal %s (%d)",
+-                                  get_signal_name (WTERMSIG (exit_status)),
++                                  polkit_backend_common_get_signal_name (WTERMSIG (exit_status)),
+                                   WTERMSIG (exit_status));
+         }
+       g_string_append_printf (gstr, ", stdout=`%s', stderr=`%s'",
+@@ -1542,381 +1313,5 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,
+   return ret;
+ }
+ 
+-
+-
+ /* ---------------------------------------------------------------------------------------------------- */
+ 
+-typedef struct
+-{
+-  GSimpleAsyncResult *simple; /* borrowed reference */
+-  GMainContext *main_context; /* may be NULL */
+-
+-  GCancellable *cancellable;  /* may be NULL */
+-  gulong cancellable_handler_id;
+-
+-  GPid child_pid;
+-  gint child_stdout_fd;
+-  gint child_stderr_fd;
+-
+-  GIOChannel *child_stdout_channel;
+-  GIOChannel *child_stderr_channel;
+-
+-  GSource *child_watch_source;
+-  GSource *child_stdout_source;
+-  GSource *child_stderr_source;
+-
+-  guint timeout_seconds;
+-  gboolean timed_out;
+-  GSource *timeout_source;
+-
+-  GString *child_stdout;
+-  GString *child_stderr;
+-
+-  gint exit_status;
+-} UtilsSpawnData;
+-
+-static void
+-utils_child_watch_from_release_cb (GPid     pid,
+-                                   gint     status,
+-                                   gpointer user_data)
+-{
+-}
+-
+-static void
+-utils_spawn_data_free (UtilsSpawnData *data)
+-{
+-  if (data->timeout_source != NULL)
+-    {
+-      g_source_destroy (data->timeout_source);
+-      data->timeout_source = NULL;
+-    }
+-
+-  /* Nuke the child, if necessary */
+-  if (data->child_watch_source != NULL)
+-    {
+-      g_source_destroy (data->child_watch_source);
+-      data->child_watch_source = NULL;
+-    }
+-
+-  if (data->child_pid != 0)
+-    {
+-      GSource *source;
+-      kill (data->child_pid, SIGTERM);
+-      /* OK, we need to reap for the child ourselves - we don't want
+-       * to use waitpid() because that might block the calling
+-       * thread (the child might handle SIGTERM and use several
+-       * seconds for cleanup/rollback).
+-       *
+-       * So we use GChildWatch instead.
+-       *
+-       * Avoid taking a references to ourselves. but note that we need
+-       * to pass the GSource so we can nuke it once handled.
+-       */
+-      source = g_child_watch_source_new (data->child_pid);
+-      g_source_set_callback (source,
+-                             (GSourceFunc) utils_child_watch_from_release_cb,
+-                             source,
+-                             (GDestroyNotify) g_source_destroy);
+-      /* attach source to the global default main context */
+-      g_source_attach (source, NULL);
+-      g_source_unref (source);
+-      data->child_pid = 0;
+-    }
+-
+-  if (data->child_stdout != NULL)
+-    {
+-      g_string_free (data->child_stdout, TRUE);
+-      data->child_stdout = NULL;
+-    }
+-
+-  if (data->child_stderr != NULL)
+-    {
+-      g_string_free (data->child_stderr, TRUE);
+-      data->child_stderr = NULL;
+-    }
+-
+-  if (data->child_stdout_channel != NULL)
+-    {
+-      g_io_channel_unref (data->child_stdout_channel);
+-      data->child_stdout_channel = NULL;
+-    }
+-  if (data->child_stderr_channel != NULL)
+-    {
+-      g_io_channel_unref (data->child_stderr_channel);
+-      data->child_stderr_channel = NULL;
+-    }
+-
+-  if (data->child_stdout_source != NULL)
+-    {
+-      g_source_destroy (data->child_stdout_source);
+-      data->child_stdout_source = NULL;
+-    }
+-  if (data->child_stderr_source != NULL)
+-    {
+-      g_source_destroy (data->child_stderr_source);
+-      data->child_stderr_source = NULL;
+-    }
+-
+-  if (data->child_stdout_fd != -1)
+-    {
+-      g_warn_if_fail (close (data->child_stdout_fd) == 0);
+-      data->child_stdout_fd = -1;
+-    }
+-  if (data->child_stderr_fd != -1)
+-    {
+-      g_warn_if_fail (close (data->child_stderr_fd) == 0);
+-      data->child_stderr_fd = -1;
+-    }
+-
+-  if (data->cancellable_handler_id > 0)
+-    {
+-      g_cancellable_disconnect (data->cancellable, data->cancellable_handler_id);
+-      data->cancellable_handler_id = 0;
+-    }
+-
+-  if (data->main_context != NULL)
+-    g_main_context_unref (data->main_context);
+-
+-  if (data->cancellable != NULL)
+-    g_object_unref (data->cancellable);
+-
+-  g_slice_free (UtilsSpawnData, data);
+-}
+-
+-/* called in the thread where @cancellable was cancelled */
+-static void
+-utils_on_cancelled (GCancellable *cancellable,
+-                    gpointer      user_data)
+-{
+-  UtilsSpawnData *data = (UtilsSpawnData *)user_data;
+-  GError *error;
+-
+-  error = NULL;
+-  g_warn_if_fail (g_cancellable_set_error_if_cancelled (cancellable, &error));
+-  g_simple_async_result_take_error (data->simple, error);
+-  g_simple_async_result_complete_in_idle (data->simple);
+-  g_object_unref (data->simple);
+-}
+-
+-static gboolean
+-utils_read_child_stderr (GIOChannel *channel,
+-                         GIOCondition condition,
+-                         gpointer user_data)
+-{
+-  UtilsSpawnData *data = (UtilsSpawnData *)user_data;
+-  gchar buf[1024];
+-  gsize bytes_read;
+-
+-  g_io_channel_read_chars (channel, buf, sizeof buf, &bytes_read, NULL);
+-  g_string_append_len (data->child_stderr, buf, bytes_read);
+-  return TRUE;
+-}
+-
+-static gboolean
+-utils_read_child_stdout (GIOChannel *channel,
+-                         GIOCondition condition,
+-                         gpointer user_data)
+-{
+-  UtilsSpawnData *data = (UtilsSpawnData *)user_data;
+-  gchar buf[1024];
+-  gsize bytes_read;
+-
+-  g_io_channel_read_chars (channel, buf, sizeof buf, &bytes_read, NULL);
+-  g_string_append_len (data->child_stdout, buf, bytes_read);
+-  return TRUE;
+-}
+-
+-static void
+-utils_child_watch_cb (GPid     pid,
+-                      gint     status,
+-                      gpointer user_data)
+-{
+-  UtilsSpawnData *data = (UtilsSpawnData *)user_data;
+-  gchar *buf;
+-  gsize buf_size;
+-
+-  if (g_io_channel_read_to_end (data->child_stdout_channel, &buf, &buf_size, NULL) == G_IO_STATUS_NORMAL)
+-    {
+-      g_string_append_len (data->child_stdout, buf, buf_size);
+-      g_free (buf);
+-    }
+-  if (g_io_channel_read_to_end (data->child_stderr_channel, &buf, &buf_size, NULL) == G_IO_STATUS_NORMAL)
+-    {
+-      g_string_append_len (data->child_stderr, buf, buf_size);
+-      g_free (buf);
+-    }
+-
+-  data->exit_status = status;
+-
+-  /* ok, child watch is history, make sure we don't free it in spawn_data_free() */
+-  data->child_pid = 0;
+-  data->child_watch_source = NULL;
+-
+-  /* we're done */
+-  g_simple_async_result_complete_in_idle (data->simple);
+-  g_object_unref (data->simple);
+-}
+-
+-static gboolean
+-utils_timeout_cb (gpointer user_data)
+-{
+-  UtilsSpawnData *data = (UtilsSpawnData *)user_data;
+-
+-  data->timed_out = TRUE;
+-
+-  /* ok, timeout is history, make sure we don't free it in spawn_data_free() */
+-  data->timeout_source = NULL;
+-
+-  /* we're done */
+-  g_simple_async_result_complete_in_idle (data->simple);
+-  g_object_unref (data->simple);
+-
+-  return FALSE; /* remove source */
+-}
+-
+-static void
+-utils_spawn (const gchar *const  *argv,
+-             guint                timeout_seconds,
+-             GCancellable        *cancellable,
+-             GAsyncReadyCallback  callback,
+-             gpointer             user_data)
+-{
+-  UtilsSpawnData *data;
+-  GError *error;
+-
+-  data = g_slice_new0 (UtilsSpawnData);
+-  data->timeout_seconds = timeout_seconds;
+-  data->simple = g_simple_async_result_new (NULL,
+-                                            callback,
+-                                            user_data,
+-                                            (gpointer*)utils_spawn);
+-  data->main_context = g_main_context_get_thread_default ();
+-  if (data->main_context != NULL)
+-    g_main_context_ref (data->main_context);
+-
+-  data->cancellable = cancellable != NULL ? (GCancellable*)g_object_ref (cancellable) : NULL;
+-
+-  data->child_stdout = g_string_new (NULL);
+-  data->child_stderr = g_string_new (NULL);
+-  data->child_stdout_fd = -1;
+-  data->child_stderr_fd = -1;
+-
+-  /* the life-cycle of UtilsSpawnData is tied to its GSimpleAsyncResult */
+-  g_simple_async_result_set_op_res_gpointer (data->simple, data, (GDestroyNotify) utils_spawn_data_free);
+-
+-  error = NULL;
+-  if (data->cancellable != NULL)
+-    {
+-      /* could already be cancelled */
+-      error = NULL;
+-      if (g_cancellable_set_error_if_cancelled (data->cancellable, &error))
+-        {
+-          g_simple_async_result_take_error (data->simple, error);
+-          g_simple_async_result_complete_in_idle (data->simple);
+-          g_object_unref (data->simple);
+-          goto out;
+-        }
+-
+-      data->cancellable_handler_id = g_cancellable_connect (data->cancellable,
+-                                                            G_CALLBACK (utils_on_cancelled),
+-                                                            data,
+-                                                            NULL);
+-    }
+-
+-  error = NULL;
+-  if (!g_spawn_async_with_pipes (NULL, /* working directory */
+-                                 (gchar **) argv,
+-                                 NULL, /* envp */
+-                                 GSpawnFlags(G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD),
+-                                 NULL, /* child_setup */
+-                                 NULL, /* child_setup's user_data */
+-                                 &(data->child_pid),
+-                                 NULL, /* gint *stdin_fd */
+-                                 &(data->child_stdout_fd),
+-                                 &(data->child_stderr_fd),
+-                                 &error))
+-    {
+-      g_prefix_error (&error, "Error spawning: ");
+-      g_simple_async_result_take_error (data->simple, error);
+-      g_simple_async_result_complete_in_idle (data->simple);
+-      g_object_unref (data->simple);
+-      goto out;
+-    }
+-
+-  if (timeout_seconds > 0)
+-    {
+-      data->timeout_source = g_timeout_source_new_seconds (timeout_seconds);
+-      g_source_set_priority (data->timeout_source, G_PRIORITY_DEFAULT);
+-      g_source_set_callback (data->timeout_source, utils_timeout_cb, data, NULL);
+-      g_source_attach (data->timeout_source, data->main_context);
+-      g_source_unref (data->timeout_source);
+-    }
+-
+-  data->child_watch_source = g_child_watch_source_new (data->child_pid);
+-  g_source_set_callback (data->child_watch_source, (GSourceFunc) utils_child_watch_cb, data, NULL);
+-  g_source_attach (data->child_watch_source, data->main_context);
+-  g_source_unref (data->child_watch_source);
+-
+-  data->child_stdout_channel = g_io_channel_unix_new (data->child_stdout_fd);
+-  g_io_channel_set_flags (data->child_stdout_channel, G_IO_FLAG_NONBLOCK, NULL);
+-  data->child_stdout_source = g_io_create_watch (data->child_stdout_channel, G_IO_IN);
+-  g_source_set_callback (data->child_stdout_source, (GSourceFunc) utils_read_child_stdout, data, NULL);
+-  g_source_attach (data->child_stdout_source, data->main_context);
+-  g_source_unref (data->child_stdout_source);
+-
+-  data->child_stderr_channel = g_io_channel_unix_new (data->child_stderr_fd);
+-  g_io_channel_set_flags (data->child_stderr_channel, G_IO_FLAG_NONBLOCK, NULL);
+-  data->child_stderr_source = g_io_create_watch (data->child_stderr_channel, G_IO_IN);
+-  g_source_set_callback (data->child_stderr_source, (GSourceFunc) utils_read_child_stderr, data, NULL);
+-  g_source_attach (data->child_stderr_source, data->main_context);
+-  g_source_unref (data->child_stderr_source);
+-
+- out:
+-  ;
+-}
+-
+-gboolean
+-utils_spawn_finish (GAsyncResult   *res,
+-                    gint           *out_exit_status,
+-                    gchar         **out_standard_output,
+-                    gchar         **out_standard_error,
+-                    GError        **error)
+-{
+-  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res);
+-  UtilsSpawnData *data;
+-  gboolean ret = FALSE;
+-
+-  g_return_val_if_fail (G_IS_ASYNC_RESULT (res), FALSE);
+-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+-
+-  g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == utils_spawn);
+-
+-  if (g_simple_async_result_propagate_error (simple, error))
+-    goto out;
+-
+-  data = (UtilsSpawnData*)g_simple_async_result_get_op_res_gpointer (simple);
+-
+-  if (data->timed_out)
+-    {
+-      g_set_error (error,
+-                   G_IO_ERROR,
+-                   G_IO_ERROR_TIMED_OUT,
+-                   "Timed out after %d seconds",
+-                   data->timeout_seconds);
+-      goto out;
+-    }
+-
+-  if (out_exit_status != NULL)
+-    *out_exit_status = data->exit_status;
+-
+-  if (out_standard_output != NULL)
+-    *out_standard_output = g_strdup (data->child_stdout->str);
+-
+-  if (out_standard_error != NULL)
+-    *out_standard_error = g_strdup (data->child_stderr->str);
+-
+-  ret = TRUE;
+-
+- out:
+-  return ret;
+-}
+diff --git a/test/data/etc/polkit-1/rules.d/10-testing.rules b/test/data/etc/polkit-1/rules.d/10-testing.rules
+index 98bf062..e346b5d 100644
+--- a/test/data/etc/polkit-1/rules.d/10-testing.rules
++++ b/test/data/etc/polkit-1/rules.d/10-testing.rules
+@@ -189,8 +189,10 @@ polkit.addRule(function(action, subject) {
+                 ;
+         } catch (error) {
+             if (error == "Terminating runaway script")
+-                return polkit.Result.YES;
+-            return polkit.Result.NO;
++                // Inverted logic to accomodate Duktape's model as well, which
++                // will always fail with negation, on timeouts
++                return polkit.Result.NO;
++            return polkit.Result.YES;
+         }
+     }
+ });
+diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c
+index f97e0e0..2103b17 100644
+--- a/test/polkitbackend/test-polkitbackendjsauthority.c
++++ b/test/polkitbackend/test-polkitbackendjsauthority.c
+@@ -328,7 +328,7 @@ static const RulesTestCase rules_test_cases[] = {
+     "net.company.run_away_script",
+     "unix-user:root",
+     NULL,
+-    POLKIT_IMPLICIT_AUTHORIZATION_AUTHORIZED,
++    POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED,
+   },
+ 
+   {
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-jsauthority-ensure-to-call-JS_Init-and-JS_ShutDown-e.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-jsauthority-ensure-to-call-JS_Init-and-JS_ShutDown-e.patch
deleted file mode 100644
index 9e9755e..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-jsauthority-ensure-to-call-JS_Init-and-JS_ShutDown-e.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 7799441b9aa55324160deefbc65f9d918b8c94c1 Mon Sep 17 00:00:00 2001
-From: Xi Ruoyao <xry111@mengyan1223.wang>
-Date: Tue, 10 Aug 2021 18:52:56 +0800
-Subject: [PATCH] jsauthority: ensure to call JS_Init() and JS_ShutDown()
- exactly once
-
-Before this commit, we were calling JS_Init() in
-polkit_backend_js_authority_class_init and never called JS_ShutDown.
-This is actually a misusage of SpiderMonkey API.  Quote from a comment
-in js/Initialization.h (both mozjs-78 and mozjs-91):
-
-    It is currently not possible to initialize SpiderMonkey multiple
-    times (that is, calling JS_Init/JSAPI methods/JS_ShutDown in that
-    order, then doing so again).
-
-This misusage does not cause severe issues with mozjs-78.  However, when
-we eventually port jsauthority to use mozjs-91, bad thing will happen:
-see the test failure mentioned in #150.
-
-This commit is tested with both mozjs-78 and mozjs-91, all tests pass
-with it.
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/polkit/polkit/-/merge_requests/91]
-Signed-off-by: Alexander Kanavin <alex@linutronix.de>
----
- src/polkitbackend/polkitbackendjsauthority.cpp | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
-index 41d8d5c..38dc001 100644
---- a/src/polkitbackend/polkitbackendjsauthority.cpp
-+++ b/src/polkitbackend/polkitbackendjsauthority.cpp
-@@ -75,6 +75,13 @@
- 
- /* ---------------------------------------------------------------------------------------------------- */
- 
-+static class JsInitHelperType
-+{
-+public:
-+	JsInitHelperType() { JS_Init(); }
-+	~JsInitHelperType() { JS_ShutDown(); }
-+} JsInitHelper;
-+
- struct _PolkitBackendJsAuthorityPrivate
- {
-   gchar **rules_dirs;
-@@ -589,7 +596,6 @@ polkit_backend_js_authority_finalize (GObject *object)
-   delete authority->priv->js_polkit;
- 
-   JS_DestroyContext (authority->priv->cx);
--  /* JS_ShutDown (); */
- 
-   G_OBJECT_CLASS (polkit_backend_js_authority_parent_class)->finalize (object);
- }
-@@ -665,8 +671,6 @@ polkit_backend_js_authority_class_init (PolkitBackendJsAuthorityClass *klass)
- 
- 
-   g_type_class_add_private (klass, sizeof (PolkitBackendJsAuthorityPrivate));
--
--  JS_Init ();
- }
- 
- /* ---------------------------------------------------------------------------------------------------- */
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.119.bb b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.119.bb
index d763617..66bbf73 100644
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.119.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.119.bb
@@ -1,11 +1,11 @@
 SUMMARY = "PolicyKit Authorization Framework"
 DESCRIPTION = "The polkit package is an application-level toolkit for defining and handling the policy that allows unprivileged processes to speak to privileged processes."
 HOMEPAGE = "http://www.freedesktop.org/wiki/Software/polkit"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=155db86cdbafa7532b41f390409283eb \
                     file://src/polkit/polkit.h;beginline=1;endline=20;md5=0a8630b0133176d0504c87a0ded39db4"
 
-DEPENDS = "expat glib-2.0 intltool-native mozjs-91"
+DEPENDS = "expat glib-2.0 intltool-native duktape"
 
 inherit autotools gtk-doc pkgconfig useradd systemd gobject-introspection features_check
 
@@ -25,16 +25,22 @@
 SRC_URI = "http://www.freedesktop.org/software/polkit/releases/polkit-${PV}.tar.gz \
            ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
            file://0003-make-netgroup-support-optional.patch \
-           file://0002-jsauthority-port-to-mozjs-91.patch \
-           file://0003-jsauthority-ensure-to-call-JS_Init-and-JS_ShutDown-e.patch \
+           file://0001-pkexec-local-privilege-escalation-CVE-2021-4034.patch \
+           file://0002-CVE-2021-4115-GHSL-2021-077-fix.patch \
+           file://0003-Added-support-for-duktape-as-JS-engine.patch \
            "
 SRC_URI[sha256sum] = "c8579fdb86e94295404211285fee0722ad04893f0213e571bd75c00972fd1f5c"
 
 EXTRA_OECONF = "--with-os-type=moblin \
                 --disable-man-pages \
                 --disable-libelogind \
+                --with-duktape \
                "
 
+do_configure:prepend () {
+    rm -f ${S}/buildutil/lt*.m4 ${S}/buildutil/libtool.m4
+}
+
 do_compile:prepend () {
     export GIR_EXTRA_LIBS_PATH="${B}/src/polkit/.libs"
 }
diff --git a/meta-openembedded/meta-oe/recipes-extended/properties-cpp/properties-cpp_git.bb b/meta-openembedded/meta-oe/recipes-extended/properties-cpp/properties-cpp_git.bb
index d7e59e9..88a18aa 100644
--- a/meta-openembedded/meta-oe/recipes-extended/properties-cpp/properties-cpp_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/properties-cpp/properties-cpp_git.bb
@@ -3,7 +3,7 @@
 
 SUMMARY = "A very simple convenience library for handling properties and signals in C++11."
 SECTION = "libs"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
 
 PV = "0.0.1+git${SRCPV}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd_ss981107.bb b/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd_ss981107.bb
index 214768f..7359c12 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd_ss981107.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rarpd/rarpd_ss981107.bb
@@ -22,7 +22,7 @@
     file://rarpd.service \
 "
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://rarpd.c;md5=199b20b172ea93121bc613a9c77b6931"
 
 S = "${WORKDIR}/${BPN}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus/0001-cmake-Use-CMAKE_INSTALL_LIBDIR-from-GNUInstallDirs.patch b/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus/0001-cmake-Use-CMAKE_INSTALL_LIBDIR-from-GNUInstallDirs.patch
new file mode 100644
index 0000000..9ce39f3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus/0001-cmake-Use-CMAKE_INSTALL_LIBDIR-from-GNUInstallDirs.patch
@@ -0,0 +1,45 @@
+From fbb13cdb0b3591616c3f77b6bc76e75af8906cda Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 19 Mar 2022 22:59:58 -0700
+Subject: [PATCH] cmake: Use CMAKE_INSTALL_LIBDIR from GNUInstallDirs
+
+makes it portable across platforms e.g. ppc64/linux uses usr/lib64 for
+system libs
+
+Upstream-Status: Submitted [https://github.com/sewenew/redis-plus-plus/pull/344]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4f28ee4..8150f5c 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -239,10 +239,12 @@ if(REDIS_PLUS_PLUS_BUILD_TEST)
+     add_subdirectory(test)
+ endif()
+ 
++include(GNUInstallDirs)
++
+ install(TARGETS ${REDIS_PLUS_PLUS_TARGETS}
+         EXPORT redis++-targets
+-        LIBRARY DESTINATION lib
+-        ARCHIVE DESTINATION lib
++        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+         RUNTIME DESTINATION bin
+         INCLUDES DESTINATION include)
+ 
+@@ -284,7 +286,7 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/redis++.pc.in"
+         "${CMAKE_CURRENT_BINARY_DIR}/cmake/redis++.pc" @ONLY)
+ 
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/redis++.pc"
+-        DESTINATION "lib/pkgconfig")
++        DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+ 
+ # All the Debian-specific cpack defines.
+ if(${CMAKE_VERSION} VERSION_GREATER 3.6)
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus_1.3.3.bb b/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus_1.3.3.bb
index c135105..575443f 100644
--- a/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus_1.3.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/redis-plus-plus/redis-plus-plus_1.3.3.bb
@@ -4,7 +4,9 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
 
-SRC_URI = "git://github.com/sewenew/redis-plus-plus;branch=master;protocol=https"
+SRC_URI = "git://github.com/sewenew/redis-plus-plus;branch=master;protocol=https \
+           file://0001-cmake-Use-CMAKE_INSTALL_LIBDIR-from-GNUInstallDirs.patch \
+          "
 SRCREV = "389ffdf9e72035ea2096b03cda7f4a6809ae6363"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch b/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch
index 9a40d83..12994da 100644
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch
@@ -1,4 +1,7 @@
-Define _GNU_SOURCE to get PTHREAD_MUTEX_INITIALIZER
+From 18dc1457db8f66237e016b85a04dc50833c33c50 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 21 Dec 2019 12:09:51 -0800
+Subject: [PATCH] Define _GNU_SOURCE to get PTHREAD_MUTEX_INITIALIZER
 
 Fixes
 | zmalloc.c:87:37: error: 'PTHREAD_MUTEX_DEFAULT' undeclared here (not in a function)
@@ -7,11 +10,18 @@
 
 Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ src/zmalloc.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/zmalloc.c b/src/zmalloc.c
+index ba03685..322304f 100644
 --- a/src/zmalloc.c
 +++ b/src/zmalloc.c
-@@ -28,6 +28,7 @@
-  * POSSIBILITY OF SUCH DAMAGE.
-  */
+@@ -32,6 +32,7 @@
+ #include "config.h"
+ #include "solarisfixes.h"
  
 +#define _GNU_SOURCE
  #include <stdio.h>
diff --git a/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.2.bb b/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.8.0.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.8.0.bb
index bb72316..d953c11 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.8.0.bb
@@ -1,13 +1,13 @@
 SUMMARY = "High performance data logging and graphing system for time series data"
 HOMEPAGE = "http://oss.oetiker.ch/rrdtool/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=39df84cfd8a5e18bf988f277f7946676"
 
 DEPENDS = "libpng zlib cairo pango glib-2.0 libxml2 groff-native python3-setuptools-native"
 
-SRCREV = "56a83f4f52e6745cd4352f9ee008be3183a6dedf"
-PV = "1.7.2"
+SRCREV = "3af04acd38bbc61bbdcdd931dcf234c971aa5336"
+PV = "1.8.0"
 
 SRC_URI = "\
     git://github.com/oetiker/rrdtool-1.x.git;branch=master;protocol=http;;protocol=https \
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.10.0.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.10.0.bb
index 6a1f880..acdbbb7 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.10.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.10.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "A reliable logging library"
 HOMEPAGE = "https://github.com/rsyslog/librelp"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1fb9c10ed9fd6826757615455ca893a9"
 
 DEPENDS = "gmp nettle libidn zlib gnutls openssl"
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2202.0.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2202.0.bb
index b9c4e60..ebb8ecf 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2202.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2202.0.bb
@@ -11,7 +11,7 @@
 
 DEPENDS = "zlib libestr libfastjson bison-native flex-native liblogging"
 HOMEPAGE = "http://www.rsyslog.com/"
-LICENSE = "GPLv3 & LGPLv3 & Apache-2.0"
+LICENSE = "GPL-3.0-only & LGPL-3.0-only & Apache-2.0"
 LIC_FILES_CHKSUM = "file://COPYING;md5=51d9635e646fb75e1b74c074f788e973 \
                     file://COPYING.LESSER;md5=cb7903f1e5c39ae838209e130dca270a \
                     file://COPYING.ASL20;md5=052f8a09206615ab07326ff8ce2d9d32\
diff --git a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/setuptools.patch b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/setuptools.patch
index bc2c68c..c375e10 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/setuptools.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/setuptools.patch
@@ -1,6 +1,6 @@
 Switch to setuptools as distutils is deprecated.
 
-Upstream-Status: Pending
+Upstream-Status: Backport [https://pagure.io/sanlock/c/75758fc10db2354dda397d3aba63c7b72a420982]
 Signed-off-by: Ross Burton <ross.burton@arm.com>
 
 diff --git a/python/setup.py b/python/setup.py
diff --git a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.4.bb b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.4.bb
index 3c08c4e..ecbfad3 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.4.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.4.bb
@@ -8,7 +8,7 @@
 HOMEPAGE = "https://pagure.io/sanlock"
 SECTION = "utils"
 
-LICENSE = "LGPLv2+ & GPLv2 & GPLv2+"
+LICENSE = "LGPL-2.0-or-later & GPL-2.0-only & GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://README.license;md5=60487bf0bf429d6b5aa72b6d37a0eb22"
 
 PV .= "+git${SRCPV}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sedutil/sedutil_git.bb b/meta-openembedded/meta-oe/recipes-extended/sedutil/sedutil_git.bb
index e4323ec..a377d4e 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sedutil/sedutil_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sedutil/sedutil_git.bb
@@ -3,7 +3,7 @@
 SUMMARY = "The Drive Trust Alliance Self Encrypting Drive Utility"
 HOMEPAGE = "https://github.com/Drive-Trust-Alliance/sedutil"
 SECTION = "console/utils"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 
 LIC_FILES_CHKSUM = "file://Common/LICENSE.txt;md5=d32239bcb673463ab874e80d47fae504"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/sgpio/sgpio_1.2.0.10.bb b/meta-openembedded/meta-oe/recipes-extended/sgpio/sgpio_1.2.0.10.bb
index 0628c1d..fe2ebe4 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sgpio/sgpio_1.2.0.10.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sgpio/sgpio_1.2.0.10.bb
@@ -11,7 +11,7 @@
 
 S = "${WORKDIR}/${BPN}"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE_GPL;md5=393a5ca445f6965873eca0259a17f833"
 
 do_compile:prepend() {
diff --git a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb
index 5a5b357..1e5ffdd 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "libsigrok is a shared library written in C, which provides the basic hardware access drivers for logic analyzers and other supported devices, as well as input/output file format support."
 HOMEPAGE = "http://sigrok.org/wiki/Main_Page"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 DEPENDS = "glib-2.0 libzip"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
index 86b8940..24091bc 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "libsigrokdecode is a shared library written in C, which provides (streaming) protocol decoding functionality."
 HOMEPAGE = "http://sigrok.org/wiki/Main_Page"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 DEPENDS = "glib-2.0 python3"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.2.bb b/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.2.bb
index 2f0aa8c..48f96cc 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.2.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "sigrok-cli is a command-line frontend for sigrok."
 HOMEPAGE = "http://sigrok.org/wiki/Main_Page"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 DEPENDS = "libsigrok"
diff --git a/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-configure.ac-Define-SOURCE_DATE_EPOCH-in-CPPFLAGS.patch b/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-configure.ac-Define-SOURCE_DATE_EPOCH-in-CPPFLAGS.patch
index 87c0e14..23d0666 100644
--- a/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-configure.ac-Define-SOURCE_DATE_EPOCH-in-CPPFLAGS.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-configure.ac-Define-SOURCE_DATE_EPOCH-in-CPPFLAGS.patch
@@ -1,4 +1,4 @@
-From b621a313e0bc67803abfba18e1ae15e7a8b9b59f Mon Sep 17 00:00:00 2001
+From 898fd4115be5cdd848db99fe85e1d0d7f1b3fa02 Mon Sep 17 00:00:00 2001
 From: Oleksiy Obitotskyy <oobitots@cisco.com>
 Date: Mon, 22 Feb 2021 17:21:33 +0200
 Subject: [PATCH] smartmontools: Improve reproducibility
@@ -8,18 +8,18 @@
 
 Upstream-Status: Backported
 Signed-off-by: Oleksiy Obitotskyy <oobitots@cisco.com>
+
 ---
- ChangeLog    |  8 ++++++++
- configure.ac | 12 ++++++++++++
- utility.cpp  | 10 ++++++++++
- 3 files changed, 30 insertions(+)
+ ChangeLog | 8 ++++++++
+ 1 file changed, 8 insertions(+)
 
 diff --git a/ChangeLog b/ChangeLog
-index 39eac2d..6a3b4ee 100644
+index 5f0930a..4c5a91e 100644
 --- a/ChangeLog
 +++ b/ChangeLog
-@@ -1,5 +1,13 @@
- $Id: ChangeLog 5155 2020-12-30 16:49:18Z chrfranke $
+@@ -705,6 +705,14 @@ $Id: ChangeLog 5338 2022-02-28 16:34:26Z chrfranke $
+ 
+ 	Happy New Year!  Update copyright year in version info.
  
 +2021-02-07  Christian Franke  <franke@computer.org>
 +
@@ -32,53 +32,3 @@
  2020-12-30  Christian Franke  <franke@computer.org>
  
  	smartmontools 7.2
-diff --git a/configure.ac b/configure.ac
-index ee6f0e5..c37c9bc 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -61,6 +61,18 @@ case "${host}" in
-     ;;
- esac
- 
-+AC_MSG_CHECKING([whether reproducible build is selected (SOURCE_DATE_EPOCH)])
-+res=no
-+if test -n "$SOURCE_DATE_EPOCH"; then
-+  res=yes
-+  test -z "`echo "$SOURCE_DATE_EPOCH" | sed 's,[[0-9]]*,,'`" || res=error
-+fi
-+AC_MSG_RESULT([$res])
-+case $res in
-+  error) AC_MSG_ERROR([Malformed SOURCE_DATE_EPOCH]) ;;
-+  yes) CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-DSOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH" ;;
-+esac
-+
- # Check for SVN.
- AC_MSG_CHECKING([whether this is a build from SVN])
- is_svn_build=no
-diff --git a/utility.cpp b/utility.cpp
-index 0483c6f..8ab38c9 100644
---- a/utility.cpp
-+++ b/utility.cpp
-@@ -134,9 +134,19 @@ std::string format_version_info(const char * prog_name, bool full /*= false*/)
- #endif
-                                                           "\n"
-     "smartmontools configure arguments:"
-+#ifdef SOURCE_DATE_EPOCH
-+                                      " [hidden in reproducible builds]\n"
-+    "reproducible build SOURCE_DATE_EPOCH: "
-+#endif
-   ;
-+#ifdef SOURCE_DATE_EPOCH
-+  char ts[32]; struct tm tmbuf;
-+  strftime(ts, sizeof(ts), "%Y-%m-%d %H:%M:%S", time_to_tm_local(&tmbuf, SOURCE_DATE_EPOCH));
-+  info += strprintf("%u (%s)", (unsigned)SOURCE_DATE_EPOCH, ts);
-+#else
-   info += (sizeof(SMARTMONTOOLS_CONFIGURE_ARGS) > 1 ?
-            SMARTMONTOOLS_CONFIGURE_ARGS : " [no arguments given]");
-+#endif
-   info += '\n';
- 
-   return info;
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.2.bb b/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.3.bb
similarity index 92%
rename from meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.3.bb
index 233d5b8..1bf55bf 100644
--- a/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.3.bb
@@ -9,7 +9,7 @@
 HOMEPAGE = "http://smartmontools.sourceforge.net/"
 SECTION = "console/utils"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/smartmontools/smartmontools-${PV}.tar.gz \
@@ -23,8 +23,7 @@
 PACKAGECONFIG[libcap-ng] = "--with-libcap-ng=yes,--with-libcap-ng=no,libcap-ng"
 PACKAGECONFIG[selinux] = "--with-selinux=yes,--with-selinux=no,libselinux"
 
-SRC_URI[md5sum] = "e8d134c69ae4959a05cb56b31172ffb1"
-SRC_URI[sha256sum] = "5cd98a27e6393168bc6aaea070d9e1cd551b0f898c52f66b2ff2e5d274118cd6"
+SRC_URI[sha256sum] = "a544f8808d0c58cfb0e7424ca1841cb858a974922b035d505d4e4c248be3a22b"
 
 inherit autotools update-rc.d systemd
 
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 0e53cfa..993efab 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,4 +1,4 @@
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=72d977d697c3c05830fdff00a7448931"
 SRCREV = "beb4650660179963a8ed5b5cbf2085cc1b34f608"
 PV = "1.0+git${SRCPV}"
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 45978bb..07b80a5 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
@@ -1,5 +1,5 @@
 SUMMARY = "Linux CAN network development utilities"
-LICENSE = "GPLv2 & BSD-3-Clause"
+LICENSE = "GPL-2.0-only & BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://include/linux/can.h;endline=44;md5=a9e1169c6c9a114a61329e99f86fdd31"
 
 DEPENDS = "libsocketcan"
diff --git a/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb b/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb
index 59114b0..ab4710e 100644
--- a/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/socketcan/canutils_4.0.6.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.pengutronix.de"
 SECTION = "console/network"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "libsocketcan"
diff --git a/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.12.bb b/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.12.bb
index 27380ee..9f6ef85 100644
--- a/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.12.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.12.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.pengutronix.de"
 SECTION = "libs/network"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://src/libsocketcan.c;beginline=3;endline=17;md5=97e38adced4385d8fba1ae2437cedee1"
 
 SRCREV = "077def398ad303043d73339112968e5112d8d7c8"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-cmake-Pass-PROBE_NAME-via-CFLAGS.patch b/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-cmake-Pass-PROBE_NAME-via-CFLAGS.patch
new file mode 100644
index 0000000..903ccdf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-cmake-Pass-PROBE_NAME-via-CFLAGS.patch
@@ -0,0 +1,29 @@
+From ed8969a233adb6bf701de96d0fd0570e5ddcc787 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 21 Mar 2022 19:35:48 -0700
+Subject: [PATCH] cmake: Pass PROBE_NAME via CFLAGS
+
+This helps compliation of driver code where its calling modprobe on the
+given kernel module via system() API
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7dceb7ae..e156c36f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -149,6 +149,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ 	if(NOT DEFINED PROBE_NAME)
+ 		set(PROBE_NAME "scap")
+ 	endif()
++	add_definitions(-DPROBE_NAME="${PROBE_NAME}")
+ 
+ 	set(DRIVERS_REPO "https://download.sysdig.com/scap-drivers")
+ 	
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-fix-build-with-LuaJIT-2.1-betas.patch b/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-fix-build-with-LuaJIT-2.1-betas.patch
deleted file mode 100644
index 71b0b8c..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-fix-build-with-LuaJIT-2.1-betas.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From ae82de664a6ba6ab2654adf9bed81f22b6fdc19d Mon Sep 17 00:00:00 2001
-From: Evgeni Golov <evgeni@golov.de>
-Date: Sun, 27 Aug 2017 13:51:19 +0200
-Subject: [PATCH] fix build with LuaJIT 2.1 betas
-
-LuaJIT 2.1 drops some compat symbols [1]. And while I think that this is
-wrong, as it breaks compatibility with Lua 5.1 [2], it is quite easy to
-adopt the code to work with both versions (2.0 and 2.1) of LuaJIT and
-remain Lua 5.1 compatible.
-
-[1] https://github.com/LuaJIT/LuaJIT/commit/dc320ca70f2c5bb3977b82853bcee6dad2523d01
-[2] https://github.com/LuaJIT/LuaJIT/issues/325
-
-Upstream-Status: Submitted [https://github.com/LuaJIT/LuaJIT/issues/325]
-Signed-off-by: Evgeni Golov <evgeni@golov.de>
-sysdig-CLA-1.0-signed-off-by: Evgeni Golov <evgeni@golov.de>
----
- CMakeLists.txt                        | 2 +-
- userspace/libsinsp/chisel.cpp         | 6 +++---
- userspace/libsinsp/lua_parser.cpp     | 2 +-
- userspace/libsinsp/lua_parser_api.cpp | 2 +-
- 4 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index d7020493..33e524f5 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -140,7 +140,7 @@ option(USE_BUNDLED_DEPS "Enable bundled dependencies instead of using the system
- option(USE_BUNDLED_LUAJIT "Enable building of the bundled LuaJIT" ${USE_BUNDLED_DEPS})
- 
- if(NOT USE_BUNDLED_LUAJIT)
--	find_path(LUAJIT_INCLUDE luajit.h PATH_SUFFIXES luajit-2.0 luajit)
-+	find_path(LUAJIT_INCLUDE luajit.h PATH_SUFFIXES luajit-2.1 luajit-2.0 luajit)
- 	find_library(LUAJIT_LIB NAMES luajit luajit-5.1)
- 	if(LUAJIT_INCLUDE AND LUAJIT_LIB)
- 		message(STATUS "Found LuaJIT: include: ${LUAJIT_INCLUDE}, lib: ${LUAJIT_LIB}")
-diff --git a/userspace/libsinsp/chisel.cpp b/userspace/libsinsp/chisel.cpp
-index 0a6e3cf8..0c2e255a 100644
---- a/userspace/libsinsp/chisel.cpp
-+++ b/userspace/libsinsp/chisel.cpp
-@@ -98,7 +98,7 @@ void lua_stackdump(lua_State *L)
- // Lua callbacks
- ///////////////////////////////////////////////////////////////////////////////
- #ifdef HAS_LUA_CHISELS
--const static struct luaL_reg ll_sysdig [] =
-+const static struct luaL_Reg ll_sysdig [] =
- {
- 	{"set_filter", &lua_cbacks::set_global_filter},
- 	{"set_snaplen", &lua_cbacks::set_snaplen},
-@@ -134,7 +134,7 @@ const static struct luaL_reg ll_sysdig [] =
- 	{NULL,NULL}
- };
- 
--const static struct luaL_reg ll_chisel [] =
-+const static struct luaL_Reg ll_chisel [] =
- {
- 	{"request_field", &lua_cbacks::request_field},
- 	{"set_filter", &lua_cbacks::set_filter},
-@@ -146,7 +146,7 @@ const static struct luaL_reg ll_chisel [] =
- 	{NULL,NULL}
- };
- 
--const static struct luaL_reg ll_evt [] =
-+const static struct luaL_Reg ll_evt [] =
- {
- 	{"field", &lua_cbacks::field},
- 	{"get_num", &lua_cbacks::get_num},
-diff --git a/userspace/libsinsp/lua_parser.cpp b/userspace/libsinsp/lua_parser.cpp
-index 0e26617d..78810d96 100644
---- a/userspace/libsinsp/lua_parser.cpp
-+++ b/userspace/libsinsp/lua_parser.cpp
-@@ -32,7 +32,7 @@ extern "C" {
- #include "lauxlib.h"
- }
- 
--const static struct luaL_reg ll_filter [] =
-+const static struct luaL_Reg ll_filter [] =
- {
- 	{"rel_expr", &lua_parser_cbacks::rel_expr},
- 	{"bool_op", &lua_parser_cbacks::bool_op},
-diff --git a/userspace/libsinsp/lua_parser_api.cpp b/userspace/libsinsp/lua_parser_api.cpp
-index c89e9126..e0169fe1 100644
---- a/userspace/libsinsp/lua_parser_api.cpp
-+++ b/userspace/libsinsp/lua_parser_api.cpp
-@@ -266,7 +266,7 @@ int lua_parser_cbacks::rel_expr(lua_State *ls)
- 					string err = "Got non-table as in-expression operand\n";
- 					throw sinsp_exception("parser API error");
- 				}
--				int n = luaL_getn(ls, 4);  /* get size of table */
-+				int n = (int)lua_objlen(ls, 4);  /* get size of table */
- 				for (i=1; i<=n; i++)
- 				{
- 					lua_rawgeti(ls, 4, i);
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-libsinsp-Fix-a-lot-of-Werror-format-security-errors-.patch b/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-libsinsp-Fix-a-lot-of-Werror-format-security-errors-.patch
deleted file mode 100644
index 055b0c1..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-libsinsp-Fix-a-lot-of-Werror-format-security-errors-.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-From a5c8e2676b94d2ea41b44b4e05943bee6459f337 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 30 Oct 2021 09:46:35 -0700
-Subject: [PATCH] libsinsp: Fix a lot of -Werror=format-security errors with
- mvprintw/mvwprintw
-
-In all these places a non-constant is used as a format string which
-compiler complains about. Fix by using "%s" as format.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- userspace/libsinsp/cursescomponents.cpp |  4 ++--
- userspace/libsinsp/cursesspectro.cpp    |  2 +-
- userspace/libsinsp/cursestable.cpp      |  6 +++---
- userspace/libsinsp/cursesui.cpp         | 14 +++++++-------
- 4 files changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/userspace/libsinsp/cursescomponents.cpp b/userspace/libsinsp/cursescomponents.cpp
-index 4003cb4e..372b4526 100644
---- a/userspace/libsinsp/cursescomponents.cpp
-+++ b/userspace/libsinsp/cursescomponents.cpp
-@@ -877,7 +877,7 @@ void curses_textbox::print_no_data()
- 	string wstr = "No Data For This Selection";
- 	mvprintw(m_parent->m_screenh / 2,
- 		m_parent->m_screenw / 2 - wstr.size() / 2,
--		wstr.c_str());
-+		"%s", wstr.c_str());
- 
- 	refresh();
- }
-@@ -1100,7 +1100,7 @@ void curses_textbox::render()
- 		attrset(m_parent->m_colors[sinsp_cursesui::LARGE_NUMBER]);
- 		mvprintw(0,
- 			m_parent->m_screenw / 2 - wstr.size() / 2,
--			wstr.c_str());
-+			"%s", wstr.c_str());
- 	}
- 
- 	//
-diff --git a/userspace/libsinsp/cursesspectro.cpp b/userspace/libsinsp/cursesspectro.cpp
-index 6858bc95..32012963 100644
---- a/userspace/libsinsp/cursesspectro.cpp
-+++ b/userspace/libsinsp/cursesspectro.cpp
-@@ -227,7 +227,7 @@ void curses_spectro::print_error(string wstr)
- 	mvwprintw(m_tblwin, 
- 		m_parent->m_screenh / 2,
- 		m_parent->m_screenw / 2 - wstr.size() / 2, 
--		wstr.c_str());	
-+		"%s", wstr.c_str());	
- }
- 
- void curses_spectro::update_data(vector<sinsp_sample_row>* data, bool force_selection_change)
-diff --git a/userspace/libsinsp/cursestable.cpp b/userspace/libsinsp/cursestable.cpp
-index 69c2aa32..54667554 100644
---- a/userspace/libsinsp/cursestable.cpp
-+++ b/userspace/libsinsp/cursestable.cpp
-@@ -254,7 +254,7 @@ void curses_table::print_line_centered(string line, int32_t off)
- 		mvwprintw(m_tblwin, 
- 			m_parent->m_screenh / 2 + off,
- 			m_parent->m_screenw / 2 - line.size() / 2, 
--			line.c_str());
-+			"%s", line.c_str());
- 	}
- 	else
- 	{
-@@ -268,7 +268,7 @@ glogf("2, %d %s\n", spos, ss.c_str());
- 			mvwprintw(m_tblwin, 
- 				m_parent->m_screenh / 2 + off + j,
- 				0,
--				ss.c_str());
-+				"%s", ss.c_str());
- 
- 			spos += m_parent->m_screenw;
- 			if(spos >= line.size())
-@@ -328,7 +328,7 @@ void curses_table::print_error(string wstr)
- 	mvwprintw(m_tblwin, 
- 		m_parent->m_screenh / 2,
- 		m_parent->m_screenw / 2 - wstr.size() / 2, 
--		wstr.c_str());	
-+		"%s", wstr.c_str());	
- }
- 
- void curses_table::render(bool data_changed)
-diff --git a/userspace/libsinsp/cursesui.cpp b/userspace/libsinsp/cursesui.cpp
-index 1eeb0864..69652edc 100644
---- a/userspace/libsinsp/cursesui.cpp
-+++ b/userspace/libsinsp/cursesui.cpp
-@@ -825,7 +825,7 @@ void sinsp_cursesui::render_header()
- 		attrset(m_colors[sinsp_cursesui::LARGE_NUMBER]);
- 		mvprintw(0,
- 			m_screenw / 2 - wstr.size() / 2, 
--			wstr.c_str());	
-+			"%s", wstr.c_str());	
- 	}
- 
- 	//
-@@ -1123,7 +1123,7 @@ void sinsp_cursesui::render_filtersearch_main_menu()
- 
- 		m_cursor_pos = cursor_pos;
- 
--		mvprintw(m_screenh - 1, m_cursor_pos, str->c_str());
-+		mvprintw(m_screenh - 1, m_cursor_pos, "%s", str->c_str());
- 
- 		m_cursor_pos += str->size();
- 	}
-@@ -2189,7 +2189,7 @@ void sinsp_cursesui::print_progress(double progress)
- 	string wstr = "Processing File";
- 	mvprintw(m_screenh / 2,
- 		m_screenw / 2 - wstr.size() / 2, 
--		wstr.c_str());	
-+		"%s", wstr.c_str());	
- 
- 	//
- 	// Using sprintf because to_string doesn't support setting the precision 
-@@ -2199,7 +2199,7 @@ void sinsp_cursesui::print_progress(double progress)
- 	wstr = "Progress: " + string(numbuf);
- 	mvprintw(m_screenh / 2 + 1,
- 		m_screenw / 2 - wstr.size() / 2, 
--		wstr.c_str());
-+		"%s", wstr.c_str());
- 
- 	refresh();
- }
-@@ -2308,7 +2308,7 @@ sysdig_table_action sinsp_cursesui::handle_textbox_input(int ch)
- 						attrset(m_colors[sinsp_cursesui::FAILED_SEARCH]);
- 						mvprintw(m_screenh / 2,
- 							m_screenw / 2 - wstr.size() / 2, 
--							wstr.c_str());	
-+							"%s", wstr.c_str());	
- 
- 						//
- 						// Restore the cursor
-@@ -2363,7 +2363,7 @@ sysdig_table_action sinsp_cursesui::handle_textbox_input(int ch)
- 
- 					mvprintw(m_screenh / 2,
- 						m_screenw / 2 - wstr.size() / 2, 
--						wstr.c_str());
-+						"%s", wstr.c_str());
- 
- 					render();
- 				}
-@@ -2436,7 +2436,7 @@ sysdig_table_action sinsp_cursesui::handle_textbox_input(int ch)
- 
- 				mvprintw(m_screenh / 2,
- 					m_screenw / 2 - wstr.size() / 2, 
--					wstr.c_str());
-+					"%s", wstr.c_str());
- 
- 				render();
- 			}
--- 
-2.33.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/aarch64.patch b/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/aarch64.patch
deleted file mode 100644
index f16b0ec..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/aarch64.patch
+++ /dev/null
@@ -1,359 +0,0 @@
-Check if legacy syscalls exist
-
-A lot of legacy syscalls are replaced with *at and are not implemented in newer
-architectures like aarch64
-
-Upstream-Status: Submitted [https://github.com/draios/sysdig/pull/1601]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/driver/syscall_table.c
-+++ b/driver/syscall_table.c
-@@ -42,26 +42,46 @@ or GPL2.txt for full copies of the licen
-  * SYSCALL TABLE
-  */
- const struct syscall_evt_pair g_syscall_table[SYSCALL_TABLE_SIZE] = {
-+#ifdef __NR_open
- 	[__NR_open - SYSCALL_TABLE_ID0] =                       {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_OPEN_E, PPME_SYSCALL_OPEN_X},
-+#endif
-+#ifdef __NR_creat
- 	[__NR_creat - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_CREAT_E, PPME_SYSCALL_CREAT_X},
-+#endif
- 	[__NR_close - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_CLOSE_E, PPME_SYSCALL_CLOSE_X},
- 	[__NR_brk - SYSCALL_TABLE_ID0] =                        {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_BRK_4_E, PPME_SYSCALL_BRK_4_X},
- 	[__NR_read - SYSCALL_TABLE_ID0] =                       {UF_USED, PPME_SYSCALL_READ_E, PPME_SYSCALL_READ_X},
- 	[__NR_write - SYSCALL_TABLE_ID0] =                      {UF_USED, PPME_SYSCALL_WRITE_E, PPME_SYSCALL_WRITE_X},
- 	[__NR_execve - SYSCALL_TABLE_ID0] =                     {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_EXECVE_19_E, PPME_SYSCALL_EXECVE_19_X},
- 	[__NR_clone - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_CLONE_20_E, PPME_SYSCALL_CLONE_20_X},
-+#ifdef __NR_fork
- 	[__NR_fork - SYSCALL_TABLE_ID0] =                       {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_FORK_20_E, PPME_SYSCALL_FORK_20_X},
-+#endif
-+#ifdef __NR_vfork
- 	[__NR_vfork - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_VFORK_20_E, PPME_SYSCALL_VFORK_20_X},
-+#endif
-+#ifdef __NR_pipe
- 	[__NR_pipe - SYSCALL_TABLE_ID0] =                       {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_PIPE_E, PPME_SYSCALL_PIPE_X},
-+#endif
- 	[__NR_pipe2 - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_PIPE_E, PPME_SYSCALL_PIPE_X},
-+#ifdef __NR_eventfd
- 	[__NR_eventfd - SYSCALL_TABLE_ID0] =                    {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_EVENTFD_E, PPME_SYSCALL_EVENTFD_X},
-+#endif
- 	[__NR_eventfd2 - SYSCALL_TABLE_ID0] =                   {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_EVENTFD_E, PPME_SYSCALL_EVENTFD_X},
- 	[__NR_futex - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_FUTEX_E, PPME_SYSCALL_FUTEX_X},
-+#ifdef __NR_stat
- 	[__NR_stat - SYSCALL_TABLE_ID0] =                       {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_STAT_E, PPME_SYSCALL_STAT_X},
-+#endif
-+#ifdef __NR_lstat
- 	[__NR_lstat - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_LSTAT_E, PPME_SYSCALL_LSTAT_X},
-+#endif
- 	[__NR_fstat - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_FSTAT_E, PPME_SYSCALL_FSTAT_X},
-+#ifdef __NR_epoll_wait
- 	[__NR_epoll_wait - SYSCALL_TABLE_ID0] =                 {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_EPOLLWAIT_E, PPME_SYSCALL_EPOLLWAIT_X},
-+#endif
-+#ifdef __NR_poll
- 	[__NR_poll - SYSCALL_TABLE_ID0] =                       {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_POLL_E, PPME_SYSCALL_POLL_X},
-+#endif
- #ifdef __NR_select
- 	[__NR_select - SYSCALL_TABLE_ID0] =                     {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_SELECT_E, PPME_SYSCALL_SELECT_X},
- #endif
-@@ -70,13 +90,21 @@ const struct syscall_evt_pair g_syscall_
- 	[__NR_getcwd - SYSCALL_TABLE_ID0] =                     {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_GETCWD_E, PPME_SYSCALL_GETCWD_X},
- 	[__NR_chdir - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_CHDIR_E, PPME_SYSCALL_CHDIR_X},
- 	[__NR_fchdir - SYSCALL_TABLE_ID0] =                     {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_FCHDIR_E, PPME_SYSCALL_FCHDIR_X},
-+#ifdef __NR_mkdir
- 	[__NR_mkdir - SYSCALL_TABLE_ID0] =                      {UF_USED, PPME_SYSCALL_MKDIR_2_E, PPME_SYSCALL_MKDIR_2_X},
-+#endif
-+#ifdef __NR_rmdir
- 	[__NR_rmdir - SYSCALL_TABLE_ID0] =                      {UF_USED, PPME_SYSCALL_RMDIR_2_E, PPME_SYSCALL_RMDIR_2_X},
-+#endif
- 	[__NR_openat - SYSCALL_TABLE_ID0] =                     {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_OPENAT_2_E, PPME_SYSCALL_OPENAT_2_X},
- 	[__NR_mkdirat - SYSCALL_TABLE_ID0] =                    {UF_USED, PPME_SYSCALL_MKDIRAT_E, PPME_SYSCALL_MKDIRAT_X},
-+#ifdef __NR_link
- 	[__NR_link - SYSCALL_TABLE_ID0] =                       {UF_USED, PPME_SYSCALL_LINK_2_E, PPME_SYSCALL_LINK_2_X},
-+#endif
- 	[__NR_linkat - SYSCALL_TABLE_ID0] =                     {UF_USED, PPME_SYSCALL_LINKAT_2_E, PPME_SYSCALL_LINKAT_2_X},
-+#ifdef __NR_unlink
- 	[__NR_unlink - SYSCALL_TABLE_ID0] =                     {UF_USED, PPME_SYSCALL_UNLINK_2_E, PPME_SYSCALL_UNLINK_2_X},
-+#endif
- 	[__NR_unlinkat - SYSCALL_TABLE_ID0] =                   {UF_USED, PPME_SYSCALL_UNLINKAT_2_E, PPME_SYSCALL_UNLINKAT_2_X},
- 	[__NR_pread64 - SYSCALL_TABLE_ID0] =                    {UF_USED, PPME_SYSCALL_PREAD_E, PPME_SYSCALL_PREAD_X},
- 	[__NR_pwrite64 - SYSCALL_TABLE_ID0] =                   {UF_USED, PPME_SYSCALL_PWRITE_E, PPME_SYSCALL_PWRITE_X},
-@@ -85,16 +113,22 @@ const struct syscall_evt_pair g_syscall_
- 	[__NR_preadv - SYSCALL_TABLE_ID0] =                     {UF_USED, PPME_SYSCALL_PREADV_E, PPME_SYSCALL_PREADV_X},
- 	[__NR_pwritev - SYSCALL_TABLE_ID0] =                    {UF_USED, PPME_SYSCALL_PWRITEV_E, PPME_SYSCALL_PWRITEV_X},
- 	[__NR_dup - SYSCALL_TABLE_ID0] =                        {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_DUP_E, PPME_SYSCALL_DUP_X},
-+#ifdef __NR_dup2
- 	[__NR_dup2 - SYSCALL_TABLE_ID0] =                       {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_DUP_E, PPME_SYSCALL_DUP_X},
-+#endif
- 	[__NR_dup3 - SYSCALL_TABLE_ID0] =                       {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_DUP_E, PPME_SYSCALL_DUP_X},
-+#ifdef __NR_signalfd
- 	[__NR_signalfd - SYSCALL_TABLE_ID0] =                   {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_SIGNALFD_E, PPME_SYSCALL_SIGNALFD_X},
-+#endif
- 	[__NR_signalfd4 - SYSCALL_TABLE_ID0] =                  {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_SIGNALFD_E, PPME_SYSCALL_SIGNALFD_X},
- 	[__NR_kill - SYSCALL_TABLE_ID0] =                       {UF_USED, PPME_SYSCALL_KILL_E, PPME_SYSCALL_KILL_X},
- 	[__NR_tkill - SYSCALL_TABLE_ID0] =                      {UF_USED, PPME_SYSCALL_TKILL_E, PPME_SYSCALL_TKILL_X},
- 	[__NR_tgkill - SYSCALL_TABLE_ID0] =                     {UF_USED, PPME_SYSCALL_TGKILL_E, PPME_SYSCALL_TGKILL_X},
- 	[__NR_nanosleep - SYSCALL_TABLE_ID0] =                  {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_NANOSLEEP_E, PPME_SYSCALL_NANOSLEEP_X},
- 	[__NR_timerfd_create - SYSCALL_TABLE_ID0] =             {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_TIMERFD_CREATE_E, PPME_SYSCALL_TIMERFD_CREATE_X},
-+#ifdef __NR_inotify_init
- 	[__NR_inotify_init - SYSCALL_TABLE_ID0] =               {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_INOTIFY_INIT_E, PPME_SYSCALL_INOTIFY_INIT_X},
-+#endif
- 	[__NR_inotify_init1 - SYSCALL_TABLE_ID0] =              {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_INOTIFY_INIT_E, PPME_SYSCALL_INOTIFY_INIT_X},
- 	[__NR_fchmodat - SYSCALL_TABLE_ID0] =                   {UF_USED, PPME_SYSCALL_FCHMODAT_E, PPME_SYSCALL_FCHMODAT_X},
- 	[__NR_fchmod - SYSCALL_TABLE_ID0] =                     {UF_USED, PPME_SYSCALL_FCHMOD_E, PPME_SYSCALL_FCHMOD_X},
-@@ -114,14 +148,22 @@ const struct syscall_evt_pair g_syscall_
- #endif
- /* [__NR_old_select - SYSCALL_TABLE_ID0] =	{UF_USED, PPME_GENERIC_E, PPME_GENERIC_X}, */
- 	[__NR_pselect6 - SYSCALL_TABLE_ID0] =                   {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
-+#ifdef __NR_epoll_create
- 	[__NR_epoll_create - SYSCALL_TABLE_ID0] =               {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
-+#endif
- 	[__NR_epoll_ctl - SYSCALL_TABLE_ID0] =                  {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
-+#ifdef __NR_uselib
- 	[__NR_uselib - SYSCALL_TABLE_ID0] =                     {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
-+#endif
- 	[__NR_sched_setparam - SYSCALL_TABLE_ID0] =             {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
- 	[__NR_sched_getparam - SYSCALL_TABLE_ID0] =             {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
- 	[__NR_syslog - SYSCALL_TABLE_ID0] =                     {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
-+#ifdef __NR_chmod
- 	[__NR_chmod - SYSCALL_TABLE_ID0] =                      {UF_USED, PPME_SYSCALL_CHMOD_E, PPME_SYSCALL_CHMOD_X},
-+#endif
-+#ifdef __NR_lchown
- 	[__NR_lchown - SYSCALL_TABLE_ID0] =                     {UF_USED, PPME_GENERIC_E, PPME_GENERIC_X},
-+#endif
- #ifdef __NR_utime
- 	[__NR_utime - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
- #endif
-@@ -131,8 +173,9 @@ const struct syscall_evt_pair g_syscall_
- #ifdef __NR_alarm
- 	[__NR_alarm - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
- #endif
-+#ifdef __NR_pause
- 	[__NR_pause - SYSCALL_TABLE_ID0] =                      {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
--
-+#endif
- #ifndef __NR_socketcall
- 	[__NR_socket - SYSCALL_TABLE_ID0] =                     {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SOCKET_SOCKET_E, PPME_SOCKET_SOCKET_X},
- 	[__NR_bind - SYSCALL_TABLE_ID0] =                       {UF_USED | UF_NEVER_DROP, PPME_SOCKET_BIND_E,  PPME_SOCKET_BIND_X},
-@@ -184,9 +227,13 @@ const struct syscall_evt_pair g_syscall_
- 	[__NR_process_vm_writev - SYSCALL_TABLE_ID0] =          {UF_USED, PPME_GENERIC_E, PPME_GENERIC_X},
- #endif
- 
-+#ifdef __NR_rename
- 	[__NR_rename - SYSCALL_TABLE_ID0] =                     {UF_USED, PPME_SYSCALL_RENAME_E, PPME_SYSCALL_RENAME_X},
-+#endif
- 	[__NR_renameat - SYSCALL_TABLE_ID0] =                   {UF_USED, PPME_SYSCALL_RENAMEAT_E, PPME_SYSCALL_RENAMEAT_X},
-+#ifdef __NR_symlink
- 	[__NR_symlink - SYSCALL_TABLE_ID0] =                    {UF_USED, PPME_SYSCALL_SYMLINK_E, PPME_SYSCALL_SYMLINK_X},
-+#endif
- 	[__NR_symlinkat - SYSCALL_TABLE_ID0] =                  {UF_USED, PPME_SYSCALL_SYMLINKAT_E, PPME_SYSCALL_SYMLINKAT_X},
- 	[__NR_sendfile - SYSCALL_TABLE_ID0] =                   {UF_USED, PPME_SYSCALL_SENDFILE_E, PPME_SYSCALL_SENDFILE_X},
- #ifdef __NR_sendfile64
-@@ -255,7 +302,9 @@ const struct syscall_evt_pair g_syscall_
- #ifdef __NR_getresgid32
- 	[__NR_getresgid32 - SYSCALL_TABLE_ID0] =                {UF_USED, PPME_SYSCALL_GETRESGID_E, PPME_SYSCALL_GETRESGID_X },
- #endif
-+#ifdef __NR_getdents
- 	[__NR_getdents - SYSCALL_TABLE_ID0] =                   {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_GETDENTS_E, PPME_SYSCALL_GETDENTS_X},
-+#endif
- 	[__NR_getdents64 - SYSCALL_TABLE_ID0] =                 {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_GETDENTS64_E, PPME_SYSCALL_GETDENTS64_X},
- #ifdef __NR_setns
- 	[__NR_setns - SYSCALL_TABLE_ID0] =                      {UF_USED, PPME_SYSCALL_SETNS_E, PPME_SYSCALL_SETNS_X},
-@@ -298,19 +347,33 @@ const enum ppm_syscall_code g_syscall_co
- 	[__NR_exit - SYSCALL_TABLE_ID0] = PPM_SC_EXIT,
- 	[__NR_read - SYSCALL_TABLE_ID0] = PPM_SC_READ,
- 	[__NR_write - SYSCALL_TABLE_ID0] = PPM_SC_WRITE,
-+#ifdef __NR_open
- 	[__NR_open - SYSCALL_TABLE_ID0] = PPM_SC_OPEN,
-+#endif
- 	[__NR_close - SYSCALL_TABLE_ID0] = PPM_SC_CLOSE,
-+#ifdef __NR_creat
- 	[__NR_creat - SYSCALL_TABLE_ID0] = PPM_SC_CREAT,
-+#endif
-+#ifdef __NR_link
- 	[__NR_link - SYSCALL_TABLE_ID0] = PPM_SC_LINK,
-+#endif
-+#ifdef __NR_unlink
- 	[__NR_unlink - SYSCALL_TABLE_ID0] = PPM_SC_UNLINK,
-+#endif
- 	[__NR_chdir - SYSCALL_TABLE_ID0] = PPM_SC_CHDIR,
- #ifdef __NR_time
- 	[__NR_time - SYSCALL_TABLE_ID0] = PPM_SC_TIME,
- #endif
-+#ifdef __NR_mknod
- 	[__NR_mknod - SYSCALL_TABLE_ID0] = PPM_SC_MKNOD,
-+#endif
-+#ifdef __NR_chmod
- 	[__NR_chmod - SYSCALL_TABLE_ID0] = PPM_SC_CHMOD,
-+#endif
- /* [__NR_lchown16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_LCHOWN16, */
-+#ifdef __NR_stat
- 	[__NR_stat - SYSCALL_TABLE_ID0] = PPM_SC_STAT,
-+#endif
- 	[__NR_lseek - SYSCALL_TABLE_ID0] = PPM_SC_LSEEK,
- 	[__NR_getpid - SYSCALL_TABLE_ID0] = PPM_SC_GETPID,
- 	[__NR_mount - SYSCALL_TABLE_ID0] = PPM_SC_MOUNT,
-@@ -322,17 +385,27 @@ const enum ppm_syscall_code g_syscall_co
- 	[__NR_alarm - SYSCALL_TABLE_ID0] = PPM_SC_ALARM,
- #endif
- 	[__NR_fstat - SYSCALL_TABLE_ID0] = PPM_SC_FSTAT,
-+#ifdef __NR_pause
- 	[__NR_pause - SYSCALL_TABLE_ID0] = PPM_SC_PAUSE,
-+#endif
- #ifdef __NR_utime
- 	[__NR_utime - SYSCALL_TABLE_ID0] = PPM_SC_UTIME,
- #endif
- 	[__NR_sync - SYSCALL_TABLE_ID0] = PPM_SC_SYNC,
- 	[__NR_kill - SYSCALL_TABLE_ID0] = PPM_SC_KILL,
-+#ifdef __NR_rename
- 	[__NR_rename - SYSCALL_TABLE_ID0] = PPM_SC_RENAME,
-+#endif
-+#ifdef __NR_mkdir
- 	[__NR_mkdir - SYSCALL_TABLE_ID0] = PPM_SC_MKDIR,
-+#endif
-+#ifdef __NR_rmdir
- 	[__NR_rmdir - SYSCALL_TABLE_ID0] = PPM_SC_RMDIR,
-+#endif
- 	[__NR_dup - SYSCALL_TABLE_ID0] = PPM_SC_DUP,
-+#ifdef __NR_pipe
- 	[__NR_pipe - SYSCALL_TABLE_ID0] = PPM_SC_PIPE,
-+#endif
- 	[__NR_times - SYSCALL_TABLE_ID0] = PPM_SC_TIMES,
- 	[__NR_brk - SYSCALL_TABLE_ID0] = PPM_SC_BRK,
- /* [__NR_setgid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETGID16, */
-@@ -345,10 +418,16 @@ const enum ppm_syscall_code g_syscall_co
- 	[__NR_setpgid - SYSCALL_TABLE_ID0] = PPM_SC_SETPGID,
- 	[__NR_umask - SYSCALL_TABLE_ID0] = PPM_SC_UMASK,
- 	[__NR_chroot - SYSCALL_TABLE_ID0] = PPM_SC_CHROOT,
-+#ifdef __NR_ustat
- 	[__NR_ustat - SYSCALL_TABLE_ID0] = PPM_SC_USTAT,
-+#endif
-+#ifdef __NR_dup2
- 	[__NR_dup2 - SYSCALL_TABLE_ID0] = PPM_SC_DUP2,
-+#endif
- 	[__NR_getppid - SYSCALL_TABLE_ID0] = PPM_SC_GETPPID,
-+#ifdef __NR_getpgrp
- 	[__NR_getpgrp - SYSCALL_TABLE_ID0] = PPM_SC_GETPGRP,
-+#endif
- 	[__NR_setsid - SYSCALL_TABLE_ID0] = PPM_SC_SETSID,
- 	[__NR_sethostname - SYSCALL_TABLE_ID0] = PPM_SC_SETHOSTNAME,
- 	[__NR_setrlimit - SYSCALL_TABLE_ID0] = PPM_SC_SETRLIMIT,
-@@ -359,10 +438,18 @@ const enum ppm_syscall_code g_syscall_co
- /* [__NR_getgroups16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_GETGROUPS16, */
- /* [__NR_setgroups16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETGROUPS16, */
- /* [__NR_old_select - SYSCALL_TABLE_ID0] = PPM_SC_NR_OLD_SELECT, */
-+#ifdef __NR_symlink
- 	[__NR_symlink - SYSCALL_TABLE_ID0] = PPM_SC_SYMLINK,
-+#endif
-+#ifdef __NR_lstat
- 	[__NR_lstat - SYSCALL_TABLE_ID0] = PPM_SC_LSTAT,
-+#endif
-+#ifdef __NR_readlink
- 	[__NR_readlink - SYSCALL_TABLE_ID0] = PPM_SC_READLINK,
-+#endif
-+#ifdef __NR_uselib
- 	[__NR_uselib - SYSCALL_TABLE_ID0] = PPM_SC_USELIB,
-+#endif
- 	[__NR_swapon - SYSCALL_TABLE_ID0] = PPM_SC_SWAPON,
- 	[__NR_reboot - SYSCALL_TABLE_ID0] = PPM_SC_REBOOT,
- /* [__NR_old_readdir - SYSCALL_TABLE_ID0] = PPM_SC_NR_OLD_READDIR, */
-@@ -399,12 +486,16 @@ const enum ppm_syscall_code g_syscall_co
- 	[__NR_delete_module - SYSCALL_TABLE_ID0] = PPM_SC_DELETE_MODULE,
- 	[__NR_getpgid - SYSCALL_TABLE_ID0] = PPM_SC_GETPGID,
- 	[__NR_fchdir - SYSCALL_TABLE_ID0] = PPM_SC_FCHDIR,
-+#ifdef __NR_sysfs
- 	[__NR_sysfs - SYSCALL_TABLE_ID0] = PPM_SC_SYSFS,
-+#endif
- 	[__NR_personality - SYSCALL_TABLE_ID0] = PPM_SC_PERSONALITY,
- /* [__NR_setfsuid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETFSUID16, */
- /* [__NR_setfsgid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETFSGID16, */
- /* [__NR_llseek - SYSCALL_TABLE_ID0] = PPM_SC_NR_LLSEEK, */
-+#ifdef __NR_getdents
- 	[__NR_getdents - SYSCALL_TABLE_ID0] = PPM_SC_GETDENTS,
-+#endif
- #ifdef __NR_select
- 	[__NR_select - SYSCALL_TABLE_ID0] = PPM_SC_SELECT,
- #endif
-@@ -431,7 +522,9 @@ const enum ppm_syscall_code g_syscall_co
- 	[__NR_mremap - SYSCALL_TABLE_ID0] = PPM_SC_MREMAP,
- /* [__NR_setresuid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETRESUID16, */
- /* [__NR_getresuid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_GETRESUID16, */
-+#ifdef __NR_poll
- 	[__NR_poll - SYSCALL_TABLE_ID0] = PPM_SC_POLL,
-+#endif
- /* [__NR_setresgid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETRESGID16, */
- /* [__NR_getresgid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_GETRESGID16, */
- 	[__NR_prctl - SYSCALL_TABLE_ID0] = PPM_SC_PRCTL,
-@@ -453,13 +546,17 @@ const enum ppm_syscall_code g_syscall_co
- 	[__NR_getrlimit - SYSCALL_TABLE_ID0] = PPM_SC_GETRLIMIT,
- #endif
- /* [__NR_mmap_pgoff - SYSCALL_TABLE_ID0] = PPM_SC_NR_MMAP_PGOFF, */
-+#ifdef __NR_lchown
- 	[__NR_lchown - SYSCALL_TABLE_ID0] = PPM_SC_LCHOWN,
-+#endif
- 	[__NR_setreuid - SYSCALL_TABLE_ID0] = PPM_SC_SETREUID,
- 	[__NR_setregid - SYSCALL_TABLE_ID0] = PPM_SC_SETREGID,
- 	[__NR_getgroups - SYSCALL_TABLE_ID0] = PPM_SC_GETGROUPS,
- 	[__NR_setgroups - SYSCALL_TABLE_ID0] = PPM_SC_SETGROUPS,
- 	[__NR_fchown - SYSCALL_TABLE_ID0] = PPM_SC_FCHOWN,
-+#ifdef __NR_chown
- 	[__NR_chown - SYSCALL_TABLE_ID0] = PPM_SC_CHOWN,
-+#endif
- 	[__NR_setfsuid - SYSCALL_TABLE_ID0] = PPM_SC_SETFSUID,
- 	[__NR_setfsgid - SYSCALL_TABLE_ID0] = PPM_SC_SETFSGID,
- 	[__NR_pivot_root - SYSCALL_TABLE_ID0] = PPM_SC_PIVOT_ROOT,
-@@ -494,9 +591,13 @@ const enum ppm_syscall_code g_syscall_co
- 	[__NR_io_submit - SYSCALL_TABLE_ID0] = PPM_SC_IO_SUBMIT,
- 	[__NR_io_cancel - SYSCALL_TABLE_ID0] = PPM_SC_IO_CANCEL,
- 	[__NR_exit_group - SYSCALL_TABLE_ID0] = PPM_SC_EXIT_GROUP,
-+#ifdef __NR_epoll_create
- 	[__NR_epoll_create - SYSCALL_TABLE_ID0] = PPM_SC_EPOLL_CREATE,
-+#endif
- 	[__NR_epoll_ctl - SYSCALL_TABLE_ID0] = PPM_SC_EPOLL_CTL,
-+#ifdef __NR_epoll_wait
- 	[__NR_epoll_wait - SYSCALL_TABLE_ID0] = PPM_SC_EPOLL_WAIT,
-+#endif
- 	[__NR_remap_file_pages - SYSCALL_TABLE_ID0] = PPM_SC_REMAP_FILE_PAGES,
- 	[__NR_set_tid_address - SYSCALL_TABLE_ID0] = PPM_SC_SET_TID_ADDRESS,
- 	[__NR_timer_create - SYSCALL_TABLE_ID0] = PPM_SC_TIMER_CREATE,
-@@ -509,7 +610,9 @@ const enum ppm_syscall_code g_syscall_co
- 	[__NR_clock_getres - SYSCALL_TABLE_ID0] = PPM_SC_CLOCK_GETRES,
- 	[__NR_clock_nanosleep - SYSCALL_TABLE_ID0] = PPM_SC_CLOCK_NANOSLEEP,
- 	[__NR_tgkill - SYSCALL_TABLE_ID0] = PPM_SC_TGKILL,
-+#ifdef __NR_utimes
- 	[__NR_utimes - SYSCALL_TABLE_ID0] = PPM_SC_UTIMES,
-+#endif
- 	[__NR_mq_open - SYSCALL_TABLE_ID0] = PPM_SC_MQ_OPEN,
- 	[__NR_mq_unlink - SYSCALL_TABLE_ID0] = PPM_SC_MQ_UNLINK,
- 	[__NR_mq_timedsend - SYSCALL_TABLE_ID0] = PPM_SC_MQ_TIMEDSEND,
-@@ -523,14 +626,18 @@ const enum ppm_syscall_code g_syscall_co
- 	[__NR_keyctl - SYSCALL_TABLE_ID0] = PPM_SC_KEYCTL,
- 	[__NR_ioprio_set - SYSCALL_TABLE_ID0] = PPM_SC_IOPRIO_SET,
- 	[__NR_ioprio_get - SYSCALL_TABLE_ID0] = PPM_SC_IOPRIO_GET,
-+#ifdef __NR_inotify_init
- 	[__NR_inotify_init - SYSCALL_TABLE_ID0] = PPM_SC_INOTIFY_INIT,
-+#endif
- 	[__NR_inotify_add_watch - SYSCALL_TABLE_ID0] = PPM_SC_INOTIFY_ADD_WATCH,
- 	[__NR_inotify_rm_watch - SYSCALL_TABLE_ID0] = PPM_SC_INOTIFY_RM_WATCH,
- 	[__NR_openat - SYSCALL_TABLE_ID0] = PPM_SC_OPENAT,
- 	[__NR_mkdirat - SYSCALL_TABLE_ID0] = PPM_SC_MKDIRAT,
- 	[__NR_mknodat - SYSCALL_TABLE_ID0] = PPM_SC_MKNODAT,
- 	[__NR_fchownat - SYSCALL_TABLE_ID0] = PPM_SC_FCHOWNAT,
-+#ifdef __NR_futimesat
- 	[__NR_futimesat - SYSCALL_TABLE_ID0] = PPM_SC_FUTIMESAT,
-+#endif
- 	[__NR_unlinkat - SYSCALL_TABLE_ID0] = PPM_SC_UNLINKAT,
- 	[__NR_renameat - SYSCALL_TABLE_ID0] = PPM_SC_RENAMEAT,
- 	[__NR_linkat - SYSCALL_TABLE_ID0] = PPM_SC_LINKAT,
-@@ -551,9 +658,13 @@ const enum ppm_syscall_code g_syscall_co
- #endif
- 	[__NR_epoll_pwait - SYSCALL_TABLE_ID0] = PPM_SC_EPOLL_PWAIT,
- 	[__NR_utimensat - SYSCALL_TABLE_ID0] = PPM_SC_UTIMENSAT,
-+#ifdef __NR_signalfd
- 	[__NR_signalfd - SYSCALL_TABLE_ID0] = PPM_SC_SIGNALFD,
-+#endif
- 	[__NR_timerfd_create - SYSCALL_TABLE_ID0] = PPM_SC_TIMERFD_CREATE,
-+#ifdef __NR_eventfd
- 	[__NR_eventfd - SYSCALL_TABLE_ID0] = PPM_SC_EVENTFD,
-+#endif
- 	[__NR_timerfd_settime - SYSCALL_TABLE_ID0] = PPM_SC_TIMERFD_SETTIME,
- 	[__NR_timerfd_gettime - SYSCALL_TABLE_ID0] = PPM_SC_TIMERFD_GETTIME,
- 	[__NR_signalfd4 - SYSCALL_TABLE_ID0] = PPM_SC_SIGNALFD4,
diff --git a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb b/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_0.28.0.bb
similarity index 67%
rename from meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb
rename to meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_0.28.0.bb
index 340a124..4181da7 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_0.28.0.bb
@@ -3,7 +3,7 @@
 system state and activity from a running Linux instance, then save, \
 filter and analyze."
 HOMEPAGE = "http://www.sysdig.org/"
-LICENSE = "Apache-2.0 & (MIT | GPL-2.0)"
+LICENSE = "Apache-2.0 & (MIT | GPL-2.0-only)"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f8fee3d59797546cffab04f3b88b2d44"
 
 inherit cmake pkgconfig
@@ -18,28 +18,32 @@
 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"
+DEPENDS += "libb64 lua${JIT} zlib c-ares grpc-native grpc curl ncurses jsoncpp \
+            tbb jq openssl elfutils protobuf protobuf-native jq-native valijson"
 RDEPENDS:${PN} = "bash"
 
-SRC_URI = "git://github.com/draios/sysdig.git;branch=dev;protocol=https \
-           file://0001-fix-build-with-LuaJIT-2.1-betas.patch \
-           file://aarch64.patch \
-           file://0001-libsinsp-Fix-a-lot-of-Werror-format-security-errors-.patch \
+SRC_URI = "git://github.com/draios/sysdig.git;branch=dev;protocol=https;name=sysdig \
+           git://github.com/falcosecurity/libs;protocol=https;branch=master;name=falco;subdir=git/falcosecurity-libs \
+           file://0001-cmake-Pass-PROBE_NAME-via-CFLAGS.patch \
           "
-SRCREV = "67833b2aca06bd9d11cff7cb29f04fbf4ef96cad"
-PV = "0.27.1"
+SRCREV_sysdig = "4fb6288275f567f63515df0ff0a6518043ecfa9b"
+SRCREV_falco= "caa0e4d0044fdaaebab086592a97f0c7f32aeaa9"
 
 S = "${WORKDIR}/git"
 
 EXTRA_OECMAKE = "\
                 -DBUILD_DRIVER=OFF \
+                -DMINIMAL_BUILD=ON \
                 -DUSE_BUNDLED_DEPS=OFF \
                 -DCREATE_TEST_TARGETS=OFF \
                 -DDIR_ETC=${sysconfdir} \
                 -DLUA_INCLUDE_DIR=${STAGING_INCDIR}/luajit-2.1 \
-                -DLUA_LIBRARY=libluajit-5.1.so \
+                -DFALCOSECURITY_LIBS_SOURCE_DIR=${S}/falcosecurity-libs \
+                -DVALIJSON_INCLUDE=${STAGING_INCDIR}/valijson \
 "
 
+#CMAKE_VERBOSE = "VERBOSE=1"
+
 FILES:${PN} += " \
     ${DIR_ETC}/* \
     ${datadir}/zsh/* \
@@ -54,3 +58,4 @@
 COMPATIBLE_HOST:riscv64 = "null"
 COMPATIBLE_HOST:riscv32 = "null"
 COMPATIBLE_HOST:powerpc = "null"
+COMPATIBLE_HOST:powerpc64le = "null"
diff --git a/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_git.bb b/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_git.bb
index 271fe7a..fc64ec0 100644
--- a/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Transparent Inter-Process Communication protocol"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://tipclog/tipc.h;endline=35;md5=985b6ea8735818511d276c1b466cce98"
 
 SRC_URI = "git://git.code.sf.net/p/tipc/tipcutils;branch=master \
diff --git a/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.1.bb b/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.1.bb
index 13aa92e..8dca294 100644
--- a/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Hardware performance monitoring counters"
 HOMEPAGE = "https://team.inria.fr/pacap/software/tiptop/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 DEPENDS = "ncurses libxml2 bison-native flex-native"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/triggerhappy/triggerhappy_git.bb b/meta-openembedded/meta-oe/recipes-extended/triggerhappy/triggerhappy_git.bb
index c8d5857..3a3dd19 100644
--- a/meta-openembedded/meta-oe/recipes-extended/triggerhappy/triggerhappy_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/triggerhappy/triggerhappy_git.bb
@@ -1,7 +1,7 @@
 SUMMARY = "A lightweight hotkey daemon"
 HOMEPAGE = "https://github.com/wertarbyte/triggerhappy"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 # matches debian/0.5.0-1 tag
diff --git a/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb b/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb
index 3e8d87f..663a145 100644
--- a/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb
@@ -1,6 +1,6 @@
 SECTION = "console/utils"
 SUMMARY = "Utilities for User-Mode-Linux"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 DEPENDS = "zlib ncurses readline"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
 SRC_URI = "http://downloads.sourceforge.net/project/user-mode-linux/tools/1/uml_utilities_${PV}.tar.bz2 \
@@ -22,7 +22,7 @@
 }
 
 do_install() {
-    oe_runmake install DESTDIR=${D}
+    oe_runmake install DESTDIR=${D} LIB_DIR=${libdir}/uml
 }
 
 FILES:${PN} += "${libdir}/uml"
diff --git a/meta-openembedded/meta-oe/recipes-extended/vlock/vlock_2.2.3.bb b/meta-openembedded/meta-oe/recipes-extended/vlock/vlock_2.2.3.bb
index 3c17d7a..a374041 100644
--- a/meta-openembedded/meta-oe/recipes-extended/vlock/vlock_2.2.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/vlock/vlock_2.2.3.bb
@@ -6,7 +6,7 @@
   "
 SECTION = "utils"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=a17cb0a873d252440acfdf9b3d0e7fbf"
 
 SRC_URI = "${GENTOO_MIRROR}/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb b/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb
index ef1ae2c..faf8dd3 100644
--- a/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "The volume_key project provides a libvolume_key, a library for manipulating \
 storage volume encryption keys and storing them separately from volumes, and an \
 associated command-line tool, named volume_key."
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 SECTION = "devel/lib"
 
 HOMEPAGE = "https://pagure.io/volume_key"
diff --git a/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_0.24.bb b/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_0.24.bb
index 3ccc5af..ad32cb0 100644
--- a/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_0.24.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_0.24.bb
@@ -6,7 +6,7 @@
 packages are available on most Linux distributions. \
 Under Debian, the package name is wipe"
 HOMEPAGE = "http://lambda-diode.com/software/wipe/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
 
 SRC_URI = "git://github.com/berke/wipe.git;branch=master;protocol=https \
diff --git a/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets/fix-libdir-for-multilib.patch b/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets/fix-libdir-for-multilib.patch
new file mode 100644
index 0000000..637e54b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets/fix-libdir-for-multilib.patch
@@ -0,0 +1,83 @@
+wxWidgets hardcodes libdir with 'lib' and does not support multilib which will
+change it. Respect variable wxPLATFORM_LIB_DIR to support libdir be configurable.
+
+Upstream-Status: Pending
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ CMakeLists.txt              | 2 +-
+ build/cmake/config.cmake    | 2 +-
+ build/cmake/functions.cmake | 6 +++---
+ build/cmake/install.cmake   | 6 +++---
+ 4 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e30d3db934..8f93c57108 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -37,7 +37,7 @@ include(build/cmake/policies.cmake NO_POLICY_SCOPE)
+ # Initialize variables for quick access to wx root dir in sub dirs
+ set(wxSOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+ set(wxBINARY_DIR ${CMAKE_BINARY_DIR})
+-set(wxOUTPUT_DIR ${wxBINARY_DIR}/lib)
++set(wxOUTPUT_DIR ${wxBINARY_DIR}/lib${wxPLATFORM_LIB_DIR})
+ 
+ # parse the version number from wx/version.h and include in wxMAJOR_VERSION and wxMINOR_VERSION
+ file(READ include/wx/version.h WX_VERSION_H_CONTENTS)
+diff --git a/build/cmake/config.cmake b/build/cmake/config.cmake
+index 6978cc2725..ed16ee5635 100644
+--- a/build/cmake/config.cmake
++++ b/build/cmake/config.cmake
+@@ -52,7 +52,7 @@ function(wx_write_config_inplace)
+     execute_process(
+         COMMAND
+         ${CMAKE_COMMAND} -E create_symlink
+-        "lib/wx/config/inplace-${TOOLCHAIN_FULLNAME}"
++        "lib${wxPLATFORM_LIB_DIR}/wx/config/inplace-${TOOLCHAIN_FULLNAME}"
+         "${CMAKE_CURRENT_BINARY_DIR}/wx-config"
+         )
+ endfunction()
+diff --git a/build/cmake/functions.cmake b/build/cmake/functions.cmake
+index c33dd3946c..51e47e05b3 100644
+--- a/build/cmake/functions.cmake
++++ b/build/cmake/functions.cmake
+@@ -78,9 +78,9 @@ function(wx_set_common_target_properties target_name)
+     cmake_parse_arguments(wxCOMMON_TARGET_PROPS "DEFAULT_WARNINGS" "" "" ${ARGN})
+ 
+     set_target_properties(${target_name} PROPERTIES
+-        LIBRARY_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}${wxPLATFORM_LIB_DIR}"
+-        ARCHIVE_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}${wxPLATFORM_LIB_DIR}"
+-        RUNTIME_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}${wxPLATFORM_LIB_DIR}"
++        LIBRARY_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}"
++        ARCHIVE_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}"
++        RUNTIME_OUTPUT_DIRECTORY "${wxOUTPUT_DIR}"
+         )
+ 
+     if(MSVC)
+diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake
+index 968dff859e..c850c51844 100644
+--- a/build/cmake/install.cmake
++++ b/build/cmake/install.cmake
+@@ -33,11 +33,11 @@ if(MSVC)
+ else()
+     wx_install(
+         DIRECTORY "${wxSETUP_HEADER_PATH}"
+-        DESTINATION "lib/wx/include")
++        DESTINATION "lib${wxPLATFORM_LIB_DIR}/wx/include")
+ 
+     wx_install(
+         FILES "${wxOUTPUT_DIR}/wx/config/${wxBUILD_FILE_ID}"
+-        DESTINATION "lib/wx/config"
++        DESTINATION "lib${wxPLATFORM_LIB_DIR}/wx/config"
+         PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
+                     GROUP_EXECUTE GROUP_READ
+                     WORLD_EXECUTE WORLD_READ
+@@ -46,7 +46,7 @@ else()
+     install(DIRECTORY DESTINATION "bin")
+     install(CODE "execute_process( \
+         COMMAND ${CMAKE_COMMAND} -E create_symlink \
+-        ${CMAKE_INSTALL_PREFIX}/lib/wx/config/${wxBUILD_FILE_ID} \
++        ${CMAKE_INSTALL_PREFIX}/lib${wxPLATFORM_LIB_DIR}/wx/config/${wxBUILD_FILE_ID} \
+         ${CMAKE_INSTALL_PREFIX}/bin/wx-config \
+         )"
+     )
diff --git a/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets/respect-DESTDIR-when-create-link.patch b/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets/respect-DESTDIR-when-create-link.patch
new file mode 100644
index 0000000..69be329
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets/respect-DESTDIR-when-create-link.patch
@@ -0,0 +1,55 @@
+There are errors during do install. So link files 'wx-config' and 'wxrc' are
+not created, and rename failed either:
+
+| CMake Error: failed to create symbolic link '/usr/bin/wx-config': Permission denied
+| Error renaming from "/usr/bin/wxrc" to "/usr/bin/wxrc-3.1": No such file or directory
+| CMake Error: failed to create symbolic link '/usr/bin/wxrc': Permission denied
+
+Respect variable 'DESTDIR' to make it work as expect.
+
+Upstream-Status: Pending
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ build/cmake/install.cmake        | 4 ++--
+ build/cmake/utils/CMakeLists.txt | 8 ++++----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake
+index c850c51844..5cbc67daa1 100644
+--- a/build/cmake/install.cmake
++++ b/build/cmake/install.cmake
+@@ -46,8 +46,8 @@ else()
+     install(DIRECTORY DESTINATION "bin")
+     install(CODE "execute_process( \
+         COMMAND ${CMAKE_COMMAND} -E create_symlink \
+-        ${CMAKE_INSTALL_PREFIX}/lib${wxPLATFORM_LIB_DIR}/wx/config/${wxBUILD_FILE_ID} \
+-        ${CMAKE_INSTALL_PREFIX}/bin/wx-config \
++        ../lib${wxPLATFORM_LIB_DIR}/wx/config/${wxBUILD_FILE_ID} \
++        \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wx-config \
+         )"
+     )
+ endif()
+diff --git a/build/cmake/utils/CMakeLists.txt b/build/cmake/utils/CMakeLists.txt
+index 4108d6a723..fbac6bb533 100644
+--- a/build/cmake/utils/CMakeLists.txt
++++ b/build/cmake/utils/CMakeLists.txt
+@@ -34,14 +34,14 @@ if(wxUSE_XRC)
+     if(NOT MSVC)
+         install(CODE "execute_process( \
+             COMMAND ${CMAKE_COMMAND} -E rename \
+-            ${CMAKE_INSTALL_PREFIX}/bin/wxrc${EXE_SUFFIX} \
+-            ${CMAKE_INSTALL_PREFIX}/bin/wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION}${EXE_SUFFIX} \
++            \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wxrc${EXE_SUFFIX} \
++            \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION}${EXE_SUFFIX} \
+             )"
+         )
+         install(CODE "execute_process( \
+             COMMAND ${CMAKE_COMMAND} -E create_symlink \
+-            ${CMAKE_INSTALL_PREFIX}/bin/wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION}${EXE_SUFFIX} \
+-            ${CMAKE_INSTALL_PREFIX}/bin/wxrc${EXE_SUFFIX} \
++            wxrc-${wxMAJOR_VERSION}.${wxMINOR_VERSION}${EXE_SUFFIX} \
++            \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wxrc${EXE_SUFFIX} \
+             )"
+         )
+     endif()
diff --git a/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb b/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb
index 404ab26..b4420a1 100644
--- a/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb
@@ -24,6 +24,8 @@
 SRC_URI = " \
     git://github.com/wxWidgets/wxWidgets.git;branch=master;protocol=https \
     file://0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch \
+    file://fix-libdir-for-multilib.patch \
+    file://respect-DESTDIR-when-create-link.patch \
 "
 PV = "3.1.4"
 SRCREV= "6cdaedd42ba59331b3dc4ead50e0bac76ae14c19"
@@ -37,6 +39,7 @@
     -DwxUSE_LIBPNG=sys \
     -DwxUSE_LIBTIFF=sys \
     -DwxUSE_REGEX=builtin \
+    -DwxPLATFORM_LIB_DIR=${@d.getVar('baselib').replace('lib', '')} \
 "
 EXTRA_OECMAKE:append:libc-musl = " \
     -DHAVE_LOCALE_T=OFF \
@@ -101,4 +104,7 @@
     ${libdir}/wx/ \
 "
 
-FILES:${PN}-dev += "${libdir}/wx/include/"
+FILES:${PN}-dev += " \
+    ${libdir}/wx/include/ \
+    ${libdir}/wx/config/ \
+"
diff --git a/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_1.2.15.bb b/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_1.2.15.bb
index 1a77665..0fda3e6 100644
--- a/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_1.2.15.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_1.2.15.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Zlog is a pure C logging library"
 HOMEPAGE = "https://github.com/HardySimpson/zlog"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 SRCREV = "876099f3c66033f3de11d79f63814766b1021dbe"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm-2.36_2.36.1.bb b/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm-2.36_2.36.1.bb
index 4048752..9a5b1a1 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm-2.36_2.36.1.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm-2.36_2.36.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "C++ bindings for the atk"
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
                     file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
 
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
index b305fe5..1f9c28e 100644
--- 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
@@ -1,7 +1,7 @@
 SUMMARY = "C++ bindings for the atk"
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
                     file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
 
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gcab/gcab_1.4.bb b/meta-openembedded/meta-oe/recipes-gnome/gcab/gcab_1.4.bb
index 68f52bf..321e7c3 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gcab/gcab_1.4.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/gcab/gcab_1.4.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A GObject library to create cabinet files"
 HOMEPAGE = "https://gitlab.gnome.org/GNOME/gcab"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = "glib-2.0"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.7.bb b/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.7.bb
index d89613d..2677f5c 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.7.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.7.bb
@@ -1,4 +1,4 @@
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 DESCRIPTION = "Runtime libraries for parsing and creating MIME mail"
 SECTION = "libs"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gnome-common/gnome-common_3.18.0.bb b/meta-openembedded/meta-oe/recipes-gnome/gnome-common/gnome-common_3.18.0.bb
index 634b609..86a941f 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gnome-common/gnome-common_3.18.0.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/gnome-common/gnome-common_3.18.0.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.gnome.org/"
 BUGTRACKER = "https://bugzilla.gnome.org/"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SECTION = "x11/gnome"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gnome-doc-utils-stub/gnome-doc-utils-stub_1.0.bb b/meta-openembedded/meta-oe/recipes-gnome/gnome-doc-utils-stub/gnome-doc-utils-stub_1.0.bb
index ec258ae..db55f22 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gnome-doc-utils-stub/gnome-doc-utils-stub_1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/gnome-doc-utils-stub/gnome-doc-utils-stub_1.0.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "This recipe provides m4 macros from gnome-doc-utils project, so \
 that dependent recipes can build. Gnome-doc-utils itself is no longer packaged because \
 it requires libxml2 and python 2 at the same time, which can no longer be satisfied. "
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6 \
                     file://${COREBASE}/meta/files/common-licenses/LGPL-2.1-only;md5=1a6d268fd218675ffea8be556788b780"
 SRC_URI = "file://gnome-doc-utils.m4"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-extra_3.28.bb b/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-extra_3.28.bb
index bba9720..d7e422c 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-extra_3.28.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-extra_3.28.bb
@@ -3,7 +3,7 @@
 BUGTRACKER = "https://bugzilla.gnome.org/"
 SECTION = "x11/gnome"
 
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 inherit gnomebase gettext gtk-icon-cache upstream-version-is-even features_check
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+.inc b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+.inc
index 124e3db..f2af7c9 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+.inc
+++ b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+.inc
@@ -4,7 +4,7 @@
 HOMEPAGE = "http://www.gtk.org"
 BUGTRACKER = "https://bugzilla.gnome.org/"
 
-LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
+LICENSE = "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
 
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.5.bb b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.5.bb
index a8c7713..46c3358 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.5.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.5.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.gtkmm.org/"
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
                     file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
 
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.5.bb b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.5.bb
index a9bb338..54e75a2 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.5.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.5.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.gtkmm.org/"
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
                     file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
 
diff --git a/meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.10.bb b/meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.11.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.10.bb
rename to meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.11.bb
index bbbc728..bd17e44 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.10.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/libjcat/libjcat_0.1.11.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Library for reading and writing Jcat files"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1803fa9c2c3ce8cb06b4861d75310742"
 
 DEPENDS = "\
@@ -11,7 +11,7 @@
     git://github.com/hughsie/libjcat.git;branch=main;protocol=https \
     file://run-ptest \
 "
-SRCREV = "edaf36b285497364bef8bf916ffe5b962d01c4b8"
+SRCREV = "ffa0b5a9a49a7880e9ab3ae3b061080f15e95e15"
 S = "${WORKDIR}/git"
 
 inherit gobject-introspection gtk-doc meson ptest-gnome vala lib_package
diff --git a/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.30.0.bb b/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.32.0.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.30.0.bb
rename to meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.32.0.bb
index d2e0183..944b21d 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.30.0.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.32.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "libpeas is a gobject-based plugins engine"
 HOMEPAGE = "https://wiki.gnome.org/Projects/Libpeas"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4b54a1fd55a448865a0b32d41598759d"
 
 DEPENDS = "gtk+3"
@@ -12,7 +12,7 @@
 
 ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
 
-SRC_URI[archive.sha256sum] = "0bf5562e9bfc0382a9dcb81f64340787542568762a3a367d9d90f6185898b9a3"
+SRC_URI[archive.sha256sum] = "d625520fa02e8977029b246ae439bc218968965f1e82d612208b713f1dcc3d0e"
 
 PACKAGECONFIG[python3] = "-Dpython3=true,-Dpython3=false,python3-pygobject"
 
diff --git a/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.7.bb b/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.8.bb
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.7.bb
rename to meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.8.bb
index 48a7701..38704f8 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.7.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/libxmlb/libxmlb_0.3.8.bb
@@ -1,11 +1,11 @@
 SUMMARY = "A library to help create and query binary XML blobs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1803fa9c2c3ce8cb06b4861d75310742"
 
 SRC_URI = "git://github.com/hughsie/libxmlb.git;branch=main;protocol=https \
            file://run-ptest \
            "
-SRCREV = "dc96ba2327bb1f408909b2cd7fb4ecc318e8165a"
+SRCREV = "4782df2cec808f71762aa9f69c11759b4e127b61"
 S = "${WORKDIR}/git"
 
 inherit gobject-introspection gtk-doc meson ptest-gnome lib_package
diff --git a/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.27.bb b/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.27.bb
index 35ecd7f..abc1c23 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.27.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.27.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "A Python module to deal with freedesktop.org specifications"
 HOMEPAGE = "http://freedesktop.org/wiki/Software/pyxdg"
 SECTION = "devel/python"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f30a9716ef3762e3467a2f62bf790f0a"
 
 SRCREV = "f097a66923a65e93640c48da83e6e9cfbddd86ba"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/vte9/vte9.inc b/meta-openembedded/meta-oe/recipes-gnome/vte9/vte9.inc
index c191a6d..49b9740 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/vte9/vte9.inc
+++ b/meta-openembedded/meta-oe/recipes-gnome/vte9/vte9.inc
@@ -1,6 +1,6 @@
 SUMMARY = "Virtual terminal emulator GTK+ widget library"
 BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte"
-LICENSE = "LGPLv2.0"
+LICENSE = "LGPL-2.0-only"
 DEPENDS = " glib-2.0 gtk+ intltool-native gnome-common-native ncurses"
 RDEPENDS:libvte = "vte-termcap"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm-1.16_1.16.1.bb b/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm-1.16_1.16.1.bb
index 98ad0a4..61892d3 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm-1.16_1.16.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm-1.16_1.16.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "C++ bindings for Cairo graphics library"
 
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c46bda00ffbb0ba1dac22f8d087f54d9"
 
 GNOMEBASEBUILDCLASS = "meson"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm_1.14.3.bb b/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm_1.14.3.bb
index 6407c68..8123509 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm_1.14.3.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/cairo/cairomm_1.14.3.bb
@@ -1,6 +1,6 @@
 SUMMARY = "C++ bindings for Cairo graphics library"
 
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c46bda00ffbb0ba1dac22f8d087f54d9"
 
 GNOMEBASEBUILDCLASS = "meson"
@@ -8,7 +8,7 @@
 
 DEPENDS += "boost cairo libsigc++-2.0"
 
-SRC_URI = "https://www.cairographics.org/releases/${P}.tar.xz"
+SRC_URI = "https://www.cairographics.org/releases/${BP}.tar.xz"
 SRC_URI[sha256sum] = "0d37e067c5c4ca7808b7ceddabfe1932c5bd2a750ad64fb321e1213536297e78"
 
 FILES:${PN}-doc += "${datadir}/devhelp"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb b/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb
index 541b938..44fc2d0 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Simple bootsplash for systemd systems"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 # Really, no depends besides a C library
diff --git a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
index 7ac2177..07b9864 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
+++ b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
@@ -5,7 +5,7 @@
 translucent windows and multiple display layers on top of the \
 Linux framebuffer device."
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
 
 HOMEPAGE = "http://directfb.org"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora_2.1.2.bb b/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora_2.1.2.bb
index 331e00f..671b8ca 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora_2.1.2.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora_2.1.2.bb
@@ -1,5 +1,5 @@
 SUMMARY = "dnfdragora is a DNF frontend, based on rpmdragora from Mageia (originally rpmdrake) Perl code."
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504 \
                    "
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.5.bb b/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.5.bb
index 833a416..7b52ead 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.5.bb
@@ -1,6 +1,6 @@
 SUMMARY = "FBGrab is a framebuffer screenshot program"
 HOMEPAGE = "https://github.com/GunnarMonell/fbgrab"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a"
 SECTION = "console/utils"
 DEPENDS = "libpng zlib"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.14.bb b/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.14.bb
index 9995318..bc6f021 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.14.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/fbida/fbida_2.14.bb
@@ -5,7 +5,7 @@
 AUTHOR = "Gerd Hoffmann"
 SECTION = "utils"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=e8feb78a32950a909621bbb51f634b39"
 
 DEPENDS = "virtual/libiconv jpeg fontconfig freetype libexif libdrm pixman poppler libepoxy cairo"
@@ -39,6 +39,8 @@
 
 EXTRA_OEMAKE += ""${@bb.utils.contains('PACKAGECONFIG', 'egl', 'HAVE_CAIRO_GL=yes', 'HAVE_CAIRO_GL=no', d)}""
 
+CFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
+
 do_compile() {
     sed -i -e 's# fbgs# \$(srcdir)/fbgs#; s#-Ijpeg#-I\$(srcdir)/jpeg#; s# jpeg/# \$(srcdir)/jpeg/#' ${S}/GNUmakefile
     sed -i -e 's:/sbin/ldconfig:echo x:' ${S}/mk/Autoconf.mk
diff --git a/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20190801.bb b/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20190801.bb
index e715f74..cb5f4d5 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20190801.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20190801.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A font editor"
 HOMEPAGE = "http://fontforge.github.io/en-US/"
-LICENSE = "BSD-3-Clause & GPLv3"
+LICENSE = "BSD-3-Clause & GPL-3.0-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING.gplv3;md5=d32239bcb673463ab874e80d47fae504 \
     file://LICENSE;md5=d042f3d2a8fd7208b704a499168e3c89 \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.9.bb b/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.9.bb
index b2ad1b6..75b24bf 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.9.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.9.bb
@@ -1,7 +1,7 @@
 SUMMARY = "F Virtual Window Manager "
 HOMEPAGE = "http://www.fvwm.org/"
 SECTION = "x11/wm"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f8204787357db6ea518dcc9b6cf08388"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.27.bb b/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.27.bb
index e4be2d7..84ff677 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.27.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.27.bb
@@ -1,6 +1,6 @@
 SUMMARY = "gphoto2 - a command-line frontend to libgphoto2"
 HOMEPAGE = "http://www.gphoto.com/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 DEPENDS = "libgphoto2 popt readline"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.27.bb b/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.27.bb
index 6f8d424..41600be 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.27.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.27.bb
@@ -1,6 +1,6 @@
 SUMMARY = "libgphoto2 allows you to access digital cameras"
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0448d3676bc0de00406af227d341a4d1"
 
 DEPENDS = "libtool jpeg virtual/libusb0 libexif zlib libxml2"
@@ -25,6 +25,11 @@
 PACKAGECONFIG[gd] = ",--without-gdlib,gd"
 PACKAGECONFIG[serial] = "--enable-serial,--disable-serial,lockdev"
 
+do_configure:prepend() {
+    rm -rf ${S}/libgphoto2_port/auto-m4/*
+    rm -rf ${S}/auto-m4/*
+}
+
 do_configure:append() {
     cp ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/libgphoto2_port/po/
     cd ${S}/libgphoto2_port/
diff --git a/meta-openembedded/meta-oe/recipes-graphics/graphene/graphene_1.10.6.bb b/meta-openembedded/meta-oe/recipes-graphics/graphene/graphene_1.10.8.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-graphics/graphene/graphene_1.10.6.bb
rename to meta-openembedded/meta-oe/recipes-graphics/graphene/graphene_1.10.8.bb
index 0c05c60..813ff74 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/graphene/graphene_1.10.6.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/graphene/graphene_1.10.8.bb
@@ -7,7 +7,7 @@
 
 inherit gnomebase gobject-introspection gtk-doc
 
-SRC_URI[archive.sha256sum] = "80ae57723e4608e6875626a88aaa6f56dd25df75024bd16e9d77e718c3560b25"
+SRC_URI[archive.sha256sum] = "a37bb0e78a419dcbeaa9c7027bcff52f5ec2367c25ec859da31dfde2928f279a"
 
 # gtk4 & mutter 41.0 requires graphene build with introspection
 PACKAGECONFIG ?= "introspection"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.44.1.bb b/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.50.0.bb
similarity index 80%
rename from meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.44.1.bb
rename to meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.50.0.bb
index ff9939e..a9258e9 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.44.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.50.0.bb
@@ -17,24 +17,21 @@
 DEPENDS:append:class-target = " ${BPN}-native"
 DEPENDS:append:class-nativesdk = " ${BPN}-native"
 
-inherit autotools-brokensep pkgconfig gettext
+inherit autotools-brokensep pkgconfig gettext qemu
 
-SRC_URI = "https://www2.graphviz.org/Packages/stable/portable_source/${BP}.tar.gz \
-           file://0001-plugin-pango-Include-freetype-headers-explicitly.patch \
-"
+SRC_URI = "https://gitlab.com/api/v4/projects/4207231/packages/generic/${BPN}-releases/${PV}/${BP}.tar.xz \
+           "
 # Use native mkdefs
 SRC_URI:append:class-target = "\
-           file://0001-Use-native-mkdefs.patch \
            file://0001-Set-use_tcl-to-be-empty-string-if-tcl-is-disabled.patch \
 "
 SRC_URI:append:class-nativesdk = "\
-           file://0001-Use-native-mkdefs.patch \
            file://graphviz-setup.sh \
 "
-SRC_URI[sha256sum] = "8e1b34763254935243ccdb83c6ce108f531876d7a5dfd443f255e6418b8ea313"
+
+SRC_URI[sha256sum] = "6b16bf990df114195be669773a1dae975dbbffada45e1de2849ddeb5851bb9a8"
 
 PACKAGECONFIG ??= "librsvg"
-PACKAGECONFIG:class-nativesdk ??= ""
 PACKAGECONFIG[librsvg] = "--with-librsvg,--without-librsvg,librsvg"
 
 EXTRA_OECONF:append = " PS2PDF=/bin/echo"
@@ -65,11 +62,6 @@
     ./autogen.sh NOCONFIG || true
 }
 
-do_install:append:class-native() {
-    # install mkdefs for target build
-    install -m755 ${B}/lib/gvpr/mkdefs ${D}${bindir}
-}
-
 do_install:append:class-nativesdk() {
     # graphviz-setup.sh must be executed at SDK installation
     install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d
@@ -88,6 +80,23 @@
 }
 SYSROOT_PREPROCESS_FUNCS:append:class-native = " graphviz_sstate_postinst"
 
+pkg_postinst:${PN} () {
+    if [ -n "$D" ]; then
+        if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true', 'false', d)}; then
+            ${@qemu_run_binary(d, '$D', '${bindir}/dot')} -c
+        fi
+    else
+        dot -c
+    fi
+}
+
+pkg_postrm:${PN} () {
+    rm -f $D${libdir}/graphviz/config*
+    rmdir --ignore-fail-on-non-empty $D${libdir}/graphviz
+}
+
+PACKAGE_WRITE_DEPS += "qemu-native"
+
 PACKAGES =+ "${PN}-python ${PN}-perl ${PN}-demo"
 
 FILES:${PN}-python += "${libdir}/python*/site-packages/ ${libdir}/graphviz/python/"
@@ -98,6 +107,8 @@
 RDEPENDS:${PN}-python += "python3"
 RDEPENDS:${PN}-demo += "python3 perl"
 
+RRECOMMENDS:${PN} = "liberation-fonts"
+
 INSANE_SKIP:${PN}-perl = "dev-so"
 INSANE_SKIP:${PN}-python = "dev-so"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb b/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
index a2ecf95..0c4f819 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
@@ -1,6 +1,6 @@
 SUMMARY = "GTK Performance tool"
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI = "http://prdownloads.sourceforge.net/${BPN}/${BPN}_${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.111.bb b/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.111.bb
index 36b1e04..eee9de7 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.111.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.111.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "gtkwave is a viewer for VCD (Value Change Dump) files which are usually created by digital circuit simulators. (These files have no connection to video CDs!) "
 HOMEPAGE = "http://gtkwave.sourceforge.net/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
 
 SRC_URI = "http://gtkwave.sourceforge.net/gtkwave-gtk3-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libforms/libforms_1.2.3.bb b/meta-openembedded/meta-oe/recipes-graphics/libforms/libforms_1.2.3.bb
index 9e57560..838c1d5 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libforms/libforms_1.2.3.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libforms/libforms_1.2.3.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://savannah.nongnu.org/projects/xforms/"
 PR = "r0"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=ade9a053df81f5b9408d2f4f5546df86"
 
 SRC_URI = "http://download.savannah.nongnu.org/releases/xforms/xforms-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.18.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.18.bb
index 513b411..0951d72 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.18.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.18.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Simple DirectMedia Layer truetype font library"
 SECTION = "libs"
-DEPENDS = "virtual/libsdl2 freetype virtual/libgl"
+DEPENDS = "virtual/libsdl2 freetype virtual/egl"
 LICENSE = "Zlib"
 LIC_FILES_CHKSUM = "file://COPYING.txt;md5=e98cfd01ca78f683e9d035795810ce87"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
index 785ce6c..9085c6d 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
@@ -7,7 +7,7 @@
 
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=27818cd7fd83877a8e3ef82b82798ef4"
 
 PROVIDES = "virtual/libsdl"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.13.bb b/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.13.bb
index e3f2daf..93f6951 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.13.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.13.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://libvnc.github.io"
 SECTION = "libs"
 PRIORITY = "optional"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=361b6b837cad26c6900a926b62aada5f"
 
 # ffmpeg support is not currently compatible with ffmpeg 5.0
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_4.1.1.bb b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_4.1.1.bb
index bdcbfd7..8eb7729 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_4.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_4.1.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Character Based User Interface for libyui"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://../COPYING.lgpl-3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
     file://../COPYING.lgpl-2.1;md5=4fbd65380cdd255951079008b364516c \
 "
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_4.1.1.bb b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_4.1.1.bb
index 4ea2177..4778561 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_4.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_4.1.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Libyui is a widget abstraction library providing Qt, GTK and ncurses frontends."
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://../COPYING.gpl-3;md5=d32239bcb673463ab874e80d47fae504 \
                     file://../COPYING.lgpl-2.1;md5=4fbd65380cdd255951079008b364516c \
                     file://../COPYING.lgpl-3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers_7.11.0.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers_7.11.0.bb
index 7ccee6b..1a94215 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers_7.11.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers_7.11.0.bb
@@ -24,7 +24,7 @@
 LVGL_CONFIG_WAYLAND_HOR_RES ?= "480"
 LVGL_CONFIG_WAYLAND_VER_RES ?= "320"
 
-EXTRA_OECMAKE += "-Dinstall:BOOL=ON"
+EXTRA_OECMAKE += "-Dinstall:BOOL=ON -DLIB_INSTALL_DIR=${BASELIB}"
 
 TARGET_CFLAGS += "-DLV_CONF_INCLUDE_SIMPLE=1"
 TARGET_CFLAGS += "-I${RECIPE_SYSROOT}/${includedir}/lvgl"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb
index 5b3b38d..032e85f 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb
@@ -16,6 +16,8 @@
 
 DEPENDS += "lvgl"
 
+EXTRA_OECMAKE += "-DLIB_INSTALL_DIR=${BASELIB}"
+
 inherit cmake
 inherit features_check
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.1.0.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.1.0.bb
index 958639b..2005afa 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.1.0.bb
@@ -16,6 +16,7 @@
 inherit cmake
 inherit features_check
 
+EXTRA_OECMAKE = "-DLIB_INSTALL_DIR=${BASELIB}"
 S = "${WORKDIR}/${PN}-${PV}"
 
 LVGL_CONFIG_LV_MEM_CUSTOM ?= "0"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
index a0c8622..83b15ce 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
@@ -1,6 +1,6 @@
 SUMMARY = "LXDM is the lightweight display manager"
 HOMEPAGE = "http://blog.lxde.org/?p=531"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}%20${PV}/${BPN}-${PV}.tar.xz \
            file://lxdm.conf \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb b/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb
index 3f6ab44..0d53c78 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Enable NumLock in X11 sessions"
 HOMEPAGE = "http://home.kde.org/~seli/numlockx/"
 SECTION = "x11/apps"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=dcb1cc75e21540a4a66b54e38d95b047"
 DEPENDS = "virtual/libx11 libxtst"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/openbox/obconf_git.bb b/meta-openembedded/meta-oe/recipes-graphics/openbox/obconf_git.bb
index 4ff0d26..7723471 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/openbox/obconf_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/openbox/obconf_git.bb
@@ -2,7 +2,7 @@
 AUTHOR = "Dana Jansens & Tim Riley & Javeed Shaikh"
 HOMEPAGE = "http://openbox.org/wiki/ObConf:About"
 SECTION = "x11/wm"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = " \
     openbox \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb b/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
index 6ada9b7..4c97c03 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "openbox Window Manager"
 SECTION = "x11/wm"
 DEPENDS = "glib-2.0 pango libxml2 virtual/libx11 libcroco librsvg gdk-pixbuf"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI = " \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm-2.48_2.50.0.bb b/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm-2.48_2.50.0.bb
index 29d7b28..84aedba 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm-2.48_2.50.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm-2.48_2.50.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "C++ bindings for the pango library"
 SECTION = "libs"
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
                     file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.46.2.bb b/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.46.2.bb
index 0ba0a77..9959bdf 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.46.2.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.46.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "C++ bindings for the pango library"
 SECTION = "libs"
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
                     file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_4.1.1.bb b/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_4.1.1.bb
index defaaee..143ab6a 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_4.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_4.1.1.bb
@@ -2,7 +2,7 @@
 AUTHOR = "Kentaro Fukuchi"
 HOMEPAGE = "http://fukuchi.org/works/qrencode/"
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 SRCREV = "715e29fd4cd71b6e452ae0f4e36d917b43122ce8"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb b/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb
index 7db70ec..161650f 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Stand-alone system tray"
 DESCRIPTION = "Stalonetray is a stand-alone freedesktop.org and KDE system tray"
 SECTION = "x11/graphics"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "virtual/libx11"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.8.4.bb b/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.8.4.bb
index c4bb1d2..acd4cab 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.8.4.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.8.4.bb
@@ -1,5 +1,5 @@
 SECTION = "shadow"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=04c3ca13a702147c62db90f556c5b3ca"
 SRC_URI = "http://dl.suckless.org/${BPN}/${BP}.tar.gz"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.11.0.bb b/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.11.0.bb
index a946d92..5f404f2 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.11.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.11.0.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "TigerVNC remote display system"
 HOMEPAGE = "http://www.tigervnc.com/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 SECTION = "x11/utils"
 DEPENDS = "xserver-xorg gnutls jpeg libxtst gettext-native fltk libpam"
 RDEPENDS:${PN} = "coreutils hicolor-icon-theme perl bash"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.22.bb b/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.22.bb
index 2cdac40..c2000b2 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.22.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.22.bb
@@ -7,7 +7,7 @@
 
 AUTHOR = "Martin Kepplinger <martink@posteo.de>"
 SECTION = "base"
-LICENSE = "LGPLv2+ & GPLv2+"
+LICENSE = "LGPL-2.0-or-later & GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "\
     file://COPYING;md5=fc178bcd425090939a8b634d1d6a9594 \
     file://tests/COPYING;md5=a23a74b3f4caf9616230789d94217acb \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb
index 964a676..e361ce9 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb
@@ -2,7 +2,7 @@
 
 SUMMARY = "Hunky fonts - TTF Version"
 HOMEPAGE = "http://sourceforge.net/projects/hunkyfonts"
-LICENSE = "LGPL-2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://../COPYRIGHT.TXT;md5=70d34478e38b1ad9995079f9921f9ef7"
 PR = "r7"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation-sans-narrow_1.07.4.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation-sans-narrow_1.07.4.bb
index d186bc5..f386d6e 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation-sans-narrow_1.07.4.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation-sans-narrow_1.07.4.bb
@@ -6,7 +6,7 @@
 Arial, Times New Roman, Courier New."
 
 HOMEPAGE = "https://fedorahosted.org/liberation-fonts/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 SRC_URI = "https://releases.pagure.org/liberation-fonts/liberation-fonts-ttf-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb
index b2e2ed8..fdcfe04 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb
@@ -2,7 +2,7 @@
 
 SUMMARY = "Liberation fonts - TTF Version"
 HOMEPAGE = "https://www.redhat.com/promo/fonts/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
                     file://License.txt;md5=5b171c5100029d884fcea21d9a2b7543 \
 "
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-lklug_0.6-14.20090803cvs.fc24.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-lklug_0.6-14.20090803cvs.fc24.bb
index b21fbdf..8a7c1f3 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-lklug_0.6-14.20090803cvs.fc24.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-lklug_0.6-14.20090803cvs.fc24.bb
@@ -2,7 +2,7 @@
 
 SUMMARY = "Fonts for Sinhala language - TTF Edition"
 HOMEPAGE = "http://rpms.famillecollet.com/rpmphp/zoom.php?rpm=lklug-fonts"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 SRC_URI = "http://dl.fedoraproject.org/pub/fedora/linux/releases/24/Everything/source/tree/Packages/l/lklug-fonts-0.6-14.20090803cvs.fc24.src.rpm;extract=lklug-20090803.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-tlwg_0.6.1.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-tlwg_0.6.1.bb
index 05c2d82..3dad368 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-tlwg_0.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-tlwg_0.6.1.bb
@@ -3,7 +3,7 @@
 SUMMARY = "Thai Linux Working Group Fonts"
 AUTHOR = "Thai Linux Working Group"
 HOMEPAGE = "http://linux.thai.net/projects/fonts-tlwg"
-LICENSE = "GPLv2 & TLWG"
+LICENSE = "GPL-2.0-only & TLWG"
 LIC_FILES_CHKSUM = "file://../fonts-tlwg-${PV}/COPYING;md5=3d20cd7eadf4afd5460c0adb32e387fd"
 
 SRC_URI = "http://linux.thai.net/pub/ThaiLinux/software/fonts-tlwg/fonts-tlwg-${PV}.tar.xz;name=source \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20200720.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20200720.bb
index a386bb8..6b79eb9 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20200720.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20200720.bb
@@ -4,7 +4,7 @@
 AUTHOR = "Contributor: noonov <noonov@gmail.com>"
 HOMEPAGE = "http://vlgothic.dicey.org/"
 
-LICENSE = "ttf-mplus & BSD"
+LICENSE = "ttf-mplus & BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE.en;md5=cc06b20e7a20bdf6c989624405378303 \
                     file://LICENSE_E.mplus;md5=1c4767416f20215f1e61b970f2117db9 \
 "
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.9.45.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.9.45.bb
index 20c5f6e..bc14feb 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.9.45.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.9.45.bb
@@ -3,7 +3,7 @@
 SUMMARY = "WenQuanYi Zen Hei - A Hei-Ti Style Chinese font"
 AUTHOR = "Qianqian Fang and The WenQuanYi Project Contributors"
 HOMEPAGE = "http://wenq.org/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=cf540fc7d35b5777e36051280b3a911c"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/wqy/wqy-zenhei-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_1.4.bb b/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_1.5.bb
similarity index 86%
rename from meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_1.4.bb
rename to meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_1.5.bb
index 2c08ff3..db3c045 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_1.4.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_1.5.bb
@@ -5,7 +5,7 @@
 
 DEPENDS = "virtual/libx11 libxext xorgproto"
 
-SRCREV = "c3d1a9dbafdfe6144ff474d0d523dc01b068750f"
+SRCREV = "79f1506a3307d3275b0fdfb2e110c173f68e6f78"
 SRC_URI = "git://anongit.freedesktop.org/vdpau/libvdpau;branch=master"
 
 S = "${WORKDIR}/git"
@@ -21,3 +21,5 @@
 FILES:${PN}-dbg += "${libdir}/vdpau/.debug"
 FILES:${PN}-dev += "${libdir}/vdpau/lib*${SOLIBSDEV}"
 FILES:${PN} += "${libdir}/vdpau/lib*${SOLIBS}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb b/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb
index 0a7af92..5f7c0be 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb
@@ -3,7 +3,7 @@
 
 SECTION = "x11/utils"
 AUTHOR = "Karl Runge"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://src/x11vnc.h;endline=31;md5=e871a2ad004776794b616822dcab6314"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xbindkeys/xbindkeys_1.8.7.bb b/meta-openembedded/meta-oe/recipes-graphics/xbindkeys/xbindkeys_1.8.7.bb
new file mode 100644
index 0000000..0c316ed
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xbindkeys/xbindkeys_1.8.7.bb
@@ -0,0 +1,18 @@
+SUMMARY = "xbindkeys - Tool for launching commands on keystrokes"
+HOMEPAGE = "http://www.nongnu.org/xbindkeys/xbindkeys.html"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7d715d0b23c4bd9265b7435f546e9fe8"
+SECTION = "x11"
+
+DEPENDS = "virtual/libx11"
+
+inherit features_check autotools
+
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI = "http://www.nongnu.org/xbindkeys/xbindkeys-${PV}.tar.gz"
+SRC_URI[md5sum] = "b5e1a9668ba13ff8673836d1d965d951"
+SRC_URI[sha256sum] = "a29b86a8ec91d4abc83b420e547da27470847d0efe808aa6e75147aa0adb82f2"
+
+EXTRA_OECONF = "--disable-guile"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc b/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc
index 958fecc..1c6408d 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc
@@ -1,6 +1,6 @@
 HOMEPAGE = "http://www.x.org"
 SECTION = "x11/data"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
 
 XORG_PN = "${BPN}"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-doc-common.inc b/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-doc-common.inc
index f4b8b00..aa4795e 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-doc-common.inc
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-doc-common.inc
@@ -1,7 +1,7 @@
 DESCRIPTION = "X documentation"
 HOMEPAGE = "http://www.x.org"
 SECTION = "x11/docs"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
 
 SRC_URI = "${XORG_MIRROR}/individual/doc/${BPN}-${PV}.tar.bz2"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc_1.4.1.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc_1.4.1.bb
index 404df4e..8b4526f 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc_1.4.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc_1.4.1.bb
@@ -1,7 +1,7 @@
 require recipes-graphics/xorg-driver/xorg-driver-video.inc
 
 SUMMARY = "X.Org X server -- ARM SOC display driver"
-LICENSE = "MIT-X & GPLv2+"
+LICENSE = "MIT & GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=10ce5de3b111315ea652a5f74ec0c602"
 
 DEPENDS += "virtual/libx11 libdrm xorgproto"
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
index ea4563a..2ab5297 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_6.01.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_6.01.bb
@@ -1,6 +1,6 @@
 SUMMARY = "X screen saver and locker"
 HOMEPAGE = "https://www.jwz.org/xscreensaver/"
-LICENSE = "BSD-0-Clause"
+LICENSE = "0BSD"
 LIC_FILES_CHKSUM = "file://driver/xscreensaver.h;endline=10;md5=c3ce41cdff745eb1dc9d4fcfbffb4d51"
 
 SRC_URI = "https://www.jwz.org/${BPN}/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb b/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
index 87c373d..574d259 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Common X11 scripts and support files"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 PR = "r9"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/yad/yad_6.0.bb b/meta-openembedded/meta-oe/recipes-graphics/yad/yad_6.0.bb
index 029d793..40fccbd 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/yad/yad_6.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/yad/yad_6.0.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Program allowing you to display GTK+ dialog boxes from command line or shell scripts."
 AUTHOR = "Victor Ananjevsky"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "git://github.com/v1cont/yad.git;branch=master;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/agent-proxy/agent-proxy_1.97.bb b/meta-openembedded/meta-oe/recipes-kernel/agent-proxy/agent-proxy_1.97.bb
index 57232f8..0e17800 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/agent-proxy/agent-proxy_1.97.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/agent-proxy/agent-proxy_1.97.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Proxy for UDP/TCP debug connections"
 DESCRIPTION = "The agent-proxy will forward tcp or udp connections as well as allow for script multiplexing of terminal sessions."
 HOMEPAGE = "http://kgdb.wiki.kernel.org/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
 
 SECTION = "devel"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb b/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
index 76a7496..01046c0 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Inspect and manipulate eBPF programs and maps"
 DESCRIPTION = "bpftool is a kernel tool for inspection and simple manipulation \
 of eBPF programs and maps."
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 DEPENDS = "binutils elfutils"
 PROVIDES = "virtual/bpftool"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb b/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb
index c31ccbb..18e3638 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Shows and sets processor power related values"
 DESCRIPTION = "cpupower is a collection of tools to examine and tune power \
 saving related features of your processor."
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 DEPENDS = "pciutils gettext-native"
 PROVIDES = "virtual/cpupower"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.3.0.bb b/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.3.0.bb
index 35de3c5..d4aa0d5 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.3.0.bb
@@ -7,7 +7,7 @@
 HOMEPAGE = "http://people.redhat.com/anderson"
 SECTION = "devel"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING3;md5=d32239bcb673463ab874e80d47fae504"
 
 DEPENDS = "zlib readline coreutils-native ncurses-native"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/intel-speed-select/intel-speed-select.bb b/meta-openembedded/meta-oe/recipes-kernel/intel-speed-select/intel-speed-select.bb
index 109a46c..c895e6c 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/intel-speed-select/intel-speed-select.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/intel-speed-select/intel-speed-select.bb
@@ -4,7 +4,7 @@
 collection of features giving you more granular control over CPU performance \
 for optimized total cost of ownership."
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 inherit kernelsrc
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
index d0f246b..d5e8e4b 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Kernel selftest for Linux"
 DESCRIPTION = "Kernel selftest for Linux"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://../COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc
index 13c4549..4d18720 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc
+++ b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc
@@ -1,6 +1,6 @@
 SUMMARY = "Linux dynamic kernel patching infrastructure"
 DESCRIPTION = "kpatch is a Linux dynamic kernel patching infrastructure which allows you to patch a running kernel without rebooting or restarting any processes."
-LICENSE = "GPLv2 & LGPLv2"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only"
 DEPENDS = "elfutils bash"
 
 SRC_URI = "git://github.com/dynup/kpatch.git;protocol=https;branch=master \
diff --git a/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.0.bb b/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.0.bb
index 4a3b834..067f58b 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/libbpf/libbpf_0.5.0.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Library for BPF handling"
 HOMEPAGE = "https://github.com/libbpf/libbpf"
 SECTION = "libs"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 
 LIC_FILES_CHKSUM = "file://../LICENSE.LGPL-2.1;md5=b370887980db5dd40659b50909238dbd"
 
@@ -12,7 +12,7 @@
 SRCREV = "5579664205e42194e1921d69d0839f660c801a4d"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
-COMPATIBLE_HOST = "(x86_64|i.86|aarch64).*-linux"
+COMPATIBLE_HOST = "(x86_64|i.86|aarch64|riscv64|powerpc64).*-linux"
 
 S = "${WORKDIR}/git/src"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/linux/linux.inc b/meta-openembedded/meta-oe/recipes-kernel/linux/linux.inc
index f134244..b4b0661 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/linux/linux.inc
+++ b/meta-openembedded/meta-oe/recipes-kernel/linux/linux.inc
@@ -1,6 +1,6 @@
 DESCRIPTION = "Linux Kernel"
 SECTION = "kernel"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
 
 INC_PR = "r0"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.7.0.bb b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.7.0.bb
index e703ee7..d4da031 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.7.0.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.7.0.bb
@@ -8,7 +8,7 @@
 HOMEPAGE = "https://github.com/makedumpfile/makedumpfile"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-LICENSE = "GPLv2.0"
+LICENSE = "GPL-2.0-only"
 
 SRCBRANCH ?= "master"
 SRCREV = "06ef8e2b814feb08a668b7a3783c86674e49a7b1"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb b/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb
index 887390c..bf99152 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "minicoredumper provides an alternate core dump facility for Linux \
 to allow minimal and customized crash dumps"
-LICENSE = " LGPLv2.1 & BSD-2-Clause"
+LICENSE = " LGPL-2.1-only & BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://COPYING;md5=71827c617ec7b45a0dd23658347cc1e9 \
                     file://COPYING.BSD;md5=b915ac80d5236d6aa659cb986daf00e5 \
                     file://COPYING.LGPLv2.1;md5=321bf41f280cf805086dd5a720b37785 \
diff --git a/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.4.0.bb b/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.4.0.bb
index ee37b6c..23e7d3d 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.4.0.bb
@@ -4,7 +4,7 @@
 HOMEPAGE = "http://oprofile.sourceforge.net/news/"
 BUGTRACKER = "http://sourceforge.net/tracker/?group_id=16191&atid=116191"
 
-LICENSE = "LGPLv2.1+ & GPLv2"
+LICENSE = "LGPL-2.1-or-later & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
                     file://libopagent/opagent.h;beginline=5;endline=26;md5=4f16f72c7a493d8a4704aa18d03d15c6 \
                    "
diff --git a/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph_5.5.bb b/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph_5.5.bb
index 0562f31..6e52a58 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph_5.5.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph_5.5.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "This tool suite is designed to assist kernel and OS developers \
 in optimizing their linux stack's suspend/resume & boot time."
 HOMEPAGE = "https://01.org/pm-graph"
-LICENSE  = "GPL-2"
+LICENSE  = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
 
 SRCREV = "cf59527dc24fdd2f314ae4dcaeb3d68a117988f6"
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 3907ed5..81e8327 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,6 +1,6 @@
 SUMMARY = "Test SPI devices"
 DESCRIPTION = "SPI testing utility using the spidev driver"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
 PROVIDES = "virtual/spidev-test"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/trace-cmd/trace-cmd_2.9.1.bb b/meta-openembedded/meta-oe/recipes-kernel/trace-cmd/trace-cmd_2.9.1.bb
index 2735ee7..6640707 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/trace-cmd/trace-cmd_2.9.1.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/trace-cmd/trace-cmd_2.9.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "User-space front-end command-line tool for ftrace"
 
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=873f48a813bded3de6ebc54e6880c4ac"
 
 SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git;branch=master \
diff --git a/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb b/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb
index c9f9464..bdc37c0 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb
@@ -11,7 +11,7 @@
 processor frequency and idle power saving state residency on supported \
 processors."
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://../COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
 COMPATIBLE_HOST = '(x86_64.*|i.86.*)-linux'
 COMPATIBLE_HOST:libc-musl = "null"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/usbip-tools/usbip-tools.bb b/meta-openembedded/meta-oe/recipes-kernel/usbip-tools/usbip-tools.bb
index a2b0dea..4793896 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/usbip-tools/usbip-tools.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/usbip-tools/usbip-tools.bb
@@ -17,7 +17,7 @@
 over the network. The USB device may be either physical device connected \
 to a server or software entity created on a server using USB gadget subsystem."
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
 DEPENDS = "virtual/kernel udev"
 PROVIDES = "virtual/usbip-tools"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
index c8ea8b1..4c38df4 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Alsa OSS Compatibility Package"
 SECTION = "libs/multimedia"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ed055b4eff93da784176a01582e6ec1a"
 DEPENDS = "alsa-lib"
 
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/audiofile/audiofile_0.3.6.bb b/meta-openembedded/meta-oe/recipes-multimedia/audiofile/audiofile_0.3.6.bb
index f4e19e4..e91c81d 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/audiofile/audiofile_0.3.6.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/audiofile/audiofile_0.3.6.bb
@@ -4,7 +4,7 @@
 Research, Amiga IFF/8SVX, and NIST SPHERE."
 HOMEPAGE = "http://www.68k.org/~michael/audiofile/"
 SECTION = "libs"
-LICENSE = "LGPLv2 & GPLv2"
+LICENSE = "LGPL-2.0-only & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
                     file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/cdrkit/cdrkit_1.1.11.bb b/meta-openembedded/meta-oe/recipes-multimedia/cdrkit/cdrkit_1.1.11.bb
index e9841e4..dd0405c 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/cdrkit/cdrkit_1.1.11.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/cdrkit/cdrkit_1.1.11.bb
@@ -1,7 +1,7 @@
 SUMMARY = "CD/DVD command line tools"
 HOMEPAGE = "http://cdrkit.org/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b30d3b2750b668133fc17b401e1b98f8"
 
 # While writing download from cdrkit.org was broken so get sources from debian
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.8.8.bb b/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.8.8.bb
index 8b3aafc..56d5e12 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.8.8.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.8.8.bb
@@ -1,7 +1,7 @@
 SUMMARY = "An open source MPEG-4 and MPEG-2 AAC decoding library"
 HOMEPAGE = "http://www.audiocoding.com/faad2.html"
 SECTION = "libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=381c8cbe277a7bc1ee2ae6083a04c958"
 
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb b/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
index 21fa0bd..a7d645f 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Library for interacting with ID3 tags"
 SECTION = "libs/multimedia"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
 DEPENDS = "zlib"
 
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/ppc_musl_ucontext.patch b/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/ppc_musl_ucontext.patch
new file mode 100644
index 0000000..1fa6481
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/ppc_musl_ucontext.patch
@@ -0,0 +1,19 @@
+Add musl/ppc mcontext differences specific checks to choose
+correct gregs and context structure definitions
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/sigsegv.c
++++ b/sigsegv.c
+@@ -95,7 +95,11 @@ static void signal_segv(int signum, sigi
+     for(i = 0; i < NGREG; i++)
+         a2j_error("reg[%02d]       = 0x" REGFORMAT, i,
+ #if defined(__powerpc__) && !defined(__powerpc64__)
++# if defined(__GLIBC__)
+                 ucontext->uc_mcontext.uc_regs[i]
++# else
++                ucontext->uc_regs->gregs[i]
++# endif
+ #elif defined(__powerpc64__)
+                 ucontext->uc_mcontext.gp_regs[i]
+ #elif defined(__sparc__) && defined(__arch64__)
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_9.bb b/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_9.bb
index fa4da18..bfdf26e 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_9.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_9.bb
@@ -1,7 +1,7 @@
 SUMMARY = "a2jmidid is daemon for exposing ALSA sequencer applications as JACK MIDI"
 SECTION = "libs/multimedia"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = " \
     file://LICENSE;md5=751419260aa954499f7abaabaa882bbe \
 "
@@ -13,6 +13,7 @@
 SRC_URI = " \
     git://github.com/linuxaudio/a2jmidid;protocol=https;branch=master \
     file://riscv_ucontext.patch \
+    file://ppc_musl_ucontext.patch \
 "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_1.19.19.bb b/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_1.19.19.bb
index 8411cba..97b0ede 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_1.19.19.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_1.19.19.bb
@@ -6,7 +6,7 @@
 been used to have a more dynamic and robust system."
 SECTION = "libs/multimedia"
 
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = " \
     file://common/jack/control.h;beginline=2;endline=21;md5=e6df0bf30cde8b3b825451459488195d \
     file://common/jack/jack.h;beginline=1;endline=19;md5=6b736ed6b810592b135480a5e853392e \
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.4.bb b/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.4.bb
index 0cae7c5..99eda69 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.4.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.4.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Library for reading, mastering and writing optical discs"
 HOMEPAGE = "http://libburnia-project.org/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
 
 SRC_URI = "http://files.libburnia-project.org/releases/${BPN}-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio-paranoia_10.2+2.0.1.bb b/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio-paranoia_10.2+2.0.1.bb
index 3ca91f6..53404e5 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio-paranoia_10.2+2.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio-paranoia_10.2+2.0.1.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.gnu.org/software/libcdio/"
 BUGTRUCKER = "https://github.com/rocky/libcdio-paranoia/issues/"
 SECTION = "libs"
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 DEPENDS = "libcdio"
 
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_2.1.0.bb b/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_2.1.0.bb
index 170a555..1facd47 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_2.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_2.1.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "The GNU Compact Disc Input and Control library (libcdio) contains a library for CD-ROM and CD image access."
 HOMEPAGE = "http://www.gnu.org/software/libcdio/"
 SECTION = "libs"
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.bz2 \
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.1.2.bb b/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.1.2.bb
index 791b4ae..054fe4a 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.1.2.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.1.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "DVD access multimeda library"
 SECTION = "libs/multimedia"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=64e753fa7d1ca31632bc383da3b57c27"
 
 SRC_URI = "http://download.videolan.org/pub/videolan/libdvdread/${PV}/libdvdread-${PV}.tar.bz2"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb b/meta-openembedded/meta-oe/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
index 8058176..2f7edfb 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Library for interacting with ID3 tags in MP3 files"
 HOMEPAGE = "http://sourceforge.net/projects/mad/"
 BUGTRACKER = "http://sourceforge.net/tracker/?group_id=12349&atid=112349"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
 			file://COPYRIGHT;md5=5e6279efb87c26c6e5e7a68317a6a87a \
 			file://version.h;beginline=1;endline=8;md5=86ac68b67f054b7afde9e149bbc3fe63"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad_0.15.1b.bb b/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad_0.15.1b.bb
index 2538cc4..d3ac85e 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad_0.15.1b.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad_0.15.1b.bb
@@ -1,7 +1,7 @@
 SUMMARY = "MPEG Audio Decoder library"
 HOMEPAGE = "http://sourceforge.net/projects/mad/"
 BUGTRACKER = "http://sourceforge.net/tracker/?group_id=12349&atid=112349"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LICENSE_FLAGS = "commercial"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
     file://COPYRIGHT;md5=8e55eb14894e782b84488d5a239bc23d \
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb b/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb
index 3e528fe..62c20c6 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://sourceforge.net/projects/libmms/"
 SECTION = "libs/multimedia"
 
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=fad9b3332be894bab9bc501572864b29"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}/${PV}/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20210824.bb b/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20210824.bb
index deacab2..a899049 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20210824.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20210824.bb
@@ -4,7 +4,7 @@
 
 DESCRIPTION = "LIVE555 Streaming Media libraries"
 HOMEPAGE = "http://live.com/"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 SECTION = "devel"
 
 DEPENDS = "openssl"
@@ -55,6 +55,7 @@
     install -m 0755 ${S}/mediaServer/live555MediaServer ${D}${bindir}/
 }
 
+RDEPENDS:${PN}-dev = ""
 PACKAGES =+ "live555-openrtsp live555-playsip live555-mediaserver live555-examples"
 FILES:live555-openrtsp = "${bindir}/openRTSP"
 FILES:live555-playsip = "${bindir}/playSIP"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.11.1.bb b/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.11.1.bb
index 76e10f8..e0712ba 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.11.1.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.11.1.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "libmikmod is a module player library supporting many formats, including mod, s3m, it, and xm."
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = "alsa-lib texinfo"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.34.1.bb b/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.34.1.bb
index 57e58b1..c600e88 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.34.1.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.34.1.bb
@@ -15,7 +15,7 @@
     ${@bb.utils.contains('DISTRO_FEATURES', 'x11', ' virtual/libx11 xsp libxv libxscrnsaver libxinerama', '', d)} \
 "
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRCREV_mpv = "349e437466163cb52f7d0aa227d4606edd9db501"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_4.0.bb b/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_4.0.bb
index 591703e..5f9d7a6 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_4.0.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "PulseAudio Volume Control (pavucontrol) is a simple GTK based volume control tool ("mixer") for the PulseAudio sound server."
 HOMEPAGE = "https://freedesktop.org/software/pulseaudio/pavucontrol/"
 SECTION = "x11/multimedia"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
 
 # glib-2.0-native is required for glib-gettextize, which is used by the
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb b/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb
index e4fb4ff..87320a9 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Freedesktop sound theme"
 HOMEPAGE = "http://freedesktop.org/wiki/Specifications/sound-theme-spec"
-LICENSE = "GPLv2+ & CC-BY-3.0 & CC-BY-SA-3.0"
+LICENSE = "GPL-2.0-or-later & CC-BY-3.0 & CC-BY-SA-3.0"
 LIC_FILES_CHKSUM = "file://CREDITS;md5=3213e601ce34bb42ddc3498903ac4e69"
 
 # glib-2.0 for glib-gettext.m4 which provides AM_GLIB_GNU_GETTEXT
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch
index eb294b3..8ac8fbe 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch
@@ -1,7 +1,8 @@
-From 67a6e919b8263d6d2b7150e62f26fb06bbc526ef Mon Sep 17 00:00:00 2001
+From 0d5c0e9a75eca43667b0e29155b635e50622b66a Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Fri, 27 Feb 2015 21:55:36 +0000
 Subject: [PATCH] Revert "media-ctl: Don't install libmediactl and
+
  libv4l2subdev"
 
 This reverts commit 0911dce53b08b0df3066be2c75f67e8a314d8729.
@@ -16,7 +17,7 @@
  1 file changed, 3 insertions(+), 7 deletions(-)
 
 diff --git a/utils/media-ctl/Makefile.am b/utils/media-ctl/Makefile.am
-index ee7dcc9..d11fa2e 100644
+index c48c8d6..e255e16 100644
 --- a/utils/media-ctl/Makefile.am
 +++ b/utils/media-ctl/Makefile.am
 @@ -1,8 +1,7 @@
@@ -30,7 +31,7 @@
 +libmediactl_la_LDFLAGS = $(LIBUDEV_LIBS)
  
  media-bus-format-names.h: ../../include/linux/media-bus-format.h
- 	sed -e '/#define MEDIA_BUS_FMT/ ! d; s/.*FMT_//; /FIXED/ d; s/\t.*//; s/.*/{ \"&\", MEDIA_BUS_FMT_& },/;' \
+ 	$(AM_V_GEN) sed -e '/#define MEDIA_BUS_FMT/ ! d; s/.*FMT_//; /FIXED/ d; s/\t.*//; s/.*/{ \"&\", MEDIA_BUS_FMT_& },/;' \
 @@ -18,9 +17,6 @@ CLEANFILES = $(BUILT_SOURCES)
  nodist_libv4l2subdev_la_SOURCES = $(BUILT_SOURCES)
  libv4l2subdev_la_SOURCES = libv4l2subdev.c
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch
deleted file mode 100644
index a849d46..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 49f865a17d62db7bbd333a9b83fadeea55686e35 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 14 Jul 2017 13:17:19 -0700
-Subject: [PATCH] contrib/test: Link mc_nextgen_test with libargp if needed
-
-musl depends on external argp implementation e.g.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- contrib/test/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/contrib/test/Makefile.am b/contrib/test/Makefile.am
-index 0188fe2..dac07f3 100644
---- a/contrib/test/Makefile.am
-+++ b/contrib/test/Makefile.am
-@@ -42,7 +42,7 @@ sdlcam_CFLAGS = -I../.. $(SDL2_CFLAGS)
- sdlcam_LDADD = ../../lib/libv4l2/libv4l2.la  ../../lib/libv4lconvert/libv4lconvert.la
- 
- mc_nextgen_test_CFLAGS = $(LIBUDEV_CFLAGS)
--mc_nextgen_test_LDFLAGS = $(LIBUDEV_LIBS)
-+mc_nextgen_test_LDFLAGS = $(ARGP_LIBS) $(LIBUDEV_LIBS)
- 
- 
- ioctl_test_SOURCES = ioctl-test.c ioctl-test.h ioctl_32.h ioctl_64.h
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/mediactl-pkgconfig.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0002-original-patch-mediactl-pkgconfig.patch
similarity index 79%
rename from meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/mediactl-pkgconfig.patch
rename to meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0002-original-patch-mediactl-pkgconfig.patch
index 9fcf611..52fc2d7 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/mediactl-pkgconfig.patch
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0002-original-patch-mediactl-pkgconfig.patch
@@ -1,13 +1,14 @@
-From 480c04ac6a9d11bfef9d4aca073052fdcee4fdea Mon Sep 17 00:00:00 2001
+From 320b8378ee30eb5e0fe83a8b397f822f2f88a4c1 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sun, 1 Mar 2015 22:25:07 +0000
+Subject: [PATCH] %% original patch: mediactl-pkgconfig.patch
 
 ---
  utils/media-ctl/Makefile.am | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/utils/media-ctl/Makefile.am b/utils/media-ctl/Makefile.am
-index d11fa2e..7c520a2 100644
+index e255e16..ff7b417 100644
 --- a/utils/media-ctl/Makefile.am
 +++ b/utils/media-ctl/Makefile.am
 @@ -20,6 +20,7 @@ libv4l2subdev_la_LIBADD = libmediactl.la
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/export-mediactl-headers.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-original-patch-export-mediactl-headers.patch
similarity index 82%
rename from meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/export-mediactl-headers.patch
rename to meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-original-patch-export-mediactl-headers.patch
index 55a5cdc..39dc338 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/export-mediactl-headers.patch
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-original-patch-export-mediactl-headers.patch
@@ -1,13 +1,14 @@
-From b82e509c10659a4647961a6da3adf4d285dea2dd Mon Sep 17 00:00:00 2001
+From f7109d6b2fcb291824d795071c04a492d9fbc45b Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sun, 1 Mar 2015 22:25:07 +0000
+Subject: [PATCH] %% original patch: export-mediactl-headers.patch
 
 ---
  utils/media-ctl/Makefile.am | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/utils/media-ctl/Makefile.am b/utils/media-ctl/Makefile.am
-index 7c520a2..748353d 100644
+index ff7b417..6ce656f 100644
 --- a/utils/media-ctl/Makefile.am
 +++ b/utils/media-ctl/Makefile.am
 @@ -17,8 +17,8 @@ CLEANFILES = $(BUILT_SOURCES)
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch
index e3ce45d..d8d1b8d 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch
@@ -1,4 +1,4 @@
-From 4a10eab0e31d69948161241b1801c41201a5d081 Mon Sep 17 00:00:00 2001
+From e4582c11f76b9390a3e172dcf0741dca90a9dc8d Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 30 Nov 2019 18:50:34 -0800
 Subject: [PATCH] Do not use getsubopt
@@ -12,20 +12,21 @@
 
 Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  utils/v4l2-ctl/v4l2-ctl-common.cpp | 18 ++++++++++--------
  1 file changed, 10 insertions(+), 8 deletions(-)
 
 diff --git a/utils/v4l2-ctl/v4l2-ctl-common.cpp b/utils/v4l2-ctl/v4l2-ctl-common.cpp
-index 651917e..cea57b7 100644
+index c940171..49c0f39 100644
 --- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
 +++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
-@@ -785,15 +785,17 @@ static bool parse_subset(char *optarg)
+@@ -956,15 +956,17 @@ static bool parse_subset(char *optarg)
  
  static bool parse_next_subopt(char **subs, char **value)
  {
 -	static char *const subopts[] = {
--	    NULL
+-	    nullptr
 -	};
 -	int opt = getsubopt(subs, subopts, value);
 +	char *p = *subs;
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0008-configure.ac-autodetect-availability-of-systemd.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0008-configure.ac-autodetect-availability-of-systemd.patch
deleted file mode 100644
index 5aec3c5..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0008-configure.ac-autodetect-availability-of-systemd.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3f61e353424fb9ea3dce742022b94dfd7ea1ed9f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ulrich=20=C3=96lmann?= <u.oelmann@pengutronix.de>
-Date: Thu, 4 Mar 2021 14:23:39 +0100
-Subject: [PATCH] configure.ac: autodetect availability of systemd
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Import systemd's official suggestion [1] how this should be handled in packages
-using autoconf. A side effect of this is the removal of the hardcoded fallback
-path "/lib/systemd/system" which leaks build host information when cross
-compiling v4l-utils and therefore defeats reproducible builds.
-
-[1] https://www.freedesktop.org/software/systemd/man/daemon.html#Installing%20systemd%20Service%20Files
-
-Upstream-Status: Backport [https://git.linuxtv.org/v4l-utils.git/commit/?id=3f61e353424fb9ea3dce742022b94dfd7ea1ed9f]
-
-Signed-off-by: Ulrich Ölmann <u.oelmann@pengutronix.de>
-Signed-off-by: Sean Young <sean@mess.org>
----
- configure.ac | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 727730c5ccf4..8470116df4b1 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -388,7 +388,15 @@ AC_ARG_WITH(udevdir,
- AC_ARG_WITH(systemdsystemunitdir,
- 	AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [set systemd system unit directory]),
- 	[],
--	[with_systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd || echo /lib/systemd/system`])
-+	[with_systemdsystemunitdir=auto])
-+AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"],
-+      [def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
-+       AS_IF([test "x$def_systemdsystemunitdir" = "x"],
-+             [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"],
-+                    [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])
-+              with_systemdsystemunitdir=no],
-+             [with_systemdsystemunitdir="$def_systemdsystemunitdir"])])
-+AM_CONDITIONAL([HAVE_SYSTEMD], [test "x$with_systemdsystemunitdir" != "xno"])
- 
- # Generic check: works with most distributions
- def_gconv_dir=`for i in /lib64 /usr/lib64 /usr/local/lib64 /lib /usr/lib /usr/local/lib; do if @<:@ -d \$i/gconv @:>@; then echo \$i/gconv; break; fi; done`
--- 
-2.29.2
-
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0009-keytable-restrict-installation-of-50-rc_keymap.conf.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0009-keytable-restrict-installation-of-50-rc_keymap.conf.patch
deleted file mode 100644
index 63a695f..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0009-keytable-restrict-installation-of-50-rc_keymap.conf.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 01f2c6c58e6f4441df7df8e27eb7919f1f01e310 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ulrich=20=C3=96lmann?= <u.oelmann@pengutronix.de>
-Date: Thu, 4 Mar 2021 14:23:40 +0100
-Subject: [PATCH] keytable: restrict installation of 50-rc_keymap.conf
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-It is only needed if BPF is effectively used and the package is compiled for a
-systemd based target.
-
-Upstream-Status: Backport [https://git.linuxtv.org/v4l-utils.git/commit/?id=01f2c6c58e6f4441df7df8e27eb7919f1f01e310]
-
-Signed-off-by: Ulrich Ölmann <u.oelmann@pengutronix.de>
-Signed-off-by: Sean Young <sean@mess.org>
----
- utils/keytable/Makefile.am | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/utils/keytable/Makefile.am b/utils/keytable/Makefile.am
-index c5eb414acf2f..eee61f0e0551 100644
---- a/utils/keytable/Makefile.am
-+++ b/utils/keytable/Makefile.am
-@@ -3,9 +3,13 @@ man_MANS = ir-keytable.1 rc_keymap.5
- sysconf_DATA = rc_maps.cfg
- keytablesystem_DATA = $(srcdir)/rc_keymaps/*
- udevrules_DATA = 70-infrared.rules
-+if WITH_BPF
-+if HAVE_SYSTEMD
- if HAVE_UDEVDSYSCALLFILTER
- systemdsystemunit_DATA = 50-rc_keymap.conf
- endif
-+endif
-+endif
- 
- ir_keytable_SOURCES = keytable.c parse.h ir-encode.c ir-encode.h toml.c toml.h keymap.c keymap.h
- 
--- 
-2.29.2
-
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.20.0.bb b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.22.1.bb
similarity index 79%
rename from meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.20.0.bb
rename to meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.22.1.bb
index 866c0c5..741e103 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.20.0.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.22.1.bb
@@ -1,5 +1,5 @@
 SUMMARY = "v4l2 and IR applications"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=48da9957849056017dc568bbc43d8975 \
                     file://COPYING.libv4l;md5=d749e86a105281d7a44c2328acebc4b0"
 PROVIDES = "libv4l media-ctl"
@@ -18,15 +18,13 @@
 
 SRC_URI = "http://linuxtv.org/downloads/v4l-utils/v4l-utils-${PV}.tar.bz2 \
            file://0001-Revert-media-ctl-Don-t-install-libmediactl-and-libv4.patch \
-           file://mediactl-pkgconfig.patch \
-           file://export-mediactl-headers.patch \
-           file://0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch \
+           file://0002-original-patch-mediactl-pkgconfig.patch \
+           file://0003-original-patch-export-mediactl-headers.patch \
            file://0007-Do-not-use-getsubopt.patch \
-           file://0008-configure.ac-autodetect-availability-of-systemd.patch \
-           file://0009-keytable-restrict-installation-of-50-rc_keymap.conf.patch \
            "
-SRC_URI[md5sum] = "46f9e2c0b2fdccd009da2f7e1aa87894"
-SRC_URI[sha256sum] = "956118713f7ccb405c55c7088a6a2490c32d54300dd9a30d8d5008c28d3726f7"
+
+SRC_URI[md5sum] = "8aa73287320a49e9170a8255d7b2c7e6"
+SRC_URI[sha256sum] = "65c6fbe830a44ca105c443b027182c1b2c9053a91d1e72ad849dfab388b94e31"
 
 EXTRA_OECONF = "--disable-qv4l2 --enable-shared --with-udevdir=${base_libdir}/udev \
                 --disable-v4l2-compliance-32 --disable-v4l2-ctl-32"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb
index 39e73d3..1017663 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Yet Another V4L2 Test Application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
 
 SRC_URI = "git://git.ideasonboard.org/yavta.git;branch=master \
diff --git a/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.5.7.bb b/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.5.7.bb
index 9a961ad..3abb629 100644
--- a/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.5.7.bb
+++ b/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.5.7.bb
@@ -3,7 +3,7 @@
 The primary goal of the Geoclue project is to make creating location-aware applications \
 as simple as possible, while the secondary goal is to ensure that no application \
 can access location information without explicit permission from user."
-LICENSE = "GPLv2.0+"
+LICENSE = "GPL-2.0-or-later"
 SECTION = "console/network"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=bdfdd4986a0853eb84eeba85f9d0c4d6"
diff --git a/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc b/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc
index b09e584..bfac69b 100644
--- a/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc
+++ b/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://trac.osgeo.org/geos/"
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 SRC_URI = "http://download.osgeo.org/geos/geos-${PV}.tar.bz2"
diff --git a/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb b/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb
index c2e0688..f6c7655 100644
--- a/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb
+++ b/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb
@@ -3,7 +3,7 @@
 SECTION = "libs"
 DEPENDS = "proj geos sqlite3 libxml2 zlib"
 
-LICENSE = "MPLv1.1 & GPLv2+ & LGPLv2.1+"
+LICENSE = "MPL-1.1 & GPL-2.0-or-later & LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0e92e1a36cc384b60f5b31dde0bdd39e"
 
 SRC_URI = "http://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb b/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb
index 510b0b0..100ecb1 100644
--- a/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb
+++ b/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Astronomical application which displays the night sky"
 HOMEPAGE    = "http://projects.openmoko.org/projects/orrery/"
 SECTION = "x11/scientific"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://orrery.c;endline=25;md5=d792bdf2b591972da175aecc38d88cfe"
 DEPENDS = "gtk+"
 
diff --git a/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc b/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc
index 061c8a6..5952b5a 100644
--- a/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc
+++ b/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc
@@ -1,7 +1,7 @@
 DESCRIPTION = "CUPS backends, filters, and other software"
 HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters"
 
-LICENSE = "GPLv2 & LGPLv2 & MIT & GPLv2+ & GPLv3"
+LICENSE = "GPL-2.0-only & LGPL-2.0-only & MIT & GPL-2.0-or-later & GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d77679ce6a2cc4d873d4ebbf2a401e6"
 
 SECTION = "console/utils"
diff --git a/meta-openembedded/meta-oe/recipes-printing/gutenprint/gutenprint.inc b/meta-openembedded/meta-oe/recipes-printing/gutenprint/gutenprint.inc
index 0a162d2..1f71258 100644
--- a/meta-openembedded/meta-oe/recipes-printing/gutenprint/gutenprint.inc
+++ b/meta-openembedded/meta-oe/recipes-printing/gutenprint/gutenprint.inc
@@ -13,7 +13,7 @@
 
 DESCRIPTION = "Gutenprint printer drivers"
 HOMEPAGE = "http://gimp-print.sourceforge.net/"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 SRC_URI = "git://git.code.sf.net/p/gimp-print/source;protocol=https;branch=master"
 SRCREV = "8e47dc44dd7738302ba9e8fbc1f918461fed0236"
diff --git a/meta-openembedded/meta-oe/recipes-security/audit/audit_2.8.5.bb b/meta-openembedded/meta-oe/recipes-security/audit/audit_2.8.5.bb
index b3a377d..347c855 100644
--- a/meta-openembedded/meta-oe/recipes-security/audit/audit_2.8.5.bb
+++ b/meta-openembedded/meta-oe/recipes-security/audit/audit_2.8.5.bb
@@ -4,7 +4,7 @@
 in the Linux kernel."
 HOMEPAGE = "http://people.redhat.com/sgrubb/audit/"
 SECTION = "base"
-LICENSE = "GPLv2+ & LGPLv2+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI = "git://github.com/linux-audit/${BPN}-userspace.git;branch=2.8_maintenance;protocol=https \
diff --git a/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.6.bb b/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.6.bb
index 7e4cc27..d99d9a8 100644
--- a/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.6.bb
+++ b/meta-openembedded/meta-oe/recipes-security/audit/audit_3.0.6.bb
@@ -4,7 +4,7 @@
 in the Linux kernel."
 HOMEPAGE = "http://people.redhat.com/sgrubb/audit/"
 SECTION = "base"
-LICENSE = "GPLv2+ & LGPLv2+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI = "git://github.com/linux-audit/${BPN}-userspace.git;branch=master;protocol=https \
diff --git a/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb b/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb
index 6273edd..8a95a15 100644
--- a/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb
@@ -7,7 +7,7 @@
 HOMEPAGE = "http://people.redhat.com/dhowells/keyutils"
 SECTION = "base"
 
-LICENSE = "LGPLv2.1+ & GPLv2.0+"
+LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later"
 
 LIC_FILES_CHKSUM = "file://LICENCE.GPL;md5=5f6e72824f5da505c1f4a7197f004b45 \
                     file://LICENCE.LGPL;md5=7d1cacaa3ea752b72ea5e525df54a21f"
diff --git a/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.80.bb b/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.80.bb
index c2e3585..030f033 100644
--- a/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.80.bb
+++ b/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.80.bb
@@ -1,7 +1,7 @@
 SUMMARY = "network auditing tool"
 DESCRIPTION = "Nmap ("Network Mapper") is a free and open source (license) utility for network discovery and security auditing.\nGui support via appending to IMAGE_FEATURES x11-base in local.conf"
 SECTION = "security"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://COPYING;beginline=7;endline=12;md5=66938a7e5b4c118eda78271de14874c2"
 
diff --git a/meta-openembedded/meta-oe/recipes-security/tomoyo-tools/tomoyo-tools_2.5.0.bb b/meta-openembedded/meta-oe/recipes-security/tomoyo-tools/tomoyo-tools_2.5.0.bb
index 4b36dd6..a1c4cc9 100644
--- a/meta-openembedded/meta-oe/recipes-security/tomoyo-tools/tomoyo-tools_2.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-security/tomoyo-tools/tomoyo-tools_2.5.0.bb
@@ -11,7 +11,7 @@
 
 S = "${WORKDIR}/${BPN}"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING.tomoyo;md5=751419260aa954499f7abaabaa882bbe"
 
 FILES:${PN}     += "${libdir}/tomoyo"
diff --git a/meta-openembedded/meta-oe/recipes-security/usbguard/usbguard/0001-Add-and-use-pkgconfig-instead-of-libgcrypt-config.patch b/meta-openembedded/meta-oe/recipes-security/usbguard/usbguard/0001-Add-and-use-pkgconfig-instead-of-libgcrypt-config.patch
new file mode 100644
index 0000000..a7a3eb0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-security/usbguard/usbguard/0001-Add-and-use-pkgconfig-instead-of-libgcrypt-config.patch
@@ -0,0 +1,106 @@
+From e36cbf9d7a32de9945a8b6c62ad29dfb60358081 Mon Sep 17 00:00:00 2001
+From: "Anu Deepthika, Nandipati" <Nandipati.AnuDeepthika@philips.com>
+Date: Wed, 9 Mar 2022 02:03:51 +0530
+Subject: [PATCH] Add and use pkgconfig instead of libgcrypt-config
+
+Upstream-Status: Pending
+
+Signed-off-by: Anu Deepthika, Nandipati <Nandipati.AnuDeepthika@philips.com>
+---
+ m4/libgcrypt.m4 | 56 ++-----------------------------------------------
+ 1 file changed, 2 insertions(+), 54 deletions(-)
+
+diff --git a/m4/libgcrypt.m4 b/m4/libgcrypt.m4
+index 9a29eb5..465fe24 100644
+--- a/m4/libgcrypt.m4
++++ b/m4/libgcrypt.m4
+@@ -22,17 +22,7 @@ dnl with a changed API.
+ dnl
+ AC_DEFUN([AM_PATH_LIBGCRYPT],
+ [ AC_REQUIRE([AC_CANONICAL_HOST])
+-  AC_ARG_WITH(libgcrypt-prefix,
+-            AS_HELP_STRING([--with-libgcrypt-prefix=PFX],
+-                           [prefix where LIBGCRYPT is installed (optional)]),
+-     libgcrypt_config_prefix="$withval", libgcrypt_config_prefix="")
+-  if test x$libgcrypt_config_prefix != x ; then
+-     if test x${LIBGCRYPT_CONFIG+set} != xset ; then
+-        LIBGCRYPT_CONFIG=$libgcrypt_config_prefix/bin/libgcrypt-config
+-     fi
+-  fi
+ 
+-  AC_PATH_TOOL(LIBGCRYPT_CONFIG, libgcrypt-config, no)
+   tmp=ifelse([$1], ,1:1.2.0,$1)
+   if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
+      req_libgcrypt_api=`echo "$tmp"     | sed 's/\(.*\):\(.*\)/\1/'`
+@@ -41,44 +31,8 @@ AC_DEFUN([AM_PATH_LIBGCRYPT],
+      req_libgcrypt_api=0
+      min_libgcrypt_version="$tmp"
+   fi
++  PKG_CHECK_MODULES(LIBGCRYPT, [libgcrypt >= $min_libgcrypt_version], [ok=yes], [ok=no])
+ 
+-  AC_MSG_CHECKING(for LIBGCRYPT - version >= $min_libgcrypt_version)
+-  ok=no
+-  if test "$LIBGCRYPT_CONFIG" != "no" ; then
+-    req_major=`echo $min_libgcrypt_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
+-    req_minor=`echo $min_libgcrypt_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
+-    req_micro=`echo $min_libgcrypt_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
+-    libgcrypt_config_version=`$LIBGCRYPT_CONFIG --version`
+-    major=`echo $libgcrypt_config_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
+-    minor=`echo $libgcrypt_config_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
+-    micro=`echo $libgcrypt_config_version | \
+-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/'`
+-    if test "$major" -gt "$req_major"; then
+-        ok=yes
+-    else
+-        if test "$major" -eq "$req_major"; then
+-            if test "$minor" -gt "$req_minor"; then
+-               ok=yes
+-            else
+-               if test "$minor" -eq "$req_minor"; then
+-                   if test "$micro" -ge "$req_micro"; then
+-                     ok=yes
+-                   fi
+-               fi
+-            fi
+-        fi
+-    fi
+-  fi
+-  if test $ok = yes; then
+-    AC_MSG_RESULT([yes ($libgcrypt_config_version)])
+-  else
+-    AC_MSG_RESULT(no)
+-  fi
+   if test $ok = yes; then
+      # If we have a recent libgcrypt, we should also check that the
+      # API is compatible
+@@ -96,10 +50,8 @@ AC_DEFUN([AM_PATH_LIBGCRYPT],
+      fi
+   fi
+   if test $ok = yes; then
+-    LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags`
+-    LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs`
+     ifelse([$2], , :, [$2])
+-    libgcrypt_config_host=`$LIBGCRYPT_CONFIG --host 2>/dev/null || echo none`
++	libgcrypt_config_host=`$PKG_CONFIG --variable=host libgcrypt`
+     if test x"$libgcrypt_config_host" != xnone ; then
+       if test x"$libgcrypt_config_host" != x"$host" ; then
+   AC_MSG_WARN([[
+@@ -112,10 +64,6 @@ AC_DEFUN([AM_PATH_LIBGCRYPT],
+ ***]])
+       fi
+     fi
+-  else
+-    LIBGCRYPT_CFLAGS=""
+-    LIBGCRYPT_LIBS=""
+-    ifelse([$3], , :, [$3])
+   fi
+   AC_SUBST(LIBGCRYPT_CFLAGS)
+   AC_SUBST(LIBGCRYPT_LIBS)
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-security/usbguard/usbguard_1.1.1.bb b/meta-openembedded/meta-oe/recipes-security/usbguard/usbguard_1.1.1.bb
new file mode 100644
index 0000000..8df78ec
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-security/usbguard/usbguard_1.1.1.bb
@@ -0,0 +1,68 @@
+# Copyright (c) 2021 Koninklijke Philips N.V.
+#
+# SPDX-License-Identifier: MIT
+#
+SUMMARY = "USBGuard daemon for blacklisting and whitelisting of USB devices"
+DESCRIPTION = "The USBGuard software framework helps to protect your computer against \
+rogue USB devices (a.k.a. Bad USB) by implementing basic whitelisting and blacklisting \
+capabilities based on device attributes. This recipe takes OpenSSL as crypto-backend for \
+computing device hashes (Supported values are sodium, gcrypt, openssl)."
+HOMEPAGE = "https://usbguard.github.io/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "https://github.com/USBGuard/usbguard/releases/download/${BPN}-${PV}/${BPN}-${PV}.tar.gz \
+    file://0001-Add-and-use-pkgconfig-instead-of-libgcrypt-config.patch"
+
+SRC_URI[sha256sum] = "460ebfb4ffc5609739a202a3a1d9fda1c30de033b634845b8baa136352bfb432"
+
+inherit autotools-brokensep bash-completion pkgconfig systemd
+
+DEPENDS = "glib-2.0-native libcap-ng libqb libxml2-native libxslt-native pegtl protobuf protobuf-native xmlto-native"
+
+S = "${WORKDIR}/${BPN}-${PV}"
+
+EXTRA_OECONF += "\
+    --with-bundled-catch \
+    --with-bundled-pegtl \
+"
+
+PACKAGECONFIG ?= "\
+    openssl \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'polkit', d)} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+"
+
+# USBGuard has made polkit mandatory to configure with-dbus
+PACKAGECONFIG[dbus] = "--with-dbus,--without-dbus,dbus-glib polkit"
+PACKAGECONFIG[libgcrypt] = "--with-crypto-library=gcrypt,,libgcrypt,,,libsodium openssl"
+PACKAGECONFIG[libsodium] = "--with-crypto-library=sodium,,libsodium,,,libgcrypt openssl"
+PACKAGECONFIG[openssl] = "--with-crypto-library=openssl,,openssl,,,libgcrypt libsodium"
+PACKAGECONFIG[polkit] = "--with-polkit,--without-polkit,polkit"
+PACKAGECONFIG[seccomp] = "--enable-seccomp,--disable-seccomp,libseccomp"
+PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd"
+
+SYSTEMD_PACKAGES = "${PN}"
+
+SYSTEMD_SERVICE:${PN} = "usbguard.service ${@bb.utils.contains('PACKAGECONFIG', 'dbus', 'usbguard-dbus.service', '', d)}"
+
+FILES:${PN} += "\
+    ${systemd_unitdir}/system/usbguard.service \
+    ${systemd_unitdir}/system/usbguard-dbus.service \
+    ${datadir}/polkit-1 \
+    ${datadir}/dbus-1 \
+    ${nonarch_libdir}/tmpfiles.d \
+"
+
+do_install:append() {
+# Create /var/log/usbguard in runtime.
+    if [ "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" ]; then
+        install -d ${D}${nonarch_libdir}/tmpfiles.d
+        echo "d ${localstatedir}/log/${BPN} 0755 root root -" > ${D}${nonarch_libdir}/tmpfiles.d/${BPN}.conf
+    fi
+    if [ "${@bb.utils.filter('DISTRO_FEATURES', 'sysvinit', d)}" ]; then
+        install -d ${D}${sysconfdir}/default/volatiles
+        echo "d root root 0755 ${localstatedir}/log/${BPN} none" > ${D}${sysconfdir}/default/volatiles/99_${BPN}
+    fi
+    rm -rf ${D}${localstatedir}/log
+}
diff --git a/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.5.bb b/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.5.bb
index 20f8404..ad3672f 100644
--- a/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.5.bb
+++ b/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.11.5.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://gondor.apana.org.au/~herbert/dash/"
 SECTION = "System Environment/Shells"
 
-LICENSE = "BSD-3-Clause & GPLv2+"
+LICENSE = "BSD-3-Clause & GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b5262b4a1a1bff72b48e935531976d2e"
 
 inherit autotools update-alternatives
diff --git a/meta-openembedded/meta-oe/recipes-support/anthy/anthy_9100h.bb b/meta-openembedded/meta-oe/recipes-support/anthy/anthy_9100h.bb
index 3ca394a..2a6cfb5 100644
--- a/meta-openembedded/meta-oe/recipes-support/anthy/anthy_9100h.bb
+++ b/meta-openembedded/meta-oe/recipes-support/anthy/anthy_9100h.bb
@@ -2,7 +2,7 @@
 AUTHOR = "Anthy Developers <anthy-dev@lists.sourceforge.jp>"
 HOMEPAGE = "http://anthy.sourceforge.jp"
 
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=11f384074d8e93e263b5664ef08a411a \
     file://alt-cannadic/COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b \
 "
diff --git a/meta-openembedded/meta-oe/recipes-support/atop/atop_2.4.0.bb b/meta-openembedded/meta-oe/recipes-support/atop/atop_2.4.0.bb
index 819303c..35540b3 100644
--- a/meta-openembedded/meta-oe/recipes-support/atop/atop_2.4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/atop/atop_2.4.0.bb
@@ -10,7 +10,7 @@
 HOMEPAGE = "http://www.atoptool.nl"
 SECTION = "console/utils"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
 
 DEPENDS = "ncurses zlib"
diff --git a/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc b/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc
index d83ba49..d46f388 100644
--- a/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc
+++ b/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://augeas.net/"
 BUGTRACKER = "https://fedorahosted.org/augeas/report/1"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=bbb461211a33b134d42ed5ee802b37ff"
 
 SRC_URI = "http://download.augeas.net/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb b/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb
index 42b9f1e..97c0489 100644
--- a/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb
@@ -9,10 +9,10 @@
 
 DEPENDS += "boost qemu-native"
 
-PV = "git${SRCPV}"
+PV = "1.1.5"
 
 SRC_URI = "git://github.com/boost-ext/sml.git;protocol=https;branch=master"
-SRCREV = "bcc8dc7815c0d17ad3a8bd52b202f4e90d4d4ca1"
+SRCREV = "7ed8f85fbe5b5af87bfb818e9e0347aaf7f7056d"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb b/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb
index f828258..3ccd9a1 100644
--- a/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb
@@ -2,7 +2,7 @@
 
 HOMEPAGE = "https://launchpad.net/frame"
 
-LICENSE = "GPLv3 & LGPLv3"
+LICENSE = "GPL-3.0-only & LGPL-3.0-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02 \
     file://COPYING.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
diff --git a/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb b/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb
index 5f93d8d..a1a28a8 100644
--- a/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb
+++ b/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb
@@ -7,7 +7,7 @@
 
 HOMEPAGE = "https://launchpad.net/geis"
 
-LICENSE = "GPLv3 & LGPLv3"
+LICENSE = "GPL-3.0-only & LGPL-3.0-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=6a6a8e020838b23406c81b19c1d46df6 \
     file://COPYING.GPL;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
diff --git a/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.1.bb b/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.1.bb
index 3e5af2a..6646c8b 100644
--- a/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.1.bb
@@ -2,7 +2,7 @@
 
 HOMEPAGE = "https://launchpad.net/grail"
 
-LICENSE = "GPLv3 & LGPLv3"
+LICENSE = "GPL-3.0-only & LGPL-3.0-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02 \
     file://COPYING.GPL3;md5=d32239bcb673463ab874e80d47fae504 \
diff --git a/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.33.bb b/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.33.bb
index e3cb7ce..7b260f1 100644
--- a/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.33.bb
+++ b/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.33.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Generic USB CCID smart card reader driver"
 HOMEPAGE = "https://ccid.apdu.fr/"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 DEPENDS = "virtual/libusb0 pcsc-lite"
diff --git a/meta-openembedded/meta-oe/recipes-support/colord/colord.inc b/meta-openembedded/meta-oe/recipes-support/colord/colord.inc
index 09e600c..41962cd 100644
--- a/meta-openembedded/meta-oe/recipes-support/colord/colord.inc
+++ b/meta-openembedded/meta-oe/recipes-support/colord/colord.inc
@@ -1,6 +1,6 @@
 SUMMARY = "Making color management just work"
 HOMEPAGE = "https://www.freedesktop.org/software/colord/"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
     file://meson.build;beginline=3;endline=3;md5=f42198707d793be58b274d34fd5238c3 \
diff --git a/meta-openembedded/meta-oe/recipes-support/consolation/consolation_0.0.8.bb b/meta-openembedded/meta-oe/recipes-support/consolation/consolation_0.0.8.bb
index 01a02d4..0936b1a 100644
--- a/meta-openembedded/meta-oe/recipes-support/consolation/consolation_0.0.8.bb
+++ b/meta-openembedded/meta-oe/recipes-support/consolation/consolation_0.0.8.bb
@@ -5,7 +5,7 @@
 software include gpm and jamd."
 HOMEPAGE = "https://salsa.debian.org/consolation-team/consolation"
 SECTION = "console/utils"
-LICENSE = "GPL-2.0+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=73ca626e1d9048abfc7d599370650827"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2.bb b/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2.bb
index 56ca7a1..92c05fe 100644
--- a/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2.bb
@@ -1,11 +1,10 @@
 SUMMARY = "Simple program to read/write from/to any location in memory"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://devmem2.c;endline=38;md5=a9eb9f3890384519f435aedf986297cf"
 PR = "r7"
 
 SRC_URI = "http://www.free-electrons.com/pub/mirror/devmem2.c;downloadfilename=devmem2-new.c \
-           file://devmem2-fixups-2.patch;apply=yes;striplevel=0 \
-           file://0001-devmem.c-ensure-word-is-32-bit-and-add-support-for-6.patch"
+          " 
 
 S = "${WORKDIR}"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2/0001-devmem.c-ensure-word-is-32-bit-and-add-support-for-6.patch b/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2/0001-devmem.c-ensure-word-is-32-bit-and-add-support-for-6.patch
deleted file mode 100644
index 2a57f29..0000000
--- a/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2/0001-devmem.c-ensure-word-is-32-bit-and-add-support-for-6.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 1360a907879dd24041797a3b709d49aeac2ab444 Mon Sep 17 00:00:00 2001
-From: Denys Dmytriyenko <denys@ti.com>
-Date: Tue, 29 May 2018 16:55:42 -0400
-Subject: [PATCH] devmem.c: ensure word is 32-bit and add support for 64-bit
- long
-
-Signed-off-by: Denys Dmytriyenko <denys@ti.com>
----
- devmem2.c | 23 +++++++++++++++++------
- 1 file changed, 17 insertions(+), 6 deletions(-)
-
-diff --git a/devmem2.c b/devmem2.c
-index 5845381..68131b2 100644
---- a/devmem2.c
-+++ b/devmem2.c
-@@ -39,6 +39,7 @@
- 
- #include <stdio.h>
- #include <stdlib.h>
-+#include <stdint.h>
- #include <unistd.h>
- #include <string.h>
- #include <errno.h>
-@@ -69,7 +70,7 @@ int main(int argc, char **argv) {
- 	if(argc < 2) {
- 		fprintf(stderr, "\nUsage:\t%s { address } [ type [ data ] ]\n"
- 			"\taddress : memory address to act upon\n"
--			"\ttype    : access operation type : [b]yte, [h]alfword, [w]ord\n"
-+			"\ttype    : access operation type : [b]yte, [h]alfword, [w]ord, [l]ong\n"
- 			"\tdata    : data to be written\n\n",
- 			argv[0]);
- 		exit(1);
-@@ -103,9 +104,14 @@ int main(int argc, char **argv) {
- 			read_result = *((unsigned short *) virt_addr);
- 			break;
- 		case 'w':
--			data_size = sizeof(unsigned long);
-+			data_size = sizeof(uint32_t);
- 			virt_addr = fixup_addr(virt_addr, data_size);
--			read_result = *((unsigned long *) virt_addr);
-+			read_result = *((uint32_t *) virt_addr);
-+			break;
-+		case 'l':
-+			data_size = sizeof(uint64_t);
-+			virt_addr = fixup_addr(virt_addr, data_size);
-+			read_result = *((uint64_t *) virt_addr);
- 			break;
- 		default:
- 			fprintf(stderr, "Illegal data type '%c'.\n", access_type);
-@@ -129,9 +135,14 @@ int main(int argc, char **argv) {
- 				read_result = *((unsigned short *) virt_addr);
- 				break;
- 			case 'w':
--				virt_addr = fixup_addr(virt_addr, sizeof(unsigned long));
--				*((unsigned long *) virt_addr) = write_val;
--				read_result = *((unsigned long *) virt_addr);
-+				virt_addr = fixup_addr(virt_addr, sizeof(uint32_t));
-+				*((uint32_t *) virt_addr) = write_val;
-+				read_result = *((uint32_t *) virt_addr);
-+				break;
-+			case 'l':
-+				virt_addr = fixup_addr(virt_addr, sizeof(uint64_t));
-+				*((uint64_t *) virt_addr) = write_val;
-+				read_result = *((uint64_t *) virt_addr);
- 				break;
- 		}
- 		sprintf(fmt_str, "Write at address 0x%%08lX (%%p): 0x%%0%dlX, "
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2/devmem2-fixups-2.patch b/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2/devmem2-fixups-2.patch
deleted file mode 100644
index 4517797..0000000
--- a/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2/devmem2-fixups-2.patch
+++ /dev/null
@@ -1,91 +0,0 @@
---- devmem2.c	2004-08-05 01:55:25.000000000 +0200
-+++ devmem2_modif.c	2011-01-13 15:48:37.798799784 +0100
-@@ -45,12 +45,16 @@
- #define MAP_SIZE 4096UL
- #define MAP_MASK (MAP_SIZE - 1)
- 
-+static inline void *fixup_addr(void *addr, size_t size);
-+
- int main(int argc, char **argv) {
-     int fd;
-     void *map_base, *virt_addr; 
--	unsigned long read_result, writeval;
-+	unsigned long read_result, write_val;
- 	off_t target;
- 	int access_type = 'w';
-+	char fmt_str[128];
-+	size_t data_size;
- 	
- 	if(argc < 2) {
- 		fprintf(stderr, "\nUsage:\t%s { address } [ type [ data ] ]\n"
-@@ -79,38 +83,51 @@
-     virt_addr = map_base + (target & MAP_MASK);
-     switch(access_type) {
- 		case 'b':
-+			data_size = sizeof(unsigned char);
-+			virt_addr = fixup_addr(virt_addr, data_size);
- 			read_result = *((unsigned char *) virt_addr);
- 			break;
- 		case 'h':
-+			data_size = sizeof(unsigned short);
-+			virt_addr = fixup_addr(virt_addr, data_size);
- 			read_result = *((unsigned short *) virt_addr);
- 			break;
- 		case 'w':
-+			data_size = sizeof(unsigned long);
-+			virt_addr = fixup_addr(virt_addr, data_size);
- 			read_result = *((unsigned long *) virt_addr);
- 			break;
- 		default:
- 			fprintf(stderr, "Illegal data type '%c'.\n", access_type);
- 			exit(2);
- 	}
--    printf("Value at address 0x%X (%p): 0x%X\n", target, virt_addr, read_result); 
-+	sprintf(fmt_str, "Read at address  0x%%08lX (%%p): 0x%%0%dlX\n", 2*data_size);
-+    printf(fmt_str, (unsigned long)target, virt_addr, read_result);
-     fflush(stdout);
- 
- 	if(argc > 3) {
--		writeval = strtoul(argv[3], 0, 0);
-+		write_val = strtoul(argv[3], 0, 0);
- 		switch(access_type) {
- 			case 'b':
--				*((unsigned char *) virt_addr) = writeval;
-+				virt_addr = fixup_addr(virt_addr, sizeof(unsigned char));
-+				*((unsigned char *) virt_addr) = write_val;
- 				read_result = *((unsigned char *) virt_addr);
- 				break;
- 			case 'h':
--				*((unsigned short *) virt_addr) = writeval;
-+				virt_addr = fixup_addr(virt_addr, sizeof(unsigned short));
-+				*((unsigned short *) virt_addr) = write_val;
- 				read_result = *((unsigned short *) virt_addr);
- 				break;
- 			case 'w':
--				*((unsigned long *) virt_addr) = writeval;
-+				virt_addr = fixup_addr(virt_addr, sizeof(unsigned long));
-+				*((unsigned long *) virt_addr) = write_val;
- 				read_result = *((unsigned long *) virt_addr);
- 				break;
- 		}
--		printf("Written 0x%X; readback 0x%X\n", writeval, read_result); 
-+		sprintf(fmt_str, "Write at address 0x%%08lX (%%p): 0x%%0%dlX, "
-+			"readback 0x%%0%dlX\n",	2*data_size, 2*data_size);
-+		printf(fmt_str, (unsigned long)target, virt_addr,
-+			write_val, read_result);
- 		fflush(stdout);
- 	}
- 	
-@@ -119,3 +136,12 @@
-     return 0;
- }
- 
-+static inline void *fixup_addr(void *addr, size_t size)
-+{
-+#ifdef FORCE_STRICT_ALIGNMENT
-+	unsigned long aligned_addr = (unsigned long)addr;
-+	aligned_addr &= ~(size - 1);
-+	addr = (void *)aligned_addr;
-+#endif
-+	return addr;
-+}
diff --git a/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.11.bb b/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.11.bb
index 5a1e4aa..7f80a30 100644
--- a/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.11.bb
+++ b/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.11.bb
@@ -2,7 +2,7 @@
 AUTHOR = "Harald Welte <laforge@openmoko.org>"
 HOMEPAGE = "http://dfu-util.sourceforge.net"
 SECTION = "devel"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = "libusb1"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/dhex/dhex_0.69.bb b/meta-openembedded/meta-oe/recipes-support/dhex/dhex_0.69.bb
index 6f8c86a..3cc8704 100644
--- a/meta-openembedded/meta-oe/recipes-support/dhex/dhex_0.69.bb
+++ b/meta-openembedded/meta-oe/recipes-support/dhex/dhex_0.69.bb
@@ -4,7 +4,7 @@
 
 DEPENDS = "ncurses"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://README.txt;beginline=229;endline=241;md5=6f252a421b65bcecf624382ba3c899da"
 
 SRC_URI = "http://www.dettus.net/dhex/dhex_0.69.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_3.7.2.bb b/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_3.7.2.bb
index cac2b4f..6565097 100644
--- a/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_3.7.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_3.7.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "read temperature sensors in a 1-Wire net"
 SECTION = "util"
 DEPENDS = "libusb1"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=44fee82a1d2ed0676cf35478283e0aa0"
 
 SRC_URI = "git://github.com/bcl/digitemp;branch=master;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-support/dool/dool_1.0.0.bb b/meta-openembedded/meta-oe/recipes-support/dool/dool_1.0.0.bb
index 0cbc32f..d34397c 100644
--- a/meta-openembedded/meta-oe/recipes-support/dool/dool_1.0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/dool/dool_1.0.0.bb
@@ -4,7 +4,7 @@
 and flexibility. Dstat is handy for monitoring systems during performance tuning tests, \
 benchmarks or troubleshooting."
 HOMEPAGE = "http://dag.wiee.rs/home-made/dstat"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS += "asciidoc-native xmlto-native"
diff --git a/meta-openembedded/meta-oe/recipes-support/driverctl/driverctl_0.111.bb b/meta-openembedded/meta-oe/recipes-support/driverctl/driverctl_0.111.bb
index 2b9a2f8..f5f542c 100644
--- a/meta-openembedded/meta-oe/recipes-support/driverctl/driverctl_0.111.bb
+++ b/meta-openembedded/meta-oe/recipes-support/driverctl/driverctl_0.111.bb
@@ -1,5 +1,5 @@
 SUMMARY = "driverctl is a device driver control utility for Linux"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/LGPL-2.1-only;md5=1a6d268fd218675ffea8be556788b780"
 
 REQUIRED_DISTRO_FEATURES = "systemd"
diff --git a/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb b/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
index ca1a245..33b31a2 100644
--- a/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Eject allows removable media (typically a CD-ROM, floppy disk, tape, or JAZ or ZIP disk) to be ejected under software control."
 HOMEPAGE = "http://eject.sourceforge.net/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 
 inherit autotools gettext update-alternatives
diff --git a/meta-openembedded/meta-oe/recipes-support/emacs/emacs_27.2.bb b/meta-openembedded/meta-oe/recipes-support/emacs/emacs_27.2.bb
index 193cd00..b78dc5e 100644
--- a/meta-openembedded/meta-oe/recipes-support/emacs/emacs_27.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/emacs/emacs_27.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Emacs is the extensible, customizable, self-documenting real-time display editor"
 HOMEPAGE = "https://www.gnu.org/software/emacs/"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 SRC_URI = "https://ftp.gnu.org/pub/gnu/emacs/emacs-${PV}.tar.xz \
diff --git a/meta-openembedded/meta-oe/recipes-support/enca/enca_1.19.bb b/meta-openembedded/meta-oe/recipes-support/enca/enca_1.19.bb
index f81ed67..eed0ad1 100644
--- a/meta-openembedded/meta-oe/recipes-support/enca/enca_1.19.bb
+++ b/meta-openembedded/meta-oe/recipes-support/enca/enca_1.19.bb
@@ -4,7 +4,7 @@
 
 DEPENDS += "gettext-native"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=24b9569831c46d4818450b55282476b4"
 
 SRC_URI = "https://dl.cihar.com/enca/enca-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb b/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb
index 8dcc978..0dc61c1 100644
--- a/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb
+++ b/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "eSpeak is a compact open source software speech synthesizer"
 SECTION = "base"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://License.txt;md5=cb7a20edb4c9f5f478de6523dcd7362c"
 
 SRC_URI = "http://downloads.sourceforge.net/espeak/espeak-1.48.04-source.zip \
diff --git a/meta-openembedded/meta-oe/recipes-support/evemu-tools/evemu-tools_git.bb b/meta-openembedded/meta-oe/recipes-support/evemu-tools/evemu-tools_git.bb
index 08710aa..4501b08 100644
--- a/meta-openembedded/meta-oe/recipes-support/evemu-tools/evemu-tools_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/evemu-tools/evemu-tools_git.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "The evemu library and tools are used to describe devices, record data, create devices and replay data from kernel evdev devices."
 HOMEPAGE = "https://www.freedesktop.org/wiki/Evemu"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
 
 DEPENDS = "libevdev"
diff --git a/meta-openembedded/meta-oe/recipes-support/exiv2/exiv2_0.27.3.bb b/meta-openembedded/meta-oe/recipes-support/exiv2/exiv2_0.27.3.bb
index d5d9e62..31afe78 100644
--- a/meta-openembedded/meta-oe/recipes-support/exiv2/exiv2_0.27.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/exiv2/exiv2_0.27.3.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Exif, Iptc and XMP metadata manipulation library and tools"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=625f055f41728f84a8d7938acc35bdc2"
 
 DEPENDS = "zlib expat"
diff --git a/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.18.bb b/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.18.bb
index c65d72c..e7eaf03 100644
--- a/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.18.bb
+++ b/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.18.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Libnice is an implementation of the IETF's draft Interactive Connectivity Establishment standard (ICE)."
 HOMEPAGE = "http://nice.freedesktop.org/wiki/"
 
-LICENSE = "LGPLv2.1 & MPLv1.1"
+LICENSE = "LGPL-2.1-only & MPL-1.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9c42325015702feda4f4d2f19a55b767 \
                     file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
                     file://COPYING.MPL;md5=3c617710e51cdbe0fc00716f056dfb1a \
diff --git a/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb b/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb
index 969a6d2..9870ee7 100644
--- a/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb
@@ -7,7 +7,7 @@
 
 SUMMARY = "The fbset console tool"
 HOMEPAGE = "http://users.telenet.be/geertu/Linux/fbdev/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://fbset.c;endline=19;md5=bf326f82cdfcac391af208f019c5603f"
 RRECOMMENDS:${PN} = "fbset-modes"
 DEPENDS = "bison-native flex-native"
diff --git a/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb b/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
index 13541bc..cb45e2b 100644
--- a/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "FFTW"
 SECTION = "libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 SRC_URI = " \
diff --git a/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc b/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc
index 2eaf491..b1bc835 100644
--- a/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc
+++ b/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc
@@ -1,7 +1,7 @@
 SUMMARY = "FLTK is a cross-platform C++ GUI toolkit"
 HOMEPAGE = "http://www.fltk.org"
 SECTION = "libs"
-LICENSE = "LGPLv2 & FLTK"
+LICENSE = "LGPL-2.0-only & FLTK"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f6b26344a24a941a01a5b0826e80b5ca"
 
 SRC_URI = " \
diff --git a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.5.0.bb b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.6.1.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.5.0.bb
rename to meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.6.1.bb
index a272cb0..ece2f56 100644
--- a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_2.6.1.bb
@@ -13,7 +13,7 @@
 PE = "1"
 PKGV = "${GITPKGVTAG}"
 
-SRCREV = "d50aef95520df4216c638495a6049125c00742cb"
+SRCREV = "658a72980f6e93241d927c46cfa664bf2547b8b1"
 SRC_URI = "git://github.com/FreeRDP/FreeRDP.git;branch=stable-2.0;protocol=https \
     file://winpr-makecert-Build-with-install-RPATH.patch \
 "
diff --git a/meta-openembedded/meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb b/meta-openembedded/meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb
index 118e3c5..52c1016 100644
--- a/meta-openembedded/meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb
@@ -3,7 +3,7 @@
 SECTION = "utils"
 HOMEPAGE = "https://www.gnu.org/software/gengetopt/gengetopt.html"
 
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ff95bfe019feaf92f524b73dd79e76eb"
 
 SRC_URI = "${GNU_MIRROR}/gengetopt/${BPN}-${PV}.tar.xz"
diff --git a/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2018-03-07.03.bb b/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2018-03-07.03.bb
index ac46b56..2aab68e 100644
--- a/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2018-03-07.03.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2018-03-07.03.bb
@@ -8,7 +8,7 @@
 
 HOMEPAGE = "http://www.gnu.org/software/gnulib/"
 SECTION = "devel"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=56a22a6e5bcce45e2c8ac184f81412b5"
 SRCREV = "0d6e3307bbdb8df4d56043d5f373eeeffe4cbef3"
diff --git a/meta-openembedded/meta-oe/recipes-support/gosu/gosu_1.14.bb b/meta-openembedded/meta-oe/recipes-support/gosu/gosu_1.14.bb
new file mode 100644
index 0000000..624adf3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/gosu/gosu_1.14.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Simple Go-based setuid+setgid+setgroups+exec"
+HOMEPAGE = "https://github.com/tianon/gosu"
+DESCRIPTION = "This is a simple tool grown out of the simple fact that su and sudo have very strange and often annoying TTY and signal-forwarding behavior."
+LICENSE = "Apache-2.0 "
+LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+GO_IMPORT = "github.com/tianon/gosu"
+SRC_URI = "git://${GO_IMPORT}.git;branch=master;protocol=https \
+           git://github.com/opencontainers/runc;name=runc;destsuffix=${S}/src/github.com/opencontainers/runc;branch=main;protocol=https \
+"
+SRCREV = "9f7cd138a1ebc0684d43ef6046bf723978e8741f"
+SRCREV_runc = "d7f7b22a85a2387557bdcda125710c2506f8d5c5"
+inherit go
+
+do_compile:prepend() {
+    # New Go versions has Go modules support enabled by default
+    export GO111MODULE=off
+}
+
+RDEPENDS:${PN}-dev += "bash"
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.9.1.bb b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.9.1.bb
index bd42e7c..d056622 100644
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.9.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.9.1.bb
@@ -39,7 +39,8 @@
 ARM_INSTRUCTION_SET:armv5 = "arm"
 ARM_INSTRUCTION_SET:toolchain-clang:arm = "arm"
 
-EXTRA_OECONF:append:libc-musl:powerpc64le = " --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker"
+EXTRA_OECONF:append:libc-musl:powerpc64le = " --disable-cpu-profiler"
+EXTRA_OECONF:append:libc-musl:powerpc = " --disable-cpu-profiler"
 PACKAGECONFIG ?= "libunwind static"
 PACKAGECONFIG:remove:arm:libc-musl = "libunwind"
 PACKAGECONFIG:remove:riscv64 = "libunwind"
diff --git a/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb b/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
index 7e353d5..cbb51d3 100644
--- a/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
@@ -4,7 +4,7 @@
 (emacs, etc)."
 HOMEPAGE = "https://www.nico.schottelius.org/software/gpm"
 SECTION = "console/utils"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760"
 
 PV = "1.99.7+git${SRCREV}"
diff --git a/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1-201903191516.bb b/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1-201903191516.bb
index b94bdad..0513f0d 100644
--- a/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1-201903191516.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1-201903191516.bb
@@ -7,7 +7,7 @@
 kernel"
 HOMEPAGE = "http://grsecurity.net/index.php"
 SECTION = "admin"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=4641e94ec96f98fabc56ff9cc48be14b"
 DEPENDS = "flex-native bison-native ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/gsl/gsl.inc b/meta-openembedded/meta-oe/recipes-support/gsl/gsl.inc
index 4061393..d0fa934 100644
--- a/meta-openembedded/meta-oe/recipes-support/gsl/gsl.inc
+++ b/meta-openembedded/meta-oe/recipes-support/gsl/gsl.inc
@@ -1,9 +1,12 @@
 DESCRIPTION = "GNU Scientific Library"
 HOMEPAGE = "http://www.gnu.org/software/gsl/"
 SECTION = "libs"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 inherit autotools pkgconfig binconfig
 
 LEAD_SONAME = "libgsl.so"
+
+# Uses fpu_control.h which is glibc only header see ieee-utils/fp-gnuppc.c
+COMPATIBLE_HOST:libc-musl:powerpc = "null"
diff --git a/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb b/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
index 27d5c5f..b4be39f 100644
--- a/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Hard disk temperature monitor daemon"
 SECTION = "console/network"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 PR = "r1"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/hidapi/hidapi_git.bb b/meta-openembedded/meta-oe/recipes-support/hidapi/hidapi_git.bb
index 9106abe..1fef978 100644
--- a/meta-openembedded/meta-oe/recipes-support/hidapi/hidapi_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hidapi/hidapi_git.bb
@@ -3,7 +3,7 @@
 HOMEPAGE = "http://www.signal11.us/oss/hidapi/"
 SECTION = "libs"
 
-LICENSE = "BSD-3-Clause | GPLv3"
+LICENSE = "BSD-3-Clause | GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7c3949a631240cb6c31c50f3eb696077"
 
 DEPENDS = "libusb udev"
diff --git a/meta-openembedded/meta-oe/recipes-support/hstr/files/0001-Use-OE-specific-checks-for-ncurses.patch b/meta-openembedded/meta-oe/recipes-support/hstr/files/0001-Use-OE-specific-checks-for-ncurses.patch
new file mode 100644
index 0000000..d7eb558
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/hstr/files/0001-Use-OE-specific-checks-for-ncurses.patch
@@ -0,0 +1,42 @@
+From f3fb4f12fac75efe0d8f1a923ad5992a7433d0db Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Wed, 2 Mar 2022 06:22:15 +0000
+Subject: [PATCH] Use OE-specific checks for ncurses
+
+Upstream-Status: Inappropriate[oe specific]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ src/include/hstr.h        | 2 +-
+ src/include/hstr_curses.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/include/hstr.h b/src/include/hstr.h
+index 5eac881..c47cadb 100644
+--- a/src/include/hstr.h
++++ b/src/include/hstr.h
+@@ -26,7 +26,7 @@
+ #elif defined(__FreeBSD__)
+   #include <ncurses.h>
+ #else
+-  #include <ncursesw/curses.h>
++  #include <curses.h>
+ #endif
+ #include <readline/chardefs.h>
+ #include <signal.h>
+diff --git a/src/include/hstr_curses.h b/src/include/hstr_curses.h
+index 8a50ab9..1f081a8 100644
+--- a/src/include/hstr_curses.h
++++ b/src/include/hstr_curses.h
+@@ -24,7 +24,7 @@
+ #elif defined(__FreeBSD__)
+ #include <ncurses.h>
+ #else
+-#include <ncursesw/curses.h>
++#include <curses.h>
+ #endif
+ 
+ #define color_attr_on(C) if(terminal_has_colors()) { attron(C); }
+-- 
+2.31.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/hstr/files/0001-configure.ac-Don-t-use-AC_CHECK_FILE.patch b/meta-openembedded/meta-oe/recipes-support/hstr/files/0001-configure.ac-Don-t-use-AC_CHECK_FILE.patch
new file mode 100644
index 0000000..e9b44c4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/hstr/files/0001-configure.ac-Don-t-use-AC_CHECK_FILE.patch
@@ -0,0 +1,33 @@
+From d5ad538adb9fcbad8a3b4e46f266b668301cb1c4 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Wed, 2 Mar 2022 05:36:48 +0000
+Subject: [PATCH] configure.ac: Don't use AC_CHECK_FILE
+
+AC_CHECK_FILE is not suitable for cross-compile, so
+remove it to fix configure error:
+cannot check for file existence when cross compiling
+
+Upstream-Status: Inappropriate[oe specific]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ configure.ac | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 775c795..bd99188 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -116,9 +116,6 @@ AC_TYPE_SIZE_T
+ AC_FUNC_MALLOC
+ AC_CHECK_FUNCS([memset strdup strstr])
+ 
+-# Bash@Ubuntu@Windows
+-AC_CHECK_FILE(/tmp/hstr-ms-wsl,AC_DEFINE(__MS_WSL__), [])
+-
+ # Bash CLI autocomplete
+ AC_ARG_WITH([bash-completion-dir],
+     AS_HELP_STRING([--with-bash-completion-dir[=PATH]],
+-- 
+2.31.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/hstr/hstr_2.5.0.bb b/meta-openembedded/meta-oe/recipes-support/hstr/hstr_2.5.0.bb
new file mode 100644
index 0000000..6c9f65e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/hstr/hstr_2.5.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "bash and zsh shell history suggest box - easily view, navigate, search and manage your command history."
+HOMEPAGE = "http://dvorka.github.io/hstr/"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
+
+DEPENDS = "ncurses readline"
+
+SRC_URI = "https://github.com/dvorka/hstr/releases/download/2.5/hstr-${PV}-tarball.tgz \
+           file://0001-configure.ac-Don-t-use-AC_CHECK_FILE.patch \
+           file://0001-Use-OE-specific-checks-for-ncurses.patch"
+
+S = "${WORKDIR}/${BPN}"
+
+SRC_URI[sha256sum] = "44bb6d93ef064536218f8ae5464772861bfccfe364a436397d9f770207cd306d"
+
+inherit autotools pkgconfig bash-completion
diff --git a/meta-openembedded/meta-oe/recipes-support/htop/htop_3.1.2.bb b/meta-openembedded/meta-oe/recipes-support/htop/htop_3.1.2.bb
index d8e241e..4fe7098 100644
--- a/meta-openembedded/meta-oe/recipes-support/htop/htop_3.1.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/htop/htop_3.1.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Interactive process viewer"
 HOMEPAGE = "https://htop.dev"
 SECTION = "console/utils"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "ncurses"
diff --git a/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell-dictionaries.bb b/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell-dictionaries.bb
index 9e8583b..047acf2 100644
--- a/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell-dictionaries.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell-dictionaries.bb
@@ -5,61 +5,61 @@
 LICENSE = "MIT"
 LICENSE:dictionaries/bg = "LGPL 2.1"
 LICENSE:dictionaries/br = "GPL 3.0"
-LICENSE:dictionaries/ca-valencia = "GPL 2.0 & LGPL-2.1"
-LICENSE:dictionaries/ca = "GPL 2.0 & LGPL-2.1"
-LICENSE:dictionaries/cs = "GPL-2.0"
-LICENSE:dictionaries/da = "GPL-2.0"
-LICENSE:dictionaries/de-AT = "GPL-3.0"
-LICENSE:dictionaries/de-CH = "GPL-3.0"
-LICENSE:dictionaries/de = "GPL-3.0"
-LICENSE:dictionaries/el-polyton = "GPL-2.0"
-LICENSE:dictionaries/el = "GPL-2.0"
-LICENSE:dictionaries/en-AU = "LGPL-2.0"
+LICENSE:dictionaries/ca-valencia = "GPL 2.0 & LGPL-2.1-only"
+LICENSE:dictionaries/ca = "GPL 2.0 & LGPL-2.1-only"
+LICENSE:dictionaries/cs = "GPL-2.0-only"
+LICENSE:dictionaries/da = "GPL-2.0-only"
+LICENSE:dictionaries/de-AT = "GPL-3.0-only"
+LICENSE:dictionaries/de-CH = "GPL-3.0-only"
+LICENSE:dictionaries/de = "GPL-3.0-only"
+LICENSE:dictionaries/el-polyton = "GPL-2.0-only"
+LICENSE:dictionaries/el = "GPL-2.0-only"
+LICENSE:dictionaries/en-AU = "LGPL-2.0-only"
 LICENSE:dictionaries/en-CA = "MIT & BSD"
-LICENSE:dictionaries/en-GB = "LGPL-2.0"
+LICENSE:dictionaries/en-GB = "LGPL-2.0-only"
 LICENSE:dictionaries/en-US = "MIT & BSD"
 LICENSE:dictionaries/en-ZA = "LGPL 2.1"
-LICENSE:dictionaries/eo = "GPL-2.0"
-LICENSE:dictionaries/es = "GPL-3.0"
-LICENSE:dictionaries/et = "LGPL-2.1"
-LICENSE:dictionaries/eu = "GPL-2.0"
-LICENSE:dictionaries/fo = "GPL-2.0"
+LICENSE:dictionaries/eo = "GPL-2.0-only"
+LICENSE:dictionaries/es = "GPL-3.0-only"
+LICENSE:dictionaries/et = "LGPL-2.1-only"
+LICENSE:dictionaries/eu = "GPL-2.0-only"
+LICENSE:dictionaries/fo = "GPL-2.0-only"
 LICENSE:dictionaries/fr = "MPL-2.0"
-LICENSE:dictionaries/fur = "GPL-2.0"
-LICENSE:dictionaries/fy = "GPL-3.0"
-LICENSE:dictionaries/ga = "GPL-2.0"
-LICENSE:dictionaries/gd = "GPL-3.0"
-LICENSE:dictionaries/gl = "GPL-3.0"
-LICENSE:dictionaries/he = "AGPL-3.0"
-LICENSE:dictionaries/hr = "GPL-3.0"
-LICENSE:dictionaries/hu = "GPL-2.0"
-LICENSE:dictionaries/hy-arevela = "GPL-2.0"
-LICENSE:dictionaries/hy-arevmda = "GPL-2.0"
-LICENSE:dictionaries/ia = "GPL-3.0"
+LICENSE:dictionaries/fur = "GPL-2.0-only"
+LICENSE:dictionaries/fy = "GPL-3.0-only"
+LICENSE:dictionaries/ga = "GPL-2.0-only"
+LICENSE:dictionaries/gd = "GPL-3.0-only"
+LICENSE:dictionaries/gl = "GPL-3.0-only"
+LICENSE:dictionaries/he = "AGPL-3.0-only"
+LICENSE:dictionaries/hr = "GPL-3.0-only"
+LICENSE:dictionaries/hu = "GPL-2.0-only"
+LICENSE:dictionaries/hy-arevela = "GPL-2.0-only"
+LICENSE:dictionaries/hy-arevmda = "GPL-2.0-only"
+LICENSE:dictionaries/ia = "GPL-3.0-only"
 LICENSE:dictionaries/ie = "Apache-2.0"
 LICENSE:dictionaries/is = "CC BY-SA 3.0 & CC BY 4.0"
-LICENSE:dictionaries/it = "GPL-3.0"
-LICENSE:dictionaries/ko = "MPL-1.1 & GPL-2.0 & LGPL-2.1"
-LICENSE:dictionaries/la = "GPL-3.0"
+LICENSE:dictionaries/it = "GPL-3.0-only"
+LICENSE:dictionaries/ko = "MPL-1.1 & GPL-2.0-only & LGPL-2.1-only"
+LICENSE:dictionaries/la = "GPL-3.0-only"
 LICENSE:dictionaries/lb = "EUPL-1.1"
 LICENSE:dictionaries/lt = "Other"
-LICENSE:dictionaries/ltg = "LGPL-2.1"
-LICENSE:dictionaries/lv = "LGPL-2.1"
-LICENSE:dictionaries/mk = "GPL-3.0"
-LICENSE:dictionaries/mn = "GPL-2.0"
-LICENSE:dictionaries/nb = "GPL-2.0"
-LICENSE:dictionaries/nds = "GPL-2.0"
-LICENSE:dictionaries/ne = "LGPL-2.1"
+LICENSE:dictionaries/ltg = "LGPL-2.1-only"
+LICENSE:dictionaries/lv = "LGPL-2.1-only"
+LICENSE:dictionaries/mk = "GPL-3.0-only"
+LICENSE:dictionaries/mn = "GPL-2.0-only"
+LICENSE:dictionaries/nb = "GPL-2.0-only"
+LICENSE:dictionaries/nds = "GPL-2.0-only"
+LICENSE:dictionaries/ne = "LGPL-2.1-only"
 LICENSE:dictionaries/nl = "BSD"
-LICENSE:dictionaries/nn = "GPL-2.0"
-LICENSE:dictionaries/pl = "GPL-3.0"
+LICENSE:dictionaries/nn = "GPL-2.0-only"
+LICENSE:dictionaries/pl = "GPL-3.0-only"
 LICENSE:dictionaries/pt-BR = "LGPL 2.1"
-LICENSE:dictionaries/pt = "GPL-2.0"
-LICENSE:dictionaries/ro = "GPL-2.0"
+LICENSE:dictionaries/pt = "GPL-2.0-only"
+LICENSE:dictionaries/ro = "GPL-2.0-only"
 LICENSE:dictionaries/ru = "BSD"
-LICENSE:dictionaries/rw = "GPL-3.0"
-LICENSE:dictionaries/sk = "GPL-2.0"
-LICENSE:dictionaries/sl = "GPL-2.0"
+LICENSE:dictionaries/rw = "GPL-3.0-only"
+LICENSE:dictionaries/sk = "GPL-2.0-only"
+LICENSE:dictionaries/sl = "GPL-2.0-only"
 LICENSE:dictionaries/sr-Latn = "LGPL 3.0"
 LICENSE:dictionaries/sr = "LGPL 3.0"
 LICENSE:dictionaries/sv = "LGPL 3.0"
diff --git a/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.7.0.bb b/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.7.0.bb
index f5813df..8d4dd52 100644
--- a/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.7.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.7.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A spell checker and morphological analyzer library"
 HOMEPAGE = "http://hunspell.github.io/"
-LICENSE = "GPLv2 | LGPLv2.1"
+LICENSE = "GPL-2.0-only | LGPL-2.1-only"
 LIC_FILES_CHKSUM = " \
     file://COPYING;md5=75859989545e37968a99b631ef42722e \
     file://COPYING.LESSER;md5=c96ca6c1de8adc025adfada81d06fba5 \
diff --git a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.356.bb b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.357.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.356.bb
rename to meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.357.bb
index 6c2ae5e..01ebf3c 100644
--- a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.356.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.357.bb
@@ -2,10 +2,10 @@
 HOMEPAGE = "https://github.com/vcrhonek/hwdata"
 SECTION = "System/Base"
 
-LICENSE = "GPL-2.0+ | XFree86-1.0"
+LICENSE = "GPL-2.0-or-later | XFree86-1.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57"
 
-SRCREV = "66a9f63255a06e2d9ec49501188ca47cb537675b"
+SRCREV = "f9e7eed1b85760028a5157986b3313c99c4d0225"
 SRC_URI = "git://github.com/vcrhonek/${BPN}.git;branch=master;protocol=https"
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.5.bb b/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.5.bb
index ac23630..e01c089 100644
--- a/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.5.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Fast and portable XML parser and Jabber protocol library"
 HOMEPAGE = "https://github.com/meduketto/iksemel"
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
 
 SRCREV = "978b733462e41efd5db72bc9974cb3b0d1d5f6fa"
diff --git a/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser/0001-iniparser.pc-Make-libpath-a-variable.patch b/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser/0001-iniparser.pc-Make-libpath-a-variable.patch
new file mode 100644
index 0000000..4824344
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser/0001-iniparser.pc-Make-libpath-a-variable.patch
@@ -0,0 +1,23 @@
+From 1761298b73c759c07e4652ada307f68512a75ff1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 25 Mar 2022 20:44:41 -0700
+Subject: [PATCH] iniparser.pc: Make libpath a variable
+
+Will set according to baselib that yocto exports.
+
+Upstream-Status: Inappropriate [OE-specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ iniparser.pc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/iniparser.pc
++++ b/iniparser.pc
+@@ -1,6 +1,6 @@
+ prefix=/usr
+ exec_prefix=/usr
+-libdir=${exec_prefix}/lib
++libdir=${exec_prefix}/@baselib@
+ includedir=${prefix}/include
+ datarootdir=${prefix}/share
+ datadir=${datarootdir}
diff --git a/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser_4.1.bb b/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser_4.1.bb
index f3593fb..2810a4f 100644
--- a/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser_4.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser_4.1.bb
@@ -6,12 +6,19 @@
 
 DEPENDS = "doxygen-native"
 
+PV .= "+git${SRCPV}"
+
 SRC_URI = "git://github.com/ndevilla/iniparser.git;protocol=https;branch=master \
+           file://0001-iniparser.pc-Make-libpath-a-variable.patch \
 	   file://Add-CMake-support.patch"
 
-# tag 4.1
-SRCREV= "0a38e85c9cde1e099ca3bf70083bd00f89c3e5b6"
+SRCREV= "deb85ad4936d4ca32cc2260ce43323d47936410d"
 
 S = "${WORKDIR}/git"
 
 inherit cmake
+
+do_install:append() {
+    install -Dm 0644 ${S}/iniparser.pc ${D}${libdir}/pkgconfig/iniparser.pc
+    sed -i -e 's,@baselib@,${baselib},g' ${D}${libdir}/pkgconfig/iniparser.pc
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools_3.22.1.0.bb b/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools_3.22.1.0.bb
index 38ba915..4e6bfbb 100644
--- a/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools_3.22.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools_3.22.1.0.bb
@@ -2,7 +2,7 @@
 AUTHOR = "Rohan McGovern <rohan@mcgovern.id.au>"
 HOMEPAGE = "http://wiki.github.com/rvoicilas/inotify-tools"
 SECTION = "console/devel"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ac6c26e52aea428ee7f56dc2c56424c6"
 
 SRCREV = "4b72dcd15299e1d0cb096397d9aab513ffed1657"
diff --git a/meta-openembedded/meta-oe/recipes-support/joe/joe_4.6.bb b/meta-openembedded/meta-oe/recipes-support/joe/joe_4.6.bb
index 674736a..ed0bf33 100644
--- a/meta-openembedded/meta-oe/recipes-support/joe/joe_4.6.bb
+++ b/meta-openembedded/meta-oe/recipes-support/joe/joe_4.6.bb
@@ -1,7 +1,7 @@
 SECTION = "console/utils"
 SUMMARY = "Console text editor with good functionality, good choice for vi-haters"
 HOMEPAGE = "http://joe-editor.sourceforge.net/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/joe-editor/joe-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.14.bb b/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.14.bb
index c501b15..47062cc 100755
--- a/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.14.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.14.bb
@@ -5,7 +5,7 @@
 HTML pages containing the source code annotated with coverage information. \
 It also adds overview pages for easy navigation within the file structure. \
 LCOV supports statement, function and branch coverage measurement."
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 RDEPENDS:${PN} += " \
diff --git a/meta-openembedded/meta-oe/recipes-support/libatasmart/libatasmart_0.19.bb b/meta-openembedded/meta-oe/recipes-support/libatasmart/libatasmart_0.19.bb
index 4ca41cb..f747ecb 100644
--- a/meta-openembedded/meta-oe/recipes-support/libatasmart/libatasmart_0.19.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libatasmart/libatasmart_0.19.bb
@@ -1,5 +1,5 @@
 SUMMARY = "ATA S.M.A.R.T. Reading and Parsing Library"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 DEPENDS = "udev"
diff --git a/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.6.bb b/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.6.bb
index cbf6be4..1549732 100644
--- a/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.6.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.6.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "The goal of this project is to provide a tiny library that would \
 facilitate the common operations with sizes in bytes."
 HOMEPAGE = "https://github.com/rhinstaller/libbytesize"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 SECTION = "devel/lib"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c07cb499d259452f324bb90c3067d85c"
diff --git a/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb b/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb
index 37e2376..20fe910 100644
--- a/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Implementation of XDG Sound Theme and Name Specifications"
 DESCRIPTION = "Libcanberra is an implementation of the XDG Sound Theme and Name Specifications, for generating event sounds on free desktops."
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
                     file://src/canberra.h;beginline=7;endline=24;md5=c616c687cf8da540a14f917e0d23ab03"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libcereal/files/run-ptest b/meta-openembedded/meta-oe/recipes-support/libcereal/files/run-ptest
new file mode 100755
index 0000000..9bc480a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libcereal/files/run-ptest
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+cd tests
+for atest in test_* ; do
+    rm -rf tests.log
+    ./${atest} > tests.log 2>&1
+    if [ $? = 0 ] ; then
+        echo "PASS: ${atest}"
+    else
+        echo "FAIL: ${atest}"
+    fi
+done
diff --git a/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.1.bb b/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.1.bb
deleted file mode 100644
index c905b74..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "A C++11 library for serialization"
-HOMEPAGE = "https://uscilab.github.io/cereal/"
-
-SECTION = "libs"
-
-LICENSE = "BSD-3-Clause & MIT & BSL-1.0"
-LIC_FILES_CHKSUM = "\
-    file://LICENSE;md5=4921372a1fb38469e667c38b17a1c4b3 \
-    file://include/cereal/external/rapidxml/license.txt;md5=d63ab70ba21ca0544b03284958324301 \
-    file://include/cereal/external/LICENSE;md5=b07578c9df99c0b8b45eb041efd4a645 \
-    file://include/cereal/external/rapidjson/LICENSE;md5=e7abb663111d4ac17cf00323698aff08 \
-    file://include/cereal/external/rapidjson/msinttypes/LICENSE;md5=dffce65b98c773976de2e338bd130f46 \
-"
-
-PROVIDES += "${PN}-dev"
-
-PV .= "+git${SRCPV}"
-SRCREV = "1de8fe89471d69ea392ea260ce74e079d5f4b415"
-SRC_URI = "git://github.com/USCiLab/cereal.git;branch=master;protocol=https"
-
-S = "${WORKDIR}/git"
-
-inherit cmake pkgconfig
-
-EXTRA_OECMAKE = "-DJUST_INSTALL_CEREAL=ON"
-
-ALLOW_EMPTY:${PN} = "1"
-
-RDEPENDS:${PN}-dev = ""
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.2.bb b/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.2.bb
new file mode 100644
index 0000000..fb37de3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.2.bb
@@ -0,0 +1,45 @@
+SUMMARY = "A C++11 library for serialization"
+HOMEPAGE = "https://uscilab.github.io/cereal/"
+
+SECTION = "libs"
+
+LICENSE = "BSD-3-Clause & MIT & BSL-1.0"
+LIC_FILES_CHKSUM = "\
+    file://LICENSE;md5=4921372a1fb38469e667c38b17a1c4b3 \
+    file://include/cereal/external/rapidxml/license.txt;md5=d63ab70ba21ca0544b03284958324301 \
+    file://include/cereal/external/LICENSE;md5=b07578c9df99c0b8b45eb041efd4a645 \
+    file://include/cereal/external/rapidjson/LICENSE;md5=e7abb663111d4ac17cf00323698aff08 \
+    file://include/cereal/external/rapidjson/msinttypes/LICENSE;md5=dffce65b98c773976de2e338bd130f46 \
+"
+
+DEPENDS = " ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'boost', '', d)} "
+
+PROVIDES += "${PN}-dev"
+
+PV .= "+git${SRCPV}"
+SRCREV = "ebef1e929807629befafbb2918ea1a08c7194554"
+SRC_URI = "git://github.com/USCiLab/cereal.git;branch=master;protocol=https \
+           file://run-ptest \
+"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig ptest
+
+LIBATOMIC:mips:toolchain-clang = "${@bb.utils.contains('PTEST_ENABLED', '1', '-DCEREAL_THREAD_LIBS="-latomic"', '', d)}"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'with-tests', '', d)}"
+PACKAGECONFIG[with-tests] = "-DWITH_WERROR=OFF -DBUILD_TESTS=ON ${LIBATOMIC},,"
+EXTRA_OECMAKE = "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '', '-DJUST_INSTALL_CEREAL=ON', d)} \
+                 ${@['','-DSKIP_PORTABILITY_TEST=ON'][d.getVar('SITEINFO_BITS') != '32']}"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp ${B}/unittests/test_*  ${D}${PTEST_PATH}/tests
+}
+
+ALLOW_EMPTY:${PN} = "1"
+
+RDEPENDS:${PN}-dev = ""
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/libcppkafka/libcppkafka/0001-cmake-Use-CMAKE_INSTALL_LIBDIR.patch b/meta-openembedded/meta-oe/recipes-support/libcppkafka/libcppkafka/0001-cmake-Use-CMAKE_INSTALL_LIBDIR.patch
new file mode 100644
index 0000000..d78ee7a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libcppkafka/libcppkafka/0001-cmake-Use-CMAKE_INSTALL_LIBDIR.patch
@@ -0,0 +1,30 @@
+From 51ec4c1f533dee9a499490c1c5bbd23d2191a4a7 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 20 Mar 2022 11:14:25 -0700
+Subject: [PATCH] cmake: Use CMAKE_INSTALL_LIBDIR
+
+Do not hardcode library path, this helps it install in right location
+independent of platforms, e.g. ppc64 uses lib64 and not lib
+
+Upstream-Status: Submitted [https://github.com/mfontanini/cppkafka/pull/291]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c4e44e6..25ec1ce 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -51,7 +51,7 @@ option(CPPKAFKA_EXPORT_CMAKE_CONFIG "Generate CMake config, target and version f
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
+ 
+ if (NOT CPPKAFKA_CONFIG_DIR)
+-    set(CPPKAFKA_CONFIG_DIR lib/cmake/${PROJECT_NAME})
++    set(CPPKAFKA_CONFIG_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+ endif()
+ 
+ # Maintain previous compatibility
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/libcppkafka/libcppkafka_git.bb b/meta-openembedded/meta-oe/recipes-support/libcppkafka/libcppkafka_git.bb
index 8f777eb..0cb33fc 100644
--- a/meta-openembedded/meta-oe/recipes-support/libcppkafka/libcppkafka_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libcppkafka/libcppkafka_git.bb
@@ -8,7 +8,9 @@
 file://LICENSE;md5=d8b4ca15d239dc1485ef495c8f1bcc72 \
 "
 
-SRC_URI = "git://github.com/mfontanini/cppkafka;protocol=https;branch=master"
+SRC_URI = "git://github.com/mfontanini/cppkafka;protocol=https;branch=master \
+           file://0001-cmake-Use-CMAKE_INSTALL_LIBDIR.patch \
+"
 SRCREV = "5e4b350806d561473138ce7a982e8f6cf2e77733"
 
 DEPENDS = "librdkafka boost chrpath-replacement-native"
diff --git a/meta-openembedded/meta-oe/recipes-support/libcyusbserial/libcyusbserial_git.bb b/meta-openembedded/meta-oe/recipes-support/libcyusbserial/libcyusbserial_git.bb
index 3508384..81453fb 100644
--- a/meta-openembedded/meta-oe/recipes-support/libcyusbserial/libcyusbserial_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libcyusbserial/libcyusbserial_git.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Enable userspace control of Cypress USB-Serial bridge devices"
 HOMEPAGE = "https://github.com/cyrozap/libcyusbserial"
 BUGTRACKER = "https://github.com/cyrozap/libcyusbserial/issues"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.LESSER.txt;md5=4fbd65380cdd255951079008b364516c"
 DEPENDS = "libusb udev"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libee/libee.inc b/meta-openembedded/meta-oe/recipes-support/libee/libee.inc
index e5a145a..16fe557 100644
--- a/meta-openembedded/meta-oe/recipes-support/libee/libee.inc
+++ b/meta-openembedded/meta-oe/recipes-support/libee/libee.inc
@@ -5,7 +5,7 @@
 HOMEPAGE = "http://www.libee.org"
 SECTION = "base"
 
-LICENSE = "LGPL-2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1c2687de35e36ba3b999136236a66cd6"
 
 SRC_URI = "http://www.libee.org/download/files/download/${BPN}-${PV}.tar.gz\
diff --git a/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb b/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb
index 9682f7a..1cae76b 100644
--- a/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.4.0.bb
@@ -1,7 +1,7 @@
 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 & Apache-2.0 & BSD-3-Clause & GPLv3 & LGPLv2.1 & MINPACK"
+LICENSE = "MPL-2.0 & Apache-2.0 & BSD-3-Clause & GPL-3.0-only & LGPL-2.1-only & MINPACK"
 LIC_FILES_CHKSUM = "file://COPYING.MPL2;md5=815ca599c9df247a0c7f619bab123dad \
                     file://COPYING.BSD;md5=2dd0510ee95e59ca28834b875bc96596 \
                     file://COPYING.GPL;md5=d32239bcb673463ab874e80d47fae504 \
diff --git a/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.11.bb b/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.11.bb
index ff61dd8..2ebf275 100644
--- a/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.11.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.11.bb
@@ -1,6 +1,6 @@
 SUMMARY = "some essentials for string handling (and a bit more)"
 HOMEPAGE = "http://libestr.adiscon.com/"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9d6c993486c18262afba4ca5bcb894d0"
 
 SRC_URI = "http://libestr.adiscon.com/files/download/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb b/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb
index 5ab484d..2f52a0f 100644
--- a/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb
@@ -3,7 +3,7 @@
 HOMEPAGE = "https://github.com/libfann/fann"
 SECTION = "libs/devel"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=f14599a2f089f6ff8c97e2baa4e3d575"
 
 inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb b/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb
index d1cc721..f142cb2 100644
--- a/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb
@@ -3,7 +3,7 @@
 including the popular bitbang mode."
 HOMEPAGE = "http://www.intra2net.com/en/developer/libftdi/"
 SECTION = "libs"
-LICENSE = "LGPLv2.1 & GPLv2"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
 LIC_FILES_CHKSUM= "\
     file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe \
     file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
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 51b74ba..35e68b7 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,7 +1,7 @@
 SUMMARY = "C library and tools for interacting with the linux GPIO character device"
 AUTHOR = "Bartosz Golaszewski <brgl@bgdev.pl>"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2caced0b25dfefd4c601d92bd15116de"
 
 SRC_URI = " \
diff --git a/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.10.bb b/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.10.bb
index a606f17..c208a20 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_0.3.10.bb
@@ -1,5 +1,5 @@
 SUMMARY = "GUsb is a GObject wrapper for libusb1"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 DEPENDS = "glib-2.0 libusb"
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
deleted file mode 100644
index 4d3dcd5..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libiio/files/0001-python-Do-not-verify-whether-libiio-is-installed-whe.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-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/0001-CMake-Move-include-CheckCSourceCompiles-before-its-m.patch b/meta-openembedded/meta-oe/recipes-support/libiio/libiio/0001-CMake-Move-include-CheckCSourceCompiles-before-its-m.patch
new file mode 100644
index 0000000..a2cfd47
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libiio/libiio/0001-CMake-Move-include-CheckCSourceCompiles-before-its-m.patch
@@ -0,0 +1,38 @@
+From 758ba58c81273d9075a539216f8a322935c2e434 Mon Sep 17 00:00:00 2001
+From: Paul Cercueil <paul@crapouillou.net>
+Date: Fri, 12 Nov 2021 16:49:21 +0000
+Subject: [PATCH] CMake: Move include(CheckCSourceCompiles) before its macros
+ are used
+
+Move include(CheckCSourceCompiles) before any of the
+check_c_source_compiles() macros is called.
+
+This fixes a CMake error when compiling with WITH_NETWORK_GET_BUFFER
+disabled.
+
+Upstream-Status: Accepted [https://github.com/analogdevicesinc/libiio/commit/758ba58c81273d9075a539216f8a322935c2e434]
+
+Signed-off-by: Paul Cercueil <paul@crapouillou.net>
+---
+ CMakeLists.txt | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7437136c8210..05b4feff233b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -296,9 +296,10 @@ if(WITH_NETWORK_BACKEND)
+ 	endif()
+ 
+ 	if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
++		include(CheckCSourceCompiles)
++
+ 		option(WITH_NETWORK_GET_BUFFER "Enable experimental zero-copy transfers" OFF)
+ 		if (WITH_NETWORK_GET_BUFFER)
+-			include(CheckCSourceCompiles)
+ 			check_c_source_compiles("#define _GNU_SOURCE=1\n#include <fcntl.h>\nint main(void) { return O_TMPFILE; }"
+ 				HAS_O_TMPFILE)
+ 
+-- 
+2.34.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 f33fc0c..bb253f4 100644
--- a/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
@@ -1,14 +1,14 @@
 SUMMARY = "Library for interfacing with IIO devices"
 HOMEPAGE = "https://wiki.analog.com/resources/tools-software/linux-software/libiio"
 SECTION = "libs"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING.txt;md5=7c13b3376cea0ce68d2d2da0a1b3a72c"
 
-SRCREV = "565bf68eccfdbbf22cf5cb6d792e23de564665c7"
-PV = "0.21+git${SRCPV}"
+SRCREV = "92d6a35f3d8d721cda7d6fe664b435311dd368b4"
+PV = "0.23"
 
 SRC_URI = "git://github.com/analogdevicesinc/libiio.git;protocol=https;branch=master \
-           file://0001-python-Do-not-verify-whether-libiio-is-installed-whe.patch \
+           file://0001-CMake-Move-include-CheckCSourceCompiles-before-its-m.patch \
 "
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
 
@@ -28,16 +28,19 @@
     ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '-DWITH_SYSTEMD=ON -DSYSTEMD_UNIT_INSTALL_DIR=${systemd_system_unitdir}', '', d)} \
 "
 
-PACKAGECONFIG ??= "usb_backend network_backend serial_backend"
-
-NETWORK_BACKEND_DEPENDENCIES = "\
-    libxml2 \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
+PACKAGECONFIG ??= " \
+    usb_backend network_backend serial_backend xml_backend \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'dnssd', '', d)} \
 "
 
-PACKAGECONFIG[usb_backend] = "-DWITH_USB_BACKEND=ON,-DWITH_USB_BACKEND=OFF,libusb1 libxml2"
-PACKAGECONFIG[network_backend] = "-DWITH_NETWORK_BACKEND=ON,-DWITH_NETWORK_BACKEND=OFF, ${NETWORK_BACKEND_DEPENDENCIES}"
-PACKAGECONFIG[serial_backend] = "-DWITH_SERIAL_BACKEND=ON,-DWITH_SERIAL_BACKEND=off,libserialport libxml2"
+# network_backend, serial_backend and usb_backend depend on xml_backend, so don't switch it off
+XML_BACKEND_DISABLE = "${@bb.utils.contains_any('PACKAGECONFIG', 'network_backend serial_backend usb_backend', '', '-DWITH_XML_BACKEND=off', d)}"
+
+PACKAGECONFIG[usb_backend] = "-DWITH_USB_BACKEND=ON -DWITH_XML_BACKEND=ON,-DWITH_USB_BACKEND=OFF,libusb1 libxml2"
+PACKAGECONFIG[network_backend] = "-DWITH_NETWORK_BACKEND=ON -DWITH_XML_BACKEND=ON,-DWITH_NETWORK_BACKEND=OFF,libxml2"
+PACKAGECONFIG[serial_backend] = "-DWITH_SERIAL_BACKEND=ON -DWITH_XML_BACKEND=ON,-DWITH_SERIAL_BACKEND=off,libserialport libxml2"
+PACKAGECONFIG[xml_backend] = "-DWITH_XML_BACKEND=ON,${XML_BACKEND_DISABLE},libxml2"
+PACKAGECONFIG[dnssd] = "-DHAVE_DNS_SD=ON,-DHAVE_DNS_SD=off,avahi"
 PACKAGECONFIG[libiio-python3] = "-DPYTHON_BINDINGS=ON,-DPYTHON_BINDINGS=OFF"
 
 PACKAGES =+ "${PN}-iiod ${PN}-tests ${PN}-${PYTHON_PN}"
@@ -70,6 +73,7 @@
     cmake_do_compile
 }
 
+PIP_INSTALL_PACKAGE = "pylibiio"
 do_install() {
     if ${@bb.utils.contains('PACKAGECONFIG', 'libiio-python3', 'true', 'false', d)}; then
         setuptools3_do_install
diff --git a/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery_3.3.1.bb b/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery_3.3.1.bb
index 1a5c35a..9130b11 100644
--- a/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery_3.3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery_3.3.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "JavaScript library for dynamic web applications"
 HOMEPAGE = "https://jquery.com/"
-LICENSE = "GPL-2 | MIT"
+LICENSE = "GPL-2.0-only | MIT"
 LIC_FILES_CHKSUM = "file://usr/share/doc/libjs-jquery/copyright;md5=04bfd6e5b918af29f2f79ce44527da62"
 
 SRC_URI = "http://kr.archive.ubuntu.com/ubuntu/pool/main/j/jquery/${BPN}_${PV}~dfsg-3_all.deb"
diff --git a/meta-openembedded/meta-oe/recipes-support/libjs/libjs-sizzle_1.10.18.bb b/meta-openembedded/meta-oe/recipes-support/libjs/libjs-sizzle_1.10.18.bb
index 417a11f..e639ce5 100644
--- a/meta-openembedded/meta-oe/recipes-support/libjs/libjs-sizzle_1.10.18.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libjs/libjs-sizzle_1.10.18.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Pure-JavaScript CSS selector engine"
 HOMEPAGE = "https://github.com/jquery/sizzle/wiki"
-LICENSE = "GPL-2.0 & MIT & AFL-2.1"
+LICENSE = "GPL-2.0-only & MIT & AFL-2.1"
 LIC_FILES_CHKSUM = "file://MIT-LICENSE.txt;md5=e43aa437a6a1ba421653bd5034333bf9"
 
 SRC_URI = "http://kr.archive.ubuntu.com/ubuntu/pool/universe/s/sizzle/sizzle_1.10.18.orig.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-support/libmanette/libmanette_0.2.6.bb b/meta-openembedded/meta-oe/recipes-support/libmanette/libmanette_0.2.6.bb
index 78c7546..5509b0b 100644
--- a/meta-openembedded/meta-oe/recipes-support/libmanette/libmanette_0.2.6.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libmanette/libmanette_0.2.6.bb
@@ -2,7 +2,7 @@
 # Released under the MIT license (see COPYING.MIT for the terms)
 SUMMARY = "The simple GObject game controller library"
 HOMEPAGE = "https://gnome.pages.gitlab.gnome.org/libmanette/"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = "libevdev libgudev"
diff --git a/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb b/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb
index 498764a..d4b8170 100644
--- a/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb
@@ -3,7 +3,7 @@
 
 DESCRIPTION = "C library implementing OAuth Core RFC 5849"
 HOMEPAGE = "http://liboauth.sourceforge.net"
-LICENSE = "MIT|GPL-2.0"
+LICENSE = "MIT|GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING.MIT;md5=6266718a5241c045c8099d9be48817df \
                     file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
 SECTION = "libs"
diff --git a/meta-openembedded/meta-oe/recipes-support/libol/libol_0.3.18.bb b/meta-openembedded/meta-oe/recipes-support/libol/libol_0.3.18.bb
index b1e6da1..21a5626 100644
--- a/meta-openembedded/meta-oe/recipes-support/libol/libol_0.3.18.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libol/libol_0.3.18.bb
@@ -1,7 +1,7 @@
 SUMMARY = "A tiny C support library"
 HOMEPAGE = "https://my.balabit.com/downloads/libol"
 SECTION = "libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
 
 SRC_URI = "http://www.balabit.com/downloads/libol/0.3/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-support/liboop/liboop_1.0.1.bb b/meta-openembedded/meta-oe/recipes-support/liboop/liboop_1.0.1.bb
index 8894a86..7ad88b7 100644
--- a/meta-openembedded/meta-oe/recipes-support/liboop/liboop_1.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/liboop/liboop_1.0.1.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Liboop is a low-level event loop management library for POSIX-based operating systems"
 HOMEPAGE = "http://www.lysator.liu.se/liboop/"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8b54f38ccbd44feb80ab90e01af8b700"
 
 SRC_URI = "http://ftp.lysator.liu.se/pub/liboop/liboop-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.11.bb b/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.11.bb
index dc2cc89..31f90ee 100644
--- a/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.11.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.11.bb
@@ -5,7 +5,7 @@
 HOMEPAGE = "https://github.com/OpenSC/libp11"
 BUGTRACKER = "https://github.com/OpenSC/libp11/issues"
 SECTION = "Development/Libraries"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fad9b3332be894bab9bc501572864b29"
 DEPENDS = "libtool openssl"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libraw/libraw_0.20.2.bb b/meta-openembedded/meta-oe/recipes-support/libraw/libraw_0.20.2.bb
index 4765264..1940864 100644
--- a/meta-openembedded/meta-oe/recipes-support/libraw/libraw_0.20.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libraw/libraw_0.20.2.bb
@@ -1,5 +1,5 @@
 SUMMARY = "raw image decoder"
-LICENSE = "LGPL-2.1 | CDDL-1.0"
+LICENSE = "LGPL-2.1-only | CDDL-1.0"
 LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=74c9dffdc42805f9c0de2f97df6031fc"
 
 SRC_URI = "git://github.com/LibRaw/LibRaw.git;branch=master;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-support/libraw1394/libraw1394_2.1.2.bb b/meta-openembedded/meta-oe/recipes-support/libraw1394/libraw1394_2.1.2.bb
index 3377807..15e1ee2 100644
--- a/meta-openembedded/meta-oe/recipes-support/libraw1394/libraw1394_2.1.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libraw1394/libraw1394_2.1.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "base library for low-level IEEE 1394 accesses"
 HOMEPAGE = "https://ieee1394.wiki.kernel.org/index.php/Libraries#libraw1394"
 SECTION = "libs"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=d8045f3b8f929c1cb29a1e3fd737b499"
 
 SRC_URI = "https://www.kernel.org/pub/linux/libs/ieee1394/${BPN}-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-support/librdkafka/librdkafka/0001-cmake-Use-CMAKE_INSTALL_LIBDIR.patch b/meta-openembedded/meta-oe/recipes-support/librdkafka/librdkafka/0001-cmake-Use-CMAKE_INSTALL_LIBDIR.patch
new file mode 100644
index 0000000..053a4cc
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/librdkafka/librdkafka/0001-cmake-Use-CMAKE_INSTALL_LIBDIR.patch
@@ -0,0 +1,30 @@
+From ed1dd35e0e23a98e57567718a0d474fd29cc348a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 19 Mar 2022 21:36:41 -0700
+Subject: [PATCH] cmake: Use CMAKE_INSTALL_LIBDIR
+
+this ensures that it is portable across platforms e.g. ppc64/linux
+uses lib64 not lib
+
+Upstream-Status: Submitted [https://github.com/edenhill/librdkafka/pull/3770]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d1129bce..774473fa 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -219,7 +219,7 @@ configure_file("packaging/cmake/config.h.in" "${GENERATED_DIR}/config.h")
+ 
+ include(GNUInstallDirs)
+ 
+-set(config_install_dir "lib/cmake/${PROJECT_NAME}")
++set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
+ 
+ set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
+ 
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/librdkafka/librdkafka_1.8.2.bb b/meta-openembedded/meta-oe/recipes-support/librdkafka/librdkafka_1.8.2.bb
index f9f3baa..6148e7c 100644
--- a/meta-openembedded/meta-oe/recipes-support/librdkafka/librdkafka_1.8.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/librdkafka/librdkafka_1.8.2.bb
@@ -7,7 +7,9 @@
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=2be8675acbfdac48935e73897af5f646"
 
-SRC_URI = "git://github.com/edenhill/librdkafka;protocol=https;branch=master"
+SRC_URI = "git://github.com/edenhill/librdkafka;protocol=https;branch=master \
+           file://0001-cmake-Use-CMAKE_INSTALL_LIBDIR.patch \
+          "
 SRCREV = "063a9ae7a65cebdf1cc128da9815c05f91a2a996"
 
 DEPENDS = "zlib openssl zstd"
diff --git a/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.3.2.bb b/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.3.2.bb
index 1dc4a072..ccc6896 100644
--- a/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.3.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.3.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Remote delta-compression library."
 AUTHOR = "Martin Pool, Andrew Tridgell, Donovan Baarda, Adam Schubert"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
 
 SRC_URI = "git://github.com/librsync/librsync.git;branch=master;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb b/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
index a98f32b..b238671 100644
--- a/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "A Library to Access SMI MIB Information"
 HOMEPAGE = "https://www.ibr.cs.tu-bs.de/projects/libsmi"
 
-LICENSE = "BSD-3-Clause & tcl"
+LICENSE = "BSD-3-Clause & TCL"
 LIC_FILES_CHKSUM = "file://COPYING;md5=3ad3076f9332343a21636cfd351f05b7"
 
 SRC_URI = "https://www.ibr.cs.tu-bs.de/projects/${BPN}/download/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb b/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb
index 6c943be..42b9d7e 100644
--- a/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb
@@ -4,7 +4,7 @@
 
 HOMEPAGE = "https://github.com/jackmitch/libsoc"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENCE;md5=e0bfebea12a718922225ba987b2126a5"
 
 inherit autotools pkgconfig python3-dir
diff --git a/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.9.bb b/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.9.bb
index 63be2ac..c7e9c33 100644
--- a/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.9.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.9.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Multiplatform C library implementing the SSHv2 and SSHv1 protocol"
 HOMEPAGE = "http://www.libssh.org"
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=dabb4958b830e5df11d2b0ed8ea255a0"
 
 DEPENDS = "zlib openssl"
diff --git a/meta-openembedded/meta-oe/recipes-support/libteam/libteam_1.31.bb b/meta-openembedded/meta-oe/recipes-support/libteam/libteam_1.31.bb
index e43d3e0..ad84389 100644
--- a/meta-openembedded/meta-oe/recipes-support/libteam/libteam_1.31.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libteam/libteam_1.31.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://www.libteam.org/"
 SECTION = "libs/network"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 DEPENDS = "libnl libdaemon jansson"
diff --git a/meta-openembedded/meta-oe/recipes-support/liburing/liburing_2.1.bb b/meta-openembedded/meta-oe/recipes-support/liburing/liburing_2.1.bb
index f519bf2..da8e6d3 100644
--- a/meta-openembedded/meta-oe/recipes-support/liburing/liburing_2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/liburing/liburing_2.1.bb
@@ -6,7 +6,7 @@
 BUGTRACKER = "https://github.com/axboe/liburing/issues"
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1 | MIT"
+LICENSE = "LGPL-2.1-only | MIT"
 LIC_FILES_CHKSUM = "file://README;beginline=41;endline=44;md5=d51b5805e2a675685e6a66ca50904cf9"
 
 SRC_URI = "git://github.com/axboe/liburing.git;branch=master;protocol=https \
@@ -24,8 +24,8 @@
 
 EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} -I${S}/include -DWITHOUT_XATTR' 'LDFLAGS=${LDFLAGS}' 'XCFLAGS=${XCFLAGS}' 'BUILDDIR=${S}'"
 do_configure() {
-    ${S}/configure --prefix=${prefix}
+    ${S}/configure --prefix=${prefix} --libdir=${libdir} --libdevdir=${libdir} --mandir=${mandir} --datadir=${datadir} --includedir=${includedir}
 }
 do_install () {
-    oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} INCLUDEDIR=${includedir}
+    oe_runmake install DESTDIR=${D}
 }
diff --git a/meta-openembedded/meta-oe/recipes-support/libusb/libusb-compat_0.1.7.bb b/meta-openembedded/meta-oe/recipes-support/libusb/libusb-compat_0.1.7.bb
index 94d833a..5ab08f6 100644
--- a/meta-openembedded/meta-oe/recipes-support/libusb/libusb-compat_0.1.7.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libusb/libusb-compat_0.1.7.bb
@@ -5,7 +5,7 @@
 BUGTRACKER = "http://www.libusb.org/report"
 SECTION = "libs"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f2ac5f3ac4835e8f91324a26a590a423"
 DEPENDS = "libusb1"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb b/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb
index 3330e03..716d9c4 100644
--- a/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libusbg/libusbg_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "USB Gadget Configfs Library"
 
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb
index d4bb9bf..023f7bf 100644
--- a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb
@@ -1,5 +1,5 @@
 SUMMARY = "USB Gadget neXt Configfs Library"
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb b/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb
index b178a92..5c05271 100644
--- a/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb
@@ -4,7 +4,7 @@
 screen and xterm to record user sessions to utmp and wtmp files."
 HOMEPAGE = "ftp://ftp.altlinux.org/pub/people/ldv/utempter"
 SECTION = "System Environment/Libraries"
-LICENSE = "GPLv2 & GPLv2+ & LGPLv2 & MIT"
+LICENSE = "GPL-2.0-only & GPL-2.0-or-later & LGPL-2.0-only & MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 SRCREV = "3ef74fff310f09e2601e241b9f042cd39d591018"
diff --git a/meta-openembedded/meta-oe/recipes-support/links/links.inc b/meta-openembedded/meta-oe/recipes-support/links/links.inc
index d6aa2d2..d772d54 100644
--- a/meta-openembedded/meta-oe/recipes-support/links/links.inc
+++ b/meta-openembedded/meta-oe/recipes-support/links/links.inc
@@ -2,7 +2,7 @@
 browser, similar to Lynx."
 HOMEPAGE = "http://links.twibright.com/"
 SECTION = "console/network"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b0c80473f97008e42e29a9f80fcc55ff"
 DEPENDS = "jpeg libpng flex openssl zlib"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb b/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
index 15acdf5..48be8df 100644
--- a/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "lio-utils"
 DESCRIPTION = "a simple low-level configuration tool set for the Target+iSCSI (LIO)"
 HOMEPAGE = "http://linux-iscsi.org/index.php/Lio-utils"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=c3ea231a32635cbb5debedf3e88aa3df"
 
 PV = "4.1+git${SRCPV}"
diff --git a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb
index 9d8800e..d84041c 100644
--- a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Locking devices library"
 SECTION = "libs"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM="file://LICENSE;md5=d8045f3b8f929c1cb29a1e3fd737b499"
 
 PE = "1"
diff --git a/meta-openembedded/meta-oe/recipes-support/log4c/log4c_1.2.4.bb b/meta-openembedded/meta-oe/recipes-support/log4c/log4c_1.2.4.bb
index ef7ad84..7d9b9d5 100644
--- a/meta-openembedded/meta-oe/recipes-support/log4c/log4c_1.2.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/log4c/log4c_1.2.4.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Log4c is a C library for flexible logging to files, syslog and other destinations"
 HOMEPAGE = "http://log4c.sourceforge.net"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.3.bb b/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.3.bb
index c6f9404..d9a55dd 100644
--- a/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.3.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations."
 HOMEPAGE = "http://sourceforge.net/projects/log4cpp/"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
 
 SRC_URI = "http://downloads.sourceforge.net/${BPN}/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
index cccc041..0c593b2 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
@@ -1,7 +1,7 @@
 HOMEPAGE = "https://www.sourceware.org/lvm2/"
 SECTION = "utils"
 DESCRIPTION = "LVM2 is a set of utilities to manage logical volumes in Linux."
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=12713b4d9386533feeb07d6e4831765a \
                     file://COPYING.LIB;md5=fbc093901857fcd118f065f900982c24"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/mbuffer/mbuffer_20140310.bb b/meta-openembedded/meta-oe/recipes-support/mbuffer/mbuffer_20140310.bb
index 3467d28..ccc21f4 100644
--- a/meta-openembedded/meta-oe/recipes-support/mbuffer/mbuffer_20140310.bb
+++ b/meta-openembedded/meta-oe/recipes-support/mbuffer/mbuffer_20140310.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "mbuffer is a tool for buffering data streams with a large set of unique features."
 HOMEPAGE = "http://www.maier-komor.de/mbuffer.html"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504"
 SECTION = "console/network"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb b/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb
index 8241bd2..d440a53 100644
--- a/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb
@@ -12,7 +12,7 @@
 
 DEPENDS = "bison-native"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://README;beginline=30;md5=94c18755082a2da9c9cf97cba3ad47d6"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test_git.bb b/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test_git.bb
index cfceaa1..f4f1b37 100644
--- a/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test_git.bb
@@ -7,7 +7,7 @@
 testing the Linux RAS related features, including CPU/Memory error \
 containment and recovery, ACPI/APEI support etc."
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
 
 SRC_URI = "git://git.kernel.org/pub/scm/utils/cpu/mce/mce-test.git;protocol=git;branch=master \
diff --git a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/0001-test-avoid-the-pfa-test-hang.patch b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/0001-test-avoid-the-pfa-test-hang.patch
deleted file mode 100644
index 03bcc45..0000000
--- a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog/0001-test-avoid-the-pfa-test-hang.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3765b3a4cabf76f55c1c126ac64780a8c117d1d9 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Tue, 12 Jan 2021 10:30:13 +0800
-Subject: [PATCH] test: avoid the pfa test hang
-
-Per [1], the pfa test needs to install page-types and the pfa test
-will hang forever if there is no page-types installed.
-
-Improve the test script to avoid the pfa test hang.
-
-[1] https://git.kernel.org/pub/scm/utils/cpu/mce/mcelog.git/tree/tests/pfa/PFA_test_howto?id=7b776a8c005b60572f49797e81287540f99fff1f
-
-Upstream-Status: Submitted [https://github.com/andikleen/mcelog/pull/87]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- tests/test | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/tests/test b/tests/test
-index 020ae2b..320f57f 100755
---- a/tests/test
-+++ b/tests/test
-@@ -47,6 +47,9 @@ do
- 	# Inject mce records and run mcelog in parallel.
- 	# So that the mce records can be consumed by mcelog in time (avoid mce record overflow).
- 	./inject $conf &
-+	if [ "$1" = "pfa" ] ; then
-+		which page-types > /dev/null 2>&1 || continue
-+	fi
- 	$D ../../mcelog --foreground --daemon --debug-numerrors --config $conf --logfile $log >> result
- 
- 	# let triggers finish
--- 
-2.29.2
-
diff --git a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_175.bb b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_180.bb
similarity index 81%
rename from meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_175.bb
rename to meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_180.bb
index c66dd0f..249e242 100644
--- a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_175.bb
+++ b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_180.bb
@@ -2,18 +2,17 @@
 DESCRIPTION = "mcelog is required by both 32bit x86 Linux kernels (since 2.6.30) \
 and 64bit Linux kernels (since early 2.6 kernel releases) to log machine checks \
 and should run on all Linux systems that need error handling."
-HOMEPAGE = "http://mcelog.org/"
+HOMEPAGE = "https://mcelog.org/"
 SECTION = "System Environment/Base"
 
 SRC_URI = "git://git.kernel.org/pub/scm/utils/cpu/mce/mcelog.git;protocol=http;;branch=master \
-    file://0001-test-avoid-the-pfa-test-hang.patch \
     file://run-ptest \
 "
 
-SRCREV = "7b776a8c005b60572f49797e81287540f99fff1f"
+SRCREV = "4146c9296a0cbd26f1c5e411cb44877f350053bd"
 
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://README.md;md5=74bb47b9a68850cb398665cf78b31de6"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/monit/monit_5.31.0.bb b/meta-openembedded/meta-oe/recipes-support/monit/monit_5.32.0.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-support/monit/monit_5.31.0.bb
rename to meta-openembedded/meta-oe/recipes-support/monit/monit_5.32.0.bb
index eaedf4a..e4ec9d5 100644
--- a/meta-openembedded/meta-oe/recipes-support/monit/monit_5.31.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/monit/monit_5.32.0.bb
@@ -5,7 +5,7 @@
 
 HOMEPAGE = "http://mmonit.com/monit/"
 
-LICENSE = "AGPL-3.0"
+LICENSE = "AGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ea116a7defaf0e93b3bb73b2a34a3f51 \
                     file://libmonit/COPYING;md5=2405f1c59ed1bf3714cebdb40162ce92"
 
@@ -15,7 +15,7 @@
 	file://monitrc \
 "
 
-SRC_URI[sha256sum] = "eae71f28941fb663eec74c1a59b69546c659529796550bd9c0c544e9b52ac055"
+SRC_URI[sha256sum] = "1077052d4c4e848ac47d14f9b37754d46419aecbe8c9a07e1f869c914faf3216"
 
 DEPENDS = "zlib bison-native libnsl2 flex-native openssl virtual/crypt"
 
@@ -38,6 +38,10 @@
 INITSCRIPT_NAME:${PN} = "monit"
 INITSCRIPT_PARAMS:${PN} = "defaults 89"
 
+do_configure:prepend() {
+    rm -rf ${S}/m4/*
+}
+
 do_install:append() {
 
     # Configuration file
diff --git a/meta-openembedded/meta-oe/recipes-support/mscgen/mscgen_0.20.bb b/meta-openembedded/meta-oe/recipes-support/mscgen/mscgen_0.20.bb
index da8ea35..371281d 100644
--- a/meta-openembedded/meta-oe/recipes-support/mscgen/mscgen_0.20.bb
+++ b/meta-openembedded/meta-oe/recipes-support/mscgen/mscgen_0.20.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Mscgen is a small program that parses Message Sequence Chart descriptions and produces PNG, SVG, EPS or server side image maps (ismaps) as the output."
 HOMEPAGE = "http://www.mcternan.me.uk/mscgen/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b1e6a340187c1cf716513439d07c1d79"
 
 SRC_URI = "http://www.mcternan.me.uk/mscgen/software/${BPN}-src-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.4.bb b/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.4.bb
index 69fd9df..c0c4412 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.4.bb
@@ -27,7 +27,7 @@
            json-c \
           "
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 SRC_URI = "git://git.opensvc.com/multipath-tools/.git;protocol=http;branch=master \
            file://multipathd.oe \
diff --git a/meta-openembedded/meta-oe/recipes-support/nano/nano_6.2.bb b/meta-openembedded/meta-oe/recipes-support/nano/nano_6.2.bb
index 3c73bfb..0be0224 100644
--- a/meta-openembedded/meta-oe/recipes-support/nano/nano_6.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/nano/nano_6.2.bb
@@ -4,7 +4,7 @@
 Pico text editor."
 HOMEPAGE = "http://www.nano-editor.org/"
 SECTION = "console/utils"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
 
 DEPENDS = "ncurses file"
diff --git a/meta-openembedded/meta-oe/recipes-support/neon/neon_0.30.2.bb b/meta-openembedded/meta-oe/recipes-support/neon/neon_0.30.2.bb
index 5f120e9..646a9ec 100644
--- a/meta-openembedded/meta-oe/recipes-support/neon/neon_0.30.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/neon/neon_0.30.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "An HTTP and WebDAV client library with a C interface"
 HOMEPAGE = "http://www.webdav.org/neon/"
 SECTION = "libs"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://src/COPYING.LIB;md5=f30a9716ef3762e3467a2f62bf790f0a \
                     file://src/ne_utils.h;beginline=1;endline=20;md5=2caca609538eddaa6f6adf120a218037"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/nmon/nmon_16m.bb b/meta-openembedded/meta-oe/recipes-support/nmon/nmon_16m.bb
index 723da85..d4a357c 100644
--- a/meta-openembedded/meta-oe/recipes-support/nmon/nmon_16m.bb
+++ b/meta-openembedded/meta-oe/recipes-support/nmon/nmon_16m.bb
@@ -1,7 +1,7 @@
 SUMMARY = "nmon performance monitor"
 HOMEPAGE = "http://nmon.sf.net"
 SECTION = "console/utils"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://Documentation.txt;md5=dbb13658cf55d687c4f2ff771a696d4a"
 DEPENDS = "ncurses"
 DEPENDS:append:libc-musl = " bsd-headers"
diff --git a/meta-openembedded/meta-oe/recipes-support/nspr/nspr_4.29.bb b/meta-openembedded/meta-oe/recipes-support/nspr/nspr_4.29.bb
index 1bf6811..b60de08 100644
--- a/meta-openembedded/meta-oe/recipes-support/nspr/nspr_4.29.bb
+++ b/meta-openembedded/meta-oe/recipes-support/nspr/nspr_4.29.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Netscape Portable Runtime Library"
 HOMEPAGE =  "http://www.mozilla.org/projects/nspr/"
-LICENSE = "GPL-2.0 | MPL-2.0 | LGPL-2.1"
+LICENSE = "GPL-2.0-only | MPL-2.0 | LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://configure.in;beginline=3;endline=6;md5=90c2fdee38e45d6302abcfe475c8b5c5 \
                     file://Makefile.in;beginline=4;endline=38;md5=beda1dbb98a515f557d3e58ef06bca99"
 SECTION = "libs/network"
@@ -160,6 +160,8 @@
 # preferred path upstream.
 EXTRA_OECONF += "--includedir=${includedir}/nspr"
 
+EXTRA_OEMAKE:append:class-native = " EXTRA_LIBS='-lpthread -lrt -ldl'"
+
 do_compile:prepend() {
 	oe_runmake CROSS_COMPILE=1 CFLAGS="-DXP_UNIX ${BUILD_CFLAGS}" LDFLAGS="" CC="${BUILD_CC}" -C config export
 }
diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb
index 8d40e2c..333bbdf 100644
--- a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb
+++ b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb
@@ -11,7 +11,7 @@
 DEPENDS = "sqlite3 nspr zlib nss-native"
 DEPENDS:class-native = "sqlite3-native nspr-native zlib-native"
 
-LICENSE = "(MPL-2.0 & MIT) | (MPL-2.0 & GPL-2.0+ & MIT) | (MPL-2.0 & LGPL-2.1+ & MIT)"
+LICENSE = "(MPL-2.0 & MIT) | (MPL-2.0 & GPL-2.0-or-later & MIT) | (MPL-2.0 & LGPL-2.1-or-later & MIT)"
 
 LIC_FILES_CHKSUM = "file://nss/COPYING;md5=3b1e88e1b9c0b5a4b2881d46cce06a18 \
                     file://nss/lib/freebl/mpi/doc/LICENSE;md5=491f158d09d948466afce85d6f1fe18f \
diff --git a/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb b/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
index 0753735..a873da6 100644
--- a/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
+++ b/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
@@ -22,7 +22,7 @@
 SRC_URI[md5sum] = "a1da3358ab798f1cb9232f1dbababc21"
 SRC_URI[sha256sum] = "6cd3e2933d29eb1f875c838ee58b8071fd61f0ec8ed5922a86c01c805d181a68"
 
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LGPL-2.1;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 inherit systemd
diff --git a/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.5.9.bb b/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.5.9.bb
index 541a623..5ac5660 100644
--- a/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.5.9.bb
+++ b/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.5.9.bb
@@ -203,7 +203,8 @@
 INITSCRIPT_PACKAGES = "${PN}-slapd"
 INITSCRIPT_NAME:${PN}-slapd = "openldap"
 INITSCRIPT_PARAMS:${PN}-slapd = "defaults"
-SYSTEMD_SERVICE:${PN}-slapd = "hostapd.service"
+SYSTEMD_PACKAGES = "${PN}-slapd"
+SYSTEMD_SERVICE:${PN}-slapd = "slapd.service"
 SYSTEMD_AUTO_ENABLE:${PN}-slapd ?= "disable"
 
 PACKAGES_DYNAMIC += "^${PN}-backends.* ^${PN}-backend-.*"
diff --git a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.22.0.bb b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.22.0.bb
index f1ac7df..f8b4af0 100644
--- a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.22.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.22.0.bb
@@ -8,7 +8,7 @@
 
 HOMEPAGE = "http://www.opensc-project.org/opensc/"
 SECTION = "System Environment/Libraries"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=cb8aedd3bced19bd8026d96a8b6876d7"
 
 #v0.21.0
diff --git a/meta-openembedded/meta-oe/recipes-support/opensync/wbxml2_0.10.8.bb b/meta-openembedded/meta-oe/recipes-support/opensync/wbxml2_0.10.8.bb
index 3d6bd2a..1c5a18e 100644
--- a/meta-openembedded/meta-oe/recipes-support/opensync/wbxml2_0.10.8.bb
+++ b/meta-openembedded/meta-oe/recipes-support/opensync/wbxml2_0.10.8.bb
@@ -1,7 +1,7 @@
 SUMMARY = "WBXML parsing and encoding library"
 HOMEPAGE = "http://libwbxml.opensync.org/"
 SECTION = "libs"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c1128ee5341ccd5927d8bafe4b6266e1"
 
 DEPENDS = "expat"
diff --git a/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb b/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb
index 45aa0d4..a27edb1 100644
--- a/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb
+++ b/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "A small network printer daemon for embedded situations that passes the job directly to the printer"
 HOMEPAGE = "http://p910nd.sourceforge.net/"
 SECTION = "console/utils"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 
 PR = "r2"
diff --git a/meta-openembedded/meta-oe/recipes-support/pcp/pcp-native_5.3.5.bb b/meta-openembedded/meta-oe/recipes-support/pcp/pcp-native_5.3.6.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/pcp/pcp-native_5.3.5.bb
rename to meta-openembedded/meta-oe/recipes-support/pcp/pcp-native_5.3.6.bb
diff --git a/meta-openembedded/meta-oe/recipes-support/pcp/pcp.inc b/meta-openembedded/meta-oe/recipes-support/pcp/pcp.inc
index 37b6c45..708ebfe 100644
--- a/meta-openembedded/meta-oe/recipes-support/pcp/pcp.inc
+++ b/meta-openembedded/meta-oe/recipes-support/pcp/pcp.inc
@@ -2,20 +2,18 @@
 HOMEPAGE = "http://www.pcp.io"
 SECTION =  "Applications/System"
 
-LICENSE = "GPLv2+ & LGPLv2.1"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=37ab75b580d5aad4ada04260efa3702f \
                     "
 COMPATIBLE_HOST:libc-musl = "null"
 
-SRC_URI = "https://performancecopilot.jfrog.io/artifactory/pcp-source-release/pcp-5.3.5.src.tar.gz \
-	   file://config.linux \
+SRC_URI = "https://performancecopilot.jfrog.io/artifactory/pcp-source-release/${BP}.src.tar.gz \
+           file://0001-configure-Limit-the-header-search-to-sysroot.patch \
+           file://config.linux \
 	   "
+SRC_URI[sha256sum] = "6ef33b7aa14c09860ba7cd8873e76d38ccd24eab0c94a50e235f813e77fe3610"
 
-SRC_URI[sha256sum] = "589a610f753a49af6d2015cede87e9d469bd07880ebef26fe1607b6ded375e97"
-
-inherit setuptools3-base pkgconfig autotools
-
-B = "${S}"
+inherit setuptools3-base pkgconfig autotools-brokensep
 
 # Specify any options you want to pass to the configure script using EXTRA_OECONF:
 CACHED_CONFIGUREVARS = "PACKAGE_DISTRIBUTION=arch"
diff --git a/meta-openembedded/meta-oe/recipes-support/pcp/pcp/0001-configure-Limit-the-header-search-to-sysroot.patch b/meta-openembedded/meta-oe/recipes-support/pcp/pcp/0001-configure-Limit-the-header-search-to-sysroot.patch
new file mode 100644
index 0000000..591f94f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/pcp/pcp/0001-configure-Limit-the-header-search-to-sysroot.patch
@@ -0,0 +1,88 @@
+From 1eb68f65fd73443d862ca5f36f3b6041e2b0f13a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 10 Mar 2022 18:53:13 -0800
+Subject: [PATCH] configure: Limit the header search to sysroot
+
+Hardcoded paths in configure.ac means it starts to poke at host system
+include paths, which is least we want in a cross build, therefore prefix
+these paths with STAGING_SYSROOT
+
+Upstream-Status: Inappropriate [OE Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 5d24714..4e2d8ec 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -913,7 +913,7 @@ AC_DEFUN([PCP_CHECK_PYTHON_HEADER],
+   [ PY_MAJOR="$1"
+     PY_MINOR="$2"
+     PY_VERSION="python$PY_MAJOR.$PY_MINOR"
+-    PY_INCLUDE_DIRS="-I/usr/include/${PY_VERSION}m -I/usr/include/${PY_VERSION}"
++    PY_INCLUDE_DIRS="-I${STAGING_INCDIR}/${PY_VERSION}m -I${STAGING_INCDIR}/${PY_VERSION}"
+     saved_CFLAGS="$CFLAGS"
+     saved_CPPFLAGS="$CPPFLAGS"
+     CFLAGS="$CFLAGS $PY_INCLUDE_DIRS"
+@@ -1524,7 +1524,7 @@ AC_SUBST(qmake)
+ 
+ enable_qt3d=false
+ AS_IF([test "x$do_qt3d" != "xno"], [
+-    if test -f /usr/include/Coin3/Inventor/Qt/SoQt.h -o -f /usr/include/Inventor/Qt/SoQt.h
++    if test -f ${STAGING_INCDIR}/Coin3/Inventor/Qt/SoQt.h -o -f ${STAGING_INCDIR}/Inventor/Qt/SoQt.h
+     then
+ 	enable_qt3d=$enable_qt
+     elif test x"$do_qt3d" = x"yes"
+@@ -3810,13 +3810,13 @@ then
+ 
+     saved_CFLAGS="$CFLAGS"
+     saved_CPPFLAGS="$CPPFLAGS"
+-    NSS_INC_DIRS="-I/usr/include/nss -I/usr/include/nss3"
+-    NSPR_INC_DIRS="-I/usr/include/nspr -I/usr/include/nspr4"
++    NSS_INC_DIRS="-I${STAGING_INCDIR}/nss -I${STAGING_INCDIR}/nss3"
++    NSPR_INC_DIRS="-I${STAGING_INCDIR}/nspr -I${STAGING_INCDIR}/nspr4"
+     CFLAGS="$CFLAGS $NSS_INC_DIRS $NSPR_INC_DIRS"
+     CPPFLAGS="$CPPFLAGS $NSS_INC_DIRS $NSPR_INC_DIRS"
+ 
+-    AC_CHECK_HEADERS([nss/nss.h], [NSSCFLAGS=-I/usr/include/nss], [
+-	AC_CHECK_HEADERS([nss3/nss.h], [NSSCFLAGS=-I/usr/include/nss3], [
++    AC_CHECK_HEADERS([nss/nss.h], [NSSCFLAGS=-I${STAGING_INCDIR}/nss], [
++	AC_CHECK_HEADERS([nss3/nss.h], [NSSCFLAGS=-I${STAGING_INCDIR}/nss3], [
+ 	    enable_secure=false
+ 	    if test "$do_secure" = "yes"
+ 	    then
+@@ -3826,8 +3826,8 @@ then
+     ])
+     AC_SUBST(NSSCFLAGS)
+ 
+-    AC_CHECK_HEADERS([nspr/nspr.h], [NSPRCFLAGS=-I/usr/include/nspr], [
+-	AC_CHECK_HEADERS([nspr4/nspr.h], [NSPRCFLAGS=-I/usr/include/nspr4], [
++    AC_CHECK_HEADERS([nspr/nspr.h], [NSPRCFLAGS=-I${STAGING_INCDIR}/nspr], [
++	AC_CHECK_HEADERS([nspr4/nspr.h], [NSPRCFLAGS=-I${STAGING_INCDIR}/nspr4], [
+ 	    enable_secure=false
+ 	    if test "$do_secure" = "yes"
+ 	    then
+@@ -3837,7 +3837,7 @@ then
+     ])
+     AC_SUBST(NSPRCFLAGS)
+ 
+-    AC_CHECK_HEADERS([sasl/sasl.h], [SASLCFLAGS=-I/usr/include/sasl], [
++    AC_CHECK_HEADERS([sasl/sasl.h], [SASLCFLAGS=-I${STAGING_INCDIR}/sasl], [
+ 	enable_secure=false
+ 	if test "$do_secure" = "yes"
+ 	then
+@@ -3938,7 +3938,7 @@ AC_SUBST(enable_decompression)
+ AC_SUBST(enable_lzma)
+ 
+ dnl check for array sessions
+-if test -f /usr/include/sn/arsess.h
++if test -f ${STAGING_INCDIR}/sn/arsess.h
+ then
+     pcp_mpi_dirs=libpcp_mpi\ libpcp_mpiread
+ else
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/pcp/pcp_5.3.5.bb b/meta-openembedded/meta-oe/recipes-support/pcp/pcp_5.3.6.bb
similarity index 98%
rename from meta-openembedded/meta-oe/recipes-support/pcp/pcp_5.3.5.bb
rename to meta-openembedded/meta-oe/recipes-support/pcp/pcp_5.3.6.bb
index bd09985..48d536e 100644
--- a/meta-openembedded/meta-oe/recipes-support/pcp/pcp_5.3.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pcp/pcp_5.3.6.bb
@@ -18,7 +18,10 @@
 export PCP_DIR="${RECIPE_SYSROOT_NATIVE}"
 #export PCP_RUN_DIR="${RECIPE_SYSROOT_NATIVE}"
 EXTRA_OEMAKE = "CC="${CC}" LD="${LD}""
-inherit useradd systemd 
+inherit useradd systemd features_check
+
+# Needs libx11
+REQUIRED_DISTRO_FEATURES = "x11"
 
 SYSTEMD_AUTO_ENABLE:${PN} = "enable"
 SYSTEMD_SERVICE:${PN} = "pmcd.service pmcd.service pmie_check.service pmie_farm_check.service \
diff --git a/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.9.0.bb b/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.9.0.bb
index d90dd43..9ae091a 100644
--- a/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.9.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.9.0.bb
@@ -1,13 +1,13 @@
 SUMMARY = "PC/SC Lite smart card framework and applications"
 HOMEPAGE = "http://pcsclite.alioth.debian.org/"
-LICENSE = "BSD-3-Clause & GPLv3+"
+LICENSE = "BSD-3-Clause & GPL-3.0-or-later"
 LICENSE:${PN} = "BSD-3-Clause"
 LICENSE:${PN}-lib = "BSD-3-Clause"
 LICENSE:${PN}-doc = "BSD-3-Clause"
 LICENSE:${PN}-dev = "BSD-3-Clause"
-LICENSE:${PN}-dbg = "BSD-3-Clause & GPLv3+"
-LICENSE:${PN}-spy = "GPLv3+"
-LICENSE:${PN}-spy-dev = "GPLv3+"
+LICENSE:${PN}-dbg = "BSD-3-Clause & GPL-3.0-or-later"
+LICENSE:${PN}-spy = "GPL-3.0-or-later"
+LICENSE:${PN}-spy-dev = "GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=628c01ba985ecfa21677f5ee2d5202f6"
 
 SRC_URI = "\
diff --git a/meta-openembedded/meta-oe/recipes-support/pcsc-tools/pcsc-tools_1.5.8.bb b/meta-openembedded/meta-oe/recipes-support/pcsc-tools/pcsc-tools_1.5.8.bb
index 19654f1..1600bbf 100644
--- a/meta-openembedded/meta-oe/recipes-support/pcsc-tools/pcsc-tools_1.5.8.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pcsc-tools/pcsc-tools_1.5.8.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Some tools to be used with smart cards and PC/SC"
 HOMEPAGE = "http://ludovic.rousseau.free.fr/softwares/pcsc-tools"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENCE;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI = "git://github.com/LudovicRousseau/pcsc-tools;protocol=https;branch=master"
diff --git a/meta-openembedded/meta-oe/recipes-support/picocom/picocom_git.bb b/meta-openembedded/meta-oe/recipes-support/picocom/picocom_git.bb
index 801300e..55dc292 100644
--- a/meta-openembedded/meta-oe/recipes-support/picocom/picocom_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/picocom/picocom_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Lightweight and minimal dumb-terminal emulation program"
 SECTION = "console/utils"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 HOMEPAGE = "https://github.com/npat-efault/picocom"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3000e4830620e310fe65c0eb69df9e8a"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/pidgin/funyahoo-plusplus_git.bb b/meta-openembedded/meta-oe/recipes-support/pidgin/funyahoo-plusplus_git.bb
index 6c7802e..ad6a750 100644
--- a/meta-openembedded/meta-oe/recipes-support/pidgin/funyahoo-plusplus_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pidgin/funyahoo-plusplus_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Protocol plugin for New Yahoo (2016) for Adium, Pidgin, Miranda and Telepathy IM Framework"
 SECTION = "webos/services"
-LICENSE = "GPLv3.0"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=84dcc94da3adb52b53ae4fa38fe49e5d"
 
 DEPENDS = "pidgin json-glib glib-2.0"
diff --git a/meta-openembedded/meta-oe/recipes-support/pidgin/icyque_git.bb b/meta-openembedded/meta-oe/recipes-support/pidgin/icyque_git.bb
index 2f415de..fe75415 100644
--- a/meta-openembedded/meta-oe/recipes-support/pidgin/icyque_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pidgin/icyque_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "WIM Protocol plugin for ICQ for Adium, Pidgin, Miranda and Telepathy IM Framework"
 SECTION = "webos/services"
-LICENSE = "GPLv3.0"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 DEPENDS = "pidgin json-glib"
diff --git a/meta-openembedded/meta-oe/recipes-support/pidgin/libgnt_2.14.1.bb b/meta-openembedded/meta-oe/recipes-support/pidgin/libgnt_2.14.1.bb
index 2450d31..d17a623 100644
--- a/meta-openembedded/meta-oe/recipes-support/pidgin/libgnt_2.14.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pidgin/libgnt_2.14.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "GNT: The GLib Ncurses Toolkit"
 
 SECTION = "libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c9a1abacd0166f595a9fbe6afb1f0d5e"
 DEPENDS = "glib-2.0 ncurses libxml2 glib-2.0-native"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/pidgin/libotr_4.1.1.bb b/meta-openembedded/meta-oe/recipes-support/pidgin/libotr_4.1.1.bb
index c701244..d9e0e1c 100644
--- a/meta-openembedded/meta-oe/recipes-support/pidgin/libotr_4.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pidgin/libotr_4.1.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "(OTR) Messaging allows you to have private conversations over instant messaging"
 HOMEPAGE = "http://www.cypherpunks.ca/otr/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=92fe174bad6da3763f6e9e9eaff6df24"
 DEPENDS = "libgcrypt libgpg-error"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.2.bb b/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.2.bb
index 80fb23e..326c5bf 100644
--- a/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "(OTR) Messaging allows you to have private conversations over instant messaging"
 HOMEPAGE = "https://otr.cypherpunks.ca/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=92fe174bad6da3763f6e9e9eaff6df24"
 DEPENDS = "libgcrypt libotr pidgin gtk+ intltool-native glib-2.0 glib-2.0-native"
 REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe_1.25.0.bb b/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe_1.25.0.bb
index 3752c05..c0e1790 100644
--- a/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe_1.25.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe_1.25.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Protocol plugin for Office 365/Lync/OCS for Adium, Pidgin, Miranda and Telepathy IM Framework"
 SECTION = "webos/services"
-LICENSE = "GPLv2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 DEPENDS = "pidgin gmime intltool-native glib-2.0-native"
diff --git a/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.14.2.bb b/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.14.2.bb
index 17a2adf..14b1aaf 100644
--- a/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.14.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.14.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "multi-protocol instant messaging client"
 
 SECTION = "x11/network"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 DEPENDS = "python3 virtual/libintl intltool-native libxml2 gconf glib-2.0-native"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb b/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb
index a29a445..96b97b6 100644
--- a/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Skype protocol plug-in for libpurple"
 SECTION = "webos/services"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://skypeweb/gpl3.txt;md5=d90260d32cef39f3c8d6c0f05d3adb8e"
 
 DEPENDS = "pidgin json-glib glib-2.0 zlib"
diff --git a/meta-openembedded/meta-oe/recipes-support/pngcheck/pngcheck_2.3.0.bb b/meta-openembedded/meta-oe/recipes-support/pngcheck/pngcheck_2.3.0.bb
index 9f617ec..19da947 100644
--- a/meta-openembedded/meta-oe/recipes-support/pngcheck/pngcheck_2.3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pngcheck/pngcheck_2.3.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "pngcheck verifies the integrity of PNG, JNG and MNG files"
 HOMEPAGE = "http://www.libpng.org/pub/png/apps/pngcheck.html"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://gpl/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = "zlib libpng"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/poco/poco/0001-fix-missing-expat-definition.patch b/meta-openembedded/meta-oe/recipes-support/poco/poco/0001-fix-missing-expat-definition.patch
deleted file mode 100644
index 625aa31..0000000
--- a/meta-openembedded/meta-oe/recipes-support/poco/poco/0001-fix-missing-expat-definition.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 3f288fefbd683d687bde3fc63964da64bc3c8a40 Mon Sep 17 00:00:00 2001
-From: Pascal Bach <pascal.bach@siemens.com>
-Date: Wed, 11 Aug 2021 15:11:49 +0200
-Subject: [PATCH] fix missing expat definition
-
-Upstream-Status: Submitted [https://github.com/pocoproject/poco/pull/3414]
-Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
----
- XML/src/ParserEngine.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/XML/src/ParserEngine.cpp b/XML/src/ParserEngine.cpp
-index 82d477478..6213e555b 100644
---- a/XML/src/ParserEngine.cpp
-+++ b/XML/src/ParserEngine.cpp
-@@ -504,7 +504,7 @@ void ParserEngine::init()
- 	XML_SetParamEntityParsing(_parser, _externalParameterEntities ? XML_PARAM_ENTITY_PARSING_ALWAYS : XML_PARAM_ENTITY_PARSING_NEVER);
- 	XML_SetUnknownEncodingHandler(_parser, handleUnknownEncoding, this);
-
--#if XML_MAJOR_VERSION > 2 || (XML_MAJOR_VERSION == 2 && XML_MINOR_VERSION >= 4)
-+#if XML_DTD && (XML_MAJOR_VERSION > 2 || (XML_MAJOR_VERSION == 2 && XML_MINOR_VERSION >= 4))
- 	if (_maximumAmplificationFactor > 1.0)
- 	{
- 		XML_SetBillionLaughsAttackProtectionMaximumAmplification(_parser, _maximumAmplificationFactor);
---
-2.32.0
-
diff --git a/meta-openembedded/meta-oe/recipes-support/poco/poco_1.11.0.bb b/meta-openembedded/meta-oe/recipes-support/poco/poco_1.11.1.bb
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-support/poco/poco_1.11.0.bb
rename to meta-openembedded/meta-oe/recipes-support/poco/poco_1.11.1.bb
index 027ff64..3cfd49f 100644
--- a/meta-openembedded/meta-oe/recipes-support/poco/poco_1.11.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poco/poco_1.11.1.bb
@@ -10,10 +10,9 @@
 
 SRC_URI = " \
     git://github.com/pocoproject/poco.git;branch=master;protocol=https \
-    file://0001-fix-missing-expat-definition.patch \
     file://run-ptest \
    "
-SRCREV = "f81a38057f1d240fe7b7a069612776f788bc88ea"
+SRCREV = "de61f0049175a941cc83c2615c3bdc5e947b89f9"
 
 UPSTREAM_CHECK_GITTAGREGEX = "poco-(?P<pver>\d+(\.\d+)+)"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.11.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.11.bb
index 1360617..b0c0869 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.11.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.11.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Encoding files for use with poppler that enable poppler to \
                correctly render CJK and Cyrrilic."
 HOMEPAGE = "https://poppler.freedesktop.org/"
-LICENSE = "BSD-3-Clause & GPLv2 & GPLv3+"
+LICENSE = "BSD-3-Clause & GPL-2.0-only & GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=96287d49ec274d9c3222b5f966c132fd \
                     file://COPYING.adobe;md5=a790726a74164c30b5de1ef93fd69e99 \
                     file://COPYING.gpl2;md5=751419260aa954499f7abaabaa882bbe \
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_22.02.0.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_22.03.0.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-support/poppler/poppler_22.02.0.bb
rename to meta-openembedded/meta-oe/recipes-support/poppler/poppler_22.03.0.bb
index 2954a89..a0d8be6 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_22.02.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_22.03.0.bb
@@ -1,13 +1,13 @@
 SUMMARY = "Poppler is a PDF rendering library based on the xpdf-3.0 code base"
 HOMEPAGE = "https://poppler.freedesktop.org/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 SRC_URI = "http://poppler.freedesktop.org/${BP}.tar.xz \
            file://0001-Do-not-overwrite-all-our-build-flags.patch \
            file://basename-include.patch \
            "
-SRC_URI[sha256sum] = "e390c8b806f6c9f0e35c8462033e0a738bb2460ebd660bdb8b6dca01556193e1"
+SRC_URI[sha256sum] = "728c78ba94d75a55f6b6355d4fbdaa6f49934d9616be58e5e679a9cfd0980e1e"
 
 DEPENDS = "fontconfig zlib cairo lcms glib-2.0"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_1.0.3.bb b/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_1.0.3.bb
index 344dbca..65c06c1 100644
--- a/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_1.0.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_1.0.3.bb
@@ -1,7 +1,7 @@
 SUMMARY = "User-space tools for LinuxPPS"
 HOMEPAGE = "http://linuxpps.org"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 SRCREV = "c50cb7183e252b47308fa22f420e0a877277aa29"
diff --git a/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb b/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb
index 6160733..ba268de 100644
--- a/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb
+++ b/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb
@@ -16,7 +16,7 @@
 SRC_URI[md5sum] = "1678ea99b973eb77eda4ecf6acae53f1"
 SRC_URI[sha256sum] = "087c75b34dd33d8b9df5afe9e42801c9395f4bf373a784d9bc97153b0062e117"
 
-LICENSE = "GPL-2.0 & Artistic-1.0"
+LICENSE = "GPL-2.0-only & Artistic-1.0"
 LIC_FILES_CHKSUM = "file://COPYING;md5=a71e50e197a992c862379e576e669757 \
     file://Artistic;md5=505e00d03c3428cde21b17b2a386590e"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/pv/pv/run-ptest b/meta-openembedded/meta-oe/recipes-support/pv/pv/run-ptest
new file mode 100644
index 0000000..3f5956f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/pv/pv/run-ptest
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+rm -rf tests.log
+sh -e run-test.sh pv . > tests.log 2>&1
+sed -e 's|\(.*\):.*OK|PASS: \1|' \
+    -e 's|\(.*\):.*FAILED|FAIL: \1|' \
+   tests.log
diff --git a/meta-openembedded/meta-oe/recipes-support/pv/pv_1.6.20.bb b/meta-openembedded/meta-oe/recipes-support/pv/pv_1.6.20.bb
new file mode 100644
index 0000000..867a621
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/pv/pv_1.6.20.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Terminal-based tool for monitoring the progress of data through a pipeline"
+HOMEPAGE = "http://www.ivarch.com/programs/pv.shtml"
+
+LICENSE = "Artistic-2.0"
+LIC_FILES_CHKSUM = "file://doc/COPYING;md5=9c50db2589ee3ef10a9b7b2e50ce1d02"
+
+SRC_URI = "https://www.ivarch.com/programs/sources/${BP}.tar.bz2 \
+           file://run-ptest \
+"
+SRC_URI[sha256sum] = "e831951eff0718fba9b1ef286128773b9d0e723e1fbfae88d5a3188814fdc603"
+
+UPSTREAM_CHECK_URI = "http://www.ivarch.com/programs/pv.shtml"
+UPSTREAM_CHECK_REGEX = "pv-(?P<pver>\d+(\.\d+)+).tar.bz2"
+
+inherit autotools ptest
+
+LDEMULATION:mipsarchn32 = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'elf32btsmipn32', 'elf32ltsmipn32', d)}"
+export LDEMULATION
+
+RDEPENDS:${PN}-ptest = "coreutils"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests
+    cp -r ${S}/autoconf/scripts/run-test.sh  ${D}${PTEST_PATH}
+    # sed -i -e 's@\$SRCDIR/@./@g' ${D}${PTEST_PATH}/run-ptest
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/pv/pv_1.6.6.bb b/meta-openembedded/meta-oe/recipes-support/pv/pv_1.6.6.bb
deleted file mode 100644
index 244d140..0000000
--- a/meta-openembedded/meta-oe/recipes-support/pv/pv_1.6.6.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "Terminal-based tool for monitoring the progress of data through a pipeline"
-
-LICENSE = "Artistic-2.0"
-LIC_FILES_CHKSUM = "file://doc/COPYING;md5=9c50db2589ee3ef10a9b7b2e50ce1d02"
-
-SRC_URI = "http://www.ivarch.com/programs/sources/${BP}.tar.bz2"
-SRC_URI[md5sum] = "ff3564fddcc2b9bd4a9c1d143aba4b4c"
-SRC_URI[sha256sum] = "608ef935f7a377e1439c181c4fc188d247da10d51a19ef79bcdee5043b0973f1"
-
-UPSTREAM_CHECK_URI = "http://www.ivarch.com/programs/pv.shtml"
-UPSTREAM_CHECK_REGEX = "pv-(?P<pver>\d+(\.\d+)+).tar.bz2"
-
-inherit autotools
-
-LDEMULATION:mipsarchn32 = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'elf32btsmipn32', 'elf32ltsmipn32', d)}"
-export LDEMULATION
diff --git a/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs_1.14.bb b/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs_1.14.bb
index 30c41ff..2405839 100644
--- a/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs_1.14.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pxaregs/pxaregs_1.14.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Tool to display and modify PXA registers at runtime"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://pxaregs.c;endline=12;md5=668d061b7637acc68cb8071c9be372e6"
 AUTHOR = "Holger Schurig <hs4233@mail.mn-solutions.de>"
 HOMEPAGE = "http://www.mn-logistik.de/unsupported/pxa250/"
diff --git a/meta-openembedded/meta-oe/recipes-support/raptor2/raptor2_2.0.15.bb b/meta-openembedded/meta-oe/recipes-support/raptor2/raptor2_2.0.15.bb
index dd00c14..577c6ee 100644
--- a/meta-openembedded/meta-oe/recipes-support/raptor2/raptor2_2.0.15.bb
+++ b/meta-openembedded/meta-oe/recipes-support/raptor2/raptor2_2.0.15.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Library for parsing and serializing RDF syntaxes"
-LICENSE = "GPLv2 | LGPLv2.1 | Apache-2.0"
+LICENSE = "GPL-2.0-only | LGPL-2.1-only | Apache-2.0"
 LIC_FILES_CHKSUM = " \
     file://LICENSE.txt;md5=b840e5ae3aeb897f45b473341348cd9c \
     file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
diff --git a/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.4.1.bb b/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.4.1.bb
index 42f2064..64ae62a 100644
--- a/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.4.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.4.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Rdfind is a program that finds duplicate files"
 HOMEPAGE = "https://rdfind.pauldreik.se/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=fa22e16ebbe6638b2bd253338fbded9f"
 
 DEPENDS = "nettle autoconf-archive"
diff --git a/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.24.bb b/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.24.bb
index 817b511..23cafa7 100644
--- a/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.24.bb
+++ b/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.4.24.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "A feature rich Remote Desktop Application written in GTK+"
 HOMEPAGE = "https://remmina.org"
 SECTION = "Support"
-LICENSE = "GPLv2 & openssl"
+LICENSE = "GPL-2.0-only & OpenSSL"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=dab7215512044d49037272ce1ac4ea8f file://LICENSE.OpenSSL;md5=c1eb3cee0a4dea27503c531267a69769"
 
 DEPENDS = " \
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 2887f4d..2203663 100644
--- a/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb
@@ -3,7 +3,7 @@
 BUGTRACKER = "https://sourceforge.net/projects/rsnapshot/"
 SECTION = "console/network"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
 
 RDEPENDS:${PN} = "rsync \
diff --git a/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.39.bb b/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.39.bb
index 732a144..32f27f5 100644
--- a/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.39.bb
+++ b/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.39.bb
@@ -3,7 +3,7 @@
 space, Python, and Java programs"
 
 HOMEPAGE = "https://github.com/abrt/satyr"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 
 inherit autotools-brokensep python3native pkgconfig
 
diff --git a/meta-openembedded/meta-oe/recipes-support/serial-utils/pty-forward-native.bb b/meta-openembedded/meta-oe/recipes-support/serial-utils/pty-forward-native.bb
index 87d9c52..71588ab 100644
--- a/meta-openembedded/meta-oe/recipes-support/serial-utils/pty-forward-native.bb
+++ b/meta-openembedded/meta-oe/recipes-support/serial-utils/pty-forward-native.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Receive a forwarded serial from serial-forward and provide a PTY"
 AUTHOR = "Holger 'Zecke' Freyther"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07"
 SECTION = "console/network"
 SRCREV = "00dbec2636ae0385ad028587e20e446272ff97ec"
diff --git a/meta-openembedded/meta-oe/recipes-support/serial-utils/serial-forward_git.bb b/meta-openembedded/meta-oe/recipes-support/serial-utils/serial-forward_git.bb
index dcad8f7..2eef1db 100644
--- a/meta-openembedded/meta-oe/recipes-support/serial-utils/serial-forward_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/serial-utils/serial-forward_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Forward a serial using TCP/IP"
 AUTHOR = "Holger 'Zecke' Freyther'"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07"
 SECTION = "console/devel"
 SRCREV = "07c6fdede0870edc37a8d51d033b6e7e29aa7c91"
diff --git a/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.45.bb b/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.45.bb
index 3d07c01..ac12f95 100644
--- a/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.45.bb
+++ b/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.45.bb
@@ -5,7 +5,7 @@
 HOMEPAGE = "http://sg.danny.cz/sg/sg3_utils.html"
 SECTION = "console/admin"
 
-LICENSE = "GPLv2+ & BSD-2-Clause"
+LICENSE = "GPL-2.0-or-later & BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f90da7fc52172599dbf082d7620f18ca"
 
 SRC_URI = "http://sg.danny.cz/sg/p/sg3_utils-${PV}.tgz \
diff --git a/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb b/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
index 3819580..bd2776e 100644
--- a/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "This is the set of GNU shar utilities."
 HOMEPAGE = "http://www.gnu.org/software/sharutils/"
 SECTION = "console/utils"
-LICENSE="GPLv3+"
+LICENSE="GPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 inherit gettext autotools update-alternatives
diff --git a/meta-openembedded/meta-oe/recipes-support/smarty/smarty_4.1.0.bb b/meta-openembedded/meta-oe/recipes-support/smarty/smarty_4.1.0.bb
index 85676e4..18753db 100644
--- a/meta-openembedded/meta-oe/recipes-support/smarty/smarty_4.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/smarty/smarty_4.1.0.bb
@@ -2,7 +2,7 @@
 SECTION = "console/network"
 HOMEPAGE = "https://www.smarty.net/"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=2c0f216b2120ffc367e20f2b56df51b3"
 
 DEPENDS += "php"
diff --git a/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.9.2.bb b/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.9.2.bb
index ba6bbcc..d377241 100644
--- a/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.9.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.9.2.bb
@@ -16,7 +16,3 @@
 EXTRA_OECMAKE += "-DSPDLOG_INSTALL=on -DSPDLOG_BUILD_SHARED=on -DSPDLOG_BUILD_EXAMPLES=off -DSPDLOG_BUILD_TESTS=off -DSPDLOG_BUILD_BENCH=off -DSPDLOG_FMT_EXTERNAL=on"
 
 inherit cmake
-
-# Header-only library
-RDEPENDS:${PN}-dev = ""
-RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
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 8302576..e1b9302 100644
--- a/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "This package contains some simple command line tools to help using Linux spidev devices"
 HOMEPAGE = "https://github.com/cpb-/spi-tools"
 AUTHOR = "Christophe BLAESS"
-LICENSE="GPLv2"
+LICENSE="GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8c16666ae6c159876a0ba63099614381"
 
 BPV = "1.0.0"
diff --git a/meta-openembedded/meta-oe/recipes-support/srecord/srecord_1.64.bb b/meta-openembedded/meta-oe/recipes-support/srecord/srecord_1.64.bb
index 6f9418b..85deabd 100644
--- a/meta-openembedded/meta-oe/recipes-support/srecord/srecord_1.64.bb
+++ b/meta-openembedded/meta-oe/recipes-support/srecord/srecord_1.64.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A collection of powerful tools for manipulating EPROM load files."
 SECTION = "devel"
-LICENSE = "GPLv3+ & LGPLv3+"
+LICENSE = "GPL-3.0-or-later & LGPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8dfcbf2f0a144b97f0931b6394debea7"
 
 SRC_URI = " \
diff --git a/meta-openembedded/meta-oe/recipes-support/stm32flash/stm32flash_0.6.bb b/meta-openembedded/meta-oe/recipes-support/stm32flash/stm32flash_0.7.bb
similarity index 77%
rename from meta-openembedded/meta-oe/recipes-support/stm32flash/stm32flash_0.6.bb
rename to meta-openembedded/meta-oe/recipes-support/stm32flash/stm32flash_0.7.bb
index 195c0f5..0998aa6 100644
--- a/meta-openembedded/meta-oe/recipes-support/stm32flash/stm32flash_0.6.bb
+++ b/meta-openembedded/meta-oe/recipes-support/stm32flash/stm32flash_0.7.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Open source flash program for STM32 using the ST serial bootloader"
 HOMEPAGE = "https://sourceforge.net/projects/stm32flash/"
 BUGTRACKER = "https://sourceforge.net/p/stm32flash/tickets/"
-LICENSE = "GPL-2.0+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz"
@@ -10,4 +10,4 @@
 	oe_runmake install DESTDIR=${D} PREFIX=${prefix}
 }
 
-SRC_URI[sha256sum] = "ee9b40d4d3e5cd28b993e08ae2a2c3c559b6bea8730cd7e1d40727dedb1dda09"
+SRC_URI[sha256sum] = "c4c9cd8bec79da63b111d15713ef5cc2cd947deca411d35d6e3065e227dc414a"
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0002-scl-fix-wrong-ownership-during-installation.patch b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0002-scl-fix-wrong-ownership-during-installation.patch
deleted file mode 100644
index b268335..0000000
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0002-scl-fix-wrong-ownership-during-installation.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 7a8c458b7acf4732af74317f8a535077eb451b1e Mon Sep 17 00:00:00 2001
-From: Ming Liu <ming.liu@windriver.com>
-Date: Thu, 17 Jul 2014 05:37:08 -0400
-Subject: [PATCH] scl: fix wrong ownership during installation
-
-The ownership of build user is preserved for some target files, fixed it by
-adding --no-same-owner option to tar when extracting files.
-
-Signed-off-by: Ming Liu <ming.liu@windriver.com>
-
-Upstream-Status: Backport [9045908]
-
-Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
----
- scl/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/scl/Makefile.am b/scl/Makefile.am
-index 940a467..3c19e50 100644
---- a/scl/Makefile.am
-+++ b/scl/Makefile.am
-@@ -51,7 +51,7 @@ scl-install-data-local:
- 		fi; \
- 	done
- 	$(mkinstalldirs) $(DESTDIR)/$(scldir)
--	(cd $(srcdir)/scl; tar cf - $(SCL_SUBDIRS)) | (cd $(DESTDIR)/$(scldir) && tar xf -)
-+	(cd $(srcdir)/scl; tar cf - $(SCL_SUBDIRS)) | (cd $(DESTDIR)/$(scldir) && tar xf - --no-same-owner)
- 	chmod -R u+rwX $(DESTDIR)/$(scldir)
- 
- scl-uninstall-local:
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0005-.py-s-python-python3-exclude-tests.patch b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0005-.py-s-python-python3-exclude-tests.patch
deleted file mode 100644
index a8be7d8..0000000
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0005-.py-s-python-python3-exclude-tests.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From b64fcc414316592968f181c85447cfd01d1e461e Mon Sep 17 00:00:00 2001
-From: Yi Fan Yu <yifan.yu@windriver.com>
-Date: Thu, 15 Apr 2021 13:48:19 -0400
-Subject: [PATCH] *.py: s/python/python3/ (exclude tests)
-
-As stated by https://github.com/syslog-ng/syslog-ng/pull/3603
-python2 is EOL.
-
-Fix all shebangs calling python instead of python3
-except the tests.
-
-(correcting lib/merge-grammar.py)
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-(adding the rest)
-Upstream-Status: Submitted [https://github.com/syslog-ng/syslog-ng/pull/3647]
-
-Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
----
- contrib/scripts/config-graph-json-to-dot.py | 2 +-
- lib/merge-grammar.py                        | 2 +-
- modules/python/pylib/setup.py               | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/contrib/scripts/config-graph-json-to-dot.py b/contrib/scripts/config-graph-json-to-dot.py
-index 4955c81..0351a9a 100755
---- a/contrib/scripts/config-graph-json-to-dot.py
-+++ b/contrib/scripts/config-graph-json-to-dot.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- import json, sys
- 
- j = None
-diff --git a/lib/merge-grammar.py b/lib/merge-grammar.py
-index 7313ff5..459712d 100755
---- a/lib/merge-grammar.py
-+++ b/lib/merge-grammar.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- #############################################################################
- # Copyright (c) 2010-2017 Balabit
- #
-diff --git a/modules/python/pylib/setup.py b/modules/python/pylib/setup.py
-index 23bb5cc..a2fa05e 100755
---- a/modules/python/pylib/setup.py
-+++ b/modules/python/pylib/setup.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- #############################################################################
- # Copyright (c) 2015-2016 Balabit
- #
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.31.2.bb b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.36.1.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.31.2.bb
rename to meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.36.1.bb
index ef30fd7..40bbfe4 100644
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.31.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.36.1.bb
@@ -9,7 +9,7 @@
 "
 HOMEPAGE = "http://www.balabit.com/network-security/syslog-ng/opensource-logging-system"
 
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=189c3826d32deaf83ad8d0d538a10023"
 
 # util-linux added to get libuuid
@@ -22,12 +22,9 @@
            file://volatiles.03_syslog-ng \
            file://syslog-ng-tmp.conf \
            file://syslog-ng.service-the-syslog-ng-service.patch \
-           file://0002-scl-fix-wrong-ownership-during-installation.patch \
-           file://0005-.py-s-python-python3-exclude-tests.patch \
 "
 
-SRC_URI[md5sum] = "69ef4dc5628d5e603e9e4a1b937592f8"
-SRC_URI[sha256sum] = "2eeb8e0dbbcb556fdd4e50bc9f29bc8c66c9b153026f87caa7567bd3139c186a"
+SRC_URI[sha256sum] = "90a25c9767fe749db50f118ddfc92ec71399763d2ecd5ad4f11ff5eea049e60b"
 
 UPSTREAM_CHECK_URI = "https://github.com/balabit/syslog-ng/releases"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb b/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb
index e71a8b4..db4c395 100644
--- a/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "a graphical user interface that allows the user to \
 change the default keyboard of the system"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 SRC_URI = "https://fedorahosted.org/releases/s/y/${BPN}/${BP}.tar.bz2"
 SRC_URI[md5sum] = "c267db0ee7a2131ba418399dc17f9e72"
diff --git a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.9.0.bb b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.9.0.bb
index 0588e9b..25d7200 100644
--- a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.9.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.9.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Tools of dm-thin device-mapper"
 DESCRIPTION = "A suite of tools for manipulating the metadata of the dm-thin device-mapper target."
 HOMEPAGE = "https://github.com/jthornber/thin-provisioning-tools"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 SECTION = "devel"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
diff --git a/meta-openembedded/meta-oe/recipes-support/tokyocabinet/tokyocabinet_1.4.48.bb b/meta-openembedded/meta-oe/recipes-support/tokyocabinet/tokyocabinet_1.4.48.bb
index 9f75cf0..22cbcc0 100644
--- a/meta-openembedded/meta-oe/recipes-support/tokyocabinet/tokyocabinet_1.4.48.bb
+++ b/meta-openembedded/meta-oe/recipes-support/tokyocabinet/tokyocabinet_1.4.48.bb
@@ -12,7 +12,7 @@
 
 HOMEPAGE = "http://fallabs.com/tokyocabinet/"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
 
 SRC_URI = "http://fallabs.com/tokyocabinet/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb b/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb
index efc2795..b9f2605 100644
--- a/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb
@@ -2,7 +2,7 @@
 SECTION = "x11/applications"
 DEPENDS = "vte9"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://main.c;start_line=5;end_line=16;md5=9ae4bf20caf291afa94530026bd15229"
 
 # 0.2 version
diff --git a/meta-openembedded/meta-oe/recipes-support/tree/tree_2.0.2.bb b/meta-openembedded/meta-oe/recipes-support/tree/tree_2.0.2.bb
index ec68db2..26b6074 100644
--- a/meta-openembedded/meta-oe/recipes-support/tree/tree_2.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/tree/tree_2.0.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "A recursive directory listing command"
 HOMEPAGE = "http://mama.indstate.edu/users/ice/tree/"
 SECTION = "console/utils"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=393a5ca445f6965873eca0259a17f833"
 
 SRC_URI = "http://mama.indstate.edu/users/ice/tree/src/${BP}.tgz"
diff --git a/meta-openembedded/meta-oe/recipes-support/uchardet/uchardet_0.0.7.bb b/meta-openembedded/meta-oe/recipes-support/uchardet/uchardet_0.0.7.bb
index 4a595e6..9087c8b 100644
--- a/meta-openembedded/meta-oe/recipes-support/uchardet/uchardet_0.0.7.bb
+++ b/meta-openembedded/meta-oe/recipes-support/uchardet/uchardet_0.0.7.bb
@@ -1,5 +1,5 @@
 SUMMARY = "uchardet is an encoding detector library"
-LICENSE = "MPLv1.1"
+LICENSE = "MPL-1.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6ecda54f6f525388d71d6b3cd92f7474"
 
 inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.9.4.bb b/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.9.4.bb
index ec13cfa..3de5557 100644
--- a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.9.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.9.4.bb
@@ -1,5 +1,5 @@
 SUMMARY = "udisks provides dbus interfaces for disks and storage devices"
-LICENSE = "GPLv2+ & LGPLv2+"
+LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=dd79f6dbbffdbc8e86b086a8f0c0ef43"
 
 DEPENDS = " \
diff --git a/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.4.0.bb b/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.4.0.bb
index e8587ea..b40fa52 100644
--- a/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.4.0.bb
@@ -3,7 +3,7 @@
 BUGTRACKER = "https://github.com/mvp/uhubctl/issues"
 DEPENDS = "libusb1"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRCREV = "014b55ac5d1d7fb46a8f1eefe9fc3b87ea65a75f"
diff --git a/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.8.bb b/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.8.bb
index 18b455c..e0d9d05 100644
--- a/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.8.bb
+++ b/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.8.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "A multilingual user input method library"
 HOMEPAGE = "http://uim.freedesktop.org/"
-LICENSE = "BSD-3-Clause & LGPLv2+"
+LICENSE = "BSD-3-Clause & LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ab2826b41ca0ff4030d38cc39791d1c8"
 SECTION = "inputmethods"
 
@@ -51,6 +51,9 @@
 
 #Because m4 file's find maxdepth=2, so copy the m4 files of the deep depth.
 do_configure:prepend () {
+    rm -rf ${S}/m4.generated/lt*.m4 ${S}/m4.generated/libtool.m4
+    rm -rf ${S}/sigscheme/libgcroots/m4/lt*.m4 ${S}/sigscheme/libgcroots/m4/libtool.m4
+    rm -rf ${S}/sigscheme/m4/lt*.m4 ${S}/sigscheme/m4/libtool.m4
     cp ${S}/sigscheme/m4/* ${S}/m4/
 }
 
diff --git a/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.7.bb b/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.7.bb
index 5e7c603..b91c22e 100644
--- a/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.7.bb
+++ b/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.7.bb
@@ -3,7 +3,7 @@
 for Linux, Mac OSX, and UNIX."
 
 HOMEPAGE = "http://www.unixodbc.org/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d7b37bf80a3df5a65b355433ae36d206"
 
 DEPENDS = "libtool readline"
diff --git a/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.13.bb b/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.13.bb
index 1059763..55a7354 100644
--- a/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.13.bb
+++ b/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.13.bb
@@ -1,5 +1,5 @@
 DESCRIPTION = "UPower is an abstraction for enumerating power devices, listening to device events and querying history and statistics. "
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0de8fbf1d97a140d1d93b9f14dcfbf08"
 
 DEPENDS = "intltool-native libusb1 libgudev glib-2.0 dbus-glib"
diff --git a/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20191128.bb b/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20191128.bb
index 291fad5..351fe44 100644
--- a/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20191128.bb
+++ b/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20191128.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Data files for usbmodeswitch"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 inherit allarch
diff --git a/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.6.0.bb b/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.6.0.bb
index a6282a5..1474ca6 100644
--- a/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.6.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.6.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A mode switching tool for controlling 'flip flop' (multiple device) USB gear"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=091556bd6d0154cd4c2d17a1bfc7380a"
 
 DEPENDS = "libusb1"
diff --git a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
index d06f670..a6d09f6 100644
--- a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "The evemu library and tools are used to describe devices, record data, create devices and replay data from kernel evdev devices. "
 HOMEPAGE = "http://bitmath.org/code/evemu/"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
 
 inherit autotools
diff --git a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
index 12231f6..3b1cf60 100644
--- a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "The frame library and tools are used to handle touch frames, i.e., collections of tracked contacts. Bindings for mtdev and XI2.1."
 HOMEPAGE = "http://bitmath.org/code/frame/"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2f31b266d3440dd7ee50f92cf67d8e6c"
 
 DEPENDS += "mtdev utouch-evemu"
diff --git a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb
index b4322ab..e348e39 100644
--- a/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "mtview is a small X application that shows a graphical view of your MT-enabled hardware. It uses mtdev."
 HOMEPAGE = "http://bitmath.org/code/mtview/"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4c61b8950dc1aab4d2aa7c2ae6b1cfb3"
 
 inherit autotools pkgconfig features_check
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.32.bb b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.32.bb
index 4fc4a2c..a8cf326 100644
--- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.32.bb
+++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.32.bb
@@ -1,6 +1,6 @@
 SUMMARY = "VirtualBox Linux Guest Drivers"
 SECTION = "core"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://${WORKDIR}/${VBOX_NAME}/COPYING;md5=e197d5641bb35b29d46ca8c4bf7f2660"
 
 DEPENDS = "virtual/kernel"
diff --git a/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.1.0.bb b/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.1.0.bb
index c161781..6b35d71 100644
--- a/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.1.0.bb
@@ -4,7 +4,7 @@
 HOMEPAGE = "http://xdelta.org/"
 SECTION = "console/utils"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
 
 SRC_URI = "git://github.com/jmacd/xdelta.git;branch=release3_1_apl;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-support/xdg-user-dirs/xdg-user-dirs_0.17.bb b/meta-openembedded/meta-oe/recipes-support/xdg-user-dirs/xdg-user-dirs_0.17.bb
index 39ba4ec..75d7f27 100644
--- a/meta-openembedded/meta-oe/recipes-support/xdg-user-dirs/xdg-user-dirs_0.17.bb
+++ b/meta-openembedded/meta-oe/recipes-support/xdg-user-dirs/xdg-user-dirs_0.17.bb
@@ -1,5 +1,5 @@
 DESCRIPTION = "xdg-user-dirs is a tool to help manage user directories like the desktop folder and the music folder"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 SRC_URI = "http://user-dirs.freedesktop.org/releases/${BPN}-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.10.bb b/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.10.bb
index becf991..76aea6f 100644
--- a/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.10.bb
@@ -1,6 +1,6 @@
 SUMMARY = "X.Org X cvt"
 HOMEPAGE = "https://linux.die.net/man/1/cvt"
-LICENSE = "MIT-X"
+LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880"
 
 DEPENDS += "pixman-native xorgproto-native libxrandr-native"
diff --git a/meta-openembedded/meta-oe/recipes-support/zbar/zbar_git.bb b/meta-openembedded/meta-oe/recipes-support/zbar/zbar_git.bb
index d956a84..17084f8 100644
--- a/meta-openembedded/meta-oe/recipes-support/zbar/zbar_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/zbar/zbar_git.bb
@@ -6,7 +6,7 @@
 Code 93, Code 39, Codabar, Interleaved 2 of 5, QR Code and SQ Code"
 SECTION = "graphics"
 
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=5e9ee833a2118adc7d8b5ea38e5b1cef"
 
 SRC_URI = "git://github.com/mchehab/zbar.git;branch=master;protocol=https \
diff --git a/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.15.bb b/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.15.bb
index f61848e..e86b3f8 100644
--- a/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.15.bb
+++ b/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.15.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://zile.sourceforge.net/"
 DEPENDS = "ncurses bdwgc"
 
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 SRC_URI = "${GNU_MIRROR}/zile/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-test/bats/bats_1.5.0.bb b/meta-openembedded/meta-oe/recipes-test/bats/bats_1.6.0.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-test/bats/bats_1.5.0.bb
rename to meta-openembedded/meta-oe/recipes-test/bats/bats_1.6.0.bb
index ffbb37c..7ea1aa8 100644
--- a/meta-openembedded/meta-oe/recipes-test/bats/bats_1.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-test/bats/bats_1.6.0.bb
@@ -8,7 +8,7 @@
 
 SRC_URI = "git://github.com/bats-core/bats-core.git;branch=master;protocol=https"
 # v1.4.1
-SRCREV = "99d64eb017abcd6a766dd0d354e625526da69cb3"
+SRCREV = "210acf3a8ed318ddedad3137c15451739beba7d4"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.15.1.bb b/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.15.1.bb
index f4871ee..be81125 100644
--- a/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.15.1.bb
+++ b/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.15.1.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "CppUnit is the C++ port of the famous JUnit framework for unit testing. Test output is in XML for automatic testing and GUI based for supervised tests. "
 HOMEPAGE = "http://www.freedesktop.org/wiki/Software/cppunit"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 SECTION = "libs"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b0e9ef921ff780eb328bdcaeebec3269"
 
diff --git a/meta-openembedded/meta-oe/recipes-test/cukinia/cukinia_0.5.1.bb b/meta-openembedded/meta-oe/recipes-test/cukinia/cukinia_0.6.0.bb
similarity index 86%
rename from meta-openembedded/meta-oe/recipes-test/cukinia/cukinia_0.5.1.bb
rename to meta-openembedded/meta-oe/recipes-test/cukinia/cukinia_0.6.0.bb
index 34dd8c8..229aee6 100644
--- a/meta-openembedded/meta-oe/recipes-test/cukinia/cukinia_0.5.1.bb
+++ b/meta-openembedded/meta-oe/recipes-test/cukinia/cukinia_0.6.0.bb
@@ -2,14 +2,14 @@
 DESCRIPTION = "Cukinia is designed to help Linux-based embedded firmware \
 developers run simple system-level validation tests on their firmware." 
 HOMEPAGE = "https://github.com/savoirfairelinux/cukinia"
-LICENSE = "GPLv3 & Apache-2.0"
+LICENSE = "GPL-3.0-only & Apache-2.0"
 
 LIC_FILES_CHKSUM = "file://LICENSE.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
                     file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
 
 SRC_URI = "git://github.com/savoirfairelinux/cukinia.git;protocol=https;branch=master"
 
-SRCREV = "ea934c5393ad99c37bec3c621a364122720cce02"
+SRCREV = "3fd9db9838ef3de20965aa5f7657c363b679a995"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-test/cunit/cunit_2.1-3.bb b/meta-openembedded/meta-oe/recipes-test/cunit/cunit_2.1-3.bb
index c71744e..9a0c18d 100644
--- a/meta-openembedded/meta-oe/recipes-test/cunit/cunit_2.1-3.bb
+++ b/meta-openembedded/meta-oe/recipes-test/cunit/cunit_2.1-3.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "CUnit is a C framework for unit testing. Test output supports comandline and GUI results reporting"
 HOMEPAGE = "http://cunit.sourceforge.net"
-LICENSE = "LGPL-2.0"
+LICENSE = "LGPL-2.0-only"
 SECTION = "libs"
 LIC_FILES_CHKSUM = "file://COPYING;md5=7734aa853b85d6f935466f081490ddbb"
 
diff --git a/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb b/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb
index 65b54ed..ef1b6e5 100644
--- a/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb
+++ b/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "CxxTest is a unit testing framework for C++ that is similar in spirit to JUnit, CppUnit, and xUnit."
 HOMEPAGE = "http://cxxtest.com/"
 SECTION = "devel"
-LICENSE = "LGPL-2.0"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
 
 SRC_URI = "http://downloads.sourceforge.net/project/cxxtest/cxxtest/${PV}/${BP}.tar.gz"
@@ -10,6 +10,8 @@
 
 inherit setuptools3
 
+PIP_INSTALL_DIST_PATH = "${B}/python/python3/dist"
+
 SETUPTOOLS_SETUP_PATH = "${S}/python"
 
 do_install:append() {
diff --git a/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb b/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb
index eb6a34f..daf9dc3 100644
--- a/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb
+++ b/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://people.freedesktop.org/~whot/evtest/"
 AUTHOR = "Vojtech Pavlik <vojtech@suse.cz>"
 SECTION = "console/utils"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 DEPENDS = "libxml2"
diff --git a/meta-openembedded/meta-oe/recipes-test/fbtest/fb-test_1.1.0.bb b/meta-openembedded/meta-oe/recipes-test/fbtest/fb-test_1.1.0.bb
index 14ab41b..6082ea2 100644
--- a/meta-openembedded/meta-oe/recipes-test/fbtest/fb-test_1.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-test/fbtest/fb-test_1.1.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Test suite for Linux framebuffer"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
 
 SRCREV = "063ec650960c2d79ac51f5c5f026cb05343a33e2"
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0002-Include-poll.h-instead-of-deprecated-sys-poll.h.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0002-Include-poll.h-instead-of-deprecated-sys-poll.h.patch
deleted file mode 100644
index 8237933..0000000
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0002-Include-poll.h-instead-of-deprecated-sys-poll.h.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 1575b5ce3ecb8709806908061f689315553b40c7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 6 Jun 2017 07:25:09 -0700
-Subject: [PATCH 2/6] Include poll.h instead of deprecated sys/poll.h
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/lib/src/fwts_ipmi.c   | 3 ++-
- src/lib/src/fwts_pipeio.c | 2 +-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/lib/src/fwts_ipmi.c b/src/lib/src/fwts_ipmi.c
-index ca7c55bb..0b16bec3 100644
---- a/src/lib/src/fwts_ipmi.c
-+++ b/src/lib/src/fwts_ipmi.c
-@@ -18,10 +18,11 @@
-  *
-  */
- 
-+#include <poll.h>
-+
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
--#include <sys/poll.h>
- #include <sys/ioctl.h>
- #include <linux/ipmi.h>
- 
-diff --git a/src/lib/src/fwts_pipeio.c b/src/lib/src/fwts_pipeio.c
-index 716297c4..37752297 100644
---- a/src/lib/src/fwts_pipeio.c
-+++ b/src/lib/src/fwts_pipeio.c
-@@ -30,9 +30,9 @@
- #include <stdlib.h>
- #include <string.h>
- #include <paths.h>
-+#include <poll.h>
- 
- #include <sys/param.h>
--#include <sys/poll.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <errno.h>
--- 
-2.25.1
-
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 5ccd461..6dc45ba 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
@@ -10,21 +10,17 @@
  src/utilities/Makefile.am | 2 +-
  3 files changed, 3 insertions(+), 3 deletions(-)
 
-diff --git a/src/Makefile.am b/src/Makefile.am
-index f8066af..6b979f8 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
-@@ -12,7 +12,7 @@ AM_CPPFLAGS = \
- 	-I$(top_srcdir)/src/acpica/source/compiler	\
+@@ -13,7 +13,7 @@ AM_CPPFLAGS = \
  	-I$(top_srcdir)/efi_runtime			\
+ 	-I$(top_srcdir)/smccc_test			\
  	-pthread `pkg-config --cflags glib-2.0 gio-2.0` \
 -	-Wall -Werror -Wextra				\
 +	-Wall -Wextra					\
  	-Wno-address-of-packed-member			\
  	-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 55c52b4..50efa97 100644
 --- a/src/lib/src/Makefile.am
 +++ b/src/lib/src/Makefile.am
 @@ -25,7 +25,7 @@ AM_CPPFLAGS = \
@@ -36,8 +32,6 @@
  	-Wno-address-of-packed-member
  
  pkglib_LTLIBRARIES = libfwts.la
-diff --git a/src/utilities/Makefile.am b/src/utilities/Makefile.am
-index a7d9b9c..e1bf141 100644
 --- a/src/utilities/Makefile.am
 +++ b/src/utilities/Makefile.am
 @@ -16,7 +16,7 @@
@@ -49,6 +43,3 @@
  	-I$(srcdir)/../lib/include
  
  bin_PROGRAMS = kernelscan
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0004-Define-__SWORD_TYPE-if-not-defined-by-libc.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0004-Define-__SWORD_TYPE-if-not-defined-by-libc.patch
index 83d1cbb..0c78e73 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0004-Define-__SWORD_TYPE-if-not-defined-by-libc.patch
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0004-Define-__SWORD_TYPE-if-not-defined-by-libc.patch
@@ -13,8 +13,6 @@
  src/lib/src/fwts_uefi.c | 4 ++++
  1 file changed, 4 insertions(+)
 
-diff --git a/src/lib/src/fwts_uefi.c b/src/lib/src/fwts_uefi.c
-index 138f1164..13d9e36c 100644
 --- a/src/lib/src/fwts_uefi.c
 +++ b/src/lib/src/fwts_uefi.c
 @@ -63,6 +63,10 @@ typedef struct {
@@ -28,6 +26,3 @@
  /* File system magic numbers */
  #define PSTOREFS_MAGIC          ((__SWORD_TYPE)0x6165676C)
  #define EFIVARFS_MAGIC          ((__SWORD_TYPE)0xde5e81e4)
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0005-Undefine-PAGE_SIZE.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0005-Undefine-PAGE_SIZE.patch
index 319e085..df768d1 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0005-Undefine-PAGE_SIZE.patch
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0005-Undefine-PAGE_SIZE.patch
@@ -13,11 +13,9 @@
  src/lib/src/fwts_acpi_tables.c | 1 +
  1 file changed, 1 insertion(+)
 
-diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c
-index dc42a8bd..4fa1246a 100644
 --- a/src/lib/src/fwts_acpi_tables.c
 +++ b/src/lib/src/fwts_acpi_tables.c
-@@ -42,6 +42,7 @@
+@@ -40,6 +40,7 @@
  #define BIOS_START	(0x000e0000)		/* Start of BIOS memory */
  #define BIOS_END  	(0x000fffff)		/* End of BIOS memory */
  #define BIOS_LENGTH	(BIOS_END - BIOS_START)	/* Length of BIOS memory */
@@ -25,6 +23,3 @@
  #define PAGE_SIZE	(4096)
  
  static fwts_acpi_table_info	tables[ACPI_MAX_TABLES];
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0006-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0006-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch
index eb8b0b7..b5c265e 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0006-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0006-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch
@@ -14,11 +14,9 @@
  src/lib/src/fwts_smbios.c      | 2 +-
  3 files changed, 4 insertions(+), 4 deletions(-)
 
-diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c
-index 4fa1246a..7ef197cd 100644
 --- a/src/lib/src/fwts_acpi_tables.c
 +++ b/src/lib/src/fwts_acpi_tables.c
-@@ -173,7 +173,7 @@ static fwts_acpi_table_rsdp *fwts_acpi_get_rsdp(fwts_framework *fw, void *addr,
+@@ -171,7 +171,7 @@ static fwts_acpi_table_rsdp *fwts_acpi_g
  		return NULL;
  	}
  
@@ -27,7 +25,7 @@
  		return NULL;
  
  	if (fwts_safe_memcpy(rsdp, mem, sizeof(fwts_acpi_table_rsdp)) != FWTS_OK) {
-@@ -486,7 +486,7 @@ static int fwts_acpi_load_tables_from_firmware(fwts_framework *fw)
+@@ -484,7 +484,7 @@ static int fwts_acpi_load_tables_from_fi
  	if ((rsdp = fwts_acpi_get_rsdp(fw, rsdp_addr, &rsdp_len)) == NULL)
  		return FWTS_ERROR;
  
@@ -36,11 +34,9 @@
  
  	/* Load any tables from XSDT if it's valid */
  	if (rsdp->xsdt_address) {
-diff --git a/src/lib/src/fwts_mmap.c b/src/lib/src/fwts_mmap.c
-index 2f2514f1..fbd946f4 100644
 --- a/src/lib/src/fwts_mmap.c
 +++ b/src/lib/src/fwts_mmap.c
-@@ -82,7 +82,7 @@ int fwts_munmap(void *mem, const size_t size)
+@@ -82,7 +82,7 @@ int fwts_munmap(void *mem, const size_t
  	off_t offset;
  
  	page_size = fwts_page_size();
@@ -49,11 +45,9 @@
  
  	if (munmap((void *)((uint8_t *)mem - offset), size + offset) < 0)
  		return FWTS_ERROR;
-diff --git a/src/lib/src/fwts_smbios.c b/src/lib/src/fwts_smbios.c
-index 8da572e9..04315bd3 100644
 --- a/src/lib/src/fwts_smbios.c
 +++ b/src/lib/src/fwts_smbios.c
-@@ -78,7 +78,7 @@ static void *fwts_smbios_find_entry_uefi(
+@@ -78,7 +78,7 @@ static void *fwts_smbios_find_entry_uefi
  	if ((addr = fwts_scan_efi_systab(smbios)) != NULL) {
  		fwts_smbios_entry *mapped_entry;
  
@@ -62,6 +56,3 @@
  			if (fwts_safe_memcpy(entry, mapped_entry, size) == FWTS_OK) {
  				(void)fwts_munmap(mapped_entry, size);
  				*type  = FWTS_SMBIOS;
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts_21.06.00.bb b/meta-openembedded/meta-oe/recipes-test/fwts/fwts_22.01.00.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-test/fwts/fwts_21.06.00.bb
rename to meta-openembedded/meta-oe/recipes-test/fwts/fwts_22.01.00.bb
index 0480adb..1f2d3e0 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts_21.06.00.bb
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts_22.01.00.bb
@@ -2,18 +2,17 @@
 DESCRIPTION = "The tool fwts comprises of over fifty tests that are designed to exercise and test different aspects of a machine's firmware. Many of these tests need super user access to read BIOS data and ACPI tables, so the tool requires running with super user privileges (e.g. with sudo)."
 HOMEPAGE = "https://wiki.ubuntu.com/Kernel/Reference/fwts"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://src/main.c;beginline=1;endline=16;md5=31da590f3e9f3bd34dcdb9e4db568519"
 
 SRC_URI = "http://fwts.ubuntu.com/release/fwts-V${PV}.tar.gz;subdir=${BP} \
            file://0001-Add-correct-printf-qualifier-for-off_t.patch \
-           file://0002-Include-poll.h-instead-of-deprecated-sys-poll.h.patch \
            file://0003-Remove-Werror-from-build.patch \
            file://0004-Define-__SWORD_TYPE-if-not-defined-by-libc.patch \
            file://0005-Undefine-PAGE_SIZE.patch \
            file://0006-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch \
            "
-SRC_URI[sha256sum] = "ca43439707976f6664fe3f6eb7f356a51ac7d7f8a4e246ef4d1b16305e066909"
+SRC_URI[sha256sum] = "45045a095d9933d9ff39712372ab1f3078ca8e29c007b3f97b810cdb8c27b5c3"
 
 COMPATIBLE_HOST = "(i.86|x86_64|aarch64|powerpc64).*-linux"
 
@@ -24,6 +23,10 @@
 
 LDFLAGS:append:libc-musl = " -lexecinfo"
 
+# We end up linker barfing with undefined symbols on ppc64 but not on other arches
+# surprisingly
+ASNEEDED:powerpc64le = ""
+
 FILES:${PN} += "${libdir}/fwts/lib*${SOLIBS}"
 FILES:${PN}-dev += "${libdir}/fwts/lib*${SOLIBSDEV} ${libdir}/fwts/lib*.la"
 FILES:${PN}-staticdev += "${libdir}/fwts/lib*a"
diff --git a/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb b/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
index 18ef371..fc21e61 100644
--- a/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
+++ b/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Utilities for testing Power Management"
 HOMEPAGE = "https://wiki.linaro.org/WorkingGroups/PowerManagement/Resources/TestSuite/PmQa"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 PV = "0.5.2"
diff --git a/meta-openembedded/meta-perl/conf/layer.conf b/meta-openembedded/meta-perl/conf/layer.conf
index 4f075e9..3cb9571 100644
--- a/meta-openembedded/meta-perl/conf/layer.conf
+++ b/meta-openembedded/meta-perl/conf/layer.conf
@@ -7,7 +7,7 @@
 
 BBFILE_COLLECTIONS += "perl-layer"
 BBFILE_PATTERN_perl-layer := "^${LAYERDIR}/"
-BBFILE_PRIORITY_perl-layer = "6"
+BBFILE_PRIORITY_perl-layer = "5"
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
diff --git a/meta-openembedded/meta-perl/recipes-extended/logcheck/logcheck_1.3.23.bb b/meta-openembedded/meta-perl/recipes-extended/logcheck/logcheck_1.3.23.bb
index 38ef0f8..b40d52a 100644
--- a/meta-openembedded/meta-perl/recipes-extended/logcheck/logcheck_1.3.23.bb
+++ b/meta-openembedded/meta-perl/recipes-extended/logcheck/logcheck_1.3.23.bb
@@ -8,7 +8,7 @@
 expression files contain in the database."
 SECTION = "Applications/System"
 HOMEPAGE = "http://logcheck.org/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c93c0550bd3173f4504b2cbd8991e50b"
 
 SRC_URI = "${DEBIAN_MIRROR}/main/l/${BPN}/${BPN}_${PV}.tar.xz \
diff --git a/meta-openembedded/meta-perl/recipes-extended/mime-construct/mime-construct_1.11.bb b/meta-openembedded/meta-perl/recipes-extended/mime-construct/mime-construct_1.11.bb
index 2919904..a5d2826 100644
--- a/meta-openembedded/meta-perl/recipes-extended/mime-construct/mime-construct_1.11.bb
+++ b/meta-openembedded/meta-perl/recipes-extended/mime-construct/mime-construct_1.11.bb
@@ -5,7 +5,7 @@
                like programs."
 HOMEPAGE = "http://search.cpan.org/~rosch/mime-construct/mime-construct"
 SECTION = "mail"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=5e2e5da619ac8ef8c84767ccc4656e96"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/R/RO/ROSCH/mime-construct-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.118.bb b/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.118.bb
index 7554014..3ac2211 100644
--- a/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.118.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/adduser/adduser_3.118.bb
@@ -3,7 +3,7 @@
 HOMEPAGE = "https://salsa.debian.org/debian/adduser"
 SECTION = "base/utils"
 
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=caed49ab166f22ef31bf1127f558d0ef"
 
 SRC_URI = "https://launchpad.net/debian/+archive/primary/+sourcefiles/adduser/${PV}/${BPN}_${PV}.tar.xz \
diff --git a/meta-openembedded/meta-perl/recipes-perl/libalgorithm/libalgorithm-diff-perl_1.15.bb b/meta-openembedded/meta-perl/recipes-perl/libalgorithm/libalgorithm-diff-perl_1.15.bb
index 4155fad..d87df09 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libalgorithm/libalgorithm-diff-perl_1.15.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libalgorithm/libalgorithm-diff-perl_1.15.bb
@@ -9,7 +9,7 @@
 SECTION = "libs"
 HOMEPAGE = "http://search.cpan.org/~nedkonz/Algorithm-Diff/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://lib/Algorithm/Diff.pm;beginline=406;endline=409;md5=d393b8ad3b8994b9d0ae9299b8a8a1ee"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/N/NE/NEDKONZ/Algorithm-Diff-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libauthen/libauthen-sasl-perl_2.16.bb b/meta-openembedded/meta-perl/recipes-perl/libauthen/libauthen-sasl-perl_2.16.bb
index 4212dd2..8545eb5 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libauthen/libauthen-sasl-perl_2.16.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libauthen/libauthen-sasl-perl_2.16.bb
@@ -5,7 +5,7 @@
 HOMEPAGE = "http://search.cpan.org/dist/Authen-SASL/"
 SECTION = "libs"
 
-LICENSE = "Artistic-1.0|GPL-1.0+"
+LICENSE = "Artistic-1.0|GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://lib/Authen/SASL/Perl.pm;beginline=1;endline=3;md5=17123315bbcda19f484c07227594a609"
 
 DEPENDS = "perl"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcapture/libcapture-tiny-perl_0.48.bb b/meta-openembedded/meta-perl/recipes-perl/libcapture/libcapture-tiny-perl_0.48.bb
index 3585131..a51d327 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libcapture/libcapture-tiny-perl_0.48.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libcapture/libcapture-tiny-perl_0.48.bb
@@ -10,7 +10,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~dagolden/Capture-Tiny/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=37a4918a30ace24395020e5b8c03b83f"
 
 SRCNAME = "Capture-Tiny"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcgi/libcgi-perl_4.54.bb b/meta-openembedded/meta-perl/recipes-perl/libcgi/libcgi-perl_4.54.bb
index bca20f6..4c98640 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libcgi/libcgi-perl_4.54.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libcgi/libcgi-perl_4.54.bb
@@ -4,7 +4,7 @@
 and manipulation, and processing and preparing HTTP headers."
 HOMEPAGE = "http://search.cpan.org/~leejo/CGI-4.28/lib/CGI.pod"
 SECTION = "libs"
-LICENSE = "Artistic-2.0 | GPL-2.0"
+LICENSE = "Artistic-2.0 | GPL-2.0-only"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=415fc49abed2728f9480cd32c8d67beb"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libclass/libclass-method-modifiers-perl_2.13.bb b/meta-openembedded/meta-perl/recipes-perl/libclass/libclass-method-modifiers-perl_2.13.bb
index dc62f58..4cd6343 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libclass/libclass-method-modifiers-perl_2.13.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libclass/libclass-method-modifiers-perl_2.13.bb
@@ -6,7 +6,7 @@
 
 HOMEPAGE = "https://github.com/moose/Class-Method-Modifiers/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=16fd0ec7b73c0e158426f753943f1058"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/E/ET/ETHER/Class-Method-Modifiers-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libconfig/libconfig-autoconf-perl_0.319.bb b/meta-openembedded/meta-perl/recipes-perl/libconfig/libconfig-autoconf-perl_0.319.bb
index ea9dfed..5db0bb4 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libconfig/libconfig-autoconf-perl_0.319.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libconfig/libconfig-autoconf-perl_0.319.bb
@@ -9,7 +9,7 @@
 HOMEPAGE=       "https://metacpan.org/release/Config-AutoConf"
 
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Artistic-1.0;md5=cda03bbdc3c1951996392b872397b798 \
 file://${COMMON_LICENSE_DIR}/GPL-1.0-or-later;md5=30c0b8a5048cc2f4be5ff15ef0d8cf61"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-guess-perl_0.15.bb b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-guess-perl_0.15.bb
index 6e1ea54..3f004bb 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-guess-perl_0.15.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-guess-perl_0.15.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Guess OpenSSL include path"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ea914cc2718e8d53bd7744d96e66c03c"
 
 SRC_URI = "http://www.cpan.org/modules/by-module/Crypt/Crypt-OpenSSL-Guess-${PV}.tar.gz "
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-random-perl_0.15.bb b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-random-perl_0.15.bb
index 5b6e9b4..9bfb631 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-random-perl_0.15.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-random-perl_0.15.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Crypt::OpenSSL::Random - OpenSSL/LibreSSL pseudo-random number generator access"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=089c18d635ae273e1727ec385e64063b"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.32.bb b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.32.bb
index 8dd2574..fd92c8a 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.32.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libcrypt/libcrypt-openssl-rsa-perl_0.32.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Crypt Openssl RSA cpan module"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a67ceecc5d9a91a5a0d003ba50c26346"
 
 SRC_URI = "http://www.cpan.org/modules/by-module/Crypt/Crypt-OpenSSL-RSA-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-perl/recipes-perl/libcurses/libcurses-perl_1.38.bb b/meta-openembedded/meta-perl/recipes-perl/libcurses/libcurses-perl_1.38.bb
index a398382..8c56c20 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libcurses/libcurses-perl_1.38.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libcurses/libcurses-perl_1.38.bb
@@ -2,7 +2,7 @@
 the curses library."
 
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 LIC_FILES_CHKSUM = "file://README;beginline=26;endline=30;md5=0b37356c5e9e28080a3422d82af8af09"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.68.bb b/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.68.bb
index c328696..c7baeab 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.68.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libdb/libdbd-sqlite-perl_1.68.bb
@@ -7,7 +7,7 @@
 HOMEPAGE = "https://metacpan.org/release/DBD-SQLite"
 
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1726e2117494ba3e13e1c3d93f795360"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/I/IS/ISHIGAKI/DBD-SQLite-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-perl/recipes-perl/libdevel/libdevel-globaldestruction-perl_0.14.bb b/meta-openembedded/meta-perl/recipes-perl/libdevel/libdevel-globaldestruction-perl_0.14.bb
index 9f9950e..1dcecd0 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libdevel/libdevel-globaldestruction-perl_0.14.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libdevel/libdevel-globaldestruction-perl_0.14.bb
@@ -6,7 +6,7 @@
 
 HOMEPAGE = "https://metacpan.org/pod/Devel-GlobalDestruction/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=53;endline=55;md5=935dadb9423774f53548e5cd5055d41a"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/H/HA/HAARG/Devel-GlobalDestruction-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-hmac-perl_1.03.bb b/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-hmac-perl_1.03.bb
index 10b4d6e..51a2ad3 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-hmac-perl_1.03.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-hmac-perl_1.03.bb
@@ -3,7 +3,7 @@
 HOMEPAGE = "http://search.cpan.org/~gaas/Digest-HMAC-1.03/"
 SECTION = "libs"
 
-LICENSE = "Artistic-1.0|GPLv1+"
+LICENSE = "Artistic-1.0|GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=13;endline=17;md5=da980cdc026faa065e5d5004115334e6"
 
 RDEPENDS:${PN} = "libdigest-sha1-perl perl-module-extutils-makemaker perl-module-digest-md5"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-sha1-perl_2.13.bb b/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-sha1-perl_2.13.bb
index 91c5f08..cd63675 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-sha1-perl_2.13.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libdigest/libdigest-sha1-perl_2.13.bb
@@ -3,7 +3,7 @@
 HOMEPAGE = "http://search.cpan.org/~gaas/Digest-SHA1-2.13/"
 SECTION = "libs"
 
-LICENSE = "Artistic-1.0|GPLv1+"
+LICENSE = "Artistic-1.0|GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=10;endline=14;md5=ff5867ebb4bc1103a7a416aef2fce00a"
 
 SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-locale-perl_1.05.bb b/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-locale-perl_1.05.bb
index 700974b..ae193db 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-locale-perl_1.05.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-locale-perl_1.05.bb
@@ -2,7 +2,7 @@
 AUTHOR = "Gisle Aas <gisle@activestate.com>"
 HOMEPAGE = "https://metacpan.org/module/Encode::Locale"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;md5=14e8006c2134045725fd81292a323d24"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/G/GA/GAAS/Encode-Locale-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.16.bb b/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.16.bb
index 2286ee5..8d239e7 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.16.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libencode/libencode-perl_3.16.bb
@@ -11,7 +11,7 @@
 AUTHOR = "Dan Kogai <dankogai+cpan@gmail.com>"
 HOMEPAGE = "https://metacpan.org/release/Encode"
 SECTION = "lib"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://META.json;beginline=8;endline=10;md5=b12e3be1e17a7e99ca4f429ff32c28b5"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/D/DA/DANKOGAI/Encode-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libenv/libenv-perl_1.04.bb b/meta-openembedded/meta-perl/recipes-perl/libenv/libenv-perl_1.04.bb
index dd8e115..79fff9d 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libenv/libenv-perl_1.04.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libenv/libenv-perl_1.04.bb
@@ -5,7 +5,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~flora/Env/"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=76c1cbf18db56b3340d91cb947943bd3"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-config-perl_0.008.bb b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-config-perl_0.008.bb
index bc54634..a58d965 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-config-perl_0.008.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-config-perl_0.008.bb
@@ -4,7 +4,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~leont/ExtUtils-Config/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1932ab4d8b84c25fd7967aa18088e57e"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/ExtUtils-Config-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.23.bb b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.23.bb
index 5e869c8..fd6347b 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.23.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-cppguess-perl_0.23.bb
@@ -8,7 +8,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~smueller/ExtUtils-CppGuess/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 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"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-helpers-perl_0.026.bb b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-helpers-perl_0.026.bb
index 3538e11..8534822 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-helpers-perl_0.026.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-helpers-perl_0.026.bb
@@ -4,7 +4,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~leont/ExtUtils-Helpers/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=223c04045664f72c3a6556462612bddd"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/ExtUtils-Helpers-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-installpaths-perl_0.012.bb b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-installpaths-perl_0.012.bb
index de3a745..07dab4e 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-installpaths-perl_0.012.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-installpaths-perl_0.012.bb
@@ -5,7 +5,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~leont/ExtUtils-InstallPaths/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b6fa54d873ce6bcf4809ea88bdf97769"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/ExtUtils-InstallPaths-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-parsexs-perl_3.35.bb b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-parsexs-perl_3.35.bb
index e603490..43b5b60 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-parsexs-perl_3.35.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libextutils/libextutils-parsexs-perl_3.35.bb
@@ -9,7 +9,7 @@
 
 HOMEPAGE = "http://metapan.org/release/ExtUtils-ParseXS/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=120;endline=129;md5=eb858f0e3b1b0bee0c05b86a474ae2b6"
 
 SRCNAME = "ExtUtils-ParseXS"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurp-perl_9999.19.bb b/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurp-perl_9999.19.bb
index 945b4c1..1012ae9 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurp-perl_9999.19.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurp-perl_9999.19.bb
@@ -4,7 +4,7 @@
   reading the list of filenames in a directory. \
 "
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 LIC_FILES_CHKSUM = "file://README;beginline=37;endline=41;md5=255fbd5f98a90d51d9908d31271ae4d4"
 SRC_URI = "http://search.cpan.org/CPAN/authors/id/U/UR/URI/File-Slurp-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurper-perl_0.013.bb b/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurper-perl_0.013.bb
index c7e5c56..3fa4fb1 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurper-perl_0.013.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libfile/libfile-slurper-perl_0.013.bb
@@ -4,7 +4,7 @@
 errors, write functions don't return any meaningful value."
 
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 HOMEPAGE=       "https://metacpan.org/release/File-Slurper"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-parser-perl_3.72.bb b/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-parser-perl_3.72.bb
index 38ea9ce..216d7c4 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-parser-perl_3.72.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-parser-perl_3.72.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "This package contains the Parser.pm module with friends."
 HOMEPAGE = "https://metacpan.org/release/HTML-Parser"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 LIC_FILES_CHKSUM = "file://README;md5=b0459e4426b94753b9a9b8a15f1223b8"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tagset-perl_3.20.bb b/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tagset-perl_3.20.bb
index b506589..c871b97 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tagset-perl_3.20.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tagset-perl_3.20.bb
@@ -3,7 +3,7 @@
 kinds of HTML parsing operations."
 HOMEPAGE = "https://metacpan.org/release/HTML-Tagset"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 LIC_FILES_CHKSUM = "file://README;beginline=62;endline=66;md5=aa91eed6adfe182d2af676954f06a7c9"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tree-perl_5.03.bb b/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tree-perl_5.03.bb
index e3c8663..d2c151b 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tree-perl_5.03.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libhtml/libhtml-tree-perl_5.03.bb
@@ -8,7 +8,7 @@
 
 HOMEPAGE = "http://www.cpan.org/authors/id/C/CJ/CJM/HTML-Tree-${PV}.readme"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3eb57a8958cae73cb65e7d0c26339242"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/C/CJ/CJM/HTML-Tree-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-perl/recipes-perl/libimport/libimport-into-perl_1.002004.bb b/meta-openembedded/meta-perl/recipes-perl/libimport/libimport-into-perl_1.002004.bb
index a0be629..e88d60d 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libimport/libimport-into-perl_1.002004.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libimport/libimport-into-perl_1.002004.bb
@@ -13,7 +13,7 @@
 
 HOMEPAGE = "https://metacpan.org/pod/Import-Into/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=209;endline=223;md5=3cf363f1e405dea6db2c6cd0ef23680c"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/E/ET/ETHER/Import-Into-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-bzip2-perl_2.096.bb b/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-bzip2-perl_2.096.bb
index 272f7c5..ef69987 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-bzip2-perl_2.096.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-bzip2-perl_2.096.bb
@@ -2,7 +2,7 @@
 compression/uncompression functions from the bzip2 compression library."
 
 SECTION = "libs"
-LICENSE = "Artisticv1 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 MAINTAINER=	"Poky <poky@yoctoproject.org>"
 HOMEPAGE=	"https://metacpan.org/release/Compress-Raw-Bzip2"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-lzma-perl_2.096.bb b/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-lzma-perl_2.096.bb
index 3865589..04295cd 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-lzma-perl_2.096.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-lzma-perl_2.096.bb
@@ -2,7 +2,7 @@
 compression/uncompression functions from the lzma compression library."
 
 SECTION = "libs"
-LICENSE = "Artisticv1 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 MAINTAINER=	"Poky <poky@yoctoproject.org>"
 HOMEPAGE=	"https://metacpan.org/release/Compress-Raw-Lzma"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-zlib-perl_2.096.bb b/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-zlib-perl_2.096.bb
index 8b2ab14..81c370d 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-zlib-perl_2.096.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libio/compress-raw-zlib-perl_2.096.bb
@@ -2,7 +2,7 @@
 compression library (see "AUTHOR" for details about where to get *zlib*)."
 
 SECTION = "libs"
-LICENSE = "Artisticv1 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 MAINTAINER=	"Poky <poky@yoctoproject.org>"
 HOMEPAGE=	"https://metacpan.org/release/Compress-Raw-Zlib"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libio/io-compress-lzma-perl_2.096.bb b/meta-openembedded/meta-perl/recipes-perl/libio/libio-compress-lzma-perl_2.096.bb
similarity index 88%
rename from meta-openembedded/meta-perl/recipes-perl/libio/io-compress-lzma-perl_2.096.bb
rename to meta-openembedded/meta-perl/recipes-perl/libio/libio-compress-lzma-perl_2.096.bb
index a5c7735..15952f1 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libio/io-compress-lzma-perl_2.096.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libio/libio-compress-lzma-perl_2.096.bb
@@ -2,7 +2,7 @@
 data to files or buffer."
 
 SECTION = "libs"
-LICENSE = "Artisticv1 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 MAINTAINER=	"Poky <poky@yoctoproject.org>"
 HOMEPAGE=	"https://metacpan.org/release/IO-Compress-Lzma"
@@ -15,10 +15,10 @@
 SRC_URI[md5sum] = "6c1b70740605b8073e4fbb5ba1e7bbdb"
 SRC_URI[sha256sum] = "2f29125f19bb41d29c4b5a2467e3560b7bce5d428176a046b7c8a51609dce6e8"
 RDEPENDS:${PN} += "compress-raw-lzma-perl"
-RDEPENDS:${PN} += "io-compress-perl"
+RDEPENDS:${PN} += "libio-compress-perl"
 
 S = "${WORKDIR}/IO-Compress-Lzma-${PV}"
 
-inherit cpan allarch
+inherit cpan
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libio/io-compress-perl_2.096.bb b/meta-openembedded/meta-perl/recipes-perl/libio/libio-compress-perl_2.096.bb
similarity index 93%
rename from meta-openembedded/meta-perl/recipes-perl/libio/io-compress-perl_2.096.bb
rename to meta-openembedded/meta-perl/recipes-perl/libio/libio-compress-perl_2.096.bb
index 01580db..c00d894 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libio/io-compress-perl_2.096.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libio/libio-compress-perl_2.096.bb
@@ -2,7 +2,7 @@
 purpose is to be sub-classed by IO::Compress modules."
 
 SECTION = "libs"
-LICENSE = "Artisticv1 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 MAINTAINER=	"Poky <poky@yoctoproject.org>"
 HOMEPAGE=	"https://metacpan.org/release/IO-Compress"
@@ -19,6 +19,6 @@
 
 S = "${WORKDIR}/IO-Compress-${PV}"
 
-inherit cpan allarch
+inherit cpan
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_2.074.bb b/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_2.074.bb
index 0be1497..1d04f00 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_2.074.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libio/libio-socket-ssl-perl_2.074.bb
@@ -9,7 +9,7 @@
 HOMEPAGE = "http://search.cpan.org/dist/IO-Socket-SSL/"
 SECTION = "libs"
 
-LICENSE = "Artistic-1.0|GPLv1+"
+LICENSE = "Artistic-1.0|GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://META.yml;beginline=12;endline=12;md5=963ce28228347875ace682de56eef8e8"
 
 RDEPENDS:${PN} += "\
diff --git a/meta-openembedded/meta-perl/recipes-perl/libio/libio-stringy-perl_2.111.bb b/meta-openembedded/meta-perl/recipes-perl/libio/libio-stringy-perl_2.111.bb
index 3f5a278..b745939 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libio/libio-stringy-perl_2.111.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libio/libio-stringy-perl_2.111.bb
@@ -5,7 +5,7 @@
 
 HOMEPAGE = "http://www.zeegee.com/products/IO-stringy/"
 SECTION = "devel"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=01406e4ff2e60d88d42ef1caebdd0011"
 
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libipc/libipc-signal-perl_1.00.bb b/meta-openembedded/meta-perl/recipes-perl/libipc/libipc-signal-perl_1.00.bb
index b518164..389be2c 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libipc/libipc-signal-perl_1.00.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libipc/libipc-signal-perl_1.00.bb
@@ -5,7 +5,7 @@
 HOMEPAGE = "http://search.cpan.org/~rosch/IPC-Signal-1.00/"
 SECTION = "libs"
 
-LICENSE = "Artistic-1.0|GPLv1+"
+LICENSE = "Artistic-1.0|GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=16;endline=18;md5=f36550f59a0ae5e6e3b0be6a4da60d26"
 
 S = "${WORKDIR}/IPC-Signal-${PV}"
diff --git a/meta-openembedded/meta-perl/recipes-perl/liblocale/liblocale-gettext-perl_1.07.bb b/meta-openembedded/meta-perl/recipes-perl/liblocale/liblocale-gettext-perl_1.07.bb
index fdc72a2..1e4b563 100644
--- a/meta-openembedded/meta-perl/recipes-perl/liblocale/liblocale-gettext-perl_1.07.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/liblocale/liblocale-gettext-perl_1.07.bb
@@ -6,7 +6,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~pvandry/Locale-gettext-${PV}/"
 
-LICENSE = "Artistic-1.0 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;md5=d028249c2d08dca6ca6c5bb43b56d926"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/P/PV/PVANDRY/Locale-gettext-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-charset-perl_1.012.2.bb b/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-charset-perl_1.012.2.bb
index 79b4681..20557a3 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-charset-perl_1.012.2.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-charset-perl_1.012.2.bb
@@ -4,7 +4,7 @@
 HOMEPAGE = "http://search.cpan.org/~nezumi/MIME-Charset-${PV}/"
 SECTION = "libs"
 
-LICENSE = "Artistic-1.0 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/N/NE/NEZUMI/MIME-Charset-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-types-perl_2.17.bb b/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-types-perl_2.17.bb
index 18fa46f..2c06728 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-types-perl_2.17.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libmime/libmime-types-perl_2.17.bb
@@ -8,7 +8,7 @@
 HOMEPAGE = "http://search.cpan.org/~markov/MIME-Types-${PV}"
 SECTION = "libraries"
 
-LICENSE = "Artistic-1.0|GPLv1+"
+LICENSE = "Artistic-1.0|GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://META.yml;beginline=11;endline=11;md5=963ce28228347875ace682de56eef8e8"
 
 SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MARKOV/MIME-Types-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-build-tiny-perl_0.039.bb b/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-build-tiny-perl_0.039.bb
index ebf2a5b..ff3f4d6 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-build-tiny-perl_0.039.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-build-tiny-perl_0.039.bb
@@ -9,7 +9,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~leont/Module-Build-Tiny/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=57b8100f0b648cd37fbc3725fe3c111a"
 
 DEPENDS = "libextutils-config-perl-native libextutils-helpers-perl-native libextutils-installpaths-perl-native"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb b/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb
index 1d257ce..6f3d5ba 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb
@@ -13,7 +13,7 @@
 AUTHOR = "Simon Wistow <simon@thegestalt.org>"
 HOMEPAGE = "https://github.com/simonwistow/Module-Pluggable"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=322;endline=325;md5=086450ce010f6fda25db0b38fcc41086"
 
 SRCNAME = "Module-Pluggable"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-runtime-perl_0.016.bb b/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-runtime-perl_0.016.bb
index bb950b8..205df68 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-runtime-perl_0.016.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-runtime-perl_0.016.bb
@@ -16,7 +16,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~zefram/Module-Runtime/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=36;endline=44;md5=9416434672a57853d6181f3da9094963"
 
 SRCNAME = "Module-Runtime"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.005004.bb b/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.005004.bb
index 596d448..5480b90 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.005004.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libmoo/libmoo-perl_2.005004.bb
@@ -6,7 +6,7 @@
 
 HOMEPAGE = "http://metapan.org/release/Moo/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=742;endline=787;md5=0e7ee44f5ce5e9b84619cd198caad1d6"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/H/HA/HAARG/Moo-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ldap-perl_0.68.bb b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ldap-perl_0.68.bb
index c82190a..293f421 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ldap-perl_0.68.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ldap-perl_0.68.bb
@@ -6,7 +6,7 @@
 
 SECTION = "libs"
 
-LICENSE = "Artistic-1.0|GPLv1+"
+LICENSE = "Artistic-1.0|GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=3;endline=5;md5=4d6588c2fa0d38ae162f6314d201d89e"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/M/MA/MARSCHAP/perl-ldap-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-libidn-perl_0.12.bb b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-libidn-perl_0.12.bb
index 37586fd..4c4faab 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-libidn-perl_0.12.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-libidn-perl_0.12.bb
@@ -5,7 +5,7 @@
 Turbo Fredriksson's PHP-IDN. \
 "
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 HOMEPAGE = "http://search.cpan.org/dist/Net-LibIDN/"
 DEPENDS += "libidn"
 # We must need glibc-gconvs to enable charset related functions,
diff --git a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl_1.85.bb b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl_1.85.bb
index effcb3d..5d0eccd 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl_1.85.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-ssleay-perl_1.85.bb
@@ -7,7 +7,7 @@
 HOMEPAGE = "http://search.cpan.org/dist/Net-SSLeay/"
 SECTION = "libs"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=274;endline=294;md5=67d67095d83e339da538a082fad5f38e"
 
 DEPENDS = "openssl zlib openssl-native"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-telnet-perl_3.05.bb b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-telnet-perl_3.05.bb
index 9b259ab..d7d4201 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-telnet-perl_3.05.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libnet/libnet-telnet-perl_3.05.bb
@@ -11,7 +11,7 @@
 HOMEPAGE = "http://search.cpan.org/dist/Net-Telnet/"
 SECTION = "Development/Libraries"
 
-LICENSE = "Artistic-1.0|GPLv1+"
+LICENSE = "Artistic-1.0|GPL-1.0-or-later"
 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"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libproc/libproc-waitstat-perl_1.00.bb b/meta-openembedded/meta-perl/recipes-perl/libproc/libproc-waitstat-perl_1.00.bb
index 1dbd923..ffd87ed 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libproc/libproc-waitstat-perl_1.00.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libproc/libproc-waitstat-perl_1.00.bb
@@ -5,7 +5,7 @@
 HOMEPAGE = "http://search.cpan.org/~rosch/Proc-WaitStat/"
 SECTION = "libraries"
 
-LICENSE = "Artistic-1.0|GPLv1+"
+LICENSE = "Artistic-1.0|GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=21;endline=23;md5=f36550f59a0ae5e6e3b0be6a4da60d26"
 
 RDEPENDS:${PN} += "perl libipc-signal-perl"
diff --git a/meta-openembedded/meta-perl/recipes-perl/librole/librole-tiny-perl_2.002004.bb b/meta-openembedded/meta-perl/recipes-perl/librole/librole-tiny-perl_2.002004.bb
index df7b9b8..c5efc15 100644
--- a/meta-openembedded/meta-perl/recipes-perl/librole/librole-tiny-perl_2.002004.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/librole/librole-tiny-perl_2.002004.bb
@@ -5,7 +5,7 @@
 
 HOMEPAGE = "https://metacpan.org/pod/Role::Tiny"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=197;endline=234;md5=26df7e7c20551fb1906e2286624f0b71"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/H/HA/HAARG/Role-Tiny-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libstatgrab/libunix-statgrab_0.112.bb b/meta-openembedded/meta-perl/recipes-perl/libstatgrab/libunix-statgrab_0.112.bb
index c2b6d4a..c568ade 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libstatgrab/libunix-statgrab_0.112.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libstatgrab/libunix-statgrab_0.112.bb
@@ -7,7 +7,7 @@
 
 HOMEPAGE = "https://metacpan.org/release/Unix-Statgrab"
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+ | LGPL-2.1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later | LGPL-2.1-or-later"
 DEPENDS += "libcapture-tiny-perl-native"
 DEPENDS += "libconfig-autoconf-perl-native"
 DEPENDS += "libstatgrab"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libstrictures/libstrictures-perl_2.000006.bb b/meta-openembedded/meta-perl/recipes-perl/libstrictures/libstrictures-perl_2.000006.bb
index 765455b..80c21b2 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libstrictures/libstrictures-perl_2.000006.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libstrictures/libstrictures-perl_2.000006.bb
@@ -25,7 +25,7 @@
 
 HOMEPAGE = "https://metacpan.org/pod/strictures"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=246;endline=262;md5=43be558cf4f19823cdd6af22135cf5f8"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/H/HA/HAARG/strictures-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-exporter-progressive-perl_0.001013.bb b/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-exporter-progressive-perl_0.001013.bb
index fa66cd8..d51ab21 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-exporter-progressive-perl_0.001013.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-exporter-progressive-perl_0.001013.bb
@@ -10,7 +10,7 @@
 
 HOMEPAGE = "https://metacpan.org/pod/Sub-Exporter-Progressive/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=003fa970662359a43ac2c2961108b0f1"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/F/FR/FREW/Sub-Exporter-Progressive-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-uplevel-perl_0.2800.bb b/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-uplevel-perl_0.2800.bb
index 98c322f..3a0de97 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-uplevel-perl_0.2800.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libsub/libsub-uplevel-perl_0.2800.bb
@@ -9,7 +9,7 @@
 SECTION = "libs"
 HOMEPAGE= "https://metacpan.org/release/Sub-Uplevel"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=7f1207cd3108e4ade18448d81e6bcb6c"
 
 CPAN_PACKAGE = "Sub-Uplevel"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libterm/libterm-readkey-perl_2.38.bb b/meta-openembedded/meta-perl/recipes-perl/libterm/libterm-readkey-perl_2.38.bb
index 3948f3c..f4ce313 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libterm/libterm-readkey-perl_2.38.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libterm/libterm-readkey-perl_2.38.bb
@@ -9,7 +9,7 @@
 HOMEPAGE = "http://search.cpan.org/~jstowe/TermReadKey-${PV}"
 SECTION = "libraries"
 
-LICENSE = "Artistic-1.0 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;md5=c275db663c8489a5709ebb22b185add5"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/J/JS/JSTOWE/TermReadKey-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-deep-perl_1.130.bb b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-deep-perl_1.130.bb
index 75e1623..6252bc3 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-deep-perl_1.130.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-deep-perl_1.130.bb
@@ -22,7 +22,7 @@
 
 HOMEPAGE = "http://github.com/rjbs/Test-Deep/"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://lib/Test/Deep.pm;beginline=1817;endline=1826;md5=a897a42bafc3422cab17c2eb94f87a7c"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/R/RJ/RJBS/Test-Deep-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-harness-perl_3.42.bb b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-harness-perl_3.42.bb
index 7d7f336..b8547cb 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-harness-perl_3.42.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-harness-perl_3.42.bb
@@ -22,7 +22,7 @@
 
 HOMEPAGE = "http://testanything.org"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=29;endline=30;md5=b08db4360eec119e875dddd7cb8a5ddd"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/Test-Harness-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-nowarnings-perl_1.04.bb b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-nowarnings-perl_1.04.bb
index b206683..d74a347 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-nowarnings-perl_1.04.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-nowarnings-perl_1.04.bb
@@ -14,7 +14,7 @@
 run when any forked children exit."
 
 SECTION = "libs"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 
 HOMEPAGE= "https://metacpan.org/release/Test-NoWarnings"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warn-perl_0.36.bb b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warn-perl_0.36.bb
index 96939ec..7f53993 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warn-perl_0.36.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warn-perl_0.36.bb
@@ -9,7 +9,7 @@
 SECTION = "libs"
 HOMEPAGE= "https://metacpan.org/release/Test-Warn"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=73;endline=78;md5=42b423d91c92ba59c215835a2ee9b57a"
 
 CPAN_PACKAGE = "Test-Warn"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.031.bb b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.031.bb
index 8014c19..d1c0d95 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.031.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libtest/libtest-warnings-perl_0.031.bb
@@ -10,7 +10,7 @@
 demonstration.)"
 
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 
 HOMEPAGE=       "https://metacpan.org/release/Test-Warnings"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-charwidth-perl_0.04.bb b/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-charwidth-perl_0.04.bb
index 9057ae7..2911812 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-charwidth-perl_0.04.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-charwidth-perl_0.04.bb
@@ -12,7 +12,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~kubota/Text-CharWidth-${PV}/"
 
-LICENSE = "Artistic-1.0 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;md5=d8d54c8c500cbdd57a4c15911d9d96db"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/K/KU/KUBOTA/Text-CharWidth-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-diff-perl_1.41.bb b/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-diff-perl_1.41.bb
index b6f7495..afdf63e 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-diff-perl_1.41.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-diff-perl_1.41.bb
@@ -8,7 +8,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~ovid/Text-Diff/"
 
-LICENSE = "Artistic-1.0 | GPL-2.0+"
+LICENSE = "Artistic-1.0 | GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=385c55653886acac3821999a3ccd17b3"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/O/OV/OVID/Text-Diff-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-iconv-perl_1.7.bb b/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-iconv-perl_1.7.bb
index a16bf87..1e8405c 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-iconv-perl_1.7.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-iconv-perl_1.7.bb
@@ -8,7 +8,7 @@
 implementation-dependent. Valid values are specified in the system \
 documentation."
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=3;endline=6;md5=fadf2919c7128e887d26b4d905f90649"
 RRECOMMENDS:${PN}:append:libc-glibc = " glibc-gconvs"
 
diff --git a/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-wrapi18n-perl_0.06.bb b/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-wrapi18n-perl_0.06.bb
index 5dc2ad3..017e951 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-wrapi18n-perl_0.06.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libtext/libtext-wrapi18n-perl_0.06.bb
@@ -13,7 +13,7 @@
 
 HOMEPAGE = "http://search.cpan.org/~kubota/Text-WrapI18N-${PV}/"
 
-LICENSE = "Artistic-1.0 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;md5=080862e1e40cdcddef4393e137285858"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/K/KU/KUBOTA/Text-WrapI18N-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libunicode/libunicode-linebreak-perl_2019.001.bb b/meta-openembedded/meta-perl/recipes-perl/libunicode/libunicode-linebreak-perl_2019.001.bb
index 4c01a4c..a7a998c 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libunicode/libunicode-linebreak-perl_2019.001.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libunicode/libunicode-linebreak-perl_2019.001.bb
@@ -7,7 +7,7 @@
 
 HOMEPAGE = "https://metacpan.org/release/Unicode-LineBreak"
 
-LICENSE = "Artistic-1.0 | GPL-1.0+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 LIC_FILES_CHKSUM = "file://README;beginline=5;endline=9;md5=b5e8b1099b86b86fbc315b50484231ab"
 
 SRC_URI = "${CPAN_MIRROR}/authors/id/N/NE/NEZUMI/Unicode-LineBreak-${PV}.tar.gz"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-filter-buffertext-perl_1.01.bb b/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-filter-buffertext-perl_1.01.bb
index 6247745..7962d22 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-filter-buffertext-perl_1.01.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-filter-buffertext-perl_1.01.bb
@@ -7,7 +7,7 @@
 of putting all characters into a single event. \
 "
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 HOMEPAGE = "http://search.cpan.org/dist/XML-Filter-BufferText/"
 DEPENDS += "libxml-sax-perl-native"
 RDEPENDS:${PN} += "libxml-sax-perl"
diff --git a/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0134.bb b/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0134.bb
index 58d0e4c..c2898a9 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0134.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0134.bb
@@ -8,7 +8,7 @@
 
 HOMEPAGE = "http://search.cpan.org/dist/XML-LibXML-1.99/"
 SECTION = "libs"
-LICENSE = "Artistic-1.0|GPLv1+"
+LICENSE = "Artistic-1.0|GPL-1.0-or-later"
 DEPENDS += "libxml2 \
         libxml-sax-perl-native \
         zlib \
diff --git a/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-sax-writer-perl_0.57.bb b/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-sax-writer-perl_0.57.bb
index ab684ea..487a5c2 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-sax-writer-perl_0.57.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libxml/libxml-sax-writer-perl_0.57.bb
@@ -7,7 +7,7 @@
 the AxKit XML Application Server. \
 "
 SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPLv1+"
+LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
 HOMEPAGE = "http://search.cpan.org/dist/XML-SAX-Writer/"
 DEPENDS += "libxml-filter-buffertext-perl-native"
 RDEPENDS:${PN} += "libxml-filter-buffertext-perl"
diff --git a/meta-openembedded/meta-perl/recipes-perl/packagegroups/packagegroup-meta-perl.bb b/meta-openembedded/meta-perl/recipes-perl/packagegroups/packagegroup-meta-perl.bb
index 918c21d..4b2f5cc 100644
--- a/meta-openembedded/meta-perl/recipes-perl/packagegroups/packagegroup-meta-perl.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/packagegroups/packagegroup-meta-perl.bb
@@ -14,8 +14,6 @@
     compress-raw-bzip2-perl \
     compress-raw-lzma-perl \
     compress-raw-zlib-perl \
-    io-compress-perl \
-    io-compress-lzma-perl \
     libalgorithm-diff-perl \
     libauthen-sasl-perl \
     libauthen-radius-perl \
@@ -33,6 +31,8 @@
     libhtml-tree-perl \
     libhtml-tagset-perl \
     libimport-into-perl \
+    libio-compress-perl \
+    libio-compress-lzma-perl \
     libio-socket-ssl-perl \
     libio-stringy-perl \
     libipc-signal-perl \
diff --git a/meta-openembedded/meta-perl/recipes-perl/po4a/po4a_0.49.bb b/meta-openembedded/meta-perl/recipes-perl/po4a/po4a_0.49.bb
index d7a97dd..679ea0f 100644
--- a/meta-openembedded/meta-perl/recipes-perl/po4a/po4a_0.49.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/po4a/po4a_0.49.bb
@@ -3,7 +3,7 @@
 (and more interestingly, the maintenance of translations) using gettext tools \
 on areas where they were not expected like documentation."
 HOMEPAGE = "https://po4a.alioth.debian.org"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=a96fc9b4cc36d80659e694ea109f0325"
 
 SRC_URI = "git://github.com/mquinson/po4a.git;protocol=https;branch=master"
diff --git a/meta-openembedded/meta-python/classes/distutils-common-base.bbclass b/meta-openembedded/meta-python/classes/distutils-common-base.bbclass
new file mode 100644
index 0000000..59c750a
--- /dev/null
+++ b/meta-openembedded/meta-python/classes/distutils-common-base.bbclass
@@ -0,0 +1,28 @@
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+# LDSHARED is the ld *command* used to create shared library
+export LDSHARED  = "${CCLD} -shared"
+# LDXXSHARED is the ld *command* used to create shared library of C++
+# objects
+export LDCXXSHARED  = "${CXX} -shared"
+# CCSHARED are the C *flags* used to create objects to go into a shared
+# library (module)
+export CCSHARED  = "-fPIC -DPIC"
+# LINKFORSHARED are the flags passed to the $(CC) command that links
+# the python executable
+export LINKFORSHARED = "${SECURITY_CFLAGS} -Xlinker -export-dynamic"
+
+FILES:${PN} += "${libdir}/* ${libdir}/${PYTHON_DIR}/*"
+
+FILES:${PN}-staticdev += "\
+  ${PYTHON_SITEPACKAGES_DIR}/*.a \
+"
+FILES:${PN}-dev += "\
+  ${datadir}/pkgconfig \
+  ${libdir}/pkgconfig \
+  ${PYTHON_SITEPACKAGES_DIR}/*.la \
+"
+python __anonymous() {
+    bb.warn("distutils-common-base.bbclass is deprecated, please use setuptools3-base.bbclass instead")
+}
diff --git a/meta-openembedded/meta-python/classes/distutils3-base.bbclass b/meta-openembedded/meta-python/classes/distutils3-base.bbclass
new file mode 100644
index 0000000..850c535
--- /dev/null
+++ b/meta-openembedded/meta-python/classes/distutils3-base.bbclass
@@ -0,0 +1,9 @@
+DEPENDS:append:class-target = " ${PYTHON_PN}-native ${PYTHON_PN}"
+DEPENDS:append:class-nativesdk = " ${PYTHON_PN}-native ${PYTHON_PN}"
+RDEPENDS:${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == 'class-target']}"
+
+inherit distutils-common-base python3native python3targetconfig
+
+python __anonymous() {
+    bb.warn("distutils3-base.bbclass is deprecated, please use setuptools3-base.bbclass instead")
+
diff --git a/meta-openembedded/meta-python/classes/distutils3.bbclass b/meta-openembedded/meta-python/classes/distutils3.bbclass
new file mode 100644
index 0000000..a6d8e87
--- /dev/null
+++ b/meta-openembedded/meta-python/classes/distutils3.bbclass
@@ -0,0 +1,71 @@
+inherit distutils3-base
+
+B = "${WORKDIR}/build"
+distutils_do_configure[cleandirs] = "${B}"
+
+DISTUTILS_BUILD_ARGS ?= ""
+DISTUTILS_INSTALL_ARGS ?= "--root=${D} \
+    --prefix=${prefix} \
+    --install-lib=${PYTHON_SITEPACKAGES_DIR} \
+    --install-data=${datadir}"
+
+DISTUTILS_PYTHON = "python3"
+DISTUTILS_PYTHON:class-native = "nativepython3"
+
+DISTUTILS_SETUP_PATH ?= "${S}"
+
+python __anonymous() {
+    bb.warn("distutils3.bbclass is deprecated, please use setuptools3.bbclass instead")
+}
+
+distutils3_do_configure() {
+    :
+}
+
+distutils3_do_compile() {
+        cd ${DISTUTILS_SETUP_PATH}
+        NO_FETCH_BUILD=1 \
+        STAGING_INCDIR=${STAGING_INCDIR} \
+        STAGING_LIBDIR=${STAGING_LIBDIR} \
+        ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
+        build --build-base=${B} ${DISTUTILS_BUILD_ARGS} || \
+        bbfatal_log "'${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS}' execution failed."
+}
+distutils3_do_compile[vardepsexclude] = "MACHINE"
+
+distutils3_do_install() {
+        cd ${DISTUTILS_SETUP_PATH}
+        install -d ${D}${PYTHON_SITEPACKAGES_DIR}
+        STAGING_INCDIR=${STAGING_INCDIR} \
+        STAGING_LIBDIR=${STAGING_LIBDIR} \
+        PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \
+        ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
+        build --build-base=${B} install --skip-build ${DISTUTILS_INSTALL_ARGS} || \
+        bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS}' execution failed."
+
+        # support filenames with *spaces*
+        find ${D} -name "*.py" -exec grep -q ${D} {} \; \
+                               -exec sed -i -e s:${D}::g {} \;
+
+        for i in ${D}${bindir}/* ${D}${sbindir}/*; do
+            if [ -f "$i" ]; then
+                sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
+                sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+            fi
+        done
+
+        rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth
+
+        #
+        # FIXME: Bandaid against wrong datadir computation
+        #
+        if [ -e ${D}${datadir}/share ]; then
+            mv -f ${D}${datadir}/share/* ${D}${datadir}/
+            rmdir ${D}${datadir}/share
+        fi
+}
+distutils3_do_install[vardepsexclude] = "MACHINE"
+
+EXPORT_FUNCTIONS do_configure do_compile do_install
+
+export LDSHARED="${CCLD} -shared"
diff --git a/meta-openembedded/meta-python/classes/pyo3.bbclass b/meta-openembedded/meta-python/classes/pyo3.bbclass
deleted file mode 100644
index 6ce2132..0000000
--- a/meta-openembedded/meta-python/classes/pyo3.bbclass
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# This class helps make sure that Python extensions built with PyO3
-# and setuptools_rust properly set up the environment for cross compilation
-#
-
-inherit cargo python3-dir siteinfo
-
-export PYO3_CROSS="1"
-export PYO3_CROSS_PYTHON_VERSION="${PYTHON_BASEVERSION}"
-export PYO3_CROSS_LIB_DIR="${STAGING_LIBDIR}"
-export CARGO_BUILD_TARGET="${HOST_SYS}"
-export RUSTFLAGS
-export PYO3_PYTHON="${PYTHON}"
-export PYO3_CONFIG_FILE="${WORKDIR}/pyo3.config"
-
-pyo3_do_configure () {
-    cat > ${WORKDIR}/pyo3.config << EOF
-implementation=CPython
-version=${PYTHON_BASEVERSION}
-shared=true
-abi3=false
-lib_name=${PYTHON_DIR}
-lib_dir=${STAGING_LIBDIR}
-pointer_width=${SITEINFO_BITS}
-build_flags=WITH_THREAD
-suppress_build_script_link_lines=false
-EOF
-}
-
-EXPORT_FUNCTIONS do_configure
diff --git a/meta-openembedded/meta-python/classes/setuptools3_rust.bbclass b/meta-openembedded/meta-python/classes/setuptools3_rust.bbclass
deleted file mode 100644
index fb11f08..0000000
--- a/meta-openembedded/meta-python/classes/setuptools3_rust.bbclass
+++ /dev/null
@@ -1,11 +0,0 @@
-inherit pyo3 setuptools3
-
-DEPENDS += "python3-setuptools-rust-native"
-
-setuptools3_rust_do_configure() {
-    pyo3_do_configure
-    cargo_common_do_configure
-    setuptools3_do_configure
-}
-
-EXPORT_FUNCTIONS do_configure
diff --git a/meta-openembedded/meta-python/conf/layer.conf b/meta-openembedded/meta-python/conf/layer.conf
index 98f7341..e444498 100644
--- a/meta-openembedded/meta-python/conf/layer.conf
+++ b/meta-openembedded/meta-python/conf/layer.conf
@@ -6,7 +6,7 @@
 
 BBFILE_COLLECTIONS += "meta-python"
 BBFILE_PATTERN_meta-python := "^${LAYERDIR}/"
-BBFILE_PRIORITY_meta-python = "7"
+BBFILE_PRIORITY_meta-python = "5"
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
diff --git a/meta-openembedded/meta-python/licenses/CRC32C-ADLER b/meta-openembedded/meta-python/licenses/CRC32C-ADLER
new file mode 100644
index 0000000..f1f0e94
--- /dev/null
+++ b/meta-openembedded/meta-python/licenses/CRC32C-ADLER
@@ -0,0 +1,15 @@
+This software is provided 'as-is', without any express or implied
+warranty.  In no event will the author be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+   claim that you wrote the original software. If you use this software
+   in a product, an acknowledgment in the product documentation would be
+   appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+   misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb b/meta-openembedded/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb
index 7910fcd..c075e42 100644
--- a/meta-openembedded/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb
@@ -13,3 +13,4 @@
 
 inherit setuptools3
 
+PIP_INSTALL_PACKAGE = "txWS"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python3_0.15.19.bb b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python3_0.15.19.bb
index 1e9ba9e..f5e2f67 100644
--- a/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python3_0.15.19.bb
+++ b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python3_0.15.19.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Telepathy IM framework - Python package"
 HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
                     file://src/utils.py;beginline=1;endline=17;md5=9a07d1a9791a7429a14e7b25c6c86822"
 
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 d90e655..f7bf365 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
@@ -26,7 +26,6 @@
     python3-alembic \
     python3-ansi2html \
     python3-ansicolors \
-    python3-anyjson \
     python3-appdirs \
     python3-apply-defaults \
     python3-argcomplete \
@@ -34,7 +33,6 @@
     python3-argh \
     python3-arpeggio \
     python3-asciitree \
-    python3-asn1crypto \
     python3-aspectlib \
     python3-astor \
     python3-astroid \
@@ -45,11 +43,8 @@
     python3-autobahn \
     python3-automat \
     python3-aws-iot-device-sdk-python \
-    python3-babel \
     python3-backcall \
-    python3-backports-functools-lru-cache \
     python3-bandit \
-    python3-bcrypt \
     python3-beautifulsoup4 \
     python3-behave \
     python3-betamax \
@@ -66,10 +61,7 @@
     python3-cantools \
     python3-cassandra-driver \
     python3-cbor2 \
-    python3-cchardet \
     python3-cerberus \
-    python3-certifi \
-    python3-cffi \
     python3-chardet \
     python3-charset-normalizer \
     python3-cheetah \
@@ -83,7 +75,6 @@
     python3-colorzero \
     python3-configargparse \
     python3-configobj \
-    python3-configparser \
     python3-configshell-fb \
     python3-constantly \
     python3-contextlib2 \
@@ -91,8 +82,6 @@
     python3-cppy \
     python3-crcmod \
     python3-croniter \
-    python3-cryptography \
-    python3-cryptography-vectors \
     python3-cson \
     python3-custom-inherit \
     python3-cvxopt \
@@ -125,7 +114,6 @@
     python3-fasteners \
     python3-fastjsonschema \
     python3-fastnumbers \
-    python3-feedformatter \
     python3-fields \
     python3-flask \
     python3-flask-babel \
@@ -195,7 +183,6 @@
     python3-ipython \
     python3-ipython-genutils \
     python3-iso3166 \
-    python3-iso8601 \
     python3-isodate \
     python3-isort \
     python3-itsdangerous \
@@ -245,7 +232,6 @@
     python3-mypy \
     python3-mypy-extensions \
     python3-natsort \
-    python3-ndg-httpsclient \
     python3-netaddr \
     python3-netifaces \
     python3-networkx \
@@ -281,27 +267,23 @@
     python3-pint \
     python3-pkcs11 \
     python3-pkgconfig \
-    python3-ply \
     python3-pocketsphinx \
     python3-polyline \
     python3-portalocker \
     python3-posix-ipc \
     python3-prctl \
     python3-precise-runner \
-    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 \
     python3-pyasn1-modules \
     python3-pyatspi \
     python3-pyaudio \
@@ -312,7 +294,6 @@
     python3-pycocotools \
     python3-pycodestyle \
     python3-pyconnman \
-    python3-pycparser \
     python3-pycurl \
     python3-pydbus \
     python3-pydbus-manager \
@@ -336,7 +317,6 @@
     python3-pymysql \
     python3-pynacl \
     python3-pynetlinux \
-    python3-pyopenssl \
     python3-pyparted \
     python3-pyperclip \
     python3-pyperf \
@@ -346,9 +326,7 @@
     python3-pyrsistent \
     python3-pyscaffold \
     python3-pyserial \
-    python3-pysocks \
     python3-pysonos \
-    python3-pystache \
     python3-pystemd \
     python3-pytest-asyncio \
     python3-pytest-benchmark \
@@ -356,9 +334,8 @@
     python3-pytest-forked \
     python3-pytest-helpers-namespace \
     python3-pytest-html \
+    python3-pytest-lazy-fixture \
     python3-pytest-metadata \
-    python3-pytest-runner \
-    python3-pytest-subtests \
     python3-pytest-tempdir \
     python3-pytest-timeout \
     python3-pytest-xdist \
@@ -366,7 +343,6 @@
     python3-python-vlc \
     python3-pytoml \
     python3-pytun \
-    python3-pytz \
     python3-pytz-deprecation-shim \
     python3-pyudev \
     python3-pyusb \
@@ -379,7 +355,6 @@
     python3-rdflib \
     python3-redis \
     python3-regex \
-    python3-requests \
     python3-requests-file \
     python3-requests-ftp \
     python3-requests-futures \
@@ -395,7 +370,6 @@
     python3-scrypt \
     python3-sdnotify \
     python3-semver \
-    python3-semantic-version \
     python3-send2trash \
     python3-sentry-sdk \
     python3-serpent \
@@ -443,13 +417,11 @@
     python3-txws \
     python3-typed-ast \
     python3-typeguard \
-    python3-typing-extensions \
     python3-tzlocal \
     python3-u-msgpack-python \
     python3-ujson \
     python3-unidiff \
     python3-uritemplate \
-    python3-urllib3 \
     python3-vcversioner \
     python3-versiontools \
     python3-visitor \
@@ -477,24 +449,17 @@
     python3-yarl \
     python3-zopeinterface \
     telepathy-python3 \
+    unattended-upgrades \
 "
-RDEPENDS:packagegroup-meta-python3:remove:libc-musl:powerpc64le = "python3-grpcio python3-grpcio-tools"
 
 RDEPENDS:packagegroup-meta-python3-ptest = "\
-    python3-cryptography-ptest \
-    python3-jinja2-ptest \
-    python3-markupsafe-ptest \
     python3-ansicolors-ptest \
-    python3-anyjson-ptest \
     python3-appdirs-ptest \
-    python3-backports-functools-lru-cache-ptest \
-    python3-bcrypt-ptest \
     python3-betamax-ptest \
     python3-blinker-ptest \
     python3-cachetools-ptest \
     python3-cbor2-ptest \
     python3-click-ptest \
-    python3-cryptography-ptest \
     python3-dnspython-ptest \
     python3-dominate-ptest \
     python3-geojson-ptest \
@@ -523,8 +488,8 @@
     python3-pyasn1-modules-ptest \
     python3-pyroute2-ptest \
     python3-pyserial-ptest \
+    python3-pytest-lazy-fixture-ptest \
     python3-pytoml-ptest \
-    python3-pytz-ptest \
     python3-requests-file-ptest \
     python3-requests-toolbelt-ptest \
     python3-scrypt-ptest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp/0001-Fix-for-Python-3.10-compatibility.patch b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp/0001-Fix-for-Python-3.10-compatibility.patch
index 2b88023..1848654 100644
--- a/meta-openembedded/meta-python/recipes-devtools/gyp/gyp/0001-Fix-for-Python-3.10-compatibility.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/gyp/gyp/0001-Fix-for-Python-3.10-compatibility.patch
@@ -14,6 +14,15 @@
 index b268d229..4f9cb0ec 100644
 --- a/pylib/gyp/common.py
 +++ b/pylib/gyp/common.py
+@@ -4,7 +4,7 @@
+ 
+ from __future__ import with_statement
+ 
+-import collections
++import collections.abc
+ import errno
+ import filecmp
+ import os.path
 @@ -494,7 +494,7 @@ def uniquer(seq, idfun=None):
  
  
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc
deleted file mode 100644
index 6cbed0f..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pyasn1.inc
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Python library implementing ASN.1 types."
-HOMEPAGE = "http://pyasn1.sourceforge.net/"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=a14482d15c2249de3b6f0e8a47e021fd"
-
-SRC_URI[md5sum] = "dffae4ff9f997a83324b3f33fe62be54"
-SRC_URI[sha256sum] = "aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"
-
-RDEPENDS:${PN}:class-target += " \
-    ${PYTHON_PN}-codecs \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-math \
-    ${PYTHON_PN}-shell \
-"
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit ptest
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/0002-setup.py-switch-from-distutils-to-setuptools.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/0002-setup.py-switch-from-distutils-to-setuptools.patch
new file mode 100644
index 0000000..b3180f2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-systemd/0002-setup.py-switch-from-distutils-to-setuptools.patch
@@ -0,0 +1,30 @@
+From a681a79472df85cdc8c052bc61fb8b9e7b9a6495 Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Sun, 27 Feb 2022 11:50:36 -0800
+Subject: [PATCH] setup.py: switch from distutils to setuptools
+
+In Python 3.10, distutils is deprecated and slated for removal in Python
+3.12. It also prevents 'setup.py bdist_wheel' from building a wheel.
+
+Upstream-Status: Submitted
+[https://github.com/systemd/python-systemd/pull/103]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 099819b..fe9c03a 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,5 +1,5 @@
+ import sys, os
+-from distutils.core import setup, Extension
++from setuptools import setup, Extension
+ from subprocess import Popen, PIPE, check_output
+ 
+ def call(*cmd):
+-- 
+2.30.2
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiofiles_0.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiofiles_0.8.0.bb
index f7a75ec..d50cb8e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiofiles_0.8.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiofiles_0.8.0.bb
@@ -8,7 +8,7 @@
 
 PYPI_PACKAGE = "aiofiles"
 
-inherit pypi setuptools3
+inherit pypi python_poetry_core
 
 RDEPENDS:${PN} = "\
     ${PYTHON_PN}-asyncio \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.8.1.bb
index 1d8434e..f2b8d52 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.8.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.8.1.bb
@@ -7,7 +7,8 @@
 SRC_URI[sha256sum] = "fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578"
 
 PYPI_PACKAGE = "aiohttp"
-inherit setuptools3 pypi
+inherit python_setuptools_build_meta pypi
+
 RDEPENDS:${PN} = "\
     ${PYTHON_PN}-async-timeout \
     ${PYTHON_PN}-attrs \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.7.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.7.7.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.7.6.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.7.7.bb
index 822b3c0..6b7ac4a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.7.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.7.7.bb
@@ -4,7 +4,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "6c0c05e9768a896d804387e20b299880fe01bc56484246b0dffe8075d6d3d847"
+SRC_URI[sha256sum] = "4961248173ead7ce8a21efb3de378f13b8398e6630fab0eb258dc74a8af24c58"
 
 PYPI_PACKAGE = "alembic"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.7.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.7.0.bb
index df50bc7..0f1804d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.7.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ansi2html_1.7.0.bb
@@ -1,13 +1,13 @@
 DESCRPTION = "ansi2html - Convert text with ANSI color codes to HTML or to LaTeX"
 HOMEPAGE = "https://github.com/ralphbean/ansi2html"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3000208d539ec061b899bce1d9ce9404"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 
 PYPI_PACKAGE = "ansi2html"
 
 SRC_URI[sha256sum] = "69316be8c68ac91c5582d397c2890e69c993cc7cda52062ac7e45fcb660d8edc"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 DEPENDS += " \
 	${PYTHON_PN}-setuptools-scm-native \
@@ -18,8 +18,3 @@
 	${PYTHON_PN}-six \
 	${PYTHON_PN}-compression \
 "
-
-do_compile:prepend() {
-	echo "from setuptools import setup" > ${S}/setup.py
-	echo "setup()" >> ${S}/setup.py
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-antlr4-runtime_4.9.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-antlr4-runtime_4.9.2.bb
new file mode 100644
index 0000000..8a19b6c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-antlr4-runtime_4.9.2.bb
@@ -0,0 +1,11 @@
+SUMMARY = "ANTLR runtime for Python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=c96f0ee5f5d08fd4387e5f00507bb13e"
+
+SRC_URI[sha256sum] = "31f5abdc7faf16a1a6e9bf2eb31565d004359b821b09944436a34361929ae85a"
+
+PYPI_PACKAGE = "antlr4-python3-runtime"
+
+inherit pypi python_setuptools_build_meta
+
+BBCLASSEXTEND = "nativesdk native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb
deleted file mode 100644
index 2b8abb8..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-anyjson_0.3.3.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Wraps the best available JSON implementation available in a common interface"
-DESCRIPTION = "Anyjson loads whichever is the fastest JSON module installed and  \
-provides a uniform API regardless of which JSON implementation is used."
-HOMEPAGE = "https://bitbucket.org/runeh/anyjson"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=989aa97e73c912a83a3c873fa11deb08"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-	file://0001-setup.py-Do-not-use-2to3.patch \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-	${PYTHON_PN}-nose \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-SRC_URI[md5sum] = "2ea28d6ec311aeeebaf993cb3008b27c"
-SRC_URI[sha256sum] = "37812d863c9ad3e35c0734c42e0bf0320ce8c3bed82cd20ad54cb34d158157ba"
-
-RDEPENDS:${PN} += "${PYTHON_PN}-simplejson"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.26.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.26.2.bb
index d07ccbb..c02e31a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.26.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.26.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Pattern matching and various utilities for file systems paths."
 
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=cede70b648dcc81baf5b431d38905bad"
 
 SRC_URI[sha256sum] = "e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-arpeggio_1.10.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-arpeggio_2.0.0.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-arpeggio_1.10.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-arpeggio_2.0.0.bb
index 468e6d5..96d6de6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-arpeggio_1.10.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-arpeggio_2.0.0.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=33b8d1ba459a2fa4d801acfd1d1b7ceb"
 
-SRC_URI[sha256sum] = "bfe349f252f82f82d84cb886f1d5081d1a31451e6045275e9f90b65d0daa06f1"
+SRC_URI[sha256sum] = "d6b03839019bb8a68785f9292ee6a36b1954eb84b925b84a6b8a5e1e26d3ed3d"
 
 PYPI_PACKAGE = "Arpeggio"
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_1.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_1.4.0.bb
deleted file mode 100644
index c052cb8..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-asn1crypto_1.4.0.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-DESCRIPTION = "A fast, pure Python library for parsing and serializing ASN.1 structures"
-HOMEPAGE = "https://github.com/wbond/asn1crypto"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=7439e38f5e04ff62fae436184786b7ca"
-
-PYPI_PACKAGE = "asn1crypto"
-
-SRC_URI[md5sum] = "00bf5b72d37778e62cc73b1d8909ae27"
-SRC_URI[sha256sum] = "f4f6e119474e58e04a2b1af817eb585b4fd72bdd89b998624712b5c99be7641c"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN}:class-target += " \
-    ${PYTHON_PN}-codecs \
-    ${PYTHON_PN}-crypt \
-    ${PYTHON_PN}-ctypes \
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-numbers \
-    ${PYTHON_PN}-shell \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
index bc3315f..54e43e3 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
@@ -10,6 +10,7 @@
 SRCREV ?= "c7553c79f9222e20783fe9bd8a553f932e918072"
 
 inherit setuptools3
+PIP_INSTALL_PACKAGE = "astor"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.9.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.11.2.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.9.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.11.2.bb
index 7bc93bf..c52008e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.9.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_2.11.2.bb
@@ -1,10 +1,10 @@
 SUMMARY = "An abstract syntax tree for Python with inference support."
 HOMEPAGE = "https://pypi.python.org/pypi/astroid"
 SECTION = "devel/python"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a70cf540abf41acb644ac3b621b2fad1"
 
-SRC_URI[sha256sum] = "1efdf4e867d4d8ba4a9f6cf9ce07cd182c4c41de77f23814feb27ca93ca9d877"
+SRC_URI[sha256sum] = "8d0a30fe6481ce919f56690076eafbb2fb649142a89dc874f1ec0e7a011492d0"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-asttokens_2.0.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-asttokens_2.0.5.bb
index 429a56b..da49040 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-asttokens_2.0.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-asttokens_2.0.5.bb
@@ -5,13 +5,10 @@
 
 PYPI_PACKAGE = "asttokens"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 SRC_URI[sha256sum] = "9a54c114f02c7a9480d56550932546a3f1fe71d8a02f1bc7ccd0ee3ee35cf4d5"
 
-DEPENDS += "\
-    python3-setuptools-scm-native \
-    python3-wheel-native \
-"
+DEPENDS += "python3-setuptools-scm-native"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-async-timeout_4.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-async-timeout_4.0.2.bb
index 7355f00..b1d19ce 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-async-timeout_4.0.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-async-timeout_4.0.2.bb
@@ -11,7 +11,7 @@
 SRC_URI[sha256sum] = "2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"
 
 PYPI_PACKAGE = "async-timeout"
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 RDEPENDS:${PN} = "\
     ${PYTHON_PN}-asyncio \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncinotify_2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncinotify_2.0.2.bb
new file mode 100644
index 0000000..2bf9192
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncinotify_2.0.2.bb
@@ -0,0 +1,15 @@
+SUMMARY = "A simple optionally-async python inotify library, focused on simplicity of use and operation, and leveraging modern Python features"
+HOMEPAGE = "https://gitlab.com/Taywee/asyncinotify"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6ec941a1cd6616454970d03cb9c9e8f8"
+
+SRC_URI[sha256sum] = "867cc056d88fc07aa8b3d1dc5b9c3c911cdd6130a4df5f67beb1fdecfd37b164"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+    python3-asyncio \
+    python3-core  \
+    python3-ctypes \
+    python3-io \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncio-glib_0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncio-glib_0.1.bb
index 6f67d28..2314f72 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncio-glib_0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-asyncio-glib_0.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "An implementation of the Python 3 asyncio event loop on top of GLib"
 AUTHOR = "James Henstridge"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c"
 
 inherit setuptools3 pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-autobahn_22.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-autobahn_22.3.2.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-autobahn_22.1.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-autobahn_22.3.2.bb
index f149b12..78514a4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-autobahn_22.1.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-autobahn_22.3.2.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=97c0bda20ad1d845c6369c0e47a1cd98"
 
-SRC_URI[sha256sum] = "17e1b58b6ae1a63ca7d926b1d71bb9e4fd6b9ac9a1a2277d8ee40e0b61f54746"
+SRC_URI[sha256sum] = "58a887c7a196bb08d8b6624cb3695f493a9e5c9f00fd350d8d6f829b47ff9036"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python/0001-setup.py-Use-setuptools-instead-of-distutils.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python/0001-setup.py-Use-setuptools-instead-of-distutils.patch
new file mode 100644
index 0000000..9bc8b36
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python/0001-setup.py-Use-setuptools-instead-of-distutils.patch
@@ -0,0 +1,29 @@
+From 36f8106535150b970c75e8b8456ebc5a7d1dbdb3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 2 Mar 2022 11:11:01 -0800
+Subject: [PATCH] setup.py: Use setuptools instead of distutils
+
+distutils is deprecated and will be gone in 3.12+
+
+Upstream-Status: Submitted [https://github.com/aws/aws-iot-device-sdk-python/pull/305]
+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 3846bae..d0c2b8d 100644
+--- a/setup.py
++++ b/setup.py
+@@ -3,7 +3,7 @@ sys.path.insert(0, 'AWSIoTPythonSDK')
+ import AWSIoTPythonSDK
+ currentVersion = AWSIoTPythonSDK.__version__
+ 
+-from distutils.core import setup
++from setuptools import setup
+ setup(
+     name = 'AWSIoTPythonSDK',
+     packages=['AWSIoTPythonSDK', 'AWSIoTPythonSDK.core',
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.4.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.5.1.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.4.9.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.5.1.bb
index 27f37fe..0b2181e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.4.9.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aws-iot-device-sdk-python_1.5.1.bb
@@ -6,10 +6,14 @@
     file://LICENSE.txt;md5=9ac49901b833e769c7d6f21e8dbd7b30 \
     file://AWSIoTPythonSDK/core/protocol/paho/client.py;endline=14;md5=5a3c8a1a4bb71bd934f450ecff972ad9 \
 "
+SRCREV = "6ca6c73775c953114f83240a850a0d1ab49b68ac"
+SRC_URI = "git://github.com/aws/aws-iot-device-sdk-python;branch=master;protocol=https \
+           file://0001-setup.py-Use-setuptools-instead-of-distutils.patch \
+           "
 
-SRC_URI[sha256sum] = "84b440c5929f33da1cd204f3ad0ea891e208637dd63de9fb039ed7d49d78c303"
+S = "${WORKDIR}/git"
 
-inherit pypi setuptools3
+inherit setuptools3
 
 PYPI_PACKAGE = "AWSIoTPythonSDK"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-babel_2.9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-babel_2.9.1.bb
deleted file mode 100644
index 11c8d60..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-babel_2.9.1.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-DESCRIPTION = "A collection of tools for internationalizing Python applications"
-HOMEPAGE = "http://babel.edgewall.org/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=05fb707293a85504aa67afc8ea34d747"
-
-SRC_URI[sha256sum] = "bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"
-
-PYPI_PACKAGE = "Babel"
-
-inherit pypi setuptools3
-
-CLEANBROKEN = "1"
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-codecs \
-    ${PYTHON_PN}-difflib \
-    ${PYTHON_PN}-distutils \
-    ${PYTHON_PN}-netserver \
-    ${PYTHON_PN}-numbers \
-    ${PYTHON_PN}-pickle \
-    ${PYTHON_PN}-pytz \
-    ${PYTHON_PN}-shell \
-    ${PYTHON_PN}-threading \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-backcall_0.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-backcall_0.2.0.bb
index 56b1485..434ab57c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-backcall_0.2.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-backcall_0.2.0.bb
@@ -9,4 +9,4 @@
 SRC_URI[md5sum] = "1f4c9a370c78743406296f48e56e8821"
 SRC_URI[sha256sum] = "5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"
 
-inherit setuptools3 pypi
+inherit pypi python_flit_core
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-backports-functools-lru-cache_1.6.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-backports-functools-lru-cache_1.6.4.bb
deleted file mode 100644
index 392c044..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-backports-functools-lru-cache_1.6.4.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Backport of functools.lru_cache from Python 3.3"
-HOMEPAGE = "https://github.com/jaraco/backports.functools_lru_cache"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6"
-
-PYPI_PACKAGE = "backports.functools_lru_cache"
-
-SRC_URI[sha256sum] = "d5ed2169378b67d3c545e5600d363a923b09c456dab1593914935a68ad478271"
-
-DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-pickle \
-    ${PYTHON_PN}-threading \
-    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.4.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.4.bb
index f1d3876..cfdbde9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.4.bb
@@ -2,7 +2,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
 
-SRC_URI[sha256sum] = "6d11adea0214a43813887bfe71a377b5a9955e4c826c8ffd341b494e3ab25260"
+SRC_URI[sha256sum] = "2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"
 
 DEPENDS = "python3-pbr-native python3-git python3-pbr python3-pyyaml python3-six python3-stevedore"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt/run-ptest
deleted file mode 100644
index b63c4de..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/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-bcrypt_3.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt_3.2.0.bb
deleted file mode 100644
index a6d5007..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bcrypt_3.2.0.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-DESCRIPTION = "Modern password hashing for your software and your servers."
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8f7bb094c7232b058c7e9f2e431f389c"
-
-DEPENDS += "${PYTHON_PN}-cffi-native"
-
-SRC_URI[md5sum] = "fe31390dab603728f756cd3d6830c80a"
-SRC_URI[sha256sum] = "5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-RDEPENDS:${PN}:class-target += "\
-    ${PYTHON_PN}-cffi \
-    ${PYTHON_PN}-ctypes \
-    ${PYTHON_PN}-shell \
-    ${PYTHON_PN}-six \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bidict_0.21.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bidict_0.21.4.bb
index 266dc60..a154bfb 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bidict_0.21.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bidict_0.21.4.bb
@@ -6,6 +6,6 @@
 
 SRC_URI[sha256sum] = "42c84ffbe6f8de898af6073b4be9ea7ccedcd78d3474aa844c54e49d5a079f6f"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 DEPENDS += "python3-setuptools-scm-native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.3.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.4.0.bb
similarity index 72%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.3.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.4.0.bb
index cac003a..39d1618 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.3.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.4.0.bb
@@ -1,9 +1,9 @@
 SUMMARY = "A high-level Python efficient arrays of booleans -- C extension"
 HOMEPAGE = "https://github.com/ilanschnell/bitarray"
-LICENSE = "PSF"
+LICENSE = "PSF-2.0"
 LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=2ad702cdcd49e8d2ac01d7e7d0810d2d"
 
-SRC_URI[sha256sum] = "4da790ab193e993107f3ff0aebc4f8d6ad5196a19071fbafad16b02898a44fd7"
+SRC_URI[sha256sum] = "f1203e902d51df31917d77eeba9c3fe78d032873a2ad78c737e26420f0080e58"
 
 inherit setuptools3 pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitstruct_8.12.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitstruct_8.13.0.bb
similarity index 79%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bitstruct_8.12.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bitstruct_8.13.0.bb
index f53f84f..954c9ab 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitstruct_8.12.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitstruct_8.13.0.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d9aa4ec07de78abae21c490c9ffe61bd"
 
-SRC_URI[sha256sum] = "45b2b932ce6681f5c6ce8cba39abdd423b579b0568c76fa48b1e09c88368ede7"
+SRC_URI[sha256sum] = "7b87d9e41ff552a8cae06ea2368c3772b6f3102bdab4b65e793be7590d69f03b"
 
 PYPI_PACKAGE = "bitstruct"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.2.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_5.0.0.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.2.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_5.0.0.bb
index 1040dc7..f2974f7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_4.2.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_5.0.0.bb
@@ -8,7 +8,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=439a07e400525964c3c82684146e46eb"
 
-inherit pypi setuptools3 ptest
+inherit pypi python_setuptools_build_meta ptest
 
 SRC_URI += " \
 	file://run-ptest \
@@ -27,6 +27,6 @@
 	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
 }
 
-SRC_URI[sha256sum] = "89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693"
+SRC_URI[sha256sum] = "486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-can_3.3.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-can_3.3.4.bb
index 760b5dd..4fe7bcb 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-can_3.3.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-can_3.3.4.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Controller Area Network (CAN) interface module for Python"
 SECTION = "devel/python"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e6a600fd5e1d9cbde2d983680233ad02"
 
 SRC_URI[md5sum] = "305075968c56bd85130b19d86e9e505d"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_37.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_37.0.7.bb
similarity index 71%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_37.0.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_37.0.7.bb
index 9642bc5..c179071 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_37.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_37.0.7.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d9aa4ec07de78abae21c490c9ffe61bd"
 
-SRC_URI[sha256sum] = "5852ad9fd17ddd7b1a1ce87b21b000e7f5716b358cdac4fdaca13b3e292f4c99"
+SRC_URI[sha256sum] = "e603a7e1e40f5b4963c4c64cf4b013264afa009e232a878c73d31c29942e4466"
 
 PYPI_PACKAGE = "cantools"
 
@@ -14,6 +14,8 @@
 	${PYTHON_PN}-bitstruct \
 	${PYTHON_PN}-core \
 	${PYTHON_PN}-textparser \
+	${PYTHON_PN}-typing-extensions \
+	${PYTHON_PN}-diskcache \
 "
 
 CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.2.bb
index d3f6cd8..cafc32a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.4.2.bb
@@ -6,7 +6,7 @@
 
 SRC_URI[sha256sum] = "e283e70b55a049ff364cc5e648fde587e4d9b0e87e4b2664c69e639135e6b3b8"
 
-inherit pypi setuptools3 ptest
+inherit pypi python_setuptools_build_meta ptest
 
 SRC_URI += " \
         file://run-ptest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cchardet_2.1.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cchardet_2.1.7.bb
index 8fa9797..d6d9696 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cchardet_2.1.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cchardet_2.1.7.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Universal character encoding detector"
 HOMEPAGE = "https://github.com/PyYoshi/cChardet"
-LICENSE = "MPLv1.1"
+LICENSE = "MPL-1.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6ecda54f6f525388d71d6b3cd92f7474"
 
 SRC_URI[sha256sum] = "c428b6336545053c2589f6caf24ea32276c6664cb86db817e03a94c60afa0eaf"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2021.10.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2021.10.8.bb
deleted file mode 100644
index 4c376da..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-certifi_2021.10.8.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "Python package for providing Mozilla's CA Bundle."
-DESCRIPTION = "This installable Python package contains a CA Bundle that you can reference in your \
-Python code. This is useful for verifying HTTP requests, for example.  This is the same CA Bundle \
-which ships with the Requests codebase, and is derived from Mozilla Firefox's canonical set."
-HOMEPAGE = " http://certifi.io/"
-
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=67da0714c3f9471067b729eca6c9fbe8"
-
-SRC_URI[sha256sum] = "78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.15.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.15.0.bb
deleted file mode 100644
index c36f23b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cffi_1.15.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Foreign Function Interface for Python calling C code"
-HOMEPAGE = "http://cffi.readthedocs.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf"
-DEPENDS += "libffi ${PYTHON_PN}-pycparser"
-
-SRC_URI[sha256sum] = "920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN}:class-target = " \
-    ${PYTHON_PN}-ctypes \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-pycparser \
-    ${PYTHON_PN}-shell \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-chardet_4.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-chardet_4.0.0.bb
deleted file mode 100644
index 8b3c8bb..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-chardet_4.0.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Universal encoding detector for Python 2 and 3"
-LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a6f89e2100d9b6cdffcea4f398e37343"
-
-SRC_URI[sha256sum] = "0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"
-
-# setup.py of chardet needs this.
-DEPENDS += "${PYTHON_PN}-pytest-runner-native"
-
-inherit pypi setuptools3
-
-PACKAGES =+ "${PN}-cli"
-FILES:${PN}-cli += " \
-    ${PYTHON_SITEPACKAGES_DIR}/chardet/cli \
-"
-
-RDEPENDS:${PN}-cli = "${PN} "
-
-RDEPENDS:${PN}:class-target += " \
-    ${PYTHON_PN}-logging \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-charset-normalizer_2.0.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-charset-normalizer_2.0.12.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-charset-normalizer_2.0.10.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-charset-normalizer_2.0.12.bb
index 3c1e680..47b8579 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-charset-normalizer_2.0.10.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-charset-normalizer_2.0.12.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=0974a390827087287db39928f7c524b5"
 
-SRC_URI[sha256sum] = "876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd"
+SRC_URI[sha256sum] = "2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cheetah_3.2.6.post1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cheetah_3.2.6.post2.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cheetah_3.2.6.post1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cheetah_3.2.6.post2.bb
index 4487729..8eed99e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cheetah_3.2.6.post1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cheetah_3.2.6.post2.bb
@@ -11,4 +11,4 @@
 
 BBCLASSEXTEND = "native nativesdk"
 
-SRC_URI[sha256sum] = "58b5d84e5fbff6cf8e117414b3ea49ef51654c02ee887d155113c5b91d761967"
+SRC_URI[sha256sum] = "63157d7a00a273b59676b5be5aa817c75c37efc88478231f1a160f4cfb7f7878"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_15.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_15.0.1.bb
index 9eafbaa..d17ab87 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_15.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-coloredlogs_15.0.1.bb
@@ -8,10 +8,6 @@
 
 inherit pypi setuptools3
 
-do_compile:prepend() {
-    sed -ie "s/find_pth_directory(),/'',/g" ${S}/setup.py
-}
-
 do_install:append() {
     rm -rf ${D}${datadir}
 }
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-configobj/0001-Switch-from-using-distutils-to-setuptools.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-configobj/0001-Switch-from-using-distutils-to-setuptools.patch
new file mode 100644
index 0000000..ed6ceca
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-configobj/0001-Switch-from-using-distutils-to-setuptools.patch
@@ -0,0 +1,28 @@
+From ad9024e50a9df4a2b8a1a019e07bb133c3df31bf Mon Sep 17 00:00:00 2001
+From: Daniel Watkins <daniel@daniel-watkins.co.uk>
+Date: Thu, 28 Aug 2014 18:49:04 +0200
+Subject: [PATCH] Switch from using distutils to setuptools.
+
+Upstream-Status: Backport
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index c6d57a6..6755ab4 100644
+--- a/setup.py
++++ b/setup.py
+@@ -12,7 +12,7 @@
+ # http://opensource.org/licenses/BSD-3-Clause
+ import os
+ import sys
+-from distutils.core import setup
++from setuptools import setup
+ # a simple import wouldn't work if we moved towards a package with __init__
+ from _version import __version__
+ 
+-- 
+2.30.2
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-configobj_5.0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-configobj_5.0.6.bb
index 1b85368..1125a63 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-configobj_5.0.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-configobj_5.0.6.bb
@@ -6,4 +6,6 @@
 PYPI_PACKAGE = "configobj"
 SRC_URI[sha256sum] = "a2f5650770e1c87fb335af19a9b7eb73fc05ccf22144eb68db7d00cd2bcb0902"
 
+SRC_URI += "file://0001-Switch-from-using-distutils-to-setuptools.patch"
+
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-configparser_5.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-configparser_5.2.0.bb
deleted file mode 100644
index e629331..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-configparser_5.2.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY = "This module provides the ConfigParser class which implements a basic configuration language which provides a structure similar to what's found in Microsoft Windows INI files."
-SECTION = "devel/python"
-HOMEPAGE = "https://docs.python.org/3/library/configparser.html"
-LICENSE = "MIT"
-
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=10;endline=10;md5=23f9ad5cad3d8cc0336e2a5d8a87e1fa"
-
-SRC_URI[sha256sum] = "1b35798fdf1713f1c3139016cfcbc461f09edbf099d1fb658d4b7479fcaa3daa"
-
-DEPENDS += "${PYTHON_PN}-setuptools-scm-native ${PYTHON_PN}-toml-native"
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-configshell-fb_1.1.29.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-configshell-fb_1.1.29.bb
index 359c9d0..2bb196c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-configshell-fb_1.1.29.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-configshell-fb_1.1.29.bb
@@ -12,5 +12,6 @@
 S = "${WORKDIR}/git"
 
 inherit setuptools3
+PIP_INSTALL_PACKAGE = "configshell_fb"
 
 RDEPENDS:${PN} += "python3-modules python3-fcntl python3-six"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-contextlib2_21.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-contextlib2_21.6.0.bb
index f9900b1..5a54c69 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-contextlib2_21.6.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-contextlib2_21.6.0.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Backports and enhancements for the contextlib module"
 HOMEPAGE = "http://contextlib2.readthedocs.org/"
 SECTION = "devel/python"
-LICENSE = "PSF & Apache-2"
+LICENSE = "PSF-2.0 & Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=d2b6be100f1002194122ec9bfee7b8b4"
 
 SRC_URI[sha256sum] = "ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cppy_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cppy_1.2.0.bb
similarity index 64%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cppy_1.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cppy_1.2.0.bb
index 79ddbed..f86f571 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cppy_1.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cppy_1.2.0.bb
@@ -3,8 +3,9 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=0bfb3e39b13587f0028f17baf0e42371"
 
-SRC_URI[md5sum] = "2110891d75aa12551deebba1603428c6"
-SRC_URI[sha256sum] = "4eda6f1952054a270f32dc11df7c5e24b259a09fddf7bfaa5f33df9fb4a29642"
+SRC_URI[sha256sum] = "95e8862e4f826c3f2a6b7b658333b162f80cbe9f943aa0d0a7a6b2ef850aeffc"
+
+RDEPENDS:${PN} += "python3-setuptools python3-distutils"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-crc32c_2.2.post0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-crc32c_2.2.post0.bb
new file mode 100644
index 0000000..4f6a3ab
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-crc32c_2.2.post0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A python package implementing the crc32c algorithmin hardware and software"
+HOMEPAGE = "https://github.com/ICRAR/crc32c"
+
+LICENSE = "BSD-2-Clause & BSD-3-Clause & CRC32C-ADLER & LGPL-2.0-or-later"
+LIC_FILES_CHKSUM = " \
+    file://LICENSE;md5=4fbd65380cdd255951079008b364516c \
+    file://LICENSE.google-crc32c;md5=e9ed01b5e5ac9eae23fc2bb33701220c \
+    file://LICENSE.slice-by-8;md5=6b3bc7709d6b2db6646ec2467310ff6b \
+    file://crc32c_adler.c;startline=9;endline=24;md5=c60e6e55d0e5d95effa6fad27db0711a \
+"
+
+SRC_URI[sha256sum] = "3d058e7a5e37e4985d1a7ad4cb702bca56b490daa658d4851377d13ead8b435e"
+
+inherit pypi setuptools3
+
+do_compile:prepend() {
+    if ! grep 'platform =' setup.cfg; then
+        printf "[build_ext]\nplatform = ${TARGET_ARCH}" >> setup.cfg
+    fi
+}
+
+RDEPENDS:${PN} += "python3-core"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-crcmod/0001-setup.py-use-setuptools-instead-of-distutils.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-crcmod/0001-setup.py-use-setuptools-instead-of-distutils.patch
new file mode 100644
index 0000000..9bcb871
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-crcmod/0001-setup.py-use-setuptools-instead-of-distutils.patch
@@ -0,0 +1,22 @@
+From 3dc1e9584ed2ac81e7526b8dbf76b4a06ea8ac76 Mon Sep 17 00:00:00 2001
+From: Justin Bronder <jsbronder@cold-front.org>
+Date: Tue, 1 Mar 2022 10:34:42 -0500
+Subject: [PATCH] setup.py use setuptools instead of distutils
+
+Upstream-Status: Pending
+Signed-off-by: Justin Bronder <jsbronder@cold-front.org>
+---
+ setup.py | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index e3a524b..2f2bcfc 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,5 +1,4 @@
+-from distutils.core import setup
+-from distutils.extension import Extension
++from setuptools import Extension, setup
+ import sys,os
+ 
+ if sys.version_info[0] == 2:
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-crcmod_1.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-crcmod_1.7.bb
index df8f0d8..f8f1683 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-crcmod_1.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-crcmod_1.7.bb
@@ -4,7 +4,7 @@
 SECTION = "devel/python"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a19291627cad2d1dfbfcf3c9fb85c2"
 
-SRC_URI[md5sum] = "2d5b92117d958dcead94f9e17f54cd32"
+SRC_URI += "file://0001-setup.py-use-setuptools-instead-of-distutils.patch"
 SRC_URI[sha256sum] = "dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e"
 
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_36.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_36.0.1.bb
deleted file mode 100644
index b9e6b81..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_36.0.1.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "Test vectors for the cryptography package."
-HOMEPAGE = "https://cryptography.io/"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0 | BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4 \
-                    file://LICENSE.APACHE;md5=4e168cce331e5c827d4c2b68a6200e1b \
-                    file://LICENSE.BSD;md5=5ae30ba4123bc4f2fa49aa0b0dce887b"
-
-# NOTE: Make sure to keep this recipe at the same version as python3-cryptography
-#       Upgrade both recipes at the same time
-
-SRC_URI[sha256sum] = "fc8490afd5424342b868215435bd174dcd76ab396b4ea9435498be5721dcd598"
-
-PYPI_PACKAGE = "cryptography_vectors"
-
-inherit pypi setuptools3
-
-DEPENDS += " \
-    ${PYTHON_PN}-cryptography \
-"
-
-BBCLASSEXTEND = "native nativesdk"
-
-UPSTREAM_CHECK_REGEX = ""
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/0001-Cargo.toml-specify-pem-version.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/0001-Cargo.toml-specify-pem-version.patch
deleted file mode 100644
index d7ab757..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/0001-Cargo.toml-specify-pem-version.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From ec8d3f3c61280c8140b34ed1479baef5e706f064 Mon Sep 17 00:00:00 2001
-From: Tim Orling <tim.orling@konsulko.com>
-Date: Fri, 14 Jan 2022 22:02:25 -0800
-Subject: [PATCH] Cargo.toml: specify pem version
-
-pem = "1.0" is not resolving, specify the current
-pem = { version: "1.0.2"}
-
-Upstream-Status: Pending
-
-Signed-off-by: Tim Orling <tim.orling@konsulko.com>
----
- src/rust/Cargo.toml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml
-index 617167d0..174eaa80 100644
---- a/src/rust/Cargo.toml
-+++ b/src/rust/Cargo.toml
-@@ -9,7 +9,7 @@ publish = false
- lazy_static = "1"
- pyo3 = { version = "0.15.1" }
- asn1 = { version = "0.8.7", default-features = false, features = ["derive"] }
--pem = "1.0"
-+pem = { version = "1.0.2" }
- chrono = { version = "0.4", default-features = false, features = ["alloc", "clock"] }
- ouroboros = "0.13"
- 
--- 
-2.30.2
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/0002-Cargo.toml-edition-2018-2021.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/0002-Cargo.toml-edition-2018-2021.patch
deleted file mode 100644
index 366e3a4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/0002-Cargo.toml-edition-2018-2021.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 4b73298b214a5b69ea6edf3c2e21dd82b2b29708 Mon Sep 17 00:00:00 2001
-From: Tim Orling <tim.orling@konsulko.com>
-Date: Fri, 14 Jan 2022 22:34:59 -0800
-Subject: [PATCH 2/2] Cargo.toml: edition 2018 -> 2021
-
-Upstream-Status: Pending
-
-Signed-off-by: Tim Orling <tim.orling@konsulko.com>
----
- src/rust/Cargo.toml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml
-index 174eaa80..7ad053d9 100644
---- a/src/rust/Cargo.toml
-+++ b/src/rust/Cargo.toml
-@@ -2,7 +2,7 @@
- name = "cryptography-rust"
- version = "0.1.0"
- authors = ["The cryptography developers <cryptography-dev@python.org>"]
--edition = "2018"
-+edition = "2021"
- publish = false
- 
- [dependencies]
--- 
-2.30.2
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/check-memfree.py b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/check-memfree.py
deleted file mode 100755
index c111a90..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/check-memfree.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python3
-# https://stackoverflow.com/questions/22102999/get-total-physical-memory-in-python/28161352
-import sys
-meminfo = dict((i.split()[0].rstrip(':'),int(i.split()[1])) for i in open('/proc/meminfo').readlines())
-mem_free = meminfo['MemTotal']/1024./1024.
-if mem_free < 2.:
-    raise RuntimeError("Insufficient free memory({:.3f}): requires > 2 GB".format(mem_free))
-    sys.exit(1)
-else:
-    print("Free memory: {:.3f} GB".format(mem_free))
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/run-ptest
deleted file mode 100644
index 1e97dda..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography/run-ptest
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-if ./check-memfree.py; then
-    pytest -vvvv tests/
-fi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_36.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_36.0.1.bb
deleted file mode 100644
index abb1538..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_36.0.1.bb
+++ /dev/null
@@ -1,121 +0,0 @@
-SUMMARY = "Provides cryptographic recipes and primitives to python developers"
-HOMEPAGE = "https://cryptography.io/"
-SECTION = "devel/python"
-LICENSE = "( Apache-2.0 | BSD-3-Clause ) & PSF-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=bf405a8056a6647e7d077b0e7bc36aba \
-                    file://LICENSE.APACHE;md5=4e168cce331e5c827d4c2b68a6200e1b \
-                    file://LICENSE.BSD;md5=5ae30ba4123bc4f2fa49aa0b0dce887b \
-                    file://LICENSE.PSF;md5=43c37d21e1dbad10cddcd150ba2c0595 \
-                   "
-LDSHARED += "-pthread"
-
-SRC_URI[sha256sum] = "53e5c1dc3d7a953de055d77bef2ff607ceef7a2aac0353b5d630ab67f7423638"
-
-SRC_URI += " \
-    file://run-ptest \
-    file://check-memfree.py \
-    file://0001-Cargo.toml-specify-pem-version.patch \
-    file://0002-Cargo.toml-edition-2018-2021.patch \
-"
-
-inherit pypi setuptools3_rust
-
-DEPENDS += " \
-    ${PYTHON_PN}-asn1crypto-native \
-    ${PYTHON_PN}-cffi-native \
-    ${PYTHON_PN}-setuptools-rust-native \
-    ${PYTHON_PN}-six-native \
-"
-
-SRC_URI += " \
-    crate://crates.io/Inflector/0.11.4 \
-    crate://crates.io/aliasable/0.1.3 \
-    crate://crates.io/asn1/0.8.7 \
-    crate://crates.io/asn1_derive/0.8.7 \
-    crate://crates.io/autocfg/1.0.1 \
-    crate://crates.io/base64/0.13.0 \
-    crate://crates.io/bitflags/1.3.2 \
-    crate://crates.io/cfg-if/1.0.0 \
-    crate://crates.io/chrono/0.4.19 \
-    crate://crates.io/indoc-impl/0.3.6 \
-    crate://crates.io/indoc/0.3.6 \
-    crate://crates.io/instant/0.1.12 \
-    crate://crates.io/lazy_static/1.4.0 \
-    crate://crates.io/libc/0.2.112 \
-    crate://crates.io/lock_api/0.4.5 \
-    crate://crates.io/num-integer/0.1.44 \
-    crate://crates.io/num-traits/0.2.14 \
-    crate://crates.io/once_cell/1.9.0 \
-    crate://crates.io/ouroboros/0.13.0 \
-    crate://crates.io/ouroboros_macro/0.13.0 \
-    crate://crates.io/parking_lot/0.11.2 \
-    crate://crates.io/parking_lot_core/0.8.5 \
-    crate://crates.io/paste-impl/0.1.18 \
-    crate://crates.io/paste/0.1.18 \
-    crate://crates.io/pem/1.0.2 \
-    crate://crates.io/proc-macro-error-attr/1.0.4 \
-    crate://crates.io/proc-macro-error/1.0.4 \
-    crate://crates.io/proc-macro-hack/0.5.19 \
-    crate://crates.io/proc-macro2/1.0.36 \
-    crate://crates.io/pyo3-build-config/0.15.1 \
-    crate://crates.io/pyo3-macros-backend/0.15.1 \
-    crate://crates.io/pyo3-macros/0.15.1 \
-    crate://crates.io/pyo3/0.15.1 \
-    crate://crates.io/quote/1.0.14 \
-    crate://crates.io/redox_syscall/0.2.10 \
-    crate://crates.io/scopeguard/1.1.0 \
-    crate://crates.io/smallvec/1.7.0 \
-    crate://crates.io/stable_deref_trait/1.2.0 \
-    crate://crates.io/syn/1.0.85 \
-    crate://crates.io/unicode-xid/0.2.2 \
-    crate://crates.io/unindent/0.1.7 \
-    crate://crates.io/version_check/0.9.4 \
-    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi/0.3.9 \
-"
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-asn1crypto \
-    ${PYTHON_PN}-cffi \
-    ${PYTHON_PN}-idna \
-    ${PYTHON_PN}-setuptools \
-    ${PYTHON_PN}-six \
-"
-
-RDEPENDS:${PN}:append:class-target = " \
-    ${PYTHON_PN}-numbers \
-    ${PYTHON_PN}-threading \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    ${PYTHON_PN}-bcrypt \
-    ${PYTHON_PN}-cryptography-vectors \
-    ${PYTHON_PN}-hypothesis \
-    ${PYTHON_PN}-iso8601 \
-    ${PYTHON_PN}-pretend \
-    ${PYTHON_PN}-psutil \
-    ${PYTHON_PN}-pytest \
-    ${PYTHON_PN}-pytest-subtests \
-    ${PYTHON_PN}-pytz \
-"
-
-inherit ptest
-
-do_install_ptest() {
-    install -D ${WORKDIR}/check-memfree.py ${D}${PTEST_PATH}/
-    install -d ${D}${PTEST_PATH}/tests
-    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-    install -d ${D}${PTEST_PATH}/tests/hazmat
-    cp -rf ${S}/tests/hazmat/* ${D}${PTEST_PATH}/tests/hazmat/
-    cp -r ${S}/pyproject.toml ${D}${PTEST_PATH}/
-}
-
-FILES:${PN}-ptest += " \
-    ${PTEST_PATH}/check-memfree.py \
-"
-FILES:${PN}-dbg += " \
-    ${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}/hazmat/bindings/.debug \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.7.bb
index 1bcf18a..70e9831 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.7.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Convex optimization package"
 HOMEPAGE = "http://cvxopt.org"
-LICENSE = "GPL-3.0"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ba1a8a73d8ebea5c47a1173aaf476ddd"
 
 SRC_URI = "git://github.com/cvxopt/cvxopt;protocol=https;branch=master"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.2.bb
index cd0bdf6..e281f0f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.8.2.bb
@@ -7,7 +7,8 @@
 SRC_URI[sha256sum] = "0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"
 
 PYPI_PACKAGE = "python-dateutil"
-inherit pypi setuptools3
+PIP_INSTALL_PACKAGE = "python_dateutil"
+inherit pypi python_setuptools_build_meta
 
 PACKAGES =+ "${PN}-zoneinfo"
 FILES:${PN}-zoneinfo = "${libdir}/${PYTHON_DIR}/site-packages/dateutil/zoneinfo"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.3.bb
index 0cf9dc8..b1ba953 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.3.bb
@@ -1,6 +1,6 @@
 SUMMARY = "language bindings for libdbus, for Python 3.5 or later"
 HOMEPAGE = "https://github.com/ldo/dbussy"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
 
 SRC_URI = "git://github.com/ldo/dbussy.git;branch=master;protocol=https \
@@ -12,6 +12,8 @@
 
 inherit setuptools3
 
+PIP_INSTALL_PACKAGE = "DBussy"
+
 RDEPENDS:${PN} += "\
     python3-asyncio \
     python3-core \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-defusedxml_0.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-defusedxml_0.7.1.bb
index e5790f4..3396c72 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-defusedxml_0.7.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-defusedxml_0.7.1.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "Python package with modified subclasses of all stdlib XML \
 parsers that prevent any potentially malicious operation."
 
-LICENSE = "PSF"
+LICENSE = "PSF-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=056fea6a4b395a24d0d278bf5c80249e"
 
 SRC_URI[sha256sum] = "1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.26.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.27.bb
similarity index 70%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.26.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.27.bb
index 523f0e0..786afab 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.26.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_2.2.27.bb
@@ -5,7 +5,7 @@
 
 inherit setuptools3
 
-SRC_URI[sha256sum] = "dfa537267d52c6243a62b32855a744ca83c37c70600aacffbfd98bc5d6d8518f"
+SRC_URI[sha256sum] = "1ee37046b0bf2b61e83b3a01d067323516ec3b6f2b17cd49b1326dd4ba9dc913"
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-sqlparse \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.12.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.11.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.12.bb
index 6b97ef4..adbc498 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.11.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_3.2.12.bb
@@ -1,7 +1,7 @@
 require python-django.inc
 inherit setuptools3
 
-SRC_URI[sha256sum] = "69c94abe5d6b1b088bf475e09b7b74403f943e34da107e798465d2045da27e75"
+SRC_URI[sha256sum] = "9772e6935703e59e993960832d66a614cf0233a1c5123bc6224ecc6ad69e41e2"
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-sqlparse \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.0.2.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.0.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.0.2.bb
index 6cf8cad..690b980 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.0.2.bb
@@ -1,7 +1,7 @@
 require python-django.inc
 inherit setuptools3
 
-SRC_URI[sha256sum] = "2485eea3cc4c3bae13080dee866ebf90ba9f98d1afe8fda89bfb0eb2e218ef86"
+SRC_URI[sha256sum] = "110fb58fb12eca59e072ad59fc42d771cd642dd7a2f2416582aa9da7a8ef954a"
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-sqlparse \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.2.1.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.2.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.2.1.bb
index ee670af..67158fb 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.2.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.2.1.bb
@@ -3,9 +3,9 @@
 LICENSE = "ISC"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=5af50906b5929837f667dfe31052bd34"
 
-SRC_URI[sha256sum] = "e79351e032d0b606b98d38a4b0e6e2275b31a5b85c873e587cc11b73aca026d6"
+SRC_URI[sha256sum] = "0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e"
 
-inherit pypi setuptools3 ptest
+inherit pypi python_poetry_core ptest
 
 SRC_URI += " \
 	file://run-ptest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.6.0.bb
index 40bc186..8e17438 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.6.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dominate_2.6.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Dominate is a Python library for creating and manipulating HTML documents using an elegant DOM API."
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b52f2d57d10c4f7ee67a7eb9615d5d24"
 
 SRC_URI[md5sum] = "9f714324ca99eee98bb3c3cdbe838de6"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_4.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_4.3.1.bb
index a16306e..35e8d79 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_4.3.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-engineio_4.3.1.bb
@@ -5,7 +5,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=42d0a9e728978f0eeb759c3be91536b8"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 PYPI_PACKAGE = "python-engineio"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb
index 3fdc136..2fbc277 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Python bindings for Fast Artificial Neural Networks 2.2.0 (FANN >= 2.2.0)"
 SECTION = "devel/python"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c73b943dc75f6f65e007c56ac6515c8f"
 
 SRC_URI[md5sum] = "0b85b418018746d63ed66b55465697a9"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.17.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.17.3.bb
index d672708..51691b7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.17.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-fasteners_0.17.3.bb
@@ -5,14 +5,9 @@
 
 SRC_URI[sha256sum] = "a9a42a208573d4074c77d041447336cf4e3c1389a256fd3e113ef59cf29b7980"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 RDEPENDS:${PN} += "\
 	${PYTHON_PN}-logging \
 	${PYTHON_PN}-fcntl \
 "
-
-do_compile:prepend() {
-	echo "from setuptools import setup" > ${S}/setup.py
-	echo "setup()" >> ${S}/setup.py
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb
deleted file mode 100644
index 6932b3b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-feedformatter_0.4.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "A Python library for generating news feeds in RSS and Atom formats"
-HOMEPAGE = "http://code.google.com/p/feedformatter/"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=258e3f39e2383fbd011035d04311008d"
-
-SRC_URI = "git://github.com/marianoguerra/feedformatter.git;branch=master;protocol=https"
-SRCREV = "7391193c83e10420b5a2d8ef846d23fc368c6d85"
-
-S = "${WORKDIR}/git"
-
-inherit setuptools3
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-xml \
-    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_3.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_3.1.0.bb
index 7a7c3fa..8153156 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_3.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_3.1.0.bb
@@ -6,7 +6,7 @@
 
 PYPI_PACKAGE = "Flask-Migrate"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-flask-sqlalchemy \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_5.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_5.1.1.bb
index 3d7a1cb..00e9580 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_5.1.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-socketio_5.1.1.bb
@@ -5,7 +5,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=38cc21254909604298ce763a6e4440a0"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 PYPI_PACKAGE = "Flask-SocketIO"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-frozenlist_1.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-frozenlist_1.3.0.bb
index e3a932f..4dd7738 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-frozenlist_1.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-frozenlist_1.3.0.bb
@@ -5,7 +5,7 @@
 
 SRC_URI[sha256sum] = "ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 BBCLASSEXTEND = "native nativesdk"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gcovr_5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gcovr_5.0.bb
index 330831a..27ae198 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gcovr_5.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gcovr_5.0.bb
@@ -10,6 +10,7 @@
 S = "${WORKDIR}/git"
 
 inherit setuptools3
+PIP_INSTALL_PACKAGE = "gcovr"
 
 RDEPENDS:${PN} += "${PYTHON_PN}-jinja2 ${PYTHON_PN}-lxml ${PYTHON_PN}-setuptools ${PYTHON_PN}-pygments"
 
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
index 4337d85..8e90746 100644
--- 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
@@ -14,6 +14,7 @@
 SRCREV = "73ec5ec96cca32f2e2461d3964fc3d4ab80248f9"
 
 inherit setuptools3
+PIP_INSTALL_PACKAGE = "geomet"
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-click \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.2.bb
index d064ba5..274f240 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "GMP/MPIR, MPFR, and MPC interface to Python 2.6+ and 3.x"
 SECTION = "devel/python"
-LICENSE = "GPL-3.0 | LGPL-3.0+"
+LICENSE = "GPL-3.0-only | LGPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
                     file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_1.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_1.1.2.bb
index 4a5b1d2..d14987b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_1.1.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-greenlet_1.1.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Python lightweight in-process concurrent programming"
 HOMEPAGE = "https://greenlet.readthedocs.io/en/latest/"
-LICENSE = "MIT & PSF"
+LICENSE = "MIT & PSF-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e95668d68e4329085c7ab3535e6a7aee \
                     file://LICENSE.PSF;md5=c106931d9429eda0492617f037b8f69a"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
index aef67b5..4713da1 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
@@ -26,11 +26,9 @@
  setup.py | 9 ++++++---
  1 file changed, 6 insertions(+), 3 deletions(-)
 
-diff --git a/setup.py b/setup.py
-index a316038..70aa174 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -76,8 +76,11 @@ def check_linker_need_libatomic():
+@@ -87,8 +87,11 @@ def check_linker_need_libatomic():
      """Test if linker on system needs libatomic."""
      code_test = (b'#include <atomic>\n' +
                   b'int main() { return std::atomic<int64_t>{}; }')
@@ -44,15 +42,12 @@
                                  stdin=PIPE,
                                  stdout=PIPE,
                                  stderr=PIPE)
-@@ -87,7 +90,7 @@ def check_linker_need_libatomic():
+@@ -98,7 +101,7 @@ def check_linker_need_libatomic():
      # Double-check to see if -latomic actually can solve the problem.
      # https://github.com/grpc/grpc/issues/22491
      cpp_test = subprocess.Popen(
--        [cxx, '-x', 'c++', '-std=c++11', '-latomic', '-'],
-+        [cxx, cxx_args, '-x', 'c++', '-std=c++11', '-latomic', '-'],
+-        [cxx, '-x', 'c++', '-std=c++11', '-', '-latomic'],
++        [cxx, cxx_args, '-x', 'c++', '-std=c++11', '-', '-latomic'],
          stdin=PIPE,
          stdout=PIPE,
          stderr=PIPE)
--- 
-2.30.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.41.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.44.0.bb
similarity index 68%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.41.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.44.0.bb
index fdc4ad9..1b219fc 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.41.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.44.0.bb
@@ -10,13 +10,8 @@
 DEPENDS += "${PYTHON_PN}-grpcio"
 
 SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch"
-
-SRC_URI[sha256sum] = "f16e4c63996ca8fe0af1eb9c4a07e5207874c4a69f890ccb824cd858521d981f"
+SRC_URI[sha256sum] = "be37f458ea510c9a8f1caabbc2b258d12e55d189a567f5edcace90f27dc0efbf"
 
 RDEPENDS:${PN} = "${PYTHON_PN}-grpcio"
 
 BBCLASSEXTEND = "native nativesdk"
-
-# Needs abseil-cpp which does not build for ppc64le/musl
-COMPATIBLE_HOST:libc-musl:powerpc64le = "null"
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
index 3736694..febe6c4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch
@@ -28,11 +28,9 @@
  src/python/grpcio/commands.py | 5 ++++-
  2 files changed, 10 insertions(+), 4 deletions(-)
 
-diff --git a/setup.py b/setup.py
-index 4b8c9d4..271b7b1 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -172,8 +172,11 @@ def check_linker_need_libatomic():
+@@ -199,8 +199,11 @@ def check_linker_need_libatomic():
      """Test if linker on system needs libatomic."""
      code_test = (b'#include <atomic>\n' +
                   b'int main() { return std::atomic<int64_t>{}; }')
@@ -46,20 +44,18 @@
                                  stdin=PIPE,
                                  stdout=PIPE,
                                  stderr=PIPE)
-@@ -183,7 +186,7 @@ def check_linker_need_libatomic():
+@@ -210,7 +213,7 @@ def check_linker_need_libatomic():
      # Double-check to see if -latomic actually can solve the problem.
      # https://github.com/grpc/grpc/issues/22491
      cpp_test = subprocess.Popen(
--        [cxx, '-x', 'c++', '-std=c++11', '-latomic', '-'],
-+        [cxx, cxx_args, '-x', 'c++', '-std=c++11', '-latomic', '-'],
+-        [cxx, '-x', 'c++', '-std=c++11', '-', '-latomic'],
++        [cxx, cxx_args, '-x', 'c++', '-std=c++11', '-', '-latomic'],
          stdin=PIPE,
          stdout=PIPE,
          stderr=PIPE)
-diff --git a/src/python/grpcio/commands.py b/src/python/grpcio/commands.py
-index a8b2ff5..b928201 100644
 --- a/src/python/grpcio/commands.py
 +++ b/src/python/grpcio/commands.py
-@@ -219,7 +219,10 @@ class BuildExt(build_ext.build_ext):
+@@ -228,7 +228,10 @@ class BuildExt(build_ext.build_ext):
              """
              try:
                  # TODO(lidiz) Remove the generated a.out for success tests.
@@ -71,6 +67,3 @@
                                             stdin=subprocess.PIPE,
                                             stdout=subprocess.PIPE,
                                             stderr=subprocess.PIPE)
--- 
-2.30.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch
new file mode 100644
index 0000000..e8048fe
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch
@@ -0,0 +1,79 @@
+An all-in-one patch that fixes several issues:
+
+1) UnscaledCycleClock not fully implemented for ppc*-musl (disabled on musl)
+2) powerpc stacktrace implementation only works on glibc (disabled on musl)
+3) powerpc stacktrace implementation has ppc64 assumptions (fixed)
+4) examine_stack.cpp makes glibc assumptions on powerpc (fixed)
+
+Sourced from void linux
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/absl/base/internal/unscaledcycleclock.cc
++++ b/absl/base/internal/unscaledcycleclock.cc
+@@ -20,7 +20,7 @@
+ #include <intrin.h>
+ #endif
+ 
+-#if defined(__powerpc__) || defined(__ppc__)
++#if (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
+ #ifdef __GLIBC__
+ #include <sys/platform/ppc.h>
+ #elif defined(__FreeBSD__)
+@@ -59,7 +59,7 @@ double UnscaledCycleClock::Frequency() {
+   return base_internal::NominalCPUFrequency();
+ }
+ 
+-#elif defined(__powerpc__) || defined(__ppc__)
++#elif (defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)
+ 
+ int64_t UnscaledCycleClock::Now() {
+ #ifdef __GLIBC__
+--- a/absl/base/internal/unscaledcycleclock.h
++++ b/absl/base/internal/unscaledcycleclock.h
+@@ -46,7 +46,8 @@
+ 
+ // The following platforms have an implementation of a hardware counter.
+ #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
+-    defined(__powerpc__) || defined(__ppc__) || defined(__riscv) ||     \
++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
++    defined(__riscv) ||     \
+     defined(_M_IX86) || defined(_M_X64)
+ #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
+ #else
+--- a/absl/debugging/internal/examine_stack.cc
++++ b/absl/debugging/internal/examine_stack.cc
+@@ -27,6 +27,10 @@
+ #include <csignal>
+ #include <cstdio>
+ 
++#if defined(__powerpc__)
++#include <asm/ptrace.h>
++#endif
++
+ #include "absl/base/attributes.h"
+ #include "absl/base/internal/raw_logging.h"
+ #include "absl/base/macros.h"
+@@ -63,8 +67,10 @@ void* GetProgramCounter(void* vuc) {
+     return reinterpret_cast<void*>(context->uc_mcontext.pc);
+ #elif defined(__powerpc64__)
+     return reinterpret_cast<void*>(context->uc_mcontext.gp_regs[32]);
+-#elif defined(__powerpc__)
++#elif defined(__powerpc__) && defined(__GLIBC__)
+     return reinterpret_cast<void*>(context->uc_mcontext.uc_regs->gregs[32]);
++#elif defined(__powerpc__)
++    return reinterpret_cast<void*>(((struct pt_regs *)context->uc_regs)->gregs[32]);
+ #elif defined(__riscv)
+     return reinterpret_cast<void*>(context->uc_mcontext.__gregs[REG_PC]);
+ #elif defined(__s390__) && !defined(__s390x__)
+--- a/absl/debugging/internal/stacktrace_config.h
++++ b/absl/debugging/internal/stacktrace_config.h
+@@ -59,7 +59,7 @@
+ #elif defined(__i386__) || defined(__x86_64__)
+ #define ABSL_STACKTRACE_INL_HEADER \
+   "absl/debugging/internal/stacktrace_x86-inl.inc"
+-#elif defined(__ppc__) || defined(__PPC__)
++#elif (defined(__ppc__) || defined(__PPC__)) && defined(__GLIBC__)
+ #define ABSL_STACKTRACE_INL_HEADER \
+   "absl/debugging/internal/stacktrace_powerpc-inl.inc"
+ #elif defined(__aarch64__)
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.43.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.44.0.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.43.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.44.0.bb
index 6d76967..ffa009d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.43.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.44.0.bb
@@ -11,8 +11,9 @@
                                 file://boring_ssl.patch \
                                 file://mips_bigendian.patch \
                                 file://0001-absl-always-use-asm-sgidefs.h.patch \
+                                file://abseil-ppc-fixes.patch;patchdir=third_party/abseil-cpp \
 "
-SRC_URI[sha256sum] = "735d9a437c262ab039d02defddcb9f8f545d7009ae61c0114e19dda3843febe5"
+SRC_URI[sha256sum] = "4bae1c99896045d3062ab95478411c8d5a52cb84b91a1517312629fa6cfeb50e"
 
 RDEPENDS:${PN} = "${PYTHON_PN}-protobuf \
                   ${PYTHON_PN}-setuptools \
@@ -43,6 +44,3 @@
 BBCLASSEXTEND = "native nativesdk"
 
 CCACHE_DISABLE = "1"
-
-# needs vdso support
-COMPATIBLE_HOST:libc-musl:powerpc64le = "null"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-h11_0.12.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-h11_0.13.0.bb
similarity index 73%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-h11_0.12.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-h11_0.13.0.bb
index 4cd0d4d..afc6439 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-h11_0.12.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-h11_0.13.0.bb
@@ -5,4 +5,4 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"
+SRC_URI[sha256sum] = "70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.6.0.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.5.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.6.0.bb
index aad2f91..64abe73 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.5.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.6.0.bb
@@ -4,11 +4,10 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=113251d71fb0384712c719b567261c5c"
 
-SRC_URI[sha256sum] = "77c7be4001ac7d3ed80477de5b6942501d782de1bbe4886597bdfec2a7ab821f"
+SRC_URI[sha256sum] = "8752d2814a92aba4e2b2a5922d2782d0029102d99caaf3c201a566bc0b40db29"
 
 SRC_URI:append = " \
            file://0001-setup_build.py-avoid-absolute-path.patch \
-           file://0001-setup.py-Fix-numpy-version.patch \
           "
 
 inherit pkgconfig pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-html2text_2020.1.16.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-html2text_2020.1.16.bb
index c5ef2cc..64873d2 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-html2text_2020.1.16.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-html2text_2020.1.16.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Convert HTML to Markdown-formatted text"
 HOMEPAGE = "https://github.com/Alir3z4/html2text"
 
-LICENSE = "GPL-3.0"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 SRC_URI[md5sum] = "c77b580c94d1a9e0145f23cc4472993d"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.20.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.20.4.bb
similarity index 74%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.20.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.20.4.bb
index bda1d1f..52fd88d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.20.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-httplib2_0.20.4.bb
@@ -4,9 +4,9 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=56e5e931172b6164b62dc7c4aba6c8cf"
 
-SRC_URI[sha256sum] = "e404681d2fbcec7506bcb52c503f2b021e95bee0ef7d01e5c221468a2406d8dc"
+SRC_URI[sha256sum] = "58a98e45b4b1a48273073f905d2961666ecf0fbac4250ea5b47aef259eb5c585"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-compression \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.14.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_4.0.0.bb
similarity index 74%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.14.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_4.0.0.bb
index 6b2fd3a..86eed73 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_3.14.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-humanize_4.0.0.bb
@@ -5,9 +5,9 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENCE;md5=4ecc42519e84f6f3e23529464df7bd1d"
 
-SRC_URI[sha256sum] = "60dd8c952b1df1ad83f0903844dec50a34ba7a04eea22a6b14204ffb62dbb0a4"
+SRC_URI[sha256sum] = "ee1f872fdfc7d2ef4a28d4f80ddde9f96d36955b5d6b0dac4bdeb99502bddb00"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 DEPENDS += "\
     ${PYTHON_PN}-setuptools-scm-native \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_21.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_21.0.0.bb
index e9bf92a..7cdecf1 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_21.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-hyperlink_21.0.0.bb
@@ -5,7 +5,7 @@
 
 SRC_URI[sha256sum] = "427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 RDEPENDS:${PN} += "${PYTHON_PN}-stringold ${PYTHON_PN}-netclient ${PYTHON_PN}-idna"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-icu/0001-Fix-host-contamination-of-include-files.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-icu/0001-Fix-host-contamination-of-include-files.patch
index c45217a..36485d5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-icu/0001-Fix-host-contamination-of-include-files.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-icu/0001-Fix-host-contamination-of-include-files.patch
@@ -1,4 +1,4 @@
-From 8abf79f77d9151d6786da3c8e868117822bce6d4 Mon Sep 17 00:00:00 2001
+From a82fea9663f0c70cf57cd06650f400e878afc5e4 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Fri, 16 Apr 2021 10:48:36 -0700
 Subject: [PATCH] Fix host contamination of include files
@@ -10,12 +10,13 @@
 Upstream-Status: Inappropriate [OE specific]
 Signed-off-by: Armin Kuster <akuster808@gmail.com>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  setup.py | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 diff --git a/setup.py b/setup.py
-index e647db4..abed399 100644
+index d308b80..56e9c74 100644
 --- a/setup.py
 +++ b/setup.py
 @@ -81,7 +81,7 @@ Building PyICU %s for ICU %s (max ICU major version supported: %s)
@@ -27,14 +28,11 @@
      'freebsd': False, # not tested
      'win32': False,   # no icu-config
      'sunos5': False,  # not tested
-@@ -267,7 +267,6 @@ setup(name="PyICU",
-       ext_modules=[Extension('_icu',
+@@ -273,7 +273,6 @@ setup(name="PyICU",
+       ext_modules=[Extension('icu._icu_',
                               [filename for filename in sorted(os.listdir(os.curdir))
                                if filename.endswith('.cpp')],
 -                             include_dirs=_includes,
                               extra_compile_args=_cflags,
                               extra_link_args=_lflags,
                               libraries=_libraries)],
--- 
-2.31.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-icu_2.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-icu_2.8.1.bb
new file mode 100644
index 0000000..027ef12
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-icu_2.8.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Python extension wrapping the ICU C++ API"
+HOMEPAGE = "https://gitlab.pyicu.org/main/pyicu"
+BUGTRACKER = "https://gitlab.pyicu.org/main/pyicu/-/issues"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0724597863f1581ab01429e0423e779f"
+
+DEPENDS += "icu"
+
+PYPI_PACKAGE = "PyICU"
+SRC_URI[sha256sum] = "f0b9549a87f87ba7c413f13679d137271e0b37f1f39b0109ace38257d4d148d6"
+
+SRC_URI += "file://0001-Fix-host-contamination-of-include-files.patch"
+
+inherit pkgconfig pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-icu_2.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-icu_2.8.bb
deleted file mode 100644
index f3dd7a4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-icu_2.8.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "Python extension wrapping the ICU C++ API"
-HOMEPAGE = "https://gitlab.pyicu.org/main/pyicu"
-BUGTRACKER = "https://gitlab.pyicu.org/main/pyicu/-/issues"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c7c4bfd81a21e3b6368bdcced992bf59"
-
-DEPENDS += "icu"
-
-PYPI_PACKAGE = "PyICU"
-SRC_URI[sha256sum] = "3d80de47045a8163db5aebc947c42b4d429eeea4f0c32af4f40b33981fa872b9"
-
-SRC_URI += "file://0001-Fix-host-contamination-of-include-files.patch"
-
-inherit pkgconfig pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.16.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.16.1.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.16.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.16.1.bb
index 04d5b9c..d1d318d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.16.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-imageio_2.16.1.bb
@@ -5,7 +5,7 @@
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=7b9bbbb543b6af3e6b53f9b7fb68f71d"
 
-SRC_URI[sha256sum] = "7f7d8d8e1eb6f8bb1d15e0dd93bee3f72026a4c3b96e9c690e42f403f7bdea3e"
+SRC_URI[sha256sum] = "7f123cb23a77ac5abe8ed4e7ad6a60831a82de2c5d123463dcf1d4278c4779d2"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-intervals_1.10.0.post1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-intervals_1.10.0.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-intervals_1.10.0.post1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-intervals_1.10.0.bb
index fd63642..abf87c5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-intervals_1.10.0.post1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-intervals_1.10.0.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://github.com/AlexandreDecan/python-intervals"
 SECTION = "devel/python"
 
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=05f1e16a8e59ce3e9a979e881816c2ab"
 
 PYPI_PACKAGE := "python-intervals"
@@ -22,6 +22,6 @@
 	cp -f ${S}/README.md ${D}${PTEST_PATH}
 }
 
-SRC_URI[sha256sum] = "68a772dc2de6b2b2e83b457329ffa8f9286710994b8070db54348a05762515d2"
+SRC_URI[sha256sum] = "0d26746eaed0be78a61dd289bb7a10721b08770bb3e807614835f490d514f2a5"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipy_1.01.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipy_1.01.bb
index 8b39679..8e7b5b9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipy_1.01.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipy_1.01.bb
@@ -12,7 +12,7 @@
 SRC_URI[md5sum] = "d6cf83e7f418ebbd23324ba1c658b907"
 SRC_URI[sha256sum] = "edeca741dea2d54aca568fa23740288c3fe86c0f3ea700344571e9ef14a7cc1a"
 
-inherit pypi setuptools3 ptest
+inherit pypi setuptools3_legacy ptest
 
 SRC_URI += " \
 	file://run-ptest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_2.0.2.bb
index bc05f06..e578b8a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_2.0.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-iso3166_2.0.2.bb
@@ -5,7 +5,7 @@
 
 SRC_URI[sha256sum] = "04d02cfcfc18a6f8a9a4edb4d0a55e2e4fc575626c29d702f750de415e88d372"
 
-inherit pypi setuptools3 ptest
+inherit pypi python_setuptools_build_meta ptest
 
 SRC_URI += " \
 	file://run-ptest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_1.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_1.0.2.bb
deleted file mode 100644
index 474c2a8..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-iso8601_1.0.2.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "Simple module to parse ISO 8601 dates"
-HOMEPAGE = "http://pyiso8601.readthedocs.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b05625f2336fa024e8d57e65c6595844"
-
-SRC_URI[sha256sum] = "27f503220e6845d9db954fb212b95b0362d8b7e6c1b2326a87061c3de93594b1"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-numbers \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.10.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.10.1.bb
index 5cb41c5..2797782 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.10.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-isort_5.10.1.bb
@@ -6,7 +6,7 @@
 
 SRC_URI[sha256sum] = "e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"
 
-inherit pypi setuptools3
+inherit pypi python_poetry_core
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-datetime \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_2.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_2.1.1.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_2.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_2.1.1.bb
index 30d23c6..ef1d7cc 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_2.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-itsdangerous_2.1.1.bb
@@ -3,7 +3,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=4cda9a0ebd516714f360b0e9418cfb37"
 
-SRC_URI[sha256sum] = "d848fcb8bc7d507c4546b448574e8a44fc4ea2ba84ebf8d783290d53e81992f5"
+SRC_URI[sha256sum] = "7b7d3023cd35d9cb0c1fd91392f8c95c6fa02c59bf8ad64b8849be3401b95afb"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.7.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.7.bb
index c250030..537fd33 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.7.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=61b63ea9d36f6fb63ddaaaac8265304f"
 
-SRC_URI[sha256sum] = "0cc514559596fa380bf188e31b0cdf3d9e6d9cc162fdca8a49ed511b291a9ae1"
+SRC_URI[sha256sum] = "b15d3fd043ad0c40b2ff17f7df2ddaec2e880bb923b40d133939a107c97fde5c"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb
index 11ab8b0..6c2af0d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb
@@ -10,6 +10,8 @@
 
 inherit setuptools3
 
+PIP_INSTALL_PACKAGE = "Keras_Applications"
+
 S = "${WORKDIR}/git"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb
index 3daf134..38f5216 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.0.0.bb
@@ -5,6 +5,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f0c851d60495c7e27225a819e179208a"
 
 inherit setuptools3 pkgconfig features_check
+PIP_INSTALL_PACKAGE = "Kivy"
 
 SRC_URI = "\
     git://github.com/kivy/kivy.git;protocol=https;branch=master \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.3.2.bb
deleted file mode 100644
index dac6cd4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.3.2.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "A fast implementation of the Cassowary constraint solver"
-HOMEPAGE = "https://github.com/nucleic/kiwi"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://setup.py;endline=7;md5=e54bd74bd9d0a84ae3f8f6d21ada0ab4"
-
-SRC_URI[sha256sum] = "fc4453705b81d03568d5b808ad8f09c77c47534f6ac2e72e733f9ca4714aa75c"
-
-inherit pypi setuptools3
-
-DEPENDS += "\
-    python3-cppy-native \
-"
-
-RDEPENDS:${PN} += "\
-    python3-core \
-    python3-setuptools \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.4.0.bb
new file mode 100644
index 0000000..ab1ad71
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-kiwisolver_1.4.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "A fast implementation of the Cassowary constraint solver"
+HOMEPAGE = "https://github.com/nucleic/kiwi"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f137eeae9cf8004d06830f6ab25b2d52"
+
+SRC_URI[sha256sum] = "7508b01e211178a85d21f1f87029846b77b2404a4c68cbd14748d4d4142fa3b8"
+
+inherit pypi python_setuptools_build_meta
+
+DEPENDS += "\
+    python3-cppy-native \
+"
+
+RDEPENDS:${PN} += "\
+    python3-core \
+    python3-setuptools \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.57.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.57.bb
index 39819f4..948f765 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.57.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-langtable_0.0.57.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "langtable is used to guess reasonable defaults for locale,\
 keyboard, territory"
 HOMEPAGE = "https://github.com/mike-fabian/langtable/"
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
 SECTION = "devel/python"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_21.6.14.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_21.6.14.bb
index efa8854..2ee4909 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_21.6.14.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-license-expression_21.6.14.bb
@@ -6,12 +6,9 @@
 
 SRC_URI[sha256sum] = "9de87a427c9a449eee7913472fb9ed03b63036295547369fdbf95f76a8b924b2"
 
-inherit pypi ptest setuptools3
+inherit pypi ptest python_setuptools_build_meta
 
-DEPENDS += "\
-    ${PYTHON_PN}-setuptools-scm-native \
-    ${PYTHON_PN}-wheel-native \
-"
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-booleanpy \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing/0001-setup.py-use-setuptools-instead-of-distutils.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing/0001-setup.py-use-setuptools-instead-of-distutils.patch
new file mode 100644
index 0000000..28af8fa
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing/0001-setup.py-use-setuptools-instead-of-distutils.patch
@@ -0,0 +1,27 @@
+From 04d9a4cea699d64b464daef7760de594b1c7f9bf Mon Sep 17 00:00:00 2001
+From: Justin Bronder <jsbronder@cold-front.org>
+Date: Tue, 1 Mar 2022 17:34:34 -0500
+Subject: [PATCH] setup.py: use setuptools instead of distutils
+
+With python 3.10, distutils is deprecated in favor of setuptools and will
+be removed in python 3.12.
+
+Upstream-Status: Submitted [sent to maintainer at russell-lrparsing@stuart.id.au]
+Signed-off-by: Justin Bronder <jsbronder@cold-front.org>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 89ea344..2848b4f 100644
+--- a/setup.py
++++ b/setup.py
+@@ -3,7 +3,7 @@
+ # Copyright (c) 2013,2014,2015,2016,2017,2018,2021 Russell Stuart.
+ # Licensed under GPLv2, or any later version.
+ #
+-from distutils.core import setup
++from setuptools import setup
+ import re
+ 
+ def get_long_description():
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb
index 24e4e26..673d32c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb
@@ -1,13 +1,15 @@
 SUMMARY = "Python LR parsing library"
 SECTION = "devel/python"
-LICENSE = "AGPL-3.0"
+LICENSE = "AGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://agpl-3.0.txt;md5=73f1eb20517c55bf9493b7dd6e480788"
 
 HOMEPAGE = "http://lrparsing.sourceforge.net/"
 BUGTRACKER = "https://sourceforge.net/p/lrparsing/tickets/"
 UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/lrparsing/files/"
 UPSTREAM_CHECK_REGEX = "lrparsing-(?P<pver>\d+(\.\d+)+)"
-SRC_URI = "${SOURCEFORGE_MIRROR}/lrparsing/lrparsing-${PV}.tar.gz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/lrparsing/lrparsing-${PV}.tar.gz \
+           file://0001-setup.py-use-setuptools-instead-of-distutils.patch \
+           "
 SRC_URI[sha256sum] = "7c060d9f03cf582fdbc0ae0fef0ea2ff6fd56251047ba7e425af97e23f46f582"
 
 RDEPENDS:${PN} = " \
@@ -15,6 +17,7 @@
 "
 
 inherit setuptools3
+PIP_INSTALL_PACKAGE = "lrparsing"
 
 S = "${WORKDIR}/lrparsing-${PV}"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_2.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_2.3.1.bb
index c37cc22..1d5b146 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_2.3.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-luma-core_2.3.1.bb
@@ -4,12 +4,10 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=3b1d500f5911ec7522f1f790d616e0ee"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 SRC_URI[sha256sum] = "f293f5fff8946eea62af3a5d5d7da55c37d2b64aac6c9c90180a385da9f7d003"
 
-CLEANBROKEN = "1"
-
 PYPI_PACKAGE = "luma.core"
 
 RDEPENDS:${PN} += " \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml/0001-setupinfo.py-check-the-return-value.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml/0001-setupinfo.py-check-the-return-value.patch
deleted file mode 100644
index 7d91218..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml/0001-setupinfo.py-check-the-return-value.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 057872fa40e061100d61117cee5c3413ef2e40fc Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Thu, 20 Jan 2022 15:18:20 +0800
-Subject: [PATCH] setupinfo.py: check the return value
-
-Use the return value altogether to check the subprocess execute
-successfully or not as in some case it will print some noise
-message though run successfully as below.
-
- # python
- Python 3.8.10 (default, Nov 26 2021, 20:14:08)
- [GCC 9.3.0] on linux
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import subprocess
- >>> cmd = "pkg-config --modversion libxml-2.0"
- >>> p = subprocess.Popen(cmd, shell=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- >>> stdout_data, errors = p.communicate()
- >>> print(stdout_data)
- b'2.9.12\n'
- >>> print(errors)
- b'do_ypcall: clnt_call: RPC: Unable to send; errno = Network is unreachable\n'
- >>>
-
-Upstream-Status: Submitted [https://github.com/lxml/lxml/pull/336]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- setupinfo.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/setupinfo.py b/setupinfo.py
-index 8c2a36fb..c1247c6d 100644
---- a/setupinfo.py
-+++ b/setupinfo.py
-@@ -365,7 +365,7 @@ def run_command(cmd, *args):
-                          stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-     stdout_data, errors = p.communicate()
- 
--    if errors:
-+    if p.returncode != 0 and errors:
-         return ''
-     return decode_input(stdout_data).strip()
- 
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.8.0.bb
similarity index 89%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.7.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.8.0.bb
index 43f0712..c4d4df3 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.7.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lxml_4.8.0.bb
@@ -6,7 +6,7 @@
 C14N and much more."
 HOMEPAGE = "https://lxml.de/"
 SECTION = "devel/python"
-LICENSE = "BSD-3-Clause & GPLv2 & MIT & PSF"
+LICENSE = "BSD-3-Clause & GPL-2.0-only & MIT & PSF-2.0"
 LIC_FILES_CHKSUM = "file://LICENSES.txt;md5=e4c045ebad958ead4b48008f70838403 \
                     file://doc/licenses/elementtree.txt;md5=eb34d036a6e3d56314ee49a6852ac891 \
                     file://doc/licenses/BSD.txt;md5=700a1fc17f4797d4f2d34970c8ee694b \
@@ -18,11 +18,9 @@
 
 DEPENDS += "libxml2 libxslt"
 
-SRC_URI[sha256sum] = "a1613838aa6b89af4ba10a0f3a972836128801ed008078f8c1244e65958f1b24"
+SRC_URI[sha256sum] = "f63f62fc60e6228a4ca9abae28228f35e1bd3ce675013d1dfb828688d50c6e23"
 
-SRC_URI += " \
-           file://0001-setupinfo.py-check-the-return-value.patch \
-"
+SRC_URI += "${PYPI_SRC_URI}"
 inherit pkgconfig pypi setuptools3
 
 # {standard input}: Assembler messages:
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4/run-ptest
new file mode 100644
index 0000000..1b245bc
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest -v
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_3.1.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_3.1.10.bb
deleted file mode 100644
index b557529..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_3.1.10.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "python bindings for the lz4 compression library by Yann Collet"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=6231efa4dd4811e62407314d90a57573"
-
-DEPENDS += " \
-    ${PYTHON_PN}-setuptools-scm-native \
-    ${PYTHON_PN}-pkgconfig-native \
-"
-
-SRC_URI[sha256sum] = "439e575ecfa9ecffcbd63cfed99baefbe422ab9645b1e82278024d8a21d9720b"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_4.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_4.0.0.bb
new file mode 100644
index 0000000..ef5b006
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_4.0.0.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "python bindings for the lz4 compression library by Yann Collet"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6231efa4dd4811e62407314d90a57573"
+
+DEPENDS += " \
+    lz4 \
+    ${PYTHON_PN}-setuptools-scm-native \
+    ${PYTHON_PN}-pkgconfig-native \
+"
+
+SRC_URI += "file://run-ptest"
+
+SRC_URI[sha256sum] = "57c5dfd3b7dae833b0d2b2c1aafd7f9d0dfcab40683d183d010c67c9fd1beca3"
+
+inherit pkgconfig pypi python_setuptools_build_meta ptest
+
+RDEPENDS:${PN}-ptest += "${PYTHON_PN}-pytest ${PYTHON_PN}-multiprocessing ${PYTHON_PN}-psutil"
+
+do_install_ptest() {
+    cp -rf ${S}/tests/ ${D}${PTEST_PATH}/
+    # The stream API is experimental and not enabled yet, so don't ship the test suite
+    rm -rf ${D}${PTEST_PATH}/tests/stream
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-marshmallow_3.14.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-marshmallow_3.14.1.bb
index ddfe4b9..dc5f173 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-marshmallow_3.14.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-marshmallow_3.14.1.bb
@@ -15,4 +15,6 @@
 
 inherit setuptools3
 
+PIP_INSTALL_PACKAGE = "marshmallow"
+
 RDEPENDS:${PN} += "python3-core"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.5.1.bb
index 84bec0b..b9eab3c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.5.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-matplotlib_3.5.1.bb
@@ -5,7 +5,7 @@
 and interactive environments across platforms."
 HOMEPAGE = "https://github.com/matplotlib/matplotlib"
 SECTION = "devel/python"
-LICENSE = "PSF"
+LICENSE = "PSF-2.0"
 LIC_FILES_CHKSUM = "\
     file://setup.py;beginline=296;endline=296;md5=20e7ab4d2b2b1395a0e4ab800181eb96 \
     file://LICENSE/LICENSE;md5=afec61498aa5f0c45936687da9a53d74 \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.7.0.bb
similarity index 66%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.6.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.7.0.bb
index 513a5a9..a2c72fc 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.6.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-mccabe_0.7.0.bb
@@ -4,8 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a489dc62bacbdad3335c0f160a974f0f"
 
-SRC_URI[md5sum] = "723df2f7b1737b8887475bac4c763e1e"
-SRC_URI[sha256sum] = "dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
+SRC_URI[sha256sum] = "348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.6.bb
index aacc32a..2af7b57 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.6.bb
@@ -11,3 +11,5 @@
 S = "${WORKDIR}/git"
 
 inherit setuptools3
+
+PIP_INSTALL_PACKAGE = "monotonic"
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
index 1a494af..5dd717a 100644
--- 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
@@ -5,7 +5,7 @@
 
 PYPI_PACKAGE = "mypy"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 SRC_URI[sha256sum] = "704098302473cb31a218f1775a873b376b30b4c18229421e9e9dc8916fd16150"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ndg-httpsclient_0.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ndg-httpsclient_0.5.1.bb
deleted file mode 100644
index 6f3c096..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ndg-httpsclient_0.5.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-DESCRIPTION = "Provides enhanced HTTPS support for httplib and urllib2 using PyOpenSSL"
-HOMEPAGE = "https://github.com/cedadev/ndg_httpsclient/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://MANIFEST.in;md5=ce22c0cd986d2de3f7073cd6b5523ae0"
-
-SRC_URI[md5sum] = "b0fc8ea38f87d2c1ab1ed79a95c078f9"
-SRC_URI[sha256sum] = "d72faed0376ab039736c2ba12e30695e2788c4aa569c9c3e3d72131de2592210"
-
-inherit pypi setuptools3 update-alternatives
-
-PYPI_PACKAGE = "ndg_httpsclient"
-
-DEPENDS += " \
-    ${PYTHON_PN}-pyopenssl \
-    ${PYTHON_PN}-pyasn1 \
-"
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-pyopenssl \
-    ${PYTHON_PN}-pyasn1 \
-"
-
-BBCLASSEXTEND = "native nativesdk"
-
-UPSTREAM_CHECK_REGEX = ""
-
-ALTERNATIVE:${PN} = "ndg_httpclient"
-ALTERNATIVE_LINK_NAME[ndg_httpclient] = "${bindir}/ndg_httpclient"
-ALTERNATIVE_PRIORITY = "30"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.7.1.bb
similarity index 76%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.6.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.7.1.bb
index 1608e03..9e5b086 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.6.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-networkx_2.7.1.bb
@@ -1,9 +1,9 @@
 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"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=44614b6df7cf3c19be69d0a945e29904"
 
-SRC_URI[sha256sum] = "c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51"
+SRC_URI[sha256sum] = "d1194ba753e5eed07cdecd1d23c5cd7a3c772099bd8dbd2fea366788cf4de7ba"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-nocasedict_1.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-nocasedict_1.0.2.bb
index 952286d..591b9c6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-nocasedict_1.0.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-nocasedict_1.0.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A case-insensitive ordered dictionary for Python"
 HOMEPAGE = "https://github.com/pywbem/nocasedict"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a87a7059d580c45495c1218f53e3610d"
 
 SRC_URI[sha256sum] = "86e2dae49e34de7c31b65b486c8f9aa58b66dc2e8ee9b34c390c6c58885c85a0"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.4.0.bb
index e8620b1..d78bec0 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.4.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ntplib_0.4.0.bb
@@ -1,13 +1,11 @@
 DESCRIPTION = "This module offers a simple interface to query NTP servers from Python."
+HOMEPAGE = "https://github.com/cf-natali/ntplib"
 SECTION = "devel/python"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://ntplib.py;beginline=1;endline=23;md5=afa07338a9595257e94c205c3e72224d"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=40707636fe237d725e2bd32cd949b7fe"
 
-SRC_URI = "git://github.com/cf-natali/ntplib.git;branch=master;protocol=https"
-SRCREV ?= "b9c11c5906bc802a20a2dab390e57c50be558808"
+SRC_URI[sha256sum] = "899d8fb5f8c2555213aea95efca02934c7343df6ace9d7628a5176b176906267"
 
-S = "${WORKDIR}/git"
-
-inherit setuptools3 python3native
+inherit pypi setuptools3
 
 RDEPENDS:${PN} += "${PYTHON_PN}-datetime ${PYTHON_PN}-io"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-obd_0.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-obd_0.7.1.bb
index b3a78ad..0cb1b85 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-obd_0.7.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-obd_0.7.1.bb
@@ -1,5 +1,5 @@
 DESCRIPTION = "A python module for handling realtime sensor data from OBD-II vehicle ports"HOMEPAGE = "https://github.com/brendan-w/python-OBD"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://README.md;md5=58ba896fa086c96ad23317cebfeab277"
 
 SRC_URI[md5sum] = "305efcb6c650db7b9583532355ebeb7c"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_4.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_4.1.0.bb
index 2740b33..f2f1cf8 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_4.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ordered-set_4.1.0.bb
@@ -5,7 +5,7 @@
 
 SRC_URI[sha256sum] = "694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8"
 
-inherit pypi setuptools3 ptest
+inherit pypi python_flit_core ptest
 
 DEPENDS += "python3-pytest-runner-native"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pako_0.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pako_0.3.1.bb
index 65af412..34cd096 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pako_0.3.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pako_0.3.1.bb
@@ -8,5 +8,6 @@
 inherit pypi setuptools3
 
 do_install:append() {
-    rm -rf ${D}/usr/share
+  rm -rf ${D}${prefix}/pako/LICENSE
+  rm -rf ${D}${prefix}/pako
 }
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.9.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.10.3.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.9.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.10.3.bb
index 0a54efd..9f7f458 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.9.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-paramiko_2.10.3.bb
@@ -1,9 +1,9 @@
 DESCRIPTION = "The leading native Python SSHv2 protocol library."
 HOMEPAGE = "https://github.com/paramiko/paramiko/"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=fd0120fc2e9f841c73ac707a30389af5"
 
-SRC_URI[sha256sum] = "944a9e5dbdd413ab6c7951ea46b0ab40713235a9c4c5ca81cfe45c6f14fa677b"
+SRC_URI[sha256sum] = "ddb1977853aef82804b35d72a0e597b244fa326c404c350bd00c5b01dbfee71a"
 
 PYPI_PACKAGE = "paramiko"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.4.0.bb
new file mode 100644
index 0000000..7c520dd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-path_16.4.0.bb
@@ -0,0 +1,9 @@
+SUMMARY = "A module wrapper for os.path"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6"
+
+SRC_URI[sha256sum] = "baf2e757c4b19be8208f9e67e48fb475b4a577d5613590ce46693bdbdf082f52"
+
+inherit pypi python_setuptools_build_meta
+
+BBCLASSEXTEND = "nativesdk native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_9.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_9.0.1.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_9.0.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_9.0.1.bb
index de3c92c..fb86322 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_9.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_9.0.1.bb
@@ -13,6 +13,9 @@
 
 inherit setuptools3
 
+PIP_INSTALL_PACKAGE = "Pillow"
+PIP_INSTALL_DIST_PATH = "${S}/dist"
+
 DEPENDS += " \
     zlib \
     jpeg \
@@ -35,3 +38,5 @@
 RPROVIDES:${PN} += "python3-imaging"
 
 BBCLASSEXTEND = "native"
+
+SRCREV = "6deac9e3a23caffbfdd75c00d3f0a1cd36cdbd5d"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.18.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.18.bb
index a7a1384..f555144 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.18.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pint_0.18.bb
@@ -8,7 +8,7 @@
 
 PYPI_PACKAGE := "Pint"
 
-inherit pypi ptest setuptools3
+inherit pypi ptest python_setuptools_build_meta
 
 SRC_URI[sha256sum] = "8c4bce884c269051feb7abc69dbfd18403c0c764abc83da132e8a7222f8ba801"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.5.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.5.5.bb
index 2d68a78..1aa91de 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.5.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pkgconfig_1.5.5.bb
@@ -10,7 +10,7 @@
                  ${PYTHON_PN}-shell \
                  "
 
-inherit pypi setuptools3
+inherit pypi python_poetry_core
 
 BBCLASSEXTEND = "native"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ply_3.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ply_3.11.bb
deleted file mode 100644
index 99c037b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ply_3.11.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Python Lex and Yacc"
-DESCRIPTION = "Python ply: PLY is yet another implementation of lex and yacc for Python"
-HOMEPAGE = "https://pypi.python.org/pypi/ply"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://README.md;beginline=5;endline=32;md5=f5ee5c355c0e6719c787a71b8f0fa96c"
-
-SRC_URI[md5sum] = "6465f602e656455affcd7c5734c638f8"
-SRC_URI[sha256sum] = "00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN}:class-target += "\
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-shell \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.2.0.bb
index e712c8f..0dad8b0 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.2.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-portion_2.2.0.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://github.com/AlexandreDecan/portion"
 SECTION = "devel/python"
 
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=05f1e16a8e59ce3e9a979e881816c2ab"
 
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.8.1.bb
index 8426e48..a45ef45 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.8.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.8.1.bb
@@ -4,19 +4,18 @@
 limitations in C and linux. This module provides a nice non-messy python(ic) \
 interface."
 SECTION = "devel/python"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1475481f9ec754d758859bd2c75f6f6f"
 
 S = "${WORKDIR}/git"
 B = "${S}"
 
 SRCREV = "5e12e398eb5c4e30d7b29b02458c76d2cc780700"
-PV = "1.8.1+git${SRCPV}"
-
 SRC_URI = "git://github.com/seveas/python-prctl;protocol=https;branch=main \
            file://0001-support-cross-complication.patch \
 "
 inherit setuptools3 python3native
+PIP_INSTALL_PACKAGE = "python_prctl"
 
 DEPENDS += "libcap"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pretend_1.0.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pretend_1.0.9.bb
deleted file mode 100644
index 21d14a0..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pretend_1.0.9.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "A library for stubbing in Python"
-HOMEPAGE = "https://github.com/alex/pretend"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=411780c0b7fa756753e94affeee5bc99"
-
-SRC_URI[md5sum] = "ad53883ede48aeac7ae584f0de0240e8"
-SRC_URI[sha256sum] = "c90eb810cde8ebb06dafcb8796f9a95228ce796531bc806e794c2f4649aa1b10"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_2.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_3.1.1.bb
similarity index 88%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_2.4.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_3.1.1.bb
index 8f5eb42..5520edc 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_2.4.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prettytable_3.1.1.bb
@@ -3,7 +3,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c9a6829fcd174d9535b46211917c7671"
 
-SRC_URI[sha256sum] = "18e56447f636b447096977d468849c1e2d3cfa0af8e7b5acfcf83a64790c0aca"
+SRC_URI[sha256sum] = "43c9e23272ca253d038ae76fe3adde89794e92e7fcab2ddf5b94b38642ef4f21"
 
 do_install:append() {
     perm_files=`find "${D}${PYTHON_SITEPACKAGES_DIR}/" -name "*.txt" -o -name "PKG-INFO"`
@@ -35,6 +35,7 @@
 
 RDEPENDS:${PN}-ptest += " \
     ${PYTHON_PN}-pytest \
+    ${PYTHON_PN}-pytest-lazy-fixture \
     ${PYTHON_PN}-sqlite3 \
 "
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.19.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.19.4.bb
similarity index 91%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.19.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.19.4.bb
index 5e0ee7c..8514754 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.19.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-protobuf_3.19.4.bb
@@ -7,7 +7,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "d975a6314fbf5c524d4981e24294739216b5fb81ef3c14b86fb4b045d6690907"
+SRC_URI[sha256sum] = "9df0c10adf3e83015ced42a9a7bd64e13d06c4cf45c340d2c63020ea04499d0a"
 
 # 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-psutil/0001-fix-failure-test-cases.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil/0001-fix-failure-test-cases.patch
deleted file mode 100644
index 34ea03b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil/0001-fix-failure-test-cases.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From 8b4e38958ff8bdbb3ece4796bfa2d3b6f7536f71 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Wed, 23 Feb 2022 11:54:40 +0800
-Subject: [PATCH] fix failure test cases
-
-The test cases is not robust enough. skip some cases that is
-not suitable for all conditions.
-
-* test_io_counters failed when kernel config CONFIG_TASKSTATS
-  and CONFIG_TASK_IO_ACCOUNTING are not enable in OE 
-* test_setup_script failed since oe don't install setup.py
-* test_used failed since oe use git source for free, so the version
-  is 3.3.17-dirty
-* test_weird_environ failed since gcc not installed
-* test_debug failed since it is designed to run when PSUTIL_DEBUG is set
-* test_against_findmnt/test_comparisons/test_disk_partitions_mocked/
-  test_disk_partitions is not suitable for Linux nfs boot
-
-Upstream-Status: Pending
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- psutil/tests/test_contracts.py | 1 +
- psutil/tests/test_linux.py     | 8 ++++++--
- psutil/tests/test_misc.py      | 4 ++++
- psutil/tests/test_process.py   | 5 +++++
- psutil/tests/test_system.py    | 1 +
- psutil/tests/test_unicode.py   | 4 +++-
- 6 files changed, 20 insertions(+), 3 deletions(-)
-
-diff --git a/psutil/tests/test_contracts.py b/psutil/tests/test_contracts.py
-index 7401cc1..bf0fca0 100755
---- a/psutil/tests/test_contracts.py
-+++ b/psutil/tests/test_contracts.py
-@@ -172,6 +172,7 @@ class TestAvailProcessAPIs(PsutilTestCase):
-     def test_rlimit(self):
-         self.assertEqual(hasattr(psutil.Process, "rlimit"), LINUX or FREEBSD)
- 
-+    @unittest.skip("broken on OE since kernel config maye not be enabled")
-     def test_io_counters(self):
-         hasit = hasattr(psutil.Process, "io_counters")
-         self.assertEqual(hasit, False if MACOS or SUNOS else True)
-diff --git a/psutil/tests/test_linux.py b/psutil/tests/test_linux.py
-index 20e28d2..66b6dda 100755
---- a/psutil/tests/test_linux.py
-+++ b/psutil/tests/test_linux.py
-@@ -196,8 +196,9 @@ def get_free_version_info():
-     out = sh(["free", "-V"]).strip()
-     if 'UNKNOWN' in out:
-         raise unittest.SkipTest("can't determine free version")
--    return tuple(map(int, out.split()[-1].split('.')))
--
-+    vlist = out.split()[-1].split('.')
-+    vlist[:] = [n.split('-')[0] for n in vlist]
-+    return tuple(map(int, vlist))
- 
- @contextlib.contextmanager
- def mock_open_content(for_path, content):
-@@ -1289,6 +1290,7 @@ class TestRootFsDeviceFinder(PsutilTestCase):
-         finder.ask_sys_class_block()
- 
-     @unittest.skipIf(GITHUB_ACTIONS, "unsupported on GITHUB_ACTIONS")
-+    @unittest.skip("Broken for oe")
-     def test_comparisons(self):
-         finder = RootFsDeviceFinder()
-         self.assertIsNotNone(finder.find())
-@@ -1311,11 +1313,13 @@ class TestRootFsDeviceFinder(PsutilTestCase):
- 
-     @unittest.skipIf(not which("findmnt"), "findmnt utility not available")
-     @unittest.skipIf(GITHUB_ACTIONS, "unsupported on GITHUB_ACTIONS")
-+    @unittest.skip("Broken for oe")
-     def test_against_findmnt(self):
-         psutil_value = RootFsDeviceFinder().find()
-         findmnt_value = sh("findmnt -o SOURCE -rn /")
-         self.assertEqual(psutil_value, findmnt_value)
- 
-+    @unittest.skip("Broken for oe")
-     def test_disk_partitions_mocked(self):
-         with mock.patch(
-                 'psutil._pslinux.cext.disk_partitions',
-diff --git a/psutil/tests/test_misc.py b/psutil/tests/test_misc.py
-index d946eb6..121004a 100755
---- a/psutil/tests/test_misc.py
-+++ b/psutil/tests/test_misc.py
-@@ -54,6 +54,8 @@ from psutil.tests import unittest
- # ===================================================================
- 
- 
-+PSUTIL_DEBUG = bool(os.getenv('PSUTIL_DEBUG', 0))
-+
- class TestMisc(PsutilTestCase):
- 
-     def test_process__repr__(self, func=repr):
-@@ -368,6 +370,7 @@ class TestMisc(PsutilTestCase):
- 
-     # XXX: https://github.com/pypa/setuptools/pull/2896
-     @unittest.skipIf(APPVEYOR, "temporarily disabled due to setuptools bug")
-+    @unittest.skip("OE run this test outof source tree")
-     def test_setup_script(self):
-         setup_py = os.path.join(ROOT_DIR, 'setup.py')
-         if CI_TESTING and not os.path.exists(setup_py):
-@@ -401,6 +404,7 @@ class TestMisc(PsutilTestCase):
-                 reload_module(psutil)
-             self.assertIn("version conflict", str(cm.exception).lower())
- 
-+    @unittest.skipIf(not PSUTIL_DEBUG, "env PSUTIL_DEBUG not set")
-     def test_debug(self):
-         if PY3:
-             from io import StringIO
-diff --git a/psutil/tests/test_process.py b/psutil/tests/test_process.py
-index c9059e3..a34ba3d 100755
---- a/psutil/tests/test_process.py
-+++ b/psutil/tests/test_process.py
-@@ -36,6 +36,7 @@ from psutil._compat import PY3
- from psutil._compat import FileNotFoundError
- from psutil._compat import long
- from psutil._compat import super
-+from psutil._compat import which
- from psutil.tests import APPVEYOR
- from psutil.tests import CI_TESTING
- from psutil.tests import GITHUB_ACTIONS
-@@ -726,6 +727,7 @@ class TestProcess(PsutilTestCase):
-             self.assertEqual(' '.join(p.cmdline()), ' '.join(cmdline))
- 
-     @unittest.skipIf(PYPY, "broken on PYPY")
-+    @unittest.skipIf(not which("gcc"), "gcc not installed")
-     def test_long_cmdline(self):
-         testfn = self.get_testfn()
-         create_exe(testfn)
-@@ -740,6 +742,7 @@ class TestProcess(PsutilTestCase):
-         assert pyexe.startswith(name), (pyexe, name)
- 
-     @unittest.skipIf(PYPY, "unreliable on PYPY")
-+    @unittest.skipIf(not which("gcc"), "gcc not installed")
-     def test_long_name(self):
-         testfn = self.get_testfn(suffix="0123456789" * 2)
-         create_exe(testfn)
-@@ -750,6 +753,7 @@ class TestProcess(PsutilTestCase):
-     @unittest.skipIf(SUNOS, "broken on SUNOS")
-     @unittest.skipIf(AIX, "broken on AIX")
-     @unittest.skipIf(PYPY, "broken on PYPY")
-+    @unittest.skipIf(not which("gcc"), "gcc not installed")
-     def test_prog_w_funky_name(self):
-         # Test that name(), exe() and cmdline() correctly handle programs
-         # with funky chars such as spaces and ")", see:
-@@ -1408,6 +1412,7 @@ class TestProcess(PsutilTestCase):
- 
-     @unittest.skipIf(not HAS_ENVIRON, "not supported")
-     @unittest.skipIf(not POSIX, "POSIX only")
-+    @unittest.skipIf(not which("gcc"), "gcc not installed")
-     def test_weird_environ(self):
-         # environment variables can contain values without an equals sign
-         code = textwrap.dedent("""
-diff --git a/psutil/tests/test_system.py b/psutil/tests/test_system.py
-index db2cb34..5ee519f 100755
---- a/psutil/tests/test_system.py
-+++ b/psutil/tests/test_system.py
-@@ -580,6 +580,7 @@ class TestDiskAPIs(PsutilTestCase):
-     def test_disk_usage_bytes(self):
-         psutil.disk_usage(b'.')
- 
-+    @unittest.skip("Broken for oe")
-     def test_disk_partitions(self):
-         def check_ntuple(nt):
-             self.assertIsInstance(nt.device, str)
-diff --git a/psutil/tests/test_unicode.py b/psutil/tests/test_unicode.py
-index e635726..7ba5b0f 100755
---- a/psutil/tests/test_unicode.py
-+++ b/psutil/tests/test_unicode.py
-@@ -86,6 +86,7 @@ from psutil import POSIX
- from psutil import WINDOWS
- from psutil._compat import PY3
- from psutil._compat import u
-+from psutil._compat import which
- from psutil.tests import APPVEYOR
- from psutil.tests import ASCII_FS
- from psutil.tests import CI_TESTING
-@@ -156,7 +157,7 @@ def try_unicode(suffix):
- # FS APIs
- # ===================================================================
- 
--
-+@unittest.skipIf(not which("gcc"), "gcc not installed")
- class BaseUnicodeTest(PsutilTestCase):
-     funky_suffix = None
- 
-@@ -169,6 +170,7 @@ class BaseUnicodeTest(PsutilTestCase):
- @serialrun
- @unittest.skipIf(ASCII_FS, "ASCII fs")
- @unittest.skipIf(PYPY and not PY3, "too much trouble on PYPY2")
-+@unittest.skipIf(not which("gcc"), "gcc not installed")
- class TestFSAPIs(BaseUnicodeTest):
-     """Test FS APIs with a funky, valid, UTF8 path name."""
- 
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.9.0.bb
deleted file mode 100644
index 3df0e5d..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-psutil_5.9.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "A cross-platform process and system utilities module for Python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e35fd9f271d19d5f742f20a9d1f8bb8b"
-
-SRC_URI[sha256sum] = "869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25"
-
-inherit pypi setuptools3
-
-SRC_URI += "file://0001-fix-failure-test-cases.patch"
-
-PACKAGES =+ "${PN}-tests"
-
-FILES:${PN}-tests += " \
-    ${PYTHON_SITEPACKAGES_DIR}/psutil/test* \
-    ${PYTHON_SITEPACKAGES_DIR}/psutil/__pycache__/test* \
-"
-
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-shell \
-    ${PYTHON_PN}-threading \
-    ${PYTHON_PN}-xml \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-ctypes \
-    ${PYTHON_PN}-resource \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.7.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.7.0.bb
index ff1155e..bff2d49 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.7.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ptyprocess_0.7.0.bb
@@ -8,7 +8,7 @@
 
 SRC_URI[sha256sum] = "5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"
 
-inherit pypi setuptools3
+inherit pypi python_flit_core
 
 UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/ptyprocess"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.9.0.bb
index c1e549b..862c3d5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.9.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyalsaaudio_0.9.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "ALSA bindings"
 SECTION = "devel/python"
-LICENSE = "PSF"
+LICENSE = "PSF-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1a3b161aa0fcec32a0c8907a2219ad9d"
 
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1/run-ptest
deleted file mode 100644
index b63c4de..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/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-pyasn1_0.4.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.8.bb
deleted file mode 100644
index a5e2a71..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1_0.4.8.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-inherit pypi setuptools3
-require python-pyasn1.inc
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.38.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.38.2.bb
index d67975b..7c822ac 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.38.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.38.2.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "AT-SPI2 is a protocol over DBus, toolkit widgets use to provide content to screen readers such as Orca"
 SECTION = "devel/python"
 HOMEPAGE = "https://www.freedesktop.org/wiki/Accessibility/AT-SPI2/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=db29218e6ba3794c56df7d4987dc7e4d \
                     file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
 DEPENDS = "python3-dbus-native glib-2.0 dbus-glib libxml2 atk gtk+ python3-pygobject"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.8.1.bb
index dfacb41..4d94e20 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.8.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11_2.8.1.bb
@@ -19,6 +19,9 @@
 
 inherit cmake setuptools3 python3native
 
+PIP_INSTALL_DIST_PATH = "${S}/dist"
+PIP_INSTALL_PACKAGE = "pybind11"
+
 do_configure() {
 	cmake_do_configure
 }
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.23.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.23.bb
index cc659ea..b32f3a3 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.23.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybluez_0.23.bb
@@ -4,7 +4,7 @@
 
 DEPENDS = "bluez5"
 
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8a71d0475d08eee76d8b6d0c6dbec543"
 
 SRC_URI[md5sum] = "afbe8429bb82d2c46a3d0f5f4f898f9d"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_10.2.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_10.3.0.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_10.2.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_10.3.0.bb
index 9bd0379..43ba3a9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_10.2.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pychromecast_10.3.0.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b1dbd4e85f47b389bdadee9c694669f5"
 
-SRC_URI[sha256sum] = "ddb86c5acdc13e8bdadd2b7f5738fda36b32c1750548f7b629ca8d178f05e0da"
+SRC_URI[sha256sum] = "4eb107446fdbed876f48c83202b6212b221286168a55c16b3eb8edf4200f10a1"
 
 PYPI_PACKAGE = "PyChromecast"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycparser_2.21.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycparser_2.21.bb
deleted file mode 100644
index 53b7367..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycparser_2.21.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Parser of the C language, written in pure Python"
-HOMEPAGE = "https://github.com/eliben/pycparser"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2c28cdeabcb88f5843d934381b4b4fea"
-
-SRC_URI[sha256sum] = "e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
-
-RDEPENDS:${PN}:class-target += "\
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-ply \
-    ${PYTHON_PN}-pprint \
-    "
-
-RSUGGESTS:${PN}:class-target += "\
-    cpp \
-    cpp-symlinks \
-    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.44.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.44.1.bb
index a80fed6..c9b3b71 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.44.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pycurl_7.44.1.bb
@@ -7,16 +7,13 @@
 SECTION = "devel/python"
 HOMEPAGE = "http://pycurl.io/"
 
-LICENSE = "LGPLv2 | MIT"
+LICENSE = "LGPL-2.0-only | MIT"
 LIC_FILES_CHKSUM = "file://COPYING-LGPL;md5=4fbd65380cdd255951079008b364516c \
                     file://COPYING-MIT;md5=75f131c591546fd1277ca49c9a81ab1b \
                     "
 
 SRC_URI[sha256sum] = "5bcef4d988b74b99653602101e17d8401338d596b9234d263c728a0c3df003e8"
 
-inherit pypi setuptools3
+DEPENDS = "curl"
 
-DEPENDS = "\
-    curl \
-    ${PYTHON_PN}\
-"
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb
index 188934a..a1b9fff 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Pythonic DBus library"
 HOMEPAGE = "https://pypi.python.org/pypi/pydbus/"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a916467b91076e631dd8edb7424769c7"
 
 SRC_URI += "file://0001-Support-asynchronous-calls-58.patch \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyhamcrest_2.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyhamcrest_2.0.3.bb
index 7c0824c..5b06e52 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyhamcrest_2.0.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyhamcrest_2.0.3.bb
@@ -7,6 +7,6 @@
 
 SRC_URI[sha256sum] = "dfb19cf6d71743e086fbb761ed7faea5aacbc8ec10c17a08b93ecde39192a3db"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 RDEPENDS:${PN} += "${PYTHON_PN}-six"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_0.0.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_0.0.11.bb
deleted file mode 100644
index 3022d08..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_0.0.11.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "Pyiface is a package that exposes the network interfaces of the operating system in a easy to use and transparent way"
-SECTION = "devel/python"
-HOMEPAGE = "https://pypi.python.org/pypi/pyiface/"
-LICENSE = "GPLv3+"
-
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4fe869ee987a340198fb0d54c55c47f1"
-
-SRC_URI[md5sum] = "b066aa984656742738127c9c75436ab4"
-SRC_URI[sha256sum] = "e231e5735d329c5b2d4fc8854f069fdaa5436d3ef91ed64ee49e41e3f5e8a3f5"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_git.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_git.bb
new file mode 100644
index 0000000..5e0d2de
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyiface_git.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Pyiface is a package that exposes the network interfaces of the operating system in a easy to use and transparent way"
+SECTION = "devel/python"
+HOMEPAGE = "https://pypi.python.org/pypi/pyiface/"
+LICENSE = "GPL-3.0-or-later"
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4fe869ee987a340198fb0d54c55c47f1"
+
+DEPENDS += "python3-setuptools-scm-native"
+
+inherit setuptools3
+
+SRC_URI = "git://github.com/bat-serjo/PyIface.git;protocol=https;branch=master"
+SRCREV = "4557dbda96d2e4b1142c60603d4a27d007a9ffe6"
+PV = "0.1.dev33+g4557dbd"
+
+PIP_INSTALL_PACKAGE = "pyiface"
+
+S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_1.8.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_1.8.3.bb
deleted file mode 100644
index 47a40fd..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_1.8.3.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY="Pylint is a Python source code analyzer"
-HOMEPAGE= "http://www.pylint.org/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
-
-SRC_URI[md5sum] = "2eb5f3cb8fe567eaf5420dd415012202"
-SRC_URI[sha256sum] = "c77311859e0c2d7932095f30d2b1bfdc4b6fe111f534450ba727a52eae330ef2"
-
-inherit pypi setuptools3 python3-dir
-
-DEPENDS += "${PYTHON_PN}-pytest-runner-native"
-
-do_install:append(){
-    rm ${D}${bindir}/pylint
-    cat >> ${D}${bindir}/pylint <<EOF
-#!/usr/bin/env ${PYTHON_PN}
-from pylint import run_pylint
-run_pylint()
-EOF
-    chmod 755 ${D}${bindir}/pylint
-    sed -i -e 's:^#!/usr/bin/python:#!/usr/bin/env\ ${PYTHON_PN}:g' ${D}/${PYTHON_SITEPACKAGES_DIR}/pylint/test/data/ascript
-}
-
-PACKAGES =+ "${PN}-tests"
-FILES:${PN}-tests+= " \
-    ${PYTHON_SITEPACKAGES_DIR}/pylint/test/ \
-    ${PYTHON_SITEPACKAGES_DIR}/pylint/testutils.py \
-"
-
-RDEPENDS:${PN} += "${PYTHON_PN}-astroid \
-                   ${PYTHON_PN}-isort \
-                   ${PYTHON_PN}-numbers \
-                   ${PYTHON_PN}-shell \
-                   ${PYTHON_PN}-json \
-                   ${PYTHON_PN}-pkgutil \
-                   ${PYTHON_PN}-difflib \
-                   ${PYTHON_PN}-netserver \
-                  "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_2.13.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_2.13.2.bb
new file mode 100644
index 0000000..9c699f8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_2.13.2.bb
@@ -0,0 +1,18 @@
+SUMMARY="Pylint is a Python source code analyzer"
+HOMEPAGE= "http://www.pylint.org/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c107cf754550e65755c42985a5d4e9c9"
+
+SRC_URI[sha256sum] = "0c6dd0e53e6e17f2d0d62660905f3868611e734e9d9b310dc651a4b9f3dc70da"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "${PYTHON_PN}-astroid \
+                   ${PYTHON_PN}-isort \
+                   ${PYTHON_PN}-numbers \
+                   ${PYTHON_PN}-shell \
+                   ${PYTHON_PN}-json \
+                   ${PYTHON_PN}-pkgutil \
+                   ${PYTHON_PN}-difflib \
+                   ${PYTHON_PN}-netserver \
+                  "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymetno_0.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymetno_0.9.0.bb
index 02e8935..50b202b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymetno_0.9.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymetno_0.9.0.bb
@@ -9,6 +9,8 @@
 
 inherit setuptools3
 
+PIP_INSTALL_PACKAGE = "PyMetno"
+
 RDEPENDS:${PN} = "\
 	${PYTHON_PN}-aiohttp (>=3.6.1) \
 	${PYTHON_PN}-async-timeout (>=3.0.1) \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.152.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.157.bb
similarity index 84%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.152.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.157.bb
index 254330b..a900e70 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.152.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.157.bb
@@ -4,10 +4,12 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20"
 
 SRC_URI = "git://github.com/MISP/PyMISP.git;protocol=https;branch=main"
-SRCREV = "d991e53f9a9641f454e116e83d2913edf405a53f"
+SRCREV = "b1892efb6a078d1370cee51c9103f3a591c628d2"
 S = "${WORKDIR}/git"
 
-inherit setuptools3
+inherit python_poetry_core
+
+PIP_INSTALL_PACKAGE = "pymisp"
 
 RDEPENDS:${PN} += " \
     ${PYTHON_PN}-dateutil \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_2.5.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_2.5.3.bb
new file mode 100644
index 0000000..4656587
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_2.5.3.bb
@@ -0,0 +1,35 @@
+SUMMARY = "A fully featured modbus protocol stack in python"
+HOMEPAGE = "https://github.com/riptideio/pymodbus/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2c2223d66c7e674b40527b5a4c35bd76"
+DEPENDS += "python3-six-native"
+
+SRC_URI[sha256sum] = "5ef68c1a109bdb467c830ef003ef2db6494349a5248e4af946fe21c9eefe7e74"
+S = "${WORKDIR}/pymodbus-${PV}"
+
+inherit pypi setuptools3
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[repl] = ",,,python3-aiohttp python3-click python3-prompt-toolkit python3-pygments python3-pyserial-asyncio"
+PACKAGECONFIG[asyncio] = ",,,python3-pyserial-asyncio"
+PACKAGECONFIG[tornado] = ",,,python3-tornado"
+PACKAGECONFIG[twisted] = ",,,python3-twisted-conch"
+PACKAGECONFIG[redis] = ",,,python3-redis"
+PACKAGECONFIG[sql] = ",,,python3-sqlalchemy"
+
+RDEPENDS:${PN} += " \
+    python3-asyncio \
+    python3-core \
+    python3-io \
+    python3-json \
+    python3-logging \
+    python3-math \
+    python3-netserver \
+"
+
+RDEPENDS:${PN} += " \
+    python3-pyserial \
+    python3-six \
+"
+
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.0.2.bb
similarity index 90%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.0.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.0.2.bb
index 8eb0833..6189730 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymongo_4.0.2.bb
@@ -8,7 +8,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
 
-SRC_URI[sha256sum] = "13d0624c13a91da71fa0d960205d93b3d98344481be865ee7cc238c972d41d73"
+SRC_URI[sha256sum] = "3364b5c153b0de15c39cd13c5ee73a473f7337eb2d9610711f50f14a3a611413"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pynacl_1.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pynacl_1.5.0.bb
index 10f624b..6e53461 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pynacl_1.5.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pynacl_1.5.0.bb
@@ -8,10 +8,9 @@
 
 PYPI_PACKAGE = "PyNaCl"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 DEPENDS += "\
-    ${PYTHON_PN}-wheel-native \
     ${PYTHON_PN}-cffi-native \
     libsodium \
 "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux/0001-setup.py-switch-to-setuptools.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux/0001-setup.py-switch-to-setuptools.patch
new file mode 100644
index 0000000..35bc4a6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux/0001-setup.py-switch-to-setuptools.patch
@@ -0,0 +1,32 @@
+From a36abadfb2d135260bef7703a1d0b56e6aa7eeff Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Mon, 28 Feb 2022 08:21:33 -0800
+Subject: [PATCH] setup.py: switch to setuptools
+
+In Python 3.10, 'distutils' has been deprecated and is slated for
+removal in Python 3.12.
+
+Switch from 'distutils.core' to 'setuptools'. This also allows for the
+'wheel' binary archive format to be built with 'setup.py bdist_wheel'.
+
+Upstream-Status: Submitted
+[https://github.com/rlisagor/pynetlinux/pull/12]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 670e064..45f1053 100755
+--- a/setup.py
++++ b/setup.py
+@@ -1,4 +1,4 @@
+-from distutils.core import setup
++from setuptools import setup
+ 
+ setup(
+     name = "pynetlinux",
+-- 
+2.30.2
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb
index c80a166..a5ac74f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pynetlinux_1.1.bb
@@ -5,7 +5,8 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=74e1861736ee959824fe7542323c12e9"
 
-SRC_URI[md5sum] = "3336e5d4a478acca4e35bf3125b4f883"
 SRC_URI[sha256sum] = "4ad08298c9f5ba15a11cddc639ba8778cabdfc402b51066d9e0a325e5a5b391c"
 
+SRC_URI += "file://0001-setup.py-switch-to-setuptools.patch"
+
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_22.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_22.0.0.bb
deleted file mode 100644
index db0e809..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyopenssl_22.0.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Simple Python wrapper around the OpenSSL library"
-HOMEPAGE = "https://pyopenssl.org/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-DEPENDS += "openssl ${PYTHON_PN}-cryptography"
-
-SRC_URI[sha256sum] = "660b1b1425aac4a1bea1d94168a85d99f0b3144c869dd4390d27629d0087f1bf"
-
-PYPI_PACKAGE = "pyOpenSSL"
-inherit pypi setuptools3
-
-PACKAGES =+ "${PN}-tests"
-FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
-
-RDEPENDS:${PN}:class-target = " \
-    ${PYTHON_PN}-cryptography \
-    ${PYTHON_PN}-six \
-    ${PYTHON_PN}-threading \
-"
-RDEPENDS:${PN}-tests = "${PN}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrad_2.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrad_2.4.bb
index 86a95a4..b2d0dc3 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrad_2.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyrad_2.4.bb
@@ -6,4 +6,4 @@
 PYPI_PACKAGE = "pyrad"
 SRC_URI[sha256sum] = "057de4b7e89d8da57ba782c1bde45c63ebee720ae2c0b0a69beaff15c47e30d9"
 
-inherit pypi setuptools3
+inherit pypi python_poetry_core
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.19.bb
index a85b092..fa5b3a5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.19.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyroute2_0.5.19.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A pure Python netlink and Linux network configuration library"
-LICENSE = "GPLv2 & Apache-2.0"
+LICENSE = "GPL-2.0-only & Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.GPL.v2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://LICENSE.Apache.v2;md5=34281e312165f843a2b7d1f114fe65ce"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-linux.rs-Define-consts-for-rv32-architecture.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-linux.rs-Define-consts-for-rv32-architecture.patch
new file mode 100644
index 0000000..a2d4091
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-linux.rs-Define-consts-for-rv32-architecture.patch
@@ -0,0 +1,26 @@
+From 3a3bd8475f93d54cb5bb62d239247fef2e03a733 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 5 Mar 2022 00:37:01 -0800
+Subject: [PATCH] linux.rs: Define consts for rv32 architecture
+
+Upstream-Status: Submitted [https://github.com/nix-rust/nix/pull/1669]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/sys/ioctl/linux.rs | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/sys/ioctl/linux.rs b/src/sys/ioctl/linux.rs
+index 68ebaba..08cd0c3 100644
+--- a/src/sys/ioctl/linux.rs
++++ b/src/sys/ioctl/linux.rs
+@@ -34,6 +34,7 @@ mod consts {
+           target_arch = "s390x",
+           target_arch = "x86_64",
+           target_arch = "aarch64",
++          target_arch = "riscv32",
+           target_arch = "riscv64"))]
+ mod consts {
+     #[doc(hidden)]
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-riscv64-mod.rs-Add-missing-error-codes.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-riscv64-mod.rs-Add-missing-error-codes.patch
deleted file mode 100644
index 6710847..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate/0001-riscv64-mod.rs-Add-missing-error-codes.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From c711fb215de54f960a35cdc48cd506b6b5db4918 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 26 Jan 2022 11:50:58 -0800
-Subject: [PATCH] riscv64/mod.rs: Add missing error codes
-
-These are flagged by apps e.g. python3-pyruvate
-
-Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/2656]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/unix/linux_like/linux/musl/b64/riscv64/mod.rs | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
-index b075b4a05..6b17621c7 100644
---- a/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
-+++ b/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
-@@ -548,6 +548,11 @@ pub const EHOSTUNREACH: ::c_int = 113;
- pub const EALREADY: ::c_int = 114;
- pub const EINPROGRESS: ::c_int = 115;
- pub const ESTALE: ::c_int = 116;
-+pub const EUCLEAN: ::c_int = 117;
-+pub const ENOTNAM: ::c_int = 118;
-+pub const ENAVAIL: ::c_int = 119;
-+pub const EISNAM: ::c_int = 120;
-+pub const EREMOTEIO: ::c_int = 121;
- pub const EDQUOT: ::c_int = 122;
- pub const ENOMEDIUM: ::c_int = 123;
- pub const EMEDIUMTYPE: ::c_int = 124;
--- 
-2.35.0
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.1.2.bb
index b83302d..1f1c186 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.1.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.1.2.bb
@@ -12,7 +12,9 @@
 
 S = "${WORKDIR}/pyruvate-${PV}"
 
-inherit pypi setuptools3_rust
+inherit pypi python_setuptools3_rust
+
+PIP_INSTALL_DIST_PATH = "${S}/dist"
 
 # crossbeam-* -> std::sync::atomic AtomicI64, AtomicU64
 # not supported on mips/powerpc with 32-bit pointers
@@ -22,9 +24,6 @@
 RUSTFLAGS:append:powerpc = " --cfg crossbeam_no_atomic_64"
 RUSTFLAGS:append:riscv32 = " --cfg crossbeam_no_atomic_64"
 
-SRC_URI:append:mips = " file://0001-check-for-mips-targets-for-stat.st_dev-definitions.patch;patchdir=../cargo_home/bitbake/libsystemd-0.4.1/"
-SRC_URI:append = " file://0001-riscv64-mod.rs-Add-missing-error-codes.patch;patchdir=../cargo_home/bitbake/libc-0.2.112/"
-
 SRC_URI += " \
     crate://crates.io/aho-corasick/0.7.18 \
     crate://crates.io/atty/0.2.14 \
@@ -64,7 +63,7 @@
     crate://crates.io/humantime/2.1.0 \
     crate://crates.io/instant/0.1.12 \
     crate://crates.io/lazy_static/1.4.0 \
-    crate://crates.io/libc/0.2.112 \
+    crate://crates.io/libc/0.2.120 \
     crate://crates.io/libsystemd/0.4.1 \
     crate://crates.io/log/0.4.14 \
     crate://crates.io/memchr/2.4.1 \
@@ -116,6 +115,10 @@
     crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
     crate://crates.io/winapi/0.3.9 \
 "
+SRC_URI += "\
+            file://0001-linux.rs-Define-consts-for-rv32-architecture.patch;patchdir=../cargo_home/bitbake/nix-0.23.1/ \
+            "
+SRC_URI:append:mips = " file://0001-check-for-mips-targets-for-stat.st_dev-definitions.patch;patchdir=../cargo_home/bitbake/libsystemd-0.4.1/"
 
 # The following configs & dependencies are from setuptools extras_require.
 # These dependencies are optional, hence can be controlled via PACKAGECONFIG.
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.1.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.1.5.bb
similarity index 62%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.1.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.1.5.bb
index 7e5599e..7826d89 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.1.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyscaffold_4.1.5.bb
@@ -5,18 +5,18 @@
 
 HOMEPAGE = "https://github.com/pyscaffold/pyscaffold"
 SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+LICENSE = "0BSD & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=14a49c74a1d91829908ac756c07e6b91"
+DEPENDS += "python3-setuptools-scm-native"
 
-inherit pypi setuptools3
+SRC_URI[sha256sum] = "55f6532fd6d62b3b698d604257f7a7eda6a87557bbec22760f8c0d9549454802"
 
+inherit pypi python_setuptools_build_meta
 PYPI_PACKAGE = "PyScaffold"
 
-SRC_URI[sha256sum] = "46a2bbdf255ba2efc6c56ae1428249b61d56c4a3e54ef3db0d05fa97792011a5"
-
-BBCLASSEXTEND = "native nativesdk"
-
 RDEPENDS:${PN} += " \
 	python3-email \
 	python3-compression \
 "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial-asyncio_0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial-asyncio_0.6.bb
new file mode 100644
index 0000000..30ff62a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial-asyncio_0.6.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Python Serial Port Extension - Asynchronous I/O support"
+HOMEPAGE = "https://github.com/pyserial/pyserial-asyncio"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9a79418f241689e78034391d51162d24"
+
+SRC_URI[sha256sum] = "b6032923e05e9d75ec17a5af9a98429c46d2839adfaf80604d52e0faacd7a32f"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-asyncio python3-core python3-pyserial"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.5.bb
index 4766d92..1564623 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyserial_3.5.bb
@@ -9,6 +9,7 @@
 do_install:append() {
     rm -f ${D}${bindir}/pyserial-miniterm
     rm -f ${D}${bindir}/pyserial-ports
+    rm -rf ${D}${bindir}/__pycache__
     rmdir ${D}${bindir}
 }
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pysocks_1.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pysocks_1.7.1.bb
deleted file mode 100644
index 9144401..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pysocks_1.7.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "A Python SOCKS client module"
-HOMEPAGE = "http://python-requests.org"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=1d457bcffb9661b45f799d4efee72f16"
-
-SRC_URI[md5sum] = "89b1a6865c61bae67a32417517612ee6"
-SRC_URI[sha256sum] = "3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"
-
-PYPI_PACKAGE = "PySocks"
-inherit pypi setuptools3
-
-RDEPENDS:${PN}:class-target += "\
-    ${PYTHON_PN}-email \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-shell \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache/0001-Modernize-python-versions-remove-py2x-and-fix-tests-.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache/0001-Modernize-python-versions-remove-py2x-and-fix-tests-.patch
deleted file mode 100644
index d268cc5..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache/0001-Modernize-python-versions-remove-py2x-and-fix-tests-.patch
+++ /dev/null
@@ -1,4150 +0,0 @@
-From 8bb1ac2d81f697598a766714f2c439d78c85d71e Mon Sep 17 00:00:00 2001
-From: Stephen L Arnold <nerdboy@gentoo.org>
-Date: Sat, 7 Nov 2020 12:38:33 -0800
-Subject: [PATCH] Modernize python versions (remove py2x) and fix tests, update
- spec
-
-* migrate to github actions for CI, add conda recipe/workflow
-* fix document processing, update pandoc args and history
-* convert doctests and modules to py3
-* convert packaging/setup.py to pep517, keep doc processing
-* cleanup tox cfg, add coverage, readme status
-* add pep8speaks cfg, cleanup warnings, use correct env
-* update setup_description.rst for packaging
-* set version for test release => 0.6.0 and deploy
-
-Upstream-Status: Backport [https://github.com/defunkt/pystache/pull/214]
-Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
----
- .coveragerc                               |  38 +++
- .gitchangelog.rc                          | 295 +++++++++++++++++++++
- .github/workflows/ci.yml                  |  73 ++++++
- .github/workflows/conda.yml               |  55 ++++
- .github/workflows/release.yml             |  94 +++++++
- .github/workflows/wheels.yml              |  82 ++++++
- .pep8speaks.yml                           |  15 ++
- HISTORY.md                                |  37 ++-
- MANIFEST.in                               |   8 +-
- README.md                                 | 141 +++++-----
- TODO.md                                   |   5 +-
- conda/meta.yaml                           |  50 ++++
- pyproject.toml                            |   3 +
- pystache/__init__.py                      |   2 +-
- pystache/commands/render.py               |   4 +-
- pystache/common.py                        |  13 +-
- pystache/defaults.py                      |   2 +-
- pystache/loader.py                        |  14 +-
- pystache/parsed.py                        |   6 +-
- pystache/parser.py                        |  20 +-
- pystache/renderengine.py                  |   2 +-
- pystache/renderer.py                      |  22 +-
- pystache/specloader.py                    |   2 +-
- pystache/tests/benchmark.py               |  15 +-
- pystache/tests/common.py                  |  10 +-
- pystache/tests/examples/unicode_output.py |   2 +-
- pystache/tests/main.py                    |  28 +-
- pystache/tests/spectesting.py             |  16 +-
- pystache/tests/test___init__.py           |   4 +-
- pystache/tests/test_commands.py           |   2 +-
- pystache/tests/test_defaults.py           |  18 +-
- pystache/tests/test_examples.py           |  40 +--
- pystache/tests/test_loader.py             |  46 ++--
- pystache/tests/test_pystache.py           |   6 +-
- pystache/tests/test_renderengine.py       | 148 +++++------
- pystache/tests/test_renderer.py           |  86 +++----
- pystache/tests/test_simple.py             |  20 +-
- pystache/tests/test_specloader.py         |  60 ++---
- setup.cfg                                 |  74 +++++-
- setup.py                                  | 134 +---------
- setup_description.rst                     | 297 +++++++++++++---------
- tox.ini                                   | 118 +++++++--
- travis.yml_disabled                       |  52 ++++
- 43 files changed, 1487 insertions(+), 672 deletions(-)
- create mode 100644 .coveragerc
- create mode 100644 .gitchangelog.rc
- create mode 100644 .github/workflows/ci.yml
- create mode 100644 .github/workflows/conda.yml
- create mode 100644 .github/workflows/release.yml
- create mode 100644 .github/workflows/wheels.yml
- create mode 100644 .pep8speaks.yml
- create mode 100644 conda/meta.yaml
- create mode 100644 pyproject.toml
- create mode 100644 travis.yml_disabled
-
-diff --git a/.coveragerc b/.coveragerc
-new file mode 100644
-index 0000000..9a336dd
---- /dev/null
-+++ b/.coveragerc
-@@ -0,0 +1,38 @@
-+# .coveragerc to control coverage.py
-+[run]
-+branch = True
-+
-+source = pystache
-+
-+omit =
-+    .tox/*
-+    setup.py
-+    pystache/tests/*
-+
-+#plugins =
-+#    coverage_python_version
-+
-+[report]
-+# must set this to True to see missing
-+#show_missing = True
-+
-+# Regexes for lines to exclude from consideration
-+exclude_lines =
-+    # Have to re-enable the standard pragma
-+    pragma: no cover
-+
-+    # Don't complain about missing debug-only code:
-+    def __repr__
-+    if self\.debug
-+
-+    # Don't complain if tests don't hit defensive assertion code:
-+    raise AssertionError
-+    raise NotImplementedError
-+
-+    # Don't complain if non-runnable code isn't run:
-+    if 0:
-+
-+ignore_errors = True
-+
-+[html]
-+directory = cover
-diff --git a/.gitchangelog.rc b/.gitchangelog.rc
-new file mode 100644
-index 0000000..5cf63a0
---- /dev/null
-+++ b/.gitchangelog.rc
-@@ -0,0 +1,295 @@
-+# -*- coding: utf-8; mode: python -*-
-+##
-+## Format
-+##
-+##   ACTION: [AUDIENCE:] COMMIT_MSG [!TAG ...]
-+##
-+## Description
-+##
-+##   ACTION is one of 'chg', 'fix', 'new'
-+##
-+##       Is WHAT the change is about.
-+##
-+##       'chg' is for refactor, small improvement, cosmetic changes...
-+##       'fix' is for bug fixes
-+##       'new' is for new features, big improvement
-+##
-+##   AUDIENCE is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc'
-+##
-+##       Is WHO is concerned by the change.
-+##
-+##       'dev'  is for developpers (API changes, refactors...)
-+##       'usr'  is for final users (UI changes)
-+##       'pkg'  is for packagers   (packaging changes)
-+##       'test' is for testers     (test only related changes)
-+##       'doc'  is for doc guys    (doc only changes)
-+##
-+##   COMMIT_MSG is ... well ... the commit message itself.
-+##
-+##   TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic'
-+##
-+##       They are preceded with a '!' or a '@' (prefer the former, as the
-+##       latter is wrongly interpreted in github.) Commonly used tags are:
-+##
-+##       'refactor' is obviously for refactoring code only
-+##       'minor' is for a very meaningless change (a typo, adding a comment)
-+##       'cosmetic' is for cosmetic driven change (re-indentation, 80-col...)
-+##       'wip' is for partial functionality but complete subfunctionality.
-+##
-+## Example:
-+##
-+##   new: usr: support of bazaar implemented
-+##   chg: re-indentend some lines !cosmetic
-+##   new: dev: updated code to be compatible with last version of killer lib.
-+##   fix: pkg: updated year of licence coverage.
-+##   new: test: added a bunch of test around user usability of feature X.
-+##   fix: typo in spelling my name in comment. !minor
-+##
-+##   Please note that multi-line commit message are supported, and only the
-+##   first line will be considered as the "summary" of the commit message. So
-+##   tags, and other rules only applies to the summary.  The body of the commit
-+##   message will be displayed in the changelog without reformatting.
-+
-+
-+##
-+## ``ignore_regexps`` is a line of regexps
-+##
-+## Any commit having its full commit message matching any regexp listed here
-+## will be ignored and won't be reported in the changelog.
-+##
-+ignore_regexps = [
-+    r'@minor', r'!minor',
-+    r'@cosmetic', r'!cosmetic',
-+    r'@refactor', r'!refactor',
-+    r'@wip', r'!wip',
-+    r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[p|P]kg:',
-+    r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[d|D]ev:',
-+    r'^(.{3,3}\s*:)?\s*[fF]irst commit.?\s*$',
-+    r'^$',  ## ignore commits with empty messages
-+]
-+
-+
-+## ``section_regexps`` is a list of 2-tuples associating a string label and a
-+## list of regexp
-+##
-+## Commit messages will be classified in sections thanks to this. Section
-+## titles are the label, and a commit is classified under this section if any
-+## of the regexps associated is matching.
-+##
-+## Please note that ``section_regexps`` will only classify commits and won't
-+## make any changes to the contents. So you'll probably want to go check
-+## ``subject_process`` (or ``body_process``) to do some changes to the subject,
-+## whenever you are tweaking this variable.
-+##
-+section_regexps = [
-+    ('New', [
-+        r'^[nN]ew\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
-+     ]),
-+    ('Features', [
-+       r'^([nN]ew|[fF]eat)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
-+     ]),
-+    ('Changes', [
-+        r'^[cC]hg\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
-+     ]),
-+    ('Fixes', [
-+        r'^[fF]ix\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
-+     ]),
-+
-+    ('Other', None ## Match all lines
-+     ),
-+]
-+
-+
-+## ``body_process`` is a callable
-+##
-+## This callable will be given the original body and result will
-+## be used in the changelog.
-+##
-+## Available constructs are:
-+##
-+##   - any python callable that take one txt argument and return txt argument.
-+##
-+##   - ReSub(pattern, replacement): will apply regexp substitution.
-+##
-+##   - Indent(chars="  "): will indent the text with the prefix
-+##     Please remember that template engines gets also to modify the text and
-+##     will usually indent themselves the text if needed.
-+##
-+##   - Wrap(regexp=r"\n\n"): re-wrap text in separate paragraph to fill 80-Columns
-+##
-+##   - noop: do nothing
-+##
-+##   - ucfirst: ensure the first letter is uppercase.
-+##     (usually used in the ``subject_process`` pipeline)
-+##
-+##   - final_dot: ensure text finishes with a dot
-+##     (usually used in the ``subject_process`` pipeline)
-+##
-+##   - strip: remove any spaces before or after the content of the string
-+##
-+##   - SetIfEmpty(msg="No commit message."): will set the text to
-+##     whatever given ``msg`` if the current text is empty.
-+##
-+## Additionally, you can `pipe` the provided filters, for instance:
-+#body_process = Wrap(regexp=r'\n(?=\w+\s*:)') | Indent(chars="  ")
-+#body_process = Wrap(regexp=r'\n(?=\w+\s*:)')
-+#body_process = noop
-+body_process = ReSub(r'((^|\n)[A-Z]\w+(-\w+)*: .*(\n\s+.*)*)+$', r'') | strip
-+
-+
-+## ``subject_process`` is a callable
-+##
-+## This callable will be given the original subject and result will
-+## be used in the changelog.
-+##
-+## Available constructs are those listed in ``body_process`` doc.
-+subject_process = (strip |
-+    ReSub(r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n@]*)(@[a-z]+\s+)*$', r'\4') |
-+    SetIfEmpty("No commit message.") | ucfirst | final_dot)
-+
-+
-+## ``tag_filter_regexp`` is a regexp
-+##
-+## Tags that will be used for the changelog must match this regexp.
-+##
-+#tag_filter_regexp = r'^v?[0-9]+\.[0-9]+(\.[0-9]+)?$'
-+tag_filter_regexp = r'^[0-9]+\.[0-9]+(\.[0-9]+)?$'
-+
-+
-+## ``unreleased_version_label`` is a string or a callable that outputs a string
-+##
-+## This label will be used as the changelog Title of the last set of changes
-+## between last valid tag and HEAD if any.
-+unreleased_version_label = "(unreleased)"
-+#unreleased_version_label = lambda: swrap(
-+#    ["git", "describe", "--tags"],
-+#shell=False)
-+
-+
-+## ``output_engine`` is a callable
-+##
-+## This will change the output format of the generated changelog file
-+##
-+## Available choices are:
-+##
-+##   - rest_py
-+##
-+##        Legacy pure python engine, outputs ReSTructured text.
-+##        This is the default.
-+##
-+##   - mustache(<template_name>)
-+##
-+##        Template name could be any of the available templates in
-+##        ``templates/mustache/*.tpl``.
-+##        Requires python package ``pystache``.
-+##        Examples:
-+##           - mustache("markdown")
-+##           - mustache("restructuredtext")
-+##
-+##   - makotemplate(<template_name>)
-+##
-+##        Template name could be any of the available templates in
-+##        ``templates/mako/*.tpl``.
-+##        Requires python package ``mako``.
-+##        Examples:
-+##           - makotemplate("restructuredtext")
-+##
-+#output_engine = rest_py
-+#output_engine = mustache("restructuredtext")
-+output_engine = mustache("markdown")
-+#output_engine = makotemplate("restructuredtext")
-+
-+
-+## ``include_merge`` is a boolean
-+##
-+## This option tells git-log whether to include merge commits in the log.
-+## The default is to include them.
-+include_merge = True
-+
-+
-+## ``log_encoding`` is a string identifier
-+##
-+## This option tells gitchangelog what encoding is outputed by ``git log``.
-+## The default is to be clever about it: it checks ``git config`` for
-+## ``i18n.logOutputEncoding``, and if not found will default to git's own
-+## default: ``utf-8``.
-+#log_encoding = 'utf-8'
-+
-+
-+## ``publish`` is a callable
-+##
-+## Sets what ``gitchangelog`` should do with the output generated by
-+## the output engine. ``publish`` is a callable taking one argument
-+## that is an interator on lines from the output engine.
-+##
-+## Some helper callable are provided:
-+##
-+## Available choices are:
-+##
-+##   - stdout
-+##
-+##        Outputs directly to standard output
-+##        (This is the default)
-+##
-+##   - FileInsertAtFirstRegexMatch(file, pattern, idx=lamda m: m.start(), flags)
-+##
-+##        Creates a callable that will parse given file for the given
-+##        regex pattern and will insert the output in the file.
-+##        ``idx`` is a callable that receive the matching object and
-+##        must return a integer index point where to insert the
-+##        the output in the file. Default is to return the position of
-+##        the start of the matched string.
-+##
-+##   - FileRegexSubst(file, pattern, replace, flags)
-+##
-+##        Apply a replace inplace in the given file. Your regex pattern must
-+##        take care of everything and might be more complex. Check the README
-+##        for a complete copy-pastable example.
-+##
-+# publish = FileInsertIntoFirstRegexMatch(
-+#     "CHANGELOG.rst",
-+#     r'/(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n/',
-+#     idx=lambda m: m.start(1)
-+# )
-+#publish = stdout
-+
-+
-+## ``revs`` is a list of callable or a list of string
-+##
-+## callable will be called to resolve as strings and allow dynamical
-+## computation of these. The result will be used as revisions for
-+## gitchangelog (as if directly stated on the command line). This allows
-+## to filter exaclty which commits will be read by gitchangelog.
-+##
-+## To get a full documentation on the format of these strings, please
-+## refer to the ``git rev-list`` arguments. There are many examples.
-+##
-+## Using callables is especially useful, for instance, if you
-+## are using gitchangelog to generate incrementally your changelog.
-+##
-+## Some helpers are provided, you can use them::
-+##
-+##   - FileFirstRegexMatch(file, pattern): will return a callable that will
-+##     return the first string match for the given pattern in the given file.
-+##     If you use named sub-patterns in your regex pattern, it'll output only
-+##     the string matching the regex pattern named "rev".
-+##
-+##   - Caret(rev): will return the rev prefixed by a "^", which is a
-+##     way to remove the given revision and all its ancestor.
-+##
-+## Please note that if you provide a rev-list on the command line, it'll
-+## replace this value (which will then be ignored).
-+##
-+## If empty, then ``gitchangelog`` will act as it had to generate a full
-+## changelog.
-+##
-+## The default is to use all commits to make the changelog.
-+#revs = ["^1.0.3", ]
-+#revs = [
-+#    Caret(
-+#        FileFirstRegexMatch(
-+#            "CHANGELOG.rst",
-+#            r"(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n")),
-+#    "HEAD"
-+#]
-+revs = []
-diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
-new file mode 100644
-index 0000000..356dd2c
---- /dev/null
-+++ b/.github/workflows/ci.yml
-@@ -0,0 +1,73 @@
-+# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
-+# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
-+
-+name: ci
-+
-+on:
-+  push:
-+    branches: [ master ]
-+  pull_request:
-+    branches: [ master ]
-+
-+jobs:
-+  build:
-+
-+    runs-on: ${{ matrix.os }}
-+    defaults:
-+      run:
-+        shell: bash
-+    env:
-+      OS: ${{ matrix.os }}
-+      PYTHON: ${{ matrix.python-version }}
-+      PYTHONIOENCODING: utf-8
-+      PIP_DOWNLOAD_CACHE: ${{ github.workspace }}/../.pip_download_cache
-+    strategy:
-+      fail-fast: false
-+      matrix:
-+        os: [ubuntu-20.04, macos-latest, windows-latest]
-+        python-version: [3.6, 3.7, 3.8, 3.9]
-+    steps:
-+    - name: Set git crlf/eol
-+      run: |
-+        git config --global core.autocrlf false
-+        git config --global core.eol lf
-+
-+    - uses: actions/checkout@v2
-+      with:
-+        submodules: True
-+
-+    - name: Set up Python ${{ matrix.python-version }}
-+      uses: actions/setup-python@v2
-+      with:
-+        python-version: ${{ matrix.python-version }}
-+
-+    - name: Install dependencies
-+      run: |
-+        python -m pip install --upgrade pip
-+        pip install tox tox-gh-actions
-+
-+    - name: Run tests with coverage
-+      run: |
-+        tox
-+      env:
-+        PLATFORM: ${{ matrix.os }}
-+
-+    - name: Upload coverage to Codecov
-+      uses: codecov/codecov-action@v1
-+      with:
-+        env_vars: OS,PYTHON
-+
-+    - name: Test with specs and pystache-test
-+      run: |
-+        tox -e setup . ext/spec/specs
-+
-+    - name: Check pkg builds
-+      run: |
-+        tox -e deploy
-+
-+    - name: Check docs
-+      if: runner.os == 'Linux'
-+      run: |
-+        sudo apt-get -qq update
-+        sudo apt-get install -y pandoc
-+        tox -e docs
-diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml
-new file mode 100644
-index 0000000..261f9ad
---- /dev/null
-+++ b/.github/workflows/conda.yml
-@@ -0,0 +1,55 @@
-+name: Conda
-+
-+on:
-+  workflow_dispatch:
-+  pull_request:
-+  push:
-+    branches:
-+      - master
-+
-+jobs:
-+  build:
-+    strategy:
-+      fail-fast: false
-+      matrix:
-+        platform: [ubuntu-18.04, windows-latest, macos-latest]
-+        python-version: [3.6, 3.7, 3.8, 3.9]
-+
-+    runs-on: ${{ matrix.platform }}
-+
-+    # The setup-miniconda action needs this to activate miniconda
-+    defaults:
-+      run:
-+        shell: "bash -l {0}"
-+
-+    steps:
-+      - uses: actions/checkout@v2
-+        with:
-+          fetch-depth: 0
-+
-+      - name: Cache conda
-+        uses: actions/cache@v1
-+        with:
-+          path: ~/conda_pkgs_dir
-+          key: ${{matrix.os}}-conda-pkgs-${{hashFiles('**/conda/meta.yaml')}}
-+
-+      - name: Get conda
-+        uses: conda-incubator/setup-miniconda@v2
-+        with:
-+          python-version: ${{ matrix.python-version }}
-+          channels: conda-forge
-+          channel-priority: strict
-+          use-only-tar-bz2: true
-+          auto-activate-base: true
-+
-+      - name: Prepare
-+        run: conda install conda-build conda-verify
-+
-+      - name: Build
-+        run: conda build conda
-+
-+      - name: Install
-+        run: conda install -c ${CONDA_PREFIX}/conda-bld/ pystache
-+
-+      - name: Test
-+        run: python test_pystache.py
-diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
-new file mode 100644
-index 0000000..f33c4b5
---- /dev/null
-+++ b/.github/workflows/release.yml
-@@ -0,0 +1,94 @@
-+name: Release
-+
-+on:
-+  push:
-+    # release on tag push
-+    tags:
-+      - '*'
-+
-+jobs:
-+  wheels:
-+
-+    runs-on: ${{ matrix.os }}
-+    defaults:
-+      run:
-+        shell: bash
-+    env:
-+      PYTHONIOENCODING: utf-8
-+    strategy:
-+      fail-fast: false
-+      matrix:
-+        os: [ubuntu-18.04, macos-latest, windows-latest]
-+        python-version: [3.6, 3.7, 3.8, 3.9]
-+        exclude:
-+          - os: windows-latest
-+            python-version: 2.7
-+
-+    steps:
-+    - name: Set git crlf/eol
-+      run: |
-+        git config --global core.autocrlf false
-+        git config --global core.eol lf
-+
-+    - uses: actions/checkout@v2
-+      with:
-+        fetch-depth: 0
-+
-+    - name: Set up Python ${{ matrix.python-version }}
-+      uses: actions/setup-python@v2
-+      with:
-+        python-version: ${{ matrix.python-version }}
-+
-+    - name: Install dependencies
-+      run: |
-+        python -m pip install --upgrade pip wheel
-+        pip install tox tox-gh-actions
-+
-+    - name: Build dist pkgs
-+      run: |
-+        tox -e deploy
-+
-+    - name: Upload artifacts
-+      if: matrix.python-version == 3.7 && runner.os == 'Linux'
-+      uses: actions/upload-artifact@v2
-+      with:
-+        name: wheels
-+        path: ./dist/*.whl
-+
-+  create_release:
-+    name: Create Release
-+    needs: [wheels]
-+    runs-on: ubuntu-18.04
-+
-+    steps:
-+      - name: Get version
-+        id: get_version
-+        run: |
-+          echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
-+          echo ${{ env.VERSION }}
-+
-+      - uses: actions/checkout@v2
-+        with:
-+          fetch-depth: 0
-+
-+      # download all artifacts to project dir
-+      - uses: actions/download-artifact@v2
-+
-+      - name: Generate changes file
-+        uses: sarnold/gitchangelog-action@master
-+        with:
-+          github_token: ${{ secrets.GITHUB_TOKEN}}
-+
-+      - name: Create release
-+        id: create_release
-+        uses: softprops/action-gh-release@v1
-+        env:
-+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-+        with:
-+          tag_name: ${{ env.VERSION }}
-+          name: Release v${{ env.VERSION }}
-+          body_path: CHANGES.md
-+          draft: false
-+          prerelease: false
-+          files: |
-+            wheels/pystache*.whl
-diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml
-new file mode 100644
-index 0000000..58f0c5e
---- /dev/null
-+++ b/.github/workflows/wheels.yml
-@@ -0,0 +1,82 @@
-+name: Wheels
-+
-+on:
-+  workflow_dispatch:
-+  pull_request:
-+  #push:
-+    #branches: [ master ]
-+
-+jobs:
-+  build:
-+
-+    runs-on: ${{ matrix.os }}
-+    defaults:
-+      run:
-+        shell: bash
-+    env:
-+      PYTHONIOENCODING: utf-8
-+    strategy:
-+      fail-fast: false
-+      matrix:
-+        os: [ubuntu-18.04, macos-latest, windows-latest]
-+        python-version: [3.6, 3.7, 3.8, 3.9]
-+
-+    steps:
-+      - name: Set git crlf/eol
-+        run: |
-+          git config --global core.autocrlf false
-+          git config --global core.eol lf
-+
-+      - uses: actions/checkout@v2
-+        with:
-+          fetch-depth: 0
-+
-+      - name: Set up Python ${{ matrix.python-version }}
-+        uses: actions/setup-python@v2
-+        with:
-+          python-version: ${{ matrix.python-version }}
-+
-+      - name: Install dependencies
-+        run: |
-+          python -m pip install --upgrade pip wheel
-+          pip install tox tox-gh-actions
-+
-+      - name: Build dist pkgs
-+        run: |
-+          tox -e deploy
-+
-+      - name: Upload artifacts
-+        if: matrix.python-version == 3.7 && runner.os == 'Linux'
-+        uses: actions/upload-artifact@v2
-+        with:
-+          name: wheels
-+          path: ./dist/*.whl
-+
-+  check_artifact:
-+    name: Check wheel artifact
-+    needs: [build]
-+    runs-on: ${{ matrix.os }}
-+    defaults:
-+      run:
-+        shell: bash
-+    env:
-+      PYTHONIOENCODING: utf-8
-+    strategy:
-+      fail-fast: false
-+      matrix:
-+        os: [ubuntu-18.04, macos-latest, windows-latest]
-+        python-version: [3.6, 3.8, 3.9]
-+
-+    steps:
-+      - name: Set up Python ${{ matrix.python-version }}
-+        uses: actions/setup-python@v2
-+        with:
-+          python-version: ${{ matrix.python-version }}
-+
-+      # download all artifacts to project dir
-+      - uses: actions/download-artifact@v2
-+
-+      - name: Check wheel install
-+        run: |
-+          bash -c 'export WHL=$(ls wheels/*.whl); python -m pip install $WHL'
-+          pystache-test
-diff --git a/.pep8speaks.yml b/.pep8speaks.yml
-new file mode 100644
-index 0000000..e841b66
---- /dev/null
-+++ b/.pep8speaks.yml
-@@ -0,0 +1,15 @@
-+scanner:
-+    linter: flake8  # Other option is pycodestyle
-+
-+no_blank_comment: False  # If True, no comment is made on PR without any errors.
-+descending_issues_order: True  # If True, PEP 8 issues in message will be displayed in descending order of line numbers in the file
-+
-+[flake8]
-+exclude =
-+    .git,
-+    .github,
-+    __pycache__,
-+    build,
-+    dist
-+
-+max-line-length = 110
-diff --git a/HISTORY.md b/HISTORY.md
-index e5b7638..60b6308 100644
---- a/HISTORY.md
-+++ b/HISTORY.md
-@@ -1,7 +1,42 @@
- History
- =======
- 
--**Note:** Official support for Python 2.4 will end with Pystache version 0.6.0.
-+**Note:** Official support for Python 2.7 will end with Pystache version 0.6.0.
-+
-+0.6.0 (2021-03-04)
-+------------------
-+
-+-   Bump spec versions to latest => v1.1.3
-+-   Modernize python and CI tools, update docs/doctests
-+-   Update unicode conversion test for py3-only
-+-   Add pep8speaks cfg, cleanup warnings
-+-   Remove superfluous setup test/unused imports
-+-   Add conda recipe/CI build
-+
-+0.5.6 (2021-02-28)
-+------------------
-+
-+-   Use correct wheel name in release workflow, limit wheels
-+-   Add install check/test of downloaded wheel
-+-   Update/add ci workflows and tox cfg, bump to next dev0 version
-+
-+0.5.5 (2020-12-16)
-+------------------
-+
-+-   fix document processing, update pandoc args and history
-+-   add release.yml to CI, test env settings
-+-   fix bogus commit message, update versions and tox cf
-+-   add post-test steps for building pkgs with/without doc updates
-+-   add CI build check, fix MANIFEST.in pruning
-+
-+0.5.4-2 (2020-11-09)
-+--------------------
-+
-+-   Merge pull request #1 from sarnold/rebase-up
-+-   Bugfix: test_specloader.py: fix test_find__with_directory on other OSs
-+-   Bugfix: pystache/loader.py: remove stray windows line-endings
-+-   fix crufty (and insecure) http urls
-+-   Bugfix: modernize python versions (keep py27) and fix spec_test load cmd
- 
- 0.5.4 (2014-07-11)
- ------------------
-diff --git a/MANIFEST.in b/MANIFEST.in
-index bdc64bf..1593143 100644
---- a/MANIFEST.in
-+++ b/MANIFEST.in
-@@ -1,7 +1,4 @@
--include README.md
--include HISTORY.md
--include LICENSE
--include TODO.md
-+include README.md HISTORY.md TODO.md LICENSE
- include setup_description.rst
- include tox.ini
- include test_pystache.py
-@@ -11,3 +8,6 @@ recursive-include pystache/tests *.mustache *.txt
- # We deliberately exclude the gh/ directory because it contains copies
- # of resources needed only for the web page hosted on GitHub (via the
- # gh-pages branch).
-+exclude *.ini *travis*
-+prune gh
-+prune .git*
-diff --git a/README.md b/README.md
-index 54a9608..1203b7a 100644
---- a/README.md
-+++ b/README.md
-@@ -10,11 +10,25 @@ Pystache
- <!-- -->
- <!-- We leave the leading brackets empty here.  Otherwise, unwanted -->
- <!-- caption text shows up in the reST version converted by pandoc. -->
--![](http://defunkt.github.com/pystache/images/logo_phillips.png "mustachioed, monocled snake by David Phillips")
-+[![ci](https://github.com/sarnold/pystache/actions/workflows/ci.yml/badge.svg)](https://github.com/sarnold/pystache/actions/workflows/ci.yml)
-+[![Conda](https://github.com/sarnold/pystache/actions/workflows/conda.yml/badge.svg)](https://github.com/sarnold/pystache/actions/workflows/conda.yml)
-+[![Wheels](https://github.com/sarnold/pystache/actions/workflows/wheels.yml/badge.svg)](https://github.com/sarnold/pystache/actions/workflows/wheels.yml)
-+[![Release](https://github.com/sarnold/pystache/actions/workflows/release.yml/badge.svg)](https://github.com/sarnold/pystache/actions/workflows/release.yml)
-+[![Python](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/)
- 
--![](https://secure.travis-ci.org/defunkt/pystache.png "Travis CI current build status")
-+[![Latest release](https://img.shields.io/github/v/release/sarnold/pystache?include_prereleases)](https://github.com/sarnold/pystache/releases/latest)
-+[![License](https://img.shields.io/github/license/sarnold/pystache)](https://github.com/sarnold/pystache/blob/master/LICENSE)
-+[![Maintainability](https://api.codeclimate.com/v1/badges/a8fa1bf4638bfc6581b6/maintainability)](https://codeclimate.com/github/sarnold/pystache/maintainability)
-+[![codecov](https://codecov.io/gh/sarnold/pystache/branch/master/graph/badge.svg?token=5PZNMZBI6K)](https://codecov.io/gh/sarnold/pystache)
- 
--[Pystache](http://defunkt.github.com/pystache) is a Python
-+
-+
-+This updated fork of Pystache is currently tested on Python 3.6+ and in
-+Conda, on Linux, Macos, and Windows (Python 2.7 support has been removed).
-+
-+![](gh/images/logo_phillips_small.png "mustachioed, monocled snake by David Phillips")
-+
-+[Pystache](http://sarnold.github.com/pystache) is a Python
- implementation of [Mustache](http://mustache.github.com/). Mustache is a
- framework-agnostic, logic-free templating system inspired by
- [ctemplate](http://code.google.com/p/google-ctemplate/) and
-@@ -27,10 +41,10 @@ provides a good introduction to Mustache's syntax. For a more complete
- (and more current) description of Mustache's behavior, see the official
- [Mustache spec](https://github.com/mustache/spec).
- 
--Pystache is [semantically versioned](http://semver.org) and can be found
--on [PyPI](http://pypi.python.org/pypi/pystache). This version of
--Pystache passes all tests in [version
--1.1.2](https://github.com/mustache/spec/tree/v1.1.2) of the spec.
-+Pystache is [semantically versioned](http://semver.org) and older versions
-+can still be found on [PyPI](http://pypi.python.org/pypi/pystache). This
-+version of Pystache now passes all tests in [version
-+1.1.3](https://github.com/mustache/spec/tree/v1.1.3) of the spec.
- 
- 
- Requirements
-@@ -38,41 +52,25 @@ Requirements
- 
- Pystache is tested with--
- 
---   Python 2.4 (requires simplejson [version
--    2.0.9](http://pypi.python.org/pypi/simplejson/2.0.9) or earlier)
---   Python 2.5 (requires
--    [simplejson](http://pypi.python.org/pypi/simplejson/))
---   Python 2.6
---   Python 2.7
---   Python 3.1
---   Python 3.2
---   Python 3.3
---   [PyPy](http://pypy.org/)
-+-   Python 3.6
-+-   Python 3.7
-+-   Python 3.8
-+-   Python 3.9
-+-   Conda (py36-py39)
- 
- [Distribute](http://packages.python.org/distribute/) (the setuptools fork)
--is recommended over [setuptools](http://pypi.python.org/pypi/setuptools),
--and is required in some cases (e.g. for Python 3 support).
--If you use [pip](http://www.pip-installer.org/), you probably already satisfy
--this requirement.
-+is no longer required over [setuptools](http://pypi.python.org/pypi/setuptools),
-+as the current packaging is now PEP517-compliant.
- 
- JSON support is needed only for the command-line interface and to run
--the spec tests. We require simplejson for earlier versions of Python
--since Python's [json](http://docs.python.org/library/json.html) module
--was added in Python 2.6.
--
--For Python 2.4 we require an earlier version of simplejson since
--simplejson stopped officially supporting Python 2.4 in simplejson
--version 2.1.0. Earlier versions of simplejson can be installed manually,
--as follows:
-+the spec tests; PyYAML can still be used (see the Develop section).
- 
--    pip install 'simplejson<2.1.0'
--
--Official support for Python 2.4 will end with Pystache version 0.6.0.
-+Official support for Python 2 will end with Pystache version 0.6.0.
- 
- Install It
- ----------
- 
--    pip install pystache
-+    pip install -U pystache -f https://github.com/sarnold/pystache/releases/
- 
- And test it--
- 
-@@ -85,12 +83,12 @@ Use It
- ------
- 
-     >>> import pystache
--    >>> print pystache.render('Hi {{person}}!', {'person': 'Mom'})
-+    >>> print(pystache.render('Hi {{person}}!', {'person': 'Mom'}))
-     Hi Mom!
- 
- You can also create dedicated view classes to hold your view logic.
- 
--Here's your view class (in .../examples/readme.py):
-+Here's your view class (in ../pystache/tests/examples/readme.py):
- 
-     class SayHello(object):
-         def to(self):
-@@ -109,7 +107,7 @@ directory as your class definition):
- Pull it together:
- 
-     >>> renderer = pystache.Renderer()
--    >>> print renderer.render(hello)
-+    >>> print(renderer.render(hello))
-     Hello, Pizza!
- 
- For greater control over rendering (e.g. to specify a custom template
-@@ -117,22 +115,22 @@ directory), use the `Renderer` class like above. One can pass attributes
- to the Renderer class constructor or set them on a Renderer instance. To
- customize template loading on a per-view basis, subclass `TemplateSpec`.
- See the docstrings of the
--[Renderer](https://github.com/defunkt/pystache/blob/master/pystache/renderer.py)
-+[Renderer](https://github.com/sarnold/pystache/blob/master/pystache/renderer.py)
- class and
--[TemplateSpec](https://github.com/defunkt/pystache/blob/master/pystache/template_spec.py)
-+[TemplateSpec](https://github.com/sarnold/pystache/blob/master/pystache/template_spec.py)
- class for more information.
- 
- You can also pre-parse a template:
- 
-     >>> parsed = pystache.parse(u"Hey {{#who}}{{.}}!{{/who}}")
--    >>> print parsed
--    [u'Hey ', _SectionNode(key=u'who', index_begin=12, index_end=18, parsed=[_EscapeNode(key=u'.'), u'!'])]
-+    >>> print(parsed)
-+    ['Hey ', _SectionNode(key='who', index_begin=12, index_end=18, parsed=[_EscapeNode(key='.'), '!'])]
- 
- And then:
- 
--    >>> print renderer.render(parsed, {'who': 'Pops'})
-+    >>> print(renderer.render(parsed, {'who': 'Pops'}))
-     Hey Pops!
--    >>> print renderer.render(parsed, {'who': 'you'})
-+    >>> print(renderer.render(parsed, {'who': 'you'}))
-     Hey you!
- 
- Python 3
-@@ -194,15 +192,16 @@ To test from a source distribution (without installing)--
-     python test_pystache.py
- 
- To test Pystache with multiple versions of Python (with a single
--command!), you can use [tox](http://pypi.python.org/pypi/tox):
-+command!) and different platforms, you can use [tox](http://pypi.python.org/pypi/tox):
-+
-+    pip install tox
-+    tox -e setup
- 
--    pip install 'virtualenv<1.8'  # Version 1.8 dropped support for Python 2.4.
--    pip install 'tox<1.4'  # Version 1.4 dropped support for Python 2.4.
--    tox
-+To run tests on multiple versions with coverage, run:
- 
--If you do not have all Python versions listed in `tox.ini`--
-+    tox -e py38-linux,py39-linux  # for example
- 
--    tox -e py26,py32  # for example
-+(substitute your platform above, eg, macos or windows)
- 
- The source distribution tests also include doctests and tests from the
- Mustache spec. To include tests from the Mustache spec in your test
-@@ -217,57 +216,33 @@ parses the json files. To install PyYAML--
- 
-     pip install pyyaml
- 
-+Once the submodule is available, you can run the full test set with:
-+
-+    tox -e setup . ext/spec/specs
-+
- To run a subset of the tests, you can use
- [nose](http://somethingaboutorange.com/mrl/projects/nose/0.11.1/testing.html):
- 
-     pip install nose
-     nosetests --tests pystache/tests/test_context.py:GetValueTests.test_dictionary__key_present
- 
--### Using Python 3 with Pystache from source
--
--Pystache is written in Python 2 and must be converted to Python 3 prior to
--using it with Python 3.  The installation process (and tox) do this
--automatically.
- 
--To convert the code to Python 3 manually (while using Python 3)--
-+Mailing List (old)
-+------------------
- 
--    python setup.py build
--
--This writes the converted code to a subdirectory called `build`.
--By design, Python 3 builds
--[cannot](https://bitbucket.org/tarek/distribute/issue/292/allow-use_2to3-with-python-2)
--be created from Python 2.
--
--To convert the code without using setup.py, you can use
--[2to3](http://docs.python.org/library/2to3.html) as follows (two steps)--
--
--    2to3 --write --nobackups --no-diffs --doctests_only pystache
--    2to3 --write --nobackups --no-diffs pystache
--
--This converts the code (and doctests) in place.
--
--To `import pystache` from a source distribution while using Python 3, be
--sure that you are importing from a directory containing a converted
--version of the code (e.g. from the `build` directory after converting),
--and not from the original (unconverted) source directory.  Otherwise, you will
--get a syntax error.  You can help prevent this by not running the Python
--IDE from the project directory when importing Pystache while using Python 3.
--
--
--Mailing List
--------------
--
--There is a [mailing list](http://librelist.com/browser/pystache/). Note
-+There is(was) a [mailing list](http://librelist.com/browser/pystache/). Note
- that there is a bit of a delay between posting a message and seeing it
- appear in the mailing list archive.
- 
- Credits
- -------
- 
--    >>> context = { 'author': 'Chris Wanstrath', 'maintainer': 'Chris Jerdonek' }
--    >>> print pystache.render("Author: {{author}}\nMaintainer: {{maintainer}}", context)
-+    >>> import pystache
-+    >>> context = { 'author': 'Chris Wanstrath', 'maintainer': 'Chris Jerdonek','refurbisher': 'Steve Arnold' }
-+    >>> print(pystache.render("Author: {{author}}\nMaintainer: {{maintainer}}\nRefurbisher: {{refurbisher}}", context))
-     Author: Chris Wanstrath
-     Maintainer: Chris Jerdonek
-+    Refurbisher: Steve Arnold
- 
- Pystache logo by [David Phillips](http://davidphillips.us/) is licensed
- under a [Creative Commons Attribution-ShareAlike 3.0 Unported
-diff --git a/TODO.md b/TODO.md
-index cd82417..76853a4 100644
---- a/TODO.md
-+++ b/TODO.md
-@@ -6,11 +6,10 @@ In development branch:
- * Figure out a way to suppress center alignment of images in reST output.
- * Add a unit test for the change made in 7ea8e7180c41.  This is with regard
-   to not requiring spec tests when running tests from a downloaded sdist.
--* End support for Python 2.4.
--* Add Python 3.3 to tox file (after deprecating 2.4).
-+* End support for Python 2.7 (done as of 03/03/21 - SA)
-+* Release 0.6.0 on github, make a pypi account (SA)
- * Turn the benchmarking script at pystache/tests/benchmark.py into a command
-   in pystache/commands, or make it a subcommand of one of the existing
-   commands (i.e. using a command argument).
- * Provide support for logging in at least one of the commands.
--* Make sure command parsing to pystache-test doesn't break with Python 2.4 and earlier.
- * Combine pystache-test with the main command.
-diff --git a/conda/meta.yaml b/conda/meta.yaml
-new file mode 100644
-index 0000000..e7f4fd9
---- /dev/null
-+++ b/conda/meta.yaml
-@@ -0,0 +1,50 @@
-+{% set name = "pystache" %}
-+{% set version = "0.6.0.dev0" %}
-+
-+package:
-+  name: {{ name|lower }}
-+  version: {{ version }}
-+
-+source:
-+  path: ..
-+
-+build:
-+  number: 0
-+  script: {{ PYTHON }} -m pip install . --no-deps --ignore-installed -vvv
-+  noarch: python
-+  entry_points:
-+    - pystache = pystache.commands.render:main
-+    - pystache-test = pystache.commands.test:main
-+
-+requirements:
-+  build:
-+    - python
-+    - setuptools
-+
-+  run:
-+    - python
-+
-+test:
-+  imports:
-+    - pystache
-+    - pystache.commands
-+    - pystache.tests
-+    - pystache.tests.data
-+    - pystache.tests.data.locator
-+    - pystache.tests.examples
-+
-+  commands:
-+    - pystache --help
-+    - pystache-test
-+
-+
-+about:
-+  home: https://github.com/sarnold/pystache
-+  license: MIT
-+  license_family: MIT
-+  license_file: LICENSE
-+  summary: Mustache for Python
-+
-+extra:
-+  recipe-maintainers:
-+    - sarnold
-diff --git a/pyproject.toml b/pyproject.toml
-new file mode 100644
-index 0000000..2f21011
---- /dev/null
-+++ b/pyproject.toml
-@@ -0,0 +1,3 @@
-+[build-system]
-+requires = ["setuptools>=40.8.0", "wheel"]
-+build-backend = "setuptools.build_meta"
-diff --git a/pystache/__init__.py b/pystache/__init__.py
-index 4cf2434..5edc1c5 100644
---- a/pystache/__init__.py
-+++ b/pystache/__init__.py
-@@ -10,4 +10,4 @@ from pystache.init import parse, render, Renderer, TemplateSpec
- 
- __all__ = ['parse', 'render', 'Renderer', 'TemplateSpec']
- 
--__version__ = '0.5.4'  # Also change in setup.py.
-+__version__ = '0.6.0'
-diff --git a/pystache/commands/render.py b/pystache/commands/render.py
-index 1a9c309..9c913e7 100644
---- a/pystache/commands/render.py
-+++ b/pystache/commands/render.py
-@@ -22,7 +22,7 @@ except:
-         from sys import exc_info
-         ex_type, ex_value, tb = exc_info()
-         new_ex = Exception("%s: %s" % (ex_type.__name__, ex_value))
--        raise new_ex.__class__, new_ex, tb
-+        raise new_ex.__class__(new_ex).with_traceback(tb)
- 
- # The optparse module is deprecated in Python 2.7 in favor of argparse.
- # However, argparse is not available in Python 2.6 and earlier.
-@@ -88,7 +88,7 @@ def main(sys_argv=sys.argv):
-         context = json.loads(context)
- 
-     rendered = renderer.render(template, context)
--    print rendered
-+    print(rendered)
- 
- 
- if __name__=='__main__':
-diff --git a/pystache/common.py b/pystache/common.py
-index fb266dd..0e9b091 100644
---- a/pystache/common.py
-+++ b/pystache/common.py
-@@ -5,17 +5,12 @@ Exposes functionality needed throughout the project.
- 
- """
- 
--from sys import version_info
- 
- def _get_string_types():
--    # TODO: come up with a better solution for this.  One of the issues here
--    #   is that in Python 3 there is no common base class for unicode strings
--    #   and byte strings, and 2to3 seems to convert all of "str", "unicode",
--    #   and "basestring" to Python 3's "str".
--    if version_info < (3, ):
--         return basestring
--    # The latter evaluates to "bytes" in Python 3 -- even after conversion by 2to3.
--    return (unicode, type(u"a".encode('utf-8')))
-+    """
-+    Return the Python3 string type (no more python2)
-+    """
-+    return (str, type("a".encode('utf-8')))
- 
- 
- _STRING_TYPES = _get_string_types()
-diff --git a/pystache/defaults.py b/pystache/defaults.py
-index bcfdf4c..2fab0e0 100644
---- a/pystache/defaults.py
-+++ b/pystache/defaults.py
-@@ -39,7 +39,7 @@ STRING_ENCODING = sys.getdefaultencoding()
- FILE_ENCODING = sys.getdefaultencoding()
- 
- # The delimiters to start with when parsing.
--DELIMITERS = (u'{{', u'}}')
-+DELIMITERS = ('{{', '}}')
- 
- # How to handle missing tags when rendering a template.
- MISSING_TAGS = MissingTags.ignore
-diff --git a/pystache/loader.py b/pystache/loader.py
-index d4a7e53..ea01d17 100644
---- a/pystache/loader.py
-+++ b/pystache/loader.py
-@@ -6,6 +6,7 @@ This module provides a Loader class for locating and reading templates.
- """
- 
- import os
-+import platform
- import sys
- 
- from pystache import common
-@@ -24,7 +25,7 @@ def _make_to_unicode():
-         """
-         if encoding is None:
-             encoding = defaults.STRING_ENCODING
--        return unicode(s, encoding, defaults.DECODE_ERRORS)
-+        return str(s, encoding, defaults.DECODE_ERRORS)
-     return to_unicode
- 
- 
-@@ -86,7 +87,7 @@ class Loader(object):
-     def _make_locator(self):
-         return Locator(extension=self.extension)
- 
--    def unicode(self, s, encoding=None):
-+    def str(self, s, encoding=None):
-         """
-         Convert a string to unicode using the given encoding, and return it.
- 
-@@ -104,8 +105,8 @@ class Loader(object):
-             Defaults to None.
- 
-         """
--        if isinstance(s, unicode):
--            return unicode(s)
-+        if isinstance(s, str):
-+            return str(s)
- 
-         return self.to_unicode(s, encoding)
- 
-@@ -118,8 +119,9 @@ class Loader(object):
- 
-         if encoding is None:
-             encoding = self.file_encoding
--
--        return self.unicode(b, encoding)
-+        if platform.system() == "Windows":
-+            return self.str(b, encoding).replace('\r', '')
-+        return self.str(b, encoding)
- 
-     def load_file(self, file_name):
-         """
-diff --git a/pystache/parsed.py b/pystache/parsed.py
-index 372d96c..75d417d 100644
---- a/pystache/parsed.py
-+++ b/pystache/parsed.py
-@@ -41,10 +41,10 @@ class ParsedTemplate(object):
-         """
-         # We avoid use of the ternary operator for Python 2.4 support.
-         def get_unicode(node):
--            if type(node) is unicode:
-+            if type(node) is str:
-                 return node
-             return node.render(engine, context)
--        parts = map(get_unicode, self._parse_tree)
-+        parts = list(map(get_unicode, self._parse_tree))
-         s = ''.join(parts)
- 
--        return unicode(s)
-+        return str(s)
-diff --git a/pystache/parser.py b/pystache/parser.py
-index c6a171f..1afd50a 100644
---- a/pystache/parser.py
-+++ b/pystache/parser.py
-@@ -11,8 +11,8 @@ from pystache import defaults
- from pystache.parsed import ParsedTemplate
- 
- 
--END_OF_LINE_CHARACTERS = [u'\r', u'\n']
--NON_BLANK_RE = re.compile(ur'^(.)', re.M)
-+END_OF_LINE_CHARACTERS = ['\r', '\n']
-+NON_BLANK_RE = re.compile(r'^(.)', re.M)
- 
- 
- # TODO: add some unit tests for this.
-@@ -30,12 +30,12 @@ def parse(template, delimiters=None):
- 
-     Examples:
- 
--    >>> parsed = parse(u"Hey {{#who}}{{name}}!{{/who}}")
--    >>> print str(parsed).replace('u', '')  # This is a hack to get the test to pass both in Python 2 and 3.
-+    >>> parsed = parse("Hey {{#who}}{{name}}!{{/who}}")
-+    >>> print(str(parsed).replace('u', ''))  # This is an old hack.
-     ['Hey ', _SectionNode(key='who', index_begin=12, index_end=21, parsed=[_EscapeNode(key='name'), '!'])]
- 
-     """
--    if type(template) is not unicode:
-+    if type(template) is not str:
-         raise Exception("Template is not unicode: %s" % type(template))
-     parser = _Parser(delimiters)
-     return parser.parse(template)
-@@ -94,7 +94,7 @@ class _CommentNode(object):
-         return _format(self)
- 
-     def render(self, engine, context):
--        return u''
-+        return ''
- 
- 
- class _ChangeNode(object):
-@@ -106,7 +106,7 @@ class _ChangeNode(object):
-         return _format(self)
- 
-     def render(self, engine, context):
--        return u''
-+        return ''
- 
- 
- class _EscapeNode(object):
-@@ -147,7 +147,7 @@ class _PartialNode(object):
-     def render(self, engine, context):
-         template = engine.resolve_partial(self.key)
-         # Indent before rendering.
--        template = re.sub(NON_BLANK_RE, self.indent + ur'\1', template)
-+        template = re.sub(NON_BLANK_RE, self.indent + r'\1', template)
- 
-         return engine.render(template, context)
- 
-@@ -168,7 +168,7 @@ class _InvertedNode(object):
-         # Note that lambdas are considered truthy for inverted sections
-         # per the spec.
-         if data:
--            return u''
-+            return ''
-         return self.parsed_section.render(engine, context)
- 
- 
-@@ -218,7 +218,7 @@ class _SectionNode(object):
-             parts.append(self.parsed.render(engine, context))
-             context.pop()
- 
--        return unicode(''.join(parts))
-+        return str(''.join(parts))
- 
- 
- class _Parser(object):
-diff --git a/pystache/renderengine.py b/pystache/renderengine.py
-index c797b17..2f1e341 100644
---- a/pystache/renderengine.py
-+++ b/pystache/renderengine.py
-@@ -160,7 +160,7 @@ class RenderEngine(object):
-         if not is_string(val):
-             # In case the template is an integer, for example.
-             val = self.to_str(val)
--        if type(val) is not unicode:
-+        if type(val) is not str:
-             val = self.literal(val)
-         return self.render(val, context, delimiters)
- 
-diff --git a/pystache/renderer.py b/pystache/renderer.py
-index ff6a90c..064f040 100644
---- a/pystache/renderer.py
-+++ b/pystache/renderer.py
-@@ -32,7 +32,7 @@ class Renderer(object):
-     >>> partials = {'partial': 'Hello, {{thing}}!'}
-     >>> renderer = Renderer(partials=partials)
-     >>> # We apply print to make the test work in Python 3 after 2to3.
--    >>> print renderer.render('{{>partial}}', {'thing': 'world'})
-+    >>> print(renderer.render('{{>partial}}', {'thing': 'world'}))
-     Hello, world!
- 
-     To customize string coercion (e.g. to render False values as ''), one can
-@@ -130,7 +130,7 @@ class Renderer(object):
-         if string_encoding is None:
-             string_encoding = defaults.STRING_ENCODING
- 
--        if isinstance(search_dirs, basestring):
-+        if isinstance(search_dirs, str):
-             search_dirs = [search_dirs]
- 
-         self._context = None
-@@ -177,16 +177,16 @@ class Renderer(object):
-         """
-         # We type-check to avoid "TypeError: decoding Unicode is not supported".
-         # We avoid the Python ternary operator for Python 2.4 support.
--        if isinstance(s, unicode):
-+        if isinstance(s, str):
-             return s
--        return self.unicode(s)
-+        return self.str(s)
- 
-     def _to_unicode_hard(self, s):
-         """
-         Convert a basestring to a string with type unicode (not subclass).
- 
-         """
--        return unicode(self._to_unicode_soft(s))
-+        return str(self._to_unicode_soft(s))
- 
-     def _escape_to_unicode(self, s):
-         """
-@@ -195,9 +195,9 @@ class Renderer(object):
-         Returns a unicode string (not subclass).
- 
-         """
--        return unicode(self.escape(self._to_unicode_soft(s)))
-+        return str(self.escape(self._to_unicode_soft(s)))
- 
--    def unicode(self, b, encoding=None):
-+    def str(self, b, encoding=None):
-         """
-         Convert a byte string to unicode, using string_encoding and decode_errors.
- 
-@@ -222,7 +222,7 @@ class Renderer(object):
- 
-         # TODO: Wrap UnicodeDecodeErrors with a message about setting
-         # the string_encoding and decode_errors attributes.
--        return unicode(b, encoding, self.decode_errors)
-+        return str(b, encoding, self.decode_errors)
- 
-     def _make_loader(self):
-         """
-@@ -230,7 +230,7 @@ class Renderer(object):
- 
-         """
-         return Loader(file_encoding=self.file_encoding, extension=self.file_extension,
--                      to_unicode=self.unicode, search_dirs=self.search_dirs)
-+                      to_unicode=self.str, search_dirs=self.search_dirs)
- 
-     def _make_load_template(self):
-         """
-@@ -299,7 +299,7 @@ class Renderer(object):
-             try:
-                 return load_partial(name)
-             except TemplateNotFoundError:
--                return u''
-+                return ''
- 
-         return resolve_partial
- 
-@@ -316,7 +316,7 @@ class Renderer(object):
-             try:
-                 return context_get(stack, name)
-             except KeyNotFoundError:
--                return u''
-+                return ''
- 
-         return resolve_context
- 
-diff --git a/pystache/specloader.py b/pystache/specloader.py
-index 3a77d4c..a82d52a 100644
---- a/pystache/specloader.py
-+++ b/pystache/specloader.py
-@@ -83,7 +83,7 @@ class SpecLoader(object):
- 
-         """
-         if spec.template is not None:
--            return self.loader.unicode(spec.template, spec.template_encoding)
-+            return self.loader.str(spec.template, spec.template_encoding)
- 
-         path = self._find(spec)
- 
-diff --git a/pystache/tests/benchmark.py b/pystache/tests/benchmark.py
-index d46e973..6cb54f8 100755
---- a/pystache/tests/benchmark.py
-+++ b/pystache/tests/benchmark.py
-@@ -13,6 +13,13 @@ tests/benchmark.py 10000
- import sys
- from timeit import Timer
- 
-+try:
-+    import chevron as pystache
-+    print('Using module: chevron')
-+except (ImportError):
-+    import pystache
-+    print('Using module: pystache')
-+
- import pystache
- 
- # TODO: make the example realistic.
-@@ -76,17 +83,17 @@ def main(sys_argv):
-     args = sys_argv[1:]
-     count = int(args[0])
- 
--    print "Benchmarking: %sx" % count
--    print
-+    print("Benchmarking: %sx" % count)
-+    print()
- 
-     for example in examples:
- 
-         test = make_test_function(example)
- 
-         t = Timer(test,)
--        print min(t.repeat(repeat=3, number=count))
-+        print(min(t.repeat(repeat=3, number=count)))
- 
--    print "Done"
-+    print("Done")
- 
- 
- if __name__ == '__main__':
-diff --git a/pystache/tests/common.py b/pystache/tests/common.py
-index 222e14f..12b76b5 100644
---- a/pystache/tests/common.py
-+++ b/pystache/tests/common.py
-@@ -72,8 +72,8 @@ def _find_files(root_dir, should_include):
-     #   http://docs.python.org/library/os.html#os.walk
-     for dir_path, dir_names, file_names in os.walk(root_dir):
-         new_paths = [os.path.join(dir_path, file_name) for file_name in file_names]
--        new_paths = filter(is_module, new_paths)
--        new_paths = filter(should_include, new_paths)
-+        new_paths = list(filter(is_module, new_paths))
-+        new_paths = list(filter(should_include, new_paths))
-         paths.extend(new_paths)
- 
-     return paths
-@@ -183,7 +183,7 @@ class AssertExceptionMixin:
-         try:
-             callable(*args, **kwds)
-             raise Exception("Expected exception: %s: %s" % (exception_type, repr(msg)))
--        except exception_type, err:
-+        except exception_type as err:
-             self.assertEqual(str(err), msg)
- 
- 
-@@ -228,10 +228,10 @@ class Attachable(object):
-     """
-     def __init__(self, **kwargs):
-         self.__args__ = kwargs
--        for arg, value in kwargs.iteritems():
-+        for arg, value in kwargs.items():
-             setattr(self, arg, value)
- 
-     def __repr__(self):
-         return "%s(%s)" % (self.__class__.__name__,
-                            ", ".join("%s=%s" % (k, repr(v))
--                                     for k, v in self.__args__.iteritems()))
-+                                     for k, v in self.__args__.items()))
-diff --git a/pystache/tests/examples/unicode_output.py b/pystache/tests/examples/unicode_output.py
-index da0e1d2..7bdea36 100644
---- a/pystache/tests/examples/unicode_output.py
-+++ b/pystache/tests/examples/unicode_output.py
-@@ -8,4 +8,4 @@ TODO: add a docstring.
- class UnicodeOutput(object):
- 
-     def name(self):
--        return u'Henri Poincaré'
-+        return 'Henri Poincaré'
-diff --git a/pystache/tests/main.py b/pystache/tests/main.py
-index 8af6b2e..17f2fb2 100644
---- a/pystache/tests/main.py
-+++ b/pystache/tests/main.py
-@@ -88,7 +88,7 @@ def main(sys_argv):
- 
-     """
-     # TODO: use logging module
--    print "pystache: running tests: argv: %s" % repr(sys_argv)
-+    print("pystache: running tests: argv: %s" % repr(sys_argv))
- 
-     should_source_exist = False
-     spec_test_dir = None
-@@ -131,11 +131,9 @@ def main(sys_argv):
-         module_names = _discover_test_modules(PACKAGE_DIR)
-         sys_argv.extend(module_names)
-         if project_dir is not None:
--            # Add the current module for unit tests contained here (e.g.
--            # to include SetupTests).
-+            # Add the current module for unit tests contained here
-             sys_argv.append(__name__)
- 
--    SetupTests.project_dir = project_dir
- 
-     extra_tests = make_extra_tests(project_dir, spec_test_dir)
-     test_program_class = make_test_program_class(extra_tests)
-@@ -166,25 +164,3 @@ def _discover_test_modules(package_dir):
-         raise Exception("No unit-test modules found--\n  in %s" % package_dir)
- 
-     return names
--
--
--class SetupTests(TestCase):
--
--    """Tests about setup.py."""
--
--    project_dir = None
--
--    def test_version(self):
--        """
--        Test that setup.py's version matches the package's version.
--
--        """
--        original_path = list(sys.path)
--
--        sys.path.insert(0, self.project_dir)
--
--        try:
--            from setup import VERSION
--            self.assertEqual(VERSION, pystache.__version__)
--        finally:
--            sys.path = original_path
-diff --git a/pystache/tests/spectesting.py b/pystache/tests/spectesting.py
-index ec8a08d..2dd57e8 100644
---- a/pystache/tests/spectesting.py
-+++ b/pystache/tests/spectesting.py
-@@ -37,7 +37,7 @@ except ImportError:
-             from sys import exc_info
-             ex_type, ex_value, tb = exc_info()
-             new_ex = Exception("%s: %s" % (ex_type.__name__, ex_value))
--            raise new_ex.__class__, new_ex, tb
-+            raise new_ex.__class__(new_ex).with_traceback(tb)
-     file_extension = 'json'
-     parser = json
- else:
-@@ -62,7 +62,7 @@ def get_spec_tests(spec_test_dir):
- 
-     """
-     # TODO: use logging module instead.
--    print "pystache: spec tests: using %s" % _get_parser_info()
-+    print("pystache: spec tests: using %s" % _get_parser_info())
- 
-     cases = []
- 
-@@ -103,7 +103,7 @@ def _read_spec_tests(path):
- 
-     """
-     b = common.read(path)
--    u = unicode(b, encoding=FILE_ENCODING)
-+    u = str(b, encoding=FILE_ENCODING)
-     spec_data = parse(u)
-     tests = spec_data['tests']
- 
-@@ -133,7 +133,7 @@ def _convert_children(node):
-         return
-     # Otherwise, node is a dict, so attempt the conversion.
- 
--    for key in node.keys():
-+    for key in list(node.keys()):
-         val = node[key]
- 
-         if not isinstance(val, dict) or val.get('__tag__') != 'code':
-@@ -158,9 +158,9 @@ def _deserialize_spec_test(data, file_path):
-     context = data['data']
-     description = data['desc']
-     # PyYAML seems to leave ASCII strings as byte strings.
--    expected = unicode(data['expected'])
-+    expected = str(data['expected'])
-     # TODO: switch to using dict.get().
--    partials = data.has_key('partials') and data['partials'] or {}
-+    partials = 'partials' in data and data['partials'] or {}
-     template = data['template']
-     test_name = data['name']
- 
-@@ -237,8 +237,8 @@ def parse(u):
-         value = loader.construct_mapping(node)
-         return eval(value['python'], {})
- 
--    yaml.add_constructor(u'!code', code_constructor)
--    return yaml.load(u)
-+    yaml.add_constructor('!code', code_constructor)
-+    return yaml.full_load(u)
- 
- 
- class SpecTestBase(unittest.TestCase, AssertStringMixin):
-diff --git a/pystache/tests/test___init__.py b/pystache/tests/test___init__.py
-index eae42c1..63d2c3b 100644
---- a/pystache/tests/test___init__.py
-+++ b/pystache/tests/test___init__.py
-@@ -6,9 +6,9 @@ Tests of __init__.py.
- """
- 
- # Calling "import *" is allowed only at the module level.
--GLOBALS_INITIAL = globals().keys()
-+GLOBALS_INITIAL = list(globals().keys())
- from pystache import *
--GLOBALS_PYSTACHE_IMPORTED = globals().keys()
-+GLOBALS_PYSTACHE_IMPORTED = list(globals().keys())
- 
- import unittest
- 
-diff --git a/pystache/tests/test_commands.py b/pystache/tests/test_commands.py
-index 2529d25..34fe8ba 100644
---- a/pystache/tests/test_commands.py
-+++ b/pystache/tests/test_commands.py
-@@ -39,7 +39,7 @@ class CommandsTestCase(unittest.TestCase):
- 
-         """
-         actual = self.callScript("Hi {{thing}}", '{"thing": "world"}')
--        self.assertEqual(actual, u"Hi world\n")
-+        self.assertEqual(actual, "Hi world\n")
- 
-     def tearDown(self):
-         sys.stdout = ORIGINAL_STDOUT
-diff --git a/pystache/tests/test_defaults.py b/pystache/tests/test_defaults.py
-index c78ea7c..5399bb0 100644
---- a/pystache/tests/test_defaults.py
-+++ b/pystache/tests/test_defaults.py
-@@ -31,37 +31,37 @@ class DefaultsConfigurableTestCase(unittest.TestCase, AssertStringMixin):
-             self.saved[e] = getattr(pystache.defaults, e)
- 
-     def tearDown(self):
--        for key, value in self.saved.items():
-+        for key, value in list(self.saved.items()):
-             setattr(pystache.defaults, key, value)
- 
-     def test_tag_escape(self):
-         """Test that changes to defaults.TAG_ESCAPE take effect."""
--        template = u"{{foo}}"
-+        template = "{{foo}}"
-         context = {'foo': '<'}
-         actual = pystache.render(template, context)
--        self.assertString(actual, u"&lt;")
-+        self.assertString(actual, "&lt;")
- 
-         pystache.defaults.TAG_ESCAPE = lambda u: u
-         actual = pystache.render(template, context)
--        self.assertString(actual, u"<")
-+        self.assertString(actual, "<")
- 
-     def test_delimiters(self):
-         """Test that changes to defaults.DELIMITERS take effect."""
--        template = u"[[foo]]{{foo}}"
-+        template = "[[foo]]{{foo}}"
-         context = {'foo': 'FOO'}
-         actual = pystache.render(template, context)
--        self.assertString(actual, u"[[foo]]FOO")
-+        self.assertString(actual, "[[foo]]FOO")
- 
-         pystache.defaults.DELIMITERS = ('[[', ']]')
-         actual = pystache.render(template, context)
--        self.assertString(actual, u"FOO{{foo}}")
-+        self.assertString(actual, "FOO{{foo}}")
- 
-     def test_missing_tags(self):
-         """Test that changes to defaults.MISSING_TAGS take effect."""
--        template = u"{{foo}}"
-+        template = "{{foo}}"
-         context = {}
-         actual = pystache.render(template, context)
--        self.assertString(actual, u"")
-+        self.assertString(actual, "")
- 
-         pystache.defaults.MISSING_TAGS = 'strict'
-         self.assertRaises(pystache.context.KeyNotFoundError,
-diff --git a/pystache/tests/test_examples.py b/pystache/tests/test_examples.py
-index 5c9f74d..9f93de3 100644
---- a/pystache/tests/test_examples.py
-+++ b/pystache/tests/test_examples.py
-@@ -7,15 +7,15 @@ TODO: add a docstring.
- 
- import unittest
- 
--from examples.comments import Comments
--from examples.double_section import DoubleSection
--from examples.escaped import Escaped
--from examples.unescaped import Unescaped
--from examples.template_partial import TemplatePartial
--from examples.delimiters import Delimiters
--from examples.unicode_output import UnicodeOutput
--from examples.unicode_input import UnicodeInput
--from examples.nested_context import NestedContext
-+from .examples.comments import Comments
-+from .examples.double_section import DoubleSection
-+from .examples.escaped import Escaped
-+from .examples.unescaped import Unescaped
-+from .examples.template_partial import TemplatePartial
-+from .examples.delimiters import Delimiters
-+from .examples.unicode_output import UnicodeOutput
-+from .examples.unicode_input import UnicodeInput
-+from .examples.nested_context import NestedContext
- from pystache import Renderer
- from pystache.tests.common import EXAMPLES_DIR
- from pystache.tests.common import AssertStringMixin
-@@ -29,34 +29,34 @@ class TestView(unittest.TestCase, AssertStringMixin):
-         self.assertString(actual, expected)
- 
-     def test_comments(self):
--        self._assert(Comments(), u"<h1>A Comedy of Errors</h1>")
-+        self._assert(Comments(), "<h1>A Comedy of Errors</h1>")
- 
-     def test_double_section(self):
--        self._assert(DoubleSection(), u"* first\n* second\n* third")
-+        self._assert(DoubleSection(), "* first\n* second\n* third")
- 
-     def test_unicode_output(self):
-         renderer = Renderer()
-         actual = renderer.render(UnicodeOutput())
--        self.assertString(actual, u'<p>Name: Henri Poincaré</p>')
-+        self.assertString(actual, '<p>Name: Henri Poincaré</p>')
- 
-     def test_unicode_input(self):
-         renderer = Renderer()
-         actual = renderer.render(UnicodeInput())
--        self.assertString(actual, u'abcdé')
-+        self.assertString(actual, 'abcdé')
- 
-     def test_escaping(self):
--        self._assert(Escaped(), u"<h1>Bear &gt; Shark</h1>")
-+        self._assert(Escaped(), "<h1>Bear &gt; Shark</h1>")
- 
-     def test_literal(self):
-         renderer = Renderer()
-         actual = renderer.render(Unescaped())
--        self.assertString(actual, u"<h1>Bear > Shark</h1>")
-+        self.assertString(actual, "<h1>Bear > Shark</h1>")
- 
-     def test_template_partial(self):
-         renderer = Renderer(search_dirs=EXAMPLES_DIR)
-         actual = renderer.render(TemplatePartial(renderer=renderer))
- 
--        self.assertString(actual, u"""<h1>Welcome</h1>
-+        self.assertString(actual, """<h1>Welcome</h1>
- Again, Welcome!""")
- 
-     def test_template_partial_extension(self):
-@@ -65,7 +65,7 @@ Again, Welcome!""")
-         view = TemplatePartial(renderer=renderer)
- 
-         actual = renderer.render(view)
--        self.assertString(actual, u"""Welcome
-+        self.assertString(actual, """Welcome
- -------
- 
- ## Again, Welcome! ##""")
-@@ -73,7 +73,7 @@ Again, Welcome!""")
-     def test_delimiters(self):
-         renderer = Renderer()
-         actual = renderer.render(Delimiters())
--        self.assertString(actual, u"""\
-+        self.assertString(actual, """\
- * It worked the first time.
- * And it worked the second time.
- * Then, surprisingly, it worked the third time.
-@@ -82,7 +82,7 @@ Again, Welcome!""")
-     def test_nested_context(self):
-         renderer = Renderer()
-         actual = renderer.render(NestedContext(renderer))
--        self.assertString(actual, u"one and foo and two")
-+        self.assertString(actual, "one and foo and two")
- 
-     def test_nested_context_is_available_in_view(self):
-         renderer = Renderer()
-@@ -91,7 +91,7 @@ Again, Welcome!""")
-         view.template = '{{#herp}}{{#derp}}{{nested_context_in_view}}{{/derp}}{{/herp}}'
- 
-         actual = renderer.render(view)
--        self.assertString(actual, u'it works!')
-+        self.assertString(actual, 'it works!')
- 
-     def test_partial_in_partial_has_access_to_grand_parent_context(self):
-         renderer = Renderer(search_dirs=EXAMPLES_DIR)
-diff --git a/pystache/tests/test_loader.py b/pystache/tests/test_loader.py
-index f2c2187..315daff 100644
---- a/pystache/tests/test_loader.py
-+++ b/pystache/tests/test_loader.py
-@@ -55,23 +55,23 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
- 
-     def test_init__to_unicode__default(self):
-         loader = Loader()
--        self.assertRaises(TypeError, loader.to_unicode, u"abc")
-+        self.assertRaises(TypeError, loader.to_unicode, "abc")
- 
-         decode_errors = defaults.DECODE_ERRORS
-         string_encoding = defaults.STRING_ENCODING
- 
--        nonascii = u'abcdé'.encode('utf-8')
-+        nonascii = 'abcdé'.encode('utf-8')
- 
-         loader = Loader()
-         self.assertRaises(UnicodeDecodeError, loader.to_unicode, nonascii)
- 
-         defaults.DECODE_ERRORS = 'ignore'
-         loader = Loader()
--        self.assertString(loader.to_unicode(nonascii), u'abcd')
-+        self.assertString(loader.to_unicode(nonascii), 'abcd')
- 
-         defaults.STRING_ENCODING = 'utf-8'
-         loader = Loader()
--        self.assertString(loader.to_unicode(nonascii), u'abcdé')
-+        self.assertString(loader.to_unicode(nonascii), 'abcdé')
- 
- 
-     def _get_path(self, filename):
-@@ -83,9 +83,9 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
- 
-         """
-         loader = Loader()
--        actual = loader.unicode("foo")
-+        actual = loader.str("foo")
- 
--        self.assertString(actual, u"foo")
-+        self.assertString(actual, "foo")
- 
-     def test_unicode__basic__input_unicode(self):
-         """
-@@ -93,24 +93,24 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
- 
-         """
-         loader = Loader()
--        actual = loader.unicode(u"foo")
-+        actual = loader.str("foo")
- 
--        self.assertString(actual, u"foo")
-+        self.assertString(actual, "foo")
- 
-     def test_unicode__basic__input_unicode_subclass(self):
-         """
-         Test unicode(): default arguments with unicode-subclass input.
- 
-         """
--        class UnicodeSubclass(unicode):
-+        class UnicodeSubclass(str):
-             pass
- 
--        s = UnicodeSubclass(u"foo")
-+        s = UnicodeSubclass("foo")
- 
-         loader = Loader()
--        actual = loader.unicode(s)
-+        actual = loader.str(s)
- 
--        self.assertString(actual, u"foo")
-+        self.assertString(actual, "foo")
- 
-     def test_unicode__to_unicode__attribute(self):
-         """
-@@ -119,16 +119,16 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
-         """
-         loader = Loader()
- 
--        non_ascii = u'abcdé'.encode('utf-8')
--        self.assertRaises(UnicodeDecodeError, loader.unicode, non_ascii)
-+        non_ascii = 'abcdé'.encode('utf-8')
-+        self.assertRaises(UnicodeDecodeError, loader.str, non_ascii)
- 
-         def to_unicode(s, encoding=None):
-             if encoding is None:
-                 encoding = 'utf-8'
--            return unicode(s, encoding)
-+            return str(s, encoding)
- 
-         loader.to_unicode = to_unicode
--        self.assertString(loader.unicode(non_ascii), u"abcdé")
-+        self.assertString(loader.str(non_ascii), "abcdé")
- 
-     def test_unicode__encoding_argument(self):
-         """
-@@ -137,12 +137,12 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
-         """
-         loader = Loader()
- 
--        non_ascii = u'abcdé'.encode('utf-8')
-+        non_ascii = 'abcdé'.encode('utf-8')
- 
--        self.assertRaises(UnicodeDecodeError, loader.unicode, non_ascii)
-+        self.assertRaises(UnicodeDecodeError, loader.str, non_ascii)
- 
--        actual = loader.unicode(non_ascii, encoding='utf-8')
--        self.assertString(actual, u'abcdé')
-+        actual = loader.str(non_ascii, encoding='utf-8')
-+        self.assertString(actual, 'abcdé')
- 
-     # TODO: check the read() unit tests.
-     def test_read(self):
-@@ -153,7 +153,7 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
-         loader = Loader()
-         path = self._get_path('ascii.mustache')
-         actual = loader.read(path)
--        self.assertString(actual, u'ascii: abc')
-+        self.assertString(actual, 'ascii: abc')
- 
-     def test_read__file_encoding__attribute(self):
-         """
-@@ -167,7 +167,7 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
- 
-         loader.file_encoding = 'utf-8'
-         actual = loader.read(path)
--        self.assertString(actual, u'non-ascii: é')
-+        self.assertString(actual, 'non-ascii: é')
- 
-     def test_read__encoding__argument(self):
-         """
-@@ -180,7 +180,7 @@ class LoaderTests(unittest.TestCase, AssertStringMixin, SetupDefaults):
-         self.assertRaises(UnicodeDecodeError, loader.read, path)
- 
-         actual = loader.read(path, encoding='utf-8')
--        self.assertString(actual, u'non-ascii: é')
-+        self.assertString(actual, 'non-ascii: é')
- 
-     def test_read__to_unicode__attribute(self):
-         """
-diff --git a/pystache/tests/test_pystache.py b/pystache/tests/test_pystache.py
-index 5447f8d..cf5d6af 100644
---- a/pystache/tests/test_pystache.py
-+++ b/pystache/tests/test_pystache.py
-@@ -71,14 +71,14 @@ class PystacheTests(unittest.TestCase):
-         template = "{{#stats}}({{key}} & {{value}}){{/stats}}"
-         stats = []
-         stats.append({'key': 123, 'value': ['something']})
--        stats.append({'key': u"chris", 'value': 0.900})
-+        stats.append({'key': "chris", 'value': 0.900})
-         context = { 'stats': stats }
-         self._assert_rendered(self.non_strings_expected, template, context)
- 
-     def test_unicode(self):
-         template = 'Name: {{name}}; Age: {{age}}'
--        context = {'name': u'Henri Poincaré', 'age': 156 }
--        self._assert_rendered(u'Name: Henri Poincaré; Age: 156', template, context)
-+        context = {'name': 'Henri Poincaré', 'age': 156}
-+        self._assert_rendered('Name: Henri Poincaré; Age: 156', template, context)
- 
-     def test_sections(self):
-         template = """<ul>{{#users}}<li>{{name}}</li>{{/users}}</ul>"""
-diff --git a/pystache/tests/test_renderengine.py b/pystache/tests/test_renderengine.py
-index db916f7..ed604c5 100644
---- a/pystache/tests/test_renderengine.py
-+++ b/pystache/tests/test_renderengine.py
-@@ -33,11 +33,11 @@ def mock_literal(s):
-       s: a byte string or unicode string.
- 
-     """
--    if isinstance(s, unicode):
-+    if isinstance(s, str):
-         # Strip off unicode super classes, if present.
--        u = unicode(s)
-+        u = str(s)
-     else:
--        u = unicode(s, encoding='ascii')
-+        u = str(s, encoding='ascii')
- 
-     # We apply upper() to make sure we are actually using our custom
-     # function in the tests
-@@ -94,17 +94,17 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         engine = kwargs.get('engine', self._engine())
- 
-         if partials is not None:
--            engine.resolve_partial = lambda key: unicode(partials[key])
-+            engine.resolve_partial = lambda key: str(partials[key])
- 
-         context = ContextStack(*context)
- 
-         # RenderEngine.render() only accepts unicode template strings.
--        actual = engine.render(unicode(template), context)
-+        actual = engine.render(str(template), context)
- 
-         self.assertString(actual=actual, expected=expected)
- 
-     def test_render(self):
--        self._assert_render(u'Hi Mom', 'Hi {{person}}', {'person': 'Mom'})
-+        self._assert_render('Hi Mom', 'Hi {{person}}', {'person': 'Mom'})
- 
-     def test__resolve_partial(self):
-         """
-@@ -112,10 +112,10 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
- 
-         """
-         engine = self._engine()
--        partials = {'partial': u"{{person}}"}
-+        partials = {'partial': "{{person}}"}
-         engine.resolve_partial = lambda key: partials[key]
- 
--        self._assert_render(u'Hi Mom', 'Hi {{>partial}}', {'person': 'Mom'}, engine=engine)
-+        self._assert_render('Hi Mom', 'Hi {{>partial}}', {'person': 'Mom'}, engine=engine)
- 
-     def test__literal(self):
-         """
-@@ -125,13 +125,13 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         engine = self._engine()
-         engine.literal = lambda s: s.upper()
- 
--        self._assert_render(u'BAR', '{{{foo}}}', {'foo': 'bar'}, engine=engine)
-+        self._assert_render('BAR', '{{{foo}}}', {'foo': 'bar'}, engine=engine)
- 
-     def test_literal__sigil(self):
-         template = "<h1>{{& thing}}</h1>"
-         context = {'thing': 'Bear > Giraffe'}
- 
--        expected = u"<h1>Bear > Giraffe</h1>"
-+        expected = "<h1>Bear > Giraffe</h1>"
- 
-         self._assert_render(expected, template, context)
- 
-@@ -143,7 +143,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         engine = self._engine()
-         engine.escape = lambda s: "**" + s
- 
--        self._assert_render(u'**bar', '{{foo}}', {'foo': 'bar'}, engine=engine)
-+        self._assert_render('**bar', '{{foo}}', {'foo': 'bar'}, engine=engine)
- 
-     def test__escape_does_not_call_literal(self):
-         """
-@@ -157,7 +157,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = 'literal: {{{foo}}} escaped: {{foo}}'
-         context = {'foo': 'bar'}
- 
--        self._assert_render(u'literal: BAR escaped: **bar', template, context, engine=engine)
-+        self._assert_render('literal: BAR escaped: **bar', template, context, engine=engine)
- 
-     def test__escape_preserves_unicode_subclasses(self):
-         """
-@@ -167,7 +167,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         variable value is markupsafe.Markup when escaping.
- 
-         """
--        class MyUnicode(unicode):
-+        class MyUnicode(str):
-             pass
- 
-         def escape(s):
-@@ -182,7 +182,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{foo1}} {{foo2}}'
-         context = {'foo1': MyUnicode('bar'), 'foo2': 'bar'}
- 
--        self._assert_render(u'**bar bar**', template, context, engine=engine)
-+        self._assert_render('**bar bar**', template, context, engine=engine)
- 
-     # Custom to_str for testing purposes.
-     def _to_str(self, val):
-@@ -197,9 +197,9 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{value}}'
-         context = {'value': None}
- 
--        self._assert_render(u'None', template, context, engine=engine)
-+        self._assert_render('None', template, context, engine=engine)
-         engine.to_str = self._to_str
--        self._assert_render(u'', template, context, engine=engine)
-+        self._assert_render('', template, context, engine=engine)
- 
-     def test_to_str__lambda(self):
-         """Test the to_str attribute for a lambda."""
-@@ -207,9 +207,9 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{value}}'
-         context = {'value': lambda: None}
- 
--        self._assert_render(u'None', template, context, engine=engine)
-+        self._assert_render('None', template, context, engine=engine)
-         engine.to_str = self._to_str
--        self._assert_render(u'', template, context, engine=engine)
-+        self._assert_render('', template, context, engine=engine)
- 
-     def test_to_str__section_list(self):
-         """Test the to_str attribute for a section list."""
-@@ -217,9 +217,9 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{#list}}{{.}}{{/list}}'
-         context = {'list': [None, None]}
- 
--        self._assert_render(u'NoneNone', template, context, engine=engine)
-+        self._assert_render('NoneNone', template, context, engine=engine)
-         engine.to_str = self._to_str
--        self._assert_render(u'', template, context, engine=engine)
-+        self._assert_render('', template, context, engine=engine)
- 
-     def test_to_str__section_lambda(self):
-         # TODO: add a test for a "method with an arity of 1".
-@@ -239,7 +239,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{text}} {{int}} {{{int}}}'
-         context = {'int': 100, 'text': 'foo'}
- 
--        self._assert_render(u'FOO 100 100', template, context, engine=engine)
-+        self._assert_render('FOO 100 100', template, context, engine=engine)
- 
-     def test_tag__output_not_interpolated(self):
-         """
-@@ -248,7 +248,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         template = '{{template}}: {{planet}}'
-         context = {'template': '{{planet}}', 'planet': 'Earth'}
--        self._assert_render(u'{{planet}}: Earth', template, context)
-+        self._assert_render('{{planet}}: Earth', template, context)
- 
-     def test_tag__output_not_interpolated__section(self):
-         """
-@@ -257,7 +257,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         template = '{{test}}'
-         context = {'test': '{{#hello}}'}
--        self._assert_render(u'{{#hello}}', template, context)
-+        self._assert_render('{{#hello}}', template, context)
- 
-     ## Test interpolation with "falsey" values
-     #
-@@ -268,17 +268,17 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-     def test_interpolation__falsey__zero(self):
-         template = '{{.}}'
-         context = 0
--        self._assert_render(u'0', template, context)
-+        self._assert_render('0', template, context)
- 
-     def test_interpolation__falsey__none(self):
-         template = '{{.}}'
-         context = None
--        self._assert_render(u'None', template, context)
-+        self._assert_render('None', template, context)
- 
-     def test_interpolation__falsey__zero(self):
-         template = '{{.}}'
-         context = False
--        self._assert_render(u'False', template, context)
-+        self._assert_render('False', template, context)
- 
-     # Built-in types:
-     #
-@@ -310,7 +310,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         Check tag interpolation with a built-in type: string.
- 
-         """
--        self._assert_builtin_type('abc', 'upper', 'ABC', u'xyz')
-+        self._assert_builtin_type('abc', 'upper', 'ABC', 'xyz')
- 
-     def test_interpolation__built_in_type__integer(self):
-         """
-@@ -324,7 +324,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         #
-         # we need to resort to built-in attributes (double-underscored) on
-         # the integer type.
--        self._assert_builtin_type(15, '__neg__', -15, u'999')
-+        self._assert_builtin_type(15, '__neg__', -15, '999')
- 
-     def test_interpolation__built_in_type__list(self):
-         """
-@@ -338,7 +338,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
- 
-         template = '{{#section}}{{%s}}{{/section}}' % attr_name
-         context = {'section': item, attr_name: 7}
--        self._assert_render(u'7', template, context)
-+        self._assert_render('7', template, context)
- 
-     # This test is also important for testing 2to3.
-     def test_interpolation__nonascii_nonunicode(self):
-@@ -347,8 +347,8 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
- 
-         """
-         template = '{{nonascii}}'
--        context = {'nonascii': u'abcdé'.encode('utf-8')}
--        self._assert_render(u'abcdé', template, context)
-+        context = {'nonascii': 'abcdé'.encode('utf-8')}
-+        self._assert_render('abcdé', template, context)
- 
-     def test_implicit_iterator__literal(self):
-         """
-@@ -358,7 +358,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = """{{#test}}{{{.}}}{{/test}}"""
-         context = {'test': ['<', '>']}
- 
--        self._assert_render(u'<>', template, context)
-+        self._assert_render('<>', template, context)
- 
-     def test_implicit_iterator__escaped(self):
-         """
-@@ -368,7 +368,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = """{{#test}}{{.}}{{/test}}"""
-         context = {'test': ['<', '>']}
- 
--        self._assert_render(u'&lt;&gt;', template, context)
-+        self._assert_render('&lt;&gt;', template, context)
- 
-     def test_literal__in_section(self):
-         """
-@@ -378,7 +378,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{#test}}1 {{{less_than}}} 2{{/test}}'
-         context = {'test': {'less_than': '<'}}
- 
--        self._assert_render(u'1 < 2', template, context)
-+        self._assert_render('1 < 2', template, context)
- 
-     def test_literal__in_partial(self):
-         """
-@@ -389,11 +389,11 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         partials = {'partial': '1 {{{less_than}}} 2'}
-         context = {'less_than': '<'}
- 
--        self._assert_render(u'1 < 2', template, context, partials=partials)
-+        self._assert_render('1 < 2', template, context, partials=partials)
- 
-     def test_partial(self):
-         partials = {'partial': "{{person}}"}
--        self._assert_render(u'Hi Mom', 'Hi {{>partial}}', {'person': 'Mom'}, partials=partials)
-+        self._assert_render('Hi Mom', 'Hi {{>partial}}', {'person': 'Mom'}, partials=partials)
- 
-     def test_partial__context_values(self):
-         """
-@@ -406,7 +406,9 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         partials = {'partial': 'unescaped: {{{foo}}} escaped: {{foo}}'}
-         context = {'foo': '<'}
- 
--        self._assert_render(u'unescaped: < escaped: &lt;', template, context, engine=engine, partials=partials)
-+        self._assert_render(
-+            'unescaped: < escaped: &lt;',
-+            template, context, engine=engine, partials=partials)
- 
-     ## Test cases related specifically to lambdas.
- 
-@@ -417,8 +419,8 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
- 
-         """
-         template = '{{#nonascii}}{{.}}{{/nonascii}}'
--        context = {'nonascii': u'abcdé'.encode('utf-8')}
--        self._assert_render(u'abcdé', template, context)
-+        context = {'nonascii': 'abcdé'.encode('utf-8')}
-+        self._assert_render('abcdé', template, context)
- 
-     # This test is also important for testing 2to3.
-     def test_lambda__returning_nonascii_nonunicode(self):
-@@ -427,8 +429,8 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
- 
-         """
-         template = '{{lambda}}'
--        context = {'lambda': lambda: u'abcdé'.encode('utf-8')}
--        self._assert_render(u'abcdé', template, context)
-+        context = {'lambda': lambda: 'abcdé'.encode('utf-8')}
-+        self._assert_render('abcdé', template, context)
- 
-     ## Test cases related specifically to sections.
- 
-@@ -440,7 +442,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{/section}}'
-         try:
-             self._assert_render(None, template)
--        except ParsingError, err:
-+        except ParsingError as err:
-             self.assertEqual(str(err), "Section end tag mismatch: section != None")
- 
-     def test_section__end_tag_mismatch(self):
-@@ -451,7 +453,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{#section_start}}{{/section_end}}'
-         try:
-             self._assert_render(None, template)
--        except ParsingError, err:
-+        except ParsingError as err:
-             self.assertEqual(str(err), "Section end tag mismatch: section_end != section_start")
- 
-     def test_section__context_values(self):
-@@ -464,7 +466,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{#test}}unescaped: {{{foo}}} escaped: {{foo}}{{/test}}'
-         context = {'test': {'foo': '<'}}
- 
--        self._assert_render(u'unescaped: < escaped: &lt;', template, context, engine=engine)
-+        self._assert_render('unescaped: < escaped: &lt;', template, context, engine=engine)
- 
-     def test_section__context_precedence(self):
-         """
-@@ -473,7 +475,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         template = '{{entree}} : {{#vegetarian}}{{entree}}{{/vegetarian}}'
-         context = {'entree': 'chicken', 'vegetarian': {'entree': 'beans and rice'}}
--        self._assert_render(u'chicken : beans and rice', template, context)
-+        self._assert_render('chicken : beans and rice', template, context)
- 
-     def test_section__list_referencing_outer_context(self):
-         """
-@@ -491,7 +493,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
- 
-         template = "{{#list}}{{greeting}} {{name}}, {{/list}}"
- 
--        self._assert_render(u"Hi Al, Hi Bob, ", template, context)
-+        self._assert_render("Hi Al, Hi Bob, ", template, context)
- 
-     def test_section__output_not_interpolated(self):
-         """
-@@ -500,7 +502,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         template = '{{#section}}{{template}}{{/section}}: {{planet}}'
-         context = {'section': True, 'template': '{{planet}}', 'planet': 'Earth'}
--        self._assert_render(u'{{planet}}: Earth', template, context)
-+        self._assert_render('{{planet}}: Earth', template, context)
- 
-     # TODO: have this test case added to the spec.
-     def test_section__string_values_not_lists(self):
-@@ -511,7 +513,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{#section}}foo{{/section}}'
-         context = {'section': '123'}
-         # If strings were interpreted as lists, this would give "foofoofoo".
--        self._assert_render(u'foo', template, context)
-+        self._assert_render('foo', template, context)
- 
-     def test_section__nested_truthy(self):
-         """
-@@ -525,7 +527,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         template = '| A {{#bool}}B {{#bool}}C{{/bool}} D{{/bool}} E |'
-         context = {'bool': True}
--        self._assert_render(u'| A B C D E |', template, context)
-+        self._assert_render('| A B C D E |', template, context)
- 
-     def test_section__nested_with_same_keys(self):
-         """
-@@ -537,16 +539,16 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         # Start with an easier, working case.
-         template = '{{#x}}{{#z}}{{y}}{{/z}}{{/x}}'
-         context = {'x': {'z': {'y': 1}}}
--        self._assert_render(u'1', template, context)
-+        self._assert_render('1', template, context)
- 
-         template = '{{#x}}{{#x}}{{y}}{{/x}}{{/x}}'
-         context = {'x': {'x': {'y': 1}}}
--        self._assert_render(u'1', template, context)
-+        self._assert_render('1', template, context)
- 
-     def test_section__lambda(self):
-         template = '{{#test}}Mom{{/test}}'
-         context = {'test': (lambda text: 'Hi %s' % text)}
--        self._assert_render(u'Hi Mom', template, context)
-+        self._assert_render('Hi Mom', template, context)
- 
-     # This test is also important for testing 2to3.
-     def test_section__lambda__returning_nonascii_nonunicode(self):
-@@ -555,8 +557,8 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
- 
-         """
-         template = '{{#lambda}}{{/lambda}}'
--        context = {'lambda': lambda text: u'abcdé'.encode('utf-8')}
--        self._assert_render(u'abcdé', template, context)
-+        context = {'lambda': lambda text: 'abcdé'.encode('utf-8')}
-+        self._assert_render('abcdé', template, context)
- 
-     def test_section__lambda__returning_nonstring(self):
-         """
-@@ -565,7 +567,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         template = '{{#lambda}}foo{{/lambda}}'
-         context = {'lambda': lambda text: len(text)}
--        self._assert_render(u'3', template, context)
-+        self._assert_render('3', template, context)
- 
-     def test_section__iterable(self):
-         """
-@@ -575,10 +577,10 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = '{{#iterable}}{{.}}{{/iterable}}'
- 
-         context = {'iterable': (i for i in range(3))}  # type 'generator'
--        self._assert_render(u'012', template, context)
-+        self._assert_render('012', template, context)
- 
--        context = {'iterable': xrange(4)}  # type 'xrange'
--        self._assert_render(u'0123', template, context)
-+        context = {'iterable': range(4)}  # type 'xrange'
-+        self._assert_render('0123', template, context)
- 
-         d = {'foo': 0, 'bar': 0}
-         # We don't know what order of keys we'll be given, but from the
-@@ -586,8 +588,8 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         #  "If items(), keys(), values(), iteritems(), iterkeys(), and
-         #   itervalues() are called with no intervening modifications to
-         #   the dictionary, the lists will directly correspond."
--        expected = u''.join(d.keys())
--        context = {'iterable': d.iterkeys()}  # type 'dictionary-keyiterator'
-+        expected = ''.join(list(d.keys()))
-+        context = {'iterable': iter(d.keys())}  # type 'dictionary-keyiterator'
-         self._assert_render(expected, template, context)
- 
-     def test_section__lambda__tag_in_output(self):
-@@ -605,7 +607,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         template = '{{#test}}Hi {{person}}{{/test}}'
-         context = {'person': 'Mom', 'test': (lambda text: text + " :)")}
--        self._assert_render(u'Hi Mom :)', template, context)
-+        self._assert_render('Hi Mom :)', template, context)
- 
-     def test_section__lambda__list(self):
-         """
-@@ -621,7 +623,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-                    'lambdas': [lambda text: "~{{%s}}~" % text,
-                                lambda text: "#{{%s}}#" % text]}
- 
--        self._assert_render(u'<~bar~#bar#>', template, context)
-+        self._assert_render('<~bar~#bar#>', template, context)
- 
-     def test_section__lambda__mixed_list(self):
-         """
-@@ -636,7 +638,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         context = {'foo': 'bar',
-                    'lambdas': [lambda text: "~{{%s}}~" % text, 1]}
- 
--        self._assert_render(u'<~bar~foo>', template, context)
-+        self._assert_render('<~bar~foo>', template, context)
- 
-     def test_section__lambda__not_on_context_stack(self):
-         """
-@@ -653,7 +655,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         context = {'foo': 'bar', 'lambda': (lambda text: "{{.}}")}
-         template = '{{#foo}}{{#lambda}}blah{{/lambda}}{{/foo}}'
--        self._assert_render(u'bar', template, context)
-+        self._assert_render('bar', template, context)
- 
-     def test_section__lambda__no_reinterpolation(self):
-         """
-@@ -670,15 +672,15 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         template = '{{#planet}}{{#lambda}}dot{{/lambda}}{{/planet}}'
-         context = {'planet': 'Earth', 'dot': '~{{.}}~', 'lambda': (lambda text: "#{{%s}}#" % text)}
--        self._assert_render(u'#~{{.}}~#', template, context)
-+        self._assert_render('#~{{.}}~#', template, context)
- 
-     def test_comment__multiline(self):
-         """
-         Check that multiline comments are permitted.
- 
-         """
--        self._assert_render(u'foobar', 'foo{{! baz }}bar')
--        self._assert_render(u'foobar', 'foo{{! \nbaz }}bar')
-+        self._assert_render('foobar', 'foo{{! baz }}bar')
-+        self._assert_render('foobar', 'foo{{! \nbaz }}bar')
- 
-     def test_custom_delimiters__sections(self):
-         """
-@@ -689,7 +691,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         template = '{{=[[ ]]=}}[[#foo]]bar[[/foo]]'
-         context = {'foo': True}
--        self._assert_render(u'bar', template, context)
-+        self._assert_render('bar', template, context)
- 
-     def test_custom_delimiters__not_retroactive(self):
-         """
-@@ -698,7 +700,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         Test case for issue #35: https://github.com/defunkt/pystache/issues/35
- 
-         """
--        expected = u' {{foo}} '
-+        expected = ' {{foo}} '
-         self._assert_render(expected, '{{=$ $=}} {{foo}} ')
-         self._assert_render(expected, '{{=$ $=}} {{foo}} $={{ }}=$')  # was yielding u'  '.
- 
-@@ -713,7 +715,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         template = 'Hello, {{person.name}}. I see you are {{person.details.age}}.'
-         person = Attachable(name='Biggles', details={'age': 42})
-         context = {'person': person}
--        self._assert_render(u'Hello, Biggles. I see you are 42.', template, context)
-+        self._assert_render('Hello, Biggles. I see you are 42.', template, context)
- 
-     def test_dot_notation__multiple_levels(self):
-         """
-@@ -722,7 +724,7 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         """
-         template = """Hello, Mr. {{person.name.lastname}}.
-         I see you're back from {{person.travels.last.country.city}}."""
--        expected = u"""Hello, Mr. Pither.
-+        expected = """Hello, Mr. Pither.
-         I see you're back from Cornwall."""
-         context = {'person': {'name': {'firstname': 'unknown', 'lastname': 'Pither'},
-                             'travels': {'last': {'country': {'city': 'Cornwall'}}},
-@@ -758,10 +760,10 @@ class RenderTests(unittest.TestCase, AssertStringMixin, AssertExceptionMixin):
-         context = {'a': {'b': 'A.B'}, 'c': {'a': 'A'} }
- 
-         template = '{{a.b}}'
--        self._assert_render(u'A.B', template, context)
-+        self._assert_render('A.B', template, context)
- 
-         template = '{{#c}}{{a}}{{/c}}'
--        self._assert_render(u'A', template, context)
-+        self._assert_render('A', template, context)
- 
-         template = '{{#c}}{{a.b}}{{/c}}'
-         self.assertException(KeyNotFoundError, "Key %(unicode)s'a.b' not found: missing %(unicode)s'b'" %
-diff --git a/pystache/tests/test_renderer.py b/pystache/tests/test_renderer.py
-index 0dbe0d9..e0d2448 100644
---- a/pystache/tests/test_renderer.py
-+++ b/pystache/tests/test_renderer.py
-@@ -10,7 +10,7 @@ import os
- import sys
- import unittest
- 
--from examples.simple import Simple
-+from .examples.simple import Simple
- from pystache import Renderer
- from pystache import TemplateSpec
- from pystache.common import TemplateNotFoundError
-@@ -33,7 +33,7 @@ def _make_renderer():
- def mock_unicode(b, encoding=None):
-     if encoding is None:
-         encoding = 'ascii'
--    u = unicode(b, encoding=encoding)
-+    u = str(b, encoding=encoding)
-     return u.upper()
- 
- 
-@@ -197,13 +197,13 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
- 
-         """
-         renderer = self._renderer()
--        b = u"é".encode('utf-8')
-+        b = "é".encode('utf-8')
- 
-         renderer.string_encoding = "ascii"
--        self.assertRaises(UnicodeDecodeError, renderer.unicode, b)
-+        self.assertRaises(UnicodeDecodeError, renderer.str, b)
- 
-         renderer.string_encoding = "utf-8"
--        self.assertEqual(renderer.unicode(b), u"é")
-+        self.assertEqual(renderer.str(b), "é")
- 
-     def test_unicode__decode_errors(self):
-         """
-@@ -212,14 +212,14 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
-         """
-         renderer = self._renderer()
-         renderer.string_encoding = "ascii"
--        b = u"déf".encode('utf-8')
-+        b = "déf".encode('utf-8')
- 
-         renderer.decode_errors = "ignore"
--        self.assertEqual(renderer.unicode(b), "df")
-+        self.assertEqual(renderer.str(b), "df")
- 
-         renderer.decode_errors = "replace"
-         # U+FFFD is the official Unicode replacement character.
--        self.assertEqual(renderer.unicode(b), u'd\ufffd\ufffdf')
-+        self.assertEqual(renderer.str(b), u'd\ufffd\ufffdf')
- 
-     ## Test the _make_loader() method.
- 
-@@ -243,7 +243,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
-         renderer = self._renderer()
-         renderer.file_encoding = 'enc'
-         renderer.file_extension = 'ext'
--        renderer.unicode = unicode_
-+        renderer.str = unicode_
- 
-         loader = renderer._make_loader()
- 
-@@ -260,12 +260,12 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
-         """
-         renderer = self._renderer()
-         rendered = renderer.render('foo')
--        self.assertEqual(type(rendered), unicode)
-+        self.assertEqual(type(rendered), str)
- 
-     def test_render__unicode(self):
-         renderer = self._renderer()
--        actual = renderer.render(u'foo')
--        self.assertEqual(actual, u'foo')
-+        actual = renderer.render('foo')
-+        self.assertEqual(actual, 'foo')
- 
-     def test_render__str(self):
-         renderer = self._renderer()
-@@ -274,8 +274,8 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
- 
-     def test_render__non_ascii_character(self):
-         renderer = self._renderer()
--        actual = renderer.render(u'Poincaré')
--        self.assertEqual(actual, u'Poincaré')
-+        actual = renderer.render('Poincaré')
-+        self.assertEqual(actual, 'Poincaré')
- 
-     def test_render__context(self):
-         """
-@@ -326,7 +326,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
- 
-         """
-         renderer = _make_renderer()
--        template = u"déf".encode("utf-8")
-+        template = "déf".encode("utf-8")
- 
-         # Check that decode_errors and string_encoding are both respected.
-         renderer.decode_errors = 'ignore'
-@@ -334,7 +334,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
-         self.assertEqual(renderer.render(template), "df")
- 
-         renderer.string_encoding = 'utf_8'
--        self.assertEqual(renderer.render(template), u"déf")
-+        self.assertEqual(renderer.render(template), "déf")
- 
-     def test_make_resolve_partial(self):
-         """
-@@ -347,7 +347,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
- 
-         actual = resolve_partial('foo')
-         self.assertEqual(actual, 'bar')
--        self.assertEqual(type(actual), unicode, "RenderEngine requires that "
-+        self.assertEqual(type(actual), str, "RenderEngine requires that "
-             "resolve_partial return unicode strings.")
- 
-     def test_make_resolve_partial__unicode(self):
-@@ -362,7 +362,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
-         self.assertEqual(resolve_partial("partial"), "foo")
- 
-         # Now with a value that is already unicode.
--        renderer.partials = {'partial': u'foo'}
-+        renderer.partials = {'partial': 'foo'}
-         resolve_partial = renderer._make_resolve_partial()
-         # If the next line failed, we would get the following error:
-         #   TypeError: decoding Unicode is not supported
-@@ -373,7 +373,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
-         data_dir = get_data_path()
-         renderer = Renderer(search_dirs=data_dir)
-         actual = renderer.render_name("say_hello", to='foo')
--        self.assertString(actual, u"Hello, foo")
-+        self.assertString(actual, "Hello, foo")
- 
-     def test_render_path(self):
-         """
-@@ -412,7 +412,7 @@ class RendererTests(unittest.TestCase, AssertStringMixin):
- 
-         spec = Spec()
-         actual = renderer.render(spec)
--        self.assertString(actual, u'hello, world')
-+        self.assertString(actual, 'hello, world')
- 
-     def test_render__view(self):
-         """
-@@ -484,7 +484,7 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
-         Check that resolve_partial returns unicode (and not a subclass).
- 
-         """
--        class MyUnicode(unicode):
-+        class MyUnicode(str):
-             pass
- 
-         renderer = Renderer()
-@@ -495,12 +495,12 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
- 
-         actual = engine.resolve_partial('str')
-         self.assertEqual(actual, "foo")
--        self.assertEqual(type(actual), unicode)
-+        self.assertEqual(type(actual), str)
- 
-         # Check that unicode subclasses are not preserved.
-         actual = engine.resolve_partial('subclass')
-         self.assertEqual(actual, "abc")
--        self.assertEqual(type(actual), unicode)
-+        self.assertEqual(type(actual), str)
- 
-     def test__resolve_partial__not_found(self):
-         """
-@@ -512,7 +512,7 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
-         engine = renderer._make_render_engine()
-         resolve_partial = engine.resolve_partial
- 
--        self.assertString(resolve_partial('foo'), u'')
-+        self.assertString(resolve_partial('foo'), '')
- 
-     def test__resolve_partial__not_found__missing_tags_strict(self):
-         """
-@@ -539,7 +539,7 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
-         engine = renderer._make_render_engine()
-         resolve_partial = engine.resolve_partial
- 
--        self.assertString(resolve_partial('foo'), u'')
-+        self.assertString(resolve_partial('foo'), '')
- 
-     def test__resolve_partial__not_found__partials_dict__missing_tags_strict(self):
-         """
-@@ -566,12 +566,12 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
- 
-         """
-         renderer = self._make_renderer()
--        renderer.unicode = mock_unicode
-+        renderer.str = mock_unicode
- 
-         engine = renderer._make_render_engine()
-         literal = engine.literal
- 
--        b = u"foo".encode("ascii")
-+        b = "foo".encode("ascii")
-         self.assertEqual(literal(b), "FOO")
- 
-     def test__literal__handles_unicode(self):
-@@ -585,7 +585,7 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
-         engine = renderer._make_render_engine()
-         literal = engine.literal
- 
--        self.assertEqual(literal(u"foo"), "foo")
-+        self.assertEqual(literal("foo"), "foo")
- 
-     def test__literal__returns_unicode(self):
-         """
-@@ -598,16 +598,16 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
-         engine = renderer._make_render_engine()
-         literal = engine.literal
- 
--        self.assertEqual(type(literal("foo")), unicode)
-+        self.assertEqual(type(literal("foo")), str)
- 
--        class MyUnicode(unicode):
-+        class MyUnicode(str):
-             pass
- 
-         s = MyUnicode("abc")
- 
-         self.assertEqual(type(s), MyUnicode)
--        self.assertTrue(isinstance(s, unicode))
--        self.assertEqual(type(literal(s)), unicode)
-+        self.assertTrue(isinstance(s, str))
-+        self.assertEqual(type(literal(s)), str)
- 
-     ## Test the engine's escape attribute.
- 
-@@ -630,12 +630,12 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
- 
-         """
-         renderer = Renderer()
--        renderer.unicode = mock_unicode
-+        renderer.str = mock_unicode
- 
-         engine = renderer._make_render_engine()
-         escape = engine.escape
- 
--        b = u"foo".encode('ascii')
-+        b = "foo".encode('ascii')
-         self.assertEqual(escape(b), "FOO")
- 
-     def test__escape__has_access_to_original_unicode_subclass(self):
-@@ -644,16 +644,16 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
- 
-         """
-         renderer = Renderer()
--        renderer.escape = lambda s: unicode(type(s).__name__)
-+        renderer.escape = lambda s: str(type(s).__name__)
- 
-         engine = renderer._make_render_engine()
-         escape = engine.escape
- 
--        class MyUnicode(unicode):
-+        class MyUnicode(str):
-             pass
- 
--        self.assertEqual(escape(u"foo".encode('ascii')), unicode.__name__)
--        self.assertEqual(escape(u"foo"), unicode.__name__)
-+        self.assertEqual(escape("foo".encode('ascii')), str.__name__)
-+        self.assertEqual(escape("foo"), str.__name__)
-         self.assertEqual(escape(MyUnicode("foo")), MyUnicode.__name__)
- 
-     def test__escape__returns_unicode(self):
-@@ -667,17 +667,17 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
-         engine = renderer._make_render_engine()
-         escape = engine.escape
- 
--        self.assertEqual(type(escape("foo")), unicode)
-+        self.assertEqual(type(escape("foo")), str)
- 
-         # Check that literal doesn't preserve unicode subclasses.
--        class MyUnicode(unicode):
-+        class MyUnicode(str):
-             pass
- 
-         s = MyUnicode("abc")
- 
-         self.assertEqual(type(s), MyUnicode)
--        self.assertTrue(isinstance(s, unicode))
--        self.assertEqual(type(escape(s)), unicode)
-+        self.assertTrue(isinstance(s, str))
-+        self.assertEqual(type(escape(s)), str)
- 
-     ## Test the missing_tags attribute.
- 
-@@ -706,7 +706,7 @@ class Renderer_MakeRenderEngineTests(unittest.TestCase, AssertStringMixin, Asser
-         stack = ContextStack({'foo': 'bar'})
- 
-         self.assertEqual('bar', engine.resolve_context(stack, 'foo'))
--        self.assertString(u'', engine.resolve_context(stack, 'missing'))
-+        self.assertString('', engine.resolve_context(stack, 'missing'))
- 
-     def test__resolve_context__missing_tags_strict(self):
-         """
-diff --git a/pystache/tests/test_simple.py b/pystache/tests/test_simple.py
-index 07b059f..b88bf35 100644
---- a/pystache/tests/test_simple.py
-+++ b/pystache/tests/test_simple.py
-@@ -2,11 +2,11 @@ import unittest
- 
- import pystache
- from pystache import Renderer
--from examples.nested_context import NestedContext
--from examples.complex import Complex
--from examples.lambdas import Lambdas
--from examples.template_partial import TemplatePartial
--from examples.simple import Simple
-+from .examples.nested_context import NestedContext
-+from .examples.complex import Complex
-+from .examples.lambdas import Lambdas
-+from .examples.template_partial import TemplatePartial
-+from .examples.simple import Simple
- 
- from pystache.tests.common import EXAMPLES_DIR
- from pystache.tests.common import AssertStringMixin
-@@ -20,7 +20,7 @@ class TestSimple(unittest.TestCase, AssertStringMixin):
-         view.template = '{{#foo}}{{thing1}} and {{thing2}} and {{outer_thing}}{{/foo}}{{^foo}}Not foo!{{/foo}}'
- 
-         actual = renderer.render(view)
--        self.assertString(actual, u"one and foo and two")
-+        self.assertString(actual, "one and foo and two")
- 
-     def test_looping_and_negation_context(self):
-         template = '{{#item}}{{header}}: {{name}} {{/item}}{{^item}} Shouldnt see me{{/item}}'
-@@ -40,7 +40,7 @@ class TestSimple(unittest.TestCase, AssertStringMixin):
- 
-         renderer = Renderer()
-         actual = renderer.render(view)
--        self.assertString(actual, u'bar != bar. oh, it does!')
-+        self.assertString(actual, 'bar != bar. oh, it does!')
- 
-     def test_rendering_partial(self):
-         renderer = Renderer(search_dirs=EXAMPLES_DIR)
-@@ -49,11 +49,11 @@ class TestSimple(unittest.TestCase, AssertStringMixin):
-         view.template = '{{>inner_partial}}'
- 
-         actual = renderer.render(view)
--        self.assertString(actual, u'Again, Welcome!')
-+        self.assertString(actual, 'Again, Welcome!')
- 
-         view.template = '{{#looping}}{{>inner_partial}} {{/looping}}'
-         actual = renderer.render(view)
--        self.assertString(actual, u"Again, Welcome! Again, Welcome! Again, Welcome! ")
-+        self.assertString(actual, "Again, Welcome! Again, Welcome! Again, Welcome! ")
- 
-     def test_non_existent_value_renders_blank(self):
-         view = Simple()
-@@ -77,7 +77,7 @@ class TestSimple(unittest.TestCase, AssertStringMixin):
-         view = TemplatePartial(renderer=renderer)
- 
-         actual = renderer.render(view)
--        self.assertString(actual, u"""Welcome
-+        self.assertString(actual, """Welcome
- -------
- 
- ## Again, Welcome! ##""")
-diff --git a/pystache/tests/test_specloader.py b/pystache/tests/test_specloader.py
-index cacc0fc..dcdc55f 100644
---- a/pystache/tests/test_specloader.py
-+++ b/pystache/tests/test_specloader.py
-@@ -9,11 +9,11 @@ import os.path
- import sys
- import unittest
- 
--import examples
--from examples.simple import Simple
--from examples.complex import Complex
--from examples.lambdas import Lambdas
--from examples.inverted import Inverted, InvertedLists
-+from . import examples
-+from .examples.simple import Simple
-+from .examples.complex import Complex
-+from .examples.lambdas import Lambdas
-+from .examples.inverted import Inverted, InvertedLists
- from pystache import Renderer
- from pystache import TemplateSpec
- from pystache.common import TemplateNotFoundError
-@@ -70,7 +70,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
-         renderer2 = Renderer(search_dirs=EXAMPLES_DIR)
- 
-         actual = renderer1.render(spec)
--        self.assertString(actual, u"Partial: ")
-+        self.assertString(actual, "Partial: ")
- 
-         actual = renderer2.render(spec)
-         self.assertEqual(actual, "Partial: No tags...")
-@@ -79,7 +79,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
-         renderer = Renderer()
-         actual = renderer.render(Simple())
- 
--        self.assertString(actual, u"Hi pizza!")
-+        self.assertString(actual, "Hi pizza!")
- 
-     def test_non_callable_attributes(self):
-         view = Simple()
-@@ -92,7 +92,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
-     def test_complex(self):
-         renderer = Renderer()
-         actual = renderer.render(Complex())
--        self.assertString(actual, u"""\
-+        self.assertString(actual, """\
- <h1>Colors</h1>
- <ul>
- <li><strong>red</strong></li>
-@@ -111,7 +111,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
- 
-         renderer = Renderer()
-         actual = renderer.render(view)
--        self.assertString(actual, u'nopqrstuvwxyz')
-+        self.assertString(actual, 'nopqrstuvwxyz')
- 
-     def test_higher_order_lambda(self):
-         view = Lambdas()
-@@ -119,7 +119,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
- 
-         renderer = Renderer()
-         actual = renderer.render(view)
--        self.assertString(actual, u'abcdefghijklmnopqrstuvwxyz')
-+        self.assertString(actual, 'abcdefghijklmnopqrstuvwxyz')
- 
-     def test_partials_with_lambda(self):
-         view = Lambdas()
-@@ -127,7 +127,7 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
- 
-         renderer = Renderer(search_dirs=EXAMPLES_DIR)
-         actual = renderer.render(view)
--        self.assertEqual(actual, u'nopqrstuvwxyz')
-+        self.assertEqual(actual, 'nopqrstuvwxyz')
- 
-     def test_hierarchical_partials_with_lambdas(self):
-         view = Lambdas()
-@@ -135,12 +135,12 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
- 
-         renderer = Renderer(search_dirs=EXAMPLES_DIR)
-         actual = renderer.render(view)
--        self.assertString(actual, u'nopqrstuvwxyznopqrstuvwxyz')
-+        self.assertString(actual, 'nopqrstuvwxyznopqrstuvwxyz')
- 
-     def test_inverted(self):
-         renderer = Renderer()
-         actual = renderer.render(Inverted())
--        self.assertString(actual, u"""one, two, three, empty list""")
-+        self.assertString(actual, """one, two, three, empty list""")
- 
-     def test_accessing_properties_on_parent_object_from_child_objects(self):
-         parent = Thing()
-@@ -152,12 +152,12 @@ class ViewTestCase(unittest.TestCase, AssertStringMixin):
-         renderer = Renderer()
-         actual = renderer.render(view, {'parent': parent})
- 
--        self.assertString(actual, u'derp')
-+        self.assertString(actual, 'derp')
- 
-     def test_inverted_lists(self):
-         renderer = Renderer()
-         actual = renderer.render(InvertedLists())
--        self.assertString(actual, u"""one, two, three, empty list""")
-+        self.assertString(actual, """one, two, three, empty list""")
- 
- 
- def _make_specloader():
-@@ -176,7 +176,7 @@ def _make_specloader():
-         """
-         if encoding is None:
-             encoding = 'ascii'
--        return unicode(s, encoding, 'strict')
-+        return str(s, encoding, 'strict')
- 
-     loader = Loader(file_encoding='ascii', to_unicode=to_unicode)
-     return SpecLoader(loader=loader)
-@@ -222,7 +222,7 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
-         custom.template = "abc"
- 
-         spec_loader = self._make_specloader()
--        self._assert_template(spec_loader, custom, u"abc")
-+        self._assert_template(spec_loader, custom, "abc")
- 
-     def test_load__template__type_unicode(self):
-         """
-@@ -230,10 +230,10 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
- 
-         """
-         custom = TemplateSpec()
--        custom.template = u"abc"
-+        custom.template = "abc"
- 
-         spec_loader = self._make_specloader()
--        self._assert_template(spec_loader, custom, u"abc")
-+        self._assert_template(spec_loader, custom, "abc")
- 
-     def test_load__template__unicode_non_ascii(self):
-         """
-@@ -241,10 +241,10 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
- 
-         """
-         custom = TemplateSpec()
--        custom.template = u"é"
-+        custom.template = "é"
- 
-         spec_loader = self._make_specloader()
--        self._assert_template(spec_loader, custom, u"é")
-+        self._assert_template(spec_loader, custom, "é")
- 
-     def test_load__template__with_template_encoding(self):
-         """
-@@ -252,14 +252,14 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
- 
-         """
-         custom = TemplateSpec()
--        custom.template = u'é'.encode('utf-8')
-+        custom.template = 'é'.encode('utf-8')
- 
-         spec_loader = self._make_specloader()
- 
--        self.assertRaises(UnicodeDecodeError, self._assert_template, spec_loader, custom, u'é')
-+        self.assertRaises(UnicodeDecodeError, self._assert_template, spec_loader, custom, 'é')
- 
-         custom.template_encoding = 'utf-8'
--        self._assert_template(spec_loader, custom, u'é')
-+        self._assert_template(spec_loader, custom, 'é')
- 
-     # TODO: make this test complete.
-     def test_load__template__correct_loader(self):
-@@ -279,10 +279,10 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
-                 self.encoding = None
- 
-             # Overrides the existing method.
--            def unicode(self, s, encoding=None):
-+            def str(self, s, encoding=None):
-                 self.s = s
-                 self.encoding = encoding
--                return u"foo"
-+                return "foo"
- 
-         loader = MockLoader()
-         custom_loader = SpecLoader()
-@@ -293,7 +293,7 @@ class SpecLoaderTests(unittest.TestCase, AssertIsMixin, AssertStringMixin,
-         view.template_encoding = "encoding-foo"
- 
-         # Check that our unicode() above was called.
--        self._assert_template(custom_loader, view, u'foo')
-+        self._assert_template(custom_loader, view, 'foo')
-         self.assertEqual(loader.s, "template-foo")
-         self.assertEqual(loader.encoding, "encoding-foo")
- 
-@@ -410,7 +410,7 @@ class TemplateSpecTests(unittest.TestCase, AssertPathsMixin):
-         loader = self._make_loader()
-         actual = loader.load(custom)
- 
--        self.assertEqual(type(actual), unicode)
-+        self.assertEqual(type(actual), str)
-         self.assertEqual(actual, expected)
- 
-     def test_get_template(self):
-@@ -420,7 +420,7 @@ class TemplateSpecTests(unittest.TestCase, AssertPathsMixin):
-         """
-         view = SampleView()
- 
--        self._assert_get_template(view, u"ascii: abc")
-+        self._assert_get_template(view, "ascii: abc")
- 
-     def test_get_template__template_encoding(self):
-         """
-@@ -432,4 +432,4 @@ class TemplateSpecTests(unittest.TestCase, AssertPathsMixin):
-         self.assertRaises(UnicodeDecodeError, self._assert_get_template, view, 'foo')
- 
-         view.template_encoding = 'utf-8'
--        self._assert_get_template(view, u"non-ascii: é")
-+        self._assert_get_template(view, "non-ascii: é")
-diff --git a/setup.cfg b/setup.cfg
-index 861a9f5..f6f1279 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -1,5 +1,71 @@
--[egg_info]
--tag_build = 
--tag_date = 0
--tag_svn_revision = 0
-+[metadata]
-+name = pystache
-+version = attr: pystache.__version__
-+author = Chris Wanstrath
-+author_email = chris@ozmm.org
-+maintainer = Steve Arnold
-+maintainer_email = nerdboy@gentoo.org
-+description = Mustache for Python
-+url = https://github.com/sarnold/pystache
-+license = MIT
-+license_files = LICENSE
-+classifiers =
-+    Development Status :: 4 - Beta
-+    Intended Audience :: Developers
-+    License :: OSI Approved :: MIT License
-+    Programming Language :: Python :: 3
-+    Programming Language :: Python :: 3.6
-+    Programming Language :: Python :: 3.7
-+    Programming Language :: Python :: 3.8
-+    Programming Language :: Python :: 3.9
- 
-+[options]
-+python_requires = >=3.6
-+zip_safe = True
-+include_package_data = True
-+packages = find:
-+
-+[options.package_data]
-+* = *.mustache, *.txt
-+
-+[options.entry_points]
-+console_scripts =
-+    pystache=pystache.commands.render:main
-+    pystache-test=pystache.commands.test:main
-+
-+[options.extras_require]
-+test =
-+    nose
-+
-+cov =
-+    coverage
-+
-+[bdist_wheel]
-+universal = 0
-+
-+[check-manifest]
-+ignore =
-+    .codeclimate.yml
-+    .gitattributes
-+    .coveragerc
-+    .gitignore
-+    .pep8speaks.yml
-+    codecov.yml
-+
-+[flake8]
-+exclude =
-+    .git,
-+    __pycache__,
-+    build,
-+    dist
-+
-+max-line-length = 110
-+
-+[nosetests]
-+traverse-namespace = 1
-+verbosity = 3
-+with-coverage = 1
-+with-doctest = 1
-+doctest-extension = rst
-+cover-package = pystache
-+cover-xml = 1
-diff --git a/setup.py b/setup.py
-index 0d99aae..f0b7d7f 100644
---- a/setup.py
-+++ b/setup.py
-@@ -28,7 +28,7 @@ it on the PyPI project page.  If PyPI finds any issues, it will render it
- instead as plain-text, which we do not want.
- 
- To check in advance that PyPI will accept and parse the reST file as HTML,
--you can use the rst2html program installed by the docutils package
-+you can use the rst2html.py program installed by the docutils package
- (http://docutils.sourceforge.net/).  To install docutils:
- 
-     $ pip install docutils
-@@ -89,30 +89,7 @@ import os
- import shutil
- import sys
- 
--
--py_version = sys.version_info
--
--# distutils does not seem to support the following setup() arguments.
--# It displays a UserWarning when setup() is passed those options:
--#
--#  * entry_points
--#  * install_requires
--#
--# distribute works with Python 2.3.5 and above:
--#
--#   http://packages.python.org/distribute/setuptools.html#building-and-distributing-packages-with-distribute
--#
--if py_version < (2, 3, 5):
--    # TODO: this might not work yet.
--    import distutils as dist
--    from distutils import core
--    setup = core.setup
--else:
--    import setuptools as dist
--    setup = dist.setup
--
--
--VERSION = '0.5.4'  # Also change in pystache/__init__.py.
-+from setuptools import setup
- 
- FILE_ENCODING = 'utf-8'
- 
-@@ -126,22 +103,6 @@ TEMP_EXTENSION = '.temp'
- 
- PREP_COMMAND = 'prep'
- 
--CLASSIFIERS = (
--    'Development Status :: 4 - Beta',
--    'License :: OSI Approved :: MIT License',
--    'Programming Language :: Python',
--    'Programming Language :: Python :: 2',
--    'Programming Language :: Python :: 2.4',
--    'Programming Language :: Python :: 2.5',
--    'Programming Language :: Python :: 2.6',
--    'Programming Language :: Python :: 2.7',
--    'Programming Language :: Python :: 3',
--    'Programming Language :: Python :: 3.1',
--    'Programming Language :: Python :: 3.2',
--    'Programming Language :: Python :: 3.3',
--    'Programming Language :: Python :: Implementation :: PyPy',
--)
--
- # Comments in reST begin with two dots.
- RST_LONG_DESCRIPTION_INTRO = """\
- .. Do not edit this file.  This file is auto-generated for PyPI by setup.py
-@@ -221,7 +182,7 @@ def convert_md_to_rst(md_path, rst_temp_path):
- 
-     """
-     # Pandoc uses the UTF-8 character encoding for both input and output.
--    command = "pandoc --write=rst --output=%s %s" % (rst_temp_path, md_path)
-+    command = "pandoc -f markdown-smart --write=rst --output=%s %s" % (rst_temp_path, md_path)
-     print("converting with pandoc: %s to %s\n-->%s" % (md_path, rst_temp_path,
-                                                        command))
- 
-@@ -308,65 +269,9 @@ Run the following command and commit the changes--
-     os.system('python setup.py sdist upload')
- 
- 
--# We use the package simplejson for older Python versions since Python
--# does not contain the module json before 2.6:
--#
--#   http://docs.python.org/library/json.html
--#
--# Moreover, simplejson stopped officially support for Python 2.4 in version 2.1.0:
--#
--#   https://github.com/simplejson/simplejson/blob/master/CHANGES.txt
--#
--requires = []
--if py_version < (2, 5):
--    requires.append('simplejson<2.1')
--elif py_version < (2, 6):
--    requires.append('simplejson')
--
--INSTALL_REQUIRES = requires
--
--# TODO: decide whether to use find_packages() instead.  I'm not sure that
--#   find_packages() is available with distutils, for example.
--PACKAGES = [
--    'pystache',
--    'pystache.commands',
--    # The following packages are only for testing.
--    'pystache.tests',
--    'pystache.tests.data',
--    'pystache.tests.data.locator',
--    'pystache.tests.examples',
--]
--
--
--# The purpose of this function is to follow the guidance suggested here:
--#
--#   http://packages.python.org/distribute/python3.html#note-on-compatibility-with-setuptools
--#
--# The guidance is for better compatibility when using setuptools (e.g. with
--# earlier versions of Python 2) instead of Distribute, because of new
--# keyword arguments to setup() that setuptools may not recognize.
--def get_extra_args():
--    """
--    Return a dictionary of extra args to pass to setup().
--
--    """
--    extra = {}
--    # TODO: it might be more correct to check whether we are using
--    #   Distribute instead of setuptools, since use_2to3 doesn't take
--    #   effect when using Python 2, even when using Distribute.
--    if py_version >= (3, ):
--        # Causes 2to3 to be run during the build step.
--        extra['use_2to3'] = True
--
--    return extra
--
--
- def main(sys_argv):
- 
-     # TODO: use the logging module instead of printing.
--    # TODO: include the following in a verbose mode.
--    sys.stderr.write("pystache: using: version %s of %s\n" % (repr(dist.__version__), repr(dist)))
--
-     command = sys_argv[-1]
- 
-     if command == 'publish':
-@@ -377,35 +282,10 @@ def main(sys_argv):
-         sys.exit()
- 
-     long_description = read(RST_DESCRIPTION_PATH)
--    template_files = ['*.mustache', '*.txt']
--    extra_args = get_extra_args()
--
--    setup(name='pystache',
--          version=VERSION,
--          license='MIT',
--          description='Mustache for Python',
--          long_description=long_description,
--          author='Chris Wanstrath',
--          author_email='chris@ozmm.org',
--          maintainer='Chris Jerdonek',
--          maintainer_email='chris.jerdonek@gmail.com',
--          url='http://github.com/defunkt/pystache',
--          install_requires=INSTALL_REQUIRES,
--          packages=PACKAGES,
--          package_data = {
--              # Include template files so tests can be run.
--              'pystache.tests.data': template_files,
--              'pystache.tests.data.locator': template_files,
--              'pystache.tests.examples': template_files,
--          },
--          entry_points = {
--            'console_scripts': [
--                'pystache=pystache.commands.render:main',
--                'pystache-test=pystache.commands.test:main',
--            ],
--          },
--          classifiers = CLASSIFIERS,
--          **extra_args
-+
-+    setup(
-+        long_description=long_description,
-+        long_description_content_type='text/x-rst',
-     )
- 
- 
-diff --git a/setup_description.rst b/setup_description.rst
-index 724c457..d7f1bc0 100644
---- a/setup_description.rst
-+++ b/setup_description.rst
-@@ -4,13 +4,17 @@
- Pystache
- ========
- 
--.. figure:: http://defunkt.github.com/pystache/images/logo_phillips.png
--   :alt: mustachioed, monocled snake by David Phillips
-+|ci| |Conda| |Wheels| |Release| |Python|
- 
--.. figure:: https://secure.travis-ci.org/defunkt/pystache.png
--   :alt: Travis CI current build status
-+|Latest release| |License| |Maintainability| |codecov|
- 
--`Pystache <http://defunkt.github.com/pystache>`__ is a Python
-+This updated fork of Pystache is currently tested on Python 3.6+ and in
-+Conda, on Linux, Macos, and Windows (Python 2.7 support has been
-+removed).
-+
-+|image9|
-+
-+`Pystache <http://sarnold.github.com/pystache>`__ is a Python
- implementation of `Mustache <http://mustache.github.com/>`__. Mustache
- is a framework-agnostic, logic-free templating system inspired by
- `ctemplate <http://code.google.com/p/google-ctemplate/>`__ and
-@@ -23,62 +27,45 @@ page provides a good introduction to Mustache's syntax. For a more
- complete (and more current) description of Mustache's behavior, see the
- official `Mustache spec <https://github.com/mustache/spec>`__.
- 
--Pystache is `semantically versioned <http://semver.org>`__ and can be
--found on `PyPI <http://pypi.python.org/pypi/pystache>`__. This version
--of Pystache passes all tests in `version
--1.1.2 <https://github.com/mustache/spec/tree/v1.1.2>`__ of the spec.
-+Pystache is `semantically versioned <http://semver.org>`__ and older
-+versions can still be found on
-+`PyPI <http://pypi.python.org/pypi/pystache>`__. This version of
-+Pystache now passes all tests in `version
-+1.1.3 <https://github.com/mustache/spec/tree/v1.1.3>`__ of the spec.
- 
- Requirements
- ------------
- 
- Pystache is tested with--
- 
---  Python 2.4 (requires simplejson `version
--   2.0.9 <http://pypi.python.org/pypi/simplejson/2.0.9>`__ or earlier)
---  Python 2.5 (requires
--   `simplejson <http://pypi.python.org/pypi/simplejson/>`__)
---  Python 2.6
---  Python 2.7
---  Python 3.1
---  Python 3.2
---  Python 3.3
---  `PyPy <http://pypy.org/>`__
-+-  Python 3.6
-+-  Python 3.7
-+-  Python 3.8
-+-  Python 3.9
-+-  Conda (py36-py39)
- 
- `Distribute <http://packages.python.org/distribute/>`__ (the setuptools
--fork) is recommended over
--`setuptools <http://pypi.python.org/pypi/setuptools>`__, and is required
--in some cases (e.g. for Python 3 support). If you use
--`pip <http://www.pip-installer.org/>`__, you probably already satisfy
--this requirement.
-+fork) is no longer required over
-+`setuptools <http://pypi.python.org/pypi/setuptools>`__, as the current
-+packaging is now PEP517-compliant.
- 
- JSON support is needed only for the command-line interface and to run
--the spec tests. We require simplejson for earlier versions of Python
--since Python's `json <http://docs.python.org/library/json.html>`__
--module was added in Python 2.6.
--
--For Python 2.4 we require an earlier version of simplejson since
--simplejson stopped officially supporting Python 2.4 in simplejson
--version 2.1.0. Earlier versions of simplejson can be installed manually,
--as follows:
--
--::
--
--    pip install 'simplejson<2.1.0'
-+the spec tests; PyYAML can still be used (see the Develop section).
- 
--Official support for Python 2.4 will end with Pystache version 0.6.0.
-+Official support for Python 2 will end with Pystache version 0.6.0.
- 
- Install It
- ----------
- 
- ::
- 
--    pip install pystache
-+   pip install -U pystache -f https://github.com/sarnold/pystache/releases/
- 
- And test it--
- 
- ::
- 
--    pystache-test
-+   pystache-test
- 
- To install and test from source (e.g. from GitHub), see the Develop
- section.
-@@ -88,68 +75,68 @@ Use It
- 
- ::
- 
--    >>> import pystache
--    >>> print pystache.render('Hi {{person}}!', {'person': 'Mom'})
--    Hi Mom!
-+   >>> import pystache
-+   >>> print(pystache.render('Hi {{person}}!', {'person': 'Mom'}))
-+   Hi Mom!
- 
- You can also create dedicated view classes to hold your view logic.
- 
--Here's your view class (in .../examples/readme.py):
-+Here's your view class (in ../pystache/tests/examples/readme.py):
- 
- ::
- 
--    class SayHello(object):
--        def to(self):
--            return "Pizza"
-+   class SayHello(object):
-+       def to(self):
-+           return "Pizza"
- 
- Instantiating like so:
- 
- ::
- 
--    >>> from pystache.tests.examples.readme import SayHello
--    >>> hello = SayHello()
-+   >>> from pystache.tests.examples.readme import SayHello
-+   >>> hello = SayHello()
- 
--Then your template, say\_hello.mustache (by default in the same
--directory as your class definition):
-+Then your template, say_hello.mustache (by default in the same directory
-+as your class definition):
- 
- ::
- 
--    Hello, {{to}}!
-+   Hello, {{to}}!
- 
- Pull it together:
- 
- ::
- 
--    >>> renderer = pystache.Renderer()
--    >>> print renderer.render(hello)
--    Hello, Pizza!
-+   >>> renderer = pystache.Renderer()
-+   >>> print(renderer.render(hello))
-+   Hello, Pizza!
- 
- For greater control over rendering (e.g. to specify a custom template
- directory), use the ``Renderer`` class like above. One can pass
- attributes to the Renderer class constructor or set them on a Renderer
- instance. To customize template loading on a per-view basis, subclass
- ``TemplateSpec``. See the docstrings of the
--`Renderer <https://github.com/defunkt/pystache/blob/master/pystache/renderer.py>`__
-+`Renderer <https://github.com/sarnold/pystache/blob/master/pystache/renderer.py>`__
- class and
--`TemplateSpec <https://github.com/defunkt/pystache/blob/master/pystache/template_spec.py>`__
-+`TemplateSpec <https://github.com/sarnold/pystache/blob/master/pystache/template_spec.py>`__
- class for more information.
- 
- You can also pre-parse a template:
- 
- ::
- 
--    >>> parsed = pystache.parse(u"Hey {{#who}}{{.}}!{{/who}}")
--    >>> print parsed
--    [u'Hey ', _SectionNode(key=u'who', index_begin=12, index_end=18, parsed=[_EscapeNode(key=u'.'), u'!'])]
-+   >>> parsed = pystache.parse(u"Hey {{#who}}{{.}}!{{/who}}")
-+   >>> print(parsed)
-+   ['Hey ', _SectionNode(key='who', index_begin=12, index_end=18, parsed=[_EscapeNode(key='.'), '!'])]
- 
- And then:
- 
- ::
- 
--    >>> print renderer.render(parsed, {'who': 'Pops'})
--    Hey Pops!
--    >>> print renderer.render(parsed, {'who': 'you'})
--    Hey you!
-+   >>> print(renderer.render(parsed, {'who': 'Pops'}))
-+   Hey Pops!
-+   >>> print(renderer.render(parsed, {'who': 'you'}))
-+   Hey you!
- 
- Python 3
- --------
-@@ -211,22 +198,24 @@ To test from a source distribution (without installing)--
- 
- ::
- 
--    python test_pystache.py
-+   python test_pystache.py
- 
- To test Pystache with multiple versions of Python (with a single
--command!), you can use `tox <http://pypi.python.org/pypi/tox>`__:
-+command!) and different platforms, you can use
-+`tox <http://pypi.python.org/pypi/tox>`__:
- 
- ::
- 
--    pip install 'virtualenv<1.8'  # Version 1.8 dropped support for Python 2.4.
--    pip install 'tox<1.4'  # Version 1.4 dropped support for Python 2.4.
--    tox
-+   pip install tox
-+   tox -e setup
- 
--If you do not have all Python versions listed in ``tox.ini``--
-+To run tests on multiple versions with coverage, run:
- 
- ::
- 
--    tox -e py26,py32  # for example
-+   tox -e py38-linux,py39-linux  # for example
-+
-+(substitute your platform above, eg, macos or windows)
- 
- The source distribution tests also include doctests and tests from the
- Mustache spec. To include tests from the Mustache spec in your test
-@@ -234,8 +223,8 @@ runs:
- 
- ::
- 
--    git submodule init
--    git submodule update
-+   git submodule init
-+   git submodule update
- 
- The test harness parses the spec's (more human-readable) yaml files if
- `PyYAML <http://pypi.python.org/pypi/PyYAML>`__ is present. Otherwise,
-@@ -243,94 +232,113 @@ it parses the json files. To install PyYAML--
- 
- ::
- 
--    pip install pyyaml
-+   pip install pyyaml
-+
-+Once the submodule is available, you can run the full test set with:
-+
-+::
-+
-+   tox -e setup . ext/spec/specs
- 
- To run a subset of the tests, you can use
- `nose <http://somethingaboutorange.com/mrl/projects/nose/0.11.1/testing.html>`__:
- 
- ::
- 
--    pip install nose
--    nosetests --tests pystache/tests/test_context.py:GetValueTests.test_dictionary__key_present
-+   pip install nose
-+   nosetests --tests pystache/tests/test_context.py:GetValueTests.test_dictionary__key_present
- 
--Using Python 3 with Pystache from source
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+Mailing List (old)
-+------------------
- 
--Pystache is written in Python 2 and must be converted to Python 3 prior
--to using it with Python 3. The installation process (and tox) do this
--automatically.
-+There is(was) a `mailing
-+list <http://librelist.com/browser/pystache/>`__. Note that there is a
-+bit of a delay between posting a message and seeing it appear in the
-+mailing list archive.
- 
--To convert the code to Python 3 manually (while using Python 3)--
-+Credits
-+-------
- 
- ::
- 
--    python setup.py build
-+   >>> import pystache
-+   >>> context = { 'author': 'Chris Wanstrath', 'maintainer': 'Chris Jerdonek','refurbisher': 'Steve Arnold' }
-+   >>> print(pystache.render("Author: {{author}}\nMaintainer: {{maintainer}}\nRefurbisher: {{refurbisher}}", context))
-+   Author: Chris Wanstrath
-+   Maintainer: Chris Jerdonek
-+   Refurbisher: Steve Arnold
- 
--This writes the converted code to a subdirectory called ``build``. By
--design, Python 3 builds
--`cannot <https://bitbucket.org/tarek/distribute/issue/292/allow-use_2to3-with-python-2>`__
--be created from Python 2.
-+Pystache logo by `David Phillips <http://davidphillips.us/>`__ is
-+licensed under a `Creative Commons Attribution-ShareAlike 3.0 Unported
-+License <http://creativecommons.org/licenses/by-sa/3.0/deed.en_US>`__.
-+|image10|
- 
--To convert the code without using setup.py, you can use
--`2to3 <http://docs.python.org/library/2to3.html>`__ as follows (two
--steps)--
-+History
-+=======
- 
--::
-+**Note:** Official support for Python 2.7 will end with Pystache version
-+0.6.0.
- 
--    2to3 --write --nobackups --no-diffs --doctests_only pystache
--    2to3 --write --nobackups --no-diffs pystache
-+0.6.0 (2021-03-04)
-+------------------
- 
--This converts the code (and doctests) in place.
-+-  Bump spec versions to latest => v1.1.3
-+-  Modernize python and CI tools, update docs/doctests
-+-  Update unicode conversion test for py3-only
-+-  Add pep8speaks cfg, cleanup warnings
-+-  Remove superfluous setup test/unused imports
-+-  Add conda recipe/CI build
- 
--To ``import pystache`` from a source distribution while using Python 3,
--be sure that you are importing from a directory containing a converted
--version of the code (e.g. from the ``build`` directory after
--converting), and not from the original (unconverted) source directory.
--Otherwise, you will get a syntax error. You can help prevent this by not
--running the Python IDE from the project directory when importing
--Pystache while using Python 3.
-+.. _section-1:
- 
--Mailing List
--------------
-+0.5.6 (2021-02-28)
-+------------------
- 
--There is a `mailing list <http://librelist.com/browser/pystache/>`__.
--Note that there is a bit of a delay between posting a message and seeing
--it appear in the mailing list archive.
-+-  Use correct wheel name in release workflow, limit wheels
-+-  Add install check/test of downloaded wheel
-+-  Update/add ci workflows and tox cfg, bump to next dev0 version
- 
--Credits
---------
-+.. _section-2:
- 
--::
-+0.5.5 (2020-12-16)
-+------------------
- 
--    >>> context = { 'author': 'Chris Wanstrath', 'maintainer': 'Chris Jerdonek' }
--    >>> print pystache.render("Author: {{author}}\nMaintainer: {{maintainer}}", context)
--    Author: Chris Wanstrath
--    Maintainer: Chris Jerdonek
-+-  fix document processing, update pandoc args and history
-+-  add release.yml to CI, test env settings
-+-  fix bogus commit message, update versions and tox cf
-+-  add post-test steps for building pkgs with/without doc updates
-+-  add CI build check, fix MANIFEST.in pruning
- 
--Pystache logo by `David Phillips <http://davidphillips.us/>`__ is
--licensed under a `Creative Commons Attribution-ShareAlike 3.0 Unported
--License <http://creativecommons.org/licenses/by-sa/3.0/deed.en_US>`__.
--|image0|
-+.. _section-3:
- 
--History
--=======
-+0.5.4-2 (2020-11-09)
-+--------------------
- 
--**Note:** Official support for Python 2.4 will end with Pystache version
--0.6.0.
-+-  Merge pull request #1 from sarnold/rebase-up
-+-  Bugfix: test_specloader.py: fix test_find__with_directory on other
-+   OSs
-+-  Bugfix: pystache/loader.py: remove stray windows line-endings
-+-  fix crufty (and insecure) http urls
-+-  Bugfix: modernize python versions (keep py27) and fix spec_test load
-+   cmd
-+
-+.. _section-4:
- 
- 0.5.4 (2014-07-11)
- ------------------
- 
- -  Bugfix: made test with filenames OS agnostic (issue #162).
- 
-+.. _section-5:
-+
- 0.5.3 (2012-11-03)
- ------------------
- 
- -  Added ability to customize string coercion (e.g. to have None render
-    as ``''``) (issue #130).
---  Added Renderer.render\_name() to render a template by name (issue
-+-  Added Renderer.render_name() to render a template by name (issue
-    #122).
---  Added TemplateSpec.template\_path to specify an absolute path to a
-+-  Added TemplateSpec.template_path to specify an absolute path to a
-    template (issue #41).
- -  Added option of raising errors on missing tags/partials:
-    ``Renderer(missing_tags='strict')`` (issue #110).
-@@ -355,6 +363,8 @@ History
- -  More robust handling of byte strings in Python 3.
- -  Added Creative Commons license for David Phillips's logo.
- 
-+.. _section-6:
-+
- 0.5.2 (2012-05-03)
- ------------------
- 
-@@ -367,16 +377,20 @@ History
-    context stack (issue #113).
- -  Bugfix: lists of lambdas for sections were not rendered (issue #114).
- 
-+.. _section-7:
-+
- 0.5.1 (2012-04-24)
- ------------------
- 
- -  Added support for Python 3.1 and 3.2.
- -  Added tox support to test multiple Python versions.
- -  Added test script entry point: pystache-test.
---  Added \_\_version\_\_ package attribute.
-+-  Added \__version_\_ package attribute.
- -  Test harness now supports both YAML and JSON forms of Mustache spec.
- -  Test harness no longer requires nose.
- 
-+.. _section-8:
-+
- 0.5.0 (2012-04-03)
- ------------------
- 
-@@ -435,11 +449,15 @@ Bug fixes:
- -  Passing ``**kwargs`` to ``Template()`` with no context no longer
-    raises an exception.
- 
-+.. _section-9:
-+
- 0.4.1 (2012-03-25)
- ------------------
- 
- -  Added support for Python 2.4. [wangtz, jvantuyl]
- 
-+.. _section-10:
-+
- 0.4.0 (2011-01-12)
- ------------------
- 
-@@ -447,19 +465,25 @@ Bug fixes:
- -  Add support for inverted lists
- -  Decoupled template loading
- 
-+.. _section-11:
-+
- 0.3.1 (2010-05-07)
- ------------------
- 
- -  Fix package
- 
-+.. _section-12:
-+
- 0.3.0 (2010-05-03)
- ------------------
- 
---  View.template\_path can now hold a list of path
-+-  View.template_path can now hold a list of path
- -  Add {{& blah}} as an alias for {{{ blah }}}
- -  Higher Order Sections
- -  Inverted sections
- 
-+.. _section-13:
-+
- 0.2.0 (2010-02-15)
- ------------------
- 
-@@ -473,12 +497,16 @@ Bug fixes:
-    [enaeseth]
- -  Template file encoding awareness. [enaeseth]
- 
-+.. _section-14:
-+
- 0.1.1 (2009-11-13)
- ------------------
- 
- -  Ensure we're dealing with strings, always
- -  Tests can be run by executing the test file directly
- 
-+.. _section-15:
-+
- 0.1.0 (2009-11-12)
- ------------------
- 
-@@ -510,4 +538,23 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- 
--.. |image0| image:: http://i.creativecommons.org/l/by-sa/3.0/88x31.png
-+.. |ci| image:: https://github.com/sarnold/pystache/actions/workflows/ci.yml/badge.svg
-+   :target: https://github.com/sarnold/pystache/actions/workflows/ci.yml
-+.. |Conda| image:: https://github.com/sarnold/pystache/actions/workflows/conda.yml/badge.svg
-+   :target: https://github.com/sarnold/pystache/actions/workflows/conda.yml
-+.. |Wheels| image:: https://github.com/sarnold/pystache/actions/workflows/wheels.yml/badge.svg
-+   :target: https://github.com/sarnold/pystache/actions/workflows/wheels.yml
-+.. |Release| image:: https://github.com/sarnold/pystache/actions/workflows/release.yml/badge.svg
-+   :target: https://github.com/sarnold/pystache/actions/workflows/release.yml
-+.. |Python| image:: https://img.shields.io/badge/python-3.6+-blue.svg
-+   :target: https://www.python.org/downloads/
-+.. |Latest release| image:: https://img.shields.io/github/v/release/sarnold/pystache?include_prereleases
-+   :target: https://github.com/sarnold/pystache/releases/latest
-+.. |License| image:: https://img.shields.io/github/license/sarnold/pystache
-+   :target: https://github.com/sarnold/pystache/blob/master/LICENSE
-+.. |Maintainability| image:: https://api.codeclimate.com/v1/badges/a8fa1bf4638bfc6581b6/maintainability
-+   :target: https://codeclimate.com/github/sarnold/pystache/maintainability
-+.. |codecov| image:: https://codecov.io/gh/sarnold/pystache/branch/master/graph/badge.svg?token=5PZNMZBI6K
-+   :target: https://codecov.io/gh/sarnold/pystache
-+.. |image9| image:: gh/images/logo_phillips_small.png
-+.. |image10| image:: http://i.creativecommons.org/l/by-sa/3.0/88x31.png
-diff --git a/tox.ini b/tox.ini
-index d1eaebf..66c4515 100644
---- a/tox.ini
-+++ b/tox.ini
-@@ -1,36 +1,110 @@
--# A tox configuration file to test across multiple Python versions.
--#
--#   http://pypi.python.org/pypi/tox
--#
- [tox]
--# Tox 1.4 drops py24 and adds py33.  In the current version, we want to
--# support 2.4, so we can't simultaneously support 3.3.
--envlist = py24,py25,py26,py27,py27-yaml,py27-noargs,py31,py32,pypy
-+envlist = py{36,37,38,39}-{linux,macos,windows}
-+skip_missing_interpreters = true
-+isolated_build = true
-+#skipsdist = true
-+
-+[gh-actions]
-+python =
-+    3.6: py36
-+    3.7: py37
-+    3.8: py38
-+    3.9: py39
-+
-+[gh-actions:env]
-+PLATFORM =
-+    ubuntu-18.04: linux
-+    macos-latest: macos
-+    windows-latest: windows
- 
- [testenv]
-+passenv = CI PYTHON PYTHONIOENCODING
-+
-+deps =
-+    pip>=20.0.1
-+    nose
-+    coverage
-+
-+commands =
-+    nosetests -sx . {posargs}
-+
-+[testenv:bare]
- # Change the working directory so that we don't import the pystache located
- # in the original location.
-+deps =
-+    pip>=20.0.1
-+    -e .
-+
- changedir =
-     {envbindir}
-+
- commands =
--    pystache-test {toxinidir}
-+    pystache-test
-+
-+[testenv:bench]
-+passenv = CI PYTHON PYTHONIOENCODING
- 
--# Check that the spec tests work with PyYAML.
--[testenv:py27-yaml]
--basepython =
--    python2.7
- deps =
--    PyYAML
--changedir =
--    {envbindir}
-+    pip>=20.0.1
-+    # uncomment for comparison, posargs expects a number, eg, 10000
-+    #chevron
-+
-+commands_pre =
-+    pip install .
-+
- commands =
--    pystache-test {toxinidir}
-+    python pystache/tests/benchmark.py {posargs}
-+
-+[testenv:setup]
-+passenv = CI PYTHON PYTHONIOENCODING
-+
-+deps =
-+    pyyaml
-+    twine
-+
-+commands =
-+    python setup.py install
-+    twine check dist/*
-+    pystache-test {posargs}
-+
-+[testenv:deploy]
-+passenv = CI PYTHON PYTHONIOENCODING
-+allowlist_externals = bash
-+
-+deps =
-+    pip>=19.0.1
-+    wheel
-+    pep517
-+    twine
-+
-+commands =
-+    python -m pep517.build .
-+    twine check dist/*
-+
-+[testenv:check]
-+passenv = CI PYTHON PYTHONIOENCODING
-+skip_install = true
-+
-+allowlist_externals = bash
-+
-+deps =
-+    pip>=20.0.1
- 
--# Check that pystache-test works from an install with no arguments.
--[testenv:py27-noargs]
--basepython =
--    python2.7
--changedir =
--    {envbindir}
- commands =
-+    bash -c 'export WHL_FILE=$(ls dist/*.whl); \
-+        python -m pip install $WHL_FILE'
-     pystache-test
-+
-+[testenv:docs]
-+passenv = CI PYTHON PYTHONIOENCODING
-+allowlist_externals = bash
-+
-+deps =
-+    pip>=19.0.1
-+    wheel
-+    docutils
-+    # apt/emerge pandoc first
-+
-+commands =
-+    python setup.py prep
-+    bash -c 'python setup.py --long-description | rst2html.py -v --no-raw > out.html'
-diff --git a/travis.yml_disabled b/travis.yml_disabled
-new file mode 100644
-index 0000000..f0b4042
---- /dev/null
-+++ b/travis.yml_disabled
-@@ -0,0 +1,52 @@
-+dist: xenial
-+language: python
-+
-+# Travis CI has no plans to support Jython and no longer supports Python 2.5.
-+python:
-+  - "2.7"
-+  - "3.5"
-+  - "3.6"
-+  - "3.7"
-+  - "3.8"
-+  - "3.9-dev"
-+  - "nightly"
-+
-+matrix:
-+  fast_finish: true
-+  include:
-+    - os: osx
-+      # osx is goofy, ``python`` is always py2, images mutate fast
-+      language: shell
-+      before_install:
-+        - pip3 install --upgrade pip wheel
-+      install:
-+        - python3 setup.py install
-+      script:
-+        - pystache-test . ext/spec/specs
-+    - os: windows
-+      # windows is even goofier, install path is different for python/python3
-+      # but either way you get python3 and the cmd is always ``python``  o.O 
-+      # (also versions mutuate like bacteria)
-+      language: shell
-+      before_install:
-+        - choco install python3 --params "/InstallDir:C:\\Python"
-+        - python -m pip install --upgrade pip wheel
-+      env: PATH="/c/Python:/c/Python/Scripts:$PATH"
-+      install:
-+        - python setup.py install
-+      script:
-+        - pystache-test . ext/spec/specs
-+  allow_failures:
-+    - python: "nightly"
-+
-+# command to install dependencies
-+install:
-+  - pip install --upgrade pip
-+  - pip install codecov
-+
-+script:
-+  - python setup.py install
-+  # Include the spec tests directory for Mustache spec tests and the
-+  # project directory for doctests.
-+  - pystache-test . ext/spec/specs
-+  #- tox
--- 
-2.33.0
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache_0.5.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache_0.5.4.bb
deleted file mode 100644
index 0ae5a19..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystache_0.5.4.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Python implementation of Mustache"
-HOMEPAGE = "https://github.com/defunkt/pystache"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=eb4417802c56384aac71b34505528a60"
-
-SRC_URI += "file://0001-Modernize-python-versions-remove-py2x-and-fix-tests-.patch"
-
-SRC_URI[md5sum] = "485885e67a0f6411d5252e69b20a35ca"
-SRC_URI[sha256sum] = "f7bbc265fb957b4d6c7c042b336563179444ab313fb93a719759111eabd3b85a"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-netserver \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.8.0.bb
index cdfb7d3..0056a79 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.8.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.8.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Python bindings for interacting with systemd over DBus"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=4fbd65380cdd255951079008b364516c"
 
 SRC_URI[md5sum] = "f993739eca645749f18d4ccfd4a0fbf3"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-forked_1.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-forked_1.4.0.bb
index c6f352b..a751ad6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-forked_1.4.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-forked_1.4.0.bb
@@ -5,7 +5,7 @@
 
 SRC_URI[sha256sum] = "8b67587c8f98cbbadfdd804539ed5455b6ed03802203485dd2f53c1422d7440e"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 DEPENDS += "python3-setuptools-scm-native"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-helpers-namespace_2021.4.29.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-helpers-namespace_2021.4.29.bb
index 0ee1bd6..024650e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-helpers-namespace_2021.4.29.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-helpers-namespace_2021.4.29.bb
@@ -6,17 +6,7 @@
 
 SRC_URI[sha256sum] = "183524e3db4e2a1fea92e0ca3662a624ba44c9f3568da15679d7535ba6838a6a"
 
-inherit pypi setuptools3
-
-# Workaround for network access issue during compile step
-# this needs to be fixed in the recipes buildsystem to move
-# this such that it can be accomplished during do_fetch task
-do_compile[network] = "1"
-
-DEPENDS += "\
-    ${PYTHON_PN}-wheel-native \
-    ${PYTHON_PN}-pip-native \
-"
+inherit pypi python_setuptools_build_meta
 
 RDEPENDS:${PN} += " \
     ${PYTHON_PN}-pytest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_3.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_3.1.1.bb
index cd0450f..ce55554 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_3.1.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-html_3.1.1.bb
@@ -6,10 +6,9 @@
 
 SRC_URI[sha256sum] = "3ee1cf319c913d19fe53aeb0bc400e7b0bc2dbeb477553733db1dad12eb75ee3"
 
-
 PYPI_PACKAGE = "pytest-html"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 RDEPENDS:${PN} += " \
     ${PYTHON_PN}-pytest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixture/run-ptest
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pytz/run-ptest
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixture/run-ptest
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixture_0.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixture_0.6.3.bb
new file mode 100644
index 0000000..32b5677
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixture_0.6.3.bb
@@ -0,0 +1,23 @@
+# Copyright (C) 2022 Wind River Systems
+
+SUMMARY = "Use your fixtures in @pytest.mark.parametrize."
+HOMEPAGE = "https://github.com/tvorog/pytest-lazy-fixture"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aae6f2b7c9b3ced83e0b5bb42346d4dd"
+
+SRC_URI[sha256sum] = "0e7d0c7f74ba33e6e80905e9bfd81f9d15ef9a790de97993e34213deb5ad10ac"
+
+SRC_URI += "file://run-ptest \
+           "
+
+
+inherit ptest pypi setuptools3
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+
+RDEPENDS:${PN} += "python3-core python3-pytest"
+RDEPENDS:${PN}-ptest = " python3-unixadmin"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-metadata_1.11.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-metadata_2.0.1.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-metadata_1.11.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-metadata_2.0.1.bb
index 060eee3..35e8b75 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-metadata_1.11.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-metadata_2.0.1.bb
@@ -4,7 +4,7 @@
 LICENSE = "MPL-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=5d425c8f3157dbf212db2ec53d9e5132"
 
-SRC_URI[sha256sum] = "71b506d49d34e539cc3cfdb7ce2c5f072bea5c953320002c95968e0238f8ecf1"
+SRC_URI[sha256sum] = "5cdb6aeea8ba9109181cf9f149c8a3ae1430ff7e44506a8f866af8a98ca46301"
 
 PYPI_PACKAGE = "pytest-metadata"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-runner_5.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-runner_5.3.1.bb
deleted file mode 100644
index 28b7053..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-runner_5.3.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "Invoke py.test as distutils command with dependency resolution"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6"
-
-SRC_URI[sha256sum] = "0fce5b8dc68760f353979d99fdd6b3ad46330b6b1837e2077a89ebcf204aac91"
-
-inherit pypi setuptools3
-
-DEPENDS += " \
-    ${PYTHON_PN}-setuptools-scm-native"
-
-RDEPENDS:${PN} = "${PYTHON_PN}-py ${PYTHON_PN}-setuptools ${PYTHON_PN}-debugger ${PYTHON_PN}-json \
-                  ${PYTHON_PN}-io"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-subtests_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-subtests_0.6.0.bb
deleted file mode 100644
index 5e4847b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-subtests_0.6.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "unittest subTest() support and subtests fixture."
-DESCRIPTION = "Adds support for TestCase.subTest.\
-New subtests fixture, providing similar functionality for pure pytest tests."
-HOMEPAGE = "https://github.com/pytest-dev/pytest-subtests"
-BUGTRACKER = "https://github.com/pytest-dev/pytest-subtests/issues"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=242b4e17fa287dcf7aef372f6bc3dcb1"
-
-SRC_URI[sha256sum] = "3ebd306a8dcf75133f1742f288c82f36426ebcf8a132d4ee89782d20e84fc13a"
-
-inherit pypi setuptools3
-
-DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-pytest \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-xdist_2.5.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-xdist_2.5.0.bb
index a10ac8c..c3e69e3 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-xdist_2.5.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-xdist_2.5.0.bb
@@ -5,7 +5,7 @@
 
 SRC_URI[sha256sum] = "4580deca3ff04ddb2ac53eba39d76cb5dd5edeac050cb6fbc768b0dd712b4edf"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 DEPENDS += "python3-setuptools-scm-native"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-python-vlc_3.0.12118.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-python-vlc_3.0.16120.bb
similarity index 68%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-python-vlc_3.0.12118.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-python-vlc_3.0.16120.bb
index 3e799cf..a4d21a5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-python-vlc_3.0.12118.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-python-vlc_3.0.16120.bb
@@ -1,8 +1,8 @@
 SUMMARY = "This module provides ctypes-based bindings for the native libvlc API of the VLC video player."
 HOMEPAGE = "wiki.videolan.org/PythonBinding"
-LICENSE = "LGPL-2.0"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
-SRC_URI[sha256sum] = "566f2f7c303f6800851cacc016df1c6eeec094ad63e0a49d87db9d698094f1fb"
+SRC_URI[sha256sum] = "92f98fee088f72bd6d063b3b3312d0bd29b37e7ad65ddeb3a7303320300c2807"
 
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz-deprecation-shim_0.1.0.post0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz-deprecation-shim_0.1.0.post0.bb
index 76487c8..d116c3b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz-deprecation-shim_0.1.0.post0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz-deprecation-shim_0.1.0.post0.bb
@@ -8,9 +8,4 @@
 PYPI_PACKAGE = "pytz_deprecation_shim"
 PYPI_SRC_URI = "https://files.pythonhosted.org/packages/94/f0/909f94fea74759654390a3e1a9e4e185b6cd9aa810e533e3586f39da3097/${PYPI_PACKAGE}-${PV}.tar.gz"
 
-inherit pypi setuptools3
-
-do_compile:prepend() {
-	echo "from setuptools import setup" > ${S}/setup.py
-	echo "setup()" >> ${S}/setup.py
-}
+inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2021.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2021.3.bb
deleted file mode 100644
index 119342a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytz_2021.3.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "World timezone definitions, modern and historical"
-HOMEPAGE = "http://pythonhosted.org/pytz"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1a67fc46c1b596cce5d21209bbe75999"
-
-inherit pypi setuptools3 ptest
-
-SRC_URI[sha256sum] = "acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"
-
-RDEPENDS:${PN}:class-target += "\
-    ${PYTHON_PN}-datetime \
-    ${PYTHON_PN}-doctest \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-pickle \
-    ${PYTHON_PN}-pprint \
-    ${PYTHON_PN}-threading \
-"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-	${PYTHON_PN}-pytest \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/pytz
-	install -d ${D}${PTEST_PATH}/pytz/tests
-	cp -rf ${S}/pytz/tests/* ${D}${PTEST_PATH}/pytz/tests/
-	cp -f ${S}/README.rst ${D}${PTEST_PATH}/
-
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.23.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.23.2.bb
index 183bf72..4c4c959 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.23.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyudev_0.23.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A libudev binding"
 
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
 
 SRC_URI[sha256sum] = "32ae3585b320a51bc283e0a04000fd8a25599edb44541e2f5034f6afee5d15cc"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq/club-rpath-out.patch
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pyzmq/club-rpath-out.patch
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq/club-rpath-out.patch
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_22.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_22.3.0.bb
index 87605c2..e4762eb 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_22.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_22.3.0.bb
@@ -1,24 +1,20 @@
 SUMMARY = "Pyzmq provides Zero message queue access for the Python language"
 HOMEPAGE = "http://zeromq.org/bindings:python"
-LICENSE = "BSD-3-Clause & LGPL-3.0"
+LICENSE = "BSD-3-Clause & LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING.BSD;md5=11c65680f637c3df7f58bbc8d133e96e \
                     file://COPYING.LESSER;md5=12c592fa0bcfff3fb0977b066e9cb69e"
 DEPENDS = "zeromq"
 
-FILESEXTRAPATHS:prepend := "${THISDIR}/python-pyzmq:"
-
 SRC_URI += "file://club-rpath-out.patch"
 SRC_URI[sha256sum] = "8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c"
 
-inherit pypi pkgconfig setuptools3
+inherit pypi pkgconfig python_setuptools_build_meta
 
 RDEPENDS:${PN} += " \
 	${PYTHON_PN}-multiprocessing \
 	${PYTHON_PN}-json \
 "
 
-FILES:${PN}-dbg =+ "${PYTHON_SITEPACKAGES_DIR}/zmq/backend/cython/.debug"
-
 do_compile:prepend() {
     echo [global] > ${S}/setup.cfg
     echo zmq_prefix = ${STAGING_DIR_HOST} >> ${S}/setup.cfg
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-qface_2.0.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-qface_2.0.6.bb
new file mode 100644
index 0000000..6345351
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-qface_2.0.6.bb
@@ -0,0 +1,24 @@
+SUMMARY = "A generator framework based on a common modern IDL"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=eee61e10a40b0e3045ee5965bcd9a8b5"
+
+SRC_URI[sha256sum] = "87ce8ce7123ae57d91ac903c6c330a99273e7f4665a0ab88e6a17f9c98143a68"
+
+inherit pypi python_setuptools_build_meta
+
+DEPS = "\
+    python3-jinja2 \
+    python3-click \
+    python3-pyyaml \
+    python3-pytest \
+    python3-six \
+    python3-path \
+    python3-antlr4-runtime \
+    python3-watchdog \
+    python3-markupsafe \
+    python3-setuptools \
+"
+DEPENDS += "${DEPS}"
+RDEPENDS:${PN} += "${DEPS}"
+
+BBCLASSEXTEND = "nativesdk native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.2.0.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.1.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.2.0.bb
index 9af7383..d4fc988 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.1.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-redis_4.2.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=51d9ad56299ab60ba7be65a621004f27"
 
-SRC_URI[sha256sum] = "07420a3fbedd8e012c31d4fadac943fb81568946da202c5a5bc237774e5280a0"
+SRC_URI[sha256sum] = "6758d01dec81af191b98a35cce3402675d115456584c39b500ab485a5e386bbb"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.11.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2022.3.2.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.11.10.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2022.3.2.bb
index dce232b..c71394c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2021.11.10.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-regex_2022.3.2.bb
@@ -5,7 +5,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "f341ee2df0999bfdf7a95e448075effe0db212a59387de1a70690e4acb03d4c6"
+SRC_URI[sha256sum] = "79e5af1ff258bc0fe0bdd6f69bc4ae33935a898e3cbefbbccf22e88a27fa053b"
 
 RDEPENDS:${PN} += " \
 	python3-stringold \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.27.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.27.1.bb
deleted file mode 100644
index af52b7c..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.27.1.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-DESCRIPTION = "Python HTTP for Humans."
-HOMEPAGE = "http://python-requests.org"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
-
-SRC_URI[sha256sum] = "68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    ${PYTHON_PN}-email \
-    ${PYTHON_PN}-json \
-    ${PYTHON_PN}-ndg-httpsclient \
-    ${PYTHON_PN}-netserver \
-    ${PYTHON_PN}-pyasn1 \
-    ${PYTHON_PN}-pyopenssl \
-    ${PYTHON_PN}-pysocks \
-    ${PYTHON_PN}-urllib3 \
-    ${PYTHON_PN}-chardet \
-    ${PYTHON_PN}-idna \
-"
-
-CVE_PRODUCT = "requests"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_4.1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_5.0.bb
similarity index 91%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_4.1.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_5.0.bb
index a40d047..d66fd33 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_4.1.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-robotframework_5.0.bb
@@ -13,7 +13,7 @@
 
 PYPI_PACKAGE_EXT = "zip"
 
-SRC_URI[sha256sum] = "d2675cbe3e5a4c90be3ddb61be3b88cc0d6ff503c298ad8f8a78aad14e71e886"
+SRC_URI[sha256sum] = "bffecba8c43d4294936d921f0af4941079039edce88194769133719732c608bc"
 
 RDEPENDS:${PN} += " \
     ${PYTHON_PN}-shell \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-rsa_4.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-rsa_4.8.bb
index d0a18f9..21b664d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-rsa_4.8.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-rsa_4.8.bb
@@ -6,7 +6,7 @@
 
 SRC_URI[sha256sum] = "5c6bd9dc7a543b7fe4304a631f8a8a3b674e2bbfc49c2ae96200cdbe55df6b17"
 
-inherit pypi setuptools3 update-alternatives
+inherit pypi python_poetry_core update-alternatives
 
 ALTERNATIVE:${PN} = "\
     pyrsa-decrypt \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.19.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.20.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.19.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.20.bb
index f0a9e16..c386932 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.19.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.20.bb
@@ -5,7 +5,7 @@
 
 SRC_URI += "file://0001-py-scrypt-remove-the-hard-coded-include-paths.patch"
 
-SRC_URI[sha256sum] = "ad143035ae0cf5e97c4b399f4e4686adf442c5f0f06f9f198a0cc6c091335fb7"
+SRC_URI[sha256sum] = "0d226c1c6744fb2e308b391410669b1df5cfe82637ffcb5ed489bf82b2d2eb78"
 
 inherit pypi ptest setuptools3 dos2unix
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify/0001-setup.py-switch-to-setuptools.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify/0001-setup.py-switch-to-setuptools.patch
new file mode 100644
index 0000000..cf7696a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify/0001-setup.py-switch-to-setuptools.patch
@@ -0,0 +1,31 @@
+From f662280b26eb1549890e88e8e9085f1937d7962d Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Mon, 28 Feb 2022 07:54:03 -0800
+Subject: [PATCH] setup.py: switch to setuptools
+
+In Python 3.10, 'distutils' is deprecated and is slated for removal in
+Python 3.12.
+
+Switch from distutils.core to setuptools. This also allows the 'wheel'
+binary archive format to be built with 'setup.py bdist_wheel'.
+
+Upstream-Status: Submitted [https://github.com/bb4242/sdnotify/pull/7]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 433222c..32b5bd6 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,4 +1,4 @@
+-from distutils.core import setup
++from setuptools import setup
+ 
+ VERSION='0.3.2'
+ 
+-- 
+2.30.2
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb
index 221a8c8..dc1961a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sdnotify_0.3.2.bb
@@ -12,7 +12,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cc572ccc4b18a4b7d13be5d01bc8213e"
 
-SRC_URI[md5sum] = "749ddca1c70be1697fecc443fb1fdb16"
 SRC_URI[sha256sum] = "73977fc746b36cc41184dd43c3fe81323e7b8b06c2bb0826c4f59a20c56bb9f1"
 
+SRC_URI += "file://0001-setup.py-switch-to-setuptools.patch"
+
 inherit setuptools3 pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-semantic-version_2.8.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-semantic-version_2.8.5.bb
deleted file mode 100644
index b8541ff..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-semantic-version_2.8.5.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY  = "A library implementing the 'SemVer' scheme."
-DESCRIPTION = "Semantic version comparison for Python (see http://semver.org/)"
-HOMEPAGE = "https://github.com/rbarrois/python-semanticversion"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=4fb31e3c1c7eeb8b5e8c07657cdd54e2"
-
-SRC_URI[sha256sum] = "d2cb2de0558762934679b9a104e82eca7af448c9f4974d1f3eeccff651df8a54"
-
-PYPI_PACKAGE = "semantic_version"
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.5.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.5.7.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.5.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.5.7.bb
index 9822b41..1594fb5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.5.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.5.7.bb
@@ -7,7 +7,7 @@
 
 RDEPENDS:${PN} += "python3-urllib3"
 
-SRC_URI[sha256sum] = "141da032f0fa4c56f9af6b361fda57360af1789576285bd1944561f9c274f9c0"
+SRC_URI[sha256sum] = "aa52da941c56b5a76fd838f8e9e92a850bf893a9eb1e33ffce6c21431d07ee30"
 
 PYPI_PACKAGE = "sentry-sdk"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-rust-native_1.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-rust-native_1.1.2.bb
deleted file mode 100644
index 34ff912..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-setuptools-rust-native_1.1.2.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Setuptools Rust extension plugin"
-DESCRIPTION = "setuptools-rust is a plugin for setuptools to build Rust \
-Python extensions implemented with PyO3 or rust-cpython.\
-\
-Compile and distribute Python extensions written in Rust as easily as if they were written in C."
-HOMEPAGE = "https://github.com/PyO3/setuptools-rust"
-BUGTRACKER = "https://github.com/PyO3/setuptools-rust/issues"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=011cd92e702dd9e6b1a26157b6fd53f5"
-
-SRC_URI = "https://files.pythonhosted.org/packages/67/08/e1aa2c582c62ac76e4d60f8e454bd3bba933781a06a88b4e38797445822a/setuptools-rust-${PV}.tar.gz"
-SRC_URI[sha256sum] = "a0adb9b503c0ffc4e8fe80b7c617898cefa78049983aaaea7f747e153a3e65d1"
-
-inherit cargo pypi setuptools3 native
-
-DEPENDS += "python3-setuptools-scm-native python3-wheel-native"
-
-RDEPENDS:${PN}:class-native += " \
-    python3-semantic-version-native \
-    python3-setuptools-native \
-    python3-setuptools-scm-native \
-    python3-toml-native \
-    python3-typing-extensions-native \
-    python3-wheel-native \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.12.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.12.bb
index 8ad6acc..343e5c0 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.12.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-simpleeval_0.9.12.bb
@@ -5,7 +5,7 @@
 
 SRC_URI[sha256sum] = "3e0be507486d4e21cf9d08847c7e57dd61a1603950399985f7c5a0be7fd33e36"
 
-inherit pypi setuptools3 ptest
+inherit pypi python_setuptools_build_meta ptest
 
 BBCLASSEXTEND = "native nativesdk"
 
@@ -21,10 +21,6 @@
 	${PYTHON_PN}-pytest \
 "
 
-do_configure:prepend() {
-	sed -i -e "/use_2to3=True,/d" ${S}/setup.py
-}
-
 do_install_ptest() {
 	cp -f ${S}/test_simpleeval.py ${D}${PTEST_PATH}/
 }
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus/0001-setup.py-Use-setuptools-instead-of-distutils.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus/0001-setup.py-Use-setuptools-instead-of-distutils.patch
new file mode 100644
index 0000000..1208769
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus/0001-setup.py-Use-setuptools-instead-of-distutils.patch
@@ -0,0 +1,38 @@
+From 4309ce76351b1685d08b3ba55d4f62b3e53ef76b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 1 Mar 2022 19:06:35 -0800
+Subject: [PATCH] setup.py: Use setuptools instead of distutils
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ setup.py.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/setup.py.in
++++ b/setup.py.in
+@@ -2,20 +2,17 @@
+ # -*- coding: utf-8 -*-
+ 
+ import sys
+-from distutils.core import setup
++from setuptools import setup, find_packages
+ 
+ setup(name="slip", version="@VERSION@",
+         py_modules=["slip.__init__", "slip.util.__init__",
+             "slip.util.hookable", "slip.util.files",
+-            "slip._wrappers.__init__", "slip._wrappers._glib"],
+-        requires=["selinux"])
+-
+-setup(name="slip.dbus", version="@VERSION@",
+-        py_modules=["slip.dbus.__init__", "slip.dbus.bus",
++            "slip._wrappers.__init__", "slip._wrappers._glib",
++            "slip.dbus.__init__", "slip.dbus.bus",
+             "slip.dbus.constants", "slip.dbus.introspection",
+             "slip.dbus.mainloop", "slip.dbus.polkit", "slip.dbus.proxies",
+             "slip.dbus.service"],
+-        requires=["dbus", "decorator", "StringIO", "xml.etree.ElementTree"])
++      requires=["dbus", "decorator", "selinux", "StringIO", "xml.etree.ElementTree"])
+ 
+ if sys.version_info.major == 2:
+     setup(name="slip.gtk", version="@VERSION@",
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus/9b939c0b534c1b7958fa0a3c7aedf30bca910431.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus/9b939c0b534c1b7958fa0a3c7aedf30bca910431.patch
new file mode 100644
index 0000000..b0e9d22
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus/9b939c0b534c1b7958fa0a3c7aedf30bca910431.patch
@@ -0,0 +1,76 @@
+From 9b939c0b534c1b7958fa0a3c7aedf30bca910431 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Mon, 7 Jun 2021 23:23:47 +0200
+Subject: [PATCH] Python 3.10+ fix: Use collections.abc.Callable instead of
+ collections.Callable
+
+The deprecated aliases to Collections Abstract Base Classes were removed from
+the collections module in Python 3.10.
+https://docs.python.org/3.10/whatsnew/changelog.html#python-3-10-0-alpha-5
+https://bugs.python.org/issue37324
+---
+ slip/dbus/polkit.py   | 6 +++---
+ slip/util/hookable.py | 6 +++---
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/slip/dbus/polkit.py b/slip/dbus/polkit.py
+index 128e8ce..320676d 100644
+--- a/slip/dbus/polkit.py
++++ b/slip/dbus/polkit.py
+@@ -26,7 +26,7 @@
+ 
+ from __future__ import absolute_import
+ 
+-import collections
++import collections.abc
+ import dbus
+ from decorator import decorator
+ from functools import reduce
+@@ -103,14 +103,14 @@ class MyProxy(object):
+             def some_method(self, ...):
+                 ..."""
+ 
+-    assert(func is None or isinstance(func, collections.Callable))
++    assert(func is None or isinstance(func, collections.abc.Callable))
+ 
+     assert(
+         authfail_result in (None, AUTHFAIL_DONTCATCH) or
+         authfail_exception is None)
+     assert(
+         authfail_callback is None or
+-        isinstance(authfail_callback, collections.Callable))
++        isinstance(authfail_callback, collections.abc.Callable))
+     assert(
+         authfail_exception is None or
+         issubclass(authfail_exception, Exception))
+diff --git a/slip/util/hookable.py b/slip/util/hookable.py
+index 89c7392..0cd9967 100644
+--- a/slip/util/hookable.py
++++ b/slip/util/hookable.py
+@@ -23,7 +23,7 @@
+ """This module contains variants of certain base types which call registered
+ hooks on changes."""
+ 
+-import collections
++import collections.abc
+ from six import with_metaclass
+ 
+ __all__ = ["Hookable", "HookableSet"]
+@@ -67,7 +67,7 @@ class _HookEntry(object):
+ 
+     def __init__(self, hook, args, kwargs, hookable=None):
+ 
+-        assert(isinstance(hook, collections.Callable))
++        assert(isinstance(hook, collections.abc.Callable))
+         assert(isinstance(hookable, Hookable))
+ 
+         for n, x in enumerate(args):
+@@ -174,7 +174,7 @@ def add_hook_hookable(self, hook, *args, **kwargs):
+         self.__add_hook(hook, self, *args, **kwargs)
+ 
+     def __add_hook(self, hook, _hookable, *args, **kwargs):
+-        assert isinstance(hook, collections.Callable)
++        assert isinstance(hook, collections.abc.Callable)
+         assert isinstance(_hookable, Hookable)
+         hookentry = _HookEntry(hook, args, kwargs, hookable=_hookable)
+         self.__hooks__.add(hookentry)
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb
index 00d83ab..ae4e6f7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb
@@ -10,16 +10,18 @@
 functions and decorators for integrating a dbus service with PolicyKit."
 
 SECTION = "devel/python"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
 SRCNAME = "python-slip"
 
-SRC_URI = "https://github.com/nphilipp/${SRCNAME}/releases/download/${SRCNAME}-${PV}/${SRCNAME}-${PV}.tar.bz2"
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-SRC_URI[md5sum] = "28ae5f93853466c44ec96706ba2a1eb4"
+SRC_URI = "https://github.com/nphilipp/${SRCNAME}/releases/download/${SRCNAME}-${PV}/${SRCNAME}-${PV}.tar.bz2 \
+           file://9b939c0b534c1b7958fa0a3c7aedf30bca910431.patch \
+           file://0001-setup.py-Use-setuptools-instead-of-distutils.patch \
+          "
 SRC_URI[sha256sum] = "c726c086f0dd93a0ac7a0176f383a12af91b6657b78a301e3f5b25d9f8d4d10b"
 
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
 do_compile:prepend() {
     sed -e 's/@VERSION@/${PV}/g' ${S}/setup.py.in > ${S}/setup.py
 }
@@ -32,3 +34,4 @@
 CLEANBROKEN = "1"
 
 inherit setuptools3
+PIP_INSTALL_PACKAGE = "slip"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.3.bb
index ecdff3a..b305a12 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-smbus_4.3.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Set of i2c tools for linux - Python module"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://py-smbus/smbusmodule.c;beginline=1;endline=18;md5=46e424fb045901ab25e0f92c28c80055"
 
 SRC_URI = "${KERNELORG_MIRROR}/software/utils/i2c-tools/i2c-tools-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-smpplib_2.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-smpplib_2.2.1.bb
index 7401e03..be0bafd 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-smpplib_2.2.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-smpplib_2.2.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "SMPP library for python"
 SECTION = "devel/python"
-LICENSE = "GPLv3.0"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://README.md;md5=8b4e2ac8cf248f7b991784f88b630852"
 
 PYPI_PACKAGE = "smpplib"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-snappy_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-snappy_0.6.1.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-snappy_0.6.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-snappy_0.6.1.bb
index f8e6281..8a30f7c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-snappy_0.6.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-snappy_0.6.1.bb
@@ -4,7 +4,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b3090152f53ee19f6a7b64b1a36384fb"
 
-SRC_URI[sha256sum] = "168a98d3f597b633cfeeae7fe1c78a8dfd81f018b866cf7ce9e4c56086af891a"
+SRC_URI[sha256sum] = "b6a107ab06206acc5359d4c5632bd9b22d448702a79b3169b0c62e0fb808bb2a"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.5.2.bb
similarity index 84%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.5.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.5.2.bb
index ebbb5c0..6611743 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.5.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.5.2.bb
@@ -5,11 +5,11 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=42d0a9e728978f0eeb759c3be91536b8"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 PYPI_PACKAGE = "python-socketio"
 
-SRC_URI[sha256sum] = "ac8e64d59a15d1c31a4fe8434f4ff16d0f640c824ba517dce7ca99e95f0cd36a"
+SRC_URI[sha256sum] = "6213f7dfbb87e554472d11151f96bae9059854aa88e4a1e0fa6e97cca1c3fcf4"
 
 PACKAGECONFIG ?= "asyncio_client client"
 PACKAGECONFIG[asyncio_client] = ",,,${PYTHON_PN}-aiohttp ${PYTHON_PN}-websockets"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-soupsieve_2.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-soupsieve_2.3.1.bb
index f4cf93d..7cb76b4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-soupsieve_2.3.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-soupsieve_2.3.1.bb
@@ -6,7 +6,7 @@
 
 SRC_URI[sha256sum] = "b8d49b1cd4f037c7082a9683dfa1801aa2597fb11c3a1155b7a5b94829b4f1f9"
 
-inherit pypi setuptools3 ptest
+inherit pypi python_setuptools_build_meta ptest
 
 SRC_URI += " \
         file://run-ptest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.31.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.32.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.31.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.32.bb
index 510bb7d..93a49df 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.31.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_1.4.32.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f4001d1ca15b69d096fa1b4fd1bdce79"
 
-SRC_URI[sha256sum] = "582b59d1e5780a447aada22b461e50b404a9dc05768da1d87368ad8190468418"
+SRC_URI[sha256sum] = "6fdd2dc5931daab778c2b65b03df6ae68376e028a3098eb624d0909d999885bc"
 
 PYPI_PACKAGE = "SQLAlchemy"
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb
index cbc9f44..10614fe 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-systemd_234.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Python interface for libsystemd"
 HOMEPAGE = "https://github.com/systemd/python-systemd"
-LICENSE = "LGPLv2.1+"
+LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4fbd65380cdd255951079008b364516c"
 
 PYPI_PACKAGE = "systemd-python"
@@ -15,6 +15,9 @@
 # allow for common patches for python- and python3-systemd
 FILESEXTRAPATHS:prepend := "${THISDIR}/python-systemd:"
 
-SRC_URI += "file://endian.patch"
+SRC_URI += " \
+    file://endian.patch \
+    file://0002-setup.py-switch-from-distutils-to-setuptools.patch \
+"
 
 SRC_URI:append:libc-musl = " file://0001-Provide-implementation-of-strndupa-for-musl.patch"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-term_2.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-term_2.3.bb
index 723f1db..6b62eb0 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-term_2.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-term_2.3.bb
@@ -1,6 +1,6 @@
 SUMMARY = "An enhanced version of the tty module"
 SECTION = "devel/python"
-LICENSE = "Python-2"
+LICENSE = "Python-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d90e2d280a4836c607520383d1639be1"
 
 SRC_URI[md5sum] = "ab0c1bce381b1109fe4390c56aa06237"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor/0001-setup.py-Use-setuptools-instead-of-distutils.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor/0001-setup.py-Use-setuptools-instead-of-distutils.patch
new file mode 100644
index 0000000..a55a6a9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor/0001-setup.py-Use-setuptools-instead-of-distutils.patch
@@ -0,0 +1,27 @@
+From e30308284c721210e2ba50d8b3d159cedf5eada8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 28 Feb 2022 14:44:42 -0800
+Subject: [PATCH] setup.py: Use setuptools instead of distutils
+
+Upstream-Status: Pending
+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 c4fe4ed..dad1d29 100755
+--- a/setup.py
++++ b/setup.py
+@@ -23,7 +23,7 @@
+ # Author: Konstantin Lepa <konstantin.lepa@gmail.com>
+ 
+ import os
+-from distutils.core import setup
++from setuptools import setup
+ 
+ prjdir = os.path.dirname(__file__)
+ 
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_1.1.0.bb
index 17df7f9..15bab62 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_1.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-termcolor_1.1.0.bb
@@ -6,7 +6,8 @@
 
 inherit pypi setuptools3
 
-SRC_URI[md5sum] = "043e89644f8909d462fbbfa511c768df"
+SRC_URI += "file://0001-setup.py-Use-setuptools-instead-of-distutils.patch"
+
 SRC_URI[sha256sum] = "1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.62.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.63.1.bb
similarity index 73%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.62.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.63.1.bb
index 148431d..0fcd4d4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.62.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tqdm_4.63.1.bb
@@ -5,9 +5,9 @@
 LICENSE = "MIT & MPL-2.0"
 LIC_FILES_CHKSUM = "file://LICENCE;md5=1672e2674934fd93a31c09cf17f34100"
 
-SRC_URI[sha256sum] = "d359de7217506c9851b7869f3708d8ee53ed70a1b8edbba4dbcb47442592920d"
+SRC_URI[sha256sum] = "4230a49119a416c88cc47d0d2d32d5d90f1a282d5e497d49801950704e49863d"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.1.bb
index bfed02d..8f80426 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.1.1.bb
@@ -13,4 +13,4 @@
     ${PYTHON_PN}-decorator \
 "
 
-inherit setuptools3 pypi
+inherit pypi python_setuptools_build_meta
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.11.bb
similarity index 74%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.10.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.11.bb
index 4629298..1418942 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.10.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-transitions_0.8.11.bb
@@ -4,6 +4,6 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "b0385975a842e885c1a55c719d2f90164471665794d39d51f9eb3f11e1d9c8ac"
+SRC_URI[sha256sum] = "7b20d32906ea4d60ee6f6c1f5dc9c9f178802425c5b155213eb0f25c277f04e4"
 
 RDEPENDS:${PN} += "python3-six python3-logging"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twine_3.7.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-twine_3.7.1.bb
deleted file mode 100644
index bcc881e..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-twine_3.7.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "Utilities for interacting with PyPI"
-HOMEPAGE = "https://twine.readthedocs.io/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a3d1106b253a8d50dd82a4202a045b4c"
-
-SRC_URI[sha256sum] = "28460a3db6b4532bde6a5db6755cf2dce6c5020bada8a641bb2c5c7a9b1f35b8"
-
-inherit pypi setuptools3
-
-DEPENDS += "\
-	${PYTHON_PN}-setuptools-scm-native \
-"
-
-RDEPENDS:${PN} += " \
-	${PYTHON_PN}-importlib-metadata \
-"
-
-do_compile:prepend() {
-	echo "from setuptools import setup" > ${S}/setup.py
-	echo "setup()" >> ${S}/setup.py
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twine_3.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-twine_3.8.0.bb
new file mode 100644
index 0000000..4296ab2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-twine_3.8.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Utilities for interacting with PyPI"
+HOMEPAGE = "https://twine.readthedocs.io/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a3d1106b253a8d50dd82a4202a045b4c"
+
+SRC_URI[sha256sum] = "8efa52658e0ae770686a13b675569328f1fba9837e5de1867bfe5f46a9aefe19"
+
+inherit pypi python_setuptools_build_meta
+
+DEPENDS += "\
+	${PYTHON_PN}-setuptools-scm-native \
+"
+
+RDEPENDS:${PN} += " \
+	${PYTHON_PN}-importlib-metadata \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_22.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_22.2.0.bb
similarity index 95%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_22.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_22.2.0.bb
index 8fd7801..f4575c9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_22.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_22.2.0.bb
@@ -7,11 +7,11 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=0f8d67f84b6e178c92d471011b2245fc"
 
-SRC_URI[sha256sum] = "b7971ec9805b0f80e1dcb1a3721d7bfad636d5f909de687430ce373979d67b61"
+SRC_URI[sha256sum] = "57f32b1f6838facb8c004c89467840367ad38e9e535f8252091345dba500b4f2"
 
 PYPI_PACKAGE = "Twisted"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 do_install:append() {
     # remove some useless files before packaging
@@ -78,10 +78,8 @@
 RDEPENDS:${PN}-words += "${PN}-core"
 RDEPENDS:${PN}-flow += "${PN}-core"
 RDEPENDS:${PN}-pair += "${PN}-core"
-RDEPENDS:${PN}-dbg = "${PN}"
 
-ALLOW_EMPTY:${PN} = "1"
-FILES:${PN} = ""
+FILES:${PN} = "${PYTHON_SITEPACKAGES_DIR}/${PYPI_PACKAGE}-${PV}.dist-info/*"
 
 FILES:${PN}-test = " \
     ${libdir}/${PYTHON_DIR}/site-packages/twisted/test \
@@ -244,22 +242,10 @@
 ${libdir}/${PYTHON_DIR}/site-packages/twisted/pair \
 "
 
-FILES:${PN}-dbg += " \
-${libdir}/${PYTHON_DIR}/site-packages/twisted/*/.debug \
-${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*/.debug \
-"
-
 FILES:${PN}-doc += " \
     ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/_pydoctortemplates/ \
 "
 
-RDEPENDS:${PN}-src = "${PN}"
-FILES:${PN}-src = " \
-    ${libdir}/${PYTHON_DIR}/site-packages/twisted/*.py \
-    ${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*.py \
-    ${libdir}/${PYTHON_DIR}/site-packages/twisted/*/*/*.py \
-"
-
 FILES:${PN}-core:append = " \
   ${libdir}/${PYTHON_DIR}/site-packages/twisted/__pycache__ \
   ${libdir}/${PYTHON_DIR}/site-packages/twisted/python/__pycache__/*pyc \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish/0002-setup.py-switch-to-setuptools.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish/0002-setup.py-switch-to-setuptools.patch
new file mode 100644
index 0000000..99e5c6c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish/0002-setup.py-switch-to-setuptools.patch
@@ -0,0 +1,26 @@
+From fe10781bd15ed7a5c384dbf121f78f129995aa8f Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Sun, 27 Feb 2022 11:02:36 -0800
+Subject: [PATCH] setup.py: switch to setuptools
+
+Upstream-Status: Submitted
+[https://github.com/keybase/python-twofish/pull/9]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index fcc9546..bfc3273 100644
+--- a/setup.py
++++ b/setup.py
+@@ -8,7 +8,7 @@ Copyright (c) 2013 Keybase
+ setup.py - build and package info
+ """
+ 
+-from distutils.core import setup, Extension
++from setuptools import setup, Extension
+ 
+ twofish_module = Extension('_twofish',
+                           sources=['twofish-0.3/twofish.c', 'twofish.c'],
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb
index 94fb710..f45772d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-twofish_0.3.0.bb
@@ -5,9 +5,11 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=33a63abf6d7567b1689d8ce69f00e43b"
 
-SRC_URI += "file://0001-Fix-missing-return-statements-in-module-stubs.patch"
+SRC_URI += " \
+    file://0001-Fix-missing-return-statements-in-module-stubs.patch \
+    file://0002-setup.py-switch-to-setuptools.patch \
+"
 
-SRC_URI[md5sum] = "d7d22f16dc4ffa0e3ae2200654033abe"
 SRC_URI[sha256sum] = "b09d8bb50d33b23ff34cafb1f9209f858f752935c6a5c901efb92a41acb830fa"
 
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-txaio_21.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-txaio_22.2.1.bb
similarity index 75%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-txaio_21.2.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-txaio_22.2.1.bb
index 8b55b36..e210269 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-txaio_21.2.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-txaio_22.2.1.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=97c0bda20ad1d845c6369c0e47a1cd98"
 
-SRC_URI[sha256sum] = "7d6f89745680233f1c4db9ddb748df5e88d2a7a37962be174c0fd04c8dba1dc8"
+SRC_URI[sha256sum] = "2e4582b70f04b2345908254684a984206c0d9b50e3074a24a4c55aba21d24d01"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-typed-ast_1.4.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-typed-ast_1.5.2.bb
similarity index 77%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-typed-ast_1.4.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-typed-ast_1.5.2.bb
index c482251..55cd78c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-typed-ast_1.4.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-typed-ast_1.5.2.bb
@@ -7,6 +7,6 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"
+SRC_URI[sha256sum] = "525a2d4088e70a9f75b08b3f87a51acc9cde640e19cc523c7e41aa355564ae27"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.13.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.13.3.bb
index 21ca439..e9fce61 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.13.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_2.13.3.bb
@@ -5,7 +5,7 @@
 
 SRC_URI[sha256sum] = "00edaa8da3a133674796cf5ea87d9f4b4c367d77476e185e80251cc13dfbb8c4"
 
-inherit pypi setuptools3 ptest
+inherit pypi python_setuptools_build_meta ptest
 
 SRC_URI += " \
         file://run-ptest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-typing-extensions_3.10.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-typing-extensions_3.10.0.0.bb
deleted file mode 100644
index a8e6324..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-typing-extensions_3.10.0.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-HOMEPAGE = "https://github.com/python/typing"
-LICENSE = "PSF"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=64fc2b30b67d0a8423c250e0386ed72f"
-
-# The name on PyPi is slightly different.
-PYPI_PACKAGE = "typing_extensions"
-
-SRC_URI[sha256sum] = "50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_4.1.bb
index 29a69f8..1c91092 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_4.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tzlocal_4.1.bb
@@ -5,7 +5,7 @@
 
 SRC_URI[sha256sum] = "0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 RDEPENDS:${PN} += "\
 	${PYTHON_PN}-pytz-deprecation-shim \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.8.bb
deleted file mode 100644
index c2a51b9..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-urllib3_1.26.8.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Python HTTP library with thread-safe connection pooling, file post support, sanity friendly, and more"
-HOMEPAGE = "https://github.com/shazow/urllib3"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c2823cb995439c984fd62a973d79815c"
-
-SRC_URI[sha256sum] = "0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-certifi \
-    ${PYTHON_PN}-cryptography \
-    ${PYTHON_PN}-email \
-    ${PYTHON_PN}-idna \
-    ${PYTHON_PN}-netclient \
-    ${PYTHON_PN}-pyopenssl \
-    ${PYTHON_PN}-threading \
-"
-
-CVE_PRODUCT = "urllib3"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-versiontools_1.9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-versiontools_1.9.1.bb
index cf0fa30..ea40d5f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-versiontools_1.9.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-versiontools_1.9.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Smart replacement for plain tuple used in __version__"
 SECTION = "devel/python"
 HOMEPAGE = "https://launchpad.net/versiontools"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://setup.py;beginline=3;endline=20;md5=02193721a38fd8a05a4ddeb7df8e294d"
 
 SRC_URI[md5sum] = "602b7db8eea30dd29a1d451997adf251"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_2.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_2.1.1.bb
similarity index 64%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_2.0.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_2.1.1.bb
index 490dcee..b7f8099 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_2.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-waitress_2.1.1.bb
@@ -6,6 +6,10 @@
 LICENSE = "ZPL-2.1"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=78ccb3640dc841e1baecb3e27a6966b2"
 
-SRC_URI[sha256sum] = "69e1f242c7f80273490d3403c3976f3ac3b26e289856936d1f620ed48f321897"
+RDEPENDS:${PN} += " \
+        python3-logging \
+"
 
-inherit setuptools3 pypi
+SRC_URI[sha256sum] = "e2e60576cf14a1539da79f7b7ee1e79a71e64f366a0b47db54a15e971f57bb16"
+
+inherit python_setuptools_build_meta pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.7.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.6.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.7.bb
index 2bb1100..7e91295 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-watchdog_2.1.7.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-SRC_URI[sha256sum] = "a36e75df6c767cbf46f61a91c70b3ba71811dfa0aca4a324d9407a06a8b7a2e7"
+SRC_URI[sha256sum] = "3fd47815353be9c44eebc94cc28fe26b2b0c5bd889dafc4a5a7cbdf924143480"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.2.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.3.1.bb
similarity index 70%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.2.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.3.1.bb
index f85657a..166dd03 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.2.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-websocket-client_1.3.1.bb
@@ -5,9 +5,9 @@
 are the synchronous functions."
 HOMEPAGE = "https://github.com/websocket-client/websocket-client"
 LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e401d789b93b47e65e852f16f2907aab"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b969e9612325987c823fc0737063ebc8"
 
-SRC_URI[sha256sum] = "1315816c0acc508997eb3ae03b9d3ff619c9d12d544c9a9b553704b1cc4f6af5"
+SRC_URI[sha256sum] = "6278a75065395418283f887de7c3beafb3aa68dada5cacbe4b214e8d26da499b"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_10.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_10.2.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_10.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_10.2.bb
index 6dd29a9..c8179df 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_10.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-websockets_10.2.bb
@@ -6,7 +6,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "181d2b25de5a437b36aefedaf006ecb6fa3aa1328ec0236cdde15f32f9d3ff6d"
+SRC_URI[sha256sum] = "8351c3c86b08156337b0e4ece0e3c5ec3e01fcd14e8950996832a23c99416098"
 
 BBCLASSEXTEND = "native nativesdk"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.13.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.14.0.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.13.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.14.0.bb
index 05ee4c6..9dcab81 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.13.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-wrapt_1.14.0.bb
@@ -4,7 +4,7 @@
 SECTION = "devel/python"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=fdfc019b57affbe1d7a32e3d34e83db4"
 
-SRC_URI[sha256sum] = "1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185"
+SRC_URI[sha256sum] = "8323a43bd9c91f62bb7d4be74cc9ff10090e7ef820e27bfe8815c57e68261311"
 
 inherit pypi setuptools3 
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_2.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_2.0.1.bb
index bd6853e..da0dc26 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_2.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_2.0.1.bb
@@ -17,6 +17,8 @@
 S = "${WORKDIR}/git"
 
 inherit ptest setuptools3
+PIP_INSTALL_PACKAGE = "xlrd"
+PIP_INSTALL_DIST_PATH = "${S}/dist"
 
 RDEPENDS:${PN} += "${PYTHON_PN}-compression ${PYTHON_PN}-io ${PYTHON_PN}-pprint ${PYTHON_PN}-shell"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_3.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_3.0.3.bb
similarity index 67%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_3.0.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_3.0.3.bb
index 04f2553..0f8dd35 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_3.0.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlsxwriter_3.0.3.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://xlsxwriter.readthedocs.io"
 SECTION = "devel/python"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e5c795ec8cf90514a6d844b1d3cc3224"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2b9a26d1a52d2c66df334bbdad23896a"
 
 inherit pypi setuptools3
 
@@ -16,6 +16,6 @@
 	python3-io \
 "
 
-SRC_URI[sha256sum] = "53005f03e8eb58f061ebf41d5767c7495ee0772c2396fe26b7e0ca22fa9c2570"
+SRC_URI[sha256sum] = "e89f4a1d2fa2c9ea15cde77de95cd3fd8b0345d0efb3964623f395c8c4988b7f"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlrunner_1.7.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlrunner_1.7.7.bb
index 7e7b523..e81e4da 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlrunner_1.7.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlrunner_1.7.7.bb
@@ -1,6 +1,6 @@
 SUMMARY = "unittest-based test runner with Ant/JUnit like XML reporting"
 HOMEPAGE = "https://github.com/pycontribs/xmlrunner"
-LICENSE = "LGPL-3.0"
+LICENSE = "LGPL-3.0-only"
 LIC_FILES_CHKSUM = "file://PKG-INFO;md5=fa964f202b6ae067ed5828fe43c77c1a"
 
 SRC_URI[md5sum] = "7b0b152ed2d278516aedbc0cac22dfb3"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmodem_0.4.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmodem_0.4.6.bb
index 9d722b8..6df392e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmodem_0.4.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmodem_0.4.6.bb
@@ -7,8 +7,13 @@
 
 inherit pypi setuptools3
 
+do_install:append() {
+    install -d ${D}${docdir}/${PN}
+    mv ${D}/usr/doc/* ${D}${docdir}/${PN}/
+    rmdir ${D}/usr/doc
+}
+
 RDEPENDS:${PN} += " \
     ${PYTHON_PN}-logging \
 "
-
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb
index b45e96d..ccd1cd7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xstatic-font-awesome_4.7.0.0.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "Font Awesome icons packaged for setuptools (easy_install) / pip."
 HOMEPAGE = "https://pypi.python.org/pypi/XStatic-Font-Awesome"
 SECTION = "devel/python"
-LICENSE = "Apache-2"
+LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://PKG-INFO;md5=313d021898694cd2b0ea6508bdfe51a2"
 
 PYPI_PACKAGE = "XStatic-Font-Awesome"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_2.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_3.0.0.bb
similarity index 83%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_2.0.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_3.0.0.bb
index 01343ab..ca8ed3b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_2.0.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_3.0.0.bb
@@ -3,7 +3,7 @@
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3a9dab7f159514231249aa3e108ab26b"
 
-SRC_URI[sha256sum] = "b7bead8cf6210eadf9cecf356e17af794f57c0939a3d420a00d87ea652f87b49"
+SRC_URI[sha256sum] = "30b2d97aaf11fb122023f6b44ebb97c6955e9e00d7461a96415ca030b5ceb9c7"
 
 SRC_URI += " \
     file://run-ptest \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_1.1.0.bb
index a5510d5..0deb1b7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_1.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-yamlloader_1.1.0.bb
@@ -5,7 +5,7 @@
 
 SRC_URI[sha256sum] = "8a297c7a197683ba02e5e2b882ffd6c6180d01bdefb534b69cd3962df020bfe6"
 
-inherit pypi setuptools3
+inherit pypi python_setuptools_build_meta
 
 RDEPENDS:${PN}:class-target += "\
     ${PYTHON_PN}-pyyaml \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.38.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.38.1.bb
index c49782e..bc06618 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.38.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-zeroconf_0.38.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Pure Python Multicast DNS Service Discovery Library (Bonjour/Avahi compatible)"
 HOMEPAGE = "https://github.com/jstasiak/python-zeroconf"
-LICENSE = "LGPL-2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=3bb705b228ea4a14ea2728215b780d80"
 
 SRC_URI[sha256sum] = "10c501b25d8881b656e56c34674d98fe6bc752240a572e74f918bc849c93ba9c"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.4.0.bb b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.4.3.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.4.0.bb
rename to meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.4.3.bb
index 85f80b8..bd57604 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.4.0.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.4.3.bb
@@ -1,15 +1,11 @@
 DESCRIPTION = "A python module for system storage configuration"
 HOMEPAGE = "http://fedoraproject.org/wiki/blivet"
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 SECTION = "devel/python"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-S = "${WORKDIR}/git"
-B = "${S}"
-
-SRCREV = "f7d9027e4fdad11187980e73726cd75a2dc962c2"
-SRC_URI = "git://github.com/storaged-project/blivet.git;branch=3.4-release;protocol=https \
+SRC_URI += "\
            file://0002-run_program-support-timeout.patch \
            file://0003-support-infinit-timeout.patch \
            file://0004-fix-new.roots-object-is-not-iterable.patch \
@@ -21,14 +17,12 @@
            file://0010-invoking-mkfs-with-infinite-timeout.patch \
            file://0011-invoking-dd-with-infinite-timeout.patch \
 "
+SRC_URI[sha256sum] = "1b05b77f3ee35d82c7a577a168c9ba0204d3e9a87eb1975e5f9af47700eeff48"
 
-UPSTREAM_CHECK_GITTAGREGEX = "blivet-(?P<pver>\d+(\.\d+)+)$"
+inherit pypi features_check systemd setuptools3_legacy
 
-inherit features_check
 REQUIRED_DISTRO_FEATURES = "systemd"
 
-inherit setuptools3 python3native
-
 RDEPENDS:${PN} += "python3-pykickstart python3-pyudev \
                   parted python3-pyparted multipath-tools \
                   lsof cryptsetup libblockdev \
@@ -39,7 +33,5 @@
     ${datadir}/dbus-1/system-services \
 "
 
-inherit systemd
-
 SYSTEMD_AUTO_ENABLE = "disable"
 SYSTEMD_SERVICE:${PN} = "blivet.service"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui/0001-Use-setuptools-instead-of-distutils-in-setup.py.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui/0001-Use-setuptools-instead-of-distutils-in-setup.py.patch
new file mode 100644
index 0000000..c88912b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui/0001-Use-setuptools-instead-of-distutils-in-setup.py.patch
@@ -0,0 +1,30 @@
+From 54014061be2fed20d6c35aba9719ea70a9fea9ea Mon Sep 17 00:00:00 2001
+From: Vojtech Trefny <vtrefny@redhat.com>
+Date: Wed, 1 Sep 2021 08:59:19 +0200
+Subject: [PATCH] Use setuptools instead of distutils in setup.py
+
+The distutils module is deprecated and will be removed in Python
+3.12.
+
+Upstream-Status: Backport [https://github.com/kraj/blivet-gui/commit/54014061be2fed20d6c35aba9719ea70a9fea9ea]
+---
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index aa8ef57..77849a1 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,7 +1,7 @@
+ from __future__ import print_function
+ 
+-from distutils.core import setup
+-from distutils.command.sdist import sdist
++from setuptools import setup
++from setuptools.command.sdist import sdist
+ import glob
+ import sys
+ 
+-- 
+2.35.1
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.2.1.bb b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.3.0.bb
similarity index 67%
rename from meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.2.1.bb
rename to meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.3.0.bb
index 632b313..c26ae1f 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.2.1.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.3.0.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "GUI tool for storage configuration using blivet library"
 HOMEPAGE = "https://github.com/rhinstaller/blivet-gui"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 SECTION = "devel/python"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
@@ -8,13 +8,17 @@
 S = "${WORKDIR}/git"
 B = "${S}"
 
-SRCREV = "adb6bd69fb3cfa709265db66ddcee04c0b5e070f"
-SRC_URI = "git://github.com/storaged-project/blivet-gui.git;branch=master;protocol=https"
+SRCREV = "42512ee48494cee71febf04078d9774f0146a085"
+SRC_URI = "git://github.com/storaged-project/blivet-gui.git;branch=master;protocol=https \
+           file://0001-Use-setuptools-instead-of-distutils-in-setup.py.patch \
+          "
 
 inherit features_check
 REQUIRED_DISTRO_FEATURES = "x11 systemd"
 
-inherit setuptools3 python3native
+inherit setuptools3_legacy python3native
+
+PIP_INSTALL_PACKAGE = "blivet_gui"
 
 RDEPENDS:${PN} = "python3-pygobject python3 \
                   python3-blivet gtk+3  \
diff --git a/meta-openembedded/meta-python/recipes-extended/python-cson/python3-cson_git.bb b/meta-openembedded/meta-python/recipes-extended/python-cson/python3-cson_git.bb
index 5d696b3..c4fcc61 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-cson/python3-cson_git.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python-cson/python3-cson_git.bb
@@ -17,5 +17,7 @@
 
 inherit setuptools3
 
+PIP_INSTALL_PACKAGE = "python_cson"
+
 BBCLASSEXTEND = "native"
 
diff --git a/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh/0001-setup.py-switch-from-distutils-to-setuptools.patch b/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh/0001-setup.py-switch-from-distutils-to-setuptools.patch
new file mode 100644
index 0000000..2eb6be5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh/0001-setup.py-switch-from-distutils-to-setuptools.patch
@@ -0,0 +1,31 @@
+From 034ac41561409ffc7836683331b6b94a641436e4 Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Mon, 28 Feb 2022 09:41:02 -0800
+Subject: [PATCH] setup.py: switch from distutils to setuptools
+
+In Python 3.10 'distutils' is deprecated with removal slated for Python
+3.12. Switch from 'distutils.core' to 'setuptools'.
+
+This also allows for a 'wheel' binary archive format to be built with
+'setup.py bdist_wheel'.
+
+Upstream-Status: Backport [cf9eafdd165347f86bb4a2534c41fd805db52322]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index 9c12180..3ba5195 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,6 +1,6 @@
+ #!/usr/bin/python3
+ 
+-from distutils.core import setup
++from setuptools import setup
+ 
+ setup(name='python-meh', version='0.50.1',
+       description='Python module for handling exceptions',
diff --git a/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.50.1.bb b/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.50.1.bb
index bf0df02..1d9af43 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.50.1.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python-meh/python3-meh_0.50.1.bb
@@ -1,16 +1,17 @@
 SUMMARY = "A python library for handling exceptions"
 DESCRIPTION = "The python-meh package is a python library for handling, saving, and reporting \
 exceptions."
-HOMEPAGE = "http://git.fedorahosted.org/git/?p=python-meh.git"
-LICENSE = "GPLv2+"
+HOMEPAGE = "https://github.com/rhinstaller/python-meh"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-inherit setuptools3
+inherit setuptools3_legacy
 
 S = "${WORKDIR}/git"
 
-SRC_URI = "git://github.com/rhinstaller/python-meh.git;protocol=https;branch=rhel9-branch"
+SRC_URI = "git://github.com/rhinstaller/python-meh.git;protocol=https;branch=rhel9-branch \
+           file://0001-setup.py-switch-from-distutils-to-setuptools.patch \
+          "
 SRCREV = "c321ce22950aff76611a3c6beffa02b5ea3adbed"
 
-FILES:${PN} += "${datadir}/*"
-
+FILES:${PN} += "${datadir}/python-meh"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.34.bb b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.34.bb
index 65fc88e..6bf9ada 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.34.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.34.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "A python library for manipulating kickstart files"
 HOMEPAGE = "http://fedoraproject.org/wiki/pykickstart"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
@@ -23,3 +23,5 @@
 UPSTREAM_CHECK_GITTAGREGEX = "r(?P<pver>\d+(\.\d+)+(-\d+)*)"
 
 inherit setuptools3
+PIP_INSTALL_PACKAGE = "pykickstart"
+PIP_INSTALL_DIST_PATH = "${S}/dist"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pyparted/python3-pyparted_3.11.7.bb b/meta-openembedded/meta-python/recipes-extended/python-pyparted/python3-pyparted_3.11.7.bb
index 66cd27d..2cdf823 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-pyparted/python3-pyparted_3.11.7.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python-pyparted/python3-pyparted_3.11.7.bb
@@ -3,7 +3,7 @@
 filesystem manipulation."
 SUMMARY = "Python bindings for libparted"
 HOMEPAGE = "https://github.com/rhinstaller/pyparted"
-LICENSE = "GPL-2.0+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "\
     file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
     file://src/_pedmodule.c;beginline=10;endline=22;md5=9e53304db812b80d0939e11bb69dcab2 \
diff --git a/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.3.2.bb b/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.3.2.bb
index bf9304c..2d23017 100644
--- a/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.3.2.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.3.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Cross-platform locking library"
 DESCRIPTION = "Portalocker is a library to provide an easy API to file locking"
-LICENSE = "PSF"
+LICENSE = "PSF-2.0"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f9273424c73af966635d66eb53487e14"
 
diff --git a/meta-openembedded/meta-python/recipes-extended/python3-pydot/python3-pydot_1.4.2.bb b/meta-openembedded/meta-python/recipes-extended/python3-pydot/python3-pydot_1.4.2.bb
new file mode 100644
index 0000000..fde1029
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python3-pydot/python3-pydot_1.4.2.bb
@@ -0,0 +1,11 @@
+SUMMARY = "pydot is is an interface to Graphviz."
+HOMEPAGE = "https://github.com/pydot/pydot"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3f6fa041dfcc7ff7747cfceaa34a3180"
+
+SRC_URI[sha256sum] = "248081a39bcb56784deb018977e428605c1c758f10897a339fce1dd728ff007d"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} = "graphviz python3-pyparsing"
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.3.0.bb b/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.3.0.bb
index 2675842..676c654 100644
--- a/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.3.0.bb
@@ -13,7 +13,7 @@
 It also provides a Python provider interface, and is the fastest and easiest \
 way to write providers on the planet."
 HOMEPAGE = "http://pywbem.github.io"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=fbc093901857fcd118f065f900982c24"
 
 SRC_URI[sha256sum] = "5df0af28f81891a3914a12f3a30b11b1981f7b30e09c5a42c011797e7fce9b6a"
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_0.9.1.bb b/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.0.0.bb
similarity index 91%
rename from meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_0.9.1.bb
rename to meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.0.0.bb
index c51f860..3a9f0ad 100644
--- a/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_0.9.1.bb
+++ b/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.0.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa"
 
-SRC_URI[sha256sum] = "cbe2fe67620e73a81807940a75aeed8570205e2213d6f8de4db15fbc06fe8804"
+SRC_URI[sha256sum] = "0af7e067e0c0ba32cc19c2c2dc67875c591b806c4b49480ebe46e37bfb399684"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-webserver/conf/layer.conf b/meta-openembedded/meta-webserver/conf/layer.conf
index 312c39b..5ae5e79 100644
--- a/meta-openembedded/meta-webserver/conf/layer.conf
+++ b/meta-openembedded/meta-webserver/conf/layer.conf
@@ -9,7 +9,7 @@
 
 BBFILE_COLLECTIONS += "webserver"
 BBFILE_PATTERN_webserver := "^${LAYERDIR}/"
-BBFILE_PRIORITY_webserver = "6"
+BBFILE_PRIORITY_webserver = "5"
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0001-configure-use-pkg-config-for-PCRE-detection.patch b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0001-configure-use-pkg-config-for-PCRE-detection.patch
index 6c02864..50775be 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0001-configure-use-pkg-config-for-PCRE-detection.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0001-configure-use-pkg-config-for-PCRE-detection.patch
@@ -1,44 +1,43 @@
-From d2cedfa3394365689a3f7c8cfe8e0dd56b29bed9 Mon Sep 17 00:00:00 2001
+From ba9015386cbc044e111d7c266f13e2be045e4bf1 Mon Sep 17 00:00:00 2001
 From: Koen Kooi <koen.kooi@linaro.org>
 Date: Tue, 17 Jun 2014 09:10:57 +0200
 Subject: [PATCH] configure: use pkg-config for PCRE detection
 
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [embedded specific]
 
 Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
 ---
- configure.in | 27 +++++----------------------
- 1 file changed, 5 insertions(+), 22 deletions(-)
+ configure.in | 26 +++++---------------------
+ 1 file changed, 5 insertions(+), 21 deletions(-)
 
 diff --git a/configure.in b/configure.in
-index 9feaceb..dc6ea15 100644
+index 38c1d0a..c799aec 100644
 --- a/configure.in
 +++ b/configure.in
-@@ -215,28 +215,11 @@ fi
- AC_ARG_WITH(pcre,
- APACHE_HELP_STRING(--with-pcre=PATH,Use external PCRE library))
+@@ -221,27 +221,11 @@ else if which $with_pcre 2>/dev/null; then :; else
+ fi
+ fi
  
--AC_PATH_PROG(PCRE_CONFIG, pcre-config, false)
--if test -d "$with_pcre" && test -x "$with_pcre/bin/pcre-config"; then
--   PCRE_CONFIG=$with_pcre/bin/pcre-config
--elif test -x "$with_pcre"; then
--   PCRE_CONFIG=$with_pcre
--fi
+-AC_CHECK_TARGET_TOOLS(PCRE_CONFIG, [pcre2-config pcre-config],
+-                      [`which $with_pcre 2>/dev/null`], $with_pcre)
 -
--if test "$PCRE_CONFIG" != "false"; then
+-if test "x$PCRE_CONFIG" != "x"; then
 -  if $PCRE_CONFIG --version >/dev/null 2>&1; then :; else
--    AC_MSG_ERROR([Did not find pcre-config script at $PCRE_CONFIG])
+-    AC_MSG_ERROR([Did not find working script at $PCRE_CONFIG])
 -  fi
 -  case `$PCRE_CONFIG --version` in
+-  [1[0-9].*])
+-    AC_DEFINE(HAVE_PCRE2, 1, [Detected PCRE2]) 
+-    ;;
 -  [[1-5].*])
 -    AC_MSG_ERROR([Need at least pcre version 6.0])
 -    ;;
 -  esac
 -  AC_MSG_NOTICE([Using external PCRE library from $PCRE_CONFIG])
 -  APR_ADDTO(PCRE_INCLUDES, [`$PCRE_CONFIG --cflags`])
--  APR_ADDTO(PCRE_LIBS, [`$PCRE_CONFIG --libs`])
+-  APR_ADDTO(PCRE_LIBS, [`$PCRE_CONFIG --libs8 2>/dev/null || $PCRE_CONFIG --libs`])
 -else
--  AC_MSG_ERROR([pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/])
+-  AC_MSG_ERROR([pcre(2)-config for libpcre not found. PCRE is required and available from http://pcre.org/])
 -fi
 +PKG_CHECK_MODULES([PCRE], [libpcre], [
 +  AC_DEFINE([HAVE_PCRE], [1], [Define if you have PCRE library])
@@ -49,5 +48,5 @@
  
  AC_MSG_NOTICE([])
 -- 
-2.7.4
+2.25.1
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0002-apache2-bump-up-the-core-size-limit-if-CoreDumpDirec.patch b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0002-apache2-bump-up-the-core-size-limit-if-CoreDumpDirec.patch
index 85fe6ae..bbe8b32 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0002-apache2-bump-up-the-core-size-limit-if-CoreDumpDirec.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0002-apache2-bump-up-the-core-size-limit-if-CoreDumpDirec.patch
@@ -1,8 +1,8 @@
-From 7df207ad4d0dcda2ad36e5642296e0dec7e13647 Mon Sep 17 00:00:00 2001
+From 5074ab3425e5f1e01fd9cfa2d9b7300ea1b3f38f Mon Sep 17 00:00:00 2001
 From: Paul Eggleton <paul.eggleton@linux.intel.com>
 Date: Tue, 17 Jul 2012 11:27:39 +0100
-Subject: [PATCH] apache2: bump up the core size limit if CoreDumpDirectory
- is configured
+Subject: [PATCH] apache2: bump up the core size limit if CoreDumpDirectory is
+ configured
 
 Bump up the core size limit if CoreDumpDirectory is
 configured.
@@ -11,16 +11,15 @@
 
 Note: upstreaming was discussed but there are competing desires;
 	there are portability oddities here too.
-
 ---
  server/core.c | 19 +++++++++++++++++++
  1 file changed, 19 insertions(+)
 
 diff --git a/server/core.c b/server/core.c
-index eacb54f..7aa841f 100644
+index 090e397..3020090 100644
 --- a/server/core.c
 +++ b/server/core.c
-@@ -4965,6 +4965,25 @@ static int core_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pte
+@@ -5107,6 +5107,25 @@ static int core_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pte
      }
      apr_pool_cleanup_register(pconf, NULL, ap_mpm_end_gen_helper,
                                apr_pool_cleanup_null);
@@ -47,5 +46,5 @@
  }
  
 -- 
-2.7.4
+2.25.1
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0003-apache2-do-not-export-apr-apr-util-symbols-when-usin.patch b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0003-apache2-do-not-export-apr-apr-util-symbols-when-usin.patch
index 081a02b..adb728b 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0003-apache2-do-not-export-apr-apr-util-symbols-when-usin.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0003-apache2-do-not-export-apr-apr-util-symbols-when-usin.patch
@@ -1,8 +1,8 @@
-From ddd560024a6d526187fd126f306b59533ca3f7e2 Mon Sep 17 00:00:00 2001
+From 9c03ed909b8da0e1a288f53fda535a3f15bcf791 Mon Sep 17 00:00:00 2001
 From: Paul Eggleton <paul.eggleton@linux.intel.com>
 Date: Tue, 17 Jul 2012 11:27:39 +0100
-Subject: [PATCH] apache2: do not export apr/apr-util symbols when using
- shared libapr
+Subject: [PATCH] apache2: do not export apr/apr-util symbols when using shared
+ libapr
 
 There is no need to "suck in" the apr/apr-util symbols when using
 a shared libapr{,util}, it just bloats the symbol table; so don't.
@@ -10,13 +10,12 @@
 Upstream-Status: Pending
 
 Note: EXPORT_DIRS change is conditional on using shared apr
-
 ---
  server/Makefile.in | 3 ---
  1 file changed, 3 deletions(-)
 
 diff --git a/server/Makefile.in b/server/Makefile.in
-index 1fa3344..f635d76 100644
+index 8111877..8c0c396 100644
 --- a/server/Makefile.in
 +++ b/server/Makefile.in
 @@ -60,9 +60,6 @@ export_files:
@@ -30,5 +29,5 @@
  
  exports.c: export_files
 -- 
-2.7.4
+2.25.1
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0004-apache2-log-the-SELinux-context-at-startup.patch b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0004-apache2-log-the-SELinux-context-at-startup.patch
index 78a04d9..5d82919 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0004-apache2-log-the-SELinux-context-at-startup.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0004-apache2-log-the-SELinux-context-at-startup.patch
@@ -1,4 +1,4 @@
-From dfa834ebd449df299f54e98f0fb3a7bb4008fb03 Mon Sep 17 00:00:00 2001
+From 37699e9be04d83c5923644e298f400e077f76e85 Mon Sep 17 00:00:00 2001
 From: Paul Eggleton <paul.eggleton@linux.intel.com>
 Date: Tue, 17 Jul 2012 11:27:39 +0100
 Subject: [PATCH] Log the SELinux context at startup.
@@ -8,17 +8,16 @@
 Upstream-Status: Inappropriate [other]
 
 Note: unlikely to be any interest in this upstream
-
 ---
  configure.in  |  5 +++++
  server/core.c | 26 ++++++++++++++++++++++++++
  2 files changed, 31 insertions(+)
 
 diff --git a/configure.in b/configure.in
-index dc6ea15..caa6f54 100644
+index c799aec..76811e7 100644
 --- a/configure.in
 +++ b/configure.in
-@@ -466,6 +466,11 @@ getloadavg
+@@ -491,6 +491,11 @@ getloadavg
  dnl confirm that a void pointer is large enough to store a long integer
  APACHE_CHECK_VOID_PTR_LEN
  
@@ -31,10 +30,10 @@
  [AC_TRY_RUN(#define _GNU_SOURCE
  #include <unistd.h>
 diff --git a/server/core.c b/server/core.c
-index 7aa841f..79f34db 100644
+index 3020090..8fef5fd 100644
 --- a/server/core.c
 +++ b/server/core.c
-@@ -59,6 +59,10 @@
+@@ -65,6 +65,10 @@
  #include <unistd.h>
  #endif
  
@@ -45,7 +44,7 @@
  /* LimitRequestBody handling */
  #define AP_LIMIT_REQ_BODY_UNSET         ((apr_off_t) -1)
  #define AP_DEFAULT_LIMIT_REQ_BODY       ((apr_off_t) 0)
-@@ -4984,6 +4988,28 @@ static int core_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pte
+@@ -5126,6 +5130,28 @@ static int core_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pte
      }
  #endif
  
@@ -75,5 +74,5 @@
  }
  
 -- 
-2.7.4
+2.25.1
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0005-replace-lynx-to-curl-in-apachectl-script.patch b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0005-replace-lynx-to-curl-in-apachectl-script.patch
index 47320a9..7b4a1b9 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0005-replace-lynx-to-curl-in-apachectl-script.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0005-replace-lynx-to-curl-in-apachectl-script.patch
@@ -1,4 +1,4 @@
-From 7db1b650bb4b01a5194a34cd7573f915656a595b Mon Sep 17 00:00:00 2001
+From e59aab44a28c654e518080693d573ca472ca5a08 Mon Sep 17 00:00:00 2001
 From: Yulong Pei <Yulong.pei@windriver.com>
 Date: Thu, 1 Sep 2011 01:03:14 +0800
 Subject: [PATCH] replace lynx to curl in apachectl script
@@ -48,5 +48,5 @@
  *)
      $HTTPD "$@"
 -- 
-2.7.4
+2.25.1
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0006-apache2-fix-the-race-issue-of-parallel-installation.patch b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0006-apache2-fix-the-race-issue-of-parallel-installation.patch
index 227d040..dbaf01d 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0006-apache2-fix-the-race-issue-of-parallel-installation.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0006-apache2-fix-the-race-issue-of-parallel-installation.patch
@@ -1,4 +1,4 @@
-From 4f4d7d6b88b6e440263ebeb22dfb40c52bb30fd8 Mon Sep 17 00:00:00 2001
+From fb09f1fe4525058b16b3d4edb2e3ae693154026e Mon Sep 17 00:00:00 2001
 From: Zhenhua Luo <zhenhua.luo@freescale.com>
 Date: Fri, 25 Jan 2013 18:10:50 +0800
 Subject: [PATCH] apache2: fix the race issue of parallel installation
@@ -31,5 +31,5 @@
          pathcomp="$pathcomp/"
      done
 -- 
-2.7.4
+2.25.1
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0007-apache2-allow-to-disable-selinux-support.patch b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0007-apache2-allow-to-disable-selinux-support.patch
index fed6b50..3ff6894 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0007-apache2-allow-to-disable-selinux-support.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0007-apache2-allow-to-disable-selinux-support.patch
@@ -1,4 +1,4 @@
-From 964ef2c1af74984602f46e7db938d3b95b148385 Mon Sep 17 00:00:00 2001
+From 0686564f64130f230870db8b4846973e3edbd646 Mon Sep 17 00:00:00 2001
 From: Wenzong Fan <wenzong.fan@windriver.com>
 Date: Mon, 1 Dec 2014 02:08:27 -0500
 Subject: [PATCH] apache2: allow to disable selinux support
@@ -11,10 +11,10 @@
  1 file changed, 10 insertions(+), 4 deletions(-)
 
 diff --git a/configure.in b/configure.in
-index caa6f54..eab2090 100644
+index 76811e7..4df3ff3 100644
 --- a/configure.in
 +++ b/configure.in
-@@ -466,10 +466,16 @@ getloadavg
+@@ -491,10 +491,16 @@ getloadavg
  dnl confirm that a void pointer is large enough to store a long integer
  APACHE_CHECK_VOID_PTR_LEN
  
@@ -36,5 +36,5 @@
  AC_CACHE_CHECK([for gettid()], ac_cv_gettid,
  [AC_TRY_RUN(#define _GNU_SOURCE
 -- 
-2.7.4
+2.25.1
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/apache-configure_perlbin.patch b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0008-Fix-perl-install-directory-to-usr-bin.patch
similarity index 85%
rename from meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/apache-configure_perlbin.patch
rename to meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0008-Fix-perl-install-directory-to-usr-bin.patch
index 61669e3..dc5b5c8 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/apache-configure_perlbin.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0008-Fix-perl-install-directory-to-usr-bin.patch
@@ -1,4 +1,4 @@
-From 5412077c398dec74321388fe6e593a44c4c80de6 Mon Sep 17 00:00:00 2001
+From 443d15b91d4e4979d92405610303797663f31102 Mon Sep 17 00:00:00 2001
 From: echo <fei.geng@windriver.com>
 Date: Tue, 28 Apr 2009 03:11:06 +0000
 Subject: [PATCH] Fix perl install directory to /usr/bin
@@ -11,16 +11,15 @@
 bad interpreter: No such file or directory
 
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
-
 ---
  configure.in | 5 +----
  1 file changed, 1 insertion(+), 4 deletions(-)
 
 diff --git a/configure.in b/configure.in
-index d828512..be7bd25 100644
+index 4df3ff3..4eeb609 100644
 --- a/configure.in
 +++ b/configure.in
-@@ -855,10 +855,7 @@ AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
+@@ -903,10 +903,7 @@ AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
  AC_DEFINE_UNQUOTED(AP_TYPES_CONFIG_FILE, "${rel_sysconfdir}/mime.types",
  	[Location of the MIME types config file, relative to the Apache root directory])
  
@@ -32,3 +31,6 @@
  AC_SUBST(perlbin)
  
  dnl If we are running on BSD/OS, we need to use the BSD .include syntax.
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0001-support-apxs.in-force-destdir-to-be-empty-string.patch b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0009-support-apxs.in-force-destdir-to-be-empty-string.patch
similarity index 90%
rename from meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0001-support-apxs.in-force-destdir-to-be-empty-string.patch
rename to meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0009-support-apxs.in-force-destdir-to-be-empty-string.patch
index bdedd14..d1f9bb0 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0001-support-apxs.in-force-destdir-to-be-empty-string.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0009-support-apxs.in-force-destdir-to-be-empty-string.patch
@@ -1,10 +1,10 @@
-From 705c0a7e9d9c1e64ee09fc0b54f6b5a4e27de1ca Mon Sep 17 00:00:00 2001
+From 43a4ad04e0d8771267a73f98b5918bcd10b167ec Mon Sep 17 00:00:00 2001
 From: Trevor Gamblin <trevor.gamblin@windriver.com>
 Date: Fri, 17 Apr 2020 06:31:35 -0700
 Subject: [PATCH] support/apxs.in: force destdir to be empty string
 
-If destdir is assigned to anything other than the empty string, the 
-search path for apache2 config files is appended to itself, and 
+If destdir is assigned to anything other than the empty string, the
+search path for apache2 config files is appended to itself, and
 related packages like apache-websocket will be unable to locate them:
 
 | cannot open
@@ -24,7 +24,7 @@
  1 file changed, 6 insertions(+), 4 deletions(-)
 
 diff --git a/support/apxs.in b/support/apxs.in
-index 65e1288527..9d96e33728 100644
+index b2705fa..781f2ab 100644
 --- a/support/apxs.in
 +++ b/support/apxs.in
 @@ -28,10 +28,12 @@ package apxs;
@@ -45,5 +45,5 @@
  my %config_vars = ();
  
 -- 
-2.17.1
+2.25.1
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0008-apache2-do-not-use-relative-path-for-gen_test_char.patch b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0010-apache2-do-not-use-relative-path-for-gen_test_char.patch
similarity index 86%
rename from meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0008-apache2-do-not-use-relative-path-for-gen_test_char.patch
rename to meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0010-apache2-do-not-use-relative-path-for-gen_test_char.patch
index 82e9e8c..ced8469 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0008-apache2-do-not-use-relative-path-for-gen_test_char.patch
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2/0010-apache2-do-not-use-relative-path-for-gen_test_char.patch
@@ -1,16 +1,15 @@
-From b62c4cd2295c98b2ebe12641e5f01590bd96ae94 Mon Sep 17 00:00:00 2001
+From d9993cbc33565c0acd29b0127d651dafa2a16975 Mon Sep 17 00:00:00 2001
 From: Paul Eggleton <paul.eggleton@linux.intel.com>
 Date: Tue, 17 Jul 2012 11:27:39 +0100
 Subject: [PATCH] apache2: do not use relative path for gen_test_char
 
 Upstream-Status: Inappropriate [embedded specific]
-
 ---
  server/Makefile.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/server/Makefile.in b/server/Makefile.in
-index f635d76..0d48924 100644
+index 8c0c396..3544f55 100644
 --- a/server/Makefile.in
 +++ b/server/Makefile.in
 @@ -29,7 +29,7 @@ gen_test_char: $(gen_test_char_OBJECTS)
@@ -23,5 +22,5 @@
  util.lo: test_char.h
  
 -- 
-2.7.4
+2.25.1
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.52.bb b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.53.bb
similarity index 96%
rename from meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.52.bb
rename to meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.53.bb
index 39407b8..8413f53 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.52.bb
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.53.bb
@@ -13,12 +13,12 @@
            file://0005-replace-lynx-to-curl-in-apachectl-script.patch \
            file://0006-apache2-fix-the-race-issue-of-parallel-installation.patch \
            file://0007-apache2-allow-to-disable-selinux-support.patch \
-           file://apache-configure_perlbin.patch \
-           file://0001-support-apxs.in-force-destdir-to-be-empty-string.patch \
+           file://0008-Fix-perl-install-directory-to-usr-bin.patch \
+           file://0009-support-apxs.in-force-destdir-to-be-empty-string.patch \
           "
 
 SRC_URI:append:class-target = " \
-           file://0008-apache2-do-not-use-relative-path-for-gen_test_char.patch \
+           file://0010-apache2-do-not-use-relative-path-for-gen_test_char.patch \
            file://init \
            file://apache2-volatile.conf \
            file://apache2.service \
@@ -26,7 +26,7 @@
            "
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=bddeddfac80b2c9a882241d008bb41c3"
-SRC_URI[sha256sum] = "0127f7dc497e9983e9c51474bed75e45607f2f870a7675a86dc90af6d572f5c9"
+SRC_URI[sha256sum] = "d0bbd1121a57b5f2a6ff92d7b96f8050c5a45d3f14db118f64979d525858db63"
 
 S = "${WORKDIR}/httpd-${PV}"
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee_git.bb b/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee_git.bb
index 16733c6..7100ef4 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee_git.bb
+++ b/meta-openembedded/meta-webserver/recipes-httpd/cherokee/cherokee_git.bb
@@ -2,7 +2,7 @@
 SUMMARY:cget = "Small downloader based in the Cherokee client library"
 HOMEPAGE = "http://www.cherokee-project.com/"
 SECTION = "network"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "unzip-native libpcre openssl mysql5 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/hiawatha_10.12.bb b/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/hiawatha_10.12.bb
index f13f144..2e848ea 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/hiawatha_10.12.bb
+++ b/meta-openembedded/meta-webserver/recipes-httpd/hiawatha/hiawatha_10.12.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Lightweight secure web server"
 HOMEPAGE = "http://www.hiawatha-webserver.org"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
 DEPENDS = "libxml2 libxslt virtual/crypt"
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc b/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc
index b99e29e..dfced33 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc
+++ b/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc
@@ -39,6 +39,7 @@
 
 PACKAGECONFIG ??= "ssl"
 
+PACKAGECONFIG[gunzip] = "--with-http_gunzip_module,,"
 PACKAGECONFIG[http2] = "--with-http_v2_module,,"
 PACKAGECONFIG[ssl] = "--with-http_ssl_module,,openssl"
 PACKAGECONFIG[http-auth-request] = "--with-http_auth_request_module,,"
diff --git a/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_5.1.3.bb b/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_5.1.3.bb
index dca476c..7ccc05e 100644
--- a/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_5.1.3.bb
+++ b/meta-openembedded/meta-webserver/recipes-php/phpmyadmin/phpmyadmin_5.1.3.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Web-based MySQL administration interface"
 HOMEPAGE = "http://www.phpmyadmin.net"
 # Main code is GPLv2, vendor/tecnickcom/tcpdf is under LGPLv3, js/jquery is under MIT
-LICENSE = "GPLv2 & LGPLv3 & MIT"
+LICENSE = "GPL-2.0-only & LGPL-3.0-only & MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://vendor/tecnickcom/tcpdf/LICENSE.TXT;md5=dd6470bbcd3436ca317f82d34abaf688 \
                     file://js/vendor/jquery/MIT-LICENSE.txt;md5=de877aa6d744cc160ff41c26a8e4811f \
diff --git a/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/cockpit_220.bb b/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/cockpit_220.bb
index 7c3c17c..c08de89 100644
--- a/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/cockpit_220.bb
+++ b/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/cockpit_220.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Admin interface for Linux machines"
 DESCRIPTION = "Cockpit makes it easy to administer your GNU/Linux servers via a web browser"
 
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 SRC_URI += " \
@@ -166,6 +166,8 @@
     ${datadir}/cockpit \
     ${datadir}/metainfo/cockpit.appdata.xml \
     ${datadir}/pixmaps/cockpit.png \
+    ${nonarch_libdir}/tmpfiles.d \
+    ${nonarch_libdir}/firewalld \
 "
 RDEPENDS:${PN} += "${PN}-bridge"
 
diff --git a/meta-openembedded/meta-webserver/recipes-webadmin/netdata/netdata_1.33.1.bb b/meta-openembedded/meta-webserver/recipes-webadmin/netdata/netdata_1.33.1.bb
index 2004670..f575a4c 100644
--- a/meta-openembedded/meta-webserver/recipes-webadmin/netdata/netdata_1.33.1.bb
+++ b/meta-openembedded/meta-webserver/recipes-webadmin/netdata/netdata_1.33.1.bb
@@ -1,8 +1,8 @@
-HOMEPAGE = "https://github.com/netdata/netdata/"
 SUMMARY = "Real-time performance monitoring"
 DESCRIPTION = "Netdata is high-fidelity infrastructure monitoring and troubleshooting. \
                Open-source, free, preconfigured, opinionated, and always real-time."
-LICENSE = "GPLv3"
+HOMEPAGE = "https://github.com/netdata/netdata/"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=fc9b848046ef54b5eaee6071947abd24"
 
 DEPENDS += "libuv util-linux zlib"
@@ -41,6 +41,7 @@
 USERADD_PARAM:${PN} = "--system --no-create-home --home-dir ${localstatedir}/run/netdata --user-group netdata"
 
 PACKAGECONFIG ??= "https"
+PACKAGECONFIG[cloud] = "--enable-cloud, --disable-cloud, json-c"
 PACKAGECONFIG[compression] = "--enable-compression, --disable-compression, lz4"
 PACKAGECONFIG[https] = "--enable-https, --disable-https, openssl"
 
@@ -75,6 +76,6 @@
     chown -R netdata:netdata ${D}${datadir}/netdata/web
 }
 
-FILES_${PN} += "${localstatedir}/cache/netdata/ ${localstatedir}/lib/netdata/"
+FILES:${PN} += "${localstatedir}/cache/netdata/ ${localstatedir}/lib/netdata/"
 
 RDEPENDS:${PN} = "bash zlib"
diff --git a/meta-openembedded/meta-xfce/conf/layer.conf b/meta-openembedded/meta-xfce/conf/layer.conf
index be58708..28dfc5b 100644
--- a/meta-openembedded/meta-xfce/conf/layer.conf
+++ b/meta-openembedded/meta-xfce/conf/layer.conf
@@ -6,7 +6,7 @@
 
 BBFILE_COLLECTIONS += "xfce-layer"
 BBFILE_PATTERN_xfce-layer := "^${LAYERDIR}/"
-BBFILE_PRIORITY_xfce-layer = "7"
+BBFILE_PRIORITY_xfce-layer = "5"
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
diff --git a/meta-openembedded/meta-xfce/recipes-apps/catfish/catfish_4.16.3.bb b/meta-openembedded/meta-xfce/recipes-apps/catfish/catfish_4.16.3.bb
index bf3d7ed..98cd251 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/catfish/catfish_4.16.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/catfish/catfish_4.16.3.bb
@@ -1,9 +1,9 @@
 SUMMARY = "Catfish is a handy file searching tool for linux and unix"
 SECTION = "x11/application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
 
-inherit xfce-app setuptools3 gtk-icon-cache mime-xdg
+inherit xfce-app python_setuptools_build_meta gtk-icon-cache mime-xdg
 
 DEPENDS += "python3-distutils-extra-native"
 
diff --git a/meta-openembedded/meta-xfce/recipes-apps/gigolo/gigolo_0.5.2.bb b/meta-openembedded/meta-xfce/recipes-apps/gigolo/gigolo_0.5.2.bb
index 517f1f4..6b845ea 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/gigolo/gigolo_0.5.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/gigolo/gigolo_0.5.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Gigolo is a frontend to easily manage connections to remote filesystems using GIO/GVfs"
 SECTION = "x11/application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 DEPENDS = "gtk+3 intltool-native xfce4-dev-tools-native"
diff --git a/meta-openembedded/meta-xfce/recipes-apps/menulibre/menulibre_2.2.3.bb b/meta-openembedded/meta-xfce/recipes-apps/menulibre/menulibre_2.2.3.bb
index 3d0e55d..65aa7a5 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/menulibre/menulibre_2.2.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/menulibre/menulibre_2.2.3.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "An advanced menu editor"
 HOMEPAGE = "https://bluesabre.org/menulibre/"
 SECTION = "x11/graphics"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 DEPENDS = " \
@@ -9,8 +9,7 @@
     intltool-native \
 "
 
-inherit setuptools3 gtk-icon-cache features_check
-
+inherit setuptools3_legacy gtk-icon-cache features_check
 REQUIRED_DISTRO_FEATURES = "x11"
 
 SRC_URI = "git://github.com/bluesabre/menulibre.git;protocol=https;branch=master"
diff --git a/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.8.bb b/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.8.bb
index 0f847e4..90a75bf 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.8.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.8.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A simple text editor for Xfce"
 SECTION = "x11/application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "gtk+3 gtksourceview4 xfconf xfce4-dev-tools-native"
diff --git a/meta-openembedded/meta-xfce/recipes-apps/orage/orage_4.12.1.bb b/meta-openembedded/meta-xfce/recipes-apps/orage/orage_4.12.1.bb
index 8277705..ed7f420 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/orage/orage_4.12.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/orage/orage_4.12.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Xfce Calender"
 SECTION = "x11/application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
 DEPENDS = "gtk+ xfce4-panel libical popt"
 
diff --git a/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.12.1.bb b/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.12.1.bb
index aeeb7e7..f2156a3 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.12.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/ristretto/ristretto_0.12.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Tiny image-viewer"
 HOMEPAGE = "https://docs.xfce.org/apps/ristretto/start"
 SECTION = "x11/application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=35d145429ad3cbf5308d1dc93f66376b"
 
 DEPENDS = "exo libexif libxfce4ui libxfce4util xfconf cairo file"
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xarchiver/xarchiver_git.bb b/meta-openembedded/meta-xfce/recipes-apps/xarchiver/xarchiver_git.bb
index e56824e..d8f0033 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xarchiver/xarchiver_git.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xarchiver/xarchiver_git.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://xarchiver.sourceforge.net"
 SECTION = "x11"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 DEPENDS = "gtk+3 glib-2.0 xfce4-dev-tools-native intltool-native"
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce-polkit/xfce-polkit_0.3.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce-polkit/xfce-polkit_0.3.bb
index 58e628d..3e3301f 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce-polkit/xfce-polkit_0.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce-polkit/xfce-polkit_0.3.bb
@@ -1,5 +1,5 @@
 SUMMARY = "A simple PolicyKit authentication agent for XFCE"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=758b03f872a88c99fc36d50c5932091c"
 
 DEPENDS = "libxfce4ui polkit"
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/xfce4-datetime-setter_3.32.2.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/xfce4-datetime-setter_3.32.2.bb
index 9d68ad2..6bcfc4b 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/xfce4-datetime-setter_3.32.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/xfce4-datetime-setter_3.32.2.bb
@@ -1,7 +1,7 @@
 DESCRIPTION = "A fork of (early) gnome-control-center datetime panel for XFCE. \
 It is based upon GTK3 and embedds into recent xfce4-settings."
 HOMEPAGE = "https://github.com/schnitzeltony/xfce4-datetime-setter"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
 
 DEPENDS = "glib-2.0-native libxfce4ui"
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.6.2.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.6.2.bb
index a145295..2174d2a 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.6.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-notifyd/xfce4-notifyd_0.6.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Easily themable notification daemon with transparency effects"
 HOMEPAGE = "http://goodies.xfce.org/projects/applications/xfce4-notifyd"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = " \
     dbus \
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-panel-profiles/xfce4-panel-profiles_1.0.13.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-panel-profiles/xfce4-panel-profiles_1.0.13.bb
index d5b0cf0..ab1b827 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-panel-profiles/xfce4-panel-profiles_1.0.13.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-panel-profiles/xfce4-panel-profiles_1.0.13.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Backup, restore, import, and export panel layouts"
 SECTION = "x11/application"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 inherit python3native gettext gtk-icon-cache features_check
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-screensaver/xfce4-screensaver_4.16.0.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-screensaver/xfce4-screensaver_4.16.0.bb
index a770ff7..685c4c1 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-screensaver/xfce4-screensaver_4.16.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-screensaver/xfce4-screensaver_4.16.0.bb
@@ -3,7 +3,7 @@
 HOMEPAGE = "https://git.xfce.org/apps/xfce4-screensaver/about/"
 SECTION = "x11/application"
 
-LICENSE = "GPLv2+ & LGPLv2+ "
+LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later "
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
                     "
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.9.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.9.bb
index 2518435..78e0848 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.9.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.9.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Application to take screenshots"
 HOMEPAGE = "http://goodies.xfce.org/projects/applications/xfce4-screenshooter"
 SECTION = "x11/application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d791728a073bc009b4ffaf00b7599855"
 DEPENDS = "xfce4-panel libxfce4util libxfce4ui gdk-pixbuf gtk+3 glib-2.0 libsoup-2.4 exo libxfixes xext virtual/libx11"
 
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.5.2.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.5.2.bb
index e0da70d..a3d10cd 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.5.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-taskmanager/xfce4-taskmanager_1.5.2.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Easy to use task manager"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 inherit xfce-app
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.8.10.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.8.10.bb
index 7e7c4bb..e9f2e40 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.8.10.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-terminal/xfce4-terminal_0.8.10.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Terminal emulator for the Xfce desktop environment"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "glib-2.0 gtk+3 vte libxfce4ui"
+DEPENDS = "glib-2.0 gtk+3 vte libxfce4ui gtk-doc-native"
 
 inherit xfce-app
 
diff --git a/meta-openembedded/meta-xfce/recipes-art/rodent-icon-theme/rodent-icon-theme_5.0.bb b/meta-openembedded/meta-xfce/recipes-art/rodent-icon-theme/rodent-icon-theme_5.0.bb
index 78dd5b8..532980d 100644
--- a/meta-openembedded/meta-xfce/recipes-art/rodent-icon-theme/rodent-icon-theme_5.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-art/rodent-icon-theme/rodent-icon-theme_5.0.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Rodent-icon-theme (was xfce4-icon-theme) is a svg icon theme"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
 
 inherit allarch autotools gtk-icon-cache
diff --git a/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb b/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb
index 46302bf..4cbdb4e 100644
--- a/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-art/xfce-dusk-gtk3/xfce-dusk-gtk3_1.3.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Modified version of the xfce-dusk theme to support also gtk 3.x too"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8f0e2cd40e05189ec81232da84bd6e1a"
 
 inherit allarch
diff --git a/meta-openembedded/meta-xfce/recipes-art/xfwm4-themes/xfwm4-themes_4.10.0.bb b/meta-openembedded/meta-xfce/recipes-art/xfwm4-themes/xfwm4-themes_4.10.0.bb
index 4c2e99a..272f83c 100644
--- a/meta-openembedded/meta-xfce/recipes-art/xfwm4-themes/xfwm4-themes_4.10.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-art/xfwm4-themes/xfwm4-themes_4.10.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Additional (old) themes for Xfwm4"
 SECTION = "x11/wm"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
 
 inherit xfce
diff --git a/meta-openembedded/meta-xfce/recipes-bindings/vala/xfce4-vala_4.10.3.bb b/meta-openembedded/meta-xfce/recipes-bindings/vala/xfce4-vala_4.10.3.bb
index e4a845c..0a65bd9 100644
--- a/meta-openembedded/meta-xfce/recipes-bindings/vala/xfce4-vala_4.10.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-bindings/vala/xfce4-vala_4.10.3.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Xfce4 Vala provides bindings for the Xfce framework"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
 DEPENDS = "libxfce4util garcon xfconf libxfce4ui xfce4-panel exo vala xfce4-dev-tools-native"
 
diff --git a/meta-openembedded/meta-xfce/recipes-extended/imsettings/imsettings_1.8.3.bb b/meta-openembedded/meta-xfce/recipes-extended/imsettings/imsettings_1.8.3.bb
index c94d5e8..cdf4557 100644
--- a/meta-openembedded/meta-xfce/recipes-extended/imsettings/imsettings_1.8.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-extended/imsettings/imsettings_1.8.3.bb
@@ -7,7 +7,7 @@
 HOMEPAGE = "http://code.google.com/p/imsettings/"
 SECTION = "Applications/System"
 
-LICENSE = "LGPLv2+"
+LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 inherit autotools gtk-doc gobject-introspection gettext features_check
diff --git a/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb b/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb
index f925864..93e5bbf 100644
--- a/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb
+++ b/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb
@@ -1,6 +1,9 @@
 SUMMARY = "All packages multimedia packages available for XFCE"
 
-inherit packagegroup
+inherit packagegroup features_check
+
+# parole needs x11
+REQUIRED_DISTRO_FEATURES = "pam x11"
 
 # While this item does not require it, it depends on xfmpc and xfc4-mpc-plugin
 # that wants mpd which does
diff --git a/meta-openembedded/meta-xfce/recipes-multimedia/parole/parole_4.16.0.bb b/meta-openembedded/meta-xfce/recipes-multimedia/parole/parole_4.16.0.bb
index 0b38f6d..545ab81 100644
--- a/meta-openembedded/meta-xfce/recipes-multimedia/parole/parole_4.16.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-multimedia/parole/parole_4.16.0.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Parole is a modern simple media player based on the GStreamer framework"
 HOMEPAGE = "https://docs.xfce.org/apps/parole/start"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 inherit xfce-app gtk-doc mime mime-xdg
diff --git a/meta-openembedded/meta-xfce/recipes-multimedia/xfce4-mpc-plugin/xfce4-mpc-plugin_0.5.2.bb b/meta-openembedded/meta-xfce/recipes-multimedia/xfce4-mpc-plugin/xfce4-mpc-plugin_0.5.2.bb
index 4e3c1d1..4a7ed93 100644
--- a/meta-openembedded/meta-xfce/recipes-multimedia/xfce4-mpc-plugin/xfce4-mpc-plugin_0.5.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-multimedia/xfce4-mpc-plugin/xfce4-mpc-plugin_0.5.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Simple client plugin for Music Player Daemon"
 HOMEPAGE = "https://goodies.xfce.org/projects/panel-plugins/xfce4-mpc-plugin"
 SECTION = "x11/application"
-LICENSE = "BSD-0-Clause"
+LICENSE = "0BSD"
 LIC_FILES_CHKSUM = "file://COPYING;md5=3604d987e6dfdfc672c754d08953b0e0"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-multimedia/xfmpc/xfmpc_0.3.0.bb b/meta-openembedded/meta-xfce/recipes-multimedia/xfmpc/xfmpc_0.3.0.bb
index 8384a5a..b8521ba 100644
--- a/meta-openembedded/meta-xfce/recipes-multimedia/xfmpc/xfmpc_0.3.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-multimedia/xfmpc/xfmpc_0.3.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Music Player Daemon (MPD) client written in GTK+"
 HOMEPAGE = "https://goodies.xfce.org/projects/applications/xfmpc"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = "libxfce4util libxfce4ui libmpd vala-native"
 
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/battery/xfce4-battery-plugin_1.1.4.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/battery/xfce4-battery-plugin_1.1.4.bb
index 9e65cf6..0f8489b 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/battery/xfce4-battery-plugin_1.1.4.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/battery/xfce4-battery-plugin_1.1.4.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A battery monitor panel plugin for Xfce4, compatible with APM and ACP"
 HOMEPAGE = "https://goodies.xfce.org/projects/panel-plugins/xfce4-battery-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/calculator/xfce4-calculator-plugin_0.7.1.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/calculator/xfce4-calculator-plugin_0.7.1.bb
index 6ed9e35..8fd2bd0 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/calculator/xfce4-calculator-plugin_0.7.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/calculator/xfce4-calculator-plugin_0.7.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "A calculator plugin for the Xfce panel"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-calculator-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=909430f63fddd63f120ba29e8979f65c"
 
 inherit xfce-panel-plugin gtk-icon-cache
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/clipman/xfce4-clipman-plugin_1.6.2.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/clipman/xfce4-clipman-plugin_1.6.2.bb
index d5c626e..39a8f2e 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/clipman/xfce4-clipman-plugin_1.6.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/clipman/xfce4-clipman-plugin_1.6.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Clipman is a clipboard manager for Xfce"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-clipman-plugin"
 SECTION = "x11/application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/closebutton/xfce4-closebutton-plugin_git.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/closebutton/xfce4-closebutton-plugin_git.bb
index 67f4172..2384682 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/closebutton/xfce4-closebutton-plugin_git.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/closebutton/xfce4-closebutton-plugin_git.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Plugin displaying close button for application currently active"
 SECTION = "x11"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b6952d9a47fc2ad0f315510e1290455f"
 
 inherit xfce-panel-plugin xfce-git gtk-icon-cache perlnative
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/cpufreq/xfce4-cpufreq-plugin_1.2.5.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/cpufreq/xfce4-cpufreq-plugin_1.2.5.bb
index 8fef520..f3d78c1 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/cpufreq/xfce4-cpufreq-plugin_1.2.5.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/cpufreq/xfce4-cpufreq-plugin_1.2.5.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Panel plugin to display frequency of all cpus"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-cpufreq-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1f6f1c0be32491a0c8d2915607a28f36"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/cpugraph/xfce4-cpugraph-plugin_1.2.5.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/cpugraph/xfce4-cpugraph-plugin_1.2.5.bb
index ad731e0..583eacb 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/cpugraph/xfce4-cpugraph-plugin_1.2.5.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/cpugraph/xfce4-cpugraph-plugin_1.2.5.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Panel plugin with graphical representation of the cpu frequency"
 HOMEPAGE = "https://goodies.xfce.org/projects/panel-plugins/xfce4-cpugraph-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=415654f59d8fa70fe4eac2c3f86c8f5e"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/datetime/xfce4-datetime-plugin_0.8.1.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/datetime/xfce4-datetime-plugin_0.8.1.bb
index f95995b..c029ac1 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/datetime/xfce4-datetime-plugin_0.8.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/datetime/xfce4-datetime-plugin_0.8.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Panel plugin displaying date and time and a calendar when left-clicked"
 HOMEPAGE = "https://goodies.xfce.org/projects/panel-plugins/xfce4-datetime-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/eyes/xfce4-eyes-plugin_4.5.1.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/eyes/xfce4-eyes-plugin_4.5.1.bb
index fce5df5..e18621d 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/eyes/xfce4-eyes-plugin_4.5.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/eyes/xfce4-eyes-plugin_4.5.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Panel plugin with graphical representation of the cpu frequency"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-eyes-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/genmon/xfce4-genmon-plugin_4.1.1.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/genmon/xfce4-genmon-plugin_4.1.1.bb
index 9a6d4b1..d792bc0 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/genmon/xfce4-genmon-plugin_4.1.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/genmon/xfce4-genmon-plugin_4.1.1.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "This plugin cyclically spawns the indicated script/program, captures its output (stdout) and displays the resulting string into the panel."
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-genmon-plugin"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=68ad62c64cc6c620126241fd429e68fe"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/mailwatch/xfce4-mailwatch-plugin_1.3.0.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/mailwatch/xfce4-mailwatch-plugin_1.3.0.bb
index c4172f4..a5c98ef 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/mailwatch/xfce4-mailwatch-plugin_1.3.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/mailwatch/xfce4-mailwatch-plugin_1.3.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Multi-protocol, multi-mailbox mail watcher for the Xfce4 panel"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-mailwatch-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin_1.1.5.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin_1.1.5.bb
index 3f35b8c..3a6baf2 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin_1.1.5.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/mount/xfce4-mount-plugin_1.1.5.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Mount/umount utility for the xfce panel"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-mount-plugin"
 SECTION = "x11/application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/netload/xfce4-netload-plugin_1.4.0.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/netload/xfce4-netload-plugin_1.4.0.bb
index b30543b..834f5cf 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/netload/xfce4-netload-plugin_1.4.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/netload/xfce4-netload-plugin_1.4.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Panel plugin displaying current load of the network interfaces"
 HOMEPAGE = "https://goodies.xfce.org/projects/panel-plugins/xfce4-netload-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=35a7203c41b86d15546dddc05995f97f"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/notes/xfce4-notes-plugin_1.9.0.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/notes/xfce4-notes-plugin_1.9.0.bb
index cd7212f..dc0fc2c 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/notes/xfce4-notes-plugin_1.9.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/notes/xfce4-notes-plugin_1.9.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Notes plugin for the Xfce Panel"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-notes-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/places/xfce4-places-plugin_1.8.1.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/places/xfce4-places-plugin_1.8.1.bb
index c88e843..e2075a6 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/places/xfce4-places-plugin_1.8.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/places/xfce4-places-plugin_1.8.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Menu for quick access to folders, documents and removable media"
 DESCRIPTION = "Panel plugin displaying menu with quick access to folders, documents and removable media"
 HOMEPAGE = "https://goodies.xfce.org/projects/panel-plugins/xfce4-places-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b6952d9a47fc2ad0f315510e1290455f"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/pulseaudio/xfce4-pulseaudio-plugin_0.4.3.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/pulseaudio/xfce4-pulseaudio-plugin_0.4.3.bb
index 9292023..b2d61a1 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/pulseaudio/xfce4-pulseaudio-plugin_0.4.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/pulseaudio/xfce4-pulseaudio-plugin_0.4.3.bb
@@ -1,5 +1,5 @@
 SUMMARY = "Pulseaudio mixer for the xfce panel"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f5eac6bb0d6ec0dc655e417781d4015f"
 
 inherit xfce-panel-plugin features_check
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/sensors/xfce4-sensors-plugin_1.4.2.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/sensors/xfce4-sensors-plugin_1.4.2.bb
index c00ca6f..68f3f64 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/sensors/xfce4-sensors-plugin_1.4.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/sensors/xfce4-sensors-plugin_1.4.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Sensors plugin for the Xfce Panel"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-sensors-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b94789bed9aec03b9656a9cc5398c706"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/smartbookmark/xfce4-smartbookmark-plugin_0.5.2.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/smartbookmark/xfce4-smartbookmark-plugin_0.5.2.bb
index 81370e3..fdec598 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/smartbookmark/xfce4-smartbookmark-plugin_0.5.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/smartbookmark/xfce4-smartbookmark-plugin_0.5.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Panel plugin allowing to send requests directly to browser"
 HOMEPAGE = "https://goodies.xfce.org/projects/panel-plugins/xfce4-smartbookmark-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/time-out/xfce4-time-out-plugin_1.1.2.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/time-out/xfce4-time-out-plugin_1.1.2.bb
index 185e9bc..5b7f624 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/time-out/xfce4-time-out-plugin_1.1.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/time-out/xfce4-time-out-plugin_1.1.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "This plugin makes it possible to take periodical breaks"
 HOMEPAGE = "https://goodies.xfce.org/projects/panel-plugins/xfce4-time-out-plugin"
 SECTION = "x11/application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/timer/xfce4-timer-plugin_1.7.1.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/timer/xfce4-timer-plugin_1.7.1.bb
index f154023..1231e08 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/timer/xfce4-timer-plugin_1.7.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/timer/xfce4-timer-plugin_1.7.1.bb
@@ -1,7 +1,7 @@
 SUMMARY = "XFCE panel plugin to generate alarm messages"
 DESCRIPTION = "This is a simple plugin that lets the user run an alarm at a specified time or at the end of a specified countdown period"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-timer-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=ae39271267fd63eb7619432ff24e7ff1"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/verve/xfce4-verve-plugin_2.0.1.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/verve/xfce4-verve-plugin_2.0.1.bb
index 5902ad0..21bbda3 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/verve/xfce4-verve-plugin_2.0.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/verve/xfce4-verve-plugin_2.0.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Verve panel plugin is a comfortable command line plugin for the Xfce panel"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-verve-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/weather/xfce4-weather-plugin_0.11.0.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/weather/xfce4-weather-plugin_0.11.0.bb
index 069c915..ede98e9 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/weather/xfce4-weather-plugin_0.11.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/weather/xfce4-weather-plugin_0.11.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Panel plugin to display current temperature and weather condition"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-weather-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/whiskermenu/xfce4-whiskermenu-plugin_2.7.1.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/whiskermenu/xfce4-whiskermenu-plugin_2.7.1.bb
index cebe110..6621099 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/whiskermenu/xfce4-whiskermenu-plugin_2.7.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/whiskermenu/xfce4-whiskermenu-plugin_2.7.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "An alternate menu for the Xfce desktop environment"
 HOMEPAGE = "http://gottcode.org/xfce4-whiskermenu-plugin/"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 inherit xfce-panel-plugin cmake
diff --git a/meta-openembedded/meta-xfce/recipes-panel-plugins/xkb/xfce4-xkb-plugin_0.8.2.bb b/meta-openembedded/meta-xfce/recipes-panel-plugins/xkb/xfce4-xkb-plugin_0.8.2.bb
index ff57236..3d935a3 100644
--- a/meta-openembedded/meta-xfce/recipes-panel-plugins/xkb/xfce4-xkb-plugin_0.8.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-panel-plugins/xkb/xfce4-xkb-plugin_0.8.2.bb
@@ -1,7 +1,7 @@
 SUMMARY = "XKB layout switching panel plug-in for the Xfce desktop environment"
 HOMEPAGE = "http://goodies.xfce.org/projects/panel-plugins/xfce4-xkb-plugin"
 SECTION = "x11/application"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=496f09f084b0f7e6f02f769a84490c6b"
 
 inherit xfce-panel-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-thunar-plugins/archive/thunar-archive-plugin_0.4.0.bb b/meta-openembedded/meta-xfce/recipes-thunar-plugins/archive/thunar-archive-plugin_0.4.0.bb
index 144e260..0a1098d 100644
--- a/meta-openembedded/meta-xfce/recipes-thunar-plugins/archive/thunar-archive-plugin_0.4.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-thunar-plugins/archive/thunar-archive-plugin_0.4.0.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Thunar Archive Plugin allows you to create and extract archive files using file context menus in Thunar"
 HOMEPAGE = "http://goodies.xfce.org/projects/thunar-plugins/thunar-archive-plugin"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=252890d9eee26aab7b432e8b8a616475"
 
 inherit thunar-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-thunar-plugins/media-tags/thunar-media-tags-plugin_0.3.0.bb b/meta-openembedded/meta-xfce/recipes-thunar-plugins/media-tags/thunar-media-tags-plugin_0.3.0.bb
index a61e764..06695f6 100644
--- a/meta-openembedded/meta-xfce/recipes-thunar-plugins/media-tags/thunar-media-tags-plugin_0.3.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-thunar-plugins/media-tags/thunar-media-tags-plugin_0.3.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Adds ID3/OGG tag support to the Thunar bulk rename dialog"
 HOMEPAGE = "http://thunar.xfce.org"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
 inherit thunar-plugin
diff --git a/meta-openembedded/meta-xfce/recipes-thunar-plugins/shares/thunar-shares-plugin_0.3.1.bb b/meta-openembedded/meta-xfce/recipes-thunar-plugins/shares/thunar-shares-plugin_0.3.1.bb
index de19c44..6ed9cec 100644
--- a/meta-openembedded/meta-xfce/recipes-thunar-plugins/shares/thunar-shares-plugin_0.3.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-thunar-plugins/shares/thunar-shares-plugin_0.3.1.bb
@@ -1,9 +1,10 @@
 SUMMARY = "Quickly share a folder using Samba from Thunar"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 inherit thunar-plugin features_check
-REQUIRED_DISTRO_FEATURES = "pam"
+# x11 is needed for thunar
+REQUIRED_DISTRO_FEATURES = "pam x11"
 
 SRC_URI[md5sum] = "0884855d60cf1031b9013b6f5b125372"
 SRC_URI[sha256sum] = "dc1d8c7caa727e76d033d4653dc0742613f57a1711d0050900659c90a84452a0"
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_4.16.3.bb b/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_4.16.3.bb
index f27171d..2b16444 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_4.16.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/exo/exo_4.16.3.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Application library for the Xfce desktop environment"
 SECTION = "x11"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 DEPENDS = "gtk+3 libxfce4ui virtual/libx11 liburi-perl-native cairo"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/garcon/garcon_4.16.1.bb b/meta-openembedded/meta-xfce/recipes-xfce/garcon/garcon_4.16.1.bb
index 65db345..a6c56ed 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/garcon/garcon_4.16.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/garcon/garcon_4.16.1.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Xfce Menu Library"
 SECTION = "x11/libs"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=04a01abcbdabffae1ca26335a293276b"
 DEPENDS = "xfce4-dev-tools-native libxfce4ui intltool-native"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.16.1.bb b/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.16.1.bb
index 2c6c742..e3d2a00 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.16.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/libxfce4ui/libxfce4ui_4.16.1.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Xfce4 Widget library and X Window System interaction"
 SECTION = "x11/libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=252890d9eee26aab7b432e8b8a616475"
 DEPENDS = "intltool-native perl-native gtk+3 libice libsm libxfce4util xfce4-dev-tools xfconf virtual/libx11"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/libxfce4util/libxfce4util_4.16.0.bb b/meta-openembedded/meta-xfce/recipes-xfce/libxfce4util/libxfce4util_4.16.0.bb
index 9462b28..6824ac6 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/libxfce4util/libxfce4util_4.16.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/libxfce4util/libxfce4util_4.16.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Basic utility library for Xfce4"
 SECTION = "x11/libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=252890d9eee26aab7b432e8b8a616475"
 DEPENDS = "intltool-native xfce4-dev-tools-native glib-2.0"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/thunar-volman/thunar-volman_4.16.0.bb b/meta-openembedded/meta-xfce/recipes-xfce/thunar-volman/thunar-volman_4.16.0.bb
index 5c669a5..e529bc8 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/thunar-volman/thunar-volman_4.16.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/thunar-volman/thunar-volman_4.16.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Automatic management of removable drives and media for thunar"
 SECTION = "x11"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = "exo libnotify libgudev"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_4.16.9.bb b/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_4.16.9.bb
index 0872110..93c41ae 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_4.16.9.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/thunar/thunar_4.16.9.bb
@@ -1,6 +1,6 @@
 SUMMARY = "File manager for the Xfce Desktop Environment"
 SECTION = "x11"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = "libxml-parser-perl-native exo gdk-pixbuf libxfce4ui libsm startup-notification libnotify xfce4-panel udev"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_4.16.0.bb b/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_4.16.0.bb
index c5ab85d..6a583ad 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_4.16.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/tumbler/tumbler_4.16.0.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Thumbnail service implementing the thumbnail management D-Bus specification"
 SECTION = "x11/libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 DEPENDS = "freetype gdk-pixbuf poppler curl xfce4-dev-tools-native libxml2 libgsf"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-appfinder/xfce4-appfinder_4.16.1.bb b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-appfinder/xfce4-appfinder_4.16.1.bb
index 89385b0..18d9fed 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-appfinder/xfce4-appfinder_4.16.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-appfinder/xfce4-appfinder_4.16.1.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Xfce4 Application Finder"
 SECTION = "x11"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = "glib-2.0 gtk+3 libxfce4util libxfce4ui garcon xfconf"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-dev-tools/xfce4-dev-tools_4.16.0.bb b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-dev-tools/xfce4-dev-tools_4.16.0.bb
index 7162311..5c41a76 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-dev-tools/xfce4-dev-tools_4.16.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-dev-tools/xfce4-dev-tools_4.16.0.bb
@@ -1,7 +1,7 @@
 SUMMARY = "Xfce4 development tools"
 HOMEPAGE = "http://www.xfce.org"
 SECTION = "x11/libs"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
 
 DEPENDS = "glib-2.0"
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.16.3.bb b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.16.3.bb
index 02038b0..b9201bc 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.16.3.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-panel/xfce4-panel_4.16.3.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Xfce4 Panel"
 SECTION = "x11"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=26a8bd75d8f8498bdbbe64a27791d4ee"
 DEPENDS = "garcon exo gtk+3 cairo virtual/libx11 libxml2 libwnck3 vala-native"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-power-manager/xfce4-power-manager_4.16.0.bb b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-power-manager/xfce4-power-manager_4.16.0.bb
index a79d801..34de7a7 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-power-manager/xfce4-power-manager_4.16.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-power-manager/xfce4-power-manager_4.16.0.bb
@@ -2,7 +2,7 @@
 HOMEPAGE = "http://goodies.xfce.org/projects/applications/xfce4-power-manager"
 SECTION = "x11"
 
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 
 inherit xfce features_check
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/xfce4-session_4.16.0.bb b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/xfce4-session_4.16.0.bb
index fee634e..e6613b8 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/xfce4-session_4.16.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-session/xfce4-session_4.16.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "xfce4-session is a session manager for Xfce 4 Desktop Environment"
 SECTION = "x11"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
 
 DEPENDS = "libwnck3 libsm libxfce4ui virtual/libx11"
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.16.2.bb b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.16.2.bb
index aff57a5..83b624f 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.16.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfce4-settings/xfce4-settings_4.16.2.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Xfce4 settings"
 SECTION = "x11/wm"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = "exo garcon libxi virtual/libx11 xrandr libxcursor libxklavier upower"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfconf/xfconf_4.16.0.bb b/meta-openembedded/meta-xfce/recipes-xfce/xfconf/xfconf_4.16.0.bb
index 0bbef84..be74219 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfconf/xfconf_4.16.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfconf/xfconf_4.16.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Xfce configuration daemon and utilities"
 SECTION = "x11/wm"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
 DEPENDS = "libxfce4util perl intltool-native xfce4-dev-tools-native"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfdesktop/xfdesktop_4.16.0.bb b/meta-openembedded/meta-xfce/recipes-xfce/xfdesktop/xfdesktop_4.16.0.bb
index 7136350..b0dc8e1 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfdesktop/xfdesktop_4.16.0.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfdesktop/xfdesktop_4.16.0.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Xfce4 Desktop Manager"
 SECTION = "x11/base"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 DEPENDS = "libxfce4ui libwnck thunar garcon exo"
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/xfwm4/xfwm4_4.16.1.bb b/meta-openembedded/meta-xfce/recipes-xfce/xfwm4/xfwm4_4.16.1.bb
index f4a78f1..a32bad4 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/xfwm4/xfwm4_4.16.1.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/xfwm4/xfwm4_4.16.1.bb
@@ -1,6 +1,6 @@
 DESCRIPTION = "Xfce4 Window Manager"
 SECTION = "x11/wm"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d791728a073bc009b4ffaf00b7599855"
 DEPENDS = "virtual/libx11 libxfce4ui libwnck3 libxinerama"