Revert "dev-db/sqlite: version bump to 3.32.0"
[gentoo.git] / dev-db / clickhouse / clickhouse-18.10.3-r1.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5
6 CMAKE_MAKEFILE_GENERATOR="ninja"
7
8 inherit cmake-utils systemd toolchain-funcs user
9
10 DESCRIPTION="An OSS column-oriented database management system for real-time data analysis"
11 HOMEPAGE="https://clickhouse.yandex"
12 LICENSE="Apache-2.0"
13
14 MY_PN="ClickHouse"
15 TYPE="stable"
16
17 CCTZ_COMMIT="4f9776a"
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
20 "
21
22 SLOT="0/${TYPE}"
23 IUSE="+client cpu_flags_x86_sse4_2 +server debug doc kafka mongodb mysql static test tools zookeeper"
24 RESTRICT="!test? ( test )"
25 KEYWORDS="~amd64"
26
27 REQUIRED_USE="
28         server? ( cpu_flags_x86_sse4_2 )
29         static? ( client server tools )
30 "
31
32 RDEPEND="
33         dev-libs/re2:0=
34         !static? (
35                 >=app-arch/lz4-1.8.0:=
36                 >=app-arch/zstd-1.3.4:=
37                 client? (
38                         sys-libs/ncurses:0=
39                         sys-libs/readline:0=
40                 )
41
42                 dev-libs/double-conversion
43                 dev-libs/capnproto
44                 dev-libs/libltdl:0
45                 sys-libs/libunwind:0
46                 sys-libs/zlib
47                 || (
48                         dev-db/unixODBC
49                         dev-libs/poco[odbc]
50                 )
51                 dev-libs/icu:=
52                 dev-libs/glib
53                 >=dev-libs/boost-1.65.0:=
54                 dev-libs/openssl:0=
55                 dev-libs/zookeeper-c
56                 kafka? ( dev-libs/librdkafka:= )
57                 mysql? ( dev-db/mysql-connector-c:= )
58         )
59
60         >=dev-libs/poco-1.9.0
61         dev-libs/libpcre
62 "
63
64 DEPEND="${RDEPEND}
65         doc? ( >=dev-python/mkdocs-1.0.1 )
66         static? (
67                 >=app-arch/lz4-1.8.0[static-libs]
68                 >=app-arch/zstd-1.3.4[static-libs]
69                 client? (
70                         sys-libs/ncurses:0=[static-libs]
71                         sys-libs/readline:0=[static-libs]
72                 )
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]
77                 || (
78                         dev-db/unixODBC[static-libs]
79                         dev-libs/poco[odbc]
80                 )
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] )
88         )
89
90         sys-libs/libtermcap-compat
91         dev-util/patchelf
92         >=sys-devel/lld-6.0.0
93         || (
94                 >=sys-devel/gcc-7.0
95                 >=sys-devel/clang-6.0
96         )
97 "
98
99 S="${WORKDIR}/${MY_PN}-${PV}-${TYPE}"
100
101 _clang_fullversion() {
102         local ver="$1"; shift
103         set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__")
104         eval echo "$ver"
105 }
106
107 clang-fullversion() {
108         _clang_fullversion '$1.$2.$3' "$@"
109 }
110
111 clang-version() {
112         _clang_fullversion '$1.$2' "$@"
113 }
114
115 clang-major-version() {
116         _clang_fullversion '$1' "$@"
117 }
118
119 clang-minor-version() {
120         _clang_fullversion '$2' "$@"
121 }
122
123 clang-micro-version() {
124         _clang_fullversion '$3' "$@"
125 }
126
127 pkg_pretend() {
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"
132                 fi
133                 :
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"
137         fi
138 }
139
140 src_unpack() {
141         default_src_unpack
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"
146 }
147
148 src_configure() {
149         local mycmakeargs=(
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
168                 -DUNBUNDLED=ON
169         )
170
171         cmake-utils_src_configure
172 }
173
174 src_install() {
175         cmake-utils_src_install
176
177         if ! use test; then
178                 rm -rf "${D}/usr/share/clickhouse-test" || die "failed to remove tests"
179         fi
180
181         if use doc; then
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"
185
186                 dodoc -r "${S}/docs/build"
187         fi
188
189         if use server; then
190                 newinitd "${FILESDIR}"/clickhouse-server.initd clickhouse-server
191                 systemd_dounit "${FILESDIR}"/clickhouse-server.service
192         fi
193 }
194
195 pkg_preinst() {
196         if use server; then
197                 enewgroup clickhouse
198                 enewuser clickhouse -1 -1 /var/lib/clickhouse clickhouse
199         fi
200 }