# Contributor: John Coyle # Contributor: Iggy Jackson # Contributor: Duncan Bellamy # Maintainer: Duncan Bellamy pkgname=ceph pkgver=16.2.4 pkgrel=2 pkgdesc="Ceph is a distributed object store and file system" pkgusers="ceph" pkggroups="ceph" url="https://ceph.com/" # riscv64 missing nodejs arch="all !mips !mips64 !riscv64" # 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="ceph-osd ceph-mds ceph-mon" _lua=5.3 _base_deps=" cryptsetup e2fsprogs logrotate parted util-linux xfsprogs " _osd_daemon_deps="fuse snappy lz4-libs" _osd_tools_deps="lz4-libs" _ceph_volume_deps="lvm2" _ceph_test_deps=" xmlstarlet py3-argparse py3-coverage py3-flake8 py3-nodeenv py3-nose py3-pytest py3-tox py3-yaml " 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 fmt-dev fuse fuse-dev git graphviz-dev grep gperf jq keyutils-dev leveldb-dev libaio-dev libatomic_ops-dev libcap-ng-dev libedit-dev librdkafka-dev libnl3-dev libtirpc-dev libtool libxml2-dev linux-headers lua$_lua-dev lvm2-dev lz4-dev nodejs npm nss-dev oath-toolkit-dev openldap-dev openssl-dev procps python3-dev py3-sphinx rabbitmq-c-dev readline-dev rpcgen snappy-dev sqlite-dev userspace-rcu-dev xfsprogs-dev xmlstarlet yasm $_base_deps $_osd_daemon_deps $_osd_tools_deps $_ceph_volume_deps $_ceph_test_deps " source="https://download.ceph.com/tarballs/ceph_$pkgver.orig.tar.gz ceph.confd ceph.initd 10-musl-fixes.patch 20-pci.patch 30-32bit_fix.patch.noauto 30-cypress.patch.noauto 30-ubuntu-32bit-fixes.patch.noauto 31-32bit_fix_tests.patch.noauto 32-PurgeQueue.cc-cast.patch 32-upstream32bit.patch 32-upstream32bitcleanup.patch 35-fix_ErasureCodeShec.patch 37-fix_tests.patch 42-no-virtualenvs.patch 43-aarch64-erasure.patch 44-cmake-buildtype.patch 44-LogClock.h.patch 44-staticcast.patch 44-node_modules.patch 44-missing-include.patch 44-missing-include2.patch " subpackages=" $pkgname-doc $pkgname-base $pkgname-common $pkgname-mds $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 rbd-fuse:rbd_fuse rbd-mirror:rbd_mirror rbd-nbd:rbd_nbd librbd libcephfs librados py3-rados:_py3_rados libradosstriper py3-rbd:_py3_rbd py3-cephfs:_py3_cephfs " # secfixes: # 16.2.4-r0: # - CVE-2021-3509 # - CVE-2021-3531 # - CVE-2021-3524 # 16.2.3-r0: # - CVE-2021-20288 # 15.2.8-r0: # - CVE-2020-27781 # 15.2.6-r0: # - CVE-2020-25660 # - CVE-2020-10736 # - CVE-2020-10753 # 14.2.9-r0: # - CVE-2020-1759 # - CVE-2020-1760 # 14.2.7-r0: # - CVE-2020-1699 # - CVE-2020-1700 # 14.2.3-r0: # - CVE-2019-10222 _ceph_uid=167 _ceph_gid=167 _py3_sitelib() { python3 -c "import site; print(site.getsitepackages()[0])" } prepare() { default_prepare case "$CARCH" in x86|armv7|armhf) patch -p1 -i "$srcdir"/30-32bit_fix.patch.noauto patch -p1 -i "$srcdir"/30-cypress.patch.noauto patch -p1 -i "$srcdir"/30-ubuntu-32bit-fixes.patch.noauto patch -p1 -i "$srcdir"/31-32bit_fix_tests.patch.noauto ;; esac #delete bundled boost as >300mb and using system boost rm -rf src/boost } build() { export CEPH_BUILD_VIRTUALENV="$builddir" # builders keep failing when -jN == nproc export MAKEFLAGS="$MAKEFLAGS -j$((JOBS<16 ? JOBS : 16))" # use alternate registry as original can timeout for arm32bit export NPM_REGISTRY=https://registry.npmjs.org cmake -B build \ -DCMAKE_BUILD_TYPE=None \ -DLUA_LIBRARIES=/usr/lib/lua"$_lua"/liblua.so \ -DALLOCATOR=libc \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=/usr/lib \ -DCMAKE_INSTALL_LOCALSTATEDIR=/var \ -DCMAKE_INSTALL_SYSCONFDIR=/etc \ -DWITH_REENTRANT_STRSIGNAL=ON \ -DWITH_THREAD_SAFE_RES_QUERY=ON \ -DWITH_MANPAGE=ON \ -DWITH_SYSTEM_BOOST=ON \ -DWITH_SYSTEM_NPM=ON \ -DWITH_PYTHON3=3 \ -DWITH_LTTNG=OFF \ -DWITH_RDMA=OFF \ -DWITH_SYSTEMD=OFF \ -DWITH_SPDK=OFF \ -DWITH_BABELTRACE=OFF \ -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \ -DWITH_TESTS=OFF make -C build } package() { # free up some space before install rm -rf build/src/pybind/mgr/dashboard/cypress rm -rf src/pybind/mgr/dashboard/frontend/node_modules make -C build DESTDIR="$pkgdir" install # 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"/etc/udev/rules.d/50-rbd.rules # sudoers.d install -m 600 -D sudoers.d/ceph-osd-smartctl "$pkgdir"/etc/sudoers.d/ceph-osd-smartctl # delete systemd related stuff rm "$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 } # 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" 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=$pkgver-r$pkgrel librados=$pkgver-r$pkgrel libcephfs=$pkgver-r$pkgrel " 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* \ 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-rados py3-rbd py3-cephfs py3-prettytable" 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 etc/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="ceph-base" 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 $pkgname-mon-daemon=$pkgver-r$pkgrel $pkgname-mon-tools=$pkgver-r$pkgrel" mkdir -p "$subpkgdir" } mon_daemon() { pkgdesc="Cluster monitor daemon for the Ceph distributed file system." depends="$pkgname-user=$pkgver-r$pkgrel" 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= 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= amove usr/bin/ceph-fuse sbin/mount.fuse.ceph } rbd_fuse() { pkgdesc="FUSE based client to map Ceph rbd images to files." depends= amove usr/bin/rbd-fuse } rbd_mirror() { pkgdesc="Daemon for mirroring RBD images between Ceph clusters." depends="ceph-common=$pkgver-r$pkgrel" amove usr/bin/rbd-mirror } rbd_nbd() { pkgdesc="NBD based client to map Ceph rbd images to local device." depends= amove usr/bin/rbd-nbd } radosgw() { pkgdesc="Rados REST gateway which implements Amazon's S3 and OpenStack's Swift APIs." depends="ceph-common oath-toolkit-liboath" amove usr/bin/radosgw* 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" mkdir -p "$subpkgdir" } osd_daemon() { pkgdesc="Object storage daemon for the Ceph distributed file system." depends="$_osd_daemon_deps $pkgname-user=$pkgver-r$pkgrel" amove usr/bin/ceph-osd \ usr/libexec/ceph/ceph-osd-prestart.sh \ etc/sudoers.d/ceph-osd-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" 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" amove usr/sbin/ceph-volume \ "$(_py3_sitelib)"/ceph_volume "$(_py3_sitelib)"/ceph_volume-* } librados() { pkgdesc="RADOS distributed object store client library" depends= amove usr/lib/librados.so.* usr/lib/ceph/libceph-common.so.* } _py3_rados() { pkgdesc="Python libraries for the RADOS object store" depends= amove "$(_py3_sitelib)"/rados* } libradosstriper() { pkgdesc="RADOS striping library" depends= amove usr/lib/libradosstriper.so.* } librbd() { pkgdesc="RADOS block device client library" depends= amove usr/lib/librbd.so.* } _py3_rbd() { pkgdesc="Python libraries for the RADOS block device" depends="py3-rados" amove "$(_py3_sitelib)"/rbd* } libcephfs() { pkgdesc="Ceph distributed file system client library" depends= amove usr/lib/libcephfs.so.* } _py3_cephfs() { pkgdesc="Python libraries for Ceph distributed file system" depends="py3-rados" amove "$(_py3_sitelib)"/cephfs* "$(_py3_sitelib)"/ceph_volume_client.py } utils() { pkgdesc="Ceph utils and recovery tools" depends="ceph-common=$pkgver-r$pkgrel" 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/bin/cephfs-journal-tool \ usr/bin/cephfs-table-tool \ usr/bin/rbd-replay* } bash_completion() { pkgdesc="Bash completions for Ceph" depends= install_if="ceph=$pkgver-r$pkgrel bash-completion" amove etc/bash_completion.d/* } mgr() { pkgdesc="Ceph Manager Daemon" depends="ceph-base=$pkgver-r$pkgrel" amove usr/bin/ceph-mgr usr/share/ceph/mgr install -m 750 -o $_ceph_uid -g $_ceph_gid -d \ "$subpkgdir"/var/lib/ceph/mgr } sha512sums=" 8904e7fcabd50276e4e86735fd85dba96f417c194c219025146f994707def7abe372528b0f2e862e274b2f405d7b791bac86b6cbb8d57cecd6f44023a2ffb6f6 ceph_16.2.4.orig.tar.gz 110bdbcb40216c7ed155a8d23020784741b4992d895f4f04a146d275506e4e68053854d3b063b41e9c9b3e3e4f95b6b90602f92c185c853c0d8f47ad0c6b7121 ceph.confd ce5f162501f6b67fe254546dddf880d1a5b1d1a0fa69e0b1918de17e8da45c5c6124512b8cbd98b76f29d931403de0d11c5ffd330ed8ee1f4dc75bb04baecae3 ceph.initd 94687578411bf0de1b17555ed81c188c88ea63ac4a25993bd8fde9cf68afbbfbdec7b2d7c54fdcfbd4aed4eb78754e8061c308955596cbe037ff15b575874cc6 10-musl-fixes.patch 03ef3598181c45ecba5600a1e4db7fd897ea9d3c8abdfaad2dcf84c7a241d9ba18e7f7885d69ee0572ee307fc94600a2784a07da909d37a51de27f8ded2e3a70 20-pci.patch b879993a285a771c3640c5214ff70e8e01673c0c5e23a0f88ac70db168aeb1dd2eaed12805ed5076adae5a0f596abcb9d82220c6fd97643169cb92788898a189 30-32bit_fix.patch.noauto 013ff1e35fd91b4b4a9d712701e78975f423a883650b391d9fe73dbc2ab68f02ecd1fa51e1ba6bc60c483b021f99c0d4b9e80a8e19492bd2f31ffed159a356a7 30-cypress.patch.noauto 01c446ac4528d8e12d3544f603ba32a0bf0d5a3a72f9f8f3726725f9d225ee447d2fea4ee2ddf10b36498cc01f2ecf51175dbfcc6376aac4c8002f52c6a04299 30-ubuntu-32bit-fixes.patch.noauto f974ab36cd6fa49c1d4613203a4f2152723e4952a185dfb6349bc4ca8ee1a7a9d0477bea136c54248271de30a4e584734ba41e8ec41bf274b04074622888ae39 31-32bit_fix_tests.patch.noauto 964e7ca107cc731be2be7bf6813aca760ca1c6e6f6b3748103c1e6baef4d25e41442752a72f5e5daed2b1c6c4f96c9aebbb7114247e8a5047511fbd035767aeb 32-PurgeQueue.cc-cast.patch fb69f1c886f3cc05a10dd8722429c6bdc840674113e83cf3592caf75b5d4082e5bdaea73426b28edbde724c4973775f2109a3eb4e0a84384fa8083621d463fbd 32-upstream32bit.patch 73326b47deb0967ff024731c28a956ca63800ffcbfa36c6351c157328d2036b3f8406368cc7c7e087841e144b32889f27d807f3405ac1c5a1c2daf6bd7ca5338 32-upstream32bitcleanup.patch abb3cab9c01cc3d6d42a9858678059a8c9c43bda2649bf97b489fdc205eb10ae27f9fb7302062e0fb41f5cffddbfc2ae529130569034f373732a0a5d33aba86e 35-fix_ErasureCodeShec.patch 908169df45177240d2dcc721fe1637c521789aed56c3b3400ed3ba9c73d93634e4369258fb0e0395dc27053be26229ee8f370e445f0e69d01f551a710a29d407 37-fix_tests.patch 2584ceb68b50423fac386ce83ad194f22aa574e11b99916e712471bacba28486d2639a8fe63d97c5697f33270c0de99db1f0e76eb43b14cc47c6de7da6903fde 42-no-virtualenvs.patch aea43c2a99f16f7fccf33aeca3565077bb2274816ca68db64b672addc85bde5c479bc9ad0fb33dbde79c9390f9acf1d98545e20e311e40dd428dad5ed02f0651 43-aarch64-erasure.patch 741a0f83ecf1a8298bcc8cb8ab9f25f6d27cfe69367150a8821fde445efe20a255b3f1296dc92003a2956475e3f15f3d0ac920be280dd03ac3f311c754dbb890 44-cmake-buildtype.patch e47d736d3ab1417758fc5f92798a77272b978799e6d9f0728b2036d6cc5975c6c10f8dc4590c2e1cb31e1e9fc03c582394b30727e315a6889de524fc8bf95369 44-LogClock.h.patch f89c913a53e2806c59508d26f5dc72abb428c7e4e3b7c1aeb6eaf92744ea9a13cac2f00a2ac90f91ad7682f66d876a5fffedd10feeceecd71a944793581da443 44-staticcast.patch 85d0009b0d1442af81d115402cdbd17667d85314030e1748a4656c1ee798b02efdcff41ccb374a6b63f7bf012bf1756b61e75c5d2b6399c329a6e62024ad0011 44-node_modules.patch b95ec157f9c77177afd3deb8e3485bb5f10e1b634a15617d14e09b08d6680d32201ecb249ea5ea98127a312e1fdb22fdbe9f0216690291a2849419aa7ab81610 44-missing-include.patch a8faf754e5778f8df7e52603b1948d25e90a34994c2176ab247789cd55dd5722970babfbe50c41b52526b3e1f3373e4677c5b70ab37abf55f24be9a34fcf222d 44-missing-include2.patch "