diff --git a/0ca574ae168820da0268b3ec7607ca7b33024d05.patch b/0ca574ae168820da0268b3ec7607ca7b33024d05.patch new file mode 100644 index 0000000..4d418e6 --- /dev/null +++ b/0ca574ae168820da0268b3ec7607ca7b33024d05.patch @@ -0,0 +1,39 @@ +From 0ca574ae168820da0268b3ec7607ca7b33024d05 Mon Sep 17 00:00:00 2001 +From: H1X4 <10332146+H1X4Dev@users.noreply.github.com> +Date: Fri, 31 Mar 2023 20:39:32 +0300 +Subject: [PATCH] fix build for master fmt (non-bundled) (#2694) + +* fix build for master fmt (non-bundled) + +* update fmt_runtime_string macro + +* fix build of updated macro +--- + include/spdlog/common.h | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/include/spdlog/common.h b/include/spdlog/common.h +index e69201a81..5f671c5c6 100644 +--- a/include/spdlog/common.h ++++ b/include/spdlog/common.h +@@ -173,12 +173,19 @@ using format_string_t = fmt::format_string; + template + using remove_cvref_t = typename std::remove_cv::type>::type; + ++template ++#if FMT_VERSION >= 90101 ++using fmt_runtime_string = fmt::runtime_format_string; ++#else ++using fmt_runtime_string = fmt::basic_runtime; ++#endif ++ + // clang doesn't like SFINAE disabled constructor in std::is_convertible<> so have to repeat the condition from basic_format_string here, + // in addition, fmt::basic_runtime is only convertible to basic_format_string but not basic_string_view + template + struct is_convertible_to_basic_format_string + : std::integral_constant>::value || std::is_same, fmt::basic_runtime>::value> ++ std::is_convertible>::value || std::is_same, fmt_runtime_string>::value> + {}; + + # if defined(SPDLOG_WCHAR_FILENAMES) || defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT) diff --git a/spdlog.changes b/spdlog.changes index 64ff6a8..2972012 100644 --- a/spdlog.changes +++ b/spdlog.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Sat May 20 12:51:48 UTC 2023 - Bernd Ritter + +- Applied three patches from upstream after update to dependency fmt 1.10 broke test in daily_file_sink #2735 + * patch 0ca574ae168820da0268b3ec7607ca7b33024d05.patch add support for a changed symbol in fmt 1.10.0 + * patch v1.11.0_removed_brackets_for_fmt_10.diff removes duplicate brackets from unit tests + * patch tt4g-fix-2735.diff solves the failing tests due to a now redundant workaround + ------------------------------------------------------------------- Wed Nov 2 22:51:57 UTC 2022 - Bernd Ritter diff --git a/spdlog.spec b/spdlog.spec index 6789850..90264b1 100644 --- a/spdlog.spec +++ b/spdlog.spec @@ -1,7 +1,7 @@ # # spec file for package spdlog # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -25,6 +25,12 @@ Summary: C++ logging library License: MIT URL: https://github.com/gabime/spdlog Source0: https://github.com/gabime/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +# PATCH-FIX-UPSTREAM 0ca574ae168820da0268b3ec7607ca7b33024d05.patch +Patch0: 0ca574ae168820da0268b3ec7607ca7b33024d05.patch +# PATCH-FIX-UPSTREAM v1.11.0_removed_brackets_for_fmt_10.diff +Patch1: v1.11.0_removed_brackets_for_fmt_10.diff +# PATCH-FIX-UPSTREAM tt4g-fix-2735.diff +Patch2: tt4g-fix-2735.diff Source99: baselibs.conf BuildRequires: cmake >= 3.10 %if 0%{?suse_version} > 1500 diff --git a/tt4g-fix-2735.diff b/tt4g-fix-2735.diff new file mode 100644 index 0000000..71141af --- /dev/null +++ b/tt4g-fix-2735.diff @@ -0,0 +1,50 @@ +diff --git a/include/spdlog/sinks/daily_file_sink.h b/include/spdlog/sinks/daily_file_sink.h +index f6f1bb1d..31516ee2 100644 +--- a/include/spdlog/sinks/daily_file_sink.h ++++ b/include/spdlog/sinks/daily_file_sink.h +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + + namespace spdlog { + namespace sinks { +@@ -48,7 +49,6 @@ struct daily_filename_format_calculator + { + static filename_t calc_filename(const filename_t &filename, const tm &now_tm) + { +-#ifdef SPDLOG_USE_STD_FORMAT + // adapted from fmtlib: https://github.com/fmtlib/fmt/blob/8.0.1/include/fmt/chrono.h#L522-L546 + + filename_t tm_format; +@@ -59,7 +59,7 @@ struct daily_filename_format_calculator + tm_format.push_back(' '); + + const size_t MIN_SIZE = 10; +- filename_t buf; ++ std::vector buf; + buf.resize(MIN_SIZE); + for (;;) + { +@@ -73,19 +73,7 @@ struct daily_filename_format_calculator + buf.resize(buf.size() * 2); + } + +- return buf; +-#else +- // generate fmt datetime format string, e.g. {:%Y-%m-%d}. +- filename_t fmt_filename = fmt::format(SPDLOG_FMT_STRING(SPDLOG_FILENAME_T("{{:{}}}")), filename); +- +- // MSVC doesn't allow fmt::runtime(..) with wchar, with fmtlib versions < 9.1.x +-# if defined(_MSC_VER) && defined(SPDLOG_WCHAR_FILENAMES) && FMT_VERSION < 90101 +- return fmt::format(fmt_filename, now_tm); +-# else +- return fmt::format(SPDLOG_FMT_RUNTIME(fmt_filename), now_tm); +-# endif +- +-#endif ++ return std::string(buf.cbegin(), buf.cend()); + } + + private: diff --git a/v1.11.0_removed_brackets_for_fmt_10.diff b/v1.11.0_removed_brackets_for_fmt_10.diff new file mode 100644 index 0000000..589733b --- /dev/null +++ b/v1.11.0_removed_brackets_for_fmt_10.diff @@ -0,0 +1,214 @@ +diff --git a/tests/test_daily_logger.cpp b/tests/test_daily_logger.cpp +index c6e685de..82f28941 100644 +--- a/tests/test_daily_logger.cpp ++++ b/tests/test_daily_logger.cpp +@@ -87,19 +87,19 @@ TEST_CASE("daily_logger with custom calculator", "[daily_logger]") + * File name calculations + */ + +-TEST_CASE("rotating_file_sink::calc_filename1", "[rotating_file_sink]]") ++TEST_CASE("rotating_file_sink::calc_filename1", "[rotating_file_sink]") + { + auto filename = spdlog::sinks::rotating_file_sink_st::calc_filename(SPDLOG_FILENAME_T("rotated.txt"), 3); + REQUIRE(filename == SPDLOG_FILENAME_T("rotated.3.txt")); + } + +-TEST_CASE("rotating_file_sink::calc_filename2", "[rotating_file_sink]]") ++TEST_CASE("rotating_file_sink::calc_filename2", "[rotating_file_sink]") + { + auto filename = spdlog::sinks::rotating_file_sink_st::calc_filename(SPDLOG_FILENAME_T("rotated"), 3); + REQUIRE(filename == SPDLOG_FILENAME_T("rotated.3")); + } + +-TEST_CASE("rotating_file_sink::calc_filename3", "[rotating_file_sink]]") ++TEST_CASE("rotating_file_sink::calc_filename3", "[rotating_file_sink]") + { + auto filename = spdlog::sinks::rotating_file_sink_st::calc_filename(SPDLOG_FILENAME_T("rotated.txt"), 0); + REQUIRE(filename == SPDLOG_FILENAME_T("rotated.txt")); +@@ -110,7 +110,7 @@ TEST_CASE("rotating_file_sink::calc_filename3", "[rotating_file_sink]]") + + # include + +-TEST_CASE("daily_file_sink::daily_filename_calculator", "[daily_file_sink]]") ++TEST_CASE("daily_file_sink::daily_filename_calculator", "[daily_file_sink]") + { + // daily_YYYY-MM-DD_hh-mm.txt + auto filename = +@@ -123,7 +123,7 @@ TEST_CASE("daily_file_sink::daily_filename_calculator", "[daily_file_sink]]") + } + #endif + +-TEST_CASE("daily_file_sink::daily_filename_format_calculator", "[daily_file_sink]]") ++TEST_CASE("daily_file_sink::daily_filename_format_calculator", "[daily_file_sink]") + { + std::tm tm = spdlog::details::os::localtime(); + // example-YYYY-MM-DD.log +diff --git a/tests/test_errors.cpp b/tests/test_errors.cpp +index 896e5b0a..939f1aeb 100644 +--- a/tests/test_errors.cpp ++++ b/tests/test_errors.cpp +@@ -22,7 +22,7 @@ protected: + } + }; + +-TEST_CASE("default_error_handler", "[errors]]") ++TEST_CASE("default_error_handler", "[errors]") + { + prepare_logdir(); + spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG); +@@ -40,7 +40,7 @@ TEST_CASE("default_error_handler", "[errors]]") + + struct custom_ex + {}; +-TEST_CASE("custom_error_handler", "[errors]]") ++TEST_CASE("custom_error_handler", "[errors]") + { + prepare_logdir(); + spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG); +@@ -54,7 +54,7 @@ TEST_CASE("custom_error_handler", "[errors]]") + require_message_count(SIMPLE_LOG, 2); + } + +-TEST_CASE("default_error_handler2", "[errors]]") ++TEST_CASE("default_error_handler2", "[errors]") + { + spdlog::drop_all(); + auto logger = spdlog::create("failed_logger"); +@@ -62,7 +62,7 @@ TEST_CASE("default_error_handler2", "[errors]]") + REQUIRE_THROWS_AS(logger->info("Some message"), custom_ex); + } + +-TEST_CASE("flush_error_handler", "[errors]]") ++TEST_CASE("flush_error_handler", "[errors]") + { + spdlog::drop_all(); + auto logger = spdlog::create("failed_logger"); +@@ -70,7 +70,7 @@ TEST_CASE("flush_error_handler", "[errors]]") + REQUIRE_THROWS_AS(logger->flush(), custom_ex); + } + +-TEST_CASE("async_error_handler", "[errors]]") ++TEST_CASE("async_error_handler", "[errors]") + { + prepare_logdir(); + std::string err_msg("log failed with some msg"); +@@ -98,7 +98,7 @@ TEST_CASE("async_error_handler", "[errors]]") + } + + // Make sure async error handler is executed +-TEST_CASE("async_error_handler2", "[errors]]") ++TEST_CASE("async_error_handler2", "[errors]") + { + prepare_logdir(); + std::string err_msg("This is async handler error message"); +diff --git a/tests/test_file_helper.cpp b/tests/test_file_helper.cpp +index 1d947078..dd3ca4f8 100644 +--- a/tests/test_file_helper.cpp ++++ b/tests/test_file_helper.cpp +@@ -15,7 +15,7 @@ static void write_with_helper(file_helper &helper, size_t howmany) + helper.flush(); + } + +-TEST_CASE("file_helper_filename", "[file_helper::filename()]]") ++TEST_CASE("file_helper_filename", "[file_helper::filename()]") + { + prepare_logdir(); + +@@ -25,7 +25,7 @@ TEST_CASE("file_helper_filename", "[file_helper::filename()]]") + REQUIRE(helper.filename() == target_filename); + } + +-TEST_CASE("file_helper_size", "[file_helper::size()]]") ++TEST_CASE("file_helper_size", "[file_helper::size()]") + { + prepare_logdir(); + spdlog::filename_t target_filename = SPDLOG_FILENAME_T(TEST_FILENAME); +@@ -39,7 +39,7 @@ TEST_CASE("file_helper_size", "[file_helper::size()]]") + REQUIRE(get_filesize(TEST_FILENAME) == expected_size); + } + +-TEST_CASE("file_helper_reopen", "[file_helper::reopen()]]") ++TEST_CASE("file_helper_reopen", "[file_helper::reopen()]") + { + prepare_logdir(); + spdlog::filename_t target_filename = SPDLOG_FILENAME_T(TEST_FILENAME); +@@ -51,7 +51,7 @@ TEST_CASE("file_helper_reopen", "[file_helper::reopen()]]") + REQUIRE(helper.size() == 0); + } + +-TEST_CASE("file_helper_reopen2", "[file_helper::reopen(false)]]") ++TEST_CASE("file_helper_reopen2", "[file_helper::reopen(false)]") + { + prepare_logdir(); + spdlog::filename_t target_filename = SPDLOG_FILENAME_T(TEST_FILENAME); +@@ -78,7 +78,7 @@ static void test_split_ext(const spdlog::filename_t::value_type *fname, const sp + REQUIRE(ext == expected_ext); + } + +-TEST_CASE("file_helper_split_by_extension", "[file_helper::split_by_extension()]]") ++TEST_CASE("file_helper_split_by_extension", "[file_helper::split_by_extension()]") + { + test_split_ext(SPDLOG_FILENAME_T("mylog.txt"), SPDLOG_FILENAME_T("mylog"), SPDLOG_FILENAME_T(".txt")); + test_split_ext(SPDLOG_FILENAME_T(".mylog.txt"), SPDLOG_FILENAME_T(".mylog"), SPDLOG_FILENAME_T(".txt")); +diff --git a/tests/test_file_logging.cpp b/tests/test_file_logging.cpp +index 1c7a1853..7a7119ad 100644 +--- a/tests/test_file_logging.cpp ++++ b/tests/test_file_logging.cpp +@@ -6,7 +6,7 @@ + #define SIMPLE_LOG "test_logs/simple_log" + #define ROTATING_LOG "test_logs/rotating_log" + +-TEST_CASE("simple_file_logger", "[simple_logger]]") ++TEST_CASE("simple_file_logger", "[simple_logger]") + { + prepare_logdir(); + spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG); +@@ -23,7 +23,7 @@ TEST_CASE("simple_file_logger", "[simple_logger]]") + REQUIRE(file_contents(SIMPLE_LOG) == spdlog::fmt_lib::format("Test message 1{}Test message 2{}", default_eol, default_eol)); + } + +-TEST_CASE("flush_on", "[flush_on]]") ++TEST_CASE("flush_on", "[flush_on]") + { + prepare_logdir(); + spdlog::filename_t filename = SPDLOG_FILENAME_T(SIMPLE_LOG); +@@ -44,7 +44,7 @@ TEST_CASE("flush_on", "[flush_on]]") + spdlog::fmt_lib::format("Should not be flushed{}Test message 1{}Test message 2{}", default_eol, default_eol, default_eol)); + } + +-TEST_CASE("rotating_file_logger1", "[rotating_logger]]") ++TEST_CASE("rotating_file_logger1", "[rotating_logger]") + { + prepare_logdir(); + size_t max_size = 1024 * 10; +@@ -60,7 +60,7 @@ TEST_CASE("rotating_file_logger1", "[rotating_logger]]") + require_message_count(ROTATING_LOG, 10); + } + +-TEST_CASE("rotating_file_logger2", "[rotating_logger]]") ++TEST_CASE("rotating_file_logger2", "[rotating_logger]") + { + prepare_logdir(); + size_t max_size = 1024 * 10; +@@ -100,7 +100,7 @@ TEST_CASE("rotating_file_logger2", "[rotating_logger]]") + } + + // test that passing max_size=0 throws +-TEST_CASE("rotating_file_logger3", "[rotating_logger]]") ++TEST_CASE("rotating_file_logger3", "[rotating_logger]") + { + prepare_logdir(); + size_t max_size = 0; +diff --git a/tests/test_macros.cpp b/tests/test_macros.cpp +index 2aeeecff..36537958 100644 +--- a/tests/test_macros.cpp ++++ b/tests/test_macros.cpp +@@ -10,7 +10,7 @@ + + #define TEST_FILENAME "test_logs/simple_log" + +-TEST_CASE("debug and trace w/o format string", "[macros]]") ++TEST_CASE("debug and trace w/o format string", "[macros]") + { + + prepare_logdir();