I am trying to build boost 1.92.0 from sources (using the same build recipe I have for boost 1.91.0 with works) but it fails with build error . I am building it for AlmaLinux 9, using GCC 13.4.0 and Python 3.12.
path/boost/1.92.0-dff58b5316b27d059d4b6dd64418175c/boost_1_92_0/libs/mpi/src/python/py_nonblocking.cpp:224:11: required from here
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/predefined_ops.h:270:24: error: no match for 'operator==' (operand types are 'boost::mpi::python::request_with_value' and 'const boost::mpi::python::request_with_value')
270 | { return *__it == _M_value; }
Any idea why 1.92 failed which 1.91.0 had no issues on AlmaLinux 8,9,10 and GCc 13 to 16.
"g++" -fvisibility-inlines-hidden -fPIC -m64 -pthread -O3 -finline-functions -Wno-inline -Wall -fvisibility=hidden -Winvalid-pch \
-DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_ATOMIC_NO_LIB=1 -DBOOST_BUILD_PCH_ENABLED \
-DBOOST_CHRONO_DYN_LINK=1 -DBOOST_CHRONO_NO_LIB=1 -DBOOST_CONTAINER_DYN_LINK=1 -DBOOST_CONTAINER_NO_LIB=1 \
-DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_DATE_TIME_NO_LINK=1 -DBOOST_EXCEPTION_NO_LIB=1 -DBOOST_FILESYSTEM_DISABLE_STATX \
-DBOOST_GRAPH_NO_LIB=1 -DBOOST_MATH_TR1_NO_LIB=1 -DBOOST_MPI_DYN_LINK=1 -DBOOST_MPI_NO_LIB=1 \
-DBOOST_MPI_PYTHON_DYN_LINK=1 -DBOOST_MPI_PYTHON_NO_LIB=1 -DBOOST_PYTHON_DYN_LINK=1 -DBOOST_PYTHON_NO_LIB \
-DBOOST_RANDOM_DYN_LINK=1 -DBOOST_RANDOM_NO_LIB=1 -DBOOST_SERIALIZATION_NO_LIB=1 -DBOOST_THREAD_BUILD_DLL=1 \
-DBOOST_THREAD_NO_LIB=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -DDATE_TIME_INLINE -DNDEBUG \
<long-list-of-include-dirs> -I"libs/config/include" \
-c -o "build-boost/boost/bin.v2/libs/mpi/build/gcc-13/release/x86_64/python-3.12/threading-multi/visibility-hidden/python/py_nonblocking.o" \
"path/boost/1.92.0-dff58b5316b27d059d4b6dd64418175c/boost_1_92_0/libs/mpi/src/python/py_nonblocking.cpp"
In file included from ./boost/python/detail/is_xxx.hpp:8,
from ./boost/python/detail/is_auto_ptr.hpp:9,
from ./boost/python/detail/copy_ctor_mutates_rhs.hpp:8,
from ./boost/python/detail/value_arg.hpp:7,
from ./boost/python/object/forward.hpp:10,
from ./boost/python/object/pointer_holder.hpp:16,
from ./boost/python/to_python_indirect.hpp:10,
from ./boost/python/converter/arg_to_python.hpp:10,
from ./boost/python/call.hpp:15,
from ./boost/python/object_core.hpp:14,
from ./boost/python/args.hpp:22,
from ./boost/python.hpp:11,
from path/boost/1.92.0-dff58b5316b27d059d4b6dd64418175c/boost_1_92_0/libs/mpi/src/python/py_nonblocking.cpp:21:
./boost/python/detail/is_auto_ptr.hpp:19:40: warning: 'template<class> class std::auto_ptr' is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
19 | BOOST_PYTHON_IS_XXX_DEF(auto_ptr, std::auto_ptr, 1)
| ^~~~~~~~
./boost/detail/is_xxx.hpp:20:4: note: in definition of macro 'BOOST_DETAIL_IS_XXX_DEF'
20 | qualified_name< BOOST_PP_ENUM_PARAMS_Z(1, nargs, T) > \
| ^~~~~~~~~~~~~~
./boost/python/detail/is_auto_ptr.hpp:19:1: note: in expansion of macro 'BOOST_PYTHON_IS_XXX_DEF'
19 | BOOST_PYTHON_IS_XXX_DEF(auto_ptr, std::auto_ptr, 1)
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/memory:78,
from ./boost/function/function_base.hpp:23,
from ./boost/function/function_template.hpp:14,
from ./boost/function/function0.hpp:10,
from ./boost/python/errors.hpp:13,
from ./boost/python/handle.hpp:11,
from ./boost/python/args_fwd.hpp:10,
from ./boost/python/args.hpp:10:
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/unique_ptr.h:65:28: note: declared here
65 | template<typename> class auto_ptr;
| ^~~~~~~~
In file included from path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/stl_algobase.h:71,
from path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/vector:62,
from path/boost/1.92.0-dff58b5316b27d059d4b6dd64418175c/boost_1_92_0/libs/mpi/src/python/py_nonblocking.cpp:17:
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Iter_equals_val<_Value>::operator()(_Iterator) [with _Iterator = __gnu_cxx::__normal_iterator<boost::mpi::python::request_with_value*, std::vector<boost::mpi::python::request_with_value> >; _Value = const boost::mpi::python::request_with_value]':
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/stl_algobase.h:2128:12: required from 'typename std::iterator_traits< <template-parameter-1-1> >::difference_type std::__count_if(_InputIterator, _InputIterator, _Predicate) [with _InputIterator = __gnu_cxx::__normal_iterator<boost::mpi::python::request_with_value*, vector<boost::mpi::python::request_with_value> >; _Predicate = __gnu_cxx::__ops::_Iter_equals_val<const boost::mpi::python::request_with_value>; typename iterator_traits< <template-parameter-1-1> >::difference_type = long int]'
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/stl_algo.h:4080:29: required from 'typename std::iterator_traits< <template-parameter-1-1> >::difference_type std::count(_IIter, _IIter, const _Tp&) [with _IIter = __gnu_cxx::__normal_iterator<boost::mpi::python::request_with_value*, vector<boost::mpi::python::request_with_value> >; _Tp = boost::mpi::python::request_with_value; typename iterator_traits< <template-parameter-1-1> >::difference_type = long int]'
./boost/python/suite/indexing/vector_indexing_suite.hpp:220:34: required from 'static size_t boost::python::vector_indexing_suite<Container, NoProxy, DerivedPolicies>::base_count(Container&, boost::python::api::object) [with Container = std::vector<boost::mpi::python::request_with_value>; bool NoProxy = false; DerivedPolicies = {anonymous}::request_list_indexing_suite; size_t = long unsigned int]'
./boost/python/suite/indexing/vector_indexing_suite.hpp:66:31: required from 'static void boost::python::vector_indexing_suite<Container, NoProxy, DerivedPolicies>::extension_def(Class&) [with Class = boost::python::class_<std::vector<boost::mpi::python::request_with_value> >; Container = std::vector<boost::mpi::python::request_with_value>; bool NoProxy = false; DerivedPolicies = {anonymous}::request_list_indexing_suite]'
./boost/python/suite/indexing/indexing_suite.hpp:190:43: required from 'void boost::python::indexing_suite<Container, DerivedPolicies, NoProxy, NoSlice, Data, Index, Key>::visit(Class&) const [with Class = boost::python::class_<std::vector<boost::mpi::python::request_with_value> >; Container = std::vector<boost::mpi::python::request_with_value>; DerivedPolicies = {anonymous}::request_list_indexing_suite; bool NoProxy = false; bool NoSlice = false; Data = boost::mpi::python::request_with_value; Index = long unsigned int; Key = boost::mpi::python::request_with_value]'
./boost/python/def_visitor.hpp:31:34: required from 'static void boost::python::def_visitor_access::visit(const V&, classT&) [with V = boost::python::def_visitor<boost::python::indexing_suite<std::vector<boost::mpi::python::request_with_value>, {anonymous}::request_list_indexing_suite, false, false, boost::mpi::python::request_with_value, long unsigned int, boost::mpi::python::request_with_value> >; classT = boost::python::class_<std::vector<boost::mpi::python::request_with_value> >]'
./boost/python/def_visitor.hpp:67:34: required from 'void boost::python::def_visitor<DerivedVisitor>::visit(classT&) const [with classT = boost::python::class_<std::vector<boost::mpi::python::request_with_value> >; DerivedVisitor = boost::python::indexing_suite<std::vector<boost::mpi::python::request_with_value>, {anonymous}::request_list_indexing_suite, false, false, boost::mpi::python::request_with_value, long unsigned int, boost::mpi::python::request_with_value>]'
./boost/python/class.hpp:221:22: required from 'boost::python::class_<T, X1, X2, X3>::self& boost::python::class_<T, X1, X2, X3>::def(const boost::python::def_visitor<Derived>&) [with Derived = boost::python::indexing_suite<std::vector<boost::mpi::python::request_with_value>, {anonymous}::request_list_indexing_suite, false, false, boost::mpi::python::request_with_value, long unsigned int, boost::mpi::python::request_with_value>; W = std::vector<boost::mpi::python::request_with_value>; X1 = boost::python::detail::not_specified; X2 = boost::python::detail::not_specified; X3 = boost::python::detail::not_specified; self = boost::python::class_<std::vector<boost::mpi::python::request_with_value> >]'
path/boost/1.92.0-dff58b5316b27d059d4b6dd64418175c/boost_1_92_0/libs/mpi/src/python/py_nonblocking.cpp:224:11: required from here
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/predefined_ops.h:270:24: error: no match for 'operator==' (operand types are 'boost::mpi::python::request_with_value' and 'const boost::mpi::python::request_with_value')
270 | { return *__it == _M_value; }
| ~~~~~~^~~~~~~~~~~
In file included from path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/stl_algobase.h:67:
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/stl_iterator.h:1217:5: note: candidate: 'template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator==(const __normal_iterator<_IteratorL, _Container>&, const __normal_iterator<_IteratorR, _Container>&)'
1217 | operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
| ^~~~~~~~
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/stl_iterator.h:1217:5: note: template argument deduction/substitution failed:
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/predefined_ops.h:270:24: note: 'boost::mpi::python::request_with_value' is not derived from 'const __gnu_cxx::__normal_iterator<_IteratorL, _Container>'
270 | { return *__it == _M_value; }
| ~~~~~~^~~~~~~~~~~
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/stl_iterator.h:1225:5: note: candidate: 'template<class _Iterator, class _Container> bool __gnu_cxx::operator==(const __normal_iterator<_Iterator, _Container>&, const __normal_iterator<_Iterator, _Container>&)'
1225 | operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
| ^~~~~~~~
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/stl_iterator.h:1225:5: note: template argument deduction/substitution failed:
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/predefined_ops.h:270:24: note: 'boost::mpi::python::request_with_value' is not derived from 'const __gnu_cxx::__normal_iterator<_Iterator, _Container>'
270 | { return *__it == _M_value; }
| ~~~~~~^~~~~~~~~~~
In file included from ./boost/mpi.hpp:22,
from path/boost/1.92.0-dff58b5316b27d059d4b6dd64418175c/boost_1_92_0/libs/mpi/src/python/py_nonblocking.cpp:24:
./boost/mpi/allocator.hpp:187:13: note: candidate: 'template<class T1, class T2> bool boost::mpi::operator==(const allocator<U>&, const allocator<T2>&)'
187 | inline bool operator==(const allocator<T1>&, const allocator<T2>&) throw()
| ^~~~~~~~
./boost/mpi/allocator.hpp:187:13: note: template argument deduction/substitution failed:
path/gcc/13.4.0-6908cfdf803923e783448096ca4f0923/include/c++/13.4.0/bits/predefined_ops.h:270:24: note: 'boost::mpi::python::request_with_value' is not derived from 'const boost::mpi::allocator<U>'
270 | { return *__it == _M_value; }
| ~~~~~~^~~~~~~~~~~
In file included from ./boost/mpi/collectives.hpp:21,
from ./boost/mpi.hpp:23:
./boost/mpi/communicator.hpp:1130:21: note: candidate: 'bool boost::mpi::operator==(const communicator&, const communicator&)'
1130 | BOOST_MPI_DECL bool operator==(const communicator& comm1, const communicator& comm2);
| ^~~~~~~~
./boost/mpi/communicator.hpp:1130:52: note: no known conversion for argument 1 from 'boost::mpi::python::request_with_value' to 'const boost::mpi::communicator&'
1130 | BOOST_MPI_DECL bool operator==(const communicator& comm1, const communicator& comm2);
| ~~~~~~~~~~~~~~~~~~~~^~~~~
In file included from ./boost/mpi.hpp:28:
./boost/mpi/group.hpp:215:21: note: candidate: 'bool boost::mpi::operator==(const group&, const group&)'
215 | BOOST_MPI_DECL bool operator==(const group& g1, const group& g2);
| ^~~~~~~~
./boost/mpi/group.hpp:215:45: note: no known conversion for argument 1 from 'boost::mpi::python::request_with_value' to 'const boost::mpi::group&'
215 | BOOST_MPI_DECL bool operator==(const group& g1, const group& g2);
| ~~~~~~~~~~~~~^~
...failed gcc.compile.c++ build-boost/boost/bin.v2/libs/mpi/build/gcc-13/release/x86_64/python-3.12/threading-multi/visibility-hidden/python/py_nonblocking.o...
...updated 544 targets...
...failed updating 1 target...
gcc.compile.c++ build-boost/boost/bin.v2/libs/mpi/build/gcc-13/release/x86_64/python-3.12/threading-multi/visibility-hidden/python/py_nonblocking.o
I am trying to build boost 1.92.0 from sources (using the same build recipe I have for boost 1.91.0 with works) but it fails with build error . I am building it for AlmaLinux 9, using GCC 13.4.0 and Python 3.12.
Any idea why 1.92 failed which 1.91.0 had no issues on AlmaLinux 8,9,10 and GCc 13 to 16.
[a]