Upgrade to release 7.17.0:
- Dropped support for Python 3.10.
- Binary wheels are now provided for iOS and Android. This allows
the use of the optimized C tracer on mobile platforms.
- Fix: three or more levels of nested with statements could make a
with line look like a branch with an exit that can never happen.
Using the sys.monitoring core, these phantom branches were
reported as partial. Other cores hid the problem but still
counted the phantom branches in the total.
- Fix: a comment or string that merely mentioned if True: or while
True: could mark its line as a branch that is known to be
partial, so a branch that never ran was reported as taken. These
built-in patterns now only match at the start of the statement.
- Fix: region detection missed functions defined in unusual places,
such as else and except clauses. This is now fixed.
- Fix: recent versions of the lcov tool complain if the same
function name appears more than once in a report. Python can have
multiple same-named functions in a few ways, for example,
getters/setters or conditionally defined functions. These are now
disambiguated by adding a @<line number> suffix to the function
name.
- Fix: The "Can't combine statement coverage data with branch data"
error now names the two data files it couldn’t combine. The error
description in the docs now lists common causes and how to find
the process that wrote the file.
- Fix: at coverage totals close to 0 or 100, the XML report could
get incorrect line-rate values like 8.333e-05 or 1. This is now
fixed.
- Fix: a parallel data file saved more than once kept the hash of
its first save in its file name. Combining could then skip it as
a duplicate of another file that had the same data at that point,
and delete it, losing the data recorded after the first save.
Each save now updates the hash. This had been a problem since
7.13.1.
- Fixes for obscure but legal file names:
- File names (and plugin names) can contain control characters,
which are legal in POSIX paths but unsafe in reports: in XML
1.0 they make the document non-well-formed, and in a terminal
they act as escape sequences (colors, title/clipboard
sequences, cursor moves that forge output). Now the XML report,
the text and Markdown summary reports, and coverage debug data
replace non-printable characters in names. Printable names are
unchanged.
- A file pattern (from include, omit, or a [paths] alias)
containing a newline sent the glob-to-regex translation into an
infinite loop, hanging the process. Newlines in patterns are
now handled like any other character.
- Fixes in the implementation of the C tracer:
- If a plugin’s dynamic_source_filename method raised an
exception, lines in that function could be recorded as
belonging to a different file. Also fixed some minor memory
leaks in the C tracer.
- The refcount of None was mismanaged during function calls,
including comprehensions. This was unlikely to cause an actual
problem, but is now fixed. Thanks, Andrew Dalke.
- The C tracer held borrowed references to dictionary values,
which was unsafe on free-threaded Python. Now it takes its own
references.
- An internal error while recording a new file could be reported
as a confusing SystemError instead of the actual exception.
- Performance: the text summary report (coverage report) held on to
every file’s parsed source until it finished, so its memory use
grew with the size of the project: ten times or more what 7.14
used on large projects. Now it keeps only what it needs to print.
- Performance: HTML reports should be about 5% faster to produce.
- Kept the political banner in the README.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 26.10.2:
- Fix reading the TLS peer certificate
(TransportDetails.peer_cert) with pyOpenSSL 26.2.0 and later:
autobahn.twisted.util.extract_peer_certificate() raised
AttributeError: 'X509' object has no attribute 'get_extension'
for every certificate with extensions, as pyOpenSSL removed its
X.509 extension API (and deprecates the rest of its X509 API).
The certificate is now read with cryptography, in the new
backend-neutral autobahn.util.peer_certificate_details(), which
also never raises on certificate content it cannot parse (it is
peer data, read before authentication): extensions, or a subject
or issuer, that cannot be read are left empty. The peer_cert dict
keeps its keys and formats, except: ⚠ extensions[].value was
OpenSSL's text; a subject or issuer alternative name is still
given as OpenSSL prints it (DNS:localhost, IP Address:127.0.0.1),
other extensions now as cryptography prints them; and
signature_algorithm is ed25519 instead of ED25519 for Ed25519
certificates
- Fix the TLS peer certificate never being available on Twisted
WebSocket and RawSocket connections: it was read when the TCP
connection was made, before the TLS handshake, and so was always
None. It is now read when the TLS handshake is complete, together
with the TLS channel ID. With this, TLS client certificate
authentication (Crossbar.io authmethod tls, and dynamic
authenticators reading transport.peer_cert) works again
- Fix asyncio: fill TransportDetails.peer_cert (it was always
None), and treat a TLS server connection without a client
certificate as secure, with a TLS channel ID: is_secure was
derived from the peer certificate, so WAMP-cryptosign with
channel binding failed on asyncio servers
- Behaviour change - the TLS channel ID tls-unique on Twisted now
follows RFC 5929 (the first TLS Finished message of the
handshake, in a full handshake the client's), as Python's ssl
module, and so autobahn on asyncio, already did. Twisted used the
server's Finished message, so WAMP-cryptosign with channel
binding failed between Twisted and asyncio peers over WebSocket,
and between Twisted RawSocket peers (whose protocols did not set
is_server, so the client side used the wrong message). Twisted
peers on autobahn 26.10.1 or older and on 26.10.2 no longer agree
on the channel ID over WebSocket: upgrade both sides of
connections that use channel binding (#2014) Work around a PyPy
bug: PyPy's ssl module (up to at least PyPy 7.3.23) returns the
server's TLS Finished message from
get_channel_binding("tls-unique") instead of the first (the
client's), so autobahn on asyncio on PyPy disagreed with all
other peers on the channel ID. The new autobahn.util.tls_unique()
uses PyPy's own tls_unique_cb() on PyPy, which returns the right
message
- TransportDetails.is_server is now set on Twisted RawSocket and
asyncio WebSocket connections (it was None)
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 1.20.1:
bug:
- [bug] [autogenerate] Fixed issue where a table or column comment
set to an empty string would cause autogenerate to detect a
comment change on every run. As most backends, including
PostgreSQL, MySQL, MariaDB and Oracle, don't store an empty
string comment distinctly from no comment, autogenerate now
treats an empty string comment the same as None when comparing
comments. Additionally, an empty string comment is now rendered
in op.create_table() and op.add_column() directives, where it was
previously omitted. Pull request courtesy vineoy.
- [bug] [autogenerate] [postgresql] Fixed rendering of the
PostgreSQL ~sqlalchemy.dialects.postgresql.DOMAIN type in
autogenerated migration scripts. Previously the type was
rendered using repr(), which omitted the check, not_null,
default, collation, constraint_name, schema and create_type
arguments and did not apply a dialect prefix to the underlying
data type. The full set of arguments is now rendered and the
underlying data type is rendered using the standard
type-rendering logic. Pull request courtesy Sebastian Cao.
- [bug] [autogenerate] [postgresql] Fixed false-positive "Computed
default cannot be modified" warning emitted during autogenerate
when comparing PostgreSQL Computed columns whose reflected SQL
expression includes type cast specifiers such as ::regconfig or
::text, which PostgreSQL adds to the expression as stored. These
cast specifiers are now stripped before comparison so that
otherwise equivalent expressions no longer trigger the warning.
Pull request courtesy Sebastian Cao.
- [bug] [autogenerate] [postgresql] Fixed issue where autogenerate
would detect an unchanged PostgreSQL expression-based index as
modified when the expression included type casts, such as a cast
to a type with a length or precision, a nested cast, or a cast
followed by a DESC modifier.
- [bug] [postgresql] Fixed bug where Operations.alter_column()
against a PostgreSQL identity column would render an incomplete,
invalid ALTER TABLE ... ALTER COLUMN statement with no clause at
all when existing_server_default was omitted, even if there were
no existing server default. Pull request courtesy Riti Grover.
- [bug] [environment] Fixed issue where a third party plugin
published using the alembic.plugins entrypoint, configured to
refer to a plugin module as documented at
alembic.plugins.toplevel, would cause import alembic to fail with
a TypeError, as the loaded module was erroneously iterated rather
than being set up directly. An entrypoint that refers to a
collection of modules, the form which inadvertently worked
previously, continues to be accepted but now emits a deprecation
warning.
- [bug] [autogenerate] Fixed issue where dialect-specific keyword
arguments on a ForeignKeyConstraint, ForeignKey or
CheckConstraint, such as postgresql_not_valid, were not rendered
for the constraints that are part of an autogenerated
Operations.create_table() directive, nor for an autogenerated
Operations.create_check_constraint() directive. The
Operations.create_table() case additionally requires SQLAlchemy
2.0.55 / 2.1.5 or greater.
- [bug] [autogenerate] Fixed issue where, when using SQLAlchemy
2.1, the CHECK constraint generated by a type such as
~sqlalchemy.types.Enum or ~sqlalchemy.types.Boolean with
create_constraint=True would be rendered by autogenerate as
explicit sa.CheckConstraint() entries within op.create_table(),
in addition to the type itself which already produces that
constraint, leading to a duplicate constraint error when the
migration is run.
- [bug] [operations] Fixed issue where a CreateTableOp produced
from an existing ~sqlalchemy.schema.Table using
CreateTableOp.from_table() would emit the CHECK constraint
generated by a type such as ~sqlalchemy.types.Enum or
~sqlalchemy.types.Boolean with create_constraint=True twice in
the resulting CREATE TABLE statement when invoked directly.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Drop the Cython version patch, as upstream has a wider range now.
async-timeout was removed as an dependency upstream in v1.90.0.
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to addresses eMudhra certificates issue.
See https://emudhra.we-have-a-problem.com/
Sync all grpc recipes to the same version.
Removed obsolete patches:
* The compiler-argument fix is already handled upstream using
shlex.split()
* Bundled protobuf now restricts musttail to AArch64 and x86-64, so the
MIPS exclusion patch is unnecessary.
License-Update: switched from license to license expression
orig: License: Apache License 2.0
New: License-Expression: Apache-2.0
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to addresses eMudhra certificates issue.
See https://emudhra.we-have-a-problem.com/
$ git log --oneline v1.84.0..v1.84.1
b0c0c4f882 (HEAD -> v1.84.x, tag: v1.84.1) [Release] Bump version to 1.84.1 (on v1.84.x branch) (#43709)
405e6a1c30 [Backport][v1.84.x][security] Update gRPC repo roots. (#43700)
826616aed4 [Backport][v1.84.x][CI] Various macOS CI reliability fixes (#43701)
49d6985875 [PSM Interop][Backport v1.84.x] Update xDS legacy test scripts for health proto pa… (#43572)
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The object id counter in src/weak_ref.rs is a std AtomicU64, which is
not available on targets without 64-bit atomics, so the build fails
for riscv32:
error[E0432]: unresolved import `std::sync::atomic::AtomicU64`
Add a patch that keeps the 64-bit counter in a Mutex instead. The code
has since been removed upstream.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
do_configure reads the per architecture cross-answers file from the
layer by path rather than through SRC_URI, so editing it does not
change the task signature, and existing builds keep the old answers
until they are reconfigured by hand.
Make the answers directory a variable and add the file to
do_configure[file-checksums].
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The riscv32 cross answers were derived from arm, but riscv32 has no
legacy 32-bit credential syscalls such as setresuid32, so samba asks
"Checking whether we can use Linux thread-specific credentials" instead
of the "with 32-bit system calls" variant. With no answer, configure
fails:
Checking whether we can use Linux thread-specific credentials : not found
...
The configuration failed
Answer it like riscv64 and aarch64 do.
riscv32 also has a 64-bit time_t, so the time_t maximum value check
succeeds like on 64-bit targets. Answer it OK so that samba does not
limit TIME_T_MAX to INT32_MAX.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
src/lib/util.h uses bool without including stdbool.h, which fails to
build where no other header pulls it in, e.g. with clang on riscv32
musl:
src/lib/util.h:68:1: error: unknown type name 'bool'
Add a patch that includes it.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
It depends on glycin, which is not available on riscv32, as it
requires libseccomp, which is not ported to rv32.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
crossbeam-utils 0.8.16 does not recognize the riscv32-yoe-linux-musl
target as lacking 64-bit atomics, and rustix 0.38.20 with linux-raw-sys
0.4.10 lacks ioctl definitions for riscv32, so the build fails.
Add a patch that updates them in Cargo.lock to crossbeam-utils 0.8.23,
rustix 0.38.44 and linux-raw-sys 0.4.15, and regenerate sd-crates.inc.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
When cross compiling, ibus builds unicode-parser with CC_FOR_BUILD and
the glib flags from PKG_CONFIG_FOR_BUILD. That defaults to the native
pkg-config binary, but with the target PKG_CONFIG_PATH and sysroot, so
the build tool is compiled against the target glib headers. On 32-bit
targets glib's static assertions then fail with the 64-bit host
compiler:
glib/gmacros.h:910:31: error: static assertion failed: "Expression evaluates to false"
Pass pkg-config-native, which uses the native sysroot, as
PKG_CONFIG_FOR_BUILD.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
rice-proto counts agents in a core AtomicU64, which is not available on
targets without 64-bit atomics, so it fails to build for riscv32:
error[E0432]: unresolved import `core::sync::atomic::AtomicU64`
Add a patch that uses AtomicUsize for it, like the other id counters
in rice-proto, keeping the u64 agent id.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add patches to the vendored crates:
- libc: Add the syscall numbers 443 to 450, which riscv32 musl lacks
and rustix needs for SYS_futex_waitv.
- fff-search, rmcp, nu-command and nu-dap: Use the 64-bit atomics from
portable-atomic on targets without 64-bit atomics, where std does not
provide them, and record the dependency in Cargo.lock since the build
uses --frozen.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
std only provides AtomicU64 on targets with 64-bit atomics, so ruff
fails to build for riscv32:
error[E0432]: unresolved import `std::sync::atomic::AtomicU64`
--> crates/ruff/src/cache.rs:7:25
Add a patch that uses portable-atomic's AtomicU64 for the cache
timestamp on such targets, archived in the same on-disk format.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
floret keeps its training token counter in a std::atomic<int64_t>. On
riscv32 its operations become __atomic_*_8 libcalls, and floret is not
linked with libatomic, so linking the CLI fails:
ld.lld: error: undefined symbol: __atomic_fetch_add_8
Add a patch that checks in CMake whether 64-bit atomics need libatomic
and only then links the libraries with it and adds it to floret.pc.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The vendored libc 0.2.171 crate declares getrandom() for musl only on
some architectures, so the vendored getrandom crate fails to build for
riscv32 musl:
error[E0425]: cannot find value `getrandom` in crate `libc`
Backport the libc 0.2.172 change that declares it for all musl targets,
and update the vendored crate checksums of the modified files.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
klibc only has a riscv64 port, which hardcodes KLIBCBITSIZE = 64 and
uses 64-bit loads and stores in its assembly, and upstream has no
riscv32 port. With KLIBC_ARCH defaulting to TARGET_ARCH, the build fails:
make[1]: *** No rule to make target '.../usr/klibc/arch/riscv32/MCONFIG'. Stop.
Mark klibc and the recipes sharing klibc.inc incompatible with riscv32
so they are skipped instead of failing to build.
Also skip all recipes inheriting klibc
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The encoder uses atomic operations on 64-bit counters. On riscv32 these
become __atomic_*_8 libcalls, and libx265 is not linked with libatomic,
so linking the x265 CLI fails:
ld.lld: error: undefined reference: __atomic_fetch_or_8
>>> referenced by libx265.so.217 (disallowed by --no-allow-shlib-undefined)
Add a patch that checks in CMake whether 64-bit atomics need libatomic
and adds it to the platform libraries only in that case.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
hiawatha uses __atomic_store_n()/__atomic_load_n() on time_t values. On
riscv32, where time_t is 64-bit but there are no 64-bit atomic
instructions, these become __atomic_*_8 libcalls, and linking fails:
ld.lld: error: undefined symbol: __atomic_store_8
Add a patch that checks in CMake whether atomic operations on a time_t
need libatomic and links hiawatha with it only in that case.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The configure check for -latomic links a program that loads from a
local std::atomic<uint64_t>, which clang folds away at -O2. On riscv32
it therefore reports that libatomic is not needed, and linking rtorrent
fails:
ld.lld: error: undefined symbol: __atomic_load_8
Add a patch that makes the test atomic global and modifies it with
fetch_add() so the check cannot be optimized away.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The configure check for -latomic links a program that loads from a
local std::atomic<uint64_t>, which clang folds away at -O2. On riscv32
it therefore reports that libatomic is not needed, and libtorrent.so is
left with undefined __atomic_fetch_add_8, __atomic_fetch_sub_8,
__atomic_load_8 and __atomic_store_8 references and no dependency on
libatomic.
Add a patch that makes the test atomic global and modifies it with
fetch_add() so the check cannot be optimized away.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
do_compile maps HOST_ARCH to the Android architecture and fails for
riscv32, which Android does not support:
ERROR: Unsupported HOST_ARCH=riscv32
Mark the recipe incompatible with riscv32, as for powerpc, so it is
skipped instead of failing to build.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
BufferQueue keeps its memory usage counter in a std::atomic<uint64_t>,
which riscv32 lowers to __atomic_*_8 libcalls, so programs linking the
static libbit7z, such as the ptest binaries, fail to link:
ld.lld: error: undefined symbol: __atomic_fetch_add_8
ld.lld: error: undefined symbol: __atomic_fetch_sub_8
ld.lld: error: undefined symbol: __atomic_load_8
Add a patch that uses a std::size_t counter instead. It sums the sizes
of in-memory buffers, so it always fits, and the atomic is lock-free on
every target, so no libatomic is needed.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The example server keeps the file size in a uint64_t and uses it as the
size of a std::span, which clang rejects as narrowing on targets with a
32-bit size_t, such as riscv32:
examples/server.cc:236:54: error: non-constant-expression cannot be
narrowed from type 'uint64_t' (aka 'unsigned long long') to
'size_type' (aka 'unsigned int') in initializer list [-Wc++11-narrowing]
Add a patch that stores the length as a size_t and rejects files too
large to map instead of truncating their size.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
When cross compiling for a 32-bit target such as riscv32, configure
cannot test the long long snprintf format and builds the replacement
snprintf(), which fails because SIZEOF_LONG and SIZEOF_LONG_LONG are
never defined:
snprintf.c:651:2: error: "cannot find integer type of the same size as size_t"
Add a patch that checks the size of long and long long in configure.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
fio uses 64-bit C11 atomics, which riscv32 lowers to
__atomic_load_8/__atomic_store_8 libcalls, so linking fio fails:
ld.lld: error: undefined symbol: __atomic_load_8
ld.lld: error: undefined symbol: __atomic_store_8
Add a patch that makes configure check whether 64-bit atomics need
libatomic and add it to LIBS only in that case.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
CheckAtomic.cmake tests whether libatomic is needed with a program that
loads from a local std::atomic. With -O2 clang folds the load away, so
the check passes on riscv32 even though 64-bit atomics need libatomic,
and linking fails later:
ld.lld: error: undefined reference: __atomic_fetch_add_8
ld.lld: error: undefined symbol: __atomic_load_8
Add a patch that makes the test programs use a global atomic with a
read-modify-write operation so they cannot be optimized away.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
libmana uses 64-bit C11 atomics, which riscv32 lowers to
__atomic_load_8/__atomic_store_8 libcalls, so linking libmana fails:
ld.lld: error: undefined symbol: __atomic_load_8
ld.lld: error: undefined symbol: __atomic_store_8
Add a patch that checks at configure time whether 64-bit atomics need
libatomic and links libmana with it only in that case.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
ntp_set_tod() passes a long to stime(), which fails to build on 32-bit
targets with a 64-bit time_t, e.g. riscv32 with clang:
libntp/machines.c:483:14: error: incompatible pointer types passing
'long *' to parameter of type 'const time_t *'
Add a patch to use time_t unless the system declares stime() with a
long (DECL_STIME_1), so the argument matches the prototype in use on
every architecture.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
In case the overlayfs-tools are built using meson, a test triggers
during meson setup phase during do_configure task. The test invokes
"sudo", which may not be present on the build machine. Skip the test
at meson setup phase. Tests should be executed separately on demand
using "meson test" command instead, and invoking "sudo" and expecting
it to work during do_configure is unusual.
"
ERROR: overlayfs-tools-v2025.01-r0 do_configure: meson setup failed
...
| Run-time dependency musl-fts found: NO (tried pkgconfig)
| Library m found: YES
| Program test_cases/run_tests.py found: YES (/home/oe/build-some-target/tmp/work/arm64-distro-linux/overlayfs-tools/v2025.01/sources/overlayfs-tools-v2025.01/test_cases/run_tests.py)
|
| ../sources/overlayfs-tools-v2025.01/meson.build:94:0: ERROR: Program 'sudo' not found or not executable
|
| A full log can be found at /home/oe/build-some-target/tmp/work/arm64-distro-linux/overlayfs-tools/v2025.01/build/meson-logs/meson-log.txt
|
| Last 10 lines of meson-log.txt:
| Code:
| int main(void) { return 0; }
"
Signed-off-by: Marek Vasut <marek.vasut@mailbox.org>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
pahole 1.32 takes the whole value of LLVM_OBJCOPY as the objcopy program
name. Kernels up to v6.19, such as the 6.18 LTS, set it from $(OBJCOPY),
which ends with a blank in OE builds, so the kernel link fails when
generating BTF:
btf_encoder__write_elf: failed to add .BTF section to '.tmp_vmlinux1'
Bring the fix submitted upstream, which splits the command into words.
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
docutils 0.23 serializes boolean attributes as "1"/"0" rather than
"True"/"False", which made almost every test_examples case fail; add a
patch that normalizes the value when comparing.
The class, cpp_function, group and headings examples compare against
models generated with doxygen 1.9.x and do not match doxygen 1.18
output, so deselect them in a custom run-ptest.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
fsspec imports ctypes, asyncio, json, logging and threading, which are
not in python3-core, without ctypes "import fsspec" fails, which also
broke the python3-pyyaml-include ptests.
Install the top-level fsspec/conftest.py into the ptest dir, it
provides the "m" fixture and the autouse instance cache cleaner, and
without it most tests error out or fail.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
pandas 3 imports zoneinfo, so without it "import pandas" fails with
ModuleNotFoundError, and later imports in the same interpreter fail on
the partially initialized module.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
test_documented_cache_lock_name reads docs/how-to.rst relative to the
tests dir and fails with FileNotFoundError when it is not installed.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
anyio 4.15 imports typing_extensions on python < 3.15, so importing
anyio on target fails with ModuleNotFoundError. This broke the
a2wsgi, pytest-httpx and uvicorn ptests.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>