# Contributor: John Coyle <dx9err@gmail.com>
# Contributor: Iggy Jackson <iggy@kws1.com>
# Contributor: Duncan Bellamy <dunk@denkimushi.com>
# Maintainer: Duncan Bellamy <dunk@denkimushi.com>
_pkgname=ceph
pkgver=18.2.7
pkgrel=0
_majorver=${pkgver%%.*}
pkgname=$_pkgname$_majorver
pkgdesc="Ceph is a distributed object store and file system, version $_majorver"
pkgusers="ceph"
pkggroups="ceph"
url="https://ceph.io/en/"
# 32-bit: needs more patching specific to 32bit builds
arch="all !armhf !armv7 !x86"
# https://github.com/ceph/ceph/blob/master/COPYING
license="LGPL-2.1-only AND LGPL-2.0-or-later AND GPL-2.0-only AND GPL-3.0-only AND CC-BY-SA-1.0 AND BSL-1.0 AND GPL-2.0-or-later WITH Autoconf-exception-2.0 AND BSD-3-Clause AND MIT AND custom"
depends="$pkgname-mds=$pkgver-r$pkgrel $pkgname-mgr=$pkgver-r$pkgrel $pkgname-mon=$pkgver-r$pkgrel $pkgname-osd=$pkgver-r$pkgrel"
builddir="$srcdir/ceph-$pkgver"
_lua=5.4
_base_deps="
	cryptsetup
	e2fsprogs
	logrotate
	parted
	psmisc
	xfsprogs
	"
_osd_daemon_deps="fuse snappy lz4-libs"
_osd_tools_deps="lz4-libs"
_ceph_volume_deps="$pkgname-common=$pkgver-r$pkgrel $pkgname-osd-tools=$pkgver-r$pkgrel lvm2 py3-$pkgname-common=$pkgver-r$pkgrel"
_ceph_test_deps="
	gtest-dev
	py3-coverage
	py3-flake8
	py3-nodeenv
	py3-pytest
	py3-tox
	py3-yaml
	xmlstarlet
	"
_dashboard_deps="
	py3-bcrypt-ceph
	py3-cherrypy
	py3-more-itertools
	py3-openssl
	py3-prettytable
	py3-requests
	py3-routes
	py3-yaml
	"
_mgr_modules_deps="
	py3-bcrypt-ceph
	py3-cherrypy
	py3-dateutil
	py3-natsort
	py3-openssl
	py3-pecan
	py3-requests
	py3-werkzeug
	"
_arrow_deps="apache-arrow-dev c-ares-dev re2-dev"
makedepends="
	acl-dev
	argp-standalone
	bc
	boost-dev
	btrfs-progs
	bzip2-dev
	cmake
	coreutils
	cryptsetup-dev
	cunit-dev
	curl-dev
	cython
	diffutils
	doxygen
	eudev-dev
	expat-dev
	fcgi-dev
	flex
	fuse-dev
	git
	graphviz-dev
	gperf
	isa-l-dev
	jq
	keyutils-dev
	libaio-dev
	libatomic_ops-dev
	libcap-dev
	libcap-ng-dev
	libedit-dev
	librdkafka-dev
	libnl3-dev
	libtirpc-dev
	libtool
	liburing-dev
	libxml2-dev
	linux-headers
	lua$_lua-dev
	lvm2-dev
	lz4-dev
	nasm
	nodejs
	npm
	nss-dev
	oath-toolkit-dev
	openldap-dev
	openssl-dev>3
	procps
	python3-dev
	py3-setuptools
	py3-sphinx
	rabbitmq-c-dev
	readline-dev
	rocksdb7-dev
	rpcgen
	samurai
	snappy-dev
	sqlite-dev
	userspace-rcu-dev
	util-linux-dev
	xfsprogs-dev
	yarn
	zstd-dev
	$_dashboard_deps
	$_mgr_modules_deps
	$_base_deps
	$_osd_daemon_deps
	$_osd_tools_deps
	$_ceph_volume_deps
	$_ceph_test_deps
	$_arrow_deps
	"
