diff options
-rw-r--r-- | pkgs/tools/filesystems/ceph/generic.nix | 79 |
1 files changed, 54 insertions, 25 deletions
diff --git a/pkgs/tools/filesystems/ceph/generic.nix b/pkgs/tools/filesystems/ceph/generic.nix index 5d4932e36b434..9dbc85a32435c 100644 --- a/pkgs/tools/filesystems/ceph/generic.nix +++ b/pkgs/tools/filesystems/ceph/generic.nix @@ -26,32 +26,61 @@ # We must have one crypto library assert cryptopp != null || (nss != null && nspr != null); +with stdenv; with stdenv.lib; let - hasServer = snappy != null && leveldb != null; + optSnappy = shouldUsePkg snappy; + optLeveldb = shouldUsePkg leveldb; + optYasm = shouldUsePkg yasm; + optFcgi = shouldUsePkg fcgi; + optExpat = shouldUsePkg expat; + optCurl = shouldUsePkg curl; + optFuse = shouldUsePkg fuse; + optAccelio = shouldUsePkg accelio; + optLibibverbs = shouldUsePkg libibverbs; + optLibrdmacm = shouldUsePkg librdmacm; + optLibedit = shouldUsePkg libedit; + optLibatomic_ops = shouldUsePkg libatomic_ops; + optKinetic-cpp-client = shouldUsePkg kinetic-cpp-client; + optRocksdb = shouldUsePkg rocksdb; + 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; + + hasServer = optSnappy != null && optLeveldb != null; hasMon = hasServer; hasMds = hasServer; hasOsd = hasServer; - hasRadosgw = fcgi != null && expat != null && curl != null && libedit != null; + hasRadosgw = optFcgi != null && optExpat != null && optCurl != null && optLibedit != null; hasXio = (stdenv.isLinux || stdenv.isFreeBSD) && versionAtLeast version "0.95" && - accelio != null && libibverbs != null && librdmacm != null; + optAccelio != null && optLibibverbs != null && optLibrdmacm != null; - hasRocksdb = versionAtLeast version "0.95" && rocksdb != null; + hasRocksdb = versionAtLeast version "0.95" && optRocksdb != null; # TODO: Reenable when kinetic support is fixed - hasKinetic = versionAtLeast version "0.95" && kinetic-cpp-client != null && false; + #hasKinetic = versionAtLeast version "0.95" && optKinetic-cpp-client != null; + hasKinetic = false; # Malloc implementation (can be jemalloc, tcmalloc or null) - malloc = if jemalloc != null then jemalloc else gperftools; + malloc = if optJemalloc != null then optJemalloc else optGperftools; # We prefer nss over cryptopp - cryptoStr = if nss != null && nspr != null then "nss" else - if cryptopp != null then "cryptopp" else "none"; + cryptoStr = if optNss != null && optNspr != null then "nss" else + if optCryptopp != null then "cryptopp" else "none"; cryptoLibsMap = { - nss = [ nss nspr ]; - cryptopp = [ cryptopp ]; + nss = [ optNss optNspr ]; + cryptopp = [ optCryptopp ]; none = [ ]; }; @@ -71,22 +100,22 @@ stdenv.mkDerivation { nativeBuildInputs = [ autoconf automake makeWrapper pkgconfig libtool which ]; buildInputs = buildInputs ++ cryptoLibsMap.${cryptoStr} ++ [ - boost python libxml2 yasm libatomic_ops libs3 malloc pythonPackages.flask zlib + boost python libxml2 optYasm optLibatomic_ops optLibs3 malloc pythonPackages.flask zlib ] ++ optional (versionAtLeast version "9.0.0") [ git # Used for the gitversion string pythonPackages.sphinx # Used for docs ] ++ optional stdenv.isLinux [ - linuxHeaders libuuid udev keyutils libaio libxfs zfs + linuxHeaders libuuid udev keyutils optLibaio optLibxfs optZfs ] ++ optional hasServer [ - snappy leveldb + optSnappy optLeveldb ] ++ optional hasRadosgw [ - fcgi expat curl fuse libedit + optFcgi optExpat optCurl optFuse optLibedit ] ++ optional hasXio [ - accelio libibverbs librdmacm + optAccelio optLibibverbs optLibrdmacm ] ++ optional hasRocksdb [ - rocksdb + optRocksdb ] ++ optional hasKinetic [ - kinetic-cpp-client + optKinetic-cpp-client ]; postPatch = '' @@ -134,23 +163,23 @@ stdenv.mkDerivation { (mkWith false "profiler" null) (mkWith false "debug" null) (mkEnable false "coverage" null) - (mkWith (fuse != null) "fuse" null) - (mkWith (malloc == jemalloc) "jemalloc" null) - (mkWith (malloc == gperftools) "tcmalloc" null) + (mkWith (optFuse != null) "fuse" null) + (mkWith (malloc == optJemalloc) "jemalloc" null) + (mkWith (malloc == optGperftools) "tcmalloc" null) (mkEnable false "pgrefdebugging" null) (mkEnable false "cephfs-java" null) (mkEnable hasXio "xio" null) - (mkWith (libatomic_ops != null) "libatomic-ops" null) + (mkWith (optLibatomic_ops != null) "libatomic-ops" null) (mkWith true "ocf" null) (mkWith hasKinetic "kinetic" null) (mkWith hasRocksdb "librocksdb" null) (mkWith false "librocksdb-static" null) - (mkWith (libs3 != null) "system-libs3" null) + (mkWith (optLibs3 != null) "system-libs3" null) (mkWith true "rest-bench" null) ] ++ optional stdenv.isLinux [ - (mkWith (libaio != null) "libaio" null) - (mkWith (libxfs != null) "libxfs" null) - (mkWith (zfs != null) "libzfs" null) + (mkWith (optLibaio != null) "libaio" null) + (mkWith (optLibxfs != null) "libxfs" null) + (mkWith (optZfs != null) "libzfs" null) ] ++ optional (versionAtLeast version "10.0.0") [ (mkWith true "man-pages" null) (mkWith false "tcmalloc-minimal" null) |