Gentoo Archives: gentoo-commits

From: "罗百科" <patrick@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-db/clickhouse/, dev-db/clickhouse/files/
Date: Thu, 15 Aug 2019 17:20:30
Message-Id: 1565889620.968eada1c14455fce0029e184d401e120002a010.patrick@gentoo
1 commit: 968eada1c14455fce0029e184d401e120002a010
2 Author: Patrick Lauer <patrick <AT> gentoo <DOT> org>
3 AuthorDate: Thu Aug 15 17:20:02 2019 +0000
4 Commit: 罗百科 <patrick <AT> gentoo <DOT> org>
5 CommitDate: Thu Aug 15 17:20:20 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=968eada1
7
8 dev-db/clickhouse: Improve init script, fix dependencies
9
10 Package-Manager: Portage-2.3.71, Repoman-2.3.17
11 Signed-off-by: Patrick Lauer <patrick <AT> gentoo.org>
12
13 dev-db/clickhouse/clickhouse-19.13.1.11-r1.ebuild | 205 +++++++++++++++++++++
14 dev-db/clickhouse/files/clickhouse-server.confd | 4 +
15 dev-db/clickhouse/files/clickhouse-server.initd-r1 | 23 +++
16 3 files changed, 232 insertions(+)
17
18 diff --git a/dev-db/clickhouse/clickhouse-19.13.1.11-r1.ebuild b/dev-db/clickhouse/clickhouse-19.13.1.11-r1.ebuild
19 new file mode 100644
20 index 00000000000..a2fbc773fa7
21 --- /dev/null
22 +++ b/dev-db/clickhouse/clickhouse-19.13.1.11-r1.ebuild
23 @@ -0,0 +1,205 @@
24 +# Copyright 1999-2019 Gentoo Authors
25 +# Distributed under the terms of the GNU General Public License v2
26 +
27 +EAPI=6
28 +
29 +CMAKE_MAKEFILE_GENERATOR="ninja"
30 +
31 +inherit cmake-utils systemd toolchain-funcs user
32 +
33 +DESCRIPTION="An OSS column-oriented database management system for real-time data analysis"
34 +HOMEPAGE="https://clickhouse.yandex"
35 +LICENSE="Apache-2.0"
36 +
37 +MY_PN="ClickHouse"
38 +TYPE="stable"
39 +
40 +CCTZ_COMMIT="4f9776a"
41 +SRC_URI="https://github.com/yandex/${MY_PN}/archive/v${PV}-${TYPE}.zip -> ${P}.zip
42 + https://github.com/google/cctz/archive/${CCTZ_COMMIT}.tar.gz -> cctz-${CCTZ_COMMIT}.tar.gz
43 +"
44 +
45 +SLOT="0/${TYPE}"
46 +IUSE="+client cpu_flags_x86_sse4_2 +server debug doc kafka mongodb mysql static test tools"
47 +KEYWORDS="~amd64"
48 +
49 +REQUIRED_USE="
50 + server? ( cpu_flags_x86_sse4_2 )
51 + static? ( client server tools )
52 +"
53 +
54 +RDEPEND="
55 + dev-libs/re2:0=
56 + !static? (
57 + >=app-arch/lz4-1.8.0:=
58 + >=app-arch/zstd-1.3.4:=
59 + client? (
60 + sys-libs/ncurses:0=
61 + sys-libs/readline:0=
62 + )
63 +
64 + dev-libs/double-conversion
65 + dev-libs/capnproto
66 + dev-libs/libltdl:0
67 + sys-libs/libunwind:7
68 + sys-libs/zlib
69 + dev-libs/poco[odbc]
70 + dev-libs/icu:=
71 + dev-libs/glib
72 + >=dev-libs/boost-1.65.0:=
73 + dev-libs/openssl:0=
74 + kafka? ( dev-libs/librdkafka:= )
75 + mysql? ( virtual/libmysqlclient )
76 + )
77 +
78 + >=dev-libs/poco-1.9.0
79 + dev-libs/libpcre
80 + dev-libs/jemalloc
81 + dev-libs/protobuf
82 +"
83 +
84 +DEPEND="${RDEPEND}
85 + doc? ( >=dev-python/mkdocs-1.0.1 )
86 + static? (
87 + >=app-arch/lz4-1.8.0[static-libs]
88 + >=app-arch/zstd-1.3.4[static-libs]
89 + client? (
90 + sys-libs/ncurses:0=[static-libs]
91 + sys-libs/readline:0=[static-libs]
92 + )
93 + dev-libs/double-conversion[static-libs]
94 + dev-libs/capnproto[static-libs]
95 + dev-libs/libltdl[static-libs]
96 + sys-libs/libunwind:7[static-libs]
97 + sys-libs/zlib[static-libs]
98 + || (
99 + dev-db/unixODBC[static-libs]
100 + dev-libs/poco[odbc]
101 + )
102 + dev-libs/icu[static-libs]
103 + dev-libs/glib[static-libs]
104 + >=dev-libs/boost-1.65.0[static-libs]
105 + dev-libs/openssl[static-libs]
106 + virtual/libmysqlclient[static-libs]
107 + kafka? ( dev-libs/librdkafka[static-libs] )
108 + )
109 + =dev-cpp/gtest-1.8*
110 + sys-libs/libtermcap-compat
111 + dev-util/patchelf
112 + >=sys-devel/lld-6.0.0
113 + >=sys-devel/gcc-7.0
114 + >=sys-devel/clang-6.0
115 +"
116 +
117 +S="${WORKDIR}/${MY_PN}-${PV}-${TYPE}"
118 +
119 +_clang_fullversion() {
120 + local ver="$1"; shift
121 + set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__")
122 + eval echo "$ver"
123 +}
124 +
125 +clang-fullversion() {
126 + _clang_fullversion '$1.$2.$3' "$@"
127 +}
128 +
129 +clang-version() {
130 + _clang_fullversion '$1.$2' "$@"
131 +}
132 +
133 +clang-major-version() {
134 + _clang_fullversion '$1' "$@"
135 +}
136 +
137 +clang-minor-version() {
138 + _clang_fullversion '$2' "$@"
139 +}
140 +
141 +clang-micro-version() {
142 + _clang_fullversion '$3' "$@"
143 +}
144 +
145 +pkg_pretend() {
146 + if [[ $(tc-getCC) == clang ]]; then
147 + if [[ $(clang-major-version) -lt 6 ]]; then
148 + eerror "Compilation with clang older than 6.0 is not supported"
149 + die "Too old clang found"
150 + fi
151 + :
152 + elif [[ $(gcc-major-version) -lt 7 ]] && [[$(gcc-minor-version) -lt 2 ]]; then
153 + eerror "Compilation with gcc older than 7.2 is not supported"
154 + die "Too old gcc found"
155 + fi
156 +}
157 +
158 +src_unpack() {
159 + default_src_unpack
160 + [[ ${PV} == 9999 ]] && return 0
161 + cd "${S}/contrib" || die "failed to cd to contrib"
162 + mkdir -p cctz zstd || die "failed to create directories"
163 + tar --strip-components=1 -C cctz -xf "${DISTDIR}/cctz-${CCTZ_COMMIT}.tar.gz" || die "failed to unpack cctz"
164 +}
165 +
166 +src_prepare() {
167 + eapply_user
168 + cmake-utils_src_prepare
169 +}
170 +src_configure() {
171 + local mycmakeargs=(
172 + -DENABLE_POCO_MONGODB="$(usex mongodb)"
173 + -DENABLE_RDKAFKA="$(usex kafka)"
174 + -DENABLE_TESTS="$(usex test)"
175 + -DUSE_STATIC_LIBRARIES="$(usex static)"
176 + -DMAKE_STATIC_LIBRARIES="$(usex static)"
177 + -DUSE_MYSQL="$(usex mysql)"
178 + -DENABLE_CLICKHOUSE_SERVER="$(usex server)"
179 + -DENABLE_CLICKHOUSE_CLIENT="$(usex client)"
180 + -DENABLE_CLICKHOUSE_LOCAL="$(usex tools)"
181 + -DENABLE_CLICKHOUSE_BENCHMARK="$(usex tools)"
182 + -DENABLE_CLICKHOUSE_PERFORMANCE="$(usex tools)"
183 + -DENABLE_CLICKHOUSE_EXTRACT_FROM_CONFIG="$(usex tools)"
184 + -DENABLE_CLICKHOUSE_COMPRESSOR="$(usex tools)"
185 + -DENABLE_CLICKHOUSE_COPIER="$(usex tools)"
186 + # As of now, clickhouse fails to build if odbc is disabled
187 + -DENABLE_ODBC=True
188 + -DENABLE_CLICKHOUSE_ODBC_BRIDGE=True
189 + -DENABLE_CLICKHOUSE_ALL=OFF
190 + -DUSE_INTERNAL_SSL_LIBRARY=False
191 + -DUSE_INTERNAL_CITYHASH_LIBRARY=ON # Clickhouse explicitly requires bundled patched cityhash
192 + -DUNBUNDLED=ON
193 + )
194 +
195 + cmake-utils_src_configure
196 +}
197 +
198 +src_install() {
199 + cmake-utils_src_install
200 +
201 + if ! use test; then
202 + rm -rf "${D}/usr/share/clickhouse-test" || die "failed to remove tests"
203 + fi
204 +
205 + if use doc; then
206 + pushd "${S}/docs/tools" || die "Failed to enter docs build directory"
207 + ./build.py || die "Failed to build docs"
208 + popd || die "Failed to exit docs build directory"
209 +
210 + dodoc -r "${S}/docs/build"
211 + fi
212 +
213 + if use server; then
214 + newinitd "${FILESDIR}"/clickhouse-server.initd-r1 clickhouse-server
215 + newconfd "${FILESDIR}"/clickhouse-server.confd clickhouse-server
216 + systemd_dounit "${FILESDIR}"/clickhouse-server.service
217 + fi
218 +
219 + keepdir /var/log/clickhouse-server
220 + chown clickhouse:clickhouse "${D}"/var/log/clickhouse-server
221 +}
222 +
223 +pkg_preinst() {
224 + if use server; then
225 + enewgroup clickhouse
226 + enewuser clickhouse -1 -1 /var/lib/clickhouse clickhouse
227 + fi
228 +}
229
230 diff --git a/dev-db/clickhouse/files/clickhouse-server.confd b/dev-db/clickhouse/files/clickhouse-server.confd
231 new file mode 100644
232 index 00000000000..0e7344672b4
233 --- /dev/null
234 +++ b/dev-db/clickhouse/files/clickhouse-server.confd
235 @@ -0,0 +1,4 @@
236 +user="clickhouse"
237 +group="clickhouse"
238 +logdir="/var/log/clickhouse-server"
239 +
240
241 diff --git a/dev-db/clickhouse/files/clickhouse-server.initd-r1 b/dev-db/clickhouse/files/clickhouse-server.initd-r1
242 new file mode 100644
243 index 00000000000..efc11f5e54c
244 --- /dev/null
245 +++ b/dev-db/clickhouse/files/clickhouse-server.initd-r1
246 @@ -0,0 +1,23 @@
247 +#!/sbin/openrc-run
248 +# Copyright 1999-2019 Gentoo Authors
249 +# Distributed under the terms of the GNU General Public License v2
250 +
251 +user="clickhouse"
252 +group="clickhouse"
253 +logdir="/var/log/clickhouse-server"
254 +pidfile="/run/clickhouse-server.pid"
255 +command_background=1
256 +command="/usr/bin/clickhouse-server"
257 +start_stop_daemon_args="--user ${user} --group ${group} \
258 + --chdir /etc/clickhouse-server \
259 + -1 ${logdir}/stdout.log \
260 + -2 ${logdir}/stderr.log"
261 +
262 +depend() {
263 + need net
264 + after mongodb
265 +}
266 +
267 +start_pre() {
268 + checkpath -m 0755 -o "${user}:${group}" -d "${logdir}"
269 +}