From patchwork Tue Jul 16 11:00:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adolf Belka X-Patchwork-Id: 7928 Return-Path: Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) client-signature RSA-PSS (4096 bits)) (Client CN "mail01.haj.ipfire.org", Issuer "R11" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4WNbhG4gtBz3x2Q for ; Tue, 16 Jul 2024 11:00:30 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) client-signature ECDSA (secp384r1)) (Client CN "mail02.haj.ipfire.org", Issuer "E5" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4WNbhB5QVRz10m; Tue, 16 Jul 2024 11:00:26 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4WNbhB2lqNz33cH; Tue, 16 Jul 2024 11:00:26 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) client-signature RSA-PSS (4096 bits)) (Client CN "mail01.haj.ipfire.org", Issuer "R11" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4WNbh71yQLz32y9 for ; Tue, 16 Jul 2024 11:00:23 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4WNbh55Cjkz74; Tue, 16 Jul 2024 11:00:21 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1721127621; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=tHDYTvDCsSHRKGv9x6ibmAWCLedhiAQldcz7kvn+/p8=; b=PWzYmZqc/BlZWNVw+wtq6YjK2NrJjXfy2Jb8rGEp72+1TxevJqbLnVj38ZhZ6n0F6A+t/j s2676a+gCkeO4KAw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1721127621; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=tHDYTvDCsSHRKGv9x6ibmAWCLedhiAQldcz7kvn+/p8=; b=c22r8DwGoSaoFSiQIayBq/RirjAqO811geudV/I7OkjFlHasfzOeR54Y7bwDwCsfqE8fAe cKQyCXBYfDaVKpryFqNO5ikfGuUD2nawnUzMfmAgpggoX5EgMVEsJEMn9Tpz5LxTj4WHVs tOtHGFoOvmnm6zylKvELWSAGkMbJn0KEVd1McEhz/NuI/sJrpDs+ZiHQtu59G1cxV3eL9p oiktxR42cX+sctGJuiOoS0A4Nssh30WbvWmXNsI9vTwF0AE0cjce4CAPxJEEw4PDRBvfUV D8kTus62n+y9KBIKlb3HZJePRmifKNOo9/jgnAZ6RWsKNaRZA0yFZ7feuWvUdw== From: Adolf Belka To: development@lists.ipfire.org Subject: [PATCH 1/2] fmt: Update to version 11.0.1 Date: Tue, 16 Jul 2024 13:00:04 +0200 Message-ID: <20240716110005.1224776-1-adolf.belka@ipfire.org> MIME-Version: 1.0 Message-ID-Hash: 67CO27NMLT2REP5K7X7EWLQTUGSZ3LBL X-Message-ID-Hash: 67CO27NMLT2REP5K7X7EWLQTUGSZ3LBL X-MailFrom: adolf.belka@ipfire.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: IPFire development talk Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: - Update from version 10.2.1 to 11.0.1 - Update of rootfile - fmt from version 11.0.0 onwards has made the format function a constant. This was done to enforce that formatter::format is const for compatibility with std::format. - Changelog 11.0.1 Fixed version number in the inline namespace (#4047). Fixed disabling Unicode support via CMake (#4051). Fixed deprecated visit_format_arg (#4043). Fixed handling of a sign and improved the std::complex formater (#4034, #4050). Removed a redundant check in the formatter for std::expected (#4040). 11.0.0 Added fmt/base.h which provides a subset of the API with minimal include dependencies and enough functionality to replace all uses of the printf family of functions. This brings the compile time of code using {fmt} much closer to the equivalent printf code. This gives almost 4x improvement in build speed compared to version 10. Note that the benchmark is purely formatting code and includes. In real projects the difference from printf will be smaller partly because common standard headers will be included in almost any translation unit (TU) anyway. In particular, in every case except printf above ~1s is spent in total on including in all TUs. Optimized includes in other headers such as fmt/format.h which is now roughly equivalent to the old fmt/core.h in terms of build speed. Migrated the documentation at https://fmt.dev/ from Sphinx to MkDocs. Improved C++20 module support (#3990, #3991, #3993, #3994, #3997, #3998, #4004, #4005, #4006, #4013, #4027, #4029). In particular, native CMake support for modules is now used if available. Added an option to replace standard includes with import std enabled via the FMT_IMPORT_STD macro (#3921, #3928). Exported fmt::range_format, fmt::range_format_kind and fmt::compiled_string from the fmt module (#3970, #3999). Improved integration with stdio in fmt::print, enabling direct writes into a C stream buffer in common cases. This may give significant performance improvements ranging from tens of percent to 2x and eliminates dynamic memory allocations on the buffer level. It is currently enabled for built-in and string types with wider availability coming up in future releases. For example, it gives ~24% improvement on a simple benchmark compiled with Apple clang version 15.0.0 (clang-1500.1.0.2.5) and run on macOS 14.2.1 Improved safety of fmt::format_to when writing to an array (#3805). For example (godbolt): auto volkswagen = char[4]; auto result = fmt::format_to(volkswagen, "elephant"); no longer results in a buffer overflow. Instead the output will be truncated and you can get the end iterator and whether truncation occurred from the result object. Enabled Unicode support by default in MSVC, bringing it on par with other compilers and making it unnecessary for users to enable it explicitly. Most of {fmt} is encoding-agnostic but this prevents mojibake in places where encoding matters such as path formatting and terminal output. You can control the Unicode support via the CMake FMT_UNICODE option. Note that some {fmt} packages such as the one in vcpkg have already been compiled with Unicode enabled. Added a formatter for std::expected (#3834). Added a formatter for std::complex (#1467, #3886, #3892, #3900). Added a formatter for std::type_info (#3978). Specialized formatter for std::basic_string types with custom traits and allocators (#3938, #3943). Added formatters for std::chrono::day, std::chrono::month, std::chrono::year and std::chrono::year_month_day (#3758, #3772, #3906, #3913). Fixed handling of precision in %S (#3794, #3814). Thanks @js324. Added support for the - specifier (glibc strftime extension) to day of the month (%d) and week of the year (%W, %U, %V) specifiers (#3976). Fixed the scope of the - extension in chrono formatting so that it doesn't apply to subsequent specifiers (#3811, #3812). Improved handling of time_point::min() (#3282). Added support for character range formatting (#3857, #3863). Added string and debug_string range formatters (#3973, #4024). Enabled ADL for begin and end in fmt::join (#3813, #3824). Made contiguous iterator optimizations apply to std::basic_string iterators (#3798). Added support for ranges with mutable begin and end (#3752, #3800, #3955). Added support for move-only iterators to fmt::join (#3802, #3946). Moved range and iterator overloads of fmt::join to fmt/ranges.h, next to other overloads. Fixed handling of types with begin returning void such as Eigen matrices (#3839, #3964). Added an fmt::formattable concept (#3974). Added support for __float128 (#3494). Fixed rounding issues when formatting long double with fixed precision (#3539). Made fmt::isnan not trigger floating-point exception for NaN values (#3948, #3951). Removed dependency on for std::allocator_traits when possible (#3804). Enabled compile-time checks in formatting functions that take text colors and styles. Deprecated wide stream overloads of fmt::print that take text styles. Made format string compilation work with clang 12 and later despite only partial non-type template parameter support (#4000, #4001). Made fmt::iterator_buffer's move constructor noexcept (#3808). Started enforcing that formatter::format is const for compatibility with std::format (#3447). Added fmt::basic_format_arg::visit and deprecated fmt::visit_format_arg. Made fmt::basic_string_view not constructible from nullptr for consistency with std::string_view in C++23 (#3846). Fixed fmt::group_digits for negative integers (#3891, #3901). Fixed handling of negative ids in fmt::basic_format_args::get (#3945). Improved named argument validation (#3817). Disabled copy construction/assignment for fmt::format_arg_store and fixed moved construction (#3833). Worked around a locale issue in RHEL/devtoolset (#3858, #3859). Added RTTI detection for MSVC (#3821, #3963). Migrated the documentation from Sphinx to MkDocs. Improved documentation and README. Signed-off-by: Adolf Belka --- config/rootfiles/packages/fmt | 5 +++-- lfs/fmt | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/config/rootfiles/packages/fmt b/config/rootfiles/packages/fmt index 2078063cf..e8c70d3d9 100644 --- a/config/rootfiles/packages/fmt +++ b/config/rootfiles/packages/fmt @@ -1,5 +1,6 @@ #usr/include/fmt #usr/include/fmt/args.h +#usr/include/fmt/base.h #usr/include/fmt/chrono.h #usr/include/fmt/color.h #usr/include/fmt/compile.h @@ -18,6 +19,6 @@ #usr/lib/cmake/fmt/fmt-targets-release.cmake #usr/lib/cmake/fmt/fmt-targets.cmake #usr/lib/libfmt.so -usr/lib/libfmt.so.10 -usr/lib/libfmt.so.10.2.1 +usr/lib/libfmt.so.11 +usr/lib/libfmt.so.11.0.1 #usr/lib/pkgconfig/fmt.pc diff --git a/lfs/fmt b/lfs/fmt index d66fd17b3..8b124e064 100644 --- a/lfs/fmt +++ b/lfs/fmt @@ -26,7 +26,7 @@ include Config SUMMARY = Open-source formatting library for C++ -VER = 10.2.1 +VER = 11.0.1 THISAPP = fmt-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -34,7 +34,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = fmt -PAK_VER = 4 +PAK_VER = 5 DEPS = @@ -46,7 +46,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_BLAKE2 = 7bef719aa99464b5cb608c81ca78e23f3aed81cadfa9ed65246c4983a98f0cadb27983d42929ab4e0b5e264673e38d7658a4f7d5171e624b2431b3c6327071d9 +$(DL_FILE)_BLAKE2 = 96f3205afb6ac61549ca57b2ba1c8dca5ab523eebd08663ae9b352784fba7994ffa9ffc9be8a37977962175861a43082d4127a293a2e3d4219b5532b57d32693 install : $(TARGET) From patchwork Tue Jul 16 11:00:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adolf Belka X-Patchwork-Id: 7927 Return-Path: Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mail01.haj.ipfire.org", Issuer "R11" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4WNbhG0Whdz3x1l for ; Tue, 16 Jul 2024 11:00:30 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) client-signature ECDSA (secp384r1)) (Client CN "mail02.haj.ipfire.org", Issuer "E5" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4WNbhB3PTPzPQ; Tue, 16 Jul 2024 11:00:26 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4WNbhB0Z7Pz33mx; Tue, 16 Jul 2024 11:00:26 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mail01.haj.ipfire.org", Issuer "R11" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4WNbh71b1Wz32y9 for ; Tue, 16 Jul 2024 11:00:23 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4WNbh62ts2zPQ; Tue, 16 Jul 2024 11:00:22 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1721127622; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+SfYWK8k3SQ1vBl9b8Fa9/Hiv/ILRREehCAkZKKtjK0=; b=NuolaBzdZwUwizgMiOhqtuAjs7RV7FjyeCJV79/xTQSesJtmy2yARDgSt+YC/6hcn49+k7 KuRRazpc1s1MW8BA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1721127622; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+SfYWK8k3SQ1vBl9b8Fa9/Hiv/ILRREehCAkZKKtjK0=; b=Kovv0w6YahC9llBElkKoytP/FzEvtyjOPwplWWxFjVhSqrRt9+Qg8or216PPhiuMFL4LJL wvSmW4/gWAGyJYRoVbGZMCch8S6VLeed3geuLwhK7+5LkuL6XKREDXI7KbAO8naw1ZP57s fJGbl6EIi4Mvz/0Gg3C77YKYgnBTekc00sZfA4y04WXnYq9n55dzGl0ia9BHjhzHr9Epu6 If9aDU0Ut53+8cYaghEl91UJRHap8Smm88K0XNG1sH9N+8BgwRN2RMyw/uPTE6fRE6j/tA auwjEEGv2yo6OgwhBiX0/L8XNBsZsBZukzNJ+F/dqvNM00FJrk+8NabKGnpKZw== From: Adolf Belka To: development@lists.ipfire.org Subject: [PATCH 2/2] mpd: Patch mpd to deal with format function being const in fmt-11.0.0 onwards Date: Tue, 16 Jul 2024 13:00:05 +0200 Message-ID: <20240716110005.1224776-2-adolf.belka@ipfire.org> In-Reply-To: <20240716110005.1224776-1-adolf.belka@ipfire.org> References: <20240716110005.1224776-1-adolf.belka@ipfire.org> MIME-Version: 1.0 Message-ID-Hash: 6MVN45GRLS4X4R5JWZOI6WSEWDIPMOQI X-Message-ID-Hash: 6MVN45GRLS4X4R5JWZOI6WSEWDIPMOQI X-MailFrom: adolf.belka@ipfire.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: IPFire development talk Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: - Commit has been made in mpd but no release has yet been made with the change. When the next version release of mpd occurs this patch can be removed. - The patch changes all format calls to be const . Without this patch mpd will not build with fmt-11.0.0 or newer. - Update of rootfile not required. Signed-off-by: Adolf Belka --- lfs/mpd | 3 +- ...format_function_const_for_fmt-11.0.0.patch | 57 +++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/patches/mpd-0.23.15_make_format_function_const_for_fmt-11.0.0.patch diff --git a/lfs/mpd b/lfs/mpd index 55408aeb3..0f842f993 100644 --- a/lfs/mpd +++ b/lfs/mpd @@ -34,7 +34,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/${THISAPP} TARGET = $(DIR_INFO)/$(THISAPP) PROG = mpd -PAK_VER = 38 +PAK_VER = 39 # SUP_ARCH = aarch64 x86_64 DEPS = alsa avahi faad2 ffmpeg flac lame libmad libshout libogg libid3tag libvorbis opus soxr fmt @@ -82,6 +82,7 @@ $(subst %,%_BLAKE2,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mpd-0.23.15_make_format_function_const_for_fmt-11.0.0.patch $(UPDATE_AUTOMAKE) cd $(DIR_APP) && meson setup \ --prefix=/usr \ diff --git a/src/patches/mpd-0.23.15_make_format_function_const_for_fmt-11.0.0.patch b/src/patches/mpd-0.23.15_make_format_function_const_for_fmt-11.0.0.patch new file mode 100644 index 000000000..beea45484 --- /dev/null +++ b/src/patches/mpd-0.23.15_make_format_function_const_for_fmt-11.0.0.patch @@ -0,0 +1,57 @@ +diff -Naur mpd-0.23.15.orig/src/lib/ffmpeg/LibFmt.hxx mpd-0.23.15/src/lib/ffmpeg/LibFmt.hxx +--- mpd-0.23.15.orig/src/lib/ffmpeg/LibFmt.hxx 2023-12-20 16:21:57.000000000 +0100 ++++ mpd-0.23.15/src/lib/ffmpeg/LibFmt.hxx 2024-07-15 23:04:27.093307051 +0200 +@@ -29,7 +29,7 @@ + struct fmt::formatter : formatter + { + template +- auto format(const AVSampleFormat format, FormatContext &ctx) { ++ auto format(const AVSampleFormat format, FormatContext &ctx) const { + const char *name = av_get_sample_fmt_name(format); + if (name == nullptr) + name = "?"; +diff -Naur mpd-0.23.15.orig/src/lib/fmt/AudioFormatFormatter.hxx mpd-0.23.15/src/lib/fmt/AudioFormatFormatter.hxx +--- mpd-0.23.15.orig/src/lib/fmt/AudioFormatFormatter.hxx 2023-12-20 16:21:57.000000000 +0100 ++++ mpd-0.23.15/src/lib/fmt/AudioFormatFormatter.hxx 2024-07-15 23:05:48.519267115 +0200 +@@ -39,7 +39,7 @@ + struct fmt::formatter : formatter + { + template +- auto format(const SampleFormat format, FormatContext &ctx) { ++ auto format(const SampleFormat format, FormatContext &ctx) const { + return formatter::format(sample_format_to_string(format), + ctx); + } +@@ -49,7 +49,7 @@ + struct fmt::formatter : formatter + { + template +- auto format(const AudioFormat &af, FormatContext &ctx) { ++ auto format(const AudioFormat &af, FormatContext &ctx) const { + return formatter::format(ToString(af).c_str(), + ctx); + } +diff -Naur mpd-0.23.15.orig/src/lib/fmt/ExceptionFormatter.hxx mpd-0.23.15/src/lib/fmt/ExceptionFormatter.hxx +--- mpd-0.23.15.orig/src/lib/fmt/ExceptionFormatter.hxx 2023-12-20 16:21:57.000000000 +0100 ++++ mpd-0.23.15/src/lib/fmt/ExceptionFormatter.hxx 2024-07-15 23:06:21.330325382 +0200 +@@ -38,7 +38,7 @@ + struct fmt::formatter : formatter + { + template +- auto format(std::exception_ptr e, FormatContext &ctx) { ++ auto format(std::exception_ptr e, FormatContext &ctx) const { + return formatter::format(GetFullMessage(e), ctx); + } + }; +diff -Naur mpd-0.23.15.orig/src/lib/fmt/PathFormatter.hxx mpd-0.23.15/src/lib/fmt/PathFormatter.hxx +--- mpd-0.23.15.orig/src/lib/fmt/PathFormatter.hxx 2023-12-20 16:21:57.000000000 +0100 ++++ mpd-0.23.15/src/lib/fmt/PathFormatter.hxx 2024-07-15 23:07:13.908687683 +0200 +@@ -29,7 +29,7 @@ + struct fmt::formatter : formatter + { + template +- auto format(Path path, FormatContext &ctx) { ++ auto format(Path path, FormatContext &ctx) const { + return formatter::format(path.ToUTF8(), ctx); + } + };