USE_LARGEFILES requires _LFS64_LARGEFILE, which musl does not define
because its off_t is always 64-bit, so the build fails on musl:
./constants.h:36:2: error: no large file support available, remove -DLARGEFILES from makefile
Add a patch that only requires a 64-bit off_t in that case. It also
replaces the %L length modifier on integer conversions with the standard
%ll, which musl's printf requires.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
dlm_controld's rbtree headers were copied from the kernel and use
__always_inline. glibc defines it in <sys/cdefs.h>, but musl does not,
so the build fails on musl:
./rbtree.h:153:8: error: unknown type name '__always_inline'
Add a patch that provides a fallback definition in linux_helpers.h.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
libxdp turns its BPF programs into linkable objects with a relocatable
link of a raw binary input (cc -r -Wl,--format=binary). Because there is
no real object among the inputs, lld on riscv64 writes an object with
e_flags 0 (soft-float ABI) and a GNU property note with every CFI feature
bit set. Linking it then fails with clang:
ld.lld: error: libxdp.a(xdp-dispatcher.embed.o): file has conflicting
properties: GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED and
GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_FUNC_SIG
ld.lld: error: libxdp.a(xdp-dispatcher.embed.o): cannot link object
files with different floating-point ABI from Scrt1.o
Build the embed objects from a small .incbin assembly stub instead, so the
compiler driver emits them with the correct target ABI.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
rice-c/build.rs runs bindgen without any target flags, so libclang
parsed the build host headers in /usr/include, which fails when cross
compiling, e.g. for riscv64/musl:
/usr/include/bits/floatn.h:97:9: error: __float128 is not supported on this target
Pass the target arch flags, sysroot and triple via
BINDGEN_EXTRA_CLANG_ARGS, as thin-provisioning-tools does.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The clipboard session is always built, as input capture uses it, but
the remote selection source it calls into was only built with
-Dremote_desktop=true, so libmutter failed to link with the default
PACKAGECONFIG:
ld.lld: error: undefined symbol: meta_selection_source_remote_new
Build the remote selection source unconditionally.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 5.1.0:
- Dropped support for Sphinx 6.2, 7.0 & 7.1 and added python 3.14
- Strip leading spaces when making initializer
- Fix duplicate constexpr qualifiers on constructors
- Handle C++11 extended friend declarations
- Keep template arguments in class template specialization names
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 4.3.0:
Overview:
This release primarily fixes a number of subtle bugs related to piping
cmd2 command output to shell commands. It also removes the experimental
tag from the @with_annotated decorator feature.
Details:
- Stabilized features
- @with_annotated is no longer experimental. It was introduced
as an experimental feature in 4.0.0 and is now a fully
supported way to define a command's arguments, alongside
@with_argparser. This covers the decorator and its supporting
API in cmd2.annotated, including Argument, Option, Group, and
ArgumentBlock. Annotated Argument Processing.
- Bug Fixes
- On POSIX, piping a command's output to an interactive program
such as less (help -v | less) now runs that program as the
terminal's foreground job, as a shell pipeline does. It had
run in a separate session that never received the terminal,
so Ctrl-Z and fg did not suspend and resume it together with
cmd2. The program now owns the terminal as it starts, so a
pager can set its terminal modes, and Ctrl-C and Ctrl-Z reach
the whole pipeline. Pipes started from a worker thread, or
whose output does not go to the terminal, such as one nested
in a command whose own output is piped, still run in their
own session
- A shell command piped to an interactive program, such as
shell git log | less, now joins the pipeline's job, so both
processes receive Ctrl-C and Ctrl-Z
- On Windows, fixed piped output appearing garbled in console
programs such as more (help -v | more), a regression in
4.2.4. Pipes are written as UTF-8, but console programs
decode their input with the console's code page. While a pipe
or the pager runs, cmd2 now sets the console to UTF-8 (code
page 65001, as chcp 65001 does) and restores its code pages
afterward, so console programs and UTF-8 tools such as rg
both read the output correctly
- When copying a command's output to the clipboard (help >)
fails, later commands' output is no longer written to the
temporary file that held it
- When a pipe's process cannot be started, for instance because
no more processes can be created or $SHELL names a program
that cannot run, both ends of the pipe are now closed rather
than left open
- When a pipe's process exits before the command runs, what it
wrote, such as the shell's "command not found", is no longer
lost when cmd2 captures the output, as in a pyscript
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 2.4.0:
- Supports Python 3.15, including the free-threaded CPython 3.15
build, with tests and wheels for Linux, macOS, and Windows.
- Publishes Windows ARM64 wheels, and builds Linux aarch64 wheels
on native arm64 runners instead of under QEMU emulation.
- Tests every supported Python version on arm64 Linux and Windows
in addition to x86-64.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 45.0.0:
- deprecate the diagnostic functionality
- lint: keep the linter green with ruff 0.17
- plot: read the candump lines that logreader reads
- kcd: declare senders and receivers that are not in the node list
- sym: write line breaks in comments as spaces
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 0.0.236:
- Use signed values for the AICS gain setting fields
- Fix record offsets when parsing a list of PAC records
- serial: add an option to resynchronize with the controller on open
- Reject public keys that are not on the curve in the builtin ECDH
- gatt: enforce value size and queue limits on server long writes
- usb: support Bluetooth controllers that are not interface 0 of a
composite device
- Disconnect LE credit-based channels on invalid SDU lengths
- smp: save pairing keys to keystore before draining connection
- Stop calling the deprecated Host.send_command_sync()
- Fix - remove BIG Sync handles on BigSync.terminate to prevent
resync failures
- ci: pin GitHub Actions to commit SHAs to resolve zizmor issues
- remove support for python 3.10 and add 3.15
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 3.14.2:
- fs: Fix filesystem type for temporary mounts
- misc: Fix condition for installing pocketlint on Debian/Ubuntu
- misc: Use ansible_facts instead of deprecated top-level fact variables
- Update properties for started stratis pools during populate
- Fix extra mount options for Stratis filesystems in fstab
- Directly access _type/_name in _to_string to avoid subclass property
lock
- Fix deadlock between blivet_lock and logging lock
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 26.10.1:
Highlights:
This release fixes a security issue in Black's bundled GitHub
Action. Repositories that use the action are encouraged to update
to the latest version of Black immediately. This update is received
automatically when using psf/black@stable, and is independent of
the version of Black installed by the action.
When the GitHub Action reads version specifiers from
tool.black.required-version, it now only accepts released versions
of Black, as it already did for black requirements in dependency
lists. Other values, such as URL references, are now rejected. This
issue has been registered as GHSA-cg8m-r9f2-5wm2; a CVE identifier
is pending.
Stable style:
- Fix a long Jupyter notebook assignment magic (for example x = !ls
-la) being wrapped in parentheses, which IPython can no longer
run; such cells are now left unchanged
- Keep repeated lines outside the selected --line-ranges unchanged
- Fix --line-ranges formatting lines that follow a statement when
formatting joins or re-indents that statement
- Fix --line-ranges crashing with an internal error when an
unselected statement has a # fmt: skip comment on the last line
before a closing bracket
- Prevent moving an encoding declaration (for example # -*- coding:
latin-1 -*-) onto the first two lines of a file
- Fix adding an extra trailing blank line inside a multi-line
module docstring when its last line is near the line length limit
Preview style:
- Do not split short expressions on delimiters (such as binary
operators, comparisons, or comprehensions) inside brackets when
preceded by a standalone comment
- Fix the unstable string_processing feature removing
backslash-newline sequences from raw strings, which changed their
value
- Avoid adding unnecessary parentheses around unbreakable
right-hand side expressions in assignments (such as annotated
assignments or subscript targets)
- Parenthesize expressions with parameter comments when they exceed
the line length under --preview
- Fix wrap_long_dict_values_in_parens dropping the parentheses
around a right-hand side that contains a dictionary, leaving a
line over the length limit
- Fix the unstable string_processing feature adding a space after *
or in a PEP 695 type parameter (* Ts = ...) when it splits a
string in the parameter's default
- Avoid unnecessary line splits of trailers (such as
indexing/subscripts) when an earlier bracket split exceeds the
line length only due to a trailing comment
Configuration:
- Add --cache-dir to configure the cache directory from the command
line
- Don't cache a file as formatted after formatting or checking it
with --line-ranges, which made a later full black --check pass
and black skip the unformatted lines
- Respect a .gitignore that starts with a UTF-8 byte order mark.
The mark became part of the first pattern, so that pattern never
matched and Black formatted files that git ignores
Performance:
- Avoid quadratic runtime when splitting very long lines with many
trailing bracket pairs (such as consecutive subscripts)
Integrations:
- Fix the GitHub Action crashing on dependency-group includes when
use_pyproject is enabled
- When the GitHub Action reads version specifiers from
tool.black.required-version, it now only accepts released
versions of Black, as it already did for black requirements in
dependency lists. Other values, such as URL references, are now
rejected.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 26.10.1:
General
- Load the vendored FlatBuffers runtime only when a FlatBuffers
message is first built or parsed, instead of on every import
autobahn. The runtime imports numpy whenever numpy is installed,
so up to 26.7.1 every process importing autobahn also loaded numpy,
including WebSocket-only users such as Django Channels applications
served by Daphne. Every autobahn import now needs about 13-17 MB
less memory on CPython and 18-24 MB less on PyPy, and none loads
numpy. A new documentation page (docs/memory-footprint.rst, just
memory-footprint) shows the import memory footprint per release on
CPython and PyPy.
Wheels
- Publish native Windows ARM64 (win_arm64) wheels with NVX for
CPython 3.11-3.14, built on GitHub’s windows-11-arm runners (PyPy
publishes no Windows ARM64 interpreter); thanks to @ndabas.
cryptography currently publishes no win_arm64 wheel, so the build
compiles it against an OpenSSL from vcpkg.
- Build cryptography against an OpenSSL from vcpkg on Windows x86_64
too: cryptography 50.0.2 publishes its Windows PyPy wheels for PyPy
8 (pp80) only, and the pypy311 wheel build uses PyPy 7.3 (pp73), so
pip builds it from source there.
WebSocket
- Make all four per-message compression extensions
(permessage-deflate, -bzip2, -brotli, -snappy) enforce the
decompression budget the same way: decompression stops near the
remaining maxMessagePayloadSize budget instead of decompressing a
whole frame first, and “over budget” as well as “budget already
used up” raise PayloadExceededError. brotli now bounds its output
with Decompressor.process(output_buffer_limit=...), snappy is
decompressed one framing chunk at a time, and deflate no longer
lets one octet through once the budget is used up.
- Add autobahn.exception.PayloadCorruptError: every compression
extension now raises it for input it cannot decompress (corrupt,
truncated, or not the extension’s format), instead of the library’s
own exception (zlib.error, OSError, brotli.error, …), and snappy no
longer accepts such input silently. The protocol fails the
connection with close code 1007 (invalid frame payload data), the
same for every extension and on both Twisted and asyncio.
- Fix permessage-brotli failing on the second message of a connection
when context takeover was negotiated (the default): the compressor
and decompressor were reused after their brotli stream had
finished. Each message is now a new brotli stream, which is the
wire format brotli used for the first message already, and for no
context takeover.
- Fix an asyncio WebSocket connection being left open, but no longer
serviced, when an exception escaped the processing of received
data: the connection is now dropped, as on Twisted.
- Add a documentation page on WebSocket compression
(docs/websocket/compression.rst): for each of the four extensions,
which Python package and which compression library (and bundled
version) it uses on CPython and on PyPy, plus context takeover,
decompression limits and the handling of invalid data. The old,
unpublished page under docs/work/ did not cover permessage-brotli
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
W_EXITCODE() is a glibc extension that musl does not provide, so clang
fails with -Wimplicit-function-declaration. Define it when missing,
using the glibc definition.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
test/meson.build assumed libc provides argp whenever argp.h exists, but
on musl the header comes from argp-standalone, pulled into the sysroot
via v4l-utils, and test_decode/test_video failed to link argp_parse.
Backport the upstream fix that also checks for argp_parse and falls
back to the bundled non_argp.c.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
configure rejected riscv hosts as not ported, and the TSC read fell back
to x86 rdtsc. Patch both, reading the time CSR with rdtime.
Tested by building for qemuriscv64 (musl, clang) and running a loopback
ping-pong under qemu-riscv64.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
log.c uses open() and O_* flags without including <fcntl.h>, which
glibc pulls in indirectly but musl does not, so clang fails with
-Wimplicit-function-declaration.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
kernel-arch.bbclass no longer sets ARCH (oe-core 635f85b7b8), so
ARCH=${ARCH} expanded to an empty value and tools/scripts/Makefile.arch
fell back to the build host's uname -m. libbpf was then built with
tools/arch/x86/include, breaking cross builds, e.g. on riscv64:
tools/arch/riscv/include/asm/barrier.h:13:10: fatal error: asm/fence.h: No such file or directory
Set ARCH from map_kernel_arch() as perf.bb does.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upstream LuaJIT v2.1 has no riscv64 backend, so fetch the plctlab
v2.1-riscv64 branch on riscv64, with the recipe's patches rebased onto
it, and drop the riscv64 COMPATIBLE_HOST restriction.
Tested by building for qemuriscv64 (musl, clang) and running a JIT-ed
loop under qemu-riscv64 (jit.status() is true).
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
TARGET_OS is linux-musl on musl, which matched none of the
LUA_TARGET_OS overrides, so TARGET_SYS was Unknown and LuaJIT was built
for LUAJIT_OS_OTHER, losing Linux-specific features such as the
profiler (LJ_HASPROFILE).
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Document the mailing list workflow and the conventions agents get wrong
most often: recipe-only commit summaries with the sub-layer tag carried in
the email subject as [meta-oe][PATCH x/y], the AI-Generated tag, and the
human contributor's Signed-off-by on commits and recipe patch files.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
glycin unconditionally requires libseccomp, and oe-core opts riscv32 out
of the seccomp distro feature since libseccomp is not ported to rv32.
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>