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>
Add a recipe for fonttools which provides tools to manipulate font
files. Release 4.67.0 brings:
- [varLib] Support decreasing design-space axis mappings, via a new
keyword-only allow_decreasing argument to models.normalizeValue.
- [designspaceLib] Allow partial DesignSpace v5 axis subsets:
omitted range attributes on an <axis-subset> are taken from the
parent axis, as the spec says.
- [designspaceLib] Fix DesignSpaceDocument.normalize() for mapped
axes: axis bounds and rule conditions are now normalized from
their original values.
- [designspaceLib] splitInterpolable and splitVariableFonts now
warn when a source or instance is dropped because it lies outside
the document's own axes, instead of silently discarding it.
- [varLib.instancer] Add support for instancing variable COLRv1
fonts.
- [varLib.instancer] Apply VVAR vertical-origin deltas to VORG, and
use OpenType rounding for instanced advances and vertical
origins.
- [varLib.instancer] Keep a universal FeatureVariations record when
pinning removes its last condition but other axes remain.
- [varLib.instancer] Preserve ppem Device corrections in GDEF,
BASE, GPOS and JSTF instead of asserting on them.
- [varLib.instancer] Allow requesting an axis's original range on
VARC fonts.
- [varLib.instancer, subset] Fold, remove or remap MATH
VariationIndex devices when instancing, subsetting the GDEF store
or optimizing it.
- [varLib] Raise ValueError: Missing required table fvar from
varLib.mutator and the instancer CLI on a static font, instead of
a bare KeyError.
- [featureVars] When adding rvrn, also shift lookup indices inside
existing FeatureVariations. Handle null ConditionSet and
FeatureTableSubstitution offsets when building, subsetting and
instancing. Keep FeatureTableSubstitution records sorted after
merging new ones into an existing record.
- [ttLib] Fix FeatureParams (size, ssXX, cvXX) in FeatureVariations
alternate feature tables, which failed to compile and round-trip.
- [ttLib] Fully decode lazily loaded ligatures, SinglePos and
PairPos arrays during recursive decompilation, so reorderGlyphs()
on a lazy font no longer corrupts or asserts on them.
- [VARC] Update the variation-store binary format to follow
harfbuzz/boring-expansion-spec#175:
SparseVarRegionList.RegionCount is uint32, sparse axes use
Offset32 and MultiVarData items are stored in an INDEX. VARC
fonts built with earlier fontTools versions must be rebuilt.
- [VARC] Several fixes: derive component conditions from
conditionIndex, set the implicit scaleY when importing XML,
report the font's current coordinates for components that reset
unspecified axes, and keep inherited coordinates when drawing
CFF2 VARC components.
- [varLib] buildMultiVarData accepts flattened per-region vector
tuples.
- [otConverters] Bounds-check CFF2 INDEX count and offSize on read,
raising TTLibError instead of allocating huge lazy lists.
- [ttLib] Handle empty packed deltas when OPTIMIZE_FONT_SPEED is
set.
- [scaleUpem] Scale per-glyph VORG origins; fix VARC scaling for
static fonts and condition variations; don't mutate the shared
default CFF FontMatrix.
- [cmap] Fix format 2 compilation when all codes are single-byte or
all single-byte codes map to .notdef. Formats 2 and 4 now reject
glyph IDs above 65535 instead of wrapping them. Split format 14
default UVS ranges longer than 256 codepoints. Empty format 12
and 13 subtables round-trip.
- [glyf] Use unsigned instruction lengths, so programs of
32768-65535 bytes compile and decompile correctly. Keep
instructions in zero-contour glyphs.
- [pens] Fix cubic off-curve detection in TTGlyphPointPen across
contour starts. Glyph.drawPoints() now raises NotImplementedError
for an all-off-curve cubic contour, which the point pen protocol
cannot express. RoundingPen passes the all-off-curve None
sentinel through.
- [CFF2] Preserve operands when a blend has zero regions.
- [cffLib] Read CFF font names as Latin-1, matching how they are
written. Deleting a CFF dict attribute now actually removes it.
- [CFF2ToCFF] Fix conversion of fonts with local subroutines. A
CFF2 table with a single FontDict is now converted to a
name-keyed CFF font that keeps its glyph names.
- [subset] Handle a null GDEF variation store.
- [merge] Support merging fonts that both have a MATH table.
- [feaLib] Reject the same mark class used twice in one anchor
list. Don't crash on value records whose devices are all NULL.
Pad a short OS/2 Vendor with spaces.
- [feaLib] Raise FeatureLibError with a location, instead of a bare
Python error, for: a BASE script list without a matching tag
list, a UnicodeRange bit outside 0-127, a name string that cannot
be decoded, a STAT axis location with no or too many values, and
a non-ASCII OS/2 Vendor.
- [name] Fix the BCP 47 tags of some Mac and Windows language IDs,
e.g. es was mapped to Mac Estonian. getDebugName prefers the
Windows English name over the Mac one.
- [post] Don't crash on a format 2.0 table with numGlyphs set to 0.
- [VDMX] Recompute numRecs and numRatios when compiling.
- [Silf] Fix compiling a Silf table that was decompiled from
binary.
- [woff2] Preserve minorVersion when copying flavor data.
- [ttGlyphSet] Compute glyph width lazily for glyf variable fonts
without HVAR, so .width is correct before drawing.
- [varLib.interpolatable] Respect designspace source layers; fix
--json output with SciPy.
- [misc.psLib] Fix tokenizing of escaped parentheses in PostScript
strings.
- [svgLib] Raise ValueError instead of IndexError on a truncated
path command.
- [misc.transform] Preserve the direction of the remaining axis
when decomposing a transform whose first column is zero.
- [misc.textTools] Tag.__ne__ returns NotImplemented for
unsupported types.
- [misc.dictTools] hashdict rejects in-place union (|=).
- [misc.xmlReader] Close owned input streams when parsing fails.
- [misc.filesystem] WriteZipFS.close() can be called more than
once.
- [EBDT] Keep EBDT/CBDT glyph metrics after probing a missing
attribute.
This work was sponsored by GOVCERT.LU.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>