From 15ae2509e522678e761046cdb8693291c09cf78c Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Tue, 18 Jun 2019 21:44:24 -0400 Subject: subtree updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../lib/recipetool/create_buildsys_python.py | 22 ++--- poky/scripts/lib/resulttool/manualexecution.py | 31 +++++- poky/scripts/lib/resulttool/merge.py | 20 +++- poky/scripts/lib/resulttool/report.py | 104 +++++++++++---------- poky/scripts/lib/resulttool/resultutils.py | 19 ++-- poky/scripts/lib/resulttool/store.py | 9 +- .../resulttool/template/test_report_full_text.txt | 38 ++++---- poky/scripts/lib/wic/engine.py | 7 +- poky/scripts/lib/wic/filemap.py | 5 +- poky/scripts/lib/wic/plugins/source/bootimg-efi.py | 38 ++++++-- .../lib/wic/plugins/source/bootimg-pcbios.py | 8 +- .../lib/wic/plugins/source/isoimage-isohybrid.py | 21 +++-- poky/scripts/runqemu | 83 ++++++++++++---- 13 files changed, 272 insertions(+), 133 deletions(-) (limited to 'poky/scripts') diff --git a/poky/scripts/lib/recipetool/create_buildsys_python.py b/poky/scripts/lib/recipetool/create_buildsys_python.py index 1a38bd0b1..ac9bc9237 100644 --- a/poky/scripts/lib/recipetool/create_buildsys_python.py +++ b/poky/scripts/lib/recipetool/create_buildsys_python.py @@ -31,11 +31,11 @@ def tinfoil_init(instance): 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 @@ class PythonRecipeHandler(RecipeHandler): 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 @@ class PythonRecipeHandler(RecipeHandler): 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 @@ class PythonRecipeHandler(RecipeHandler): 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 @@ class PythonRecipeHandler(RecipeHandler): 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 @@ class PythonRecipeHandler(RecipeHandler): 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 @@ class PythonRecipeHandler(RecipeHandler): 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 df28e1d21..ecb27c593 100755 --- a/poky/scripts/lib/resulttool/manualexecution.py +++ b/poky/scripts/lib/resulttool/manualexecution.py @@ -181,11 +181,38 @@ class ManualTestRunner(object): 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 @@ def register_commands(subparsers): 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 70d23a48f..18b4825a1 100644 --- a/poky/scripts/lib/resulttool/merge.py +++ b/poky/scripts/lib/resulttool/merge.py @@ -11,16 +11,23 @@ import json 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 @@ def register_commands(subparsers): 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 cb6b1cf94..a48c59f63 100644 --- a/poky/scripts/lib/resulttool/report.py +++ b/poky/scripts/lib/resulttool/report.py @@ -24,16 +24,19 @@ class ResultsTextReport(object): '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 @@ class ResultsTextReport(object): 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, machine): + if machine not in self.ltptests: + self.ltptests[machine] = {} - def handle_ltptest_result(self, k, status, result): 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 @@ class ResultsTextReport(object): 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, machine): + if machine not in self.ltpposixtests: + self.ltpposixtests[machine] = {} - def handle_ltpposixtest_result(self, k, status, result): 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 @@ class ResultsTextReport(object): 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 @@ class ResultsTextReport(object): 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 @@ class ResultsTextReport(object): 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 @@ class ResultsTextReport(object): 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 @@ class ResultsTextReport(object): 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 ea4ab42d9..e595c185d 100644 --- a/poky/scripts/lib/resulttool/resultutils.py +++ b/poky/scripts/lib/resulttool/resultutils.py @@ -42,10 +42,12 @@ def is_url(p): """ 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 @@ def append_resultsdata(results, f, configmap=store_map): 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 @@ def append_resultsdata(results, f, configmap=store_map): # 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 06505aecc..79c83dd8b 100644 --- a/poky/scripts/lib/resulttool/store.py +++ b/poky/scripts/lib/resulttool/store.py @@ -21,16 +21,19 @@ import oeqa.utils.gitarchive as gitarchive 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 @@ def register_commands(subparsers): 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 d2725b8d0..17c99cb4e 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 @@ Test Result Status Summary (Counts/Percentages sorted by testseries, ID) {% 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 42e93c3eb..61939ad19 100644 --- a/poky/scripts/lib/wic/engine.py +++ b/poky/scripts/lib/wic/engine.py @@ -75,7 +75,8 @@ def find_canned_image(scripts_path, wks_file): 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 @@ def list_canned_images(scripts_path): 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 @@ def list_canned_images(scripts_path): 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 244c07a71..a3919fbca 100644 --- a/poky/scripts/lib/wic/filemap.py +++ b/poky/scripts/lib/wic/filemap.py @@ -32,7 +32,10 @@ def get_block_size(file_obj): """ # 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 652323fa7..d87db1f1b 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 @@ class BootimgEFIPlugin(SourcePlugin): 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 @@ class BootimgEFIPlugin(SourcePlugin): 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 @@ class BootimgEFIPlugin(SourcePlugin): 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 6c9f54a89..670d34774 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 @@ class BootimgPcbiosPlugin(SourcePlugin): 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 96d07ff62..74d6f1451 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 @@ class IsoImagePlugin(SourcePlugin): 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 @@ class IsoImagePlugin(SourcePlugin): 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 @@ class IsoImagePlugin(SourcePlugin): 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 39bed038d..4079f2b17 100755 --- a/poky/scripts/runqemu +++ b/poky/scripts/runqemu @@ -185,10 +185,11 @@ class BaseConfig(object): 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 @@ class BaseConfig(object): 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 @@ class BaseConfig(object): 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 @@ class BaseConfig(object): 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 @@ class BaseConfig(object): 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 @@ class BaseConfig(object): 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 @@ class BaseConfig(object): 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 @@ class BaseConfig(object): else: os.putenv('QEMU_AUDIO_DRV', 'none') + self.check_qemu_system() self.check_kvm() self.check_fstype() self.check_rootfs() @@ -824,7 +867,11 @@ class BaseConfig(object): 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 @@ class BaseConfig(object): 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 -- cgit v1.2.3