Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#997289: range-v3: FTBFS: concepts.hpp:455:5: error: satisfaction of atomic constraint ‘requires(T& t, T& u) {(concepts::<unnamed>::swap)(t, u);} [with T = S]’ depends on itself

2 views
Skip to first unread message

Lucas Nussbaum

unread,
Oct 23, 2021, 3:40:08 PM10/23/21
to
Source: range-v3
Version: 0.11.0-1
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> cd /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/test/algorithm && /usr/bin/c++ -I/<<PKGBUILDDIR>>/include -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -DNDEBUG -std=c++14 -Wall -Wextra -Werror -fdiagnostics-show-template-tree -ftemplate-backtrace-limit=0 -fomit-frame-pointer -Ofast -fstrict-aliasing -ffast-math -fsized-deallocation -DRANGES_CXX_ALIGNED_NEW=0 -fconcepts -pedantic -pedantic-errors -Wno-padded -Wno-old-style-cast -Wno-noexcept-type -MD -MT test/algorithm/CMakeFiles/alg.set_difference6.dir/set_difference6.cpp.o -MF CMakeFiles/alg.set_difference6.dir/set_difference6.cpp.o.d -o CMakeFiles/alg.set_difference6.dir/set_difference6.cpp.o -c /<<PKGBUILDDIR>>/test/algorithm/set_difference6.cpp
> In file included from /<<PKGBUILDDIR>>/include/range/v3/utility/any.hpp:23,
> from /<<PKGBUILDDIR>>/include/range/v3/utility.hpp:17,
> from /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/headers/range/v3/utility.cpp:1:
> /<<PKGBUILDDIR>>/include/concepts/swap.hpp: In substitution of ‘template<class TRef, class T> requires (copyable<T>) && !(same_as<T, ranges::any>) ranges::any::any(TRef&&) [with TRef = std::default_delete<ranges::any::interface>&; T = std::default_delete<ranges::any::interface>]’:
> /<<PKGBUILDDIR>>/include/concepts/swap.hpp:179:22: required by substitution of ‘template<class T, class U> decltype (concepts::adl_swap_detail::swap(declval<T>(), declval<U>())) concepts::adl_swap_detail::try_adl_swap_(int) [with T = std::default_delete<ranges::any::interface>&; U = std::default_delete<ranges::any::interface>&]’
> /<<PKGBUILDDIR>>/include/concepts/swap.hpp:186:14: required from ‘constexpr const bool concepts::adl_swap_detail::is_adl_swappable_v<std::default_delete<ranges::any::interface>&>’
> /<<PKGBUILDDIR>>/include/concepts/swap.hpp:205:18: required by substitution of ‘template<class T> constexpr meta::if_c<((! is_adl_swappable_v<T&>) && is_movable_v<T>)> concepts::adl_swap_detail::swap_fn::operator()(T&, T&) const [with T = std::default_delete<ranges::any::interface>]’
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:937:9: required by substitution of ‘template<class TRef, class T> requires (copyable<T>) && !(same_as<T, ranges::any>) ranges::any::any(TRef&&) [with TRef = std::default_delete<ranges::any::interface>&; T = std::default_delete<ranges::any::interface>]’
> /usr/include/c++/11/type_traits:2700:31: required by substitution of ‘template<class _Tp, class> static std::true_type std::__swappable_details::__do_is_swappable_impl::__test(int) [with _Tp = std::default_delete<ranges::any::interface>; <template-parameter-1-2> = <missing>]’
> /usr/include/c++/11/type_traits:2724:35: required from ‘struct std::__is_swappable_impl<std::default_delete<ranges::any::interface> >’
> /usr/include/c++/11/type_traits:2735:12: required from ‘struct std::__is_swappable<std::default_delete<ranges::any::interface> >’
> /usr/include/c++/11/bits/unique_ptr.h:463:37: required from ‘void std::unique_ptr<_Tp, _Dp>::swap(std::unique_ptr<_Tp, _Dp>&) [with _Tp = ranges::any::interface; _Dp = std::default_delete<ranges::any::interface>]’
> /<<PKGBUILDDIR>>/include/range/v3/utility/any.hpp:163:22: required from here
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:937:9: required for the satisfaction of ‘swappable__requires_<T>’ [with T = std::default_delete<ranges::any::interface>]
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:943:21: required for the satisfaction of ‘swappable<T>’ [with T = std::default_delete<ranges::any::interface>]
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:1099:21: required for the satisfaction of ‘movable<T>’ [with T = std::default_delete<ranges::any::interface>]
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:1110:21: required for the satisfaction of ‘copyable<T>’ [with T = std::default_delete<ranges::any::interface>]
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:937:9: in requirements with ‘T& t’, ‘T& u’ [with T = std::default_delete<ranges::any::interface>]
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:455:5: error: satisfaction of atomic constraint ‘requires(T& t, T& u) {(concepts::<unnamed>::swap)(t, u);} [with T = S]’ depends on itself
> 455 | requires(__VA_ARGS__) CPP_REQUIRES_AUX_
> | ^
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:66:30: note: in expansion of macro ‘CPP_REQUIRES_requires’
> 66 | #define CPP_PP_CAT_(X, ...) X ## __VA_ARGS__
> | ^
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:67:30: note: in expansion of macro ‘CPP_PP_CAT_’
> 67 | #define CPP_PP_CAT(X, ...) CPP_PP_CAT_(X, __VA_ARGS__)
> | ^~~~~~~~~~~
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:448:5: note: in expansion of macro ‘CPP_PP_CAT’
> 448 | CPP_PP_CAT(CPP_REQUIRES_, REQS)
> | ^~~~~~~~~~
> /<<PKGBUILDDIR>>/include/concepts/concepts.hpp:937:9: note: in expansion of macro ‘CPP_requires’
> 937 | CPP_requires(swappable_,
> | ^~~~~~~~~~~~
> make[4]: *** [CMakeFiles/test.range.v3.headers.dir/build.make:2543: CMakeFiles/test.range.v3.headers.dir/headers/range/v3/utility.cpp.o] Error 1


The full build log is available from:
http://qa-logs.debian.net/2021/10/23/range-v3_0.11.0-1_unstable.log

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please marking it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

Michael R. Crusoe

unread,
Nov 13, 2021, 5:50:03 AM11/13/21
to
Control: tags 997289 + patch

Dear maintainer,

In hopes of preventing range-v3 and other transitive dependencies like seqan3 from
being removed from Debian Testing, I've prepared an NMU for range-v3 (versioned
as 0.11.0-1.1) and uploaded it to DELAYED/7. Please feel free to tell me if I
should delay it longer.

