Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Aug 2019 14:34:00 +0000
From:      bugzilla-noreply@freebsd.org
To:        ports-bugs@FreeBSD.org
Subject:   [Bug 240148] devel/spdlog: unbundle fmtlib or update to 6.0.0
Message-ID:  <bug-240148-7788@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D240148

            Bug ID: 240148
           Summary: devel/spdlog: unbundle fmtlib or update to 6.0.0
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Keywords: needs-patch
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: vanilla@FreeBSD.org
          Reporter: jbeich@FreeBSD.org
            Blocks: 240141
          Assignee: vanilla@FreeBSD.org
             Flags: maintainer-feedback?(vanilla@FreeBSD.org)

spdlog is currently built against bundled fmt 5.3.0. If both fmt and spdlog=
 are
used at the same time but fmt version is different the following may happen:

$ cat a.cc
#include <spdlog/spdlog.h>
#include <fmt/chrono.h>
int main() {}

$ c++ a.cc $(pkg-config --cflags --libs fmt spdlog)
In file included from a.cc:2:
In file included from /usr/local/include/fmt/chrono.h:12:
/usr/local/include/fmt/locale.h:19:35: error: parameter type
'fmt::v5::internal::buffer'
      (aka 'basic_buffer<char>') is an abstract class
    const std::locale& loc, buffer<Char>& buf,
                                  ^
/usr/local/include/spdlog/fmt/bundled/core.h:238:16: note: unimplemented pu=
re
virtual method 'grow' in
      'basic_buffer'
  virtual void grow(std::size_t capacity) =3D 0;
               ^
In file included from a.cc:2:
In file included from /usr/local/include/fmt/chrono.h:12:
/usr/local/include/fmt/locale.h:19:35: error: expected ')'
    const std::locale& loc, buffer<Char>& buf,
                                  ^
/usr/local/include/fmt/locale.h:18:51: note: to match this '('
typename buffer_context<Char>::iterator vformat_to(
                                                  ^
/usr/local/include/fmt/locale.h:22:17: error: no template named 'buffer_ran=
ge'
  using range =3D buffer_range<Char>;
                ^
/usr/local/include/fmt/locale.h:23:35: error: use of undeclared identifier
'range'
  return vformat_to<arg_formatter<range>>(buf, to_string_view(format_str),
args,
                                  ^
/usr/local/include/fmt/locale.h:24:69: error: expected a type
                                          internal::locale_ref(loc));
                                                                    ^
/usr/local/include/fmt/locale.h:49:18: error: no template named
'make_args_checked' in namespace
      'fmt::v5::internal'; did you mean 'make_checked'?
      {internal::make_args_checked<Args...>(format_str, args...)});
       ~~~~~~~~~~^~~~~~~~~~~~~~~~~
                 make_checked
/usr/local/include/spdlog/fmt/bundled/format.h:389:11: note: 'make_checked'
declared here
inline T *make_checked(T *p, std::size_t) { return p; }
          ^
In file included from a.cc:2:
In file included from /usr/local/include/fmt/chrono.h:12:
/usr/local/include/fmt/locale.h:53:27: error: no template named 'enable_if_=
t';
did you mean 'std::enable_if_t'?
          typename Char =3D enable_if_t<
                          ^~~~~~~~~~~
                          std::enable_if_t
/usr/include/c++/v1/type_traits:444:39: note: 'std::enable_if_t' declared h=
ere
template <bool _Bp, class _Tp =3D void> using enable_if_t =3D typename
enable_if<_Bp, _Tp>::type;
                                      ^
In file included from a.cc:2:
In file included from /usr/local/include/fmt/chrono.h:12:
/usr/local/include/fmt/locale.h:58:17: error: no template named 'output_ran=
ge'
in namespace 'fmt::v5::internal';
      did you mean simply 'output_range'?
  using range =3D internal::output_range<OutputIt, Char>;
                ^~~~~~~~~~~~~~~~~~~~~~
                output_range
/usr/local/include/spdlog/fmt/bundled/format.h:333:7: note: 'output_range'
declared here
class output_range {
      ^
In file included from a.cc:2:
In file included from /usr/local/include/fmt/chrono.h:12:
/usr/local/include/fmt/locale.h:64:25: error: missing 'typename' prior to
dependent type name
      'internal::is_output_iterator<OutputIt>::value'
          FMT_ENABLE_IF(internal::is_output_iterator<OutputIt>::value&&
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        typename
/usr/local/include/fmt/locale.h:65:53: error: parameter declarator cannot be
qualified
                            internal::is_string<S>::value)>
                            ~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/fmt/locale.h:65:59: error: expected template parameter
                            internal::is_string<S>::value)>
                                                          ^
In file included from a.cc:2:
In file included from /usr/local/include/fmt/chrono.h:25:
/usr/local/include/fmt/safe-duration-cast.h:24:25: error: expected parameter
declarator
          FMT_ENABLE_IF(!std::is_same<From, To>::value &&
                        ^
/usr/local/include/fmt/safe-duration-cast.h:24:25: error: expected ')'
/usr/local/include/fmt/safe-duration-cast.h:24:24: note: to match this '('
          FMT_ENABLE_IF(!std::is_same<From, To>::value &&
                       ^
/usr/local/include/fmt/safe-duration-cast.h:26:64: error: expected template
parameter
                            std::numeric_limits<To>::is_signed)>
                                                               ^
/usr/local/include/fmt/safe-duration-cast.h:53:25: error: expected parameter
declarator
          FMT_ENABLE_IF(!std::is_same<From, To>::value &&
                        ^
/usr/local/include/fmt/safe-duration-cast.h:53:25: error: expected ')'
/usr/local/include/fmt/safe-duration-cast.h:53:24: note: to match this '('
          FMT_ENABLE_IF(!std::is_same<From, To>::value &&
                       ^
/usr/local/include/fmt/safe-duration-cast.h:55:64: error: expected template
parameter
                            std::numeric_limits<To>::is_signed)>
                                                               ^
/usr/local/include/fmt/safe-duration-cast.h:56:18: error: redefinition of
'lossless_integral_conversion'
FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) {
                 ^
/usr/local/include/fmt/safe-duration-cast.h:27:18: note: previous definitio=
n is
here
FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) {
                 ^
/usr/local/include/fmt/safe-duration-cast.h:102:11: error: unknown type name
'FMT_ENABLE_IF'
          FMT_ENABLE_IF(std::is_same<From, To>::value)>
          ^
fatal error: too many errors emitted, stopping now [-ferror-limit=3D]
20 errors generated.


Referenced Bugs:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D240141
[Bug 240141] devel/libfmt: Update to 6.0.0
--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-240148-7788>