subtree updates

poky: 94dfcaff64..359e1cb62f:
  Alexander Kanavin (76):
        tcf-agent: fetching over git:// no longer works
        lighttpd: convert from autotools to meson
        libxcrypt: upgrade 4.4.23 -> 4.4.25
        python3-cython: upgrade 0.29.23 -> 0.29.24
        python3-numpy: upgrade 1.21.0 -> 1.21.2
        systemd: upgrade 249.1 -> 249.3
        xeyes: upgrade 1.1.2 -> 1.2.0
        btrfs-tools: update 5.13 -> 5.13.1
        diffutils: update 3.7 -> 3.8
        mc: update 4.8.26 - > 4.8.27
        libsdl2: update 2.0.14 -> 2.0.16
        vulkan-samples: update to latest revision
        pulseaudio: update 14.2 -> 15.0
        libjitterentropy: update 3.0.2 -> 3.1.0
        usbutils: upgrade 013 -> 014
        inetutils: upgrade 2.0 -> 2.1
        mobile-broadband-provider-info: upgrade 20201225 -> 20210805
        glib-networking: upgrade 2.68.1 -> 2.68.2
        e2fsprogs: upgrade 1.46.2 -> 1.46.4
        help2man: upgrade 1.48.3 -> 1.48.4
        libedit: upgrade 20210522-3.1 -> 20210714-3.1
        log4cplus: upgrade 2.0.6 -> 2.0.7
        mtools: upgrade 4.0.34 -> 4.0.35
        patchelf: upgrade 0.12 -> 0.13
        pkgconf: upgrade 1.7.4 -> 1.8.0
        python3-git: upgrade 3.1.18 -> 3.1.20
        python3-pip: upgrade 21.2.1 -> 21.2.4
        python3-pygments: upgrade 2.9.0 -> 2.10.0
        python3-setuptools: upgrade 57.1.0 -> 57.4.0
        squashfs-tools: upgrade 4.4 -> 4.5
        acpica: upgrade 20210331 -> 20210730
        libidn2: upgrade 2.3.1 -> 2.3.2
        stress-ng: upgrade 0.12.12 -> 0.13.00
        sudo: upgrade 1.9.7p1 -> 1.9.7p2
        epiphany: upgrade 40.2 -> 40.3
        libgudev: upgrade 236 -> 237
        libjpeg-turbo: upgrade 2.1.0 -> 2.1.1
        libepoxy: upgrade 1.5.8 -> 1.5.9
        pango: upgrade 1.48.7 -> 1.48.9
        mesa: upgrade 21.1.5 -> 21.2.1
        libinput: upgrade 1.18.0 -> 1.18.1
        libxfont2: upgrade 2.0.4 -> 2.0.5
        libxft: upgrade 2.3.3 -> 2.3.4
        xserver-xorg: upgrade 1.20.12 -> 1.20.13
        linux-firmware: upgrade 20210511 -> 20210818
        wireless-regdb: upgrade 2021.04.21 -> 2021.07.14
        libwebp: upgrade 1.2.0 -> 1.2.1
        webkitgtk: upgrade 2.32.2 -> 2.32.3
        boost: upgrade 1.76.0 -> 1.77.0
        diffoscope: upgrade 179 -> 181
        enchant2: upgrade 2.3.0 -> 2.3.1
        re2c: upgrade 2.1.1 -> 2.2
        rng-tools: upgrade 6.13 -> 6.14
        kea: backport a patch to fix build errors exposed by latest update batch
        qemu: add a hint on how to enable CPU render nodes when a suitable GPU is absent
        mc: fix reproducibility
        libjitterentropy: remove contaminated hashequiv entry
        binutils: drop target flex/bison from build dependencies
        gnu-efi: update 3.0.13 -> 3.0.14
        glib-2.0: upgrade 2.68.3 -> 2.68.4
        util-linux: upgrade 2.37.1 -> 2.37.2
        ccache: upgrade 4.3 -> 4.4
        git: upgrade 2.32.0 -> 2.33.0
        openssh: upgrade 8.6p1 -> 8.7p1
        ell: upgrade 0.42 -> 0.43
        python3-mako: upgrade 1.1.4 -> 1.1.5
        vala: upgrade 0.52.4 -> 0.52.5
        libnsl2: upgrade 1.3.0 -> 2.0.0
        gi-docgen: upgrade 2021.6 -> 2021.7
        json-glib: upgrade 1.6.2 -> 1.6.4
        bind: upgrade 9.16.19 -> 9.16.20
        harfbuzz: upgrade 2.8.2 -> 2.9.0
        qemurunner.py: print output from runqemu/qemu-system in stop()
        qemurunner.py: handle getOutput() having nothing to read
        rust: fix upstream version checks
        mesa: enable crocus driver for older intel graphics

  Andreas Müller (2):
        mesa: upgrade 21.1.5 -> 21.1.7
        binutils: Apply upstream patch to fix 'too many open files' on qtwebengine

  Andrej Valek (2):
        busybox: 1.33.1 -> 1.34.0
        vim: add option to disable NLS support

  Andres Beltran (2):
        buildhistory: Add output file listing package information
        buildhistory: Label packages providing per-file dependencies in depends.dot

  Andrey Zhizhikin (2):
        lttng-modules: do not search in non-existing folder during install
        nativesdk-packagegroup-sdk-host: add perl integer module

  Armin Kuster (2):
        lz4: Security Fix for CVE-2021-3520
        lz4: remove rest of ptest artifacts

  Bruce Ashfield (21):
        linux-yocto/5.13: update to v5.13.7
        linux-yocto/5.4: update to v5.4.137
        linux-yocto/5.10: update to v5.10.55
        linux-yocto/5.4: update to v5.4.139
        linux-yocto/5.10: update to v5.10.57
        linux-yocto/5.13: update to v5.13.9
        linux-yocto/5.4: remove recipes
        conf/machine: bump qemu preferred versions to 5.13
        linux-yocto-dev: bump to v5.14+
        lttng-modules: update to 2.13.0
        kernel-devsrc: 5.14+ updates
        kernel-devsrc: fix 5.14+ objtool compilation
        poky/poky-tiny: set default kernel to 5.13
        poky: set default kernel to 5.13
        yocto-bsp: drop 5.4 bbappend
        poky-alt: switch default kernel to 5.10
        linux-yocto/5.13: update to v5.13.11
        linux-yocto/5.10: update to v5.10.59
        linux-yocto/5.13: update to v5.13.12
        linux-yocto/5.10: update to v5.10.60
        parselogs.py: ignore intermittent CD/DVDROM identification failure

  Chen Qi (1):
        package_rpm/update-alternatives: fix package's provides

  Daniel Gomez (2):
        wic: Add --no-fstab-update part option
        oeqa: wic: Add tests for --no-fstab-update

  Denys Dmytriyenko (1):
        grep: upgrade 3.6 -> 3.7

  Enrico Scholz (1):
        bitbake: fetch2/wget: fix 'no_proxy' handling

  Hongxu Jia (2):
        nativesdk-pseudo: Fix to work with glibc 2.34 systems
        glibc: fix create thread failed in unprivileged process

  Hsia-Jun Li (1):
        lib/oe/elf: Add Android OS to machine_dict

  Jon Mason (8):
        arch-armv8m-main: missing space
        conf/machine: move tune files to architecture directories
        yocto-bsp: update machine confs with new tune locations
        docs: update docs with new tune locations
        arch-arm*: add better support for gcc march extensions
        tune-cortexr*: add support for all Arm Cortex-R processors
        arch-arm*: Fix bugs with dsp and simd feature include files
        tune-*: Use more specific DEFAULTTUNE

  Jose Quaresma (1):
        sstate.bbclass: get the number of threads from BB_NUMBER_THREADS

  Joshua Watt (17):
        bitbake: contrib: vim: Add "remove" override highlighting
        bitbake.conf: Add lz4c, pzstd and zstd
        bitbake: bitbake: asyncrpc: Defer all asyncio to child process
        conf/licenses: Add FreeType SPDX mapping
        tzdata: Remove BSD License specifier
        glib-2.0: Use specific BSD license variant
        e2fsprogs: Use specific BSD license variant
        shadow: Use specific BSD license variant
        libcap: Use specific BSD license variant
        sudo: Use specific BSD license variant
        libpam: Use specific BSD license variant
        libxfont2: Use specific BSD license variant
        libjitterentropy: Use specific BSD license variant
        libx11: Use specific BSD license variant
        font-util: Use specific BSD license variant
        flac: Use specific BSD license variant
        swig: Use specific BSD license variant

  Kai Kang (2):
        libcgroup: fix installed-vs-shipped qa issue
        rustfmt: fix SRC_URI

  Kevin Hao (2):
        meta-yocto-bsp: Set the default kernel to v5.13
        meta-yocto-bsp: Bump the kernel to v5.13.11

  Khem Raj (2):
        weston: Re-order gbm destruction at DRM-backend tear down
        musl: Update to latest tip of trunk

  Kristian Klausen (1):
        systemd: Add repart PACKAGECONFIG

  Marco Felsch (1):
        bitbake: bitbake: bitbake-layers: add skip reason to output

  Marek Vasut (1):
        weston: Add rdp PACKAGECONFIG

  Marta Rybczynska (1):
        lzo: add CVE_PRODUCT

  Martin Jansa (3):
        bitbake: prserv: handle PRSERV_HOST = "127.0.0.1:0" the same as "localhost:0"
        bitbake: cooker/process: Fix typos in exiting message
        rust: remove unused patches

  Michael Halstead (2):
        uninative: Upgrade to 3.3, support glibc 2.34
        uninative: Upgrade to 3.4

  Michael Opdenacker (2):
        maintainers.inc: maintainer for alsa-*, flac, lame and speex
        meta: stop using "virtual/" in RPROVIDES and RDEPENDS

  Mingli Yu (2):
        shadow: fix default value in SHA_get_salt_rounds()
        bitbake: prserv: make localhost work

  Oleksandr Popovych (1):
        utils: Reduce the number of calls to the "dirname" command

  Oliver Kranz (1):
        Allow global override of golang GO_DYNLINK

  Paul Barker (2):
        bitbake: prserv: Replace XML RPC with modern asyncrpc implementation
        bitbake: prserv: Add read-only mode

  Paul Gortmaker (1):
        ltp: backport ioctl_ns05 fix from upstream

  Peter Kjellerstedt (7):
        lttng-modules: Make it build when CONFIG_TRACEPOINTS is not enabled again
        poky-floating-revisions.inc: Use new override syntax for commented vars
        local.conf.sample: Use the new override syntax for a commented variable
        bitbake.conf: Use the new variable override syntax in a comment
        buildhistory-collect-srcrevs: Adapt to the new variable override syntax
        meson.bbclass: Make the default buildtype "debug" if DEBUG_BUILD is 1
        bitbake: providers: Use new override syntax when handling pn- "override"

  Purushottam Choudhary (1):
        assimp: added patch to fix hardcoded non-existing paths in CMake modules

  Randy MacLeod (8):
        openssl: upgrade from 1.1.1k to 1.1.1l
        rust: initial merge of most of meta-rust
        rust: mv README.md to recipes-devtools/rust/README-rust.md
        rust: update the README to conform to being in oe-core
        cargo/rust/rustfmt: exclude from world
        maintainers: Add myself as maintainer for rust pkgs
        cargo_common: remove http_proxy
        rust: remove Rust version 1.51.0 toolchain

  Richard Purdie (27):
        elfutils: Add zstd PACKAGECONFIG for determinism
        man-db: Add compression PACKAGECONFIG entries
        oeqa/selftest/glibc: Handle incorrect encoding issuesin glibc test results
        package/scripts: Fix FILES_INFO handling
        package: Fix overrides converion issue with PKGSIZE
        bitbake: bitbake: Make 3.6.0 the minimum python version
        elfutils: Fix ptest dependencies
        bsp-guide: Fix reference to bbappend section of dev-manual
        ref-manual: Fix reference to bbappend section of dev-manual
        gcc: Fix nativesdk builds and multilib fixes with gcc 11
        bitbake: README: Add note about test suite and new tests
        pseudo: Fix to work with glibc 2.34 systems
        bitbake: README: Fix typo
        rust-cross*: Fix OVERRRIDE references in task signature computation
        rust-cross-canadian-common: Use rust.inc directly, not rust-target
        cargo: Ensure cargo-cross-canadian doesn't have native/nativesdk versions
        rust-native: Avoid stripped warning
        rust-llvm: Add missing HOMEPAGE
        rust: Skip target recipe since it doesn't work
        oeqa/selftest/distrodata: Fix up rust maintainer testing
        rust: Avoid buildtools+uninative issues with glibc symbols mismatches
        rust-common: Add LDFLAGS to cc wrapper
        oeqa/selftest/reproducibile: Exclude rust packages
        kernel: Use unexpanded EXTENDPKGV
        oeqa/buildtools-cases: Allow bitbake time to shutdown
        cargo: Apply uninative fix to snapshot as with rust
        rust-common: Hack around LD_LIBRARY_PATH issues on centos7

  Robert P. J. Day (1):
        scripts/lib/wic/help/py: "Redhat" -> "Red Hat"

  Ross Burton (11):
        oeqa/selftest/buildoptions: test buildhistory PKGSIZE and FILELIST fields
        uninative: Improve glob to handle glibc 2.34
        oeqa/sdk: add relocation test for buildtools
        glibc: package the stub .a libaries into glibc-dev
        oeqa/sdk: add HTTPS test for buildtools
        libcgroup: upgrade to 2.0
        gcc: also relocate the musl loader
        local.conf.sample.extended: fix commented-out override syntax
        cpio: backport fix for CVE-2021-38185
        mesa: fix build on Arm V5 with soft float
        ptest: allow the ptest-packagelists.inc warning to be disabled

  Sakib Sajal (1):
        qemu: fix CVE-2021-3682

  Scott Murray (2):
        bitbake: bitbake: asyncrpc: always create new asyncio loops
        prservice: remove connection caching

  Stefan Herbrechtsmeier (4):
        u-boot: Remove redundancy from installed and deployed SPL artifact names
        u-boot: Remove misplaced configuration type variable
        u-boot: Make SPL suffix configurable
        u-boot: Make UBOOT_BINARYNAME configurable

  Tim Orling (7):
        python3-importlib-metadata: upgrade 4.6.3 -> 4.6.4
        python3-hypothesis: upgrade 6.14.5 -> 6.14.8
        python3-hypothesis: upgrade 6.14.8 -> 6.15.0
        python3-hypothesis: enable ptest
        python3-pluggy: upgrade 0.13.1 -> 1.0.0
        python3-pytest: allow python3-pluggy >=1.0.0
        rust-common.bbclass: export RUST_TARGET_PATH

  Trevor Gamblin (1):
        bluez: upgrade 5.60 -> 5.61

  Trevor Woerner (1):
        distro_features_check: expand with IMAGE_FEATURES

  Vinay Kumar (2):
        glibc: Fix CVE-2021-38604
        rust-common.inc: Fix build failure with qemuppc64.

  Yi Zhao (2):
        prelink: add PACKAGECONFIG for selinux
        shadow: add /etc/default/useradd

  Zoltán Böszörményi (4):
        kernel-module-split.bbclass: Support zstd-compressed modules
        Allow opt-out of split kernel modules
        kernel.bbclass: Use full versions for inter-package dependencies
        base/kernel: Support zstd-compressed squashfs and cpio initramfs

  leimaohui (2):
        Fix conflict error when enable multilib.
        wordsize.h: Fix a miss, this file in arm and aarch64 should be the same.

