public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: dev-libs/libfmt/, dev-libs/libfmt/files/
@ 2020-04-08 21:01 Craig Andrews
  0 siblings, 0 replies; 3+ messages in thread
From: Craig Andrews @ 2020-04-08 21:01 UTC (permalink / raw
  To: gentoo-commits

commit:     0353d2ab83670f5329c2785ad3c43c4df48ad4c2
Author:     Craig Andrews <candrews <AT> gentoo <DOT> org>
AuthorDate: Wed Apr  8 20:31:48 2020 +0000
Commit:     Craig Andrews <candrews <AT> gentoo <DOT> org>
CommitDate: Wed Apr  8 21:01:27 2020 +0000
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 <candrews <AT> 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 00000000000..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 <viz@fb.com>
+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 <typename Context> struct arg_mapper {
+     static_assert(std::is_same<char_type, char>::value, "invalid string type");
+     return reinterpret_cast<const char*>(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 = &n;

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 00000000000..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} == *9999 ]] ; 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
+}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: dev-libs/libfmt/, dev-libs/libfmt/files/
@ 2021-06-22 14:44 Craig Andrews
  0 siblings, 0 replies; 3+ messages in thread
From: Craig Andrews @ 2021-06-22 14:44 UTC (permalink / raw
  To: gentoo-commits

commit:     e88caaf664d63a663bc1843fc5742ca1c2c4215a
Author:     Craig Andrews <candrews <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 22 14:41:54 2021 +0000
Commit:     Craig Andrews <candrews <AT> gentoo <DOT> org>
CommitDate: Tue Jun 22 14:44:25 2021 +0000
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 <candrews <AT> 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 00000000000..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" <Jason@zx2c4.com>
+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>(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 <detail_exported::fixed_string Str>
+ constexpr auto operator""_a()
+     -> detail::udl_arg<remove_cvref_t<decltype(Str.data[0])>,
+                        sizeof(Str.data) / sizeof(decltype(Str.data[0])), Str> {
+   return {};
+ }
+-#else
++#  else
+ constexpr auto operator"" _a(const char* s, size_t) -> detail::udl_arg<char> {
+   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 <typename Locale, FMT_ENABLE_IF(detail::is_locale<Locale>::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 00000000000..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} == *9999 ]] ; 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
+}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: dev-libs/libfmt/, dev-libs/libfmt/files/
@ 2022-03-07  3:24 Sam James
  0 siblings, 0 replies; 3+ messages in thread
From: Sam James @ 2022-03-07  3:24 UTC (permalink / raw
  To: gentoo-commits

commit:     c5c974e5296e07618194b761a750e112fe80dded
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Mar  1 02:21:04 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Mar  7 03:22:44 2022 +0000
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 <sam <AT> 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 000000000000..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 <viz@fb.com>
+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 <typename Context> struct arg_mapper {
+   template <
+       typename T,
+       FMT_ENABLE_IF(
+-          std::is_member_pointer<T>::value ||
++          std::is_pointer<T>::value || std::is_member_pointer<T>::value ||
+           std::is_function<typename std::remove_pointer<T>::type>::value ||
+           (std::is_convertible<const T&, const void*>::value &&
+-           !std::is_convertible<const T&, const char_type*>::value))>
++           !std::is_convertible<const T&, const char_type*>::value &&
++           !has_formatter<T, Context>::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<convertible_to_pointer_formattable> {
++  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<convertible_to_pointer>::value, "");
++  const auto f = convertible_to_pointer_formattable();
++  EXPECT_EQ(fmt::format("{}", f), "test");
+ 
+   static_assert(!fmt::is_formattable<void (*)()>::value, "");
+ 
+   struct s;
+-
+   static_assert(!fmt::is_formattable<int(s::*)>::value, "");
+   static_assert(!fmt::is_formattable<int (s::*)()>::value, "");
+   static_assert(!fmt::is_formattable<test_scoped_enum>::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 000000000000..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} == *9999 ]] ; 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
+}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-03-07  3:24 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-08 21:01 [gentoo-commits] repo/gentoo:master commit in: dev-libs/libfmt/, dev-libs/libfmt/files/ Craig Andrews
  -- strict thread matches above, loose matches on Subject: below --
2021-06-22 14:44 Craig Andrews
2022-03-07  3:24 Sam James

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox