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"
19 SRC_URI="https://github.com/yandex/${MY_PN}/archive/v${PV}-${TYPE}.tar.gz -> ${P}.tar.gz
20 https://github.com/google/cctz/archive/${CCTZ_COMMIT}.tar.gz -> cctz-${CCTZ_COMMIT}.tar.gz
24 IUSE="+client cpu_flags_x86_sse4_2 +server debug doc kafka mongodb mysql static test tools zookeeper"
25 RESTRICT="!test? ( test )"
29 server? ( cpu_flags_x86_sse4_2 )
30 static? ( client server tools )
36 >=app-arch/lz4-1.8.0:=
37 >=app-arch/zstd-1.3.4:=
43 dev-libs/double-conversion
54 >=dev-libs/boost-1.65.0:=
57 kafka? ( dev-libs/librdkafka:= )
58 mysql? ( dev-db/mysql-connector-c:= )
66 doc? ( >=dev-python/mkdocs-0.17.3 )
68 >=app-arch/lz4-1.8.0[static-libs]
69 >=app-arch/zstd-1.3.4[static-libs]
71 sys-libs/ncurses:0=[static-libs]
72 sys-libs/readline:0=[static-libs]
74 dev-libs/capnproto[static-libs]
75 dev-libs/libltdl[static-libs]
76 sys-libs/libunwind:7[static-libs]
77 sys-libs/zlib[static-libs]
79 dev-db/unixODBC[static-libs]
82 dev-libs/icu[static-libs]
83 dev-libs/glib[static-libs]
84 >=dev-libs/boost-1.65.0[static-libs]
85 dev-libs/openssl[static-libs]
86 dev-libs/zookeeper-c[static-libs]
87 dev-db/mysql-connector-c[static-libs]
88 kafka? ( dev-libs/librdkafka[static-libs] )
91 sys-libs/libtermcap-compat
100 S="${WORKDIR}/${MY_PN}-${PV}-${TYPE}"
102 _clang_fullversion() {
103 local ver="$1"; shift
104 set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__")
108 clang-fullversion() {
109 _clang_fullversion '$1.$2.$3' "$@"
113 _clang_fullversion '$1.$2' "$@"
116 clang-major-version() {
117 _clang_fullversion '$1' "$@"
120 clang-minor-version() {
121 _clang_fullversion '$2' "$@"
124 clang-micro-version() {
125 _clang_fullversion '$3' "$@"
129 if [[ $(tc-getCC) == clang ]]; then
130 if [[ $(clang-major-version) -lt 6 ]]; then
131 eerror "Compilation with clang older than 6.0 is not supported"
132 die "Too old clang found"
135 elif [[ $(gcc-major-version) -lt 7 ]] && [[$(gcc-minor-version) -lt 2 ]]; then
136 eerror "Compilation with gcc older than 7.2 is not supported"
137 die "Too old gcc found"
143 [[ ${PV} == 9999 ]] && return 0
144 cd "${S}/contrib" || die "failed to cd to contrib"
145 mkdir -p cctz zookeeper zstd || die "failed to create directories"
146 tar --strip-components=1 -C cctz -xf "${DISTDIR}/cctz-${CCTZ_COMMIT}.tar.gz" || die "failed to unpack cctz"
151 -DENABLE_POCO_MONGODB="$(usex mongodb)"
152 -DENABLE_RDKAFKA="$(usex kafka)"
153 -DENABLE_TESTS="$(usex test)"
154 -DUSE_STATIC_LIBRARIES="$(usex static)"
155 -DMAKE_STATIC_LIBRARIES="$(usex static)"
156 -DUSE_MYSQL="$(usex mysql)"
157 -DENABLE_CLICKHOUSE_SERVER="$(usex server)"
158 -DENABLE_CLICKHOUSE_CLIENT="$(usex client)"
159 -DENABLE_CLICKHOUSE_LOCAL="$(usex tools)"
160 -DENABLE_CLICKHOUSE_BENCHMARK="$(usex tools)"
161 -DENABLE_CLICKHOUSE_PERFORMANCE="$(usex tools)"
162 -DENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG="$(usex tools)"
163 -DENABLE_CLICKHOUSE_COMPRESSOR="$(usex tools)"
164 -DENABLE_CLICKHOUSE_COPIER="$(usex tools)"
165 -DENABLE_CLICKHOUSE_COPIER="$(usex tools)"
166 -DENABLE_CLICKHOUSE_ALL=OFF
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