From dd387fd7baa25fd31d38e75312f0dcc8bd41e550 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Mon, 5 Oct 2026 10:48:08 +0300 Subject: [PATCH 1/3] mpd: fix the pulseaudio rpath-link guard -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 --- sound/mpd/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/mpd/Makefile b/sound/mpd/Makefile index ab11ad1fe90b5..1fcf06cf6ce3f 100644 --- a/sound/mpd/Makefile +++ b/sound/mpd/Makefile @@ -196,7 +196,7 @@ ifeq ($(BUILD_VARIANT),full) -Dlame=enabled \ -Dsoxr=enabled -ifeq ($(CONFIG_PACKAGE_audio-support),y) +ifneq ($(CONFIG_PACKAGE_audio-support),) TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib/pulseaudio endif endif From 21d2903db212f137e3d9285d87cfe55e4625b896 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Fri, 2 Oct 2026 22:34:24 +0300 Subject: [PATCH 2/3] mpd: update to 0.24.15 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 --- sound/mpd/Makefile | 17 +++++++---------- sound/mpd/patches/010-fmt.patch | 20 -------------------- 2 files changed, 7 insertions(+), 30 deletions(-) delete mode 100644 sound/mpd/patches/010-fmt.patch diff --git a/sound/mpd/Makefile b/sound/mpd/Makefile index 1fcf06cf6ce3f..dd297e21baa77 100644 --- a/sound/mpd/Makefile +++ b/sound/mpd/Makefile @@ -6,12 +6,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mpd -PKG_VERSION:=0.23.17 -PKG_RELEASE:=2 +PKG_VERSION:=0.24.15 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_SOURCE_URL:=https://www.musicpd.org/download/mpd/0.23 -PKG_HASH:=a86f4fe811695743b08db82a9f1a840b8918bb4f46b06f48aa1d8d1b5386dff2 +PKG_SOURCE_URL:=https://www.musicpd.org/download/mpd/0.24 +PKG_HASH:=524c70bce3fcd268016156bdc97abcf5be1904f0c6fd622688999123e3c4c457 PKG_MAINTAINER:=Alexandru Ardelean PKG_LICENSE:=GPL-2.0-or-later @@ -33,7 +33,7 @@ define Package/mpd/Default CATEGORY:=Sound TITLE:=Music Player Daemon URL:=https://www.musicpd.org/ - DEPENDS:= +zlib +libcurl +libpthread +libmpdclient +boost $(ICONV_DEPENDS) +libfmt \ + DEPENDS:=+zlib +libcurl +libpthread +libmpdclient $(ICONV_DEPENDS) +libfmt \ +PACKAGE_audio-support:alsa-lib +libexpat +libflac +libid3tag +libfaad2 +libopus USERID:=mpd:mpd endef @@ -48,7 +48,7 @@ endef define Package/mpd-full $(call Package/mpd/Default) TITLE+= (full) - DEPENDS+= +PACKAGE_audio-support:pulseaudio +libvorbis +libmms +libnpupnp +libshout +yajl \ + DEPENDS+= +PACKAGE_audio-support:pulseaudio +libvorbis +libmms +libnpupnp +libshout \ +libffmpeg +lame-lib +libsoxr +!BUILD_PATENTED:libmad PROVIDES:=mpd VARIANT:=full @@ -129,6 +129,7 @@ MESON_ARGS += \ -Dnfs=disabled \ -Dsmbclient=disabled \ -Dqobuz=disabled \ + -Dnlohmann_json=disabled \ -Dbzip2=disabled \ -Diso9660=disabled \ -Dzzip=disabled \ @@ -181,7 +182,6 @@ ifeq ($(BUILD_VARIANT),full) -Dupnp=npupnp \ -Dmms=enabled \ -Ddsd=true \ - -Dsoundcloud=enabled \ -Dffmpeg=enabled \ -Dmad=$(if $(CONFIG_BUILD_PATENTED),dis,en)abled \ -Dtremor=disabled \ @@ -191,7 +191,6 @@ ifeq ($(BUILD_VARIANT),full) -Dpulse=$(if $(CONFIG_PACKAGE_audio-support),en,dis)abled \ -Drecorder=true \ -Dshout=enabled \ - -Dyajl=enabled \ -Dvorbisenc=enabled \ -Dlame=enabled \ -Dsoxr=enabled @@ -208,7 +207,6 @@ ifeq ($(BUILD_VARIANT),mini) -Dupnp=disabled \ -Dmms=disabled \ -Ddsd=false \ - -Dsoundcloud=disabled \ -Dffmpeg=disabled \ -Dmad=enabled \ -Dtremor=enabled \ @@ -218,7 +216,6 @@ ifeq ($(BUILD_VARIANT),mini) -Dpulse=disabled \ -Drecorder=false \ -Dshout=disabled \ - -Dyajl=disabled \ -Dsoxr=disabled endif diff --git a/sound/mpd/patches/010-fmt.patch b/sound/mpd/patches/010-fmt.patch deleted file mode 100644 index a10cef840aa97..0000000000000 --- a/sound/mpd/patches/010-fmt.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/src/client/Response.hxx -+++ b/src/client/Response.hxx -@@ -83,7 +83,7 @@ public: - template - bool Fmt(const S &format_str, Args&&... args) noexcept { - #if FMT_VERSION >= 90000 -- return VFmt(format_str, -+ return VFmt(fmt::format_string(format_str), - fmt::make_format_args(args...)); - #elif FMT_VERSION >= 70000 - return VFmt(fmt::to_string_view(format_str), -@@ -113,7 +113,7 @@ public: - void FmtError(enum ack code, - const S &format_str, Args&&... args) noexcept { - #if FMT_VERSION >= 90000 -- return VFmtError(code, format_str, -+ return VFmtError(code, fmt::format_string(format_str), - fmt::make_format_args(args...)); - #elif FMT_VERSION >= 70000 - return VFmtError(code, fmt::to_string_view(format_str), From d86bc200c0c9ca07b8dd087922df543eed7c866c Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Tue, 6 Oct 2026 11:13:05 +0300 Subject: [PATCH 3/3] mpd: match the version in the binary for the CI tests 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 --- sound/mpd/test-version.sh | 20 ++++++++++++++++++++ sound/mpd/test.sh | 8 ++------ 2 files changed, 22 insertions(+), 6 deletions(-) create mode 100755 sound/mpd/test-version.sh diff --git a/sound/mpd/test-version.sh b/sound/mpd/test-version.sh new file mode 100755 index 0000000000000..c6f90488a8198 --- /dev/null +++ b/sound/mpd/test-version.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# shellcheck shell=busybox + +# mpd 0.24 refuses to start when /proc/self/status reports more than one +# thread before main() runs, which it does under qemu-user, so the binary +# cannot be asked for its version on the emulated CI targets. Match the +# version string compiled into it instead. +case "$1" in +mpd-full | mpd-mini) + grep -aqF "$2" /usr/bin/mpd + ;; +mpd-avahi-service) + exit 0 + ;; +*) + echo "Untested package: $1" >&2 + exit 1 + ;; +esac diff --git a/sound/mpd/test.sh b/sound/mpd/test.sh index 4e0c4133628bf..03f03b1df3f9e 100644 --- a/sound/mpd/test.sh +++ b/sound/mpd/test.sh @@ -1,12 +1,8 @@ #!/bin/sh _mpd_test() { - # Version check - mpd --version | grep -F "$2" - - # Confirm the binary reports at least one supported output plugin; - # "null" is always compiled in and safe for testing. - mpd --version | grep -i "null" + # Running mpd is not possible on the emulated CI targets, see + # test-version.sh; only the init script's shell logic is tested here. # Test playlist_directory parsing logic from the init script: # explicit value