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/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"