git: 578df4db8f7e - main - audio/musicpd: Update to upstream release 0.23

From: Thomas Zander <riggs_at_FreeBSD.org>
Date: Mon, 18 Oct 2021 07:57:31 UTC
The branch main has been updated by riggs:

URL: https://cgit.FreeBSD.org/ports/commit/?id=578df4db8f7e0ee96c0ba59cc6c3c760b6440111

commit 578df4db8f7e0ee96c0ba59cc6c3c760b6440111
Author:     Thomas Zander <riggs@FreeBSD.org>
AuthorDate: 2021-10-17 17:33:13 +0000
Commit:     Thomas Zander <riggs@FreeBSD.org>
CommitDate: 2021-10-18 07:57:29 +0000

    audio/musicpd: Update to upstream release 0.23
    
    Details:
    - Big release with new features and fixes, see:
      https://raw.githubusercontent.com/MusicPlayerDaemon/MPD/v0.23/NEWS
      including:
    - New plugins for OPENMTP, PIPEWIRE (both as non-default OPTIONS), and
      snapcast (later enabled by default, since no new LIB_DEPENDS).
    - Support for libnpupnp via UPNP OPTION.
    - DSD over PCM playback via native OSS output.
    - PROXY requires mpd 0.20 or later now. This might be a regression for
      some users' use cases, hence no merge to quarterly yet.
    - While one it: Fix search paths for config files when not using the rc
      script in the man pages.
---
 audio/musicpd/Makefile                             | 20 ++++++---
 audio/musicpd/distinfo                             |  6 +--
 ...rc_neighbor_plugins_SmbclientNeighborPlugin.cxx | 50 ++++++++++++++++++++++
 .../musicpd/files/patch-src_protocol_ArgParser.cxx | 10 +++++
 .../patch-src_storage_plugins_SmbclientStorage.cxx | 21 +++++++++
 5 files changed, 97 insertions(+), 10 deletions(-)

diff --git a/audio/musicpd/Makefile b/audio/musicpd/Makefile
index f272ff45fed1..1132de5e333c 100644
--- a/audio/musicpd/Makefile
+++ b/audio/musicpd/Makefile
@@ -1,8 +1,7 @@
 PORTNAME=	musicpd
-PORTVERSION=	0.22.11
-PORTREVISION=	1
+PORTVERSION=	0.23
 CATEGORIES=	audio
-MASTER_SITES=	https://www.musicpd.org/download/mpd/${PORTVERSION:R}/
+MASTER_SITES=	https://www.musicpd.org/download/mpd/${PORTVERSION}/
 DISTNAME=	mpd-${PORTVERSION}
 
 MAINTAINER=	riggs@FreeBSD.org
@@ -12,6 +11,7 @@ LICENSE=	GPLv2+
 LICENSE_FILE=	${WRKSRC}/COPYING
 
 LIB_DEPENDS=	libboost_iostreams.so:devel/boost-libs \
+		libfmt.so:devel/libfmt \
 		libicudata.so:devel/icu
 
 USES=		compiler:c++17-lang localbase:ldflags meson pkgconfig \
@@ -52,9 +52,9 @@ OPTIONS_MULTI_FILE_FORMAT=	\
 OPTIONS_GROUP=	ACCESS PLAYBACK
 
 OPTIONS_GROUP_ACCESS=	CDPARANOIA CURL LAME MMS NFS PLAYLISTS QOBUZ \
-			SMB SOUNDCLOUD YAJL
+			SMB SOUNDCLOUD UPNP YAJL
 
-OPTIONS_GROUP_PLAYBACK=	AO JACK OPENAL PULSEAUDIO \
+OPTIONS_GROUP_PLAYBACK=	AO JACK OPENAL OPENMPT PIPEWIRE PULSEAUDIO \
 			SHOUTCAST SNDIO
 
 ADPLUG_DESC=	AdPlug support
@@ -63,6 +63,8 @@ GME_DESC=	GME support (video game music files)
 ISO9660_DESC=	Direct support for ISO 9660 images
 PROXYDB_DESC=	Proxy database support via libmpdclient
 LAME_DESC=	Support for MP3 Icecast Streams
