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}.tar.gz -> ${P}.tar.gz
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 zookeeper"
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
53 >=dev-libs/boost-1.65.0:=
56 kafka? ( dev-libs/librdkafka:= )
57 mysql? ( dev-db/mysql-connector-c:= )
65 doc? ( >=dev-python/mkdocs-1.0.1 )
67 >=app-arch/lz4-1.8.0[static-libs]
68 >=app-arch/zstd-1.3.4[static-libs]
70 sys-libs/ncurses:0=[static-libs]
71 sys-libs/readline:0=[static-libs]
73 dev-libs/capnproto[static-libs]
74 dev-libs/libltdl[static-libs]
75 sys-libs/libunwind:0[static-libs]
76 sys-libs/zlib[static-libs]
78 dev-db/unixODBC[static-libs]
81 dev-libs/icu[static-libs]
82 dev-libs/glib[static-libs]
83 >=dev-libs/boost-1.65.0[static-libs]
84 dev-libs/openssl[static-libs]
85 dev-libs/zookeeper-c[static-libs]
86 dev-db/mysql-connector-c[static-libs]
87 kafka? ( dev-libs/librdkafka[static-libs] )
90 sys-libs/libtermcap-compat
99 S="${WORKDIR}/${MY_PN}-${PV}-${TYPE}"
101 _clang_fullversion() {
102 local ver="$1"; shift
103 set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__")
107 clang-fullversion() {
108 _clang_fullversion '$1.$2.$3' "$@"
112 _clang_fullversion '$1.$2' "$@"
115 clang-major-version() {
116 _clang_fullversion '$1' "$@"
119 clang-minor-version() {
120 _clang_fullversion '$2' "$@"
123 clang-micro-version() {
124 _clang_fullversion '$3' "$@"
128 if [[ $(tc-getCC) == clang ]]; then
129 if [[ $(clang-major-version) -lt 6 ]]; then
130 eerror "Compilation with clang older than 6.0 is not supported"
131 die "Too old clang found"
134 elif [[ $(gcc-major-version) -lt 7 ]] && [[$(gcc-minor-version) -lt 2 ]]; then
135 eerror "Compilation with gcc older than 7.2 is not supported"
136 die "Too old gcc found"
142 [[ ${PV} == 9999 ]] && return 0
143 cd "${S}/contrib" || die "failed to cd to contrib"
144 mkdir -p cctz zookeeper zstd || die "failed to create directories"
145 tar --strip-components=1 -C cctz -xf "${DISTDIR}/cctz-${CCTZ_COMMIT}.tar.gz" || die "failed to unpack cctz"
150 -DENABLE_POCO_MONGODB="$(usex mongodb)"
151 -DENABLE_RDKAFKA="$(usex kafka)"
152 -DENABLE_TESTS="$(usex test)"
153 -DUSE_STATIC_LIBRARIES="$(usex static)"
154 -DMAKE_STATIC_LIBRARIES="$(usex static)"
155 -DUSE_MYSQL="$(usex mysql)"
156 -DENABLE_CLICKHOUSE_SERVER="$(usex server)"
157 -DENABLE_CLICKHOUSE_CLIENT="$(usex client)"
158 -DENABLE_CLICKHOUSE_LOCAL="$(usex tools)"
159 -DENABLE_CLICKHOUSE_BENCHMARK="$(usex tools)"
160 -DENABLE_CLICKHOUSE_PERFORMANCE="$(usex tools)"
161 -DENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG="$(usex tools)"
162 -DENABLE_CLICKHOUSE_COMPRESSOR="$(usex tools)"
163 -DENABLE_CLICKHOUSE_COPIER="$(usex tools)"
164 -DENABLE_CLICKHOUSE_COPIER="$(usex tools)"
165 -DENABLE_CLICKHOUSE_ALL=OFF
166 -DUSE_INTERNAL_SSL_LIBRARY=False
167 -DUSE_INTERNAL_CITYHASH_LIBRARY=ON # Clickhouse explicitly requires bundled patched cityhash
171 cmake-utils_src_configure
175 cmake-utils_src_install
178 rm -rf "${D}/usr/share/clickhouse-test" || die "failed to remove tests"
182 pushd "${S}/docs/tools" || die "Failed to enter docs build directory"
183 ./build.py || die "Failed to build docs"
184 popd || die "Failed to exit docs build directory"
186 dodoc -r "${S}/docs/build"
190 newinitd "${FILESDIR}"/clickhouse-server.initd clickhouse-server
191 systemd_dounit "${FILESDIR}"/clickhouse-server.service
198 enewuser clickhouse -1 -1 /var/lib/clickhouse clickhouse