subtree updates: openembedded poky
poky: fb1853c66c..0907793d5e:
Alexander Kanavin (30):
sudo: update 1.9.12p2 -> 1.9.13p2
procps: update 3.3.17 -> 4.0.3
selftest/overlayfs: enable systemd via INIT_MANAGER
systemd: update 252.5 -> 253.1
dpkg: update 1.21.20 -> 1.21.21
libdnf: update 0.69.0 -> 0.70.0
ethtool: update 6.1 -> 6.2
iptables: update 1.8.8 -> 1.8.9
util-macros: do not probe into host triplet when checking manpage section names
encodings: update 1.0.6 -> 1.0.7
font-alias: update 1.0.4 -> 1.0.5
sqlite3: update 3.40.1 -> 3.41.0
enchant2: upgrade 2.3.3 -> 2.3.4
make: upgrade 4.4 -> 4.4.1
vte: upgrade 0.70.2 -> 0.70.3
pango: upgrade 1.50.12 -> 1.50.13
libnotify: upgrade 0.8.1 -> 0.8.2
puzzles: upgrade to latest revision
iproute2: upgrade 6.1.0 -> 6.2.0
bind: upgrade 9.18.11 -> 9.18.12
stress-ng: remove obsolete patch
piglit: upgrade to latest revision
apt: re-enable version check
devtool/upgrade: do not delete the workspace/recipes directory
runqemu: direct mesa to use its own drivers, rather than ones provided by host distro
mesa: allow mesa-native/nativesdk only subject to opengl/vulkan DISTRO_FEATURE
mesa: enable a rich set of drivers for native builds
llvm: allow building libllvm in native builds, subject to PACKAGECONFIG
mesa: do not strip rpaths from dri drivers
mesa: update 22.3.5 -> 23.0.0
Alexandre Belloni (2):
pseudo: Update to pull in fd leak fix
stress-ng: upgrade 0.15.04 -> 0.15.06
Alexis Lothoré (8):
scripts/resulttool: call fixup_ptest_names in regression_common
oeqa/selftest/resulttool: fix ptest filtering tests
oeqa/selftest/resulttool: fix fake data used for testing
scripts/resulttool: fix ptests results containing a non reproducible path
oeqa/selftest/resulttool: add test for error propagation in test name filtering
scripts/resulttool: do not count newly passing tests as regressions
scripts/yocto_testresults_query.py: set proper branches when using resulttool
scripts/yocto_testresults_query.py: fix regression reports for branches with slashes
Andrew Geissler (1):
filemap.py: enforce maximum of 4kb block size
Arturo Buzarra (1):
run-postinsts: Set dependency for ldconfig to avoid boot issues
Bruce Ashfield (12):
perf: fix buildpaths QA warning
lttng-modules: update to v2.13.9
lttng-modules: fix for v6.3+ kernels
linux-yocto/6.1: update to v6.1.15
linux-yocto/5.15: update to v5.15.98
linux-yocto/6.1: update to v6.1.20
linux-yocto/5.15: update to v5.15.103
kernel-devsrc: fix mismatched compiler warning
linux-yocto-dev: bump to v6.3
kernel/kernel-devsrc: powerpc: add elfutils dependency
yocto-bsp/6.1: update reference boards to v6.1.20
yocto-bsp/5.15: update to v5.15.103
Carlos Alberto Lopez Perez (1):
mesa-demos: packageconfig weston should have a dependency on wayland-protocols
Changqing Li (1):
cpio: fix ptest failure
Chen Qi (4):
Revert "systemd-systemctl: Create machine-id with "uninitialized" text in it"
rpm: fix RPM_ETCCONFIGDIR value in SDK
debugedit: add recipe
rpm: add back find-debuginfo support
Clément Péron (2):
qemu: split out qemu-guest-agent, add startup scripts
runqemu: add an option to enable guest-agent virtio device
Daniel Ammann (1):
bitbake: fetch2/sftp: Fix fetching URIs with spaces
Dmitry Baryshkov (1):
mesa: import patch from upstream to fix tools build on musl
Fawzi KHABER (4):
bitbake: doc: ref-variables: add LAYERSERIES_COMPAT to term glossary
bitbake: bitbake-user-manual: update Hello World example
package.bbclass: check packages name conflict in do_package
oeqa/selftest/cases/package.py: adding unittest for package rename conflicts
Frederic Martinsons (7):
cargo.bbclass: use offline mode for building
bitbake: crate.py: authorize crate url with parameters
cargo-update-recipe-crates: generate checksum for each crates
python3-bcrypt: add crates checksums
python3-cryptography: add crates checksums
bitbake: fetch2: Add checksum capability for crate fetcher
bitbake: crate.py: make checksum verification mandatory
Geoffrey GIRY (1):
cve-check: Fix false negative version issue
James R T (1):
bitbake: ConfHandler: Allow the '@' character in variable flag names
Jialing Zhang (5):
class-recipe: add support for loongarch64
Do not remove the -m option for loongarch64
image-uefi: add support for loongarch64
add support for loongarch64
recipes: add support for loongarch64
Jose Quaresma (5):
go: fix some linkshared regression introduced in go 1.20
buildstats-summary: add an option to disable bold
oeqs/selftest: OESelftestTestContext: replace the os.environ after subprocess.check_output
oeqa/selftest: OESelftestTestContext: convert relative to full path when newbuilddir is provided
oeqa/selftest/reproducible: Split different packages from missing packages output
Joshua Watt (1):
runqemu: Fix TypeError when command fails
Kai Kang (1):
grub2: support metadata_csum_seed feature
Kenfe-Mickael Laventure (3):
buildtools-tarball: Handle spaces within user $PATH
toolchain-scripts: Handle spaces within user $PATH
populate_sdk_ext: Handle spaces within user $PATH
Khem Raj (9):
libcomps: Fix callback function prototype for PyCOMPS_hash
rpm: Fix hdr_hash function prototype
binutils: Enable --enable-new-dtags
systemd: Fix musl fix patch
systemd.bbclass: Add /usr/lib/systemd to searchpaths as well
systemtap: Disable dangling-pointer warning
glibc: Disable warnings as errors
vte: Upgrade to 0.72.0
Revert "runqemu: Add workaround for APIC hang on pre 4.15 kernels on qemux86"
Lee Chee Yang (2):
migration-guides: add release-notes for 4.0.8
migration-guides: add release-notes for 4.1.3
Maanya Goenka (1):
create-spdx: fix config build by adding dependency to enable reruns
Mark Asselstine (1):
bitbake: build: Make python output print to stdout when running with -v (verbose)
Mark Hatle (3):
bitbake: wget.py: Add catch TimeoutError exception
bitbake: wget.py: Combine urlopener exceptions
tcf-agent: Update to current version
Markus Volk (1):
gtk4: update 4.8.3 -> 4.10.0
Martin Jansa (22):
file: add few more PACKAGECONFIGs to avoid autodetected deps from host
npm.bbclass: avoid DeprecationWarning with new python
timezone: use 'tz' subdir instead of ${WORKDIR} directly
tzdata: use separate B instead of WORKDIR for zic output
git-submodule-test: disable upstream version check
tzcode-native: fix build with gcc-13 on host
selftest: devtool: set BB_HASHSERVE_UPSTREAM when setting SSTATE_MIRROR
selftest: wic: respect IMAGE_LINK_NAME
selftest: wic: respect IMAGE_LINK_NAME also in test_rawcopy_plugin_qemu
selftest: runqemu: respect IMAGE_LINK_NAME
image-artifact-names.bbclass: add INITRAMFS_IMAGE_NAME from kernel.bbclass
selftest: fitimage.py: respect INITRAMFS_IMAGE_NAME and KERNEL_FIT_LINK_NAME
image-artifact-names: add IMAGE_MACHINE_SUFFIX variable
selftest: gdbserver.py: respect IMAGE_LINK_NAME
selftest: minidebuginfo.py respect IMAGE_LINK_NAME
runqemu: get_first_file() rename cmd* to glob*
selftest: imagefeatures.py: respect IMAGE_LINK_NAME for debugfs and manifest as well
oeqa: loader.py: show warning when skipping selected module and abort if all are skipped
bmap-tools: switch to main branch
python3-scons: upgrade to v4.5.2
selftest: systemd_boot.py: respect IMAGE_LINK_NAME
selftest: eSDK rename to esdk
Martin Larsson (1):
libpam: Remove flex dependency
Michael Halstead (1):
selftest/runtime_test/virgl: Disable for all Rocky Linux
Michael Opdenacker (7):
ref-manual: clarify explanations about feature backfilling
overview-manual: add missing link to BitBake User Manual
manuals: simplify references to the BitBake User Manual
poky.yaml.in, system-requirements.rst: update system requirements
ref-manual: system-requirements.rst: simplify supported distro requirements
ref-manual: variables.rst: update LAYERSERIES_COMPAT
bitbake: bitbake-user-manual: fix links to supported release manuals
Mikko Rapeli (1):
oeqa rtc.py: skip if read-only-rootfs
Ming Liu (1):
linux: inherit pkgconfig in kernel.bbclass
Mingli Yu (4):
mdadm: Fix testcase 06wrmostly
mdadm: fix tests/02lineargrow
mdadm: Fix raid0 tests
mdadm: fix tests/00raid0
Ovidiu Panait (1):
gobject-introspection: inherit python3targetconfig
Peter Marko (2):
go: use go as CVE product for all golang recipe veriants
gcc-shared-source: do not use ${S}/.. in deploy_source_date_epoch
Piotr Łobacz (1):
systemd: fix wrong nobody-group assignment
Randy MacLeod (3):
valgrind: Disable drd/tests/bar_bad ptest
openssl: update from 3.0.8 to 3.1.0
vim: upgrade 9.0.1403 -> 9.0.1429
Richard Purdie (52):
gdb: Fix occasional build failure
staging: Separate out different multiconfig manifests
bitbake: server/xmlrpc: Fix after currentAsyncCommand locking changes
gdb: Mark patch as backport
glibc: Add missing binutils dependency
glibc: Update sstate/equiv versions to clean cache
staging/multilib: Fix manifest corruption
m4/opkg/ethtool/attr/libgpg-error: Add missing bash ptest dependency
openssl: Add missing ptest dependency on openssl-bin
valgrind: Add missing utf-32 gconv dependency for ptests
perl: Add missing procps-ps dependency for ptests
acl/attr: ptest fixes and improvements
m4: Add missing ptest dependency
libmodule-build-perl: Fix ptest dependencies
bc: Fix ptest test output naming
findutils: Fix ptest dependency issue
gawk: Fix ptest dependency
libconvert-asn1-perl: Fix ptest dependencies
libxml-sax-perl: Fix ptest dependencies
babeltrace2: Fix ptest execution in minimal images and add debug info
babeltrace: Fix ptest dependency
lttng-tools: Improve ptest debugging and fix dependencies
gettext: Add missing bash ptest dependency
glibc-tests: Add missing bash ptest dependency
opkg: Add missing python module ptest dependencies
libxml-perl: Add missing perl module ptest dependencies
gstreamer1.0: Add missing gconv ptest dependency
gnutls: Add missing python ptest dependency
busybox: Fix ptest dependencies
selftest/recipetool: Stop test corrupting tinfoil class
oeqa/selftest/sstate: Merge sstate test class with tests themselves
oeqa/selftest/sstate: Move common code to base class
oeqa/selftest/sstate: Split classes to allow more parallelism
base-files: Drop localhost.localdomain from hosts file
core-image-ptest: Switch to BBCLASSEXTEND parallel execution
ptest-packagelists: Simplify ptest list/code
scripts/combo-layer: Fix python deprecation warning
pybootchartui: Fix python syntax issue
pybootchart: Fix extents handling to account for cpu/io/mem pressure changes
matchbox-wm: Update 1.2.2 -> 1.2.3
matchbox-panel-2: Update 2.11 -> 2.12
matchbox-desktop-2: Update 2.2 -> 2.3
matchbox-terminal: Update to latest SRCREV
matchbox-config-gtk: Update to latest SRCREV
matchbox-terminal: Fix PV to match standard format
openssl: Fix reproducibility issue
resulttool: Improve overlapping ptest result reporting
poky-bleeding: Update and rework
bitbake: fetch2: Rename __BBSEENSRCREV -> __BBSRCREV_SEEN
bitbake: fetch2: Add autorev warning when it is set too late
abi_version/sstate: Handle pkgconfig output changes and bump output versions
bitbake: fetch2/local: Mention the value of localpath in failure message
Robert Joslyn (1):
curl: Update from 7.88.1 to 8.0.1
Robert Yang (3):
bitbake: fetch/git: Fix local clone url to make it work with repo
bitbake: cache: Make EXCLUDE_FROM_WORLD boolean
bitbake: bitbake: bitbake-user-manual: Update EXCLUDE_FROM_WORLD
Romuald JEANNE (1):
image_types: fix vname var init in multiubi_mkfs() function
Romuald Jeanne (2):
image_types: fix multiubi var init
oeqa/selftest/imagefeatures: set a test for mutliubi in test_image_fstypes
Ross Burton (35):
vim: add missing pkgconfig inherit
shadow: ignore CVE-2016-15024
epiphany: upgrade to 43.1
manpages: use an intercept to run mandb
oeqa/selftest/imagefeatures: add test for man-db
systemd: add ignore for CVE-2022-4415
meson: remove obsolete RPATH stripping patch
poky: set MAINTAINER clearly
vim: set modified-by to the recipe MAINTAINER
vim: upgrade to 9.0.1403
lib/resulttool: fix typo breaking resulttool log --ptest
resulttool: add log --list-ptest
python3-numpy: add missing dependency for the tests
python3: missing ptest dependencies
python3: add missing -modules dependencies
python3-unittest-automake-output: add new recipe for ptest integration
python3-atomicwrites: use python3-unittest-automake-output
python3-bcrypt: use python3-unittest-automake-output
python3-cryptography: use python3-unittest-automake-output
python3-hypothesis: use python3-unittest-automake-output
python3-jinja2: use python3-unittest-automake-output
python3-markupsafe: use python3-unittest-automake-output
python3-more-itertools: use python3-unittest-automake-output
python3-pluggy: use python3-unittest-automake-output
python3-pyasn1: : use python3-unittest-automake-output
python3-pytz: use python3-unittest-automake-output
python3-wcwidth: use python3-unittest-automake-output
python3-webcolors: use python3-unittest-automake-output
python3-jsonpointer: rewrite testing
scripts: add buildstats-summary
quilt: fix non-deterministic ownership in ptest package
scripts/lib/buildstats: handle top-level build_stats not being complete
go: fix CVE-2023-2453
libunwind: fix compile failures on 32-bit arm with Clang 16
tzdata: upgrade to 2023c
Siddharth Doshi (2):
OpenSSL: Security fix for CVE-2023-0464
openssh: upgrade 9.2p1 -> 9.3p1
Sudip Mukherjee (3):
libgit2: update license information
libgit2: upgrade to v1.6.3
cracklib: upgrade to v2.9.10
Sundeep KOKKONDA (1):
rust: added missing runtime dependencies to run rust on target
Thomas Roos (1):
qemuboot-x86.inc: allow overwrite of QB_CPU
Tim Orling (4):
cracklib: update github branch to 'main'
python3-wheel: upgrade 0.38.4 -> 0.40.0
bitbake: toaster: update gen_fixtures.py for mickledore
bitbake: toaster: update fixtures for mickledore
Tom Hochstein (2):
meson: Fix wrapper handling of implicit setup command
oeqa/sdk: Improve Meson test
Trevor Woerner (3):
cups: use BUILDROOT instead of DESTDIR
cups: check PACKAGECONFIG for pam feature
cups: add/fix web interface packaging
Ulrich Ölmann (1):
base: fix typos
Wang Mingyu (24):
autoconf-archive: upgrade 2022.09.03 -> 2023.02.20
font-util: upgrade 1.3.3 -> 1.4.0
harfbuzz: upgrade 7.0.1 -> 7.1.0
iso-codes: upgrade 4.12.0 -> 4.13.0
libmicrohttpd: upgrade 0.9.75 -> 0.9.76
meson: upgrade 1.0.0 -> 1.0.1
glib-2.0: upgrade 2.74.5 -> 2.74.6
python3-cryptography(-vectors): upgrade 39.0.1 -> 39.0.2
python3-setuptools: upgrade 67.3.3 -> 67.4.0
python3-git: upgrade 3.1.30 -> 3.1.31
repo: upgrade 2.31 -> 2.32
strace: upgrade 6.1 -> 6.2
stress-ng: upgrade 0.15.03 -> 0.15.04
lua: Fix install conflict when enable multilib.
vala: Fix install conflict when enable multilib.
dhcpcd: Fix install conflict when enable multilib.
grep: upgrade 3.8 -> 3.9
python3-setuptools: upgrade 67.4.0 -> 67.6.0
python3-poetry-core: upgrade 1.5.1 -> 1.5.2
python3-pytest: upgrade 7.2.1 -> 7.2.2
python3-scons: upgrade 4.4.0 -> 4.5.1
python3-testtools: upgrade 2.5.0 -> 2.6.0
python3-urllib3: upgrade 1.26.14 -> 1.26.15
xcb-proto: Fix install conflict when enable multilib.
Xiangyu Chen (3):
sudo: update 1.9.12p2 -> 1.9.13p3
rng-tools: splitting the rng-tools systemd/sysvinit serivce as a package
package: moving field data process before variable process in process_pkgconfig
Yash Shinde (1):
binutils: Fix CVE-2023-25586
Yoann Congal (1):
ref-manual: Add info on "mixin" layers
Yureka Lilian (1):
systemd: rebase musl patches
Zang Ruochen (1):
maintainers.inc: Modify email address
Zoltan Boszormenyi (2):
piglit: Fix build time dependency
pypi.bbclass: Set SRC_URI downloadfilename with an optional prefix
meta-openembedded: a9b2d1303b..17243e70c8:
AYP (1):
packagegroup-meta-networking: remove ntpdate
Andreas Helbech Kleist (1):
cli11: enable native/nativesdk builds
Archana Polampalli (1):
Nodejs: add missing run_ptest script
Bartosz Golaszewski (3):
libgpiod: update to v2.0
python3-gpiod: update to v2.0
reboot-mode: new package
Changqing Li (5):
rabbitmq-c: upgrade 0.11.0 -> 0.13.0
sg3-utils: upgrade 1.45 -> 1.47
liblockfile: upgrade 1.14 -> 1.17
syslog-ng: upgrade 3.38.1 -> 4.0.1
redis: upgrade 7.0.9 -> 7.0.10
Chen Pei (1):
meta-perl-base:fix SUMMARY
Christophe Vu-Brugier (2):
exfatprogs: add new recipe
exfat-utils: remove recipe
Clément Péron (1):
python3-click-repl: add mising prompt-toolkit runtime dependency
Etienne Cordonnier (8):
android-tools 10: import version from meta-clang
android-tools 10: remove dead code
android-tools 10: move adbd to its own package
android-tools 10: Add flag to enable adbd service
android-tools 10: various fixes
android-tools 10: port some patches from version 5
android-tools: fix TMPDIR
android-tools: update to 29.0.6.r14
Fabio Estevam (2):
iperf3: Update to 3.13
ettercap: Update Upstream-Status
Frederic Martinsons (2):
uutils-coreutils: Add crates checksum and use cargo-update-recipes-crates
python3-pyruvate: Add crates checksum and use cargo-update-recipes-crates
Jan Feemers (1):
nodejs: package-split between nodejs and nodejs-npm
Joe Slater (3):
libidn: update to 1.41
re2: move to version 2023-03-01
libreport: update to version 2.17.8
Justin Bronder (1):
tk: inherit pkgconfig
Khem Raj (41):
gnome-commander: Upgrade to 1.16.0 release
python3-lru-dict: Fix function pointer mismatch
hdf5: Upgrade to 1.14.0
python3-h5py: Upgrade to 3.8.0
pkcs11-helper: Update to latest tip of trunk
glm: Update to tip of trunk
libsdl2-ttf: Upgrade to 2.20.2
libsdl-image: Fix build with clang16
gphoto2: Fix build with clang16 + musl
pmdk: Upgrade to 1.12.1
pndk: Add missing dependency on native cmake
libx86-1: Fix build with clang16
mongodb: Upgrade to 4.4.19
glog: Disable 64bit atomics on rv32
mongodb: Fix type mitmatch found with clang16
gegl: Remove openmp dep for rv32 and ppc32
gnome-desktop: Make seccomp dependency optional for rv32
nodejs: Upgrade to 18.14.2
libx86-1: Fix build on 32bit x86
vlc: Upgrade to 3.0.18
redis: Upgrade 6.x recipe to 6.2.11
redis: Upgrade 7.x to 7.0.9
packagegroup-meta-multimedia: mycroft needs pulseaudio
pahole: Upgrade to tip of trunk
sg3-utils: Fix build with musl
gsoap: Upgrade to 2.8.126
waylandpp: Just enforce opengl for target recipe
freeglut: Drop -fcommon and add -Wno-implicit-function-declaration
nodejs: Depend on file-native
lirc: Fix build with usrmerge feature building on ubuntu hosts
rp-pppoe: Define _GNU_SOURCE
libssh: Fix build with clang16
packagegroup-meta-multimedia: Remove library only packages from rdeps
packagegroup-meta-oe: Remove mongodb from rdep list of packagegroup
packagegroup-meta-networking: Set PACKAGE_ARCH = "${MACHINE_ARCH}"
cmocka: Check for previous declaration of uintptr_t
ettercap: Fix build with libcurl >= 8
fluentbit: Disable upstart scripts
xfstests: Fix build with musl
nautilus: Fix build with clang and drop unused patch
gimp: Update to 2.10.34
Lei Maohui (2):
libiodbc: Install *.h files to /usr/include/iodbc to fix conflicts error with unixodbc reference to ubuntu:
pgpool2: Added a new recipe.
Manoj Saun (1):
postgresql: fix ptest failure of sysviews test
Markus Volk (13):
dav1d: add recipe
libavif: add recipe
xdg-dbus-proxy: add recipe
libnice: upgrade 0.1.18 -> 0.1.21
pipewire: update 0.3.66 -> 0.3.67
nv-codec-headers: update 11.1.5.2 -> 12.0.16.0
wireplumber: update 0.4.13 -> 0.4.14
libcamera: update 0.0.1 -> 0.0.4
xdg-desktop-portal: fix bwrap path
gvfs: add more PACKAGECONFIGS
evolution-data-server: update 3.46.3 -> 3.48.0
gtksourceview5: update 5.6.1 -> 5.7.1
libgtop: update 2.40.0 -> 2.41.1
Mingli Yu (4):
php: Upgrade to 8.1.16
opencv: Upgrade to 4.7.0
crash: Upgrade to 8.0.2
mcelog: Upgrade to v191
Peter Johennecken (1):
fluentbit: change of download name
Peter Marko (1):
dnsmasq: fix CVE-2023-28450
Petr Gotthard (4):
openvpn: upgrade 2.6.0 -> 2.6.1
libqmi: upgrade 1.32.2 -> 1.32.4
libmbim: upgrade 1.28.2 -> 1.28.4
modemmanager: upgrade 1.20.4 -> 1.20.6
Randy MacLeod (4):
rsyslog: update from 8.2212.0 to 8.2302.0
rsyslog: add disabled PACKAGECONFIG to drop capabilities
librelp: make inline errors be warnings in debug build
cmocka: update from 1.1.5+ to 1.1.7
Sakib Sajal (1):
libuser: upgrade v0.63 -> v0.64
Stefan Ghinea (1):
redis: fix service redis-server restart not working under sysvinit
Trevor Woerner (3):
cups-filters: remove duplicate configure option
cups-filters: fix ghostscript handling
hplip: add runtime dependency on ghostscript
Wang Mingyu (136):
logcheck: upgrade 1.4.0 -> 1.4.2
byacc: upgrade 20230201 -> 20230219
bubblewrap: upgrade 0.7.0 -> 0.8.0
bats: upgrade 1.8.2 -> 1.9.0
cryptsetup: upgrade 2.6.0 -> 2.6.1
c-ares: upgrade 1.18.1 -> 1.19.0
cukinia: upgrade 0.6.0 -> 0.6.1
python3-coverage: upgrade 7.2.0 -> 7.2.1
python3-decouple: upgrade 3.7 -> 3.8
python3-aiohue: upgrade 4.6.1 -> 4.6.2
python3-fastnumbers: upgrade 4.0.1 -> 5.0.1
python3-haversine: upgrade 2.7.0 -> 2.8.0
python3-google-auth: upgrade 2.16.1 -> 2.16.2
python3-google-api-python-client: upgrade 2.79.0 -> 2.80.0
python3-imageio: upgrade 2.25.1 -> 2.26.0
python3-ipython: upgrade 8.10.0 -> 8.11.0
python3-nocasedict: upgrade 1.1.0 -> 2.0.0
python3-natsort: upgrade 8.2.0 -> 8.3.1
python3-nocaselist: Upgrade 1.1.0 -> 1.1.1
python3-protobuf: upgrade 4.21.12 -> 4.22.0
python3-pydicti: upgrade 1.2.0 -> 1.2.1
python3-watchdog: upgrade 2.3.0-> 2.3.1
python3-pymisp: upgrade 2.4.168 -> 2.4.168.1
python3-wrapt: upgrade 1.14.1 -> 1.15.0
apache2: upgrade 2.4.55 -> 2.4.56
logwatch: upgrade 7.7 -> 7.8
libvpx: upgrade 1.12.0 -> 1.13.0
libjcat: upgrade 0.1.12 -> 0.1.13
librsync: upgrade 2.3.2 -> 2.3.4
lcms: upgrade 2.14 -> 2.15
gsoap: upgrade 2.0.106 -> 2.0.124
hwdata: upgrade 0.367 -> 0.368
ctags: upgrade 6.0.20230212.0 -> 6.0.20230305.0
freerdp: upgrade 2.9.0 -> 2.10.0
python3-mpmath: upgrade 1.2.1 -> 1.3.0
python3-alembic: upgrade 1.9.4 -> 1.10.2
python3-astroid: upgrade 2.14.2 -> 2.15.0
python3-charset-normalizer: upgrade 3.0.1 -> 3.1.0
python3-argcomplete upgrade 2.0.0 -> 2.1.1
python3-fastjsonschema: upgrade 2.16.2 -> 2.16.3
python3-protobuf: upgrade 4.22.0 -> 4.22.1
python3-xmlschema: upgrade 2.2.1 -> 2.2.2
python3-tqdm: upgrade 4.64.1 -> 4.65.0
python3-pyexpect: upgrade 1.0.21 -> 1.0.22
python3-pywbem: upgrade 1.6.0 -> 1.6.1
stunnel: upgrade 5.67 -> 5.69
rp-pppoe: upgrade 3.14 -> 3.15
nbdkit: upgrade 1.33.7 -> 1.33.10
php: update 8.1.16 -> 8.2.3
tcsh: upgrade 6.22.04 -> 6.24.07
monit: upgrade 5.32.0 -> 5.33.0
poppler: upgrade 23.02.0 -> 23.03.0
satyr: upgrade 0.40 -> 0.42
nginx: upgrade 1.20.1 -> 1.23.3
raptor2: upgrade 2.0.15 -> 2.0.16
spawn-fcgi: upgrade 1.6.4 -> 1.6.5
unixodbc: Fix install conflict when enable multilib.
xdebug: upgrade 3.1.1 -> 3.2.0
postgresql: Fix install conflict when enable multilib.
networkmanager: upgrade 1.42.0 -> 1.42.4
rdma-core: upgrade 44.0 -> 45.0
python3-gcovr: upgrade 5.2 -> 6.0
makeself: upgrade 2.4.5 -> 2.5.0
ctags: upgrade 6.0.20230305.0 -> 6.0.20230312.0
python3-gmqtt: upgrade 0.6.11 -> 0.6.12
python3-google-api-python-client: upgrade 2.80.0 -> 2.81.0
python3-msgpack: upgrade 1.0.4 -> 1.0.5
python3-portion: upgrade 2.3.1 -> 2.4.0
python3-paramiko: upgrade 3.0.0 -> 3.1.0
python3-openpyxl: upgrade 3.1.1 -> 3.1.2
python3-pymisp: upgrade 2.4.168.1 -> 2.4.169
python3-pydantic: upgrade 1.10.5 -> 1.10.6
python3-pytest-xdist: upgrade 3.2.0 -> 3.2.1
python3-pymodbus: upgrade 3.1.3 -> 3.2.0
python3-smpplib: upgrade 2.2.1 -> 2.2.2
python3-twitter: upgrade 4.12.1 -> 4.13.0
python3-unidiff: upgrade 0.7.4 -> 0.7.5
python3-xlsxwriter: upgrade 3.0.8 -> 3.0.9
python3-pykickstart: upgrade 3.44 -> 3.45
python3-web3: upgrade 5.31.3 -> 5.31.4
python3-pymodbus: upgrade 3.2.0 -> 3.2.1
python3-geojson: upgrade 2.5.0 -> 3.0.1
python3-sentry-sdk: upgrade 1.15.0 -> 1.17.0
python3-apt: upgrade 2.5.2 -> 2.5.3
python3-argcomplete: upgrade 2.1.1 -> 3.0.0
python3-cmake: upgrade 3.25.2 -> 3.26.0
python3-coverage: upgrade 7.2.1 -> 7.2.2
python3-eth-typing: upgrade 3.2.0 -> 3.3.0
python3-daemon: upgrade 2.3.2 -> 3.0.1
python3-engineio: upgrade 4.3.4 -> 4.4.0
python3-flask-socketio: upgrade 5.3.2 -> 5.3.3
python3-pykickstart: upgrade 3.45 -> 3.47
python3-pymisp: upgrade 2.4.169 -> 2.4.169.2
python3-simplejson: upgrade 3.18.3 -> 3.18.4
python3-rapidjson: upgrade 1.9 -> 1.10
python3-socketio: upgrade 5.7.2 -> 5.8.0
python3-sqlalchemy: upgrade 2.0.4 -> 2.0.7
python3-tzlocal: upgrade 4.2 -> 4.3
python3-typeguard: upgrade 2.13.3 -> 3.0.1
python3-web3: upgrade 5.31.4 -> 6.0.0
python3-zeroconf: upgrade 0.47.3 -> 0.47.4
tracker: upgrade 3.4.2 -> 3.5.0
xterm: upgrade 378 -> 379
python3-zopeinterface: upgrade 5.5.2 -> 6.0
xf86-video-amdgpu: upgrade 22.0.0 -> 23.0.0
libclass-method-modifiers-perl: upgrade 2.13 -> 2.15
libcompress-raw-bzip2-perl: upgrade 2.201 -> 2.204
libcompress-raw-lzma-perl: upgrade 2.201 -> 2.204
libcompress-raw-zlib-perl: upgrade 2.202 -> 2.204
libio-compress-lzma-perl: upgrade 2.201 -> 2.204
libio-compress-perl: upgrade 2.201 -> 2.204
libtest-deep-perl: upgrade 1.130 -> 1.204
opencl-headers: upgrade 2022.09.30 -> 2023.02.06
php: upgrade 8.2.3 -> 8.2.4
googletest: upgrade 1.12.1 -> 1.13.0
consolation: upgrade 0.0.8 -> 0.0.9
can-utils: upgrade 2021.08.0 -> 2023.03
nbdkit: upgrade 1.33.10 -> 1.33.11
adcli: upgrade 0.9.0 -> 0.9.2
gnome-chess: upgrade 43.1 -> 43.2
xfstests: upgrade 2023.01.01 -> 2023.03.05
gnome-backgrounds: upgrade 43 -> 44.0
libwacom: upgrade 2.5.0 -> 2.6.0
libass: upgrade 0.17.0 -> 0.17.1
libnet-dns-perl: upgrade 1.36 -> 1.37
libadwaita: upgrade 1.2.1 -> 1.3.1
libcgi-perl: upgrade 4.55 -> 4.56
libpeas: upgrade 1.34.0 -> 1.36.0
gvfs: upgrade 1.50.3 -> 1.50.4
gnome-system-monitor: upgrade 42.0 -> 44.0
nautilus: upgrade 43.2 -> 44.0
babl: upgrade 0.1.98 -> 0.1.102
ctags: upgrade 6.0.20230312.0 -> 6.0.20230319.0
folks: upgrade 0.15.5 -> 0.15.6
gegl: upgrade 0.4.40 -> 0.4.42
gnome-autoar: upgrade 0.4.3 -> 0.4.4
Xiangyu Chen (2):
libbpf: upgrade 0.8.0 -> 1.1.0
abseil-cpp: upgrade 20221014.0 -> 20230125.1
Yi Zhao (25):
audit: upgrade 3.0.9 -> 3.1
audit: drop version 2.8.5
frr: add UPSTREAM_CHECK_GITTAGREGEX
quagga: drop recipe
libssh: upgrade 0.8.9 -> 0.10.4
strongswan: 5.9.9 -> 5.9.10
libnfnetlink: upgrade 1.0.1 -> 1.0.2
libnetfilter-cthelper: upgrade 1.0.0 -> 1.0.1
libnetfilter-cttimeout: upgrade 1.0.0 -> 1.0.1
traceroute: upgrade 2.1.1 -> 2.1.2
freeradius: add UPSTREAM_CHECK_GITTAGREGEX
libyang: fix ptest
libyang: upgrade 2.0.194 -> 2.1.30
frr: support more arches
netplan: add missing runtime dependencies
python3-rich: add recipe
packagegroup-meta-networking: add frr
packagegroup-meta-oe: enable build libyang on riscv32/64
libnftnl: upgrade 1.2.4 -> 1.2.5
libldb: upgrade 2.6.1 -> 2.7.1
samba: upgrade 4.17.5 -> 4.18.0
libssh: add ptest
mbedtls: add ptest
libyang: upgrade 2.1.30 -> 2.1.55
tcpreplay: 4.4.2 -> 4.4.3
Yoann Congal (4):
libusb-compat: Revert "libusb-compat: move libraries to base_libdir"
libusb-compat: upgrade sources to fix -native build
libusb-compat: add simple ptest (example programs)
libusb-compat: RDEPENDS on libusb1
Yue Tao (1):
Introduce python3-trustme to fix ptest error of python3-requests-toolbelt
Zhixiong Chi (2):
ntp: drop the deprecated ntpdate
python3-betamax: fix ptest failture of fixture and record modes
Zoltán Böszörményi (13):
opencl-icd-loader: Add RPROVIDES:${PN} = "virtual/opencl-icd"
ocl-icd: Add PROVIDES and RPROVIDES for virtual/opencl-icd
meta-oe/conf/layer.conf: Add PREFERRED_[R]PROVIDER_virtual/opencl-icd
python3-ninja: New recipe
python3-cmake: New recipe
python3-scikit-build: New recipe
python3-pyproject-metadata: New recipe
opencv: Support OpenVINO
python3-executing: New recipe
python3-pure-eval: New recipe
python3-stack-data: New recipe
python3-ipython: Add missing dependency
opencv: Fix PACKAGECONFIG[openvino]
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: Idbfcd5f4c03ed5bd9c72558714edbe0200495aad
diff --git a/poky/meta/lib/oeqa/core/context.py b/poky/meta/lib/oeqa/core/context.py
index 2abe353..9313271 100644
--- a/poky/meta/lib/oeqa/core/context.py
+++ b/poky/meta/lib/oeqa/core/context.py
@@ -81,7 +81,7 @@
def runTests(self, processes=None, skips=[]):
self.runner = self.runnerClass(self, descriptions=False, verbosity=2)
- # Dinamically skip those tests specified though arguments
+ # Dynamically skip those tests specified though arguments
self.skipTests(skips)
self._run_start_time = time.time()
diff --git a/poky/meta/lib/oeqa/core/loader.py b/poky/meta/lib/oeqa/core/loader.py
index 1197821..f25b597 100644
--- a/poky/meta/lib/oeqa/core/loader.py
+++ b/poky/meta/lib/oeqa/core/loader.py
@@ -37,7 +37,7 @@
if path:
raise ImportError("Duplicated %s module found in %s" % (module, path))
-def _built_modules_dict(modules):
+def _built_modules_dict(modules, logger):
modules_dict = {}
if modules == None:
@@ -48,6 +48,9 @@
# characters, whereas class names do
m = re.match(r'^([0-9a-z_.]+)(?:\.(\w[^.]*)(?:\.([^.]+))?)?$', module, flags=re.ASCII)
if not m:
+ logger.warn("module '%s' was skipped from selected modules, "\
+ "because it doesn't match with module name assumptions: "\
+ "package and module names do not contain upper case characters, whereas class names do" % module)
continue
module_name, class_name, test_name = m.groups()
@@ -58,6 +61,8 @@
modules_dict[module_name][class_name] = []
if test_name and test_name not in modules_dict[module_name][class_name]:
modules_dict[module_name][class_name].append(test_name)
+ if modules and not modules_dict:
+ raise OEQATestNotFound("All selected modules were skipped, this would trigger selftest with all tests and -r ignored.")
return modules_dict
@@ -71,7 +76,7 @@
*args, **kwargs):
self.tc = tc
- self.modules = _built_modules_dict(modules)
+ self.modules = _built_modules_dict(modules, tc.logger)
self.tests = tests
self.modules_required = modules_required
diff --git a/poky/meta/lib/oeqa/runtime/cases/rtc.py b/poky/meta/lib/oeqa/runtime/cases/rtc.py
index b2159b1..6e45c5d 100644
--- a/poky/meta/lib/oeqa/runtime/cases/rtc.py
+++ b/poky/meta/lib/oeqa/runtime/cases/rtc.py
@@ -5,6 +5,7 @@
#
from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.depends import OETestDepends
+from oeqa.core.decorator.data import skipIfFeature
from oeqa.runtime.decorator.package import OEHasPackage
import re
@@ -21,12 +22,14 @@
self.logger.debug('Starting systemd-timesyncd daemon')
self.target.run('systemctl enable --now --runtime systemd-timesyncd')
+ @skipIfFeature('read-only-rootfs',
+ 'Test does not work with read-only-rootfs in IMAGE_FEATURES')
@OETestDepends(['ssh.SSHTest.test_ssh'])
@OEHasPackage(['coreutils', 'busybox'])
def test_rtc(self):
(status, output) = self.target.run('hwclock -r')
self.assertEqual(status, 0, msg='Failed to get RTC time, output: %s' % output)
-
+
(status, current_datetime) = self.target.run('date +"%m%d%H%M%Y"')
self.assertEqual(status, 0, msg='Failed to get system current date & time, output: %s' % current_datetime)
@@ -37,7 +40,6 @@
(status, output) = self.target.run('date %s' % current_datetime)
self.assertEqual(status, 0, msg='Failed to reset system date & time, output: %s' % output)
-
+
(status, output) = self.target.run('hwclock -w')
self.assertEqual(status, 0, msg='Failed to reset RTC time, output: %s' % output)
-
diff --git a/poky/meta/lib/oeqa/sdk/cases/buildepoxy.py b/poky/meta/lib/oeqa/sdk/cases/buildepoxy.py
index ee515be..147ee3e 100644
--- a/poky/meta/lib/oeqa/sdk/cases/buildepoxy.py
+++ b/poky/meta/lib/oeqa/sdk/cases/buildepoxy.py
@@ -35,7 +35,7 @@
self.assertTrue(os.path.isdir(dirs["source"]))
os.makedirs(dirs["build"])
- log = self._run("meson -Degl=no -Dglx=no -Dx11=false {build} {source}".format(**dirs))
+ log = self._run("meson --warnlevel 1 -Degl=no -Dglx=no -Dx11=false {build} {source}".format(**dirs))
# Check that Meson thinks we're doing a cross build and not a native
self.assertIn("Build type: cross build", log)
self._run("ninja -C {build} -v".format(**dirs))
diff --git a/poky/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py b/poky/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py
index 5f1c8df..2c9584d 100644
--- a/poky/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py
+++ b/poky/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py
@@ -9,7 +9,7 @@
import oeqa.utils.ftools as ftools
from oeqa.utils.commands import runCmd, bitbake, get_bb_var
-from oeqa.selftest.cases.sstate import SStateBase
+from oeqa.selftest.cases.sstatetests import SStateBase
class RebuildFromSState(SStateBase):
diff --git a/poky/meta/lib/oeqa/selftest/cases/cve_check.py b/poky/meta/lib/oeqa/selftest/cases/cve_check.py
index ac47af1..9534c97 100644
--- a/poky/meta/lib/oeqa/selftest/cases/cve_check.py
+++ b/poky/meta/lib/oeqa/selftest/cases/cve_check.py
@@ -54,6 +54,25 @@
self.assertTrue( result ,msg="Failed to compare version with suffix '1.0_patch2' < '1.0_patch3'")
+ def test_convert_cve_version(self):
+ from oe.cve_check import convert_cve_version
+
+ # Default format
+ self.assertEqual(convert_cve_version("8.3"), "8.3")
+ self.assertEqual(convert_cve_version(""), "")
+
+ # OpenSSL format version
+ self.assertEqual(convert_cve_version("1.1.1t"), "1.1.1t")
+
+ # OpenSSH format
+ self.assertEqual(convert_cve_version("8.3_p1"), "8.3p1")
+ self.assertEqual(convert_cve_version("8.3_p22"), "8.3p22")
+
+ # Linux kernel format
+ self.assertEqual(convert_cve_version("6.2_rc8"), "6.2-rc8")
+ self.assertEqual(convert_cve_version("6.2_rc31"), "6.2-rc31")
+
+
def test_recipe_report_json(self):
config = """
INHERIT += "cve-check"
diff --git a/poky/meta/lib/oeqa/selftest/cases/devtool.py b/poky/meta/lib/oeqa/selftest/cases/devtool.py
index 86014d2..81d0201 100644
--- a/poky/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/poky/meta/lib/oeqa/selftest/cases/devtool.py
@@ -276,6 +276,7 @@
cls.sstate_conf = 'SSTATE_DIR = "%s"\n' % cls.devtool_sstate
cls.sstate_conf += ('SSTATE_MIRRORS += "file://.* file:///%s/PATH"\n'
% cls.original_sstate)
+ cls.sstate_conf += ('BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687"\n')
@classmethod
def tearDownClass(cls):
diff --git a/poky/meta/lib/oeqa/selftest/cases/eSDK.py b/poky/meta/lib/oeqa/selftest/cases/esdk.py
similarity index 100%
rename from poky/meta/lib/oeqa/selftest/cases/eSDK.py
rename to poky/meta/lib/oeqa/selftest/cases/esdk.py
diff --git a/poky/meta/lib/oeqa/selftest/cases/fitimage.py b/poky/meta/lib/oeqa/selftest/cases/fitimage.py
index 1570d54..7bc171e 100644
--- a/poky/meta/lib/oeqa/selftest/cases/fitimage.py
+++ b/poky/meta/lib/oeqa/selftest/cases/fitimage.py
@@ -5,7 +5,7 @@
#
from oeqa.selftest.case import OESelftestTestCase
-from oeqa.utils.commands import runCmd, bitbake, get_bb_var
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars
import os
import re
@@ -42,15 +42,14 @@
self.write_config(config)
# fitImage is created as part of linux recipe
- bitbake("virtual/kernel")
+ image = "virtual/kernel"
+ bitbake(image)
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'INITRAMFS_IMAGE_NAME', 'KERNEL_FIT_LINK_NAME'], image)
- image_type = "core-image-minimal"
- deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
- machine = get_bb_var('MACHINE')
- fitimage_its_path = os.path.join(deploy_dir_image,
- "fitImage-its-%s-%s-%s" % (image_type, machine, machine))
- fitimage_path = os.path.join(deploy_dir_image,
- "fitImage-%s-%s-%s" % (image_type, machine, machine))
+ fitimage_its_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'],
+ "fitImage-its-%s-%s" % (bb_vars['INITRAMFS_IMAGE_NAME'], bb_vars['KERNEL_FIT_LINK_NAME']))
+ fitimage_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'],
+ "fitImage-%s-%s" % (bb_vars['INITRAMFS_IMAGE_NAME'], bb_vars['KERNEL_FIT_LINK_NAME']))
self.assertTrue(os.path.exists(fitimage_its_path),
"%s image tree source doesn't exist" % (fitimage_its_path))
@@ -123,15 +122,14 @@
self.write_config(config)
# fitImage is created as part of linux recipe
- bitbake("virtual/kernel")
+ image = "virtual/kernel"
+ bitbake(image)
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'KERNEL_FIT_LINK_NAME'], image)
- image_type = "core-image-minimal"
- deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
- machine = get_bb_var('MACHINE')
- fitimage_its_path = os.path.join(deploy_dir_image,
- "fitImage-its-%s" % (machine,))
- fitimage_path = os.path.join(deploy_dir_image,
- "fitImage-%s.bin" % (machine,))
+ fitimage_its_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'],
+ "fitImage-its-%s" % (bb_vars['KERNEL_FIT_LINK_NAME']))
+ fitimage_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'],
+ "fitImage-%s.bin" % (bb_vars['KERNEL_FIT_LINK_NAME']))
self.assertTrue(os.path.exists(fitimage_its_path),
"%s image tree source doesn't exist" % (fitimage_its_path))
diff --git a/poky/meta/lib/oeqa/selftest/cases/gdbserver.py b/poky/meta/lib/oeqa/selftest/cases/gdbserver.py
index 3621d9c..9da97ae 100644
--- a/poky/meta/lib/oeqa/selftest/cases/gdbserver.py
+++ b/poky/meta/lib/oeqa/selftest/cases/gdbserver.py
@@ -10,13 +10,12 @@
import concurrent.futures
from oeqa.selftest.case import OESelftestTestCase
-from oeqa.utils.commands import bitbake, get_bb_var, runqemu, runCmd
+from oeqa.utils.commands import bitbake, get_bb_var, get_bb_vars , runqemu, runCmd
class GdbServerTest(OESelftestTestCase):
def test_gdb_server(self):
target_arch = self.td["TARGET_ARCH"]
target_sys = self.td["TARGET_SYS"]
- deploy_dir = get_bb_var("DEPLOY_DIR_IMAGE")
features = """
IMAGE_GEN_DEBUGFS = "1"
@@ -34,11 +33,13 @@
r = runCmd("%s --version" % gdb_binary, native_sysroot=native_sysroot, target_sys=target_sys)
self.assertEqual(r.status, 0)
self.assertIn("GNU gdb", r.output)
+ image = 'core-image-minimal'
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME'], image)
with tempfile.TemporaryDirectory(prefix="debugfs-") as debugfs:
- filename = os.path.join(deploy_dir, "core-image-minimal-%s-dbg.tar.bz2" % self.td["MACHINE"])
+ filename = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s-dbg.tar.bz2" % bb_vars['IMAGE_LINK_NAME'])
shutil.unpack_archive(filename, debugfs)
- filename = os.path.join(deploy_dir, "core-image-minimal-%s.tar.bz2" % self.td["MACHINE"])
+ filename = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s.tar.bz2" % bb_vars['IMAGE_LINK_NAME'])
shutil.unpack_archive(filename, debugfs)
with runqemu("core-image-minimal", runqemuparams="nographic") as qemu:
diff --git a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py
index af38150..d31b43d 100644
--- a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py
+++ b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py
@@ -6,7 +6,7 @@
from oeqa.selftest.case import OESelftestTestCase
from oeqa.core.decorator import OETestTag
-from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, runqemu
from oeqa.utils.sshcontrol import SSHControl
import glob
import os
@@ -102,12 +102,11 @@
features = 'IMAGE_FSTYPES += " ext4 ext4.bmap ext4.bmap.gz"'
self.write_config(features)
- image_name = 'core-image-minimal'
- bitbake(image_name)
+ image = 'core-image-minimal'
+ bitbake(image)
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME'], image)
- deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
- link_name = get_bb_var('IMAGE_LINK_NAME', image_name)
- image_path = os.path.join(deploy_dir_image, "%s.ext4" % link_name)
+ image_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s.ext4" % bb_vars['IMAGE_LINK_NAME'])
bmap_path = "%s.bmap" % image_path
gzip_path = "%s.gz" % bmap_path
@@ -120,8 +119,8 @@
image_stat = os.stat(image_path)
self.assertGreater(image_stat.st_size, image_stat.st_blocks * 512)
- # check if the resulting gzip is valid
- self.assertTrue(runCmd('gzip -t %s' % gzip_path))
+ # check if the resulting gzip is valid, --force is needed in case gzip_path is a symlink
+ self.assertTrue(runCmd('gzip --test --force %s' % gzip_path))
def test_hypervisor_fmts(self):
"""
@@ -139,14 +138,13 @@
features += 'IMAGE_FSTYPES += "ext4.%s"\n' % itype
self.write_config(features)
- image_name = 'core-image-minimal'
- bitbake(image_name)
+ image = 'core-image-minimal'
+ bitbake(image)
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME'], image)
- deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
- link_name = get_bb_var('IMAGE_LINK_NAME', image_name)
for itype in img_types:
- image_path = os.path.join(deploy_dir_image, "%s.ext4.%s" %
- (link_name, itype))
+ image_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s.ext4.%s" %
+ (bb_vars['IMAGE_LINK_NAME'], itype))
# check if result image file is in deploy directory
self.assertTrue(os.path.exists(image_path))
@@ -177,13 +175,11 @@
features = 'IMAGE_FSTYPES += "%s %s.sha256sum"' % (conv, conv)
self.write_config(features)
- image_name = 'core-image-minimal'
- bitbake(image_name)
-
- deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
- link_name = get_bb_var('IMAGE_LINK_NAME', image_name)
- image_path = os.path.join(deploy_dir_image, "%s.%s" %
- (link_name, conv))
+ image = 'core-image-minimal'
+ bitbake(image)
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME'], image)
+ image_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s.%s" %
+ (bb_vars['IMAGE_LINK_NAME'], conv))
# check if resulting image is in the deploy directory
self.assertTrue(os.path.exists(image_path))
@@ -191,7 +187,7 @@
# check if the resulting sha256sum agrees
self.assertTrue(runCmd('cd %s;sha256sum -c %s.%s.sha256sum' %
- (deploy_dir_image, link_name, conv)))
+ (bb_vars['DEPLOY_DIR_IMAGE'], bb_vars['IMAGE_LINK_NAME'], conv)))
def test_image_fstypes(self):
"""
@@ -200,10 +196,10 @@
Product: oe-core
Author: Ed Bartosh <ed.bartosh@linux.intel.com>
"""
- image_name = 'core-image-minimal'
+ image = 'core-image-minimal'
- all_image_types = set(get_bb_var("IMAGE_TYPES", image_name).split())
- skip_image_types = set(('container', 'elf', 'f2fs', 'multiubi', 'tar.zst', 'wic.zst', 'squashfs-lzo'))
+ all_image_types = set(get_bb_var("IMAGE_TYPES", image).split())
+ skip_image_types = set(('container', 'elf', 'f2fs', 'tar.zst', 'wic.zst', 'squashfs-lzo'))
img_types = all_image_types - skip_image_types
config = """
@@ -211,17 +207,31 @@
WKS_FILE = "wictestdisk.wks"
MKUBIFS_ARGS ?= "-m 2048 -e 129024 -c 2047"
UBINIZE_ARGS ?= "-m 2048 -p 128KiB -s 512"
+MULTIUBI_BUILD += "mtd_2_128"
+MKUBIFS_ARGS_mtd_2_128 ?= "-m 2048 -e 129024 -c 2047"
+UBINIZE_ARGS_mtd_2_128 ?= "-m 2048 -p 128KiB -s 512"
+MULTIUBI_BUILD += "mtd_4_256"
+MKUBIFS_ARGS_mtd_4_256 ?= "-m 4096 -e 253952 -c 4096"
+UBINIZE_ARGS_mtd_4_256 ?= "-m 4096 -p 256KiB"
""" % ' '.join(img_types)
self.write_config(config)
- bitbake(image_name)
+ bitbake(image)
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME', 'MULTIUBI_BUILD'], image)
- deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
- link_name = get_bb_var('IMAGE_LINK_NAME', image_name)
for itype in img_types:
- image_path = os.path.join(deploy_dir_image, "%s.%s" % (link_name, itype))
- # check if result image is in deploy directory
- self.assertTrue(os.path.exists(image_path),
+ if itype == 'multiubi':
+ # For multiubi build we need to manage MULTIUBI_BUILD entry to append
+ # specific name to IMAGE_LINK_NAME
+ for vname in bb_vars['MULTIUBI_BUILD'].split():
+ image_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s_%s.ubifs" % (bb_vars['IMAGE_LINK_NAME'], vname))
+ # check if result image is in deploy directory
+ self.assertTrue(os.path.exists(image_path),
+ "%s image %s doesn't exist" % (itype, image_path))
+ else:
+ image_path = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s.%s" % (bb_vars['IMAGE_LINK_NAME'], itype))
+ # check if result image is in deploy directory
+ self.assertTrue(os.path.exists(image_path),
"%s image %s doesn't exist" % (itype, image_path))
def test_useradd_static(self):
@@ -271,19 +281,20 @@
Yeoh Ee Peng <ee.peng.yeoh@intel.com>
"""
- image_name = 'core-image-minimal'
+ image = 'core-image-minimal'
+ image_fstypes_debugfs = 'tar.bz2'
features = 'IMAGE_GEN_DEBUGFS = "1"\n'
- features += 'IMAGE_FSTYPES_DEBUGFS = "tar.bz2"\n'
+ features += 'IMAGE_FSTYPES_DEBUGFS = "%s"\n' % image_fstypes_debugfs
self.write_config(features)
- bitbake(image_name)
- deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
- dbg_tar_file = os.path.join(deploy_dir_image, "*-dbg.rootfs.tar.bz2")
- debug_files = glob.glob(dbg_tar_file)
- self.assertNotEqual(len(debug_files), 0, 'debug filesystem not generated at %s' % dbg_tar_file)
- result = runCmd('cd %s; tar xvf %s' % (deploy_dir_image, dbg_tar_file))
+ bitbake(image)
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME'], image)
+
+ dbg_tar_file = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s-dbg.%s" % (bb_vars['IMAGE_LINK_NAME'], image_fstypes_debugfs))
+ self.assertTrue(os.path.exists(dbg_tar_file), 'debug filesystem not generated at %s' % dbg_tar_file)
+ result = runCmd('cd %s; tar xvf %s' % (bb_vars['DEPLOY_DIR_IMAGE'], dbg_tar_file))
self.assertEqual(result.status, 0, msg='Failed to extract %s: %s' % (dbg_tar_file, result.output))
- result = runCmd('find %s -name %s' % (deploy_dir_image, "udevadm"))
+ result = runCmd('find %s -name %s' % (bb_vars['DEPLOY_DIR_IMAGE'], "udevadm"))
self.assertTrue("udevadm" in result.output, msg='Failed to find udevadm: %s' % result.output)
dbg_symbols_targets = result.output.splitlines()
self.assertTrue(dbg_symbols_targets, msg='Failed to split udevadm: %s' % dbg_symbols_targets)
@@ -293,9 +304,33 @@
def test_empty_image(self):
"""Test creation of image with no packages"""
- bitbake('test-empty-image')
- res_dir = get_bb_var('DEPLOY_DIR_IMAGE')
- images = os.path.join(res_dir, "test-empty-image-*.manifest")
- result = glob.glob(images)
- with open(result[1],"r") as f:
+ image = 'test-empty-image'
+ bitbake(image)
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME'], image)
+ manifest = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "%s.manifest" % bb_vars['IMAGE_LINK_NAME'])
+ self.assertTrue(os.path.exists(manifest))
+
+ with open(manifest, "r") as f:
self.assertEqual(len(f.read().strip()),0)
+
+ def test_mandb(self):
+ """
+ Test that an image containing manpages has working man and apropos commands.
+ """
+ config = """
+DISTRO_FEATURES:append = " api-documentation"
+CORE_IMAGE_EXTRA_INSTALL = "man-pages kmod-doc"
+"""
+ self.write_config(config)
+ bitbake("core-image-minimal")
+
+ with runqemu('core-image-minimal', ssh=False, runqemuparams='nographic') as qemu:
+ # This manpage is provided by man-pages
+ status, output = qemu.run_serial("apropos 8859")
+ self.assertEqual(status, 1, 'Failed to run apropos: %s' % (output))
+ self.assertIn("iso_8859_15", output)
+
+ # This manpage is provided by kmod
+ status, output = qemu.run_serial("man --pager=cat modprobe")
+ self.assertEqual(status, 1, 'Failed to run man: %s' % (output))
+ self.assertIn("force-modversion", output)
diff --git a/poky/meta/lib/oeqa/selftest/cases/minidebuginfo.py b/poky/meta/lib/oeqa/selftest/cases/minidebuginfo.py
index 7947c38..aa1f9fa 100644
--- a/poky/meta/lib/oeqa/selftest/cases/minidebuginfo.py
+++ b/poky/meta/lib/oeqa/selftest/cases/minidebuginfo.py
@@ -9,7 +9,7 @@
import shutil
from oeqa.selftest.case import OESelftestTestCase
-from oeqa.utils.commands import bitbake, get_bb_var, runCmd
+from oeqa.utils.commands import bitbake, get_bb_var, get_bb_vars, runCmd
class Minidebuginfo(OESelftestTestCase):
@@ -17,27 +17,28 @@
target_sys = get_bb_var("TARGET_SYS")
binutils = "binutils-cross-{}".format(get_bb_var("TARGET_ARCH"))
+ image = 'core-image-minimal'
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME', 'READELF'], image)
+
self.write_config("""
PACKAGE_MINIDEBUGINFO = "1"
IMAGE_FSTYPES = "tar.bz2"
""")
- bitbake("core-image-minimal {}:do_addto_recipe_sysroot".format(binutils))
+ bitbake("{} {}:do_addto_recipe_sysroot".format(image, binutils))
- deploy_dir = get_bb_var("DEPLOY_DIR_IMAGE")
native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", binutils)
- readelf = get_bb_var("READELF", "core-image-minimal")
# confirm that executables and shared libraries contain an ELF section
# ".gnu_debugdata" which stores minidebuginfo.
with tempfile.TemporaryDirectory(prefix = "unpackfs-") as unpackedfs:
- filename = os.path.join(deploy_dir, "core-image-minimal-{}.tar.bz2".format(self.td["MACHINE"]))
+ filename = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], "{}.tar.bz2".format(bb_vars['IMAGE_LINK_NAME']))
shutil.unpack_archive(filename, unpackedfs)
- r = runCmd([readelf, "-W", "-S", os.path.join(unpackedfs, "bin", "busybox")],
+ r = runCmd([bb_vars['READELF'], "-W", "-S", os.path.join(unpackedfs, "bin", "busybox")],
native_sysroot = native_sysroot, target_sys = target_sys)
self.assertIn(".gnu_debugdata", r.output)
- r = runCmd([readelf, "-W", "-S", os.path.join(unpackedfs, "lib", "libc.so.6")],
+ r = runCmd([bb_vars['READELF'], "-W", "-S", os.path.join(unpackedfs, "lib", "libc.so.6")],
native_sysroot = native_sysroot, target_sys = target_sys)
self.assertIn(".gnu_debugdata", r.output)
diff --git a/poky/meta/lib/oeqa/selftest/cases/overlayfs.py b/poky/meta/lib/oeqa/selftest/cases/overlayfs.py
index dfd9f14..b4f0663 100644
--- a/poky/meta/lib/oeqa/selftest/cases/overlayfs.py
+++ b/poky/meta/lib/oeqa/selftest/cases/overlayfs.py
@@ -139,10 +139,10 @@
config = """
IMAGE_INSTALL:append = " overlayfs-user systemd-machine-units"
-DISTRO_FEATURES:append = " systemd overlayfs"
+DISTRO_FEATURES:append = " overlayfs"
# Use systemd as init manager
-VIRTUAL-RUNTIME_init_manager = "systemd"
+INIT_MANAGER = "systemd"
# enable overlayfs in the kernel
KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
@@ -274,10 +274,8 @@
"""
configBase = """
-DISTRO_FEATURES:append = " systemd"
-
# Use systemd as init manager
-VIRTUAL-RUNTIME_init_manager = "systemd"
+INIT_MANAGER = "systemd"
# enable overlayfs in the kernel
KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
@@ -316,10 +314,8 @@
"""
config = """
-DISTRO_FEATURES:append = " systemd"
-
# Use systemd as init manager
-VIRTUAL-RUNTIME_init_manager = "systemd"
+INIT_MANAGER = "systemd"
# enable overlayfs in the kernel
KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
@@ -344,10 +340,8 @@
"""
config = """
-DISTRO_FEATURES:append = " systemd"
-
# Use systemd as init manager
-VIRTUAL-RUNTIME_init_manager = "systemd"
+INIT_MANAGER = "systemd"
# enable overlayfs in the kernel
KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
@@ -465,10 +459,8 @@
def get_working_config(self):
return """
-DISTRO_FEATURES:append = " systemd"
-
# Use systemd as init manager
-VIRTUAL-RUNTIME_init_manager = "systemd"
+INIT_MANAGER = "systemd"
# enable overlayfs in the kernel
KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
diff --git a/poky/meta/lib/oeqa/selftest/cases/package.py b/poky/meta/lib/oeqa/selftest/cases/package.py
index 4f7cd10..1aa6c03 100644
--- a/poky/meta/lib/oeqa/selftest/cases/package.py
+++ b/poky/meta/lib/oeqa/selftest/cases/package.py
@@ -89,6 +89,13 @@
self.assertEqual(status - 100, sort, "%s %s (%d) failed" % (ver1, ver2, sort))
class PackageTests(OESelftestTestCase):
+ # Verify that a recipe cannot rename a package into an existing one
+ def test_package_name_conflict(self):
+ res = bitbake("packagenameconflict", ignore_status=True)
+ self.assertNotEqual(res.status, 0)
+ err = "package name already exists"
+ self.assertTrue(err in res.output)
+
# Verify that a recipe which sets up hardlink files has those preserved into split packages
# Also test file sparseness is preserved
def test_preserve_sparse_hardlinks(self):
diff --git a/poky/meta/lib/oeqa/selftest/cases/recipetool.py b/poky/meta/lib/oeqa/selftest/cases/recipetool.py
index 25b06cd..b193f0f 100644
--- a/poky/meta/lib/oeqa/selftest/cases/recipetool.py
+++ b/poky/meta/lib/oeqa/selftest/cases/recipetool.py
@@ -581,7 +581,10 @@
commonlicdir = get_bb_var('COMMON_LICENSE_DIR')
- d = bb.tinfoil.TinfoilDataStoreConnector
+ class DataConnectorCopy(bb.tinfoil.TinfoilDataStoreConnector):
+ pass
+
+ d = DataConnectorCopy
d.getVar = Mock(return_value=commonlicdir)
srctree = tempfile.mkdtemp(prefix='recipetoolqa')
diff --git a/poky/meta/lib/oeqa/selftest/cases/reproducible.py b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
index f4dd779..cd7aa8a 100644
--- a/poky/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -292,9 +292,13 @@
self.copy_file(d.reference, '/'.join([save_dir, 'packages-excluded', strip_topdir(d.reference)]))
self.copy_file(d.test, '/'.join([save_dir, 'packages-excluded', strip_topdir(d.test)]))
- if result.missing or result.different:
- fails.append("The following %s packages are missing or different and not in exclusion list: %s" %
- (c, '\n'.join(r.test for r in (result.missing + result.different))))
+ if result.different:
+ fails.append("The following %s packages are different and not in exclusion list:\n%s" %
+ (c, '\n'.join(r.test for r in (result.different))))
+
+ if result.missing and len(self.sstate_targets) == 0:
+ fails.append("The following %s packages are missing and not in exclusion list:\n%s" %
+ (c, '\n'.join(r.test for r in (result.missing))))
# Clean up empty directories
if self.save_results:
diff --git a/poky/meta/lib/oeqa/selftest/cases/resulttooltests.py b/poky/meta/lib/oeqa/selftest/cases/resulttooltests.py
index f059991..c3303f3 100644
--- a/poky/meta/lib/oeqa/selftest/cases/resulttooltests.py
+++ b/poky/meta/lib/oeqa/selftest/cases/resulttooltests.py
@@ -274,14 +274,14 @@
"MACHINE": "qemux86"
}, "result": {
"ltpresult_foo": {
- "STATUS": "PASSED"
+ "status": "PASSED"
}}}
target_configuration = {"configuration": {
"TEST_TYPE": "runtime",
"MACHINE": "qemux86_64"
}, "result": {
"bar": {
- "STATUS": "PASSED"
+ "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")
@@ -292,52 +292,84 @@
"MACHINE": "qemux86"
}, "result": {
"ltpresult_foo": {
- "STATUS": "PASSED"
+ "status": "PASSED"
}}}
target_configuration = {"configuration": {
"TEST_TYPE": "runtime",
"MACHINE": "qemux86"
}, "result": {
"ltpresult_foo": {
- "STATUS": "PASSED"
+ "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")
+ base_configuration = {"a": {
+ "conf_X": {
+ "configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86"
+ }, "result": {
+ "ptestresult.lttng-tools.foo_-_bar_-_moo": {
+ "status": "PASSED"
+ },
+ "ptestresult.babeltrace.bar_-_moo_-_foo": {
+ "status": "PASSED"
+ },
+ "ptestresult.babeltrace2.moo_-_foo_-_bar": {
+ "status": "PASSED"
+ },
+ "ptestresult.curl.test_0000__foo_out_of_bar": {
+ "status": "PASSED"
+ },
+ "ptestresult.dbus.test_0000__foo_out_of_bar,_remaining:_00:02,_took_0.032s,_duration:_03:32_": {
+ "status": "PASSED"
+ },
+ "ptestresult.binutils-ld.in testcase /foo/build-st-bar/moo/ctf.exp": {
+ "status": "PASSED"
+ },
+ "ptestresult.gcc-libstdc++-v3.Couldn't create remote directory /tmp/runtest.30975 on target": {
+ "status": "PASSED"
+ },
+ "ptestresult.gcc-libgomp.Couldn't create remote directory /tmp/runtest.3657621 on": {
+ "status": "PASSED"
+ }
+ }}}}
+ target_configuration = {"a": {
+ "conf_Y": {
+ "configuration": {
+ "TEST_TYPE": "runtime",
+ "MACHINE": "qemux86"
+ }, "result": {
+ "ptestresult.lttng-tools.foo_-_yyy_-_zzz": {
+ "status": "PASSED"
+ },
+ "ptestresult.babeltrace.bar_-_zzz_-_xxx": {
+ "status": "PASSED"
+ },
+ "ptestresult.babeltrace2.moo_-_xxx_-_yyy": {
+ "status": "PASSED"
+ },
+ "ptestresult.curl.test_0000__xxx_out_of_yyy": {
+ "status": "PASSED"
+ },
+ "ptestresult.dbus.test_0000__yyy_out_of_zzz,_remaining:_00:03,_took_0.034s,_duration:_03:30_": {
+ "status": "PASSED"
+ },
+ "ptestresult.binutils-ld.in testcase /xxx/build-st-yyy/zzz/ctf.exp": {
+ "status": "PASSED"
+ },
+ "ptestresult.gcc-libstdc++-v3.Couldn't create remote directory /tmp/runtest.45678 on target": {
+ "status": "PASSED"
+ },
+ "ptestresult.gcc-libgomp.Couldn't create remote directory /tmp/runtest.3657621 on": {
+ "status": "PASSED"
+ }
+ }}}}
+ regression.fixup_ptest_names(base_configuration, self.logger)
+ regression.fixup_ptest_names(target_configuration, self.logger)
+ result, resultstring = regression.compare_result(
+ self.logger, "A", "B", base_configuration["a"]["conf_X"], target_configuration["a"]["conf_Y"])
+ self.assertDictEqual(
+ result, {}, msg=f"ptests should be compared: {resultstring}")
diff --git a/poky/meta/lib/oeqa/selftest/cases/runqemu.py b/poky/meta/lib/oeqa/selftest/cases/runqemu.py
index c2c3fbc..e72ff52 100644
--- a/poky/meta/lib/oeqa/selftest/cases/runqemu.py
+++ b/poky/meta/lib/oeqa/selftest/cases/runqemu.py
@@ -24,6 +24,7 @@
super(RunqemuTests, self).setUpLocal()
self.recipe = 'core-image-minimal'
self.machine = self.td['MACHINE']
+ self.image_link_name = get_bb_var('IMAGE_LINK_NAME', self.recipe)
self.fstypes = "ext4"
if self.td["HOST_ARCH"] in ('i586', 'i686', 'x86_64'):
@@ -127,7 +128,7 @@
def test_boot_qemu_boot(self):
"""Test runqemu /path/to/image.qemuboot.conf"""
- qemuboot_conf = "%s-%s.qemuboot.conf" % (self.recipe, self.machine)
+ qemuboot_conf = "%s.qemuboot.conf" % (self.image_link_name)
qemuboot_conf = os.path.join(self.deploy_dir_image, qemuboot_conf)
if not os.path.exists(qemuboot_conf):
self.skipTest("%s not found" % qemuboot_conf)
@@ -138,7 +139,7 @@
def test_boot_rootfs(self):
"""Test runqemu /path/to/rootfs.ext4"""
- rootfs = "%s-%s.ext4" % (self.recipe, self.machine)
+ rootfs = "%s.ext4" % (self.image_link_name)
rootfs = os.path.join(self.deploy_dir_image, rootfs)
if not os.path.exists(rootfs):
self.skipTest("%s not found" % rootfs)
@@ -167,8 +168,9 @@
cls.recipe = 'core-image-minimal'
cls.machine = get_bb_var('MACHINE')
cls.deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+ cls.image_link_name = get_bb_var('IMAGE_LINK_NAME', cls.recipe)
cls.cmd_common = "runqemu nographic"
- cls.qemuboot_conf = "%s-%s.qemuboot.conf" % (cls.recipe, cls.machine)
+ cls.qemuboot_conf = "%s.qemuboot.conf" % (cls.image_link_name)
cls.qemuboot_conf = os.path.join(cls.deploy_dir_image, cls.qemuboot_conf)
bitbake(cls.recipe)
@@ -200,7 +202,7 @@
self.assertTrue(qemu_shutdown_succeeded, 'Failed: %s does not shutdown within timeout(%s)' % (self.machine, shutdown_timeout))
def test_qemu_can_boot_nfs_and_shutdown(self):
- rootfs_tar = "%s-%s.tar.bz2" % (self.recipe, self.machine)
+ rootfs_tar = "%s.tar.bz2" % (self.image_link_name)
rootfs_tar = os.path.join(self.deploy_dir_image, rootfs_tar)
self.assertExists(rootfs_tar)
cmd = "%s %s" % (self.cmd_common, rootfs_tar)
diff --git a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
index e32c4af..81b8d05 100644
--- a/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/poky/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -257,7 +257,8 @@
import subprocess, os
distro = oe.lsb.distro_identifier()
- if distro and (distro in ['debian-9', 'debian-10', 'centos-7', 'centos-8', 'ubuntu-16.04', 'ubuntu-18.04'] or distro.startswith('almalinux')):
+ if distro and (distro in ['debian-9', 'debian-10', 'centos-7', 'centos-8', 'ubuntu-16.04', 'ubuntu-18.04'] or
+ distro.startswith('almalinux') or distro.startswith('rocky')):
self.skipTest('virgl headless cannot be tested with %s' %(distro))
qemu_distrofeatures = get_bb_var('DISTRO_FEATURES', 'qemu-system-native')
diff --git a/poky/meta/lib/oeqa/selftest/cases/sstate.py b/poky/meta/lib/oeqa/selftest/cases/sstate.py
deleted file mode 100644
index e73bb94..0000000
--- a/poky/meta/lib/oeqa/selftest/cases/sstate.py
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# Copyright OpenEmbedded Contributors
-#
-# SPDX-License-Identifier: MIT
-#
-
-import datetime
-import os
-import re
-
-from oeqa.selftest.case import OESelftestTestCase
-from oeqa.utils.commands import get_bb_vars
-
-
-class SStateBase(OESelftestTestCase):
-
- def setUpLocal(self):
- super(SStateBase, self).setUpLocal()
- self.temp_sstate_location = None
- needed_vars = ['SSTATE_DIR', 'NATIVELSBSTRING', 'TCLIBC', 'TUNE_ARCH',
- 'TOPDIR', 'TARGET_VENDOR', 'TARGET_OS']
- bb_vars = get_bb_vars(needed_vars)
- self.sstate_path = bb_vars['SSTATE_DIR']
- self.hostdistro = bb_vars['NATIVELSBSTRING']
- self.tclibc = bb_vars['TCLIBC']
- self.tune_arch = bb_vars['TUNE_ARCH']
- self.topdir = bb_vars['TOPDIR']
- self.target_vendor = bb_vars['TARGET_VENDOR']
- self.target_os = bb_vars['TARGET_OS']
- self.distro_specific_sstate = os.path.join(self.sstate_path, self.hostdistro)
-
- # Creates a special sstate configuration with the option to add sstate mirrors
- def config_sstate(self, temp_sstate_location=False, add_local_mirrors=[]):
- self.temp_sstate_location = temp_sstate_location
-
- if self.temp_sstate_location:
- temp_sstate_path = os.path.join(self.builddir, "temp_sstate_%s" % datetime.datetime.now().strftime('%Y%m%d%H%M%S'))
- config_temp_sstate = "SSTATE_DIR = \"%s\"" % temp_sstate_path
- self.append_config(config_temp_sstate)
- self.track_for_cleanup(temp_sstate_path)
- bb_vars = get_bb_vars(['SSTATE_DIR', 'NATIVELSBSTRING'])
- self.sstate_path = bb_vars['SSTATE_DIR']
- self.hostdistro = bb_vars['NATIVELSBSTRING']
- self.distro_specific_sstate = os.path.join(self.sstate_path, self.hostdistro)
-
- if add_local_mirrors:
- config_set_sstate_if_not_set = 'SSTATE_MIRRORS ?= ""'
- self.append_config(config_set_sstate_if_not_set)
- for local_mirror in add_local_mirrors:
- self.assertFalse(os.path.join(local_mirror) == os.path.join(self.sstate_path), msg='Cannot add the current sstate path as a sstate mirror')
- config_sstate_mirror = "SSTATE_MIRRORS += \"file://.* file:///%s/PATH\"" % local_mirror
- self.append_config(config_sstate_mirror)
-
- # Returns a list containing sstate files
- def search_sstate(self, filename_regex, distro_specific=True, distro_nonspecific=True):
- result = []
- for root, dirs, files in os.walk(self.sstate_path):
- if distro_specific and re.search(r"%s/%s/[a-z0-9]{2}/[a-z0-9]{2}$" % (self.sstate_path, self.hostdistro), root):
- for f in files:
- if re.search(filename_regex, f):
- result.append(f)
- if distro_nonspecific and re.search(r"%s/[a-z0-9]{2}/[a-z0-9]{2}$" % self.sstate_path, root):
- for f in files:
- if re.search(filename_regex, f):
- result.append(f)
- return result
diff --git a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
index ae766f9..e978313 100644
--- a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
@@ -9,13 +9,175 @@
import glob
import subprocess
import tempfile
+import datetime
+import re
-from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer
-from oeqa.selftest.cases.sstate import SStateBase
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer, get_bb_vars
+from oeqa.selftest.case import OESelftestTestCase
+
import oe
-
import bb.siggen
+class SStateBase(OESelftestTestCase):
+
+ def setUpLocal(self):
+ super(SStateBase, self).setUpLocal()
+ self.temp_sstate_location = None
+ needed_vars = ['SSTATE_DIR', 'NATIVELSBSTRING', 'TCLIBC', 'TUNE_ARCH',
+ 'TOPDIR', 'TARGET_VENDOR', 'TARGET_OS']
+ bb_vars = get_bb_vars(needed_vars)
+ self.sstate_path = bb_vars['SSTATE_DIR']
+ self.hostdistro = bb_vars['NATIVELSBSTRING']
+ self.tclibc = bb_vars['TCLIBC']
+ self.tune_arch = bb_vars['TUNE_ARCH']
+ self.topdir = bb_vars['TOPDIR']
+ self.target_vendor = bb_vars['TARGET_VENDOR']
+ self.target_os = bb_vars['TARGET_OS']
+ self.distro_specific_sstate = os.path.join(self.sstate_path, self.hostdistro)
+
+ # Creates a special sstate configuration with the option to add sstate mirrors
+ def config_sstate(self, temp_sstate_location=False, add_local_mirrors=[]):
+ self.temp_sstate_location = temp_sstate_location
+
+ if self.temp_sstate_location:
+ temp_sstate_path = os.path.join(self.builddir, "temp_sstate_%s" % datetime.datetime.now().strftime('%Y%m%d%H%M%S'))
+ config_temp_sstate = "SSTATE_DIR = \"%s\"" % temp_sstate_path
+ self.append_config(config_temp_sstate)
+ self.track_for_cleanup(temp_sstate_path)
+ bb_vars = get_bb_vars(['SSTATE_DIR', 'NATIVELSBSTRING'])
+ self.sstate_path = bb_vars['SSTATE_DIR']
+ self.hostdistro = bb_vars['NATIVELSBSTRING']
+ self.distro_specific_sstate = os.path.join(self.sstate_path, self.hostdistro)
+
+ if add_local_mirrors:
+ config_set_sstate_if_not_set = 'SSTATE_MIRRORS ?= ""'
+ self.append_config(config_set_sstate_if_not_set)
+ for local_mirror in add_local_mirrors:
+ self.assertFalse(os.path.join(local_mirror) == os.path.join(self.sstate_path), msg='Cannot add the current sstate path as a sstate mirror')
+ config_sstate_mirror = "SSTATE_MIRRORS += \"file://.* file:///%s/PATH\"" % local_mirror
+ self.append_config(config_sstate_mirror)
+
+ # Returns a list containing sstate files
+ def search_sstate(self, filename_regex, distro_specific=True, distro_nonspecific=True):
+ result = []
+ for root, dirs, files in os.walk(self.sstate_path):
+ if distro_specific and re.search(r"%s/%s/[a-z0-9]{2}/[a-z0-9]{2}$" % (self.sstate_path, self.hostdistro), root):
+ for f in files:
+ if re.search(filename_regex, f):
+ result.append(f)
+ if distro_nonspecific and re.search(r"%s/[a-z0-9]{2}/[a-z0-9]{2}$" % self.sstate_path, root):
+ for f in files:
+ if re.search(filename_regex, f):
+ result.append(f)
+ return result
+
+ # Test sstate files creation and their location
+ def run_test_sstate_creation(self, targets, distro_specific=True, distro_nonspecific=True, temp_sstate_location=True, should_pass=True):
+ self.config_sstate(temp_sstate_location, [self.sstate_path])
+
+ if self.temp_sstate_location:
+ bitbake(['-cclean'] + targets)
+ else:
+ bitbake(['-ccleansstate'] + targets)
+
+ bitbake(targets)
+ file_tracker = []
+ results = self.search_sstate('|'.join(map(str, targets)), distro_specific, distro_nonspecific)
+ if distro_nonspecific:
+ for r in results:
+ if r.endswith(("_populate_lic.tar.zst", "_populate_lic.tar.zst.siginfo", "_fetch.tar.zst.siginfo", "_unpack.tar.zst.siginfo", "_patch.tar.zst.siginfo")):
+ continue
+ file_tracker.append(r)
+ else:
+ file_tracker = results
+
+ if should_pass:
+ self.assertTrue(file_tracker , msg="Could not find sstate files for: %s" % ', '.join(map(str, targets)))
+ else:
+ self.assertTrue(not file_tracker , msg="Found sstate files in the wrong place for: %s (found %s)" % (', '.join(map(str, targets)), str(file_tracker)))
+
+ # Test the sstate files deletion part of the do_cleansstate task
+ def run_test_cleansstate_task(self, targets, distro_specific=True, distro_nonspecific=True, temp_sstate_location=True):
+ self.config_sstate(temp_sstate_location, [self.sstate_path])
+
+ bitbake(['-ccleansstate'] + targets)
+
+ bitbake(targets)
+ archives_created = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific, distro_nonspecific)
+ self.assertTrue(archives_created, msg="Could not find sstate .tar.zst files for: %s (%s)" % (', '.join(map(str, targets)), str(archives_created)))
+
+ siginfo_created = self.search_sstate('|'.join(map(str, [s + r'.*?\.siginfo$' for s in targets])), distro_specific, distro_nonspecific)
+ self.assertTrue(siginfo_created, msg="Could not find sstate .siginfo files for: %s (%s)" % (', '.join(map(str, targets)), str(siginfo_created)))
+
+ bitbake(['-ccleansstate'] + targets)
+ archives_removed = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific, distro_nonspecific)
+ self.assertTrue(not archives_removed, msg="do_cleansstate didn't remove .tar.zst sstate files for: %s (%s)" % (', '.join(map(str, targets)), str(archives_removed)))
+
+ # Test rebuilding of distro-specific sstate files
+ def run_test_rebuild_distro_specific_sstate(self, targets, temp_sstate_location=True):
+ self.config_sstate(temp_sstate_location, [self.sstate_path])
+
+ bitbake(['-ccleansstate'] + targets)
+
+ bitbake(targets)
+ results = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=False, distro_nonspecific=True)
+ filtered_results = []
+ for r in results:
+ if r.endswith(("_populate_lic.tar.zst", "_populate_lic.tar.zst.siginfo")):
+ continue
+ filtered_results.append(r)
+ self.assertTrue(filtered_results == [], msg="Found distro non-specific sstate for: %s (%s)" % (', '.join(map(str, targets)), str(filtered_results)))
+ file_tracker_1 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=True, distro_nonspecific=False)
+ self.assertTrue(len(file_tracker_1) >= len(targets), msg = "Not all sstate files were created for: %s" % ', '.join(map(str, targets)))
+
+ self.track_for_cleanup(self.distro_specific_sstate + "_old")
+ shutil.copytree(self.distro_specific_sstate, self.distro_specific_sstate + "_old")
+ shutil.rmtree(self.distro_specific_sstate)
+
+ bitbake(['-cclean'] + targets)
+ bitbake(targets)
+ file_tracker_2 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=True, distro_nonspecific=False)
+ self.assertTrue(len(file_tracker_2) >= len(targets), msg = "Not all sstate files were created for: %s" % ', '.join(map(str, targets)))
+
+ not_recreated = [x for x in file_tracker_1 if x not in file_tracker_2]
+ self.assertTrue(not_recreated == [], msg="The following sstate files were not recreated: %s" % ', '.join(map(str, not_recreated)))
+
+ created_once = [x for x in file_tracker_2 if x not in file_tracker_1]
+ self.assertTrue(created_once == [], msg="The following sstate files were created only in the second run: %s" % ', '.join(map(str, created_once)))
+
+ def sstate_common_samesigs(self, configA, configB, allarch=False):
+
+ self.write_config(configA)
+ self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash")
+ bitbake("world meta-toolchain -S none")
+ self.write_config(configB)
+ self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash2")
+ bitbake("world meta-toolchain -S none")
+
+ def get_files(d, result):
+ for root, dirs, files in os.walk(d):
+ for name in files:
+ if "meta-environment" in root or "cross-canadian" in root:
+ continue
+ if "do_build" not in name:
+ # 1.4.1+gitAUTOINC+302fca9f4c-r0.do_package_write_ipk.sigdata.f3a2a38697da743f0dbed8b56aafcf79
+ (_, task, _, shash) = name.rsplit(".", 3)
+ result[os.path.join(os.path.basename(root), task)] = shash
+
+ files1 = {}
+ files2 = {}
+ subdirs = sorted(glob.glob(self.topdir + "/tmp-sstatesamehash/stamps/*-nativesdk*-linux"))
+ if allarch:
+ subdirs.extend(sorted(glob.glob(self.topdir + "/tmp-sstatesamehash/stamps/all-*-linux")))
+
+ for subdir in subdirs:
+ nativesdkdir = os.path.basename(subdir)
+ get_files(self.topdir + "/tmp-sstatesamehash/stamps/" + nativesdkdir, files1)
+ get_files(self.topdir + "/tmp-sstatesamehash2/stamps/" + nativesdkdir, files2)
+
+ self.maxDiff = None
+ self.assertEqual(files1, files2)
+
class SStateTests(SStateBase):
def test_autorev_sstate_works(self):
# Test that a git repository which changes is correctly handled by SRCREV = ${AUTOREV}
@@ -55,32 +217,7 @@
result = runCmd('git add bar.txt; git commit -asm "add bar"', cwd=srcdir)
bitbake("dbus-wait-test -c unpack")
-
- # Test sstate files creation and their location
- def run_test_sstate_creation(self, targets, distro_specific=True, distro_nonspecific=True, temp_sstate_location=True, should_pass=True):
- self.config_sstate(temp_sstate_location, [self.sstate_path])
-
- if self.temp_sstate_location:
- bitbake(['-cclean'] + targets)
- else:
- bitbake(['-ccleansstate'] + targets)
-
- bitbake(targets)
- file_tracker = []
- results = self.search_sstate('|'.join(map(str, targets)), distro_specific, distro_nonspecific)
- if distro_nonspecific:
- for r in results:
- if r.endswith(("_populate_lic.tar.zst", "_populate_lic.tar.zst.siginfo", "_fetch.tar.zst.siginfo", "_unpack.tar.zst.siginfo", "_patch.tar.zst.siginfo")):
- continue
- file_tracker.append(r)
- else:
- file_tracker = results
-
- if should_pass:
- self.assertTrue(file_tracker , msg="Could not find sstate files for: %s" % ', '.join(map(str, targets)))
- else:
- self.assertTrue(not file_tracker , msg="Found sstate files in the wrong place for: %s (found %s)" % (', '.join(map(str, targets)), str(file_tracker)))
-
+class SStateCreation(SStateBase):
def test_sstate_creation_distro_specific_pass(self):
self.run_test_sstate_creation(['binutils-cross-'+ self.tune_arch, 'binutils-native'], distro_specific=True, distro_nonspecific=False, temp_sstate_location=True)
@@ -93,23 +230,7 @@
def test_sstate_creation_distro_nonspecific_fail(self):
self.run_test_sstate_creation(['linux-libc-headers'], distro_specific=True, distro_nonspecific=False, temp_sstate_location=True, should_pass=False)
- # Test the sstate files deletion part of the do_cleansstate task
- def run_test_cleansstate_task(self, targets, distro_specific=True, distro_nonspecific=True, temp_sstate_location=True):
- self.config_sstate(temp_sstate_location, [self.sstate_path])
-
- bitbake(['-ccleansstate'] + targets)
-
- bitbake(targets)
- archives_created = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific, distro_nonspecific)
- self.assertTrue(archives_created, msg="Could not find sstate .tar.zst files for: %s (%s)" % (', '.join(map(str, targets)), str(archives_created)))
-
- siginfo_created = self.search_sstate('|'.join(map(str, [s + r'.*?\.siginfo$' for s in targets])), distro_specific, distro_nonspecific)
- self.assertTrue(siginfo_created, msg="Could not find sstate .siginfo files for: %s (%s)" % (', '.join(map(str, targets)), str(siginfo_created)))
-
- bitbake(['-ccleansstate'] + targets)
- archives_removed = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific, distro_nonspecific)
- self.assertTrue(not archives_removed, msg="do_cleansstate didn't remove .tar.zst sstate files for: %s (%s)" % (', '.join(map(str, targets)), str(archives_removed)))
-
+class SStateCleanup(SStateBase):
def test_cleansstate_task_distro_specific_nonspecific(self):
targets = ['binutils-cross-'+ self.tune_arch, 'binutils-native']
targets.append('linux-libc-headers')
@@ -123,39 +244,7 @@
targets.append('linux-libc-headers')
self.run_test_cleansstate_task(targets, distro_specific=True, distro_nonspecific=False, temp_sstate_location=True)
-
- # Test rebuilding of distro-specific sstate files
- def run_test_rebuild_distro_specific_sstate(self, targets, temp_sstate_location=True):
- self.config_sstate(temp_sstate_location, [self.sstate_path])
-
- bitbake(['-ccleansstate'] + targets)
-
- bitbake(targets)
- results = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=False, distro_nonspecific=True)
- filtered_results = []
- for r in results:
- if r.endswith(("_populate_lic.tar.zst", "_populate_lic.tar.zst.siginfo")):
- continue
- filtered_results.append(r)
- self.assertTrue(filtered_results == [], msg="Found distro non-specific sstate for: %s (%s)" % (', '.join(map(str, targets)), str(filtered_results)))
- file_tracker_1 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=True, distro_nonspecific=False)
- self.assertTrue(len(file_tracker_1) >= len(targets), msg = "Not all sstate files were created for: %s" % ', '.join(map(str, targets)))
-
- self.track_for_cleanup(self.distro_specific_sstate + "_old")
- shutil.copytree(self.distro_specific_sstate, self.distro_specific_sstate + "_old")
- shutil.rmtree(self.distro_specific_sstate)
-
- bitbake(['-cclean'] + targets)
- bitbake(targets)
- file_tracker_2 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=True, distro_nonspecific=False)
- self.assertTrue(len(file_tracker_2) >= len(targets), msg = "Not all sstate files were created for: %s" % ', '.join(map(str, targets)))
-
- not_recreated = [x for x in file_tracker_1 if x not in file_tracker_2]
- self.assertTrue(not_recreated == [], msg="The following sstate files were not recreated: %s" % ', '.join(map(str, not_recreated)))
-
- created_once = [x for x in file_tracker_2 if x not in file_tracker_1]
- self.assertTrue(created_once == [], msg="The following sstate files were created only in the second run: %s" % ', '.join(map(str, created_once)))
-
+class SStateDistroTests(SStateBase):
def test_rebuild_distro_specific_sstate_cross_native_targets(self):
self.run_test_rebuild_distro_specific_sstate(['binutils-cross-' + self.tune_arch, 'binutils-native'], temp_sstate_location=True)
@@ -165,7 +254,7 @@
def test_rebuild_distro_specific_sstate_native_target(self):
self.run_test_rebuild_distro_specific_sstate(['binutils-native'], temp_sstate_location=True)
-
+class SStateCacheManagement(SStateBase):
# Test the sstate-cache-management script. Each element in the global_config list is used with the corresponding element in the target_config list
# global_config elements are expected to not generate any sstate files that would be removed by sstate-cache-management.sh (such as changing the value of MACHINE)
def run_test_sstate_cache_management_script(self, target, global_config=[''], target_config=[''], ignore_patterns=[]):
@@ -244,6 +333,7 @@
target_config.append('')
self.run_test_sstate_cache_management_script('m4', global_config, target_config, ignore_patterns=['populate_lic'])
+class SStateHashSameSigs(SStateBase):
def test_sstate_32_64_same_hash(self):
"""
The sstate checksums for both native and target should not vary whether
@@ -329,6 +419,7 @@
self.maxDiff = None
self.assertCountEqual(files1, files2)
+class SStateHashSameSigs2(SStateBase):
def test_sstate_allarch_samesigs(self):
"""
The sstate checksums of allarch packages should be independent of whichever
@@ -377,39 +468,7 @@
"""
self.sstate_common_samesigs(configA, configB)
- def sstate_common_samesigs(self, configA, configB, allarch=False):
-
- self.write_config(configA)
- self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash")
- bitbake("world meta-toolchain -S none")
- self.write_config(configB)
- self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash2")
- bitbake("world meta-toolchain -S none")
-
- def get_files(d, result):
- for root, dirs, files in os.walk(d):
- for name in files:
- if "meta-environment" in root or "cross-canadian" in root:
- continue
- if "do_build" not in name:
- # 1.4.1+gitAUTOINC+302fca9f4c-r0.do_package_write_ipk.sigdata.f3a2a38697da743f0dbed8b56aafcf79
- (_, task, _, shash) = name.rsplit(".", 3)
- result[os.path.join(os.path.basename(root), task)] = shash
-
- files1 = {}
- files2 = {}
- subdirs = sorted(glob.glob(self.topdir + "/tmp-sstatesamehash/stamps/*-nativesdk*-linux"))
- if allarch:
- subdirs.extend(sorted(glob.glob(self.topdir + "/tmp-sstatesamehash/stamps/all-*-linux")))
-
- for subdir in subdirs:
- nativesdkdir = os.path.basename(subdir)
- get_files(self.topdir + "/tmp-sstatesamehash/stamps/" + nativesdkdir, files1)
- get_files(self.topdir + "/tmp-sstatesamehash2/stamps/" + nativesdkdir, files2)
-
- self.maxDiff = None
- self.assertEqual(files1, files2)
-
+class SStateHashSameSigs3(SStateBase):
def test_sstate_sametune_samesigs(self):
"""
The sstate checksums of two identical machines (using the same tune) should be the
@@ -497,7 +556,7 @@
self.maxDiff = None
self.assertCountEqual(files1, files2)
-
+class SStateHashSameSigs4(SStateBase):
def test_sstate_noop_samesigs(self):
"""
The sstate checksums of two builds with these variables changed or
diff --git a/poky/meta/lib/oeqa/selftest/cases/wic.py b/poky/meta/lib/oeqa/selftest/cases/wic.py
index b9430cd..b26b649 100644
--- a/poky/meta/lib/oeqa/selftest/cases/wic.py
+++ b/poky/meta/lib/oeqa/selftest/cases/wic.py
@@ -805,12 +805,13 @@
config = 'IMAGE_FSTYPES += "wic"\nWKS_FILE = "wic-image-minimal"\n'\
'MACHINE_FEATURES:append = " efi"\n'
self.append_config(config)
- bitbake('wic-image-minimal')
+ image = 'wic-image-minimal'
+ bitbake(image)
self.remove_config(config)
- deploy_dir = get_bb_var('DEPLOY_DIR_IMAGE')
- machine = self.td['MACHINE']
- prefix = os.path.join(deploy_dir, 'wic-image-minimal-%s.' % machine)
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME'], image)
+ prefix = os.path.join(bb_vars['DEPLOY_DIR_IMAGE'], '%s.' % bb_vars['IMAGE_LINK_NAME'])
+
# check if we have result image and manifests symlinks
# pointing to existing files
for suffix in ('wic', 'manifest'):
@@ -1033,9 +1034,13 @@
config = 'IMAGE_FSTYPES = "ext4"\n'
self.append_config(config)
bitbake('core-image-minimal')
+ image_link_name = get_bb_var('IMAGE_LINK_NAME', 'core-image-minimal')
self.remove_config(config)
- config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "test_rawcopy_plugin.wks.in"\n'
+ config = 'IMAGE_FSTYPES = "wic"\n' \
+ 'IMAGE_LINK_NAME_CORE_IMAGE_MINIMAL = "%s"\n'\
+ 'WKS_FILE = "test_rawcopy_plugin.wks.in"\n'\
+ % image_link_name
self.append_config(config)
bitbake('core-image-minimal-mtdutils')
self.remove_config(config)
@@ -1049,14 +1054,14 @@
def _rawcopy_plugin(self, fstype):
"""Test rawcopy plugin"""
- img = 'core-image-minimal'
- machine = self.td["MACHINE"]
+ image = 'core-image-minimal'
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_LINK_NAME'], image)
params = ',unpack' if fstype.endswith('.gz') else ''
with NamedTemporaryFile("w", suffix=".wks") as wks:
- wks.write('part / --source rawcopy --sourceparams="file=%s-%s.%s%s"\n'\
- % (img, machine, fstype, params))
+ wks.write('part / --source rawcopy --sourceparams="file=%s.%s%s"\n'\
+ % (bb_vars['IMAGE_LINK_NAME'], fstype, params))
wks.flush()
- cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir)
+ cmd = "wic create %s -e %s -o %s" % (wks.name, image, self.resultdir)
runCmd(cmd)
wksname = os.path.splitext(os.path.basename(wks.name))[0]
out = glob(os.path.join(self.resultdir, "%s-*direct" % wksname))
@@ -1077,12 +1082,11 @@
"""Test empty plugin"""
config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "test_empty_plugin.wks"\n'
self.append_config(config)
- bitbake('core-image-minimal')
+ image = 'core-image-minimal'
+ bitbake(image)
self.remove_config(config)
- deploy_dir = get_bb_var('DEPLOY_DIR_IMAGE')
- machine = self.td['MACHINE']
-
- image_path = os.path.join(deploy_dir, 'core-image-minimal-%s.wic' % machine)
+ 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))
sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools')
@@ -1297,12 +1301,12 @@
# build an image
config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "directdisk.wks"\n'
self.append_config(config)
- bitbake('core-image-minimal')
+ image = 'core-image-minimal'
+ bitbake(image)
# get path to the image
- deploy_dir = get_bb_var('DEPLOY_DIR_IMAGE')
- machine = self.td['MACHINE']
- image_path = os.path.join(deploy_dir, 'core-image-minimal-%s.wic' % machine)
+ 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.remove_config(config)
@@ -1310,7 +1314,7 @@
# expand image to 1G
new_image_path = None
with NamedTemporaryFile(mode='wb', suffix='.wic.exp',
- dir=deploy_dir, delete=False) as sparse:
+ dir=bb_vars['DEPLOY_DIR_IMAGE'], delete=False) as sparse:
sparse.truncate(1024 ** 3)
new_image_path = sparse.name
diff --git a/poky/meta/lib/oeqa/selftest/context.py b/poky/meta/lib/oeqa/selftest/context.py
index ab13131..0a7a9da 100644
--- a/poky/meta/lib/oeqa/selftest/context.py
+++ b/poky/meta/lib/oeqa/selftest/context.py
@@ -97,17 +97,27 @@
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)
+
+ # 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)
+
+ # Relative paths in BBLAYERS only works when the new build dir share the same ascending node
+ if self.newbuilddir:
+ bblayers = subprocess.check_output("bitbake-getvar --value BBLAYERS | tail -1", cwd=builddir, shell=True, text=True)
+ if '..' in bblayers:
+ bblayers_abspath = [os.path.abspath(path) for path in bblayers.split()]
+ with open("%s/conf/bblayers.conf" % newbuilddir, "a") as f:
+ newbblayers = "# new bblayers to be used by selftest in the new build dir '%s'\n" % newbuilddir
+ newbblayers += 'BBLAYERS = "%s"\n' % ' '.join(bblayers_abspath)
+ f.write(newbblayers)
+
for e in os.environ:
if builddir + "/" in os.environ[e]:
os.environ[e] = os.environ[e].replace(builddir + "/", newbuilddir + "/")
if os.environ[e].endswith(builddir):
os.environ[e] = os.environ[e].replace(builddir, newbuilddir)
- 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)
-
os.chdir(newbuilddir)
def patch_test(t):