Date: Sat, 28 Sep 2024 09:48:46 GMT From: Dimitry Andric <dim@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-branches@FreeBSD.org Subject: git: a9aee8de59cd - 2024Q3 - devel/libxsd-frontend: fix build with libc++ 19 Message-ID: <202409280948.48S9mkrh011602@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch 2024Q3 has been updated by dim: URL: https://cgit.FreeBSD.org/ports/commit/?id=a9aee8de59cd8992947417704a0e7d86c13d221a commit a9aee8de59cd8992947417704a0e7d86c13d221a Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2024-09-13 10:36:00 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2024-09-28 09:48:23 +0000 devel/libxsd-frontend: fix build with libc++ 19 As noted in the libc++ 19 release notes [1], std::char_traits<> is now only provided for char, char8_t, char16_t, char32_t and wchar_t, and any instantiation for other types will fail. This causes www/qt5-webengine to fail to compile with clang 19 and libc++ 19, resulting in errors similar to: /usr/include/c++/v1/string:820:42: error: implicit instantiation of undefined template 'std::char_traits<XSDFrontend::Bits::None>' 820 | static_assert(is_same<_CharT, typename traits_type::char_type>::value, | ^ /wrkdirs/usr/ports/devel/libxsd-frontend/work/libxsd-frontend-2.1.0/libxsd-frontend/xml.hxx:100:23: note: in instantiation of template class 'std::basic_string<XSDFrontend::Bits::None>' requested here 100 | NarrowString r (s); | ^ /usr/include/c++/v1/__fwd/string.h:23:29: note: template is declared here 23 | struct _LIBCPP_TEMPLATE_VIS char_traits; | ^ The `Bits::None` construct used by libxsd-frontend is meant to disable unwanted conversions, but it no longer works if `std::char_traits>` is undefined for this type. Fix it by removing the `Bits` namespace and only enabling the converting constructors if the first type of `StringTemplate` is `wchar_t`. [1] https://libcxx.llvm.org/ReleaseNotes/19.html#deprecations-and-removals PR: 281478 Approved by: maintainer timeout (2 weeks) MFH: 2024Q3 (cherry picked from commit c1c4aae636e9e8c5fc146caeb9ad734e20f97115) --- .../files/patch-libxsd-frontend_types.hxx | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/devel/libxsd-frontend/files/patch-libxsd-frontend_types.hxx b/devel/libxsd-frontend/files/patch-libxsd-frontend_types.hxx new file mode 100644 index 000000000000..6162dbf7fe56 --- /dev/null +++ b/devel/libxsd-frontend/files/patch-libxsd-frontend_types.hxx @@ -0,0 +1,62 @@ +--- libxsd-frontend/types.hxx.orig 2022-08-19 06:30:48 UTC ++++ libxsd-frontend/types.hxx +@@ -13,38 +13,13 @@ namespace XSDFrontend + { + using std::size_t; + +- namespace Bits +- { +- struct None {}; +- +- template <typename C> +- struct NarrowerChar +- { +- typedef None Type; +- }; +- +- template <> +- struct NarrowerChar<wchar_t> +- { +- typedef char Type; +- }; +- } +- + struct LIBXSD_FRONTEND_SYMEXPORT NonRepresentable: std::exception + { + virtual char const* + what () const throw (); + }; + +- template <typename C, typename NC = typename Bits::NarrowerChar<C>::Type> +- class StringTemplate; +- +- template <> +- class StringTemplate<Bits::None, Bits::None> +- { +- }; +- +- template <typename C, typename NC> ++ template <typename C, typename NC = char> + class StringTemplate : public std::basic_string<C> + { + typedef std::basic_string<C> Base; +@@ -114,16 +89,19 @@ namespace XSDFrontend + + // Conversion from the Narrower type. Experimental. + // ++ template<typename WC = C, typename = std::enable_if_t<std::is_same_v<WC, wchar_t>>> + StringTemplate (NC const* s) + { + from_narrow (s); + } + ++ template<typename WC = C, typename = std::enable_if_t<std::is_same_v<WC, wchar_t>>> + StringTemplate (StringTemplate<NC> const& other) + { + from_narrow (other.c_str ()); + } + ++ template<typename WC = C, typename = std::enable_if_t<std::is_same_v<WC, wchar_t>>> + StringTemplate (NarrowerBase const& other) + { + from_narrow (other.c_str ());
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202409280948.48S9mkrh011602>