summaryrefslogtreecommitdiffstats
path: root/meta-oe/classes/check-version-mismatch.bbclass
Commit message (Collapse)AuthorAgeFilesLines
* check-version-mismatch.bbclass: use oe.qemu and add QEMU_OPTIONS settingsChen Qi2025-05-291-2/+3
| | | | | | | | | | This bbclass is intended to be used via "INHERIT". The qemu.bbclass is in classes-recipe. So we can't inherit qemu. We need to copy QEMU_OPTIONS settings from qemu.bbclass and use oe.qemu to make things work. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* Revert "recipes: adapt to qemu.bbclass refactoring"Chen Qi2025-05-291-1/+3
| | | | | | | | | | | | | | This reverts commit 24ff52ba3b73757cc0255a5b19822e2e4d3d4e0a. The original patch was my bad. The patches for oe-core were re-worked, but I forgot the recall this patch. In fact, inheriting qemu is needed because it sets a clear barriar for people to use qemu user mode. And the QEMU_OPTIONS settings are also in qemu.bbclass. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* recipes: adapt to qemu.bbclass refactoringChen Qi2025-05-031-3/+1
| | | | | | | | | | | Avoid inheriting qemu.bbclass and use oe.qemu.xxx instead. Also, the 'qemu-native' dep is replaced by 'qemuwrapper-cross' for PACKAGE_WRITE_DEPS. qemuwrapper-cross is the one that is actually used by postints and it has 'qemu-native' in DEPENDS. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* check-version-mismatch.bbclass: skip go/src directoryChen Qi2025-04-191-0/+1
| | | | | | | | | Files under it are source files. And if go/src locate under /usr/lib, this will result in very long LD_LIBRARY_PATH causing failure. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* check-version-mismatch.bbclass: handle non-elf executablesChen Qi2025-04-191-0/+60
| | | | | | | | | | | | | | Using qemu to run non-elf executables such as shell scripts directly is destined to fail. In such case, we check its interperter and try out best to run it accordingly. We'll also need to skip the "/etc" directory as files under it are configuration files and init scripts. And the init script will send SIGTERM and SIGKILL to all processes, giving users annoying behavior. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* check-version-mismatch.bbclass: ensure sysroot is availableChen Qi2025-04-191-1/+1
| | | | | | | | | We need to ensure sysroot is available for this version check task, otherwise, running binaries might fail because of lack of libraries from sysroot. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* check-version-mismatch.bbclass: avoid meaningless checkingChen Qi2025-04-191-0/+8
| | | | | | | | | If users set CHECK_VERSION_PN for a recipe and its value is a single '%', then it matches anything. So there's no point doing any further check. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* check-version-mismatch.bbclass: avoid single '(' in version outputChen Qi2025-04-191-0/+2
| | | | | | | | Avoid a single '(' in version. For example, we want to extract the '2.30.31' instead of '2.30.31(2' for lvm2. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
* version-check.conf: add mechanism for checking version mismatchChen Qi2025-04-041-0/+399
Add a mechanism to check mismatch between runtime version and build time version. To use, add the following line to local.conf: include conf/version-check.conf Ideally, layers will have their own conf/version-check.conf to establish some baseline, so that any future warning indicates some error. In such case, users can use include_all: include_all conf/version-check.conf The basic idea is to use qemu to run executables at build time, extract possible versions, and check if there's a mismatch found. Python meta data and .pc files are also checked for quick match. This is because such info are also easy to be checked by users. check-version-mismatch.bbclass is the class that does the actual work. A new variable, CHECK_VERSION_PV, is introduced. It defaults to ${PKGV}, but also allows override. This allows us to handle special cases in each layer. version-check.conf is the configuration file that makes this functionality easier to use and draws some baseline. It contains some override settings for some recipes. With these overrides, all recipes in oe-core are handled well. All warnings are valid warnings. Note that 'ps' is added to HOSTTOOLS in version-check.conf. This is because we need 'ps' to find stale processes and then clean them. The warnings are like below: WARNING: time-1.9-r0 do_package_check_version_mismatch: Possible runtime versions ['UNKNOWN'] do not match recipe version 1.9 WARNING: python3-unittest-automake-output-0.2-r0 do_package_check_version_mismatch: Possible runtime versions ['0.1'] do not match recipe version 0.2 WARNING: pinentry-1.3.1-r0 do_package_check_version_mismatch: Possible runtime versions ['1.3.1-unknown'] do not match recipe version 1.3.1 ... There will be a data directory containing all details: tmp/check-version-mismatch. This directory contains detailed data for each recipe that is built. If users don't want it, they can set DEBUG_VERSION_MISMATCH_CHECK to 0. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>