3 |
3 |
|
4 |
4 |
EAPI=8
|
5 |
5 |
|
6 |
|
PYTHON_COMPAT=( python3_{9..11} )
|
7 |
|
LUA_COMPAT=( lua5-3 )
|
|
6 |
PYTHON_COMPAT=( python3_{10..11} )
|
|
7 |
LUA_COMPAT=( lua5-{3..4} )
|
8 |
8 |
|
9 |
|
CMAKE_MAKEFILE_GENERATOR=emake
|
|
9 |
inherit check-reqs bash-completion-r1 cmake flag-o-matic lua-single \
|
|
10 |
python-r1 udev readme.gentoo-r1 toolchain-funcs systemd tmpfiles
|
10 |
11 |
|
11 |
|
inherit check-reqs bash-completion-r1 cmake python-r1 flag-o-matic \
|
12 |
|
lua-single udev readme.gentoo-r1 toolchain-funcs systemd tmpfiles
|
13 |
|
|
14 |
|
SRC_URI="https://download.ceph.com/tarballs/${P}.tar.gz"
|
15 |
|
KEYWORDS="~amd64 ~arm64 ~ppc64"
|
|
12 |
XSIMD_HASH="aeec9c872c8b475dedd7781336710f2dd2666cb2"
|
|
13 |
SRC_URI="
|
|
14 |
https://download.ceph.com/tarballs/${P}.tar.gz
|
|
15 |
parquet? ( https://github.com/xtensor-stack/xsimd/archive/${XSIMD_HASH}.tar.gz -> ceph-xsimd-${PV}.tar.gz )
|
|
16 |
"
|
|
17 |
KEYWORDS="amd64 ~arm64"
|
16 |
18 |
|
17 |
19 |
DESCRIPTION="Ceph distributed filesystem"
|
18 |
20 |
HOMEPAGE="https://ceph.com/"
|
... | ... | |
24 |
26 |
|
25 |
27 |
IUSE="
|
26 |
28 |
babeltrace +cephfs custom-cflags diskprediction dpdk fuse grafana
|
27 |
|
jemalloc jaeger kafka kerberos ldap lttng +mgr numa pmdk rabbitmq
|
|
29 |
jemalloc jaeger kafka kerberos ldap lttng +mgr +parquet pmdk rabbitmq
|
28 |
30 |
+radosgw rbd-rwl rbd-ssd rdma rgw-lua selinux +ssl spdk +sqlite +system-boost
|
29 |
|
systemd +tcmalloc test uring xfs zbd zfs
|
|
31 |
systemd +tcmalloc test +uring xfs zbd zfs
|
30 |
32 |
"
|
31 |
33 |
|
32 |
34 |
IUSE+="$(printf "cpu_flags_x86_%s\n" ${CPU_FLAGS_X86[@]})"
|
... | ... | |
45 |
47 |
app-shells/bash:0
|
46 |
48 |
app-misc/jq:=
|
47 |
49 |
dev-cpp/gflags:=
|
48 |
|
<dev-libs/leveldb-1.23:=[snappy,tcmalloc(-)?]
|
|
50 |
dev-lang/jsonnet:=
|
49 |
51 |
dev-libs/libaio:=
|
50 |
52 |
dev-libs/libnl:3=
|
51 |
53 |
dev-libs/libxml2:=
|
52 |
54 |
dev-libs/libevent:=
|
|
55 |
dev-libs/libutf8proc:=
|
|
56 |
dev-libs/nss:=
|
53 |
57 |
dev-libs/openssl:=
|
54 |
58 |
<dev-libs/rocksdb-6.15:=
|
|
59 |
dev-libs/thrift:=
|
55 |
60 |
dev-libs/xmlsec:=[openssl]
|
56 |
61 |
dev-cpp/yaml-cpp:=
|
57 |
|
dev-libs/nss:=
|
58 |
|
dev-libs/protobuf:=
|
|
62 |
dev-python/natsort[${PYTHON_USEDEP}]
|
|
63 |
dev-python/pyyaml[${PYTHON_USEDEP}]
|
59 |
64 |
net-dns/c-ares:=
|
60 |
65 |
net-libs/gnutls:=
|
61 |
66 |
sys-auth/oath-toolkit:=
|
... | ... | |
63 |
68 |
sys-apps/hwloc:=
|
64 |
69 |
sys-apps/keyutils:=
|
65 |
70 |
sys-apps/util-linux:=
|
66 |
|
sys-apps/util-linux
|
67 |
71 |
sys-libs/libcap-ng:=
|
68 |
72 |
sys-libs/ncurses:0=
|
69 |
73 |
sys-libs/zlib:=
|
... | ... | |
74 |
78 |
fuse? ( sys-fs/fuse:3= )
|
75 |
79 |
jemalloc? ( dev-libs/jemalloc:= )
|
76 |
80 |
!jemalloc? ( >=dev-util/google-perftools-2.6.1:= )
|
77 |
|
jaeger? ( dev-cpp/nlohmann_json:= )
|
|
81 |
jaeger? (
|
|
82 |
dev-cpp/nlohmann_json:=
|
|
83 |
dev-cpp/opentelemetry-cpp:=[jaeger]
|
|
84 |
)
|
78 |
85 |
kafka? ( dev-libs/librdkafka:= )
|
79 |
86 |
kerberos? ( virtual/krb5 )
|
80 |
87 |
ldap? ( net-nds/openldap:= )
|
81 |
88 |
lttng? ( dev-util/lttng-ust:= )
|
82 |
|
pmdk? ( dev-libs/pmdk:= )
|
|
89 |
parquet? ( dev-libs/re2:= )
|
|
90 |
pmdk? ( >=dev-libs/pmdk-1.10.0:= )
|
83 |
91 |
rabbitmq? ( net-libs/rabbitmq-c:= )
|
84 |
92 |
radosgw? (
|
85 |
93 |
dev-libs/icu:=
|
... | ... | |
91 |
99 |
spdk? ( dev-util/cunit )
|
92 |
100 |
sqlite? ( dev-db/sqlite:= )
|
93 |
101 |
system-boost? ( dev-libs/boost:=[context,python,${PYTHON_USEDEP},zlib] )
|
94 |
|
!system-boost? ( $(python_gen_impl_dep '' 3.{10..11}) )
|
95 |
102 |
uring? ( sys-libs/liburing:= )
|
96 |
103 |
xfs? ( sys-fs/xfsprogs:= )
|
97 |
104 |
zbd? ( sys-block/libzbd:= )
|
... | ... | |
149 |
156 |
dev-python/pecan[${PYTHON_USEDEP}]
|
150 |
157 |
dev-python/prettytable[${PYTHON_USEDEP}]
|
151 |
158 |
dev-python/pyopenssl[${PYTHON_USEDEP}]
|
152 |
|
dev-python/pyyaml[${PYTHON_USEDEP}]
|
153 |
159 |
dev-python/requests[${PYTHON_USEDEP}]
|
154 |
160 |
dev-python/werkzeug[${PYTHON_USEDEP}]
|
155 |
161 |
mgr? (
|
... | ... | |
170 |
176 |
${PYTHON_REQUIRED_USE}
|
171 |
177 |
${LUA_REQUIRED_USE}
|
172 |
178 |
?? ( jemalloc tcmalloc )
|
173 |
|
jaeger? ( !system-boost )
|
174 |
179 |
diskprediction? ( mgr )
|
175 |
180 |
kafka? ( radosgw )
|
176 |
181 |
mgr? ( cephfs )
|
177 |
182 |
rabbitmq? ( radosgw )
|
178 |
|
!system-boost? (
|
179 |
|
python_targets_python3_10
|
180 |
|
)
|
|
183 |
rgw-lua? ( radosgw )
|
181 |
184 |
"
|
182 |
185 |
|
183 |
186 |
RESTRICT="
|
... | ... | |
187 |
190 |
# tests need root access, and network access
|
188 |
191 |
RESTRICT+="test"
|
189 |
192 |
|
190 |
|
# create a non-debug release
|
191 |
|
CMAKE_BUILD_TYPE=RelWithDebInfo
|
192 |
|
|
193 |
193 |
# false positives unless all USE flags are on
|
194 |
194 |
CMAKE_WARN_UNUSED_CLI=no
|
195 |
195 |
|
... | ... | |
198 |
198 |
"${FILESDIR}/ceph-14.2.0-cflags.patch"
|
199 |
199 |
"${FILESDIR}/ceph-12.2.4-boost-build-none-options.patch"
|
200 |
200 |
"${FILESDIR}/ceph-16.2.2-cflags.patch"
|
201 |
|
"${FILESDIR}/ceph-16.2.8-no-virtualenvs.patch"
|
|
201 |
"${FILESDIR}/ceph-17.2.1-no-virtualenvs.patch"
|
202 |
202 |
"${FILESDIR}/ceph-13.2.2-dont-install-sysvinit-script.patch"
|
203 |
203 |
"${FILESDIR}/ceph-14.2.0-dpdk-cflags.patch"
|
204 |
|
"${FILESDIR}/ceph-14.2.0-cython-0.29.patch"
|
205 |
204 |
"${FILESDIR}/ceph-16.2.0-rocksdb-cmake.patch"
|
206 |
|
"${FILESDIR}/ceph-15.2.3-spdk-compile.patch"
|
207 |
205 |
"${FILESDIR}/ceph-16.2.0-spdk-tinfo.patch"
|
208 |
206 |
"${FILESDIR}/ceph-16.2.0-jaeger-system-boost.patch"
|
209 |
207 |
"${FILESDIR}/ceph-16.2.0-liburing.patch"
|
210 |
|
"${FILESDIR}/ceph-16.2.2-system-zstd.patch"
|
|
208 |
"${FILESDIR}/ceph-17.2.0-cyclic-deps.patch"
|
|
209 |
"${FILESDIR}/ceph-17.2.0-pybind-boost-1.74.patch"
|
|
210 |
"${FILESDIR}/ceph-17.2.0-findre2.patch"
|
|
211 |
"${FILESDIR}/ceph-17.2.0-install-dbstore.patch"
|
|
212 |
"${FILESDIR}/ceph-17.2.0-deprecated-boost.patch"
|
|
213 |
"${FILESDIR}/ceph-17.2.0-system-opentelemetry.patch"
|
211 |
214 |
"${FILESDIR}/ceph-17.2.0-fuse3.patch"
|
|
215 |
"${FILESDIR}/ceph-17.2.0-osd_class_dir.patch"
|
212 |
216 |
"${FILESDIR}/ceph-17.2.0-gcc12-header.patch"
|
213 |
|
"${FILESDIR}/ceph-16.2.10-flags.patch"
|
|
217 |
"${FILESDIR}/ceph-17.2.3-flags.patch"
|
|
218 |
"${FILESDIR}/ceph-17.2.4-cyclic-deps.patch"
|
|
219 |
# https://bugs.gentoo.org/866165
|
|
220 |
"${FILESDIR}/ceph-17.2.5-suppress-cmake-warning.patch"
|
|
221 |
"${FILESDIR}/ceph-17.2.5-gcc13-deux.patch"
|
214 |
222 |
"${FILESDIR}/ceph-17.2.5-boost-1.81.patch"
|
215 |
|
"${FILESDIR}/ceph-16.2.14-gcc13.patch"
|
|
223 |
# https://bugs.gentoo.org/901403
|
|
224 |
"${FILESDIR}/ceph-17.2.6-link-boost-context.patch"
|
|
225 |
# https://bugs.gentoo.org/905626
|
|
226 |
"${FILESDIR}/ceph-17.2.6-arrow-flatbuffers-c++14.patch"
|
|
227 |
# https://bugs.gentoo.org/868891
|
|
228 |
"${FILESDIR}/ceph-17.2.6-cmake.patch"
|
216 |
229 |
# https://bugs.gentoo.org/907739
|
217 |
230 |
"${FILESDIR}/ceph-18.2.0-cython3.patch"
|
218 |
231 |
)
|
... | ... | |
235 |
248 |
}
|
236 |
249 |
|
237 |
250 |
pkg_setup() {
|
238 |
|
if ! use system-boost; then
|
239 |
|
python_setup 3.10
|
240 |
|
else
|
241 |
|
python_setup
|
242 |
|
fi
|
|
251 |
python_setup
|
243 |
252 |
lua_setup
|
244 |
253 |
check-reqs_export_vars
|
245 |
254 |
check-reqs_pkg_setup
|
... | ... | |
267 |
276 |
sed -r -e "s:DESTINATION .+\\):DESTINATION $(get_bashcompdir)\\):" \
|
268 |
277 |
-i src/bash_completion/CMakeLists.txt || die
|
269 |
278 |
|
270 |
|
sed -e "s:objdump -p:$(tc-getOBJDUMP) -p:" -i CMakeLists.txt || die
|
271 |
|
|
272 |
|
if ! use diskprediction; then
|
273 |
|
rm -rf src/pybind/mgr/diskprediction_local || die
|
274 |
|
fi
|
|
279 |
sed -e "s:objdump -p:$(tc-getOBJDUMP) -p:" -i CMakeLists.txt || die
|
275 |
280 |
|
276 |
281 |
# force lua version to use selected version
|
277 |
282 |
local lua_version
|
... | ... | |
279 |
284 |
sed "s:find_package(Lua [0-9][.][0-9] REQUIRED):find_package(Lua ${lua_version} EXACT REQUIRED):" \
|
280 |
285 |
-i src/CMakeLists.txt
|
281 |
286 |
|
|
287 |
if use spdk; then
|
|
288 |
# https://bugs.gentoo.org/871942
|
|
289 |
sed -i 's/[#]ifndef HAVE_ARC4RANDOM/#if 0/' src/spdk/lib/iscsi/iscsi.c || die
|
|
290 |
fi
|
|
291 |
|
282 |
292 |
# remove tests that need root access
|
283 |
293 |
rm src/test/cli/ceph-authtool/cap*.t || die
|
284 |
294 |
}
|
... | ... | |
315 |
325 |
-DWITH_ZFS:BOOL=$(usex zfs)
|
316 |
326 |
-DENABLE_SHARED:BOOL=ON
|
317 |
327 |
-DALLOCATOR:STRING=$(usex tcmalloc 'tcmalloc' "$(usex jemalloc 'jemalloc' 'libc')")
|
318 |
|
-DWITH_SYSTEM_PMDK:BOOL=$(usex pmdk 'YES' "$(usex rbd-rwl)")
|
|
328 |
-DWITH_SYSTEM_PMDK:BOOL=$(usex pmdk 'YES' "$(usex rbd-rwl '')")
|
319 |
329 |
-DWITH_SYSTEM_BOOST:BOOL=$(usex system-boost)
|
320 |
330 |
-DWITH_SYSTEM_ROCKSDB:BOOL=ON
|
|
331 |
-DWITH_SYSTEM_ZSTD:BOOL=ON
|
321 |
332 |
-DWITH_RDMA:BOOL=$(usex rdma)
|
322 |
333 |
-DCMAKE_INSTALL_DOCDIR:PATH="${EPREFIX}/usr/share/doc/${PN}-${PVR}"
|
323 |
334 |
-DCMAKE_INSTALL_SYSCONFDIR:PATH="${EPREFIX}/etc"
|
... | ... | |
330 |
341 |
if [[ ${EBUILD_PHASE} == configure ]]; then
|
331 |
342 |
mycmakeargs+=(
|
332 |
343 |
-DWITH_JAEGER:BOOL=$(usex jaeger)
|
|
344 |
-DWITH_RADOSGW_SELECT_PARQUET:BOOL=$(usex parquet)
|
333 |
345 |
)
|
334 |
346 |
else
|
335 |
347 |
mycmakeargs+=(
|
336 |
348 |
-DWITH_RADOSGW_SELECT_PARQUET:BOOL=OFF
|
|
349 |
-DWITH_JAEGER:BOOL=OFF
|
|
350 |
# don't want to warn about unused CLI when reconfiguring for python
|
|
351 |
-DCMAKE_WARN_UNUSED_CLI:BOOL=OFF
|
337 |
352 |
)
|
338 |
353 |
fi
|
339 |
354 |
|
340 |
355 |
# conditionally used cmake args
|
341 |
356 |
use test && mycmakearts+=( -DWITH_SYSTEM_GTEST:BOOL=$(usex test) )
|
342 |
|
use systemd && mycmakeargs+=( -DCMAKE_INSTALL_SYSTEMD_SERVICEDIR:PATH=$(systemd_get_systemunitdir) )
|
|
357 |
use systemd && mycmakeargs+=( -DSYSTEMD_SYSTEM_UNIT_DIR:PATH=$(systemd_get_systemunitdir) )
|
343 |
358 |
|
344 |
359 |
if use amd64 || use x86; then
|
345 |
360 |
local flag
|
... | ... | |
364 |
379 |
rm -f "${BUILD_DIR:-${S}}/CMakeCache.txt" \
|
365 |
380 |
|| die "failed to remove cmake cache"
|
366 |
381 |
|
|
382 |
# hopefully this will not be necessary in the next release
|
|
383 |
use parquet && export ARROW_XSIMD_URL="file:///${DISTDIR}/ceph-xsimd-${PV}.tar.gz"
|
|
384 |
|
367 |
385 |
cmake_src_configure
|
368 |
386 |
|
369 |
387 |
# bug #630232
|
... | ... | |
378 |
396 |
}
|
379 |
397 |
|
380 |
398 |
src_compile() {
|
381 |
|
cmake_build VERBOSE=1 all
|
|
399 |
cmake_build all
|
382 |
400 |
|
383 |
401 |
# we have to do this here to prevent from building everything multiple times
|
384 |
402 |
python_copy_sources
|
... | ... | |
389 |
407 |
local CMAKE_USE_DIR="${S}"
|
390 |
408 |
ceph_src_configure
|
391 |
409 |
|
392 |
|
pushd "${BUILD_DIR}/src/pybind" >/dev/null || die
|
393 |
|
cmake_build VERBOSE=1 clean
|
394 |
|
cmake_build VERBOSE=1 all
|
395 |
|
|
396 |
|
# python modules are only compiled with "make install" so we need to do this to
|
397 |
|
# prevent doing a bunch of compilation in src_install
|
398 |
|
DESTDIR="${T}" cmake_build VERBOSE=1 install
|
399 |
|
popd >/dev/null || die
|
|
410 |
cmake_build src/pybind/CMakeFiles/cython_modules
|
400 |
411 |
}
|
401 |
412 |
|
402 |
413 |
src_install() {
|
... | ... | |
404 |
415 |
|
405 |
416 |
python_setup
|
406 |
417 |
cmake_src_install
|
|
418 |
python_optimize
|
407 |
419 |
|
408 |
420 |
find "${ED}" -name '*.la' -type f -delete || die
|
409 |
421 |
|
... | ... | |
418 |
430 |
fowners -R ceph:ceph /var/log/ceph
|
419 |
431 |
|
420 |
432 |
newinitd "${FILESDIR}/rbdmap.initd-r1" rbdmap
|
421 |
|
newinitd "${FILESDIR}/${PN}.initd-r13" ${PN}
|
|
433 |
newinitd "${FILESDIR}/${PN}.initd-r14" ${PN}
|
422 |
434 |
newconfd "${FILESDIR}/${PN}.confd-r5" ${PN}
|
423 |
435 |
|
424 |
436 |
insinto /etc/sudoers.d
|
... | ... | |
458 |
470 |
|
459 |
471 |
python_install() {
|
460 |
472 |
local CMAKE_USE_DIR="${S}"
|
461 |
|
pushd "${BUILD_DIR}/src/pybind" >/dev/null || die
|
462 |
|
DESTDIR="${ED}" cmake_build VERBOSE=1 install
|
463 |
|
popd >/dev/null || die
|
|
473 |
DESTDIR="${ED}" cmake_build src/pybind/install
|
|
474 |
DESTDIR="${ED}" cmake_build src/cephadm/install
|
464 |
475 |
|
465 |
476 |
python_scriptinto /usr/sbin
|
466 |
477 |
python_doscript src/cephadm/cephadm
|