subtree updates

meta-openembedded: f3018013ff..3b245e4fe8:
  Adrian Bunk (8):
        Remove start-stop-daemon
        dvb-apps: Remove workaround patch for ancient target compilers
        Remove ipsec-tools and umip
        gpsd: Switch PACKAGECONFIG[qt] from Qt4 to Qt5
        samba: Upgrade 4.8.11 -> 4.8.12
        recipes-devtools: Move back from meta-networking to meta-perl
        wireless-regdb: Upgrade 2019.03.01 -> 2019.06.03
        mcelog: Remove manual RDEPENDS from PN-ptest to PN package

  Alejandro del Castillo (1):
        apache2: add all extra/*.conf to conffiles

  Alistair Francis (1):
        python-obd: Uprade from 0.7.0 to 0.7.1

  Andreas Müller (1):
        python-six: put python2/3 variant together

  Andrei Gherzan (2):
        modemmanager: Update to 1.10.0
        networkmanager: Update to 1.18.0

  Ankit Navik (1):
        safec: Initial recipe for safe C library

  Carlos Rafael Giani (1):
        openh264: Fix armv7ve build

  Changqing Li (11):
        syslog-ng: add rconflict for package syslog-ng-libs
        netkit-telnet: add rconflicts
        samba/libldb: add rconflicts
        php-fpm-apache: fix module path
        phoronix-test-suite: upgrade from 8.6.0 -> 8.8.1
        python-pygobject: upgrade 3.28.3 -> 3.32.1
        rrdtool: upgrade 1.7.1 -> 1.7.2
        php: upgrade 7.3.4 -> 7.3.6
        xf86-video-ati: upgrade 18.0.1 -> 19.0.1
        pavucontrol: upgrade 3.0 -> 4.0
        multipath-tools: upgrade 0.8.0 -> 0.8.1

  Herman van Hazendonk (1):
        Geoclue: Update to 2.5.3

  Hongxu Jia (4):
        rrdtool: improve reproducibility
        crash: do not use unstable github archive tarballs
        postgresql: improve reproducibility
        net-snmp: split net-snmp-config to package net-snmp-dev

  Hongzhi.Song (1):
        spice: fix compile errors on 32bit system

  Horvath, Chris (1):
        lcov: Upgrade 1.11 -> 1.14

  James Feist (1):
        libgpiod: Enable cxx bindings by default

  Kai Kang (16):
        xfce4-session: 4.13.1 -> 4.13.2
        xfce4-screensaver: add recipe
        packagegroup-xfce-extended: add xfce4-screensaver
        lxdm: provides fake gdmflexiserver for xfce desktop environment
        thunar: 1.8.4 -> 1.8.6
        xfdesktop: 4.13.3 -> 4.13.4
        xfce4-panel: 4.13.4 -> 4.13.5
        thunar-volman: 0.9.1 -> 0.9.2
        xfce4-appfinder: 4.13.2 -> 4.13.3
        libxfce4util: 4.13.2 -> 4.13.3
        xfwm4: 4.13.1 -> 4.13.2
        xfconf: 4.13.6 -> 4.13.7
        libxfce4ui: 4.13.4 -> 4.13.5
        xfce4-power-manager: 1.6.1 -> 1.6.2
        xfce4-settings: set default theme Adwaita
        lxdm: provides fake gdmflexiserver for xfce desktop environment

  Khem Raj (8):
        libnfc: Fix build with musl
        openocd: Fix build on x86_64
        spice,spice-protocol: Uprev to 0.14.0
        udisks: Install bash_completion script in OE familiar dir
        udisks: Remove bash dependency
        python-jsmin,python-pytoml,python-which: Add recipes
        mozjs: Upgrade to version 60.x
        polkit: Upgrade to 0.116

  Liwei Song (1):
        turbostat: copy bits.h from kernel to turbostat

  Marek Belisko (1):
        libsrtp: Fix compilation and add pkgconfig

  Martin Jansa (17):
        igmpproxy: remove 0001-src-igmpproxy.h-Include-sys-types.h-for-u_short-u_in.patch and _GNU_SOURCE
        ne10, libopus: add armv7ve override as well
        pidgin: upgrade to 2.13.0
        funyahoo-plusplus, icyque, pidgin-sipe, purple-skypeweb: add couple plugins for pidgin
        hunspell: use git fetcher instead of github archive
        hunspell-dictionaries: import from meta-luneos to make hunspell in meta-oe a bit more useful
        ttf-mplus, ttf-vlgothic: add ttf-mplus license
        android-tools-conf: import one more improvement for android-gadget-setup from meta-luneos
        uriparser: upgrade to 0.9.3
        libmikmod: fix SRC_URI
        leptonica: fix SRC_URI
        libmikmod: upgrade to 3.3.11.1
        open-vm-tools: refresh the patches so that they can be easily applied with devtool or git am
        open-vm-tools: import gcc9 fixes from fedora
        spice: append to CFLAGS instead of +=
        cpprest: temporary ignore deprecated-copy and redundant-move errors detected by gcc9
        oprofile: drop virtual/kernel dependency and switch back to TUNE_PKGARCH

  Mingli Yu (4):
        mariadb: Upgrade to 10.3.15
        kea: Upgrade to 1.5.0
        hwloc: Upgrade to 1.11.12
        kea: replace -Og with -O

  Naveen Saini (1):
        pm-graph: add recipe

  Oleksandr Kravchuk (12):
        opensaf: update to 5.19.03
        python-ldap: update to 3.2.0
        rp-pppoe: update to 3.13
        atftp: update to 0.7.2
        ipcalc: update to 2.2.3
        mtr: update to 0.92
        nbd: update to 3.19
        mdns: update to 878.200.35
        lldpd: update to 1.0.3
        libp11: update to 0.4.10
        nano: update to 4.2
        libspatialite: update to 4.3.0a

  Ovidiu Panait (1):
        xfsprogs: Fix host contamination

  Paolo Valente (1):
        s-suite: push SRCREV to version 3.4

  Pascal Bach (1):
        rocksdb: 5.18.3 -> 6.0.2

  Qi.Chen@windriver.com (2):
        polkit: fix CVE-2019-6133
        .gitignore: add *.pyc and *.pyo

  Randy MacLeod (1):
        imagemagick: update from 7.0.8-43 to 7.0.8-47

  Robert Joslyn (4):
        cryptsetup: Add PACKAGECONFIG options
        lmsensors: Update to 3.5.0
        xfce4-session: Add xrdb RDEPENDS
        xfce4-session: Reformat DEPENDS and RDEPENDS

  Slater, Joseph (1):
        php-7: mark two tests as expected to fail

  Stefan Agner (1):
        haveged: fix CPU cache size detection

  Tim Orling (13):
        libterm-readkey-perl: upgrade 2.37 -> 2.38; fix upstream check; enable ptest
        libtest-deep-perl: add recipe for v1.128
        libcgi-perl: upgrade 4.38 -> 4.43; enable ptest
        libcrypt-openssl-guess-perl: rename from libcrypt-openssl-guess; enable ptest
        libcrypt-openssl-rsa-perl: upgrade 0.30 -> 0.31; enable ptest
        libcrypt-openssl-random-perl: upgrade 0.11 -> 0.15; enable ptest
        libextutils-installpaths-perl: upgrade 0.011 -> 0.012; enable ptest
        libexutils-config-perl: enable ptest
        libhtml-tagset-perl: add recipe for v3.20
        libhtml-parser-perl: enable ptest
        libstrictures-perl: upgrade 2.000003 -> 2.000006; enable ptest
        libxml-libxml-perl: enable ptest
        libcapture-tiny-perl: upgrade 0.46 -> 0.48; enable ptest

  William A. Kennington III via Openembedded-devel (1):
        cli11: 1.6.2 -> 1.7.1

  Yi Zhao (8):
        python-ldap: add python-pyasn1 and python-pyasn1-modules as runtime dependencies
        fuse: upgrade 2.9.8 -> 2.9.9
        yaffs2-utils: update to latest master
        xfsprogs: upgrade 4.18.0 -> 5.0.0
        fcgi: upgrade 2.4.1+git -> 2.4.2
        xdebug: upgrade 2.7.0RC2 -> 2.7.2
        phpmyadmin: upgrade 4.8.5 -> 4.9.0.1
        openipmi: upgrade 2.0.25 -> 2.0.27

  Zang Ruochen (13):
        python-pywbem: solved the conflict with python3-pywbem
        python3-pywbem:solved the conflict with python-pywbem
        python-pbr: upgrade 5.2.0 -> 5.2.1
        python-mako: upgrade 1.0.10 -> 1.0.12
        python-babel: upgrade 2.6.0 -> 2.7.0
        python-cachetools: upgrade 3.1.0 -> 3.1.1
        python-cryptography: upgrade 2.6.1 -> 2.7
        python-cryptography-vectors: upgrade 2.6.1 -> 2.7
        python-cython: upgrade 0.29.7 -> 0.29.10
        python-lxml: upgrade 4.3.3 -> 4.3.4
        python-psutil: upgrade 5.6.2 -> 5.6.3
        python-requests: upgrade 2.21.0 -> 2.22.0
        python-urllib3: upgrade 1.25.2 -> 1.25.3

  nick83ola (5):
        nginx: update to version 1.17.0
        nginx: update stable version to 1.16.0
        nginx: add PACKAGECONFIG[http-auth-request]
        nginx: fix kill path in nginx systemd unit file
        uthash: do not use unstable github archive tarballs

  thstead (1):
        Upgraded python-pysnmp from version 4.3.5. to 4.4.9.

  Łukasz Łaguna (1):
        gsl: update to version 2.5

meta-security: 9f5cc2a7eb..c28b72e91d:
  Armin Kuster (17):
        checksec: update to 1.11.1
        keyutils: fix library install path
        checksec: add runtime test
        meta-integrity: port over from meta-intel-iot-security
        layer.conf: add LAYERSERIES_COMPAT
        README: update
        ima-evm-utils: cleanup and update to tip
        ima.cfg: update to 5.0 kernel
        linux: update bbappend
        base-files: add appending to automount securityfs
        ima-policy-hashed: add new recipe
        ima_policy_simple: add another sample policy
        policy: add ima appraise all policy
        data: remove policies
        initramfs: clean up to pull in packages.
        runtime qa: moderize ima test
        image: add image for testing

  Changqing Li (1):
        samhain: add rconflict for client and server mode

  Zang Ruochen (4):
        bastille: solved the conflict with perl-module-text-wrap and base-files
        python-scapy: Remove redundant sed operations
        python-scapy: solved the conflict with python3-scapy
        python3-scapy: solved the conflict with python-scapy

  leimaohui (1):
        python3-fail2ban: Fix build error of xrange.

poky: 797916f93a..111b7173fe:
  Adrian Bunk (25):
        nss-myhostname: Stop trying to build for musl
        systemd: Some upstreamable musl patches have been upstreamed
        libnss-mdns: Stop trying to build for musl
        icu: Remove workaround for musl issue fixed upstream 2 years ago
        socat: Remove workaround for musl issue now fixed upstream
        ofono: Use external ell instead of an internal copy
        ofono: Fix another race condition during the build
        squashfs-tools: Mark as incompatible with musl
        apt: Remove workaround patches for no longer supported host distributions
        m4/tar: Remove remove-gets.patch
        pinentry: Switch pinentry-qt from Qt4 to Qt5
        librsvg: Replace workaround for old host systems with upstream fix
        vim: Move PACKAGECONFIG[gtkgui] from GTK 2 to GTK 3
        Remove Go 1.11
        go: Remove INSANE_SKIP_* textrel that are now handled in go.bbclass
        dpkg: Remove workaround patches for no longer supported host distributions
        lrzsz: Add implicit declaration fixes from Debian
        tcp-wrappers: Add compile warning fixes from Debian
        libpam: Upgrade 1.3.0 -> 1.3.1
        vte: Fix the license information
        gcc: Remove 0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
        openssl: Upgrade 1.1.1b -> 1.1.1c
        Remove manual RDEPENDS from PN-ptest to PN package
        ref-manual: Remove irda feature
        lttng-modules: Upgrade 2.10.9 -> 2.10.10

  Adrian Freihofer (3):
        qemurunner: fix undefined variable
        testimage: consider QB_DEFAULT_FSTYPE
        runqemu: QB_FSINFO to support fstype wic images

  Alejandro Enedino Hernandez Samaniego (1):
        python-numpy: Avoid installing copy of f2py script

  Alejandro Hernandez Samaniego (2):
        newlib: Upgrade to 3.1.0
        newlib: export CC_FOR_TARGET as CC

  Alejandro del Castillo (1):
        opkg-utils: upgrade to version 0.4.1

  Alex Kiernan (2):
        kernel-fitimage: uboot-sign: Check UBOOT_DTB_BINARY before adding deps
        systemd: Backport OpenSSL BUF_MEM fix

  Alexander Kanavin (53):
        vim: split the common part into vim.inc
        libpcre2: upgrade 10.32 -> 10.33
        librepo: upgrade 1.9.6 -> 1.10.2
        libmodulemd: upgrade 2.2.3 -> 2.4.0
        libmodulemd: fix erroneous linking against v2 library when v1 was requested
        createrepo-c: upgrade 0.12.2 -> 0.14.0
        libdazzle: upgrade 3.32.1 -> 3.32.2
        adwaita-icon-theme: upgrade 3.30.1 -> 3.32.0
        bison: upgrade 3.1 -> 3.3.2
        atk: upgrade 2.30.0 -> 2.32.0
        python3-mako: upgrade 1.0.9 -> 1.0.10
        nss: upgrade 3.43 -> 3.44
        go: update 1.12.1->1.12.5
        systemtap: upgrade 4.0 -> 4.1
        gawk: upgrade 4.2.1 -> 5.0.0
        alsa-plugins: upgrade 1.1.8 -> 1.1.9
        alsa-utils: upgrade 1.1.8 -> 1.1.9
        alsa-lib: upgrade 1.1.8 -> 1.1.9
        lz4: upgrade 1.9.0 -> 1.9.1
        libxcrypt: upgrade 4.4.4 -> 4.4.6
        python3-pip: upgrade 19.0.3 -> 19.1.1
        pkgconf: upgrade 1.6.0 -> 1.6.1
        at-spi2-core: upgrade 2.30.0 -> 2.32.1
        at-spi2-atk: upgrade 2.30.0 -> 2.32.0
        glib-networking: upgrade 2.60.1 -> 2.60.2
        libsoup-2.4: upgrade 2.66.1 -> 2.66.2
        x264: upgrade to latest revision
        linux-firmware: upgrade to latest revision
        python3-pbr: upgrade 5.1.3 -> 5.2.0
        bash-completion: upgrade 2.8 -> 2.9
        gst-examples: upgrade to 1.16.0
        acpica: upgrade 20190405 -> 20190509
        freetype: upgrade 2.9.1 -> 2.10.0
        usbutils: upgrade 010->012
        webkitgtk: update to 2.24.2
        epiphany: update to 3.32.2
        btrfs-tools: update to 5.1
        iproute2: upgrade 5.0.0 -> 5.1.0
        chkconfig: do not use unstable github archive tarballs
        chkconfig: fix upstream version check
        perl: update to 5.30.0
        piglit: upgrade to latest revision
        ccache: fix upstream version check
        Revert "ncurses: fix incorrect UPSTREAM_CHECK_GITTAGREGEX"
        sysstat: add UPSTREAM_VERSION_UNKNOWN
        python3-pygments: add a recipe
        gtk-doc: upgrade 1.29 -> 1.30
        libpsl: fix the gtk-doc 1.30 build
        source-highlight: remove the recipe
        mesa-demos: update to 8.4.0
        glib-2.0: udpate 2.58.3 -> 2.60.3
        gdk-pixbuf: update 2.38.0 -> 2.38.1
        gtk+3: update 3.24.5 -> 3.24.8

  Alistair Francis (3):
        gdb: Upgrade from 8.2.1 to 8.3
        gnu-config: Update to latest SHA
        qemu: Backport the arm segfault fix

  Andreas Müller (1):
        gsettings-desktop-schemas: upgrade 3.28.1 -> 3.32.0

  Andrei Gherzan (1):
        ca-certificates: Fix openssl runtime dependencies

  Anuj Mittal (8):
        Revert "image_types: use pigz to create .gz files"
        Revert "pigz: pigz is not gzip"
        libva: upgrade 2.4.0 -> 2.4.1
        ffmpeg: add PACKAGECONFIG for mfx
        libpam: fix upstream version check
        serf: cleanup recipe
        scons: inherit python3native
        python3-scons: fix regex replacing python by python3

  Bonnans, Laurent (1):
        kernel-uboot: compress arm64 kernels

  Bruce Ashfield (11):
        linux-yocto/5.0: update to v5.0.13
        linux-yocto/4.19: update to v4.19.40
        linux-yocto/4.19: update to v4.19.44
        kernel: package modules.builtin.modinfo
        linux-yocto-dev: bump to v5.2-rc
        linux-yocto/5.0: update to v5.0.17
        linux-yocto-rt/5.0: update to -rt9
        linux-yocto/5.0: update to v5.0.19
        linux-yocto-rt/5.0: update to -rt11
        linux-yocto/5.0: fix systemtap on arm
        linux-yocto: ptest: Add SCSI debug configuration for util-linux

  Carlos Rafael Giani (6):
        gstreamer1.0-plugins-base: upgrade to version 1.16.0
        gstreamer1.0-plugins-good: upgrade to version 1.16.0
        gstreamer1.0-plugins-bad: upgrade to version 1.16.0
        gstreamer1.0-plugins-ugly: upgrade to version 1.16.0
        gstreamer1.0-libav: upgrade to version 1.16.0
        gstreamer1.0-vaapi: upgrade to version 1.16.0

  Changqing Li (8):
        connman: add networkmanager as rconflict
        dropbear: add openssh/openssh-sshd as rconflict
        busybox-inittab/sysvinit-inittab: add rconflicts
        inetutils: fix wrong package name
        systemd: add rconflicts
        tiny-init: add rconflicts
        multilib: add override for image recipe
        qemu: fix qemu ptest cannot work

  Chee Yang Lee (3):
        wic: bootimg-efi: add label source parameter
        wic/engine: include .wks.in in wic search and list
        wic/plugins: kernel image refer to KERNEL_IMAGETYPE

  Chen Qi (5):
        libxfont2: set CVE_PRODUCT
        systemd: avoid musl specific patches affect glibc systems
        util-linux: upgrade to 2.33.2
        oescripts.py: avoid error when cairo module is not available
        context.py: fix skipping function

  Chris Laplante (5):
        base.bbclass: Add OE_EXTRA_IMPORTS
        bitbake: knotty: allow progress rate for indeterminate bars
        bitbake: build: extract progress handler creation logic into its own method
        bitbake: build/progress: use context managers for progress handlers
        bitbake: build: implement custom progress handlers injected via OE_EXTRA_IMPORTS

  David Frey (1):
        bluez5: manage udev dependency with PACKAGECONFIG

  David Reyna (1):
        bitbake: toaster: Fix Thud Bitbake release metadata

  Diego Rondini (1):
        bluez5: fix obex packaging

  Douglas Royds via Openembedded-core (1):
        json-c: Backport --disable-werror patch to allow compilation under icecc

  Fabio Berton (3):
        mesa: Update 19.0.3 -> 19.0.5
        mesa: Update 19.0.5 -> 19.0.6
        mesa: Update 19.0.6 -> 19.1.0

  Filip Jareš (1):
        recipes: Fix license "names"/versions.

  Haiqing Bai (1):
        kernel.bbclass: Make task clean depend on cleaning of make-mod-scripts

  He Zhe (1):
        lttng-modules: Add git based recipe

  Hongxu Jia (5):
        grub/grub-efi: fix unrecognized command line option '-pipe-Wno-error' in CFLAGS
        lib/oe/reciputils.py: support character `+' in git pv
        groff: improve reproducibility
        diffutils/run-ptest: support to run at arbitrary path
        openssh: fix potential signed overflow in pointer arithmatic

  Jaewon Lee (2):
        gstreamer1.0-python_1.16.0.bb: Override libpython dir
        devicetree.bbclass: Combine stderr into stdout to see actual dtc error

  Jean-Marie LEMETAYER (4):
        npm: get npm package name from npm pack
        npm: fix node and npm default directory conflict
        npm: remove some temporary build files
        bitbake: bitbake: fetch2/npm: fix npw view parsing

  Jiping Ma (1):
        dhcp:"dhclient -x eth0" action is not correct.

  Joe Slater (1):
        slang: modify an array test

  Jon Mason (2):
        resulttool: modify to be multi-machine
        resulttool: Remove prints if no tests occur

  Jonathan Rajotte (4):
        lttng-tools: prevent test timeout when lttng-modules is not present
        lttng-tools: add lttng-modules to ptest dependencies
        liburcu: update to 0.11.0
        liburcu: update to 0.11.1

  Joshua Watt (11):
        avahi: Add PACKAGECONFIG for libdns_sd
        perl: Preserve attributes when applying cross files
        btrfs-tools: Pass DEBUG_MAP_PREFIX flags to Python
        bitbake: bitbake: cooker: Rename __depends in all multiconfigs
        bitbake: bitbake: Show base multiconfig environment
        perl: Set build date to SOURCE_DATE_EPOCH
        glibc-locale: DEPEND on virtual/libc
        zip: Remove build date to improve reproducibility
        classes/package: Sort ELF file list
        bash: Replace uninative loader path in ptest
        oeqa: Add reproducible build selftest

  Kai Kang (3):
        systemd-conf: configure wired network with dhcp
        qemu/qemu-system-native: depend bison-native
        openssl: fix failure of ptest test_shlibload

  Kevin Hao (3):
        runqemu: Add the support to pass multi ports to tcpserial parameter
        oeqa/utils/qemurunner: Set both the threadport&serverport with tcpserial parameter
        tune-thunderx: Set the correct PACKAGE_EXTRA_ARCHS_tune-thunderx

  Khem Raj (6):
        mesa: Fix a case when gbm is enabled but DRIDRIVERS is not defined
        ofono: Add TEMP_FAILURE_RETRY optional definition
        Revert "musl: Add TEMP_FAILURE_RETRY from glibc"
        binutils: Workaround mips assembler crash on target
        musl: Upgrade to master tip
        gdb: Let gdbserver be empty for riscv64

  Lei Maohui (1):
        meson.bbclass: Make meson support aarch64_be.

  Luca Boccassi (2):
        python*-setuptools: add separate packages for pkg_resources module
        mdadm: use ${systemd_unitdir} rather than /lib/systemd

  Maciej Pijanowski (1):
        recipetool: add python3 support

  Mariano López (3):
        util-linux: Add missing ptest dependencies
        util-linux: Stop udevd to run ptests
        linux-yocto: Add scsi_debug module when ptest is in DISTRO_FEATURES

  Mark Hatle (1):
        bitbake: svn.py: Stop SVN from directly pulling from an external layer w/o fetcher

  Martin Jansa (5):
        python: add a fix for CVE-2019-9948 and CVE-2019-9636
        glib-networking: add PACKAGECONFIG for openssl
        bc: use u-a for bc as well
        opkg-utils: fix opkg-list-fields script
        pigz: install pigz, unpigz, pigzcat in native and nativesdk builds again

  Matthias Schiffer (1):
        bitbake: fetch2: runfetchcmd(): unset _PYTHON_SYSCONFIGDATA_NAME

  Matthias Schoepfer via Openembedded-core (1):
        python3: fix build on softfloat mips

  Michael Ho (1):
        base.bbclass: add named SRCREVs to the sstate hash

  Mike Crowe (1):
        cmake: Avoid passing empty prefix to os.path.relpath

  Mingli Yu (3):
        elfutils: fix ptest failures
        dbus: Upgrade to 1.12.16
        dbus-test: Upgrade 1.12.16

  Nicola Lunghi (3):
        connman: fix segfault with musl >v1.1.21
        rng-tools: recipe cleanup
        rng-tools: harmonise systemd and sysvinit

  Oleksandr Kravchuk (6):
        ethtool: update to 5.1
        file: update to 5.37
        p11-kit: update to 0.23.16.1
        popt: fix SRC_URI
        selftest/devtool: fix URI to MarkupSafe package
        bitbake: cooker: list all nonexistent bblayer directories

  Oliver Stäbler (1):
        packagegroup-core-full-cmdline: Make nfs-utils/rpcbind optional

  Peter Kjellerstedt (3):
        texinfo-dummy-native: A little clean up of template.py
        texinfo-dummy-native: Rewrite template.py to use argparse
        package.bbclass: Clean up writing of runtime pkgdata files

  Philippe Normand (9):
        gstreamer1.0: upgrade to version 1.16.0
        gstreamer1.0-omx: upgrade to version 1.16.0
        gstreamer1.0-rtsp-server: upgrade to version 1.16.0
        gstreamer1.0-python: upgrade to version 1.16.0
        gst-validate: upgrade to version 1.16.0
        cmake: Use compiler launcher variable when ccache is enabled
        at-spi2: Make X11 support truly optional
        gnutls: Use ca-certificates as default trust store file
        gnutls: Use the sysconfdir variable for the ca-certificates path

  Quentin Schulz (2):
        meta: license: fix non-SPDX license being removed from INCOMPATIBLE_LICENSE
        selftests: add tests for INCOMPATIBLE_LICENSE

  Randy MacLeod (6):
        valgrind: Make ptest timestamps copasetic
        valgrind: add 'file' to ptest depends
        util-linux: add setpriv utility
        libcap-ng: split into libcap-ng/libcap-ng-python
        ptest-runner: enable child procs as session leader
        bash: use setpriv, sed.sed to run ptests

  Richard Purdie (46):
        perl-rdepends: Add missing module dependencies
        bash: Fix bash-ptest dependencies
        openssh: Add sudo dependency for ptest
        libpcre: Add make dependency for ptest
        m4: Add coreutils and diffutils dependency for ptest
        perl/modules: Add various missing ptest perl module dependencies
        layer.conf: Whitelist lttng-tools->lttng-modules dependency
        tcmode-default: Make gcc9 the default
        lttng-tools: Fix patch Upstream-Status
        mesa: Fix patch Upstream-Status
        uninative-tarball: Fix file generation after class changes
        populate_sdk_base: Use highest compression level for xz
        uninative-tarball: Use xz compression and SDK_ARCHIVE_CMD
        strace: Tweak ptest disk space management
        ptest-packagelists: Add mdadm
        util-linux: Fix ptest dependencies
        mdadm: Add missing ptest dependency
        yocto-uninative: Update to 2.5 release
        uninative: Switch from bz2 to xz
        bitbake: main: Fix error message typo
        qemuarm64: Add QB_CPU_KVM to allow kvm acceleration
        runqemu: Add support for kvm on aarch64
        useradd: Fix build architecture corruption of sstate artefacts
        useradd: Ensure do_populate_sysroot has dependency on useradd variables
        beaglebone-yocto: Add missing wic image u-boot deploy dependency
        quilt: Add patch depends for quilt-ptest
        libtest-needs-perl: Fix ptest dependencies
        libtimedate-perl: Fix ptest dependencies
        perl: Add missing perl module dependency
        liburi-perl: Fix module ptest dependencies
        libconvert-aan1-perl: Fix module and ptest dependencies
        libxml-sax-perl: Fix module ptest dependencies
        libxml-perl: Fix module and ptest dependencies
        e2fsprogs: Fix missing ptest dependencies
        glib-2.0: ptest fixes
        openssh: Add missing ptest dependency on coreutils
        gpg_sign/selftest: Fix secmem parameter handling
        gawk: ptest fixes
        openssh: Document skipped test dependency
        multiconfig: Adapt to bitbake switch 'multiconfig' -> 'mc'
        bitbake: multiconfig: Switch from 'multiconfig' -> 'mc'
        bitbake: cooker: Add compability handling for multiconfig: prefix migration
        build-appliance-image: Update to master head revision
        bitbake: cooker: Ensure mcdeps are processed even if only one multiconfig
        perl: Fix setgroup call regression from 5.30
        perl: Move perl-sanity -> perl

  Ross Burton (13):
        insane: add sanity checks to SRC_URI
        libidn2: upgrade to 2.2.0
        local.conf.sample: change default MACHINE to qemux86-64
        libical: tidy up Perl finding
        wic/filemap: handle FIGETBSZ failing
        libxslt: add comment saying when a workaround can be removed
        parted: swap patches for the commits that landed upstream
        parted: drop patch for linux <2.6.20 support
        python-nose: python3-nose should be default
        bluez: fix test case failures with GCC 9
        efivar: add
        efibootmgr: add
        gstreamer1.0-libav: disable API documentation

  Sakib Sajal (4):
        bash: add iso8859-1 gconv RDEPENDS needed by bash-ptest.
        bash: add big5hkscs gconv RDEPENDS needed by bash-ptest.
        bash: run bash ptest as non-root user
        ptest-runner: update SRCREV to latest HEAD on ptest-runner2 repo

  Scott Rifenbark (17):
        sdk-manual: Added link to BB manual fetcher section.
        ref-manual: Updated "do_fetch" to have a link to "Fetchers"
        dev-manual, ref-manual: removed "distrodata" class
        ref-manual: Removed bugzilla.bbclass
        ref-manual: Removed "distutils-tools" class.
        ref-manual: Udated devtool help output examples.
        ref-manual: New section "Checking Upgrade Status of a Recipe"
        dev-manual: Added check-upgrade-status blurb to upgrading recipes
        ref-manual: do_checkpkg - added link to checking upgrade status
        ref-manual: Updates to check-recipe-upgrade devtool command
        ref-manual: Grammar correction
        dev-manual: Added new section for creating NPM packages
        Makefile: Updated to support new NPM package creation section
        dev-manual: Updated the "Working with Packages" list
        ref-manual: Updated "npm.bbclass" section.
        overview-manual: Updated SCM section
        dev-manual: Fixed grammar issue.

  Tim Orling (8):
        libxml-parser-perl: fix ptest dependencies
        perl-rdepends.txt: improve dependencies for perl module ptests
        perl: install Config_git.pl
        perl-rdepends.txt: fix perl-module-data-dumper dependencies
        python3-scons-{native}: add recipe for v3.0.5
        scons.bbclass: use python3-scons
        serf: switch to python3-scons-native
        oeqa/runtime: add simple test for scons

  Tom Rini (2):
        vim: Rework things so vim adds features not vim-tiny removes
        vim: Update to 8.1.1518 to fix CVE-2019-12735

  Yeoh Ee Peng (3):
        resulttool/resultutils: Enable add extra configurations to results
        resulttool/store: Enable add EXECUTED_BY config to results
        resulttool/merge: Enable control TESTSERIES and extra configurations

  Zang Ruochen (3):
        openssh: Upgrade 7.9p1 -> 8.0p1
        dbus: Upgrade 1.12.12 -> 1.12.14
        dbus-test: Upgrade 1.12.12 -> 1.12.14

  Zhixiong Chi (2):
        gcc: reduce the variables in symtab
        gcc: CVE-2018-12886

  sangeeta jain (1):
        resulttool/manualexecution: Enable creation of test case configuration

meta-raspberrypi: 7059c37451..40283f583b:
  Andrei Gherzan (1):
        gstreamer1.0-omx: Forward port bbappend and patches to v1.16.x

  Khem Raj (4):
        linux-raspberrypi_4.19.bb: Update to 4.19.44
        rpi-default-versions: Switch defaults to 4.19
        userland: Update to 20190501
        firmware: Update 20190220 -> 20190517

  malus-brandywine (1):
        sdcard_image-rpi : minor bug in use of FATPAYLOAD

Change-Id: Idab4e8c2666bc776d0b47988a32dcb9f04885aff
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/poky/scripts/lib/recipetool/create_buildsys_python.py b/poky/scripts/lib/recipetool/create_buildsys_python.py
index 1a38bd0..ac9bc92 100644
--- a/poky/scripts/lib/recipetool/create_buildsys_python.py
+++ b/poky/scripts/lib/recipetool/create_buildsys_python.py
@@ -31,11 +31,11 @@
 
 
 class PythonRecipeHandler(RecipeHandler):
-    base_pkgdeps = ['python-core']
-    excluded_pkgdeps = ['python-dbg']
-    # os.path is provided by python-core
+    base_pkgdeps = ['python3-core']
+    excluded_pkgdeps = ['python3-dbg']
+    # os.path is provided by python3-core
     assume_provided = ['builtins', 'os.path']
-    # Assumes that the host python builtin_module_names is sane for target too
+    # Assumes that the host python3 builtin_module_names is sane for target too
     assume_provided = assume_provided + list(sys.builtin_module_names)
 
     bbvar_map = {
@@ -215,9 +215,9 @@
         self.apply_info_replacements(info)
 
         if uses_setuptools:
-            classes.append('setuptools')
+            classes.append('setuptools3')
         else:
-            classes.append('distutils')
+            classes.append('distutils3')
 
         if license_str:
             for i, line in enumerate(lines_before):
@@ -282,7 +282,7 @@
                 for feature, feature_reqs in extras_req.items():
                     unmapped_deps.difference_update(feature_reqs)
 
-                    feature_req_deps = ('python-' + r.replace('.', '-').lower() for r in sorted(feature_reqs))
+                    feature_req_deps = ('python3-' + r.replace('.', '-').lower() for r in sorted(feature_reqs))
                     lines_after.append('PACKAGECONFIG[{}] = ",,,{}"'.format(feature.lower(), ' '.join(feature_req_deps)))
 
         inst_reqs = set()
@@ -293,7 +293,7 @@
             if inst_reqs:
                 unmapped_deps.difference_update(inst_reqs)
 
-                inst_req_deps = ('python-' + r.replace('.', '-').lower() for r in sorted(inst_reqs))
+                inst_req_deps = ('python3-' + r.replace('.', '-').lower() for r in sorted(inst_reqs))
                 lines_after.append('# WARNING: the following rdepends are from setuptools install_requires. These')
                 lines_after.append('# upstream names may not correspond exactly to bitbake package names.')
                 lines_after.append('RDEPENDS_${{PN}} += "{}"'.format(' '.join(inst_req_deps)))
@@ -356,7 +356,7 @@
         return info, 'setuptools' in imported_modules, non_literals, extensions
 
     def get_setup_args_info(self, setupscript='./setup.py'):
-        cmd = ['python', setupscript]
+        cmd = ['python3', setupscript]
         info = {}
         keys = set(self.bbvar_map.keys())
         keys |= set(self.setuparg_list_fields)
@@ -390,7 +390,7 @@
     def get_setup_byline(self, fields, setupscript='./setup.py'):
         info = {}
 
-        cmd = ['python', setupscript]
+        cmd = ['python3', setupscript]
         cmd.extend('--' + self.setuparg_map.get(f, f.lower()) for f in fields)
         try:
             info_lines = self.run_command(cmd, cwd=os.path.dirname(setupscript)).splitlines()
@@ -527,7 +527,7 @@
         pkgdata_dir = tinfoil.config_data.getVar('PKGDATA_DIR')
 
         ldata = tinfoil.config_data.createCopy()
-        bb.parse.handle('classes/python-dir.bbclass', ldata, True)
+        bb.parse.handle('classes/python3-dir.bbclass', ldata, True)
         python_sitedir = ldata.getVar('PYTHON_SITEPACKAGES_DIR')
 
         dynload_dir = os.path.join(os.path.dirname(python_sitedir), 'lib-dynload')
diff --git a/poky/scripts/lib/resulttool/manualexecution.py b/poky/scripts/lib/resulttool/manualexecution.py
index df28e1d..ecb27c5 100755
--- a/poky/scripts/lib/resulttool/manualexecution.py
+++ b/poky/scripts/lib/resulttool/manualexecution.py
@@ -181,11 +181,38 @@
         write_json_file(config_options_file, config_options)
         logger.info('Configuration option file created at %s' % config_options_file)
 
+    def make_testcase_config_file(self, logger, case_file, testcase_config_file):
+        if  testcase_config_file:
+            if os.path.exists(testcase_config_file):
+                print('\nTest configuration file with name %s already exists. Please provide a unique file name' % (testcase_config_file))
+                return 0
+
+        if not testcase_config_file:
+            testcase_config_file = os.path.join(self._get_write_dir(), "testconfig_new.json")
+
+        testcase_config = {}
+        cases = load_json_file(case_file)
+        new_test_module = self._get_test_module(case_file)
+        new_testcase_config = {}
+        new_testcase_config['testcases'] = []
+
+        print('\nAdd testcases for this configuration file:')
+        for case in cases:
+            print('\n' + case['test']['@alias'])
+            add_tc_config = self._get_true_false_input('\nDo you want to add this test case to test configuration : (Y)es/(N)o\n')
+            if add_tc_config:
+                new_testcase_config['testcases'].append(case['test']['@alias'])
+        write_json_file(testcase_config_file, new_testcase_config)
+        logger.info('Testcase Configuration file created at %s' % testcase_config_file)
+
 def manualexecution(args, logger):
     testrunner = ManualTestRunner()
     if args.make_config_options_file:
         testrunner.make_config_option_file(logger, args.file, args.config_options_file)
         return 0
+    if args.make_testcase_config_file:
+        testrunner.make_testcase_config_file(logger, args.file, args.testcase_config_file)
+        return 0
     configurations, result_id, write_dir, test_results = testrunner.run_test(args.file, args.config_options_file, args.testcase_config_file)
     resultjsonhelper = OETestResultJSONHelper()
     resultjsonhelper.dump_testresult_file(write_dir, configurations, result_id, test_results)
@@ -203,4 +230,6 @@
     parser_build.add_argument('-m', '--make-config-options-file', action='store_true',
                               help='make the configuration options file based on provided inputs')
     parser_build.add_argument('-t', '--testcase-config-file', default='',
-                              help='the testcase configuration file to enable user to run a selected set of test case')
\ No newline at end of file
+                              help='the testcase configuration file to enable user to run a selected set of test case or make a testcase configuration file')
+    parser_build.add_argument('-d', '--make-testcase-config-file', action='store_true',
+                    help='make the testcase configuration file to run a set of test cases based on user selection')
\ No newline at end of file
diff --git a/poky/scripts/lib/resulttool/merge.py b/poky/scripts/lib/resulttool/merge.py
index 70d23a4..18b4825 100644
--- a/poky/scripts/lib/resulttool/merge.py
+++ b/poky/scripts/lib/resulttool/merge.py
@@ -11,16 +11,23 @@
 import resulttool.resultutils as resultutils
 
 def merge(args, logger):
+    configvars = {}
+    if not args.not_add_testseries:
+        configvars = resultutils.extra_configvars.copy()
+    if args.executed_by:
+        configvars['EXECUTED_BY'] = args.executed_by
     if resultutils.is_url(args.target_results) or os.path.isdir(args.target_results):
-        results = resultutils.load_resultsdata(args.target_results, configmap=resultutils.store_map)
-        resultutils.append_resultsdata(results, args.base_results, configmap=resultutils.store_map)
+        results = resultutils.load_resultsdata(args.target_results, configmap=resultutils.store_map, configvars=configvars)
+        resultutils.append_resultsdata(results, args.base_results, configmap=resultutils.store_map, configvars=configvars)
         resultutils.save_resultsdata(results, args.target_results)
     else:
-        results = resultutils.load_resultsdata(args.base_results, configmap=resultutils.flatten_map)
+        results = resultutils.load_resultsdata(args.base_results, configmap=resultutils.flatten_map, configvars=configvars)
         if os.path.exists(args.target_results):
-            resultutils.append_resultsdata(results, args.target_results, configmap=resultutils.flatten_map)
+            resultutils.append_resultsdata(results, args.target_results, configmap=resultutils.flatten_map, configvars=configvars)
         resultutils.save_resultsdata(results, os.path.dirname(args.target_results), fn=os.path.basename(args.target_results))
 
+    logger.info('Merged results to %s' % os.path.dirname(args.target_results))
+
     return 0
 
 def register_commands(subparsers):
@@ -33,4 +40,7 @@
                               help='the results file/directory/URL to import')
     parser_build.add_argument('target_results',
                               help='the target file or directory to merge the base_results with')
-
+    parser_build.add_argument('-t', '--not-add-testseries', action='store_true',
+                              help='do not add testseries configuration to results')
+    parser_build.add_argument('-x', '--executed-by', default='',
+                              help='add executed-by configuration to each result file')
diff --git a/poky/scripts/lib/resulttool/report.py b/poky/scripts/lib/resulttool/report.py
index cb6b1cf..a48c59f 100644
--- a/poky/scripts/lib/resulttool/report.py
+++ b/poky/scripts/lib/resulttool/report.py
@@ -24,16 +24,19 @@
                              'skipped': ['SKIPPED', 'skipped']}
 
 
-    def handle_ptest_result(self, k, status, result):
+    def handle_ptest_result(self, k, status, result, machine):
+        if machine not in self.ptests:
+            self.ptests[machine] = {}
+
         if k == 'ptestresult.sections':
             # Ensure tests without any test results still show up on the report
             for suite in result['ptestresult.sections']:
-                if suite not in self.ptests:
-                    self.ptests[suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
+                if suite not in self.ptests[machine]:
+                    self.ptests[machine][suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
                 if 'duration' in result['ptestresult.sections'][suite]:
-                    self.ptests[suite]['duration'] = result['ptestresult.sections'][suite]['duration']
+                    self.ptests[machine][suite]['duration'] = result['ptestresult.sections'][suite]['duration']
                 if 'timeout' in result['ptestresult.sections'][suite]:
-                    self.ptests[suite]['duration'] += " T"
+                    self.ptests[machine][suite]['duration'] += " T"
             return
         try:
             _, suite, test = k.split(".", 2)
@@ -47,22 +50,25 @@
                     suite = suite + "." + suite1
             except ValueError:
                 pass
-        if suite not in self.ptests:
-            self.ptests[suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
+        if suite not in self.ptests[machine]:
+            self.ptests[machine][suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
         for tk in self.result_types:
             if status in self.result_types[tk]:
-                self.ptests[suite][tk] += 1
+                self.ptests[machine][suite][tk] += 1
 
-    def handle_ltptest_result(self, k, status, result):
+    def handle_ltptest_result(self, k, status, result, machine):
+        if machine not in self.ltptests:
+            self.ltptests[machine] = {}
+
         if k == 'ltpresult.sections':
             # Ensure tests without any test results still show up on the report
             for suite in result['ltpresult.sections']:
-                if suite not in self.ltptests:
-                    self.ltptests[suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
+                if suite not in self.ltptests[machine]:
+                    self.ltptests[machine][suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
                 if 'duration' in result['ltpresult.sections'][suite]:
-                    self.ltptests[suite]['duration'] = result['ltpresult.sections'][suite]['duration']
+                    self.ltptests[machine][suite]['duration'] = result['ltpresult.sections'][suite]['duration']
                 if 'timeout' in result['ltpresult.sections'][suite]:
-                    self.ltptests[suite]['duration'] += " T"
+                    self.ltptests[machine][suite]['duration'] += " T"
             return
         try:
             _, suite, test = k.split(".", 2)
@@ -77,20 +83,23 @@
                     suite = suite + "." + suite1
             except ValueError:
                 pass
-        if suite not in self.ltptests:
-            self.ltptests[suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
+        if suite not in self.ltptests[machine]:
+            self.ltptests[machine][suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
         for tk in self.result_types:
             if status in self.result_types[tk]:
-                self.ltptests[suite][tk] += 1
+                self.ltptests[machine][suite][tk] += 1
 
-    def handle_ltpposixtest_result(self, k, status, result):
+    def handle_ltpposixtest_result(self, k, status, result, machine):
+        if machine not in self.ltpposixtests:
+            self.ltpposixtests[machine] = {}
+
         if k == 'ltpposixresult.sections':
             # Ensure tests without any test results still show up on the report
             for suite in result['ltpposixresult.sections']:
-                if suite not in self.ltpposixtests:
-                    self.ltpposixtests[suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
+                if suite not in self.ltpposixtests[machine]:
+                    self.ltpposixtests[machine][suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
                 if 'duration' in result['ltpposixresult.sections'][suite]:
-                    self.ltpposixtests[suite]['duration'] = result['ltpposixresult.sections'][suite]['duration']
+                    self.ltpposixtests[machine][suite]['duration'] = result['ltpposixresult.sections'][suite]['duration']
             return
         try:
             _, suite, test = k.split(".", 2)
@@ -104,19 +113,13 @@
                     suite = suite + "." + suite1
             except ValueError:
                 pass
-        if suite not in self.ltpposixtests:
-            self.ltpposixtests[suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
+        if suite not in self.ltpposixtests[machine]:
+            self.ltpposixtests[machine][suite] = {'passed': 0, 'failed': 0, 'skipped': 0, 'duration' : '-', 'failed_testcases': []}
         for tk in self.result_types:
             if status in self.result_types[tk]:
-                self.ltpposixtests[suite][tk] += 1
+                self.ltpposixtests[machine][suite][tk] += 1
 
-    def get_aggregated_test_result(self, logger, testresult):
-        test_count_report = {'passed': 0, 'failed': 0, 'skipped': 0, 'failed_testcases': []}
-    def get_aggregated_test_result(self, logger, testresult):
-        test_count_report = {'passed': 0, 'failed': 0, 'skipped': 0, 'failed_testcases': []}
-    def get_aggregated_test_result(self, logger, testresult):
-        test_count_report = {'passed': 0, 'failed': 0, 'skipped': 0, 'failed_testcases': []}
-    def get_aggregated_test_result(self, logger, testresult):
+    def get_aggregated_test_result(self, logger, testresult, machine):
         test_count_report = {'passed': 0, 'failed': 0, 'skipped': 0, 'failed_testcases': []}
         result = testresult.get('result', [])
         for k in result:
@@ -127,11 +130,11 @@
             if test_status in self.result_types['failed']:
                 test_count_report['failed_testcases'].append(k)
             if k.startswith("ptestresult."):
-                self.handle_ptest_result(k, test_status, result)
+                self.handle_ptest_result(k, test_status, result, machine)
             if k.startswith("ltpresult."):
-                self.handle_ltptest_result(k, test_status, result)
+                self.handle_ltptest_result(k, test_status, result, machine)
             if k.startswith("ltpposixresult."):
-                self.handle_ltpposixtest_result(k, test_status, result)
+                self.handle_ltpposixtest_result(k, test_status, result, machine)
         return test_count_report
 
     def print_test_report(self, template_file_name, test_count_reports):
@@ -141,10 +144,8 @@
         env = Environment(loader=file_loader, trim_blocks=True)
         template = env.get_template(template_file_name)
         havefailed = False
-        haveptest = bool(self.ptests)
-        haveltp = bool(self.ltptests)
-        haveltpposix = bool(self.ltpposixtests)
         reportvalues = []
+        machines = []
         cols = ['passed', 'failed', 'skipped']
         maxlen = {'passed' : 0, 'failed' : 0, 'skipped' : 0, 'result_id': 0, 'testseries' : 0, 'ptest' : 0 ,'ltptest': 0, 'ltpposixtest': 0}
         for line in test_count_reports:
@@ -162,21 +163,24 @@
             reportvalues.append(vals)
             if line['failed_testcases']:
                 havefailed = True
-        for ptest in self.ptests:
-            if len(ptest) > maxlen['ptest']:
-                maxlen['ptest'] = len(ptest)
-        for ltptest in self.ltptests:
-            if len(ltptest) > maxlen['ltptest']:
-                maxlen['ltptest'] = len(ltptest)
-        for ltpposixtest in self.ltpposixtests:
-            if len(ltpposixtest) > maxlen['ltpposixtest']:
-                maxlen['ltpposixtest'] = len(ltpposixtest)
+            if line['machine'] not in machines:
+                machines.append(line['machine'])
+        for (machine, report) in self.ptests.items():
+            for ptest in self.ptests[machine]:
+                if len(ptest) > maxlen['ptest']:
+                    maxlen['ptest'] = len(ptest)
+        for (machine, report) in self.ltptests.items():
+            for ltptest in self.ltptests[machine]:
+                if len(ltptest) > maxlen['ltptest']:
+                    maxlen['ltptest'] = len(ltptest)
+        for (machine, report) in self.ltpposixtests.items():
+            for ltpposixtest in self.ltpposixtests[machine]:
+                if len(ltpposixtest) > maxlen['ltpposixtest']:
+                    maxlen['ltpposixtest'] = len(ltpposixtest)
         output = template.render(reportvalues=reportvalues,
                                  havefailed=havefailed,
-                                 haveptest=haveptest,
+                                 machines=machines,
                                  ptests=self.ptests,
-                                 haveltp=haveltp,
-                                 haveltpposix=haveltpposix,
                                  ltptests=self.ltptests,
                                  ltpposixtests=self.ltpposixtests,
                                  maxlen=maxlen)
@@ -200,7 +204,9 @@
         for testsuite in testresults:
             for resultid in testresults[testsuite]:
                 result = testresults[testsuite][resultid]
-                test_count_report = self.get_aggregated_test_result(logger, result)
+                machine = result['configuration']['MACHINE']
+                test_count_report = self.get_aggregated_test_result(logger, result, machine)
+                test_count_report['machine'] = machine
                 test_count_report['testseries'] = result['configuration']['TESTSERIES']
                 test_count_report['result_id'] = resultid
                 test_count_reports.append(test_count_report)
diff --git a/poky/scripts/lib/resulttool/resultutils.py b/poky/scripts/lib/resulttool/resultutils.py
index ea4ab42..e595c18 100644
--- a/poky/scripts/lib/resulttool/resultutils.py
+++ b/poky/scripts/lib/resulttool/resultutils.py
@@ -42,10 +42,12 @@
     """
     return p.startswith('http://') or p.startswith('https://')
 
+extra_configvars = {'TESTSERIES': ''}
+
 #
 # Load the json file and append the results data into the provided results dict
 #
-def append_resultsdata(results, f, configmap=store_map):
+def append_resultsdata(results, f, configmap=store_map, configvars=extra_configvars):
     if type(f) is str:
         if is_url(f):
             with urllib.request.urlopen(f) as response:
@@ -61,12 +63,15 @@
     for res in data:
         if "configuration" not in data[res] or "result" not in data[res]:
             raise ValueError("Test results data without configuration or result section?")
-        if "TESTSERIES" not in data[res]["configuration"]:
-            data[res]["configuration"]["TESTSERIES"] = testseries
+        for config in configvars:
+            if config == "TESTSERIES" and "TESTSERIES" not in data[res]["configuration"]:
+                data[res]["configuration"]["TESTSERIES"] = testseries
+                continue
+            if config not in data[res]["configuration"]:
+                data[res]["configuration"][config] = configvars[config]
         testtype = data[res]["configuration"].get("TEST_TYPE")
         if testtype not in configmap:
             raise ValueError("Unknown test type %s" % testtype)
-        configvars = configmap[testtype]
         testpath = "/".join(data[res]["configuration"].get(i) for i in configmap[testtype])
         if testpath not in results:
             results[testpath] = {}
@@ -76,16 +81,16 @@
 # Walk a directory and find/load results data
 # or load directly from a file
 #
-def load_resultsdata(source, configmap=store_map):
+def load_resultsdata(source, configmap=store_map, configvars=extra_configvars):
     results = {}
     if is_url(source) or os.path.isfile(source):
-        append_resultsdata(results, source, configmap)
+        append_resultsdata(results, source, configmap, configvars)
         return results
     for root, dirs, files in os.walk(source):
         for name in files:
             f = os.path.join(root, name)
             if name == "testresults.json":
-                append_resultsdata(results, f, configmap)
+                append_resultsdata(results, f, configmap, configvars)
     return results
 
 def filter_resultsdata(results, resultid):
diff --git a/poky/scripts/lib/resulttool/store.py b/poky/scripts/lib/resulttool/store.py
index 06505ae..79c83dd 100644
--- a/poky/scripts/lib/resulttool/store.py
+++ b/poky/scripts/lib/resulttool/store.py
@@ -21,16 +21,19 @@
 def store(args, logger):
     tempdir = tempfile.mkdtemp(prefix='testresults.')
     try:
+        configvars = resultutils.extra_configvars.copy()
+        if args.executed_by:
+            configvars['EXECUTED_BY'] = args.executed_by
         results = {}
         logger.info('Reading files from %s' % args.source)
         if resultutils.is_url(args.source) or os.path.isfile(args.source):
-            resultutils.append_resultsdata(results, args.source)
+            resultutils.append_resultsdata(results, args.source, configvars=configvars)
         else:
             for root, dirs,  files in os.walk(args.source):
                 for name in files:
                     f = os.path.join(root, name)
                     if name == "testresults.json":
-                        resultutils.append_resultsdata(results, f)
+                        resultutils.append_resultsdata(results, f, configvars=configvars)
                     elif args.all:
                         dst = f.replace(args.source, tempdir + "/")
                         os.makedirs(os.path.dirname(dst), exist_ok=True)
@@ -93,4 +96,6 @@
                               help='include all files, not just testresults.json files')
     parser_build.add_argument('-e', '--allow-empty', action='store_true',
                               help='don\'t error if no results to store are found')
+    parser_build.add_argument('-x', '--executed-by', default='',
+                              help='add executed-by configuration to each result file')
 
diff --git a/poky/scripts/lib/resulttool/template/test_report_full_text.txt b/poky/scripts/lib/resulttool/template/test_report_full_text.txt
index d2725b8..17c99cb 100644
--- a/poky/scripts/lib/resulttool/template/test_report_full_text.txt
+++ b/poky/scripts/lib/resulttool/template/test_report_full_text.txt
@@ -9,54 +9,54 @@
 {% endfor %}
 --------------------------------------------------------------------------------------------------------------
 
-{% if haveptest %}
+
+{% for machine in machines %}
+{% if ptests[machine] %}
 ==============================================================================================================
-PTest Result Summary
+{{ machine }} PTest Result Summary
 ==============================================================================================================
 --------------------------------------------------------------------------------------------------------------
 {{ 'Recipe'.ljust(maxlen['ptest']) }} | {{ 'Passed'.ljust(maxlen['passed']) }} | {{ 'Failed'.ljust(maxlen['failed']) }} | {{ 'Skipped'.ljust(maxlen['skipped']) }} | {{ 'Time(s)'.ljust(10) }}
 --------------------------------------------------------------------------------------------------------------
-{% for ptest in ptests |sort %}
-{{ ptest.ljust(maxlen['ptest']) }} | {{ (ptests[ptest]['passed']|string).ljust(maxlen['passed']) }} | {{ (ptests[ptest]['failed']|string).ljust(maxlen['failed']) }} | {{ (ptests[ptest]['skipped']|string).ljust(maxlen['skipped']) }} | {{ (ptests[ptest]['duration']|string) }}
+{% for ptest in ptests[machine] |sort %}
+{{ ptest.ljust(maxlen['ptest']) }} | {{ (ptests[machine][ptest]['passed']|string).ljust(maxlen['passed']) }} | {{ (ptests[machine][ptest]['failed']|string).ljust(maxlen['failed']) }} | {{ (ptests[machine][ptest]['skipped']|string).ljust(maxlen['skipped']) }} | {{ (ptests[machine][ptest]['duration']|string) }}
 {% endfor %}
 --------------------------------------------------------------------------------------------------------------
 
-{% else %}
-There was no ptest data
 {% endif %}
+{% endfor %}
 
-{% if haveltp %}
+{% for machine in machines %}
+{% if ltptests[machine] %}
 ==============================================================================================================
-Ltp Test Result Summary
+{{ machine }} Ltp Test Result Summary
 ==============================================================================================================
 --------------------------------------------------------------------------------------------------------------
 {{ 'Recipe'.ljust(maxlen['ltptest']) }} | {{ 'Passed'.ljust(maxlen['passed']) }} | {{ 'Failed'.ljust(maxlen['failed']) }} | {{ 'Skipped'.ljust(maxlen['skipped']) }} | {{ 'Time(s)'.ljust(10) }}
 --------------------------------------------------------------------------------------------------------------
-{% for ltptest in ltptests |sort %}
-{{ ltptest.ljust(maxlen['ltptest']) }} | {{ (ltptests[ltptest]['passed']|string).ljust(maxlen['passed']) }} | {{ (ltptests[ltptest]['failed']|string).ljust(maxlen['failed']) }} | {{ (ltptests[ltptest]['skipped']|string).ljust(maxlen['skipped']) }} | {{ (ltptests[ltptest]['duration']|string) }}
+{% for ltptest in ltptests[machine] |sort %}
+{{ ltptest.ljust(maxlen['ltptest']) }} | {{ (ltptests[machine][ltptest]['passed']|string).ljust(maxlen['passed']) }} | {{ (ltptests[machine][ltptest]['failed']|string).ljust(maxlen['failed']) }} | {{ (ltptests[machine][ltptest]['skipped']|string).ljust(maxlen['skipped']) }} | {{ (ltptests[machine][ltptest]['duration']|string) }}
 {% endfor %}
 --------------------------------------------------------------------------------------------------------------
 
-{% else %}
-There was no LTP Test data
 {% endif %}
+{% endfor %}
 
-{% if haveltpposix %}
+{% for machine in machines %}
+{% if ltpposixtests[machine] %}
 ==============================================================================================================
-Ltp Posix Result Summary
+{{ machine }} Ltp Posix Result Summary
 ==============================================================================================================
 --------------------------------------------------------------------------------------------------------------
 {{ 'Recipe'.ljust(maxlen['ltpposixtest']) }} | {{ 'Passed'.ljust(maxlen['passed']) }} | {{ 'Failed'.ljust(maxlen['failed']) }} | {{ 'Skipped'.ljust(maxlen['skipped']) }} | {{ 'Time(s)'.ljust(10) }}
 --------------------------------------------------------------------------------------------------------------
-{% for ltpposixtest in ltpposixtests |sort %}
-{{ ltpposixtest.ljust(maxlen['ltpposixtest']) }} | {{ (ltpposixtests[ltpposixtest]['passed']|string).ljust(maxlen['passed']) }} | {{ (ltpposixtests[ltpposixtest]['failed']|string).ljust(maxlen['failed']) }} | {{ (ltpposixtests[ltpposixtest]['skipped']|string).ljust(maxlen['skipped']) }} | {{ (ltpposixtests[ltpposixtest]['duration']|string) }}
+{% for ltpposixtest in ltpposixtests[machine] |sort %}
+{{ ltpposixtest.ljust(maxlen['ltpposixtest']) }} | {{ (ltpposixtests[machine][ltpposixtest]['passed']|string).ljust(maxlen['passed']) }} | {{ (ltpposixtests[machine][ltpposixtest]['failed']|string).ljust(maxlen['failed']) }} | {{ (ltpposixtests[machine][ltpposixtest]['skipped']|string).ljust(maxlen['skipped']) }} | {{ (ltpposixtests[machine][ltpposixtest]['duration']|string) }}
 {% endfor %}
 --------------------------------------------------------------------------------------------------------------
 
-{% else %}
-There was no LTP Posix Test data
 {% endif %}
-
+{% endfor %}
 
 
 ==============================================================================================================
diff --git a/poky/scripts/lib/wic/engine.py b/poky/scripts/lib/wic/engine.py
index 42e93c3..61939ad 100644
--- a/poky/scripts/lib/wic/engine.py
+++ b/poky/scripts/lib/wic/engine.py
@@ -75,7 +75,8 @@
             for fname in files:
                 if fname.endswith("~") or fname.endswith("#"):
                     continue
-                if fname.endswith(".wks") and wks_file + ".wks" == fname:
+                if ((fname.endswith(".wks") and wks_file + ".wks" == fname) or \
+                   (fname.endswith(".wks.in") and wks_file + ".wks.in" == fname)):
                     fullpath = os.path.join(canned_wks_dir, fname)
                     return fullpath
     return None
@@ -92,7 +93,7 @@
             for fname in files:
                 if fname.endswith("~") or fname.endswith("#"):
                     continue
-                if fname.endswith(".wks"):
+                if fname.endswith(".wks") or fname.endswith(".wks.in"):
                     fullpath = os.path.join(canned_wks_dir, fname)
                     with open(fullpath) as wks:
                         for line in wks:
@@ -101,7 +102,7 @@
                             if idx != -1:
                                 desc = line[idx + len("short-description:"):].strip()
                                 break
-                    basename = os.path.splitext(fname)[0]
+                    basename = fname.split('.')[0]
                     print("  %s\t\t%s" % (basename.ljust(30), desc))
 
 
diff --git a/poky/scripts/lib/wic/filemap.py b/poky/scripts/lib/wic/filemap.py
index 244c07a..a3919fb 100644
--- a/poky/scripts/lib/wic/filemap.py
+++ b/poky/scripts/lib/wic/filemap.py
@@ -32,7 +32,10 @@
     """
     # Get the block size of the host file-system for the image file by calling
     # the FIGETBSZ ioctl (number 2).
-    binary_data = fcntl.ioctl(file_obj, 2, struct.pack('I', 0))
+    try:
+        binary_data = fcntl.ioctl(file_obj, 2, struct.pack('I', 0))
+    except OSError:
+        raise IOError("Unable to determine block size")
     bsize = struct.unpack('I', binary_data)[0]
     if not bsize:
         import os
diff --git a/poky/scripts/lib/wic/plugins/source/bootimg-efi.py b/poky/scripts/lib/wic/plugins/source/bootimg-efi.py
index 652323f..d87db1f 100644
--- a/poky/scripts/lib/wic/plugins/source/bootimg-efi.py
+++ b/poky/scripts/lib/wic/plugins/source/bootimg-efi.py
@@ -71,10 +71,17 @@
             grubefi_conf += "timeout=%s\n" % bootloader.timeout
             grubefi_conf += "menuentry '%s'{\n" % (title if title else "boot")
 
-            kernel = "/bzImage"
+            kernel = get_bitbake_var("KERNEL_IMAGETYPE")
+            if not kernel:
+                kernel = "bzImage"
 
-            grubefi_conf += "linux %s root=%s rootwait %s\n" \
-                % (kernel, creator.rootdev, bootloader.append)
+            label = source_params.get('label')
+            label_conf = "root=%s" % creator.rootdev
+            if label:
+                label_conf = "LABEL=%s" % label
+
+            grubefi_conf += "linux /%s %s rootwait %s\n" \
+                % (kernel, label_conf, bootloader.append)
 
             if initrd:
                grubefi_conf += "initrd /%s\n" % initrd
@@ -138,14 +145,23 @@
 
         if not custom_cfg:
             # Create systemd-boot configuration using parameters from wks file
-            kernel = "/bzImage"
+            kernel = get_bitbake_var("KERNEL_IMAGETYPE")
+            if not kernel:
+                kernel = "bzImage"
+
             title = source_params.get('title')
 
             boot_conf = ""
             boot_conf += "title %s\n" % (title if title else "boot")
-            boot_conf += "linux %s\n" % kernel
-            boot_conf += "options LABEL=Boot root=%s %s\n" % \
-                             (creator.rootdev, bootloader.append)
+            boot_conf += "linux /%s\n" % kernel
+
+            label = source_params.get('label')
+            label_conf = "LABEL=Boot root=%s" % creator.rootdev
+            if label:
+                label_conf = "LABEL=%s" % label
+
+            boot_conf += "options %s %s\n" % \
+                             (label_conf, bootloader.append)
 
             if initrd:
                 boot_conf += "initrd /%s\n" % initrd
@@ -198,8 +214,12 @@
 
         hdddir = "%s/hdd/boot" % cr_workdir
 
-        install_cmd = "install -m 0644 %s/bzImage %s/bzImage" % \
-            (staging_kernel_dir, hdddir)
+        kernel = get_bitbake_var("KERNEL_IMAGETYPE")
+        if not kernel:
+            kernel = "bzImage"
+
+        install_cmd = "install -m 0644 %s/%s %s/%s" % \
+            (staging_kernel_dir, kernel, hdddir, kernel)
         exec_cmd(install_cmd)
 
 
diff --git a/poky/scripts/lib/wic/plugins/source/bootimg-pcbios.py b/poky/scripts/lib/wic/plugins/source/bootimg-pcbios.py
index 6c9f54a..670d347 100644
--- a/poky/scripts/lib/wic/plugins/source/bootimg-pcbios.py
+++ b/poky/scripts/lib/wic/plugins/source/bootimg-pcbios.py
@@ -149,8 +149,12 @@
 
         hdddir = "%s/hdd/boot" % cr_workdir
 
-        cmds = ("install -m 0644 %s/bzImage %s/vmlinuz" %
-                (staging_kernel_dir, hdddir),
+        kernel = get_bitbake_var("KERNEL_IMAGETYPE")
+        if not kernel:
+            kernel = "bzImage"
+
+        cmds = ("install -m 0644 %s/%s %s/vmlinuz" %
+                (staging_kernel_dir, kernel, hdddir),
                 "install -m 444 %s/syslinux/ldlinux.sys %s/ldlinux.sys" %
                 (bootimg_dir, hdddir),
                 "install -m 0644 %s/syslinux/vesamenu.c32 %s/vesamenu.c32" %
diff --git a/poky/scripts/lib/wic/plugins/source/isoimage-isohybrid.py b/poky/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
index 96d07ff..74d6f14 100644
--- a/poky/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
+++ b/poky/scripts/lib/wic/plugins/source/isoimage-isohybrid.py
@@ -70,8 +70,10 @@
         syslinux_conf += "DEFAULT boot\n"
         syslinux_conf += "LABEL boot\n"
 
-        kernel = "/bzImage"
-        syslinux_conf += "KERNEL " + kernel + "\n"
+        kernel = get_bitbake_var("KERNEL_IMAGETYPE")
+        if not kernel:
+            kernel = "bzImage"
+        syslinux_conf += "KERNEL /" + kernel + "\n"
         syslinux_conf += "APPEND initrd=/initrd LABEL=boot %s\n" \
                              % bootloader.append
 
@@ -114,9 +116,11 @@
             grubefi_conf += "\n"
             grubefi_conf += "menuentry 'boot'{\n"
 
-            kernel = "/bzImage"
+            kernel = get_bitbake_var("KERNEL_IMAGETYPE")
+            if not kernel:
+                kernel = "bzImage"
 
-            grubefi_conf += "linux %s rootwait %s\n" \
+            grubefi_conf += "linux /%s rootwait %s\n" \
                             % (kernel, bootloader.append)
             grubefi_conf += "initrd /initrd \n"
             grubefi_conf += "}\n"
@@ -268,9 +272,12 @@
         if os.path.isfile("%s/initrd.cpio.gz" % cr_workdir):
             os.remove("%s/initrd.cpio.gz" % cr_workdir)
 
-        # Install bzImage
-        install_cmd = "install -m 0644 %s/bzImage %s/bzImage" % \
-                      (kernel_dir, isodir)
+        kernel = get_bitbake_var("KERNEL_IMAGETYPE")
+        if not kernel:
+            kernel = "bzImage"
+
+        install_cmd = "install -m 0644 %s/%s %s/%s" % \
+                      (kernel_dir, kernel, isodir, kernel)
         exec_cmd(install_cmd)
 
         #Create bootloader for efi boot
diff --git a/poky/scripts/runqemu b/poky/scripts/runqemu
index 39bed03..4079f2b 100755
--- a/poky/scripts/runqemu
+++ b/poky/scripts/runqemu
@@ -185,10 +185,11 @@
         self.lock_descriptor = None
         self.bitbake_e = ''
         self.snapshot = False
+        self.wictypes = ('wic', 'wic.vmdk', 'wic.qcow2', 'wic.vdi')
         self.fstypes = ('ext2', 'ext3', 'ext4', 'jffs2', 'nfs', 'btrfs',
                         'cpio.gz', 'cpio', 'ramfs', 'tar.bz2', 'tar.gz')
-        self.vmtypes = ('hddimg', 'hdddirect', 'wic', 'wic.vmdk',
-                        'wic.qcow2', 'wic.vdi', 'iso')
+        self.vmtypes = ('hddimg', 'hdddirect', 'iso')
+        self.fsinfo = {}
         self.network_device = "-device e1000,netdev=net0,mac=@MAC@"
         # Use different mac section for tap and slirp to avoid
         # conflicts, e.g., when one is running with tap, the other is
@@ -253,7 +254,7 @@
 
     def check_arg_fstype(self, fst):
         """Check and set FSTYPE"""
-        if fst not in self.fstypes + self.vmtypes:
+        if fst not in self.fstypes + self.vmtypes + self.wictypes:
             logger.warning("Maybe unsupported FSTYPE: %s" % fst)
         if not self.fstype or self.fstype == fst:
             if fst == 'ramfs':
@@ -390,7 +391,7 @@
 
         unknown_arg = ""
         for arg in sys.argv[1:]:
-            if arg in self.fstypes + self.vmtypes:
+            if arg in self.fstypes + self.vmtypes + self.wictypes:
                 self.check_arg_fstype(arg)
             elif arg == 'nographic':
                 self.qemu_opt_script += ' -nographic'
@@ -438,7 +439,7 @@
             elif arg == 'publicvnc':
                 self.qemu_opt_script += ' -vnc :0'
             elif arg.startswith('tcpserial='):
-                self.tcpserial_portnum = arg[len('tcpserial='):]
+                self.tcpserial_portnum = '%s' % arg[len('tcpserial='):]
             elif arg.startswith('biosdir='):
                 self.custombiosdir = arg[len('biosdir='):]
             elif arg.startswith('biosfilename='):
@@ -491,12 +492,13 @@
         yocto_paravirt_kvm_wiki = "https://wiki.yoctoproject.org/wiki/Running_an_x86_Yocto_Linux_image_under_QEMU_KVM"
         dev_kvm = '/dev/kvm'
         dev_vhost = '/dev/vhost-net'
-        with open('/proc/cpuinfo', 'r') as f:
-            kvm_cap = re.search('vmx|svm', "".join(f.readlines()))
-        if not kvm_cap:
-            logger.error("You are trying to enable KVM on a cpu without VT support.")
-            logger.error("Remove kvm from the command-line, or refer:")
-            raise RunQemuError(yocto_kvm_wiki)
+        if self.qemu_system.endswith(('i386', 'x86_64')):
+            with open('/proc/cpuinfo', 'r') as f:
+                kvm_cap = re.search('vmx|svm', "".join(f.readlines()))
+            if not kvm_cap:
+                logger.error("You are trying to enable KVM on a cpu without VT support.")
+                logger.error("Remove kvm from the command-line, or refer:")
+                raise RunQemuError(yocto_kvm_wiki)
 
         if not os.path.exists(dev_kvm):
             logger.error("Missing KVM device. Have you inserted kvm modules?")
@@ -535,6 +537,40 @@
             else:
                 raise RunQemuError("FSTYPE is NULL!")
 
+        # parse QB_FSINFO into dict, e.g. { 'wic': ['no-kernel-in-fs', 'a-flag'], 'ext4': ['another-flag']}
+        wic_fs = False
+        qb_fsinfo = self.get('QB_FSINFO')
+        if qb_fsinfo:
+            qb_fsinfo = qb_fsinfo.split()
+            for fsinfo in qb_fsinfo:
+                try:
+                    fstype, fsflag = fsinfo.split(':')
+
+                    if fstype == 'wic':
+                        if fsflag == 'no-kernel-in-fs':
+                            wic_fs = True
+                        elif fsflag == 'kernel-in-fs':
+                            wic_fs = False
+                        else:
+                            logger.warn('Unknown flag "%s:%s" in QB_FSINFO', fstype, fsflag)
+                            continue
+                    else:
+                        logger.warn('QB_FSINFO is not supported for image type "%s"', fstype)
+                        continue
+
+                    if fstype in self.fsinfo:
+                        self.fsinfo[fstype].append(fsflag)
+                    else:
+                        self.fsinfo[fstype] = [fsflag]
+                except Exception:
+                    logger.error('Invalid parameter "%s" in QB_FSINFO', fsinfo)
+
+        # treat wic images as vmimages (with kernel) or as fsimages (rootfs only)
+        if wic_fs:
+            self.fstypes = self.fstypes + self.wictypes
+        else:
+            self.vmtypes = self.vmtypes + self.wictypes
+
     def check_rootfs(self):
         """Check and set rootfs"""
 
@@ -681,10 +717,16 @@
 
     def check_tcpserial(self):
         if self.tcpserial_portnum:
+            ports = self.tcpserial_portnum.split(':')
+            port = ports[0]
             if self.get('QB_TCPSERIAL_OPT'):
-                self.qemu_opt_script += ' ' + self.get('QB_TCPSERIAL_OPT').replace('@PORT@', self.tcpserial_portnum)
+                self.qemu_opt_script += ' ' + self.get('QB_TCPSERIAL_OPT').replace('@PORT@', port)
             else:
-                self.qemu_opt_script += ' -serial tcp:127.0.0.1:%s' % self.tcpserial_portnum
+                self.qemu_opt_script += ' -serial tcp:127.0.0.1:%s' % port
+
+            if len(ports) > 1:
+                for port in ports[1:]:
+                    self.qemu_opt_script += ' -serial tcp:127.0.0.1:%s' % port
 
     def check_and_set(self):
         """Check configs sanity and set when needed"""
@@ -703,6 +745,7 @@
         else:
             os.putenv('QEMU_AUDIO_DRV', 'none')
 
+        self.check_qemu_system()
         self.check_kvm()
         self.check_fstype()
         self.check_rootfs()
@@ -824,7 +867,11 @@
             if self.dtb:
                 print('DTB: [%s]' % self.dtb)
         print('MACHINE: [%s]' % self.get('MACHINE'))
-        print('FSTYPE: [%s]' % self.fstype)
+        try:
+            fstype_flags = ' (' + ', '.join(self.fsinfo[self.fstype]) + ')'
+        except KeyError:
+            fstype_flags = ''
+        print('FSTYPE: [%s%s]' % (self.fstype, fstype_flags))
         if self.fstype  == 'nfs':
             print('NFS_DIR: [%s]' % self.rootfs)
         else:
@@ -1128,21 +1175,23 @@
 
         return 'qemu-system-%s' % qbsys
 
-    def setup_final(self):
+    def check_qemu_system(self):
         qemu_system = self.get('QB_SYSTEM_NAME')
         if not qemu_system:
             qemu_system = self.guess_qb_system()
         if not qemu_system:
             raise RunQemuError("Failed to boot, QB_SYSTEM_NAME is NULL!")
+        self.qemu_system = qemu_system
 
-        qemu_bin = os.path.join(self.bindir_native, qemu_system)
+    def setup_final(self):
+        qemu_bin = os.path.join(self.bindir_native, self.qemu_system)
 
         # It is possible to have qemu-native in ASSUME_PROVIDED, and it won't
         # find QEMU in sysroot, it needs to use host's qemu.
         if not os.path.exists(qemu_bin):
             logger.info("QEMU binary not found in %s, trying host's QEMU" % qemu_bin)
             for path in (os.environ['PATH'] or '').split(':'):
-                qemu_bin_tmp = os.path.join(path, qemu_system)
+                qemu_bin_tmp = os.path.join(path, self.qemu_system)
                 logger.info("Trying: %s" % qemu_bin_tmp)
                 if os.path.exists(qemu_bin_tmp):
                     qemu_bin = qemu_bin_tmp