From 0dea5dff3639a4729fce9ec453c4f69cb59d31a1 Mon Sep 17 00:00:00 2001 From: Johan Thomsen Date: Tue, 7 Jul 2020 10:56:04 +0200 Subject: [PATCH 1/3] ceph: 14.2.10 -> 15.2.4 --- .../ceph/0000-fix-SPDK-build-env.patch | 12 ++--- pkgs/tools/filesystems/ceph/default.nix | 53 +++++++++++-------- 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/pkgs/tools/filesystems/ceph/0000-fix-SPDK-build-env.patch b/pkgs/tools/filesystems/ceph/0000-fix-SPDK-build-env.patch index b04082537b53..a117408b000f 100644 --- a/pkgs/tools/filesystems/ceph/0000-fix-SPDK-build-env.patch +++ b/pkgs/tools/filesystems/ceph/0000-fix-SPDK-build-env.patch @@ -1,11 +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 @@ +--- a/cmake/modules/BuildSPDK.cmake ++++ b/cmake/modules/BuildSPDK.cmake +@@ -35,7 +35,7 @@ macro(build_spdk) # 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_COMMAND env -i PATH=$ENV{PATH} CC=${CMAKE_C_COMPILER} ${make_cmd} EXTRA_CFLAGS="${spdk_CFLAGS}" ++ BUILD_COMMAND env -i PATH=$ENV{PATH} CC=${CMAKE_C_COMPILER} ${make_cmd} EXTRA_CFLAGS="${spdk_CFLAGS}" C_OPT="-mssse3" BUILD_IN_SOURCE 1 INSTALL_COMMAND "true") - ExternalProject_Get_Property(spdk-ext source_dir) + unset(make_cmd) diff --git a/pkgs/tools/filesystems/ceph/default.nix b/pkgs/tools/filesystems/ceph/default.nix index fc8ac971da72..cd0e18eb748c 100644 --- a/pkgs/tools/filesystems/ceph/default.nix +++ b/pkgs/tools/filesystems/ceph/default.nix @@ -75,6 +75,26 @@ let none = [ ]; }; + getMeta = description: { + homepage = "https://ceph.com/"; + inherit description; + license = with licenses; [ lgpl21 gpl2 bsd3 mit publicDomain ]; + maintainers = with maintainers; [ adev ak johanot krav ]; + platforms = [ "x86_64-linux" ]; + }; + + ceph-common = python3Packages.buildPythonPackage rec{ + pname = "ceph-common"; + inherit src version; + + sourceRoot = "ceph-${version}/src/python-common"; + + checkInputs = [ python3Packages.pytest ]; + propagatedBuildInputs = with python3Packages; [ pyyaml six ]; + + meta = getMeta "Ceph common module for code shared by manager modules"; + }; + ceph-python-env = python3Packages.python.withPackages (ps: [ ps.sphinx ps.flask @@ -83,27 +103,30 @@ let ps.virtualenv # Libraries needed by the python tools ps.Mako + ceph-common ps.cherrypy + ps.dateutil + ps.jsonpatch ps.pecan ps.prettytable ps.pyjwt ps.webob ps.bcrypt + ps.scipy ps.six ps.pyyaml ]); sitePackages = ceph-python-env.python.sitePackages; - version = "14.2.10"; + version = "15.2.4"; + src = fetchurl { + url = "http://download.ceph.com/tarballs/ceph-${version}.tar.gz"; + sha256 = "0jy5dp4r1bqk1l7nrv8l8zpl984k61p3vkvf73ygcn03bxyjjlax"; + }; in rec { ceph = stdenv.mkDerivation { pname = "ceph"; - inherit version; - - src = fetchurl { - url = "http://download.ceph.com/tarballs/ceph-${version}.tar.gz"; - sha256 = "0bbs3ag8zav283qpxrrndhvh2z01ykm6126fmwrbc1c5f9jfjq39"; - }; + inherit src version; patches = [ ./0000-fix-SPDK-build-env.patch @@ -173,25 +196,13 @@ in rec { doCheck = false; # uses pip to install things from the internet - meta = { - homepage = "https://ceph.com/"; - description = "Distributed storage system"; - license = with licenses; [ lgpl21 gpl2 bsd3 mit publicDomain ]; - maintainers = with maintainers; [ adev ak krav johanot srhb ]; - platforms = [ "x86_64-linux" ]; - }; + meta = getMeta "Distributed storage system"; 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 johanot krav ]; - platforms = [ "x86_64-linux" ]; - }; + meta = getMeta "Tools needed to mount Ceph's RADOS Block Devices"; } '' mkdir -p $out/{bin,etc,${sitePackages}} cp -r ${ceph}/bin/{ceph,.ceph-wrapped,rados,rbd,rbdmap} $out/bin From 4f39f93d8eea89516a4db0d69a618a8d85342e27 Mon Sep 17 00:00:00 2001 From: Johan Thomsen Date: Wed, 8 Jul 2020 15:20:18 +0200 Subject: [PATCH 2/3] nixos/ceph: (test) ceph now has device monitoring and pg_autoscaler enabled by default - the pg_autoscaler will force new empty pools down to 32 pgs - device monitoring metrics consumes 1 pool with 1 pg --- nixos/tests/ceph-multi-node.nix | 6 +++--- nixos/tests/ceph-single-node.nix | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/nixos/tests/ceph-multi-node.nix b/nixos/tests/ceph-multi-node.nix index 22fe5cada480..e26c6d5d670c 100644 --- a/nixos/tests/ceph-multi-node.nix +++ b/nixos/tests/ceph-multi-node.nix @@ -183,15 +183,15 @@ let monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") monA.succeed( - "ceph osd pool create multi-node-test 128 128", + "ceph osd pool create multi-node-test 32 32", "ceph osd pool ls | grep 'multi-node-test'", "ceph osd pool rename multi-node-test multi-node-other-test", "ceph osd pool ls | grep 'multi-node-other-test'", ) - monA.wait_until_succeeds("ceph -s | grep '1 pools, 128 pgs'") + monA.wait_until_succeeds("ceph -s | grep '2 pools, 33 pgs'") monA.succeed("ceph osd pool set multi-node-other-test size 2") monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") - monA.wait_until_succeeds("ceph -s | grep '128 active+clean'") + monA.wait_until_succeeds("ceph -s | grep '33 active+clean'") monA.fail( "ceph osd pool ls | grep 'multi-node-test'", "ceph osd pool delete multi-node-other-test multi-node-other-test --yes-i-really-really-mean-it", diff --git a/nixos/tests/ceph-single-node.nix b/nixos/tests/ceph-single-node.nix index 01c4b4138451..98528f6317bc 100644 --- a/nixos/tests/ceph-single-node.nix +++ b/nixos/tests/ceph-single-node.nix @@ -143,12 +143,12 @@ let monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") monA.succeed( - "ceph osd pool create single-node-test 128 128", + "ceph osd pool create single-node-test 32 32", "ceph osd pool ls | grep 'single-node-test'", "ceph osd pool rename single-node-test single-node-other-test", "ceph osd pool ls | grep 'single-node-other-test'", ) - monA.wait_until_succeeds("ceph -s | grep '1 pools, 128 pgs'") + monA.wait_until_succeeds("ceph -s | grep '2 pools, 33 pgs'") monA.succeed( "ceph osd getcrushmap -o crush", "crushtool -d crush -o decrushed", @@ -158,7 +158,7 @@ let "ceph osd pool set single-node-other-test size 2", ) monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") - monA.wait_until_succeeds("ceph -s | grep '128 active+clean'") + monA.wait_until_succeeds("ceph -s | grep '33 active+clean'") monA.fail( "ceph osd pool ls | grep 'multi-node-test'", "ceph osd pool delete single-node-other-test single-node-other-test --yes-i-really-really-mean-it", From 7994b9405793abb0aa7930761797ed956cf817c5 Mon Sep 17 00:00:00 2001 From: Sarah Brofeldt Date: Thu, 9 Jul 2020 09:28:46 +0200 Subject: [PATCH 3/3] pythonPackages.scipy_1_3: re-init for ceph --- pkgs/tools/filesystems/ceph/default.nix | 5 ++++- pkgs/top-level/python-packages.nix | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/filesystems/ceph/default.nix b/pkgs/tools/filesystems/ceph/default.nix index cd0e18eb748c..767730c40301 100644 --- a/pkgs/tools/filesystems/ceph/default.nix +++ b/pkgs/tools/filesystems/ceph/default.nix @@ -112,7 +112,10 @@ let ps.pyjwt ps.webob ps.bcrypt - ps.scipy + # scipy > 1.3 breaks diskprediction_local, leading to mgr hang on startup + # Bump (and get rid of scipy_1_3) once these issues are resolved: + # https://tracker.ceph.com/issues/42764 https://tracker.ceph.com/issues/45147 + ps.scipy_1_3 ps.six ps.pyyaml ]); diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4340f6a30ee7..9a6b0338168b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5902,6 +5902,15 @@ in { }); in if pythonOlder "3.5" then scipy_1_2 else scipy_; + scipy_1_3 = self.scipy.overridePythonAttrs(oldAttrs: rec { + version = "1.3.3"; + src = oldAttrs.src.override { + inherit version; + sha256 = "02iqb7ws7fw5fd1a83hx705pzrw1imj7z0bphjsl4bfvw254xgv4"; + }; + doCheck = false; + }); + scikitimage = callPackage ../development/python-modules/scikit-image { }; scikitlearn = let