mpd 0.24 aborts in main() when /proc/self/status reports more than one
thread, before it even parses the command line (src/Main.cxx). qemu-user
always reports several, so "mpd --version" cannot run on the emulated CI
targets and the generic version check fails there.
Add test-version.sh matching the version string compiled into the
binary, and drop the two unusable "mpd --version" calls from test.sh,
whose failures it silently ignored anyway.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Refresh PKG_HASH and point PKG_SOURCE_URL at the 0.24 release directory.
0.24 removed the SoundCloud plugin and replaced yajl with nlohmann/json,
so -Dsoundcloud= and -Dyajl= are no longer meson options and yajl leaves
DEPENDS. Pin -Dnlohmann_json=disabled rather than leave the new option at
auto: its only users here, qobuz and snapcast, are both disabled.
0.24 also dropped the Boost dependency: meson no longer looks for it and
the one remaining include is a header-only lround fallback for a
libstdc++ built without C99 math. Nothing links a boost library, so
drop +boost too.
Drop 010-fmt.patch. It was added in 0.23.16 to fix compilation against
fmt 11.1, and 0.24 rewrote Response.hxx, dropping the FMT_VERSION ladder
the patch edited. src/client/Response.cxx compiles against the feed's
fmt 12.1.0 unpatched.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
-Dpulse= is derived with $(if $(CONFIG_PACKAGE_audio-support)), true for
=m as well, while the rpath-link that lets the linker find
libpulsecommon was guarded by ifeq(...,y). Selecting audio-support as a
module built pulse support without the flag, leaving every pa_* symbol
undefined. Test the same way the option does.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
The AUDIO_SUPPORT target feature is replaced in openwrt.git by an
audio-support package, which allocates the audio, audio-capture and midi
groups and installs the hotplug rules that put the ALSA nodes into them.
A target feature said only that the SoC family might have a sound card;
the package says that this image has one.
Depend on the package where the feature was tested, and read
CONFIG_PACKAGE_audio-support where mpd tested the feature at build time.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Add a test-version.sh override because shineenc does not report its
version. Keep the remaining generic package checks enabled.
Signed-off-by: Marcin Maj <marcinmajsc@gmail.com>
The CMake build links libatomic on targets without inline 64-bit
atomics, but libopenal imports no symbol from it. Link with --as-needed
so the unused library is dropped and remove the dependency.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
The build probes for dgettext and iconv_open with bare symbol checks,
which succeed against libc even when a standalone GNU libintl or
libiconv is on the include path. Their headers redirect the calls to
libintl_* and libiconv_* symbols, so the objects then need -lintl,
which the Makefile supplied through TARGET_LDFLAGS for every link,
and the standalone libiconv was bypassed through LIBICONV_PLUG.
Add the two patches from upstream merge request 877, which switch the
probes to meson's intl and iconv dependency objects. These compile a
test including the header, so they fall back to linking the library
exactly when the header requires it. With BUILD_NLS this links
libintl-full and libiconv-full where they are used; without it, the
libc implementations are used as before. The second patch makes the
libm link conditional in the same way. Drop the -lintl workaround.
Patches taken from merge request currently under review upstream:
https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/877
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
The last release, 17.0, dates from January 2024. Master has since
accumulated fixes not available in any release, among them the SAP
port byte order in module-rtp-recv, an out-of-bounds access in
stream_get_timing_info_callback, multichannel processing in
module-echo-cancel and several JSON UTF-8 handling fixes. Switch to
the current master head.
The snapshot tarball carries neither a .git directory nor the
.tarball-version file of a release tarball, so git-version-gen has no
source for the version string and meson would fail parsing the empty
result. Write .tarball-version in Build/Prepare from the last release
tag reachable from the snapshot plus the abbreviated commit, so the
library version and the libpulsecommon file name derive from 17.0 as
the build's own git describe would.
Keep PKG_VERSION at 17.0 instead of the date-derived default, so the
package version matches what the libraries and binaries report, the
CI version check finds it in the --version output, and a later switch
back to a release tarball still sorts as an upgrade. PKG_SOURCE_DATE
and PKG_SOURCE_VERSION identify the snapshot, and the repacked tarball
carries both in its name so that a later snapshot does not collide with
this one in the download directory and on the source mirror.
Upstream turned the doxygen and tests options into feature options;
pass disabled instead of false. Normalise the indentation of the last
three MESON_ARGS entries while touching them.
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
Move the PulseAudio client libraries into a separate libpulse package,
so a client can depend on just the client library instead of pulling
in the whole daemon. Upstream ships three libraries whose names do not
make the split obvious: libpulse and libpulse-simple are the client
API, libpulsecommon is a private library shared by client and server,
and libpulsecore is the server core used only by the daemon and its
modules. libpulse, libpulse-simple and libpulsecommon go into the new
package; libpulsecore, libpulsedsp and the module helper libraries stay
with pulseaudio-daemon, which now depends on libpulse. The iconv and
gettext users (pulse/utf8.c and pulsecore/i18n.c) are part of
libpulsecommon, so libpulse carries the ICONV_DEPENDS and INTL_DEPENDS
itself.
Enable D-Bus support in both variants, not just the avahi one. D-Bus
support adds the pa_dbus_* and rtkit helpers to libpulsecommon, which
the daemon and its modules link against and which now ships in
libpulse. Since a single libpulse package serves both variants, it has
to be built the same way in both, or the avahi daemon would end up with
a libpulsecommon lacking those symbols. Unconditional D-Bus support is
the simplest way to achieve that; the price is that pure clients now
pull in libdbus.
Two follow-on changes: the D-Bus policy file, previously installed by
the avahi variant only, is now installed by both daemon variants. The
daemon also declares its own libdbus dependency, independent of
libpulse, because libpulsecore links libdbus directly.
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
New features:
- automatic gain control / output limiter on the final rendering stage
- signed 32-bit and 24-bit linear PCM support; WASAPI driver now allows
24-bit audio
- MIDI RPN 5 (Modulation Depth Range) support
- multiple reverb engines, addressing prior FDN reverb limitations
- GM2 bank select mode
Musically breaking changes:
- corrected a 17-year-old bug affecting sample fine-tuning in certain
Soundfont instruments
- implemented MIDI RP-020 to fix MTS playback in MIDI files
- switched default reverb engine to Dattorro (plate-style)
- replaced 7th order sinc interpolation with a higher-order one due to
quality concerns
Other: hardened Pipewire driver against xruns; exits with an error when
unable to load a command-line Soundfont; dropped the GLib and
libInstPatch dependencies.
Dropped +glib2 from DEPENDS to match: libfluidsynth.so.3.6.0 no longer
links libglib-2.0 (confirmed via readelf -d).
2.6.0 also drops the enable-libinstpatch CMake option entirely, so the
existing -Denable-libinstpatch=off pin became a silent no-op: DLS/GIG
loading is now controlled by the new enable-native-dls option instead,
which defaults to on. Left unpinned, this bump would have silently
re-enabled DLS/GIG support that this Makefile had deliberately turned
off. Replaced the dead pin with -Denable-native-dls=off to preserve
the existing behaviour explicitly.
Also pin the new enable-signalsmith option (limiter/AGC and the extra
reverb engines) to off: it defaults to on, but the feature it gates
depends on the signalsmith-audio-basics git submodule, which is not
present in the release tarball this package builds from - configure
silently compiles it out either way, so pinning it off just makes that
explicit and deterministic rather than accidental.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
4.7.1:
- fixed crashes and other bugs in the smix API; rewrote the smix WAV
loader to support stereo samples
- fixed XM channel default instrument memory, IT high offset/oversized
offset handling, MED synth/hybrid finetune conversion
- fixed Magnetic Fields Packer track loading and optimised tracks
- fixed path_join when loading a module from the current directory
- fixed loading truncated/broken Startrekker AM instruments and their
precedence, envelope, P.FALL and FQ toneporta bugs
- allowed Archimedes MUSX modules to load with a broken SDAT instrument
subchunk
- fixed various -fsanitize=shift-base warnings
4.7.2:
- fixed loading Startrekker modules from memory/handle/callbacks
- fixed a cmake build failure for certain Apple targets (e.g. tvOS)
- fixed stb-vorbis floor1 inverse_db_table indexing, a missing part of
the CVE-2019-13220 fix
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
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.
Signed-off-by: Kel Modderman <kelvmod@gmail.com>
Refresh sound/squeezelite/patches/010-select_broadcast_interface.patch
and add the git headers required for 'git am' compatibility.
Signed-off-by: Kel Modderman <kelvmod@gmail.com>
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.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Refresh "cmake-add-build-with-soxr-option"-patch.
The CI/CD pipeline checks whether patches are byte-identical to what
make package/$(PKG_NAME)/refresh produces.
While the patch applied cleanly, it contained the index-line and a
git-footer, which caused the CI/CD-pipeline's patch-check to bail out
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
SNAPCAST_SOXR passes -DBUILD_WITH_SOXR, which is a build-wide CMake
option: snapserver and snapclient are built from one source tree and
both link libsoxr. The dependency was declared only on snapserver, so
with SNAPCAST_SOXR enabled (the default) the snapclient package failed
at the packaging step:
Package snapclient is missing dependencies for the following libraries:
libsoxr.so.0
Declare +SNAPCAST_SOXR:libsoxr on snapclient too, and relabel the option
"(server + client)" so its build-wide scope is clear.
Fixes: 7673cd9a ("snapcast: make build options explicit and per-package deps precise")
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
Pin every CMake BUILD_WITH_* switch and expose the optional features as
config symbols, so builds are reproducible and snapserver/snapclient
each depend only on the libraries their binary actually links (boost is
header-only and becomes a build-only dependency).
Add a patch introducing a BUILD_WITH_SOXR option: upstream looks SOXR up
with an unconditional pkg_search_module(), so resampling gets enabled
purely by whether libsoxr happens to be discoverable in the shared
staging dir - non-deterministic in a package feed. The option makes it
an explicit, REQUIRED choice (enabled-but-missing fails at configure
time instead of silently dropping the feature).
Assisted-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
Generic version checks were introduced in actions-shared-workflows,
making these individual test.sh files obsolete.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Stable bug-fix release in the 1.25.x series. Highlights from
upstream's ChangeLog include:
* Fix STL hardening assertion in the reverb effect.
* Fix a potential crash with older PipeWire headers.
* Fix capturing mono from a stereo or greater WASAPI input device.
* Add capture support to the SDL3 backend.
* Implement 3D processing for Distortion, Chorus, Flanger,
Pitch Shifter and Frequency Shifter effects.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Update spans 2.4.7 -> 2.5.4. Highlights:
* 2.5.x: Major version with API additions for handling sequencer
client unregistration, MIDI file reading flexibility, soundfont
selectors and sample tuning improvements.
* Various bug fixes for SF3 voice handling, reverb engine
stability, GM/GS/XT mode reset behaviour and audio drivers
(PortAudio, SDL2, Pulseaudio, JACK, OPL).
* Build system fixes including CMake updates and new toolchain
compatibility.
fluidsynth >= 2.5 requires GCEM (a header-only constexpr math
library) at build time. Build-depend on the new 'gcem' package,
which installs the headers and CMake config files into staging
where find_package(GCEM REQUIRED) picks them up. This replaces
upstream's git-submodule / CMake-time-download fallback, neither
of which is acceptable in OpenWrt's offline build model.
gcem is header-only (INTERFACE-only CMake target), so there is
no shared library to link against; the dependency exists at
build time only, expressed as PKG_BUILD_DEPENDS:=gcem.
Link: https://github.com/FluidSynth/fluidsynth/releases/tag/v2.5.4
Link: https://github.com/FluidSynth/fluidsynth/wiki/ReleaseNotes
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
A substantial release with many new features and module format
fixes since 4.6.3.
Highlights:
* Increase maximum sampling rate (XMP_MAX_SRATE) to 768000.
* xmp_seek_time now always seeks; new xmp_seek_time_frame for
frame-accurate seeking.
* New tempo factor APIs: xmp_set_tempo_factor_relative,
xmp_get_tempo_factor, xmp_get_tempo_factor_relative.
* New API define XMP_FORMAT_32BIT to enable 32-bit integer output.
* New API defines XMP_INST_NO_DEFAULT_PAN, XMP_MARK_SKIP,
XMP_MARK_END.
* Add support for Pack-Ice depacking and Software Visions DMF
(Apocalypse Abyss MOD variant).
* Internal module time/duration calculations now use doubles.
* Numerous bug fixes across MOD, XM, S3M, IT, RTM, MED, Funktracker,
Imago Orpheus IMF, Liquid Tracker LIQ, DigiBooster Pro, IMS and
other formats: sample default panning/volume corrections, effect
memory and translation fixes, note edge cases.
Link: https://github.com/libxmp/libxmp/blob/libxmp-4.7.0/docs/Changelog
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
1.25.1:
* Fixed the OpenSL and JACK backends.
* Fixed WASAPI and CoreAudio capture.
* Fixed building the OSS backend with OSS v4.
* Fixed a debug assertion with HRTF enabled.
* Fixed an STL hardening assertion in the polyphase resampler.
* Added a new stereo-encoding option for Tetraphonic Surround Matrix
Encoding.
1.25.0:
* Updated library codebase to C++20.
* Fixed alcIsExtensionPresent to do a case-insensitive compare.
* Fixed potential noise when switching reverbs.
* Fixed reverb panning with certain output modes.
* Fixed retrieving the alGetProcAddressDirect extension function.
* Fixed negative source offsets with a callback buffer.
* Added build options for STL hardening (default ON for performant checks).
* Added support for fourth-order ambisonics.
* Added support for CAF files to the Wave Writer backend.
* Added optional support for C++20 modules.
* Updated alsoft-config to Qt6.
* Changed default period size to 512 sample frames.
Link: https://github.com/kcat/openal-soft/blob/1.25.1/ChangeLog
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Release 5.9.0 (January 16, 2026):
* added: new feature to wvtag to copy tags from one WavPack file
to another
* improved: minor tweaks to the new DNS (dynamic noise shaping)
algorithm
* improved: better handling of specific non-standard WAV and AIFF
files
* improved: added CI (GitHub Actions) and fixed a few minor build
issues
* fixed: --pause option failed in many situations (Windows-only)
* fixed: issues related to encoding from an unknown length
(e.g., pipes)
* fixed: several fuzzer-revealed issues related to multithreading
* fixed: potential buffer overruns in WavpackOpenRawDecoder()
Link: https://github.com/dbry/WavPack/blob/5.9.0/NEWS
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Drop 020-string-view.patch: mpd 0.23.17 uses std::string_view directly
in src/tag/GenParseName.cxx, making the patch redundant.
Changes since 0.23.16:
- Optimize the "albumart" command to send larger chunks when available
- Explicitly disallow 'idle' and 'noidle' commands in command lists
- Require libnfs 4.0 or later for NFS storage support
- Trigger inotify database update after symlink creation
- Prefer FFmpeg over sndfile and audiofile for DTS-WAV support
- Add support for libfmt 11.1
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Seems a lot of packages are just getting abandoned by people.
Will pick these up and see them through.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Lower the START value from 99 to 90. This allows other applications that
use pulseaudio to start after it with the pulse client socket being available.
Signed-off-by: Daniel Danzberger <dd@embedd.com>
This software seems no longer maintained by upstream.
The latest upstream release is 10 years ago,
and no package depends on this.
Signed-off-by: Yanase Yuki <dev@zpc.st>
This software seems no longer maintained by upstream.
The latest upstream commit is 8 years ago,
and no package depends on this.
Signed-off-by: Yanase Yuki <dev@zpc.st>
https://github.com/mikebrady/shairport-sync/blob/master/
CONFIGURATION%20FLAGS.md#cryptography states that only the OpenSSL
cryptography backend is suitable for Airplay 2.
Further investigation revealed that the pair_ap module within
shairport-sync, which is needed for Airplay 2, does not have an Mbed TLS
backend.
Accordingly, this commit enables Airplay 2 only for the OpenSSL build.
This has the nice side effect that for Airplay 1 the -mini or -mbedtls
versions can be used without pulling in 6 MB of ffmepg libs.
Signed-off-by: Christian Beier <info@christianbeier.net>
As Hannu Nyman pointed out, in some cases the build of the package is
able to fail:
Package snapserver is missing dependencies for the following libraries:
libasound.so.2
He said: on some build runs, alsa is built (as required by other
packages), and if it is built before snapcast, it may be detected,
if the feature is not explicitly disabled in CMakeLists.txt.
Also: "I think that you could drop that AUDIO_SUPPORT conditional.
AUDIO_SUPPORT is selected e.g. if USB_SUPPORT is selected,
so it is not that big restriction."
Suggested-by: Hannu Nyman <hannu.nyman@iki.fi>
Signed-off-by: Szabolcs Hubai <szab.hu@gmail.com>
Sort CMAKE_OPTIONS by alphabet and save a few bytes with tab character,
instead of repeating "CMAKE_OPTIONS +="
Signed-off-by: Szabolcs Hubai <szab.hu@gmail.com>
With "-DBUILD_WITH_AVAHI=OFF" the "libavahi-client" dependency is not
needed anymore. Instead, the "libexpat" dependency needs to be specified
explicitly.
Fixes: a9ac8666da ("snapcast: fix PulseAudio")
Fixes: eeb8d131fc ("snapcast: add package snapserver and snapclient")
Signed-off-by: Szabolcs Hubai <szab.hu@gmail.com>
While testing my integration of Snapcast, I didn't test with CONFIG_ALL*
and CONFIG_BUILDBOT flags, but the buildbots did and failed with a lot
of undefined reference to PulseAudio.
Fix it with preventing PulseAudio detection.
While at it, prevent Avahi detection too to save more flash space.
These features will be available later, through flavours.
Fixes: https://github.com/openwrt/packages/pull/23956
Fixes: eeb8d131fc ("snapcast: add package snapserver and snapclient")
Signed-off-by: Szabolcs Hubai <szab.hu@gmail.com>
Boost upgrade hit Snapcast hard again: the process needs to be updated!
This patch is a patchset from badaix/snapcast@develop.
It is based on the following upstream commits:
badaix/snapcast@901b79a213 ("Build failure with boost 1.88.0 #1367")
badaix/snapcast@ffb086b4b3 ("Define BOOST_PROCESS_VERSION=1 globally")
badaix/snapcast@c37a76a4ab ("Add missing includes")
badaix/snapcast@571f6a8f69 ("Include process v1 headers for Boost version >= v1.88.0")
Refs: 3585ddfc44 ("boost: Updates package to version 1.88.0")
Signed-off-by: Szabolcs Hubai <szab.hu@gmail.com>