# Maintainer: Thore Bödecker # Contributor: Sébastien "Seblu" Luttringer pkgbase='ceph' pkgname=('ceph' 'ceph-libs') pkgver=14.2.2 pkgrel=1 pkgdesc='Distributed, fault-tolerant storage platform delivering object, block, and file system' arch=('x86_64') url='https://ceph.com/' license=('GPL') makedepends=('bc' 'boost' 'boost-libs' 'cmake' 'cpio' 'crypto++' 'curl' 'cython' 'cython2' 'expat' 'fcgi' 'fuse2' 'gcc-libs' 'git' 'glibc' 'gperf' 'gperftools' 'gptfdisk' 'inetutils' 'jq' 'junit' 'keyutils' 'leveldb' 'libaio' 'libatomic_ops' 'libedit' 'libsystemd' 'libutil-linux' 'libxml2' 'lsb-release' 'lz4' 'ncurses' 'nss' 'parted' 'pcre' 'procps-ng' 'python-cherrypy' 'python-jinja' 'python-nose' 'python-pecan' 'python-pip' 'python-bcrypt' 'python-prettytable' 'python-pyopenssl' 'python-setuptools' 'python-routes' 'python-sphinx' 'python-tox' 'python-virtualenv' 'python-werkzeug' 'sed' 'snappy' 'socat' 'systemd' 'valgrind' 'xfsprogs' 'xmlstarlet' 'yasm' 'zlib' 'zstd' 'cunit' 'oath-toolkit' 'fontconfig') options=('emptydirs') source=("https://download.ceph.com/tarballs/${pkgbase}-${pkgver}.tar.gz" 'ceph.sysusers' 'boost-1.67.patch' 'remove-distro-version-detection.patch') sha512sums=('1ce61fb75e331cca39aaa8c0498bbb3cb874edb22ea45a4c2d82171b5e0c7c4ab2b081674b77177d5e612a0efdfa01de10a4becc4a7ee0eed1b2b3d358a72dc1' '4354001c1abd9a0c385ba7bd529e3638fb6660b6a88d4e49706d4ac21c81b8e829303a20fb5445730bdac18c4865efb10bc809c1cd56d743c12aa9a52e160049' 'b886c3f2b2a2b32d4033225b5f28cef98ca96e3f4fe2d04cfdbdb3141bbefd81895284abe9c9b75dcad156d54a93dc938bd8d9a45056b4de12855bbbdf0870ca' '02c9e8fd3c23fb4c9c4c576ee6d06e8525ca31decfd964fb7231e73c98fe2987a483dda680969752186f0918f47d9af4fb09a4901e5319077f45d870906716da') prepare() { cd "${srcdir}/${pkgbase}-${pkgver}" # apply patch from the source array (should be a pacman feature) local filename for filename in "${source[@]}"; do if [[ "$filename" =~ \.patch$ ]]; then msg2 "Applying patch ${filename##*/}" patch -p1 -N -i "$srcdir/${filename##*/}" fi done # remove tests that require root privileges rm src/test/cli/ceph-authtool/cap*.t # remove broken tests rm src/test/cli/crushtool/build.t rm -rf qa/btrfs rm src/btrfs_ioc_test.c # patch version script # TODO this is unclean perl -0777 -i -pe 's/(LIBRADOS_[0-9.]+) .*\}/$1 \{\}/gs' src/librados/librados.map sed -i 's/local/global/g' src/librados/librados.map # this test will try to perform btrfs operations when a btrfs mount # is active on the build host, which will fail if mount | grep 'type btrfs' &>/dev/null; then sed -i '/run-tox-ceph-disk/d' src/test/CMakeLists.txt fi # fix python interpreter -> python #for file in \ # src/ceph-create-keys \ # src/mount.fuse.ceph #do # sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python|' "${file}" #done } build() { echo "${srcdir}/${pkgbase}-${pkgver}" cd "${srcdir}/${pkgbase}-${pkgver}" mkdir -p build cd build # experimental in luminous: (and currently broken with boost 1.66) # RADOSGW_BEAST_FRONTEND # -> disabled cmake \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_SYSCONFDIR=/etc \ -DCMAKE_INSTALL_SBINDIR=/usr/bin \ -DCMAKE_INSTALL_LIBDIR=/usr/lib \ -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib \ -DMGR_PYTHON_VERSION=3.7 \ -DENABLE_GIT_VERSION=ON \ -DWITH_PYTHON3=ON \ -DWITH_PYTHON2=OFF \ -DWITH_BABELTRACE=OFF \ -DWITH_CEPHFS=ON \ -DWITH_FUSE=ON \ -DWITH_LTTNG=OFF \ -DWITH_LZ4=ON \ -DWITH_MGR=ON \ -DWITH_NSS=ON \ -DPYTHON_INCLUDE_DIR=/usr/include/python3.7m \ -DWITH_RADOSGW=ON \ -DWITH_RADOSGW_BEAST_FRONTEND=ON \ -DWITH_RDMA=OFF \ -DWITH_SSL=ON \ -DWITH_SYSTEM_BOOST=ON \ -DWITH_SYSTEMD=ON \ -DWITH_TESTS=OFF \ -DWITH_XFS=ON \ -DENABLE_SHARED=ON \ -DWITH_MGR_DASHBOARD_FRONTEND=ON \ .. make all } check() { cd "${srcdir}/${pkgbase}-${pkgver}/build" export CTEST_PARALLEL_LEVEL="$(nproc)" make check # sometimes processes are not properly terminated... for process in ceph-mon ceph-mgr ceph-osd; do pkill -9 "$process" || true done } package_ceph-libs() { depends=('boost-libs' 'curl' 'glibc' 'keyutils' 'leveldb' 'libaio' 'libutil-linux' 'lz4' 'nss' 'python' 'xfsprogs' 'oath-toolkit') cd "${srcdir}/${pkgbase}-${pkgver}/build" # main install make DESTDIR="$pkgdir" install # remove stuff that goes into the ceph package rm -rf "${pkgdir}"/usr/lib/{ceph/mgr,systemd,sysusers.d,tmpfiles.d} rm -rf "${pkgdir}/usr/share" rm -rf "${pkgdir}/usr/sbin" rm -rf "${pkgdir}/usr/bin" rm -rf "${pkgdir}/etc" rm -rf "${pkgdir}/var" } package_ceph() { depends=('ceph-libs' 'boost-libs' 'curl' 'fuse2' 'glibc' 'gperftools' 'keyutils' 'leveldb' 'libaio' 'libsystemd' 'libutil-linux' 'python-routes' 'lsb-release' 'ncurses' 'nss' 'python' 'python-cherrypy' 'python-bcrypt' 'python-jinja' 'python-mako' 'python-pecan' 'python-prettytable' 'python-pyopenssl' 'python-setuptools' 'python-pyjwt' 'python-webob' 'python-werkzeug' 'snappy' 'xfsprogs' 'python-requests') cd "${srcdir}/${pkgbase}-${pkgver}/build" # main install make DESTDIR="$pkgdir" install # remove stuff that is in the ceph-libs package find "${pkgdir}/usr/lib" -maxdepth 1 -type f -delete find "${pkgdir}/usr/lib" -maxdepth 1 -type l -delete find "${pkgdir}/usr/lib/ceph" -maxdepth 1 -type f -delete find "${pkgdir}/usr/lib/ceph" -maxdepth 1 -type l -delete rm -rf "${pkgdir}"/usr/lib/{ceph/{compressor,crypto,erasure-code},python.7,rados-classes} rm -rf "${pkgdir}/usr/include" # install tmpfiles.d and sysusers.d stuff install -Dm644 "${srcdir}/${pkgbase}-${pkgver}/systemd/ceph.tmpfiles.d" \ "${pkgdir}/usr/lib/tmpfiles.d/${pkgbase}.conf" install -Dm644 "${srcdir}/ceph.sysusers" \ "${pkgdir}/usr/lib/sysusers.d/${pkgbase}.conf" # remove debian init script rm -rf "${pkgdir}/etc/init.d" # fix sbin dir (cmake opt seems to have no effect) mv "${pkgdir}"/usr/sbin/* "${pkgdir}/usr/bin/" rm -rf "${pkgdir}/usr/sbin" # remove drop.ceph.com ssh stuff rm -f "${pkgdir}/usr/share/ceph/{{known_hosts,id_rsa}_drop.ceph.com,.pub}" # fix bash completions path install -d -m 755 "${pkgdir}/usr/share/bash-completion" mv "$pkgdir"/{etc/bash_completion.d,usr/share/bash-completion/completions} # fix EnvironmentFile location in systemd service files sed -i 's|/etc/sysconfig/|/etc/conf.d/|g' "${pkgdir}"/usr/lib/systemd/system/*.service # prepare some paths and set correct permissions install -D -d -m750 -o 0 -g 340 "${pkgdir}/etc/ceph" install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/log/ceph" install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph" install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-mds" install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-osd" install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/bootstrap-rgw" install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/mon" install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/mgr" install -D -d -m750 -o 340 -g 340 "${pkgdir}/var/lib/ceph/osd" } # vim:set ts=2 sw=2 et: