[crux-commits] ports/contrib (3.6): spdlog: added patches to build against fmt 8

crux at crux.nu crux at crux.nu
Tue Jul 13 15:32:58 UTC 2021


commit 6cf0c8980c2841c6fbdc1ce334e8a9e4b9449d10
Author: Tim Biermann <tbier at posteo.de>
Date:   Tue Jul 13 14:47:44 2021 +0200

    spdlog: added patches to build against fmt 8

diff --git a/spdlog/.footprint b/spdlog/.footprint
index a72d045b4..3fee6c9ca 100644
--- a/spdlog/.footprint
+++ b/spdlog/.footprint
@@ -10,6 +10,7 @@ drwxr-xr-x	root/root	usr/include/spdlog/cfg/
 -rw-r--r--	root/root	usr/include/spdlog/cfg/helpers-inl.h
 -rw-r--r--	root/root	usr/include/spdlog/cfg/helpers.h
 -rw-r--r--	root/root	usr/include/spdlog/common-inl.h
+-rw-r--r--	root/root	usr/include/spdlog/common-inl.h.orig
 -rw-r--r--	root/root	usr/include/spdlog/common.h
 drwxr-xr-x	root/root	usr/include/spdlog/details/
 -rw-r--r--	root/root	usr/include/spdlog/details/backtracer-inl.h
@@ -39,20 +40,6 @@ drwxr-xr-x	root/root	usr/include/spdlog/details/
 -rw-r--r--	root/root	usr/include/spdlog/details/windows_include.h
 drwxr-xr-x	root/root	usr/include/spdlog/fmt/
 -rw-r--r--	root/root	usr/include/spdlog/fmt/bin_to_hex.h
-drwxr-xr-x	root/root	usr/include/spdlog/fmt/bundled/
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/LICENSE.rst
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/chrono.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/color.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/compile.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/core.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/format-inl.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/format.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/locale.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/os.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/ostream.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/posix.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/printf.h
--rw-r--r--	root/root	usr/include/spdlog/fmt/bundled/ranges.h
 -rw-r--r--	root/root	usr/include/spdlog/fmt/chrono.h
 -rw-r--r--	root/root	usr/include/spdlog/fmt/fmt.h
 -rw-r--r--	root/root	usr/include/spdlog/fmt/ostr.h
@@ -104,6 +91,8 @@ drwxr-xr-x	root/root	usr/lib/cmake/spdlog/
 -rw-r--r--	root/root	usr/lib/cmake/spdlog/spdlogConfigTargets-release.cmake
 -rw-r--r--	root/root	usr/lib/cmake/spdlog/spdlogConfigTargets.cmake
 -rw-r--r--	root/root	usr/lib/cmake/spdlog/spdlogConfigVersion.cmake
--rw-r--r--	root/root	usr/lib/libspdlog.a
+lrwxrwxrwx	root/root	usr/lib/libspdlog.so -> libspdlog.so.1
+lrwxrwxrwx	root/root	usr/lib/libspdlog.so.1 -> libspdlog.so.1.8.5
+-rwxr-xr-x	root/root	usr/lib/libspdlog.so.1.8.5
 drwxr-xr-x	root/root	usr/lib/pkgconfig/
 -rw-r--r--	root/root	usr/lib/pkgconfig/spdlog.pc
diff --git a/spdlog/.signature b/spdlog/.signature
index 17104ca97..5ae82ce68 100644
--- a/spdlog/.signature
+++ b/spdlog/.signature
@@ -1,5 +1,7 @@
 untrusted comment: verify with /etc/ports/contrib.pub
-RWSagIOpLGJF36iFrUknOIUr47qHioCGgxc23PnvblH9UXZZxRbHyyRI7uacUhpnYqmj07Pg8cqpjpHhUc8R/ZwvqgT31XUZBwQ=
-SHA256 (Pkgfile) = c89f308b599cc3c39b75d0ded33c396cdc9a46aefabd47f3e5f83ca72b37edbc
-SHA256 (.footprint) = a4b2171e9c32f95241b6cf456b75e7bd45f34e40e57f8ceb2075ce86ef4493c8
+RWSagIOpLGJF314YMnttbJEj6hWUjKjZV56MtckKr06zcSOYLcuY0sbBEIoIaQs40k2MsVtriMz/AsoN1YcnDbGd/UQ/xZiYIwk=
+SHA256 (Pkgfile) = a2fc1ab7da6b4fe48028cd09f1815cd774db1e04449525bc55a2ee9e5854a692
+SHA256 (.footprint) = 18b6e42d82ce749fb89975ba7783cad7adf2c801ca41762abfabc63da9c7890a
 SHA256 (spdlog-1.8.5.tar.gz) = 944d0bd7c763ac721398dca2bb0f3b5ed16f67cef36810ede5061f35a543b4b8
