Download raw body.
[update] audio/mpd 0.24.2 & ncmpd 0.52.0
hi,
here's updates for the newer 0.24 branch for mpd, see
https://www.musicpd.org/news/2025/03/mpd-0-24-released/ ,
https://raw.githubusercontent.com/MusicPlayerDaemon/MPD/v0.24.2/NEWS
and the companion ncmpc 0.52. i had to revert an upstream commit in both
that made the build fail with error messages related to undefined
invoke/invocable too modern c++20 concepts, i attribute that failure to
a 'too old base libcxx'.
with that reverted mpd builds with ports llvm 19 and base llvm 16.
i havent done any runtime testing yet, will update my local install
running on 7.6 with backports.
feedback/testing welcome.
Landry
? 0.21.8.log
? mpd-0.20.20
? mpd-0.21.1
? patch-src_Main_cxx
Index: Makefile
===================================================================
RCS file: /cvs/ports/audio/mpd/Makefile,v
diff -u -r1.153 Makefile
--- Makefile 23 Dec 2024 16:55:25 -0000 1.153
+++ Makefile 29 Mar 2025 08:45:22 -0000
@@ -1,6 +1,6 @@
BROKEN-hppa = no atomic ops
COMMENT = Music Player Daemon
-VER = 0.23.16
+VER = 0.24.2
DISTNAME = mpd-${VER}
EXTRACT_SUFX = .tar.xz
CATEGORIES = audio
@@ -19,6 +19,7 @@
SITES = https://www.musicpd.org/download/mpd/${VER:R}/
+# needs libcxx update ?
COMPILER = base-clang ports-gcc
BUILD_DEPENDS = devel/boost
Index: distinfo
===================================================================
RCS file: /cvs/ports/audio/mpd/distinfo,v
diff -u -r1.68 distinfo
--- distinfo 23 Dec 2024 16:55:25 -0000 1.68
+++ distinfo 29 Mar 2025 08:45:22 -0000
@@ -1,2 +1,2 @@
-SHA256 (mpd-0.23.16.tar.xz) = lmjjbfgN5IVoPJYtAoRb8xTYoI5hQa96/v92QB4yssE=
-SIZE (mpd-0.23.16.tar.xz) = 778572
+SHA256 (mpd-0.24.2.tar.xz) = 1pJR/dFbvY+80cSG3U3GpOAI4EWXWyQIyy83RhwQ8eQ=
+SIZE (mpd-0.24.2.tar.xz) = 1016792
Index: patches/patch-doc_meson_build
===================================================================
RCS file: /cvs/ports/audio/mpd/patches/patch-doc_meson_build,v
diff -u -r1.3 patch-doc_meson_build
--- patches/patch-doc_meson_build 9 Mar 2022 09:52:23 -0000 1.3
+++ patches/patch-doc_meson_build 29 Mar 2025 08:45:22 -0000
@@ -1,8 +1,8 @@
Index: doc/meson.build
--- doc/meson.build.orig
+++ doc/meson.build
-@@ -19,7 +19,7 @@ if get_option('html_manual')
- 'conf.py',
+@@ -20,7 +20,7 @@ if get_option('html_manual')
+ '_static/css/custom.css'
],
command: [sphinx, '-q', '-b', 'html', '-d', '@OUTDIR@/doctrees', meson.current_source_dir(), '@OUTPUT@'],
- build_by_default: true,
Index: patches/patch-doc_mpdconf_example
===================================================================
RCS file: /cvs/ports/audio/mpd/patches/patch-doc_mpdconf_example,v
diff -u -r1.23 patch-doc_mpdconf_example
--- patches/patch-doc_mpdconf_example 22 Dec 2023 19:24:34 -0000 1.23
+++ patches/patch-doc_mpdconf_example 29 Mar 2025 08:45:22 -0000
@@ -1,65 +1,62 @@
Index: doc/mpdconf.example
--- doc/mpdconf.example.orig
+++ doc/mpdconf.example
-@@ -10,14 +10,14 @@
- # be disabled and audio files will only be accepted over ipc socket (using
- # file:// protocol) or streaming files over an accepted protocol.
+@@ -12,6 +12,7 @@
#
--#music_directory "~/music"
+ #music_directory "$XDG_MUSIC_DIR"
+ #music_directory "~/music"
+music_directory "/please-configure-your-music_directory"
#
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use
- # playlist files not created by the server but only if they are in the MPD
- # format. This setting defaults to playlist saving being disabled.
+@@ -20,6 +21,7 @@
#
--#playlist_directory "~/.mpd/playlists"
+ #playlist_directory "$XDG_CONFIG_HOME/mpd/playlists"
+ #playlist_directory "~/.mpd/playlists"
+playlist_directory "/var/spool/mpd/playlists"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the
-@@ -25,7 +25,7 @@
- # MPD to accept files over ipc socket (using file:// protocol) or streaming
- # files over an accepted protocol.
+@@ -29,6 +31,7 @@
#
--#db_file "~/.mpd/database"
+ #db_file "$XDG_CACHE_HOME/mpd/database"
+ #db_file "~/.mpd/database"
+db_file "/var/spool/mpd/mpd.db"
# These settings are the locations for the daemon log files for the daemon.
#
-@@ -35,7 +35,7 @@
- # If you use systemd, do not configure a log_file. With systemd, MPD
- # defaults to the systemd journal, which is fine.
+@@ -40,6 +43,7 @@
#
--#log_file "~/.mpd/log"
+ #log_file "$XDG_CACHE_HOME/mpd/log"
+ #log_file "~/.mpd/log"
+log_file "/var/log/mpd/mpd.log"
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
-@@ -43,19 +43,19 @@
+@@ -49,6 +53,7 @@
#
- # If you use systemd, do not configure a pid_file.
- #
--#pid_file "~/.mpd/pid"
+ #pid_file "$XDG_RUNTIME_DIR/mpd/mpd.pid"
+ #pid_file "~/.mpd/pid"
+pid_file "/var/spool/mpd/mpd.pid"
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
- # it was brought down. This setting is disabled by default and the server
- # state will be reset on server start up.
+@@ -57,12 +62,14 @@
#
--#state_file "~/.mpd/state"
+ #state_file "$XDG_RUNTIME_DIR/mpd/state"
+ #state_file "~/.mpd/state"
+state_file "/var/spool/mpd/mpdstate"
#
# The location of the sticker database. This is a database which
# manages dynamic information attached to songs.
#
--#sticker_file "~/.mpd/sticker.sql"
+ #sticker_file "$XDG_CACHE_HOME/sticker.sql"
+ #sticker_file "~/.mpd/sticker.sql"
+sticker_file "/var/spool/mpd/sticker.sql"
#
###############################################################################
-@@ -67,7 +67,7 @@
+@@ -74,7 +81,7 @@
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
@@ -68,9 +65,9 @@
#
# This setting specifies the group that MPD will run as. If not specified
# primary group of user specified with "user" setting will be used (if set).
-@@ -86,7 +86,10 @@
- #
+@@ -94,7 +101,10 @@
# And for Unix Socket
+ #bind_to_address "$XDG_RUNTIME_DIR/mpd/socket"
#bind_to_address "~/.mpd/socket"
+#bind_to_address "/var/run/mpd/socket"
#
@@ -79,7 +76,7 @@
# This setting is the TCP port that is desired for the daemon to get assigned
# to.
#
-@@ -331,11 +334,11 @@ input {
+@@ -339,11 +349,11 @@ input {
#
# An example of an sndio output.
#
Index: patches/patch-src_event_FineTimerEvent_hxx
===================================================================
RCS file: patches/patch-src_event_FineTimerEvent_hxx
diff -N patches/patch-src_event_FineTimerEvent_hxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_event_FineTimerEvent_hxx 29 Mar 2025 08:45:22 -0000
@@ -0,0 +1,24 @@
+revert https://github.com/MusicPlayerDaemon/MPD/commit/c5e607a3107c3ec2592f5785db4c9b55faefcaae
+
+to revisit when base libcxx is updated ?
+Index: src/event/FineTimerEvent.hxx
+--- src/event/FineTimerEvent.hxx.orig
++++ src/event/FineTimerEvent.hxx
+@@ -7,7 +7,7 @@
+ #include "Chrono.hxx"
+ #include "event/Features.h"
+ #include "util/BindMethod.hxx"
+-#include "util/IntrusiveTreeSet.hxx"
++#include <boost/intrusive/set_hook.hpp>
+
+ #include <cassert>
+
+@@ -25,7 +25,7 @@ class EventLoop;
+ * as thread-safe.
+ */
+ class FineTimerEvent final :
+- public IntrusiveTreeSetHook<IntrusiveHookMode::AUTO_UNLINK>
++ public boost::intrusive::set_base_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>>
+ {
+ friend class TimerList;
+
Index: patches/patch-src_event_TimerList_cxx
===================================================================
RCS file: patches/patch-src_event_TimerList_cxx
diff -N patches/patch-src_event_TimerList_cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_event_TimerList_cxx 29 Mar 2025 08:45:22 -0000
@@ -0,0 +1,30 @@
+revert https://github.com/MusicPlayerDaemon/MPD/commit/c5e607a3107c3ec2592f5785db4c9b55faefcaae
+
+to revisit when base libcxx is updated ?
+Index: src/event/TimerList.cxx
+--- src/event/TimerList.cxx.orig
++++ src/event/TimerList.cxx
+@@ -5,10 +5,11 @@
+ #include "TimerList.hxx"
+ #include "FineTimerEvent.hxx"
+
+-constexpr Event::TimePoint
+-TimerList::GetDue::operator()(const FineTimerEvent &timer) const noexcept
++constexpr bool
++TimerList::Compare::operator()(const FineTimerEvent &a,
++ const FineTimerEvent &b) const noexcept
+ {
+- return timer.GetDue();
++ return a.due < b.due;
+ }
+
+ TimerList::TimerList() = default;
+@@ -37,7 +38,7 @@ TimerList::Run(const Event::TimePoint now) noexcept
+ if (timeout > timeout.zero())
+ return timeout;
+
+- timers.pop_front();
++ timers.erase(i);
+
+ t.Run();
+ }
Index: patches/patch-src_event_TimerList_hxx
===================================================================
RCS file: patches/patch-src_event_TimerList_hxx
diff -N patches/patch-src_event_TimerList_hxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_event_TimerList_hxx 29 Mar 2025 08:45:22 -0000
@@ -0,0 +1,35 @@
+revert https://github.com/MusicPlayerDaemon/MPD/commit/c5e607a3107c3ec2592f5785db4c9b55faefcaae
+
+to revisit when base libcxx is updated ?
+Index: src/event/TimerList.hxx
+--- src/event/TimerList.hxx.orig
++++ src/event/TimerList.hxx
+@@ -6,7 +6,7 @@
+
+ #include "Chrono.hxx"
+ #include "event/Features.h"
+-#include "util/IntrusiveTreeSet.hxx"
++#include <boost/intrusive/set.hpp>
+
+ class FineTimerEvent;
+
+@@ -14,12 +14,15 @@ class FineTimerEvent;
+ * A list of #FineTimerEvent instances sorted by due time point.
+ */
+ class TimerList final {
+- struct GetDue {
+- constexpr Event::TimePoint operator()(const FineTimerEvent &timer) const noexcept;
++ struct Compare {
++ constexpr bool operator()(const FineTimerEvent &a,
++ const FineTimerEvent &b) const noexcept;
+ };
+
+- IntrusiveTreeSet<FineTimerEvent,
+- IntrusiveTreeSetOperators<FineTimerEvent, GetDue>> timers;
++ boost::intrusive::multiset<FineTimerEvent,
++ boost::intrusive::base_hook<boost::intrusive::set_base_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>>>,
++ boost::intrusive::compare<Compare>,
++ boost::intrusive::constant_time_size<false>> timers;
+
+ public:
+ TimerList();
Index: patches/patch-src_input_plugins_CdioParanoiaInputPlugin_cxx
===================================================================
RCS file: patches/patch-src_input_plugins_CdioParanoiaInputPlugin_cxx
diff -N patches/patch-src_input_plugins_CdioParanoiaInputPlugin_cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_input_plugins_CdioParanoiaInputPlugin_cxx 29 Mar 2025 08:45:22 -0000
@@ -0,0 +1,14 @@
+otherwise NULL is defined to (void*)0 by cdio/types.h
+
+Index: src/input/plugins/CdioParanoiaInputPlugin.cxx
+--- src/input/plugins/CdioParanoiaInputPlugin.cxx.orig
++++ src/input/plugins/CdioParanoiaInputPlugin.cxx
+@@ -5,6 +5,8 @@
+ * CD-Audio handling (requires libcdio_paranoia)
+ */
+
++#define NULL nullptr
++
+ #include "CdioParanoiaInputPlugin.hxx"
+ #include "lib/cdio/Paranoia.hxx"
+ #include "lib/fmt/RuntimeError.hxx"
Index: patches/patch-src_net_DscpParser_cxx
===================================================================
RCS file: patches/patch-src_net_DscpParser_cxx
diff -N patches/patch-src_net_DscpParser_cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_net_DscpParser_cxx 29 Mar 2025 08:45:22 -0000
@@ -0,0 +1,14 @@
+/usr/include/netinet/ip.h:67:19: error: field has incomplete type 'struct in_addr'
+
+Index: src/net/DscpParser.cxx
+--- src/net/DscpParser.cxx.orig
++++ src/net/DscpParser.cxx
+@@ -9,7 +9,7 @@
+ #ifdef _WIN32
+ #include <ws2tcpip.h>
+ #else
+-#include <netinet/ip.h>
++//#include <netinet/ip.h>
+ #endif
+
+ #ifndef IPTOS_DSCP_AF11
Index: patches/patch-src_net_meson_build
===================================================================
RCS file: /cvs/ports/audio/mpd/patches/patch-src_net_meson_build,v
diff -u -r1.2 patch-src_net_meson_build
--- patches/patch-src_net_meson_build 11 Mar 2022 18:20:19 -0000 1.2
+++ patches/patch-src_net_meson_build 29 Mar 2025 08:45:22 -0000
@@ -1,11 +1,11 @@
Index: src/net/meson.build
--- src/net/meson.build.orig
+++ src/net/meson.build
-@@ -19,7 +19,6 @@ have_local_socket = not is_windows and get_option('loc
+@@ -29,7 +29,6 @@ have_local_socket = not is_windows and get_option('loc
conf.set('HAVE_UN', have_local_socket)
if have_local_socket
- conf.set('HAVE_STRUCT_UCRED', compiler.has_header_symbol('sys/socket.h', 'struct ucred') and compiler.has_header_symbol('sys/socket.h', 'SO_PEERCRED'))
conf.set('HAVE_GETPEEREID', compiler.has_function('getpeereid'))
+ net_sources += 'LocalSocketAddress.cxx'
endif
-
Index: Makefile
===================================================================
RCS file: /cvs/ports/audio/ncmpc/Makefile,v
diff -u -r1.64 Makefile
--- Makefile 4 Jan 2025 16:30:13 -0000 1.64
+++ Makefile 29 Mar 2025 08:41:00 -0000
@@ -2,7 +2,7 @@
COMMENT= curses based frontend for mpd
-VER= 0.49
+VER= 0.52
DISTNAME= ncmpc-${VER}
EPOCH= 0
CATEGORIES= audio
@@ -14,7 +14,7 @@
# make sure to regen WANTLIB on ld.lld arches (-Wl,--as-needed)
WANTLIB += ${COMPILER_LIBCXX} c curses iconv intl m mpdclient>=1
-WANTLIB += pcre2-8
+WANTLIB += pcre2-8 fmt
SITES= https://www.musicpd.org/download/ncmpc/${VER:R}/
@@ -30,6 +30,7 @@
textproc/py-sphinx
LIB_DEPENDS= audio/libmpdclient>=2.20 \
+ devel/fmt \
devel/gettext,-runtime \
devel/pcre2
Index: distinfo
===================================================================
RCS file: /cvs/ports/audio/ncmpc/distinfo,v
diff -u -r1.29 distinfo
--- distinfo 12 Aug 2023 16:56:29 -0000 1.29
+++ distinfo 29 Mar 2025 08:41:00 -0000
@@ -1,2 +1,2 @@
-SHA256 (ncmpc-0.49.tar.xz) = ZbvsDt6ea89irGR7DHBkhb6yvdXbcMqNYBA/MvFizyk=
-SIZE (ncmpc-0.49.tar.xz) = 296012
+SHA256 (ncmpc-0.52.tar.xz) = OvIlSW/jY6hTSpeA+0auG9F7rv2Az0unQwoZzd1z6xo=
+SIZE (ncmpc-0.52.tar.xz) = 319580
Index: patches/patch-src_event_FineTimerEvent_hxx
===================================================================
RCS file: patches/patch-src_event_FineTimerEvent_hxx
diff -N patches/patch-src_event_FineTimerEvent_hxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_event_FineTimerEvent_hxx 29 Mar 2025 08:41:00 -0000
@@ -0,0 +1,24 @@
+revert https://github.com/MusicPlayerDaemon/ncmpc/commit/63e3372775c7b1330d07e7e2be38170ad9076cae
+
+to revisit when base libcxx is updated ?
+Index: src/event/FineTimerEvent.hxx
+--- src/event/FineTimerEvent.hxx.orig
++++ src/event/FineTimerEvent.hxx
+@@ -7,7 +7,7 @@
+ #include "Chrono.hxx"
+ #include "event/Features.h"
+ #include "util/BindMethod.hxx"
+-#include "util/IntrusiveTreeSet.hxx"
++#include <boost/intrusive/set_hook.hpp>
+
+ #include <cassert>
+
+@@ -25,7 +25,7 @@ class EventLoop;
+ * as thread-safe.
+ */
+ class FineTimerEvent final :
+- public IntrusiveTreeSetHook<IntrusiveHookMode::AUTO_UNLINK>
++ public boost::intrusive::set_base_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>>
+ {
+ friend class TimerList;
+
Index: patches/patch-src_event_TimerList_cxx
===================================================================
RCS file: patches/patch-src_event_TimerList_cxx
diff -N patches/patch-src_event_TimerList_cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_event_TimerList_cxx 29 Mar 2025 08:41:00 -0000
@@ -0,0 +1,30 @@
+revert https://github.com/MusicPlayerDaemon/ncmpc/commit/63e3372775c7b1330d07e7e2be38170ad9076cae
+
+to revisit when base libcxx is updated ?
+Index: src/event/TimerList.cxx
+--- src/event/TimerList.cxx.orig
++++ src/event/TimerList.cxx
+@@ -5,10 +5,11 @@
+ #include "TimerList.hxx"
+ #include "FineTimerEvent.hxx"
+
+-constexpr Event::TimePoint
+-TimerList::GetDue::operator()(const FineTimerEvent &timer) const noexcept
++constexpr bool
++TimerList::Compare::operator()(const FineTimerEvent &a,
++ const FineTimerEvent &b) const noexcept
+ {
+- return timer.GetDue();
++ return a.due < b.due;
+ }
+
+ TimerList::TimerList() = default;
+@@ -37,7 +38,7 @@ TimerList::Run(const Event::TimePoint now) noexcept
+ if (timeout > timeout.zero())
+ return timeout;
+
+- timers.pop_front();
++ timers.erase(i);
+
+ t.Run();
+ }
Index: patches/patch-src_event_TimerList_hxx
===================================================================
RCS file: patches/patch-src_event_TimerList_hxx
diff -N patches/patch-src_event_TimerList_hxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_event_TimerList_hxx 29 Mar 2025 08:41:00 -0000
@@ -0,0 +1,35 @@
+revert https://github.com/MusicPlayerDaemon/ncmpc/commit/63e3372775c7b1330d07e7e2be38170ad9076cae
+
+to revisit when base libcxx is updated ?
+Index: src/event/TimerList.hxx
+--- src/event/TimerList.hxx.orig
++++ src/event/TimerList.hxx
+@@ -6,7 +6,7 @@
+
+ #include "Chrono.hxx"
+ #include "event/Features.h"
+-#include "util/IntrusiveTreeSet.hxx"
++#include <boost/intrusive/set.hpp>
+
+ class FineTimerEvent;
+
+@@ -14,12 +14,15 @@ class FineTimerEvent;
+ * A list of #FineTimerEvent instances sorted by due time point.
+ */
+ class TimerList final {
+- struct GetDue {
+- constexpr Event::TimePoint operator()(const FineTimerEvent &timer) const noexcept;
++ struct Compare {
++ constexpr bool operator()(const FineTimerEvent &a,
++ const FineTimerEvent &b) const noexcept;
+ };
+
+- IntrusiveTreeSet<FineTimerEvent,
+- IntrusiveTreeSetOperators<FineTimerEvent, GetDue>> timers;
++ boost::intrusive::multiset<FineTimerEvent,
++ boost::intrusive::base_hook<boost::intrusive::set_base_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>>>,
++ boost::intrusive::compare<Compare>,
++ boost::intrusive::constant_time_size<false>> timers;
+
+ public:
+ TimerList();
Index: patches/patch-src_screen_cxx
===================================================================
RCS file: patches/patch-src_screen_cxx
diff -N patches/patch-src_screen_cxx
--- patches/patch-src_screen_cxx 23 Apr 2023 15:48:15 -0000 1.6
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,16 +0,0 @@
-Because c++14 zomg woot woot
-
-Index: src/screen.cxx
---- src/screen.cxx.orig
-+++ src/screen.cxx
-@@ -27,8 +27,8 @@ ScreenManager::MakePage(const PageMeta &sf) noexcept
- return i;
-
- auto j = pages.emplace(&sf,
-- sf.init(*this, main_window.w,
-- main_window.size));
-+ std::unique_ptr<Page>(sf.init(*this, main_window.w,
-+ main_window.size)));
- assert(j.second);
- return j.first;
- }
Index: patches/patch-src_screen_utils_cxx
===================================================================
RCS file: patches/patch-src_screen_utils_cxx
diff -N patches/patch-src_screen_utils_cxx
--- patches/patch-src_screen_utils_cxx 23 Apr 2023 15:48:15 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
-Index: src/screen_utils.cxx
---- src/screen_utils.cxx.orig
-+++ src/screen_utils.cxx
-@@ -15,6 +15,7 @@
- #include <cerrno>
- #endif
-
-+#include <errno.h>
- #include <string.h>
-
- void
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/audio/ncmpc/pkg/PLIST,v
diff -u -r1.11 PLIST
--- pkg/PLIST 5 Mar 2022 09:32:53 -0000 1.11
+++ pkg/PLIST 29 Mar 2025 08:41:00 -0000
@@ -40,5 +40,8 @@
share/locale/ru/LC_MESSAGES/ncmpc.mo
share/locale/sk/LC_MESSAGES/ncmpc.mo
share/locale/sv/LC_MESSAGES/ncmpc.mo
+share/locale/ta/
+share/locale/ta/LC_MESSAGES/
+share/locale/ta/LC_MESSAGES/ncmpc.mo
share/locale/uk/LC_MESSAGES/ncmpc.mo
share/locale/zh_CN/LC_MESSAGES/ncmpc.mo
[update] audio/mpd 0.24.2 & ncmpd 0.52.0