On Fri, Nov 17, 2023 at 01:39:01PM -0500, Brad Smith wrote:
> On Fri, Nov 17, 2023 at 12:11:14PM +0100, Theo Buehler wrote:
> > On Wed, Nov 15, 2023 at 12:01:15PM +0000, Stuart Henderson wrote:
> > > On 2023/11/15 08:26, Otto Moerbeek wrote:
> > > > Any reason to not commit this?
> > >
> > > I didn't manage to get a bulk done before the llvm 16 carnage - here's
> > > an updated diff against -current, but it will be hard to get good
> > > testing at the moment.
> >
> > Ran this through a bulk with clang-13. Very little fallout. clang-16
> > seems to have stabilized somewhat, but it's probably better to wait a
> > bit. I'll upgrade my builder to 16 and what happens. C++ is sensitive
> > to updates...
> >
> > Some have very simple fixes which I'll commit soonish:
> >
> > graphics/simgear #include <array> -> flightgear builds
> > inputmethods/libime #include <map> -> fcitx dependencies build
> > textproc/vislcg3 #include <array> -> apertium dicts build
> >
> > A few will need some digging:
> >
> > cad/prusaslicer
> > games/freeorion
> > geo/postgis ImageMagick weirdness is this even related?
> > graphics/mapnik
> >
> > cad/prusaslicer:
> >
> > /tmp/pobj/prusaslicer-2.6.1/PrusaSlicer-version_2.6.1/src/slic3r/GUI/Plater.cpp:5313:11:
> > error: call to member function 'load_files' is ambiguous
> > if (! load_files({ into_path(filename) }).empty()) {
> > ^~~~~~~~~~
> >
> > games/freeorion
> >
> > ld: error: duplicate symbol: boost::phoenix::placeholders::uarg1
> > >>> defined at ArithmeticRules.cpp
> > >>>
> > >>> CMakeFiles/freeorionparseobj.dir/parse/ArithmeticRules.cpp.o:(boost::phoenix::placeholders::uarg1)
> > >>> defined at BuildingsParser.cpp
> > >>>
> > >>> CMakeFiles/freeorionparseobj.dir/parse/BuildingsParser.cpp.o:(.bss+0x0)
> >
> > ld: error: duplicate symbol: boost::phoenix::placeholders::uarg2
> > >>> defined at ArithmeticRules.cpp
> > >>>
> > >>> CMakeFiles/freeorionparseobj.dir/parse/ArithmeticRules.cpp.o:(boost::phoenix::placeholders::uarg2)
> > >>> defined at BuildingsParser.cpp
> > >>>
> > >>> CMakeFiles/freeorionparseobj.dir/parse/BuildingsParser.cpp.o:(.bss+0x2)
> >
> > graphics/mapnik:
> >
> > In file included from src/image_filter_grammar.cpp:24:
> > In file included from include/mapnik/image_filter_grammar_impl.hpp:29:
> > In file included from
> > /usr/local/include/boost/spirit/include/phoenix.hpp:14:
> > In file included from /usr/local/include/boost/phoenix.hpp:11:
> > In file included from /usr/local/include/boost/phoenix/phoenix.hpp:19:
> > In file included from /usr/local/include/boost/phoenix/stl.hpp:14:
> > In file included from /usr/local/include/boost/phoenix/stl/tuple.hpp:115:
> > In file included from
> > /usr/local/include/boost/preprocessor/iteration/detail/local.hpp:818:
> > /usr/local/include/boost/preprocessor/iteration/detail/limits/local_256.hpp:16:9:
> > error: no member n
> > amed 'arg1' in namespace 'boost::phoenix::placeholders'
> > BOOST_PP_LOCAL_MACRO(1)
> > ^~~~~~~~~~~~~~~~~~~~~~~
> > /usr/local/include/boost/phoenix/stl/tuple.hpp:114:71: note: expanded from
> > macro 'BOOST_PP_LOCAL_MACRO'
> > boost::phoenix::get_<(N)-1>(boost::phoenix::placeholders::arg1);
> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
> >
> > geo/postgis:
> >
> > convert: attempt to perform an operation not allowed by the security policy
> > `@generator-E9FTPr/draw0
> > ' @ error/string.c/FileToString/1020.
> > Failure return code (1) from command: convert -size 200x200 xc:none -fill
> > none -stroke "#6495ED" -st
> > rokewidth 4 -draw '@generator-E9FTPr/draw0' -flip
> > generator-E9FTPr/tmp0.pngreading styles from wkt/s
> > tyles.conf
> >
> > graphics/simgear:
> >
> > missing #include <array>
> >
> > /tmp/pobj/simgear-2020.3.17/simgear-2020.3.17/simgear/scene/viewer/Compositor.hxx:137:34:
> > error: imp
> > licit instantiation of undefined template
> > 'std::array<osg::ref_ptr<osg::Uniform>, 14>'
> > BuiltinUniforms _uniforms;
> > ^
> >
> >
> > inputmethods/libime:
> >
> > missing #inlcude <map>
> >
> > /tmp/pobj/libime-1.0.17/libime-1.0.17/tools/libime_prediction.cpp:32:10:
> > error: implicit instantiat
> > ion of undefined template 'std::array<char, 28>'
> > auto state = model.nullState();
> > ^
> > /usr/include/c++/v1/__tuple:219:64: note: template is declared here
> > template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array;
> > ^
> > 1 error generated.
> >
> > textproc/vislcg3
> >
> > missing '#include <array>:
> >
> > /tmp/pobj/vislcg3-1.3.2/cg3-1.3.2/src/inlines.hpp:766:16: error: implicit
> > instantiation of undefined
> > template 'std::array<unsigned long long, 31>'
> > constexpr auto make_array_helper(Function f,
> > std::index_sequence<Indices...>) -> std::array<typename
> > invoke_result<Function, std::size_t>::type, sizeof...(Indices)> {
>
>
>
> Attached is a patch you can add to your patches/ dir for Boost to fix a build
> issue
> with Boost::beast when building it as a dependency for downstream proecjts
> when using
> Clang 16.
Also attached is another patch to fix the issue shown by mapnik. That's been
around for a
few Boost releases but upstream still has not commited a proper fix.
https://github.com/boostorg/phoenix/issues/111
Index: boost/phoenix/stl.hpp
--- boost/phoenix/stl.hpp.orig
+++ boost/phoenix/stl.hpp
@@ -11,6 +11,5 @@
#include <boost/phoenix/stl/algorithm.hpp>
#include <boost/phoenix/stl/container.hpp>
-#include <boost/phoenix/stl/tuple.hpp>
#endif