summaryrefslogtreecommitdiff
path: root/media-sound/mpd
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-05-18 16:12:56 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-05-18 16:12:56 +0100
commitae7f349673c9e013e85bbc65e873d3363467a293 (patch)
tree0ae90623ff8081894ad526c05a94ad9ca84f1ea4 /media-sound/mpd
parent8ea6e43d2f65acbfda614dbd4635823d7605b6d8 (diff)
gentoo auto-resync : 18:05:2023 - 16:12:55
Diffstat (limited to 'media-sound/mpd')
-rw-r--r--media-sound/mpd/Manifest8
-rw-r--r--media-sound/mpd/files/mpd-0.23.11-boost-1.81.patch30
-rw-r--r--media-sound/mpd/files/mpd-0.23.12-libfmt10-906074.patch102
-rw-r--r--media-sound/mpd/files/mpd-0.23.12-stringview.patch235
-rw-r--r--media-sound/mpd/mpd-0.23.12-r1.ebuild (renamed from media-sound/mpd/mpd-0.23.11.ebuild)6
-rw-r--r--media-sound/mpd/mpd-0.23.12.ebuild3
6 files changed, 348 insertions, 36 deletions
diff --git a/media-sound/mpd/Manifest b/media-sound/mpd/Manifest
index 731762952d6e..f9d89206bee3 100644
--- a/media-sound/mpd/Manifest
+++ b/media-sound/mpd/Manifest
@@ -1,8 +1,8 @@
AUX mpd-0.21.1.logrotate 120 BLAKE2B 2111ba897a77a766adf0827c4da7132d5315c7c13ba8e29d582f1030a902492945b0bad6781bbf551e83afd38b957e953215674c669aa2745c1dfa004b20d4b6 SHA512 4a610d4805c32989673d6295fdf4290dc29b11e5b5f3baa2aa957ef9334566f13fa1937e70dc6fe414277e6a026442e4c7e4b406aaf424b96b392da0200ec732
AUX mpd-0.21.4.init 767 BLAKE2B 74879e5f52365f987ac53a8ee154f29b4d7f5287cb2a965b180b3ed4a17dcdc68acea5dbe0b3adc99869270fb93a3f68e6728fad0776b9ce500efb6206f4db3c SHA512 36f3246835d6476e8f4f26795f8148f46b04015141894cdf849bfdd04b1cf5aa7a3d5960587f00e2c7d0f71568ca20fee619b95415df4cd0e4978ce95ca5f897
-AUX mpd-0.23.11-boost-1.81.patch 971 BLAKE2B 56c0963fb2169a8588f0b3dd3ada14859a1de969f455d537f4ac620269a95df77b7029a665824ae81179b7a7ccdbe1943fc451c90faa8171ce9982f72c52e377 SHA512 d8fe43ebe78cff16e7d773e5687960cd5f5ca65d2094d2d9f09c3bd22614ef3e6ad0982db5f8d0427724a12663afed48f20ab41236d2da58a007749955a6b9aa
-DIST mpd-0.23.11.tar.xz 774592 BLAKE2B 70cc22abe78f6457bcec20a8e668647f9a2f38417956133ba5fde286179acaa710337461461d73b907a069fc0cfe6cb3787bc0db6bf61d82ad9fb082cbd2776d SHA512 971ae6b8ee5bf963a0f2408194fa01089713b606b3a2423081621b80a25e1b480f0e80a6d155ac8c2083960d99681c90f4bf00bf0baffa1f977259f1687c4ceb
+AUX mpd-0.23.12-libfmt10-906074.patch 2967 BLAKE2B 367bf72202236b16a07111cb523d21ee2742331fbe4b6608b34d9f55358127a5c8ec0167fb64bf4c455215f6b4c291d6dbafcca7bb769853179a56b6bf99618f SHA512 6c3d6217f10fc38284f9555ccfb54fb7a088b8a163607b663a32133b72ec56e5c2e2466bca91dda27ddcf1dabb1524718b690a71982eb3dc05416567aaf49f51
+AUX mpd-0.23.12-stringview.patch 7379 BLAKE2B 5b23239d6e2343b00cf230eed405c020912f33db443ab02fb4cb656813622a1dd7a2292536ad85b9a99e657b270725452f11122fd1d2ada35da64097bf4d5abe SHA512 faf5fc16605f535efc53ee56782bf291578cfbeed95e09c8b92b6480451386ec651d8d99c4aa928fe238047ce29773b081979580e10721609c8122772b012328
DIST mpd-0.23.12.tar.xz 774708 BLAKE2B b218d9f477e92842638e3fba44c84957a3f656adaaf1ece998847db8d64883b8c997703206f74b37043888757f5f628799a3a35b25ea991f9ad00df1c4ad5e71 SHA512 54495b839d86b47ae6e2f6cf4e1baebd0e8eb924742e9db42cc7462ffc4b6f650b83f3eaea291fe905ff5f1975cf875537ffd23a111724013ce58e6df26ce36e
-EBUILD mpd-0.23.11.ebuild 7882 BLAKE2B 999f14b3b679391525d5d0074cf8b28582db49de0ec39eb4d45f9f8b5035f60fedff4690bfa462fa06df98e68ec279cf3e0656aad7c701ffbbfcc56efb5e05a1 SHA512 b403662a3ff501ffb678fc31fb0f5b282e8555eb337b88863540515aac1484c8a2cfd1bc15560a864f78e8aed5d2a495e5d0502821846ed680033ec967ca353d
-EBUILD mpd-0.23.12.ebuild 7832 BLAKE2B c7fa762ca2d70b100177a2a6e231dbe19172b77d09cbeb0d8436e8d2cbc93cc1845cdb897aac32b6a5f5819826cc910f7862f25f72a09c94e85849216ff6b3e7 SHA512 d0a25723cbbb0a4d1df224a676e211533b076ee0bd3e1fda99428573ce45978cfe5f55776e77876fd7c7fc36b77f4ecacaf36285f2c1c883c727a85b6697e247
+EBUILD mpd-0.23.12-r1.ebuild 7994 BLAKE2B ef80d910231bec04d9c9763ef7c3d0cac24b7b9b4e59bdab9d1e6bf1c110c7b6270c7fb2f34cb4f4924255c0512d05b00db374b3d0f9845b17f5843f44a4de38 SHA512 589b77f1b3574ede2180e3a4fe3e65f745e80fb6334af04ce2a480773e3b9a49069957d5635aecb81cb5ff148aeb12910e63333336b5aecd238029d879eaf6bc
+EBUILD mpd-0.23.12.ebuild 7952 BLAKE2B 713e700803cb123f4e1c3c5cadae1b1ca0e5beb0506f202c65d7a2a21a0e72e46468258bbc1110d65bcd5fa9352447b92f2708a5be9ac8b7f8f9dc4866bdc35e SHA512 435fea8f5b42864f41161e48bd890582b704a99c1377da6e662dc9ff820812cba875d7579689726ebe246cc79565839b84b42e0c3fa2002dd9636bd687d6eee6
MISC metadata.xml 2805 BLAKE2B afe65d7428c79de96b99855e74d8a474df33dbd71fe9f9f65f64270126dea5ca9138a533c9f4f8d422722352574ccbfec2ec64f5e492869e9c97fbc84dd2c1a1 SHA512 74c249f71a819f5747739c6c720d48edf52b62012f9d1fd30bb6027bd3c5794161f7a70b7c87d78a60fa46e37fc94aa449e0b8825bb8d3eea32143bf240e1d92
diff --git a/media-sound/mpd/files/mpd-0.23.11-boost-1.81.patch b/media-sound/mpd/files/mpd-0.23.11-boost-1.81.patch
deleted file mode 100644
index cb40b14926e2..000000000000
--- a/media-sound/mpd/files/mpd-0.23.11-boost-1.81.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-https://bugs.gentoo.org/886521
-https://github.com/MusicPlayerDaemon/MPD/issues/1693
-https://github.com/MusicPlayerDaemon/MPD/commit/e4b055eb6d08c5c8f8d85828ce4005d410e462cb
-
-From e4b055eb6d08c5c8f8d85828ce4005d410e462cb Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
- <congdanhqx@gmail.com>
-Date: Thu, 1 Dec 2022 08:29:23 +0700
-Subject: [PATCH] v0.23.x: RemoteTagCache: add missing include
-
-Fix build with Boost 1.81.0. `<array>` was included by one of those boost headers,
-however, it's no longer included as of Boost 1.81.0.
-
-`master` doesn't use `std::array` in this file.
-
-While we're at it, add all necessary inclusion files.
---- a/src/RemoteTagCache.hxx
-+++ b/src/RemoteTagCache.hxx
-@@ -28,7 +28,11 @@
- #include <boost/intrusive/list.hpp>
- #include <boost/intrusive/unordered_set.hpp>
-
-+#include <array>
-+#include <functional>
-+#include <memory>
- #include <string>
-+#include <utility>
-
- class RemoteTagCacheHandler;
-
diff --git a/media-sound/mpd/files/mpd-0.23.12-libfmt10-906074.patch b/media-sound/mpd/files/mpd-0.23.12-libfmt10-906074.patch
new file mode 100644
index 000000000000..7fc5187a54f3
--- /dev/null
+++ b/media-sound/mpd/files/mpd-0.23.12-libfmt10-906074.patch
@@ -0,0 +1,102 @@
+libfmt 10 changed the API, requiring a few adjustments to the codebase.
+This backports the upstream fixes for building against libfmt 10.
+
+Bug: https://bugs.gentoo.org/906074
+
+--- a/src/SongPrint.cxx
++++ b/src/SongPrint.cxx
+@@ -24,6 +24,7 @@
+ #include "TagPrint.hxx"
+ #include "client/Response.hxx"
+ #include "fs/Traits.hxx"
++#include "lib/fmt/AudioFormatFormatter.hxx"
+ #include "time/ChronoUtil.hxx"
+ #include "util/StringBuffer.hxx"
+ #include "util/UriUtil.hxx"
+@@ -93,7 +94,7 @@ song_print_info(Response &r, const LightSong &song, bool base) noexcept
+ time_print(r, "Last-Modified", song.mtime);
+
+ if (song.audio_format.IsDefined())
+- r.Fmt(FMT_STRING("Format: {}\n"), ToString(song.audio_format));
++ r.Fmt(FMT_STRING("Format: {}\n"), song.audio_format);
+
+ tag_print_values(r, song.tag);
+
+@@ -116,7 +117,7 @@ song_print_info(Response &r, const DetachedSong &song, bool base) noexcept
+ time_print(r, "Last-Modified", song.GetLastModified());
+
+ if (const auto &f = song.GetAudioFormat(); f.IsDefined())
+- r.Fmt(FMT_STRING("Format: {}\n"), ToString(f));
++ r.Fmt(FMT_STRING("Format: {}\n"), f);
+
+ tag_print_values(r, song.GetTag());
+
+--- a/src/TagPrint.cxx
++++ b/src/TagPrint.cxx
+@@ -21,7 +21,6 @@
+ #include "tag/Tag.hxx"
+ #include "tag/Settings.hxx"
+ #include "client/Response.hxx"
+-#include "util/StringView.hxx"
+
+ #include <fmt/format.h>
+
+@@ -35,7 +34,7 @@ tag_print_types(Response &r) noexcept
+ }
+
+ void
+-tag_print(Response &r, TagType type, StringView value) noexcept
++tag_print(Response &r, TagType type, std::string_view value) noexcept
+ {
+ r.Fmt(FMT_STRING("{}: {}\n"), tag_item_names[type], value);
+ }
+--- a/src/TagPrint.hxx
++++ b/src/TagPrint.hxx
+@@ -21,6 +21,7 @@
+ #define MPD_TAG_PRINT_HXX
+
+ #include <cstdint>
++#include <string_view>
+
+ enum TagType : uint8_t;
+
+@@ -32,7 +33,7 @@ void
+ tag_print_types(Response &response) noexcept;
+
+ void
+-tag_print(Response &response, TagType type, StringView value) noexcept;
++tag_print(Response &response, TagType type, std::string_view value) noexcept;
+
+ void
+ tag_print(Response &response, TagType type, const char *value) noexcept;
+--- a/src/TimePrint.cxx
++++ b/src/TimePrint.cxx
+@@ -36,5 +36,5 @@ time_print(Response &r, const char *name,
+ return;
+ }
+
+- r.Fmt(FMT_STRING("{}: {}\n"), name, s);
++ r.Fmt(FMT_STRING("{}: {}\n"), name, s.c_str());
+ }
+--- a/src/command/PlayerCommands.cxx
++++ b/src/command/PlayerCommands.cxx
+@@ -28,6 +28,7 @@
+ #include "Partition.hxx"
+ #include "Instance.hxx"
+ #include "IdleFlags.hxx"
++#include "lib/fmt/AudioFormatFormatter.hxx"
+ #include "util/StringBuffer.hxx"
+ #include "util/ScopeExit.hxx"
+ #include "util/Exception.hxx"
+@@ -185,7 +186,7 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r)
+
+ if (player_status.audio_format.IsDefined())
+ r.Fmt(FMT_STRING(COMMAND_STATUS_AUDIO ": {}\n"),
+- ToString(player_status.audio_format));
++ player_status.audio_format);
+ }
+
+ #ifdef ENABLE_DATABASE
+--
+2.39.2
+
diff --git a/media-sound/mpd/files/mpd-0.23.12-stringview.patch b/media-sound/mpd/files/mpd-0.23.12-stringview.patch
new file mode 100644
index 000000000000..fa0f77f2a712
--- /dev/null
+++ b/media-sound/mpd/files/mpd-0.23.12-stringview.patch
@@ -0,0 +1,235 @@
+Backport of upstream commit ec66ee3bfb, which is a prerequisite to
+backport the fix for dev-libs/libfmt-10.
+
+--- a/src/command/FileCommands.cxx
++++ b/src/command/FileCommands.cxx
+@@ -106,7 +106,7 @@ handle_listfiles_local(Response &r, Path path_fs)
+
+ gcc_pure
+ static bool
+-IsValidName(const StringView s) noexcept
++IsValidName(const std::string_view s) noexcept
+ {
+ if (s.empty() || !IsAlphaASCII(s.front()))
+ return false;
+@@ -118,7 +118,7 @@ IsValidName(const StringView s) noexcept
+
+ gcc_pure
+ static bool
+-IsValidValue(const StringView s) noexcept
++IsValidValue(const std::string_view s) noexcept
+ {
+ return std::none_of(s.begin(), s.end(), [](const auto &ch) { return (unsigned char)ch < 0x20; });
+ }
+@@ -130,7 +130,7 @@ public:
+ explicit PrintCommentHandler(Response &_response) noexcept
+ :NullTagHandler(WANT_PAIR), response(_response) {}
+
+- void OnPair(StringView key, StringView value) noexcept override {
++ void OnPair(std::string_view key, std::string_view value) noexcept override {
+ if (IsValidName(key) && IsValidValue(value))
+ response.Fmt(FMT_STRING("{}: {}\n"), key, value);
+ }
+--- a/src/command/OtherCommands.cxx
++++ b/src/command/OtherCommands.cxx
+@@ -147,7 +147,7 @@ public:
+ explicit PrintTagHandler(Response &_response) noexcept
+ :NullTagHandler(WANT_TAG), response(_response) {}
+
+- void OnTag(TagType type, StringView value) noexcept override {
++ void OnTag(TagType type, std::string_view value) noexcept override {
+ if (response.GetClient().tag_mask.Test(type))
+ tag_print(response, type, value);
+ }
+--- a/src/decoder/plugins/AdPlugDecoderPlugin.cxx
++++ b/src/decoder/plugins/AdPlugDecoderPlugin.cxx
+@@ -81,11 +81,11 @@ adplug_file_decode(DecoderClient &client, Path path_fs)
+ }
+
+ static void
+-adplug_scan_tag(TagType type, const std::string &value,
++adplug_scan_tag(TagType type, const std::string_view value,
+ TagHandler &handler) noexcept
+ {
+ if (!value.empty())
+- handler.OnTag(type, {value.data(), value.size()});
++ handler.OnTag(type, value);
+ }
+
+ static bool
+--- a/src/playlist/plugins/EmbeddedCuePlaylistPlugin.cxx
++++ b/src/playlist/plugins/EmbeddedCuePlaylistPlugin.cxx
+@@ -39,6 +39,8 @@
+
+ #include <string.h>
+
++using std::string_view_literals::operator""sv;
++
+ class EmbeddedCuePlaylist final : public SongEnumerator {
+ public:
+ /**
+@@ -69,14 +71,15 @@ public:
+
+ ExtractCuesheetTagHandler() noexcept:NullTagHandler(WANT_PAIR) {}
+
+- void OnPair(StringView key, StringView value) noexcept override;
++ void OnPair(std::string_view key, std::string_view value) noexcept override;
+ };
+
+ void
+-ExtractCuesheetTagHandler::OnPair(StringView name, StringView value) noexcept
++ExtractCuesheetTagHandler::OnPair(std::string_view name, std::string_view value) noexcept
+ {
+- if (cuesheet.empty() && name.EqualsIgnoreCase("cuesheet"))
+- cuesheet = {value.data, value.size};
++ if (cuesheet.empty() &&
++ StringView{name}.EqualsIgnoreCase("cuesheet"sv))
++ cuesheet = value;
+ }
+
+ static std::unique_ptr<SongEnumerator>
+--- a/src/tag/Handler.cxx
++++ b/src/tag/Handler.cxx
+@@ -25,13 +25,15 @@
+
+ #include <algorithm>
+
++using std::string_view_literals::operator""sv;
++
+ void
+-NullTagHandler::OnTag(TagType, StringView) noexcept
++NullTagHandler::OnTag(TagType, std::string_view) noexcept
+ {
+ }
+
+ void
+-NullTagHandler::OnPair(StringView, StringView) noexcept
++NullTagHandler::OnPair(std::string_view, std::string_view) noexcept
+ {
+ }
+
+@@ -54,18 +56,18 @@ AddTagHandler::OnDuration(SongTime duration) noexcept
+ /**
+ * Skip leading zeroes and a non-decimal suffix.
+ */
+-static StringView
+-NormalizeDecimal(StringView s)
++static std::string_view
++NormalizeDecimal(std::string_view s)
+ {
+ auto start = std::find_if(s.begin(), s.end(),
+ [](char ch){ return ch != '0'; });
+ auto end = std::find_if(start, s.end(),
+ [](char ch){ return !IsDigitASCII(ch); });
+- return {start, end};
++ return StringView{start, end};
+ }
+
+ void
+-AddTagHandler::OnTag(TagType type, StringView value) noexcept
++AddTagHandler::OnTag(TagType type, std::string_view value) noexcept
+ {
+ if (type == TAG_TRACK || type == TAG_DISC) {
+ /* filter out this extra data and leading zeroes */
+@@ -77,9 +79,9 @@ AddTagHandler::OnTag(TagType type, StringView value) noexcept
+ }
+
+ void
+-FullTagHandler::OnPair(StringView name, StringView) noexcept
++FullTagHandler::OnPair(std::string_view name, std::string_view) noexcept
+ {
+- if (name.EqualsIgnoreCase("cuesheet"))
++ if (StringView{name}.EqualsIgnoreCase("cuesheet"sv))
+ tag.SetHasPlaylist(true);
+ }
+
+--- a/src/tag/Handler.hxx
++++ b/src/tag/Handler.hxx
+@@ -24,8 +24,11 @@
+ #include "Chrono.hxx"
+ #include "util/Compiler.h"
+
++#include <cstddef>
++#include <span>
++#include <string_view>
++
+ template<typename T> struct ConstBuffer;
+-struct StringView;
+ struct AudioFormat;
+ class TagBuilder;
+
+@@ -81,13 +84,14 @@ public:
+ * @param the value of the tag; the pointer will become
+ * invalid after returning
+ */
+- virtual void OnTag(TagType type, StringView value) noexcept = 0;
++ virtual void OnTag(TagType type, std::string_view value) noexcept = 0;
+
+ /**
+ * A name-value pair has been read. It is the codec specific
+ * representation of tags.
+ */
+- virtual void OnPair(StringView key, StringView value) noexcept = 0;
++ virtual void OnPair(std::string_view key,
++ std::string_view value) noexcept = 0;
+
+ /**
+ * Declare the audio format of a song.
+@@ -125,8 +129,9 @@ public:
+ :TagHandler(_want_mask) {}
+
+ void OnDuration([[maybe_unused]] SongTime duration) noexcept override {}
+- void OnTag(TagType type, StringView value) noexcept override;
+- void OnPair(StringView key, StringView value) noexcept override;
++ void OnTag(TagType type, std::string_view value) noexcept override;
++ void OnPair(std::string_view key,
++ std::string_view value) noexcept override;
+ void OnAudioFormat(AudioFormat af) noexcept override;
+ void OnPicture(const char *mime_type,
+ ConstBuffer<void> buffer) noexcept override;
+@@ -149,7 +154,7 @@ public:
+ :AddTagHandler(0, _builder) {}
+
+ void OnDuration(SongTime duration) noexcept override;
+- void OnTag(TagType type, StringView value) noexcept override;
++ void OnTag(TagType type, std::string_view value) noexcept override;
+ };
+
+ /**
+@@ -173,7 +178,8 @@ public:
+ AudioFormat *_audio_format=nullptr) noexcept
+ :FullTagHandler(0, _builder, _audio_format) {}
+
+- void OnPair(StringView key, StringView value) noexcept override;
++ void OnPair(std::string_view key,
++ std::string_view value) noexcept override;
+ void OnAudioFormat(AudioFormat af) noexcept override;
+ };
+
+--- a/test/read_tags.cxx
++++ b/test/read_tags.cxx
+@@ -60,16 +60,16 @@ public:
+ printf("duration=%f\n", duration.ToDoubleS());
+ }
+
+- void OnTag(TagType type, StringView value) noexcept override {
++ void OnTag(TagType type, std::string_view value) noexcept override {
+ printf("[%s]=%.*s\n", tag_item_names[type],
+- int(value.size), value.data);
++ int(value.size()), value.data());
+ empty = false;
+ }
+
+- void OnPair(StringView key, StringView value) noexcept override {
++ void OnPair(std::string_view key, std::string_view value) noexcept override {
+ printf("\"%.*s\"=%.*s\n",
+- int(key.size), key.data,
+- int(value.size), value.data);
++ int(key.size()), key.data(),
++ int(value.size()), value.data());
+ }
+
+ void OnAudioFormat(AudioFormat af) noexcept override {
+--
+2.39.2
+
diff --git a/media-sound/mpd/mpd-0.23.11.ebuild b/media-sound/mpd/mpd-0.23.12-r1.ebuild
index 3c94bc93825b..3b9aeb9c020a 100644
--- a/media-sound/mpd/mpd-0.23.11.ebuild
+++ b/media-sound/mpd/mpd-0.23.12-r1.ebuild
@@ -11,7 +11,7 @@ SRC_URI="https://www.musicpd.org/download/${PN}/${PV%.*}/${P}.tar.xz"
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="amd64 ~arm ~arm64 ppc ppc64 ~riscv x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
IUSE="+alsa ao +audiofile bzip2 cdio chromaprint +cue +curl doc +dbus
+eventfd expat faad +ffmpeg +fifo flac fluidsynth gme +icu +id3tag +inotify
jack lame libmpdclient libsamplerate libsoxr +mad mikmod mms
@@ -119,7 +119,9 @@ DEPEND="${RDEPEND}
BDEPEND="virtual/pkgconfig"
PATCHES=(
- "${FILESDIR}"/${P}-boost-1.81.patch
+ # Backported fixes for dev-libs/libfmt-10. Remove after 0.23.12.
+ "${FILESDIR}/${P}-stringview.patch"
+ "${FILESDIR}/${P}-libfmt10-906074.patch"
)
pkg_setup() {
diff --git a/media-sound/mpd/mpd-0.23.12.ebuild b/media-sound/mpd/mpd-0.23.12.ebuild
index ec25e7a6d213..85c1e4146ec1 100644
--- a/media-sound/mpd/mpd-0.23.12.ebuild
+++ b/media-sound/mpd/mpd-0.23.12.ebuild
@@ -39,9 +39,12 @@ REQUIRED_USE="
RESTRICT="!test? ( test )"
+# Note: This version is incompatible with dev-libs/libfmt-10
+# Bug: https://bugs.gentoo.org/906074
RDEPEND="
acct-user/mpd
dev-libs/libfmt:=
+ <dev-libs/libfmt-10
dev-libs/libpcre2
media-libs/libogg
sys-libs/liburing:=