Попытался отвязать clickhouse от poco, которая доступна и в Fedora и
в CentOS 7, дабы ускорить сборку. Получаю следующую ошибку:
/builddir/build/BUILD/ClickHouse/dbms/src/IO/InterserverWriteBuffer.cpp: In constructor 'DB::InterserverWriteBuffer::InterserverWriteBuffer(const string&, int, const string&, const string&, bool, size_t, const Poco::Timespan&, const Poco::Timespan&, const Poco::Timespan&)':
/builddir/build/BUILD/ClickHouse/dbms/src/IO/InterserverWriteBuffer.cpp:53:70: error: no matching function for call to 'Poco::Net::HTTPClientSession::setTimeout(const Poco::Timespan&, const Poco::Timespan&, const Poco::Timespan&)'
session.setTimeout(connection_timeout, send_timeout, receive_timeout);
^
In file included from /usr/include/Poco/Net/HTTPClientSession.h:24:0,
from /builddir/build/BUILD/ClickHouse/dbms/include/DB/IO/InterserverWriteBuffer.h:6,
from /builddir/build/BUILD/ClickHouse/dbms/src/IO/InterserverWriteBuffer.cpp:1:
/usr/include/Poco/Net/HTTPSession.h:56:7: note: candidate: void Poco::Net::HTTPSession::setTimeout(const Poco::Timespan&)
void setTimeout(const Poco::Timespan& timeout);
^~~~~~~~~~
/usr/include/Poco/Net/HTTPSession.h:56:7: note: candidate expects 1 argument, 3 provided
dbms/CMakeFiles/dbms.dir/build.make:929: recipe for target 'dbms/CMakeFiles/dbms.dir/src/IO/InterserverWriteBuffer.cpp.o' failed
make[2]: *** [dbms/CMakeFiles/dbms.dir/src/IO/InterserverWriteBuffer.cpp.o] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.1KBuK9 (%build)
Это происходит потому, что в файле /var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/dbms/src/IO/InterserverWriteBuffer.cpp
функция session.setTimeout()
/// устанавливаем таймаут
session.setTimeout(connection_timeout, send_timeout, receive_timeout);
Которая вызвается с тремя параметрами (connection_timeout, send_timeout, receive_timeout);
Но в Fedora 24:
<mock-chroot> sh-4.3# rpm -aqa | grep poco-devel
poco-devel-1.7.3-5.fc24.x86_64
<mock-chroot> sh-4.3#
Имеет версию 1.7.x, в которой:
[andy@ionstorm ~]$ grep -HiR "setTimeout(const" /var/lib/mock/fedora-24-x86_64/root/usr/include/Poco/*
/var/lib/mock/fedora-24-x86_64/root/usr/include/Poco/Net/FTPClientSession.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/usr/include/Poco/Net/POP3ClientSession.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/usr/include/Poco/Net/HTTPServerParams.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/usr/include/Poco/Net/HTTPSession.h: void setTimeout(const Poco::Timespan& timeout);
HTTPSession.h может вызываться только с одним параметром, а в версии libpoco (1.6.1-all (2015-08-04)), которая идет вместе с Clickhouse,
с тремя:
[andy@ionstorm ~]$ grep -HiR "setTimeout(const" /var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/contrib/libpoco/*
/var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/contrib/libpoco/Net/include/Poco/Net/FTPClientSession.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/contrib/libpoco/Net/include/Poco/Net/HTTPServerParams.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/contrib/libpoco/Net/include/Poco/Net/HTTPSession.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/contrib/libpoco/Net/include/Poco/Net/HTTPSession.h: void setTimeout(const Poco::Timespan& connection_timeout, const Poco::Timespan& send_timeout, const Poco::Timespan& receive_timeout);
в CentOS7:
$ yum info poco-devel.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
Name : poco-devel
Arch : x86_64
Version : 1.6.1
Release : 2.el7
Size : 599 k
Repo : epel/x86_64
Summary : Headers for developing programs that will use POCO
License : Boost
Description : The POCO C++ Libraries (POCO stands for POrtable COmponents)
: are open source C++ class libraries that simplify and accelerate the
: development of network-centric, portable applications in C++. The
: POCO C++ Libraries are built strictly on standard ANSI/ISO C++,
: including the standard library.
:
: This package contains the header files needed for developing
: POCO applications.
$
версия нужная, но нет в стандартном репозитории ни компилятора GCC5, ни LLVM 3.8. Шах и мат?
Пока идеи кончились. Как в Яндексе собирают этот проект, я вообще понять не могу.