meta-raspberrypi: 32921fc9bd..a6fa6b3aec:
  Khem Raj (4):
        machines: Use tune files from new location in oe-core
        linux-raspberrypi: Update to 5.10.59
        raspberrypi-firmware: Update to latest
        raspberrypi4: Use full kms (vc4-kms-v3d) DT overlay

  Marcus Comstedt (1):
        pi-bluetooth: Add compatibility with non-systemd builds

  Tom Rini (1):
        xserver-xf86-config: Correctly append to FILES:${PN}

meta-security: c885d399cd..1f18c623e9:
  Armin Kuster (10):
        cryfs: add new package
        kas-security-bas: bump conf value
        kas: fix DISTRO appends
        dm-verity-img.bbclass: more overided fixups
        krill: Rust is in core now
        suricata: rust is in core
        layer.conf: drop dynamic-layer
        layer.conf: drop meta-rust
        harden-image-minimal: fix useradd inherit
        kas: remove rust layers

  Daiane Angolini (1):
        meta-integrity: kernel-modsign: Change weak default value

  George Liu (1):
        meta: Fix typos

  Marta Rybczynska (2):
        README: fix mailing lists
        README: fix mailing lists and a typo

meta-openembedded: a13db91f19..9fdc7960ba:
  Andreas Müller (6):
        catch2: upgrade 2.13.6 -> 2.13.7
        fltk/CMake: Do not export executable 'fluid'
        fltk: upgrade 1.3.6 -> 1.3.7
        network-manager-applet: upgrade 1.22.0 -> 1.24.0
        networkmanager: upgrade 1.32.4 -> 1.32.8
        udisks2: upgrade 2.9.2 -> 2.9.3

  Anton Blanchard (2):
        boost-url: Use GNUInstallDirs instead of hard wiring install directories
        cereal: Use GNUInstallDirs instead of hard wiring install directories

  Changqing Li (1):
        linuxptp: upgrade 3.1 -> 3.1.1

  Devendra Tewari (1):
        android-tools: Add flag to enable adbd service (#147)

  Dmitry Baryshkov (1):
        image_types_sparse: stop using ext2simg

  Easwar Hariharan (1):
        chrony: Fix privdrop packageconfig

  Joe Slater (1):
        nginx: fix CVE-2021-3618

  Justin Bronder (1):
        hidapi: add rdep on glibc-gconv-utf-16

  Khem Raj (7):
        layer.conf: Add ttf-ipa to SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS on fontconfig
        mpich: link explictly with libgcc
        packagegroup-meta-networking: Add bmon
        libnss-nisplus: Remove
        pipewire: Upgrade to 0.3.34
        bluealsa: Add recipe
        apitrace: Enable on glibc >= 2.34

  Leon Anavi (21):
        python3-astroid: Upgrade 2.6.6 -> 2.7.0
        python3-ujson: Upgrade 4.0.2 -> 4.1.0
        python3-pycurl: Upgrade 7.44.0 -> 7.44.1
        python3-websocket-client: Upgrade 1.1.0 -> 1.2.1
        python3-bitarray: Upgrade 2.2.5 -> 2.3.0
        python3-langtable: Upgrade 0.0.54 -> 0.0.56
        python3-pandas: Upgrade 1.3.1 -> 1.3.2
        python3-tzlocal: Upgrade 2.1 -> 3.0
        python3-zeroconf: Upgrade 0.34.3 -> 0.36.0
        python3-dbus-next: Upgrade 0.2.2 -> 0.2.3
        python3-astroid: Upgrade 2.7.0 -> 2.7.1
        python3-ruamel-yaml: Upgrade 0.17.10 -> 0.17.11
        python3-unidiff: Upgrade 0.6.0 -> 0.7.0
        python3-qrcode: Upgrade 7.2 -> 7.3
        python3-simplejson: Upgrade 3.17.3 -> 3.17.4
        python3-regex: Upgrade 2021.7.6 -> 2021.8.3
        python3-colorlog: Upgrade 5.0.1 -> 6.4.1
        python3-ruamel-yaml: Upgrade 0.17.11 -> 0.17.13
        python3-simplejson: Upgrade 3.17.4 -> 3.17.5
        python3-bitarray: Upgrade 2.3.0 -> 2.3.2
        python3-watchdog: Upgrade 2.1.3 -> 2.1.5

  Martin Jansa (1):
        layer.conf: Add ttf-takao to SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS on fontconfig

  Matija Tudan (1):
        gpsd: upgrade 3.20 -> 3.23

  Matteo Croce (1):
        libbpf: bump to 0.4.0

  Michael Opdenacker (2):
        meta-multimedia: stop using "virtual/" in RPROVIDES and RDEPENDS
        meta-oe: stop using "virtual/" in RPROVIDES and RDEPENDS

  Mingli Yu (4):
        polkit: fix CVE-2021-3560
        vsftpd: Upgrade to 3.0.5
        mariadb: Upgrade to 10.6.4
        jemalloc: improve reproducibility

  Nathan Rossi (1):
        nginx: Fix off_t size passed in configure

  Oleksandr Kravchuk (6):
        font-adobe-100dpi: fix UPSTREAM_CHECK_REGEX
        font-adobe-utopia-100dpi: fix UPSTREAM_CHECK_REGEX
        font-bh-100dpi: fix UPSTREAM_CHECK_REGEX
        font-bh-lucidatypewriter-100dpi: fix UPSTREAM_CHECK_REGEX
        font-bitstream-100dpi: fix UPSTREAM_CHECK_REGEX
        xf86-input-tslib: update to 1.1.1

  Patrick Areny (2):
        libConfuse: Add recipe
        bmon: Add recipe

  Peter Kjellerstedt (6):
        gpsd: Let scons install the udev and systemd files
        gpsd: Move /usr/share/gpsd/doc to the gpsd-doc package
        poppler: Explicitly enable/disable boost together with splash
        chrony: Use new override syntax for USERADD_PARAM
        gpsd: Correct the installation of gpsd.hotplug if systemd is not enabled
        gpsd: Do not install gpsd.hotplug unconditionally

  Peter Morrow (1):
        libbpf: remove stale comment

  Sakib Sajal (2):
        lmdb: use libprefix in Makefile to install libraries
        gd: fix CVE-2021-38115

  Sinan Kaya (4):
        c-ares: remove custom patches
        grpc: make SHARED library build optional
        libkcapi: add a hash only packageconfig
        libkcapi: allow an option to build natively

  Tim Orling (2):
        bootchart: drop; unfetchable
        python3-django_2.2.x: only check upstream 2.2.x

  Trevor Gamblin (5):
        python3-click: Add missing ptest artifacts
        python3-eventlet: add 0.30.2 to meta-python
        python3-gunicorn: tweak run-ptest, add RDEPENDS
        python3-license-expression: add ptest artifacts
        nftables: upgrade 0.9.9 -> 1.0.0

  Vesa Jääskeläinen (2):
        python3-cached-property: Add recipe for version 1.5.2
        python3-pkcs11: Add recipe for version 0.7.0

  Yi Zhao (2):
        audit: upgrade 3.0.4 -> 3.0.5
        krb5: filtering out -f*-prefix-map from krb5-config

  Zoltán Böszörményi (1):
        metacity: Add a patch to create build/src/core before moving generated sources to it

  leimaohui (3):
        packagegroup-meta-oe: Update ttf-ipa package name.
        uim: Dleted takao fonts from DEPENDS.
        takao-fonts: It should be in ttf-fonts directory as the other ttf fonts.

  wangmy (14):
        fetchmail: upgrade 6.4.20 -> 6.4.21
        c-ares: upgrade 1.17.1 -> 1.17.2
        icewm: upgrade 2.6.0 -> 2.7.0
        netplan: upgrade 0.102 -> 0.103
        ctags: upgrade 5.9.20210801.0 -> 5.9.20210815.0
        live555: upgrade 20210720 -> 20210809
        opensc: upgrade 0.21.0 -> 0.22.0
        xfsprogs: upgrade 5.12.0 -> 5.13.0
        networkmanager: upgrade 1.32.8 -> 1.32.10
        can-utils: upgrade 2021.06.0 -> 2021.08.0
        doxygen: upgrade 1.9.1 -> 1.9.2
        gensio: upgrade 2.2.8 -> 2.2.9
        live555: upgrade 20210809 -> 20210824
        sedutil: upgrade 1.15.1.01 -> 1.20.0

  zangrc (14):
        python3-flask-migrate: upgrade 3.0.1 -> 3.1.0
        python3-flask-socketio: upgrade 5.1.0 -> 5.1.1
        python3-google-api-python-client: upgrade 2.15.0 -> 2.17.0
        python3-grpcio-tools: upgrade 1.38.1 -> 1.39.0
        python3-grpcio: upgrade 1.38.1 -> 1.39.0
        python3-wheel: upgrade 0.36.2 -> 0.37.0
        libio-socket-ssl-perl: upgrade 2.071 -> 2.072
        python3-aiohttp-jinja2: upgrade 1.4.2 -> 1.5
        python3-gevent: upgrade 21.1.2 -> 21.8.0
        python3-google-api-python-client: upgrade 2.17.0 -> 2.18.0
        python3-h5py: upgrade 3.3.0 -> 3.4.0
        python3-haversine: upgrade 2.3.1 -> 2.4.0
        python3-pyephem: upgrade 3.7.7.1 -> 4.0.0.2
        rdma-core: upgrade 35.0 -> 36.0

  zhengruoqin (12):
        libqmi: upgrade 1.28.8 -> 1.30.0
        sedutil: upgrade 1.15.1 -> 1.15.1.01
        libencode-perl: upgrade 3.11 -> 3.12
        python3-pymisp: upgrade 2.4.144 -> 2.4.148
        python3-pyzmq: upgrade 22.1.0 -> 22.2.1
        python3-tqdm: upgrade 4.62.0 -> 4.62.2
        iwd: upgrade 1.16 -> 1.17
        xmlsec1: upgrade 1.2.31 -> 1.2.32
        xrdb: upgrade 1.2.0 -> 1.2.1
        python3-regex: upgrade 2021.8.3 -> 2021.8.27
        python3-sqlalchemy: upgrade 1.4.22 -> 1.4.23
        python3-stevedore: upgrade 3.3.0 -> 3.4.0

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I2960f1ce53a1e2cde8b03b929829db9a2f105541
diff --git a/poky/meta/lib/crate.py b/poky/meta/lib/crate.py
new file mode 100644
index 0000000..d10f441
--- /dev/null
+++ b/poky/meta/lib/crate.py
@@ -0,0 +1,149 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementation for crates.io
+"""
+
+# Copyright (C) 2016 Doug Goldstein
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+import hashlib
+import json
+import os
+import shutil
+import subprocess
+import bb
+from   bb.fetch2 import logger, subprocess_setup, UnpackError
+from   bb.fetch2.wget import Wget
+
+
+class Crate(Wget):
+
+    """Class to fetch crates via wget"""
+
+    def _cargo_bitbake_path(self, rootdir):
+        return os.path.join(rootdir, "cargo_home", "bitbake")
+
+    def supports(self, ud, d):
+        """
+        Check to see if a given url is for this fetcher
+        """
+        return ud.type in ['crate']
+
+    def recommends_checksum(self, urldata):
+        return False
+
+    def urldata_init(self, ud, d):
+        """
+        Sets up to download the respective crate from crates.io
+        """
+
+        if ud.type == 'crate':
+            self._crate_urldata_init(ud, d)
+
+        super(Crate, self).urldata_init(ud, d)
+
+    def _crate_urldata_init(self, ud, d):
+        """
+        Sets up the download for a crate
+        """
+
+        # URL syntax is: crate://NAME/VERSION
+        # break the URL apart by /
+        parts = ud.url.split('/')
+        if len(parts) < 5:
+            raise bb.fetch2.ParameterError("Invalid URL: Must be crate://HOST/NAME/VERSION", ud.url)
+
+        # last field is version
+        version = parts[len(parts) - 1]
+        # second to last field is name
+        name = parts[len(parts) - 2]
+        # host (this is to allow custom crate registries to be specified
+        host = '/'.join(parts[2:len(parts) - 2])
+
+        # if using upstream just fix it up nicely
+        if host == 'crates.io':
+            host = 'crates.io/api/v1/crates'
+
+        ud.url = "https://%s/%s/%s/download" % (host, name, version)
+        ud.parm['downloadfilename'] = "%s-%s.crate" % (name, version)
+        ud.parm['name'] = name
+
+        logger.debug(2, "Fetching %s to %s" % (ud.url, ud.parm['downloadfilename']))
+
+    def unpack(self, ud, rootdir, d):
+        """
+        Uses the crate to build the necessary paths for cargo to utilize it
+        """
+        if ud.type == 'crate':
+            return self._crate_unpack(ud, rootdir, d)
+        else:
+            super(Crate, self).unpack(ud, rootdir, d)
+
+    def _crate_unpack(self, ud, rootdir, d):
+        """
+        Unpacks a crate
+        """
+        thefile = ud.localpath
+
+        # possible metadata we need to write out
+        metadata = {}
+
+        # change to the rootdir to unpack but save the old working dir
+        save_cwd = os.getcwd()
+        os.chdir(rootdir)
+
+        pn = d.getVar('BPN')
+        if pn == ud.parm.get('name'):
+            cmd = "tar -xz --no-same-owner -f %s" % thefile
+        else:
+            cargo_bitbake = self._cargo_bitbake_path(rootdir)
+
+            cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_bitbake)
+
+            # ensure we've got these paths made
+            bb.utils.mkdirhier(cargo_bitbake)
+
+            # generate metadata necessary
+            with open(thefile, 'rb') as f:
+                # get the SHA256 of the original tarball
+                tarhash = hashlib.sha256(f.read()).hexdigest()
+
+            metadata['files'] = {}
+            metadata['package'] = tarhash
+
+        # path it
+        path = d.getVar('PATH')
+        if path:
+            cmd = "PATH=\"%s\" %s" % (path, cmd)
+        bb.note("Unpacking %s to %s/" % (thefile, os.getcwd()))
+
+        ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
+
+        os.chdir(save_cwd)
+
+        if ret != 0:
+            raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
+
+        # if we have metadata to write out..
+        if len(metadata) > 0:
+            cratepath = os.path.splitext(os.path.basename(thefile))[0]
+            bbpath = self._cargo_bitbake_path(rootdir)
+            mdfile = '.cargo-checksum.json'
+            mdpath = os.path.join(bbpath, cratepath, mdfile)
+            with open(mdpath, "w") as f:
+                json.dump(metadata, f)
diff --git a/poky/meta/lib/oe/elf.py b/poky/meta/lib/oe/elf.py
index df0a459..46c884a 100644
--- a/poky/meta/lib/oe/elf.py
+++ b/poky/meta/lib/oe/elf.py
@@ -61,6 +61,14 @@
                         "microblaze":  (189,   0,    0,          False,         32),
                         "microblazeel":(189,   0,    0,          True,          32),
                       },
+            "linux-android" : {
+                        "aarch64" :   (183,    0,    0,          True,          64),
+                        "i686":       ( 3,     0,    0,          True,          32),
+                        "x86_64":     (62,     0,    0,          True,          64),
+                      },
+            "linux-androideabi" : {
+                        "arm" :       (40,    97,    0,          True,          32),
+                      },
             "linux-musl" : { 
                         "aarch64" :   (183,    0,    0,            True,          64),
                         "aarch64_be" :(183,    0,    0,            False,         64),
diff --git a/poky/meta/lib/oe/prservice.py b/poky/meta/lib/oe/prservice.py
index 15ce060..339f7ae 100644
--- a/poky/meta/lib/oe/prservice.py
+++ b/poky/meta/lib/oe/prservice.py
@@ -11,7 +11,6 @@
         if check:
             if not conn.ping():
                 raise Exception('service not available')
-        d.setVar("__PRSERV_CONN",conn)
     except Exception as exc:
         bb.fatal("Connecting to PR service %s:%s failed: %s" % (host_params[0], host_params[1], str(exc)))
 
@@ -22,31 +21,29 @@
         bb.error("Not using network based PR service")
         return None
 
-    conn = d.getVar("__PRSERV_CONN")
+    conn = prserv_make_conn(d)
     if conn is None:
-        conn = prserv_make_conn(d)
-        if conn is None:
-            bb.error("Making connection failed to remote PR service")
-            return None
+        bb.error("Making connection failed to remote PR service")
+        return None
 
     #dump db
     opt_version = d.getVar('PRSERV_DUMPOPT_VERSION')
     opt_pkgarch = d.getVar('PRSERV_DUMPOPT_PKGARCH')
     opt_checksum = d.getVar('PRSERV_DUMPOPT_CHECKSUM')
     opt_col = ("1" == d.getVar('PRSERV_DUMPOPT_COL'))
-    return conn.export(opt_version, opt_pkgarch, opt_checksum, opt_col)
+    d = conn.export(opt_version, opt_pkgarch, opt_checksum, opt_col)
+    conn.close()
+    return d
 
 def prserv_import_db(d, filter_version=None, filter_pkgarch=None, filter_checksum=None):
     if not d.getVar('PRSERV_HOST'):
         bb.error("Not using network based PR service")
         return None
 
-    conn = d.getVar("__PRSERV_CONN")
+    conn = prserv_make_conn(d)
     if conn is None:
-        conn = prserv_make_conn(d)
-        if conn is None:
-            bb.error("Making connection failed to remote PR service")
-            return None
+        bb.error("Making connection failed to remote PR service")
+        return None
     #get the entry values
     imported = []
     prefix = "PRAUTO$"
@@ -70,6 +67,7 @@
                 bb.error("importing(%s,%s,%s,%d) failed. DB may have larger value %d" % (version,pkgarch,checksum,value,ret))
             else:
                imported.append((version,pkgarch,checksum,value))
+    conn.close()
     return imported
 
 def prserv_export_tofile(d, metainfo, datainfo, lockdown, nomax=False):
@@ -125,4 +123,5 @@
     except TypeError:
         bb.fatal('Undefined/incorrect PRSERV_HOST value. Format: "host:port"')
     else:
-        prserv_make_conn(d, True)
+        conn = prserv_make_conn(d, True)
+        conn.close()
diff --git a/poky/meta/lib/oe/utils.py b/poky/meta/lib/oe/utils.py
index a84039f..238af31 100644
--- a/poky/meta/lib/oe/utils.py
+++ b/poky/meta/lib/oe/utils.py
@@ -344,7 +344,29 @@
     import re
     return re.sub(r"\s+", " ", string).strip()
 
-def format_pkg_list(pkg_dict, ret_format=None):
+def rprovides_map(pkgdata_dir, pkg_dict):
+    # Map file -> pkg provider
+    rprov_map = {}
+
+    for pkg in pkg_dict:
+        path_to_pkgfile = os.path.join(pkgdata_dir, 'runtime-reverse', pkg)
+        if not os.path.isfile(path_to_pkgfile):
+            continue
+        with open(path_to_pkgfile) as f:
+            for line in f:
+                if line.startswith('RPROVIDES') or line.startswith('FILERPROVIDES'):
+                    # List all components provided by pkg.
+                    # Exclude version strings, i.e. those starting with (
+                    provides = [x for x in line.split()[1:] if not x.startswith('(')]
+                    for prov in provides:
+                        if prov in rprov_map:
+                            rprov_map[prov].append(pkg)
+                        else:
+                            rprov_map[prov] = [pkg]
+
+    return rprov_map
+
+def format_pkg_list(pkg_dict, ret_format=None, pkgdata_dir=None):
     output = []
 
     if ret_format == "arch":
@@ -357,9 +379,15 @@
         for pkg in sorted(pkg_dict):
             output.append("%s %s %s" % (pkg, pkg_dict[pkg]["arch"], pkg_dict[pkg]["ver"]))
     elif ret_format == "deps":
+        rprov_map = rprovides_map(pkgdata_dir, pkg_dict)
         for pkg in sorted(pkg_dict):
             for dep in pkg_dict[pkg]["deps"]:
-                output.append("%s|%s" % (pkg, dep))
+                if dep in rprov_map:
+                    # There could be multiple providers within the image
+                    for pkg_provider in rprov_map[dep]:
+                        output.append("%s|%s * %s [RPROVIDES]" % (pkg, pkg_provider, dep))
+                else:
+                    output.append("%s|%s" % (pkg, dep))
     else:
         for pkg in sorted(pkg_dict):
             output.append(pkg)
diff --git a/poky/meta/lib/oeqa/runtime/cases/parselogs.py b/poky/meta/lib/oeqa/runtime/cases/parselogs.py
index af8a8d6..5db0216 100644
--- a/poky/meta/lib/oeqa/runtime/cases/parselogs.py
+++ b/poky/meta/lib/oeqa/runtime/cases/parselogs.py
@@ -98,6 +98,7 @@
     'qemux86' : [
         'Failed to access perfctr msr (MSR',
         'pci 0000:00:00.0: [Firmware Bug]: reg 0x..: invalid BAR (can\'t size)',
+        'failed to IDENTIFY (I/O error, err_mask=0x4)',
         ] + qemux86_common,
     'qemux86-64' : qemux86_common,
     'qemumips' : [
diff --git a/poky/meta/lib/oeqa/sdk/buildtools-cases/build.py b/poky/meta/lib/oeqa/sdk/buildtools-cases/build.py
index 5a17ab9..9c9a84b 100644
--- a/poky/meta/lib/oeqa/sdk/buildtools-cases/build.py
+++ b/poky/meta/lib/oeqa/sdk/buildtools-cases/build.py
@@ -3,6 +3,7 @@
 #
 
 import os, tempfile
+import time
 from oeqa.sdk.case import OESDKTestCase
 from oeqa.utils.subprocesstweak import errors_have_output
 errors_have_output()
@@ -20,4 +21,10 @@
                 conf.write('\n')
                 conf.write('DL_DIR = "%s"\n' % self.td['DL_DIR'])
 
-            self._run('. %s/oe-init-build-env %s && bitbake virtual/libc' % (corebase, testdir))
+            try:
+                self._run('. %s/oe-init-build-env %s && bitbake virtual/libc' % (corebase, testdir))
+            finally:
+                delay = 10
+                while delay and os.path.exists(testdir + "/bitbake.lock"):
+                    time.sleep(1)
+                    delay = delay - 1
diff --git a/poky/meta/lib/oeqa/sdk/buildtools-cases/gcc.py b/poky/meta/lib/oeqa/sdk/buildtools-cases/gcc.py
new file mode 100644
index 0000000..36ba15b
--- /dev/null
+++ b/poky/meta/lib/oeqa/sdk/buildtools-cases/gcc.py
@@ -0,0 +1,29 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+import os.path
+from oeqa.sdk.case import OESDKTestCase
+
+class GccTests(OESDKTestCase):
+    def test_verify_specs(self):
+        """
+        Verify that the compiler has been relocated successfully and isn't
+        looking in the hard-coded prefix.
+        """
+        # Canonicalise the SDK root
+        sdk_base = os.path.realpath(self.tc.sdk_dir)
+        # Canonicalise the location of GCC
+        gcc_path = os.path.realpath(self._run("command -v gcc").strip())
+        # Skip the test if the GCC didn't come from the buildtools, as it only
+        # comes with buildtools-extended-tarball.
+        if os.path.commonprefix((sdk_base, gcc_path)) != sdk_base:
+            self.skipTest("Buildtools does not provide GCC")
+
+        # This is the prefix that GCC is build with, and should be replaced at
+        # installation time.
+        sdkpath = self.td.get("SDKPATH")
+        self.assertTrue(sdkpath)
+
+        for line in self._run('gcc -dumpspecs').splitlines():
+            self.assertNotIn(sdkpath, line)
diff --git a/poky/meta/lib/oeqa/sdk/buildtools-cases/https.py b/poky/meta/lib/oeqa/sdk/buildtools-cases/https.py
new file mode 100644
index 0000000..134879a
--- /dev/null
+++ b/poky/meta/lib/oeqa/sdk/buildtools-cases/https.py
@@ -0,0 +1,20 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.sdk.case import OESDKTestCase
+from oeqa.utils.subprocesstweak import errors_have_output
+errors_have_output()
+
+class HTTPTests(OESDKTestCase):
+    """
+    Verify that HTTPS certificates are working correctly, as this depends on
+    environment variables being set correctly.
+    """
+
+    def test_wget(self):
+        self._run('env -i wget --debug --output-document /dev/null https://www.example.com')
+
+    def test_python(self):
+        # urlopen() returns a file-like object on success and throws an exception otherwise
+        self._run('python3 -c \'import urllib.request; urllib.request.urlopen("https://www.example.com/")\'')
diff --git a/poky/meta/lib/oeqa/selftest/cases/buildoptions.py b/poky/meta/lib/oeqa/selftest/cases/buildoptions.py
index be49322..f998817 100644
--- a/poky/meta/lib/oeqa/selftest/cases/buildoptions.py
+++ b/poky/meta/lib/oeqa/selftest/cases/buildoptions.py
@@ -148,6 +148,30 @@
         self.run_buildhistory_operation(target, target_config="PR = \"r1\"", change_bh_location=True)
         self.run_buildhistory_operation(target, target_config="PR = \"r0\"", change_bh_location=False, expect_error=True, error_regex=error)
 
+    def test_fileinfo(self):
+        self.config_buildhistory()
+        bitbake('hicolor-icon-theme')
+        history_dir = get_bb_var('BUILDHISTORY_DIR_PACKAGE', 'hicolor-icon-theme')
+        self.assertTrue(os.path.isdir(history_dir), 'buildhistory dir was not created.')
+
+        def load_bh(f):
+            d = {}
+            for line in open(f):
+                split = [s.strip() for s in line.split('=', 1)]
+                if len(split) > 1:
+                    d[split[0]] = split[1]
+            return d
+
+        data = load_bh(os.path.join(history_dir, 'hicolor-icon-theme', 'latest'))
+        self.assertIn('FILELIST', data)
+        self.assertEqual(data['FILELIST'], '/usr/share/icons/hicolor/index.theme')
+        self.assertGreater(int(data['PKGSIZE']), 0)
+
+        data = load_bh(os.path.join(history_dir, 'hicolor-icon-theme-dev', 'latest'))
+        if 'FILELIST' in data:
+            self.assertEqual(data['FILELIST'], '')
+        self.assertEqual(int(data['PKGSIZE']), 0)
+
 class ArchiverTest(OESelftestTestCase):
     def test_arch_work_dir_and_export_source(self):
         """
diff --git a/poky/meta/lib/oeqa/selftest/cases/distrodata.py b/poky/meta/lib/oeqa/selftest/cases/distrodata.py
index 4a45855..9089798 100644
--- a/poky/meta/lib/oeqa/selftest/cases/distrodata.py
+++ b/poky/meta/lib/oeqa/selftest/cases/distrodata.py
@@ -93,7 +93,7 @@
 
         def is_maintainer_exception(entry):
             exceptions = ["musl", "newlib", "linux-yocto", "linux-dummy", "mesa-gl", "libgfortran",
-                          "cve-update-db-native"]
+                          "cve-update-db-native", "rust"]
             for i in exceptions:
                  if i in entry:
                      return True
diff --git a/poky/meta/lib/oeqa/selftest/cases/glibc.py b/poky/meta/lib/oeqa/selftest/cases/glibc.py
index be97923..6f96281 100644
--- a/poky/meta/lib/oeqa/selftest/cases/glibc.py
+++ b/poky/meta/lib/oeqa/selftest/cases/glibc.py
@@ -33,7 +33,7 @@
 
         ptestsuite = "glibc-user" if ssh is None else "glibc"
         self.ptest_section(ptestsuite)
-        with open(os.path.join(builddir, "tests.sum"), "r") as f:
+        with open(os.path.join(builddir, "tests.sum"), "r",  errors='replace') as f:
             for test, result in parse_values(f):
                 self.ptest_result(ptestsuite, test, result)
 
diff --git a/poky/meta/lib/oeqa/selftest/cases/reproducible.py b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
index 910ef0d..e4582cb 100644
--- a/poky/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -27,13 +27,17 @@
 
 # ruby-ri-docs, meson:
 #https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210215-0_td9la2/packages/diff-html/
+# rust-llvm:
+#https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210825-kaihham6/
 exclude_packages = [
 	'glide',
 	'go-helloworld',
 	'go-runtime',
 	'go_',
 	'go-',
-	'ruby-ri-docs'
+	'ruby-ri-docs',
+	'rust-llvm-liblto',
+	'rust-llvm-staticdev'
 	]
 
 def is_excluded(package):
