diff options
author | Kristoffer <kristoffer@microdisko.no> | 2018-11-06 14:35:48 +0100 |
---|---|---|
committer | Sarah Brofeldt <sbrofeldt@gmail.com> | 2019-09-04 16:01:42 +0200 |
commit | 85baedaca3c03bb376a9a895fa8421a76f5f3301 (patch) | |
tree | 89b6d1fab91c82e0f7129ed696721fa6030d5ae8 /pkgs/tools/filesystems/ceph | |
parent | 432e55242e232b1872f77944933027b6d6dc2656 (diff) |
ceph: 12.2.7 -> 13.2.4
* maintain only one version * ceph-client: init * include ceph-volume python tool in output nixos/ceph: extraConfig, fix test, wait for ceph-mgr to become active * run ceph with disk group permission * add extraConfig option for the global section needed per cluster * clear up how ceph.conf is generated * fix ceph testcase
Diffstat (limited to 'pkgs/tools/filesystems/ceph')
7 files changed, 264 insertions, 260 deletions
diff --git a/pkgs/tools/filesystems/ceph/0000-ceph-volume-allow-loop.patch b/pkgs/tools/filesystems/ceph/0000-ceph-volume-allow-loop.patch new file mode 100644 index 0000000000000..d103c42b51899 --- /dev/null +++ b/pkgs/tools/filesystems/ceph/0000-ceph-volume-allow-loop.patch @@ -0,0 +1,35 @@ +diff --git a/src/ceph-disk/ceph_disk/main.py b/src/ceph-disk/ceph_disk/main.py +index f8ef35503e..2cc8a75d2b 100644 +--- a/src/ceph-disk/ceph_disk/main.py ++++ b/src/ceph-disk/ceph_disk/main.py +@@ -881,13 +881,14 @@ def is_partition(dev): + if not stmode_is_diskdevice(st.st_mode): + raise Error('not a block device', dev) + ++ major = os.major(st.st_rdev) ++ minor = os.minor(st.st_rdev) ++ + name = get_dev_name(dev) +- if os.path.exists(os.path.join(BLOCKDIR, name)): ++ if os.path.exists(os.path.join(BLOCKDIR, name)) or os.path.exists(os.path.join(BLOCKDIR, "loop%d" % minor)): + return False + + # make sure it is a partition of something else +- major = os.major(st.st_rdev) +- minor = os.minor(st.st_rdev) + if os.path.exists('/sys/dev/block/%d:%d/partition' % (major, minor)): + return True + +diff --git a/src/ceph-volume/ceph_volume/util/disk.py b/src/ceph-volume/ceph_volume/util/disk.py +index c3a7915400..9a708b05f2 100644 +--- a/src/ceph-volume/ceph_volume/util/disk.py ++++ b/src/ceph-volume/ceph_volume/util/disk.py +@@ -203,7 +203,7 @@ def is_device(dev): + # use lsblk first, fall back to using stat + TYPE = lsblk(dev).get('TYPE') + if TYPE: +- return TYPE == 'disk' ++ return TYPE == 'disk' or TYPE == 'loop' + + # fallback to stat + return _stat_is_device(os.lstat(dev).st_mode) diff --git a/pkgs/tools/filesystems/ceph/0000-dont-check-cherrypy-version.patch b/pkgs/tools/filesystems/ceph/0000-dont-check-cherrypy-version.patch new file mode 100644 index 0000000000000..154e90d914672 --- /dev/null +++ b/pkgs/tools/filesystems/ceph/0000-dont-check-cherrypy-version.patch @@ -0,0 +1,33 @@ +diff --git a/src/pybind/mgr/dashboard/module.py b/src/pybind/mgr/dashboard/module.py +index 0b53743d74..2e17ce1168 100644 +--- a/src/pybind/mgr/dashboard/module.py ++++ b/src/pybind/mgr/dashboard/module.py +@@ -28,28 +28,6 @@ except ImportError: + # To be picked up and reported by .can_run() + cherrypy = None + +- +-# The SSL code in CherryPy 3.5.0 is buggy. It was fixed long ago, +-# but 3.5.0 is still shipping in major linux distributions +-# (Fedora 27, Ubuntu Xenial), so we must monkey patch it to get SSL working. +-if cherrypy is not None: +- v = StrictVersion(cherrypy.__version__) +- # It was fixed in 3.7.0. Exact lower bound version is probably earlier, +- # but 3.5.0 is what this monkey patch is tested on. +- if v >= StrictVersion("3.5.0") and v < StrictVersion("3.7.0"): +- from cherrypy.wsgiserver.wsgiserver2 import HTTPConnection,\ +- CP_fileobject +- +- def fixed_init(hc_self, server, sock, makefile=CP_fileobject): +- hc_self.server = server +- hc_self.socket = sock +- hc_self.rfile = makefile(sock, "rb", hc_self.rbufsize) +- hc_self.wfile = makefile(sock, "wb", hc_self.wbufsize) +- hc_self.requests_seen = 0 +- +- HTTPConnection.__init__ = fixed_init +- +- + if 'COVERAGE_ENABLED' in os.environ: + import coverage + _cov = coverage.Coverage(config_file="{}/.coveragerc".format(os.path.dirname(__file__))) diff --git a/pkgs/tools/filesystems/ceph/0000-fix-SPDK-build-env.patch b/pkgs/tools/filesystems/ceph/0000-fix-SPDK-build-env.patch new file mode 100644 index 0000000000000..b04082537b53c --- /dev/null +++ b/pkgs/tools/filesystems/ceph/0000-fix-SPDK-build-env.patch @@ -0,0 +1,11 @@ +--- a/cmake/modules/BuildSPDK.cmake 2018-08-09 09:22:34.950684960 +0200 ++++ b/cmake/modules/BuildSPDK.cmake 2018-08-09 09:21:59.986964224 +0200 +@@ -16,7 +16,7 @@ + # unset $CFLAGS, otherwise it will interfere with how SPDK sets + # its include directory. + # unset $LDFLAGS, otherwise SPDK will fail to mock some functions. +- BUILD_COMMAND env -i PATH=$ENV{PATH} CC=${CMAKE_C_COMPILER} $(MAKE) EXTRA_CFLAGS="-fPIC" ++ BUILD_COMMAND env PATH=$ENV{PATH} CC=${CMAKE_C_COMPILER} $(MAKE) EXTRA_CFLAGS="-fPIC" C_OPT="-mssse3" + BUILD_IN_SOURCE 1 + INSTALL_COMMAND "true") + ExternalProject_Get_Property(spdk-ext source_dir) diff --git a/pkgs/tools/filesystems/ceph/0001-kv-RocksDBStore-API-break-additional.patch b/pkgs/tools/filesystems/ceph/0001-kv-RocksDBStore-API-break-additional.patch deleted file mode 100644 index 0b6f1d30a4c92..0000000000000 --- a/pkgs/tools/filesystems/ceph/0001-kv-RocksDBStore-API-break-additional.patch +++ /dev/null @@ -1,58 +0,0 @@ -Seulement dans ceph: ceph.old -diff -ur ceph.old/src/kv/RocksDBStore.cc ceph/src/kv/RocksDBStore.cc ---- ceph.old/src/kv/RocksDBStore.cc 1980-01-02 00:00:00.000000000 +0100 -+++ ceph/src/kv/RocksDBStore.cc 2018-01-24 14:08:35.017553372 +0100 -@@ -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<double>(rocksdb::perf_context.write_wal_time)/1000000000); -+ static_cast<double>(rocksdb::get_perf_context()->write_wal_time)/1000000000); - write_memtable_time.set_from_double( -- static_cast<double>(rocksdb::perf_context.write_memtable_time)/1000000000); -+ static_cast<double>(rocksdb::get_perf_context()->write_memtable_time)/1000000000); - write_delay_time.set_from_double( -- static_cast<double>(rocksdb::perf_context.write_delay_time)/1000000000); -+ static_cast<double>(rocksdb::get_perf_context()->write_delay_time)/1000000000); - write_pre_and_post_process_time.set_from_double( -- static_cast<double>(rocksdb::perf_context.write_pre_and_post_process_time)/1000000000); -+ static_cast<double>(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<double>(rocksdb::perf_context.write_wal_time)/1000000000); -+ static_cast<double>(rocksdb::get_perf_context()->write_wal_time)/1000000000); - write_memtable_time.set_from_double( -- static_cast<double>(rocksdb::perf_context.write_memtable_time)/1000000000); -+ static_cast<double>(rocksdb::get_perf_context()->write_memtable_time)/1000000000); - write_delay_time.set_from_double( -- static_cast<double>(rocksdb::perf_context.write_delay_time)/1000000000); -+ static_cast<double>(rocksdb::get_perf_context()->write_delay_time)/1000000000); - write_pre_and_post_process_time.set_from_double( -- static_cast<double>(rocksdb::perf_context.write_pre_and_post_process_time)/1000000000); -+ static_cast<double>(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/pkgs/tools/filesystems/ceph/0002-fix-absolute-include-path.patch b/pkgs/tools/filesystems/ceph/0002-fix-absolute-include-path.patch deleted file mode 100644 index 01aa194dddf2b..0000000000000 --- a/pkgs/tools/filesystems/ceph/0002-fix-absolute-include-path.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -ru ceph/src/key_value_store/kv_flat_btree_async.cc ceph-copy/src/key_value_store/kv_flat_btree_async.cc ---- ceph/src/key_value_store/kv_flat_btree_async.cc 1980-01-02 00:00:00.000000000 +0100 -+++ ceph-copy/src/key_value_store/kv_flat_btree_async.cc 2018-02-13 21:49:59.232860487 +0100 -@@ -15,13 +15,13 @@ - #include "key_value_store/kv_flat_btree_async.h" - #include "key_value_store/kvs_arg_types.h" - #include "include/rados/librados.hpp" --#include "/usr/include/asm-generic/errno.h" --#include "/usr/include/asm-generic/errno-base.h" - #include "common/ceph_context.h" - #include "common/Clock.h" - #include "include/types.h" - - -+#include <asm-generic/errno.h> -+#include <asm-generic/errno-base.h> - #include <string> - #include <iostream> - #include <cassert> diff --git a/pkgs/tools/filesystems/ceph/default.nix b/pkgs/tools/filesystems/ceph/default.nix index ef3e36ff6275e..b9c71c49e8071 100644 --- a/pkgs/tools/filesystems/ceph/default.nix +++ b/pkgs/tools/filesystems/ceph/default.nix @@ -1,12 +1,189 @@ -{ callPackage, fetchgit, fetchpatch, ... } @ args: +{ stdenv, runCommand, fetchurl +, ensureNewerSourcesHook +, cmake, pkgconfig +, which, git +, boost, python2Packages +, libxml2, zlib, lz4 +, openldap, lttng-ust +, babeltrace, gperf +, cunit, snappy +, rocksdb, makeWrapper +, leveldb, oathToolkit -callPackage ./generic.nix (args // rec { - version = "12.2.7"; +# Optional Dependencies +, yasm ? null, fcgi ? null, expat ? null +, curl ? null, fuse ? null +, libedit ? null, libatomic_ops ? null, kinetic-cpp-client ? null +, libs3 ? null - src = fetchgit { - url = "https://github.com/ceph/ceph.git"; - rev = "refs/tags/v${version}"; - sha256 = "031nfw2g2fdpxxx39g862phgmdx68hj9r54axazandghfhc1bzrl"; +# Mallocs +, jemalloc ? null, gperftools ? null + +# Crypto Dependencies +, cryptopp ? null +, nss ? null, nspr ? null + +# Linux Only Dependencies +, linuxHeaders, utillinux, libuuid, udev, keyutils +, libaio ? null, libxfs ? null, zfs ? null +, ... +}: + +# We must have one crypto library +assert cryptopp != null || (nss != null && nspr != null); + +with stdenv; with stdenv.lib; +let + shouldUsePkg = pkg: if pkg != null && pkg.meta.available then pkg else null; + + optYasm = shouldUsePkg yasm; + optFcgi = shouldUsePkg fcgi; + optExpat = shouldUsePkg expat; + optCurl = shouldUsePkg curl; + optFuse = shouldUsePkg fuse; + optLibedit = shouldUsePkg libedit; + optLibatomic_ops = shouldUsePkg libatomic_ops; + optKinetic-cpp-client = shouldUsePkg kinetic-cpp-client; + optLibs3 = shouldUsePkg libs3; + + optJemalloc = shouldUsePkg jemalloc; + optGperftools = shouldUsePkg gperftools; + + optCryptopp = shouldUsePkg cryptopp; + optNss = shouldUsePkg nss; + optNspr = shouldUsePkg nspr; + + optLibaio = shouldUsePkg libaio; + optLibxfs = shouldUsePkg libxfs; + optZfs = shouldUsePkg zfs; + + hasRadosgw = optFcgi != null && optExpat != null && optCurl != null && optLibedit != null; + + + # Malloc implementation (can be jemalloc, tcmalloc or null) + malloc = if optJemalloc != null then optJemalloc else optGperftools; + + # We prefer nss over cryptopp + cryptoStr = if optNss != null && optNspr != null then "nss" else + if optCryptopp != null then "cryptopp" else "none"; + + cryptoLibsMap = { + nss = [ optNss optNspr ]; + cryptopp = [ optCryptopp ]; + none = [ ]; + }; + + ceph-python-env = python2Packages.python.withPackages (ps: [ + ps.sphinx + ps.flask + ps.cython + ps.setuptools + ps.virtualenv + # Libraries needed by the python tools + ps.Mako + ps.cherrypy + ps.pecan + ps.prettytable + ps.webob + ps.bcrypt + ]); + + version = "13.2.4"; +in rec { + ceph = stdenv.mkDerivation { + name="ceph-${version}"; + + src = fetchurl { + url = "http://download.ceph.com/tarballs/ceph-${version}.tar.gz"; + sha256 = "0g2mc6rp84ia44vz8kl449820m9hmfavzfmwn8fy6li14xr8a00w"; + }; + + patches = [ + ./0000-fix-SPDK-build-env.patch + # TODO: remove when https://github.com/ceph/ceph/pull/21289 is merged + ./0000-ceph-volume-allow-loop.patch + ./0000-dont-check-cherrypy-version.patch + ]; + + nativeBuildInputs = [ + cmake + pkgconfig which git python2Packages.wrapPython makeWrapper + (ensureNewerSourcesHook { year = "1980"; }) + ]; + + buildInputs = cryptoLibsMap.${cryptoStr} ++ [ + boost ceph-python-env libxml2 optYasm optLibatomic_ops optLibs3 + malloc zlib openldap lttng-ust babeltrace gperf cunit + snappy rocksdb lz4 oathToolkit leveldb + optKinetic-cpp-client + ] ++ optionals stdenv.isLinux [ + linuxHeaders utillinux libuuid udev keyutils optLibaio optLibxfs optZfs + ] ++ optionals hasRadosgw [ + optFcgi optExpat optCurl optFuse optLibedit + ]; + + preConfigure ='' + substituteInPlace src/common/module.c --replace "/sbin/modinfo" "modinfo" + substituteInPlace src/common/module.c --replace "/sbin/modprobe" "modprobe" + # Since Boost 1.67 this seems to have changed + substituteInPlace CMakeLists.txt --replace "list(APPEND BOOST_COMPONENTS python)" "list(APPEND BOOST_COMPONENTS python27)" + substituteInPlace src/CMakeLists.txt --replace "Boost::python " "Boost::python27 " + + # for pybind/rgw to find internal dep + export LD_LIBRARY_PATH="$PWD/build/lib:$LD_LIBRARY_PATH" + # install target needs to be in PYTHONPATH for "*.pth support" check to succeed + export PYTHONPATH=$lib/lib/python2.7/site-packages/:$out/lib/python2.7/site-packages/ + + patchShebangs src/spdk + ''; + + cmakeFlags = [ + "-DWITH_SYSTEM_ROCKSDB=ON" + "-DROCKSDB_INCLUDE_DIR=${rocksdb}/include/rocksdb" + "-DWITH_SYSTEM_BOOST=ON" + "-DWITH_SYSTEMD=OFF" + "-DWITH_TESTS=OFF" + # TODO breaks with sandbox, tries to download stuff with npm + "-DWITH_MGR_DASHBOARD_FRONTEND=OFF" + ]; + + postFixup = '' + wrapPythonPrograms + wrapProgram $out/bin/ceph-mgr --prefix PYTHONPATH ":" "$lib/lib/ceph/mgr:$out/lib/python2.7/site-packages/" + ''; + + enableParallelBuilding = true; + + outputs = [ "out" "lib" "dev" "doc" "man" ]; + + meta = { + homepage = https://ceph.com/; + description = "Distributed storage system"; + license = with licenses; [ lgpl21 gpl2 bsd3 mit publicDomain ]; + maintainers = with maintainers; [ adev ak krav ]; + platforms = platforms.unix; + }; + + passthru.version = version; }; -}) + ceph-client = runCommand "ceph-client-${version}" { + meta = { + homepage = https://ceph.com/; + description = "Tools needed to mount Ceph's RADOS Block Devices"; + license = with licenses; [ lgpl21 gpl2 bsd3 mit publicDomain ]; + maintainers = with maintainers; [ adev ak krav ]; + platforms = platforms.unix; + }; + } '' + mkdir -p $out/{bin,etc,lib/python2.7/site-packages} + cp -r ${ceph}/bin/{ceph,.ceph-wrapped,rados,rbd,rbdmap} $out/bin + cp -r ${ceph}/bin/ceph-{authtool,conf,dencoder,rbdnamer,syn} $out/bin + cp -r ${ceph}/bin/rbd-replay* $out/bin + cp -r ${ceph}/lib/python2.7/site-packages $out/lib/python2.7/ + cp -r ${ceph}/etc/bash_completion.d $out/etc + # wrapPythonPrograms modifies .ceph-wrapped, so lets just update its paths + substituteInPlace $out/bin/ceph --replace ${ceph} $out + substituteInPlace $out/bin/.ceph-wrapped --replace ${ceph} $out + ''; +} diff --git a/pkgs/tools/filesystems/ceph/generic.nix b/pkgs/tools/filesystems/ceph/generic.nix deleted file mode 100644 index e8a4917be99f5..0000000000000 --- a/pkgs/tools/filesystems/ceph/generic.nix +++ /dev/null @@ -1,175 +0,0 @@ -{ stdenv, ensureNewerSourcesHook, cmake, pkgconfig -, which, git -, boost, python2Packages -, libxml2, zlib -, openldap, lttng-ust -, babeltrace, gperf -, cunit, snappy -, rocksdb, makeWrapper - -# Optional Dependencies -, yasm ? null, fcgi ? null, expat ? null -, curl ? null, fuse ? null -, libedit ? null, libatomic_ops ? null, kinetic-cpp-client ? null -, libs3 ? null - -# Mallocs -, jemalloc ? null, gperftools ? null - -# Crypto Dependencies -, cryptopp ? null -, nss ? null, nspr ? null - -# Linux Only Dependencies -, linuxHeaders, libuuid, udev, keyutils, libaio ? null, libxfs ? null -, zfs ? null - -# Version specific arguments -, version, src ? [], buildInputs ? [] -, ... -}: - -# We must have one crypto library -assert cryptopp != null || (nss != null && nspr != null); - -with stdenv; -with stdenv.lib; -let - - shouldUsePkg = pkg_: let pkg = (builtins.tryEval pkg_).value; - in if lib.any (lib.meta.platformMatch stdenv.hostPlatform) pkg.meta.platforms - then pkg else null; - - optYasm = shouldUsePkg yasm; - optFcgi = shouldUsePkg fcgi; - optExpat = shouldUsePkg expat; - optCurl = shouldUsePkg curl; - optFuse = shouldUsePkg fuse; - optLibedit = shouldUsePkg libedit; - optLibatomic_ops = shouldUsePkg libatomic_ops; - optKinetic-cpp-client = shouldUsePkg kinetic-cpp-client; - optLibs3 = if versionAtLeast version "10.0.0" then null else shouldUsePkg libs3; - - optJemalloc = shouldUsePkg jemalloc; - optGperftools = shouldUsePkg gperftools; - - optCryptopp = shouldUsePkg cryptopp; - optNss = shouldUsePkg nss; - optNspr = shouldUsePkg nspr; - - optLibaio = shouldUsePkg libaio; - optLibxfs = shouldUsePkg libxfs; - optZfs = shouldUsePkg zfs; - - hasRadosgw = optFcgi != null && optExpat != null && optCurl != null && optLibedit != null; - - - # TODO: Reenable when kinetic support is fixed - #hasKinetic = versionAtLeast version "9.0.0" && optKinetic-cpp-client != null; - hasKinetic = false; - - # Malloc implementation (can be jemalloc, tcmalloc or null) - malloc = if optJemalloc != null then optJemalloc else optGperftools; - - # We prefer nss over cryptopp - cryptoStr = if optNss != null && optNspr != null then "nss" else - if optCryptopp != null then "cryptopp" else "none"; - cryptoLibsMap = { - nss = [ optNss optNspr ]; - cryptopp = [ optCryptopp ]; - none = [ ]; - }; - - ceph-python-env = python2Packages.python.withPackages (ps: [ - ps.sphinx - ps.flask - ps.cython - ps.setuptools - ps.pip - # Libraries needed by the python tools - ps.Mako - ps.pecan - ps.prettytable - ps.webob - ps.cherrypy - ]); - -in -stdenv.mkDerivation { - pname = "ceph"; - inherit version; - - inherit src; - - patches = [ - # ./ceph-patch-cmake-path.patch - ./0001-kv-RocksDBStore-API-break-additional.patch - ] ++ optionals stdenv.isLinux [ - ./0002-fix-absolute-include-path.patch - ]; - - nativeBuildInputs = [ - cmake - pkgconfig which git python2Packages.wrapPython makeWrapper - (ensureNewerSourcesHook { year = "1980"; }) - ]; - - buildInputs = buildInputs ++ cryptoLibsMap.${cryptoStr} ++ [ - boost ceph-python-env libxml2 optYasm optLibatomic_ops optLibs3 - malloc zlib openldap lttng-ust babeltrace gperf cunit - snappy rocksdb - ] ++ optionals stdenv.isLinux [ - linuxHeaders libuuid udev keyutils optLibaio optLibxfs optZfs - ] ++ optionals hasRadosgw [ - optFcgi optExpat optCurl optFuse optLibedit - ] ++ optionals hasKinetic [ - optKinetic-cpp-client - ]; - - - preConfigure ='' - # rip off submodule that interfer with system libs - rm -rf src/boost - rm -rf src/rocksdb - - # require LD_LIBRARY_PATH for cython to find internal dep - export LD_LIBRARY_PATH="$PWD/build/lib:$LD_LIBRARY_PATH" - - # requires setuptools due to embedded in-cmake setup.py usage - export PYTHONPATH="${python2Packages.setuptools}/lib/python2.7/site-packages/:$PYTHONPATH" - ''; - - cmakeFlags = [ - "-DENABLE_GIT_VERSION=OFF" - "-DWITH_SYSTEM_BOOST=ON" - "-DWITH_SYSTEM_ROCKSDB=ON" - "-DWITH_LEVELDB=OFF" - - # enforce shared lib - "-DBUILD_SHARED_LIBS=ON" - - # disable cephfs, cmake build broken for now - "-DWITH_CEPHFS=OFF" - "-DWITH_LIBCEPHFS=OFF" - ]; - - postFixup = '' - wrapPythonPrograms - wrapProgram $out/bin/ceph-mgr --set PYTHONPATH $out/${python2Packages.python.sitePackages} - ''; - - enableParallelBuilding = true; - - outputs = [ "dev" "lib" "out" "doc" ]; - - meta = { - homepage = https://ceph.com/; - description = "Distributed storage system"; - license = licenses.lgpl21; - maintainers = with maintainers; [ adev ak ]; - platforms = platforms.unix; - broken = true; - }; - - passthru.version = version; -} |