summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa
Commit message (Collapse)AuthorAgeFilesLines
...
* oeqa/utils/postactions: isolate directory creation in dedicated actionAlexis Lothoré2024-02-271-6/+10
| | | | | | | | | | | | | | | In order to be able to create actions that could store new files during failed test post actions, we need to split artifacts directory creation from artifacts retrieval. Create a new dedicated action to create artifacts main directory so we can add actions creating files in this new directory, without worrying about actions order if at least this action is set first. (From OE-Core rev: 5d796586a9342f4f984494a5b493dbaf77af7026) Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* testimage: create a list of failed test post actionsAlexis Lothoré2024-02-271-0/+68
| | | | | | | | | | | | | | | | | | | | | testimage is able to detect whenever a test run leads to some tests failing, and execute some actions in this case. The only action currently defined in such case is to retrieve artifacts from the target under test, as listed in TESTIMAGE_FAILED_QA_ARTIFACTS In order to be able to add multiple actions, define a central function to gather all "post actions" to run whenever a test has failed (run_failed_tests_post_actions). This function contains a table listing all functions to be called whenever a test fails. Any function in this table will be provided with bitbake internal data dictionary ("d") and the current runtime testing context ("tc"). Isolate all this feature in a dedicated postactions.py file inherited by testimage. This patch does not bring any functional change. (From OE-Core rev: c01aa8df0613a103859b4431d3cc5056b2fef1b8) Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oeqa: share get_json_result_dir helperAlexis Lothoré2024-02-273-10/+11
| | | | | | | | | | | | | Multiple places in oeqa need to get the log output path, and redefine a small helper to accomplish this Define this helper in lib/oeqa/utils/__init__.py and import it wherever needed to allow using it. (From OE-Core rev: 01b1a6a5a4e7cede4d23a981b5144ae9c8306274) Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* selftest-users: Convoluted selftest for USERADD_DEPENDSEilís 'pidge' Ní Fhlannagáin2024-02-241-0/+4
| | | | | | | | | | This adds a test for 13904's fix by creating a convoluted set of recipes with USERADD_DEPENDS in non-alpha order. (From OE-Core rev: bfff81195cb9ba2493e366022470b2e0051d8071) Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* recipetool: Fix errors with meta-poky bbappendRichard Purdie2024-02-231-0/+2
| | | | | | | | | | | When a new base-files bbappend was added to meta-poky, it causes selftest failures. Whilst this isn't ideal, workaround that issue for now since the append is being added for security visibility and changing the tests to support this more generically looks invasive. (From OE-Core rev: 7cf85204f0943bf741ffce5c4105340197c714df) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest/rust: Simplify the rust testsuite output gathering/processingRichard Purdie2024-02-231-5/+8
| | | | | | | | | | | | | The rust testsuite was redirecting command output to a file, which made it hard to debug failure cases since the logs were not available to print to the console. Rework the code so it uses the existing popen logging and hence allows us to improve the error logging situation and make debugging failures easier. (From OE-Core rev: ac82dc43b8151ed34c4ad51e9ab7f4a612990486) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* recipetool; add support for python_mesonpy classTim Orling2024-02-201-0/+19
| | | | | | | | | | | | | | | | | * Add support to detect the "mesonpy" build-backend for recipetool create. * Add oe-selftest case for creating a recipe for "siphash24" from pypi. https://pypi.org/project/siphash24/ This is by far the simplest recipe using the mesonpy build backend. Upstream does not provide LICENSE file(s) and we do not detect the LICENSE so don't check for that result in the test. Likewise, upstream does not define HOMEPAGE, so skip that result. (From OE-Core rev: 256749322671d2f4ea994db671d73c4de10e1723) Signed-off-by: Tim Orling <tim.orling@konsulko.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* python: Drop ${PYTHON_PN}Richard Purdie2024-02-201-1/+1
| | | | | | | | | | | python 2 is gone and we don't need the abstraction now, drop the remaining usage of this variable. The definition in python3-dir.bbclass is left for now for other layers. (From OE-Core rev: b566b1e32c7993d1ab7795562f648e52ce186a70) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/patch: Use git notes to store the filenames for the patchesPeter Kjellerstedt2024-02-191-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old way of keeping track of the filenames for the patches that correspond to the commits was to add a special comment line to the end of the commit message, e.g., "%% original patch: <filename>", using a temporary git hook. This method had some drawbacks, e.g.: * It caused problems if one wanted to push the commits upstream as the comment line had to be manually removed. * The comment line would end up in patches if someone used git format-path rather than devtool finish to generate the patches. * The comment line could interfere with global Git hooks used to validate the format of the Git commit message. * When regenerating patches with `devtool finish --force-patch-refresh`, the process typically resulted in adding empty lines to the end of the commit messages in the updated patches. A better way of keeping track of the patch filenames is to use Git notes. This way the commit messages remain unaffected, but the information is still shown when, e.g., doing `git log`. A special Git notes space, refs/notes/devtool, is used to not intefere with the default Git notes. It is configured to be shown in, e.g., `git log` and to survive rewrites (i.e., `git commit --amend` and `git rebase`). Since there is no longer any need for a temporary Git hook, the code that manipulated the .git/hooks directory has also been removed. To avoid potential problems due to global Git hooks, --no-verify was added to the `git commit` command. To not cause troubles for those who have done `devtool modify` for a recipe with the old solution and then do `devtool finish` with the new solution, the code will fall back to look for the old strings in the commit message if no Git note can be found. While not technically motivated like above, the way to keep track of ignored commits is also changed to use Git notes to avoid having different methods to store similar information. (From OE-Core rev: f5e6183b9557477bef74024a587de0bfcc2b7c0d) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/patch: Make extractPatches() not extract ignored commitsPeter Kjellerstedt2024-02-191-0/+46
| | | | | | | | | | | | | | | | If a commit is marked with "%% ignore" it means it is used by devtool to keep track of changes to the source code that are not the result of running do_patch(). These changes need to actually be ignored when extracting the patches as they typically make no sense as actual patches in a recipe. This also adds a new test for oe-selftest that verifies that there are no patches generated from ignored commits. (From OE-Core rev: c3d43de7e54189bf09fbe8e87ddb976e42ebf531) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake-layers: Add test case layers setup for custom referencesJermain Horsman2024-02-191-0/+53
| | | | | | | | | | | | This includes a simple test which creates a layer setup using custom references, and subsequently modifies the resulting layers setup using a different custom reference. (From OE-Core rev: 36701e78cf239261ad21cf58db2934c3c8a5e3e6) Signed-off-by: Jermain Horsman <jermain.horsman@nedap.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oe-setup-build: add a tool for discovering config templates and setting up ↵Alexander Kanavin2024-02-191-2/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | builds This is another piece of the puzzle in setting up builds from nothing without having to write custom scripts or use external tools. After layers have been fetched and placed into their respective locations by oe-setup-layers, one would surely want to proceed to the actual build, and here's how: 1. Without arguments the tool reads available layers from .oe-layers.json file (written out by oe-setup-layers or a fallback under scripts/), prints what templates it has found, and asks the user to select one, as seen below. This will land the user in a shell ready to run bitbake: ============================================= alex@Zen2:/srv/work/alex$ ./setup-build Available build configurations: 1. alex-configuration-gadget This configuration will set up a build for the purposes of supporting gadget. 2. alex-configuration-gizmo This configuration allows building a gizmo. 3. poky-default This is the default build configuration for the Poky reference distribution. Re-run with 'list -v' to see additional information. Please choose a configuration by its number: 1 Running: TEMPLATECONF=/srv/work/alex/meta-alex/conf/templates/configuration-gadget . /srv/work/alex/poky/oe-init-build-env /srv/work/alex/build-alex-configuration-gadget && /bin/bash You had no conf/local.conf file. This configuration file has therefore been created for you from /srv/work/alex/meta-alex/conf/templates/configuration-gadget/local.conf.sample You may wish to edit it to, for example, select a different MACHINE (target hardware). You had no conf/bblayers.conf file. This configuration file has therefore been created for you from /srv/work/alex/meta-alex/conf/templates/configuration-gadget/bblayers.conf.sample To add additional metadata layers into your configuration please add entries to conf/bblayers.conf. The Yocto Project has extensive documentation about OE including a reference manual which can be found at: https://docs.yoctoproject.org For more information about OpenEmbedded see the website: https://www.openembedded.org/ This configuration will set up a build for the purposes of supporting gadget. Please refer to meta-alex/README for additional details and available bitbake targets. ============================================== 2. It is also possible to list available configurations without selecting one using 'setup-build list' or to select and setup one non-interactively with 'setup-build setup'. 3. The full set of command line options is: $ ./setup-build --help usage: setup-build [-h] [--layerlist LAYERLIST] {list,setup} ... A script that discovers available build configurations and sets up a build environment based on one of them. Run without arguments to choose one interactively. positional arguments: {list,setup} list List available configurations setup Set up a build environment and open a shell session with it, ready to run builds. optional arguments: -h, --help show this help message and exit --layerlist LAYERLIST Where to look for available layers (as written out by setup-layers script) (default is /srv/work/alex/.oe-layers.json). $ ./setup-build list --help usage: setup-build list [-h] [-v] optional arguments: -h, --help show this help message and exit -v Print detailed information and usage notes for each available build configuration. $ ./setup-build setup --help usage: setup-build setup [-h] [-c configuration_name] [-b build_path] [--no-shell] optional arguments: -h, --help show this help message and exit -c configuration_name Use a build configuration configuration_name to set up a build environment (run this script with 'list' to see what is available) -b build_path Set up a build directory in build_path (run this script with 'list -v' to see where it would be by default) --no-shell Create a build directory but do not start a shell session with the build environment from it. 4. There's an an added hint in oe-setup-layers about how to proceed (as it is really not user-friendly to fetch the layer repos successfully and then exit without a word), and a symlink to the script from the top level layer checkout directory. 5. The selftest to check layer setup has been adjusted to run a basic check for template discovery and build setup. The revision of poky to be cloned has been bumped to 4.1, as that's the first version with a default template in a standard location. (From OE-Core rev: 1360b64e88cda7dddfb0eca6a64f70c13dafb890) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta/lib/bblayers/buildconf.py: add support for configuration summariesAlexander Kanavin2024-02-191-1/+1
| | | | | | | (From OE-Core rev: 7117e3d08570202c79d618d4fb6a67895b1df564) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scripts/oe-setup-layers: write a list of layer paths into the checkout's top dirAlexander Kanavin2024-02-191-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is beneficial for setting up builds, as this list can be used to determine reliably where the actual layers are, and discover available configurations from them. Also adjust the selftest to check the presence of that file rather than any specific layer in a hardcoded location. Sample output (paths are written relative to the file for relocatability and ease of reading): { "layers": [ "meta-openembedded/meta-filesystems", "meta-openembedded/meta-gnome", "meta-openembedded/meta-initramfs", "meta-openembedded/meta-multimedia", "meta-openembedded/meta-networking", "meta-openembedded/meta-oe", "meta-openembedded/meta-perl", "meta-openembedded/meta-python", "meta-openembedded/meta-webserver", "meta-openembedded/meta-xfce", "poky/bitbake/lib/layerindexlib/tests/testdata/layer1", "poky/bitbake/lib/layerindexlib/tests/testdata/layer2", "poky/bitbake/lib/layerindexlib/tests/testdata/layer3", "poky/bitbake/lib/layerindexlib/tests/testdata/layer4", "poky/meta-poky", "poky/meta-selftest", "poky/meta-skeleton", "poky/meta-yocto-bsp", "poky/meta" ], "version": "1.0" } (From OE-Core rev: 82743f4f767f8016564be0d9d6c0d8fe9e067740) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest/rust: Exclude failing riscv testsRichard Purdie2024-02-181-0/+3
| | | | | | | | | | The rust tests nearly pass for qemurisv64, add the remaining ones to the exclusion list so it matches everythig else in exlcuding all the know to break cases. (From OE-Core rev: 1d6c6e4418c9865a4aeae627e0f130b2181d3657) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* testsdk: Avoid PATH contaminationRichard Purdie2024-02-181-0/+3
| | | | | | | | | | | | | | | | | | The autobuilder has been seeing increasing numbers of testsdk failures where xz was 'missing': ERROR: core-image-sato-1.0-r0 do_testsdk: Couldn't install the SDK: Error: xz is required for installation of this SDK, please install it first This is probably due to xz and it's libraries not being in the sysroots in a way which works without races. Since the SDK should be using the host, fix this. The eSDK already does this to solve a similar problem so copy the code from there. (From OE-Core rev: 39ac3439dfdf2afa67abed4bd32aeb3c14979ded) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oe-selftest devtool: ide-sdk testsAdrian Freihofer2024-02-181-0/+492
| | | | | | | | | | | | | Add some oe-selftests for the new devtool ide-sdk plugin. Most of the workflows are covered. Many thanks to Enguerrand de Ribaucourt for testing and bug fixing. (From OE-Core rev: 458fa66b117ccad690720931f912de09655691dc) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta/lib/oeqa: python 3.12 regexAdrian Freihofer2024-02-133-5/+5
| | | | | | | | | | | | Python 3 interprets string literals as Unicode strings, and therefore \s is treated as an escaped Unicode character which is not correct. Declaring the RegEx pattern as a raw string instead of unicode is required for Python 3. (From OE-Core rev: 9002850f0c2e409d3bc629e36bb360b96326bb64) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest/oelib/buildhistory: git default branchAdrian Freihofer2024-02-131-4/+14
| | | | | | | | | | | | | | | | | | | | | | | | On hosts with git defaulting to main branch the following exception occures: File .../buildhistory.py", line 99, in test_compare_dict_blobs_default blob1 = self.repo.heads.master.commit.tree.blobs[0] ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/git/util.py", line 1114, in __getattr__ return list.__getattribute__(self, attr) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'IterableList' object has no attribute 'master' Support main and master branch for these test cases. Note: setting the default branch with --initial-branch requires git version 2.28 or later. Some of the still supported host distros do not provide this feature yet. (From OE-Core rev: 7df99843d8f31d8e0c2872ff625f4a5abf28f740) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest/recipetool: downgrade meson version to not use pyproject.tomlRoss Burton2024-02-101-11/+13
| | | | | | | | | | | | | | recipetool's pyproject.toml parsing needs tomllib (python 3.11+) or tomli (not a hard dependency), so is prone to failing depending on the host configuration. Downgrade the Meson release used for the checks to 0.52.1, which was the last release before moving to pyproject.toml. (From OE-Core rev: 6dfe573d83687e5431841f062442b54b9fa22ff3) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/runtime/cases: fix typo in information messageMichael Opdenacker2024-02-092-2/+2
| | | | | | | (From OE-Core rev: 901ff496b97119add792912fbb2f1efb1152e7c2) Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* selftest/recipetool: Improve test failure outputRichard Purdie2024-02-091-2/+3
| | | | | | | | | When the test fails, it simply says the file doesn't exist. This isn't helpful so improve the output. (From OE-Core rev: ea6b42485696c6981157a28da2dc9a67f2f3f9c6) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* selftest/recipetool: Factor tomllib test to a functionRichard Purdie2024-02-091-45/+20
| | | | | | | | As more tests start to need this codeblock, factor it into a common function. (From OE-Core rev: c154eba9aa8e7d780ce2c5a18cbc0756a30850d1) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest/recipetool: fix for python 3.12Adrian Freihofer2024-02-081-9/+9
| | | | | | | | | | | | | | | | | | | | | test_recipetool_create_github and test_recipetool_create_github_tarball fail because the old meson version used by these tests cases does not run on Python 3.12. The issue is in the dependencies.py which comes with meson: ERROR: build/tmp/work/recipetool-3z4osyl7/source/git/mesonbuild/ dependencies.py:777: SyntaxWarning: invalid escape sequence '\.' Use meson 1.3.1 (what is currently also used on master) as a reference for these tests. With this version of meson, recipetool creates recipes named meson_git.bb or meson_1.3.1.bb. Since this looks more reasonable than e.g. python3-meson_git.bb the test gets adapted. (From OE-Core rev: 7374a8a2810a6cf027bfefefe87691a3529123ff) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa: replace deprecated assertEqualsAdrian Freihofer2024-02-083-3/+3
| | | | | | | | | | | assertEquals is deprecated since Python 2.7: https://docs.python.org/2/library/unittest.html#deprecated-aliases It throws errors at least on Python 3.12. Replace it by assertEqual. (From OE-Core rev: 68286d0b70cf09a0d2950b48945c9192fb8c8769) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oeqa: rename assertRaisesRegexp to assertRaisesRegexRoss Burton2024-02-081-2/+2
| | | | | | | | | | TestCase.assertRaisesRegexp was renamed to assertRaisesRegex in Python 3.2, so rename to fix a warning during test execution. (From OE-Core rev: 6df44a4b29487bf8ef51bb5ba6467a4056b749cc) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* selftest/SStateCacheManagement: pre-populate the cacheAlexander Kanavin2024-02-081-0/+8
| | | | | | | | | | | | | | | | | | | | | This is another source of the test slowness: for some configurations (building x86 on x86) the cache items are pre-populated in other builds. For others (building 32 bit x86 on arm), they're not. Without this step, the test would build them, write them to a private sstate, and then throw it away. The code is un-pythonic: it follows the style of the rest of the test, and fixing that is perhaps for some other time. With these two changes the notoriously slow test_sstate_cache_management_script_using_machine takes just under 6 minutes, on an arm worker: https://autobuilder.yoctoproject.org/typhoon/#/builders/127/builds/2820/steps/13/logs/stdio (From OE-Core rev: b685c955289bf4d7d70bd0f4c1530b2bf13a30a6) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* selftest/SStateCacheManagement: do not manipulate ERROR_QAAlexander Kanavin2024-02-081-4/+0
| | | | | | | | | | | | | | | This is no longer necessary as selftest enforces buildhistory disabling nowadays. It is also a significant contributor to slowness of the tests: they work by setting up private sstate and retaining autobuilder sstate as a read-only mirror, and if the needed objects aren't in that mirror (as particularly seen on arm hosts), then the whole build stars from scratch - and then is thrown away. (From OE-Core rev: 208c8bc0e168cd2fd5884882b892862c6303fdfe) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* buildcpio.py: Switch to using cpio-2.15Khem Raj2024-02-083-12/+7
| | | | | | | | | | | | | | | | | This helps in getting it building with newer architectures like riscv32 since it has upgraded gnulib over 2.14 which has the needed fixes. Drop the -fno-common workaround as it is already applied to cpio drop --disable-maintainer-mode Fixes configure: WARNING: unrecognized options: --disable-maintainer-mode (From OE-Core rev: 18d303497089d3a7a893ee0eec5b0f0c78cca06d) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* ltp: Enable extra test groupsRichard Purdie2024-02-061-1/+1
| | | | | | | | | Petr Vorel (upstream ltp maintainer) recommended some extra tests we should run. Enable these for extra test coverage. (From OE-Core rev: ebae56999dc2ed7abb65062a9abee53827c3bad3) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* ltp: Update to 20240129Petr Vorel2024-02-051-2/+2
| | | | | | | | | | | | | | | | | | | | Removed patch accepted upstream as 8c53cc947 ("testcases/kernel/syscalls/fcntl: define _LARGEFILE64_SOURCE") Rebase runtest/mm patch. [RP: Drop connectors group since dropped upstream: https://github.com/linux-test-project/ltp/commit/9b642d89c0bcf5885b051c2d5768fa94b61d86cb Drop fsx too: https://github.com/linux-test-project/ltp/commit/fb2b6a0b3c840aa80229acf4360b7bdc3ced5edb ] (From OE-Core rev: b2867cac5ac58862469f0c6c056607abeca0b0d0) Signed-off-by: Petr Vorel <petr.vorel@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest/bbtests: Tweak to use no-gplv3 inc fileRichard Purdie2024-02-051-1/+3
| | | | | | | | | | | With changes to gcc-runtime around improving debugging, python modules are needed but this pulls in bash which breaks the tests. Add an exclusion to the no-gplv3 include file to handle this. (From OE-Core rev: 803060fa4e8fe98ac8f987b80162110d06788946) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* conf: Move selftest config to dedicated inc fileRichard Purdie2024-02-051-14/+2
| | | | | | | | | | | | | | | | Create a no-gplv3.inc file based upon knowledge currently encoded into one of the selftests. There is a risk that people try and take this idea too far, or have unrealistic expectations. That said, it would be better to collect this knowledge together in one location rather than handling it piecemeal. Therefore move the configuration information from the test into a common incude file. (From OE-Core rev: fb822fb2029c69934cf43073f95b396c2d60298e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sdk/assimp.py: Fix build on 32bit arches with 64bit time_tKhem Raj2024-02-051-7/+7
| | | | | | | | | | | | | | | | | | | | This testcase does not work properly with 32bit systems as it houses an older version of zlib which needs to be patched to work with 32bit systems with 64bit time_t e.g. mips o32. Apply a needed patch via sed logic to fix this issue. Enable bundled zlib in build, which means we do not require zlib to be available in SDK and it can be built for more variety of images. Upgrade the testcase to use 5.3.1 release of assimp and add cmake option to enable bundled zlib explicitly. (From OE-Core rev: 3c922fb61aa4f3bbb5c4ef35639acdf263c4313c) Signed-off-by: Khem Raj <raj.khem@gmail.com> Cc: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* setftest/cdn tests: check for exceptions also in fetcher diagnosticsAlexander Kanavin2024-02-021-1/+1
| | | | | | | | | | | Otherwise the output was cluttered with irrelevant lines that were describing missing, but excepted cache objects. (From OE-Core rev: 146e6e88b6c9400eb2c7442a319a6240b00ecaa2) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/qemurunner: Handle rare shutdown raceRichard Purdie2024-01-301-2/+6
| | | | | | | | | | | | | | The pid file can disappear when qemu is shutting down leading to a file not found race before it is read. Tweak the code to handle this and fix a rare but annoying race error case. [YOCTO #15036] (From OE-Core rev: 8c07aac9d55f92fe5fbe3cab9f006efecf266328) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/runtime/rpm: fail tests if test rpm file cannot be foundAlexander Kanavin2024-01-271-7/+11
| | | | | | | | | | | | | | | | | | Discovery of the test file was happening in a class initializer. That block of code cannot fail (it's not a test), and so it falls through to completion even if the needed file could not be found. Then the tests themselves fail later due to class variables not being set, but all information as to why is already lost at that point. This converts the discovery to a helper function called from the tests, so that the function can fail the tests precisely when the problems occur. (From OE-Core rev: 5d7a6ede105ea1efc9c324c7029f9d08dadf7255) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest: add test case to cover 'devtool modify -n' for a git recipeChen Qi2024-01-261-0/+22
| | | | | | | | | | | | | | | | | | | Add a test case to ensure the following error does not happen again for 'devtool modify -n'. Traceback (most recent call last): File "/buildarea2/chenqi/poky/scripts/devtool", line 349, in <module> ret = main() File "/buildarea2/chenqi/poky/scripts/devtool", line 336, in main ret = args.func(args, config, basepath, workspace) File "/buildarea2/chenqi/poky/scripts/lib/devtool/standard.py", line 924, in modify if not initial_revs["."]: KeyError: '.' (From OE-Core rev: 2c2ba5f9497462a190b849a69d8440149f80582a) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* rust: Enable rust oe-selftest.Yash Shinde2024-01-261-1/+6
| | | | | | | | | | | | | | | | | | * Enable rust oe-selftest. * Include the dependent patches for rust oe-selftest in meta/recipes-devtools/rust/rust-source.inc * Disable rust oe-selftest for mips32 target (Rust upstream has classified it into tier 3 target, for which the Rust project does not build or test automatically) as it is unstable with rust tests. https://doc.rust-lang.org/nightly/rustc/platform-support.html#tier-3 * The testing is done on arm32, arm64, mips64, x86 and x86_64 targets on Ubuntu 22.04. (From OE-Core rev: 8f3a2841540fc4779bbd7e11d910edcdc8b47683) Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* rust: Remove the test cases whose parent dir is also present in the exclude listYash Shinde2024-01-261-120/+0
| | | | | | | | | | | | | | | | | To avoid overlap and redundancy of rust tests, remove the test cases whose parent dir is already excluded. Tests which are failing from below dirs are removed as these dirs are already present in exclude list tests/run-make tests/rustdoc tests/mir-opt tests/ui-fulldeps (From OE-Core rev: 58a7f3efa9e31e2c7b90e6490f3e51f388e6a7ce) Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* rust: Add new tests in the exclude list for rust oe-selftestYash Shinde2024-01-261-1/+37
| | | | | | | | | | Add newly failing tests cases in the exclude list for rust oe-selftest. (From OE-Core rev: 50119ddaaa810ad71063691fb1cc30cf8c8456c8) Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest/devtool: add test for recipes with multiple sources in SRC_URIJulien Stephan2024-01-241-0/+26
| | | | | | | | | | add a non regression test for devtool modify/build on recipe having several sources in SRC_URI (From OE-Core rev: 5f195f5e98d5553e41e632eda26392ee70394c88) Signed-off-by: Julien Stephan <jstephan@baylibre.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest/recipetool: Add test coverage for local go modulesVyacheslav Yurkov2024-01-191-0/+55
| | | | | | | (From OE-Core rev: 2d0ccfdca0a6cc1146464585f529fb5115a0b3ea) Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest/recipetool: Move helper function to the class scopeVyacheslav Yurkov2024-01-191-7/+7
| | | | | | | (From OE-Core rev: 89d37266524ca3e7c9eaf9141b30055ebc39aa76) Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/selftest/recipetool: Move create_go test to a proper classVyacheslav Yurkov2024-01-191-13/+11
| | | | | | | (From OE-Core rev: 862b4d2211f2fc81a17def79f06d9672fa5df960) Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* selftest/SStatePrintdiff: ensure all base signatures are present in sstate ↵Alexander Kanavin2024-01-121-15/+19
| | | | | | | | | | | | | | | | | | | | in test_image_minimal_vs_base_do_configure The test relies on all tasks in the dependency tree of the tasks being changed having valid signatures in sstate, so that the recursive discovery of the base invalid tasks stops there, and doesn't go further. This may not always occur, particularly when hash equivalency combined with different build host architectures prevents them from getting created in regular builds: https://autobuilder.yoctoproject.org/typhoon/#/builders/127/builds/2725/steps/15/logs/stdio The other two tests (that change specific recipes) already ensure this, but this test (which changes a basic task definition) does not. (From OE-Core rev: e37445320ca1a8913d6ed768681ff32de24eef94) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* selftest/sstatetests: include fetcher diagnostics into CDN test failure messageAlexander Kanavin2024-01-101-2/+6
| | | | | | | | | | | | | This will help finding out what kind of error the server actually returned, as sporadic CDN failures continue to occur. [YOCTO #15335] (From OE-Core rev: 7f09c4c5a0fe4ff213f205927f618a77b72aeef3) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* selftest/sstatetest: re-enable gcc printdiff testAlexander Kanavin2024-01-101-1/+1
| | | | | | | (From OE-Core rev: 976832eb0c3fc0170a84ff7ab92352ca6f18c383) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* selftest/sstatetests: fix up printdiff test to match rework of printdiff logicAlexander Kanavin2024-01-101-9/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | Other than the formatting changes, there are two functional ones: - use perlcross instead of quilt, as quilt is special in the sense of being excluded from task hash calculcations. perlcross is a full participant. - run the full test (local + sstate) for gcc do_preconfiure change as the necessary fix has been implemented (sstatesig/find_siginfo: special-case gcc-source when looking in sstate caches) Note that when several tasks are found to have changed (as is the case when base do_configure is adjusted), find_siginfo() runs glob.glob("*/*/*taskname*") against autobuilder sstate cache for each of those tasks (six or seven times). This is an expensive operation taking several minutes. I left it in for now, but if it's proven too slow the test would have to be reduced to checking a specific base recipe (e.g. zstd-native) rather than a distant image target. [YOCTO #15289] (From OE-Core rev: 0ef7cf324718412c5b6c376acfbc4079ecd7d465) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa systemd.py: settle() using "running" or "degraded" stateMikko Rapeli2024-01-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | systemd boot has completed when system is in "running" or "degraded" (some services failed) state. Check for that in the systemd settle() function instead of listing all services and checking their activation state since some services are in activation state even when whole system is already in "running" state. Examples of services which can be in activation state are rootfs auto mounting related generated services. Without this patch systemd test_systemd_list (systemd.SystemdBasicTests) times out on an image with dm-verity /usr partition and systemd generated rootfs: NOTE: ... FAIL Traceback (most recent call last): File "/home/builder/src/base/build/../poky/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f return func(*args, **kwargs) File "/home/builder/src/base/poky/meta/lib/oeqa/runtime/cases/systemd.py", line 97, in test_systemd_failed self.assertTrue(settled, msg=msg) AssertionError: False is not true : Timed out waiting for systemd to settle: UNIT LOAD ACTIVE SUB DESCRIPTION dev-disk-by\x2did-dm\x2dname\x2droot.device loaded activating tentativ e /dev/disk/by-id/dm-name-root dev-disk-by\x2did-dm\x2dname\x2dusr.device loaded activating tentativ e /dev/disk/by-id/dm-name-usr dev-disk-by\x2did-dm\x2duuid\x2dCRYPT\x2dLUKS2\x2df2b944f394174eb5918cb6af2c6b4cb2\x2droot.device loaded activating tentativ e /dev/disk/by-id/dm-uuid-CRYPT-LUKS2-f2b944f394174eb5918cb6af2c6b4cb2-root dev-disk-by\x2did-dm\x2duuid\x2dCRYPT\x2dVERITY\x2d3dd703c88f1946658697a6d57617473b\x2dusr.device loaded activating tentativ e /dev/disk/by-id/dm-uuid-CRYPT-VERITY-3dd703c88f1946658697a6d57617473b-usr dev-disk-by\x2duuid-bfbf856e\x2d3c65\x2d4eb2\x2d9ffb\x2d8e0b11641d85.device loaded activating tentativ e /dev/disk/by-uuid/bfbf856e-3c65-4eb2-9ffb-8e0b11641d85 dev-dm\x2d0.device loaded activating tentativ e /dev/dm-0 dev-dm\x2d1.device loaded activating tentativ e /dev/dm-1 ... Fix is to check for the systemd global "running" or "degraded" state. Note that it would be possible to use a blocking call "systemctl is-system-running --wait" to exit after system enters "running" or "degraded" state but using the existing loop for a 2 minute timeout. (From OE-Core rev: 3b013ae441d117adeda0d9950e02e9f7d0deba2f) Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>