From ce3a29604824805875195ea4e8b3417137149a80 Mon Sep 17 00:00:00 2001 From: Giovanni Harting <539@idlegandalf.com> Date: Fri, 22 Feb 2019 01:39:17 +0100 Subject: [PATCH] added ceph-git, not compiling yet --- ceph-git/PKGBUILD | 244 ++++++++++++++++++ ceph-git/boost-1.67.patch | 11 + ceph-git/ceph.sysusers | 1 + ceph-git/fix-python2-paths.patch | 61 +++++ ceph-git/fix-sphinx-binary-name.patch | 11 + .../remove-distro-version-detection.patch | 10 + 6 files changed, 338 insertions(+) create mode 100644 ceph-git/PKGBUILD create mode 100644 ceph-git/boost-1.67.patch create mode 100644 ceph-git/ceph.sysusers create mode 100644 ceph-git/fix-python2-paths.patch create mode 100644 ceph-git/fix-sphinx-binary-name.patch create mode 100644 ceph-git/remove-distro-version-detection.patch diff --git a/ceph-git/PKGBUILD b/ceph-git/PKGBUILD new file mode 100644 index 0000000..0f848ba --- /dev/null +++ b/ceph-git/PKGBUILD @@ -0,0 +1,244 @@ +# Maintainer: Thore Bödecker +# Contributor: Sébastien "Seblu" Luttringer + +pkgbase=ceph-git +pkgname=(ceph-git ceph-libs-git) +pkgver=14.0.1.r3999.g38e25b5837 +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' 'python2-cherrypy' + 'python2-jinja' 'python2-nose' 'python2-pecan' 'python2-pip' 'python2-bcrypt' + 'python2-prettytable' 'python2-pyopenssl' 'python2-setuptools' 'python2-routes' + 'python2-sphinx' 'python2-tox' 'python2-virtualenv' 'python2-werkzeug' 'sed' + 'snappy' 'socat' 'systemd' 'valgrind' 'xfsprogs' 'xmlstarlet' 'yasm' + 'zlib' 'zstd' 'cunit' 'oath-toolkit' 'fontconfig' 'librabbitmq-c') +options=('emptydirs') +source=("git+https://github.com/ceph/ceph.git" + "git+https://github.com/ceph/ceph-object-corpus.git" + "git+https://github.com/ceph/civetweb" + "git+https://github.com/ceph/jerasure.git#branch=v2-ceph" + "git+https://github.com/ceph/gf-complete.git#branch=v3-ceph" + "git+https://github.com/ceph/rocksdb" + "git+https://github.com/ceph/ceph-erasure-code-corpus.git" + "git+https://github.com/ceph/googletest#branch=ceph-release-1.7.x" + "git+https://github.com/ceph/spdk.git" + "git+https://github.com/ceph/xxHash.git" + "git+https://github.com/ceph/isa-l" + "git+https://github.com/ceph/lua.git#branch=lua-5.3-ceph" + "git+https://github.com/facebook/zstd" + "git+https://github.com/01org/isa-l_crypto" + "git+https://github.com/ceph/blkin" + "git+https://github.com/ceph/rapidjson" + "git+https://github.com/ceph/dmclock.git" + "git+https://github.com/ceph/seastar.git" + "git+https://github.com/ceph/c-ares.git" + 'ceph.sysusers' + 'boost-1.67.patch' + 'fix-python2-paths.patch' + 'remove-distro-version-detection.patch') +sha512sums=('SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + '4354001c1abd9a0c385ba7bd529e3638fb6660b6a88d4e49706d4ac21c81b8e829303a20fb5445730bdac18c4865efb10bc809c1cd56d743c12aa9a52e160049' + 'b886c3f2b2a2b32d4033225b5f28cef98ca96e3f4fe2d04cfdbdb3141bbefd81895284abe9c9b75dcad156d54a93dc938bd8d9a45056b4de12855bbbdf0870ca' + '0299a9c17417463b1c1b832499f83d8e4248772b401a3a5649103918c06114e23e56c442ac351fbba30113575916d5cd008410514d55a09f465b09b5a499ca6b' + '02c9e8fd3c23fb4c9c4c576ee6d06e8525ca31decfd964fb7231e73c98fe2987a483dda680969752186f0918f47d9af4fb09a4901e5319077f45d870906716da') + +pkgver() { + cd "${srcdir}/ceph" + git describe --long | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' +} + +prepare() { + cd "${srcdir}/ceph" + # put all submodules in the right places + SRC_SUBMODULES=($(awk '/^\[submodule/ {print substr($2,2,length($2)-3)}' ${srcdir}/ceph/.gitmodules | xargs -L1 basename)) + for SUBMODULE in ${SRC_SUBMODULES[@]}; do + SUBMODULE_PATH=$(awk "/path\s*=.*${SUBMODULE}$/ {print \$3}" "${srcdir}/ceph/.gitmodules") + rm -fr "${srcdir}/ceph/${SUBMODULE_PATH}" + mv "${srcdir}/${SUBMODULE}" "${srcdir}/ceph/${SUBMODULE_PATH}" + done + + git submodule update --init + + # 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 + + # 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 -> python2 + for file in \ + src/ceph-create-keys \ + src/mount.fuse.ceph + do + sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' "${file}" + done +} + +build() { + cd "${srcdir}/ceph" + + 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 \ + -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/python2.7 \ + -DWITH_RADOSGW=ON \ + -DWITH_RADOSGW_BEAST_FRONTEND=OFF \ + -DWITH_RDMA=OFF \ + -DWITH_SSL=ON \ + -DWITH_SYSTEM_BOOST=ON \ + -DWITH_SYSTEMD=ON \ + -DWITH_TESTS=ON \ + -DWITH_XFS=ON \ + -DENABLE_SHARED=ON \ + -DWITH_MGR_DASHBOARD_FRONTEND=OFF \ + .. + + make all +} + +check() { + cd "${srcdir}/ceph/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-git() { + depends=('boost-libs' 'curl' 'glibc' 'keyutils' 'leveldb' 'libaio' + 'libutil-linux' 'lz4' 'nss' 'python2' 'xfsprogs' 'oath-toolkit') + + cd "${srcdir}/ceph/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-git() { + depends=('ceph-libs' 'boost-libs' 'curl' 'fuse2' 'glibc' 'gperftools' + 'keyutils' 'leveldb' 'libaio' 'libsystemd' 'libutil-linux' 'python2-routes' + 'lsb-release' 'ncurses' 'nss' 'python2' 'python2-cherrypy' 'python2-bcrypt' + 'python2-jinja' 'python2-mako' 'python2-pecan' 'python2-prettytable' + 'python2-pyopenssl' 'python2-setuptools' 'python2-singledispatch' + 'python2-webob' 'python2-werkzeug' 'snappy' 'xfsprogs' 'python2-requests') + + cd "${srcdir}/ceph/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},python2.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: diff --git a/ceph-git/boost-1.67.patch b/ceph-git/boost-1.67.patch new file mode 100644 index 0000000..99c7d84 --- /dev/null +++ b/ceph-git/boost-1.67.patch @@ -0,0 +1,11 @@ +--- a/src/test/librbd/test_mock_Journal.cc 2018-06-03 01:56:35.407273176 +0300 ++++ b/src/test/librbd/test_mock_Journal.cc 2018-06-03 01:56:29.800506081 +0300 +@@ -1,6 +1,8 @@ + // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- + // vim: ts=8 sw=2 smarttab + ++#define BOOST_BIND_NO_PLACEHOLDERS ++ + #include "test/librbd/test_mock_fixture.h" + #include "test/journal/mock/MockJournaler.h" + #include "test/librbd/test_support.h" diff --git a/ceph-git/ceph.sysusers b/ceph-git/ceph.sysusers new file mode 100644 index 0000000..0cf6e7a --- /dev/null +++ b/ceph-git/ceph.sysusers @@ -0,0 +1 @@ +u ceph 340 - /run/ceph diff --git a/ceph-git/fix-python2-paths.patch b/ceph-git/fix-python2-paths.patch new file mode 100644 index 0000000..81a106c --- /dev/null +++ b/ceph-git/fix-python2-paths.patch @@ -0,0 +1,61 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -58,7 +58,7 @@ endif(WITH_CCACHE) + option(WITH_MANPAGE "Build man pages." ON) + if(WITH_MANPAGE) + find_program(SPHINX_BUILD +- NAMES sphinx-build sphinx-build-3) ++ NAMES sphinx-build2 sphinx-build-3) + if(NOT SPHINX_BUILD) + message(FATAL_ERROR "Can't find sphinx-build.") + endif(NOT SPHINX_BUILD) +@@ -272,7 +272,7 @@ if(WITH_BLUESTORE) + endif() + endif() + +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64|aarch64") ++if(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64|aarch64|x86_64-native-linuxapp-gcc") + option(WITH_SPDK "Enable SPDK" ON) + else() + option(WITH_SPDK "Enable SPDK" OFF) +--- a/src/tools/setup-virtualenv.sh ++++ b/src/tools/setup-virtualenv.sh +@@ -58,10 +58,10 @@ if [ -z "$DIR" ] ; then + fi + rm -fr $DIR + mkdir -p $DIR +-virtualenv --python $PYTHON_BINARY $DIR ++virtualenv2 --python $PYTHON_BINARY $DIR + . $DIR/bin/activate + +-if pip --help | grep -q disable-pip-version-check; then ++if pip2 --help | grep -q disable-pip-version-check; then + DISABLE_PIP_VERSION_CHECK=--disable-pip-version-check + else + DISABLE_PIP_VERSION_CHECK= +@@ -69,9 +69,9 @@ fi + + # older versions of pip will not install wrap_console scripts + # when using wheel packages +-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade 'pip >= 6.1' ++pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install --upgrade 'pip >= 6.1' + +-if pip --help | grep -q disable-pip-version-check; then ++if pip2 --help | grep -q disable-pip-version-check; then + DISABLE_PIP_VERSION_CHECK=--disable-pip-version-check + else + DISABLE_PIP_VERSION_CHECK= +@@ -81,10 +81,10 @@ if test -d wheelhouse ; then + export NO_INDEX=--no-index + fi + +-pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse 'tox >=2.9.1' ++pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse 'tox >=2.9.1' + if test -f requirements.txt ; then + if ! test -f wheelhouse/md5 || ! md5sum -c wheelhouse/md5 > /dev/null; then + NO_INDEX='' + fi +- pip $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse -r requirements.txt ++ pip2 $DISABLE_PIP_VERSION_CHECK --log $DIR/log.txt install $NO_INDEX --find-links=file://$(pwd)/wheelhouse -r requirements.txt + fi + diff --git a/ceph-git/fix-sphinx-binary-name.patch b/ceph-git/fix-sphinx-binary-name.patch new file mode 100644 index 0000000..66e37df --- /dev/null +++ b/ceph-git/fix-sphinx-binary-name.patch @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt 2017-09-26 18:27:07.000000000 +0200 ++++ b/CMakeLists.txt 2017-10-06 14:10:11.032378659 +0200 +@@ -63,7 +63,7 @@ + option(WITH_MANPAGE "Build man pages." ON) + if(WITH_MANPAGE) + find_program(SPHINX_BUILD +- sphinx-build) ++ sphinx-build2) + if(NOT SPHINX_BUILD) + message(FATAL_ERROR "Can't find sphinx-build.") + endif(NOT SPHINX_BUILD) diff --git a/ceph-git/remove-distro-version-detection.patch b/ceph-git/remove-distro-version-detection.patch new file mode 100644 index 0000000..df72305 --- /dev/null +++ b/ceph-git/remove-distro-version-detection.patch @@ -0,0 +1,10 @@ +--- a/src/common/util.cc 2018-05-29 14:04:02.000000000 +0200 ++++ b/src/common/util.cc 2018-06-04 13:45:52.279495745 +0200 +@@ -96,7 +96,6 @@ static bool os_release_parse(map kvm = { + { "distro", "ID=" }, + { "distro_description", "PRETTY_NAME=" }, +- { "distro_version", "VERSION_ID=" } + }; + + FILE *fp = fopen("/etc/os-release", "r");