diff options
author | Andrew Geissler <geissonator@yahoo.com> | 2023-03-03 21:41:14 +0300 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2023-03-17 01:04:34 +0300 |
commit | 6aa7eec5002756f5398774a35fb9d985e15a4573 (patch) | |
tree | e183e1e35404e51cc1f889b603e3500594ce09f6 /poky/meta/lib | |
parent | 9347dd4efc156c93b1d9beaeb32e9b719ad6a3d2 (diff) | |
download | openbmc-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.py | 11 | ||||
-rw-r--r-- | poky/meta/lib/bblayers/makesetup.py | 10 | ||||
-rw-r--r-- | poky/meta/lib/bblayers/setupwriters/oe-setup-layers.py | 2 | ||||
-rw-r--r-- | poky/meta/lib/oe/qa.py | 17 | ||||
-rw-r--r-- | poky/meta/lib/oe/sbom.py | 4 | ||||
-rw-r--r-- | poky/meta/lib/oe/spdx.py | 13 | ||||
-rw-r--r-- | poky/meta/lib/oe/sstatesig.py | 4 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/core/target/ssh.py | 43 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/prservice.py | 2 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/resulttooltests.py | 245 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/runtime_test.py | 11 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/wic.py | 20 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/yoctotestresultsquerytests.py | 39 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/context.py | 15 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/utils/dump.py | 23 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/utils/qemurunner.py | 9 |
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') |