Skip to content

Does not build with fmt 8.1.1 #1653

@AMDmi3

Description

@AMDmi3

I'm working on an update for FreeBSD port of osm2pgsql to 1.6.0. The project currently does not build with libfmt version is 8.1.1. Bundled fmt builds fine, but that will not be used due to packaging policies.

/usr/local/include/fmt/core.h:1727:3: error: static_assert failed due to requirement 'formattable' "Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt"
  static_assert(
  ^
/usr/local/include/fmt/core.h:1853:23: note: in instantiation of function template specialization 'fmt::v8::detail::make_arg<true, fmt::v8::basic_format_context<fmt::v8::appender, char>, fmt::v8::detail::type::custom_type, const table_column_type &, 0>' requested here
        data_{detail::make_arg<
                      ^
/usr/local/include/fmt/format.h:844:10: note: in instantiation of function template specialization 'fmt::v8::format_arg_store<fmt::v8::basic_format_context<fmt::v8::appender, char>, table_column_type>::format_arg_store<const table_column_type &>' requested here
  return {args...};
         ^
/usr/local/include/fmt/format.h:2391:30: note: in instantiation of function template specialization 'fmt::v8::make_args_checked<table_column_type, fmt::v8::basic_string_view<char>, char>' requested here
    return vformat(str, fmt::make_args_checked<T...>(str, args...));
                             ^
/wrkdirs/usr/ports/converters/osm2pgsql/work/osm2pgsql-1.6.0/src/output-flex.cpp:639:53: note: in instantiation of function template specialization 'fmt::v8::detail::udl_formatter<char>::operator()<table_column_type>' requested here
            "Column type {} not implemented."_format(column.type())};
                                                    ^

Probably I'll patch it like this for now:

--- src/output-flex.cpp.orig    2022-01-24 15:04:03 UTC
+++ src/output-flex.cpp
@@ -636,7 +636,7 @@ void output_flex_t::write_column(
         }
     } else {
         throw std::runtime_error{
-            "Column type {} not implemented."_format(column.type())};
+            "Column type {} not implemented."_format(static_cast<uint8_t>(column.type()))};
     }
 
     lua_pop(lua_state(), 1);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions