diff --git a/extra/ceph/01-virtualenv2.patch b/extra/ceph/01-virtualenv2.patch new file mode 100644 index 000000000..ac43a10bf --- /dev/null +++ b/extra/ceph/01-virtualenv2.patch @@ -0,0 +1,11 @@ +--- a/src/tools/setup-virtualenv.sh 2016-06-14 13:43:58.000000000 +0200 ++++ b/src/tools/setup-virtualenv.sh 2016-08-18 02:13:31.418624320 +0200 +@@ -18,7 +18,7 @@ + DIR=$1 + rm -fr $DIR + mkdir -p $DIR +-virtualenv --python python2.7 $DIR ++virtualenv2 --python python2.7 $DIR + . $DIR/bin/activate + # older versions of pip will not install wrap_console scripts + # when using wheel packages diff --git a/extra/ceph/02-setup-python2.patch b/extra/ceph/02-setup-python2.patch new file mode 100644 index 000000000..c232ffbe5 --- /dev/null +++ b/extra/ceph/02-setup-python2.patch @@ -0,0 +1,38 @@ +--- a/src/Makefile.in 2016-06-14 13:44:59.000000000 +0200 ++++ b/src/Makefile.in 2016-08-19 22:09:15.526703376 +0200 +@@ -32623,7 +32623,7 @@ + cd $(srcdir)/ceph-detect-init ; ../tools/setup-virtualenv.sh ${CEPH_DETECT_INIT_VIRTUALENV} ; test -d wheelhouse && export NO_INDEX=--no-index ; ${CEPH_DETECT_INIT_VIRTUALENV}/bin/pip install $$NO_INDEX --use-wheel --find-links=file://$$(pwd)/wheelhouse -e . + + ceph-detect-init-clean: +- cd $(srcdir)/ceph-detect-init ; python setup.py clean ; rm -fr wheelhouse .tox build ${CEPH_DETECT_INIT_VIRTUALENV} .coverage *.egg-info ++ cd $(srcdir)/ceph-detect-init ; python2 setup.py clean ; rm -fr wheelhouse .tox build ${CEPH_DETECT_INIT_VIRTUALENV} .coverage *.egg-info + + ceph-detect-init-install-data: + cd $(srcdir)/ceph-detect-init ; \ +@@ -32635,7 +32635,7 @@ + fi ; \ + root="--root=$(DESTDIR)" ; \ + fi ; \ +- python setup.py install $$root $$options ++ python2 setup.py install $$root $$options + + export CEPH_DISK_VIRTUALENV = ${CEPH_BUILD_VIRTUALENV}/ceph-disk-virtualenv + +@@ -32645,7 +32645,7 @@ + cd $(srcdir)/ceph-disk ; ../tools/setup-virtualenv.sh ${CEPH_DISK_VIRTUALENV} ; test -d wheelhouse && export NO_INDEX=--no-index ; ${CEPH_DISK_VIRTUALENV}/bin/pip install $$NO_INDEX --use-wheel --find-links=file://$$(pwd)/wheelhouse -e . + + ceph-disk-clean: +- cd $(srcdir)/ceph-disk ; python setup.py clean ; rm -fr wheelhouse .tox build ${CEPH_DISK_VIRTUALENV} .coverage *.egg-info ++ cd $(srcdir)/ceph-disk ; python2 setup.py clean ; rm -fr wheelhouse .tox build ${CEPH_DISK_VIRTUALENV} .coverage *.egg-info + + ceph-disk-install-data: + cd $(srcdir)/ceph-disk ; \ +@@ -32657,7 +32657,7 @@ + fi ; \ + root="--root=$(DESTDIR) --install-script=/usr/sbin" ; \ + fi ; \ +- python setup.py install $$root $$options ++ python2 setup.py install $$root $$options + + #crush_includedir = $(includedir)/crush + #crush_include_DATA = \ diff --git a/extra/ceph/PKGBUILD b/extra/ceph/PKGBUILD index b9c9dd8b4..75eddca2c 100644 --- a/extra/ceph/PKGBUILD +++ b/extra/ceph/PKGBUILD @@ -5,82 +5,87 @@ # - patch to remove neon detection in configure pkgname=ceph -pkgver=0.94.5 -pkgrel=3 +pkgver=10.2.2 +pkgrel=2 pkgdesc='Distributed, fault-tolerant storage platform delivering object, block, and file system' arch=('x86_64' 'i686') url='http://ceph.com/' license=('GPL') -makedepends=('boost' 'systemd' 'xfsprogs') -depends=('boost-libs' - 'curl' - 'expat' - 'fcgi' - 'fuse' - 'gcc-libs' - 'glibc' - 'gperftools' - 'keyutils' - 'leveldb' - 'libaio' - 'libatomic_ops' - 'libedit' - 'libsystemd' - 'libutil-linux' - 'ncurses' - 'nss' - 'python2' - 'snappy') +makedepends=('boost' 'systemd' 'xfsprogs' 'python2-setuptools' 'python2-sphinx' + 'python2-virtualenv' 'cython2') +depends=('boost-libs' 'curl' 'expat' 'fcgi' 'fuse' 'gcc-libs' 'glibc' + 'gperftools' 'keyutils' 'leveldb' 'libaio' 'libatomic_ops' 'libedit' + 'libsystemd' 'libutil-linux' 'ncurses' 'nss' 'python2' 'snappy') optdepends=('xfsprogs: support xfs backend') options=('emptydirs') -source=("http://ceph.com/download/$pkgname-$pkgver.tar.bz2" - 'ceph-osd@.service' - 'ceph-mon@.service' - 'ceph-mds@.service' +install=ceph.install +source=("http://ceph.com/download/$pkgname-$pkgver.tar.gz" + 'ceph.sysusers' + '01-virtualenv2.patch' + '02-setup-python2.patch' 'no-neon.patch') -md5sums=('e7c35581f8d36d34f7cde16a862e54fb' - '9104b5b90349d2aa7802eb89158456e8' - '63a584aa2a4e2b0efbee4e8fd32593f0' - 'd2411c41208d95743baa6d899cc1e0b0' - '7bc1737bb952b08db8e9a0780aee21d8') +md5sums=('5cba47af53b3b17002aad3c854e5405c' + 'b3e24e3aa005a657ab475f84bfe3291a' + 'a3f72dc8e97f9fd5708d52256bcd9e75' + 'f11582acceeb6c1790518c3a5a29bb18' + '97d293b08d5d4b4a2db37030c28bc617') prepare() { -# patch -p1 -d $pkgname-$pkgver < 01-boost-158.patch - patch -p1 -d $pkgname-$pkgver -i ../no-neon.patch + cd $pkgname-$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 + : } build() { cd $pkgname-$pkgver - export PYTHON=/usr/bin/python2 ./configure \ --prefix=/usr \ --sbindir=/usr/bin \ --libexecdir=/usr/lib \ --sysconfdir=/etc \ --localstatedir=/var \ - --with-radosgw + --with-man-pages \ + --with-radosgw \ + --without-openldap \ + PYTHON=/usr/bin/python2 \ + CYTHON_CHECK=yes \ + PYTHON_CONFIG_CHECK=yes \ + SPHINX_BUILD=sphinx-build2 make } package() { - make -C $pkgname-$pkgver DESTDIR="$pkgdir" install + cd $pkgname-$pkgver + + make DESTDIR="$pkgdir" install + + # install tmpfiles.d + install -Dm644 systemd/ceph.tmpfiles.d "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf" + install -Dm644 "$srcdir"/ceph.sysusers "$pkgdir/usr/lib/sysusers.d/$pkgname.conf" cd "$pkgdir" - # systemd - install -dm755 usr/lib/{systemd/system,udev/rules.d} - install -Dm644 "$srcdir"/ceph-{osd,mon,mds}@.service usr/lib/systemd/system - install -Dm644 "$srcdir"/$pkgname-$pkgver/udev/* usr/lib/udev/rules.d + # fix sbin path + msg2 'Fix sbin paths' + mv -v sbin/* usr/sbin/* usr/bin + rmdir -v sbin usr/sbin - # fix directories path - mv sbin/* usr/bin - rmdir sbin + # fix bash completions path + msg2 'Fix bash completion path' install -d -m 755 usr/share/bash-completion mv etc/bash_completion.d usr/share/bash-completion/completions # fix python2 shebang, did not do it in prepare() anymore because it # confuse automake - find . -type f -exec \ + msg2 'Fix python2 shebang' + find . -type f -executable -exec \ sed -i '1s,^#! \?/usr/bin/\(env \|\)python$,#!/usr/bin/python2,' {} \; } diff --git a/extra/ceph/ceph-mds@.service b/extra/ceph/ceph-mds@.service deleted file mode 100644 index 636c0d8f5..000000000 --- a/extra/ceph/ceph-mds@.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Ceph MDS %i -After=network.target - -[Service] -ExecStart=/usr/bin/ceph-mds -f -i %i - -[Install] -WantedBy=multi-user.target diff --git a/extra/ceph/ceph-mon@.service b/extra/ceph/ceph-mon@.service deleted file mode 100644 index 397842552..000000000 --- a/extra/ceph/ceph-mon@.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Ceph MON %i -After=network.target - -[Service] -ExecStart=/usr/bin/ceph-mon -f -i %i - -[Install] -WantedBy=multi-user.target diff --git a/extra/ceph/ceph-osd@.service b/extra/ceph/ceph-osd@.service deleted file mode 100644 index d0dc2ff76..000000000 --- a/extra/ceph/ceph-osd@.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=Ceph OSD %i -After=network.target - -[Service] -ExecStart=/usr/bin/ceph-osd -f -i %i - -[Install] -WantedBy=multi-user.target diff --git a/extra/ceph/ceph.install b/extra/ceph/ceph.install new file mode 100644 index 000000000..c01ba8db5 --- /dev/null +++ b/extra/ceph/ceph.install @@ -0,0 +1,16 @@ +# vim: ft=sh ts=2 sw=2 et: + +# arg 1: the new package version +post_install() { + systemd-sysusers ceph.conf + systemd-tmpfiles --create ceph.conf +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + if (( "$(vercmp $2 '10.2.2-1')" < 0 )); then + systemd-sysusers ceph.conf + systemd-tmpfiles --create ceph.conf + fi +} diff --git a/extra/ceph/ceph.sysusers b/extra/ceph/ceph.sysusers new file mode 100644 index 000000000..01dea498c --- /dev/null +++ b/extra/ceph/ceph.sysusers @@ -0,0 +1 @@ +u ceph - - /run/ceph diff --git a/extra/ceph/no-neon.patch b/extra/ceph/no-neon.patch index 5c4677644..45018e53b 100644 --- a/extra/ceph/no-neon.patch +++ b/extra/ceph/no-neon.patch @@ -1,12 +1,14 @@ diff -urN a/configure b/configure ---- a/configure 2015-08-26 11:51:18.000000000 -0600 -+++ b/configure 2015-09-17 20:46:42.152578212 -0600 -@@ -20782,112 +20782,8 @@ +--- a/configure 2016-06-14 05:44:54.000000000 -0600 ++++ b/configure 2016-09-10 11:30:50.025304378 -0600 +@@ -21627,204 +21627,11 @@ fi -# Find supported SIMD / NEON / SSE extensions supported by the compiler -- ++HAVE_NEON_TRUE='#' ++HAVE_NEON_FALSE= + - - - case $target_cpu in @@ -56,6 +58,45 @@ diff -urN a/configure b/configure - fi - ;; - aarch64*) +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -march=armv8-a" >&5 +-$as_echo_n "checking whether C compiler accepts -march=armv8-a... " >&6; } +-if ${ax_cv_check_cflags___march_armv8_a+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- +- ax_check_save_flags=$CFLAGS +- CFLAGS="$CFLAGS -march=armv8-a" +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : +- ax_cv_check_cflags___march_armv8_a=yes +-else +- ax_cv_check_cflags___march_armv8_a=no +-fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- CFLAGS=$ax_check_save_flags +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___march_armv8_a" >&5 +-$as_echo "$ax_cv_check_cflags___march_armv8_a" >&6; } +-if test x"$ax_cv_check_cflags___march_armv8_a" = xyes; then : +- ax_cv_support_armv8=yes +-else +- : +-fi +- +- if test x"$ax_cv_support_armv8" = x"yes"; then +- ARM_ARCH_FLAGS="-march=armv8-a" +- ARM_DEFINE_FLAGS="-DARCH_AARCH64" +- fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -march=armv8-a+simd" >&5 -$as_echo_n "checking whether C compiler accepts -march=armv8-a+simd... " >&6; } -if ${ax_cv_check_cflags___march_armv8_apsimd+:} false; then : @@ -92,13 +133,58 @@ diff -urN a/configure b/configure -fi - - if test x"$ax_cv_support_neon_ext" = x"yes"; then +- ARM_ARCH_FLAGS="$ARM_ARCH_FLAGS+simd" +- ARM_DEFINE_FLAGS="$ARM_DEFINE_FLAGS -DARM_NEON" - ARM_NEON_FLAGS="-march=armv8-a+simd -DARCH_AARCH64 -DARM_NEON" - -- ARM_FLAGS="$ARM_FLAGS $ARM_NEON_FLAGS" -- -$as_echo "#define HAVE_NEON /**/" >>confdefs.h - +- - fi +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -march=armv8-a+crc" >&5 +-$as_echo_n "checking whether C compiler accepts -march=armv8-a+crc... " >&6; } +-if ${ax_cv_check_cflags___march_armv8_apcrc+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- +- ax_check_save_flags=$CFLAGS +- CFLAGS="$CFLAGS -march=armv8-a+crc" +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : +- ax_cv_check_cflags___march_armv8_apcrc=yes +-else +- ax_cv_check_cflags___march_armv8_apcrc=no +-fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- CFLAGS=$ax_check_save_flags +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___march_armv8_apcrc" >&5 +-$as_echo "$ax_cv_check_cflags___march_armv8_apcrc" >&6; } +-if test x"$ax_cv_check_cflags___march_armv8_apcrc" = xyes; then : +- ax_cv_support_crc_ext=yes +-else +- : +-fi +- +- if test x"$ax_cv_support_crc_ext" = x"yes"; then +- ARM_ARCH_FLAGS="$ARM_ARCH_FLAGS+crc" +- ARM_CRC_FLAGS="-march=armv8-a+crc -DARCH_AARCH64" +- +-$as_echo "#define HAVE_ARMV8_CRC /**/" >>confdefs.h +- +- +- fi +- ARM_FLAGS="$ARM_ARCH_FLAGS $ARM_DEFINE_FLAGS" - ;; - esac - @@ -111,8 +197,16 @@ diff -urN a/configure b/configure - HAVE_NEON_TRUE='#' - HAVE_NEON_FALSE= -fi -+HAVE_NEON_TRUE='#' -+HAVE_NEON_FALSE= +- +- if test "x$ax_cv_support_crc_ext" = "xyes"; then +- HAVE_ARMV8_CRC_TRUE= +- HAVE_ARMV8_CRC_FALSE='#' +-else +- HAVE_ARMV8_CRC_TRUE='#' +- HAVE_ARMV8_CRC_FALSE= +-fi ++HAVE_ARMV8_CRC_TRUE='#' ++HAVE_ARMV8_CRC_FALSE=