ceph: Now evaluate on darwin

This commit is contained in:
William A. Kennington III 2015-05-22 14:14:46 -07:00
parent 2ebe0fc88b
commit 54963fb5b7

View File

@ -26,32 +26,61 @@
# We must have one crypto library # We must have one crypto library
assert cryptopp != null || (nss != null && nspr != null); assert cryptopp != null || (nss != null && nspr != null);
with stdenv;
with stdenv.lib; with stdenv.lib;
let 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; hasMon = hasServer;
hasMds = hasServer; hasMds = hasServer;
hasOsd = 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) && hasXio = (stdenv.isLinux || stdenv.isFreeBSD) &&
versionAtLeast version "0.95" && 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 # 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 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 # We prefer nss over cryptopp
cryptoStr = if nss != null && nspr != null then "nss" else cryptoStr = if optNss != null && optNspr != null then "nss" else
if cryptopp != null then "cryptopp" else "none"; if optCryptopp != null then "cryptopp" else "none";
cryptoLibsMap = { cryptoLibsMap = {
nss = [ nss nspr ]; nss = [ optNss optNspr ];
cryptopp = [ cryptopp ]; cryptopp = [ optCryptopp ];
none = [ ]; none = [ ];
}; };
@ -71,22 +100,22 @@ stdenv.mkDerivation {
nativeBuildInputs = [ autoconf automake makeWrapper pkgconfig libtool which ]; nativeBuildInputs = [ autoconf automake makeWrapper pkgconfig libtool which ];
buildInputs = buildInputs ++ cryptoLibsMap.${cryptoStr} ++ [ 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") [ ] ++ optional (versionAtLeast version "9.0.0") [
git # Used for the gitversion string git # Used for the gitversion string
pythonPackages.sphinx # Used for docs pythonPackages.sphinx # Used for docs
] ++ optional stdenv.isLinux [ ] ++ optional stdenv.isLinux [
linuxHeaders libuuid udev keyutils libaio libxfs zfs linuxHeaders libuuid udev keyutils optLibaio optLibxfs optZfs
] ++ optional hasServer [ ] ++ optional hasServer [
snappy leveldb optSnappy optLeveldb
] ++ optional hasRadosgw [ ] ++ optional hasRadosgw [
fcgi expat curl fuse libedit optFcgi optExpat optCurl optFuse optLibedit
] ++ optional hasXio [ ] ++ optional hasXio [
accelio libibverbs librdmacm optAccelio optLibibverbs optLibrdmacm
] ++ optional hasRocksdb [ ] ++ optional hasRocksdb [
rocksdb optRocksdb
] ++ optional hasKinetic [ ] ++ optional hasKinetic [
kinetic-cpp-client optKinetic-cpp-client
]; ];
postPatch = '' postPatch = ''
@ -134,23 +163,23 @@ stdenv.mkDerivation {
(mkWith false "profiler" null) (mkWith false "profiler" null)
(mkWith false "debug" null) (mkWith false "debug" null)
(mkEnable false "coverage" null) (mkEnable false "coverage" null)
(mkWith (fuse != null) "fuse" null) (mkWith (optFuse != null) "fuse" null)
(mkWith (malloc == jemalloc) "jemalloc" null) (mkWith (malloc == optJemalloc) "jemalloc" null)
(mkWith (malloc == gperftools) "tcmalloc" null) (mkWith (malloc == optGperftools) "tcmalloc" null)
(mkEnable false "pgrefdebugging" null) (mkEnable false "pgrefdebugging" null)
(mkEnable false "cephfs-java" null) (mkEnable false "cephfs-java" null)
(mkEnable hasXio "xio" null) (mkEnable hasXio "xio" null)
(mkWith (libatomic_ops != null) "libatomic-ops" null) (mkWith (optLibatomic_ops != null) "libatomic-ops" null)
(mkWith true "ocf" null) (mkWith true "ocf" null)
(mkWith hasKinetic "kinetic" null) (mkWith hasKinetic "kinetic" null)
(mkWith hasRocksdb "librocksdb" null) (mkWith hasRocksdb "librocksdb" null)
(mkWith false "librocksdb-static" null) (mkWith false "librocksdb-static" null)
(mkWith (libs3 != null) "system-libs3" null) (mkWith (optLibs3 != null) "system-libs3" null)
(mkWith true "rest-bench" null) (mkWith true "rest-bench" null)
] ++ optional stdenv.isLinux [ ] ++ optional stdenv.isLinux [
(mkWith (libaio != null) "libaio" null) (mkWith (optLibaio != null) "libaio" null)
(mkWith (libxfs != null) "libxfs" null) (mkWith (optLibxfs != null) "libxfs" null)
(mkWith (zfs != null) "libzfs" null) (mkWith (optZfs != null) "libzfs" null)
] ++ optional (versionAtLeast version "10.0.0") [ ] ++ optional (versionAtLeast version "10.0.0") [
(mkWith true "man-pages" null) (mkWith true "man-pages" null)
(mkWith false "tcmalloc-minimal" null) (mkWith false "tcmalloc-minimal" null)