+SHA256 (spdlog-1.8.5-fmt8.patch) = 42c2350ac24b76d49f39bb6f9d8f067ce5f40102c6f62cf81671033b2955be6b
+SHA256 (spdlog-1.8.5-fmt8_tests.patch) = 31882318089ed5b8875268c75e1256e971fe1d0d1894f50bc37e151cfb4e7daa
diff --git a/spdlog/Pkgfile b/spdlog/Pkgfile
index ee12ee8c5..88aec5cd2 100644
--- a/spdlog/Pkgfile
+++ b/spdlog/Pkgfile
@@ -1,20 +1,29 @@
 # Description: Fast C++ logging library
 # URL: https://github.com/gabime/spdlog
 # Maintainer: Tim Biermann, tbier at posteo dot de
-# Depends on: cmake fmt
+# Depends on: fmt
 
 name=spdlog
 version=1.8.5
-release=1
-source=(https://github.com/gabime/spdlog/archive/v$version/$name-$version.tar.gz)
+release=2
+source=(https://github.com/gabime/spdlog/archive/v$version/$name-$version.tar.gz
+  spdlog-1.8.5-fmt8.patch spdlog-1.8.5-fmt8_tests.patch)
 
 build() {
-  [[ -e /usr/bin/ninja ]] && PKGMK_SPDLOG+=' -G Ninja'
+  patch -Np1 -d $name-$version -i $SRC/spdlog-1.8.5-fmt8.patch
+  patch -Np1 -d $name-$version -i $SRC/spdlog-1.8.5-fmt8_tests.patch
+
+  prt-get isinst ninja && PKGMK_SPDLOG+=' -G Ninja'
   cmake -S $name-$version -B build $PKGMK_SPDLOG \
     -D CMAKE_INSTALL_PREFIX=/usr \
     -D CMAKE_INSTALL_LIBDIR=lib \
     -D CMAKE_BUILD_TYPE=Release \
     -D CMAKE_CXX_FLAGS_RELEASE="$CXXFLAGS" \
+    -D SPDLOG_FMT_EXTERNAL=ON \
+    -D SPDLOG_INSTALL=ON \
+    -D SPDLOG_BUILD_SHARED=ON \
+    -D SPDLOG_BUILD_EXAMPLE=OFF \
+    -D SPDLOG_BUILD_BENCH=OFF \
     -Wno-dev
   cmake --build build
   DESTDIR=$PKG cmake --install build
diff --git a/spdlog/spdlog-1.8.5-fmt8.patch b/spdlog/spdlog-1.8.5-fmt8.patch
new file mode 100644
index 000000000..13ae65912
--- /dev/null
+++ b/spdlog/spdlog-1.8.5-fmt8.patch
@@ -0,0 +1,149 @@
+From 8bf718671a9eac5517c27a5ffe72089b7f426d8c Mon Sep 17 00:00:00 2001
+From: gabime <gmelman1 at gmail.com>
+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 <spdlog/fmt/bundled/format-inl.h>
+ 
+ 
++
+ FMT_BEGIN_NAMESPACE
+ namespace detail {
+ 
+-template <typename T>
+-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<typename T>
++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<float> dragonbox::to_decimal(float x)
+-    FMT_NOEXCEPT;
+-template FMT_API dragonbox::decimal_fp<double> dragonbox::to_decimal(double x)
+-    FMT_NOEXCEPT;
+-
+-// DEPRECATED! This function exists for ABI compatibility.
+-template <typename Char>
+-typename basic_format_context<std::back_insert_iterator<buffer<Char>>,
+-                              Char>::iterator
+-vformat_to(buffer<Char>& buf, basic_string_view<Char> format_str,
+-           basic_format_args<basic_format_context<
+-               std::back_insert_iterator<buffer<type_identity_t<Char>>>,
+-               type_identity_t<Char>>>
+-               args) {
+-  using iterator = std::back_insert_iterator<buffer<char>>;
+-  using context = basic_format_context<
+-      std::back_insert_iterator<buffer<type_identity_t<Char>>>,
+-      type_identity_t<Char>>;
+-  auto out = iterator(buf);
+-  format_handler<iterator, Char, context> h(out, format_str, args, {});
+-  parse_format_string<false>(format_str, h);
+-  return out;
+-}
+-template basic_format_context<std::back_insert_iterator<buffer<char>>,
+-                              char>::iterator
+-vformat_to(buffer<char>&, string_view,
+-           basic_format_args<basic_format_context<
+-               std::back_insert_iterator<buffer<type_identity_t<char>>>,
+-               type_identity_t<char>>>);
+-}  // namespace detail
+-
+-template struct FMT_INSTANTIATION_DEF_API detail::basic_data<void>;
++template FMT_API dragonbox::decimal_fp<float> dragonbox::to_decimal(float x) FMT_NOEXCEPT;
++template FMT_API dragonbox::decimal_fp<double> 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<char>&) = detail::format_float;
++int (*instantiate_format_float)(double, int, detail::float_specs, detail::buffer<char> &) = 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<std::locale>() const;
+-#endif
++#    endif
+ 
+ // Explicit instantiations for char.
+ 
+-template FMT_API std::string detail::grouping_impl<char>(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<char>;
+ template FMT_API char detail::decimal_point_impl(locale_ref);
+ 
+-template FMT_API void detail::buffer<char>::append(const char*, const char*);
++template FMT_API void detail::buffer<char>::append(const char *, const char *);
+ 
+ template FMT_API void detail::vformat_to(
+-    detail::buffer<char>&, string_view,
+-    basic_format_args<FMT_BUFFER_CONTEXT(char)>, detail::locale_ref);
+-
+-template FMT_API int detail::snprintf_float(double, int, detail::float_specs,
+-                                            detail::buffer<char>&);
+-template FMT_API int detail::snprintf_float(long double, int,
+-                                            detail::float_specs,
+-                                            detail::buffer<char>&);
+-template FMT_API int detail::format_float(double, int, detail::float_specs,
+-                                          detail::buffer<char>&);
+-template FMT_API int detail::format_float(long double, int, detail::float_specs,
+-                                          detail::buffer<char>&);
++    detail::buffer<char> &, string_view, basic_format_args<FMT_BUFFER_CONTEXT(char)>, detail::locale_ref);
++
++template FMT_API int detail::snprintf_float(double, int, detail::float_specs, detail::buffer<char> &);
++template FMT_API int detail::snprintf_float(long double, int, detail::float_specs, detail::buffer<char> &);
++template FMT_API int detail::format_float(double, int, detail::float_specs, detail::buffer<char> &);
++template FMT_API int detail::format_float(long double, int, detail::float_specs, detail::buffer<char> &);
+ 
+ // Explicit instantiations for wchar_t.
+ 
+-template FMT_API std::string detail::grouping_impl<wchar_t>(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<wchar_t>;
+ template FMT_API wchar_t detail::decimal_point_impl(locale_ref);
+ 
+-template FMT_API void detail::buffer<wchar_t>::append(const wchar_t*,
+-                                                      const wchar_t*);
++template FMT_API void detail::buffer<wchar_t>::append(const wchar_t *, const wchar_t *);
++
++template struct detail::basic_data<void>;
++
+ FMT_END_NAMESPACE
++
+ #endif // !SPDLOG_FMT_EXTERNAL
diff --git a/spdlog/spdlog-1.8.5-fmt8_tests.patch b/spdlog/spdlog-1.8.5-fmt8_tests.patch
new file mode 100644
index 000000000..1798df2d0
--- /dev/null
+++ b/spdlog/spdlog-1.8.5-fmt8_tests.patch
@@ -0,0 +1,22 @@
+From 5887744d8b6ddaa3044d1c59f06e2cf24b8e0349 Mon Sep 17 00:00:00 2001
+From: gabime <gmelman1 at gmail.com>
+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<spdlog::details::dump_info<T>>
+ 
+         if (put_positions)
+         {
+-            fmt::format_to(inserter, "{:<04X}: ", pos);
++            fmt::format_to(inserter, "{:04X}: ", pos);
+         }
+     }
+ };


More information about the crux-commits mailing list