boostorg / boostorg/boost

Boost 1.92.0 build error

Open
#1,155 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
HTML
Stars
8.6k
Forks
1.9k
Avg merge
39m
Merged PRs (30d)
2

Description

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.

[a]
```
"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 \
-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 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 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 >; _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< >::difference_type std::__count_if(_InputIterator, _InputIterator, _Predicate) [with _InputIterator = __gnu_cxx::__normal_iterator >; _Predicate = __gnu_cxx::__ops::_Iter_equals_val; typename iterator_traits< >::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< >::difference_type std::count(_IIter, _IIter, const _Tp&) [with _IIter = __gnu_cxx::__normal_iterator >; _Tp = boost::mpi::python::request_with_value; typename iterator_traits< >::difference_type = long int]'
./boost/python/suite/indexing/vector_indexing_suite.hpp:220:34: required from 'static size_t boost::python::vector_indexing_suite::base_count(Container&, boost::python::api::object) [with Container = std::vector; 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::extension_def(Class&) [with Class = boost::python::class_ >; Container = std::vector; 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::visit(Class&) const [with Class = boost::python::class_ >; Container = std::vector; 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, {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_ >]'
./boost/python/def_visitor.hpp:67:34: required from 'void boost::python::def_visitor::visit(classT&) const [with classT = boost::python::class_ >; DerivedVisitor = boost::python::indexing_suite, {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_::self& boost::python::class_::def(const boost::python::def_visitor&) [with Derived = boost::python::indexing_suite, {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; X1 = boost::python::detail::not_specified; X2 = boost::python::detail::not_specified; X3 = boost::python::detail::not_specified; self = boost::python::class_ >]'
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 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 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 bool boost::mpi::operator==(const allocator&, const allocator&)'
187 | inline bool operator==(const allocator&, const allocator&) 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'
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
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in libs/mpi/src/python/py_nonblocking.cpp around line 224 and trace the request_with_value use through Boost.Python's vector indexing suite. Compare the corresponding Boost 1.91.0 source and inspect how the reported equality operation is expected to work. Done means Boost 1.92.0 MPI Python builds successfully with GCC 13.4.0 and Python 3.12 on AlmaLinux 9.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
distributed-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.