<pre style='margin:0'>
Dan Villiom Podlaski Christiansen (danchr) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/349ff8e58fd8bae840472d2d056cdd5dac84289f">https://github.com/macports/macports-ports/commit/349ff8e58fd8bae840472d2d056cdd5dac84289f</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 349ff8e58fd8bae840472d2d056cdd5dac84289f
</span>Author: Dan Villiom Podlaski Christiansen <danchr@macports.org>
AuthorDate: Sat Jan 15 10:42:12 2022 +0100
<span style='display:block; white-space:pre;color:#404040;'> libfmt: apply backported patch; use ninja
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This fixes an issue that prevents building the watchman port, see:
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> https://github.com/macports/macports-ports/pull/13645
</span>---
devel/libfmt/Portfile | 7 ++-
...x-formatting-implicitly-convertible-types.patch | 72 ++++++++++++++++++++++
2 files changed, 78 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/libfmt/Portfile b/devel/libfmt/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a1a08510a7b..8234c88a734 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/libfmt/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/libfmt/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -7,7 +7,7 @@ PortGroup compiler_blacklist_versions 1.0
</span> PortGroup conflicts_build 1.0
github.setup fmtlib fmt 8.1.1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 1
</span> checksums rmd160 cd42fd80a3901e1e550e63a553345c8707ceda45 \
sha256 3d794d3cf67633b34b2771eb9f073bde87e846e0d395d254df7b211ef1ec7346 \
size 826254
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -26,8 +26,13 @@ long_description fmt (formerly cppformat) is an open-source formatting librar
</span>
conflicts_build gtest
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# see https://github.com/macports/macports-ports/pull/13645
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles fix-formatting-implicitly-convertible-types.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # tests, at least, fail if set to "MacPorts"
cmake.build_type Release
<span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.generator Ninja
</span>
compiler.cxx_standard 2011
# avoid
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/libfmt/files/fix-formatting-implicitly-convertible-types.patch b/devel/libfmt/files/fix-formatting-implicitly-convertible-types.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1d45d057ce6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/libfmt/files/fix-formatting-implicitly-convertible-types.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,72 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 8f8a1a02d5c5cb967d240feee3ffac00d66f22a2 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Victor Zverovich <viz@fb.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 14 Jan 2022 13:08:14 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Fix handling of formattable types implicitly convertible to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pointers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ include/fmt/core.h | 5 +++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test/core-test.cc | 21 ++++++++++++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 23 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/include/fmt/core.h b/include/fmt/core.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f2d21e5c5a..12571ce0da 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/include/fmt/core.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/include/fmt/core.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1398,10 +1398,11 @@ template <typename Context> struct arg_mapper {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template <
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typename T,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FMT_ENABLE_IF(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std::is_member_pointer<T>::value ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std::is_pointer<T>::value || std::is_member_pointer<T>::value ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ std::is_function<typename std::remove_pointer<T>::type>::value ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (std::is_convertible<const T&, const void*>::value &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- !std::is_convertible<const T&, const char_type*>::value))>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ !std::is_convertible<const T&, const char_type*>::value &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ !has_formatter<T, Context>::value))>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FMT_CONSTEXPR auto map(const T&) -> unformattable_pointer {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return {};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test/core-test.cc b/test/core-test.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b2f2097ea1..c9eea8ffd8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/test/core-test.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/test/core-test.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -737,6 +737,24 @@ struct convertible_to_pointer {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ operator const int*() const { return nullptr; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct convertible_to_pointer_formattable {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ operator const int*() const { return nullptr; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++FMT_BEGIN_NAMESPACE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++template <> struct formatter<convertible_to_pointer_formattable> {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ auto parse(format_parse_context& ctx) -> decltype(ctx.begin()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return ctx.begin();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ auto format(convertible_to_pointer_formattable, format_context& ctx) const
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ -> decltype(ctx.out()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ auto test = string_view("test");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return std::copy_n(test.data(), test.size(), ctx.out());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++FMT_END_NAMESPACE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum class test_scoped_enum {};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TEST(core_test, is_formattable) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -770,11 +788,12 @@ TEST(core_test, is_formattable) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert(!fmt::is_formattable<convertible_to_pointer>::value, "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const auto f = convertible_to_pointer_formattable();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ EXPECT_EQ(fmt::format("{}", f), "test");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert(!fmt::is_formattable<void (*)()>::value, "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct s;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert(!fmt::is_formattable<int(s::*)>::value, "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert(!fmt::is_formattable<int (s::*)()>::value, "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert(!fmt::is_formattable<test_scoped_enum>::value, "");
</span></pre><pre style='margin:0'>
</pre>