Josef Schlehofer [Sat, 15 Aug 2026 10:12:39 +0000 (12:12 +0200)]
luajit2: update to 2026-07-31
Also refresh 020-riscv64-support.patch from the current state of
openresty/luajit2#236. The previous snapshot defined
asm_tail_prep(ASMState *as), but since openresty/luajit2 commit 68354f44 the callers pass a second TraceNo argument, so the riscv64
build failed with:
lj_asm.c:2559:5: error: too many arguments to function 'asm_tail_prep'
The refreshed patch carries the upstream adaptation and restores the
build. The other four patches apply unchanged.
Josef Schlehofer [Sat, 15 Aug 2026 09:21:08 +0000 (11:21 +0200)]
luajit2: fix build and runtime on powerpc
luajit2 currently fails to link for powerpc: lj_vm.o emits PLT calls
that force BSS-PLT, which the inline-PLT relocations emitted by GCC 12
and newer do not support. Add the same GOT-based fix that
lang/lua/luajit has carried as 060-ppc-musl.patch since 2019.
With that in place the package builds, but ipairs() and pairs() turn
out to be broken on 32-bit big-endian soft-float targets. Both are
regressions in luajit2's PPC64 patch and do not affect upstream
LuaJIT. To be submitted to openresty/luajit2 as well.
Carsten Schuette [Wed, 12 Aug 2026 16:41:37 +0000 (18:41 +0200)]
btrfs-progs: remove no-mold flag as it builds fine with mold 2.42.0
btrfs-progs have a no-mold flag since 2025. With latest mold 2.42.0
released a few days ago, the changes from #26541 can be reverted as
btrfs-progs compiles fine with mold.
Josef Schlehofer [Mon, 10 Aug 2026 07:56:58 +0000 (09:56 +0200)]
olsrd: record why the version check logs "Terminated"
olsrd leaves through olsr_exit(), which ends the process with
raise(SIGTERM) rather than returning from main, so the shell reports
"Terminated" right after the version banner even for a plain
`olsrd -v`. The pipeline status comes from grep, so the check itself
is unaffected, but the line in the CI log looks like a failure to
anyone reading it.
Note it in the script so the next reader does not go hunting.
Signed-off-by: Josef Schlehofer <redacted> Co-authored-by: Claude Fable 5 <redacted>
olsrd builds its version banner from the VERS make variable, which
defaults to the upstream development version "pre-0.9.9", so
`olsrd -v` never mentioned the version the package was built from.
The source tarball carries no git metadata either, so the git hash
in that string is always zero:
olsr.org - pre-0.9.9-git_0000000-hash_5fd8976...
Pass PKG_VERSION as VERS, the same way alfred and batctl already
pass REVISION, so the banner identifies the packaged revision. This
also lets test-version.sh check the real version instead of merely
confirming that the binary starts.
Signed-off-by: Josef Schlehofer <redacted> Co-authored-by: Claude Fable 5 <redacted>
olsrd: reject non-address input before eval in olsrd-neigh.sh
olsrd-neigh.sh builds shell variable names from data announced by
other nodes in the mesh and passes them through eval:
eval IP_${ip//[.:]/_}="$hostname"
eval re-parses the string after the quotes have been consumed by the
first expansion pass, so a hostname of `x;reboot` announced by a
remote node is executed as a command on every node that runs the
utility. The values come from the nameservice plugin's hosts file
and from the txtinfo plugin, both of which carry unauthenticated
remote input.
Discard entries containing anything other than the characters that
can legitimately appear in an address or hostname before they reach
eval, in both places.
Reported-by: openwrt-ai[bot] Signed-off-by: Josef Schlehofer <redacted> Co-authored-by: Claude Fable 5 <redacted>
olsrd: initialize the LQ multiplier list pointer in the ubus handler
The ubus add_interface handler allocates a struct olsr_lq_mult with
malloc() and assigns only ->addr and ->value, leaving ->next
uninitialized before the node is published into cnf->lq_mult. olsrd
walks that list with
for (mult = cnf->lq_mult; mult != NULL; mult = mult->next)
so the first traversal follows an indeterminate pointer.
Chain the new node onto the existing list, which is what the
configuration file parser does for LinkQualityMult in
src/cfgparser/oparse.y. This also makes the orig_lq_mult_cnt++ on
the next line consistent, since the entry really is prepended to the
list instead of replacing it.
Reported-by: openwrt-ai[bot] Signed-off-by: Josef Schlehofer <redacted> Co-authored-by: Claude Fable 5 <redacted>
The only file shipped by olsrd-utils is olsrd-neigh.sh, which
sources /usr/share/libubox/jshn.sh on its third line. That file
belongs to the jshn package, which is not pulled in by the
olsrd -> libubus -> libubox dependency chain, so on a minimal image
the utility fails immediately with "not found".
Reported-by: openwrt-ai[bot] Signed-off-by: Josef Schlehofer <redacted> Co-authored-by: Claude Fable 5 <redacted>
olsrd: fix respawn_threshold lookup in the IPv6 init script
The UCI option is spelled respawn_threshold, as documented in
files/olsrd6.config and as read by files/olsrd4.init, but the IPv6
init script looks up _respawn_threshold. The lookup never matches,
so a user-configured value is silently ignored and the built-in
default of 3600 is always used.
Reported-by: openwrt-ai[bot] Signed-off-by: Josef Schlehofer <redacted> Co-authored-by: Claude Fable 5 <redacted>
Josef Schlehofer [Wed, 12 Aug 2026 06:00:03 +0000 (08:00 +0200)]
librespeed-cli-rust: update to 0.1.1
Brings the client in line with the fixes merged into the Go client: --json and
--csv end with a newline, --debug names the address each ICMP ping reached and
the spread of the samples, and the User-Agent carries the operating system and
architecture. Also tolerates a backend that answers getIP.php with an empty
rawIspInfo, which previously discarded the whole response.
The upstream Naive outbound feature is intentionally not enabled in this update.
Naive outbound requires additional build system integration because it depends on
Chromium Network Stack (Cronet). Depending on target and build mode, it requires
either the Cronet runtime library or a Chromium-based toolchain.
Upstream documentation:
https://sing-box.sagernet.org/configuration/outbound/naive/#structure
Changes:
1. Add upstream linker flags and compatibility build tags
Add linker flags required by the sing-box upstream release build:
- -checklinkname=0
-checklinkname=0 is required by the sing-box 1.13.x build configuration due to its use of
low-level go:linkname functionality and the stricter linkname validation in newer Go toolchains.
These tags are part of the upstream sing-box release build configuration:
https://sing-box.sagernet.org/installation/build-from-source/#build-tags
2. Add optional CCM and OCM build options
Add new optional OpenWrt configuration options:
- CONFIG_SINGBOX_WITH_CCM
Build with Claude Code Multiplexer service support
- CONFIG_SINGBOX_WITH_OCM
Build with OpenAI Codex Multiplexer service support
Both options are disabled by default and are only enabled when explicitly
selected by the user.
The corresponding upstream build tags are:
- with_ccm
- with_ocm
Documentation: https://sing-box.sagernet.org/installation/build-from-source/#build-tags Signed-off-by: Sergei S. <redacted>
001-disable-doc.patch dropped the doc subdir (which needs makeinfo) from
SUBDIRS in Makefile.in. Use PKG_SUBDIRS:=lib bc dc, OpenWrt's wired-in knob
for restricting the build, to skip doc without patching.
/etc/bird4.conf and /etc/bird6.conf are left over from the bird1
packages, which shipped a separate configuration file per address
family. bird3 is a single daemon handling both and installs
/etc/bird.conf only, so the two entries refer to files this package
never creates.
Reported-by: openwrt-ai[bot] Signed-off-by: Josef Schlehofer <redacted> Co-authored-by: Claude Fable 5 <redacted>
BIRD is an internet routing daemon with support of modern
routing protocols (BGP, OSPF, RIP, Babel) for IPv4 and IPv6. This is
the 3.x branch, a multithreaded rewrite.
Moved from the openwrt/routing feed, as discussed in
https://github.com/openwrt/routing/issues/184.
Signed-off-by: Josef Schlehofer <redacted> Co-authored-by: Claude Fable 5 <redacted>
The patch carried only a subject line and a placeholder commit id, so
nothing recorded why marking struct top_hash_entry as PACKED fixes a
bus error, or whether it can be dropped.
Restore the description and the sign-off from the commit that
introduced it in the routing feed, keeping the original author's
wording, and record the upstream status. Verified that BIRD 2.19.2
still declares the structure without any alignment attribute, so the
patch is still needed.
The header keeps the "---" separator the sibling patch uses, and
orders Signed-off-by last among the trailers.
Signed-off-by: Josef Schlehofer <redacted> Co-authored-by: Claude Fable 5 <redacted>
/etc/bird4.conf and /etc/bird6.conf are left over from the bird1
packages, which shipped a separate configuration file per address
family. bird2 is a single daemon handling both and installs
/etc/bird.conf only, so the two entries refer to files this package
never creates.
Reported-by: openwrt-ai[bot] Signed-off-by: Josef Schlehofer <redacted> Co-authored-by: Claude Fable 5 <redacted>
Josef Schlehofer [Mon, 10 Aug 2026 08:46:16 +0000 (10:46 +0200)]
librespeed-cli: update to 1.0.13
Carry fixes for a data race, a goroutine leak, output escaping, JSON and CSV
termination, and sub-millisecond ping precision, plus additional --debug
output. All patches are under review upstream.
Set the version through GO_PKG_LDFLAGS_X. The package never passed one, so
--version reported neither a name nor a version.
Drop the serverIdx patch: 1.0.13 resolves the same problem by checking the map
lookup rather than reading a possibly absent key.
Refresh sha256 from PyPI sdist. Drop the macOS cross-compile patch;
2.1.1 already carries the sysconfig.get_platform() fix upstream.
Add test-version.sh: 2.1.1 ships the cffi-gen-src console tool, a
subcommand CLI with no version flag, so the generic per-executable
version probe fails the package ("No executables in the package
provided version"). test-version.sh skips that probe, and test.sh now
asserts cffi.__version__ against the packaged version.
Refresh sha256 from the PyPI sdist and refresh 003 for the shifted line.
Retarget 002-pip-runner-pyc-fix.patch instead of dropping it: in 26.2.1
get_runnable_pip() moved from build_env.py (now a package) to
_internal/utils/misc.py. The function is otherwise unchanged and still
returns __pip-runner__.py, so the .pyc fallback is still required. We ship
pip byte-compiled only (the .py sources live in the -src package), so
without it build isolation cannot locate the runner and every PEP 517
install fails on target. This is a packaging workaround, not an upstream
bug, so upstream has no reason to carry it.
Pillow uses pybind11 only for pybind11.setup_helpers.ParallelCompile,
which parallelises the C extension build; it ships no runtime bindings.
Patch setup.py to remove that import and call and drop pybind11 from
build-system.requires, then remove python-pybind11/host from
PKG_BUILD_DEPENDS. The C extensions are compiled serially instead, with
no functional change to the package.
flit-core 4.0.2 breaks the whole python feed. flit-core is a host-only
build backend, but nearly everything built with it caps flit_core<4 (the
host tools wheel/installer/pyproject-hooks/typing-extensions and dozens of
leaf packages like marshmallow, click, pip), so their host builds fail with
"Missing dependencies: flit_core<4" against 4.0.2. Nothing needs
flit_core>=4; 3.12.0 satisfies every cap and has no runtime impact. Revert
until the ecosystem's upper bounds catch up.
Kel Modderman [Sat, 8 Aug 2026 10:46:57 +0000 (20:46 +1000)]
squeezelite: add version test override
The generic package test greps executable output for PKG_VERSION, which
cannot match here: PKG_VERSION separates the build number with a dot for
apk, while squeezelite reports it with a hyphen.
Derive the expected string from PKG_VERSION rather than hardcoding it, so
the check keeps working on later updates.
Update from the 6.2.x series to the current 8.x line. The 8.x releases
are tri-licensed (RSALv2 / SSPLv1 / AGPL-3.0); set PKG_LICENSE to
AGPL-3.0-only and follow upstream renaming COPYING to LICENSE.txt.
Drop 020-fix-atomicvar.patch, no longer needed, and keep
030-skip-module-tests.patch. Add a functional test.sh.
Dirk Brenken [Mon, 10 Aug 2026 17:35:56 +0000 (19:35 +0200)]
banip: fix cpu core calculation
- only cap the cpu core count by available memory if it was auto-detected,
a manually set 'ban_cores' is now authoritative and no longer lowered
- readme update: clarify that the auto-cap does not apply to a manually
set core count
The script greps for "uradvd $PKG_SOURCE_DATE", but the test harness
only exports PKG_NAME, PKG_VERSION and CI_HELPERS. PKG_SOURCE_DATE is a
build time Makefile variable and is empty in the test container, so the
grep -Fx pattern is "uradvd " and never matches.
The binary is built with VERSION=$(PKG_SOURCE_DATE) and prints
"uradvd 2025-09-20", while PKG_VERSION is 2025.09.20~<short hash>, so
derive the date from the version instead.
Rename it to test-version.sh in the process: the generic probe looks for
PKG_VERSION verbatim and cannot match the dashed date either, and uradvd
is the only executable in the package, so without an override the whole
package fails. The shebang goes back to /bin/sh, which is what the
harness runs the script with.
sudo: add test-version.sh and stop running sudo in tests
PKG_VERSION substitutes p->_p (1.9.17_p2) for a valid apk version, but the
binaries print the real 1.9.17p2, so the generic per-executable version
probe reports "no executables provided version" and fails. Add a
test-version.sh that matches the version string compiled into the binary.
Executing sudo under QEMU emulation (e.g. mips_24kc) hangs indefinitely, so
neither test-version.sh nor test.sh runs it any more: the version is read
from the binary and test.sh only checks the installed files.
sudo: drop 020-no-owner-change.patch for a make override
The patch blanked INSTALL_OWNER in Makefile.in so the staged install does
not chown to install_uid/install_gid, which fails when building as an
unprivileged user. sudo already supports this: the top-level install rule
recurses with "INSTALL_OWNER=$(INSTALL_OWNER)" into every sub-make, and
sudo's own "package" target does "make install INSTALL_OWNER=" for exactly
this fakeroot case. Pass INSTALL_OWNER= via MAKE_INSTALL_FLAGS instead of
carrying a patch.
python-installer: allow flit_core 4.x as the build backend
installer caps flit_core<4 in its build-system, so its /host build fails
with "Missing dependencies: flit_core<4" against flit-core 4.0.2. flit_core
4 builds it unchanged; relax the upper bound.
python-pyproject-hooks: allow flit_core 4.x as the build backend
pyproject-hooks caps flit_core<4 in its build-system, so its /host build
fails with "Missing dependencies: flit_core<4" against flit-core 4.0.2.
flit_core 4 builds it unchanged; relax the upper bound.
Dirk Brenken [Mon, 10 Aug 2026 17:15:09 +0000 (19:15 +0200)]
adblock: fix cpu core calculation
- only cap the cpu core count by available memory if it was auto-detected,
a manually set 'adb_cores' is now authoritative and no longer lowered
- readme update: clarify that the auto-cap does not apply to a manually
set core count
Patch removed due to fixed in Makefile:
012-fix-gnutls-version-check.patch
Patch removed because of no longer needed:
005-musl_uintptr.patch
Makefile:
Fixed gnutls sed related things.
Fixed compile_et & asn1_compile linkage at build time to fixes build error
Dropped NONE from bundled-libraries as to fix compilation errors, NONE
now seems meaning not to bundle any libraries.
Added RSTRIP from gcc Makefile to reduce compiled samba4 binaries and
libraries filesize by around 15%, tested, --private-libraries rpath
seems intact or identical with not-stripped binaries and libraries
one.
samba's cross_answer() returns on the *first* message matching a check in
cross-answers.txt, and Build/Configure copies the per-arch answers file
before appending its own answers. Up to samba 4.16 the check message
itself carried a "setting/geting hints" typo, which the generated answers
files inherited; samba fixed its spelling later, so the file entries
stopped matching and configure started aborting with
Cross answers file ... is incomplete
The 'Checking whether fcntl supports setting/getting hints: OK' line
appended by Build/Configure was added to paper over that, not because the
targets answer OK.
Now that the spelling in the answers files is fixed, the generated
(-11, "") entry matches first and the appended OK is dead code. Keep the
generated answer -- samba's test uses F_SET_FILE_RW_HINT/F_GET_FILE_RW_HINT,
which the kernel no longer implements, so the check legitimately fails on
every target -- and drop the unreachable echo so each check has exactly
one answer.
smb.conf.template:
Added SMB2 as default minimum protocol for client, also enabled server
& client encryption by default. Use smbpasswd -a username to add a
username & password for samba. To connect into samba from Windows 10
and above, it need to be done by this guide : https://www.asus.com/support/faq/1054736/ .
python-typing-extensions: allow flit_core 4.x as the build backend
Like python-wheel, typing-extensions caps its build backend at
"flit_core >=3.11,<4", so python-typing-extensions/host fails with
"Missing dependencies: flit_core<4,>=3.11" now that the feed ships
flit-core 4.0.2. flit_core 4 builds it unchanged; relax the upper bound.
python-wheel: allow flit_core 4.x as the build backend
wheel 0.47.0 caps its build requirement at "flit_core >=3.11,<4", but the
feed now ships flit-core 4.0.2, so python-wheel/host (and the whole python
host build-chain that depends on it) fails with "Missing dependencies:
flit_core<4,>=3.11". flit_core 4 builds wheel unchanged, so relax the upper
bound.
1.4.1 ships as a .tar.xz (the .tar.gz is gone), so switch PKG_SOURCE to
.tar.xz; the @GNU mirror still serves it. Replace 001-only-src.patch
(SUBDIRS = src) with PKG_SUBDIRS:=src so tests/doc/tools stay unbuilt.
Josef Schlehofer [Mon, 10 Aug 2026 02:07:12 +0000 (04:07 +0200)]
librespeed-cli-rust: add new package
Rust port of librespeed-cli for 32-bit PowerPC targets not supported by
the Go implementation, such as CZ.NIC Turris 1.x.
The CLI output of --list and --csv-header matches the Go client, so it
can be used as a drop-in replacement. Both implementations install
/usr/bin/librespeed-cli and therefore PROVIDES/CONFLICTS are set
accordingly.
Use libopenssl instead of rustls' ring backend, which has significantly
better AES-GCM performance on big-endian PowerPC.
Josef Schlehofer [Wed, 29 Jul 2026 05:47:46 +0000 (07:47 +0200)]
sscep: rename test.sh to test-version.sh
The script only performs a version check, which is what test-version.sh
is meant for. As a version check override it also replaces the generic
per-executable probing, which warns about mkrequest not reporting the
version.
Josef Schlehofer [Wed, 29 Jul 2026 05:47:42 +0000 (07:47 +0200)]
tree-wide: remove quiet mode from grep in test version checks
Remove the quiet mode flag (-q) from grep in version check commands
to ensure that their stdout output is visible.
While at it, switch the remaining regex matches (perl, sscep, awscli) to
fixed-string matching where appropriate, so that special characters in the
version string are matched literally.
For libzip, the zipcmp and zipmerge branches ran grep and then
unconditionally exited 0, so a version mismatch was never reported and
the version check override always passed.
libsndfile: drop cmake4 patch for a policy override
001-cmake4.patch backported the unreleased upstream commit 52b803f. The
buildroot's CMake 4 only needs the raised minimum (FindPythonInterp still
resolves), so replace it with -DCMAKE_POLICY_VERSION_MINIMUM=3.5.
Add a CI test.sh that imports google.protobuf and round-trips the
Timestamp and Struct well-known types through SerializeToString and
ParseFromString, covering the descriptor pool, encoder and decoder
without needing a compiled .proto. Modelled on python-rpds-py's test.
Sergei S. [Sun, 2 Aug 2026 15:56:02 +0000 (19:56 +0400)]
hev-socks5-tunnel: allow multiple instances
Add support for running multiple service instances.
- switch UCI config from a single named section to "instance" sections
- update the procd init script to start multiple instances
- migrate existing single-instance configurations during package upgrade (uci-defaults script)
- bump PKG_RELEASE
setup.py picks the macOS-only -iwithsysroot/usr/include/ffi flag from
sys.platform, which describes the interpreter running the build rather than
the target, so cross-compiling from a macOS host hands an Apple clang flag to
the GNU cross compiler and the build fails. Use sysconfig.get_platform(),
which honours the _PYTHON_HOST_PLATFORM that python3-package.mk exports.