Bug 218841 - databases/clickhouse: fails to build with system boost 1.64
Summary: databases/clickhouse: fails to build with system boost 1.64
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-ports-bugs (Nobody)
URL:
Keywords: needs-patch
Depends on:
Blocks: 222439
  Show dependency treegraph
 
Reported: 2017-04-24 10:35 UTC by Jan Beich
Modified: 2017-09-19 01:22 UTC (History)
1 user (show)

See Also:
bugzilla: maintainer-feedback? (proler)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Beich freebsd_committer 2017-04-24 10:35:52 UTC
Bug 218835 is going to land shortly after exp-run and render this port BROKEN. Can you help with investigation?

In file included from dbms/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:16:
/usr/local/include/boost/rational.hpp:207:75: error: no member named 'radix' in 'std::__1::numeric_limits<__uint128_t>'
       && (std::numeric_limits<T>::radix == std::numeric_limits<IntType>::radix)
                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
dbms/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:112:36: note: in instantiation of template class 'boost::rational<unsigned __int128>' requested here
        ostr << ASTSampleRatio::toString(x.numerator()) << "/" << ASTSampleRatio::toString(x.denominator());
                                          ^
In file included from dbms/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:16:
/usr/local/include/boost/rational.hpp:218:75: error: no member named 'radix' in 'std::__1::numeric_limits<__uint128_t>'
       && (std::numeric_limits<T>::radix == std::numeric_limits<IntType>::radix)
                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/rational.hpp:231:75: error: no member named 'radix' in 'std::__1::numeric_limits<__uint128_t>'
       && (std::numeric_limits<T>::radix == std::numeric_limits<IntType>::radix)
                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/rational.hpp:241:75: error: no member named 'radix' in 'std::__1::numeric_limits<__uint128_t>'
       && (std::numeric_limits<T>::radix == std::numeric_limits<IntType>::radix)
                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/rational.hpp:416:120: error: no member named 'digits' in 'std::__1::numeric_limits<__uint128_t>'
    BOOST_CONSTEXPR static typename boost::enable_if_c<(std::numeric_limits<T>::digits > std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == false), bool>::type is_safe_narrowing_conversion(const T& val)
                                                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/rational.hpp:424:120: error: no member named 'digits' in 'std::__1::numeric_limits<__uint128_t>'
    BOOST_CONSTEXPR static typename boost::enable_if_c<(std::numeric_limits<T>::digits > std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == true) && (std::numeric_limits<IntType>::is_signed == true), bool>::type is_safe_narrowing_conversion(const T& val)
                                                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/rational.hpp:436:120: error: no member named 'digits' in 'std::__1::numeric_limits<__uint128_t>'
    BOOST_CONSTEXPR static typename boost::enable_if_c<(std::numeric_limits<T>::digits > std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == true) && (std::numeric_limits<IntType>::is_signed == false), bool>::type is_safe_narrowing_conversion(const T& val)
                                                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/rational.hpp:444:121: error: no member named 'digits' in 'std::__1::numeric_limits<__uint128_t>'
    BOOST_CONSTEXPR static typename boost::enable_if_c<(std::numeric_limits<T>::digits <= std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == true) && (std::numeric_limits<IntType>::is_signed == false), bool>::type is_safe_narrowing_conversion(const T& val)
                                                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/rational.hpp:452:121: error: no member named 'digits' in 'std::__1::numeric_limits<__uint128_t>'
    BOOST_CONSTEXPR static typename boost::enable_if_c<(std::numeric_limits<T>::digits <= std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == false) && (std::numeric_limits<IntType>::is_signed == true), bool>::type is_safe_narrowing_conversion(const T&)
                                                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/rational.hpp:460:121: error: no member named 'digits' in 'std::__1::numeric_limits<__uint128_t>'
    BOOST_CONSTEXPR static typename boost::enable_if_c<(std::numeric_limits<T>::digits <= std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == false) && (std::numeric_limits<IntType>::is_signed == false), bool>::type is_safe_narrowing_conversion(const T&)
                                                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/rational.hpp:468:121: error: no member named 'digits' in 'std::__1::numeric_limits<__uint128_t>'
    BOOST_CONSTEXPR static typename boost::enable_if_c<(std::numeric_limits<T>::digits <= std::numeric_limits<IntType>::digits) && (std::numeric_limits<T>::is_signed == true) && (std::numeric_limits<IntType>::is_signed == true), bool>::type is_safe_narrowing_conversion(const T&)
                                                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/rational.hpp:120:82: error: no member named 'digits' in 'std::__1::numeric_limits<__uint128_t>'
         && (std::numeric_limits<FromInt>::digits <= std::numeric_limits<ToInt>::digits)
                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT'
#     define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment
                                                                       ^~~~~~~~~~
/usr/local/include/boost/rational.hpp:157:25: note: in instantiation of template class 'boost::rational_detail::is_compatible_integer<std::__1::basic_string<char>, unsigned __int128>' requested here
       rational_detail::is_compatible_integer<T, IntType>::value
                        ^
dbms/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:112:10: note: while substituting deduced template arguments into function template 'rational' [with T = std::__1::basic_string<char>]
        ostr << ASTSampleRatio::toString(x.numerator()) << "/" << ASTSampleRatio::toString(x.denominator());
                ^
In file included from dbms/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:3:
/usr/include/c++/v1/limits:147:56: error: function cannot return array type 'type' (aka 'char [2]')
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return type();}
                                                       ^
/usr/include/c++/v1/limits:441:15: note: in instantiation of template class 'std::__1::__libcpp_numeric_limits<char [2], false>' requested here
    : private __libcpp_numeric_limits<typename remove_cv<_Tp>::type>
              ^
/usr/local/include/boost/rational.hpp:119:50: note: in instantiation of template class 'std::__1::numeric_limits<char [2]>' requested here
      BOOST_STATIC_CONSTANT(bool, value = ((std::numeric_limits<FromInt>::is_specialized && std::numeric_limits<FromInt>::is_integer
                                                 ^
/usr/local/include/boost/rational.hpp:157:25: note: in instantiation of template class 'boost::rational_detail::is_compatible_integer<char [2], unsigned __int128>' requested here
       rational_detail::is_compatible_integer<T, IntType>::value
                        ^
dbms/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:112:53: note: while substituting deduced template arguments into function template 'rational' [with T = char [2]]
        ostr << ASTSampleRatio::toString(x.numerator()) << "/" << ASTSampleRatio::toString(x.denominator());
                                                           ^
In file included from dbms/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:3:
/usr/include/c++/v1/limits:148:56: error: function cannot return array type 'type' (aka 'char [2]')
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return type();}
                                                       ^
/usr/include/c++/v1/limits:149:56: error: function cannot return array type 'type' (aka 'char [2]')
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return type();}
                                                       ^
/usr/include/c++/v1/limits:158:56: error: function cannot return array type 'type' (aka 'char [2]')
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type();}
                                                       ^
/usr/include/c++/v1/limits:159:56: error: function cannot return array type 'type' (aka 'char [2]')
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type();}
                                                       ^
/usr/include/c++/v1/limits:171:56: error: function cannot return array type 'type' (aka 'char [2]')
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type();}
                                                       ^
/usr/include/c++/v1/limits:172:56: error: function cannot return array type 'type' (aka 'char [2]')
    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type();}
                                                       ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

build log: http://sprunge.us/FKGj
Comment 1 proler 2017-04-24 18:00:03 UTC
Clickhouse fails build on freebsd 10 because std lib too old (no good c++14 support).

broken flag for versions less 11 will be added here - 
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=218666
Comment 2 Jan Beich freebsd_committer 2017-04-26 13:59:01 UTC
clickhouse-1.1.54214 fails on 11.0-RELEASE amd64 similar to comment 0: http://sprunge.us/AMHD
Comment 3 proler 2017-04-26 17:48:01 UTC
Maybe its bug.
Fastest solution: force clickhouse to use bundled boost 1.62:
pass to clickhouse cmake:
-DUSE_INTERNAL_BOOST_LIBRARY=1
Comment 4 Jan Beich freebsd_committer 2017-04-26 18:36:10 UTC
Appears to help. Thank you.

patch: https://reviews.freebsd.org/differential/changeset/?ref=260289%2F259825
11.0 amd64: http://sprunge.us/hiFT
Comment 5 proler 2017-09-18 18:07:40 UTC
should be fixed with https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221690
Comment 6 Jan Beich freebsd_committer 2017-09-19 01:22:07 UTC
I confirm but boost 1.65 landing next week will break it again.