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" <ja...@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
+}

Reply via email to