From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 9847115813A for ; Sat, 18 Jan 2025 14:29:57 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id A15D1E08A0; Sat, 18 Jan 2025 14:29:56 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 6E09DE08A0 for ; Sat, 18 Jan 2025 14:29:56 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 4EC24342F92 for ; Sat, 18 Jan 2025 14:29:55 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 8DB5097F for ; Sat, 18 Jan 2025 14:29:53 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1737210569.15e91797680d6acfac15fad18b6db86c45bfd391.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: media-sound/mpd/files/, media-sound/mpd/ X-VCS-Repository: repo/gentoo X-VCS-Files: media-sound/mpd/Manifest media-sound/mpd/files/mpd-0.23.15.16-fix-libfmt-11.1.0.patch media-sound/mpd/mpd-0.23.16.ebuild X-VCS-Directories: media-sound/mpd/files/ media-sound/mpd/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 15e91797680d6acfac15fad18b6db86c45bfd391 X-VCS-Branch: master Date: Sat, 18 Jan 2025 14:29:53 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 0b969d23-eacc-4f3f-a5d1-85f983021707 X-Archives-Hash: 5b0dbebcdedaa81da714b30b1cdb84e1 commit: 15e91797680d6acfac15fad18b6db86c45bfd391 Author: Sam James gentoo org> AuthorDate: Sat Jan 18 14:28:58 2025 +0000 Commit: Sam James gentoo org> CommitDate: Sat Jan 18 14:29:29 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=15e91797 media-sound/mpd: move patch to devspace Signed-off-by: Sam James gentoo.org> media-sound/mpd/Manifest | 1 + .../files/mpd-0.23.15.16-fix-libfmt-11.1.0.patch | 884 --------------------- media-sound/mpd/mpd-0.23.16.ebuild | 3 +- 3 files changed, 3 insertions(+), 885 deletions(-) diff --git a/media-sound/mpd/Manifest b/media-sound/mpd/Manifest index 5eea346c9977..c53399afb32a 100644 --- a/media-sound/mpd/Manifest +++ b/media-sound/mpd/Manifest @@ -1,2 +1,3 @@ +DIST mpd-0.23.15.16-fix-libfmt-11.1.0.patch.xz 7260 BLAKE2B 4321f48f8bf21011a1919517969ce7de6eaa5d6c051654ec96e57d01fe48f38341d7ecb206aec314bd33288b2a6a299d594328fa136b04547d6d0cb48de85f25 SHA512 a52443039a9f60c10d19e85ef1b4c8a762d6c6f135257d9a2c8f01c936f4007dd096e4bec354ffb756519794960f57d5b2a7882c8e9296d6e2f07f99e4267d20 DIST mpd-0.23.15.tar.xz 778384 BLAKE2B 78036078b850afab900b5d50e44ce83cbbf900369f5028d4177fdbfc4128dd3c35c59a773528a1fcfcc0179d0e579566b827fe87ef780a88082dc3b7f70cd5e7 SHA512 12329dbd0c1994c1bd95b88ce2a62a4c1d691b655e9e4fac7e9ef7066d0be3422b26fad3ea6ca144ba9b21add0a7c492c4f74fd2b68a1539bff2e0d2714db709 DIST mpd-0.23.16.tar.xz 778572 BLAKE2B 7e4e7dafdc60cac59b7b47898cdaf8332970dae9209f8dd408aee7f4ecf90909404ab12a263d06aae44124d795d0d1092425294034fc0728fc9b4ac973a75dd0 SHA512 1b7042cbe8543270b26c1a9e4f35d80d68e03682e4d1e039af8f52527753830972de2a763e5dfb7bde28f4c9d0308a397becd4a206d17e7a5b2fa97f48b69d20 diff --git a/media-sound/mpd/files/mpd-0.23.15.16-fix-libfmt-11.1.0.patch b/media-sound/mpd/files/mpd-0.23.15.16-fix-libfmt-11.1.0.patch deleted file mode 100644 index ff9c50007278..000000000000 --- a/media-sound/mpd/files/mpd-0.23.15.16-fix-libfmt-11.1.0.patch +++ /dev/null @@ -1,884 +0,0 @@ -https://github.com/MusicPlayerDaemon/MPD/commit/9db7144d0fa4512335070a984690f3f5034210a5 -https://github.com/MusicPlayerDaemon/MPD/pull/2181 -https://github.com/MusicPlayerDaemon/MPD/issues/2173 -https://github.com/fmtlib/fmt/issues/4304 - -Modified to remove unintentional change in meson.build - -https://github.com/MusicPlayerDaemon/MPD/commit/da6efd6361fcf7a44cbb24e3058b38bee7be1ad6 -https://github.com/MusicPlayerDaemon/MPD/pull/2182 - -From 9db7144d0fa4512335070a984690f3f5034210a5 Mon Sep 17 00:00:00 2001 -From: Rudi Heitbaum -Date: Sat, 11 Jan 2025 21:33:04 +0000 -Subject: [PATCH] lib/fmt: drop use of FMT_STRING - -When compiling with libfmt-11.1.0 and newer the following compile errors occur: - -In file included from ../src/decoder/DecoderPrint.cxx:23: -../src/client/Response.hxx: In instantiation of 'bool Response::Fmt(const S&, Args&& ...) [with S = decoder_plugin_print(Response&, const DecoderPlugin&)::::FMT_COMPILE_STRING; Args = {const char* const&}]': -../src/decoder/DecoderPrint.cxx:38:7: required from here - 38 | r.Fmt(FMT_STRING("plugin: {}\n"), plugin.name); - | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -../src/client/Response.hxx:86:28: error: cannot convert 'const decoder_plugin_print(Response&, const DecoderPlugin&)::::FMT_COMPILE_STRING' to 'fmt::v11::string_view' {aka 'fmt::v11::basic_string_view'} - 86 | return VFmt(format_str, - | ~~~~^~~~~~~~~~~~ - 87 | fmt::make_format_args(args...)); - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -../src/client/Response.hxx:81:36: note: initializing argument 1 of 'bool Response::VFmt(fmt::v11::string_view, fmt::v11::format_args)' - 81 | bool VFmt(fmt::string_view format_str, fmt::format_args args) noexcept; - | ~~~~~~~~~~~~~~~~~^~~~~~~~~~ -../src/client/Response.hxx: In instantiation of 'bool Response::Fmt(const S&, Args&& ...) [with S = decoder_plugin_print(Response&, const DecoderPlugin&)::::FMT_COMPILE_STRING; Args = {const char* const&}]': - -The error is due to the use of FMT_STRING. The libfmt team shared the following: - - The correct way of using FMT_STRING is to wrap a format string when passing to a - function with compile-time checks (i.e. that takes format_string) as documented - in https://fmt.dev/11.1/api/#legacy-compile-time-checks. - - Noting that FMT_STRING is a legacy API and has been superseded by consteval-based - API starting from version 8: https://github.com/fmtlib/fmt/releases/tag/8.0.0. It - looks like MPD is trying to emulate {fmt}'s old way of implementing compile-time - checks which was never properly documented because it was basically a hack. So the - correct fix is to switch to format_string and, possibly, remove usage of FMT_STRING. - - The old way of doing compile-time checks (fmt::make_args_checked) was documented - in https://fmt.dev/7.1/api.html#argument-lists but it looks like MPD is not using - that API so the problematic uses of FMT_STRING have no effect and can just be removed. - -The FMT_STRING has been removed in this change based on the fmt-7.1 API and now MPD is -successfully compile against the current libfmt-11.1.0 which highlighted the issue that -had been present in the codebase as it is now triggering the error, is legacy and was -not using the API for which FMT_STRING was aligned with. ---- a/src/SongPrint.cxx -+++ b/src/SongPrint.cxx -@@ -46,14 +46,14 @@ song_print_uri(Response &r, const char *uri, bool base) noexcept - uri = allocated.c_str(); - } - -- r.Fmt(FMT_STRING(SONG_FILE "{}\n"), uri); -+ r.Fmt(SONG_FILE "{}\n", uri); - } - - void - song_print_uri(Response &r, const LightSong &song, bool base) noexcept - { - if (!base && song.directory != nullptr) -- r.Fmt(FMT_STRING(SONG_FILE "{}/{}\n"), -+ r.Fmt(SONG_FILE "{}/{}\n", - song.directory, song.uri); - else - song_print_uri(r, song.uri, base); -@@ -72,13 +72,13 @@ PrintRange(Response &r, SongTime start_time, SongTime end_time) noexcept - const unsigned end_ms = end_time.ToMS(); - - if (end_ms > 0) -- r.Fmt(FMT_STRING("Range: {}.{:03}-{}.{:03}\n"), -+ r.Fmt("Range: {}.{:03}-{}.{:03}\n", - start_ms / 1000, - start_ms % 1000, - end_ms / 1000, - end_ms % 1000); - else if (start_ms > 0) -- r.Fmt(FMT_STRING("Range: {}.{:03}-\n"), -+ r.Fmt("Range: {}.{:03}-\n", - start_ms / 1000, - start_ms % 1000); - } -@@ -94,14 +94,14 @@ 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"), song.audio_format); -+ r.Fmt("Format: {}\n", song.audio_format); - - tag_print_values(r, song.tag); - - const auto duration = song.GetDuration(); - if (!duration.IsNegative()) -- r.Fmt(FMT_STRING("Time: {}\n" -- "duration: {:1.3f}\n"), -+ r.Fmt("Time: {}\n" -+ "duration: {:1.3f}\n", - duration.RoundS(), - duration.ToDoubleS()); - } -@@ -117,14 +117,14 @@ 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"), f); -+ r.Fmt("Format: {}\n", f); - - tag_print_values(r, song.GetTag()); - - const auto duration = song.GetDuration(); - if (!duration.IsNegative()) -- r.Fmt(FMT_STRING("Time: {}\n" -- "duration: {:1.3f}\n"), -+ r.Fmt("Time: {}\n" -+ "duration: {:1.3f}\n", - duration.RoundS(), - duration.ToDoubleS()); - } ---- a/src/Stats.cxx -+++ b/src/Stats.cxx -@@ -99,10 +99,10 @@ db_stats_print(Response &r, const Database &db) - unsigned total_duration_s = - std::chrono::duration_cast(stats.total_duration).count(); - -- r.Fmt(FMT_STRING("artists: {}\n" -- "albums: {}\n" -- "songs: {}\n" -- "db_playtime: {}\n"), -+ r.Fmt("artists: {}\n" -+ "albums: {}\n" -+ "songs: {}\n" -+ "db_playtime: {}\n", - stats.artist_count, - stats.album_count, - stats.song_count, -@@ -110,7 +110,7 @@ db_stats_print(Response &r, const Database &db) - - const auto update_stamp = db.GetUpdateStamp(); - if (!IsNegative(update_stamp)) -- r.Fmt(FMT_STRING("db_update: {}\n"), -+ r.Fmt("db_update: {}\n", - std::chrono::system_clock::to_time_t(update_stamp)); - } - -@@ -125,8 +125,8 @@ stats_print(Response &r, const Partition &partition) - const auto uptime = std::chrono::steady_clock::now() - start_time; - #endif - -- r.Fmt(FMT_STRING("uptime: {}\n" -- "playtime: {}\n"), -+ r.Fmt("uptime: {}\n" -+ "playtime: {}\n", - std::chrono::duration_cast(uptime).count(), - lround(partition.pc.GetTotalPlayTime().count())); - ---- a/src/TagPrint.cxx -+++ b/src/TagPrint.cxx -@@ -31,20 +31,20 @@ tag_print_types(Response &r) noexcept - const auto tag_mask = global_tag_mask & r.GetTagMask(); - for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; i++) - if (tag_mask.Test(TagType(i))) -- r.Fmt(FMT_STRING("tagtype: {}\n"), tag_item_names[i]); -+ r.Fmt("tagtype: {}\n", tag_item_names[i]); - } - - void - tag_print(Response &r, TagType type, StringView _value) noexcept - { - const std::string_view value{_value}; -- r.Fmt(FMT_STRING("{}: {}\n"), tag_item_names[type], value); -+ r.Fmt("{}: {}\n", tag_item_names[type], value); - } - - void - tag_print(Response &r, TagType type, const char *value) noexcept - { -- r.Fmt(FMT_STRING("{}: {}\n"), tag_item_names[type], value); -+ r.Fmt("{}: {}\n", tag_item_names[type], value); - } - - void -@@ -60,8 +60,8 @@ void - tag_print(Response &r, const Tag &tag) noexcept - { - if (!tag.duration.IsNegative()) -- r.Fmt(FMT_STRING("Time: {}\n" -- "duration: {:1.3f}\n"), -+ r.Fmt("Time: {}\n" -+ "duration: {:1.3f}\n", - tag.duration.RoundS(), - tag.duration.ToDoubleS()); - ---- 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.c_str()); -+ r.Fmt("{}: {}\n", name, s.c_str()); - } ---- a/src/client/Idle.cxx -+++ b/src/client/Idle.cxx -@@ -32,7 +32,7 @@ WriteIdleResponse(Response &r, unsigned flags) noexcept - const char *const*idle_names = idle_get_names(); - for (unsigned i = 0; idle_names[i]; ++i) { - if (flags & (1 << i)) -- r.Fmt(FMT_STRING("changed: {}\n"), idle_names[i]); -+ r.Fmt("changed: {}\n", idle_names[i]); - } - - r.Write("OK\n"); ---- a/src/client/Response.cxx -+++ b/src/client/Response.cxx -@@ -66,7 +66,7 @@ Response::WriteBinary(ConstBuffer payload) noexcept - void - Response::Error(enum ack code, const char *msg) noexcept - { -- Fmt(FMT_STRING("ACK [{}@{}] {{{}}} "), -+ Fmt("ACK [{}@{}] {{{}}} ", - (int)code, list_index, command); - - Write(msg); -@@ -77,7 +77,7 @@ void - Response::VFmtError(enum ack code, - fmt::string_view format_str, fmt::format_args args) noexcept - { -- Fmt(FMT_STRING("ACK [{}@{}] {{{}}} "), -+ Fmt("ACK [{}@{}] {{{}}} ", - (int)code, list_index, command); - - VFmt(format_str, args); ---- a/src/command/AllCommands.cxx -+++ b/src/command/AllCommands.cxx -@@ -255,7 +255,7 @@ PrintAvailableCommands(Response &r, const Partition &partition, - - if (cmd->permission == (permission & cmd->permission) && - command_available(partition, cmd)) -- r.Fmt(FMT_STRING("command: {}\n"), cmd->cmd); -+ r.Fmt("command: {}\n", cmd->cmd); - } - - return CommandResult::OK; -@@ -268,7 +268,7 @@ PrintUnavailableCommands(Response &r, unsigned permission) noexcept - const struct command *cmd = &i; - - if (cmd->permission != (permission & cmd->permission)) -- r.Fmt(FMT_STRING("command: {}\n"), cmd->cmd); -+ r.Fmt("command: {}\n", cmd->cmd); - } - - return CommandResult::OK; -@@ -326,7 +326,7 @@ command_check_request(const struct command *cmd, Response &r, - { - if (cmd->permission != (permission & cmd->permission)) { - r.FmtError(ACK_ERROR_PERMISSION, -- FMT_STRING("you don't have permission for \"{}\""), -+ "you don't have permission for \"{}\"", - cmd->cmd); - return false; - } -@@ -339,17 +339,17 @@ command_check_request(const struct command *cmd, Response &r, - - if (min == max && unsigned(max) != args.size) { - r.FmtError(ACK_ERROR_ARG, -- FMT_STRING("wrong number of arguments for \"{}\""), -+ "wrong number of arguments for \"{}\"", - cmd->cmd); - return false; - } else if (args.size < unsigned(min)) { - r.FmtError(ACK_ERROR_ARG, -- FMT_STRING("too few arguments for \"{}\""), -+ "too few arguments for \"{}\"", - cmd->cmd); - return false; - } else if (max >= 0 && args.size > unsigned(max)) { - r.FmtError(ACK_ERROR_ARG, -- FMT_STRING("too many arguments for \"{}\""), -+ "too many arguments for \"{}\"", - cmd->cmd); - return false; - } else -@@ -363,7 +363,7 @@ command_checked_lookup(Response &r, unsigned permission, - const struct command *cmd = command_lookup(cmd_name); - if (cmd == nullptr) { - r.FmtError(ACK_ERROR_UNKNOWN, -- FMT_STRING("unknown command \"{}\""), cmd_name); -+ "unknown command \"{}\"", cmd_name); - return nullptr; - } - ---- a/src/command/DatabaseCommands.cxx -+++ b/src/command/DatabaseCommands.cxx -@@ -243,7 +243,7 @@ handle_count(Client &client, Request args, Response &r) - group = tag_name_parse_i(s); - if (group == TAG_NUM_OF_ITEM_TYPES) { - r.FmtError(ACK_ERROR_ARG, -- FMT_STRING("Unknown tag type: {}"), s); -+ "Unknown tag type: {}", s); - return CommandResult::ERROR; - } - -@@ -312,7 +312,7 @@ handle_list(Client &client, Request args, Response &r) - const auto tagType = tag_name_parse_i(tag_name); - if (tagType == TAG_NUM_OF_ITEM_TYPES) { - r.FmtError(ACK_ERROR_ARG, -- FMT_STRING("Unknown tag type: {}"), tag_name); -+ "Unknown tag type: {}", tag_name); - return CommandResult::ERROR; - } - -@@ -326,7 +326,7 @@ handle_list(Client &client, Request args, Response &r) - /* for compatibility with < 0.12.0 */ - if (tagType != TAG_ALBUM) { - r.FmtError(ACK_ERROR_ARG, -- FMT_STRING("should be \"{}\" for 3 arguments"), -+ "should be \"{}\" for 3 arguments", - tag_item_names[TAG_ALBUM]); - return CommandResult::ERROR; - } -@@ -341,7 +341,7 @@ handle_list(Client &client, Request args, Response &r) - const auto group = tag_name_parse_i(s); - if (group == TAG_NUM_OF_ITEM_TYPES) { - r.FmtError(ACK_ERROR_ARG, -- FMT_STRING("Unknown tag type: {}"), s); -+ "Unknown tag type: {}", s); - return CommandResult::ERROR; - } - ---- a/src/command/FileCommands.cxx -+++ b/src/command/FileCommands.cxx -@@ -85,12 +85,12 @@ handle_listfiles_local(Response &r, Path path_fs) - continue; - - if (fi.IsRegular()) -- r.Fmt(FMT_STRING("file: {}\n" -- "size: {}\n"), -+ r.Fmt("file: {}\n" -+ "size: {}\n", - name_utf8, - fi.GetSize()); - else if (fi.IsDirectory()) -- r.Fmt(FMT_STRING("directory: {}\n"), name_utf8); -+ r.Fmt("directory: {}\n", name_utf8); - else - continue; - -@@ -129,7 +129,7 @@ class PrintCommentHandler final : public NullTagHandler { - void OnPair(StringView _key, StringView _value) noexcept override { - const std::string_view key{_key}, value{_value}; - if (IsValidName(key) && IsValidValue(value)) -- response.Fmt(FMT_STRING("{}: {}\n"), key, value); -+ response.Fmt("{}: {}\n", key, value); - } - }; - -@@ -218,7 +218,7 @@ read_stream_art(Response &r, const std::string_view art_directory, - read_size = is->Read(lock, buffer.get(), buffer_size); - } - -- r.Fmt(FMT_STRING("size: {}\n"), art_file_size); -+ r.Fmt("size: {}\n", art_file_size); - - r.WriteBinary({buffer.get(), read_size}); - -@@ -348,10 +348,10 @@ class PrintPictureHandler final : public NullTagHandler { - return; - } - -- response.Fmt(FMT_STRING("size: {}\n"), buffer.size); -+ response.Fmt("size: {}\n", buffer.size); - - if (mime_type != nullptr) -- response.Fmt(FMT_STRING("type: {}\n"), mime_type); -+ response.Fmt("type: {}\n", mime_type); - - buffer.size -= offset; - ---- a/src/command/MessageCommands.cxx -+++ b/src/command/MessageCommands.cxx -@@ -87,7 +87,7 @@ handle_channels(Client &client, [[maybe_unused]] Request args, Response &r) - } - - for (const auto &channel : channels) -- r.Fmt(FMT_STRING("channel: {}\n"), channel); -+ r.Fmt("channel: {}\n", channel); - - return CommandResult::OK; - } -@@ -99,7 +99,7 @@ handle_read_messages(Client &client, - assert(args.empty()); - - client.ConsumeMessages([&r](const auto &msg){ -- r.Fmt(FMT_STRING("channel: {}\nmessage: {}\n"), -+ r.Fmt("channel: {}\nmessage: {}\n", - msg.GetChannel(), msg.GetMessage()); - }); - ---- a/src/command/OtherCommands.cxx -+++ b/src/command/OtherCommands.cxx -@@ -62,7 +62,7 @@ static void - print_spl_list(Response &r, const PlaylistVector &list) - { - for (const auto &i : list) { -- r.Fmt(FMT_STRING("playlist: {}\n"), i.name); -+ r.Fmt("playlist: {}\n", i.name); - - if (!IsNegative(i.mtime)) - time_print(r, "Last-Modified", i.mtime); -@@ -249,7 +249,7 @@ handle_update(Response &r, UpdateService &update, - const char *uri_utf8, bool discard) - { - unsigned ret = update.Enqueue(uri_utf8, discard); -- r.Fmt(FMT_STRING("updating_db: {}\n"), ret); -+ r.Fmt("updating_db: {}\n", ret); - return CommandResult::OK; - } - -@@ -259,7 +259,7 @@ handle_update(Response &r, Database &db, - { - unsigned id = db.Update(uri_utf8, discard); - if (id > 0) { -- r.Fmt(FMT_STRING("updating_db: {}\n"), id); -+ r.Fmt("updating_db: {}\n", id); - return CommandResult::OK; - } else { - /* Database::Update() has returned 0 without setting -@@ -326,7 +326,7 @@ handle_getvol(Client &client, Request, Response &r) - - const auto volume = partition.mixer_memento.GetVolume(partition.outputs); - if (volume >= 0) -- r.Fmt(FMT_STRING("volume: {}\n"), volume); -+ r.Fmt("volume: {}\n", volume); - - return CommandResult::OK; - } -@@ -391,7 +391,7 @@ handle_config(Client &client, [[maybe_unused]] Request args, Response &r) - const Storage *storage = client.GetStorage(); - if (storage != nullptr) { - const auto path = storage->MapUTF8(""); -- r.Fmt(FMT_STRING("music_directory: {}\n"), path); -+ r.Fmt("music_directory: {}\n", path); - } - #endif - -@@ -406,7 +406,7 @@ handle_idle(Client &client, Request args, Response &r) - unsigned event = idle_parse_name(i); - if (event == 0) { - r.FmtError(ACK_ERROR_ARG, -- FMT_STRING("Unrecognized idle event: {}"), -+ "Unrecognized idle event: {}", - i); - return CommandResult::ERROR; - } ---- a/src/command/PartitionCommands.cxx -+++ b/src/command/PartitionCommands.cxx -@@ -48,7 +48,7 @@ CommandResult - handle_listpartitions(Client &client, Request, Response &r) - { - for (const auto &partition : client.GetInstance().partitions) { -- r.Fmt(FMT_STRING("partition: {}\n"), partition.name); -+ r.Fmt("partition: {}\n", partition.name); - } - - return CommandResult::OK; ---- a/src/command/PlayerCommands.cxx -+++ b/src/command/PlayerCommands.cxx -@@ -133,17 +133,17 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r) - - const auto volume = partition.mixer_memento.GetVolume(partition.outputs); - if (volume >= 0) -- r.Fmt(FMT_STRING("volume: {}\n"), volume); -- -- r.Fmt(FMT_STRING(COMMAND_STATUS_REPEAT ": {}\n" -- COMMAND_STATUS_RANDOM ": {}\n" -- COMMAND_STATUS_SINGLE ": {}\n" -- COMMAND_STATUS_CONSUME ": {}\n" -- "partition: {}\n" -- COMMAND_STATUS_PLAYLIST ": {}\n" -- COMMAND_STATUS_PLAYLIST_LENGTH ": {}\n" -- COMMAND_STATUS_MIXRAMPDB ": {}\n" -- COMMAND_STATUS_STATE ": {}\n"), -+ r.Fmt("volume: {}\n", volume); -+ -+ r.Fmt(COMMAND_STATUS_REPEAT ": {}\n" -+ COMMAND_STATUS_RANDOM ": {}\n" -+ COMMAND_STATUS_SINGLE ": {}\n" -+ COMMAND_STATUS_CONSUME ": {}\n" -+ "partition: {}\n" -+ COMMAND_STATUS_PLAYLIST ": {}\n" -+ COMMAND_STATUS_PLAYLIST_LENGTH ": {}\n" -+ COMMAND_STATUS_MIXRAMPDB ": {}\n" -+ COMMAND_STATUS_STATE ": {}\n", - (unsigned)playlist.GetRepeat(), - (unsigned)playlist.GetRandom(), - SingleToString(playlist.GetSingle()), -@@ -155,24 +155,24 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r) - state); - - if (pc.GetCrossFade() > FloatDuration::zero()) -- r.Fmt(FMT_STRING(COMMAND_STATUS_CROSSFADE ": {}\n"), -+ r.Fmt(COMMAND_STATUS_CROSSFADE ": {}\n", - lround(pc.GetCrossFade().count())); - - if (pc.GetMixRampDelay() > FloatDuration::zero()) -- r.Fmt(FMT_STRING(COMMAND_STATUS_MIXRAMPDELAY ": {}\n"), -+ r.Fmt(COMMAND_STATUS_MIXRAMPDELAY ": {}\n", - pc.GetMixRampDelay().count()); - - song = playlist.GetCurrentPosition(); - if (song >= 0) { -- r.Fmt(FMT_STRING(COMMAND_STATUS_SONG ": {}\n" -- COMMAND_STATUS_SONGID ": {}\n"), -+ r.Fmt(COMMAND_STATUS_SONG ": {}\n" -+ COMMAND_STATUS_SONGID ": {}\n", - song, playlist.PositionToId(song)); - } - - if (player_status.state != PlayerState::STOP) { -- r.Fmt(FMT_STRING(COMMAND_STATUS_TIME ": {}:{}\n" -- "elapsed: {:1.3f}\n" -- COMMAND_STATUS_BITRATE ": {}\n"), -+ r.Fmt(COMMAND_STATUS_TIME ": {}:{}\n" -+ "elapsed: {:1.3f}\n" -+ COMMAND_STATUS_BITRATE ": {}\n", - player_status.elapsed_time.RoundS(), - player_status.total_time.IsNegative() - ? 0U -@@ -181,11 +181,11 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r) - player_status.bit_rate); - - if (!player_status.total_time.IsNegative()) -- r.Fmt(FMT_STRING("duration: {:1.3f}\n"), -+ r.Fmt("duration: {:1.3f}\n", - player_status.total_time.ToDoubleS()); - - if (player_status.audio_format.IsDefined()) -- r.Fmt(FMT_STRING(COMMAND_STATUS_AUDIO ": {}\n"), -+ r.Fmt(COMMAND_STATUS_AUDIO ": {}\n", - player_status.audio_format); - } - -@@ -195,7 +195,7 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r) - ? update_service->GetId() - : 0; - if (updateJobId != 0) { -- r.Fmt(FMT_STRING(COMMAND_STATUS_UPDATING_DB ": {}\n"), -+ r.Fmt(COMMAND_STATUS_UPDATING_DB ": {}\n", - updateJobId); - } - #endif -@@ -203,14 +203,14 @@ handle_status(Client &client, [[maybe_unused]] Request args, Response &r) - try { - pc.LockCheckRethrowError(); - } catch (...) { -- r.Fmt(FMT_STRING(COMMAND_STATUS_ERROR ": {}\n"), -+ r.Fmt(COMMAND_STATUS_ERROR ": {}\n", - GetFullMessage(std::current_exception())); - } - - song = playlist.GetNextPosition(); - if (song >= 0) -- r.Fmt(FMT_STRING(COMMAND_STATUS_NEXTSONG ": {}\n" -- COMMAND_STATUS_NEXTSONGID ": {}\n"), -+ r.Fmt(COMMAND_STATUS_NEXTSONG ": {}\n" -+ COMMAND_STATUS_NEXTSONGID ": {}\n", - song, playlist.PositionToId(song)); - - return CommandResult::OK; -@@ -353,7 +353,7 @@ CommandResult - handle_replay_gain_status(Client &client, [[maybe_unused]] Request args, - Response &r) - { -- r.Fmt(FMT_STRING("replay_gain_mode: {}\n"), -+ r.Fmt("replay_gain_mode: {}\n", - ToString(client.GetPartition().replay_gain_mode)); - return CommandResult::OK; - } ---- a/src/command/PlaylistCommands.cxx -+++ b/src/command/PlaylistCommands.cxx -@@ -57,7 +57,7 @@ static void - print_spl_list(Response &r, const PlaylistVector &list) - { - for (const auto &i : list) { -- r.Fmt(FMT_STRING("playlist: {}\n"), i.name); -+ r.Fmt("playlist: {}\n", i.name); - - if (!IsNegative(i.mtime)) - time_print(r, "Last-Modified", i.mtime); ---- a/src/command/QueueCommands.cxx -+++ b/src/command/QueueCommands.cxx -@@ -155,7 +155,7 @@ handle_addid(Client &client, Request args, Response &r) - - partition.instance.LookupRemoteTag(uri); - -- r.Fmt(FMT_STRING("Id: {}\n"), added_id); -+ r.Fmt("Id: {}\n", added_id); - return CommandResult::OK; - } - ---- a/src/command/StorageCommands.cxx -+++ b/src/command/StorageCommands.cxx -@@ -67,14 +67,14 @@ handle_listfiles_storage(Response &r, StorageDirectoryReader &reader) - continue; - - case StorageFileInfo::Type::REGULAR: -- r.Fmt(FMT_STRING("file: {}\n" -- "size: {}\n"), -+ r.Fmt("file: {}\n" -+ "size: {}\n", - name_utf8, - info.size); - break; - - case StorageFileInfo::Type::DIRECTORY: -- r.Fmt(FMT_STRING("directory: {}\n"), name_utf8); -+ r.Fmt("directory: {}\n", name_utf8); - break; - } - -@@ -127,7 +127,7 @@ print_storage_uri(Client &client, Response &r, const Storage &storage) - uri = std::move(allocated); - } - -- r.Fmt(FMT_STRING("storage: {}\n"), uri); -+ r.Fmt("storage: {}\n", uri); - } - - CommandResult -@@ -143,7 +143,7 @@ handle_listmounts(Client &client, [[maybe_unused]] Request args, Response &r) - - const auto visitor = [&client, &r](const char *mount_uri, - const Storage &storage){ -- r.Fmt(FMT_STRING("mount: {}\n"), mount_uri); -+ r.Fmt("mount: {}\n", mount_uri); - print_storage_uri(client, r, storage); - }; - ---- a/src/command/TagCommands.cxx -+++ b/src/command/TagCommands.cxx -@@ -35,7 +35,7 @@ handle_addtagid(Client &client, Request args, Response &r) - const char *const tag_name = args[1]; - const TagType tag_type = tag_name_parse_i(tag_name); - if (tag_type == TAG_NUM_OF_ITEM_TYPES) { -- r.FmtError(ACK_ERROR_ARG, FMT_STRING("Unknown tag type: {}"), -+ r.FmtError(ACK_ERROR_ARG, "Unknown tag type: {}", - tag_name); - return CommandResult::ERROR; - } -@@ -57,7 +57,7 @@ handle_cleartagid(Client &client, Request args, Response &r) - tag_type = tag_name_parse_i(tag_name); - if (tag_type == TAG_NUM_OF_ITEM_TYPES) { - r.FmtError(ACK_ERROR_ARG, -- FMT_STRING("Unknown tag type: {}"), -+ "Unknown tag type: {}", - tag_name); - return CommandResult::ERROR; - } ---- a/src/db/Count.cxx -+++ b/src/db/Count.cxx -@@ -49,8 +49,8 @@ PrintSearchStats(Response &r, const SearchStats &stats) noexcept - unsigned total_duration_s = - std::chrono::duration_cast(stats.total_duration).count(); - -- r.Fmt(FMT_STRING("songs: {}\n" -- "playtime: {}\n"), -+ r.Fmt("songs: {}\n" -+ "playtime: {}\n", - stats.n_songs, total_duration_s); - } - ---- a/src/db/DatabasePrint.cxx -+++ b/src/db/DatabasePrint.cxx -@@ -49,7 +49,7 @@ static void - PrintDirectoryURI(Response &r, bool base, - const LightDirectory &directory) noexcept - { -- r.Fmt(FMT_STRING("directory: {}\n"), -+ r.Fmt("directory: {}\n", - ApplyBaseFlag(directory.GetPath(), base)); - } - -@@ -79,10 +79,10 @@ print_playlist_in_directory(Response &r, bool base, - const char *name_utf8) noexcept - { - if (base || directory == nullptr) -- r.Fmt(FMT_STRING("playlist: {}\n"), -+ r.Fmt("playlist: {}\n", - ApplyBaseFlag(name_utf8, base)); - else -- r.Fmt(FMT_STRING("playlist: {}/{}\n"), -+ r.Fmt("playlist: {}/{}\n", - directory, name_utf8); - } - -@@ -92,9 +92,9 @@ print_playlist_in_directory(Response &r, bool base, - const char *name_utf8) noexcept - { - if (base || directory == nullptr || directory->IsRoot()) -- r.Fmt(FMT_STRING("playlist: {}\n"), name_utf8); -+ r.Fmt("playlist: {}\n", name_utf8); - else -- r.Fmt(FMT_STRING("playlist: {}/{}\n"), -+ r.Fmt("playlist: {}/{}\n", - directory->GetPath(), name_utf8); - } - -@@ -198,7 +198,7 @@ PrintUniqueTags(Response &r, ConstBuffer tag_types, - tag_types.pop_front(); - - for (const auto &[key, tag] : map) { -- r.Fmt(FMT_STRING("{}: {}\n"), name, key); -+ r.Fmt("{}: {}\n", name, key); - - if (!tag_types.empty()) - PrintUniqueTags(r, tag_types, tag); ---- a/src/decoder/DecoderPrint.cxx -+++ b/src/decoder/DecoderPrint.cxx -@@ -35,15 +35,15 @@ decoder_plugin_print(Response &r, - - assert(plugin.name != nullptr); - -- r.Fmt(FMT_STRING("plugin: {}\n"), plugin.name); -+ r.Fmt("plugin: {}\n", plugin.name); - - if (plugin.suffixes != nullptr) - for (p = plugin.suffixes; *p != nullptr; ++p) -- r.Fmt(FMT_STRING("suffix: {}\n"), *p); -+ r.Fmt("suffix: {}\n", *p); - - if (plugin.mime_types != nullptr) - for (p = plugin.mime_types; *p != nullptr; ++p) -- r.Fmt(FMT_STRING("mime_type: {}\n"), *p); -+ r.Fmt("mime_type: {}\n", *p); - } - - void ---- a/src/ls.cxx -+++ b/src/ls.cxx -@@ -68,7 +68,7 @@ print_supported_uri_schemes(Response &r) - }); - - for (const auto& protocol : protocols) { -- r.Fmt(FMT_STRING("handler: {}\n"), protocol); -+ r.Fmt("handler: {}\n", protocol); - } - } - ---- a/src/output/Print.cxx -+++ b/src/output/Print.cxx -@@ -34,16 +34,16 @@ printAudioDevices(Response &r, const MultipleOutputs &outputs) - for (unsigned i = 0, n = outputs.Size(); i != n; ++i) { - const auto &ao = outputs.Get(i); - -- r.Fmt(FMT_STRING("outputid: {}\n" -- "outputname: {}\n" -- "plugin: {}\n" -- "outputenabled: {}\n"), -+ r.Fmt("outputid: {}\n" -+ "outputname: {}\n" -+ "plugin: {}\n" -+ "outputenabled: {}\n", - i, - ao.GetName(), ao.GetPluginName(), - (unsigned)ao.IsEnabled()); - - for (const auto &[attribute, value] : ao.GetAttributes()) -- r.Fmt(FMT_STRING("attribute: {}={}\n"), -+ r.Fmt("attribute: {}={}\n", - attribute, value); - } - } ---- a/src/queue/QueuePrint.cxx -+++ b/src/queue/QueuePrint.cxx -@@ -40,12 +40,12 @@ queue_print_song_info(Response &r, const Queue &queue, - unsigned position) - { - song_print_info(r, queue.Get(position)); -- r.Fmt(FMT_STRING("Pos: {}\nId: {}\n"), -+ r.Fmt("Pos: {}\nId: {}\n", - position, queue.PositionToId(position)); - - uint8_t priority = queue.GetPriorityAtPosition(position); - if (priority != 0) -- r.Fmt(FMT_STRING("Prio: {}\n"), priority); -+ r.Fmt("Prio: {}\n", priority); - } - - void -@@ -67,7 +67,7 @@ queue_print_uris(Response &r, const Queue &queue, - assert(end <= queue.GetLength()); - - for (unsigned i = start; i < end; ++i) { -- r.Fmt(FMT_STRING("{}:"), i); -+ r.Fmt("{}:", i); - song_print_uri(r, queue.Get(i)); - } - } -@@ -95,7 +95,7 @@ queue_print_changes_position(Response &r, const Queue &queue, - - for (unsigned i = start; i < end; i++) - if (queue.IsNewerAtPosition(i, version)) -- r.Fmt(FMT_STRING("cpos: {}\nId: {}\n"), -+ r.Fmt("cpos: {}\nId: {}\n", - i, queue.PositionToId(i)); - } - ---- a/src/sticker/Print.cxx -+++ b/src/sticker/Print.cxx -@@ -27,7 +27,7 @@ void - sticker_print_value(Response &r, - const char *name, const char *value) - { -- r.Fmt(FMT_STRING("sticker: {}={}\n"), name, value); -+ r.Fmt("sticker: {}={}\n", name, value); - } - - void - -https://github.com/MusicPlayerDaemon/MPD/pull/2187 -https://github.com/MusicPlayerDaemon/MPD/commit/5de0909ae5576b6070a7ba4085ddaed67de808fd - -From 720fd27aa007afdcc0c03d57557da94909018cdd Mon Sep 17 00:00:00 2001 -From: Alfred Wingate -Date: Sat, 18 Jan 2025 03:29:14 +0200 -Subject: [PATCH] lib/fmt: remove the rest of the broken use of FMT_STRING - -Fixes: 9db7144d0fa4512335070a984690f3f5034210a5 -Signed-off-by: Alfred Wingate ---- - src/command/FingerprintCommands.cxx | 2 +- - src/command/NeighborCommands.cxx | 4 ++-- - src/output/plugins/PipeWireOutputPlugin.cxx | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/command/FingerprintCommands.cxx b/src/command/FingerprintCommands.cxx -index ff91f6f57..f73e676fb 100644 ---- a/src/command/FingerprintCommands.cxx -+++ b/src/command/FingerprintCommands.cxx -@@ -62,7 +62,7 @@ protected: - void Run() override; - - void SendResponse(Response &r) noexcept override { -- r.Fmt(FMT_STRING("chromaprint: {}\n"), -+ r.Fmt("chromaprint: {}\n", - GetFingerprint()); - } - -diff --git a/src/command/NeighborCommands.cxx b/src/command/NeighborCommands.cxx -index f67bb1a11..72bb88500 100644 ---- a/src/command/NeighborCommands.cxx -+++ b/src/command/NeighborCommands.cxx -@@ -46,8 +46,8 @@ handle_listneighbors(Client &client, [[maybe_unused]] Request args, Response &r) - } - - for (const auto &i : neighbors->GetList()) -- r.Fmt(FMT_STRING("neighbor: {}\n" -- "name: {}\n"), -+ r.Fmt("neighbor: {}\n" -+ "name: {}\n", - i.uri, - i.display_name); - return CommandResult::OK; -diff --git a/src/output/plugins/PipeWireOutputPlugin.cxx b/src/output/plugins/PipeWireOutputPlugin.cxx -index a97052f14..fea4adf0b 100644 ---- a/src/output/plugins/PipeWireOutputPlugin.cxx -+++ b/src/output/plugins/PipeWireOutputPlugin.cxx -@@ -685,7 +685,7 @@ PipeWireOutput::ParamChanged([[maybe_unused]] uint32_t id, - ::SetVolume(*stream, channels, volume); - } catch (...) { - FmtError(pipewire_output_domain, -- FMT_STRING("Failed to restore volume: {}"), -+ "Failed to restore volume: {}", - std::current_exception()); - } - } --- -2.48.0 - diff --git a/media-sound/mpd/mpd-0.23.16.ebuild b/media-sound/mpd/mpd-0.23.16.ebuild index 5005b5ceee9b..4946911eee31 100644 --- a/media-sound/mpd/mpd-0.23.16.ebuild +++ b/media-sound/mpd/mpd-0.23.16.ebuild @@ -8,6 +8,7 @@ inherit flag-o-matic linux-info meson systemd xdg DESCRIPTION="The Music Player Daemon (mpd)" HOMEPAGE="https://www.musicpd.org https://github.com/MusicPlayerDaemon/MPD" SRC_URI="https://www.musicpd.org/download/${PN}/${PV%.*}/${P}.tar.xz" +SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/mpd-0.23.15.16-fix-libfmt-11.1.0.patch.xz" LICENSE="GPL-2" SLOT="0" @@ -128,7 +129,7 @@ DEPEND=" BDEPEND="virtual/pkgconfig" PATCHES=( - "${FILESDIR}"/mpd-0.23.15.16-fix-libfmt-11.1.0.patch + "${WORKDIR}"/mpd-0.23.15.16-fix-libfmt-11.1.0.patch ) pkg_setup() {