Tectu / malloy

A cross-platform C++20 library providing embeddable server & client components for HTTP and WebSocket.
BSD 3-Clause "New" or "Revised" License
68 stars 8 forks source link

spdlog/fmt build issue on consuming application #85

Closed Tectu closed 3 years ago

Tectu commented 3 years ago

Since commit 55eb2cf0fa81fefe1a6399202749810a2833a25f, my applications consuming malloy are not building anymore:

In file included from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\listener.cpp:5:
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [50]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:129:12:   required from 'void spdlog::logger::critical(const FormatString&, Args&& ...) [with FormatString = char [50]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\listener.cpp:36:93:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
  340 |             fmt::format_to(buf, fmt, std::forward<Args>(args)...);
      |             ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, short unsigned int}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, short unsigned int}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [41]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, short unsigned int}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:111:12:   required from 'void spdlog::logger::info(const FormatString&, Args&& ...) [with FormatString = char [41]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, short unsigned int}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\listener.cpp:109:5:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
[ 93%] Linking CXX shared library libplugin.dll
mingw32-make[3]: *** [_deps\malloy-build\lib\malloy\server\CMakeFiles\malloy-server.dir\build.make:128: _deps/malloy-build/lib/malloy/server/CMakeFiles/malloy-server.dir/listener.cpp.obj] Error 1
mingw32-make[3]: *** Waiting for unfinished jobs....
In file included from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/spdlog.h:14,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/core/websocket/connection.hpp:14,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/websocket/connection.hpp:3,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection.hpp:4,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_plain.hpp:3,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_detector.cpp:2:
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [36]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:129:12:   required from 'void spdlog::logger::critical(const FormatString&, Args&& ...) [with FormatString = char [36]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_detector.cpp:77:79:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
  340 |             fmt::format_to(buf, fmt, std::forward<Args>(args)...);
      |             ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {long long unsigned int&}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {long long unsigned int&}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [26]; Args = {long long unsigned int&}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:99:12:   required from 'void spdlog::logger::trace(const FormatString&, Args&& ...) [with FormatString = char [26]; Args = {long long unsigned int&}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection.hpp:235:28:   required from 'void malloy::server::http::connection<Derived>::on_read(boost::beast::error_code, std::size_t) [with Derived = malloy::server::http::connection_plain; boost::beast::error_code = boost::system::error_code; std::size_t = long long unsigned int]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection.hpp:198:21:   required from 'void malloy::server::http::connection<Derived>::do_read() [with Derived = malloy::server::http::connection_plain]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_plain.hpp:65:40:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
In file included from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/spdlog.h:14,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/core/websocket/connection.hpp:14,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/websocket/connection.hpp:3,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection.hpp:4,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/request_generator_t.hpp:5,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing/endpoint_http.hpp:5,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing/router.hpp:3,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\controller.cpp:3:
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {long long unsigned int&}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {long long unsigned int&}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [26]; Args = {long long unsigned int&}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:99:12:   required from 'void spdlog::logger::trace(const FormatString&, Args&& ...) [with FormatString = char [26]; Args = {long long unsigned int&}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection.hpp:235:28:   required from 'void malloy::server::http::connection<Derived>::on_read(boost::beast::error_code, std::size_t) [with Derived = malloy::server::http::connection_plain; boost::beast::error_code = boost::system::error_code; std::size_t = long long unsigned int]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection.hpp:198:21:   required from 'void malloy::server::http::connection<Derived>::do_read() [with Derived = malloy::server::http::connection_plain]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection_plain.hpp:65:40:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
  340 |             fmt::format_to(buf, fmt, std::forward<Args>(args)...);
      |             ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [14]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:123:12:   required from 'void spdlog::logger::error(const FormatString&, Args&& ...) [with FormatString = char [14]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection.hpp:243:32:   required from 'void malloy::server::http::connection<Derived>::on_read(boost::beast::error_code, std::size_t) [with Derived = malloy::server::http::connection_plain; boost::beast::error_code = boost::system::error_code; std::size_t = long long unsigned int]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection.hpp:198:21:   required from 'void malloy::server::http::connection<Derived>::do_read() [with Derived = malloy::server::http::connection_plain]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection_plain.hpp:65:40:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
In file included from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/spdlog.h:14,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/core/websocket/connection.hpp:14,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/websocket/connection.hpp:3,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection.hpp:4,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/request_generator_t.hpp:5,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\endpoint_http.hpp:5,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.hpp:3,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.cpp:1:
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [39]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:123:12:   required from 'void spdlog::logger::error(const FormatString&, Args&& ...) [with FormatString = char [39]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection.hpp:68:29:   required from 'malloy::server::http::connection<Derived>::request_generator::body<boost::beast::http::basic_string_body<char>, malloy::server::endpoint_http_files::handle(const req_t&, const connection_t&) const::<lambda(auto:94&)> [with auto:94 = const std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>]::<lambda(auto:95&&)>, malloy::server::http::connection<Derived>::request_generator::body<boost::beast::http::basic_string_body<char>, malloy::server::endpoint_http_files::handle(const req_t&, const connection_t&) const::<lambda(auto:94&)> [with auto:94 = const std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>]::<lambda(auto:95&&)> >::<lambda(auto:82)> >::<lambda(const auto:80&, auto:81)> [with auto:80 = boost::system::error_code; auto:81 = long long unsigned int]'
C:/msys64/mingw64/include/boost/asio/async_result.hpp:46:4:   required from 'struct boost::asio::detail::is_completion_handler_for<malloy::server::http::connection<Derived>::request_generator::body<boost::beast::http::basic_string_body<char>, malloy::server::endpoint_http_files::handle(const req_t&, const connection_t&) const::<lambda(auto:94&)> [with auto:94 = const std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>]::<lambda(auto:95&&)>, malloy::server::http::connection<Derived>::request_generator::body<boost::beast::http::basic_string_body<char>, malloy::server::endpoint_http_files::handle(const req_t&, const connection_t&) const::<lambda(auto:94&)> [with auto:94 = const std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>]::<lambda(auto:95&&)> >::<lambda(auto:82)> >::<lambda(const auto:80&, auto:81)>, void(boost::system::error_code, long long unsigned int)>'
C:/msys64/mingw64/include/boost/asio/async_result.hpp:72:57:   [ skipping 7 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
C:/msys64/mingw64/include/c++/10.3.0/type_traits:2517:55:   required from 'struct std::__result_of_impl<false, false, malloy::server::endpoint_http_files::handle(const req_t&, const connection_t&) const::<lambda(auto:94&)>, const std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>&>'
C:/msys64/mingw64/include/c++/10.3.0/type_traits:2522:12:   required from 'struct std::__invoke_result<malloy::server::endpoint_http_files::handle(const req_t&, const connection_t&) const::<lambda(auto:94&)>, const std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>&>'
C:/msys64/mingw64/include/c++/10.3.0/type_traits:2951:12:   required from 'struct std::invoke_result<malloy::server::endpoint_http_files::handle(const req_t&, const connection_t&) const::<lambda(auto:94&)>, const std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>&>'
C:/msys64/mingw64/include/c++/10.3.0/type_traits:2957:11:   required by substitution of 'template<class _Fn, class ... _Args> using invoke_result_t = typename std::invoke_result::type [with _Fn = malloy::server::endpoint_http_files::handle(const req_t&, const connection_t&) const::<lambda(auto:94&)>; _Args = {const std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>&}]'
C:/msys64/mingw64/include/c++/10.3.0/variant:1713:13:   required from 'constexpr decltype(auto) std::visit(_Visitor&&, _Variants&& ...) [with _Visitor = malloy::server::endpoint_http_files::handle(const req_t&, const connection_t&) const::<lambda(auto:94&)>; _Variants = {const std::variant<std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator> >&}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\endpoint_http_files.hpp:48:13:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
  340 |             fmt::format_to(buf, fmt, std::forward<Args>(args)...);
      |             ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {const char*}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {const char*}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [32]; Args = {const char*}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.hpp:558:30:   required from 'bool malloy::server::router::log_or_throw(const std::exception&, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [32]; Args = {const char*}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.cpp:25:100:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [18]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:99:12:   required from 'void spdlog::logger::trace(const FormatString&, Args&& ...) [with FormatString = char [18]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.cpp:50:54:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [39]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:99:12:   required from 'void spdlog::logger::trace(const FormatString&, Args&& ...) [with FormatString = char [39]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.cpp:127:103:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [33]; Args = {int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:99:12:   required from 'void spdlog::logger::trace(const FormatString&, Args&& ...) [with FormatString = char [33]; Args = {int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.cpp:144:113:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {int}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {int}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [92]; Args = {int}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:123:12:   required from 'void spdlog::logger::error(const FormatString&, Args&& ...) [with FormatString = char [92]; Args = {int}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.cpp:149:148:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {long long unsigned int&}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {long long unsigned int&}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [26]; Args = {long long unsigned int&}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:99:12:   required from 'void spdlog::logger::trace(const FormatString&, Args&& ...) [with FormatString = char [26]; Args = {long long unsigned int&}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection.hpp:235:28:   required from 'void malloy::server::http::connection<Derived>::on_read(boost::beast::error_code, std::size_t) [with Derived = malloy::server::http::connection_plain; boost::beast::error_code = boost::system::error_code; std::size_t = long long unsigned int]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection.hpp:198:21:   required from 'void malloy::server::http::connection<Derived>::do_read() [with Derived = malloy::server::http::connection_plain]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/http/connection_plain.hpp:65:40:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::basic_string_view<char, std::char_traits<char> >&}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::basic_string_view<char, std::char_traits<char> >&}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [17]; Args = {std::basic_string_view<char, std::char_traits<char> >&}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:99:12:   required from 'void spdlog::logger::trace(const FormatString&, Args&& ...) [with FormatString = char [17]; Args = {std::basic_string_view<char, std::char_traits<char> >&}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.hpp:481:32:   required from 'bool malloy::server::router::add_regex_endpoint(malloy::server::router::method_type, std::string_view, Func&&, ExtraInfo&&) [with bool UsesCaptures = false; Body = malloy::http::response<boost::beast::http::basic_string_body<char> >; ExtraInfo = malloy::server::detail::default_route_filter; Func = malloy::server::router::add_preflight(std::string_view, malloy::server::http::preflight_config)::<lambda(const auto:96&)>; malloy::server::router::method_type = boost::beast::http::verb; std::string_view = std::basic_string_view<char>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.hpp:265:71:   required from 'bool malloy::server::router::add(malloy::server::router::method_type, std::string_view, Func&&, ExtraInfo&&) [with ExtraInfo = malloy::server::detail::default_route_filter; Func = malloy::server::router::add_preflight(std::string_view, malloy::server::http::preflight_config)::<lambda(const auto:96&)>; malloy::server::router::method_type = boost::beast::http::verb; std::string_view = std::basic_string_view<char>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.hpp:273:23:   required from 'auto malloy::server::router::add(malloy::server::router::method_type, std::string_view, Func&&) [with Func = malloy::server::router::add_preflight(std::string_view, malloy::server::http::preflight_config)::<lambda(const auto:96&)>; malloy::server::router::method_type = boost::beast::http::verb; std::string_view = std::basic_string_view<char>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.cpp:120:5:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::basic_string_view<char, std::char_traits<char> >&, const char*}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::basic_string_view<char, std::char_traits<char> >&, const char*}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [39]; Args = {std::basic_string_view<char, std::char_traits<char> >&, const char*}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:123:12:   required from 'void spdlog::logger::error(const FormatString&, Args&& ...) [with FormatString = char [39]; Args = {std::basic_string_view<char, std::char_traits<char> >&, const char*}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.hpp:489:36:   required from 'bool malloy::server::router::add_regex_endpoint(malloy::server::router::method_type, std::string_view, Func&&, ExtraInfo&&) [with bool UsesCaptures = false; Body = malloy::http::response<boost::beast::http::basic_string_body<char> >; ExtraInfo = malloy::server::detail::default_route_filter; Func = malloy::server::router::add_preflight(std::string_view, malloy::server::http::preflight_config)::<lambda(const auto:96&)>; malloy::server::router::method_type = boost::beast::http::verb; std::string_view = std::basic_string_view<char>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.hpp:265:71:   required from 'bool malloy::server::router::add(malloy::server::router::method_type, std::string_view, Func&&, ExtraInfo&&) [with ExtraInfo = malloy::server::detail::default_route_filter; Func = malloy::server::router::add_preflight(std::string_view, malloy::server::http::preflight_config)::<lambda(const auto:96&)>; malloy::server::router::method_type = boost::beast::http::verb; std::string_view = std::basic_string_view<char>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.hpp:273:23:   required from 'auto malloy::server::router::add(malloy::server::router::method_type, std::string_view, Func&&) [with Func = malloy::server::router::add_preflight(std::string_view, malloy::server::http::preflight_config)::<lambda(const auto:96&)>; malloy::server::router::method_type = boost::beast::http::verb; std::string_view = std::basic_string_view<char>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\routing\router.cpp:120:5:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::basic_string_view<char, std::char_traits<char> >, const std::basic_string_view<char, std::char_traits<char> >&}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::basic_string_view<char, std::char_traits<char> >, const std::basic_string_view<char, std::char_traits<char> >&}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [27]; Args = {std::basic_string_view<char, std::char_traits<char> >, const std::basic_string_view<char, std::char_traits<char> >&}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:99:12:   required from 'void spdlog::logger::trace(const FormatString&, Args&& ...) [with FormatString = char [27]; Args = {std::basic_string_view<char, std::char_traits<char> >, const std::basic_string_view<char, std::char_traits<char> >&}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/routing/router.hpp:423:28:   required from 'void malloy::server::router::handle_ws_request(malloy::server::router::req_generator<Derived>&, const std::shared_ptr<malloy::websocket::connection<false> >&) [with Derived = malloy::server::http::connection_plain; malloy::server::router::req_generator<Derived> = std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/routing/router.hpp:356:43:   required from 'void malloy::server::router::handle_request(const std::filesystem::__cxx11::path&, malloy::server::router::req_generator<Derived>&, Connection&&) [with bool isWebsocket = true; Derived = malloy::server::http::connection_plain; Connection = std::shared_ptr<malloy::websocket::connection<false> >&; malloy::server::router::req_generator<Derived> = std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_detector.cpp:68:47:   required from 'void router_adaptor<Derived>::send_msg(const std::filesystem::__cxx11::path&, const req_t&, auto:94) [with bool isWs = true; auto:94 = std::shared_ptr<malloy::websocket::connection<false> >; Derived = malloy::server::http::connection_plain; router_adaptor<Derived>::req_t = std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_detector.cpp:60:23:   required from 'void router_adaptor<Derived>::websocket(const std::filesystem::__cxx11::path&, const req_t&, const std::shared_ptr<malloy::websocket::connection<false> >&) [with Derived = malloy::server::http::connection_plain; router_adaptor<Derived>::req_t = std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_detector.cpp:59:10:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [29]; Args = {std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:99:12:   required from 'void spdlog::logger::trace(const FormatString&, Args&& ...) [with FormatString = char [29]; Args = {std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/routing/router.hpp:378:32:   required from 'void malloy::server::router::handle_http_request(const std::filesystem::__cxx11::path&, malloy::server::router::req_generator<Derived>&, const connection_t&) [with Derived = malloy::server::http::connection_plain; malloy::server::router::req_generator<Derived> = std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>; malloy::server::http::connection_t = std::variant<std::shared_ptr<malloy::server::http::connection_plain> >]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/routing/router.hpp:358:45:   required from 'void malloy::server::router::handle_request(const std::filesystem::__cxx11::path&, malloy::server::router::req_generator<Derived>&, Connection&&) [with bool isWebsocket = false; Derived = malloy::server::http::connection_plain; Connection = std::variant<std::shared_ptr<malloy::server::http::connection_plain> >&; malloy::server::router::req_generator<Derived> = std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_detector.cpp:68:47:   required from 'void router_adaptor<Derived>::send_msg(const std::filesystem::__cxx11::path&, const req_t&, auto:94) [with bool isWs = false; auto:94 = std::variant<std::shared_ptr<malloy::server::http::connection_plain> >; Derived = malloy::server::http::connection_plain; router_adaptor<Derived>::req_t = std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_detector.cpp:63:24:   required from 'void router_adaptor<Derived>::http(const std::filesystem::__cxx11::path&, const req_t&, router_adaptor<Derived>::conn_t) [with Derived = malloy::server::http::connection_plain; router_adaptor<Derived>::req_t = std::shared_ptr<malloy::server::http::connection<malloy::server::http::connection_plain>::request_generator>; router_adaptor<Derived>::conn_t = const std::variant<std::shared_ptr<malloy::server::http::connection_plain> >&; malloy::server::http::connection_t = std::variant<std::shared_ptr<malloy::server::http::connection_plain> >]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_detector.cpp:62:10:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
mingw32-make[3]: *** [_deps\malloy-build\lib\malloy\server\CMakeFiles\malloy-server.dir\build.make:114: _deps/malloy-build/lib/malloy/server/CMakeFiles/malloy-server.dir/controller.cpp.obj] Error 1
mingw32-make[3]: *** [_deps\malloy-build\lib\malloy\server\CMakeFiles\malloy-server.dir\build.make:72: _deps/malloy-build/lib/malloy/server/CMakeFiles/malloy-server.dir/http/connection_detector.cpp.obj] Error 1
mingw32-make[3]: *** [_deps\malloy-build\lib\malloy\server\CMakeFiles\malloy-server.dir\build.make:100: _deps/malloy-build/lib/malloy/server/CMakeFiles/malloy-server.dir/routing/router.cpp.obj] Error 1
mingw32-make[2]: *** [CMakeFiles\Makefile2:1661: _deps/malloy-build/lib/malloy/server/CMakeFiles/malloy-server.dir/all] Error 2
mingw32-make[2]: *** Waiting for unfinished jobs....
mingw32-make[1]: *** [CMakeFiles\Makefile2:4018: tools/server/CMakeFiles/elx-server.dir/rule] Error 2
mingw32-make: *** [Makefile:1436: elx-server] Error 2

This is how I include malloy in that project using FetchContent():

FetchContent_Declare(
    malloy
    GIT_REPOSITORY https://github.com/tectu/malloy
    GIT_TAG        main
)
FetchContent_GetProperties(malloy)
if(NOT malloy_POPULATED)
    FetchContent_Populate(malloy)
    set(MALLOY_BUILD_EXAMPLES OFF CACHE INTERNAL "")
    set(MALLOY_BUILD_TESTS OFF CACHE INTERNAL "")
    set(MALLOY_FEATURE_CLIENT ON CACHE INTERNAL "")
    set(MALLOY_FEATURE_SERVER ON CACHE INTERNAL "")
    set(MALLOY_FEATURE_HTML OFF CACHE INTERNAL "")
    set(MALLOY_FEATURE_TLS OFF CACHE INTERNAL "")
    add_subdirectory(${malloy_SOURCE_DIR} ${malloy_BINARY_DIR})
endif()

The application itself does also rely on spdlog and pulls it in via FetchContent(). However, that shouldn't be a problem as cmake can resolve those (and used to work well so far).

@0x00002a do you know anything about this? It seems like the fmt library is not accessible to spdlog.

0x00002a commented 3 years ago

I've run into a similar issue. I think its related to the changes in 8.0 for fmt which now checks format strings at compile time by default. Right now I'm solving it by turning off automatic dependency fetching for malloy and just pulling in an old version of spdlog. The issue is in router with log_or_throw iirc, because we take in the format string as a const char*. I'm guessing its not caught in the tests or examples because its a template and we don't use any paths which instantate it. nvm, looking at the code router::add should cause it to be instantiated... I am a little confused honestly :p

Edit: I can't repro this even explicitly calling that method in a test, but I am getting this compile error if I try and consume malloy in another project

Tectu commented 3 years ago

So we're both pretty much in the same spot here: It doesn't compile but currently no understanding as of why :p

0x00002a commented 3 years ago

I did find this (spdlog issue report) though, so I'm currently building spdlog from source to see if its the problem.

Edit: Nope, doesn't seem to. @Tectu Does everything work if you use a version of spdlog before fmt 8, e.g. 1.8.5? Your error is a little different to mine, I get this:

[...]/lib/malloy/server/routing/router.hpp: In instantiation of ‘bool malloy::server::router::log_or_throw(const std::exception&, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [32]; Args = {const char*}]’:
[...]/lib/malloy/server/routing/router.cpp:25:28:   required from here
[...]/lib/malloy/server/routing/router.hpp:558:30: error: ‘fmt’ is not a constant expression
  558 |                 m_logger->log(level, fmt, std::forward<Args>(args)...);
Tectu commented 3 years ago

Using spdlog version 1.8.5 I am still getting build errors (when building an application consuming malloy). I did set spdlog to version 1.8.5 both in the malloy dependency as well as my application itself for this test.

In file included from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/spdlog.h:14,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/core/websocket/connection.hpp:14,
                 from C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/malloy-src/lib/malloy/server/websocket/connection.hpp:3,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection.hpp:4,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_plain.hpp:3,
                 from C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_detector.cpp:2:
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h: In instantiation of 'void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = fmt::v8::basic_string_view<char>; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]':
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:87:13:   required from 'void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; spdlog::string_view_t = fmt::v8::basic_string_view<char>]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:93:12:   required from 'void spdlog::logger::log(spdlog::level::level_enum, const FormatString&, Args&& ...) [with FormatString = char [36]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:129:12:   required from 'void spdlog::logger::critical(const FormatString&, Args&& ...) [with FormatString = char [36]; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]'
C:\Users\joel\Documents\projects\elx\cmake-build-debug\_deps\malloy-src\lib\malloy\server\http\connection_detector.cpp:77:79:   required from here
C:/Users/joel/Documents/projects/elx/cmake-build-debug/_deps/spdlog-src/include/spdlog/logger.h:340:27: error: 'fmt' is not a constant expression
  340 |             fmt::format_to(buf, fmt, std::forward<Args>(args)...);
      |             ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x00002a commented 3 years ago

hmm, this is a problem because I do need 55eb2cf0fa81fefe1a6399202749810a2833a25f since I depend on fmt seperately for most of my projects. Its even weirder because I don't seem to have run into the same issue as you, any idea what the code is thats causing this?

Tectu commented 3 years ago

Honestly no idea. As you can see from the build log it is failing when compiling the malloy dependency of the application. This happens long before the code of my actual application is being compiled.

Currently no idea how to continue from here - do you have anything on your mind?

Tectu commented 3 years ago

I've been investigating a bit but I am honestly a bit out of ideas on this one...

I guess a "quick fix" for my situation(s) would be to make external FMT optional. However, that isn't really a fix and doesn't solve other usage problems like yours.

Any ideas?

0x00002a commented 3 years ago

Not really, I was thinking along the same lines of optional fmt, but I don't like it because its a "quick n dirty" fix and we can't easily reproduce the issue, or even be sure what it is.

It might be worth trying to compile with the current spdlog head, your error looks very similar to the one shown in the issue I linked earlier. log_or_throw is still an issue for me, and I'm guessing you'll run into it if this gets fixed since its still an issue even with the head spdlog, so that's what I'm going to try to fix for now :p.

Edit: Well, it appears that I only get that issue with log_or_throw if I'm using an spdlog version > 1.9.0, that is, 1.9.0 works fine but 1.9.1 or 1.9.2 fails with that issue above. Bear in mind, I'm using conan, but the fmt version pulled in by 1.9.x is 8.0.1 so I don't think this is an fmt issue. Not sure if this should be something reported on the spdlog issue tracker?

Edit2: Alright, so if I tell malloy to pull in spdlog 1.9.2 instead of 1.9.0, it also fails with the above error. So, I can now reproduce the log_or_throw issue for malloy on its own.

0x00002a commented 3 years ago

The application itself does also rely on spdlog and pulls it in via FetchContent(). However, that shouldn't be a problem as cmake can resolve those (and used to work well so far).

@Tectu Wait... so your depending on two seperate spdlogs? With your other spdlog, have you set the external fmt option? From the way malloy is pulled in there, it looks like your telling malloy to pull in its own spdlog, which will be configured to use the external fmt also pulled in by it. I'm not sure why that would cause it to be unable to find the right fmt but having multiple spdlogs floating around can't be good. Have you tried it with MALLOY_DEPENDENCY_SPDLOG_DOWNLOAD=OFF and setting SPDLOG_FMT_EXTERNAL=ON on the version you pull in separately?

I'm surprised it worked at all tbh, I kept getting redefinition of spdlog::spdlog issues which is why I added the option to disable automatic spdlog fetching in the first place :p

Tectu commented 3 years ago

I'm not at my best today and I don't want to provide wrong information - I'll get back to this once my brain is fresh again :p

Tectu commented 3 years ago

After your fix from #86 it seems that everything works well & as intended again. Honestly I'm not sure what is/was up with the different errors we were getting. I have obviously been toying around with it while investigating the issue so it's not unlikely that I left something in a state it was not supposed to be in.

Thanks for your fix!