From 5b0b520e22cc4d8e08078e50e036b093efdde49c Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Wed, 21 Feb 2018 15:24:00 +0100 Subject: gnu: ceph: Update to 12.2.4. * gnu/packages/patches/ceph-disable-cpu-optimizations.patch: Adjust to upstream changes. * gnu/packages/patches/ceph-disable-unittest-throttle.patch: Delete file. * gnu/packages/patches/ceph-rocksdb-compat.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/storage.scm (ceph): Update to 12.2.4. [source](patches): Adjust. [arguments]: Add "-DWITH_BABELTRACE=OFF" in #:configure-flags. Build with CMAKE-3.11. Adjust file substitutions. Wrap 'ceph' executable. [native-inputs]: Add GPERF. [inputs]: Replace BOOST with BOOST-1.66. Add PYTHON2-PRETTYTABLE. --- gnu/local.mk | 2 +- .../patches/ceph-disable-cpu-optimizations.patch | 64 +++++++++------------- .../patches/ceph-disable-unittest-throttle.patch | 52 ------------------ gnu/packages/patches/ceph-rocksdb-compat.patch | 63 +++++++++++++++++++++ gnu/packages/storage.scm | 42 ++++++++------ 5 files changed, 116 insertions(+), 107 deletions(-) delete mode 100644 gnu/packages/patches/ceph-disable-unittest-throttle.patch create mode 100644 gnu/packages/patches/ceph-rocksdb-compat.patch diff --git a/gnu/local.mk b/gnu/local.mk index 2ef9b68590..d091a89b82 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -581,7 +581,7 @@ dist_patch_DATA = \ %D%/packages/patches/cdparanoia-fpic.patch \ %D%/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch \ %D%/packages/patches/ceph-disable-cpu-optimizations.patch \ - %D%/packages/patches/ceph-disable-unittest-throttle.patch \ + %D%/packages/patches/ceph-rocksdb-compat.patch \ %D%/packages/patches/ceph-skip-collect-sys-info-test.patch \ %D%/packages/patches/ceph-skip-unittest_blockdev.patch \ %D%/packages/patches/chmlib-inttypes.patch \ diff --git a/gnu/packages/patches/ceph-disable-cpu-optimizations.patch b/gnu/packages/patches/ceph-disable-cpu-optimizations.patch index f33eb629d6..421b1d4fe1 100644 --- a/gnu/packages/patches/ceph-disable-cpu-optimizations.patch +++ b/gnu/packages/patches/ceph-disable-cpu-optimizations.patch @@ -1,5 +1,4 @@ -Disable CPU optimizations not supported by all x86_64 systems. Also -don't add anything for i686. +Disable CPU optimizations not supported by all x86_64 systems. --- a/cmake/modules/SIMDExt.cmake 2017-03-23 22:22:58.254071694 +0100 +++ b/cmake/modules/SIMDExt.cmake 2017-03-23 22:23:22.446848845 +0100 @@ -15,39 +14,30 @@ don't add anything for i686. # # SIMD_COMPILE_FLAGS # -@@ -73,7 +68,7 @@ - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mfpu=neon") - endif() - --elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64") -+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64") - set(HAVE_INTEL 1) - CHECK_C_COMPILER_FLAG(-msse HAVE_INTEL_SSE) - if(HAVE_INTEL_SSE) -@@ -83,26 +78,6 @@ - if(HAVE_INTEL_SSE2) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse2") - endif() -- CHECK_C_COMPILER_FLAG(-msse3 HAVE_INTEL_SSE3) -- if(HAVE_INTEL_SSE3) -- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse3") -- endif() -- CHECK_C_COMPILER_FLAG(-mssse3 HAVE_INTEL_SSSE3) -- if(HAVE_INTEL_SSSE3) -- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mssse3") -- endif() -- CHECK_C_COMPILER_FLAG(-mpclmul HAVE_INTEL_PCLMUL) -- if(HAVE_INTEL_PCLMUL) -- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mpclmul") -- endif() -- CHECK_C_COMPILER_FLAG(-msse4.1 HAVE_INTEL_SSE4_1) -- if(HAVE_INTEL_SSE4_1) -- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.1") -- endif() -- CHECK_C_COMPILER_FLAG(-msse4.2 HAVE_INTEL_SSE4_2) -- if(HAVE_INTEL_SSE4_2) -- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.2") -- endif() +@@ -85,26 +80,6 @@ + if(HAVE_INTEL_SSE2) + set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse2") + endif() +- CHECK_C_COMPILER_FLAG(-msse3 HAVE_INTEL_SSE3) +- if(HAVE_INTEL_SSE3) +- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse3") +- endif() +- CHECK_C_COMPILER_FLAG(-mssse3 HAVE_INTEL_SSSE3) +- if(HAVE_INTEL_SSSE3) +- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mssse3") +- endif() +- CHECK_C_COMPILER_FLAG(-mpclmul HAVE_INTEL_PCLMUL) +- if(HAVE_INTEL_PCLMUL) +- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mpclmul") +- endif() +- CHECK_C_COMPILER_FLAG(-msse4.1 HAVE_INTEL_SSE4_1) +- if(HAVE_INTEL_SSE4_1) +- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.1") +- endif() +- CHECK_C_COMPILER_FLAG(-msse4.2 HAVE_INTEL_SSE4_2) +- if(HAVE_INTEL_SSE4_2) +- set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.2") +- endif() + endif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64") + endif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(powerpc|ppc)64le") - set(HAVE_PPC64LE 1) - message(STATUS " we are ppc64le") diff --git a/gnu/packages/patches/ceph-disable-unittest-throttle.patch b/gnu/packages/patches/ceph-disable-unittest-throttle.patch deleted file mode 100644 index 08ae5f9e24..0000000000 --- a/gnu/packages/patches/ceph-disable-unittest-throttle.patch +++ /dev/null @@ -1,52 +0,0 @@ -FIXME: This test broke after the gcc-5/glibc-2.25 core-updates merge. -Not sure what's going on here, it hangs after spawning the first thread. - -diff --git a/src/test/common/Throttle.cc b/src/test/common/Throttle.cc -index 5b6d73217d..40a477b2a3 100644 ---- a/src/test/common/Throttle.cc -+++ b/src/test/common/Throttle.cc -@@ -216,44 +216,6 @@ TEST_F(ThrottleTest, wait) { - } while(!waited); - } - --TEST_F(ThrottleTest, destructor) { -- Thread_get *t; -- { -- int64_t throttle_max = 10; -- Throttle *throttle = new Throttle(g_ceph_context, "throttle", throttle_max); -- -- ASSERT_FALSE(throttle->get(5)); -- -- t = new Thread_get(*throttle, 7); -- t->create("t_throttle"); -- bool blocked; -- useconds_t delay = 1; -- do { -- usleep(delay); -- if (throttle->get_or_fail(1)) { -- throttle->put(1); -- blocked = false; -- } else { -- blocked = true; -- } -- delay *= 2; -- } while(!blocked); -- delete throttle; -- } -- -- { // -- // The thread is left hanging, otherwise it will abort(). -- // Deleting the Throttle on which it is waiting creates a -- // inconsistency that will be detected: the Throttle object that -- // it references no longer exists. -- // -- pthread_t id = t->get_thread_id(); -- ASSERT_EQ(pthread_kill(id, 0), 0); -- delete t; -- ASSERT_EQ(pthread_kill(id, 0), 0); -- } --} -- - std::pair > test_backoff( - double low_threshhold, - double high_threshhold, diff --git a/gnu/packages/patches/ceph-rocksdb-compat.patch b/gnu/packages/patches/ceph-rocksdb-compat.patch new file mode 100644 index 0000000000..1a3c6b0b23 --- /dev/null +++ b/gnu/packages/patches/ceph-rocksdb-compat.patch @@ -0,0 +1,63 @@ +Fix compatibility with newer versions of RocksDB. + +Adapted from this upstream patch, with some additional changes for 12.2: +https://github.com/ceph/ceph/commit/9d73a7121fdb1ae87cb1aa6f7d9d7a13f329ae68 + +diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc +index 8660afe1886d..bc0de79e23cb 100644 +--- a/src/kv/RocksDBStore.cc ++++ b/src/kv/RocksDBStore.cc +@@ -505,7 +505,7 @@ + // considering performance overhead, default is disabled + if (g_conf->rocksdb_perf) { + rocksdb::SetPerfLevel(rocksdb::PerfLevel::kEnableTimeExceptForMutex); +- rocksdb::perf_context.Reset(); ++ rocksdb::get_perf_context()->Reset(); + } + + RocksDBTransactionImpl * _t = +@@ -532,13 +532,13 @@ + utime_t write_wal_time; + utime_t write_pre_and_post_process_time; + write_wal_time.set_from_double( +- static_cast(rocksdb::perf_context.write_wal_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_wal_time)/1000000000); + write_memtable_time.set_from_double( +- static_cast(rocksdb::perf_context.write_memtable_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_memtable_time)/1000000000); + write_delay_time.set_from_double( +- static_cast(rocksdb::perf_context.write_delay_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_delay_time)/1000000000); + write_pre_and_post_process_time.set_from_double( +- static_cast(rocksdb::perf_context.write_pre_and_post_process_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_pre_and_post_process_time)/1000000000); + logger->tinc(l_rocksdb_write_memtable_time, write_memtable_time); + logger->tinc(l_rocksdb_write_delay_time, write_delay_time); + logger->tinc(l_rocksdb_write_wal_time, write_wal_time); +@@ -558,7 +558,7 @@ + // considering performance overhead, default is disabled + if (g_conf->rocksdb_perf) { + rocksdb::SetPerfLevel(rocksdb::PerfLevel::kEnableTimeExceptForMutex); +- rocksdb::perf_context.Reset(); ++ rocksdb::get_perf_context()->Reset(); + } + + RocksDBTransactionImpl * _t = +@@ -586,13 +586,13 @@ + utime_t write_wal_time; + utime_t write_pre_and_post_process_time; + write_wal_time.set_from_double( +- static_cast(rocksdb::perf_context.write_wal_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_wal_time)/1000000000); + write_memtable_time.set_from_double( +- static_cast(rocksdb::perf_context.write_memtable_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_memtable_time)/1000000000); + write_delay_time.set_from_double( +- static_cast(rocksdb::perf_context.write_delay_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_delay_time)/1000000000); + write_pre_and_post_process_time.set_from_double( +- static_cast(rocksdb::perf_context.write_pre_and_post_process_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_pre_and_post_process_time)/1000000000); + logger->tinc(l_rocksdb_write_memtable_time, write_memtable_time); + logger->tinc(l_rocksdb_write_delay_time, write_delay_time); + logger->tinc(l_rocksdb_write_wal_time, write_wal_time); diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm index bee349f6f6..54d91c1f3c 100644 --- a/gnu/packages/storage.scm +++ b/gnu/packages/storage.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 Marius Bakke +;;; Copyright © 2017, 2018 Marius Bakke ;;; Copyright © 2017 Rutger Helling ;;; ;;; This file is part of GNU Guix. @@ -29,6 +29,7 @@ (define-module (gnu packages storage) #:use-module (gnu packages bdw-gc) #:use-module (gnu packages boost) #:use-module (gnu packages check) + #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages crypto) #:use-module (gnu packages cryptsetup) @@ -36,6 +37,7 @@ (define-module (gnu packages storage) #:use-module (gnu packages databases) #:use-module (gnu packages disk) #:use-module (gnu packages gnuzilla) + #:use-module (gnu packages gperf) #:use-module (gnu packages jemalloc) #:use-module (gnu packages linux) #:use-module (gnu packages lua) @@ -50,18 +52,18 @@ (define-module (gnu packages storage) (define-public ceph (package (name "ceph") - (version "12.0.2") + (version "12.2.4") (source (origin (method url-fetch) (uri (string-append "https://download.ceph.com/tarballs/ceph-" version ".tar.gz")) (sha256 (base32 - "0l9v072ba28i984y5rwny9i11nmpyx5bl7awxg48plyadm2l3g14")) + "13hv8scaxc1gdvrhzbfnsk4yy3pla6n1i4j4j4zf7schmbf0j8mp")) (patches (search-patches "ceph-skip-unittest_blockdev.patch" "ceph-skip-collect-sys-info-test.patch" - "ceph-disable-unittest-throttle.patch" + "ceph-rocksdb-compat.patch" "ceph-disable-cpu-optimizations.patch")) (modules '((guix build utils))) (snippet @@ -74,7 +76,6 @@ (define-public ceph ;"src/xxHash" ;"src/zstd" ;"src/civetweb" - ;"src/Beast" "src/test/downloads" "src/dpdk" "src/spdk" @@ -105,6 +106,7 @@ (define-public ceph "-DWITH_SYSTEM_BOOST=ON" "-DWITH_PYTHON3=ON" ;; TODO: Enable these when available in Guix. + "-DWITH_BABELTRACE=OFF" "-DWITH_LTTNG=OFF" "-DWITH_XFS=OFF" "-DWITH_XIO=OFF" @@ -114,6 +116,7 @@ (define-public ceph ;; for details. Disable tests until ;; resolved. #:tests? #f + #:cmake ,cmake-3.11 #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-source @@ -152,21 +155,17 @@ (define-public ceph (substitute* "src/test/test_subprocess.cc" (("/bin/sh") (which "sh"))) - (substitute* "src/test/ceph_objectstore_tool.py" + (substitute* "qa/standalone/special/ceph_objectstore_tool.py" (("/bin/rm") (which "rm"))) (substitute* "src/ceph-disk/ceph_disk/main.py" (("/bin/mount") "mount") (("/bin/umount") "umount") (("/sbin/blkid") (which "blkid")) + (("'cryptsetup'") (string-append "'" (which "cryptsetup") "'")) (("'sgdisk'") (string-append "'" (which "sgdisk") "'")) (("'parted'") (string-append "'" (which "parted") "'")) (("'udevadm'") (string-append "'" (which "udevadm") "'"))) - (substitute* "src/ceph-disk-udev" - (("/sbin/cryptsetup") (which "cryptsetup")) - (("/usr/sbin/sgdisk") (which "sgdisk")) - (("/usr/sbin/ceph-disk") - (string-append out "/bin/ceph-disk"))) (substitute* "udev/50-rbd.rules" (("/usr/bin/ceph-rbdnamer") (string-append out "/bin/ceph-rbdnamer"))) @@ -263,23 +262,31 @@ (define-public ceph (getenv "PYTHONPATH"))) #t))) (add-after 'install 'wrap-python-scripts - (lambda* (#:key outputs #:allow-other-keys) + (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) + (ceph (string-append out "/bin/ceph")) (ceph-disk (string-append out "/bin/ceph-disk")) (ceph-detect-init (string-append out "/bin/ceph-detect-init")) - (PYTHONPATH (string-append - out "/lib/python2.7/site-packages"))) + (prettytable (assoc-ref inputs "python2-prettytable")) + + (sitedir (lambda (package) + (string-append package + "/lib/python2.7/site-packages"))) + (PYTHONPATH (string-append + (sitedir out) ":" + (sitedir prettytable)))) (for-each (lambda (executable) (wrap-program executable `("PYTHONPATH" ":" prefix (,PYTHONPATH)))) - (list ceph-disk ceph-detect-init)) + (list ceph ceph-disk ceph-detect-init)) #t)))))) (outputs '("out" "lib")) (native-inputs - `(("pkg-config" ,pkg-config) + `(("gperf" ,gperf) + ("pkg-config" ,pkg-config) ("python-cython" ,python-cython) ("python-sphinx" ,python-sphinx) ("yasm" ,yasm) @@ -310,7 +317,7 @@ (define-public ceph ("python2-testtools" ,python2-testtools) ("python2-tox" ,python2-tox))) (inputs - `(("boost" ,boost) + `(("boost" ,boost-1.66) ("curl" ,curl) ("cryptsetup" ,cryptsetup) ("expat" ,expat) @@ -329,6 +336,7 @@ (define-public ceph ("nss" ,nss) ("parted" ,parted) ("python@2" ,python-2) + ("python2-prettytable" ,python2-prettytable) ;used by ceph_daemon.py ("python@3" ,python-3) ("rocksdb" ,rocksdb) ("snappy" ,snappy) -- cgit v1.2.3