alacarte-maps / alacarte

Renderer for OpenStreetMap tiles.
https://alacarte-maps.github.io/
Other
58 stars 18 forks source link

Fix travis clang build #110

Closed Scheirle closed 6 years ago

Scheirle commented 6 years ago

This reverts commit d0f092c2cd7cfcc96d50c90b2db3a26bc0e37fe4.

Let's see if clang builds or not.

florianjacob commented 6 years ago
In file included from /home/travis/build/alacarte-maps/alacarte/src/server/eval/function_operation_node.cpp:27:
In file included from /home/travis/build/alacarte-maps/alacarte/include/server/parser/color_grammar.hpp:25:
/usr/include/boost/spirit/home/qi/string/tst_map.hpp:74:38: error: invalid use of incomplete type 'boost::spirit::qi::tst_pass_through'
            return find(first, last, tst_pass_through());
                                     ^~~~~~~~~~~~~~~~~~
/usr/include/boost/spirit/home/qi/string/tst_map.hpp:20:12: note: forward declaration of 'boost::spirit::qi::tst_pass_through'
    struct tst_pass_through; // declared in tst.hpp
           ^
[  6%] Building CXX object CMakeFiles/alacarte-obj.dir/src/utils/applications.cpp.o
1 error generated.
make[2]: *** [CMakeFiles/server-obj.dir/src/server/eval/function_operation_node.cpp.o] Error 1
make[1]: *** [CMakeFiles/server-obj.dir/all] Error 2

strange stuff… how can this work in gcc but not in clang?

Scheirle commented 6 years ago

Bug in boost: https://svn.boost.org/trac10/ticket/9468

GCC is not as strict as clang and is therefore able to compile it, because we include boost/spirit/home/qi/string/tst.hpp via mapcss_def.hpp and therefore the type is fully know before we use it.

florianjacob commented 6 years ago

Now look at who reported and provided a fix for that bug years ago, our good alacarte friend @AMDmi3 :smile:

So it seems like the boost version we use on travis is still too old to contain that fix?

florianjacob commented 6 years ago

@Scheirle comparably nice workaround! :+1: