summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe/qa.py
Commit message (Collapse)AuthorAgeFilesLines
* insane: Drop oe.qa.add_message usageRichard Purdie2024-08-291-6/+0
| | | | | | | | | | | | | | | Drop the oe.qa.add_message() usage in favour of oe.qa.handle_error() which has code allowing it to be optimised with contains usage. The patch also drops unused return values which we stopped using a while ago and drops the now unneeded function parameters, generally leading to cleaner code. The code should be functionally equivalent. (From OE-Core rev: 9b2eea9fd4eab4f5e12e955738db22091b91f698) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe: Use new visitorcode functionality for qa.handle_error()Richard Purdie2024-08-291-0/+16
| | | | | | | | | | | | | | | | | | | | Early functions like do_recipe_qa (which do_fetch depends upon) reference oe.qa.handle_error() which in turn adds dependencies on ERROR_QA and WARN_QA. This means that ERROR_QA:append = " nothing" will cause literally everything to rebuild and break sstate reuse. Take advantage of new bitbake functionality to add a custom visitorcode function to handle_error which optimises the references into contains expressions which means the ERROR_QA and WARN_QA references are optmised to containing specific strings. This dramatically improves sstate reuse. The qa module has to be imported first since other code in later modules references it and bitbake can't handle the dependency ordering internally without a lot of unwanted complexity. (From OE-Core rev: a911ea9659503e9442a183f366e4545a5efe246e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/qa: update guidelines link for Upstream-StatusMichael Opdenacker2023-09-221-1/+1
| | | | | | | (From OE-Core rev: a8781a8f02c924d8a19e727e5d1bc6b89bf976da) Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/qa: remove obsolete "Accepted" string for Upstream-StatusMichael Opdenacker2023-09-221-1/+1
| | | | | | | | | | Replaced by "Backport" since release 3.2 https://docs.yoctoproject.org/migration-guides/migration-3.2.html#miscellaneous-changes (From OE-Core rev: 4053fa9184fd016cfa59a67ff7857e17d88bf25e) Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane.bbclass: move Upstream-Status logic to oe.qaMartin Jansa2023-02-191-0/+17
| | | | | | | | | | * to be used by standalone script scripts/contrib/patchreview.py as well (From OE-Core rev: c326efeec8f576200728a44c694becdeab4fe2db) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib: Add copyright statements to files without oneRichard Purdie2022-08-121-0/+2
| | | | | | | | | Where there isn't a copyright statement, add one to make it explicit. Also add license identifiers as MIT if there isn't one. (From OE-Core rev: bb731d1f3d2a1d50ec0aed864dbca54cf795b040) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane.bbclass: use multiprocessing for collecting 'objdump -p' outputAlexander Kanavin2022-02-081-0/+6
| | | | | | | | | | | | | This was prompted by ltp's unreasonably long package_qa times; it has a massive amount of executables and insane runs objdump for all of them, serially. This reduces the time from 4 minutes to 1m20s on my machine. (From OE-Core rev: fac984b99fdb46949879516cb87153860f402c75) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/qa,insane: Move extra error handling functions to libraryMike Crowe2021-10-171-0/+34
| | | | | | | | | | | | | | | | | | | | | | | Extract package_qa_write_error, package_qa_handle_error and package_qa_add_message functions from insane.bbclass to lib/oe/qa.py and drop the package_qa_ prefixes. Update various bbclasses to use the new functions. No import is required since base.bbclass puts oe.qa in OE_IMPORTS. Stop requiring callers to manually track whether a fatal error has been encountered via a "sane" flag. Instead replace the QA_SANE variable with QA_ERRORS_FOUND and call oe.qa.exit_if_errors or oe.qa.exit_with_message_if_errors at the end of each task. Inspired by discussion resulting from https://lists.openembedded.org/g/openembedded-core/message/156793 and https://lists.openembedded.org/g/openembedded-core/message/156900 (From OE-Core rev: f0ad152ef4cc15c042bc9eeefb6af096d054b220) Signed-off-by: Mike Crowe <mac@mcrowe.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/qa: handle the 'no specific instruction set' ELF e_machine valueRoss Burton2020-12-201-0/+1
| | | | | | | | [RP: Update OEQA selftest to match change] (From OE-Core rev: b7cfc0f51cc0b4866f913f6eae4fcc6f72d2578c) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* chrpath: Cleanup and fix previous patchRoss Burton2019-12-291-1/+3
| | | | | | | | | Ensure self.data isn't accessed without assignment. Also clean up old style popen use and replace with modern/simpler subprocess. (From OE-Core rev: 39825cba4761a6b4b2473825705975f9f421ec8b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta/lib+scripts: Convert to SPDX license headersRichard Purdie2019-05-091-0/+4
| | | | | | | | | | | | | | | | | | | | | | | This adds SPDX license headers in place of the wide assortment of things currently in our script headers. We default to GPL-2.0-only except for the oeqa code where it was clearly submitted and marked as MIT on the most part or some scripts which had the "or later" GPL versioning. The patch also drops other obsolete bits of file headers where they were encoountered such as editor modelines, obsolete maintainer information or the phrase "All rights reserved" which is now obsolete and not required in copyright headers (in this case its actually confusing for licensing as all rights were not reserved). More work is needed for OE-Core but this takes care of the bulk of the scripts and meta/lib directories. The top level LICENSE files are tweaked to match the new structure and the SPDX naming. (From OE-Core rev: f8c9c511b5f1b7dbd45b77f345cb6c048ae6763e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane: Recognise BPF as a valid EM_MACHINE typeKhem Raj2018-09-131-1/+2
| | | | | | | | | | | | | | | | BPF Linux ELF objects are generated with kernel-selftests with >= 4.18 kernel and when clang is enabled which packages BPF objects into packages, therefore recongnise this as a valid ELF target Add a selftest for BPF Do not flag BPF objects in target, since they pretty much will be ok for most of kernels architectures we care do support BPF (From OE-Core rev: 3667a8ec016bae3f8026ef7b4c895546804f6368) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: remove True option to getVar callsJoshua Lock2016-12-161-2/+2
| | | | | | | | | | | | | getVar() now defaults to expanding by default, thus remove the True option from getVar() calls with a regex search and replace. Search made with the following regex: getVar ?\(( ?[^,()]*), True\) (From OE-Core rev: 7c552996597faaee2fbee185b250c0ee30ea3b5f) Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/qa: handle binaries with segments outside the first 4kbRoss Burton2016-11-151-41/+41
| | | | | | | | | | | | | | The ELF parser was assuming that the segment tables are in the first 4kb of the binary. Whilst this generally appears to be the case, there have been instances where the segment table is elsewhere (offset 2MB, in this sample I have). Solve this problem by mmap()ing the file instead. Also clean up the code a little whilst chasing the problem. (From OE-Core rev: a66660aa5bb709547ce0b65a4563e4217c3c3d9f) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/qa: add ELF machine to string functionRoss Burton2016-10-111-0/+20
| | | | | | | | | | Add a function (and test suite) to turn the ELF machine field (e_machine) into a string, so we can tell the user "x86-64" instead of 0x3E. (From OE-Core rev: 72336003741fb16a7ecdd6b753eae56310413ff7) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/lib: Complete transition to python3Richard Purdie2016-06-021-14/+14
| | | | | | | | | This patch contains all the other misc pieces of the transition to python3 which didn't make sense to be broken into individual patches. (From OE-Core rev: fcd6b38bab8517d83e1ed48eef1bca9a9a190f57) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta/scripts: python3: rename file -> openRichard Purdie2016-05-211-3/+3
| | | | | | | | | | | | file() API doesn't exist in python 3, convert to open(). Also handle some cases where files aren't closed. Compatible with python 2.7. [Contributions from Ed and Richard] (From OE-Core rev: 0f4ec13e11bb8abe21aba2a28547dfb9372bc377) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta/selftest/scripts: Use print function for python3 compatibilityRichard Purdie2016-05-211-1/+1
| | | | | | | | | | | | Used print function instead of print statement to make the code work in python 3. [Changes from both Ed and Richard] (From OE-Core rev: ced1995694c394d92cb82fb9c25a33dc027a3b69) Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/qa: add method to check if static or dynamic linkedRoss Burton2016-03-261-5/+39
| | | | | | | | | | It's useful to know if a binary is statically or dynamically linked, so add a method to determine this. (From OE-Core rev: 96813445e6618fd8442600d81e53c448310b6e8b) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/qa: add explicit exception for 'file isn't an ELF'Ross Burton2016-02-281-6/+9
| | | | | | | (From OE-Core rev: 4c1fe0cbcb98b0a69ad5b3a04432055d773ee4ba) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/qa.py: raise ValueError if file isn't an ELFRoss Burton2016-02-161-7/+7
| | | | | | | | | | | | | Instead of raising a generic Exception that can't be handled specifically, raise a ValueError. Also update the callers so any unexpected exceptions are not ignored. Also, rename isBigEngian() to isBigEndian(). (From OE-Core rev: c136652f9c0b35aafa393e63567daf029ae03929) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/qa: ELFFile: check that a path is a file before opening itRoss Burton2016-02-161-0/+3
| | | | | | | | | | | | | When opening an ELF file check that a filename points to a normal file before attempting to open it, as if the file turns out to be something more exotic like a FIFO it could hang forever. (From OE-Core rev: 4b3576bc30d8f8cdcde25189def8b059fc92b27c) (From OE-Core rev: d3af2058e2753516b9aaf7f6d71162363eea11d4) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* image/kernel-module-split/eglibc-ld.inc: Remove has_key() usageRichard Purdie2013-05-091-1/+1
| | | | | | | | | The has_key() attribute has been removed in python 3 since there is better syntax available. Use the improved syntax. (From OE-Core rev: 3dff13793e875ff58cc38c4a960caca9b6969843) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/recipes/lib: Fix various python whitespace issuesRichard Purdie2013-05-091-1/+1
| | | | | | | | | There are some left over tab characters in the python functions. This removes them and resolves python 3 errors. (From OE-Core rev: fafeb381c48291fa65c634c01c244843c8d7fad3) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* clases/lib: Use modern exception syntaxRichard Purdie2013-05-091-1/+1
| | | | | | | | | Update older code to use modern exception handling syntax which is the form accepted by python 3. (From OE-Core rev: b010501cd089e649a68f683be0cf4d0aac90fbe3) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* qa.py: Toolchain path should not be hardcoded to execute objdumpMuhammad Shakeel2012-12-061-2/+2
| | | | | | | | | | | | | | Currently objdump command is invoked from the STAGING_BINDIR_TOOLCHAIN directory. In case of external toolchain if this directory doesn't exist then objdump fails to execute. Instead of hardcoding the path it should search PATH to find it. (From OE-Core rev: a3a0e29d5d796fdf6755503cc31e45199b79d756) Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* qa.py: Modify the env for the child process onlyMuhammad Shakeel2012-12-041-1/+1
| | | | | | | | | | | | Modified environment is only required for new subprocess to execute objdump command and not for the current process. We should only modify the copy of env to pass it on to the child. (From OE-Core rev: cb3b046450b47739daf441a0b964823aff2472e6) Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Muhammad Shakeel <muhammad_shakeel@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe/qa: Trap exceptions when running objdumpPhil Blundell2012-10-181-2/+7
| | | | | | | | | | | | | This avoids propagating a failure if we encounter an ELF file that objdump can't parse for any reason. Some versions and/or configurations of objdump will refuse to read files for "the wrong" architecture. (From OE-Core rev: 11f5998e539f7b884ae1387252f8995b2dc7437f) Signed-off-by: Phil Blundell <pb@pbcl.net> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane: Rationalise phdrs-based QA checksPhil Blundell2012-10-181-0/+17
| | | | | | | | | | | | | | | | | | Various different QA checks are based on essentially the same data from the ELF program headers. Calling objdump to extract it repeatedly is inefficient, particularly if the shell is involved. Instead, let's cache the output from objdump inside the qa.elf object and allow it to be reused by multiple tests. Also, using objdump instead of scanelf to check for bad RPATHs (in the same way that the useless-rpaths check was doing already) allows the dependency on pax-utils-native to be dropped. (From OE-Core rev: bf19eeb9f65e91bf2b5d89e7c0b099c55d7c15ff) Signed-off-by: Phil Blundell <philb@gnu.org> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* qa.py: Fix a typo when evaluating bitsizeMark Hatle2011-03-031-2/+2
| | | | | | | | | This should be setting a variable, not performing a comparison. (From OE-Core rev: cbe1b8277c610e8e31d1270757877300532bed56) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane.bbclass: Fix ELF bitsize comparisonMark Hatle2011-03-031-4/+17
| | | | | | | | | | | | | | | | Fix the way the ELF size is compared to ensure that incorrectly sized ELF binaries are captured during the file scan. lib/oe/qa.py is changed to accept a bitsize as a parameter. Instead of previously defining true/false, it now takes "0" undefined, "32" 32-bit, and "64" 64-bit as the size argument. This allows us to preserve existing behavior of only loading one ELF type, while allowing the function to be able to discover the size on it's own. (From OE-Core rev: 17dae13fabe2932a47ecc86fcafb1d177226513f) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* lib/oe: Import oe lib from OE.devJoshua Lock2010-05-061-0/+76
This library moves the common Python methods into modules of an 'oe' Python package. Signed-off-by: Joshua Lock <josh@linux.intel.com>