diff --git a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
index 4cfec94..129503d 100644
--- a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -212,12 +212,14 @@
         Author: Alexander Kanavin <alex.kanavin@gmail.com>
         """
         import subprocess, os
+
+        render_hint = """If /dev/dri/renderD* is absent due to lack of suitable GPU, 'modprobe vgem' will create one sutable for mesa llvmpipe sofware renderer."""
         try:
             content = os.listdir("/dev/dri")
             if len([i for i in content if i.startswith('render')]) == 0:
-                self.skipTest("No render nodes found in /dev/dri: %s" %(content))
+                self.skipTest("No render nodes found in /dev/dri: %s. %s" %(content, render_hint))
         except FileNotFoundError:
-            self.skipTest("/dev/dri directory does not exist; no render nodes available on this machine.")
+            self.skipTest("/dev/dri directory does not exist; no render nodes available on this machine. %s" %(render_hint))
         try:
             dripath = subprocess.check_output("pkg-config --variable=dridriverdir dri", shell=True)
         except subprocess.CalledProcessError as e:
diff --git a/poky/meta/lib/oeqa/selftest/cases/wic.py b/poky/meta/lib/oeqa/selftest/cases/wic.py
index 2efbe51..3b41434 100644
--- a/poky/meta/lib/oeqa/selftest/cases/wic.py
+++ b/poky/meta/lib/oeqa/selftest/cases/wic.py
@@ -11,6 +11,7 @@
 import os
 import sys
 import unittest
+import hashlib
 
 from glob import glob
 from shutil import rmtree, copy
@@ -686,6 +687,63 @@
                                       % (wks_file, self.resultdir), ignore_status=True).status)
         os.remove(wks_file)
 
+    def test_no_fstab_update(self):
+        """Test --no-fstab-update wks option."""
+
+        oldpath = os.environ['PATH']
+        os.environ['PATH'] = get_bb_var("PATH", "wic-tools")
+
+        # Get stock fstab from base-files recipe
+        self.assertEqual(0, bitbake('base-files -c do_install').status)
+        bf_fstab = os.path.join(get_bb_var('D', 'base-files'), 'etc/fstab')
+        self.assertEqual(True, os.path.exists(bf_fstab))
+        bf_fstab_md5sum = runCmd('md5sum %s 2>/dev/null' % bf_fstab).output.split(" ")[0]
+
+        try:
+            no_fstab_update_path = os.path.join(self.resultdir, 'test-no-fstab-update')
+            os.makedirs(no_fstab_update_path)
+            wks_file = os.path.join(no_fstab_update_path, 'temp.wks')
+            with open(wks_file, 'w') as wks:
+                wks.writelines(['part / --source rootfs --fstype=ext4 --label rootfs\n',
+                                'part /mnt/p2 --source rootfs --rootfs-dir=core-image-minimal ',
+                                '--fstype=ext4 --label p2 --no-fstab-update\n'])
+            runCmd("wic create %s -e core-image-minimal -o %s" \
+                                       % (wks_file, self.resultdir))
+
+            part_fstab_md5sum = []
+            for i in range(1, 3):
+                part = glob(os.path.join(self.resultdir, 'temp-*.direct.p') + str(i))[0]
+                part_fstab = runCmd("debugfs -R 'cat etc/fstab' %s 2>/dev/null" % (part))
+                part_fstab_md5sum.append(hashlib.md5((part_fstab.output + "\n\n").encode('utf-8')).hexdigest())
+
+            # '/etc/fstab' in partition 2 should contain the same stock fstab file
+            # as the one installed by the base-file recipe.
+            self.assertEqual(bf_fstab_md5sum, part_fstab_md5sum[1])
+
+            # '/etc/fstab' in partition 1 should contain an updated fstab file.
+            self.assertNotEqual(bf_fstab_md5sum, part_fstab_md5sum[0])
+
+        finally:
+            os.environ['PATH'] = oldpath
+
+    def test_no_fstab_update_errors(self):
+        """Test --no-fstab-update wks option error handling."""
+        wks_file = 'temp.wks'
+
+        # Absolute argument.
+        with open(wks_file, 'w') as wks:
+            wks.write("part / --source rootfs --fstype=ext4 --no-fstab-update /etc")
+        self.assertNotEqual(0, runCmd("wic create %s -e core-image-minimal -o %s" \
+                                      % (wks_file, self.resultdir), ignore_status=True).status)
+        os.remove(wks_file)
+
+        # Argument pointing to parent directory.
+        with open(wks_file, 'w') as wks:
+            wks.write("part / --source rootfs --fstype=ext4 --no-fstab-update ././..")
+        self.assertNotEqual(0, runCmd("wic create %s -e core-image-minimal -o %s" \
+                                      % (wks_file, self.resultdir), ignore_status=True).status)
+        os.remove(wks_file)
+
 class Wic2(WicTestCase):
 
     def test_bmap_short(self):
diff --git a/poky/meta/lib/oeqa/utils/qemurunner.py b/poky/meta/lib/oeqa/utils/qemurunner.py
index 5c9d2b2..d55248c 100644
--- a/poky/meta/lib/oeqa/utils/qemurunner.py
+++ b/poky/meta/lib/oeqa/utils/qemurunner.py
@@ -123,7 +123,10 @@
         import fcntl
         fl = fcntl.fcntl(o, fcntl.F_GETFL)
         fcntl.fcntl(o, fcntl.F_SETFL, fl | os.O_NONBLOCK)
-        return os.read(o.fileno(), 1000000).decode("utf-8")
+        try:
+            return os.read(o.fileno(), 1000000).decode("utf-8")
+        except BlockingIOError:
+            return ""
 
 
     def handleSIGCHLD(self, signum, frame):
@@ -535,6 +538,8 @@
             if self.runqemu.poll() is None:
                 self.logger.debug("Sending SIGKILL to runqemu")
                 os.killpg(os.getpgid(self.runqemu.pid), signal.SIGKILL)
+            if not self.runqemu.stdout.closed:
+                self.logger.info("Output from runqemu:\n%s" % self.getOutput(self.runqemu.stdout))
             self.runqemu.stdin.close()
             self.runqemu.stdout.close()
             self.runqemu_exited = True