1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
6 CMAKE_MAKEFILE_GENERATOR="ninja"
8 inherit cmake-utils systemd toolchain-funcs user
10 DESCRIPTION="An OSS column-oriented database management system for real-time data analysis"
11 HOMEPAGE="https://clickhouse.yandex"
18 SRC_URI="https://github.com/yandex/${MY_PN}/archive/v${PV}-${TYPE}.zip -> ${P}.zip
19 https://github.com/google/cctz/archive/${CCTZ_COMMIT}.tar.gz -> cctz-${CCTZ_COMMIT}.tar.gz
23 IUSE="+client cpu_flags_x86_sse4_2 +server debug doc kafka mongodb mysql static test tools"
24 RESTRICT="!test? ( test )"
28 server? ( cpu_flags_x86_sse4_2 )
29 static? ( client server tools )
35 >=app-arch/lz4-1.8.0:=
36 >=app-arch/zstd-1.3.4:=
42 dev-libs/double-conversion
50 >=dev-libs/boost-1.65.0:=
52 kafka? ( dev-libs/librdkafka:= )
53 mysql? ( dev-db/mysql-connector-c:= )
63 doc? ( >=dev-python/mkdocs-1.0.1 )
65 >=app-arch/lz4-1.8.0[static-libs]
66 >=app-arch/zstd-1.3.4[static-libs]
68 sys-libs/ncurses:0=[static-libs]
69 sys-libs/readline:0=[static-libs]
71 dev-libs/capnproto[static-libs]
72 dev-libs/libltdl[static-libs]
73 sys-libs/libunwind:7[static-libs]
74 sys-libs/zlib[static-libs]
76 dev-db/unixODBC[static-libs]
79 dev-libs/icu[static-libs]
80 dev-libs/glib[static-libs]
81 >=dev-libs/boost-1.65.0[static-libs]
82 dev-libs/openssl[static-libs]
83 dev-db/mysql-connector-c[static-libs]
84 kafka? ( dev-libs/librdkafka[static-libs] )
87 sys-libs/libtermcap-compat
94 S="${WORKDIR}/${MY_PN}-${PV}-${TYPE}"
96 _clang_fullversion() {
98 set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__")
102 clang-fullversion() {
103 _clang_fullversion '$1.$2.$3' "$@"
107 _clang_fullversion '$1.$2' "$@"
110 clang-major-version() {
111 _clang_fullversion '$1' "$@"
114 clang-minor-version() {
115 _clang_fullversion '$2' "$@"
118 clang-micro-version() {
119 _clang_fullversion '$3' "$@"
123 if [[ $(tc-getCC) == clang ]]; then
124 if [[ $(clang-major-version) -lt 6 ]]; then
125 eerror "Compilation with clang older than 6.0 is not supported"
126 die "Too old clang found"
129 elif [[ $(gcc-major-version) -lt 7 ]] && [[$(gcc-minor-version) -lt 2 ]]; then
130 eerror "Compilation with gcc older than 7.2 is not supported"
131 die "Too old gcc found"
137 [[ ${PV} == 9999 ]] && return 0
138 cd "${S}/contrib" || die "failed to cd to contrib"
139 mkdir -p cctz zstd || die "failed to create directories"
140 tar --strip-components=1 -C cctz -xf "${DISTDIR}/cctz-${CCTZ_COMMIT}.tar.gz" || die "failed to unpack cctz"
145 cmake-utils_src_prepare
149 -DENABLE_POCO_MONGODB="$(usex mongodb)"
150 -DENABLE_RDKAFKA="$(usex kafka)"
151 -DENABLE_TESTS="$(usex test)"
152 -DUSE_STATIC_LIBRARIES="$(usex static)"
153 -DMAKE_STATIC_LIBRARIES="$(usex static)"
154 -DUSE_MYSQL="$(usex mysql)"
155 -DENABLE_CLICKHOUSE_SERVER="$(usex server)"
156 -DENABLE_CLICKHOUSE_CLIENT="$(usex client)"
157 -DENABLE_CLICKHOUSE_LOCAL="$(usex tools)"
158 -DENABLE_CLICKHOUSE_BENCHMARK="$(usex tools)"
159 -DENABLE_CLICKHOUSE_PERFORMANCE="$(usex tools)"
160 -DENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG="$(usex tools)"
161 -DENABLE_CLICKHOUSE_COMPRESSOR="$(usex tools)"
162 -DENABLE_CLICKHOUSE_COPIER="$(usex tools)"
163 # As of now, clickhouse fails to build if odbc is disabled
165 -DENABLE_CLICKHOUSE_ODBC_BRIDGE=True
166 -DENABLE_CLICKHOUSE_ALL=OFF
167 -DUSE_INTERNAL_SSL_LIBRARY=False
168 -DUSE_INTERNAL_CITYHASH_LIBRARY=ON # Clickhouse explicitly requires bundled patched cityhash
172 cmake-utils_src_configure
176 cmake-utils_src_install
179 rm -rf "${D}/usr/share/clickhouse-test" || die "failed to remove tests"
183 pushd "${S}/docs/tools" || die "Failed to enter docs build directory"
184 ./build.py || die "Failed to build docs"
185 popd || die "Failed to exit docs build directory"
187 dodoc -r "${S}/docs/build"
191 newinitd "${FILESDIR}"/clickhouse-server.initd-r1 clickhouse-server
192 newconfd "${FILESDIR}"/clickhouse-server.confd clickhouse-server
193 systemd_dounit "${FILESDIR}"/clickhouse-server.service
196 keepdir /var/log/clickhouse-server
197 chown clickhouse:clickhouse "${D}"/var/log/clickhouse-server
203 enewuser clickhouse -1 -1 /var/lib/clickhouse clickhouse