master: subtree updates oct 4 2023
poky: 61531cd395..e444d2bed0:
Adrian Freihofer (3):
lib/oe/utils: Refactor to make multiprocess_launch callable without d
lib/oe/package: Refactor to make strip_execs callable without d
oeqa/selftest/devtool: Refactor runqemu pre-requisites
Alexander Kanavin (69):
cargo-c-native: fix version check
igt-gpu-tools: do not write shortened git commit hash into binaries
curl: build and run the full set of ptests
ptest: report tests that were killed on timeout
perl: use 64 bit integers across all targets
perl: ensure all failures are caught
strace: parallelize ptest
strace: remove from time64.inc exception list
busybox: enable 64 bit shell arithmetic (via long long type)
openssl: parallelize tests
openssl: ensure all ptest fails are caught
glibc-tests: rename to glibc-y2038-tests
sysstat: merge .inc into .bb
sysstat: update 12.6.2 -> 12.7.4
glib-2.0: update 2.76.4 -> 2.78.0
ovmf: update edk2-stable202305 -> edk2-stable202308
libdnf: update 0.70.1 -> 0.71.0
liburi-perl: update 5.17 -> 5.21
python3-pygobject: update 3.44.1 -> 3.46.0
go-helloworld: update to latest revision
gzip: update 1.12 -> 1.13
procps: update 4.0.3 -> 4.0.4
screen: update 4.9.0 -> 4.9.1
gobject-introspection: update 1.76.1 -> 1.78.0
igt-gpu-tools: update 1.27.1 -> 1.28
libva-utils: update 2.19.0 -> 2.20.0
piglit: update to latest revision
groff: add a patch to resolve build races
groff: fix another build race via backport
systemd: upgrade 254 -> 254.4
util-linux: upgrade 2.39.1 -> 2.39.2
cmake: upgrade 3.27.4 -> 3.27.5
jquery: upgrade 3.7.0 -> 3.7.1
python3-setuptools-rust: upgrade 1.6.0 -> 1.7.0
vulkan: upgrade 1.3.250.0 -> 1.3.261.1
libxcb: upgrade 1.15 -> 1.16
xcb-proto: upgrade 1.15.2 -> 1.16.0
boost: upgrade 1.82.0 -> 1.83.0
btrfs-tools: upgrade 6.3.3 -> 6.5.1
createrepo-c: upgrade 0.21.1 -> 1.0.0
debianutils: upgrade 5.12 -> 5.13
diffoscope: upgrade 244 -> 249
ethtool: upgrade 6.3 -> 6.5
font-util: upgrade 1.4.0 -> 1.4.1
freetype: upgrade 2.13.1 -> 2.13.2
ghostscript: upgrade 10.01.2 -> 10.02.0
iproute2: upgrade 6.4.0 -> 6.5.0
json-c: upgrade 0.16 -> 0.17
kmscube: upgrade to latest revision
libarchive: upgrade 3.7.1 -> 3.7.2
libsdl2: upgrade 2.28.0 -> 2.28.3
libsolv: upgrade 0.7.24 -> 0.7.25
man-pages: upgrade 6.04 -> 6.05.01
meson: upgrade 1.1.1 -> 1.2.1
mmc-utils: upgrade to latest revision
mtd-utils: upgrade 2.1.5 -> 2.1.6
puzzles: upgrade to latest revision
python3-dtschema: upgrade 2023.6.1 -> 2023.7
python3-git: upgrade 3.1.35 -> 3.1.36
python3-libarchive-c: upgrade 4.0 -> 5.0
python3-setuptools: upgrade 68.2.1 -> 68.2.2
python3-sphinx: upgrade 7.2.5 -> 7.2.6
seatd: upgrade 0.7.0 -> 0.8.0
sqlite3: upgrade 3.43.0 -> 3.43.1
tiff: upgrade 4.5.1 -> 4.6.0
vala: upgrade 0.56.8 -> 0.56.13
xf86-input-libinput: upgrade 1.3.0 -> 1.4.0
xwayland: upgrade 23.1.2 -> 23.2.1
python3-setuptools-scm: fix upstream version check
Alexandre Belloni (1):
python3: fix SoB on patch
Antoine Lubineau (1):
cve-check: add CVSS vector string to CVE database and reports
Bruce Ashfield (9):
linux-yocto/6.4: update to v6.4.15
linux-yocto/6.1: update to v6.1.52
linux-yocto/6.4: update to v6.4.16
linux-yocto/6.1: update to v6.1.53
linux-yocto/6.1: update to v6.1.55
linux-yocto-dev: update to v6.6-rcX
linux-yocto: introduce 6.5 reference kernel recipes
linux-libc-headers: uprev to v6.5
linux-libc-headers: default to 6.5
Charles-Antoine Couret (1):
systemd-boot-cfg: add .conf suffix to default entry label
Chen Qi (1):
python3: add cpython to CVE_PRODUCT
Daniel Semkowicz (2):
wic: bootimg-partition: Fix file name in debug message
uboot-extlinux-config.bbclass: Add missing variable descriptions
Deepthi Hemraj (2):
binutils: stable 2.41 branch updates.
glibc: stable 2.38 branch updates.
Denys Dmytriyenko (2):
bitbake.conf: add MACHINE to SDK_NAME
spdx: use TOOLCHAIN_OUTPUTNAME for SDK filename prefix
Derek Straka (1):
pypi.bbclass: Update the upstream checks to automatically replace '_' with '-'
Eilís 'pidge' Ní Fhlannagáin (2):
lib/oe/package_managegment: Add nativesdk-intercept PATH
update_mandb: deb fails due to missing man cache
Etienne Cordonnier (1):
bitbake: bitbake-worker/runqueue: Avoid unnecessary bytes object copies
Insu Park (1):
bitbake: data: Add missing dependency handling of remove operator
Jan Garcia (1):
insane.bbclass: Count raw bytes in shebang-size
Joshua Watt (6):
classes/create-spdx-2.2: Add extra debugging for missing package files
nfs-utils: Don't start nfs-statsd.service without exports
nfs-utils: Add StateDirectory for systemd services
bitbake: utils: Add path_is_descendant()
bitbake: fetch2: git: Use path_is_descendant() instead of path for repo check
classes/create-spdx-2.2: Show error if document is not found
Julien Stephan (1):
bitbake: bitbake: cooker: add a new function to retrieve task signatures
Kai Kang (2):
goarch.bbclass: not compatible with riscv32
adwaita-icon-theme: 43 -> 45.0
Khem Raj (25):
perl: Add packageconfig for setlocale functionality differences
libc-test: Run as non-root user
coreutils: Upgrade to 9.4
coreutils: Add config.h to ptest package
gettext: Add missing dependency on gawk autoconf
util-linux: Disable failing tests on musl
Revert "util-linux: scanf_cv_alloc_modifier changed from 'as' -> 'ms'"
util-linux: Fix lscpu on musl
qemu: Add PACKAGECONFIG for dax
llvm: Upgrade to 17.0.1
oeqa: Use 2.14 release of cpio instead of 2.13
musl: Update to latest
bsd-headers: Define __CONCAT and __STRING
mesa: Update clang-17 patch to upstream v2
musl-legacy-error: Add recipe
elfutils: Depend on musl-legacy-error for musl targets
debugedit: Use musl-legacy-error
systemd: Drop two upstreamed musl patches
systemd: Refresh patches to avoid patch-fuzz
glib-2.0: Enable possible locales with musl for ptests
glib-2.0: Remove failing ptests on musl
llvm: Upgrade to 17.0.2
createrepo-c: Fix function declaration bug found with clang
mesa: Simplify llvm-17 patch
mesa: Fix native build on hosts with llvm-dev installed
Lee Chee Yang (2):
bind: update to 9.18.19
cups: fix CVE-2023-4504
Markus Volk (8):
mesa: upgrade 23.1.3 -> 23.1.7
libportal: upgrade 0.6 -> 0.7.1
appstream: import recipe from meta-oe
libadwaita: upgrade 1.3.4 -> 1.4.0
maintainers.inc: add missing entries for appstream and libxmlb
libxmlb: import recipe from meta-oe
pulseaudio: dont include consolekit for systemd
mesa: Upgrade 23.1.7 -> 23.1.8
Marta Rybczynska (3):
python3-ply: add to nativesdk
python3-isodate: add homepage
python3-rdflib: add homepage
Martin Jansa (3):
gcc: backport a fix for ICE caused by CVE-2023-4039.patch
fontcache.bbclass: avoid native recipes depending on target fontconfig
multilib_script.bbclass: expand script name as well
Matthias Schnelte (1):
bitbake: fetch2: Adds vscode devcontainer support
Michael Opdenacker (18):
base: add newline before LICENSE_FLAGS_DETAILS
dev-manual: new-recipe.rst fix inconsistency with contributor guide
contributor-guide: recipe-style-guide: add Upstream-Status
dev-manual: licenses: update license manifest location
dev-manual: licenses: mention SPDX for license compliance
dev-manual: disk-space: improve wording for obsolete sstate cache files
sdk-manual: extensible.rst: fix multiple formatting issues
alsa-lib: upgrade 1.2.9 -> 1.2.10
alsa-utils: upgrade 1.2.9 -> 1.2.10
shadow: fix patch Upstream-Status
libevent: fix patch Upstream-Status
alsa-utils: update patch Upstream-Status
alsa-lib: fix patch Upstream-Status
lib/oe/qa: remove obsolete "Accepted" string for Upstream-Status
lib/oe/qa: update guidelines link for Upstream-Status
bsp-guide: bsp.rst: replace reference to wiki
dev-manual: new-recipe.rst: replace reference to wiki
maintainers.inc: add self for flac recipe
Mikko Rapeli (9):
openssh: update Upstream-Status to Denied in test logging patch
openssh: improve banner ptest failure logging
testimage.bbclass: detect slirp from TEST_RUNQEMUPARAMS
oeqa dnf_runtime.py: fix HTTP server IP address and port
oeqa selftest runtime_test.py: append to TEST_RUNQEMUPARAMS
selftest runtime_test.py: add testimage.bbclass slirp test
openssh: capture logs in run-ptest
testimage.bbclass: remove QEMU_USE_SLIRP variable
oeqa/selftest/context.py: check git command return values
Ninad Palsule (1):
kernel-fitImage: Strip path component from dtb
Peter Kjellerstedt (7):
libsoup-2.4: Only specify --cross-file when building for target
libsoup: Only specify --cross-file when building for target
bitbake: tinfoil: Do not fail when logging is disabled and full config is used
bitbake: bitbake-getvar: Make --quiet work with --recipe
bitbake: bitbake-getvar: Make --value imply --quiet
bitbake: bitbake-getvar: Add a (suppressable) error for undefined variables
bitbake: bitbake-getvar: Treat undefined variables as empty with --value
Peter Marko (2):
openssl: Upgrade 3.1.2 -> 3.1.3
json-c: define CVE_VERSION
Qiu Tingting (1):
tar: add ptest support
Richard Purdie (34):
bitbake.conf: Add IMAGE_BASENAME to SDK_NAME
vim: Upgrade 9.0.1664 -> 9.0.1894
defaultsetup: Inherit create-spdx by default
oeqa/selftest/runtime_test: No need to use append with TEST_RUNQEMUPARAMS
devtool/build_sdk: Drop unused imports
bitbake: lib: Drop inotify support and replace with mtime checks
bitbake: server/process: Disable the flush() call in server logging
recipetool/devtool: Ensure server knows about changed files
lttng-tools: Upgrade 2.13.10 -> 2.13.11
oeqa/selftest/wic: Improve assertTrue calls
elfutils: Fix reproducibility issue with bunzip2
bitbake: cooker: Drop unneeded flush calls
sstate: Fix nativesdk entry in SSTATE_ARCHS
multilib: fix SSTATE_ARCHS for multilib usage
license/license_image: Fix license file layout to avoid overlapping files
oeqa/selftest/bbtests: Improve and update test_non_gplv3
create-spdx/sbom: Ensure files don't overlap between machines
sstate: Stop allowing overlapping symlinks from sstate
recipes: Drop remaining PR values from recipes
bitbake.conf: No longer support PR from filename
oeqa/selftest: Fix broken symlink removal handling
oeqa/selftest/reproducible: Avoid oe-selftest startup delays
oeqa: Streamline oe-selftest startup time
oeqa/selftest/oescripts: Avoid variable access at module load
bitbake: codeparser: Update debug variable reference
contributor-guide/style-guide: Refer to recipes, not packages
contributor-guide/style-guide: Add a note about task idempotence
lib: Import packagedata oe module by default
oeqa/runner: Ensure class setup errors are shown to bitbake logging
create-spdx: Ensure it is clear where the message comes from
oeqa/utils/gitarchive: Handle broken commit counts in results repo
python3-numpy: Fix reproducibility issue
scritps/runqemu: Ensure we only have two serial ports
glibc: Pull in stable branch fixes
Robert Joslyn (2):
curl: Update from 8.2.1 to 8.3.0
curl: Skip tests marked flaky
Robert Yang (1):
libxcrypt-compat: Remove libcrypt.so to fix conflict with libcrypt
Roland Hieber (7):
template: fix typo in section header
ref-manual: point outdated link to the new location
contributor-guide: recipe-style-guide: add more patch tagging examples
contributor-guide: recipe-style-guide: add section about CVE patches
contributor-guide: discourage marking patches as Inappropriate
contributor-guide: deprecate "Accepted" patch status
contributor-guide: style-guide: discourage using Pending patch status
Ross Burton (19):
packagegroup-core-x11-xserver: add modesetting driver to default XSERVER
machine/qemu*: add modesetting drivers to XSERVER
beaglebone-yocto: remove redundant XSERVER assignment
gcc: Fix -fstack-protector issue on aarch64
testimage: respect target/server IPs when using slirp
manuals: document LICENSE_FLAGS_DETAILS
linux-yocto: update CVE ignores
libwebp: upgrade to 1.3.2
oeqa/runtime/parselogs: remove unused imports
oeqa/runtime/parselogs: don't bother to show target hardware information
oeqa/runtime/parselogs: remove obsolete LSB testing support
oeqa/runtime/parselogs: inline single-caller functions
oeqa/runtime/parselogs: improve find call
oeqa/runtime/parselogs: don't pass around members
oeqa/runtime/parselogs: move some variables out of global scope
oeqa/runtime/parselogs: select the correct machine-specific ignores early
oeqa/runtime/parselogs: parse the logs with Python, not grep
webkitgtk: reduce size of -dbg package
bitbake: bitbake/lib: spawn server/worker using the current Python interpreter
Samantha Jalabert (14):
python3-isodate: Copy recipe from meta-python
python3-booleanpy: Copy recipe from meta-python
python3-beartype: add recipe
python3-click: Copy recipe from meta-python
ptest-packagelists.inc: add python test click
python3-license-expression: Copy recipe from meta-python
ptest-packagelists.inc: add python test license-expression
python3-rdflib: Copy recipe from meta-python
python3-uritools: add recipe
python3-xmltodict: Copy recipe from meta-python
ptest-packagelists.inc: add python test xmltodict
python3-spdx-tools: add recipe
qa: Add selftest for python3-spdx-tools
maintainers.inc: add python3-spdx-tools and dependencies
Sean Nyekjaer (1):
gcc: depend on zstd
Stefan Tauner (1):
gdb: fix RDEPENDS for PACKAGECONFIG[tui]
Stephan Wurm (1):
python3-jsonschema: Update homepage URL
Tim Orling (1):
python3-cryptography{-vectors}: upgrade to 41.0.4
Trevor Gamblin (6):
patchtest: Add tests from patchtest oe repo
patchtest/selftest: remove configurable target
patchtest: add requirements.txt
patchtest: Add README.md for selftests
python3-ptest: skip test_input_no_stdout_fileno
patchtest/selftest: only split resultlines once
Ulrich Ölmann (1):
packagegroup-base: clean up setting packagegroup-machine-base's SUMMARY
Wang Mingyu (36):
alsa-ucm-conf: upgrade 1.2.9 -> 1.2.10
at-spi2-core: upgrade 2.48.3 -> 2.48.4
dbus: upgrade 1.14.8 -> 1.14.10
debianutils: upgrade 5.8 -> 5.12
dnf: upgrade 4.16.1 -> 4.17.0
harfbuzz: upgrade 8.1.1 -> 8.2.0
kexec-tools: upgrade 2.0.26 -> 2.0.27
libinput: upgrade 1.23.0 -> 1.24.0
libnl: upgrade 3.7.0 -> 3.8.0
nghttp2: upgrade 1.55.1 -> 1.56.0
ccache: upgrade 4.8.2 -> 4.8.3
pkgconf: upgrade 2.0.2 -> 2.0.3
python3-git: upgrade 3.1.34 -> 3.1.35
python3-hypothesis: upgrade 6.84.0 -> 6.84.3
python3-pyelftools: upgrade 0.29 -> 0.30
python3-pytest: upgrade 7.4.1 -> 7.4.2
python3-setuptools: upgrade 68.1.2 -> 68.2.1
strace: upgrade 6.4 -> 6.5
stress-ng: upgrade 0.16.04 -> 0.16.05
wayland-utils: upgrade 1.1.0 -> 1.2.0
wireless-regdb: upgrade 2023.05.03 -> 2023.09.01
at-spi2-core: upgrade 2.48.4 -> 2.50.0
enchant2: upgrade 2.5.0 -> 2.6.1
harfbuzz: upgrade 8.2.0 -> 8.2.1
kbd: upgrade 2.6.2 -> 2.6.3
libsecret: upgrade 0.21.0 -> 0.21.1
gobject-introspection: upgrade 1.78.0 -> 1.78.1
python3-numpy: upgrade 1.25.2 -> 1.26.0
python3-hypothesis: upgrade 6.84.3 -> 6.86.2
python3-pycryptodome: upgrade 3.18.0 -> 3.19.0
python3-pycryptodomex: upgrade 3.18.0 -> 3.19.0
python3-smmap: upgrade 5.0.0 -> 6.0.0
python3-trove-classifiers: upgrade 2023.8.7 -> 2023.9.19
python3-typing-extensions: upgrade 4.7.1 -> 4.8.0
python3-urllib3: upgrade 2.0.4 -> 2.0.5
python3-zipp: upgrade 3.16.2 -> 3.17.0
Yash Shinde (1):
glibc: fix CVE-2023-4527
Yogita Urade (2):
tiff: fix CVE-2023-40745
tiff: fix CVE-2023-41175
meta-openembedded: eff1b182c1..ea42cec2ec:
Alex Kiernan (2):
mdns: Upgrade 1790.80.10 -> 2200.0.8
jq: Upgrade 1.6+git -> 1.7
Archana Polampalli (2):
python3-appdirs: print ptest results in unified format
nodejs: upgrade 18.17.1 -> 20.5.1
Armin Kuster (1):
openldap: update to 2.5.16.
Bruce Ashfield (2):
zfs: update to v2.2.0-rc4
vboxguestdrivers: fix kernel v6.5 build
Chi Xu (1):
mariadb: Add ptest support
Clément Péron (6):
etcd-cpp-apiv3: upgrade 0.14.3 -> 0.15.3
devtools: grpc: bump to 1.56.2
protobuf: upgrade 4.22.2 -> 4.23.4
protobuf-c: bump to next release to support protobuf 4.23.x
mariadb: add missing <cstdint> in rocksdb string_util.h
etcd-cpp-apiv3: fix build when gRPC is cross compiled
Daniel Semkowicz (2):
cockpit: Move packagekit to a separate package
cockpit: Move apps to a separate package
Derek Straka (54):
python3-absl: Update version 1.4.0 -> 2.0.0
python3-brotli: Update version 1.0.9 -> 1.1.0
python3-cachecontrol: Update version 0.13.0 -> 0.13.1
python3-cantools: Update version 38.0.2 -> 39.2.0
python3-cerberus: Update version 1.3.4 -> 1.3.5
python3-configshell-fb: Update version 1.1.29 -> 1.1.30
python3-custom-inherit: Update version 2.3.1 -> 2.4.1
python3-distlib: Update version 0.3.6 -> 0.3.7
python3-fasteners: Update version 0.18 -> 0.19
python3-filelock: Update version 3.12.0 -> 3.12.4
python3-bleak: Update version 0.20.2 -> 0.21.1
python3-dynamic-dispatch: Correct the upstream regex check for version upgrades
python3-google-api-python-client: Update version 2.99.0 -> 2.100.0
python3-sqlalchemy: Upgrade 2.0.20 -> 2.0.21
python3-netaddr: Update version 0.8.0 -> 0.9.0
python3-msgpack: Update version 1.0.5 -> 1.0.6
python3-protobuf: Update version 4.24.2 -> 4.24.3
python3-gevent: Update version 23.7.0 -> 23.9.1
python3-langtable: Update version 0.0.63 -> 0.0.64
python3-posix-ipc: Update version 1.0.5 -> 1.1.1
python3-websocket-client: Update version 1.5.3 -> 1.6.3
python3-web3: Update version 6.9.0 -> 6.10.0
python3-apiflask: Update version 2.0.1 -> 2.0.2
python3-argh: Update version 0.29.3 -> 0.29.4
python3-async-timeout: remove old version of the library
python3-pydantic: Update version 1.10.7 -> 2.4.1
python3-pyhamcrest: Fix upstream check by specifying the UPSTREAM_CHECK_URI and UPSTREAM_CHECK_REGEX
python3-pyasn1-modules: Update version 0.2.8 -> 0.3.0
python-pyiface: Update version from git -> 0.0.11
python3-pymysql: Fix upstream check by specifying the UPSTREAM_CHECK_URI and UPSTREAM_CHECK_REGEX
python3-pymysql: update verion 1.0.2 -> 1.1.0
python3-pyproj: update version 3.6.0 -> 3.6.1
python3-pyproject-api: update version 1.5.1 -> 1.6.1
python3-redis: update version 5.0.0 -> 5.0.1
python3-traitlets: update version 5.9.0 -> 5.10.1
python3-xxhash: update version 3.2.0 -> 3.3.0
python3-pyzmq: update version 25.0.0 -> 25.1.1
python3-cachecontrol: Fix upstream check by specifying the UPSTREAM_CHECK_URI and UPSTREAM_CHECK_REGEX
python3-flask-babel: update version 2.0.0 -> 3.1.0
python3-idna-ssl: Fix upstream check by specifying the UPSTREAM_CHECK_URI and UPSTREAM_CHECK_REGEX
python3-ninja-syntax: Fix upstream check by specifying the UPSTREAM_CHECK_URI and UPSTREAM_CHECK_REGEX
python3-prettytable: update version 3.6.0 -> 3.9.0
python3-pytz-deprecation-shim: Remove outdated recipe meant to be a short lived shim
python3-tzlocal: Remove dependency on pytz_deprecation_shim removed in release 5.0
python3-astroid: update version 2.16.6 -> 3.0.0
python3-flask: update version 2.3.2 -> 2.3.3
python3-google-api-core: update version 2.12.0
python3-google-api-python-client: update version 2.100.0 -> 2.101.0
python3-google-auth: update version 2.23.0 -> 2.23.1
python3-parse-type: update version 0.5.2 -> 0.6.2
python3-nacl: Add recipe for the latest release of PyNaCl
python3-botocore: add recipe for latest version of botocore
python3-boto3: add recipe for latest version of boto3
python3-flask-cors: add initial version of the recipe for 4.0.0
Etienne Cordonnier (1):
uutils-coreutils: upgrade 0.0.20 -> 0.0.21
Gianfranco Costamagna (3):
mosquitto: do not automatically depend on dlt-daemon, it's a non-mandatory logging system
mosquitto: upgrade 2.0.15 -> 2.0.17
mosquitto: upgrade 2.0.17 -> 2.0.18
Jeffrey Pautler (1):
bolt: disable CVE checking for this recipe
Jonas Gorski (1):
frr: upgrade 8.4.4 -> 9.0.1
Julian Haller (1):
openct: Fix typo in SUMMARY variable
Kai Kang (1):
ostree: not compatible with riscv32 when ptest enabled
Khem Raj (25):
vlc: Fix build with gettext 0.22+
usbguard: Enable seccomp if distro features have it
sharutils: Check for intmax_t using configure
poco: Add pass/fail ststus into logs
mongodb: Add rdep on tzdata-core
mongodb: Upgrade to 4.4.24
meta-oe-ptest-image-poco: Increase size tp 1G
poco: Fix ptest runtime errors
poco: Do not enable MongoDB packageconfig by default
plocate: Upgrade to 1.1.19 release
xscreensaver: Add osuosl backup MIRROR
mozjs-115: Apply autoconf tuple mismatch fix
cpp-netlib: Fix build with boost 1.80+
cpp-netlib: Fix buildpaths in generated cmake files
python3-pybluez: Fix patch upstream-status
python3-pynetlinux: Fix patch upstream-status
libnet-idn-encode: Add recipe
libio-socket-ssl-perl: Change libnet-libidn-perl->libnet-idn-encode rdep for ptests
libnfs: Drop -Wno-implicit-function-declaration
webkitgtk3: Do not use musttail with clang on arm
fftw: Fix ptest result reporting
nodejs: Fix ptest result reporting
relayd: Update to latest tip of trunk
relayd: Fix build with clang
kernel-selftest: Build headers before compiling tests
Lee Chee Yang (8):
libsdl: fix CVE-2022-34568
keepalived: 2.2.2 -> 2.2.8
irssi: 1.4.2 -> 1.4.4
iniparser: Fix CVE-2023-33461
opensc: fix CVE-2023-2977
x11vnc: Fix CVE-2020-29074
libvncserver: update to 0.9.14
ntpsec: 1.2.2 -> 1.2.2a
Markus Volk (48):
libei: add recipe
libxmlb: update 0.3.10 -> 0.3.14
appstream: update 0.16.2 -> 0.16.3
webrtc-audio-processing: add recipe for 1.x
pipewire: upgrade 0.3.79 -> 0.3.80
evolution-data-server: upgrade 3.48.3 -> 3.50.0
appstream: remove workaround for cross-compile
libxmlb: fix a reproducibility and runtime issue with ptest
tracker-miners: upgrade 3.5.0 -> 3.6.0
mozjs: upgrade 102.9.0 -> 102.15.0
tecla: add recipe
polkit: upgrade 122 -> 123
tracker: upgrade 3.5.1 -> 3.6.0
libxmlb: remove recipe
appstream: remove recipe
gvfs: upgrade 1.51.90 -> 1.52.0
mutter: upgrade 44.3 -> 45.0
xdg-desktop-portal: upgrade 1.16.0 -> 1.18.0
gnome-boxes: upgrade 44.2 -> 45.0
gnome-session: upgrade 44.0 -> 45.0
gnome-text-editor: upgrade 44.0 -> 45.0
gnome-shell: upgrade 44.3 -> 45.0
eog: upgrade 44.3 -> 45.0
gnome-calculator: upgrade 44.0 -> 45.0
xdg-desktop-portal-gnome: upgrade 44.1 -> 45.0
gnome-calendar: upgrade 44.0 -> 45.0
gnome-software: upgrade 44.4 -> 45.0
zenity: upgrade 3.44.0 -> 3.44.2
gnome-system-monitor: upgrade 44.0 -> 45.0
webkitgtk: upgrade 2.40.5 -> 2.42.0
gnome-control-center: upgrade 44.3 -> 45.0
gnome-settings-daemon: upgrade 44.1 -> 45.0
tracker: add missing Upstream-Status
gdm: upgrade 44.1 -> 45.0.1
gnome-calendar: fix reproducibility issue
exiv2: Upgrade 0.27.6 -> 0.28.0
gexiv: Upgrade 0.14.0 -> 0.14.2
gjs: Upgrade 1.76.1 -> 1.78.0
mozjs: add recipe for v115
evince: Upgrade 44.2 -> 45.0
Nautilus: Upgrade 44.2.1 -> 45.0
gedit: Upgrade 44.2 -> 46.1
tepl: Upgrade 6.4.0 -> 6.8.0
libblockdev: Upgrade 2.28 -> 3.03
udisks2: Upgrade 2.9.4 -> 2.10.1
mozjs: Upgrade 102.15.0 -> 102.15.1
libnfs: dont install libnfs-config.cmake
gnome-remote-desktop: Upgrade 44.2 -> 45.0
Martin Jansa (20):
webrtc-audio-processing: Fix build with -Werror=return-type
freeglut: return x11 to REQUIRED_DISTRO_FEATURES
packagegroup-meta-multimedia: restore x11 restriction for projucer
btrfsmaintenance: move btrfs-tools dependency from build-time to run-time
btrfsmaintenance: drop allarch
ttf-google-fira: exclude siggen dependency on fontconfig
cukinia: drop allarch
mdio-tools: exclude siggen dependency on mdio-netlink
ot-br-posix: exclude siggen dependency on ipset
mongodb: add and fix Upstream-Status
mongodb: Fix build on 32bit
gupnp: fix build with meson-1.2.0
minifi-cpp, mozjs-115, redis-7.2.1, pv: add missing Upstream-Status
mozjs: fix filename in MULTILIB_SCRIPTS
gupnp-tools: fix build with meson-1.2.0
gnome-tweaks, networkmanager-fortisslvpn, libesmtp, json-schema-validator, python3-pybluez, python3-pynetlinux, apache2: Fix Malformed Upstream-Status
mozjs: use PV in MULTILIB_SCRIPTS
mosquitto, etcd-cpp-apiv3: add missing Upstream-Status
meta-oe/dynamic-layers: add Upstream-Status where missing
meta-oe/dynamic-layers: add one more missing Upstream-Status and fix one malformed
Michał Iwanicki (1):
python3-pyu2f: add recipe
Mingli Yu (4):
minifi-cpp: Remove the buildpath issue
hdf5: Upgrade to 1.14.2
vlock: Use EXTRA_CFLAGS
mozjs-102: Remove the buildpath
Richard Leitner (2):
python3-shellingham: add recipe for v1.5.3
python3-autoflake: add recipe for v2.2.1
Ross Burton (1):
webkitgtk3: reduce size of -dbg package
Sam Van Den Berge (6):
python3-flask-jwt-extended: add recipe
python3-flask-marshmallow: add recipe
python3-apispec: add recipe
python3-flask-httpauth: add recipe
python3-webargs: add recipe
python3-apiflask: add recipe
Samantha Jalabert (6):
Remove python3-rdflib
Remove python3-license-expression
Remove python3-xmltodict
Remove python3-booleanpy
Remove python3-click
Remove python3-isodate
Samuli Piippo (1):
protobuf: stage protoc binary to sysroot
Sanjay Chitroda (1):
netkit-telnet: Fix CVE-2022-39028
Trevor Gamblin (1):
python3-aiofiles: upgrade 23.1.0 -> 23.2.1
Vyacheslav Yurkov (3):
overlayfs-tools: Drop unneeded dependency
overlayfs-tools: Bump up the version
overlayfs-tools: Install fsck binary
Wang Mingyu (42):
freerdp: upgrade 2.10.0 -> 2.11.0
boost-sml: upgrade 1.1.8 -> 1.1.9
ctags: upgrade 6.0.20230827.0 -> 6.0.20230917.0
dovecot: upgrade 2.3.20 -> 2.3.21
freerdp: upgrade 2.11.0 -> 2.11.1
gensio: upgrade 2.7.5 -> 2.7.6
geoclue: upgrade 2.7.0 -> 2.7.1
hwloc: upgrade 2.9.2 -> 2.9.3
iperf3: upgrade 3.14 -> 3.15
libcloudproviders: upgrade 0.3.2 -> 0.3.4
libdeflate: upgrade 1.18 -> 1.19
libglvnd: upgrade 1.6.0 -> 1.7.0
libtommath: upgrade 1.2.0 -> 1.2.1
libcoap: upgrade 4.3.1 -> 4.3.3
python3-antlr4-runtime: upgrade 4.13.0 -> 4.13.1
python3-lazy: upgrade 1.5 -> 1.6
python3-pyfanotify: upgrade 0.2.0 -> 0.2.1
psqlodbc: upgrade 15.00.0000 -> 16.00.0000
python3-argcomplete: upgrade 3.1.1 -> 3.1.2
python3-bitstring: upgrade 4.1.1 -> 4.1.2
python3-cmake: upgrade 3.27.4.1 -> 3.27.5
python3-coverage: upgrade 7.3.0 -> 7.3.1
python3-engineio: upgrade 4.7.0 -> 4.7.1
python3-eth-utils: upgrade 2.2.0 -> 2.2.1
python3-flask-migrate: upgrade 4.0.4 -> 4.0.5
python3-flask-socketio: upgrade 5.3.5 -> 5.3.6
python3-google-api-python-client: upgrade 2.97.0 -> 2.99.0
python3-google-auth: upgrade 2.22.0 -> 2.23.0
python3-pillow: upgrade 10.0.0 -> 10.0.1
python3-pymisp: upgrade 2.4.175 -> 2.4.176
python3-pymodbus: upgrade 3.5.0 -> 3.5.2
python3-rapidjson: upgrade 1.10 -> 1.11
python3-rich: upgrade 13.5.2 -> 13.5.3
python3-term: upgrade 2.4 -> 2.5
python3-tox: upgrade 4.11.1 -> 4.11.3
python3-typeguard: upgrade 4.1.3 -> 4.1.5
python3-types-setuptools: upgrade 68.1.0.1 -> 68.2.0.0
python3-virtualenv: upgrade 20.24.4 -> 20.24.5
python3-xlsxwriter: upgrade 3.1.2 -> 3.1.3
python3-zeroconf: upgrade 0.97.0 -> 0.112.0
redis: upgrade 7.2.0 -> 7.2.1
remmina: upgrade 1.4.31 -> 1.4.32
Xiangyu Chen (3):
mosh: add support of protobuf 4.22.x
protobuf: upgrade 3.21.12 -> 4.22.2
protobuf-c: add support of protobuf 4.22.x
Yi Zhao (1):
audit: upgrade 3.1.1 -> 3.1.2
meta-arm: bd0953cc60..95789365f7:
Abdellatif El Khlifi (2):
arm-bsp/trusted-firmware-a: corstone1000: enable ERRATA_A35_855472
arm-bsp/u-boot: corstone1000: purge U-Boot specific DT nodes before Linux
Adam Johnston (1):
arm-bsp/trusted-firmware-a: Fix BL32 path if usrmerge enabled
Divin Raj (1):
ci,doc,kas,arm-bsp,arm: Remove support for fvp-baser-aemv8r64 machine
Emekcan Aras (6):
arm-bsp/optee-os: corstone1000: Handling logging syscall correctly
CI: Add meta-secure-core
CI: Include meta-secure-core in corstone1000
kas: corstone1000: add meta-secure-core
arm-bsp/u-boot: corstone1000: introduce authenticated capsule update
arm-bsp/trusted-firmware-m: Enable authenticated capsule update
Javier Tia (2):
optee-client: start tee-supplicant.service when teeprivX dev is detected
libts: tee-udev.rules: Change ownership to tee group
Jon Mason (5):
arm/edk2: update to edk2-stable202308
arm/trusted-firmware-m: update to 1.8.1
arm/opencsd: update to v1.4.1
arm/scp-firmware: update to v2.13.0
README: remove reference to meta-arm-autonomy
Khem Raj (1):
layer.conf: update LAYERSERIES_COMPAT for nanbield
Mariam Elshakfy (2):
arm-bsp/optee-os: N1SDP upgrade optee-os to 3.22
arm-bsp/optee-os: N1SDP upgrade tadevkit and optee-test to 3.22
Peter Hoyes (2):
CI: Allow a GitHub container registry mirror to be specified
CI: Make update-repos more resilient to network issues
Ross Burton (15):
arm/generic-arm64: move SERIAL_CONSOLES to generic-arm64
arm/qemu-generic-arm64: force off KVM in qemu
arm/generic-arm64: set XSERVER to install the modesetting driver
CI: remove redundant variables in testimage.yml
arm-bsp: change port mapping for SSH to port 2222
arm/apply_local_src_patches: allow use in multiple directories
arm/trusted-services: pass through CMake generator
arm/trusted-services: add missing pkgconfig inherit
arm/trusted-services/ts-remote-test: move binary to $bindir
arm/trusted-services/ts-sp-env-test: add missing DEPENDS
arm/trusted-services/ts-sp-env-test: remove
arm/trusted-services: use apply_local_src_patches
arm/trusted-services: upgrade nanopb and fix build races
CI: use a venv for sphinx
CI: upgrade to Kas 4 container
Xueliang Zhong (2):
arm-bsp/n1sdp: update to linux yocto kernel 6.4
arm-bsp/corstone1000: bump kernel version to v6.4
meta-security: 1856a7cf43..aca6d4a9e7:
Armin Kuster (10):
suricata: fix build issue.
suricata: Update to 7.0.0
sssd: Update to 2.9.2
openscap: update to 1.3.9
python3-privacyidea: update to 3.8.1
lkrg-module: update to 0.9.7
libhtp: update to 0.5.45
swtpm: update 0.8.1
lynis: Update to 3.0.9
scap-security-guide: Drop Poky patch and update to tip
John Broadbent (1):
libhoth: Update
meta-raspberrypi: 6501ec892c..482d864b8f:
Joshua Watt (1):
rpi-base: Fix wic image kernel dependency
Khem Raj (5):
userland: Update to trunk from 20230419
linux-raspberrypi: Upgrade 6.1 release to latest point release 6.1.54
linux-firmware-rpidistro: Update to 20230210-5_bpo11+1
bluez-firmware-rpidistro: Update to 1.2-4+rpt10
raspberrypi-firmware: Update to 20230509~buster
Martin Jansa (1):
layer.conf: update LAYERSERIES_COMPAT for nanbield
Change-Id: Id75112a3b0be4bd150dc5d9a28c01982ed48200e
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
diff --git a/poky/meta/lib/oeqa/core/runner.py b/poky/meta/lib/oeqa/core/runner.py
index 5077eb8..a86a706 100644
--- a/poky/meta/lib/oeqa/core/runner.py
+++ b/poky/meta/lib/oeqa/core/runner.py
@@ -44,6 +44,7 @@
self.endtime = {}
self.progressinfo = {}
self.extraresults = {}
+ self.shownmsg = []
# Inject into tc so that TestDepends decorator can see results
tc.results = self
@@ -74,6 +75,7 @@
for (scase, msg) in getattr(self, t):
if test.id() == scase.id():
self.tc.logger.info(str(msg))
+ self.shownmsg.append(test.id())
break
def logSummary(self, component, context_msg=''):
@@ -169,7 +171,6 @@
def logDetails(self, json_file_dir=None, configuration=None, result_id=None,
dump_streams=False):
- self.tc.logger.info("RESULTS:")
result = self.extraresults
logs = {}
@@ -193,6 +194,10 @@
report = {'status': status}
if log:
report['log'] = log
+ # Class setup failures wouldn't enter stopTest so would never display
+ if case.id() not in self.shownmsg:
+ self.tc.logger.info("Failure (%s) for %s:\n" % (status, case.id()) + log)
+
if duration:
report['duration'] = duration
@@ -215,6 +220,7 @@
report['stderr'] = stderr
result[case.id()] = report
+ self.tc.logger.info("RESULTS:")
for i in ['PASSED', 'SKIPPED', 'EXPECTEDFAIL', 'ERROR', 'FAILED', 'UNKNOWN']:
if i not in logs:
continue
diff --git a/poky/meta/lib/oeqa/core/utils/concurrencytest.py b/poky/meta/lib/oeqa/core/utils/concurrencytest.py
index 4f77589..5e20b0e 100644
--- a/poky/meta/lib/oeqa/core/utils/concurrencytest.py
+++ b/poky/meta/lib/oeqa/core/utils/concurrencytest.py
@@ -193,11 +193,12 @@
#
class ConcurrentTestSuite(unittest.TestSuite):
- def __init__(self, suite, processes, setupfunc, removefunc):
+ def __init__(self, suite, processes, setupfunc, removefunc, bb_vars):
super(ConcurrentTestSuite, self).__init__([suite])
self.processes = processes
self.setupfunc = setupfunc
self.removefunc = removefunc
+ self.bb_vars = bb_vars
def run(self, result):
testservers, totaltests = fork_for_tests(self.processes, self)
@@ -243,7 +244,7 @@
def fork_for_tests(concurrency_num, suite):
testservers = []
if 'BUILDDIR' in os.environ:
- selftestdir = get_test_layer()
+ selftestdir = get_test_layer(suite.bb_vars['BBLAYERS'])
test_blocks = partition_tests(suite, concurrency_num)
# Clear the tests from the original suite so it doesn't keep them alive
diff --git a/poky/meta/lib/oeqa/runtime/cases/buildcpio.py b/poky/meta/lib/oeqa/runtime/cases/buildcpio.py
index 3728855..ce122eb 100644
--- a/poky/meta/lib/oeqa/runtime/cases/buildcpio.py
+++ b/poky/meta/lib/oeqa/runtime/cases/buildcpio.py
@@ -14,7 +14,7 @@
@classmethod
def setUpClass(cls):
- uri = 'https://downloads.yoctoproject.org/mirror/sources/cpio-2.13.tar.gz'
+ uri = 'https://downloads.yoctoproject.org/mirror/sources/cpio-2.14.tar.gz'
cls.project = TargetBuildProject(cls.tc.target,
uri,
dl_dir = cls.tc.td['DL_DIR'])
diff --git a/poky/meta/lib/oeqa/runtime/cases/go.py b/poky/meta/lib/oeqa/runtime/cases/go.py
index 7514d10..39a80f4 100644
--- a/poky/meta/lib/oeqa/runtime/cases/go.py
+++ b/poky/meta/lib/oeqa/runtime/cases/go.py
@@ -18,4 +18,4 @@
self.assertEqual(status, 0, msg=msg)
msg = 'Incorrect output: %s' % output
- self.assertEqual(output, "Hello, Go examples!", msg=msg)
+ self.assertEqual(output, "Hello, world!", msg=msg)
diff --git a/poky/meta/lib/oeqa/runtime/cases/parselogs.py b/poky/meta/lib/oeqa/runtime/cases/parselogs.py
index e67d375..a805edd 100644
--- a/poky/meta/lib/oeqa/runtime/cases/parselogs.py
+++ b/poky/meta/lib/oeqa/runtime/cases/parselogs.py
@@ -4,17 +4,12 @@
# SPDX-License-Identifier: MIT
#
+import collections
import os
-from subprocess import check_output
from shutil import rmtree
from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.depends import OETestDepends
-from oeqa.core.decorator.data import skipIfDataVar
-from oeqa.runtime.decorator.package import OEHasPackage
-
-#in the future these lists could be moved outside of module
-errors = ["error", "cannot", "can\'t", "failed"]
common_errors = [
"(WW) warning, (EE) error, (NI) not implemented, (??) unknown.",
@@ -69,11 +64,9 @@
"xf86OpenConsole: Switching VT failed",
"Failed to read LoaderConfigTimeoutOneShot variable, ignoring: Operation not supported",
"Failed to read LoaderEntryOneShot variable, ignoring: Operation not supported",
+ "invalid BAR (can't size)",
]
-video_related = [
-]
-
x86_common = [
'[drm:psb_do_init] *ERROR* Debug is',
'wrong ELF class',
@@ -105,16 +98,13 @@
'default' : common_errors,
'qemux86' : [
'Failed to access perfctr msr (MSR',
- 'pci 0000:00:00.0: [Firmware Bug]: reg 0x..: invalid BAR (can\'t size)',
] + qemux86_common,
'qemux86-64' : qemux86_common,
'qemumips' : [
'Failed to load module "glx"',
- 'pci 0000:00:00.0: [Firmware Bug]: reg 0x..: invalid BAR (can\'t size)',
'cacheinfo: Failed to find cpu0 device node',
] + common_errors,
'qemumips64' : [
- 'pci 0000:00:00.0: [Firmware Bug]: reg 0x..: invalid BAR (can\'t size)',
'cacheinfo: Failed to find cpu0 device node',
] + common_errors,
'qemuppc' : [
@@ -206,17 +196,19 @@
] + common_errors,
}
-log_locations = ["/var/log/","/var/log/dmesg", "/tmp/dmesg_output.log"]
-
class ParseLogsTest(OERuntimeTestCase):
+ # Which log files should be collected
+ log_locations = ["/var/log/", "/var/log/dmesg", "/tmp/dmesg_output.log"]
+
+ # The keywords that identify error messages in the log files
+ errors = ["error", "cannot", "can't", "failed"]
+
@classmethod
def setUpClass(cls):
- cls.errors = errors
-
# When systemd is enabled we need to notice errors on
# circular dependencies in units.
- if 'systemd' in cls.td.get('DISTRO_FEATURES', ''):
+ if 'systemd' in cls.td.get('DISTRO_FEATURES'):
cls.errors.extend([
'Found ordering cycle on',
'Breaking ordering cycle by deleting job',
@@ -224,48 +216,13 @@
'Ordering cycle found, skipping',
])
- cls.ignore_errors = ignore_errors
- cls.log_locations = log_locations
- cls.msg = ''
- is_lsb, _ = cls.tc.target.run("which LSB_Test.sh")
- if is_lsb == 0:
- for machine in cls.ignore_errors:
- cls.ignore_errors[machine] = cls.ignore_errors[machine] \
- + video_related
+ cls.errors = [s.casefold() for s in cls.errors]
- def getMachine(self):
- return self.td.get('MACHINE', '')
-
- def getWorkdir(self):
- return self.td.get('WORKDIR', '')
-
- # Get some information on the CPU of the machine to display at the
- # beginning of the output. This info might be useful in some cases.
- def getHardwareInfo(self):
- hwi = ""
- cmd = ('cat /proc/cpuinfo | grep "model name" | head -n1 | '
- " awk 'BEGIN{FS=\":\"}{print $2}'")
- _, cpu_name = self.target.run(cmd)
-
- cmd = ('cat /proc/cpuinfo | grep "cpu cores" | head -n1 | '
- "awk {'print $4'}")
- _, cpu_physical_cores = self.target.run(cmd)
-
- cmd = 'cat /proc/cpuinfo | grep "processor" | wc -l'
- _, cpu_logical_cores = self.target.run(cmd)
-
- _, cpu_arch = self.target.run('uname -m')
-
- hwi += 'Machine information: \n'
- hwi += '*******************************\n'
- hwi += 'Machine name: ' + self.getMachine() + '\n'
- hwi += 'CPU: ' + str(cpu_name) + '\n'
- hwi += 'Arch: ' + str(cpu_arch)+ '\n'
- hwi += 'Physical cores: ' + str(cpu_physical_cores) + '\n'
- hwi += 'Logical cores: ' + str(cpu_logical_cores) + '\n'
- hwi += '*******************************\n'
-
- return hwi
+ try:
+ cls.ignore_errors = [s.casefold() for s in ignore_errors[cls.td.get('MACHINE')]]
+ except KeyError:
+ cls.logger.info('No ignore list found for this machine, using default')
+ cls.ignore_errors = [s.casefold() for s in ignore_errors['default']]
# Go through the log locations provided and if it's a folder
# create a list with all the .log files in it, if it's a file
@@ -273,23 +230,23 @@
def getLogList(self, log_locations):
logs = []
for location in log_locations:
- status, _ = self.target.run('test -f ' + str(location))
+ status, _ = self.target.run('test -f %s' % location)
if status == 0:
- logs.append(str(location))
+ logs.append(location)
else:
- status, _ = self.target.run('test -d ' + str(location))
+ status, _ = self.target.run('test -d %s' % location)
if status == 0:
- cmd = 'find ' + str(location) + '/*.log -maxdepth 1 -type f'
+ cmd = 'find %s -name \\*.log -maxdepth 1 -type f' % location
status, output = self.target.run(cmd)
if status == 0:
output = output.splitlines()
for logfile in output:
- logs.append(os.path.join(location, str(logfile)))
+ logs.append(os.path.join(location, logfile))
return logs
# Copy the log files to be parsed locally
def transfer_logs(self, log_list):
- workdir = self.getWorkdir()
+ workdir = self.td.get('WORKDIR')
self.target_logs = workdir + '/' + 'target_logs'
target_logs = self.target_logs
if os.path.exists(target_logs):
@@ -306,65 +263,55 @@
logs = [f for f in dir_files if os.path.isfile(f)]
return logs
- # Build the grep command to be used with filters and exclusions
- def build_grepcmd(self, errors, ignore_errors, log):
- grepcmd = 'grep '
- grepcmd += '-Ei "'
- for error in errors:
- grepcmd += r'\<' + error + r'\>' + '|'
- grepcmd = grepcmd[:-1]
- grepcmd += '" ' + str(log) + " | grep -Eiv \'"
+ def get_context(self, lines, index, before=6, after=3):
+ """
+ Given a set of lines and the index of the line that is important, return
+ a number of lines surrounding that line.
+ """
+ last = len(lines)
- try:
- errorlist = ignore_errors[self.getMachine()]
- except KeyError:
- self.msg += 'No ignore list found for this machine, using default\n'
- errorlist = ignore_errors['default']
+ start = index - before
+ end = index + after + 1
- for ignore_error in errorlist:
- ignore_error = ignore_error.replace('(', r'\(')
- ignore_error = ignore_error.replace(')', r'\)')
- ignore_error = ignore_error.replace("'", '.')
- ignore_error = ignore_error.replace('?', r'\?')
- ignore_error = ignore_error.replace('[', r'\[')
- ignore_error = ignore_error.replace(']', r'\]')
- ignore_error = ignore_error.replace('*', r'\*')
- ignore_error = ignore_error.replace('0-9', '[0-9]')
- grepcmd += ignore_error + '|'
- grepcmd = grepcmd[:-1]
- grepcmd += "\'"
+ if start < 0:
+ end -= start
+ start = 0
+ if end > last:
+ start -= end - last
+ end = last
- return grepcmd
+ return lines[start:end]
- # Grep only the errors so that their context could be collected.
- # Default context is 10 lines before and after the error itself
- def parse_logs(self, errors, ignore_errors, logs,
- lines_before = 10, lines_after = 10):
- results = {}
- rez = []
- grep_output = ''
+ def test_get_context(self):
+ """
+ A test case for the test case.
+ """
+ lines = list(range(0,10))
+ self.assertEqual(self.get_context(lines, 0, 2, 1), [0, 1, 2, 3])
+ self.assertEqual(self.get_context(lines, 5, 2, 1), [3, 4, 5, 6])
+ self.assertEqual(self.get_context(lines, 9, 2, 1), [6, 7, 8, 9])
+
+ def parse_logs(self, logs, lines_before=10, lines_after=10):
+ """
+ Search the log files @logs looking for error lines (marked by
+ @self.errors), ignoring anything listed in @self.ignore_errors.
+
+ Returns a dictionary of log filenames to a dictionary of error lines to
+ the error context (controlled by @lines_before and @lines_after).
+ """
+ results = collections.defaultdict(dict)
for log in logs:
- result = None
- thegrep = self.build_grepcmd(errors, ignore_errors, log)
+ with open(log) as f:
+ lines = f.readlines()
- try:
- result = check_output(thegrep, shell=True).decode('utf-8')
- except:
- pass
+ for i, line in enumerate(lines):
+ line = line.strip()
+ line_lower = line.casefold()
- if result is not None:
- results[log] = {}
- rez = result.splitlines()
-
- for xrez in rez:
- try:
- cmd = ['grep', '-F', xrez, '-B', str(lines_before)]
- cmd += ['-A', str(lines_after), log]
- grep_output = check_output(cmd).decode('utf-8')
- except:
- pass
- results[log][xrez]=grep_output
+ if any(keyword in line_lower for keyword in self.errors):
+ if not any(ignore in line_lower for ignore in self.ignore_errors):
+ results[log][line] = "".join(self.get_context(lines, i, lines_before, lines_after))
return results
@@ -377,17 +324,18 @@
def test_parselogs(self):
self.write_dmesg()
log_list = self.get_local_log_list(self.log_locations)
- result = self.parse_logs(self.errors, self.ignore_errors, log_list)
- print(self.getHardwareInfo())
+ result = self.parse_logs(log_list)
+
errcount = 0
+ self.msg = ""
for log in result:
self.msg += 'Log: ' + log + '\n'
self.msg += '-----------------------\n'
for error in result[log]:
errcount += 1
- self.msg += 'Central error: ' + str(error) + '\n'
+ self.msg += 'Central error: ' + error + '\n'
self.msg += '***********************\n'
- self.msg += result[str(log)][str(error)] + '\n'
+ self.msg += result[log][error] + '\n'
self.msg += '***********************\n'
self.msg += '%s errors found in logs.' % errcount
self.assertEqual(errcount, 0, msg=self.msg)
diff --git a/poky/meta/lib/oeqa/runtime/cases/ptest.py b/poky/meta/lib/oeqa/runtime/cases/ptest.py
index 23a71ea..fbaeb84 100644
--- a/poky/meta/lib/oeqa/runtime/cases/ptest.py
+++ b/poky/meta/lib/oeqa/runtime/cases/ptest.py
@@ -96,7 +96,7 @@
failed_tests = {}
for section in sections:
- if 'exitcode' in sections[section].keys():
+ if 'exitcode' in sections[section].keys() or 'timeout' in sections[section].keys():
failed_tests[section] = sections[section]["log"]
for section in results:
diff --git a/poky/meta/lib/oeqa/sdk/cases/buildcpio.py b/poky/meta/lib/oeqa/sdk/cases/buildcpio.py
index c42c670..33b946f 100644
--- a/poky/meta/lib/oeqa/sdk/cases/buildcpio.py
+++ b/poky/meta/lib/oeqa/sdk/cases/buildcpio.py
@@ -19,10 +19,10 @@
"""
def test_cpio(self):
with tempfile.TemporaryDirectory(prefix="cpio-", dir=self.tc.sdk_dir) as testdir:
- tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz")
+ tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftp.gnu.org/gnu/cpio/cpio-2.14.tar.gz")
dirs = {}
- dirs["source"] = os.path.join(testdir, "cpio-2.13")
+ dirs["source"] = os.path.join(testdir, "cpio-2.14")
dirs["build"] = os.path.join(testdir, "build")
dirs["install"] = os.path.join(testdir, "install")
diff --git a/poky/meta/lib/oeqa/selftest/cases/bbtests.py b/poky/meta/lib/oeqa/selftest/cases/bbtests.py
index 31aa568..d242352 100644
--- a/poky/meta/lib/oeqa/selftest/cases/bbtests.py
+++ b/poky/meta/lib/oeqa/selftest/cases/bbtests.py
@@ -236,8 +236,11 @@
result = bitbake('selftest-ed', ignore_status=True)
self.assertEqual(result.status, 0, "Bitbake failed, exit code %s, output %s" % (result.status, result.output))
lic_dir = get_bb_var('LICENSE_DIRECTORY')
- self.assertFalse(os.path.isfile(os.path.join(lic_dir, 'selftest-ed/generic_GPL-3.0-or-later')))
- self.assertTrue(os.path.isfile(os.path.join(lic_dir, 'selftest-ed/generic_GPL-2.0-or-later')))
+ arch = get_bb_var('SSTATE_PKGARCH')
+ filename = os.path.join(lic_dir, arch, 'selftest-ed', 'generic_GPL-3.0-or-later')
+ self.assertFalse(os.path.isfile(filename), msg="License file %s exists and shouldn't" % filename)
+ filename = os.path.join(lic_dir, arch, 'selftest-ed', 'generic_GPL-2.0-or-later')
+ self.assertTrue(os.path.isfile(filename), msg="License file %s doesn't exist" % filename)
def test_setscene_only(self):
""" Bitbake option to restore from sstate only within a build (i.e. execute no real tasks, only setscene)"""
diff --git a/poky/meta/lib/oeqa/selftest/cases/devtool.py b/poky/meta/lib/oeqa/selftest/cases/devtool.py
index a2b77e5..b577f6d 100644
--- a/poky/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/poky/meta/lib/oeqa/selftest/cases/devtool.py
@@ -256,6 +256,31 @@
if remaining_removelines:
self.fail('Expected removed lines not found: %s' % remaining_removelines)
+ def _check_runqemu_prerequisites(self):
+ """Check runqemu is available
+
+ Whilst some tests would seemingly be better placed as a runtime test,
+ unfortunately the runtime tests run under bitbake and you can't run
+ devtool within bitbake (since devtool needs to run bitbake itself).
+ Additionally we are testing build-time functionality as well, so
+ really this has to be done as an oe-selftest test.
+ """
+ machine = get_bb_var('MACHINE')
+ if not machine.startswith('qemu'):
+ self.skipTest('This test only works with qemu machines')
+ if not os.path.exists('/etc/runqemu-nosudo'):
+ self.skipTest('You must set up tap devices with scripts/runqemu-gen-tapdevs before running this test')
+ result = runCmd('PATH="$PATH:/sbin:/usr/sbin" ip tuntap show', ignore_status=True)
+ if result.status != 0:
+ result = runCmd('PATH="$PATH:/sbin:/usr/sbin" ifconfig -a', ignore_status=True)
+ if result.status != 0:
+ self.skipTest('Failed to determine if tap devices exist with ifconfig or ip: %s' % result.output)
+ for line in result.output.splitlines():
+ if line.startswith('tap'):
+ break
+ else:
+ self.skipTest('No tap devices found - you must set up tap devices with scripts/runqemu-gen-tapdevs before running this test')
+
def _test_devtool_add_git_url(self, git_url, version, pn, resulting_src_uri):
self.track_for_cleanup(self.workspacedir)
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
@@ -1616,28 +1641,7 @@
@OETestTag("runqemu")
def test_devtool_deploy_target(self):
- # NOTE: Whilst this test would seemingly be better placed as a runtime test,
- # unfortunately the runtime tests run under bitbake and you can't run
- # devtool within bitbake (since devtool needs to run bitbake itself).
- # Additionally we are testing build-time functionality as well, so
- # really this has to be done as an oe-selftest test.
- #
- # Check preconditions
- machine = get_bb_var('MACHINE')
- if not machine.startswith('qemu'):
- self.skipTest('This test only works with qemu machines')
- if not os.path.exists('/etc/runqemu-nosudo'):
- self.skipTest('You must set up tap devices with scripts/runqemu-gen-tapdevs before running this test')
- result = runCmd('PATH="$PATH:/sbin:/usr/sbin" ip tuntap show', ignore_status=True)
- if result.status != 0:
- result = runCmd('PATH="$PATH:/sbin:/usr/sbin" ifconfig -a', ignore_status=True)
- if result.status != 0:
- self.skipTest('Failed to determine if tap devices exist with ifconfig or ip: %s' % result.output)
- for line in result.output.splitlines():
- if line.startswith('tap'):
- break
- else:
- self.skipTest('No tap devices found - you must set up tap devices with scripts/runqemu-gen-tapdevs before running this test')
+ self._check_runqemu_prerequisites()
self.assertTrue(not os.path.exists(self.workspacedir), 'This test cannot be run with a workspace directory under the build directory')
# Definitions
testrecipe = 'mdadm'
diff --git a/poky/meta/lib/oeqa/selftest/cases/meta_ide.py b/poky/meta/lib/oeqa/selftest/cases/meta_ide.py
index 59270fb..e446d93 100644
--- a/poky/meta/lib/oeqa/selftest/cases/meta_ide.py
+++ b/poky/meta/lib/oeqa/selftest/cases/meta_ide.py
@@ -44,7 +44,7 @@
def test_meta_ide_can_build_cpio_project(self):
dl_dir = self.td.get('DL_DIR', None)
self.project = SDKBuildProject(self.tmpdir_metaideQA + "/cpio/", self.environment_script_path,
- "https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz",
+ "https://ftp.gnu.org/gnu/cpio/cpio-2.14.tar.gz",
self.tmpdir_metaideQA, self.td['DATETIME'], dl_dir=dl_dir)
self.project.download_archive()
self.assertEqual(self.project.run_configure('$CONFIGURE_FLAGS --disable-maintainer-mode','sed -i -e "/char \*program_name/d" src/global.c;'), 0,
diff --git a/poky/meta/lib/oeqa/selftest/cases/oescripts.py b/poky/meta/lib/oeqa/selftest/cases/oescripts.py
index 7d3a00e..f69efcc 100644
--- a/poky/meta/lib/oeqa/selftest/cases/oescripts.py
+++ b/poky/meta/lib/oeqa/selftest/cases/oescripts.py
@@ -36,18 +36,16 @@
if expected_endlines:
self.fail('Missing expected line endings:\n %s' % '\n '.join(expected_endlines))
-class OEScriptTests(OESelftestTestCase):
- scripts_dir = os.path.join(get_bb_var('COREBASE'), 'scripts')
-
@unittest.skipUnless(importlib.util.find_spec("cairo"), "Python cairo module is not present")
-class OEPybootchartguyTests(OEScriptTests):
+class OEPybootchartguyTests(OESelftestTestCase):
@classmethod
def setUpClass(cls):
- super(OEScriptTests, cls).setUpClass()
+ super().setUpClass()
bitbake("core-image-minimal -c rootfs -f")
cls.tmpdir = get_bb_var('TMPDIR')
cls.buildstats = cls.tmpdir + "/buildstats/" + sorted(os.listdir(cls.tmpdir + "/buildstats"))[-1]
+ cls.scripts_dir = os.path.join(get_bb_var('COREBASE'), 'scripts')
def test_pybootchartguy_help(self):
runCmd('%s/pybootchartgui/pybootchartgui.py --help' % self.scripts_dir)
@@ -65,7 +63,12 @@
self.assertTrue(os.path.exists(self.tmpdir + "/charts.pdf"))
-class OEGitproxyTests(OEScriptTests):
+class OEGitproxyTests(OESelftestTestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.scripts_dir = os.path.join(get_bb_var('COREBASE'), 'scripts')
def test_oegitproxy_help(self):
try:
@@ -126,7 +129,13 @@
result = runCmd("oe-run-native qemu-helper-native qemu-oe-bridge-helper --help")
self.assertIn("Helper function to find and exec qemu-bridge-helper", result.output)
-class OEListPackageconfigTests(OEScriptTests):
+class OEListPackageconfigTests(OESelftestTestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.scripts_dir = os.path.join(get_bb_var('COREBASE'), 'scripts')
+
#oe-core.scripts.List_all_the_PACKAGECONFIG's_flags
def check_endlines(self, results, expected_endlines):
for line in results.output.splitlines():
diff --git a/poky/meta/lib/oeqa/selftest/cases/reproducible.py b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
index 4c6ed4e..84c6c3a 100644
--- a/poky/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -128,23 +128,17 @@
class ReproducibleTests(OESelftestTestCase):
# Test the reproducibility of whatever is built between sstate_targets and targets
- package_classes = get_bb_var("OEQA_REPRODUCIBLE_TEST_PACKAGE")
- if package_classes:
- package_classes = package_classes.split()
- else:
- package_classes = ['deb', 'ipk', 'rpm']
+ package_classes = ['deb', 'ipk', 'rpm']
# Maximum report size, in bytes
max_report_size = 250 * 1024 * 1024
# targets are the things we want to test the reproducibility of
- targets = get_bb_var("OEQA_REPRODUCIBLE_TEST_TARGET")
- if targets:
- targets = targets.split()
- else:
- targets = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline', 'core-image-weston', 'world']
+ targets = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline', 'core-image-weston', 'world']
+
# sstate targets are things to pull from sstate to potentially cut build/debugging time
- sstate_targets = (get_bb_var("OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS") or "").split()
+ sstate_targets = []
+
save_results = False
if 'OEQA_DEBUGGING_SAVED_OUTPUT' in os.environ:
save_results = os.environ['OEQA_DEBUGGING_SAVED_OUTPUT']
@@ -159,11 +153,20 @@
def setUpLocal(self):
super().setUpLocal()
- needed_vars = ['TOPDIR', 'TARGET_PREFIX', 'BB_NUMBER_THREADS', 'BB_HASHSERVE']
+ needed_vars = ['TOPDIR', 'TARGET_PREFIX', 'BB_NUMBER_THREADS', 'BB_HASHSERVE', 'OEQA_REPRODUCIBLE_TEST_PACKAGE', 'OEQA_REPRODUCIBLE_TEST_TARGET', 'OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS']
bb_vars = get_bb_vars(needed_vars)
for v in needed_vars:
setattr(self, v.lower(), bb_vars[v])
+ if bb_vars['OEQA_REPRODUCIBLE_TEST_PACKAGE']:
+ self.package_classes = bb_vars['OEQA_REPRODUCIBLE_TEST_PACKAGE'].split()
+
+ if bb_vars['OEQA_REPRODUCIBLE_TEST_TARGET']:
+ self.targets = bb_vars['OEQA_REPRODUCIBLE_TEST_TARGET'].split()
+
+ if bb_vars['OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS']:
+ self.sstate_targets = bb_vars['OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS'].split()
+
self.extraresults = {}
self.extraresults.setdefault('reproducible.rawlogs', {})['log'] = ''
self.extraresults.setdefault('reproducible', {}).setdefault('files', {})
diff --git a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
index 463679d..12000aa 100644
--- a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -129,6 +129,22 @@
bitbake('core-image-full-cmdline socat')
bitbake('-c testimage core-image-full-cmdline')
+ def test_testimage_slirp(self):
+ """
+ Summary: Check basic testimage functionality with qemu and slirp networking.
+ """
+
+ features = '''
+IMAGE_CLASSES:append = " testimage"
+IMAGE_FEATURES:append = " ssh-server-dropbear"
+IMAGE_ROOTFS_EXTRA_SPACE:append = "${@bb.utils.contains("IMAGE_CLASSES", "testimage", " + 5120", "", d)}"
+TEST_RUNQEMUPARAMS += " slirp"
+'''
+ self.write_config(features)
+
+ bitbake('core-image-minimal')
+ bitbake('-c testimage core-image-minimal')
+
def test_testimage_dnf(self):
"""
Summary: Check package feeds functionality for dnf
@@ -236,11 +252,11 @@
features += 'TEST_SUITES = "ping ssh virgl"\n'
features += 'IMAGE_FEATURES:append = " ssh-server-dropbear"\n'
features += 'IMAGE_INSTALL:append = " kmscube"\n'
- features_gtk = features + 'TEST_RUNQEMUPARAMS = "gtk gl"\n'
+ features_gtk = features + 'TEST_RUNQEMUPARAMS += " gtk gl"\n'
self.write_config(features_gtk)
bitbake('core-image-minimal')
bitbake('-c testimage core-image-minimal')
- features_sdl = features + 'TEST_RUNQEMUPARAMS = "sdl gl"\n'
+ features_sdl = features + 'TEST_RUNQEMUPARAMS += " sdl gl"\n'
self.write_config(features_sdl)
bitbake('core-image-minimal')
bitbake('-c testimage core-image-minimal')
@@ -268,7 +284,7 @@
features += 'TEST_SUITES = "ping ssh virgl"\n'
features += 'IMAGE_FEATURES:append = " ssh-server-dropbear"\n'
features += 'IMAGE_INSTALL:append = " kmscube"\n'
- features += 'TEST_RUNQEMUPARAMS = "egl-headless"\n'
+ features += 'TEST_RUNQEMUPARAMS += " egl-headless"\n'
self.write_config(features)
bitbake('core-image-minimal')
bitbake('-c testimage core-image-minimal')
diff --git a/poky/meta/lib/oeqa/selftest/cases/spdx.py b/poky/meta/lib/oeqa/selftest/cases/spdx.py
new file mode 100644
index 0000000..05fc4e3
--- /dev/null
+++ b/poky/meta/lib/oeqa/selftest/cases/spdx.py
@@ -0,0 +1,54 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+import json
+import os
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import bitbake, get_bb_var, runCmd
+
+class SPDXCheck(OESelftestTestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ super(SPDXCheck, cls).setUpClass()
+ bitbake("python3-spdx-tools-native")
+ bitbake("-c addto_recipe_sysroot python3-spdx-tools-native")
+
+ def check_recipe_spdx(self, high_level_dir, spdx_file, target_name):
+ config = """
+INHERIT += "create-spdx"
+"""
+ self.write_config(config)
+
+ deploy_dir = get_bb_var("DEPLOY_DIR")
+ machine_var = get_bb_var("MACHINE")
+ # qemux86-64 creates the directory qemux86_64
+ machine_dir = machine_var.replace("-", "_")
+
+ full_file_path = os.path.join(deploy_dir, "spdx", machine_dir, high_level_dir, spdx_file)
+
+ try:
+ os.remove(full_file_path)
+ except FileNotFoundError:
+ pass
+
+ bitbake("%s -c create_spdx" % target_name)
+
+ def check_spdx_json(filename):
+ with open(filename) as f:
+ report = json.load(f)
+ self.assertNotEqual(report, None)
+ self.assertNotEqual(report["SPDXID"], None)
+
+ python = os.path.join(get_bb_var('STAGING_BINDIR', 'python3-spdx-tools-native'), 'nativepython3')
+ validator = os.path.join(get_bb_var('STAGING_BINDIR', 'python3-spdx-tools-native'), 'pyspdxtools')
+ result = runCmd("{} {} -i {}".format(python, validator, filename))
+
+ self.assertExists(full_file_path)
+ result = check_spdx_json(full_file_path)
+
+ def test_spdx_base_files(self):
+ self.check_recipe_spdx("packages", "base-files.spdx.json", "base-files")
diff --git a/poky/meta/lib/oeqa/selftest/cases/wic.py b/poky/meta/lib/oeqa/selftest/cases/wic.py
index aa61349..b4866bc 100644
--- a/poky/meta/lib/oeqa/selftest/cases/wic.py
+++ b/poky/meta/lib/oeqa/selftest/cases/wic.py
@@ -729,7 +729,7 @@
wicout = glob(os.path.join(self.resultdir, "wictestdisk-*.direct"))
self.assertEqual(1, len(wicout))
size = os.path.getsize(wicout[0])
- self.assertTrue(size > extraspace)
+ self.assertTrue(size > extraspace, msg="Extra space not present (%s vs %s)" % (size, extraspace))
def test_no_table(self):
"""Test --no-table wks option."""
@@ -773,7 +773,7 @@
basename = bb_vars['IMAGE_BASENAME']
self.assertEqual(basename, image)
path = os.path.join(imgdatadir, basename) + '.env'
- self.assertTrue(os.path.isfile(path))
+ self.assertTrue(os.path.isfile(path), msg="File %s wasn't generated as expected" % path)
wicvars = set(bb_vars['WICVARS'].split())
# filter out optional variables
@@ -786,7 +786,7 @@
# test if variables used by wic present in the .env file
for var in wicvars:
self.assertTrue(var in content, "%s is not in .env file" % var)
- self.assertTrue(content[var])
+ self.assertTrue(content[var], "%s doesn't have a value (%s)" % (var, content[var]))
def test_image_vars_dir_short(self):
"""Test image vars directory selection -v option"""
@@ -833,8 +833,8 @@
# pointing to existing files
for suffix in ('wic', 'manifest'):
path = prefix + suffix
- self.assertTrue(os.path.islink(path))
- self.assertTrue(os.path.isfile(os.path.realpath(path)))
+ self.assertTrue(os.path.islink(path), msg="Link %s wasn't generated as expected" % path)
+ self.assertTrue(os.path.isfile(os.path.realpath(path)), msg="File linked to by %s wasn't generated as expected" % path)
# TODO this should work on aarch64
@skipIfNotArch(['i586', 'i686', 'x86_64'])
@@ -1104,7 +1104,7 @@
self.remove_config(config)
bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME'], image)
image_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], '%s.wic' % bb_vars['IMAGE_LINK_NAME'])
- self.assertTrue(os.path.exists(image_path))
+ self.assertTrue(os.path.exists(image_path), msg="Image file %s wasn't generated as expected" % image_path)
sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools')
@@ -1345,11 +1345,11 @@
orig_sizes = [int(line.split()[3]) for line in orig.output.split('\n')[1:]]
exp_sizes = [int(line.split()[3]) for line in exp.output.split('\n')[1:]]
self.assertEqual(orig_sizes[0], exp_sizes[0]) # first partition is not resized
- self.assertTrue(orig_sizes[1] < exp_sizes[1])
+ self.assertTrue(orig_sizes[1] < exp_sizes[1], msg="Parition size wasn't enlarged (%s vs %s)" % (orig_sizes[1], exp_sizes[1]))
# Check if all free space is partitioned
result = runCmd("%s/usr/sbin/sfdisk -F %s" % (sysroot, new_image_path))
- self.assertTrue("0 B, 0 bytes, 0 sectors" in result.output)
+ self.assertIn("0 B, 0 bytes, 0 sectors", result.output)
os.rename(image_path, image_path + '.bak')
os.rename(new_image_path, image_path)
@@ -1433,7 +1433,7 @@
# check if file is there
result = runCmd("wic ls %s:1/ -n %s" % (images[0], sysroot))
self.assertEqual(7, len(result.output.split('\n')))
- self.assertTrue(os.path.basename(testfile.name) in result.output)
+ self.assertIn(os.path.basename(testfile.name), result.output)
# prepare directory
testdir = os.path.join(self.resultdir, 'wic-test-cp-dir')
@@ -1447,13 +1447,13 @@
# check if directory is there
result = runCmd("wic ls %s:1/ -n %s" % (images[0], sysroot))
self.assertEqual(8, len(result.output.split('\n')))
- self.assertTrue(os.path.basename(testdir) in result.output)
+ self.assertIn(os.path.basename(testdir), result.output)
# copy the file from the partition and check if it success
dest = '%s-cp' % testfile.name
runCmd("wic cp %s:1/%s %s -n %s" % (images[0],
os.path.basename(testfile.name), dest, sysroot))
- self.assertTrue(os.path.exists(dest))
+ self.assertTrue(os.path.exists(dest), msg="File %s wasn't generated as expected" % dest)
def test_wic_rm(self):
@@ -1497,7 +1497,7 @@
# list directory content of the second ext4 partition
result = runCmd("wic ls %s:2/ -n %s" % (images[0], sysroot))
self.assertTrue(set(['bin', 'home', 'proc', 'usr', 'var', 'dev', 'lib', 'sbin']).issubset(
- set(line.split()[-1] for line in result.output.split('\n') if line)))
+ set(line.split()[-1] for line in result.output.split('\n') if line)), msg="Expected directories not present %s" % result.output)
def test_wic_cp_ext(self):
"""Test copy files and directories to the ext partition."""
@@ -1512,7 +1512,7 @@
# list directory content of the ext4 partition
result = runCmd("wic ls %s:2/ -n %s" % (images[0], sysroot))
dirs = set(line.split()[-1] for line in result.output.split('\n') if line)
- self.assertTrue(set(['bin', 'home', 'proc', 'usr', 'var', 'dev', 'lib', 'sbin']).issubset(dirs))
+ self.assertTrue(set(['bin', 'home', 'proc', 'usr', 'var', 'dev', 'lib', 'sbin']).issubset(dirs), msg="Expected directories not present %s" % dirs)
with NamedTemporaryFile("w", suffix=".wic-cp") as testfile:
testfile.write("test")
@@ -1527,12 +1527,12 @@
# check if the file to copy is in the partition
result = runCmd("wic ls %s:2/etc/ -n %s" % (images[0], sysroot))
- self.assertTrue('fstab' in [line.split()[-1] for line in result.output.split('\n') if line])
+ self.assertIn('fstab', [line.split()[-1] for line in result.output.split('\n') if line])
# copy file from the partition, replace the temporary file content with it and
# check for the file size to validate the copy
runCmd("wic cp %s:2/etc/fstab %s -n %s" % (images[0], testfile.name, sysroot))
- self.assertTrue(os.stat(testfile.name).st_size > 0)
+ self.assertTrue(os.stat(testfile.name).st_size > 0, msg="Filesize not as expected %s" % os.stat(testfile.name).st_size)
def test_wic_rm_ext(self):
@@ -1547,18 +1547,18 @@
# list directory content of the /etc directory on ext4 partition
result = runCmd("wic ls %s:2/etc/ -n %s" % (images[0], sysroot))
- self.assertTrue('fstab' in [line.split()[-1] for line in result.output.split('\n') if line])
+ self.assertIn('fstab', [line.split()[-1] for line in result.output.split('\n') if line])
# remove file
runCmd("wic rm %s:2/etc/fstab -n %s" % (images[0], sysroot))
# check if it's removed
result = runCmd("wic ls %s:2/etc/ -n %s" % (images[0], sysroot))
- self.assertTrue('fstab' not in [line.split()[-1] for line in result.output.split('\n') if line])
+ self.assertNotIn('fstab', [line.split()[-1] for line in result.output.split('\n') if line])
# remove non-empty directory
runCmd("wic rm -r %s:2/etc/ -n %s" % (images[0], sysroot))
# check if it's removed
result = runCmd("wic ls %s:2/ -n %s" % (images[0], sysroot))
- self.assertTrue('etc' not in [line.split()[-1] for line in result.output.split('\n') if line])
+ self.assertNotIn('etc', [line.split()[-1] for line in result.output.split('\n') if line])
diff --git a/poky/meta/lib/oeqa/selftest/context.py b/poky/meta/lib/oeqa/selftest/context.py
index bd03e76..5a09aee 100644
--- a/poky/meta/lib/oeqa/selftest/context.py
+++ b/poky/meta/lib/oeqa/selftest/context.py
@@ -35,12 +35,13 @@
return result
class NonConcurrentTestSuite(unittest.TestSuite):
- def __init__(self, suite, processes, setupfunc, removefunc):
+ def __init__(self, suite, processes, setupfunc, removefunc, bb_vars):
super().__init__([suite])
self.processes = processes
self.suite = suite
self.setupfunc = setupfunc
self.removefunc = removefunc
+ self.bb_vars = bb_vars
def run(self, result):
(builddir, newbuilddir) = self.setupfunc("-st", None, self.suite)
@@ -79,16 +80,15 @@
else:
self.removebuilddir = removebuilddir
+ def set_variables(self, vars):
+ self.bb_vars = vars
+
def setup_builddir(self, suffix, selftestdir, suite):
- # Get SSTATE_DIR from the parent build dir
- with bb.tinfoil.Tinfoil(tracking=True) as tinfoil:
- tinfoil.prepare(quiet=2, config_only=True)
- d = tinfoil.config_data
- sstatedir = str(d.getVar('SSTATE_DIR'))
+ sstatedir = self.bb_vars['SSTATE_DIR']
builddir = os.environ['BUILDDIR']
if not selftestdir:
- selftestdir = get_test_layer()
+ selftestdir = get_test_layer(self.bb_vars['BBLAYERS'])
if self.newbuilddir:
newbuilddir = os.path.join(self.newbuilddir, 'build' + suffix)
else:
@@ -104,7 +104,7 @@
oe.path.copytree(builddir + "/cache", newbuilddir + "/cache")
oe.path.copytree(selftestdir, newselftestdir)
- subprocess.check_output("git init; git add *; git commit -a -m 'initial'", cwd=newselftestdir, shell=True)
+ subprocess.check_output("git init && git add * && git commit -a -m 'initial'", cwd=newselftestdir, shell=True)
# Tried to used bitbake-layers add/remove but it requires recipe parsing and hence is too slow
subprocess.check_output("sed %s/conf/bblayers.conf -i -e 's#%s#%s#g'" % (newbuilddir, selftestdir, newselftestdir), cwd=newbuilddir, shell=True)
@@ -155,9 +155,9 @@
if processes:
from oeqa.core.utils.concurrencytest import ConcurrentTestSuite
- return ConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir)
+ return ConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir, self.bb_vars)
else:
- return NonConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir)
+ return NonConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir, self.bb_vars)
def runTests(self, processes=None, machine=None, skips=[]):
if machine:
@@ -270,7 +270,7 @@
builddir = os.environ.get("BUILDDIR")
self.tc_kwargs['init']['config_paths'] = {}
- self.tc_kwargs['init']['config_paths']['testlayer_path'] = get_test_layer()
+ self.tc_kwargs['init']['config_paths']['testlayer_path'] = get_test_layer(bbvars["BBLAYERS"])
self.tc_kwargs['init']['config_paths']['builddir'] = builddir
self.tc_kwargs['init']['config_paths']['localconf'] = os.path.join(builddir, "conf/local.conf")
self.tc_kwargs['init']['config_paths']['bblayers'] = os.path.join(builddir, "conf/bblayers.conf")
@@ -310,10 +310,10 @@
meta_selftestdir = os.path.join(
self.tc.td["BBLAYERS_FETCH_DIR"], 'meta-selftest')
if os.path.isdir(meta_selftestdir):
- runCmd("bitbake-layers add-layer %s" %meta_selftestdir)
+ runCmd("bitbake-layers add-layer %s" % meta_selftestdir)
# reload data is needed because a meta-selftest layer was add
self.tc.td = get_bb_vars()
- self.tc.config_paths['testlayer_path'] = get_test_layer()
+ self.tc.config_paths['testlayer_path'] = get_test_layer(self.tc.td["BBLAYERS"])
else:
self.tc.logger.error("could not locate meta-selftest in:\n%s" % meta_selftestdir)
raise OEQAPreRun
@@ -351,8 +351,15 @@
_add_layer_libs()
- self.tc.logger.info("Running bitbake -e to test the configuration is valid/parsable")
- runCmd("bitbake -e")
+ self.tc.logger.info("Checking base configuration is valid/parsable")
+
+ with bb.tinfoil.Tinfoil(tracking=True) as tinfoil:
+ tinfoil.prepare(quiet=2, config_only=True)
+ d = tinfoil.config_data
+ vars = {}
+ vars['SSTATE_DIR'] = str(d.getVar('SSTATE_DIR'))
+ vars['BBLAYERS'] = str(d.getVar('BBLAYERS'))
+ self.tc.set_variables(vars)
def get_json_result_dir(self, args):
json_result_dir = os.path.join(self.tc.td["LOG_DIR"], 'oeqa')
@@ -437,7 +444,7 @@
output_link = os.path.join(os.path.dirname(args.output_log),
"%s-results.log" % self.name)
if os.path.lexists(output_link):
- os.remove(output_link)
+ os.unlink(output_link)
os.symlink(args.output_log, output_link)
return rc
diff --git a/poky/meta/lib/oeqa/utils/commands.py b/poky/meta/lib/oeqa/utils/commands.py
index c1f5338..575e380 100644
--- a/poky/meta/lib/oeqa/utils/commands.py
+++ b/poky/meta/lib/oeqa/utils/commands.py
@@ -285,8 +285,10 @@
def get_bb_var(var, target=None, postconfig=None):
return get_bb_vars([var], target, postconfig)[var]
-def get_test_layer():
- layers = get_bb_var("BBLAYERS").split()
+def get_test_layer(bblayers=None):
+ if bblayers is None:
+ bblayers = get_bb_var("BBLAYERS")
+ layers = bblayers.split()
testlayer = None
for l in layers:
if '~' in l:
diff --git a/poky/meta/lib/oeqa/utils/gitarchive.py b/poky/meta/lib/oeqa/utils/gitarchive.py
index 64448f4..f9c1526 100644
--- a/poky/meta/lib/oeqa/utils/gitarchive.py
+++ b/poky/meta/lib/oeqa/utils/gitarchive.py
@@ -255,7 +255,15 @@
if not commit in revs:
revs[commit] = TestedRev(commit, commit_num, [tag])
else:
- assert commit_num == revs[commit].commit_number, "Commit numbers do not match"
+ if commit_num != revs[commit].commit_number:
+ # Historically we have incorrect commit counts of '1' in the repo so fix these up
+ if int(revs[commit].commit_number) < 5:
+ tags = revs[commit].tags
+ revs[commit] = TestedRev(commit, commit_num, [tags])
+ elif int(commit_num) < 5:
+ pass
+ else:
+ sys.exit("Commit numbers for commit %s don't match (%s vs %s)" % (commit, commit_num, revs[commit].commit_number))
revs[commit].tags.append(tag)
# Return in sorted table