*/*: [QA] Fix trivial cases of MissingTestRestrict
[gentoo.git] / dev-db / clickhouse / clickhouse-18.12.17-r1.ebuild
1 # Copyright 1999-2019 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:7
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/double-conversion[static-libs]
73                 dev-libs/capnproto[static-libs]
74                 dev-libs/libltdl[static-libs]
75                 sys-libs/libunwind:7[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-db/mysql-connector-c[static-libs]
86                 kafka? ( dev-libs/librdkafka[static-libs] )
87         )
88
89         sys-libs/libtermcap-compat
90         dev-util/patchelf
91         >=sys-devel/lld-6.0.0
92         || (
93                 >=sys-devel/gcc-7.0
94                 >=sys-devel/clang-6.0
95         )
96 "
97
98 S="${WORKDIR}/${MY_PN}-${PV}-${TYPE}"
99
100 _clang_fullversion() {
101         local ver="$1"; shift
102         set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__")
103         eval echo "$ver"
104 }
105
106 clang-fullversion() {
107         _clang_fullversion '$1.$2.$3' "$@"
108 }
109
110 clang-version() {
111         _clang_fullversion '$1.$2' "$@"
112 }
113
114 clang-major-version() {
115         _clang_fullversion '$1' "$@"
116 }
117
118 clang-minor-version() {
119         _clang_fullversion '$2' "$@"
120 }
121
122 clang-micro-version() {
123         _clang_fullversion '$3' "$@"
124 }
125
126 pkg_pretend() {
127         if [[ $(tc-getCC) == clang ]]; then
128                 if [[ $(clang-major-version) -lt 6 ]]; then
129                         eerror "Compilation with clang older than 6.0 is not supported"
130                         die "Too old clang found"
131                 fi
132                 :
133         elif [[ $(gcc-major-version) -lt 7 ]] && [[$(gcc-minor-version) -lt 2 ]]; then
134                 eerror "Compilation with gcc older than 7.2 is not supported"
135                 die "Too old gcc found"
136         fi
137 }
138
139 src_unpack() {
140         default_src_unpack
141         [[ ${PV} == 9999 ]] && return 0
142         cd "${S}/contrib" || die "failed to cd to contrib"
143         mkdir -p cctz zstd || die "failed to create directories"
144         tar --strip-components=1 -C cctz -xf "${DISTDIR}/cctz-${CCTZ_COMMIT}.tar.gz" || die "failed to unpack cctz"
145 }
146
147 src_configure() {
148         local mycmakeargs=(
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
164                 -DENABLE_ODBC=True
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
169                 -DUNBUNDLED=ON
170         )
171
172         cmake-utils_src_configure
173 }
174
175 src_install() {
176         cmake-utils_src_install
177
178         if ! use test; then
179                 rm -rf "${D}/usr/share/clickhouse-test" || die "failed to remove tests"
180         fi
181
182         if use doc; then
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"
186
187                 dodoc -r "${S}/docs/build"
188         fi
189
190         if use server; then
191                 newinitd "${FILESDIR}"/clickhouse-server.initd clickhouse-server
192                 systemd_dounit "${FILESDIR}"/clickhouse-server.service
193         fi
194 }
195
196 pkg_preinst() {
197         if use server; then
198                 enewgroup clickhouse
199                 enewuser clickhouse -1 -1 /var/lib/clickhouse clickhouse
200         fi
201 }