case "$CARCH" in
x86_64) makedepends="$makedepends isa-l_crypto-dev" ;;
esac
source="https://download.ceph.com/tarballs/ceph-$pkgver.tar.gz
	ceph.confd
	ceph.initd
	10-isal_crypto.patch
	10-isal.patch
	10-musl-fixes.patch
	11-dump_time_header_impl.patch
	11-parse_rfc1123_alt.patch
	11-s3_expiration_header.patch
	13-liburing.patch
	20-pci.patch
	21-yarn.patch
	35-fix_ErasureCodeShec.patch
	47-bcrypt.patch
	48-arrow.patch
	boost-1.81.patch
	gcc13.patch
	gcc14-2.patch
	py3-importlib-metadata-5.0.0.patch
	ceph-19.2.2-py313-1.patch
	ceph-19.2.2-py313-2.patch
	ceph-19.2.2-py313-3.patch
	"
# to prevent things from installing wrong ceph libs, since they have the same SOMAJOR
sonameprefix="ceph$_majorver:"
options="!check net" # todo
subpackages="
	$pkgname-doc
	$pkgname-base
	$pkgname-common
	$pkgname-mds
	$pkgname-mgr-diskprediction-local:mgr_diskpredicton_local:noarch
	$pkgname-mgr-modules-core:mgr_modules_core:noarch
	$pkgname-mgr-rook:mgr_rook:noarch
	$pkgname-mgr-k8events:mgr_k8events:noarch
	$pkgname-mgr
	$pkgname-mon::noarch
	$pkgname-mon-daemon:mon_daemon
	$pkgname-mon-tools:mon_tools
	$pkgname-fuse:ceph_fuse
	$pkgname-openrc
	$pkgname-osd::noarch
	$pkgname-osd-daemon:osd_daemon
	$pkgname-osd-tools:osd_tools
	$pkgname-volume:ceph_volume:noarch
	$pkgname-radosgw
	$pkgname-bash-completion:bash_completion:noarch
	$pkgname-dev
	$pkgname-user::noarch
	$pkgname-utils
	$pkgname-cephadm::noarch
	cephfs$_majorver-mirror:mirror
	cephfs$_majorver-shell:shell:noarch
	cephfs$_majorver-top:top:noarch
	rbd-fuse$_majorver:rbd_fuse
	rbd-mirror$_majorver:rbd_mirror
	rbd-nbd$_majorver:rbd_nbd
	librbd$_majorver:librbd
	libcephfs$_majorver:libcephfs
	libcephsqlite$_majorver:libcephsqlite
	librados$_majorver:librados
	py3-rados$_majorver:_py3_rados
	libradosstriper$_majorver:libradosstriper
	py3-rbd$_majorver:_py3_rbd
	py3-cephfs$_majorver:_py3_cephfs
	py3-$pkgname-common:_py3_ceph_common:noarch
	"
case "$CARCH" in
riscv64) ;;
*) subpackages="$pkgname-mgr-dashboard:mgr_dashboard:noarch $subpackages" ;;
esac

# Whether this package is the default (latest) ceph version.
_default_ceph="no"
[ "$_default_ceph" = "yes" ] && subpackages="$subpackages ceph-dev:_dev"

if [ "$_default_ceph" = yes ]; then
	provides="ceph=$pkgver-r$pkgrel"
	replaces="ceph"
fi

_ceph_uid=167
_ceph_gid=167

_py3_sitelib() {
	python3 -c "import site; print(site.getsitepackages()[0])"
}

build() {
	export CEPH_BUILD_VIRTUALENV="$builddir"
	export CFLAGS="${CFLAGS/-fno-plt} -O2 -DNDEBUG"
	# XXX: LARGEFILE64
	export CXXFLAGS="${CXXFLAGS/-fno-plt} -D_LARGEFILE64_SOURCE -O2 -DNDEBUG -Wno-deprecated-declarations"

	case "$CARCH" in
	riscv64) local _dash="OFF" ;;
	*) local _dash="ON" ;;
	esac

	cmake -B build -G Ninja -Wno-dev \
		-DCMAKE_BUILD_TYPE=MinSizeRel \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_LIBDIR=/usr/lib \
		-DCMAKE_INSTALL_LOCALSTATEDIR=/var \
		-DCMAKE_INSTALL_SYSCONFDIR=/etc \
		-DNINJA_MAX_COMPILE_JOBS=$JOBS \
		-DALLOCATOR=libc \
		-DLUA_LIBRARIES=/usr/lib/lua"$_lua"/liblua.so \
		-DWITH_BABELTRACE=OFF \
		-DWITH_JAEGER=OFF \
		-DWITH_LTTNG=OFF \
		-DWITH_MANPAGE=ON \
		-DWITH_MGR_DASHBOARD_FRONTEND="$_dash" \
		-DWITH_PYTHON3=3 \
		-DWITH_RADOSGW_AMQP_ENDPOINT=OFF \
		-DWITH_RADOSGW_SELECT_PARQUET=ON \
		-DWITH_RDMA=OFF \
		-DWITH_REENTRANT_STRSIGNAL=ON \
		-DWITH_SPDK=OFF \
		-DWITH_SYSTEMD=OFF \
		-DWITH_CEPHFS_SHELL=ON \
		-DWITH_SYSTEM_ARROW=ON \
		-DWITH_SYSTEM_BOOST=ON \
		-DWITH_SYSTEM_LIBURING=ON \
		-DWITH_SYSTEM_NPM=ON \
		-DWITH_SYSTEM_ROCKSDB=ON \
		-DWITH_SYSTEM_ZSTD=ON \
		-DWITH_TESTS="$(want_check && echo ON || echo OFF)" \
		-DWITH_THREAD_SAFE_RES_QUERY=ON

	export NODE_OPTIONS="--openssl-legacy-provider"
	cmake --build build --target common-options-objs
	cmake --build build
}

