summaryrefslogtreecommitdiff
path: root/poky/meta/lib
diff options
context:
space:
mode:
authorAndrew Geissler <geissonator@yahoo.com>2023-03-03 21:41:14 +0300
committerPatrick Williams <patrick@stwcx.xyz>2023-03-17 01:04:34 +0300
commit6aa7eec5002756f5398774a35fb9d985e15a4573 (patch)
treee183e1e35404e51cc1f889b603e3500594ce09f6 /poky/meta/lib
parent9347dd4efc156c93b1d9beaeb32e9b719ad6a3d2 (diff)
downloadopenbmc-6aa7eec5002756f5398774a35fb9d985e15a4573.tar.xz
subtree updates: openembedded poky
poky: aa6cd06a9f..fb1853c66c: Adrian Freihofer (1): bblayers/setupwriters/oe-setup-layers: create dir if not exists Alexander Kanavin (48): bblayers/makesetup: skip git repos that are submodules scripts/oe-setup-layers: print a note about submodules if present go: update 1.19.4 -> 1.20 go-cross-canadian: use gcc-crosssdk, not gcc-native vim: update 9.0.1211 -> 9.0.1293 to resolve open CVEs gstreamer1.0: update 1.20.5 -> 1.22.0 mesa: update 22.3.3 -> 22.3.5 meta/conf: move default configuration templates into meta/conf/templates/default scripts/oe-setup-layers: correct variable names - layers should be called repos scripts/oe-setup-layers: do not clobber json module with a variable named 'json' gcr: enable vala .vapi generation only when gobject introspection is also enabled gstreamer1.0-python: do not require introspection during builds go: update 1.20 -> 1.20.1 rust: update 1.67.0 -> 1.67.1 freetype: update 2.12.1 -> 2.13.0 gnutls: update 3.7.8 -> 3.8.0 vulkan-samples: update to latest revision gnu-config: update to latest revision puzzles: upgrade to latest revision python3: upgrade 3.11.1 -> 3.11.2 nghttp2: upgrade 1.51.0 -> 1.52.0 log4cplus: upgrade 2.0.8 -> 2.1.0 dos2unix: upgrade 7.4.3 -> 7.4.4 webkitgtk: upgrade 2.38.4 -> 2.38.5 man-pages: upgrade 6.02 -> 6.03 util-macros: upgrade 1.19.3 -> 1.20.0 dpkg: upgrade 1.21.19 -> 1.21.20 ruby: upgrade 3.2.0 -> 3.2.1 libwpe: upgrade 1.14.0 -> 1.14.1 vala: upgrade 0.56.3 -> 0.56.4 dbus: upgrade 1.14.4 -> 1.14.6 linux-firmware: upgrade 20230117 -> 20230210 zstd: upgrade 1.5.2 -> 1.5.4 python3-setuptools: upgrade 67.2.0 -> 67.3.1 mmc-utils: upgrade to latest revision harfbuzz: upgrade 6.0.0 -> 7.0.0 libhandy: upgrade 1.8.0 -> 1.8.1 diffoscope: upgrade 234 -> 235 wireless-regdb: upgrade 2022.08.12 -> 2023.02.13 libcap: upgrade 2.66 -> 2.67 e2fsprogs: upgrade 1.46.5 -> 1.47.0 git: upgrade 2.39.1 -> 2.39.2 piglit: upgrade to latest revision python3-hatchling: upgrade 1.12.2 -> 1.13.0 devtool: ignore patch-fuzz errors when extracting source gcr: correctly configure vala against introspection data selftest: do not check for dri.pc in the headless test scripts/runqemu: move render nodes check to runqemu from selftest Alexis Lothoré (8): oeqa/selftest/resulttooltests: fix minor typo scripts/oe-selftest: append metadata to tests results scripts/resulttool/regression: remove unused import scripts/resulttool/regression: add metadata filtering for oeselftest scripts: add new helper for regression report generation oeqa/selftest: add test for yocto_testresults_query.py scripts/yoct_testresults_query: manage base/target revision not found oeqa/selftest/resulttool: add test for metadata filtering on regression Bruce Ashfield (11): linux-yocto/5.19: drop recipes yocto-bsps: remove 5.19 bbappend lttng-modules: fix for kernel 6.2+ linux-yocto-rt/6.1: fix compilation issue with per cpu stats linux-yocto-dev: bump to v6.2 linux-yocto/6.1: update to v6.1.12 linux-yocto/5.15: update to v5.15.94 linux-yocto/6.1: update to v6.1.14 linux-yocto/5.15: update to v5.15.96 linux-yocto-rt/6.1: update to -rt7 linux-yocto-rt/5.15: update to -rt59 Caner Altinbasak (1): bitbake: fetch2: Add GIT_CACHE_PATH and SSL_CERT_DIR into FETCH_EXPORT_VARS Chee Yang Lee (2): tar: Fix CVE-2022-48303 checklayer: check for patch file upstream status Chen Qi (1): gpgme: fix python setuptools invalid version issue Denys Zagorui (1): kernel-devsrc: powerpc: add missed dependency for modules_prepare Dmitry Baryshkov (4): linux-firmware: properly set license for all Qualcomm firmware linux-firmware: add yamato fw files to qcom-adreno-a2xx package mesa: provide support for packing development and testing tools ffmpeg: fix build failure when vulkan is enabled Fawzi KHABER (1): ref-manual: update DEV_PKG_DEPENDENCY in variables Federico Pellegrin (1): curl: fix dependencies when building with ldap/ldaps Geoffrey GIRY (1): cve-extra-exclusions: ignore inapplicable linux-yocto CVEs Joe Slater (1): tar: Update fix for CVE-2022-48303 to upstream version Joel Stanley (1): qemu: Fix building with 6.2 kernel headers Jose Quaresma (2): bluez5: refresh patches with devtool icecc: enable the network only when ICECC_DISABLED is not set Joshua Watt (4): classes/populate_sdk_base: Append cleandirs classes/create-sdpx-2.2: Remove image SPDX and index from deploydir classes/create-spdx-2.2: Report downloads as separate packages weston: Add kiosk shell Kai Kang (2): xserver-xorg: 21.1.6 -> 21.1.7 webkitgtk: 2.38.3 -> 2.38.4 Khem Raj (12): unfs3: Add missing header files stress-ng: Add missing header files for clock_adjtime gstreamer1.0-plugins-good: Fix build with musl elfutils: Backport fix for DW_TAG_unspecified_type handling tune-riscv.inc: Add riscv64nc to available tunes list grub: Handle R_RISCV_CALL_PLT reloc gdb: Upgrade to 13.1 musl: Update to tip of trunk kernel: Add kernel specific OBJDUMP opensbi: Do not add dependencies if RISCV_SBI_FDT is not set opensbi: Upgrade to 1.2 release vte: Fix -Wenum-constexpr-conversion warning Lee Chee Yang (1): migration-guides: add release-notes for 4.0.7 Luca Boccassi (1): systemd: add user for systemd-oomd if enabled Marek Vasut (1): systemd-systemctl: Create machine-id with "uninitialized" text in it Mark Asselstine (1): bitbake: fetch/npmsw: add more short forms for git operations Markus Volk (3): graphene: add a PACKAGECONFIG for arm_neon libportal: allow to build without gtk4 backend libsdl2: add missing libdecor RDEPEND Martin Jansa (3): python3-numpy: upgrade to 1.24.2 insane.bbclass: use 4 spaces for indentation insane.bbclass: move Upstream-Status logic to oe.qa Mateusz Marciniec (1): sstatesig: Improve output hash calculation Michael Opdenacker (17): migration-guides/migration-4.2.rst: fix minor issues ref-manual: variables.rst: fix broken hyperlink profile-manual: update WireShark hyperlinks manuals: replace unnecessary uses of 'yocto_docs' by internal references bsp-guide: fix broken git URLs and missing word ref-manual: improve "devtool check-upgrade-status" explanations ref-manual: document Rust classes manuals: update patchwork instance URL ref-manual: classes.rst: add python-setuptools3_rust and python_pyo3 classes dev-manual: new-recipe.rst: restructure examples ref-manual: classes.rst: improvements to cmake class documentation ref-manual: document meson class and variables dev-manual: sbom.rst: add link to FOSDEM 2023 video manuals: document COMMERCIAL_[AUDIO|VIDEO]_PLUGINS variables ref-manual: system-requirements.rst: update supported distros dev-manual: new-recipe.rst: add Meson example recipe dev-manual: new-recipe.rst: add references to subsections in Examples section Mike Crowe (1): bitbake: gitsm: Fix path construction for relative submodule URI Mikko Rapeli (8): oeqa ssh.py: move output prints to new line oeqa ssh.py: add connection keep alive options to ssh client oeqa dump.py: add error counter and stop after 5 failures oeqa qemurunner: read more data at a time from serial oeqa qemurunner.py: add timeout to QMP calls oeqa qemurunner.py: try to avoid reading one character at a time oeqa ssh.py: fix hangs in run() runqemu: kill qemu if it hangs Mingli Yu (1): mc: set ac_cv_path_PERL_FOR_BUILD Narpat Mali (1): libseccomp: fix for the ptest result format Niko Mauno (1): ref-manual: Fix invalid feature name Paulo Neves (4): bitbake: tests/fetch: git-lfs restore _find_git_lfs bitbake: tests/fetch: Add real git lfs tests and decorator bitbake: fetch/git: Removed unused variables in _contains_lfs bitbake: fetch/git: Replace mkdtemp with TemporaryDirectory and avoid exception masking Pavel Zhukov (4): wic: Fix usage of fstype=none in wic u-boot: Map arm64 into map for u-boot dts installation wic: Fix populating of IMAGE_EFI_BOOT_FILES with uefi-kernel oeqa/selftest/wic: Add test for uefi-kernel loader Pedro Baptista (3): bitbake: action.py: add topdir in bblayers_conf path for add-layer bitbake: action.py: add topdir in bblayers_conf path for remove-layer create.py: add command arg to add layer to bblayers.conf Peter Kjellerstedt (1): devshell: Do not add scripts/git-intercept to PATH Peter Marko (1): systemd: add group sgx to udev package Petr Kubizňák (1): graphene: remove introspection from PACKAGECONFIG Richard Elberger (2): docbook-xml: Switch from debian packages to upstream docbook sources bitbake: documentation: bitbake: add file-checksums to varflags section Richard Leitner (1): ref-manual: variables: FIT_KERNEL_COMP_ALG: add lzo Richard Purdie (20): bitbake: cookerdata: Remove incorrect SystemExit usage libssh2: Clean up ptest patch/coverage bitbake: data: Evaluate the value of export/unexport/network flags poky.conf: Update SANITY_TESTED_DISTROS to match autobuilder bitbake: cookerdata: Improve early exception handling bitbake: cookerdata: Drop dubious exception handling code bitbake: runqueue: Drop SystemExit usage bitbake: cooker: Ensure lock is held with changing notifier bitbake: server/process: Improve idle thread exception handling bitbake: event/cooker/runqueue: Add ability to interrupt longer running code bitbake: bitbake: Bump to version 2.3.1 sstate: Add check_for_interrupts() call functionality added in bitbake binutils: Fix nativesdk ld.so search oeqa/selftest/prservice: Improve debug output for failure bitbake: cooker: Fix memory resident cache invalidation issue bitbake: fetch2/wget: Drop unused import bitbake: utils: Use internal fetcher function to avoid duplication resulttool/regression: Ensure LTP results are only compared against other LTP runs resulttool/regression: Improve matching of poor ptest test names build-appliance-image: Update to master head revision Robert Joslyn (1): curl: Update 7.87.0 to 7.88.0 Ross Burton (17): lib/buildstats: handle tasks that never finished cml1: remove redundant addtask bitbake: fetch2/wget: clean up netrc usage libcgroup: clean up musl DEPENDS pkgconfig: use system glib for nativesdk builds site: remove glib site values less: backport the fix for CVE-2022-46663 tiff: backport fix for CVE-2022-48281 python3-atomicwrites: add BBCLASSEXTEND python3-iniconfig: add BBCLASSEXTEND python3-pytest: set RDEPENDS globally, not just target bitbake: lib/bb/siggen: fix debug() call ptest-runner: add non-root ptest user for tests to run as meta-selftest/files: add ptest to static-passwd/-group quilt: run tests as ptest user, and let that user write into the tests glibc: add ignore for CVE-2023-25139 glibc: remove obsolete CVE ignores Saul Wold (2): busybox: Fix depmod patch create-spdx-2.2: Add support for custom Annotations Siddharth Doshi (1): openssl: Upgrade 3.0.7 -> 3.0.8 Tim Orling (7): python3-hypothesis: upgrade 6.66.0 -> 6.68.1 python3-typing-extensions: upgrade 4.4.0 -> 4.5.0 python3-cryptography{-vectors}: 39.0.0 -> 39.0.1 python3-more-itertools: upgrade 9.0.0 -> 9.1.0 python3-zipp: upgrade 3.14.0 -> 3.15.0 python3-hypothesis: upgrade 6.68.1 -> 6.68.2 python3-babel: upgrade 2.11.0 -> 2.12.1 Trevor Woerner (12): packagegroup-self-hosted: alphabetize packagegroup-self-hosted: add zstd build-appliance-image: set TERM build-appliance-image kernel: linux-yocto: qemuall: add taskstats build-appliance-image: add /lib64 symlink build-appliance-image: QB_MEM: allow user config QB_SMP: allow user modification build-appliance-image: check for xattr feature dtc: update DESCRIPTION dtc: update license checks build-appliance-image: fix HOMEPAGE VOLATILE_TMP_DIR: add Ulrich Ölmann (5): dev-manual: fix old override syntax kernel-yocto: fix kernel-meta data detection kernel-dev,ref-manual: fix old override syntax ref-manual: refer to MACHINE variable instead of KMACHINE kernel-dev: harmonize example with ref-manual Wang Mingyu (21): libdrm: upgrade 2.4.114 -> 2.4.115 libjpeg-turbo: upgrade 2.1.5 -> 2.1.5.1 libsdl2: upgrade 2.26.2 -> 2.26.3 lighttpd: upgrade 1.4.68 -> 1.4.69 openssh: upgrade 9.1p1 -> 9.2p1 python3-sphinx-rtd-theme: upgrade 1.1.1 -> 1.2.0 python3-zipp: upgrade 3.12.0 -> 3.13.0 xkeyboard-config: upgrade 2.37 -> 2.38 xwayland: upgrade 22.1.7 -> 22.1.8 libx11: 1.8.3 -> 1.8.4 dtc: upgrade 1.6.1 -> 1.7.0 liburcu: upgrade 0.13.2 -> 0.14.0 curl: upgrade 7.88.0 -> 7.88.1 harfbuzz: upgrade 7.0.0 -> 7.0.1 libx11-compose-data: 1.8.3 -> 1.8.4 python3-pip: update 23.0 -> 23.0.1 python3-poetry-core: upgrade 1.5.0 -> 1.5.1 python3-pytest-subtests: upgrade 0.9.0 -> 0.10.0 python3-zipp: upgrade 3.13.0 -> 3.14.0 python3-setuptools: upgrade 67.3.1 -> 67.3.3 diffoscope: upgrade 235 -> 236 Xiangyu Chen (1): dhcpcd: fix dhcpcd start failure on qemuppc64 Yash Shinde (1): glibc: stable 2.37 branch updates. Yi Zhao (1): glibc: unify wordsize.h between arm and aarch64 leimaohui (2): gnutls: Updated ther patch which fixes build error for fips enabled. nghttp2: Deleted the entries for -client and -server, and removed a dependency on them from the main package. yanxk (1): cpio: Add ptest support meta-openembedded: cba6df61c7..a9b2d1303b: Alex Kiernan (1): ostree: Upgrade 2022.7 -> 2023.1 Arash Partow (1): ExprTk: Update package to release/0.0.2 Archana Polampalli (1): Nodejs: fix buildpaths warning Bartosz Golaszewski (5): libgpiod: update to v1.6.4 libgpiod: add a recipe for libgpiod v2.0-rc2 python3-gpiod: new package libgpiod: bump version to v2.0-rc3 python3-gpiod: bump version to v2.0-rc3 Catalin Enache (1): plocate: add recipe Changqing Li (1): liblockfile: fix do_install failure when ldconfig is not installed Chee Yang Lee (2): tinyproxy: fix CVE-2022-40468 tmux: update to tmux_3.3a Chen Qi (1): nodejs: add CVE_PRODUCT Cook, Samuel (1): python-systemd: update from v234 to v235 Craig Comstock (1): cfengine: upgrade to 3.21.0 Denys Dmytriyenko (2): lmbench: set up /usr/bin/hello as alternative mbedtls: set up /usr/bin/hello as alternative Fabio Estevam (2): spice-gtk: Update to version 0.42 glmark2: Update to 2023.01 Jan Luebbe (5): add signing.bbclass as infrastructure for build artifact signing smemstat: add recipe linux-serial-test: add recipe atftp: upgrade from 0.7.5 to 0.8.0 atftp: use https for git repository access Joe Slater (1): phoronix-test-suite: fix CVE-2022-40704 Joshua Watt (2): libvpx: Explicitly link with pthread support libvpx: Enable native support Khem Raj (7): python3-cson: Make PEP440 compatible version scheme python3-grpcio: Add missing include for close/open APIs graphene: Delete recipe glog: Link with libatomics on mips. glog: Fix build with clang on 32bit platforms networkmanager: Fix build with musl liburing: Update to latest tip of tree Lei Maohui (1): libiodbc: Fix install conflict when enable multilib. Marek Vasut (1): v4l-utils: Update 1.23.0+fd544473 -> 1.23.0+9431e4b2 Markus Volk (10): iwd: update 2.0 -> 2.3 libdeflate: add recipe pipewire-media-session: update 0.4.1 -> 0.4.2 gnome-software: update 43.2 -> 43.4 fwupd: fix polkit rules.d permissions pipewire: update 0.3.65 -> 0.3.66 appstream: update 0.15.5 -> 0.16.1 flatpak: update 1.15.1 -> 1.15.3 gparted: update 1.4.0 -> 1.5.0 webp-pixbuf-loader: update 0.0.7 -> 0.2.0 Martin Jansa (4): nodejs: fix do_install failure with 'shared' PACKAGECONFIG nodejs: add Upstream-Status openhpi, uw-imag, python3-m2crypto: replace Unknown Upstream-Status with Pending .patch: fix Upstream-Status formatting issues reported by patchreview tool from oe-core Michael Haener (1): usb-modeswitch: update 2.6.0 -> 2.6.1 Michael Opdenacker (1): ipcalc: update to 1.0.2 Mingli Yu (2): opencv: disable intel IPP mariadb: Upgrade to 10.11.2 Narpat Mali (1): net-snmp: CVE-2022-44792 & CVE-2022-44793 Fix NULL Pointer Exception Pablo Saavedra (1): graphene: disable neon support on arm 32bits Petr Gotthard (5): libqmi: upgrade 1.30.8 -> 1.32.2 libmbim: upgrade 1.26.4 -> 1.28.2 modemmanager: upgrade 1.18.12 -> 1.20.4 openvpn: upgrade 2.5.8 -> 2.6.0 python3-scapy: upgrade 2.4.5 -> 2.5.0 Randy MacLeod (1): python3-pillow: Add distutils, unixadmin for ptest Ross Burton (10): python3-simpleeval: update patch status nodejs: remove redundant expand=True to getVar() nodejs: run configure.py in verbose mode nodejs: use a postfunc to prune source tree nodejs: don't force cross-compilation in native builds nodejs: remove LD assignment nodejs: no need to stage binaries for target nodejs: remove redundant comment zchunk: upgrade to 1.2.4 liburing: enable native/nativesdk builds Stefano Babic (1): zchunk: upgrade 1.2.4 -> 1.3.0 Tom Hochstein (1): nlohmann-json: Allow empty main package for SDK Ulrich Ölmann (1): tnftp: switch to using variable flags for alternatives Wang Mingyu (104): python3-apt: upgrade 2.5.0 -> 2.5.2 python3-aspectlib: upgrade 1.5.2 -> 2.0.0 python3-aiohttp-jinja2: upgrade 1.5 -> 1.5.1 python3-astroid: upgrade 2.13.2 -> 2.14.1 python3-bitarray: upgrade 2.6.2 -> 2.7.0 python3-cantools: upgrade 38.0.1 -> 38.0.2 python3-coverage: upgrade 7.0.5 -> 7.1.0 python3-cmd2: upgrade 2.4.2 -> 2.4.3 python3-django: upgrade 4.1.3 -> 4.1.6 python3-dateparser: upgrade 1.1.6 -> 1.1.7 python3-elementpath: upgrade 3.0.2 -> 4.0.1 python3-evdev: upgrade 1.6.0 -> 1.6.1 python3-flask-wtf: upgrade 1.1.0 -> 1.1.1 python3-fastnumbers: upgrade 3.2.1 -> 4.0.1 python3-flask-migrate: upgrade 4.0.1 -> 4.0.4 python3-luma-oled: upgrade 3.9.0 -> 3.11.0 python3-google-api-python-client: upgrade 2.72.0 -> 2.77.0 python3-ipython: upgrade 8.8.0 -> 8.9.0 python3-icu: upgrade 2.8.1 -> 2.10.2 python3-license-expression: upgrade 30.0.0 -> 30.1.0 python3-meh: upgrade 0.50.1 -> 0.51 python3-portalocker: upgrade 2.6.0 -> 2.7.0 python3-pandas: upgrade 1.5.2 -> 1.5.3 python3-openpyxl: upgrade 3.0.10 -> 3.1.0 python3-paramiko: upgrade 2.12.0 -> 3.0.0 python3-portion: Upgrade 2.3.0 -> 2.3.1 python3-pymisp: upgrade 2.4.167 -> 2.4.168 python3-pymodbus: upgrade 3.1.0 -> 3.1.3 python3-pykickstart: upgrade 3.34 -> 3.43 python3-pyscaffold: upgrade 4.3.1 -> 4.4 python3-pywbem: upgrade 1.5.0 -> 1.6.0 python3-sentry-sdk: upgrade 1.13.0 -> 1.15.0 python3-qrcode: upgrade 7.3.1 -> 7.4.2 python3-reedsolo: upgrade 1.6.1 -> 1.7.0 python3-simplejson: upgrade 3.18.1 -> 3.18.3 python3-traitlets: upgrade 5.8.1 -> 5.9.0 python3-sqlalchemy: upgrade 1.4.46 -> 2.0.3 python3-websocket-client: upgrade 1.4.2 -> 1.5.1 python3-xlsxwriter: upgrade 3.0.7 -> 3.0.8 python3-xmlschema: upgrade 2.1.1 -> 2.2.1 ctags: upgrade 6.0.20230115.0 -> 6.0.20230212.0 ddrescue: upgrade 1.26 -> 1.27 editorconfig-core-c: upgrade 0.12.5 -> 0.12.6 htpdate: upgrade 1.3.6 -> 1.3.7 iscsi-initiator-utils: upgrade 2.1.7 -> 2.1.8 geoclue: upgrade 2.6.0 -> 2.7.0 htop: upgrade 3.2.1 -> 3.2.2 hwdata: upgrade 0.366 -> 0.367 glog: upgrade 0.5.0 -> 0.6.0 libtevent: upgrade 0.13.0 -> 0.14.1 libtdb: upgrade 1.4.7 -> 1.4.8 libtalloc: upgrade 2.3.4 -> 2.4.0 jack: upgrade 1.19.21 -> 1.19.22 jsonrpc: upgrade 1.3.0 -> 1.4.1 liburing: upgrade 2.2 -> 2.3 libusb-compat: upgrade 0.1.7 -> 0.1.8 networkmanager: upgrade 1.40.10 -> 1.42.0 minicoredumper: upgrade 2.0.2 -> 2.0.3 neon: upgrade 0.32.4 -> 0.32.5 nano: upgrade 7.1 -> 7.2 netplan: upgrade 0.104 -> 0.106 rdma-core: upgrade 42.0 -> 44.0 pcsc-tools: upgrade 1.6.1 -> 1.6.2 poppler-data: upgrade 0.4.11 -> 0.4.12 sshpass: upgrade 1.09 -> 1.10 poppler: upgrade 23.01.0 -> 23.02.0 postgresql: upgrade 14.5 -> 15.2 sip: upgrade 6.7.5 -> 6.7.7 uchardet: upgrade 0.0.7 -> 0.0.8 zabbix: upgrade 6.2.6 -> 6.2.7 uftrace: upgrade 0.13 -> 0.13.1 krb5: Fix install conflict when enable multilib. libnet: Fix install conflict when enable multilib. imlib2: Fix install conflict when enable multilib. python3-aiofiles: upgrade 22.1.0 -> 23.1.0 python3-aiohttp: upgrade 3.8.3 -> 3.8.4 python3-alembic: upgrade 1.9.2 -> 1.9.4 python3-antlr4-runtime: upgrade 4.11.1 -> 4.12.0 python3-astroid: upgrade 2.14.1 -> 2.14.2 python3-autobahn: upgrade 23.1.1 -> 23.1.2 python3-bitstruct: upgrade 8.15.1 -> 8.17.0 python3-bitarray: upgrade 2.7.0 -> 2.7.3 python3-django: upgrade 4.1.6 -> 4.1.7 python3-google-api-python-client: upgrade 2.77.0 -> 2.79.0 python3-flask: upgrade 2.2.2 -> 2.2.3 python3-huey: upgrade 2.4.4 -> 2.4.5 python3-google-auth: upgrade 2.16.0 -> 2.16.1 python3-ipython: upgrade 8.9.0 -> 8.10.0 python3-imageio: upgrade 2.25.0 -> 2.25.1 python3-openpyxl: upgrade 3.1.0 -> 3.1.1 python3-pykickstart: upgrade 3.43 -> 3.44 python3-pydantic: upgrade 1.10.4 -> 1.10.5 python3-pytest-forked: upgrade 1.4.0 -> 1.6.0 python3-pytest-xdist: upgrade 3.1.0 -> 3.2.0 python3-redis: upgrade 4.4.2 -> 4.5.1 python3-soupsieve: upgrade 2.3.2.post1 -> 2.4 python3-simpleeval: upgrade 0.9.12 -> 0.9.13 python3-stevedore: upgrade 4.1.1 -> 5.0.0 python3-sqlalchemy: upgrade 2.0.3 -> 2.0.4 python3-watchdog: upgrade 2.2.1 -> 2.3.0 python3-werkzeug: upgrade 2.2.2 -> 2.2.3 python3-zeroconf: upgrade 0.47.1 -> 0.47.3 python3-coverage: upgrade 7.1.0 -> 7.2.0 python3-eth-keyfile: upgrade 0.6.0 -> 0.6.1 Yi Zhao (7): meta-python: fix Upstream-Status format meta-oe: fix Upstream-Status format meta-networking: fix Upstream-Status format fatresize: fix Upstream-Status format apache2: use /run instead of /var/run for systemd volatile config phpmyadmin: upgrade 5.2.0 -> 5.2.1 ufs-utils: upgrade 1.9 -> 3.12.3 bhargav_das@mentor.com (1): python3-daemon_2.3.2.bb: add python-daemon recipe for python3 Signed-off-by: Andrew Geissler <geissonator@yahoo.com> Change-Id: I826d53d70744bc80ebe8b60203241dfddce7d5fe
Diffstat (limited to 'poky/meta/lib')
-rw-r--r--poky/meta/lib/bblayers/create.py11
-rw-r--r--poky/meta/lib/bblayers/makesetup.py10
-rw-r--r--poky/meta/lib/bblayers/setupwriters/oe-setup-layers.py2
-rw-r--r--poky/meta/lib/oe/qa.py17
-rw-r--r--poky/meta/lib/oe/sbom.py4
-rw-r--r--poky/meta/lib/oe/spdx.py13
-rw-r--r--poky/meta/lib/oe/sstatesig.py4
-rw-r--r--poky/meta/lib/oeqa/core/target/ssh.py43
-rw-r--r--poky/meta/lib/oeqa/selftest/cases/prservice.py2
-rw-r--r--poky/meta/lib/oeqa/selftest/cases/resulttooltests.py245
-rw-r--r--poky/meta/lib/oeqa/selftest/cases/runtime_test.py11
-rw-r--r--poky/meta/lib/oeqa/selftest/cases/wic.py20
-rw-r--r--poky/meta/lib/oeqa/selftest/cases/yoctotestresultsquerytests.py39
-rw-r--r--poky/meta/lib/oeqa/selftest/context.py15
-rw-r--r--poky/meta/lib/oeqa/utils/dump.py23
-rw-r--r--poky/meta/lib/oeqa/utils/qemurunner.py9
16 files changed, 440 insertions, 28 deletions
diff --git a/poky/meta/lib/bblayers/create.py b/poky/meta/lib/bblayers/create.py
index c8f3f1b370..517554c587 100644
--- a/poky/meta/lib/bblayers/create.py
+++ b/poky/meta/lib/bblayers/create.py
@@ -12,6 +12,7 @@ import shutil
import bb.utils
from bblayers.common import LayerPlugin
+from bblayers.action import ActionPlugin
logger = logging.getLogger('bitbake-layers')
@@ -69,11 +70,19 @@ class CreatePlugin(LayerPlugin):
with open(os.path.join(example, args.examplerecipe + '_%s.bb') % args.version, 'w') as fd:
fd.write(example_template)
- logger.plain('Add your new layer with \'bitbake-layers add-layer %s\'' % args.layerdir)
+ if args.add_layer:
+ # Add the layer to bblayers.conf
+ args.layerdir = [layerdir]
+ ActionPlugin.do_add_layer(self, args)
+ logger.plain('Layer added %s' % args.layerdir)
+
+ else:
+ logger.plain('Add your new layer with \'bitbake-layers add-layer %s\'' % args.layerdir)
def register_commands(self, sp):
parser_create_layer = self.add_command(sp, 'create-layer', self.do_create_layer, parserecipes=False)
parser_create_layer.add_argument('layerdir', help='Layer directory to create')
+ parser_create_layer.add_argument('--add-layer', '-a', action='store_true', help='Add the layer to bblayers.conf after creation')
parser_create_layer.add_argument('--layerid', '-i', help='Layer id to use if different from layername')
parser_create_layer.add_argument('--priority', '-p', default=6, help='Priority of recipes in layer')
parser_create_layer.add_argument('--example-recipe-name', '-e', dest='examplerecipe', default='example', help='Filename of the example recipe')
diff --git a/poky/meta/lib/bblayers/makesetup.py b/poky/meta/lib/bblayers/makesetup.py
index 834e9338bc..5fb6f1469e 100644
--- a/poky/meta/lib/bblayers/makesetup.py
+++ b/poky/meta/lib/bblayers/makesetup.py
@@ -45,6 +45,13 @@ class MakeSetupPlugin(LayerPlugin):
return ""
return describe.strip()
+ def _is_submodule(self, repo_path):
+ # This is slightly brittle: git does not offer a way to tell whether
+ # a given repo dir is a submodule checkout, so we need to rely on .git
+ # being a file (rather than a dir like it is in standalone checkouts).
+ # The file typically contains a gitdir pointer to elsewhere.
+ return os.path.isfile(os.path.join(repo_path,".git"))
+
def make_repo_config(self, destdir):
""" This is a helper function for the writer plugins that discovers currently configured layers.
The writers do not have to use it, but it can save a bit of work and avoid duplicated code, hence it is
@@ -63,6 +70,9 @@ class MakeSetupPlugin(LayerPlugin):
logger.error("Layer {name} in {path} has uncommitted modifications or is not in a git repository.".format(name=l_name,path=l_path))
return
repo_path = self._get_repo_path(l_path)
+
+ if self._is_submodule(repo_path):
+ continue
if repo_path not in repos.keys():
repos[repo_path] = {'path':os.path.basename(repo_path),'git-remote':{'rev':l_rev, 'branch':l_branch, 'remotes':self._get_remotes(repo_path), 'describe':self._get_describe(repo_path)}}
if repo_path == destdir_repo:
diff --git a/poky/meta/lib/bblayers/setupwriters/oe-setup-layers.py b/poky/meta/lib/bblayers/setupwriters/oe-setup-layers.py
index f6a484b766..d5bc19a8cb 100644
--- a/poky/meta/lib/bblayers/setupwriters/oe-setup-layers.py
+++ b/poky/meta/lib/bblayers/setupwriters/oe-setup-layers.py
@@ -33,6 +33,8 @@ class OeSetupLayersWriter():
def do_write(self, parent, args):
""" Writes out a python script and a json config that replicate the directory structure and revisions of the layers in a current build. """
+ if not os.path.exists(args.destdir):
+ os.makedirs(args.destdir)
repos = parent.make_repo_config(args.destdir)
json = {"version":"1.0","sources":repos}
if not repos:
diff --git a/poky/meta/lib/oe/qa.py b/poky/meta/lib/oe/qa.py
index b4cbc50045..de980638c4 100644
--- a/poky/meta/lib/oe/qa.py
+++ b/poky/meta/lib/oe/qa.py
@@ -213,6 +213,23 @@ def exit_with_message_if_errors(message, d):
def exit_if_errors(d):
exit_with_message_if_errors("Fatal QA errors were found, failing task.", d)
+def check_upstream_status(fullpath):
+ import re
+ kinda_status_re = re.compile(r"^.*upstream.*status.*$", re.IGNORECASE | re.MULTILINE)
+ strict_status_re = re.compile(r"^Upstream-Status: (Pending|Submitted|Denied|Accepted|Inappropriate|Backport|Inactive-Upstream)( .+)?$", re.MULTILINE)
+ guidelines = "https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines#Patch_Header_Recommendations:_Upstream-Status"
+
+ with open(fullpath, encoding='utf-8', errors='ignore') as f:
+ file_content = f.read()
+ match_kinda = kinda_status_re.search(file_content)
+ match_strict = strict_status_re.search(file_content)
+
+ if not match_strict:
+ if match_kinda:
+ return "Malformed Upstream-Status in patch\n%s\nPlease correct according to %s :\n%s" % (fullpath, guidelines, match_kinda.group(0))
+ else:
+ return "Missing Upstream-Status in patch\n%s\nPlease add according to %s ." % (fullpath, guidelines)
+
if __name__ == "__main__":
import sys
diff --git a/poky/meta/lib/oe/sbom.py b/poky/meta/lib/oe/sbom.py
index bbf466bbad..22ed5070ea 100644
--- a/poky/meta/lib/oe/sbom.py
+++ b/poky/meta/lib/oe/sbom.py
@@ -14,6 +14,10 @@ def get_recipe_spdxid(d):
return "SPDXRef-%s-%s" % ("Recipe", d.getVar("PN"))
+def get_download_spdxid(d, idx):
+ return "SPDXRef-Download-%s-%d" % (d.getVar("PN"), idx)
+
+
def get_package_spdxid(pkg):
return "SPDXRef-Package-%s" % pkg
diff --git a/poky/meta/lib/oe/spdx.py b/poky/meta/lib/oe/spdx.py
index c74ea68878..7aaf2af5ed 100644
--- a/poky/meta/lib/oe/spdx.py
+++ b/poky/meta/lib/oe/spdx.py
@@ -216,6 +216,18 @@ class SPDXPackageVerificationCode(SPDXObject):
class SPDXPackage(SPDXObject):
+ ALLOWED_CHECKSUMS = [
+ "SHA1",
+ "SHA224",
+ "SHA256",
+ "SHA384",
+ "SHA512",
+ "MD2",
+ "MD4",
+ "MD5",
+ "MD6",
+ ]
+
name = _String()
SPDXID = _String()
versionInfo = _String()
@@ -234,6 +246,7 @@ class SPDXPackage(SPDXObject):
hasFiles = _StringList()
packageFileName = _String()
annotations = _ObjectList(SPDXAnnotation)
+ checksums = _ObjectList(SPDXChecksum)
class SPDXFile(SPDXObject):
diff --git a/poky/meta/lib/oe/sstatesig.py b/poky/meta/lib/oe/sstatesig.py
index f0224454c9..ae7ef14453 100644
--- a/poky/meta/lib/oe/sstatesig.py
+++ b/poky/meta/lib/oe/sstatesig.py
@@ -652,6 +652,10 @@ def OEOuthashBasic(path, sigfile, task, d):
if f == 'fixmepath':
continue
process(os.path.join(root, f))
+
+ for dir in dirs:
+ if os.path.islink(os.path.join(root, dir)):
+ process(os.path.join(root, dir))
finally:
os.chdir(prev_dir)
diff --git a/poky/meta/lib/oeqa/core/target/ssh.py b/poky/meta/lib/oeqa/core/target/ssh.py
index 7a10ba9763..51079075b5 100644
--- a/poky/meta/lib/oeqa/core/target/ssh.py
+++ b/poky/meta/lib/oeqa/core/target/ssh.py
@@ -34,6 +34,8 @@ class OESSHTarget(OETarget):
self.timeout = timeout
self.user = user
ssh_options = [
+ '-o', 'ServerAliveCountMax=2',
+ '-o', 'ServerAliveInterval=30',
'-o', 'UserKnownHostsFile=/dev/null',
'-o', 'StrictHostKeyChecking=no',
'-o', 'LogLevel=ERROR'
@@ -224,27 +226,33 @@ def SSHCall(command, logger, timeout=None, **opts):
def run():
nonlocal output
nonlocal process
+ output_raw = b''
starttime = time.time()
process = subprocess.Popen(command, **options)
if timeout:
endtime = starttime + timeout
eof = False
+ os.set_blocking(process.stdout.fileno(), False)
while time.time() < endtime and not eof:
- logger.debug('time: %s, endtime: %s' % (time.time(), endtime))
try:
+ logger.debug('Waiting for process output: time: %s, endtime: %s' % (time.time(), endtime))
if select.select([process.stdout], [], [], 5)[0] != []:
- reader = codecs.getreader('utf-8')(process.stdout, 'ignore')
- data = reader.read(1024, 4096)
+ # wait a bit for more data, tries to avoid reading single characters
+ time.sleep(0.2)
+ data = process.stdout.read()
if not data:
- process.stdout.close()
eof = True
else:
- output += data
- logger.debug('Partial data from SSH call: %s' % data)
+ output_raw += data
+ # ignore errors to capture as much as possible
+ logger.debug('Partial data from SSH call:\n%s' % data.decode('utf-8', errors='ignore'))
endtime = time.time() + timeout
except InterruptedError:
+ logger.debug('InterruptedError')
continue
+ process.stdout.close()
+
# process hasn't returned yet
if not eof:
process.terminate()
@@ -252,16 +260,30 @@ def SSHCall(command, logger, timeout=None, **opts):
try:
process.kill()
except OSError:
+ logger.debug('OSError when killing process')
pass
endtime = time.time() - starttime
lastline = ("\nProcess killed - no output for %d seconds. Total"
" running time: %d seconds." % (timeout, endtime))
- logger.debug('Received data from SSH call %s ' % lastline)
+ logger.debug('Received data from SSH call:\n%s ' % lastline)
output += lastline
else:
- output = process.communicate()[0].decode('utf-8', errors='ignore')
- logger.debug('Data from SSH call: %s' % output.rstrip())
+ output_raw = process.communicate()[0]
+
+ output = output_raw.decode('utf-8', errors='ignore')
+ logger.debug('Data from SSH call:\n%s' % output.rstrip())
+
+ # timout or not, make sure process exits and is not hanging
+ if process.returncode == None:
+ try:
+ process.wait(timeout=5)
+ except TimeoutExpired:
+ try:
+ process.kill()
+ except OSError:
+ logger.debug('OSError')
+ pass
options = {
"stdout": subprocess.PIPE,
@@ -290,4 +312,5 @@ def SSHCall(command, logger, timeout=None, **opts):
process.kill()
logger.debug('Something went wrong, killing SSH process')
raise
- return (process.wait(), output.rstrip())
+
+ return (process.returncode, output.rstrip())
diff --git a/poky/meta/lib/oeqa/selftest/cases/prservice.py b/poky/meta/lib/oeqa/selftest/cases/prservice.py
index cb95503c2c..9fe3b80a31 100644
--- a/poky/meta/lib/oeqa/selftest/cases/prservice.py
+++ b/poky/meta/lib/oeqa/selftest/cases/prservice.py
@@ -77,7 +77,7 @@ class BitbakePrTests(OESelftestTestCase):
exported_db_path = os.path.join(self.builddir, 'export.inc')
export_result = runCmd("bitbake-prserv-tool export %s" % exported_db_path, ignore_status=True)
self.assertEqual(export_result.status, 0, msg="PR Service database export failed: %s" % export_result.output)
- self.assertTrue(os.path.exists(exported_db_path))
+ self.assertTrue(os.path.exists(exported_db_path), msg="%s didn't exist, tool output %s" % (exported_db_path, export_result.output))
if replace_current_db:
current_db_path = os.path.join(get_bb_var('PERSISTENT_DIR'), 'prserv.sqlite3')
diff --git a/poky/meta/lib/oeqa/selftest/cases/resulttooltests.py b/poky/meta/lib/oeqa/selftest/cases/resulttooltests.py
index c2e76f1a44..f059991c19 100644
--- a/poky/meta/lib/oeqa/selftest/cases/resulttooltests.py
+++ b/poky/meta/lib/oeqa/selftest/cases/resulttooltests.py
@@ -71,7 +71,7 @@ class ResultToolTests(OESelftestTestCase):
self.assertTrue('target_result1' in results['runtime/mydistro/qemux86/image'], msg="Pair not correct:%s" % results)
self.assertTrue('target_result3' in results['runtime/mydistro/qemux86-64/image'], msg="Pair not correct:%s" % results)
- def test_regrresion_can_get_regression_result(self):
+ def test_regression_can_get_regression_result(self):
base_result_data = {'result': {'test1': {'status': 'PASSED'},
'test2': {'status': 'PASSED'},
'test3': {'status': 'FAILED'},
@@ -98,3 +98,246 @@ class ResultToolTests(OESelftestTestCase):
resultutils.append_resultsdata(results, ResultToolTests.target_results_data, configmap=resultutils.flatten_map)
self.assertEqual(len(results[''].keys()), 5, msg="Flattened results not correct %s" % str(results))
+ def test_results_without_metadata_can_be_compared(self):
+ base_configuration = {"configuration": {
+ "TEST_TYPE": "oeselftest",
+ "TESTSERIES": "series1",
+ "IMAGE_BASENAME": "image",
+ "IMAGE_PKGTYPE": "ipk",
+ "DISTRO": "mydistro",
+ "MACHINE": "qemux86",
+ "STARTTIME": 1672527600
+ }, "result": {}}
+ target_configuration = {"configuration": {
+ "TEST_TYPE": "oeselftest",
+ "TESTSERIES": "series1",
+ "IMAGE_BASENAME": "image",
+ "IMAGE_PKGTYPE": "ipk",
+ "DISTRO": "mydistro",
+ "MACHINE": "qemux86",
+ "STARTTIME": 1672527600
+ }, "result": {}}
+ self.assertTrue(regression.can_be_compared(self.logger, base_configuration, target_configuration),
+ msg="incorrect metadata filtering, tests without metadata should be compared")
+
+ def test_target_result_with_missing_metadata_can_not_be_compared(self):
+ base_configuration = {"configuration": {
+ "TEST_TYPE": "oeselftest",
+ "TESTSERIES": "series1",
+ "IMAGE_BASENAME": "image",
+ "IMAGE_PKGTYPE": "ipk",
+ "DISTRO": "mydistro",
+ "MACHINE": "qemux86",
+ "OESELFTEST_METADATA": {
+ "run_all_tests": True,
+ "run_tests": None,
+ "skips": None,
+ "machine": None,
+ "select_tags": ["toolchain-user", "toolchain-system"],
+ "exclude_tags": None
+ }}, "result": {}}
+ target_configuration = {"configuration": {"TEST_TYPE": "oeselftest",
+ "TESTSERIES": "series1",
+ "IMAGE_BASENAME": "image",
+ "IMAGE_PKGTYPE": "ipk",
+ "DISTRO": "mydistro",
+ "MACHINE": "qemux86",
+ "STARTTIME": 1672527600
+ }, "result": {}}
+ self.assertFalse(regression.can_be_compared(self.logger, base_configuration, target_configuration),
+ msg="incorrect metadata filtering, tests should not be compared")
+
+ def test_results_with_matching_metadata_can_be_compared(self):
+ base_configuration = {"configuration": {
+ "TEST_TYPE": "oeselftest",
+ "TESTSERIES": "series1",
+ "IMAGE_BASENAME": "image",
+ "IMAGE_PKGTYPE": "ipk",
+ "DISTRO": "mydistro",
+ "MACHINE": "qemux86",
+ "STARTTIME": 1672527600,
+ "OESELFTEST_METADATA": {"run_all_tests": True,
+ "run_tests": None,
+ "skips": None,
+ "machine": None,
+ "select_tags": ["toolchain-user", "toolchain-system"],
+ "exclude_tags": None}
+ }, "result": {}}
+ target_configuration = {"configuration": {
+ "TEST_TYPE": "oeselftest",
+ "TESTSERIES": "series1",
+ "IMAGE_BASENAME": "image",
+ "IMAGE_PKGTYPE": "ipk",
+ "DISTRO": "mydistro",
+ "MACHINE": "qemux86",
+ "STARTTIME": 1672527600,
+ "OESELFTEST_METADATA": {"run_all_tests": True,
+ "run_tests": None,
+ "skips": None,
+ "machine": None,
+ "select_tags": ["toolchain-user", "toolchain-system"],
+ "exclude_tags": None}
+ }, "result": {}}
+ self.assertTrue(regression.can_be_compared(self.logger, base_configuration, target_configuration),
+ msg="incorrect metadata filtering, tests with matching metadata should be compared")
+
+ def test_results_with_mismatching_metadata_can_not_be_compared(self):
+ base_configuration = {"configuration": {
+ "TEST_TYPE": "oeselftest",
+ "TESTSERIES": "series1",
+ "IMAGE_BASENAME": "image",
+ "IMAGE_PKGTYPE": "ipk",
+ "DISTRO": "mydistro",
+ "MACHINE": "qemux86",
+ "STARTTIME": 1672527600,
+ "OESELFTEST_METADATA": {"run_all_tests": True,
+ "run_tests": None,
+ "skips": None,
+ "machine": None,
+ "select_tags": ["toolchain-user", "toolchain-system"],
+ "exclude_tags": None}
+ }, "result": {}}
+ target_configuration = {"configuration": {
+ "TEST_TYPE": "oeselftest",
+ "TESTSERIES": "series1",
+ "IMAGE_BASENAME": "image",
+ "IMAGE_PKGTYPE": "ipk",
+ "DISTRO": "mydistro",
+ "MACHINE": "qemux86",
+ "STARTTIME": 1672527600,
+ "OESELFTEST_METADATA": {"run_all_tests": True,
+ "run_tests": None,
+ "skips": None,
+ "machine": None,
+ "select_tags": ["machine"],
+ "exclude_tags": None}
+ }, "result": {}}
+ self.assertFalse(regression.can_be_compared(self.logger, base_configuration, target_configuration),
+ msg="incorrect metadata filtering, tests with mismatching metadata should not be compared")
+
+ def test_metadata_matching_is_only_checked_for_relevant_test_type(self):
+ base_configuration = {"configuration": {"TEST_TYPE": "runtime",
+ "TESTSERIES": "series1",
+ "IMAGE_BASENAME": "image",
+ "IMAGE_PKGTYPE": "ipk",
+ "DISTRO": "mydistro",
+ "MACHINE": "qemux86",
+ "STARTTIME": 1672527600,
+ "OESELFTEST_METADATA": {"run_all_tests": True,
+ "run_tests": None,
+ "skips": None,
+ "machine": None,
+ "select_tags": ["toolchain-user", "toolchain-system"],
+ "exclude_tags": None}}, "result": {}}
+ target_configuration = {"configuration": {"TEST_TYPE": "runtime",
+ "TESTSERIES": "series1",
+ "IMAGE_BASENAME": "image",
+ "IMAGE_PKGTYPE": "ipk",
+ "DISTRO": "mydistro",
+ "MACHINE": "qemux86",
+ "STARTTIME": 1672527600,
+ "OESELFTEST_METADATA": {"run_all_tests": True,
+ "run_tests": None,
+ "skips": None,
+ "machine": None,
+ "select_tags": ["machine"],
+ "exclude_tags": None}}, "result": {}}
+ self.assertTrue(regression.can_be_compared(self.logger, base_configuration, target_configuration),
+ msg="incorrect metadata filtering, %s tests should be compared" % base_configuration['configuration']['TEST_TYPE'])
+
+ def test_machine_matches(self):
+ base_configuration = {"configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86"}, "result": {}}
+ target_configuration = {"configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86"
+ }, "result": {}}
+ self.assertTrue(regression.can_be_compared(self.logger, base_configuration, target_configuration),
+ msg="incorrect machine filtering, identical machine tests should be compared")
+
+ def test_machine_mismatches(self):
+ base_configuration = {"configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86"
+ }, "result": {}}
+ target_configuration = {"configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86_64"
+ }, "result": {}}
+ self.assertFalse(regression.can_be_compared(self.logger, base_configuration, target_configuration),
+ msg="incorrect machine filtering, mismatching machine tests should not be compared")
+
+ def test_can_not_compare_non_ltp_tests(self):
+ base_configuration = {"configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86"
+ }, "result": {
+ "ltpresult_foo": {
+ "STATUS": "PASSED"
+ }}}
+ target_configuration = {"configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86_64"
+ }, "result": {
+ "bar": {
+ "STATUS": "PASSED"
+ }}}
+ self.assertFalse(regression.can_be_compared(self.logger, base_configuration, target_configuration),
+ msg="incorrect ltpresult filtering, mismatching ltpresult content should not be compared")
+
+ def test_can_compare_ltp_tests(self):
+ base_configuration = {"configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86"
+ }, "result": {
+ "ltpresult_foo": {
+ "STATUS": "PASSED"
+ }}}
+ target_configuration = {"configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86"
+ }, "result": {
+ "ltpresult_foo": {
+ "STATUS": "PASSED"
+ }}}
+ self.assertTrue(regression.can_be_compared(self.logger, base_configuration, target_configuration),
+ msg="incorrect ltpresult filtering, matching ltpresult content should be compared")
+
+ def test_can_match_non_static_ptest_names(self):
+ base_configuration = {"configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86"
+ }, "result": {
+ "ptestresult.lttng-tools.foo_-_bar_-_moo": {
+ "STATUS": "PASSED"
+ },
+ "ptestresult.babeltrace.bar_-_moo_-_foo": {
+ "STATUS": "PASSED"
+ },
+ "ptestresult.babletrace2.moo_-_foo_-_bar": {
+ "STATUS": "PASSED"
+ },
+ "ptestresult.curl.test_0000__foo_out_of_bar": {
+ "STATUS": "PASSED"
+ }
+ }}
+ target_configuration = {"configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86"
+ }, "result": {
+ "ptestresult.lttng-tools.xxx_-_yyy_-_zzz": {
+ "STATUS": "PASSED"
+ },
+ "ptestresult.babeltrace.yyy_-_zzz_-_xxx": {
+ "STATUS": "PASSED"
+ },
+ "ptestresult.babletrace2.zzz_-_xxx_-_yyy": {
+ "STATUS": "PASSED"
+ },
+ "ptestresult.curl.test_0000__xxx_out_of_yyy": {
+ "STATUS": "PASSED"
+ }
+ }}
+ self.assertTrue(regression.can_be_compared(self.logger, base_configuration, target_configuration),
+ msg="incorrect ptests filtering, tests shoould be compared if prefixes match")
diff --git a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
index 7d99c158e5..e32c4aff85 100644
--- a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -260,17 +260,6 @@ class TestImage(OESelftestTestCase):
if distro and (distro in ['debian-9', 'debian-10', 'centos-7', 'centos-8', 'ubuntu-16.04', 'ubuntu-18.04'] or distro.startswith('almalinux')):
self.skipTest('virgl headless cannot be tested with %s' %(distro))
- render_hint = """If /dev/dri/renderD* is absent due to lack of suitable GPU, 'modprobe vgem' will create one suitable for mesa llvmpipe software renderer."""
- try:
- content = os.listdir("/dev/dri")
- if len([i for i in content if i.startswith('render')]) == 0:
- self.fail("No render nodes found in /dev/dri: %s. %s" %(content, render_hint))
- except FileNotFoundError:
- self.fail("/dev/dri directory does not exist; no render nodes available on this machine. %s" %(render_hint))
- try:
- dripath = subprocess.check_output("PATH=/bin:/usr/bin:$PATH pkg-config --variable=dridriverdir dri", shell=True)
- except subprocess.CalledProcessError as e:
- self.fail("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.")
qemu_distrofeatures = get_bb_var('DISTRO_FEATURES', 'qemu-system-native')
features = 'IMAGE_CLASSES += "testimage"\n'
if 'opengl' not in qemu_distrofeatures:
diff --git a/poky/meta/lib/oeqa/selftest/cases/wic.py b/poky/meta/lib/oeqa/selftest/cases/wic.py
index ca1abb970a..b9430cdb3b 100644
--- a/poky/meta/lib/oeqa/selftest/cases/wic.py
+++ b/poky/meta/lib/oeqa/selftest/cases/wic.py
@@ -1151,6 +1151,26 @@ class Wic2(WicTestCase):
out = glob(os.path.join(self.resultdir, "%s-*.direct" % wksname))
self.assertEqual(1, len(out))
+ @skipIfNotArch(['i586', 'i686', 'x86_64', 'aarch64'])
+ def test_uefi_kernel(self):
+ """ Test uefi-kernel in wic """
+ config = 'IMAGE_EFI_BOOT_FILES="/etc/fstab;testfile"\nIMAGE_FSTYPES = "wic"\nWKS_FILE = "test_uefikernel.wks"\nMACHINE_FEATURES:append = " efi"\n'
+ self.append_config(config)
+ bitbake('core-image-minimal')
+ self.remove_config(config)
+
+ img = 'core-image-minimal'
+ with NamedTemporaryFile("w", suffix=".wks") as wks:
+ wks.writelines(['part /boot --source bootimg-efi --sourceparams="loader=uefi-kernel"\n'
+ 'part / --source rootfs --fstype=ext4 --align 1024 --use-uuid\n'\
+ 'bootloader --timeout=0 --append="console=ttyS0,115200n8"\n'])
+ wks.flush()
+ cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir)
+ runCmd(cmd)
+ wksname = os.path.splitext(os.path.basename(wks.name))[0]
+ out = glob(os.path.join(self.resultdir, "%s-*.direct" % wksname))
+ self.assertEqual(1, len(out))
+
# TODO this test could also work on aarch64
@skipIfNotArch(['i586', 'i686', 'x86_64'])
@OETestTag("runqemu")
diff --git a/poky/meta/lib/oeqa/selftest/cases/yoctotestresultsquerytests.py b/poky/meta/lib/oeqa/selftest/cases/yoctotestresultsquerytests.py
new file mode 100644
index 0000000000..312edb6431
--- /dev/null
+++ b/poky/meta/lib/oeqa/selftest/cases/yoctotestresultsquerytests.py
@@ -0,0 +1,39 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+import os
+import sys
+import subprocess
+import shutil
+from oeqa.selftest.case import OESelftestTestCase
+from yocto_testresults_query import get_sha1, create_workdir
+basepath = os.path.abspath(os.path.dirname(__file__) + '/../../../../../')
+lib_path = basepath + '/scripts/lib'
+sys.path = sys.path + [lib_path]
+
+
+class TestResultsQueryTests(OESelftestTestCase):
+ def test_get_sha1(self):
+ test_data_get_sha1 = [
+ {"input": "yocto-4.0", "expected": "00cfdde791a0176c134f31e5a09eff725e75b905"},
+ {"input": "4.1_M1", "expected": "95066dde6861ee08fdb505ab3e0422156cc24fae"},
+ ]
+ for data in test_data_get_sha1:
+ test_name = data["input"]
+ with self.subTest(f"Test SHA1 from {test_name}"):
+ self.assertEqual(
+ get_sha1(basepath, data["input"]), data["expected"])
+
+ def test_create_workdir(self):
+ workdir = create_workdir()
+ try:
+ url = subprocess.check_output(
+ ["git", "-C", workdir, "remote", "get-url", "origin"]).strip().decode("utf-8")
+ except:
+ shutil.rmtree(workdir, ignore_errors=True)
+ self.fail(f"Can not execute git commands in {workdir}")
+ shutil.rmtree(workdir)
+ self.assertEqual(url, "git://git.yoctoproject.org/yocto-testresults")
diff --git a/poky/meta/lib/oeqa/selftest/context.py b/poky/meta/lib/oeqa/selftest/context.py
index c7dd03ce37..ab13131f29 100644
--- a/poky/meta/lib/oeqa/selftest/context.py
+++ b/poky/meta/lib/oeqa/selftest/context.py
@@ -22,6 +22,17 @@ from oeqa.core.exception import OEQAPreRun, OEQATestNotFound
from oeqa.utils.commands import runCmd, get_bb_vars, get_test_layer
+OESELFTEST_METADATA=["run_all_tests", "run_tests", "skips", "machine", "select_tags", "exclude_tags"]
+
+def get_oeselftest_metadata(args):
+ result = {}
+ raw_args = vars(args)
+ for metadata in OESELFTEST_METADATA:
+ if metadata in raw_args:
+ result[metadata] = raw_args[metadata]
+
+ return result
+
class NonConcurrentTestSuite(unittest.TestSuite):
def __init__(self, suite, processes, setupfunc, removefunc):
super().__init__([suite])
@@ -334,12 +345,14 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
import platform
from oeqa.utils.metadata import metadata_from_bb
metadata = metadata_from_bb()
+ oeselftest_metadata = get_oeselftest_metadata(args)
configuration = {'TEST_TYPE': 'oeselftest',
'STARTTIME': args.test_start_time,
'MACHINE': self.tc.td["MACHINE"],
'HOST_DISTRO': oe.lsb.distro_identifier().replace(' ', '-'),
'HOST_NAME': metadata['hostname'],
- 'LAYERS': metadata['layers']}
+ 'LAYERS': metadata['layers'],
+ 'OESELFTEST_METADATA': oeselftest_metadata}
return configuration
def get_result_id(self, configuration):
diff --git a/poky/meta/lib/oeqa/utils/dump.py b/poky/meta/lib/oeqa/utils/dump.py
index bcee03b576..d420b497f9 100644
--- a/poky/meta/lib/oeqa/utils/dump.py
+++ b/poky/meta/lib/oeqa/utils/dump.py
@@ -93,37 +93,55 @@ class HostDumper(BaseDumper):
self._write_dump(cmd.split()[0], result.output)
class TargetDumper(BaseDumper):
- """ Class to get dumps from target, it only works with QemuRunner """
+ """ Class to get dumps from target, it only works with QemuRunner.
+ Will give up permanently after 5 errors from running commands over
+ serial console. This helps to end testing when target is really dead, hanging
+ or unresponsive.
+ """
def __init__(self, cmds, parent_dir, runner):
super(TargetDumper, self).__init__(cmds, parent_dir)
self.runner = runner
+ self.errors = 0
def dump_target(self, dump_dir=""):
+ if self.errors >= 5:
+ print("Too many errors when dumping data from target, assuming it is dead! Will not dump data anymore!")
+ return
if dump_dir:
self.dump_dir = dump_dir
for cmd in self.cmds:
# We can continue with the testing if serial commands fail
try:
(status, output) = self.runner.run_serial(cmd)
+ if status == 0:
+ self.errors = self.errors + 1
self._write_dump(cmd.split()[0], output)
except:
+ self.errors = self.errors + 1
print("Tried to dump info from target but "
"serial console failed")
print("Failed CMD: %s" % (cmd))
class MonitorDumper(BaseDumper):
- """ Class to get dumps via the Qemu Monitor, it only works with QemuRunner """
+ """ Class to get dumps via the Qemu Monitor, it only works with QemuRunner
+ Will stop completely if there are more than 5 errors when dumping monitor data.
+ This helps to end testing when target is really dead, hanging or unresponsive.
+ """
def __init__(self, cmds, parent_dir, runner):
super(MonitorDumper, self).__init__(cmds, parent_dir)
self.runner = runner
+ self.errors = 0
def dump_monitor(self, dump_dir=""):
if self.runner is None:
return
if dump_dir:
self.dump_dir = dump_dir
+ if self.errors >= 5:
+ print("Too many errors when dumping data from qemu monitor, assuming it is dead! Will not dump data anymore!")
+ return
for cmd in self.cmds:
cmd_name = cmd.split()[0]
try:
@@ -137,4 +155,5 @@ class MonitorDumper(BaseDumper):
output = self.runner.run_monitor(cmd_name)
self._write_dump(cmd_name, output)
except Exception as e:
+ self.errors = self.errors + 1
print("Failed to dump QMP CMD: %s with\nException: %s" % (cmd_name, e))
diff --git a/poky/meta/lib/oeqa/utils/qemurunner.py b/poky/meta/lib/oeqa/utils/qemurunner.py
index 8b893601d4..05385763ac 100644
--- a/poky/meta/lib/oeqa/utils/qemurunner.py
+++ b/poky/meta/lib/oeqa/utils/qemurunner.py
@@ -202,7 +202,7 @@ class QemuRunner:
qmp_file = "." + next(tempfile._get_candidate_names())
qmp_param = ' -S -qmp unix:./%s,server,wait' % (qmp_file)
qmp_port = self.tmpdir + "/" + qmp_file
- # Create a second socket connection for debugging use,
+ # Create a second socket connection for debugging use,
# note this will NOT cause qemu to block waiting for the connection
qmp_file2 = "." + next(tempfile._get_candidate_names())
qmp_param += ' -qmp unix:./%s,server,nowait' % (qmp_file2)
@@ -350,6 +350,8 @@ class QemuRunner:
return False
try:
+ # set timeout value for all QMP calls
+ self.qmp.settimeout(self.runqemutime)
self.qmp.connect()
connect_time = time.time()
self.logger.info("QMP connected to QEMU at %s and took %s seconds" %
@@ -468,6 +470,8 @@ class QemuRunner:
socklist.remove(self.server_socket)
self.logger.debug("Connection from %s:%s" % addr)
else:
+ # try to avoid reading only a single character at a time
+ time.sleep(0.1)
data = data + sock.recv(1024)
if data:
bootlog += data
@@ -626,6 +630,7 @@ class QemuRunner:
def run_monitor(self, command, args=None, timeout=60):
if hasattr(self, 'qmp') and self.qmp:
+ self.qmp.settimeout(timeout)
if args is not None:
return self.qmp.cmd(command, args)
else:
@@ -653,6 +658,8 @@ class QemuRunner:
except InterruptedError:
continue
if sread:
+ # try to avoid reading single character at a time
+ time.sleep(0.1)
answer = self.server_socket.recv(1024)
if answer:
data += answer.decode('utf-8')