diff --git a/spdlog-fmt-8-fixes.patch b/spdlog-fmt-8-fixes.patch deleted file mode 100644 index bc72716..0000000 --- a/spdlog-fmt-8-fixes.patch +++ /dev/null @@ -1,21 +0,0 @@ -From 1f3bb8df568894d0f9c14785ffb4b41de484b641 Mon Sep 17 00:00:00 2001 -From: Evan Klitzke -Date: Wed, 23 Jun 2021 11:23:58 -0700 -Subject: [PATCH] Make spdlog_ex::spdlog_ex work with fmt 8.0.0 - ---- - include/spdlog/common-inl.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/spdlog/common-inl.h b/include/spdlog/common-inl.h -index c3e992224..5fa4e5d95 100644 ---- a/include/spdlog/common-inl.h -+++ b/include/spdlog/common-inl.h -@@ -56,7 +56,7 @@ SPDLOG_INLINE spdlog_ex::spdlog_ex(std::string msg) - SPDLOG_INLINE spdlog_ex::spdlog_ex(const std::string &msg, int last_errno) - { - memory_buf_t outbuf; -- fmt::format_system_error(outbuf, last_errno, msg); -+ fmt::format_system_error(outbuf, last_errno, msg.c_str()); - msg_ = fmt::to_string(outbuf); - } diff --git a/spdlog-fmt8.patch b/spdlog-fmt8.patch new file mode 100644 index 0000000..13ae659 --- /dev/null +++ b/spdlog-fmt8.patch @@ -0,0 +1,149 @@ +From 8bf718671a9eac5517c27a5ffe72089b7f426d8c Mon Sep 17 00:00:00 2001 +From: gabime +Date: Thu, 24 Jun 2021 13:22:02 +0300 +Subject: [PATCH] Update fmt version 8.0 + +diff --git a/include/spdlog/common-inl.h b/include/spdlog/common-inl.h +index c3e992224..5fa4e5d95 100644 +--- a/include/spdlog/common-inl.h ++++ b/include/spdlog/common-inl.h +@@ -56,7 +56,7 @@ SPDLOG_INLINE spdlog_ex::spdlog_ex(std::string msg) + SPDLOG_INLINE spdlog_ex::spdlog_ex(const std::string &msg, int last_errno) + { + memory_buf_t outbuf; +- fmt::format_system_error(outbuf, last_errno, msg); ++ fmt::format_system_error(outbuf, last_errno, msg.c_str()); + msg_ = fmt::to_string(outbuf); + } + +diff --git a/src/fmt.cpp b/src/fmt.cpp +index 9e91beb17..edd52dd55 100644 +--- a/src/fmt.cpp ++++ b/src/fmt.cpp +@@ -10,94 +10,58 @@ + #include + + ++ + FMT_BEGIN_NAMESPACE + namespace detail { + +-template +-int format_float(char* buf, std::size_t size, const char* format, int precision, +- T value) { +-#ifdef FMT_FUZZ +- if (precision > 100000) +- throw std::runtime_error( +- "fuzz mode - avoid large allocation inside snprintf"); +-#endif +- // Suppress the warning about nonliteral format string. +- int (*snprintf_ptr)(char*, size_t, const char*, ...) = FMT_SNPRINTF; +- return precision < 0 ? snprintf_ptr(buf, size, format, value) +- : snprintf_ptr(buf, size, format, precision, value); ++template ++int format_float(char *buf, std::size_t size, const char *format, int precision, T value) ++{ ++# ifdef FMT_FUZZ ++ if (precision > 100000) ++ throw std::runtime_error("fuzz mode - avoid large allocation inside snprintf"); ++# endif ++ // Suppress the warning about nonliteral format string. ++ int (*snprintf_ptr)(char *, size_t, const char *, ...) = FMT_SNPRINTF; ++ return precision < 0 ? snprintf_ptr(buf, size, format, value) : snprintf_ptr(buf, size, format, precision, value); + } + +-template FMT_API dragonbox::decimal_fp dragonbox::to_decimal(float x) +- FMT_NOEXCEPT; +-template FMT_API dragonbox::decimal_fp dragonbox::to_decimal(double x) +- FMT_NOEXCEPT; +- +-// DEPRECATED! This function exists for ABI compatibility. +-template +-typename basic_format_context>, +- Char>::iterator +-vformat_to(buffer& buf, basic_string_view format_str, +- basic_format_args>>, +- type_identity_t>> +- args) { +- using iterator = std::back_insert_iterator>; +- using context = basic_format_context< +- std::back_insert_iterator>>, +- type_identity_t>; +- auto out = iterator(buf); +- format_handler h(out, format_str, args, {}); +- parse_format_string(format_str, h); +- return out; +-} +-template basic_format_context>, +- char>::iterator +-vformat_to(buffer&, string_view, +- basic_format_args>>, +- type_identity_t>>); +-} // namespace detail +- +-template struct FMT_INSTANTIATION_DEF_API detail::basic_data; ++template FMT_API dragonbox::decimal_fp dragonbox::to_decimal(float x) FMT_NOEXCEPT; ++template FMT_API dragonbox::decimal_fp dragonbox::to_decimal(double x) FMT_NOEXCEPT; ++} // namespace detail + + // Workaround a bug in MSVC2013 that prevents instantiation of format_float. +-int (*instantiate_format_float)(double, int, detail::float_specs, +- detail::buffer&) = detail::format_float; ++int (*instantiate_format_float)(double, int, detail::float_specs, detail::buffer &) = detail::format_float; + +-#ifndef FMT_STATIC_THOUSANDS_SEPARATOR +-template FMT_API detail::locale_ref::locale_ref(const std::locale& loc); ++# ifndef FMT_STATIC_THOUSANDS_SEPARATOR ++template FMT_API detail::locale_ref::locale_ref(const std::locale &loc); + template FMT_API std::locale detail::locale_ref::get() const; +-#endif ++# endif + + // Explicit instantiations for char. + +-template FMT_API std::string detail::grouping_impl(locale_ref); +-template FMT_API char detail::thousands_sep_impl(locale_ref); ++template FMT_API auto detail::thousands_sep_impl(locale_ref) -> thousands_sep_result; + template FMT_API char detail::decimal_point_impl(locale_ref); + +-template FMT_API void detail::buffer::append(const char*, const char*); ++template FMT_API void detail::buffer::append(const char *, const char *); + + template FMT_API void detail::vformat_to( +- detail::buffer&, string_view, +- basic_format_args, detail::locale_ref); +- +-template FMT_API int detail::snprintf_float(double, int, detail::float_specs, +- detail::buffer&); +-template FMT_API int detail::snprintf_float(long double, int, +- detail::float_specs, +- detail::buffer&); +-template FMT_API int detail::format_float(double, int, detail::float_specs, +- detail::buffer&); +-template FMT_API int detail::format_float(long double, int, detail::float_specs, +- detail::buffer&); ++ detail::buffer &, string_view, basic_format_args, detail::locale_ref); ++ ++template FMT_API int detail::snprintf_float(double, int, detail::float_specs, detail::buffer &); ++template FMT_API int detail::snprintf_float(long double, int, detail::float_specs, detail::buffer &); ++template FMT_API int detail::format_float(double, int, detail::float_specs, detail::buffer &); ++template FMT_API int detail::format_float(long double, int, detail::float_specs, detail::buffer &); + + // Explicit instantiations for wchar_t. + +-template FMT_API std::string detail::grouping_impl(locale_ref); +-template FMT_API wchar_t detail::thousands_sep_impl(locale_ref); ++template FMT_API auto detail::thousands_sep_impl(locale_ref) -> thousands_sep_result; + template FMT_API wchar_t detail::decimal_point_impl(locale_ref); + +-template FMT_API void detail::buffer::append(const wchar_t*, +- const wchar_t*); ++template FMT_API void detail::buffer::append(const wchar_t *, const wchar_t *); ++ ++template struct detail::basic_data; ++ + FMT_END_NAMESPACE ++ + #endif // !SPDLOG_FMT_EXTERNAL diff --git a/spdlog-fmt8_tests.patch b/spdlog-fmt8_tests.patch new file mode 100644 index 0000000..1798df2 --- /dev/null +++ b/spdlog-fmt8_tests.patch @@ -0,0 +1,22 @@ +From 5887744d8b6ddaa3044d1c59f06e2cf24b8e0349 Mon Sep 17 00:00:00 2001 +From: gabime +Date: Thu, 24 Jun 2021 15:58:25 +0300 +Subject: [PATCH] Fixed bin2hex to work with fmt v8 + +--- + include/spdlog/fmt/bin_to_hex.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/spdlog/fmt/bin_to_hex.h b/include/spdlog/fmt/bin_to_hex.h +index 1e2b054b1..45bc8f7d8 100644 +--- a/include/spdlog/fmt/bin_to_hex.h ++++ b/include/spdlog/fmt/bin_to_hex.h +@@ -209,7 +209,7 @@ struct formatter> + + if (put_positions) + { +- fmt::format_to(inserter, "{:<04X}: ", pos); ++ fmt::format_to(inserter, "{:04X}: ", pos); + } + } + }; diff --git a/spdlog.spec b/spdlog.spec index ffab685..19a3b2a 100644 --- a/spdlog.spec +++ b/spdlog.spec @@ -9,7 +9,8 @@ URL: https://github.com/gabime/%{name} Source0: %{url}/archive/v%{version}.tar.gz # https://github.com/gabime/spdlog/issues/1975 -Patch100: spdlog-fmt-8-fixes.patch +Patch100: %{name}-fmt8.patch +Patch101: %{name}-fmt8_tests.patch BuildRequires: catch-devel >= 2.8.0 BuildRequires: cmake