package() {
	DESTDIR="$pkgdir" cmake --install build

	# remove the upstream init file and put in openrc ones
	rm -f "$pkgdir"/etc/init.d/ceph
	install -D -m 755 "$srcdir"/"$_pkgname".initd "$pkgdir"/etc/init.d/ceph
	install -D -m 644 "$srcdir"/"$_pkgname".confd "$pkgdir"/etc/conf.d/ceph

	# move mount.* binaries to /sbin
	mkdir -p "$pkgdir"/sbin
	mv "$pkgdir"/usr/sbin/mount.* "$pkgdir"/sbin

	install -m 644 -D src/etc-rbdmap "$pkgdir"/etc/ceph/rbdmap
	install -m 644 -D src/logrotate.conf "$pkgdir"/etc/logrotate.d/ceph
	install -m 644 -D etc/sysctl/90-ceph-osd.conf "$pkgdir"/etc/sysctl.d/90-ceph-osd.conf

	# udev rules
	install -m 644 -D udev/50-rbd.rules "$pkgdir"/usr/lib/udev/rules.d/50-rbd.rules
	# sudoers.d
	install -m 600 -D sudoers.d/ceph-smartctl "$pkgdir"/etc/sudoers.d/ceph-smartctl

	# delete systemd related stuff
	rm -f "$pkgdir"/usr/sbin/ceph-volume-systemd

	# move docs to docs
	mkdir -p "$pkgdir"/usr/share/doc/ceph/dashboard
	mv "$pkgdir"/usr/share/ceph/mgr/dashboard/*.rst "$pkgdir"/usr/share/doc/ceph/dashboard/
	mv "$pkgdir"/usr/share/ceph/mgr/cephadm/HACKING.rst "$pkgdir"/usr/share/doc/ceph/cephadm-HACKING.rst
}

check() {
	cd "$builddir"/build
	ctest
}

_dev() {
	mkdir -p "$subpkgdir"
	depends="$pkgname-dev=$pkgver-r$pkgrel"
}

# This subpackage is a little weird and a side effect of trying to keep
# the daemon packages as small as possible. We might be able to roll this into
# the base/common package later if we can slim those down or break them up in a
# different way
user() {
	pkgdesc="Minimal package to create a user for other ceph packages."
	depends=""
	install="$pkgname-user.pre-install"
	_default_replace_majorversion

	mkdir -p "$subpkgdir"
}

base() {
	pkgdesc="Base is the package that includes all the files shared amongst ceph servers"
	depends="$_base_deps
		$pkgname-user=$pkgver-r$pkgrel
		$pkgname-common=$pkgver-r$pkgrel
		librbd$_majorver=$pkgver-r$pkgrel
		librados$_majorver=$pkgver-r$pkgrel
		libcephfs$_majorver=$pkgver-r$pkgrel
		"
	_default_replace_majorversion

	amove usr/bin/ceph-crash \
		usr/bin/crushtool \
		usr/bin/*maptool \
		usr/bin/ceph-kvstore-tool \
		usr/bin/ceph-run \
		usr/sbin/ceph-create-keys \
		usr/libexec/ceph/ceph_common.sh \
		usr/lib/rados-classes/*.so* \
		usr/lib/ceph/erasure-code/libec_*.so* \
		usr/lib/ceph/compressor/libceph_*.so* \
		usr/lib/ceph/crypto/libceph_*.so* \
		usr/lib/ceph/extblkdev/*.so* \
		etc/logrotate.d/ceph
	for dir in crash crash/posted tmp bootstrap-osd bootstrap-mds \
			bootstrap-rgw bootstrap-mgr bootstrap-rbd \
			bootstrap-rbd-mirror; do

		install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
			"$subpkgdir"/var/lib/ceph/$dir
	done
}

common() {
	pkgdesc="Common utilities to mount and interact with a ceph storage cluster."
	depends="py3-cephfs$_majorver=$pkgver-r$pkgrel
		py3-prettytable
		py3-rados$_majorver=$pkgver-r$pkgrel
		py3-rbd$_majorver=$pkgver-r$pkgrel
		"
	_default_replace_majorversion

	amove usr/bin/ceph \
		usr/bin/ceph-authtool \
		usr/bin/ceph-conf \
		usr/bin/ceph-rbdnamer \
		usr/bin/rados \
		usr/bin/rbd \
		usr/bin/rbdmap \
		sbin/mount.ceph \
		usr/share/ceph/*.ceph.com* \
		etc/ceph/rbdmap

	amove "$(_py3_sitelib)"/ceph_argparse.py* "$(_py3_sitelib)"/ceph_daemon.py*

	amove usr/lib/udev/rules.d/50-rbd.rules
	install -m 3770 -o $_ceph_uid -g $_ceph_gid -d \
		"$subpkgdir"/var/log/ceph
	install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
		"$subpkgdir"/var/lib/ceph
}

mds() {
	pkgdesc="Metadata server daemon for the Ceph distributed file system."
	depends="$pkgname-base=$pkgver-r$pkgrel"
	_default_replace_majorversion

	amove usr/bin/ceph-mds
	install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
		"$subpkgdir"/var/lib/ceph/mds
}

mon() {
	pkgdesc="Cluster monitor daemon virtual package for the Ceph distributed file system."
	depends="$pkgname-base=$pkgver-r$pkgrel
		$pkgname-mon-daemon=$pkgver-r$pkgrel
		$pkgname-mon-tools=$pkgver-r$pkgrel
		"
	_default_replace_majorversion

	mkdir -p "$subpkgdir"
}

mon_daemon() {
	pkgdesc="Cluster monitor daemon for the Ceph distributed file system."
	depends="$pkgname-user=$pkgver-r$pkgrel"
	_default_replace_majorversion

	amove usr/bin/ceph-mon
	install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
		"$subpkgdir"/var/lib/ceph/mon
}

mon_tools() {
	pkgdesc="Cluster monitor tools for the Ceph distributed file system."
	depends=
	_default_replace_majorversion

	amove usr/bin/ceph-monstore-tool
	install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
		"$subpkgdir"/var/lib/ceph/mon
}

ceph_fuse() {
	pkgdesc="FUSE based client for Ceph distributed network file system."
	depends=
	_default_replace_majorversion

	amove usr/bin/ceph-fuse sbin/mount.fuse.ceph
}

rbd_fuse() {
	pkgdesc="FUSE based client to map Ceph rbd images to files."
	depends=
	_default_replace_majorversion

	amove usr/bin/rbd-fuse
}

rbd_mirror() {
	pkgdesc="Daemon for mirroring RBD images between Ceph clusters."
	depends="$pkgname-common=$pkgver-r$pkgrel"
	_default_replace_majorversion

	amove usr/bin/rbd-mirror
}

rbd_nbd() {
	pkgdesc="NBD based client to map Ceph rbd images to local device."
	depends=
	_default_replace_majorversion

	amove usr/bin/rbd-nbd
}

radosgw() {
	pkgdesc="Rados REST gateway which implements Amazon's S3 and OpenStack's Swift APIs."
	depends="$pkgname-common=$pkgver-r$pkgrel oath-toolkit-liboath"
	_default_replace_majorversion

	amove usr/bin/radosgw*
	amove usr/bin/rgw-*
	mkdir -p "$subpkgdir"/var/lib/ceph/radosgw
}

osd() {
	pkgdesc="Object storage daemon virtual package for the Ceph distributed file system."
	depends="$pkgname-osd-daemon=$pkgver-r$pkgrel
		$pkgname-osd-tools=$pkgver-r$pkgrel
		$pkgname-volume=$pkgver-r$pkgrel"
	_default_replace_majorversion

	mkdir -p "$subpkgdir"
}

osd_daemon() {
	pkgdesc="Object storage daemon for the Ceph distributed file system."
	depends="$_osd_daemon_deps $pkgname-user=$pkgver-r$pkgrel"
	_default_replace_majorversion

	amove usr/bin/ceph-osd \
		usr/libexec/ceph/ceph-osd-prestart.sh \
		etc/sudoers.d/ceph-smartctl \
		etc/sysctl.d/90-ceph-osd.conf
	install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
		"$subpkgdir"/var/lib/ceph/osd
}

osd_tools() {
	pkgdesc="Object storage daemon tools for the Ceph distributed file system."
	depends="$pkgname-base=$pkgver-r$pkgrel $_osd_tools_deps"
	_default_replace_majorversion

	amove usr/bin/ceph-clsinfo usr/bin/ceph-*-tool
	install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
		"$subpkgdir"/var/lib/ceph/osd
}

ceph_volume() {
	pkgdesc="ceph-volume tool for the Ceph distributed file system."
	depends="$_ceph_volume_deps"
	_default_replace_majorversion

	amove usr/sbin/ceph-volume \
		"$(_py3_sitelib)"/ceph_volume "$(_py3_sitelib)"/ceph_volume-*
}

librados() {
	pkgdesc="RADOS distributed object store client library"
	depends=
	_default_replace_majorversion

	amove usr/lib/librados.so.* usr/lib/ceph/libceph-common.so.*
}

_py3_rados() {
	pkgdesc="Python libraries for the RADOS object store"
	depends=py3-$pkgname-common=$pkgver-r$pkgrel
	_default_replace_majorversion

	amove "$(_py3_sitelib)"/rados*
}

libradosstriper() {
	pkgdesc="RADOS striping library"
	depends=
	_default_replace_majorversion

	amove usr/lib/libradosstriper.so.*
}

librbd() {
	pkgdesc="RADOS block device client library"
	depends=
	_default_replace_majorversion

	amove usr/lib/librbd.so.*
}

_py3_rbd() {
	pkgdesc="Python libraries for the RADOS block device"
	depends="py3-rados$_majorver=$pkgver-r$pkgrel"
	_default_replace_majorversion

	amove "$(_py3_sitelib)"/rbd*
}

libcephsqlite() {
	pkgdesc="SQLite Virtual File System (VFS) on top of RADOS"
	depends=
	_default_replace_majorversion

	amove usr/lib/libcephsqlite.so*
}

libcephfs() {
	pkgdesc="Ceph distributed file system client library"
	depends=
	_default_replace_majorversion

	amove usr/lib/libcephfs.so.*
}

mirror() {
	pkgdesc="daemon for mirroring CephFS directory snapshots between Ceph clusters"
	depends=
	_default_replace_majorversion

	amove /usr/bin/cephfs-mirror
}

shell() {
	pkgdesc="interactive shell for the Ceph distributed file system"
	depends="py3-rados$_majorver=$pkgver-r$pkgrel"
	_default_replace_majorversion

	amove "$(_py3_sitelib)"/cephfs_shell*
	amove /usr/bin/cephfs-shell
}

top() {
	pkgdesc="top like utility to display various filesystem metrics in realtime"
	depends="py3-rados$_majorver=$pkgver-r$pkgrel"
	_default_replace_majorversion

	amove "$(_py3_sitelib)"/cephfs_top*
	amove /usr/bin/cephfs-top
}

_py3_cephfs() {
	pkgdesc="Python libraries for Ceph distributed file system"
	depends="py3-rados$_majorver=$pkgver-r$pkgrel"
	_default_replace_majorversion

	amove "$(_py3_sitelib)"/cephfs*
}

_py3_ceph_common() {
	pkgdesc="Python dependencies for $pkgname distributed file system"
	depends="py3-setuptools py3-yaml"
	_default_replace_majorversion

	amove "$(_py3_sitelib)"/ceph-*.egg-info "$(_py3_sitelib)"/ceph
}

utils() {
	pkgdesc="Ceph utils and recovery tools"
	depends="$pkgname-common=$pkgver-r$pkgrel"
	_default_replace_majorversion

	amove usr/bin/ceph-diff-sorted \
		usr/bin/ceph-post-file \
		usr/bin/ceph-syn \
		usr/bin/cephfs-data-scan \
		usr/bin/ceph-dencoder \
		usr/lib/ceph/denc \
		usr/bin/cephfs-journal-tool \
		usr/bin/cephfs-table-tool \
		usr/bin/rbd-replay* \
		usr/bin/crushdiff
}

bash_completion() {
	pkgdesc="Bash completions for Ceph"
	depends=
	_default_replace_majorversion

	install_if="ceph=$pkgver-r$pkgrel bash-completion"
	amove etc/bash_completion.d/*
}

mgr_dashboard() {
	pkgdesc="Dashboard module for ceph-mgr"
	depends="
		$pkgname-common=$pkgver-r$pkgrel
		$pkgname-mgr=$pkgver-r$pkgrel
		$_dashboard_deps
		"
	_default_replace_majorversion

	amove usr/share/ceph/mgr/dashboard
}

mgr_diskpredicton_local() {
	pkgdesc="diskprediction-local module for ceph-mgr"
	depends="$pkgname-mgr=$pkgver-r$pkgrel
		py3-numpy
		py3-scikit-learn
		py3-scipy
		"
	_default_replace_majorversion

	amove usr/share/ceph/mgr/diskprediction_local
}

mgr_modules_core() {
	pkgdesc="ceph manager modules which are always enabled"
	depends="
		$_mgr_modules_deps
		"
	_default_replace_majorversion

	local _mod="alerts balancer crash devicehealth influx insights iostat localpool mirroring nfs orchestrator \
			osd_perf_query osd_support pg_autoscaler progress prometheus rbd_support restful selftest snap_schedule \
			stats status telegraf telemetry test_orchestrator volumes zabbix"
	for _m in ${_mod}; do
		amove usr/share/ceph/mgr/"$_m"
	done
}

mgr_rook() {
	pkgdesc="rook module for ceph-mgr"
	depends="$pkgname-mgr=$pkgver-r$pkgrel
		py3-jsonpatch
		py3-kubernetes"
	_default_replace_majorversion

	amove usr/share/ceph/mgr/rook
}

mgr_k8events() {
	pkgdesc="kubernetes events module for ceph-mgr"
	depends="$pkgname-mgr=$pkgver-r$pkgrel
		py3-kubernetes
		py3-yaml"
	_default_replace_majorversion

	amove usr/share/ceph/mgr/k8sevents
}

mgr() {
	pkgdesc="Ceph Manager Daemon"
	depends="$pkgname-base=$pkgver-r$pkgrel
		$pkgname-mgr-modules-core=$pkgver-r$pkgrel"
	_default_replace_majorversion

	amove usr/bin/ceph-mgr usr/share/ceph/mgr

	install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
		"$subpkgdir"/var/lib/ceph/mgr
}

cephadm() {
	pkgdesc="cephadm tool $pkgver"
	depends="lvm2"
	 _default_replace_majorversion

	amove usr/sbin/cephadm
}

_default_replace_majorversion() {
	if [ "$_default_ceph" = "yes" ]; then
		local stripped="${subpkgname/"$_majorver"/}"
		# we want to replace both the generic name (ceph-) and the prior major (ceph1X-)
		replaces="$stripped ${subpkgname/"$_majorver"/"$(( _majorver - 1 ))"}"
		provides="$stripped=$pkgver-r$pkgrel"
	fi
}

sha512sums="
78831fe6afaf3a242c7fa1be496ce6a74136a6a493b24622a1595d5d2ccc156e22384565b1e9ad3af73df31682c4d99439fab39371b26a17216cfe7d84023ef8  ceph-18.2.7.tar.gz
110bdbcb40216c7ed155a8d23020784741b4992d895f4f04a146d275506e4e68053854d3b063b41e9c9b3e3e4f95b6b90602f92c185c853c0d8f47ad0c6b7121  ceph.confd
ce5f162501f6b67fe254546dddf880d1a5b1d1a0fa69e0b1918de17e8da45c5c6124512b8cbd98b76f29d931403de0d11c5ffd330ed8ee1f4dc75bb04baecae3  ceph.initd
51eadf5cc5e48922a28574f1b0f497b4fa68f52e7e7ba346b7ccbcb2b1c30ec841c9da181b29de4a0c74beae45a3314304c0ad57b0e1d7493aba59ec81f1a641  10-isal_crypto.patch
bd6c2104c274a2a4a23ff6dc3ea324e3cbd3bb76689ca9ef2794e4ea739b7a5eb3afcfaa4f2d9c595637d16ae53611ad533fbc80bc557437d88f97108c6d8996  10-isal.patch
94687578411bf0de1b17555ed81c188c88ea63ac4a25993bd8fde9cf68afbbfbdec7b2d7c54fdcfbd4aed4eb78754e8061c308955596cbe037ff15b575874cc6  10-musl-fixes.patch
211e6f5f8fc962878196ec917984781eb4a8a9495bcc8d1729b34ac66abd2d4a0b7388ae2caee9d5deb664d54860d120a37215924625e82eac9bfca16179667a  11-dump_time_header_impl.patch
253a7bf9fa6a68547f2c9269570be86aa659ef75ab0ed4c9d1a53be70de1ca6079508f19fe5ddb02ed9edda349e121037f8ed4d6b5b0e640edaab863ce6b280d  11-parse_rfc1123_alt.patch
52b11dfd157dfb7363d2d3428901559189263caaa1c5f29a924b9be7ea012d4f54a887b22d2e2a3d756f6fd771f626505912dca52e6b19a56e018be45b7acb8b  11-s3_expiration_header.patch
3ba1801d9e2ab427ed14abd01881ef2115cd38309134145ec5a0a2a7adee2007e8b84b66ac1c7d5ea1139946aa87159dfb0768cd80181f42140979d790efe817  13-liburing.patch
03ef3598181c45ecba5600a1e4db7fd897ea9d3c8abdfaad2dcf84c7a241d9ba18e7f7885d69ee0572ee307fc94600a2784a07da909d37a51de27f8ded2e3a70  20-pci.patch
b947a8f13e08b1cfaad82906ac04fa875c651cff660e64c43c7ba52eedb2a79fb2dc276f8e3ac9ee7d1264414bcee78640ec0cfc31600394313ddb0c6baf76c8  21-yarn.patch
abb3cab9c01cc3d6d42a9858678059a8c9c43bda2649bf97b489fdc205eb10ae27f9fb7302062e0fb41f5cffddbfc2ae529130569034f373732a0a5d33aba86e  35-fix_ErasureCodeShec.patch
71ffe6f3263b3546bb3d3593981a288ee8136d44f8c1e734ecfae65b71ea3f7c91e6040c337f237fa41269328378c955e93ed13b9d35e0ad8efd785b75d0f595  47-bcrypt.patch
df20d148f0a2aec170d2ef5afa2fda30ecb2f91ea206d00556736936529fa8ef8b47c6e6b88f29a4d779a025612fe0d1ea964316f46d61cc557ea07aaa8274d6  48-arrow.patch
ad71fda050df8658d653f9131855c28ff889395dfcc70a3124575c8b063c8e84eca7eb390232b6ee5a05238c4f953c5b55af7e961b1a99360696097a702686cd  boost-1.81.patch
afef1cc7e43f500d95d2ffd1687cfcb756e9d8dec729186a25d513d4401b38f00edac922562a161575b1da1a65ded3e99d01cf34f9bc329f6d08cf2b896acd0c  gcc13.patch
81c22e9229f70780b4c61b511f917f7384734f1221d0ad2412182e6430f2f6256d619ca315ae2efd5ff183746e2d5b960055c46367df081c747a462131f00b41  gcc14-2.patch
bf088eeeac8554a66012f076745714326ab31632021ca2eeffa3b525bfa7fa5263096f2b0e0157e16c50c77ecf8b7771ee388e9472852e6860b160e1417e7ee1  py3-importlib-metadata-5.0.0.patch
bdb5e3bc3e2449b92570ddd2874982f4286ab3406a149d222d4ad4d6362ae3d20c519999b83efea4febab1cf01522b0bee9c0334cd059394e54004def14658e9  ceph-19.2.2-py313-1.patch
e393c7754c9977a3aeba85db29d4b9ed66a1687cc7d164849af50030a2c55ee5980a2619deb0e80395cde9679982fc42cf77e28e6c4242a6e4819ded6dee5e07  ceph-19.2.2-py313-2.patch
780f327b6d86511eb8128b4742a082d79ab617fbb11203090e01bd0b35ba887d9f33ef515f35d4d2fbee36d28a63548591b4a5ea8dd42aee0a93cb6b849e32e4  ceph-19.2.2-py313-3.patch
"