+OPENMPT_DESC=	Support for OpenMPT playback
+PIPEWIRE_DESC=	PipeWire support
 PLAYLISTS_DESC=	Enable extra playlist support (wma, RSS)
 QOBUZ_DESC=	Streaming service support: Qobuz
 SIDPLAY_DESC=	Sidplay support (C64 mono and stereo files)
@@ -109,6 +111,8 @@ MUSEPACK_MESON_ENABLED=	mpcdec
 MUSEPACK_LIB_DEPENDS=	libmpcdec.so:audio/musepack
 NFS_MESON_ENABLED=	nfs
 NFS_LIB_DEPENDS=	libnfs.so:net/libnfs
+OPENMPT_MESON_ENABLED=	openmpt
+OPENMPT_LIB_DEPENDS=	libopenmpt.so:audio/libopenmpt
 OPUS_MESON_ENABLED=	opus
 OPUS_LIB_DEPENDS=	libopus.so:audio/opus \
 			libogg.so:audio/libogg
@@ -149,6 +153,8 @@ JACK_LIB_DEPENDS=	libjack.so:audio/jack
 JACK_CXXFLAGS=		-Wno-register
 OPENAL_MESON_ENABLED=	openal
 OPENAL_USES=		openal
+PIPEWIRE_MESON_ENABLED=	pipewire
+PIPEWIRE_LIB_DEPENDS=	libpipewire-0.3.so:multimedia/pipewire
 PULSEAUDIO_MESON_ENABLED=	pulse
 PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
 SHOUTCAST_MESON_ENABLED=shout
@@ -198,6 +204,8 @@ AVAHI_MESON_ON=		-Dzeroconf=avahi
 AVAHI_LIB_DEPENDS=	libavahi-client.so:net/avahi-app
 MDNSRESPONDER_MESON_ON=		-Dzeroconf=bonjour
 MDNSRESPONDER_LIB_DEPENDS=	libdns_sd.so:net/mDNSResponder
+UPNP_MESON_ON=		-Dupnp=npupnp
+UPNP_LIB_DEPENDS=	libnpupnp.so:net/libnpupnp
 YAJL_MESON_ENABLED=	yajl
 YAJL_LIB_DEPENDS=	libyajl.so:devel/yajl
 
@@ -216,8 +224,6 @@ post-patch:
 		-e 's#^``mpd#``${PORTNAME}#' \
 		-e 's#:: mpd#:: ${PORTNAME}#' \
 		-e 's#mpd(1)#${PORTNAME}(1)#' \
-		-e 's#/etc/mpd.conf#${PREFIX}/etc/${PORTNAME}.conf#' \
-		-e 's#mpd.conf#${PORTNAME}.conf#' \
 		-e 's#mpd.conf(5)#${PORTNAME}.conf(5)#' \
 		${WRKSRC}/doc/mpd.1.rst ${WRKSRC}/doc/mpd.conf.5.rst
 	@${REINPLACE_CMD} \
diff --git a/audio/musicpd/distinfo b/audio/musicpd/distinfo
index 4cd117eeb383..6ba2ffde1abe 100644
--- a/audio/musicpd/distinfo
+++ b/audio/musicpd/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1629886055
-SHA256 (mpd-0.22.11.tar.xz) = 143f7f34aaee6e87888f3dd35d49aade6656052651b960ca42b46cbb518ca0a0
-SIZE (mpd-0.22.11.tar.xz) = 737184
+TIMESTAMP = 1634384255
+SHA256 (mpd-0.23.tar.xz) = 73562c7e6d5815e84de9485c9947c98fa5b9c2d761c3fb23df7004b9b8beb85a
+SIZE (mpd-0.23.tar.xz) = 764184
diff --git a/audio/musicpd/files/patch-src_neighbor_plugins_SmbclientNeighborPlugin.cxx b/audio/musicpd/files/patch-src_neighbor_plugins_SmbclientNeighborPlugin.cxx
new file mode 100644
index 000000000000..c8c90a1d62b7
--- /dev/null
+++ b/audio/musicpd/files/patch-src_neighbor_plugins_SmbclientNeighborPlugin.cxx
@@ -0,0 +1,50 @@
+--- src/neighbor/plugins/SmbclientNeighborPlugin.cxx.orig	2021-10-14 13:25:21 UTC
++++ src/neighbor/plugins/SmbclientNeighborPlugin.cxx
+@@ -33,6 +33,8 @@
+ 
+ #include <libsmbclient.h>
+ 
++#include <cerrno>
++#include <cstring>
+ #include <utility>
+ 
+ class SmbclientNeighborExplorer final : public NeighborExplorer {
+@@ -45,12 +47,12 @@ class SmbclientNeighborExplorer final : public Neighbo
+ 
+ 		Server(const Server &) = delete;
+ 
+-		gcc_pure
++		[[gnu::pure]]
+ 		bool operator==(const Server &other) const noexcept {
+ 			return name == other.name;
+ 		}
+ 
+-		[[nodiscard]] gcc_pure
++		[[nodiscard]] [[gnu::pure]]
+ 		NeighborInfo Export() const noexcept {
+ 			return { "smb://" + name + "/", comment };
+ 		}
+@@ -165,11 +167,11 @@ ReadServers(SmbclientContext &ctx, const char *uri,
+ 		ReadServers(ctx, handle, list);
+ 		ctx.CloseDirectory(handle);
+ 	} else
+-		FormatErrno(smbclient_domain, "smbc_opendir('%s') failed",
+-			    uri);
++		FmtError(smbclient_domain, "smbc_opendir('{}') failed: {}",
++			 uri, strerror(errno));
+ }
+ 
+-gcc_pure
++[[gnu::pure]]
+ static NeighborExplorer::List
+ DetectServers(SmbclientContext &ctx) noexcept
+ {
+@@ -178,7 +180,7 @@ DetectServers(SmbclientContext &ctx) noexcept
+ 	return list;
+ }
+ 
+-gcc_pure
++[[gnu::pure]]
+ static NeighborExplorer::List::iterator
+ FindBeforeServerByURI(NeighborExplorer::List::iterator prev,
+ 		      NeighborExplorer::List::iterator end,
diff --git a/audio/musicpd/files/patch-src_protocol_ArgParser.cxx b/audio/musicpd/files/patch-src_protocol_ArgParser.cxx
new file mode 100644
index 000000000000..6944c08007ac
--- /dev/null
+++ b/audio/musicpd/files/patch-src_protocol_ArgParser.cxx
@@ -0,0 +1,10 @@
+--- src/protocol/ArgParser.cxx.orig	2021-10-14 13:25:21 UTC
++++ src/protocol/ArgParser.cxx
+@@ -24,6 +24,7 @@
+ #include "util/NumberParser.hxx"
+ 
+ #include <stdlib.h>
++#include <stdio.h>
+ 
+ static inline ProtocolError
+ MakeArgError(const char *msg, const char *value) noexcept
diff --git a/audio/musicpd/files/patch-src_storage_plugins_SmbclientStorage.cxx b/audio/musicpd/files/patch-src_storage_plugins_SmbclientStorage.cxx
new file mode 100644
index 000000000000..acb8680d62e1
--- /dev/null
+++ b/audio/musicpd/files/patch-src_storage_plugins_SmbclientStorage.cxx
@@ -0,0 +1,21 @@
+--- src/storage/plugins/SmbclientStorage.cxx.orig	2021-10-14 13:25:21 UTC
++++ src/storage/plugins/SmbclientStorage.cxx
+@@ -186,15 +186,15 @@ SmbclientDirectoryReader::GetInfo([[maybe_unused]] boo
+ static std::unique_ptr<Storage>
+ CreateSmbclientStorageURI([[maybe_unused]] EventLoop &event_loop, const char *base)
+ {
+-	if (!StringStartsWithCaseASCII(base, "smb://"))
+-		return nullptr;
+-
+ 	SmbclientInit();
+ 
+ 	return std::make_unique<SmbclientStorage>(base);
+ }
+ 
++static constexpr const char *smbclient_prefixes[] = { "smb://", nullptr };
++
+ const StoragePlugin smbclient_storage_plugin = {
+ 	"smbclient",
++	smbclient_prefixes,
+ 	CreateSmbclientStorageURI,
+ };