From 6b0f0c6f41d69c02cfb26f50195deea3ea3f2321 Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Wed, 24 Jun 2015 18:25:53 -0700 Subject: ceph: Changes rollup from triton --- pkgs/tools/filesystems/ceph/0.94.nix | 4 +- pkgs/tools/filesystems/ceph/dev.nix | 12 ++- pkgs/tools/filesystems/ceph/generic.nix | 169 ++++++++++++++++++++------------ pkgs/tools/filesystems/ceph/git.nix | 6 +- 4 files changed, 123 insertions(+), 68 deletions(-) mode change 120000 => 100644 pkgs/tools/filesystems/ceph/dev.nix diff --git a/pkgs/tools/filesystems/ceph/0.94.nix b/pkgs/tools/filesystems/ceph/0.94.nix index 90c23665508c..9b9455b90612 100644 --- a/pkgs/tools/filesystems/ceph/0.94.nix +++ b/pkgs/tools/filesystems/ceph/0.94.nix @@ -1,12 +1,12 @@ { callPackage, fetchgit, ... } @ args: callPackage ./generic.nix (args // rec { - version = "0.94.1.2"; + version = "0.94.2"; src = fetchgit { url = "https://github.com/ceph/ceph.git"; rev = "refs/tags/v${version}"; - sha256 = "0ks5djgfhjpydjdlw7s940m3mlzrvz0xhhk75nqx7sbvymgcc73q"; + sha256 = "1nhqzmxv7bz93b8rbd88wgmw9icm2lhmc94dfscgh23kfpipyd6l"; }; patches = [ ./fix-pgrefdebugging.patch ]; diff --git a/pkgs/tools/filesystems/ceph/dev.nix b/pkgs/tools/filesystems/ceph/dev.nix deleted file mode 120000 index 31d5e95359c2..000000000000 --- a/pkgs/tools/filesystems/ceph/dev.nix +++ /dev/null @@ -1 +0,0 @@ -0.94.nix \ No newline at end of file diff --git a/pkgs/tools/filesystems/ceph/dev.nix b/pkgs/tools/filesystems/ceph/dev.nix new file mode 100644 index 000000000000..3a9aacbcd30e --- /dev/null +++ b/pkgs/tools/filesystems/ceph/dev.nix @@ -0,0 +1,11 @@ +{ callPackage, fetchgit, ... } @ args: + +callPackage ./generic.nix (args // rec { + version = "9.0.1"; + + src = fetchgit { + url = "https://github.com/ceph/ceph.git"; + rev = "refs/tags/v${version}"; + sha256 = "1sq6gim7dik04lih5krwm4qpnf2blby3xj2vz9n4cknjnj0dbg7x"; + }; +}) diff --git a/pkgs/tools/filesystems/ceph/generic.nix b/pkgs/tools/filesystems/ceph/generic.nix index 33d9b3dc64f3..4d358d6a9c59 100644 --- a/pkgs/tools/filesystems/ceph/generic.nix +++ b/pkgs/tools/filesystems/ceph/generic.nix @@ -26,43 +26,79 @@ # We must have one crypto library assert cryptopp != null || (nss != null && nspr != null); +with stdenv; with stdenv.lib; let mkFlag = trueStr: falseStr: cond: name: val: if cond == null then null else - "--${if cond != false then trueStr else falseStr}${name}${if val != null && cond != false then "=${val}" else ""}"; + "--${if cond != false then trueStr else falseStr}${name}" + + "${if val != null && cond != false then "=${val}" else ""}"; + mkEnable = mkFlag "enable-" "disable-"; mkWith = mkFlag "with-" "without-"; mkOther = mkFlag "" "" true; - hasServer = snappy != null && leveldb != null; + shouldUsePkg = pkg_: let pkg = (builtins.tryEval pkg_).value; + in if lib.any (x: x == system) (pkg.meta.platforms or []) + then pkg else 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; + /*hasXio = (stdenv.isLinux || stdenv.isFreeBSD) && + versionAtLeast version "9.0.0" && + optAccelio != null && optLibibverbs != null && optLibrdmacm != null;*/ + hasXio = false; # Broken with xio 1.4 - hasRocksdb = versionAtLeast version "0.95" && rocksdb != null; + hasRocksdb = versionAtLeast version "9.0.0" && optRocksdb != null; # TODO: Reenable when kinetic support is fixed - hasKinetic = versionAtLeast version "0.95" && kinetic-cpp-client != null && false; + #hasKinetic = versionAtLeast version "9.0.0" && 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 = [ ]; }; - wrapArgs = "--set PYTHONPATH : \"$(toPythonPath $lib)\"" + wrapArgs = "--set PYTHONPATH \"$(toPythonPath $lib)\"" + " --prefix PYTHONPATH : \"$(toPythonPath ${python.modules.readline})\"" + " --prefix PYTHONPATH : \"$(toPythonPath ${pythonPackages.flask})\"" + " --set PATH : \"$out/bin\""; @@ -76,24 +112,25 @@ stdenv.mkDerivation { ./0001-Makefile-env-Don-t-force-sbin.patch ]; - nativeBuildInputs = [ autoconf automake makeWrapper pkgconfig libtool which ]; + nativeBuildInputs = [ autoconf automake makeWrapper pkgconfig libtool which ] + ++ optionals (versionAtLeast version "10.0.0") [ pythonPackages.setuptools ]; 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 = '' @@ -102,6 +139,9 @@ stdenv.mkDerivation { # Fix seagate kinetic linking sed -i 's,libcrypto.a,-lcrypto,g' src/os/Makefile.am + '' + optionalString (versionAtLeast version "9.0.0") '' + # Fix gmock + patchShebangs src/gmock ''; preConfigure = '' @@ -120,50 +160,55 @@ stdenv.mkDerivation { ''; configureFlags = [ - "--exec_prefix=\${out}" - "--sysconfdir=/etc" - "--localstatedir=/var" - "--libdir=\${lib}/lib" - "--includedir=\${lib}/include" - - (mkWith true "rbd" null) - (mkWith true "cephfs" null) - (mkWith hasRadosgw "radosgw" null) - (mkWith true "radosstriper" null) - (mkWith hasServer "mon" null) - (mkWith hasServer "osd" null) - (mkWith hasServer "mds" null) - (mkEnable true "client" null) - (mkEnable hasServer "server" null) - (mkWith (cryptoStr == "cryptopp") "cryptopp" null) - (mkWith (cryptoStr == "nss") "nss" null) - (mkEnable false "root-make-check" null) - (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) - (mkEnable false "pgrefdebugging" null) - (mkEnable false "cephfs-java" null) - (mkEnable hasXio "xio" null) - (mkWith (libatomic_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 true "rest-bench" null) + (mkOther "exec_prefix" "\${out}") + (mkOther "sysconfdir" "/etc") + (mkOther "localstatedir" "/var") + (mkOther "libdir" "\${lib}/lib") + (mkOther "includedir" "\${lib}/include") + (mkWith true "rbd" null) + (mkWith true "cephfs" null) + (mkWith hasRadosgw "radosgw" null) + (mkWith true "radosstriper" null) + (mkWith hasServer "mon" null) + (mkWith hasServer "osd" null) + (mkWith hasServer "mds" null) + (mkEnable true "client" null) + (mkEnable hasServer "server" null) + (mkWith (cryptoStr == "cryptopp") "cryptopp" null) + (mkWith (cryptoStr == "nss") "nss" null) + (mkEnable false "root-make-check" null) + (mkWith false "profiler" null) + (mkWith false "debug" null) + (mkEnable false "coverage" 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 (optLibatomic_ops != null) "libatomic-ops" null) + (mkWith true "ocf" null) + (mkWith hasKinetic "kinetic" null) + (mkWith hasRocksdb "librocksdb" null) + (mkWith false "librocksdb-static" 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 "9.0.1") [ + (mkWith false "tcmalloc-minimal" null) + (mkWith false "valgrind" null) ] ++ optional (versionAtLeast version "10.0.0") [ - (mkWith true "man-pages" null) - (mkWith false "tcmalloc-minimal" null) - (mkWith false "valgrind" null) + (mkWith true "man-pages" null) + (mkWith true "systemd-libexec-dir" "\${TMPDIR}") ]; + preBuild = optionalString (versionAtLeast version "9.0.0") '' + (cd src/gmock; make -j $NIX_BUILD_CORES) + ''; + installFlags = [ "sysconfdir=\${out}/etc" ]; outputs = [ "out" "lib" ]; diff --git a/pkgs/tools/filesystems/ceph/git.nix b/pkgs/tools/filesystems/ceph/git.nix index 8aa4bbd34bb7..df209b080b04 100644 --- a/pkgs/tools/filesystems/ceph/git.nix +++ b/pkgs/tools/filesystems/ceph/git.nix @@ -1,11 +1,11 @@ { callPackage, fetchgit, git, ... } @ args: callPackage ./generic.nix (args // rec { - version = "2015-04-22"; + version = "2015-06-06"; src = fetchgit { url = "git://github.com/ceph/ceph.git"; - rev = "89262abc53e324f3ef4d504473a4f1d6eb337c20"; - sha256 = "0d6hlk1nwgx9cdhvppggz6sbjc1jl8j26l9739qspw1sviac5lcb"; + rev = "efededa0107eebd4abc0e08dd34200d6ca175626"; + sha256 = "18lcn4misyvgjh7r0vkal480x23yr8pcjwzl4k4hbrpqmm97znp9"; }; }) -- cgit 1.4.1