I've also opened a MR at https://salsa.debian.org/crusoe/range-v3 with the same contents.

Regards.

diff -Nru range-v3-0.11.0/debian/changelog range-v3-0.11.0/debian/changelog
--- range-v3-0.11.0/debian/changelog 2020-08-18 08:46:44.000000000 +0200
+++ range-v3-0.11.0/debian/changelog 2021-11-13 11:26:59.000000000 +0100
@@ -1,3 +1,10 @@
+range-v3 (0.11.0-1.1) unstable; urgency=high
+
+ * Non-maintainer upload.
+ * Apply suggested fix for gcc 11.2. Closes: #997289.
+
+ -- Michael R. Crusoe <cru...@debian.org> Sat, 13 Nov 2021 11:26:59 +0100
+
range-v3 (0.11.0-1) unstable; urgency=medium

[ Nicholas Guriev ]
diff -Nru range-v3-0.11.0/debian/patches/gcc-11.2.patch range-v3-0.11.0/debian/patches/gcc-11.2.patch
--- range-v3-0.11.0/debian/patches/gcc-11.2.patch 1970-01-01 01:00:00.000000000 +0100
+++ range-v3-0.11.0/debian/patches/gcc-11.2.patch 2021-11-13 11:20:41.000000000 +0100
@@ -0,0 +1,32 @@
+From: Enrico Seiler <enrico...@hotmail.de>
+Date: Fri, 12 Nov 2021 22:25:48 +0100
+Subject: Fix circular swap concept for gcc 11.2
+Origin: upstream, https://github.com/ericniebler/range-v3/pull/1676
+Bug: https://github.com/ericniebler/range-v3/issues/1672
+
+---
+ include/range/v3/utility/any.hpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/range/v3/utility/any.hpp b/include/range/v3/utility/any.hpp
+index 1d63eb8e2..7590829c3 100644
+--- a/include/range/v3/utility/any.hpp
++++ b/include/range/v3/utility/any.hpp
+@@ -124,7 +124,7 @@ namespace ranges
+ any() noexcept = default;
+ template(typename TRef, typename T = detail::decay_t<TRef>)(
+ /// \pre
+- requires copyable<T> AND (!same_as<T, any>)) //
++ requires copy_constructible<T> AND (!same_as<T, any>)) //
+ any(TRef && t)
+ : ptr_(new impl<T>(static_cast<TRef &&>(t)))
+ {}
+@@ -140,7 +140,7 @@ namespace ranges
+ }
+ template(typename TRef, typename T = detail::decay_t<TRef>)(
+ /// \pre
+- requires copyable<T> AND (!same_as<T, any>)) //
++ requires copy_constructible<T> AND (!same_as<T, any>)) //
+ any & operator=(TRef && t)
+ {
+ any{static_cast<TRef &&>(t)}.swap(*this);
diff -Nru range-v3-0.11.0/debian/patches/series range-v3-0.11.0/debian/patches/series
--- range-v3-0.11.0/debian/patches/series 2020-08-18 08:46:44.000000000 +0200
+++ range-v3-0.11.0/debian/patches/series 2021-11-13 11:07:54.000000000 +0100
@@ -1,2 +1,3 @@
+gcc-11.2.patch
Detection-of-concepts.patch
Workaround-premature-instantiation.patch
0 new messages