From da3e6aea0a750246e8a9120d62441c3df65faff0 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 24 Jan 2024 16:12:07 +0200 Subject: gnu: range-v3: Update to 0.12.0. * gnu/packages/cpp.scm (range-v3): Update to 0.12.0. [source]: Remove patch. * gnu/packages/patches/range-v3-build-with-gcc10.patch: Remove file. * gnu/local.mk (dist_patch_DATA): Remove it. Change-Id: I078937f9aff0da31ede8d472d8739e48bb775c55 --- gnu/local.mk | 1 - gnu/packages/cpp.scm | 7 +- .../patches/range-v3-build-with-gcc10.patch | 122 --------------------- 3 files changed, 3 insertions(+), 127 deletions(-) delete mode 100644 gnu/packages/patches/range-v3-build-with-gcc10.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index c20e93390d..43d02ee793 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1957,7 +1957,6 @@ dist_patch_DATA = \ %D%/packages/patches/qtwayland-cleanup-callbacks.patch \ %D%/packages/patches/ragel-char-signedness.patch \ %D%/packages/patches/randomjungle-disable-static-build.patch \ - %D%/packages/patches/range-v3-build-with-gcc10.patch \ %D%/packages/patches/raptor2-heap-overflow.patch \ %D%/packages/patches/ratpoints-sturm_and_rp_private.patch \ %D%/packages/patches/ratpoison-shell.patch \ diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index eeb4e6bf7b..44175231af 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -25,7 +25,7 @@ ;;; Copyright © 2021 jgart ;;; Copyright © 2021 Julien Lepiller ;;; Copyright © 2021 Disseminate Dissent -;;; Copyright © 2022, 2023 Efraim Flashner +;;; Copyright © 2022-2024 Efraim Flashner ;;; Copyright © 2022 muradm ;;; Copyright © 2022 Attila Lendvai ;;; Copyright © 2022 Arun Isaac @@ -187,7 +187,7 @@ development effort.") (define-public range-v3 (package (name "range-v3") - (version "0.11.0") + (version "0.12.0") (source (origin (method git-fetch) @@ -195,9 +195,8 @@ development effort.") (url "https://github.com/ericniebler/range-v3.git") (commit version))) (file-name (git-file-name name version)) - (patches (search-patches "range-v3-build-with-gcc10.patch")) (sha256 - (base32 "18230bg4rq9pmm5f8f65j444jpq56rld4fhmpham8q3vr1c1bdjh")))) + (base32 "0r85s5rmp5ixmik2y5y4w760pa38j1sg9hbr1fss2flibzvrf53d")))) (build-system cmake-build-system) (arguments (list diff --git a/gnu/packages/patches/range-v3-build-with-gcc10.patch b/gnu/packages/patches/range-v3-build-with-gcc10.patch deleted file mode 100644 index a5d5b33523..0000000000 --- a/gnu/packages/patches/range-v3-build-with-gcc10.patch +++ /dev/null @@ -1,122 +0,0 @@ -From 0487cca29e352e8f16bbd91fda38e76e39a0ed28 Mon Sep 17 00:00:00 2001 -From: Louis Dionne -Date: Tue, 15 Jun 2021 14:40:01 -0400 -Subject: [PATCH] Work around broken integration with latest libc++. (#1635) - -* Work around broken integration with latest libc++. - -In newer versions of libc++, the base template of std::iterator_traits -provides a member typedef called __primary_template which is an alias -to the std::iterator_traits specialization itself. This fix works with -both the old version of libc++ and the new one. - -Fixes issue #1633. - -* Fix is_std_iterator_traits_specialized_v on MSVC - -It used to pretend that std::iterator_traits is a user-defined -specialization, which isn't the case. This is due to MSVC's -iterator_traits specialization not posing as the base template. ---- - include/std/detail/associated_types.hpp | 22 +++++++++++----- - test/CMakeLists.txt | 1 + - test/bug1633.cpp | 34 +++++++++++++++++++++++++ - 3 files changed, 51 insertions(+), 6 deletions(-) - create mode 100644 test/bug1633.cpp - -diff --git a/include/std/detail/associated_types.hpp b/include/std/detail/associated_types.hpp -index b642166d4..449a3f91c 100644 ---- a/include/std/detail/associated_types.hpp -+++ b/include/std/detail/associated_types.hpp -@@ -265,11 +265,22 @@ namespace ranges - template - char is_std_iterator_traits_specialized_impl_(void *); - #elif defined(_LIBCPP_VERSION) -- template -- char ( -- &is_std_iterator_traits_specialized_impl_(std::__iterator_traits *))[2]; -+ // In older versions of libc++, the base template inherits from std::__iterator_traits. -+ template class IteratorTraitsBase, typename I, bool B> -+ char (&libcpp_iterator_traits_base_impl(IteratorTraitsBase *))[2]; -+ template class IteratorTraitsBase, typename I> -+ char libcpp_iterator_traits_base_impl(void *); -+ -+ // In newer versions, the base template has only one template parameter and provides the -+ // __primary_template typedef which aliases the iterator_traits specialization. -+ template class, typename I> -+ char (&libcpp_iterator_traits_base_impl(typename std::iterator_traits::__primary_template *))[2]; -+ template class, typename I> -+ char libcpp_iterator_traits_base_impl(void *); -+ - template -- char is_std_iterator_traits_specialized_impl_(void *); -+ auto is_std_iterator_traits_specialized_impl_(std::iterator_traits* traits) -+ -> decltype(libcpp_iterator_traits_base_impl(traits)); - #elif defined(_MSVC_STL_VERSION) - template - char (&is_std_iterator_traits_specialized_impl_( -@@ -287,14 +298,13 @@ namespace ranges - RANGES_INLINE_VAR constexpr bool is_std_iterator_traits_specialized_v = - 1 == sizeof(is_std_iterator_traits_specialized_impl_( - static_cast *>(nullptr))); -- -+#endif - // The standard iterator_traits specialization(s) do not count - // as user-specialized. This will no longer be necessary in C++20. - // This helps with `T volatile*` and `void *`. - template - RANGES_INLINE_VAR constexpr bool is_std_iterator_traits_specialized_v = - false; --#endif - } // namespace detail - /// \endcond - } // namespace ranges -diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt -index 889f314af..2c2b7c09c 100644 ---- a/test/CMakeLists.txt -+++ b/test/CMakeLists.txt -@@ -19,3 +19,4 @@ rv3_add_test(test.bug474 bug474 bug474.cpp) - rv3_add_test(test.bug566 bug566 bug566.cpp) - rv3_add_test(test.bug1322 bug1322 bug1322.cpp) - rv3_add_test(test.bug1335 bug1335 bug1335.cpp) -+rv3_add_test(test.bug1633 bug1633 bug1633.cpp) -diff --git a/test/bug1633.cpp b/test/bug1633.cpp -new file mode 100644 -index 000000000..be52420ad ---- /dev/null -+++ b/test/bug1633.cpp -@@ -0,0 +1,34 @@ -+// Range v3 library -+// -+// Use, modification and distribution is subject to the -+// Boost Software License, Version 1.0. (See accompanying -+// file LICENSE_1_0.txt or copy at -+// http://www.boost.org/LICENSE_1_0.txt) -+// -+// Project home: https://github.com/ericniebler/range-v3 -+ -+#include -+#include -+#include -+ -+struct X { }; -+ -+namespace std { -+ template<> struct iterator_traits { }; -+} -+ -+struct Y { -+ using difference_type = std::ptrdiff_t; -+ using value_type = int; -+ using pointer = int*; -+ using reference = int&; -+ using iterator_category = std::forward_iterator_tag; -+}; -+ -+static_assert(ranges::detail::is_std_iterator_traits_specialized_v, ""); -+static_assert(!ranges::detail::is_std_iterator_traits_specialized_v, ""); -+static_assert(!ranges::detail::is_std_iterator_traits_specialized_v, ""); -+ -+int main() -+{ -+} -- cgit v1.2.3