[gentoo-commits] repo/gentoo:master commit in: dev-libs/libfmt/, dev-libs/libfmt/files/
commit: c5c974e5296e07618194b761a750e112fe80dded Author: Sam James gentoo org> AuthorDate: Tue Mar 1 02:21:04 2022 + Commit: Sam James gentoo org> CommitDate: Mon Mar 7 03:22:44 2022 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c5c974e5 dev-libs/libfmt: add static assert patch Failed to build watchman w/o this upstream patch. Signed-off-by: Sam James gentoo.org> .../files/libfmt-8.1.1-fix-static-assert.patch | 76 ++ dev-libs/libfmt/libfmt-8.1.1-r1.ebuild | 40 2 files changed, 116 insertions(+) diff --git a/dev-libs/libfmt/files/libfmt-8.1.1-fix-static-assert.patch b/dev-libs/libfmt/files/libfmt-8.1.1-fix-static-assert.patch new file mode 100644 index ..9f29d7fb111c --- /dev/null +++ b/dev-libs/libfmt/files/libfmt-8.1.1-fix-static-assert.patch @@ -0,0 +1,76 @@ +https://github.com/fmtlib/fmt/commit/8f8a1a02d5c5cb967d240feee3ffac00d66f22a2.patch +https://github.com/facebook/folly/issues/1705 + +From 8f8a1a02d5c5cb967d240feee3ffac00d66f22a2 Mon Sep 17 00:00:00 2001 +From: Victor Zverovich +Date: Fri, 14 Jan 2022 13:08:14 -0800 +Subject: [PATCH] Fix handling of formattable types implicitly convertible to + pointers + +--- + include/fmt/core.h | 5 +++-- + test/core-test.cc | 21 - + 2 files changed, 23 insertions(+), 3 deletions(-) + +diff --git a/include/fmt/core.h b/include/fmt/core.h +index f2d21e5c5a..12571ce0da 100644 +--- a/include/fmt/core.h b/include/fmt/core.h +@@ -1398,10 +1398,11 @@ template struct arg_mapper { + template < + typename T, + FMT_ENABLE_IF( +- std::is_member_pointer::value || ++ std::is_pointer::value || std::is_member_pointer::value || + std::is_function::type>::value || + (std::is_convertible::value && +- !std::is_convertible::value))> ++ !std::is_convertible::value && ++ !has_formatter::value))> + FMT_CONSTEXPR auto map(const T&) -> unformattable_pointer { + return {}; + } +diff --git a/test/core-test.cc b/test/core-test.cc +index b2f2097ea1..c9eea8ffd8 100644 +--- a/test/core-test.cc b/test/core-test.cc +@@ -737,6 +737,24 @@ struct convertible_to_pointer { + operator const int*() const { return nullptr; } + }; + ++struct convertible_to_pointer_formattable { ++ operator const int*() const { return nullptr; } ++}; ++ ++FMT_BEGIN_NAMESPACE ++template <> struct formatter { ++ auto parse(format_parse_context& ctx) -> decltype(ctx.begin()) { ++return ctx.begin(); ++ } ++ ++ auto format(convertible_to_pointer_formattable, format_context& ctx) const ++ -> decltype(ctx.out()) { ++auto test = string_view("test"); ++return std::copy_n(test.data(), test.size(), ctx.out()); ++ } ++}; ++FMT_END_NAMESPACE ++ + enum class test_scoped_enum {}; + + TEST(core_test, is_formattable) { +@@ -770,11 +788,12 @@ TEST(core_test, is_formattable) { + #endif + + static_assert(!fmt::is_formattable::value, ""); ++ const auto f = convertible_to_pointer_formattable(); ++ EXPECT_EQ(fmt::format("{}", f), "test"); + + static_assert(!fmt::is_formattable::value, ""); + + struct s; +- + static_assert(!fmt::is_formattable::value, ""); + static_assert(!fmt::is_formattable::value, ""); + static_assert(!fmt::is_formattable::value, ""); + diff --git a/dev-libs/libfmt/libfmt-8.1.1-r1.ebuild b/dev-libs/libfmt/libfmt-8.1.1-r1.ebuild new file mode 100644 index ..1c6b0f4fa2dc --- /dev/null +++ b/dev-libs/libfmt/libfmt-8.1.1-r1.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +CMAKE_ECLASS=cmake +inherit cmake-multilib + +DESCRIPTION="Small, safe and fast formatting library" +HOMEPAGE="https://github.com/fmtlib/fmt; + +LICENSE="MIT" +IUSE="test" +SLOT="0/${PV}" + +if [[ ${PV} == * ]] ; then + EGIT_REPO_URI="https://github.com/fmtlib/fmt.git; + inherit git-r3 +else + SRC_URI="https://github.com/fmtlib/fmt/archive/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" + S="${WORKDIR}/fmt-${PV}" +fi + +DEPEND="" +RDEPEND="" +RESTRICT="!test? ( test )" + +PATCHES=( + "${FILESDIR}"/${P}-fix-static-assert.patch +) + +multilib_src_configure() { + local mycmakeargs=( + -DFMT_CMAKE_DIR="$(get_libdir)/cmake/fmt" + -DFMT_LIB_DIR="$(get_libdir)" + -DFMT_TEST=$(usex test) + ) + cmake_src_configure +}
[gentoo-commits] repo/gentoo:master commit in: dev-libs/libfmt/, dev-libs/libfmt/files/
commit: e88caaf664d63a663bc1843fc5742ca1c2c4215a Author: Craig Andrews gentoo org> AuthorDate: Tue Jun 22 14:41:54 2021 + Commit: Craig Andrews gentoo org> CommitDate: Tue Jun 22 14:44:25 2021 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e88caaf6 dev-libs/libfmt: do not use UDL types when UDL not used Closes: https://bugs.gentoo.org/797406 See: https://github.com/fmtlib/fmt/pull/2376 Package-Manager: Portage-3.0.20, Repoman-3.0.3 Signed-off-by: Craig Andrews gentoo.org> .../libfmt/files/libfmt-8.0.0-no-udl-define.patch | 56 ++ dev-libs/libfmt/libfmt-8.0.0-r1.ebuild | 40 2 files changed, 96 insertions(+) diff --git a/dev-libs/libfmt/files/libfmt-8.0.0-no-udl-define.patch b/dev-libs/libfmt/files/libfmt-8.0.0-no-udl-define.patch new file mode 100644 index 000..83078fa7285 --- /dev/null +++ b/dev-libs/libfmt/files/libfmt-8.0.0-no-udl-define.patch @@ -0,0 +1,56 @@ +From ab89d342b5454528bd2b46e7f22c0311906f8ca2 Mon Sep 17 00:00:00 2001 +From: "Jason A. Donenfeld" +Date: Tue, 22 Jun 2021 14:34:33 +0200 +Subject: [PATCH] format: do not use udl_{arg,formatter} return types when UDL + is not in use + +The udl_{arg,formatter} structs are only defined when +FMT_USE_USER_DEFINED_LITERALS is set, so don't try to define things that +return that struct when it's not defined. +--- + include/fmt/format.h | 9 ++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/include/fmt/format.h b/include/fmt/format.h +index 03ae1c961..92b0f0fc5 100644 +--- a/include/fmt/format.h b/include/fmt/format.h +@@ -2730,6 +2730,8 @@ extern template auto snprintf_float(long double value, + #endif // FMT_HEADER_ONLY + + FMT_END_DETAIL_NAMESPACE ++ ++#if FMT_USE_USER_DEFINED_LITERALS + inline namespace literals { + /** + \rst +@@ -2741,18 +2743,18 @@ inline namespace literals { + fmt::print("Elapsed time: {s:.2f} seconds", "s"_a=1.23); + \endrst + */ +-#if FMT_USE_NONTYPE_TEMPLATE_PARAMETERS ++# if FMT_USE_NONTYPE_TEMPLATE_PARAMETERS + template + constexpr auto operator""_a() + -> detail::udl_arg, +sizeof(Str.data) / sizeof(decltype(Str.data[0])), Str> { + return {}; + } +-#else ++# else + constexpr auto operator"" _a(const char* s, size_t) -> detail::udl_arg { + return {s}; + } +-#endif ++# endif + + /** + \rst +@@ -2769,6 +2771,7 @@ constexpr auto operator"" _format(const char* s, size_t n) + return {{s, n}}; + } + } // namespace literals ++#endif // FMT_USE_USER_DEFINED_LITERALS + + template ::value)> + inline auto vformat(const Locale& loc, string_view fmt, format_args args) diff --git a/dev-libs/libfmt/libfmt-8.0.0-r1.ebuild b/dev-libs/libfmt/libfmt-8.0.0-r1.ebuild new file mode 100644 index 000..d489205c5ab --- /dev/null +++ b/dev-libs/libfmt/libfmt-8.0.0-r1.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +CMAKE_ECLASS=cmake +inherit cmake-multilib + +DESCRIPTION="Small, safe and fast formatting library" +HOMEPAGE="https://github.com/fmtlib/fmt; + +LICENSE="MIT" +IUSE="test" +SLOT="0/$(ver_cut 1)" + +if [[ ${PV} == * ]] ; then + EGIT_REPO_URI="https://github.com/fmtlib/fmt.git; + inherit git-r3 +else + SRC_URI="https://github.com/fmtlib/fmt/archive/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86" + S="${WORKDIR}/fmt-${PV}" +fi + +DEPEND="" +RDEPEND="" +RESTRICT="!test? ( test )" + +PATCHES=( + "${FILESDIR}/${P}-no-udl-define.patch" +) + +multilib_src_configure() { + local mycmakeargs=( + -DFMT_CMAKE_DIR="$(get_libdir)/cmake/fmt" + -DFMT_LIB_DIR="$(get_libdir)" + -DFMT_TEST=$(usex test) + ) + cmake_src_configure +}
[gentoo-commits] repo/gentoo:master commit in: dev-libs/libfmt/, dev-libs/libfmt/files/
commit: 0353d2ab83670f5329c2785ad3c43c4df48ad4c2 Author: Craig Andrews gentoo org> AuthorDate: Wed Apr 8 20:31:48 2020 + Commit: Craig Andrews gentoo org> CommitDate: Wed Apr 8 21:01:27 2020 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0353d2ab dev-libs/libfmt: Fix handling of unsigned char strings in printf See: https://github.com/fmtlib/fmt/issues/1620 Package-Manager: Portage-2.3.97, Repoman-2.3.22 Signed-off-by: Craig Andrews gentoo.org> ...fmt-6.2.0-unsigned-char-strings-in-printf.patch | 46 ++ dev-libs/libfmt/libfmt-6.2.0-r1.ebuild | 40 +++ 2 files changed, 86 insertions(+) diff --git a/dev-libs/libfmt/files/libfmt-6.2.0-unsigned-char-strings-in-printf.patch b/dev-libs/libfmt/files/libfmt-6.2.0-unsigned-char-strings-in-printf.patch new file mode 100644 index 000..2ce27c83e62 --- /dev/null +++ b/dev-libs/libfmt/files/libfmt-6.2.0-unsigned-char-strings-in-printf.patch @@ -0,0 +1,46 @@ +From 7d01859ef16e6b65bc023ad8bebfedecb088bf81 Mon Sep 17 00:00:00 2001 +From: Victor Zverovich +Date: Wed, 8 Apr 2020 12:32:34 -0700 +Subject: [PATCH] Fix handling of unsigned char strings in printf + +--- + include/fmt/core.h | 8 + test/printf-test.cc | 6 ++ + 2 files changed, 14 insertions(+) + +diff --git a/include/fmt/core.h b/include/fmt/core.h +index 6df2875ac..dc10722bf 100644 +--- a/include/fmt/core.h b/include/fmt/core.h +@@ -972,6 +972,14 @@ template struct arg_mapper { + static_assert(std::is_same::value, "invalid string type"); + return reinterpret_cast(val); + } ++ FMT_CONSTEXPR const char* map(signed char* val) { ++const auto* const_val = val; ++return map(const_val); ++ } ++ FMT_CONSTEXPR const char* map(unsigned char* val) { ++const auto* const_val = val; ++return map(const_val); ++ } + + FMT_CONSTEXPR const void* map(void* val) { return val; } + FMT_CONSTEXPR const void* map(const void* val) { return val; } +diff --git a/test/printf-test.cc b/test/printf-test.cc +index 5aaa27b13..545e02aab 100644 +--- a/test/printf-test.cc b/test/printf-test.cc +@@ -447,6 +447,12 @@ TEST(PrintfTest, String) { + EXPECT_PRINTF(L"(null)", L"%10s", null_wstr); + } + ++TEST(PrintfTest, UCharString) { ++ unsigned char str[] = "test"; ++ unsigned char* pstr = str; ++ EXPECT_EQ("test", fmt::sprintf("%s", pstr)); ++} ++ + TEST(PrintfTest, Pointer) { + int n; + void* p = diff --git a/dev-libs/libfmt/libfmt-6.2.0-r1.ebuild b/dev-libs/libfmt/libfmt-6.2.0-r1.ebuild new file mode 100644 index 000..f5dcf196261 --- /dev/null +++ b/dev-libs/libfmt/libfmt-6.2.0-r1.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +CMAKE_ECLASS=cmake +inherit cmake-multilib + +DESCRIPTION="Small, safe and fast formatting library" +HOMEPAGE="https://github.com/fmtlib/fmt; + +LICENSE="MIT" +IUSE="test" +SLOT="0/$(ver_cut 1)" + +if [[ ${PV} == * ]] ; then + EGIT_REPO_URI="https://github.com/fmtlib/fmt.git; + inherit git-r3 +else + SRC_URI="https://github.com/fmtlib/fmt/archive/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" + S="${WORKDIR}/fmt-${PV}" +fi + +DEPEND="" +RDEPEND="" +RESTRICT="!test? ( test )" + +PATCHES=( + "${FILESDIR}/${P}-unsigned-char-strings-in-printf.patch" +) + +multilib_src_configure() { + local mycmakeargs=( + -DFMT_CMAKE_DIR="$(get_libdir)/cmake/fmt" + -DFMT_LIB_DIR="$(get_libdir)" + -DFMT_TEST=$(usex test) + ) + cmake_src_configure +}