about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/tools/filesystems/ceph/generic.nix79
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)