sys-process/glances: 3.1.4.1-r1 amd64 stable, bug #720368
[gentoo.git] / dev-db / clickhouse / clickhouse-18.12.17-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"
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                 kafka? ( dev-libs/librdkafka:= )
56                 mysql? ( dev-db/mysql-connector-c:= )
57         )
58
59         >=dev-libs/poco-1.9.0
60         dev-libs/libpcre
61 "
62
63 DEPEND="${RDEPEND}
64         doc? ( >=dev-python/mkdocs-1.0.1 )
65         static? (
66                 >=app-arch/lz4-1.8.0[static-libs]
67                 >=app-arch/zstd-1.3.4[static-libs]
68                 client? (
69                         sys-libs/ncurses:0=[static-libs]
70                         sys-libs/readline:0=[static-libs]
71                 )
72                 dev-libs/capnproto[static-libs]
73                 dev-libs/libltdl[static-libs]
74                 sys-libs/libunwind:0[static-libs]
75                 sys-libs/zlib[static-libs]
76                 || (
77                         dev-db/unixODBC[static-libs]
78                         dev-libs/poco[odbc]
79                 )
80                 dev-libs/icu[static-libs]
81                 dev-libs/glib[static-libs]
82                 >=dev-libs/boost-1.65.0[static-libs]
83                 dev-libs/openssl[static-libs]
84                 dev-db/mysql-connector-c[static-libs]
85                 kafka? ( dev-libs/librdkafka[static-libs] )
86         )
87
88         sys-libs/libtermcap-compat
89         dev-util/patchelf
90         >=sys-devel/lld-6.0.0
91         || (
92                 >=sys-devel/gcc-7.0
93                 >=sys-devel/clang-6.0
94         )
95 "
96
97 S="${WORKDIR}/${MY_PN}-${PV}-${TYPE}"
98
99 _clang_fullversion() {
100         local ver="$1"; shift
101         set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__")
102         eval echo "$ver"
103 }
104
105 clang-fullversion() {
106         _clang_fullversion '$1.$2.$3' "$@"
107 }
108
109 clang-version() {
110         _clang_fullversion '$1.$2' "$@"
111 }
112
113 clang-major-version() {
114         _clang_fullversion '$1' "$@"
115 }
116
117 clang-minor-version() {
118         _clang_fullversion '$2' "$@"
119 }
120
121 clang-micro-version() {
122         _clang_fullversion '$3' "$@"
123 }
124
125 pkg_pretend() {
126         if [[ $(tc-getCC) == clang ]]; then
127                 if [[ $(clang-major-version) -lt 6 ]]; then
128                         eerror "Compilation with clang older than 6.0 is not supported"
129                         die "Too old clang found"
130                 fi
131                 :
132         elif [[ $(gcc-major-version) -lt 7 ]] && [[$(gcc-minor-version) -lt 2 ]]; then
133                 eerror "Compilation with gcc older than 7.2 is not supported"
134                 die "Too old gcc found"
135         fi
136 }
137
138 src_unpack() {
139         default_src_unpack
140         [[ ${PV} == 9999 ]] && return 0
141         cd "${S}/contrib" || die "failed to cd to contrib"
142         mkdir -p cctz zstd || die "failed to create directories"
143         tar --strip-components=1 -C cctz -xf "${DISTDIR}/cctz-${CCTZ_COMMIT}.tar.gz" || die "failed to unpack cctz"
144 }
145
146 src_configure() {
147         local mycmakeargs=(
148                 -DENABLE_POCO_MONGODB="$(usex mongodb)"
149                 -DENABLE_RDKAFKA="$(usex kafka)"
150                 -DENABLE_TESTS="$(usex test)"
151                 -DUSE_STATIC_LIBRARIES="$(usex static)"
152                 -DMAKE_STATIC_LIBRARIES="$(usex static)"
153                 -DUSE_MYSQL="$(usex mysql)"
154                 -DENABLE_CLICKHOUSE_SERVER="$(usex server)"
155                 -DENABLE_CLICKHOUSE_CLIENT="$(usex client)"
156                 -DENABLE_CLICKHOUSE_LOCAL="$(usex tools)"
157                 -DENABLE_CLICKHOUSE_BENCHMARK="$(usex tools)"
158                 -DENABLE_CLICKHOUSE_PERFORMANCE="$(usex tools)"
159                 -DENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG="$(usex tools)"
160                 -DENABLE_CLICKHOUSE_COMPRESSOR="$(usex tools)"
161                 -DENABLE_CLICKHOUSE_COPIER="$(usex tools)"
162                 # As of now, clickhouse fails to build if odbc is disabled
163                 -DENABLE_ODBC=True
164                 -DENABLE_CLICKHOUSE_ODBC_BRIDGE=True
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 }